tms9900-gcc, 32K expansion. The chess is EA5-shaped; a paged378 cart
copies it into RAM so MAME (and js99er) can boot it. Spectrum 32-column
board, C64 colours. make ti99 / make ti99 test.
make/common.mk assigned VICE_HOME and the other emulator homes with :=,
and a makefile assignment beats the environment - so exporting VICE_HOME
was silently blanked and "make plus4 test" ran a bare xplus4 that is not
on PATH. They are ?= now. The value is a prefix, so it needs its
trailing slash.
A port name only selects a port, so give it an empty recipe rather than
let make print "Nothing to be done for `plus4'" in front of a test run
that is about to work perfectly well.
recipes/ gets the variables that are easy to lose and fail quietly:
RETRO68 for mac68k, PATH and ZCCCFG for spectrum - zcc compiles and
links the whole program without ZCCCFG and only the .sna step fails,
which reads like a broken install - and the emulator homes for running.
Also that Basilisk holding cc65-Chess.dsk open fails the mac68k build
at hformat with a lock error that looks like a broken toolchain.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
board_ApplyMove's log-globals write (added with the ZX Spectrum) and
gGotoTile with its test in human_ProcessInput (added with the Mac 68k)
were unconditional code in src/ for features nine other ports do not
have. 137 bytes on every cc65 target - which cost the Atari a whole
DLIST page, on a machine neither of those compilers can even target.
The Spectrum asks the undo ring itself now. gGotoTile stays, because a
mouse has to move a cursor that is a file static in human.c and no port
can reach it, but behind PLAT_CURSOR_JUMP, defined only in mac68k.mk.
Every 6502 target recovers 141 bytes (cx16 137 - its 65C02 codegen is
cheaper on the same source), so all of them end up slightly better than
before those two ports landed. Atari DLIST is back at $7F00 with 42
bytes of padding. AGENTS.md carries the re-measured numbers, the rule
that a port may not add unconditional bytes to src/, and the log
contract that made pre-filling the globals look like a fix.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A port is no longer a cl65 -t name. GNU Make dispatches from make/ports
and make/toolchains, so Spectrum (z88dk) and the host term build sit next
to the cc65 targets. Products land in build/<port>/; make help / make list
show the verbs and which compilers this machine has. make apple2 po is one
invocation.