MC68008 Computer v2
Background
I previously have made a MC68008 computer on a breadboard. That one was quite limited, having 128kB of RAM and 128kB of UV-EPROM that had to be erased every time I wanted to change the code. It also had no way to interface with the user except through a UART. This new version is a significant upgrade.
Features
- MC68008 @ 8 MHz
- 128kx8 SRAM
- 128kx8 Flash ROM
- 80x25 NTSC monochrome video terminal (ATMEGA328P based)
- DTACK wait state support circuitry
- ATTINY85 based reset and clock
- Keyboard scanner (WIP)
Notes
ATTINY85 reset / clock
The MC68008 has requirements for reset hold time. Instead of using a monostable multivibrator and a TTL clock, I used an ATTINY85 and soldered and hot glued a reset button on top. This means I get reset and clock functionality in a 8 pin DIP package. The ATTINY85 has an internal 8MHz oscillator and an option to output said clock on PB4:
Flickering screen on print
When a lot of text is printed on the screen at once, the screen flickers. This is because the ATMEGA328P is not fast enough to keep up with the CPU when a lot of text is being printed. The ATMEGA328P is running at 16MHz and has to service a 1MHz pixel clock (16MHz/16) and also has to read from the MC68008 bus. This is just a limitation that I have to deal with. I could try to improve bus service time using my logic analyzer to see how long it takes the ATMEGA328P to respond to a bus request.
Clock accuracy
The ATMEGA328P needs a very precise 16MHz clock to generate a proper NTSC signal. Due to this I currently have jumpers going to a Arduino Uno PCB to steal it's 16MHz crystal and connect it to the internal oscillator of the ATMEGA328P. This is not permanent of course. I have 8MHz crystals but the capacitors I have aren't accurate enough to get the frequency exactly correct. I need to go get the right capacitor values and maybe a more accurate crystal (doubt it).
Zilog SCC didn't work
I own a Zilog SCC but I couldn't get it to work. I assume that the chip is damaged. When I connect it, the 5V supply drops significantly, causing the computer to malfunction. Current draw looks normal though. I will not be using this SCC chip and will find an alternative (maybe MC68901?)
MC68901
I am thinking of getting a MC68901 to perform a lot of the I/O. It provides 8 GPIO pins, 2 UARTs, interrupt controllers (16 source), and two timers. I will need a UART compatible crystal. I probably will not be using the interrupt controller because the 48-pin 68008 has two interrupt level pins:
I don't think I will be using any extra interrupt devices apart from a keyboard controller. The MC68901 interrupt controller uses daisy chained interrupts (similar to how Z80 does it, dissimilar to how it is done on the IBM PC with the i8259 PIC).
Keyboard scanner
I designed a keyboard scanner on a PCB that uses a ATMEGA328P and some glue logic to decrease pin count. They keyboard it uses is a TI 99/4A keyboard. It does not work yet. It does not scan the TI 99/4A keyboard correctly.
I am thinking of using one of the Intel "MEGAKEY" keyboard controller chips instead which would let me use a standard PS/2 keyboard. There isn't really much documentation on the Intel "MEGAKEY" but I assume it's a drop in i8042 keyboard controller clone. Given that the VT82C42 is a drop in i8042 clone, the pinout should be the same. But I should create a test circuit to test the MEGAKEYs to make sure they aren't duds. Maybe I can use an arduino to do this but I am running low on working arduinos and like the RP2040. So maybe I will base it on the RP2040 but to do that I need to use a level shifter because the RP2040 is 3.3V and the MEGAKEY is 5V.