Files
open-roms/c64/aliases/,aliases_hardware.s
T

184 lines
4.4 KiB
ArmAsm

//
// Names of hardware registers - names from C64 Programmer's Reference Guide, sometimes slightly modified
//
#if CONFIG_PLATFORM_COMMODORE_64
// CPU memory registers
.label CPU_D6510 = $00
.label CPU_R6510 = $01
// VIC-II registers
.label __VIC_BASE = $D000 // base address of the chip
.label VIC_SP0X = $D000
.label VIC_SP0Y = $D001
.label VIC_SP1X = $D002
.label VIC_SP1Y = $D003
.label VIC_SP2X = $D004
.label VIC_SP2Y = $D005
.label VIC_SP3X = $D006
.label VIC_SP3Y = $D007
.label VIC_SP4X = $D008
.label VIC_SP4Y = $D009
.label VIC_SP5X = $D00A
.label VIC_SP5Y = $D00B
.label VIC_SP6X = $D00C
.label VIC_SP6Y = $D00D
.label VIC_SP7X = $D00E
.label VIC_SP7Y = $D00F
.label VIC_MSIGX = $D010
.label VIC_SCROLY = $D011
.label VIC_RASTER = $D012
.label VIC_LPENX = $D013
.label VIC_LPENY = $D014
.label VIC_SPENA = $D015
.label VIC_SCROLX = $D016
.label VIC_YXPAND = $D017
.label VIC_YMCSB = $D018
.label VIC_IRQ = $D019
.label VIC_IRQMSK = $D01A
.label VIC_SPBGPR = $D01B
.label VIC_SPMC = $D01C
.label VIC_XXPAND = $D01D
.label VIC_SPSPCL = $D01E
.label VIC_SPBGCL = $D01F
.label VIC_EXTCOL = $D020
.label VIC_BGCOL0 = $D021
.label VIC_BGCOL1 = $D022
.label VIC_BGCOL2 = $D023
.label VIC_BGCOL3 = $D024
.label VIC_SPMC0 = $D025
.label VIC_SPMC1 = $D026
.label VIC_SP0COL = $D027
.label VIC_SP1COL = $D028
.label VIC_SP2COL = $D029
.label VIC_SP3COL = $D02A
.label VIC_SP4COL = $D02B
.label VIC_SP5COL = $D02C
.label VIC_SP6COL = $D02D
.label VIC_SP7COL = $D02E
#if !CONFIG_MB_MEGA_65 && !CONFIG_MB_ULTIMATE_64
.label VIC_XSCAN = $D02F // C128 only
.label VIC_CLKRATE = $D030 // C128 only
#endif
#if CONFIG_MB_MEGA_65
.label VIC_KEY = $D02F
.label VIC_XPOS = $D050
#endif
// SID registers
.label __SID_BASE = $D400 // base address of the chip
.label SID_FRELO1 = $D400
.label SID_FREHI1 = $D401
.label SID_PWLO1 = $D402
.label SID_PWHI1 = $D403
.label SID_VCREG1 = $D404
.label SID_ATDCY1 = $D405
.label SID_SUREL1 = $D406
.label SID_FRELO2 = $D407
.label SID_FREHI2 = $D408
.label SID_PWLO2 = $D409
.label SID_PWHI2 = $D40A
.label SID_VCREG2 = $D40B
.label SID_ATDCY2 = $D40C
.label SID_SUREL2 = $D40D
.label SID_FRELO3 = $D40E
.label SID_FREHI3 = $D40F
.label SID_PWLO3 = $D410
.label SID_PWHI3 = $D411
.label SID_VCREG3 = $D412
.label SID_ATDCY3 = $D413
.label SID_SUREL3 = $D414
.label SID_CUTLO = $D415
.label SID_CUTHI = $D416
.label SID_RESON = $D417
.label SID_SIGVOL = $D418
.label SID_POTX = $D419
.label SID_POTY = $D41A
.label SID_RANDOM = $D41B
.label SID_ENV3 = $D41C
// CIA #1 registers
.label __CIA1_BASE = $DC00 // base address of the chip
.label CIA1_PRA = $DC00
.label CIA1_PRB = $DC01
.label CIA1_DDRA = $DC02
.label CIA1_DDRB = $DC03
.label CIA1_TIMALO = $DC04
.label CIA1_TIMAHI = $DC05
.label CIA1_TIMBLO = $DC06
.label CIA1_TIMBHI = $DC07
.label CIA1_TODTEN = $DC08
.label CIA1_TODSEC = $DC09
.label CIA1_TODMIN = $DC0A
.label CIA1_TODHRS = $DC0B
.label CIA1_SDR = $DC0C
.label CIA1_ICR = $DC0D
.label CIA1_CRA = $DC0E
.label CIA1_CRB = $DC0F
// CIA #2 registers
.label __CIA2_BASE = $DD00 // base address of the chip
.label CIA2_PRA = $DD00 // VIC bank switching and IEC port
.label CIA2_PRB = $DD01
.label CIA2_DDRA = $DD02
.label CIA2_DDRB = $DD03
.label CIA2_TIMALO = $DD04
.label CIA2_TIMAHI = $DD05
.label CIA2_TIMBLO = $DD06
.label CIA2_TIMBHI = $DD07
.label CIA2_TODTEN = $DD08
.label CIA2_TODSEC = $DD09
.label CIA2_TODMIN = $DD0A
.label CIA2_TODHRS = $DD0B
.label CIA2_SDR = $DD0C
.label CIA2_ICR = $DD0D
.label CIA2_CRA = $DD0E
.label CIA2_CRB = $DD0F
// CIA #2 helper bits - IEC bus
.const BIT_CIA2_PRA_ATN_OUT = $08 // 1 - low (pulled), 0 - high (released)
.const BIT_CIA2_PRA_CLK_OUT = $10 // 1 - low (pulled), 0 - high (released)
.const BIT_CIA2_PRA_DAT_OUT = $20 // 1 - low (pulled), 0 - high (released)
.const BIT_CIA2_PRA_CLK_IN = $40 // 0 - low (pulled), 1 - high (released)
.const BIT_CIA2_PRA_DAT_IN = $80 // 0 - low (pulled), 1 - high (released)
#if CONFIG_MB_MEGA_65
.const C65_EXTKEYS_PR = $D607
.const C65_EXTKEYS_DDR = $D608
#endif
#endif