Skip to content

BIOS COM ABI

Games reach the link only through these BIOS services (never the SIO registers) — so re-implementing them is enough to bridge the link. See implement it.

Call mechanism

Wrapper at 0x2304cd: service id in W, ×4, index the BIOS table at 0xFFFE00, call.

ld RW3, <id> ; call 0x2304cd     ; (0xFFFE00 + id*4) → call

Params in RB3, buffer ptr in XHL3, counts in RWA3, status in RA3.

Services

ID Name Inputs → result
10 COMINIT initialize; RA3=0 ok
11 COMSENDSTART flush queued TX
12 COMRECIVESTART enable RX
13 COMCREATEDATA queue TX byte from RB3
14 COMGETDATA RX byte → RB3; RA3=0 ok / 1 empty
15 / 16 COMONRTS / COMOFFRTS assert / deassert /RTS
17 COMSENDSTATUS pending TX count → RWA3
18 COMRECIVESTATUS RX byte count → RWA3
19 COMCREATEBUFDATA send RB3 bytes from XHL3
1a COMGETBUFDATA receive ≤ RB3 bytes into XHL3

Legacy NeoPop/Mednafen HLE: TX byte queue, HDMA/int ch 11 after writes / ch 12 after reads, /RTS via I/O 0xB2.

Example — identity frame

COMCREATEDATA FC · 01 · 00 · 30 ; COMSENDSTART   → FC 01 00 30

Whole-ROM audit: all 32 COMCREATEDATA literals are 00 01 F8 F9 FC FD FE, in the link routines only.