mirror of
https://github.com/erkyrath/infocom-zcode-terps.git
synced 2026-02-09 09:41:46 +00:00
139 lines
4.1 KiB
C
139 lines
4.1 KiB
C
PAGE
|
|
SBTTL "--- HARDWARE EQUATES: APPLE II ---"
|
|
|
|
; -------------------
|
|
; APPLE II MEMORY MAP
|
|
; -------------------
|
|
|
|
LBUFF EQU $0200 ; LINE INPUT BUFFER (80 BYTES)
|
|
SCREEN EQU $0400 ; START OF SCREEN RAM
|
|
LSTLNE EQU $07D0 ; LAST LINE OF SCREEN RAM
|
|
ZIP EQU $0800 ; START OF EXECUTABLE ZIP CODE
|
|
|
|
IOBUFF EQU ZIP+$2100 ; PAGING BUFFER (ASSUME 8K+ ZIP)
|
|
BUFFA EQU IOBUFF+$0100 ; SECTOR DECODE BUFFER, LOWER HALF
|
|
BUFFB EQU BUFFA+$0100 ; SECTOR DECODE BUFFER, UPPER HALF
|
|
|
|
PTABL EQU BUFFB+$0100 ; PAGING TABLE, LSBS
|
|
PTABH EQU PTABL+$0100 ; PAGING TABLE, MSBS
|
|
LRUMAP EQU PTABH+$0100 ; TIMESTAMP TABLE
|
|
|
|
ZSTAKL EQU LRUMAP+$0100 ; Z-STACK LSBS
|
|
ZSTAKH EQU ZSTAKL+$0100 ; Z-STACK MSBS
|
|
LOCALS EQU ZSTAKH+$0100 ; LOCAL VARIABLE STORAGE (30 BYTES)
|
|
BUFSAV EQU LOCALS+$20 ; AUXILIARY INPUT BUFFER (80 BYTES)
|
|
|
|
ZBEGIN EQU LOCALS+$0100 ; START OF Z-PRELOAD
|
|
|
|
; ---------
|
|
; CONSTANTS
|
|
; ---------
|
|
|
|
ARROW EQU $08 ; LEFT ARROW (BACKSPACE)
|
|
EOL EQU $0D ; EOL CHAR
|
|
LF EQU $0A ; LINE FEED
|
|
SPACE EQU $20 ; SPACE CHAR
|
|
BACKSP EQU $7F ; BACKSPACE
|
|
|
|
READ EQU $00 ; "READ" COMMAND
|
|
WRITE EQU $01 ; "WRITE" COMMAND
|
|
|
|
TOP EQU 1 ; NORMAL TOP EXCLUDING STATUS LINE
|
|
BOTM EQU 24 ; BOTTOM SCREEN LINE
|
|
|
|
ZTRKF EQU 2 ; FIRST TRACK GAME IS ON
|
|
ZTRKL EQU 36 ; ANYTHING FROM HERE UP IS ILLEGAL
|
|
|
|
; ----------------------
|
|
; BOOT ZERO PAGE EQUATES
|
|
; ----------------------
|
|
|
|
BADDR EQU $26 ; (WORD) ROM BOOT ADDRESS
|
|
BSLOT EQU $2B ; (BYTE) ROM BOOT SLOT
|
|
BSECT EQU $3D ; (BYTE) BOOT SECTOR TO READ
|
|
|
|
; ----------------
|
|
; HARDWARE EQUATES
|
|
; ----------------
|
|
|
|
KBD EQU $C000 ; KEY STROBE
|
|
ANYKEY EQU $C010 ; ANY KEY DOWN FLAG
|
|
TXTSET EQU $C051 ; SWITCH FOR TEXT MODE
|
|
MIXCLR EQU $C052 ; SWITCH FOR MIX MODE CLEAR
|
|
LOWSCR EQU $C054 ; SWITCH FOR PAGE 1 SELECT
|
|
|
|
; ------------------------
|
|
; IDOS INTERFACE VARIABLES
|
|
; ------------------------
|
|
|
|
DCBSLT EQU $60 ; (BYTE) TARGET SLOT ID
|
|
DCBPSL EQU DCBSLT+1 ; (BYTE) PREVIOUSLY ACCESSED SLOT
|
|
DCBDRV EQU DCBSLT+2 ; (BYTE) TARGET DRIVE ID
|
|
DCBPDR EQU DCBSLT+3 ; (BYTE) PREVIOUSLY ACCESSED DRIVE
|
|
DCBSEC EQU DCBSLT+4 ; (BYTE) TARGET SECTOR
|
|
DCBTRK EQU DCBSLT+5 ; (BYTE) TARGET TRACK
|
|
DCBERR EQU DCBSLT+6 ; (BYTE) DRIVE ERROR CODE
|
|
DCBCMD EQU DCBSLT+7 ; (BYTE) DISK COMMAND ID
|
|
DCBBFL EQU DCBSLT+8 ; (BYTE) LO POINTER TO DATA BUFFER
|
|
DCBBFH EQU DCBSLT+9 ; (BYTE) HI POINTER TO DATA BUFFER
|
|
DRVFLG EQU DCBSLT+10 ; (BYTE) CURRENT DRIVE
|
|
SLTMP3 EQU DCBSLT+11 ; (BYTE) TRACK-SEEK SLOT
|
|
TTRK EQU DCBSLT+12 ; (BYTE) TARGET TRACK
|
|
DTMP3 EQU DCBSLT+13 ; (BYTE) WORK BYTE
|
|
DTMP4 EQU DCBSLT+14 ; (BYTE) SLOT ID * 16
|
|
HDRCHK EQU DCBSLT+15 ; (BYTE) CHECKSUM FOUND
|
|
HDRSEC EQU DCBSLT+16 ; (BYTE) SECTOR FOUND
|
|
HDRTRK EQU DCBSLT+17 ; (BYTE) TRACK FOUND
|
|
HDRVOL EQU DCBSLT+18 ; (BYTE) VOLUME FOUND
|
|
DCNT EQU DCBSLT+19 ; (BYTE) MOTOR TIME COUNT
|
|
DTMP2 EQU DCBSLT+20 ; (BYTE) TEMP
|
|
|
|
; ---------------------
|
|
; DISK HARDWARE EQUATES
|
|
; ---------------------
|
|
|
|
PH0OFF EQU $C080 ; STEP MOTOR POSITION #0
|
|
DRVOFF EQU $C088 ; DRIVE MOTOR OFF
|
|
DRVON EQU $C089 ; DRIVE MOTOR ON
|
|
DRV0EN EQU $C08A ; ENGAGE DRIVE #1
|
|
DRV1EN EQU $C08B ; ENGAGE DRIVE #2
|
|
Q6L EQU $C08C ; READ DATA LATCH
|
|
Q6H EQU $C08D ; WRITE DATA LATCH
|
|
Q7L EQU $C08E ; SET READ MODE
|
|
Q7H EQU $C08F ; SET WRITE MODE
|
|
|
|
; -----------------
|
|
; MONITOR VARIABLES
|
|
; -----------------
|
|
|
|
WLEFT EQU $20 ; LEFT MARGIN (0)
|
|
WWIDTH EQU $21 ; RIGHT MARGIN (40 OR 80)
|
|
WTOP EQU $22 ; TOP LINE (0-23)
|
|
WBOTM EQU $23 ; BOTTOM LINE (1-24)
|
|
CH EQU $24 ; CURSOR HORIZONTAL
|
|
CV EQU $25 ; CURSOR VERTICAL
|
|
BASL EQU $28 ; SCREEN LINE
|
|
INVFLG EQU $32 ; CHAR OUTPUT MASK ($FF=NORM, $3F=INVERSE)
|
|
PROMPT EQU $33 ; PROMPT CHARACTER (SET TO >)
|
|
CSW EQU $36 ; CHARACTER OUTPUT VECTOR
|
|
RNUM1 EQU $4E ; RANDOM #'S GENERATED BY
|
|
RNUM2 EQU $4F ; MONITOR GETKEY
|
|
EH EQU $057B ; CURSOR HORIZONTAL (IIE/C)
|
|
|
|
; ----------------
|
|
; MONITOR ROUTINES
|
|
; ----------------
|
|
|
|
BASCAL EQU $FC22 ; CALC LINE BASE ADDRESS
|
|
BELL EQU $FF3A ; MAKE A NOISE
|
|
CLEOL EQU $FC9C ; CLEAR TO END OF LINE
|
|
CLEOS EQU $FC42 ; CLEAR TO END OF SCREEN
|
|
HOME EQU $FC58 ; CLEAR SCREEN/HOME CURSOR
|
|
MCOUT EQU $FDED ; CHAR OUTPUT
|
|
COUT1 EQU $FDF0 ; CHAR OUTPUT TO SCREEN
|
|
RDKEY EQU $FD0C ; READ KEY
|
|
GETLN1 EQU $FD6F ; GET LINE
|
|
|
|
END
|
|
|