1. Hardware configuration

Figure 1 shows the hardware configuration. When CPU is performing instructions, CPU accesses memory devices and peripherals. When you are programming, CPU is separated from bus lines by a Direct Memory Access (DMA) circuits and switches and LEDs on the panel are connected to memory devices directly. The schematic is shown in the attachment file PERSEUS-3_schematic_1.pdf.

2. CPU

I chose the Motorola’s MC6802 as the CPU for this computer because I had machine language development experience with this CPU in 1980 and the ease of making DMA circuits. The MC6802 has the same instructions as the popular MC6800, but in the halt state, the address bus does not go to high impedance and remains outputting the next executable address. This is inconvenient for normal DMA circuit design, but it is suitable for displaying the running address on LEDs.

3. Memory

The memory devices are one 16 k bit SRAM (HM6116LP-3) and one 64 k bit SRAM (6264A-10L). The total memory capacity is 10 k byte. Both devices are backuped by 3.6 V, 70 mA h NiMH battery. The battery has a trickle charge. The 2 k byte area by HM6116 including system vector addresses has a write mask switch. The interpreter is installed to this area. Making the write protect switch writable and then you will input the program. Then making the write protect switch write-disable and then you will run the program. This way, the program will not break if it runs out of control. A photo of the main board is shown below.

4. Panel switches and LEDs

In this computer you enter the programs with switches on the panel. Sixteen address switches are connected to address bus though 3-state buffers (74HC244). Eight data switches are also connected to data bus though 3-state buffers (74HC244). The DMA circuit controls the 3-state buffers. In the serial interface, there are LEDs on the transmit/receive signals so that you can directly recognize the communication status. One bit of the parallel interface is also equipped with a switch and an LED to make it easy to understand the operation of the interface.

5. Debugging by instruction one by one

When the RUN/HALT switch on the panel is set to the halt side, the HALT input signal of the CPU goes to a low level, the CPU stops running. The address LEDs points to the next execution address of the stopped instruction. The memory address bus and data bus are connected to the switches by a DMA circuit. The data display LEDs display the memory data value of the address that the address switches are pointing to. Now, when the write switch is pressed, the value of the data switches is written to the memory and the LED display changes to the written value.

    Press the step switch and the CPU will execute one instruction and stop. The correct progress of the program can be seen in the address LED display. When the switch is set to the RUN side, the CPU will start continuous execution from the stop position.

6. Peripherals

The computer has an RS-232C serial interface and an 8bit parallel input/output interface. As a serial interface, Asynchronous Communication Interface Adapter (ACIA) MC6850 (HD6350 Hitachi) is used. The parallel interface is configured with standard logic 74LS374,74HCT374. The computer also has an analog input/output interface. As an analog input, 8bit A/D converter (AD7820) and as an analog output, 8bit D/A converter (AD558JN) is used. The dynamic range is 0v to 2.5V. This is to experiment with analog signal processing.

7. Build 

The computer uses a 30 cm x 30 cm x 9 cm steel enclosure but the panel is made of aluminum. This enclosure was for making to self-made audio amplifier. The 5V,1A power supply using transformer and regulator IC 7805 is mounted at the rear of the enclosure. AC power input is 100V. Wiring on a universal board is wire wrapping.

8. A tiny interpreter language

I made tiny 16 bits integer interpreter language named Computation Interpreter -1 (CI-1). The RS232C serial terminal does programing and output of this interpreter. The variables are twenty six of ‘A’ to ‘Z’ . The operators are only four arithmetic operations. The notation for mathematical expressions is Reverse Polish Notation (RPN). Conditional decision statements and jump statements are provided. I also provide functions that directly access the memory space specified by the argument. This allowed me to describe an array. This language also includes a line editor. If a line has no line number, it is executed directly. If a line has a line number, it is added to the program. The interpreter was written in machine language and hand-assembled and debugged on this computer. The program size is 1.7 k bytes. 

System source code and specification of CI-1; see the attached file CI_1_1_4.pdf.

9. Results

I was able to make a 6802 machine language computer and a tiny interpreter. When I built a computer like this myself in 1980, debugging programs was difficult because there were no address LEDs. In comparison, this computer PERSEUS-3 had LEDs to indicate the manual progression of the program and made debugging machine language practical. 

    This computer PERSEUS-3 became an emulator to develop the embedded subsequent computer PERSEUS-4 for a vintage radio digital display in 2015, and the embedded computer PERSEUS-5 for an RS232C serial terminal in 2018 (https://hackaday.io/project/176175-6802-serial-terminal). 

The key scanning and LED display module control software codes were reassembled for CPU 6502 later. Then these design concepts led to the PERSEUS-7 (https://hackaday.io/project/175866-6502-standalone-computer) in 2020.

10. Application example

    10-1. Interpreter (CI-1)

System source code and specification; see the attached file CI_1_1_4.pdf

Video; https://www.youtube.com/watch?v=0IhgteEEU1E

00:03: System reset, and the interpreter is running by single instruction step until the first letter of greeting to the PC terminal.

00:23: Interpreter, go!

00:28: Display a program source

00:36: Running a program source

    10-2. Morse code decoder

This example machine code program decodes the Morse code input from the parallel interface into ASCII code in real time, and outputs it to the serial interface.

Source code; see the attached file MORSE_1_1_0.pdf

Video; https://www.youtube.com/watch?v=K0q-3dODl48

The actual Morse code is being received on a shortwave radio. Its audio output is connected to the parallel interface of the PERSEUS-3 through a band-pass filter and envelope detector circuit. The decoding result is being displayed on the 6802 Serial Terminal.