Memory Unit

The Memory Unit will contain all the addressable memory and devices that will be accessible to the LEO-1 CPU. It will be constructed on a single board which will be at the top of the stack. The old version, on perfboard, took months to build and was not quite finished when I decided to abandon perfboard and use PCBs instead.

The design of the address decoder allows for 8 x 128K blocks of ROM (16 banks), 16 x 512K blocks of RAM (128 banks), a real-time clock, two 8-position DIP switches and two 8255 peripheral controllers, for general I/O and (hopefully) controlling an IDE hard drive. There is also a pair of ZIF sockets on the board for easy insertion and removal of ROMs while testing. These sockets can be mapped to any of the 8 ROM banks using a rotating DIP switch. Also included on this board are 4 device expansion sockets (supporting up to 8 devices), a 'digits' port a RAM expansion port and a VDU port. The VDU board is designed to be mounted on top of the memory board and plugged into it. The Digits Board will allow a 16-bit value to be displayed in hex on the front panel, for debugging.

The 'ROM' is actually EEPROM but I'll use the phrase ROM when referring to it. The exact part I'm using is the Greenliant GLS29EE010 which is an inexpensive 128K byte Flash memory. Two of these side by side allows 128K (16-bit) words. The total addressable ROM size is therefore 1 megaword, however the board will only hold 4 pairs of ROM chips plus the ZIF sockets making a total of 640 kilowords.

The random access memory chip I'm using is the Alliance AS6C4008 which is a 512K byte static RAM. Two of these side by side allows 512K (16-bit) words. The total addressable RAM size is therefore 8 megawords, however the board will only hold 6 pairs of RAM chips making a total of 3 megawords.

This picture shows the state of the new memory board as of New Year 2018. There are some test boards connected to PCB to allow it to be controlled manually:

This picture shows the VDU attached to the new memory board and displaying some random characters: