There are many phases to building a single board computer, but perhaps one of the first things to do, and sometimes the hardest if you have never done it before, is to develop what components you want to have. Therefore, here are some of my thoughts about this:

It will run on a Z80 processor.

It will provide interfacing to the processor and computer through both an NTSC video out and keyboard in using a PS/2 connection. These will both be done by using the schematics shared by Grant Searle on his website at At his request, the schematic and information for his interface will not be shared here, but you can view it on his page at the provided link.

An additional Atmel microcontroller will be used to interface with an SD Card for disk I/O. The file system used will be FAT32 with no long filenames. Other details will be determined later.

The ROM will contain a version of BASIC. Currently, I am planning on writing the BASIC interpreter and other OS code using the z88dk C compiler. This way, certain library routines will already be provided.

Memory will consist of two chips. A ROM chip will hold the BASIC and startup code as required by the Z80. A RAM chip will fill the remainder of the space and will provide bank switched memory up to the maximum size used by the chip. A BASIC command will provide the switching. It may be that only an upper portion of RAM (16 or 32K) will be switched to protect the BASIC program and stack.

The SD Card and bank switching will be accomplished through mapped I/O, not memory mapping to preserve the memory locations for program use.

At this time, I am working on designing the system by researching and examining the Z80 computer designed by Steve Maddison and described on  I am, however, making some changes to the system.  For starters, I am adding the ability to select different boot ROMs and sizes.  There will be a choice between a 16K ROM or a 32K ROM.  This then leaves 48K and 32K RAM free, respectively.  There will also be an option to select from different ROMs stored on the chip by moving jumpers to select different banks.  Additionally, I am also using a 512K RAM.  At this point, I am not implementing the bank switching circuitry, but with a RAM of this size, I would be able to add this later.

Once I have the design complete, I will post it here.