68k ASM defines: Difference between revisions

From NeoGeo Development Wiki
Jump to navigation Jump to search
m (20 revisions: Import from wikkii)
mNo edit summary
 
(14 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Here are preliminary ASM defines for memory locations and constants. For detailed descriptions, see [[Memory mapped registers]].
Here are assembly defines/aliases for memory locations and constants. For detailed descriptions, see [[Memory mapped registers]].


This can be made into a file and included in your ASM source code to use register names instead of their (meaningless) addresses in RAM.
These can be copied into a file and included in your assembly project to use register names instead of their (meaningless) addresses.


<pre>
<syntaxhighlight>
SCB1            equ $0000  ;VRAM, Sprite tilemaps
;Hard DIPs:
FIXMAP          equ $7000  ;VRAM, Fix map
DIPSW_SETTINGS  equ 0
SCB2            equ $8000  ;VRAM, Sprite shrink
DIPSW_CHUTES    equ 1
SCB3            equ $8200  ;VRAM, Sprite Y positions and sizes
DIPSW_CTRL      equ 2
SCB4            equ $8400  ;VRAM, Sprite X positions
DIPSW_ID0      equ 3
DIPSW_ID1      equ 4
DIPSW_MULTI    equ 5
DIPSW_FREEPLAY  equ 6
DIPSW_FREEZE    equ 7


;VRAM zones:
SCB1            equ $0000  ;Sprite tilemaps
FIXMAP          equ $7000
SCB2            equ $8000  ;Sprite shrink values
SCB3            equ $8200  ;Sprite Y positions, heights and flags
SCB4            equ $8400  ;Sprite X positions
;Basic colors:
BLACK          equ $8000
BLACK          equ $8000
MIDRED          equ $4700
RED            equ $4F00
MIDGREEN        equ $2070
GREEN          equ $20F0
MIDBLUE        equ $1007
MIDBLUE        equ $1007
BLUE            equ $100F
BLUE            equ $100F
MIDGREEN        equ $2070
MIDYELLOW      equ $6770
GREEN          equ $20F0
YELLOW          equ $6FF0
MIDMAGENTA      equ $5707
MAGENTA        equ $5F0F
MIDCYAN        equ $3077
MIDCYAN        equ $3077
CYAN            equ $30FF
CYAN            equ $30FF
MIDRED          equ $4700
RED            equ $4F00
MIDMAGENTA      equ $5707
MAGENTA        equ $5F0F
ORANGE          equ $6F70
ORANGE          equ $6F70
MIDYELLOW      equ $6770
YELLOW          equ $6FF0
MIDGREY        equ $7777
MIDGREY        equ $7777
WHITE          equ $7FFF
WHITE          equ $7FFF


RAMSTART        equ $100000 ;User RAM start
;Zones:
PALETTES        equ $400000 ;Palette RAM start
RAMSTART        equ $100000   ;68k work RAM
BACKDROPCOLOR  equ PALETTES+(16*2*256)-2
PALETTES        equ $400000   ;Palette RAM
BACKDROP        equ PALETTES+(16*2*256)-2
MEMCARD        equ $800000  ;Memory card
SYSROM          equ $C00000  ;System ROM


REG_P1CNT      equ $300000 ;Joystick port 1
;Registers:
REG_DIPSW      equ $300001 ;Dipswitches/Watchdog
REG_P1CNT      equ $300000
REG_SOUND      equ $320000 ;In/Out Z80
REG_DIPSW      equ $300001   ;Dipswitches/Watchdog
REG_SOUND      equ $320000   ;Z80 I/O
REG_STATUS_A    equ $320001
REG_STATUS_A    equ $320001
REG_P2CNT      equ $340000 ;Joystick port 2
REG_P2CNT      equ $340000
REG_STATUS_B    equ $380000
REG_STATUS_B    equ $380000
REG_POUTPUT    equ $380001 ;Joypad port outputs
REG_POUTPUT    equ $380001   ;Joypad port outputs
REG_SLOT        equ $380021 ;Slot selection
REG_SLOT        equ $380021   ;Slot select


REG_DISPENABL  equ $3A0001 ;Video output ON
REG_NOSHADOW    equ $3A0001  ;Video output normal/dark
REG_DISPDSABL   equ $3A0011 ;Video output OFF
REG_SHADOW     equ $3A0011
REG_SWPROM     equ $3A0013 ;Use ROM vector table
REG_BRDFIX      equ $3A000B   ;Use embedded fix tileset
REG_CRDUNLOCK1  equ $3A0005 ;Allow /WE to pass through to memory card when low
REG_CRTFIX      equ $3A001B   ;Use game fix tileset
REG_CRDLOCK1    equ $3A0015 ;Don't allow /WE to pass through to memory card
REG_PALBANK1    equ $3A000F   ;Use palette bank 1
REG_CRDLOCK2    equ $3A0007 ;Don't allow /WE to pass through to memory card
REG_PALBANK0    equ $3A001F   ;Use palette bank 0 (default)
REG_CRDUNLOCK2  equ $3A0017 ;Allow /WE to pass through to memory card when high
REG_BRDFIX      equ $3A000B ;Use board fix tileset
REG_CRTFIX      equ $3A001B ;Use ROM fix tileset
REG_SRAMLOCK    equ $3A000D ;Write-protect SRAM
REG_SRAMUNLOCK  equ $3A001D ;Write-unprotect SRAM
REG_PALBANK1    equ $3A000F ;Use palette bank 1
REG_PALBANK0    equ $3A001F ;Use palette bank 0 (default)


VRAM_ADDR      equ $3C0000
REG_VRAMADDR    equ $3C0000
VRAM_RW        equ $3C0002
REG_VRAMRW      equ $3C0002
VRAM_MOD        equ $3C0004
REG_VRAMMOD    equ $3C0004
REG_HBLANKCNT  equ $3C0006
REG_LSPCMODE    equ $3C0006
REG_HBLANKPOS   equ $3C0008
REG_TIMERHIGH   equ $3C0008
REG_TIMERLOW    equ $3C000A
REG_IRQACK      equ $3C000C
REG_IRQACK      equ $3C000C
REG_TIMERSTOP  equ $3C000E
;System ROM calls:
SYS_INT1          equ $C00438
SYS_RETURN        equ $C00444
SYS_IO            equ $C0044A
SYS_CREDIT_CHECK  equ $C00450
SYS_CREDIT_DOWN  equ $C00456
SYS_READ_CALENDAR equ $C0045C  ;MVS only
SYS_CARD          equ $C00468
SYS_CARD_ERROR    equ $C0046E
SYS_HOWTOPLAY    equ $C00474  ;MVS only
SYS_FIX_CLEAR    equ $C004C2
SYS_LSP_1ST      equ $C004C8  ;Clear sprites
SYS_MESS_OUT      equ $C004CE
;RAM locations:
BIOS_SYSTEM_MODE  equ $10FD80
BIOS_MVS_FLAG    equ $10FD82
BIOS_COUNTRY_CODE equ $10FD83
BIOS_GAME_DIP    equ $10FD84  ;Start of soft DIPs settings (up to $10FD93)


; BIOS calls
;Set by SYS_IO:
BIOSF_BOOTSCR   equ $C00438 ;Show boot screen (and other things)
BIOS_P1STATUS   equ $10FD94
BIOSF_VBL      equ $C0044A ;Multiple purposes
BIOS_P1PREVIOUS equ $10FD95
BIOSF_GETTIME  equ $C0045C ;Set calendar addresses (10FDD2+), MVS only
BIOS_P1CURRENT  equ $10FD96
BIOSF_CRDACCESS equ $C00468 ;Access memory card with specified function (check CRDF)
BIOS_P1CHANGE  equ $10FD97
BIOSF_CRDREPORT equ $C0046E ;In case an error occurred ("CARD FULL" etc.), prompt user for action
BIOS_P1REPEAT   equ $10FD98
BIOSF_VIDEOEN   equ $C00470 ;Enable/disable video layers, CD only
BIOS_P1TIMER   equ $10FD99
BIOSF_HOWTOPLAY equ $C00474 ;Show how-to-play presentation, MVS only
BIOSF_CLEARFIX  equ $C004C2 ;Clear fix layer
BIOSF_CLEARSPR  equ $C004C8 ;Clear sprites
BIOSF_UPLOAD   equ $C00546 ;Upload data to DRAM 
BIOSF_CDDACMD  equ $C0056A ;Issue CDDA command


;DMA related:
BIOS_P2STATUS   equ $10FD9A
REG_DMACPYSRC   equ $FF0064 ;longword: Copy source address ?
BIOS_P2PREVIOUS equ $10FD9B
REG_DMAFILDEST  equ $FF0064 ;longword: Fill destination address ?
BIOS_P2CURRENT equ $10FD9C
REG_DMACPYDEST equ $FF0068 ;longword: Copy destination address ?
BIOS_P2CHANGE   equ $10FD9D
REG_DMAFILVAL   equ $FF006C ;word: Fill value (word) ?
BIOS_P2REPEAT  equ $10FD9E
REG_DMASIZE    equ $FF0070 ;longword?: Size (in 16 bit words)
BIOS_P2TIMER   equ $10FD99
REG_DMASTART   equ $FF0060 ;byte: Start transfer ($40 ?)


REG_DISBLSPR   equ $FF0111 ;byte: 0/1 disable sprites
BIOS_STATCURNT   equ $10FDAC
REG_DISBLFIX   equ $FF0115 ;byte: 0/1 disable fix layer
BIOS_STATCHANGE  equ $10FDAD
REG_ENVIDEO    equ $FF0119 ;byte: 0/1 enable video output
BIOS_USER_REQUEST equ $10FDAE
REG_CDCONFIG   equ $FF011C ;word: jumper and lid switch input
BIOS_USER_MODE   equ $10FDAF
BIOS_START_FLAG  equ $10FDB4
BIOS_MESS_POINT  equ $10FDBE
BIOS_MESS_BUSY   equ $10FDC2


REG_UPMAPSPR    equ $FF0121 ;bytes (0 or 1)
;Memory card:
REG_UPMAPPCM    equ $FF0123
BIOS_CRDF      equ $10FDC4  ;Byte: function to perform when calling BIOSF_CRDACCESS
REG_UPMAPZ80    equ $FF0127
BIOS_CRDRESULT equ $10FDC6  ;Byte: 00 on success, else 80+ and encodes the error
REG_UPMAPFIX    equ $FF0129
BIOS_CRDPTR    equ $10FDC8  ;Longword: pointer to read from/write to
REG_UPUNMAPSPR equ $FF0141
BIOS_CRDSIZE    equ $10FDCC  ;Word: how much data to read/write from/to card
REG_UPUNMAPPCM  equ $FF0143
BIOS_CRDNGH    equ $10FDCE  ;Word: usually game NGH. Unique identifier for the game that owns the save file
REG_UPUNMAPZ80  equ $FF0147
BIOS_CRDFILE   equ $10FDD0  ;Word: each NGH has up to 16 save files associated with
REG_UPUNMAPFIX  equ $FF0149
REG_DISBLIRQ   equ $FF016F
REG_ENZ80      equ $FF0183


REG_CDDALEFTL   equ $FF0188 ;CD audio levels
;Calendar, MVS only (in BCD):
REG_CDDARIGHTL  equ $FF018A
BIOS_YEAR      equ $10FDD2   ;Last 2 digits of year
BIOS_MONTH      equ $10FDD3
BIOS_DAY        equ $10FDD4
BIOS_WEEKDAY    equ $10FDD5  ;Sunday = 0, Monday = 1 ... Saturday = 6
BIOS_HOUR      equ $10FDD6  ;24 hour time
BIOS_MINUTE    equ $10FDD7
BIOS_SECOND    equ $10FDD8


BIOS_SYSSTAT    equ $10FD80 ;Word: ?
BIOS_SELECT_TIMER equ $10FDDA  ;Byte: game start countdown
BIOS_DEVMODE      equ $10FE80  ;Byte: non-zero for developer mode


BIOS_SOFTDIPS   equ $10FD84 ;start of soft DIPs settings (up to $10FD93)
;Upload system ROM call:
BIOS_UPDEST    equ $10FEF4  ;Longword
BIOS_UPSRC      equ $10FEF8  ;Longword
BIOS_UPSIZE    equ $10FEFC   ;Longword
BIOS_UPZONE    equ $10FEDA  ;Byte: zone (0=PRG, 1=FIX, 2=SPR, 3=Z80, 4=PCM, 5=PAT)
BIOS_UPBANK    equ $10FEDB  ;Byte: bank


; Set by BIOSF_VBL
SOUND_STOP      equ $D00046
BIOS_P1CURRENT  equ $10FD95 ;joystick 1 state
BIOS_P1PREVIOUS equ $10FD96 ;previous joystick 1 state
BIOS_P1CHANGE  equ $10FD97 ;joystick 1 state change
BIOS_P1REPEAT  equ $10FD98 ;joystick 1 repeat
BIOS_P2CURRENT  equ $10FD9B ;joystick 2 state
BIOS_P2PREVIOUS equ $10FD9C ;previous joystick 2 state
BIOS_P2CHANGE  equ $10FD9D ;joystick 2 state change
BIOS_P2REPEAT  equ $10FD9E ;joystick 2 repeat
BIOS_STATCURNT  equ $10FDAC ;joystick 1/2 start/select
BIOS_STATCHANGE equ $10FDAD ;previous joystick 1/2 start/select


;button definitions
;Button definitions:
CNT_UP         equ 0
CNT_UP         equ 0
CNT_DN         equ 1
CNT_DOWN equ 1
CNT_LE         equ 2
CNT_LEFT equ 2
CNT_RI         equ 3
CNT_RIGHT equ 3
CNT_A         equ 4
CNT_A         equ 4
CNT_B         equ 5
CNT_B         equ 5
CNT_C         equ 6
CNT_C         equ 6
CNT_D         equ 7
CNT_D         equ 7
CNT_START1      equ 0
CNT_SELECT1    equ 1
CNT_START2      equ 2
CNT_SELECT2    equ 3
</syntaxhighlight>
==CD only==
<syntaxhighlight>
;System ROM calls
SYS_VIDEOEN    equ $C00470
SYS_UPLOAD      equ $C00546  ;Upload to DRAM
SYS_CDDACMD    equ $C0056A  ;Issue CDDA command


; Memory card related:
;DMA:
BIOS_CRDF      equ $10FDC4 ;byte: function to perform when calling BIOSF_CRDACCESS, see below table
REG_DMACPYSRC  equ $FF0064
BIOS_CRDRESULT equ $10FDC6 ;byte: 00 on success, else 80+ and encodes the error, see below table
REG_DMAFILDEST equ $FF0064
BIOS_CRDPTR    equ $10FDC8 ;longword: pointer to read from/write to
REG_DMACPYDEST  equ $FF0068
BIOS_CRDSIZE    equ $10FDCC ;word: how much data to read/write from/to card
REG_DMAFILVAL  equ $FF006C
BIOS_CRDNGH     equ $10FDCE ;word: usually game NGH. Unique identifier for the game that 'owns' the save file
REG_DMASIZE     equ $FF0070
BIOS_CRDFILE   equ $10FDD0 ;word: each NGH has up to 16 save 'files' associated with
REG_DMASTART   equ $FF0060


; Calendar, only set by MVS (all data stored in BCD)
REG_DISBLSPR    equ $FF0111
BIOS_YEAR      equ $10FDD2 ;last 2 digits of year
REG_DISBLFIX   equ $FF0115
BIOS_MONTH      equ $10FDD3
REG_ENVIDEO     equ $FF0119
BIOS_DAY        equ $10FDD4
REG_CDCONFIG    equ $FF011C
BIOS_WEEKDAY   equ $10FDD5 ;Sunday = 00, Monday = 01 ... Saturday = 06
BIOS_HOUR      equ $10FDD6 ;24 hour time
BIOS_MINUTE     equ $10FDD7
BIOS_SECOND    equ $10FDD8


BIOS_DEVMODE   equ $10FE80 ;Byte: $FF for developer mode
REG_UPMAPSPR   equ $FF0121
REG_UPMAPPCM    equ $FF0123
REG_UPMAPZ80    equ $FF0127
REG_UPMAPFIX    equ $FF0129
REG_UPUNMAPSPR  equ $FF0141
REG_UPUNMAPPCM  equ $FF0143
REG_UPUNMAPZ80  equ $FF0147
REG_UPUNMAPFIX  equ $FF0149
REG_DISBLIRQ    equ $FF016F
REG_ENZ80      equ $FF0183


; Upload to DRAM
REG_CDDALEFTL  equ $FF0188  ;CD audio levels
BIOS_UPDEST    equ $10FEF4 ;longword: destination address (!)
REG_CDDARIGHTL  equ $FF018A
BIOS_UPSRC      equ $10FEF8 ;longword: source address
</syntaxhighlight>
BIOS_UPSIZE    equ $10FEFC ;longword: size
BIOS_UPZONE    equ $10FEDA ;byte: zone (0=PRG, 1=FIX, 2=SPR, 3=Z80, 4=PCM, 5=PAT)
BIOS_UPBANK    equ $10FEDB ;byte: bank
</pre>


[[Category:Code]]
[[Category:Code]]

Latest revision as of 12:46, 28 May 2017

Here are assembly defines/aliases for memory locations and constants. For detailed descriptions, see Memory mapped registers.

These can be copied into a file and included in your assembly project to use register names instead of their (meaningless) addresses.

;Hard DIPs:
DIPSW_SETTINGS  equ 0
DIPSW_CHUTES    equ 1
DIPSW_CTRL      equ 2
DIPSW_ID0       equ 3
DIPSW_ID1       equ 4
DIPSW_MULTI     equ 5
DIPSW_FREEPLAY  equ 6
DIPSW_FREEZE    equ 7

;VRAM zones:
SCB1            equ $0000   ;Sprite tilemaps
FIXMAP          equ $7000
SCB2            equ $8000   ;Sprite shrink values
SCB3            equ $8200   ;Sprite Y positions, heights and flags
SCB4            equ $8400   ;Sprite X positions

;Basic colors:
BLACK           equ $8000
MIDRED          equ $4700
RED             equ $4F00
MIDGREEN        equ $2070
GREEN           equ $20F0
MIDBLUE         equ $1007
BLUE            equ $100F
MIDYELLOW       equ $6770
YELLOW          equ $6FF0
MIDMAGENTA      equ $5707
MAGENTA         equ $5F0F
MIDCYAN         equ $3077
CYAN            equ $30FF
ORANGE          equ $6F70
MIDGREY         equ $7777
WHITE           equ $7FFF

;Zones:
RAMSTART        equ $100000   ;68k work RAM
PALETTES        equ $400000   ;Palette RAM
BACKDROP        equ PALETTES+(16*2*256)-2
MEMCARD         equ $800000   ;Memory card
SYSROM          equ $C00000   ;System ROM

;Registers:
REG_P1CNT       equ $300000
REG_DIPSW       equ $300001   ;Dipswitches/Watchdog
REG_SOUND       equ $320000   ;Z80 I/O
REG_STATUS_A    equ $320001
REG_P2CNT       equ $340000
REG_STATUS_B    equ $380000
REG_POUTPUT     equ $380001   ;Joypad port outputs
REG_SLOT        equ $380021   ;Slot select

REG_NOSHADOW    equ $3A0001   ;Video output normal/dark
REG_SHADOW      equ $3A0011
REG_BRDFIX      equ $3A000B   ;Use embedded fix tileset
REG_CRTFIX      equ $3A001B   ;Use game fix tileset
REG_PALBANK1    equ $3A000F   ;Use palette bank 1
REG_PALBANK0    equ $3A001F   ;Use palette bank 0 (default)

REG_VRAMADDR    equ $3C0000
REG_VRAMRW      equ $3C0002
REG_VRAMMOD     equ $3C0004
REG_LSPCMODE    equ $3C0006
REG_TIMERHIGH   equ $3C0008
REG_TIMERLOW    equ $3C000A
REG_IRQACK      equ $3C000C
REG_TIMERSTOP   equ $3C000E

;System ROM calls:
SYS_INT1          equ $C00438
SYS_RETURN        equ $C00444
SYS_IO            equ $C0044A
SYS_CREDIT_CHECK  equ $C00450
SYS_CREDIT_DOWN   equ $C00456
SYS_READ_CALENDAR equ $C0045C   ;MVS only
SYS_CARD          equ $C00468
SYS_CARD_ERROR    equ $C0046E
SYS_HOWTOPLAY     equ $C00474   ;MVS only
SYS_FIX_CLEAR     equ $C004C2
SYS_LSP_1ST       equ $C004C8   ;Clear sprites
SYS_MESS_OUT      equ $C004CE

;RAM locations:
BIOS_SYSTEM_MODE  equ $10FD80
BIOS_MVS_FLAG     equ $10FD82
BIOS_COUNTRY_CODE equ $10FD83
BIOS_GAME_DIP     equ $10FD84   ;Start of soft DIPs settings (up to $10FD93)

;Set by SYS_IO:
BIOS_P1STATUS   equ $10FD94
BIOS_P1PREVIOUS equ $10FD95
BIOS_P1CURRENT  equ $10FD96
BIOS_P1CHANGE   equ $10FD97
BIOS_P1REPEAT   equ $10FD98
BIOS_P1TIMER    equ $10FD99

BIOS_P2STATUS   equ $10FD9A
BIOS_P2PREVIOUS equ $10FD9B
BIOS_P2CURRENT  equ $10FD9C
BIOS_P2CHANGE   equ $10FD9D
BIOS_P2REPEAT   equ $10FD9E
BIOS_P2TIMER    equ $10FD99

BIOS_STATCURNT    equ $10FDAC
BIOS_STATCHANGE   equ $10FDAD
BIOS_USER_REQUEST equ $10FDAE
BIOS_USER_MODE    equ $10FDAF
BIOS_START_FLAG   equ $10FDB4
BIOS_MESS_POINT   equ $10FDBE
BIOS_MESS_BUSY    equ $10FDC2

;Memory card:
BIOS_CRDF       equ $10FDC4   ;Byte: function to perform when calling BIOSF_CRDACCESS
BIOS_CRDRESULT  equ $10FDC6   ;Byte: 00 on success, else 80+ and encodes the error
BIOS_CRDPTR     equ $10FDC8   ;Longword: pointer to read from/write to
BIOS_CRDSIZE    equ $10FDCC   ;Word: how much data to read/write from/to card
BIOS_CRDNGH     equ $10FDCE   ;Word: usually game NGH. Unique identifier for the game that owns the save file
BIOS_CRDFILE    equ $10FDD0   ;Word: each NGH has up to 16 save files associated with

;Calendar, MVS only (in BCD):
BIOS_YEAR       equ $10FDD2   ;Last 2 digits of year
BIOS_MONTH      equ $10FDD3
BIOS_DAY        equ $10FDD4
BIOS_WEEKDAY    equ $10FDD5   ;Sunday = 0, Monday = 1 ... Saturday = 6
BIOS_HOUR       equ $10FDD6   ;24 hour time
BIOS_MINUTE     equ $10FDD7
BIOS_SECOND     equ $10FDD8

BIOS_SELECT_TIMER equ $10FDDA   ;Byte: game start countdown
BIOS_DEVMODE      equ $10FE80   ;Byte: non-zero for developer mode

;Upload system ROM call:
BIOS_UPDEST     equ $10FEF4   ;Longword
BIOS_UPSRC      equ $10FEF8   ;Longword
BIOS_UPSIZE     equ $10FEFC   ;Longword
BIOS_UPZONE     equ $10FEDA   ;Byte: zone (0=PRG, 1=FIX, 2=SPR, 3=Z80, 4=PCM, 5=PAT)
BIOS_UPBANK     equ $10FEDB   ;Byte: bank

SOUND_STOP      equ $D00046

;Button definitions:
CNT_UP	        equ 0
CNT_DOWN	equ 1
CNT_LEFT	equ 2
CNT_RIGHT	equ 3
CNT_A	        equ 4
CNT_B	        equ 5
CNT_C	        equ 6
CNT_D	        equ 7
CNT_START1      equ 0
CNT_SELECT1     equ 1
CNT_START2      equ 2
CNT_SELECT2     equ 3

CD only

;System ROM calls
SYS_VIDEOEN     equ $C00470
SYS_UPLOAD      equ $C00546   ;Upload to DRAM
SYS_CDDACMD     equ $C0056A   ;Issue CDDA command

;DMA:
REG_DMACPYSRC   equ $FF0064
REG_DMAFILDEST  equ $FF0064
REG_DMACPYDEST  equ $FF0068
REG_DMAFILVAL   equ $FF006C
REG_DMASIZE     equ $FF0070
REG_DMASTART    equ $FF0060

REG_DISBLSPR    equ $FF0111
REG_DISBLFIX    equ $FF0115
REG_ENVIDEO     equ $FF0119
REG_CDCONFIG    equ $FF011C

REG_UPMAPSPR    equ $FF0121
REG_UPMAPPCM    equ $FF0123
REG_UPMAPZ80    equ $FF0127
REG_UPMAPFIX    equ $FF0129
REG_UPUNMAPSPR  equ $FF0141
REG_UPUNMAPPCM  equ $FF0143
REG_UPUNMAPZ80  equ $FF0147
REG_UPUNMAPFIX  equ $FF0149
REG_DISBLIRQ    equ $FF016F
REG_ENZ80       equ $FF0183

REG_CDDALEFTL   equ $FF0188   ;CD audio levels
REG_CDDARIGHTL  equ $FF018A