Feature highlights
- Motorola 68030 @25-50MHz + 68882 FPU
- 4MB of static RAM + 64MB DRAM
- 512k of Flash ROM
- VT8242 based PS/2 Keyboard interface
- AIC37C65CL based Floppy interface
- ATA hard disk interface
- 3x 8-bit ISA expansion slots
- MicroATX form factor & PSU connector
- Glue logic handled by a single XC9572XL CPLD
Hardware
I went for a relatively large amount of SRAM onboard since i knew getting the DRAM working was going to take a while. The SRAM is mapped starting at the base of memory extending upwards to 0x400000, and the DRAM is mapped in a nonconsecutive bank starting at 0xC000000. Once the DRAM is working, I’ll likely move the malloc heap into there to take advantage of all the extra memory. Since that frees up a lot of the SRAM, I might be worth copying the OS there on boot to take advantage of the single bus cycle memory access; much faster compared to the flash.
The large chip next to it is a PIC24FJ256, which has hardware LCD controller that i planned to hijack. I never got around to implementing it, since I had started an FPGA based solution around the same time. It was removed from the latest revision board, since I had success with using a CGA card for video instead. There is no serial port onboard, since it was much easier to just add a PC serial card to on of the ISA slots.
Software
Blitz runs my 32-bit operating system G-DOS. It supports FAT filesystems, and uses a flexible driver & init subsystem that handles hardware interfacing. G-DOS has my custom shell (G-Shell) and monitor (G-Mon) built-in, and boots directly from the onboard Flash ROM. A CGA card can be installed in an ISA slot to provide video output, and is required to use Blitz effectively. Lastly, it includes a boot-loader that can load & bootstrap a Linux kernel off a disk.
Testing the G-DOS shell and file manipulation commands. Dumping a segment of memory in G’Mon. I believe the data visible is from the ATA/IDE hard disk controller interface. Dumping the contents of a G-DOS source file from a running Blitz instance. The first signs of life from the Linux kernel, having been boot-loaded in by G-DOS.
A quick history of Blitz
Wire-Wrapped Prototype
Blitz started as a wire-wrap prototype. It had the 68030 hooked up to 2MB of RAM and ROM with GALs for logic, plus an LED register as its only output. Once I had proof of code execution by seeing it blink the LEDs, I realized that wire-wrapping two 32-bit buses around was a pain in the ass, and went to design a PCB. Around this time, I started development of G-DOS, which I would develop concurrently with the hardware.
PCB Revisions
I then went through 3 PCB stages; The first board was just the CPU+FPU, RAM, and ROM. The second stage added on the ISA slots and the CPLD-based DRAM interface. The third stage changed the DRAM design, then added on-board IDE, Floppy, and PS/2 interfaces. This revision was compatible with the MicroATX form-factor so it could be installed in a PC case, and this ended up being the last revision. Each of these stages got produced, assembled, debugged, and tested over about 2 years.
Bring-up
While bringing up the PCB version of blitz, I struggled a lot with the CPU randomly freezing. This problem would go away if I just held my finger on the metal lid of the CPU. I assumed it was a power supply problem, maybe lacking the current supply for the CPU or something. I kept spamming more and more capacitors on later board revisions and the problem subsided, though...
Read more »
Very neat project, perhaps consider making yourself a neat video card based on this nifty 16 bit color map, https://r0k.us/graphics/png16Tech.html#fc16