Apple II User Manual

Page of 257
F58F: 20 ED FD  119           JSR   COUT       ;POSITION.
F592: 20 3A FF  120  RESETZ   JSR   BELL
F595: A9 A1     121  NXTLINE  LDA   #$A1       ;'!'
F597: 85 33     122           STA   PROMPT     ;INITIALIZE PROMPT
F599: 20 67 FD  123           JSR   GETLNZ     ;GET LINE.
F59C: 20 C7 FF  124           JSR   ZMODE      ;INIT SCREEN STUFF
F59F: AD 00 02  125           LDA   IN         ;GET CHAR
F5A2: C9 A0     126           CMP   #$A0       ;ASCII BLANK?
F5A4: F0 13     127           BEQ   SPACE      ;YES
F5A6: C8        128           INY
F5A7: C9 A4     129           CMP   #$A4       ;ASCII '$' IN COL 1?
F5A9: F0 92     130           BEQ   FAKEMON    ;YES, SIMULATE MONITOR
F5AB: 88        131           DEY              ;NO, BACKUP A CHAR
F5AC: 20 A7 FF  132           JSR   GETNUM     ;GET A NUMBER
F5AF: C9 93     133           CMP   #$93       ;':' TERMINATOR?
F5B1: D0 D5     134  ERR4     BNE   ERR2       ;NO, ERR.
F5B3: 8A        135           TXA
F5B4: F0 D2     136           BEQ   ERR2       ;NO ADR PRECEDING COLON.
F5B6: 20 78 FE  137           JSR   A1PCLP     ;MOVE ADR TO PCL, PCH.
F5B9: A9 03     138  SPACE    LDA   #$3        ;COUNT OF CHARS IN MNEMONIC
F5BB: 85 3D     139           STA   A1H
F5BD: 20 34 F6  140  NXTMN    JSR   GETNSP     ;GET FIRST MNEM CHAR.
F5C0: 0A        141  NXTM     ASL
F5C1: E9 BE     142           SBC   #$BE       ;SUBTRACT OFFSET
F5C3: C9 C2     143           CMP   #$C2       ;LEGAL CHAR?
F5C5: 90 C1     144           BCC   ERR2       ;NO.
F5C7: 0A        145           ASL              ;COMPRESS-LEFT JUSTIFY
F5C8: 0A        146           ASL
F5C9: A2 04     147           LDX   #$4
F5CB: 0A        148  NXTM2    ASL              ;DO 5 TRIPLE WORD SHIFTS
F5CC: 26 42     149           ROL   A4L
F5CE: 26 43     150           ROL   A4H
F5D0: CA        151           DEX
F5D1: 10 F8     152           BPL   NXTM2
F5D3: C6 3D     153           DEC   A1H        ;DONE WITH 3 CHARS?
F5D5: F0 F4     154           BEQ   NXTM2      ;YES, BUT DO 1 MORE SHIFT
F5D7: 10 E4     155           BPL   NXTMN      ;NO
F5D9: A2 05     156  FORM1    LDX   #$5        ;5 CHARS IN ADDR MODE
F5DB: 20 34 F6  157  FORM2    JSR   GETNSP     ;GET FIRST CHAR OF ADDR
F5DE: 84 34     158           STY   YSAV
F5E0: DD B4 F9  159           CMP   CHAR1,X    ;FIRST CHAR MATCH PATTERN?
F5E3: D0 13     160           BNE   FORM3      ;NO
F5E5: 20 34 F6  161           JSR   GETNSP     ;YES, GET SECOND CHAR
F5E8: DD BA F9  162           CMP   CHAR2,X    ;MATCHES SECOND HALF?
F5EB: F0 0D     163           BEQ   FORM5      ;YES.
F5ED: BD BA F9  164           LDA   CHAR2,X    ;NO, IS SECOND HALF ZERO?
F5F0: F0 07     165           BEQ   FORM4      ;YES.
F5F2: C9 A4     166           CMP   #$A4       ;NO,SECOND HALF OPTIONAL?
F5F4: F0 03     167           BEQ   FORM4      ;YES.
F5F6: A4 34     168           LDY   YSAV
F5F8: 18        169  FORM3    CLC              ;CLEAR BIT-NO MATCH
F5F9: 88        170  FORM4    DEY              ;BACK UP 1 CHAR
F5FA: 26 44     171  FORM5    ROL   FMT        ;FORM FORMAT BYTE
F5FC: E0 03     172           CPX   #$3        ;TIME TO CHECK FOR ADDR.
F5FE: D0 0D     173           BNE   FORM7      ;NO
F600: 20 A7 FF  174           JSR   GETNUM     ;YES
F603: A5 3F     175           LDA   A2H
F605: F0 01     176           BEQ   FORM6      ;HIGH-ORDER BYTE ZERO
F607: E8        177           INX              ;NO, INCR FOR 2-BYTE
F608: 86 35     178  FORM6    STX   L          ;STORE LENGTH
F60A: A2 03     179           LDX   #$3        ;RELOAD FORMAT INDEX
F60C: 88        180           DEY              ;BACKUP A CHAR