This project is an attempt to squeeze all the functionality of the so-called 'mini' expander into a single cartridge. The prototype uses two boards stacked one on top of the other. For production I may design a single board that sticks a little way out the back of the Aquarius (but still much more compact than the mini-expander!).
RAM: 32K static RAM located at the standard address range $4000-$BFFF.
ROM: 512k, banked to emulate up to 64 * 8k ROMs at $E000-$FFFF or 32 * 16k ROMs at $C000-$FFFF.
Sound: AY-8910, may include jack for stereo output.
Joysticks: 20 pin connector for twin joysticks or 16 bits of general purpose I/O.
Storage: FAT file system on USB stick or SD-Card (via CH376S module).
ROM bank number is stored in a 74HCT273 8 bit D register, which is loaded by writing to any ROM location between $C000 and $FFFF. The bits are allocated as follows:-
Bits 0 = odd/even 8k ROM number (ignored in 16k ROM mode).
Bits 1-5 = select one of 32 16k ROMs, or (in combination with bit 0) 64 8k ROMs.
Bit 6 = 8k/16k ROM mode.
Bit 7 = lock bit. Setting this to '1' will block any further attempts to modify the bank register.
In 8k ROM mode address line A13 is set according to bit 0. The 8k ROM is mirrored at $C000-$DFFF and $E000-$FFFF. In 16k mode A13 is passed through to access the full 16k ROM at $C000-$FFFF. Any combination of 8k and 16k ROMs is possible, so long as the total number of 8k blocks does not exceed 64.
The CH376 module will provide access to IBM format files on USB stick or SD Card. It has a fast 8 bit parallel interface and does all the low level stuff internally, requiring minimal resources from the Aquarius to load, save, catalog or delete files. In the prototype it plugs into an external jack at the rear, as there wasn't enough room to mount it internally. Once the design is finalized and surface-mount parts used it may be mounted inside the cartridge.
Rather than using two D9 sockets for the joysticks I have gone for a single 20 pin DIL connector. As well as providing access to all of the AY's I/O port bits this will have +5V and Ground to power external devices such as audio DACs, LCD display, wireless joysticks etc. Wired joysticks will be connected via an adapter cable.
So far only the 32k RAM part is working, but I hope to test the ROM banking function tomorrow. Once that's done I can work on creating a file system ROM (will probably add it to BLBASIC, which I have already customized to provide some extra BASIC commands).
Edited by Bruce Abbott, Thu Sep 24, 2015 4:48 AM.