Apple II User Manual

Page of 257
FBC7: 85 29     581           STA   BASH       ;  BASH=000001CD
FBC9: 68        582           PLA              ;  AND
FBCA: 29 18     583           AND   #$18       ;  BASL=EABAB000
FBCC: 90 02     584           BCC   BSCLC2
FBCE: 69 7F     585           ADC   #$7F
FBD0: 85 28     586  BSCLC2   STA   BASL
FBD2: 0A        587           ASL
FBD3: 0A        588           ASL
FBD4: 05 28     589           ORA   BASL
FBD6: 85 28     590           STA   BASL
FBD8: 60        591           RTS
FBD9: C9 87     592  BELL1    CMP   #$87       ;BELL CHAR? (CNTRL-G)
FBDB: D0 12     593           BNE   RTS2B      ;  NO, RETURN
FBDD: A9 40     594           LDA   #$40       ;DELAY .01 SECONDS
FBDF: 20 A8 FC  595           JSR   WAIT
FBE2: A0 C0     596           LDY   #$C0
FBE4: A9 0C     597  BELL2    LDA   #$0C       ;TOGGLE SPEAKER AT
FBE6: 20 A8 FC  598           JSR   WAIT       ;  1 KHZ FOR .1 SEC.
FBE9: AD 30 C0  599           LDA   SPKR
FBEC: 88        600           DEY
FBED: D0 F5     601           BNE   BELL2
FBEF: 60        602  RTS2B    RTS
FBF0: A4 24     603  STOADV   LDY   CH         ;CURSOR H INDEX TO Y-REG
FBF2: 91 28     604           STA   (BASL),Y   ;STORE CHAR IN LINE
FBF4: E6 24     605  ADVANCE  INC   CH         ;INCREMENT CURSOR H INDEX
FBF6: A5 24     606           LDA   CH         ;  (MOVE RIGHT)
FBF8: C5 21     607           CMP   WNDWDTH    ;BEYOND WINDOW WIDTH?
FBFA: B0 66     608           BCS   CR         ;  YES CR TO NEXT LINE
FBFC: 60        609  RTS3     RTS              ;  NO,RETURN
FBFD: C9 A0     610  VIDOUT   CMP   #$A0       ;CONTROL CHAR?
FBFF: B0 EF     611           BCS   STOADV     ;  NO,OUTPUT IT.
FC01: A8        612           TAY              ;INVERSE VIDEO?
FC02: 10 EC     613           BPL   STOADV     ;  YES, OUTPUT IT.
FC04: C9 8D     614           CMP   #$8D       ;CR?
FC06: F0 5A     615           BEQ   CR         ;  YES.
FC08: C9 8A     616           CMP   #$8A       ;LINE FEED?
FC0A: F0 5A     617           BEQ   LF         ;  IF SO, DO IT.
FC0C: C9 88     618           CMP   #$88       ;BACK SPACE? (CNTRL-H)
FC0E: D0 C9     619           BNE   BELL1      ;  NO, CHECK FOR BELL.
FC10: C6 24     620  BS       DEC   CH         ;DECREMENT CURSOR H INDEX
FC12: 10 E8     621           BPL   RTS3       ;IF POS, OK. ELSE MOVE UP
FC14: A5 21     622           LDA   WNDWDTH    ;SET CH TO WNDWDTH-1
FC16: 85 24     623           STA   CH
FC18: C6 24     624           DEC   CH         ;(RIGHTMOST SCREEN POS)
FC1A: A5 22     625  UP       LDA   WNDTOP     ;CURSOR V INDEX
FC1C: C5 25     626           CMP   CV
FC1E: B0 0B     627           BCS   RTS4       ;IF TOP LINE THEN RETURN
FC20: C6 25     628           DEC   CV         ;DEC CURSOR V-INDEX
FC22: A5 25     629  VTAB     LDA   CV         ;GET CURSOR V-INDEX
FC24: 20 C1 FB  630  VTABZ    JSR   BASCALC    ;GENERATE BASE ADR
FC27: 65 20     631           ADC   WNDLFT     ;ADD WINDOW LEFT INDEX
FC29: 85 28     632           STA   BASL       ;TO BASL
FC2B: 60        633  RTS4     RTS
FC2C: 49 C0     634  ESC1     EOR   #$C0       ;ESC?
FC2E: F0 28     635           BEQ   HOME       ;  IF SO, DO HOME AND CLEAR
FC30: 69 FD     636           ADC   #$FD       ;ESC-A OR B CHECK
FC32: 90 C0     637           BCC   ADVANCE    ;  A, ADVANCE
FC34: F0 DA     638           BEQ   BS         ;  B, BACKSPACE
FC36: 69 FD     639           ADC   #$FD       ;ESC-C OR D CHECK
FC38: 90 2C     640           BCC   LF         ;  C, DOWN
FC3A: F0 DE     641           BEQ   UP         ;  D, GO UP
FC3C: 69 FD     642           ADC   #$FD       ;ESC-E OR F CHECK