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