Re-make of the Soviet Ham Radio computer published in Radio Magazine in 1986
This project is a remake of Radio-86RK - a soviet ham radio computer. The original design was published in Radio Magazine, an amateur radio and DIY electronics oriented publication, starting from April 1986. Hence the "Radio" and "86" in the name ("RK" stands for ham radio computer).
The goal of the original design was to create a computer that can be built relatively easily and cheaply using commonly available components. Therefore it included several short-cuts. For example it didn't use 8228 bus controller. Instead, it uses /WR and DBIN CPU signals instead to distinguish between write and read CPU cycles. Since the system doesn't decode I/O control signals, all the I/O devices are memory mapped. Another optimization is the use of DMA controller for both supplying the data to the CRT controller and for refreshing DRAMs. The system didn't support interrupts. The sound was implemented using INTE output of the CPU. The software would use EI/DI instructions to generate sound. There are no graphics capabilities. The font size was limited to 128 characters (8275 CRT controller limitation), and given that it had to support both Latin and Cyrillic ABCs, it only had capital letters for both ABCs. The CRT controller shares 16 MHz clock oscillator with the CPU (not uncommon in other home computers at that time period).
Despite the limitations, the design was fairly successful, many people have built this computer, and there are some that still building one, this project included. In addtion, several factories manufactured computers based on (but not always compatible with) this design - e.g. Mikrosha, Apogee BK-01, and a few more.
- KR580VM80A (Intel 8080) CPU @ 1.78 MHz (16 MHz divided by 9)
- 16 KiB to 32 KiB DRAM, 2 KiB ROM (monitor software)
- KR580VG75 (Intel 8275) CRT controller which works together with KR580VT57 (Intel 8257) DMA controller. 1 KiB ROM is used for font
- Two KR580VV55A (Intel 8255A) PPIs. One is used for keyboard and cassette I/O, another one for the extension port
- Normally the computer consisted of 2 or 3 PCBs - the mainboard, the keyboard, and the keypad.
- 16 DRAM ICs replaced with a single 32 KiB SRAM IC
- Font ROM size increased to 2 KiB, so that it fits an alternative font. CRT controller GPA0 attribute is used to switch between fonts.
- Reverse video attribute implemented in CRT controller
- Added 8251 USART and 8253 timer. The timer is used for dividing the clock for USART and for sound generation.
- Single board design, including an integrated mechanical keyboard
- The work is largely based on Radio-86RК-SRAM project created by Alexey Khudyakov (alexcp).
- Processor: Intel 8080A / КР580ВМ80А CPU running at 1.78 MHz
- Memory:
- RAM: 32 KiB SRAM
- ROM: 2 KiB UV EPROM with system monitor software
- Video: Intel 8275 / КР580ВГ75 CRT Controller
- Alphanumeric display
- 2 KiB UV EPROM with font
- Composite video output (50 Hz)
- Audio:
- Intel 8253 / КР580ВИ53 (single channel)
- CPU INTE output
- Parallel Interface:
- Intel 8255А / КР580ВВ55А PPI
- 26-pin extpansion header
- Serial Interface:
- Intel 8251А / КР580ВВ51А USART
- DE-9 connector
- Built-in 66-keys keyboard
- Cassette recorder interface
Pin | Description |
---|---|
Tip (the inner contact) | Output: Composite Video |
Ring / Sleeve | Power: GND |
Connect regulated +5V power supply to this connector.
Note: The 8080A CPU, clock generator, and serial port transmitters and receivers use +12V/-5V/-12V voltages. An on-board DC-DC converter (U26) is used to obtain these voltages. Instead of using the DC-DC converter it is possible to provide these voltages directly to the system using J3 connector.
Pin | Description |
---|---|
Tip (the inner contact) | Power: 5V (positive terminal) |
Barrel / Sleeve | Power: GND (negative terminal) |
Connect regulated 5V/12V/-12V power supply to this connector.
Pin | Description |
---|---|
1, 2, 3 | Power: GND |
4, 5, 6 | Power: 5V |
7 | Power: 12V |
8 | Power: -12V |
Pin | Description |
---|---|
1, 2, 3, 8 | Power: GND |
4 | Output: Sound output to cassette recorder (line level) |
5 | Input: Sound input from cassette recorder (line level) |
6, 7 | Not connected |
Pin | Description |
---|---|
1 | Not connected: DCD |
2 | Input: RX |
3 | Output: TX |
4 | Output: DTR |
5 | Power: GND |
6 | Input: DSR |
7 | Output: RTS |
8 | Input: CTS |
9 | Not connected: RI |
Pin | Description | Pin | Description |
---|---|---|---|
1 | Output: PC0 | 2 | Input: PA0 |
3 | Output: PC1 | 4 | Input: PA1 |
5 | Output: PC2 | 6 | Input: PA2 |
7 | Output: PC3 | 8 | Input: PA3 |
9 | Output: PC4 | 10 | Input: PA4 |
11 | Output: PC5 | 12 | Input: PA5 |
13 | Output: PC6 | 14 | Input: PA6 |
15 | Output: PC7 | 16 | Input: PA7 |
17 | Output: PB7 | 18 | Output: PB0 |
19 | Output: PB6 | 20 | Output: PB1 |
21 | Output: PB5 | 22 | Output: PB2 |
23 | Output: PB4 | 24 | Output: PB3 |
25 | Power: +5V | 26 | Power: GND |
Radio-86RK project on Mouser.com - View and order all components except of the PCB, and most Intel 8xxx ICs.
Component type | Reference | Description | Quantity | Possible sources and notes |
---|---|---|---|---|
PCB | Radio-86RK PCB - Version 1.1 | 1 | Refer to the RetroBrew Computers Board Inventory page for ordering information, or order from a PCB manufacturer of your choice using provided Gerber or KiCad files | |
Capacitor | C1 - C32 | 0.1 uF, MLCC, 5 mm Pitch | 32 | Mouser 594-K104K15X7RF53H5 |
Capacitor | C33 - C38 | 47 uF, Electrolytic | 6 | Mouser 80-A750EK476M1EAAE40 |
Capacitor | C39 | 0.22 uF, MLCC, 5 mm Pitch | 1 | Mouser 810-FG24X7R1H224KNT0 |
Capacitor | C40 | 22 nF, MLCC, 5 mm Pitch | 1 | Mouser 810-FG28X7R1H223KNT0 |
Capacitor | C41 | 10 nF, MLCC, 5 mm Pitch | 1 | Mouser 810-FG28X7R1H103KNT0 |
Capacitor | C42 | 2.2 nF, MLCC, 5 mm Pitch | 1 | Mouser 810-FG28X7R1H222KNT0 |
Capacitor | C43 | 1 nF, MLCC, 5 mm Pitch | 1 | Mouser 810-FG28C0G1H102JNT6 |
Capacitor | C44 | 10 pF, MLCC, 5 mm Pitch | 1 | Mouser 810-FG28C0G1H100DNT00 |
Diode | D1 - D9 | 1N4148 | 9 | Mouser 512-1N4148 |
LED | D10 | LED Indicator, 3 mm, Green | 1 | Mouser 593-VAOL-3HDE4 |
LED | D11 | LED Indicator, 3 mm, Yellow | 1 | Mouser 593-VAOL-3HCE4 |
Polyfuse | F1 | 1.1A, 5 mm Pitch | 1 | Mouser 576-16R110BU |
Connector | J1 | RCA Phono connector, Yellow | 1 | Mouser 490-RCJ-014 |
Connector | J2 | DC Power Jack, 2mm | 1 | Mouser 806-KLDX-0202-A |
Connector | J3 | 8 pin friction lock connector | 1 | Mouser 571-6404568 |
Connector | J4 | DIN 8-pos, Right Angle, PCB mount | 1 | Mouser 490-SDF-80J |
Connector | J5 | Sub-D DE9M, Right Angle, PCB mount | 1 | Mouser 523-L717SDE09P1ACH3R |
Connector | J6 | 13x2 pin header, shrouded | 1 | Mouser 517-30326-6002 |
Transistor | Q1, Q2 | 2N3904 | 2 | Mouser 512-2N3904TA |
Resistor | R1 | 33 ohm | 1 | Mouser 291-33-RC |
Resistor | R2 | 51 ohm | 1 | Mouser 291-51-RC |
Resistor | R3 | 150 ohm | 1 | Mouser 291-150-RC |
Resistor | R4 | 330 ohm | 1 | Mouser 291-330-RC |
Resistor | R5 | 680 ohm | 1 | Mouser 291-680-RC |
Resistor | R6 - R13 | 1 k | 8 | Mouser 291-1K-RC |
Resistor | R14 | 2.4 k | 1 | Mouser 291-2.4K-RC |
Resistor | R15 | 12 k | 1 | Mouser 291-12K-RC |
Resistor Array | RN1 | 10 k, SIP10 | 1 | Mouser 266-10K-RC |
Resistor Array | RN2 - RN4 | 4.7 k, SIP6 | 3 | Mouser 264-4.7K-RC |
Speaker | SP1 | 12 mm speaker | 1 | Mouser 665-AT-1224TWTR |
Keyboard Switch | SW1 - SW66 | Cherry MX Blue (Clicky) | 66 | Mouser 540-MX1A-E1NW |
Tactile Switch | SW67 | 6 mm Tactile Switch Right Angle | 1 | Mouser 653-B3F-3152 |
Integrated Circuit | U1 | Intel 8080A / КР580ВМ80А, CPU | 1 | Jameco 52046 |
Integrated Circuit | U2 | Intel 8224 / КР580ГФ24, Clock Generator | 1 | |
Integrated Circuit | U3 | Intel 8251А / КР580ВВ51А, USART | 1 | |
Integrated Circuit | U4 | Intel 8253 / КР580ВИ53, PIT | 1 | Mouser 968-CP82C54Z |
Integrated Circuit | U5, U6 | Intel 8255А / КР580ВВ55А, PPI | 2 | Mouser 968-CP82C55A-5Z, Jameco 52732 |
Integrated Circuit | U7 | Intel 8257 / КР580ВТ57, DMA Controller | 1 | |
Integrated Circuit | U8 | Intel 8275 / КР580ВГ75, CRT Controller | 1 | Jameco 52821 |
Integrated Circuit | U9 | AS6C62256, SRAM 32Kx8 | 1 | Mouser 913-AS6C62256-55PCN |
Integrated Circuit | U10, U11 | 2716 / КР573РФ5, 2Kx8 EPROM | 2 | |
Integrated Circuit | U12 | 74LS373/К555ИР22, 8-bit Latch, 3-state outputs | 1 | Mouser 595-SN74LS373N |
Integrated Circuit | U13 | 74198/К155ИР13, 8-bit Shift Register | 1 | |
Integrated Circuit | U14 | 74LS138/К555ИД7, Decoder 3 to 8 active low outputs | 1 | Mouser 595-SN74LS138N |
Integrated Circuit | U15 | 7492/К155ИЕ4, Divide by 12 counter | 1 | Mouser 595-SN74LS92N |
Integrated Circuit | U16 | 7486/К155ЛП5, Quad 2-input XOR | 1 | Mouser 595-SN74LS86AN |
Integrated Circuit | U17 | 7474/К155ТМ2, Dual D Flip-flop, Set & Reset | 1 | Mouser 595-SN74LS74AN |
Integrated Circuit | U18 | 7408/К155ЛИ1, Quad 2-input AND | 1 | Mouser 595-SN74LS08N |
Integrated Circuit | U19 | 7404/К155ЛН1, Hex Inverter | 1 | Mouser 595-SN74LS04N |
Integrated Circuit | U20 | 7400/К155ЛА3, Quad 2-input NAND | 1 | Mouser 595-SN74LS00N |
Integrated Circuit | U21 | TL071/К140УД6, Operational Amplifier | 1 | Mouser 595-TL071IP |
Integrated Circuit | U22 | SN75154N/К170УП2В, Quad RS-232 Receiver | 1 | Mouser 595-SN75154N |
Integrated Circuit | U23, U24 | SN75150P/К170АП2, Dual RS-232 Driver | 2 | Mouser 595-SN75150P |
Integrated Circuit | U25 | LM7905/КР1179ЕНВ, Negative 5V 1A Linear Regulator | 1 | Mouser 926-LM7905CT-NOPB |
DC-DC Converter | U26 | IZ0512, +/-12V +/-125mA, 4.5V-9V input | 1 | Mouser 209-IZ0512S |
Integrated Circuit | U27 | DS1233-5, CPU Supervisory Circuit | 1 | Mouser 700-DS1233-5T&R |
Crystal | Y1 | 16 MHz, Series, HC-49U | 1 | Mouser 774-ATS160-E |
IC Socket | U1, U5, U6, U7, U8 | 40 pin DIP | 5 | Mouser 517-4840-6000-CP |
IC Socket | U3, U9 | 28 pin DIP | 2 | Mouser 517-4828-6000-CP |
IC Socket | U4, U10, U11, U13 | 24 pin DIP | 4 | Mouser 517-4824-6000-CP |
IC Socket | U12 | 20 pin DIP | 1 | Mouser 517-4820-3000-CP |
IC Socket | U2, U14, U22 | 16 pin DIP | 3 | Mouser 517-4816-3000-CP |
IC Socket | U15 - U20 | 14 pin DIP | 5 | Mouser 517-4814-3000-CP |
IC Socket | U21, U23, U24 | 8 pin DIP | 3 | Mouser 517-4808-3000-CP |
- 0000h - 7FFFh - SRAM
- 7600h - 7FFFh - Display buffer and monitor variables
- 8000h - 8FFFh - 8255A PPI (Keyboard, Cassette recorder, Sound control)
- 8000h - Channel A data
- 8001h - Channel B data
- 8002h - Channel C data
- 8003h - Control word
- 9000h - 9FFFh - 8253 Timer (USART Clock, Sound)
- 9000h - Channel 0 count
- 9001h - Channel 1 count
- 9002h - Channel 2 count
- 9003h - Control word
- 0A000h - 0AFFFh - 8255A PPI (Parallel Interface)
- 0A000h - Channel A data
- 0A001h - Channel B data
- 0A002h - Channel C data
- 0A003h - Control word
- 0B000h - 0BFFFh - 8251A USART
- 0B000h - Data register
- 0B001h - Command register
- 0C000h - 0CFFFh - 8275 CRT Controller
- 0D000h - 0DFFFh - Unused
- 0E000h - 0EFFFh - 8257 DMA Controller (write only)
- 0E000h - 0FFFFh - Monitor EPROM (read only)
- Memory Operations
- D<Start_Address>,<End_Address> - Display memory content in hexadecimal
- L<Start_Address>,<End_Address> - Display memory content in ASCII
- F<Start_Address>,<End_Address>,<Value> - Fill memory with the specified value
- M<Address> - Modify memory content
- T<Start_Address>,<End_Address>,<Destination_Start_Address> - Copy memory block to destination
- C<Start_Address>,<End_Address>,<Destination_Start_Address> - Compare memory block with destination
- S<Start_Address>,<End_Address>,<Value> - Search memory for a value
- R<ROM_Start_Address>,<ROM_End_Address>,<Destination_Start_Address> - Read from the ROM connected to the Parallel interface to memory
- Run Control
- G<Start_Address>[,End_Address] - Run code, optionally stop at the specified address
- X - Display and modify registers
- Cassette Input/Output
- O<Start_Address>,<End_Address>[,Speed] - Write memory to cassette. Default speed is 1Dh / 1200 bps
- I[Offset][,Speed] - Read data from to cassette memory at specified offset
- 0F803h - Keyboard input
- Input: None
- Output: A - character code read from keyboard
- 0F806h - Cassette input
- Input: A=0FFh - with sync; A=08h - no sync
- Output: A - data read from cassette
- 0F809h - Print character to screen
- Input: C - character to print
- 0F80Ch - Cassette output
- Input: C - data to write
- 0F812h - Query keyboard
- Output: A=00h - key not pressed; A=0FFh - key pressed
- 0F815h - Print to screen in hex
- Input: A - data to print
- 0F818h - Print string
- Input: HL - string address
- 0F81Bh - Get key
- Output: A=0FFh - key not pressed; A=0FEh - Rus/Lat; otherwise A - key code
- 0F81Eh - Get cursor position
- Output: H - row, L - column
- 0F821h - Read character from screen at current cursor position
- Output: A - char read from screen
- 0F824h - Read from cassette
- Input: HL - offset of memory buffer to store data to
- Output: HL - start; DE - end; BC - checksum
-
Version 1.1
- Fix all known issues of version 1.0
- Use DS1233-5 mircoprocessor supervisor to generate reset signal
- Implement reverse video attribute
-
Version 1.0
- Initial version
-
Version 1.1
- Top silkscreen: "Ь" and "X" key labels are swapped
- Top silkscreen: More correct translation for "СС" is "SHIFT"
- Top silkscreen: No copyright year
- Video signal generation: Produced video Vpp and the backporch levels are a bit too high. Use R2 = 75 to 100 Ohm, and R5 = 1.5 kOhm for proper video signal levels (Reported by Martin Lukasek)
-
Version 1.0
- 8224 (U2) should use DIP-16 footprint
- Down and Right buttons swapped
- Reset RC does not provide enough time for the system to properly reset at power-on