Files
Andrew Plotkin b642da811e Initial commit.
2023-11-16 18:19:54 -05:00

223 lines
6.1 KiB
NASM
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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