gigatron/rom/Contrib/kervinck/gcl/bindings.h
2025-01-28 19:17:01 +03:00

134 lines
2.9 KiB
C

/*
* Bindings for ROM v1
* XXX: check all numbers as they are hand typed
*
* Serious attempts should be made to keep all of these stable accross
* ROM versions. The location of embedded programs, application data and
* application-specific SYS extensions are not part of the defined
* bindings and are therefore free to change.
*
*/
enum ROMv1bindings {
/*
* ROM version/type identifier. There is no real scheme yet.
* Suggest to use 0 for home-grown ROMs.
*/
romTypeROMv1 = 0x001c,
/* Zero page */
memSize = 0x0001,
bootCount = 0x0004,
bootCheck = 0x0005,
entropy = 0x0006,
videoY = 0x0009,
frameCount = 0x000e,
serialRaw = 0x000f,
buttonState = 0x0011,
xout = 0x0013,
xoutMask = 0x0014,
vPC = 0x0016,
vAC = 0x0018,
vLR = 0x001a,
vSP = 0x001c,
romType = 0x0021,
sysFn = 0x0022,
sysArgs = 0x0024,
soundTimer = 0x002c,
ledTimer = 0x002d,
ledState = 0x002e,
ledTempo = 0x002f,
vars = 0x0030,
/* Main memory */
videoTable = 0x0100,
vReset = 0x01f0,
vCpuStart = 0x0200,
soundTable = 0x0700,
screenPages = 0x0800,
/* Sound channels */
channel1 = 0x01fa,
channel2 = 0x02fa,
channel3 = 0x03fa,
channel4 = 0x04fa,
/* Sound channel structure */
wavA = 250,
wavX = 251,
keyL = 252,
keyH = 253,
oscL = 254,
oscH = 255,
/* vCPU byte codes */
LDWI = 0x11,
LD = 0x1a,
LDW = 0x21,
STW = 0x2b,
BCC = 0x35,
EQ = 0x3f,
GT = 0x4d,
LT = 0x50,
GE = 0x53,
LE = 0x56,
LDI = 0x59,
ST = 0x5e,
NE = 0x72,
PUSH = 0x75,
LUP = 0x7f,
ANDI = 0x82,
ORI = 0x88,
XORI = 0x8c,
BRA = 0x90,
INC = 0x93,
ADDW = 0x99,
PEEK = 0xad,
SYS = 0xb4,
SUBW = 0xb8,
DEF = 0xcd,
CALL = 0xcf,
ALLOC = 0xdf,
ADDI = 0xe3,
SUBI = 0xe6,
LSLW = 0xe9,
STLW = 0xec,
LDLW = 0xee,
POKE = 0xf0,
DOKE = 0xf3,
DEEK = 0xf6,
ANDW = 0xf8,
ORW = 0xfa,
XORW = 0xfc,
RET = 0xff,
/* Core SYS extensions */
SYS_Reset_36 = 0x009a,
SYS_Exec_88 = 0x00ad,
SYS_Out_22 = 0x00f4,
SYS_In_24 = 0x00f9,
SYS_NextByteIn = 0x02e9,
SYS_Random_34 = 0x04a7,
SYS_LSRW7_30 = 0x04b9,
SYS_LSRW8_24 = 0x04c6,
SYS_LSLW8_24 = 0x04cd,
SYS_Draw4_30 = 0x04d4,
SYS_VDrawBits_134 = 0x04e1,
SYS_LSRW1_48 = 0x0600,
SYS_LSRW2_52 = 0x0619,
SYS_LSRW3_52 = 0x0636,
SYS_LSRW4_50 = 0x0652,
SYS_LSRW5_50 = 0x066d,
SYS_LSRW6_48 = 0x0687,
SYS_LSLW4_46 = 0x06a0,
SYS_Read3_40 = 0x06b9,
SYS_Unpack_56 = 0x06c0,
SYS_PayloadCopy_34 = 0x06e7,
/* Built-in font */
font32up = 0x0700,
font82up = 0x0800,
};