MICHAEL GARDI
Published © CC BY-NC-SA

Sol-20 Reproduction

I made a full sized Sol-20 reproduction, the first fully assembled microcomputer with a built-in keyboard and television output.

AdvancedFull instructions providedOver 1 day499
Sol-20 Reproduction

Things used in this project

Hardware components

Sol-20 Reproduction Keyboard
×1
Raspberry Pi 4 Model B
Raspberry Pi 4 Model B
×1
RPi 3.3V to 5V 26 I/O Bidirectional Voltage-Level Shifter Module
×1
(Optional) USB to TTL Adapter, USB to Serial Converter
×1
Pimoroni (Optional) PIM372 (Digi-Key part number 1778-1225-ND), an 8 inch 1024x768 XGA display
×1

Story

Read more

Custom parts and enclosures

Thingiverse

https://www.thingiverse.com/thing:4332520

Code

Code snippet #2

Plain text
ArduinoISP   Header
~~~~~~~~~~   ~~~~~~
Pin 10       Pin 5 (RESET)
Pin 11       Pin 4 (MOSI)
Pin 12       Pin 1 (MISO)
Pin 13       Pin 3 (SCK)
+5V          +5V
GND          GND

Code snippet #3

Plain text
Keyboard Encoder	Raspberry Pi	Description
~~~~~~~~~~~~~~~~	~~~~~~~~~~~~	~~~~~~~~~~~
5V	                5V		Power  
GND			GND	
D0			GPIO6		Key 0 bit (low)
D1			GPIO13		Key 1 bit
D2			GPIO19		Key 2 bit
D3			GPIO26		Key 3 bit
D4			GPIO21		Key 4 bit
D5			GPIO20		Key 5 bit
D6			GPIO16		Key 6 bit
D7			GPIO12		Key 7 bit (high)
STROBE			GPIO5		Key ready on falling edge.
OUT1			GPIO23		LOCAL button. Toggle. HI when LED on.
OUT2			GPIO22		BREAK button pressed when rising edge.
OUT3			GPIO24		RESET button pressed when falling edge.

Code snippet #6

Plain text
# SOL-20 SWITCH FUNCTION DEFINITIONS
#
# This configuration file replaces the four physical setup switch banks on the Sol-20.
#
# Display Control
#
S1-1 = 0   # 0-Run  1-Restart to Zero.  (N/A for emulator.)
S1-2 = 0   # Not used.
S1-3 = 0   # 0-Show control characters. 1-Blank control characters (ASCII values < 32).
S1-4 = 0   # 0-Colored characters on black background. 1-Black characters on colored background.
S1-5 = 0   # 0-Solid or NO cursor. 1-Blinking cursor. (NOTE: Requires apscheduler - "pip install APScheduler")
S1-6 = 1   # 0-Blinking or NO cursor. 1-Solid cursor.
S1-7 = 0   # 0-White screen. 1-Green screen. 2-Amber screen. (Emulator extension.)
S1-8 = 0   # 0-6574 character ROM. 1-6575 character ROM.     (Emulator extension.)
#
# NOTE: No cursor if S1-5 and S1-6 are off at the same time.
#
#
# Sense Switch
#
S2-1 = 1   # Sense switches in LSB to MSB order. Read by the system with an IN 0xFF instruction.
S2-2 = 1   # Not used by many applications.
S2-3 = 1
S2-4 = 1
S2-5 = 1
S2-6 = 1
S2-7 = 1
S2-8 = 1
#
#
# Serial I/O Baud Rate Switch
#
S3-1 = 0   # 1-75 Baud.
S3-2 = 0   # 1-110 Baud.
S3-3 = 0   # 1-150 Baud.
S3-4 = 0   # 1-300 Baud.
S3-5 = 0   # 1-600 Baud.
S3-6 = 0   # 1-1200 Baud.
S3-7 = 0   # 1-2400 Baud. 2-4800 Baud. (Emulator extension.)
S3-8 = 0   # 1-9600 Baud.
#
# Do not turn on more than one switch at a time.
#
#
# Serial I/O Control Switch.
#
S4-1 = 0   # 0-Parity even if S4-5 set to 1. 1-Parity odd.
S4-2 = 0   # Data word length.  | 0        | 1         | 0         | 1
S4-3 = 0   #                    | 0-8 Bits.| 0-7 Bits. | 1-6 Bits. | 1-5 Bits.
S4-4 = 1   # 0-2 stop bits(1.5 if 5 bit words). 1-1 stop bit.
S4-5 = 0   # 0-No parity. 1-Parity.
S4-6 = 0   # 0-Full duplex. 1-Half duplex. (N/A in Emulator)
#

Github

https://github.com/kidmirage/Sol-20-Reproduction

Github file

https://github.com/osiweb/Hardware/tree/master/new/sol20/sides

Github file

https://github.com/osiweb/unified_retro_keyboard/tree/master/hardware/interface-ascii

Github file

https://github.com/kidmirage/Sol-20-Reproduction/tree/main/Instructable

Credits

MICHAEL GARDI

MICHAEL GARDI

10 projects • 4 followers
Helping to preserve a small part of our non-digital past.

Comments