154 lines
4.7 KiB
NASM
154 lines
4.7 KiB
NASM
; @com.wudsn.ide.asm.mainsourcefile=PACMAN.ASM
|
|
|
|
; SPACE 2
|
|
|
|
; Operating System Equates ------------------------
|
|
|
|
; SPACE 1
|
|
|
|
DOSVEC EQU $000A ;this program's start vector
|
|
|
|
DOSINI EQU $000C ;this program's init vector
|
|
|
|
POKMSK EQU $0010 ;mask for POKEY IRQ enable
|
|
|
|
BRKKEY EQU $0011 ;BREAK flag
|
|
|
|
RTCLOK EQU $0012 ;60 Hz clock
|
|
|
|
ATRACT EQU $4D
|
|
DRKMSK EQU $4E
|
|
COLRSH EQU $4F
|
|
|
|
VDSLST EQU $0200
|
|
|
|
VIMIRQ EQU $0216 ;immediate IRQ vector
|
|
|
|
SRTIMR EQU $022B ;software-driven keydown timer
|
|
|
|
SDMCTL EQU $022F ;DMA control shadow
|
|
|
|
SDLSTL EQU $0230 ;display list pointer (low byte)
|
|
|
|
SDLSTH EQU $0231 ;display List pointer (high byte)
|
|
|
|
SSKCTL EQU $0232 ;serial port control
|
|
|
|
LPENH EQU $0234 ;light pen horizontal position
|
|
|
|
LPENV EQU $0235 ;light pen vertical postion
|
|
|
|
GPRIOR EQU $026F ;player priority select
|
|
|
|
PADDL0 EQU $0270 ;pot 0
|
|
|
|
STICK0 EQU $0278 ;joystick 0 shadow
|
|
|
|
STRIG0 EQU $0284 ;red button 0 shadow
|
|
STRIG1 EQU $0285 ;red button 1 shadow
|
|
|
|
SHFLK EQU $02BE ;shift-lock flag
|
|
|
|
PCOLR0 EQU $02C0 ;player color shadow
|
|
PCOLR1 EQU $02C1
|
|
PCOLR2 EQU $02C2
|
|
PCOLR3 EQU $02C3
|
|
|
|
COLOR0 EQU $02C4 ;playfield color shadow
|
|
COLOR1 EQU $02C5
|
|
COLOR2 EQU $02C6
|
|
COLOR3 EQU $02C7
|
|
|
|
MEMLO EQU $02E7 ;start of user memory
|
|
KEYDEL EQU $02F1 ;KEY DELAY
|
|
|
|
CHART EQU $2F3 ;character control
|
|
|
|
CHBAS EQU $2F4 ;character base address
|
|
|
|
CH EQU $02FC ;character buffer
|
|
|
|
DDEVIC EQU $0300 ;peripheral bus ID number
|
|
|
|
DUNIT EQU $0301 ;unit number
|
|
|
|
DCOMND EQU $0302 ;bus command ordinal
|
|
|
|
DSTATS EQU $0303 ;command type/status return
|
|
|
|
DBUFLO EQU $0304 ;data buffer pointer
|
|
|
|
DBUFHI EQU $0305
|
|
|
|
DTIMLO EQU $0306 ;device timeout in seconds
|
|
|
|
DBYTLO EQU $0308 ;number of bytes transferred
|
|
|
|
DBYTHI EQU $0309
|
|
|
|
DAUX1 EQU $030A ;command auxiliary bytes
|
|
|
|
DAUX2 EQU $030B
|
|
|
|
ICCOM EQU $0342 ;CIO command block
|
|
|
|
ICBAL EQU $0344
|
|
|
|
ICBAH EQU $0345
|
|
|
|
ICBLL EQU $0348
|
|
|
|
ICBLH EQU $0349
|
|
|
|
ICAX1 EQU $034A
|
|
|
|
ICAX2 EQU $034B
|
|
|
|
CHRORG EQU $E000 ;OS charset
|
|
|
|
CIOV EQU $E456 ;CIO request vector
|
|
|
|
SIOV EQU $E459 ;SIO request vector
|
|
|
|
SETVBV EQU $E45C ;system interrupt init vector
|
|
|
|
XITVBV EQU $E462 ;system VBLANK return handler
|
|
|
|
OSRETN EQU $E474 ;system WARM START entry
|
|
|
|
CLICK EQU $FCD8 ;keyclick routine
|
|
|
|
; EJECT
|
|
|
|
; Hardware Registers --------------------------------
|
|
|
|
; SPACE 1
|
|
|
|
HPOSP0 EQU $D000 ;player position registers
|
|
HPOSP1 EQU $D001
|
|
HPOSP2 EQU $D002
|
|
HPOSP3 EQU $D003
|
|
|
|
M0PF EQU $D000 ;missile 0 to playfield collision
|
|
M1PF EQU $D001
|
|
M2PF EQU $D002
|
|
M3PF EQU $D003
|
|
|
|
HPOSM0 EQU $D004 ;horizontal position of missile 0
|
|
HPOSM1 EQU $D005
|
|
HPOSM2 EQU $D006
|
|
HPOSM3 EQU $D007
|
|
|
|
P0PF EQU $D004 ;player 0 to playfield collision
|
|
|
|
M0PL EQU $D008 ;missile 0 to player collision
|
|
M1PL EQU $D009
|
|
M2PL EQU $D00A
|
|
M3PL EQU $D00B
|
|
|
|
SIZEP0 EQU $D008 ;player size registers
|
|
|
|
P0PL EQU $D00C ;player 0 to player collision
|
|
|
|
SIZEM EQU $D00C ;sizes for all missiles
|
|
|
|
GRAFP0 EQU $D00D ;graphics for player0
|
|
|
|
TRIG0 EQU $D010 ;joystick controller trigger 0
|
|
|
|
GRAFM EQU $D011 ;grahics for all missiles
|
|
|
|
COLPM0 EQU $D012 ;player color registers
|
|
COLPM1 EQU $D013
|
|
COLPM2 EQU $D014
|
|
COLPM3 EQU $D015
|
|
|
|
COLPF0 EQU $D016 ;playfield color registers
|
|
COLPF1 EQU $D017
|
|
COLPF2 EQU $D018
|
|
COLPF3 EQU $D019
|
|
|
|
COLBK EQU $D01A ;color-luminance of background
|
|
|
|
PRIOR EQU $D01B ;priority select
|
|
|
|
VDELAY EQU $D01C ;vertical delay
|
|
|
|
GRACTL EQU $D01D ;graphics control register
|
|
|
|
HITCLR EQU $D01E ;collision clear
|
|
|
|
CONSOL EQU $D01F ;console key register
|
|
|
|
POT0 EQU $D200 ;pot 0
|
|
|
|
AUDF1 EQU $D200 ;audio channel 1 frequency
|
|
|
|
AUDC1 EQU $D201 ;audio channel 1 control
|
|
|
|
AUDF2 EQU $D202 ;audio channel 1 frequency
|
|
|
|
AUDC2 EQU $D203 ;audio channel 1 control
|
|
|
|
AUDF3 EQU $D204 ;audio channel 1 frequency
|
|
|
|
AUDC3 EQU $D205 ;audio channel 1 control
|
|
|
|
AUDF4 EQU $D206 ;audio channel 1 frequency
|
|
|
|
AUDC4 EQU $D207 ;audio channel 1 control
|
|
|
|
AUDCTL EQU $D208 ;audio control
|
|
|
|
ALLPOT EQU $D208 ;read 8 line pot port status
|
|
|
|
KBCODE EQU $D209 ;keyboard code
|
|
|
|
STIMER EQU $D209 ;start timer
|
|
|
|
RANDOM EQU $D20A ;random number generator
|
|
|
|
SERIN EQU $D20A ;serial port input
|
|
|
|
SKREST EQU $D20A ;reset serial port status
|
|
|
|
POTGO EQU $D20B ;start POT scan sequence
|
|
|
|
SEROUT EQU $D20C ;serial port output
|
|
|
|
IRQEN EQU $D20E ;IRQ enable mask
|
|
|
|
IRQST EQU $D20E ;IRQ status
|
|
|
|
SKCTL EQU $D20F ;serial port control
|
|
|
|
SKSTAT EQU $D20F ;keyboard status register
|
|
|
|
PORTA EQU $D300 ;port A
|
|
|
|
DMACTL EQU $D400 ;DMA control register
|
|
|
|
CHACTL EQU $D401 ;character control
|
|
|
|
DLISTL EQU $D402 ;display list pointer (low byte)
|
|
|
|
DLISTH EQU $D403 ;display list pointer (high byte)
|
|
|
|
HSCROL EQU $D404 ;horizontal scroll register
|
|
|
|
VSCROL EQU $D405 ;vertical scroll register
|
|
|
|
PMBASE EQU $D407 ;player base address
|
|
|
|
CHBASE EQU $D409 ;character base address
|
|
|
|
WSYNC EQU $D40A ;wait for horizontal sync
|
|
|
|
VCOUNT EQU $D40B ;scan line counter
|
|
|
|
PENH EQU $D40C ;light pen horizontal position
|
|
|
|
PENV EQU $D40D ;light pen vertical position
|
|
|
|
NMIEN EQU $D40E ;interrupt enable register
|
|
|
|
NMIRES EQU $D40F ;NMI reset
|
|
|
|
NMIST EQU $D40F ;NMI status
|