mirror of
https://github.com/erkyrath/infocom-zcode-terps.git
synced 2026-03-02 09:46:39 +00:00
223 lines
6.1 KiB
NASM
223 lines
6.1 KiB
NASM
PAGE
|
||
STTL "--- HARDWARE EQUATES: CBM64 ---"
|
||
|
||
|
||
; ---------
|
||
; CONSTANTS
|
||
; ---------
|
||
|
||
XZIPID EQU 7 ; ID BYTE STATING THIS IS A COMMODORE EZIP
|
||
|
||
AUX EQU 0
|
||
MAIN EQU 1
|
||
|
||
|
||
; THE FIRST 86K (SIDE1) MUST
|
||
; BE RAM RESIDENT (344=$158 PAGES)
|
||
;
|
||
; BANK 1 IS MAIN, BANK 0 IS AUX !!!!
|
||
; PAGES V$0 TO ($FE-VBEGIN) ARE IN MAIN
|
||
; PAGES ($FF-VBEGIN) TO V$139 ARE IN AUX
|
||
; PAGENG BUFFERS ARE IN AUX AT END OF PRELOAD
|
||
|
||
|
||
|
||
VTOTAL EQU 256*4 ;TOTAL # PAGES IN EZIP
|
||
PRELOAD EQU 344 ;# pages in preload
|
||
|
||
AUXSTART EQU $1C ;FIRST RAM PAGE IN AUX MEM
|
||
AUXEND EQU $CF ;LAST PAGE USABLE IN AUXMEM
|
||
MAINSTRT EQU ZBEGIN/$100 ;FIRST FREE PAGE IN MAIN
|
||
MAINEND EQU $FE ;LAST USABLE PAGE IN MAIN
|
||
VAUX EQU MAINEND-MAINSTRT+1 ;FIRST V-PAGE IN AUXMEM
|
||
|
||
; PBEGIN IS FIRST PAGING BUFFER (RAM PAGE IN AUX MEM)
|
||
|
||
PBEGIN EQU PRELOAD-VAUX+AUXSTART
|
||
NUMBUFS EQU AUXEND-PBEGIN+1 ;# PAGING BUFFER (RAM PAGES IN AUX)
|
||
|
||
EOL EQU $0D ; EOL CHAR
|
||
SPACE EQU $20 ; SPACE CHAR
|
||
BACKSP EQU $14 ; BACKSPACE
|
||
LF EQU $0A ; LINE FEED
|
||
CLS EQU $93 ; CLEAR SCREEN, HOME CURSOR
|
||
LASTT EQU $23 ; THE LAST TRACK & SECTOR ON A SAVE DISK
|
||
LASTS EQU $10
|
||
|
||
; -----------------
|
||
; MONITOR VARIABLES
|
||
; -----------------
|
||
|
||
WLEFT EQU $E6 ; LEFT MARGIN (0)
|
||
WWIDTH EQU $E7 ; RIGHT MARGIN (40 OR 80)
|
||
WTOP EQU $E5 ; TOP LINE (0-23)
|
||
WBOTM EQU $E4 ; BOTTOM LINE (1-24)
|
||
LINES EQU $ED ; # LINES ON SCREEN
|
||
COLMODE EQU $D7 ; WHAT COLUMN MODE ARE WE IN (40/80)
|
||
QUOTMOD EQU $F4 ; QUOTES SENT TO SCREEN TURN ON STRANGE
|
||
; MODE, THIS FLAG SET TO 0 SHOULD
|
||
; TURN THAT MODE OFF
|
||
|
||
; ---------
|
||
; ZERO-PAGE
|
||
; ---------
|
||
|
||
D6510 EQU $00 ; 6510 DATA DIRECTION REGISTER
|
||
R6510 EQU $01 ; 6510 I/O PORT
|
||
FAST EQU $02 ; FAST-READ AVAILABLE FLAG
|
||
STKEY EQU $91 ; STOP KEY FLAG
|
||
MSGFLG EQU $9D ; KERNAL MESSAGE CONTROL FLAG
|
||
TIME EQU $A2 ; SYSTEM JIFFY TIMER
|
||
BLNSW EQU $CC ; CURSOR BLINK SWITCH
|
||
NDX EQU $D0 ; # CHARS IN KEYBOARD BUFFER
|
||
SFDX EQU $D4 ; CURRENT KEY PRESSED
|
||
LSTX EQU $D5 ; LAST KEY PRESSED
|
||
TBLX EQU $EB ; CURRENT CURSOR ROW
|
||
PNTR EQU $EC ; CURSOR COLUMN IN LOGICAL LINE
|
||
RVS EQU $F3 ; REVERSE CHARACTER FLAG
|
||
KEYTAB EQU $F5 ; KEYBOARD DECODE TABLE VECTOR
|
||
MODE EQU $F7 ; CHARSET MODE SWITCH
|
||
|
||
FDATA EQU $FB ; FAST-READ DATA BUFFER
|
||
FINDEX EQU $FC ; FAST-READ BUFFER INDEX
|
||
FASTEN EQU $FD ; FAST-READ ENABLED FLAG
|
||
|
||
; -----------
|
||
; PAGES 2 & 3
|
||
; -----------
|
||
|
||
LBUFF EQU $0200 ; 89-BYTE LINE BUFFER
|
||
KEYD EQU $0277 ; KEYBOARD QUEUE
|
||
RPTFLG EQU $028A ; KEY REPEAT FLAG
|
||
SHFLAG EQU $028D ; SHIFT KEY FLAG
|
||
KEYLOG EQU $028F ; VECTOR TO KEY-TABLE SETUP ROUTINE
|
||
CINV EQU $0314 ; SYSTEM 60HZ IRQ VECTOR
|
||
CBINV EQU $0316 ; BRK INSTRUCTION VECTOR
|
||
NMINV EQU $0318 ; NMI INTERRUPT VECTOR
|
||
|
||
; -----
|
||
; COLOR
|
||
; -----
|
||
|
||
COLRAM EQU $D800 ; COLOR RAM
|
||
EXTCOL EQU $D020 ; BORDER COLOR
|
||
BGCOLO EQU $D021 ; BACKGRND COLOR
|
||
FRCOLO EQU $F1 ; FOREGRND COLOR REG
|
||
|
||
; ----
|
||
; MISC
|
||
; ----
|
||
|
||
SHARED EQU $400 ; MEMORY LOCATION OF RTNS AVAILABLE
|
||
; TO BOTH BANKS
|
||
RASTER EQU $D012 ; RASTER COMPARE (WILL IT BE AFFECTED?)
|
||
CSFLAG EQU $0A21 ; ^S (no scroll) generated flag
|
||
|
||
; THESE ARE THE FLAGS & REGISTERS USED TO ACCESS THE
|
||
; EXPANSION RAM FOR THE C128 IF IT IS ATTACHED
|
||
|
||
XREAD EQU $91 ; RAM -> C128 COMMAND
|
||
XWRITE EQU $90 ; C128 -> RAM COMMAND
|
||
|
||
XFLAGS EQU $DF00 ; THE PAGE THE FLAGS ARE ON
|
||
XFER EQU 1 ; (BYTE) WRITE TO THIS TO DO TRANSFER
|
||
XBUFF EQU 2 ; (WORD) ADDR OF TRANSFER BUFFER IN MAIN MEMORY
|
||
XRAM EQU 4 ; (WORD) ADDR OF BUFFER IN XPANSION RAM (XRAM)
|
||
XBANK EQU 6 ; (BYTE) WHICH BANK OF XPANSION RAM
|
||
XSIZ EQU 7 ; (WORD) SIZE OF TRANSFER IN BYTES
|
||
XINT EQU 9 ; (BYTE) SET FOR NO INTERRUPTS DURING TRANSFERS
|
||
XINCR EQU 10 ; (BYTE) SET FOR POINTERS TO INCREMENT
|
||
|
||
; --------------
|
||
; MEMORY CONTROL
|
||
; --------------
|
||
|
||
LCRA EQU $FF01
|
||
LCRB EQU $FF02
|
||
|
||
CR EQU $FF00 ; MAIN CONFIGURATION REGISTER
|
||
PCRA EQU $D501
|
||
PCRB EQU $D502
|
||
MCR EQU $D505 ; MODE CONFIG REG (6502/128)
|
||
RCR EQU $D506 ; RAM CONFIG REG (SHARED/WHERE)
|
||
FASTER EQU $D030 ; BIT 0 - 1 = 2 MHz speed
|
||
; 0 = 1 MHz speed
|
||
|
||
; ---
|
||
; SID
|
||
; ---
|
||
|
||
; VOICE #1 REGISTERS
|
||
|
||
FRELO1 EQU $D400 ; FREQ
|
||
FREHI1 EQU $D401 ; FREQ HIGH BIT
|
||
PWLO1 EQU $D402 ; PULSE WIDTH
|
||
PWHI1 EQU $D403 ; PULSE WIDTH HIGH NIBBLE
|
||
VCREG1 EQU $D404 ; CONTROL
|
||
ATDCY1 EQU $D405 ; ATTACK/DECAY
|
||
SUREL1 EQU $D406 ; SUSTAIN/RELEASE
|
||
|
||
|
||
; VOICE #2 REGISTERS
|
||
|
||
FRELO2 EQU $D407 ; FREQ
|
||
FREHI2 EQU $D408 ; FREQ HIGH BIT
|
||
PWLO2 EQU $D409 ; PULSE WIDTH
|
||
PWHI2 EQU $D40A ; PULSE WIDTH HIGH NIBBLE
|
||
VCREG2 EQU $D40B ; CONTROL
|
||
ATDCY2 EQU $D40C ; ATTACK/DECAY
|
||
SUREL2 EQU $D40D ; SUSTAIN/RELEASE
|
||
|
||
; VOICE #3 REGISTERS
|
||
|
||
FRELO3 EQU $D40E ; FREQ
|
||
FREHI3 EQU $D40F ; FREQ HIGH BIT
|
||
PWLO3 EQU $D410 ; PULSE WIDTH
|
||
PWHI3 EQU $D411 ; PULSE WIDTH HIGH NIBBLE
|
||
VCREG3 EQU $D412 ; VOICE CONTROL
|
||
ATDCY3 EQU $D413 ; ATTACK/DECAY
|
||
SUREL3 EQU $D414 ; SUSTAIN/RELEASE
|
||
|
||
; MISCELLANEOUS REGISTERS
|
||
|
||
CUTLO EQU $D415 ; FILTER CUTOFF, LOW BITS
|
||
CUTHI EQU $D416 ; FILTER CUTOFF, HIGH BYTE
|
||
RESON EQU $D417 ; RESONANCE CONTROL
|
||
SIGVOL EQU $D418 ; VOLUME/FILTER CONTROL
|
||
RAND EQU $D41B ; RANDOM NUMBER
|
||
CI2PRA EQU $DD00 ; DATA PORT A
|
||
|
||
; -------------------
|
||
; KERNAL JUMP VECTORS
|
||
; -------------------
|
||
|
||
RFASTIO EQU $FF47 ; FAST DATA I/O
|
||
RCHKIN EQU $FFC6 ; OPEN CHANNEL FOR INPUT
|
||
RCHKOUT EQU $FFC9 ; OPEN CHANNEL FOR OUTPUT
|
||
RCHRIN EQU $FFCF ; INPUT CHARACTER FROM CHANNEL
|
||
RCHROUT EQU $FFD2 ; OUTPUT CHARACTER TO CHANNEL
|
||
RCINT EQU $FF81 ; INIT SCREEN EDITOR
|
||
RCLALL EQU $FFE7 ; CLOSE ALL CHANNELS & FILES
|
||
RCLOSE EQU $FFC3 ; CLOSE A FILE
|
||
RCLRCHN EQU $FFCC ; CLEAR CHANNEL
|
||
RGETIN EQU $FFE4 ; GET CHAR FROM KEYBOARD QUEUE
|
||
RIOINIT EQU $FF84 ; INIT I/O
|
||
ROPEN EQU $FFC0 ; OPEN A FILE
|
||
RPLOT EQU $FFF0 ; READ/SET CURSOR POSITION
|
||
RRAMTAS EQU $FF87 ; INIT RAM
|
||
RREADST EQU $FFB7 ; READ I/O STATUS
|
||
RSCNKEY EQU $FF9F ; SCAN KEYBOARD
|
||
RSETMSG EQU $FF90 ; SET KERNAL MESSAGES
|
||
RSETLFS EQU $FFBA ; SET FILE ATTRIBUTES
|
||
RSETNAM EQU $FFBD ; SET FILENAME
|
||
SWAPPER EQU $FF5F ; SWAP TO ALTERNATE DISPLAY DEVICE
|
||
RSETFCN EQU $FF65 ; ASSIGN STRING VALUES TO FCN KEYS
|
||
; (AS WE WANT THEM)
|
||
RTKSA EQU $FF96 ; set secondary addr for talk
|
||
RUNTLK EQU $FFAB ; untalk to disk
|
||
RLISTEN EQU $FFB1 ; listen to disk
|
||
RTALK EQU $FFB4 ; tell disk to start talking
|
||
|
||
END
|
||
|
||
|