textfiles/apple/ANATOMY/t.xtraddrs.txt
2021-04-15 13:31:59 -05:00

269 lines
8.6 KiB
Plaintext
Raw 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.

**********************************
* *
* ADDRS USED IN THE FORMATTED *
* DIS'MBLIES BUT NOT REFERENCED *
* IN THE LINEAR DIS'MBLIES. *
* (THESE ADRS ARE INCLUDED TO *
* MAKE THE SYMBOL TBLS APPLICABLE*
* TO BOTH DIS'MBLIES.) *
* *
**********************************
*--------------------------------*
* ZERO-PAGE LOCATIONS *
*--------------------------------*
LOC0 = $00 ;REFERENCE ADR USD BY MONITOR ROM
;ROUTINES THAT SIMULATE IN# & PR#
;STATEMENTS.
LOC1 = $01 ;AS ABOVE.
GOWARM = LOC0 ;A JMP INSTRUC (3 BYTES, $00-$02)
;TO BASIC'S WARMSTART (RESTART,
;$D43C) ROUTINE. HOWEVER, WHEN
;COLDSTARTING, IS TEMPORARILY SET
;TO JUMP INTO BASIC'S COLDSTART
;AT BSCOLDST ($F128).
GOSTROUT = $03 ;A JMP INSTRUC (3 BYTES, $03-$05)
;TO THE BASIC ROUTINE THAT PRINTS
;THE STRING IN MEMORY POINTED TO
;BY (A) & (Y) REGS (IN LOW/HI
;FORMAT). HOWEVER, WHEN COLD-
;STARTING, IS TEMPORARILY SET TO
;JMP IN2 BASIC'S COLSTART ROUTINE
;AT BSCOLDST ($F128).
USR = $0A ;JUMP INSTRUC (3 BYTES, $0A-$0C)
;TO USR ROUTINE. HOWEVER, WHEN
;COLDSTARTING, IS TEMPORARILY
;PTING AT ILLEGAL-QUANTITY ROUT'N
SUBFLG = $14 ;SUBSCRIPT FLAG:
;$00 = SUBSCRIPT ALLOWED.
;$80 = NO SUBSCRIPTS.
WNDWDTH = $21 ;WIDTH OF TEXT SCREEN WINDOW.
INVFLG = $32 ;INVERSE FLAG MASK: NORMAL = $FF,
;INVERSE = $3F & FLASHING = $7F.
;HACKER'S OFTEN ZAP THIS BYTE TO
;FILTER OUTPUT AS PART OF A
;PROTECTION SCHEME (INVIS = $80).
BT0SCRTH = $3C ;MAIN SCRATCH REG USED BY BOOT0.
A2L = $3E ;MULTIPURPOSE REG & PTR ($3E,$3F)
BOOTEMP = $40 ;TRK # READ OFF DSK WHEN BOOTING.
BOOTRK = $41 ;TRK # WANTED WHEN READING IN DOS
;DURING THE BOOT PROCESS.
TEMPPT = $52 ;PREVIOUS TEMP STRING DESCRIPTOR.
LASTPT = $53 ;PREVIOUS TEMP STRING POINTER.
TEMPST = $55 ;PREVIOUS STRING POINTER USED IN
;GARBAGE COLLECTION ROUTINES.
INDEX = $5E ;TEMP STK PTR FOR MOVING STRINGS.
ARYTAB = $6B ;PTR ($6B,$6C) TO START OF THE
;ARRAY VARIABLES.
STREND = $6D ;PTR ($6D,$6E) TO START OF FREE
;SPACE. (1 BYTE BEYOND THE END OF
;THE ARRAY VARIABLES.)
OLDTEXT = $79 ;PTR ($79,$7A) TO NEXT STATEMENT
;TO BE EXECUTED.
DATPTR = $7D ;PTR ($7D,$7E) TO NEXT BYTE TO BE
;USED FOR A DATA STATEMENT.
DSCLEN = $8F ;TEMP BYTE USD 4 GARBAGE COLLECT.
JMPADRS = $90 ;JMP INTRUC ($90-$92) TO VARIABLE
;ADDR.
TEMPRY = $A4 ;TEMP BYTE USED IN FLOATING POINT
;MATH ROUTINES.
CHRGET = $B1 ;GET BYTE OF TEXT FROM TXTPTR IN
;(A), INCREMENT TXTPTR AND EXIT
;WITH: (A) = ORIGINAL CHAR.
; (Z) = 0 IF (A) = ":" OR $00
; = 1 IF (A) = '0' TO '9'
CHRGOT = $B7 ;AS ABOVE - BUT DON'T INC TXTPTR.
TXTPTR = $B8 ;PTR ($B8,$B9) TO NEXT BYTE OF
;PRGM TEXT.
CHRGTRTN = $C8 ;"RTS" AT END OF CHRGET/CHRGOT.
SPEEDFLG = $F1 ;# USED TO CTRL DELAY ($00-$FF).
TRCFLG = $F2 ;TRACE FLAG.
FLSHMSK = $F3 ;MASK FOR FLASHING OUTPUT.
;($40 FOR FLASH, ELSE $00).
*--------------------------------*
* PAGES ONE TO EIGHT *
*--------------------------------*
STACK = $100 ;TOP OF THE STACK.
BUF300 = $300 ;PAGE 3 - USED BY BOOT AS BUF TO
;STORE 2- & 6-ENCODED NIBBLES.
BTNIBL = $36C ;BOOT NIBBLE TABLE - USED TO
;TRANSLATE DISK BYTES TO ENCODED
;MEMORY BYTES.
SEC2RD08 = $800 ;DEFINES # OF SECS TO BE READ IN
;BY BOOT0.
BT1EXC08 = $801 ;START OF BOOT1. BOOT0 JMPS TO
;THIS LOCATION.
SKPREL08 = $81F ;TARGET LABEL FOR BRANCH WHEN
;BOOT1 IS EXECUTING IN PAGE 8.
;- DETERMINE # OF SECS LFT 2 READ
; IN, PHYS SEC # & TARGET ADR.
PRP4B208 = $839 ;TARGET LABEL FOR BRANCH WHEN
;BOOT1 IS EXECUTING IN PAGE 8.
;- PREPARE FOR BOOT2.
*--------------------------------*
* DISK CONTROLLER CARD ADRS *
*--------------------------------*
* NOTE: THE DISK CONTROLLER ROMS
* ARE RELOCATABLE TO ANY PAGE
* BOUNDARY. THE ACTUAL ADRS USED
* ARE DEPENDENT UPON WHICH SLOT
* (1 TO 7) HOUSES THE CONTROLLER
* CARD. WHEREAS THESE SLOTS ARE
* REPRESENTED BY PAGES $C1 TO $C7,
* THE HI BYTE OF THE FOLLOWING
* ADRS CAN BE CHANGED TO $CS WHERE
* S=SLOT #. THE SAMPLE ADRS GIVEN
* BELOW REFER TO A CARD IN SLOT6
* (PAGE $C6). THE FUNCTIONS OF
* EACH OF THE FOLLOWING ROUTINES
* IS DESCRIBED IN THE FORMATTED
* DISASEMBLY TITLED "THE BOOT PROCESS".
BUILDTBL = $C606
TESTCARY = $C614
GETNEWX = $C61E
MAGNTOFF = $C63D
PRSRVFLG = $C65D
STARTSEQ = $C65E
BTRYD5 = $C663
BTRYAA = $C667
BTRY96 = $C671
BTRYAD = $C67D
RDVLTKSC = $C683
MOREBYTS = $C685
BTRDODD = $C687
BTRDEVEN = $C68F
BTRDATA = $C6A6
KEEPCNT1 = $C6A8
RDDSK1 = $C6AA
KEEPCNT2 = $C6BA
RDDSK2 = $C6BC
RDCK = $C6CB
TSTREAD = $C6D3
SETX56 = $C6D7
DOWNX = $C6D9
*--------------------------------*
* APPLESOFT ADDRESSES *
*--------------------------------*
* A BRIEF DESCRIPTION OF THE
* FUNCTIONS OF THESE ROUTINES ARE
* GIVEN BELOW. NOTE THAT SOME OF
* THESE ROUTINES MAY BE INTERCEPTED
* BY DOS. (SEE FORMATTED DIS'MBLIES
* FOR DETAILS.)
ESTPTRS = $D4F5 ;RECALC LINK PTRS IN APPLESOFT
;PRGM IN CASE PRGM WAS NOT LOADED
;INTO THE SPACE AT WHICH IT WAS
;ORIGINALLY WRITTEN.
LOCEOP = $D4FE ;FIND END OF APPLESOFT PRGM.
STARTNXT = $D50F ;PUT NEW LINK IN FP PRGM LINE.
LOCEOL = $D511 ;FIND END OF APPLESOFT PRGM LINE.
INLIN = $D52C ;INPUT LINE OF TEXT IN2 INPUT BUF
;(WITHOUT PROMPT).
INLINPL2 = $D52E ;AS ABOVE, BUT USE VAL IN (X) AS
;PROMPT.
TERMIN8 = $D539 ;PUT AN END-OF-LINE MARKER (EOL,
;$00) IN INPUT BUFFER.
CNVRTPOS = $D541 ;CONVERT INPUT LINE TO POS ASCII.
NEG8NPUT = $D54C ;PREPARE TO INITIALIZE THE TEXT
;PTR. (SET A=0, Y=01, X=FF.)
CLEAR = $D66A ;SIMULATE A CLEAR STATEMENT.
CLEARC = $D66C ;CLEAR VARIABLES & TEXT.
STKINI = $D683 ;REINTIALIZE STK POINTER WHILE
;PRESERVING RETURN ADDRESS.
CLRTS = $D696 ;"RTS" AT END OF STKINI ROUTINE.
SETXTPT = $D697 ;SET TEXT PTR TO BEGINNING OF THE
;APPLESOFT PRGM.
RESTORE = $D849 ;SIMULATE A RESTORE STATEMENT.
SETDA = $D853 ;RESET PTR 2 DATA STATEMENT BYTE.
CRDO = $DAFB ;PRINT A <CR>.
STRPRT = $DB3D ;PRT STRING WHICH HAS DESCRIPTOR
;POINTED TO BY $A0,$A1.
OUTQUES = $BD5A ;PRINT A "?".
OUTDO = $DB5C ;PRINT CONTENTS OF (A) AS CHAR.
GODOPUT = $BD64 ;PRINT (A) VIA COUT.
INPUT = $DBB2 ;PROCESS AN INPUT STATEMENT.
NOPTNSTR = $DBC4 ;PROCESS AN INPUT STATEMENT WITH
;NO OPTIONAL STRING PROMPT.
CKDIFRD = $DBC7 ;BYPASS PRINTING "?" WHEN USING
;ALTERNATE STRING PROMPT INSTEAD.
STRTXT = $DE81 ;PRINT THE STRING.
SYNCHR = $DEC0 ;CHK BYTE POINTED TO BY TXTPTR TO
;SEE IF IT MATCHES (A). IF NOT,
;EXIT WITH SYNTAX ERROR.
IQERR = $E199 ;ILLEGAL QUANTITY ERROR.
WASDEF = $E2AC ;"RTS" ENCOUNTERED IF USING
;DEFERRED MODE WHEN PROCESSING AN
;INPUT STATEMENT.
ERRDIR = $E306 ;CHK IF IN DEFERRED OR IMMEDIATE
;MODE WHEN PROCESSING AN INPUT
;STATEMENT.
BSCOLDST = $F128 ;BEGIN BASIC'S COLDSTART SEQUENCE
MV2ZPG = $F152 ;COPY IMAGE OF CHRGET ROUTINE AND
;RANDOM # SEED TO PAGE ZERO. (BUG
;IN ROUTINE BECAUSE IT DOESN'T
;TRANSFER ALL OF RANDOM # SEED,)
NORMAL = $F273 ;SET NORMAL MODE.
INVERSE = $F277 ;SET INVERSE MODE.
NORMINV = $F279 ;SET INVERSE OR NORMAL MODE.
SETINV = $F27B ;STORE MASK 4 INVERSE IN INVFLG.
*--------------------------------*
* MONITOR ROM ROUTINES *
*--------------------------------*
* A BRIEF DESCRIPTION OF THE
* FUNCTIONS OF THESE ROUTINES ARE
* GIVEN BELOW. NOTE THAT SOME OF
* THESE ROUTINES MAY BE INTECEPTED
* BY DOS. (SEE FORMATTED DIS'MBLIES
* FOR DETAILS.)
CLREOL = $FC9C ;CLR LINE FRM CURRENT CURSOR POSN
;(BASL),(CH) 2 RIGHT EDGE OF WNDW
CLEOLZ = $FC9E ;CLR LINE FRM CURRENT CURSOR POSN
;(BASL),Y 2 RIGHT EDGE OF WINDOW.
CLEOL2 = $FCA0 ;PUT CHAR IN (A) FROM (BASL),Y TO
;RIGHT EDGE OF WINDOW.
WAIT = $FCA8 ;MONITOR ROM'S MAIN DELAY ROUT'N.
;DEALY Z # OF CYCLES BASED ON THE
;FORMULA:Z=((5*A^2)+(27*A)+26))/2
;WHERE A = VALUE IN ACCUMULATOR.
WAIT2 = $FCA9 ;TARGET 4 BRANCH IN WAIT ROUTINE.
WAIT3 = $FCAA ;TARGET 4 BRANCH IN WAIT ROUTINE.
ESC = $FD2F ;HANDLE AN <ESC> KEY INPUT.
RDCHAR = $FD35 ;PUT INPUT CHAR IN (A).
NOTCR = $FD3D ;HNDL INPUT CHAR OTHER THAN <CR>.
NOTCR1 = $FD5F ;HNDL INPUT CHAR OTHER THAN <CR>,
;<BKSPC> OR <CANCEL>.
CANCEL = $FD62 ;CANCEL THE INPUT LINE.
GETLNZ = $FD67 ;PRINT A <CR>, PROMPT & THEN READ
;A LINE OF INPUT.
BCKSPC = $FD71 ;HANDLE A BACKSPACE ("<-").
NXTCHAR = $FD75 ;READ THE NEXT CHAR.
CAPTST = $FD7E ;MAKE CHR UPPERCASE IF NECESSARY.
ADDINP = $FD84 ;PUT (A) IN INPUT BUF.
CROUT = $FD8E ;PRINT <CR> THROUGH COUT.
INPRT = $FE8D ;SELECT INPUT PORT # (A).
OUTPRT = $FE97 ;SELECT OUTPOUT PORT # (A).
IOPRT = $FE9B ;TEST IF I/O PORT # IS ZERO.
IOPRT1 = $FEA7 ;SET ZERO-PAGE POINTER (X,X+1) TO
;POINT AT $FD--.
IOPRT2 = $FEA9 ;SET ZERO-PAGE POINTER (X,X+1) TO
;POINT AT $(A)(Y).
BELL = $FF3A ;RING WARNING BELL WHEN INPUT BUF
;IS JUST ABOUT FULL.
-