This the multi-page printable view of this section.Click here to print.

Return to the regular view of this page.

reference

Table of Contents

1 - API by Address

API by Address
Function AddressVectorDescription
CLSR E544Clear the screen
CLRLN E9FFClear the line X
CINT FF81Initialise screen editor
IOINIT FF84Initialise I/O Devices
RAMTAS FF87Perform RAM test
RESTOR FF8ARestore default system & interrup vectors
VECTOR FF8DManage RAM Vectors
SETMSG FF90Control system message output
SECOND FF93Send secondary address for LISTEN
TKSA FF96Send secondary address to a device commanded to TALK
MEMTOP FF99Set top of memory
MEMBOT FF9CSet bottom of memory
SCNKEY FF9FScan the keyboard
SETTMO FFA2Set IEEE bus card timeout
ACPTR FFA5Get data from the serial bus
CIOUT FFA8Transmit a byte over the serial bus
UNTLK FFABSend an UNTALK command
UNLISTEN FFAESend an UNLISTEN command
LISTEN FFB1Command a device on serial bus to LISTEN
TALK FFB4Command a device on serial bus to TALK
READST FFB7Read status word
SETLFS FFBASetup a logical file
SETNAM FFBDSet file name
OPEN FFC0031AOpen a logical file
CLOSE FFC3031CClose a logical file
CHKIN FFC6031EOpen channel for input
CHKOUT FFC90320Open channel for output
CLRCHN FFCC0322Clear I/O channels
CHRIN FFCFGet a character from the input channel
CHROUT FFD20326Output a character
LOAD FFD50330Load memory from a device
SAVE FFD80332Save memory to a device
SETTIM FFDBSet system clock
RDTIM FFDERead system clock
STOP FFE10328Check if key/stop key is pressed
GETIN FFE4032AGet a character
CLALL FFE7032CClose all open files
UDTIM FFEAUpdate system clock
SCREEN FFEDReturn screen format
PLOT FFF0Set cursor location
IOBASE FFF3Define I/O memory page

2 - API by Name

API by Name
Function AddressVectorDescription
ACPTR FFA5Get data from the serial bus
CHKIN FFC6031EOpen channel for input
CHKOUT FFC90320Open channel for output
CHRIN FFCFGet a character from the input channel
CHROUT FFD20326Output a character
CINT FF81Initialise screen editor
CIOUT FFA8Transmit a byte over the serial bus
CLALL FFE7032CClose all open files
CLOSE FFC3031CClose a logical file
CLRCHN FFCC0322Clear I/O channels
CLRLN E9FFClear the line X
CLSR E544Clear the screen
GETIN FFE4032AGet a character
IOBASE FFF3Define I/O memory page
IOINIT FF84Initialise I/O Devices
LISTEN FFB1Command a device on serial bus to LISTEN
LOAD FFD50330Load memory from a device
MEMBOT FF9CSet bottom of memory
MEMTOP FF99Set top of memory
OPEN FFC0031AOpen a logical file
PLOT FFF0Set cursor location
RAMTAS FF87Perform RAM test
RDTIM FFDERead system clock
READST FFB7Read status word
RESTOR FF8ARestore default system & interrup vectors
SAVE FFD80332Save memory to a device
SCNKEY FF9FScan the keyboard
SCREEN FFEDReturn screen format
SECOND FF93Send secondary address for LISTEN
SETLFS FFBASetup a logical file
SETMSG FF90Control system message output
SETNAM FFBDSet file name
SETTIM FFDBSet system clock
SETTMO FFA2Set IEEE bus card timeout
STOP FFE10328Check if key/stop key is pressed
TALK FFB4Command a device on serial bus to TALK
TKSA FF96Send secondary address to a device commanded to TALK
UDTIM FFEAUpdate system clock
UNLISTEN FFAESend an UNLISTEN command
UNTLK FFABSend an UNTALK command
VECTOR FF8DManage RAM Vectors

3 - include

3.1 - BeebASM

Files for the BeebASM assembler

3.1.1 - api

Generated file for beebasm
; *************************************************************************** ; API for Commodore C64 Kernal ; Notes about the C64 operating system & memory ; Author: Peter Mount, Area51.dev & Contributors ; ; URL: https://area51.dev/c64/kernal/ ; ; Modified: Sun, 23 Jan 2022 17:05:58 UTC ; ; Current version: https://area51.dev/c64/kernal/reference/include/beebasm/api.asm ; *************************************************************************** ACPTR = &FFA5 ; Get data from the serial bus CHKIN = &FFC6 ; Open channel for input CHKOUT = &FFC9 ; Open channel for output CHRIN = &FFCF ; Get a character from the input channel CHROUT = &FFD2 ; Output a character CINT = &FF81 ; Initialise screen editor CIOUT = &FFA8 ; Transmit a byte over the serial bus CLALL = &FFE7 ; Close all open files CLOSE = &FFC3 ; Close a logical file CLRCHN = &FFCC ; Clear I/O channels CLRLN = &E9FF ; Clear the line X CLSR = &E544 ; Clear the screen GETIN = &FFE4 ; Get a character IOBASE = &FFF3 ; Define I/O memory page IOINIT = &FF84 ; Initialise I/O Devices LISTEN = &FFB1 ; Command a device on serial bus to LISTEN LOAD = &FFD5 ; Load memory from a device MEMBOT = &FF9C ; Set bottom of memory MEMTOP = &FF99 ; Set top of memory OPEN = &FFC0 ; Open a logical file PLOT = &FFF0 ; Set cursor location RAMTAS = &FF87 ; Perform RAM test RDTIM = &FFDE ; Read system clock READST = &FFB7 ; Read status word RESTOR = &FF8A ; Restore default system & interrup vectors SAVE = &FFD8 ; Save memory to a device SCNKEY = &FF9F ; Scan the keyboard SCREEN = &FFED ; Return screen format SECOND = &FF93 ; Send secondary address for LISTEN SETLFS = &FFBA ; Setup a logical file SETMSG = &FF90 ; Control system message output SETNAM = &FFBD ; Set file name SETTIM = &FFDB ; Set system clock SETTMO = &FFA2 ; Set IEEE bus card timeout STOP = &FFE1 ; Check if key/stop key is pressed TALK = &FFB4 ; Command a device on serial bus to TALK TKSA = &FF96 ; Send secondary address to a device commanded to TALK UDTIM = &FFEA ; Update system clock UNLISTEN = &FFAE ; Send an UNLISTEN command UNTLK = &FFAB ; Send an UNTALK command VECTOR = &FF8D ; Manage RAM Vectors

3.1.2 - headers

Generated file for beebasm
; *************************************************************************** ; Headers for Commodore C64 Kernal ; Notes about the C64 operating system & memory ; Author: Peter Mount, Area51.dev & Contributors ; ; URL: https://area51.dev/c64/kernal/ ; ; Modified: Sun, 23 Jan 2022 17:05:58 UTC ; ; Current version: https://area51.dev/c64/kernal/reference/include/beebasm/headers.asm ; *************************************************************************** ; C64 Zero Page D6510 = &0 ; 6510 On-Chip I/O DATA Direction Register R6510 = &1 ; 6510 On-Chip I/O Port ADRAY1 = &3 ; Vector to routine to convert Number from Floating Point to Signed Integer ADRAY2 = &5 ; Vector to routine to convert Number from Integer to Floating Point VERCK = &A ; Flag: LOAD or VERIFY TXTTAB = &2B ; Pointer to start of BASIC program text VARTAB = &2D ; Pointer to start of BASIC Variable storage area ARYTAB = &2F ; Pointer to start of array variable area STREND = &31 ; End of Basic array storage (+1), Start of free ram FRETOP = &33 ; Pointer to bottom of string text area FRESPC = &35 ; Temp pointer for strings BASMEMSIZ = &37 ; Highest address used by basic BLNSW = &CC ; Cursor Blink Enable RIBUF = &F7 ; RS232 Input Buffer Pointer ROBUF = &F9 ; RS232 Output Buffer Pointer FREKZP = &FB ; 4 free bytes of Zero Page for User Programs BASZPT = &FF ; BASIC temp data area for floating point to ASCII conversion ; C64 Page 2 BUF = &200 ; BASIC Line Editor Input Buffer LAT = &259 ; Active logical file number table FAT = &263 ; Device number for each logical file SAT = &26D ; Secondary address for each logical file KEYD = &277 ; Keyboard buffer MEMSTR = &281 ; Start of Memory pointer MEMSIZ = &283 ; End of Memory pointer COLOR = &286 ; Current Foreground text colour GDCOL = &287 ; Colour of character under Cursor HIBASE = &288 ; Page of Screen Memory XMAX = &289 ; Max length of keyboard buffer RPTFLG = &28A ; Which keys will repeat SHFLAG = &28D ; Shift/Ctrl/Commodore key pressed LSTSHF = &28E ; Last value of Shift/Ctrl/Commodore key pressed MODE = &291 ; Shift/Commodore switch AUTODN = &292 ; Screen scrolling enabled M51CTR = &293 ; Mock 6551 RS-232 Control Register M51CDR = &294 ; Mock 6551 RS-232 Command Register M51AJB = &295 ; Mock 6551 RS-232 Nonstandard Bit Timing M51STAT = &297 ; Mock 6551 RS-232 Status Register RIDBE = &29B ; RS-232 Index to end of receive buffer RIDBS = &29C ; RS-232 Index to start of receive buffer RODBE = &29D ; RS-232 Index to end of transmit buffer RODBS = &29E ; RS-232 Index to start of transmit buffer ENABL = &2A1 ; RS-232 Interrupts Enabled ; C64 Page 3 Vectors & Cassette Buffer USRPOK = &310 ; Jump instruction for BASIC USR() function USRADD = &311 ; Address of USR() function CINV = &314 ; IRQ Interrupt Routine Vector CBNV = &316 ; BRK Interrupt Routine Vector NMINV = &318 ; NMI Interrupt Routine Vector IOPEN = &31A ; Kernal OPEN Vector ICLOSE = &31C ; Kernal close Vector ICHKIN = &31E ; Kernal CHKIN Vector ICKOUT = &320 ; Kernal CKOUT Vector ICLRCH = &322 ; Kernal CLRCHN Vector IBASIN = &324 ; Kernal CHRIN Vector IBSOUT = &326 ; Kernal CHROUT Vector ISTOP = &328 ; Kernal STOP Vector IGETIN = &32A ; Kernal GETIN Vector ICLALL = &32C ; Kernal CLALL Vector USRCMD = &32E ; User-Defined Command Vector ILOAD = &330 ; Kernal LOAD Vector ISAVE = &332 ; Kernal SAVE Vector TBUFFR = &33C ; Cassette I/O Buffer ; VIC-II Registers VIC2M0X = &D000 ; X Coordinate Sprite 0 VIC2M0Y = &D001 ; Y Coordinate Sprite 0 VIC2M1X = &D002 ; X Coordinate Sprite 1 VIC2M1Y = &D003 ; Y Coordinate Sprite 1 VIC2M2X = &D004 ; X Coordinate Sprite 2 VIC2M2Y = &D005 ; Y Coordinate Sprite 2 VIC2M3X = &D006 ; X Coordinate Sprite 3 VIC2M3Y = &D007 ; Y Coordinate Sprite 3 VIC2M4X = &D008 ; X Coordinate Sprite 4 VIC2M4Y = &D009 ; Y Coordinate Sprite 4 VIC2M5X = &D00A ; X Coordinate Sprite 5 VIC2M5Y = &D05B ; Y Coordinate Sprite 5 VIC2M6X = &D00C ; X Coordinate Sprite 6 VIC2M6Y = &D00D ; Y Coordinate Sprite 6 VIC2M7X = &D00E ; X Coordinate Sprite 7 VIC2M7Y = &D00F ; Y Coordinate Sprite 7 VIC2MNX = &D010 ; Bit 8 of X coordinates VIC2CR1 = &D011 ; Control register 1 VIC2RASTER = &D012 ; Raster counter VIC2LPX = &D013 ; Light pen X VIC2LPY = &D014 ; Light pen Y VIC2SPE = &D015 ; Sprite Enabled VIC2CR2 = &D016 ; Control register 2 VIC2SPYE = &D017 ; Sprite Y expansion VIC2MPTR = &D018 ; Memory pointers VIC2INTR = &D019 ; Interrupt Register VIC2INTE = &D01A ; Interrupt Enabled VIC2SPDP = &D01B ; Sprite data priority VIC2SPMC = &D01C ; Sprite multicolour VIC2SPXE = &D01D ; Sprite X expansion VIC2SPSPCOL = &D01E ; Sprite-Sprite collision VIC2SPDCOL = &D01F ; Sprite data collision VIC2BORDER = &D020 ; Border colour VIC2B0C = &D021 ; Background colour 0 VIC2B1C = &D022 ; Background colour 1 VIC2B2C = &D023 ; Background colour 2 VIC2B3C = &D024 ; Background colour 3 VIC2SPMM0 = &D025 ; Sprite multicolour 0 VIC2SPMM1 = &D026 ; Sprite multicolour 1 VIC2SPCOL0 = &D027 ; Sprite 0 colour VIC2SPCOL1 = &D028 ; Sprite 1 colour VIC2SPCOL2 = &D029 ; Sprite 2 colour VIC2SPCOL3 = &D02A ; Sprite 3 colour VIC2SPCOL4 = &D02B ; Sprite 4 colour VIC2SPCOL5 = &D02C ; Sprite 5 colour VIC2SPCOL6 = &D02D ; Sprite 6 colour VIC2SPCOL7 = &D02E ; Sprite 7 colour ; SID Registers SID1FRELOW = &D400 ; Frequency voice 1 low byte SID1FREHIGH = &D401 ; Frequency voice 1 high byte SID1PWDCLOW = &D402 ; Pulse wave duty cycle voice 1 low byte SID1PWDCHIGH = &D403 ; Pulse wave duty cycle voice 1 high byte SID1CR = &D404 ; Control Register voice 1 ; Colour memory COLMEM = &D800 ; Colour Memory ; CIA 1 CIA1PRA = &DC00 ; Data Port A CIA1PRB = &DC01 ; Data Port B CIA1DDRA = &DC02 ; Data Direction Port A CIA1DDRB = &DC03 ; Data Direction Port B CIA1TIMAL = &DC04 ; Timer A Low byte CIA1TIMAH = &DC05 ; Timer A High byte CIA1TIMBL = &DC06 ; Timer B Low byte CIA1TIMBH = &DC07 ; Timer B High byte CIA1RTCT = &DC08 ; Real time clock 1/10s CIA1RTCS = &DC09 ; Real time clock seconds CIA1RTCM = &DC0A ; Real time clock minutes CIA1RTCH = &DC0B ; Real time clock hours CIA1SR = &DC0C ; Shift register CIA1ICS = &DC0D ; Interrupt Control & Status CIA1CTA = &DC0E ; Control Timer A CIA1CTB = &DC0F ; Control Timer B ; CIA 2 CIA2PRA = &DD00 ; Data Port A CIA2PRB = &DD01 ; User Port PB0-7 CIA2DDRA = &DD02 ; Data Direction Port A CIA2DDRB = &DD03 ; Data Direction Port B CIA2TIMAL = &DD04 ; Timer A Low byte CIA2TIMAH = &DD05 ; Timer A High byte CIA2TIMBL = &DD06 ; Timer B Low byte CIA2TIMBH = &DD07 ; Timer B High byte CIA2RTCT = &DD08 ; Real time clock 1/10s CIA2RTCS = &DD09 ; Real time clock seconds CIA2RTCM = &DD0A ; Real time clock minutes CIA2RTCH = &DD0B ; Real time clock hours CIA2SR = &DD0C ; Shift register CIA2ICS = &DD0D ; Interrupt Control & Status CIA2CTA = &DD0E ; Control Timer A CIA2CTB = &DD0F ; Control Timer B

3.2 - ZAsm

Files for the ZAsm assembler

3.2.1 - api

Generated file for zasm
; *************************************************************************** ; API for Commodore C64 Kernal ; Notes about the C64 operating system & memory ; Author: Peter Mount, Area51.dev & Contributors ; ; URL: https://area51.dev/c64/kernal/ ; ; Modified: Sun, 23 Jan 2022 17:05:58 UTC ; ; Current version: https://area51.dev/c64/kernal/reference/include/zasm/api.z80 ; *************************************************************************** ACPTR equ &FFA5 ; Get data from the serial bus CHKIN equ &FFC6 ; Open channel for input CHKOUT equ &FFC9 ; Open channel for output CHRIN equ &FFCF ; Get a character from the input channel CHROUT equ &FFD2 ; Output a character CINT equ &FF81 ; Initialise screen editor CIOUT equ &FFA8 ; Transmit a byte over the serial bus CLALL equ &FFE7 ; Close all open files CLOSE equ &FFC3 ; Close a logical file CLRCHN equ &FFCC ; Clear I/O channels CLRLN equ &E9FF ; Clear the line X CLSR equ &E544 ; Clear the screen GETIN equ &FFE4 ; Get a character IOBASE equ &FFF3 ; Define I/O memory page IOINIT equ &FF84 ; Initialise I/O Devices LISTEN equ &FFB1 ; Command a device on serial bus to LISTEN LOAD equ &FFD5 ; Load memory from a device MEMBOT equ &FF9C ; Set bottom of memory MEMTOP equ &FF99 ; Set top of memory OPEN equ &FFC0 ; Open a logical file PLOT equ &FFF0 ; Set cursor location RAMTAS equ &FF87 ; Perform RAM test RDTIM equ &FFDE ; Read system clock READST equ &FFB7 ; Read status word RESTOR equ &FF8A ; Restore default system & interrup vectors SAVE equ &FFD8 ; Save memory to a device SCNKEY equ &FF9F ; Scan the keyboard SCREEN equ &FFED ; Return screen format SECOND equ &FF93 ; Send secondary address for LISTEN SETLFS equ &FFBA ; Setup a logical file SETMSG equ &FF90 ; Control system message output SETNAM equ &FFBD ; Set file name SETTIM equ &FFDB ; Set system clock SETTMO equ &FFA2 ; Set IEEE bus card timeout STOP equ &FFE1 ; Check if key/stop key is pressed TALK equ &FFB4 ; Command a device on serial bus to TALK TKSA equ &FF96 ; Send secondary address to a device commanded to TALK UDTIM equ &FFEA ; Update system clock UNLISTEN equ &FFAE ; Send an UNLISTEN command UNTLK equ &FFAB ; Send an UNTALK command VECTOR equ &FF8D ; Manage RAM Vectors

3.2.2 - headers

Generated file for zasm
; *************************************************************************** ; Headers for Commodore C64 Kernal ; Notes about the C64 operating system & memory ; Author: Peter Mount, Area51.dev & Contributors ; ; URL: https://area51.dev/c64/kernal/ ; ; Modified: Sun, 23 Jan 2022 17:05:58 UTC ; ; Current version: https://area51.dev/c64/kernal/reference/include/zasm/headers.z80 ; *************************************************************************** ; C64 Zero Page D6510 equ &0 ; 6510 On-Chip I/O DATA Direction Register R6510 equ &1 ; 6510 On-Chip I/O Port ADRAY1 equ &3 ; Vector to routine to convert Number from Floating Point to Signed Integer ADRAY2 equ &5 ; Vector to routine to convert Number from Integer to Floating Point VERCK equ &A ; Flag: LOAD or VERIFY TXTTAB equ &2B ; Pointer to start of BASIC program text VARTAB equ &2D ; Pointer to start of BASIC Variable storage area ARYTAB equ &2F ; Pointer to start of array variable area STREND equ &31 ; End of Basic array storage (+1), Start of free ram FRETOP equ &33 ; Pointer to bottom of string text area FRESPC equ &35 ; Temp pointer for strings BASMEMSIZ equ &37 ; Highest address used by basic BLNSW equ &CC ; Cursor Blink Enable RIBUF equ &F7 ; RS232 Input Buffer Pointer ROBUF equ &F9 ; RS232 Output Buffer Pointer FREKZP equ &FB ; 4 free bytes of Zero Page for User Programs BASZPT equ &FF ; BASIC temp data area for floating point to ASCII conversion ; C64 Page 2 BUF equ &200 ; BASIC Line Editor Input Buffer LAT equ &259 ; Active logical file number table FAT equ &263 ; Device number for each logical file SAT equ &26D ; Secondary address for each logical file KEYD equ &277 ; Keyboard buffer MEMSTR equ &281 ; Start of Memory pointer MEMSIZ equ &283 ; End of Memory pointer COLOR equ &286 ; Current Foreground text colour GDCOL equ &287 ; Colour of character under Cursor HIBASE equ &288 ; Page of Screen Memory XMAX equ &289 ; Max length of keyboard buffer RPTFLG equ &28A ; Which keys will repeat SHFLAG equ &28D ; Shift/Ctrl/Commodore key pressed LSTSHF equ &28E ; Last value of Shift/Ctrl/Commodore key pressed MODE equ &291 ; Shift/Commodore switch AUTODN equ &292 ; Screen scrolling enabled M51CTR equ &293 ; Mock 6551 RS-232 Control Register M51CDR equ &294 ; Mock 6551 RS-232 Command Register M51AJB equ &295 ; Mock 6551 RS-232 Nonstandard Bit Timing M51STAT equ &297 ; Mock 6551 RS-232 Status Register RIDBE equ &29B ; RS-232 Index to end of receive buffer RIDBS equ &29C ; RS-232 Index to start of receive buffer RODBE equ &29D ; RS-232 Index to end of transmit buffer RODBS equ &29E ; RS-232 Index to start of transmit buffer ENABL equ &2A1 ; RS-232 Interrupts Enabled ; C64 Page 3 Vectors & Cassette Buffer USRPOK equ &310 ; Jump instruction for BASIC USR() function USRADD equ &311 ; Address of USR() function CINV equ &314 ; IRQ Interrupt Routine Vector CBNV equ &316 ; BRK Interrupt Routine Vector NMINV equ &318 ; NMI Interrupt Routine Vector IOPEN equ &31A ; Kernal OPEN Vector ICLOSE equ &31C ; Kernal close Vector ICHKIN equ &31E ; Kernal CHKIN Vector ICKOUT equ &320 ; Kernal CKOUT Vector ICLRCH equ &322 ; Kernal CLRCHN Vector IBASIN equ &324 ; Kernal CHRIN Vector IBSOUT equ &326 ; Kernal CHROUT Vector ISTOP equ &328 ; Kernal STOP Vector IGETIN equ &32A ; Kernal GETIN Vector ICLALL equ &32C ; Kernal CLALL Vector USRCMD equ &32E ; User-Defined Command Vector ILOAD equ &330 ; Kernal LOAD Vector ISAVE equ &332 ; Kernal SAVE Vector TBUFFR equ &33C ; Cassette I/O Buffer ; VIC-II Registers VIC2M0X equ &D000 ; X Coordinate Sprite 0 VIC2M0Y equ &D001 ; Y Coordinate Sprite 0 VIC2M1X equ &D002 ; X Coordinate Sprite 1 VIC2M1Y equ &D003 ; Y Coordinate Sprite 1 VIC2M2X equ &D004 ; X Coordinate Sprite 2 VIC2M2Y equ &D005 ; Y Coordinate Sprite 2 VIC2M3X equ &D006 ; X Coordinate Sprite 3 VIC2M3Y equ &D007 ; Y Coordinate Sprite 3 VIC2M4X equ &D008 ; X Coordinate Sprite 4 VIC2M4Y equ &D009 ; Y Coordinate Sprite 4 VIC2M5X equ &D00A ; X Coordinate Sprite 5 VIC2M5Y equ &D05B ; Y Coordinate Sprite 5 VIC2M6X equ &D00C ; X Coordinate Sprite 6 VIC2M6Y equ &D00D ; Y Coordinate Sprite 6 VIC2M7X equ &D00E ; X Coordinate Sprite 7 VIC2M7Y equ &D00F ; Y Coordinate Sprite 7 VIC2MNX equ &D010 ; Bit 8 of X coordinates VIC2CR1 equ &D011 ; Control register 1 VIC2RASTER equ &D012 ; Raster counter VIC2LPX equ &D013 ; Light pen X VIC2LPY equ &D014 ; Light pen Y VIC2SPE equ &D015 ; Sprite Enabled VIC2CR2 equ &D016 ; Control register 2 VIC2SPYE equ &D017 ; Sprite Y expansion VIC2MPTR equ &D018 ; Memory pointers VIC2INTR equ &D019 ; Interrupt Register VIC2INTE equ &D01A ; Interrupt Enabled VIC2SPDP equ &D01B ; Sprite data priority VIC2SPMC equ &D01C ; Sprite multicolour VIC2SPXE equ &D01D ; Sprite X expansion VIC2SPSPCOL equ &D01E ; Sprite-Sprite collision VIC2SPDCOL equ &D01F ; Sprite data collision VIC2BORDER equ &D020 ; Border colour VIC2B0C equ &D021 ; Background colour 0 VIC2B1C equ &D022 ; Background colour 1 VIC2B2C equ &D023 ; Background colour 2 VIC2B3C equ &D024 ; Background colour 3 VIC2SPMM0 equ &D025 ; Sprite multicolour 0 VIC2SPMM1 equ &D026 ; Sprite multicolour 1 VIC2SPCOL0 equ &D027 ; Sprite 0 colour VIC2SPCOL1 equ &D028 ; Sprite 1 colour VIC2SPCOL2 equ &D029 ; Sprite 2 colour VIC2SPCOL3 equ &D02A ; Sprite 3 colour VIC2SPCOL4 equ &D02B ; Sprite 4 colour VIC2SPCOL5 equ &D02C ; Sprite 5 colour VIC2SPCOL6 equ &D02D ; Sprite 6 colour VIC2SPCOL7 equ &D02E ; Sprite 7 colour ; SID Registers SID1FRELOW equ &D400 ; Frequency voice 1 low byte SID1FREHIGH equ &D401 ; Frequency voice 1 high byte SID1PWDCLOW equ &D402 ; Pulse wave duty cycle voice 1 low byte SID1PWDCHIGH equ &D403 ; Pulse wave duty cycle voice 1 high byte SID1CR equ &D404 ; Control Register voice 1 ; Colour memory COLMEM equ &D800 ; Colour Memory ; CIA 1 CIA1PRA equ &DC00 ; Data Port A CIA1PRB equ &DC01 ; Data Port B CIA1DDRA equ &DC02 ; Data Direction Port A CIA1DDRB equ &DC03 ; Data Direction Port B CIA1TIMAL equ &DC04 ; Timer A Low byte CIA1TIMAH equ &DC05 ; Timer A High byte CIA1TIMBL equ &DC06 ; Timer B Low byte CIA1TIMBH equ &DC07 ; Timer B High byte CIA1RTCT equ &DC08 ; Real time clock 1/10s CIA1RTCS equ &DC09 ; Real time clock seconds CIA1RTCM equ &DC0A ; Real time clock minutes CIA1RTCH equ &DC0B ; Real time clock hours CIA1SR equ &DC0C ; Shift register CIA1ICS equ &DC0D ; Interrupt Control & Status CIA1CTA equ &DC0E ; Control Timer A CIA1CTB equ &DC0F ; Control Timer B ; CIA 2 CIA2PRA equ &DD00 ; Data Port A CIA2PRB equ &DD01 ; User Port PB0-7 CIA2DDRA equ &DD02 ; Data Direction Port A CIA2DDRB equ &DD03 ; Data Direction Port B CIA2TIMAL equ &DD04 ; Timer A Low byte CIA2TIMAH equ &DD05 ; Timer A High byte CIA2TIMBL equ &DD06 ; Timer B Low byte CIA2TIMBH equ &DD07 ; Timer B High byte CIA2RTCT equ &DD08 ; Real time clock 1/10s CIA2RTCS equ &DD09 ; Real time clock seconds CIA2RTCM equ &DD0A ; Real time clock minutes CIA2RTCH equ &DD0B ; Real time clock hours CIA2SR equ &DD0C ; Shift register CIA2ICS equ &DD0D ; Interrupt Control & Status CIA2CTA equ &DD0E ; Control Timer A CIA2CTB equ &DD0F ; Control Timer B