Files
erkyrath.infocom-zcode-terps/apple/zip/hardeq.h
Andrew Plotkin b642da811e Initial commit.
2023-11-16 18:19:54 -05:00

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