100%
radio-86rk Radio-86RK-CRT-Mem view
Description

Imported from GitHub: skiselev/radio-86rk · commit c5e9cb7 · license GPL-3.0

Description

Re-make of the Soviet Ham Radio computer published in Radio Magazine in 1986

README

Radio 86RK

Re-make of the Soviet Ham Radio computer published in Radio Magazine in 1986

Hardware Documentation

Table of Content

Introduction

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.

Specifications of the Original Design

  • 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.

Modifications to the Original Design

  • 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).

Radio-86RK

Specifications

  • 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 expansion header
  • Serial Interface:
    • Intel 8251А / КР580ВВ51А USART
    • DE-9 connector
  • Built-in 67-keys keyboard
  • Cassette recorder interface

Project Notes

Check Project Notes for the information about building this project

Hardware Documentation

Documentation for the Previous Versions

Schematic and PCB Layout

Connectors

J1 - Composite Video

PinDescription
Tip (the inner contact)Output: Composite Video
Ring / SleevePower: GND

J2 - Power (5V)

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.

PinDescription
Tip (the inner contact)Power: 5V (positive terminal)
Barrel / SleevePower: GND (negative terminal)

J3 - Power (5V, 12V, -12V)

Connect regulated 5V/12V/-12V power supply to this connector.

PinDescription
1, 2, 3Power: GND
4, 5, 6Power: 5V
7Power: 12V
8Power: -12V

J4 - Cassette Connector

PinDescription
1, 2, 3, 8Power: GND
4Output: Sound output to cassette recorder (line level)
5Input: Sound input from cassette recorder (line level)
6, 7Not connected

J5 - Serial Port Connector

PinDescription
1Not connected: DCD
2Input: RX
3Output: TX
4Output: DTR
5Power: GND
6Input: DSR
7Output: RTS
8Input: CTS
9Not connected: RI

J6 - Parallel Port Connector

PinDescriptionPinDescription
1Output: PC02Input: PA0
3Output: PC14Input: PA1
5Output: PC26Input: PA2
7Output: PC38Input: PA3
9Output: PC410Input: PA4
11Output: PC512Input: PA5
13Output: PC614Input: PA6
15Output: PC716Input: PA7
17Output: PB718Output: PB0
19Output: PB620Output: PB1
21Output: PB522Output: PB2
23Output: PB424Output: PB3
25Power: +5V26Power: GND

Bill of Materials

Component typeReferenceDescriptionQuantityPossible sources and notes
PCBRadio-86RK PCB1Buy from my Tindie store: Radio-86RK - PCB or order from a PCB manufacturer of your choice using provided Gerber or KiCad files
CapacitorC1 - C320.1 uF, MLCC, 5 mm Pitch32Mouser 594-K104K15X7RF53H5
CapacitorC33 - C3847 uF, 25V, Electrolytic or Organic Polymer6Mouser 80-A750EK476M1EAAE40
CapacitorC390.22 uF, MLCC, 5 mm Pitch1Mouser 810-FG24X7R1H224KNT0
CapacitorC4022 nF, MLCC, 5 mm Pitch1Mouser 810-FG28X7R1H223KNT0
CapacitorC4110 nF, MLCC, 5 mm Pitch1Mouser 810-FG28X7R1H103KNT0
CapacitorC422.2 nF, MLCC, 5 mm Pitch1Mouser 810-FG28X7R1H222KNT0
CapacitorC431 nF, MLCC, 5 mm Pitch1Mouser 810-FG28C0G1H102JNT6
CapacitorC4410 pF, MLCC, 5 mm Pitch1Mouser 810-FG28C0G1H100DNT00
DiodeD1 - D91N41489Mouser 512-1N4148
LEDD10LED Indicator, 3 mm, Green1Mouser 630-HLMP-1503-C0002
LEDD11LED Indicator, 3 mm, Yellow1Mouser 630-HLMP-1401
PolyfuseF11.1A, 5 mm Pitch1Mouser 576-16R110BU
ConnectorJP1, JP24 pin header, 2.54 mm Pitch2Mouser 649-68000-204HLF
ConnectorJP1, JP2Jumper, 2.54 mm Pitch4Mouser 806-SX1100-B)
ConnectorJ1RCA Phono connector, Yellow1Mouser 490-RCJ-014
ConnectorJ2DC Power Jack, 2mm1Mouser 806-KLDX-0202-A
ConnectorJ38 pin friction lock connector1Mouser 571-6404568
ConnectorJ4DIN 8-pos, Right Angle, PCB mount1Mouser 490-SDF-80J
ConnectorJ5Sub-D DE9M, Right Angle, PCB mount1Mouser 523-L717SDE09P1ACH3R
ConnectorJ613x2 pin header, shrouded1Mouser 517-30326-6002
ConnectorJ720x1 pin socket1Mouser 517-929850-01-20-RB. Note: Optional, for extension board connection
TransistorQ1, Q22N39042Mouser 512-2N3904TA
ResistorR133 ohm1Mouser 660-CF1/4CT52R330J
ResistorR275 ohm1Mouser 660-CF1/4CT52R750J
ResistorR3150 ohm1Mouser 660-CF1/4CT52R151J
ResistorR4330 ohm1Mouser 660-CF1/4CT52R331J
ResistorR51.5 k1Mouser 660-CF1/4CT52R152J
ResistorR6 - R131 k8Mouser 660-CF1/4CT52R102J
ResistorR142.4 k1Mouser 660-CF1/4CT52R242J
ResistorR1512 k1Mouser 660-CF1/4CT52R123J
Resistor ArrayRN110 k, SIP101Mouser 652-4610X-1LF-10K
Resistor ArrayRN2 - RN44.7 k, SIP63Mouser 652-4606X-1LF-4.7K
SpeakerSP112 mm speaker1Mouser 665-AT-1224TWTR
Keyboard SwitchSW1 - SW67Cherry MX Blue (Clicky)67Mouser 540-MX1A-E1NW
Switch Leveling KitSW11, SW64Leveling kit for MX 1x2, 1x2.25, 1x2.752Mouser 540-G99-0742
Switch Leveling KitSW64Leveling kit for MX 1x81Mouser 540-G99-0226 Note: Use the wire from this part and one of 540-G99-0742 to build a through hole leveling kit for the spacebar
Tactile SwitchSW686 mm Tactile Switch Right Angle1Mouser 653-B3F-3152
Switch KeycapSW684 x 4 mmm Tactile Switch Key Cap, Orange1Mouser 653-B32-1020
Integrated CircuitU1Intel 8080A / КР580ВМ80А, CPU1Unicorn Electronics 8080A, Jameco 52046
Integrated CircuitU2Intel 8224 / КР580ГФ24, Clock Generator1Unicorn Electronics 8224
Integrated CircuitU3Intel 8251А / КР580ВВ51А, USART1Unicorn Electronics 8251A
Integrated CircuitU4Intel 8253 / КР580ВИ53, PIT1Unicorn Electronics 8253, Mouser 968-CP82C54Z
Integrated CircuitU5, U6Intel 8255А / КР580ВВ55А, PPI2Unicorn Electronics 8055A, Mouser 968-CP82C55A-5Z, Jameco 52732
Integrated CircuitU7Intel 8257 / КР580ВТ57, DMA Controller1Unicorn Electronics 8257
Integrated CircuitU8Intel 8275 / КР580ВГ75, CRT Controller1Unicorn Electronics 8275, Jameco 52821
Integrated CircuitU9AS6C62256, SRAM 32Kx81Mouser 913-AS6C62256-55PCN, Unicorn Electronics 62256LP
Integrated CircuitU10, U112716 / КР573РФ5, 2Kx8 EPROM2Mouser 556-AT28C64B15PU, Unicorn Electronics 2716. Note: 2716, 2732, 2764, 27C64 EPROMs, or 28C64 EEPROMs can be used
Integrated CircuitU1274LS373/К555ИР22, 8-bit Latch, 3-state outputs1Mouser 595-SN74LS373N
Integrated CircuitU1374198/К155ИР13, 8-bit Shift Register1Unicorn Electronics 74198
Integrated CircuitU1474LS138/К555ИД7, Decoder 3 to 8 active low outputs1Mouser 595-SN74LS138N, Unicorn Electronics 74LS138
Integrated CircuitU157492/К155ИЕ4, Divide by 12 counter1Mouser 595-SN74LS92N, Unicorn Electronics 74LS92
Integrated CircuitU167486/К155ЛП5, Quad 2-input XOR1Mouser 595-SN74LS86AN, Unicorn Electronics 74LS86
Integrated CircuitU177474/К155ТМ2, Dual D Flip-flop, Set & Reset1Mouser 595-SN74LS74AN, Unicorn Electronics 74LS74
Integrated CircuitU187408/К155ЛИ1, Quad 2-input AND1Mouser 595-SN74LS08N, Unicorn Electronics 74LS08
Integrated CircuitU197404/К155ЛН1, Hex Inverter1Mouser 595-SN74LS04N, Unicorn Electronics 74LS04
Integrated CircuitU207400/К155ЛА3, Quad 2-input NAND1Mouser 595-SN74LS00N, Unicorn Electronics 74LS00
Integrated CircuitU21TL071/К140УД6, Operational Amplifier1Mouser 595-TL071IP
Integrated CircuitU22SN75154N/К170УП2В, Quad RS-232 Receiver1Mouser 595-SN75154N, Unicorn Electronics 75154
Integrated CircuitU23, U24SN75150P/К170АП2, Dual RS-232 Driver2Mouser 595-SN75150P, Unicorn Electronics 75150
Integrated CircuitU25LM7905/КР1179ЕНВ, Negative 5V 1A Linear Regulator1Mouser 926-LM7905CT-NOPB, Unicorn Electronics 7905T
DC-DC ConverterU26IZ0512, +/-12V +/-125mA, 4.5V-9V input1Mouser 209-IZ0512S
Integrated CircuitU27DS1233-5, CPU Supervisory Circuit1Mouser 700-DS1233-5T&R
CrystalY116 MHz, Series, HC-49U1Mouser 774-ATS160-E
IC SocketU1, U5, U6, U7, U840 pin DIP5Mouser 649-DILB40P223TLF, 517-4840-6000-CP
IC SocketU3, U9, U10, U1128 pin DIP4Mouser 649-DILB28P223TLF, 517-4828-6000-CP
IC SocketU4, U1324 pin DIP2Mouser 649-DILB24P-223TLF, 517-4824-6000-CP
IC SocketU1220 pin DIP1Mouser 649-DILB20P-223TLF, 517-4820-3000-CP
IC SocketU2, U14, U2216 pin DIP3Mouser 649-DILB16P-223TLF, 517-4816-3000-CP
IC SocketU15 - U2014 pin DIP6Mouser 649-DILB14P-223TLF, 517-4814-3000-CP
IC SocketU21, U23, U248 pin DIP3Mouser 649-DILB8P223TLF, 517-4808-3000-CP

Memory Map

  • 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)

Firmware Documentation

Monitor

Monitor Commands

  • 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

Monitor Subroutines:

  • 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

Release Notes

Changes

  • Version 1.4

    • Change keyboard layout to QWERTY
    • Add the J7 extension connector
    • Add support for 2732, 2764 and 27C64 EPROMs and 28C64 EEPROM.
  • Version 1.3

    • Fix issues from version 1.1 and version 1.2:
      • Use key labels "Ь X" and "СС SHIFT" on top silkscreen
      • Video signal generation circuit: use R2 = 75 Ohm and R5 = 1.5 kOhm
  • Version 1.2

    • Add F5 key
    • Add copyright year on the top silkscreen
  • 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

Known Issues

  • Version 1.3

    • No known issues
  • Version 1.2

    • Top silkscreen: "Ь" and "X" key labels are swapped
    • Top silkscreen: More correct translation for "СС" is "SHIFT"
    • 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.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
Comments
Sign in to comment

No comments yet. Be the first to ask about this board.