Millfork: a middle-level programming language targeting 6502- and Z80-based microcomputers and home consoles
This project is maintained by KarolS
The c64_ef_small
target defines a 128 kB Easyflash cartridge image, with 72 kB effective ROM space.
The program is run directly from ROM;
typical ROM programming guidelines apply, see the ROM vs RAM guide.
The LOROM segment ($8000-$9FFF) is fixed and is the main code segment.
The HIROM segment ($A000-$BFFF) is banked (banks numbered from hirom0
to hirom7
).
Initially, the hirom0
bank is banked in.
It contains the initialization code, the initial values for RAM, and the EAPI (if used).
You can switch the bank using the switch_hirom(0..7)
function.
In order to use EAPI, you need to include the binary distribution of EAPI at $B800 in hirom0
, e.g.:
segment (hirom0) __eapi @ $B800 = file("eapi-am29f040-10")
and call eapi_init()
. It sets the errno
value.
The EAPI requires 768 bytes of RAM.
You can choose the location of EAPI by defining the EAPI_ADDR
feature,
it should point to a page-aligned address in RAM, $200 or more.
If you want to reinitialize the EAPI without copying it from ROM again, you can call eapi_init_again()
instead.