68k ASM defines

Here are preliminary ASM defines 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.

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

RAMSTART       equ $100000         ;User RAM start PALETTES       equ $400000         ;Palette RAM start

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

REG_DISPENABL  equ $3A0001         ;Video output ON    REG_DISPDSABL   equ $3A0011         ;Video output OFF REG_SWPROM     equ $3A0013         ;Use ROM vector table REG_CRDUNLOCK1 equ $3A0005         ;Allow /WE to pass through to memory card when low REG_CRDLOCK1   equ $3A0015         ;Don't allow /WE to pass through to memory card REG_CRDLOCK2   equ $3A0007         ;Don't allow /WE to pass through to memory card 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 VRAM_RW        equ $3C0002 VRAM_MOD       equ $3C0004 REG_HBLANKCNT  equ $3C0006 REG_HBLANKPOS  equ $3C0008 REG_IRQACK     equ $3C000C

; BIOS calls BIOSF_BOOTSCR  equ $C00438         ;Show boot screen (and other things) BIOSF_VBL      equ $C0044A         ;Multiple purposes BIOSF_GETTIME  equ $C0045C         ;Set calendar addresses (10FDD2+), MVS only BIOSF_CRDACCESS equ $C00468		;Access memory card with specified function (check CRDF) BIOSF_CRDREPORT equ $C0046E		;In case an error occurred ("CARD FULL" etc.), prompt user for action 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: REG_DMACPYSRC  equ $FF0064         ;longword: Copy source address ? REG_DMAFILDEST equ $FF0064         ;longword: Fill destination address ? REG_DMACPYDEST equ $FF0068         ;longword: Copy destination address ? REG_DMAFILVAL  equ $FF006C         ;word: Fill value (word) ? REG_DMASIZE    equ $FF0070         ;longword?: Size (in 16 bit words) REG_DMASTART   equ $FF0060         ;byte: Start transfer ($40 ?)

REG_UPMAPSPR   equ $FF0121         ;bytes (0 or 1) 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_CDDALEFTL  equ $FF0188         ;CD audio levels REG_CDDARIGHTL equ $FF018A

BIOS_SYSSTAT   equ $10FD80         ;Word: ?

; Set by BIOSF_VBL 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

; Memory card related: BIOS_CRDF      equ $10FDC4		;byte: function to perform when calling BIOSF_CRDACCESS, see below table BIOS_CRDRESULT equ $10FDC6		;byte: 00 on success, else 80+ and encodes the error, see below table 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, only set by MVS (all data stored in BCD) BIOS_YEAR      equ $10FDD2         ;last 2 digits of year BIOS_MONTH     equ $10FDD3 BIOS_DAY       equ $10FDD4 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

; Upload to DRAM BIOS_UPSRC     equ $10FEF8         ;longword: source address BIOS_UPDEST    equ $10FEF4         ;longword: destination address (!) 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