Compiling firmware
There are several emulators implemented:
- ice6502 - ICE for the 6502.
- ice65c02 - ICE for the 65C02.
- ice6809 - ICE for the 6809E.
- icez80 - ICE for the Z80.
These are supported on several hardware platforms:
- godil_250 - GODIL 250
- godil_500 - GODIL 500
- lx9_jason - LX9 Core Board (from eepizza) with Jason Flynn's level shifters shim
- lx9_jason_flipped - LX9 Core Board (from eepizza) with Jason Flynn's level shifters shim (rotated 180 degrees)
- lx9_dave - LX9 Core Board (from eepizza) with Dave's family of active level shifters (CPU specific adapters)
Install the dependencies described in Toolchain
Clone the project:
git clone --branch dev https://github.com/hoglet67/AtomBusMon.git
Note: all the latest work is on the dev branch
cd AtomBusMon/target/godil_250/ice6502
make clobber build
This generates a .bit and.mcs file in the current directory:
See Programming the GODIL for instructions on using iMPACT to program the GODIL.
The following targets exist:
- clobber: delete any pre-existing hardware and software build artefacts
- clean: delete any pre-existing software build artefacts
- build: produce the final .bit and .mcs file
Clobber should be used when it is necessary to force the FPGA design to be recompiled. This takes a few minutes.
cd AtomBusMon/target/godil_250
make clobber build
cd AtomBusMon/target
make clobber build
The firmware for each of emulators is built from the same source file: https://github.com/hoglet67/AtomBusMon/blob/master/firmware/AtomBusMon.c
There is some use of conditional compilation to build a specific target:
#ifdef CPU_6502 #ifdef CPU_65C02 #ifdef CPU_Z80 #ifdef CPU_6809
This makes customization specific to a target, for example:
- Setting the emulator name
- Enabling the IO specific commands for the Z80
- Include the appropriate CPU registers display
- Include the appropriate disassembler