F&M EPROM Switchboard
This card was not developed by COMX but was a home made extension by F&M, we only made one!
The EPROM Switchboard includes one 2 KB EPROM with the firmware and up to five 8 KB EPROMs with additional software. The 2 KB firmware ROM is placed at address @F800 - @FFFF, this location is also used by the CDP 1870 but the CDP 1870 in the COMX architecture did not allow reading of page memory so selecting an EPROM at this location was actually possible. The 8 KB EPROMs are all mapped at address @C000 - @DFFF.
We managed to fit the home made card into an original COMX housing, as shown in the picture to the right, making it look quite nice. That is as long as you didn’t open the box. In the pictures below you can see the card still has the 2 KB firmware EPROM which is now included in the latest emulator release. None of the remaining EPROMs were left in the box, my guess is that we re-used them for other projects. Still I managed to create some EPROM files with software similar to how we had it running at the time.
The firmware has commands to switch between the 8 KB EPROMs (CARDSx y), as only one can be active at any one time, to show all SW (CARDSx CAT, see screenshot below) and to execute or load the SW stored in the EPROMs (CARDSx “software”). Details of commands is explained in the emulator help pages.
Additional EPROM files now include:
- F&M Utilities including: OLD (recover BASIC after reset), F&M Clock, Char (small character shape), Turbo cassette loader, F&M Disk routines (Init, Lock, Unlock) and a DOS boot loader loadable from EPROM instead of disk.
- Disk Utilities: COMX Init, Lock, Unlock, Diskcopy, Filecopy, Diskhelp
- F&M Monitor both in English and Dutch
- F&M Basic 2.0
- Tennismania (pong game)
- Hit and Run (COMX game)
In principle any software < 8 KB can be put in an EPROM file to work with the emulator. The firmware includes functionality to copy BASIC software into RAM and set BASIC parameters correctly, copy assembly routines to any RAM memory location or RUN software directly from the EPROM in location @C000-@DFFF.
EPROMs or EPROM files are build up as follows:
@C000 00
@C001 20 - F&M Switchboard indicator
@C002 08 - EPROM size
@C010 C0 F8 00 - Branch to firmare
@C020-@C02F - Name (ending with 0D)
@C030-@C031 - Execution address
@C032 - Type, where 0 is software running in EPROM address range, 1 assembly code to be copied to RAM, 2 BASIC program to be copied to RAM.
@C033-@C034 - Memory start location of software (used for copy to RAM)
@C035-@C036 - Destination address in RAM (used for copy to RAM)
@C037-@C038 - Memory end location of software (used for copy to RAM)
@C039 - High byte of DEFUS value (used for copy of BASIC program)
@C03A-@C03B - RAM start location that software will use (shown in CAT)
@C03C-@C03D - RAM end location that software will use (shown in CAT)
Note @C020-@C03F should be repeated for every program, so info for program 2 can start at @C040, 3 at @C060 etc. If no more programs are included a 0 is needed at @C0x0. So when the EPROM has only 1 program @C040 has to be 0.
To switch to a different 8K EPROM in assembly the OUT 1 instruction can be used. Bit 5, 6 and 7 are used for the EPROM selection (bit 1 to 4 were used for the expansion box slot selection and bit 5 and 6 are also used for the RAM card, see also I/O Map)