done for The IDE64 Project by Soci/Singular (Kajtár Zsolt)
Version 4 (Jan 2002) Still preview!
Modified and with extended comments by Johann Klasek
* = $4000
; Cold Entry
4000: 4C 23 40 JMP $4023 ; Basic Cold Start
; Warm Entry
4003: 4C 09 40 JMP $4009 ; Basic Restart
; IRQ Entry
4006: 4C 4D A8 JMP $A84D ; IRQ Work
; Basic Restart
4009: 20 CC FF JSR $FFCC ; (iclrch) Restore I/O Vector [F226]
400C: 20 7A 41 JSR $417A ; Set Preconfig Registers
400F: 20 8D 41 JSR $418D ; Init Sprite Movement Tabs
4012: 20 12 41 JSR $4112 ; Chime
4015: 20 38 52 JSR $5238 ; Clear Stack & Work Area
4018: A9 00 LDA #$00
401A: 85 15 STA $15 ; Current I/O prompt flag
401C: 58 CLI
401D: 4C 37 4D JMP $4D37 ; Error or Ready
; Unused
4020: 00 FF FF ; '{0}..'
; Basic Cold Start
4023: 20 7A 41 JSR $417A ; Set Preconfig Registers
4026: 20 51 42 JSR $4251 ; Set Basic Links
4029: 20 45 40 JSR $4045 ; Set-Up Basic Constants
402C: 20 9B 41 JSR $419B ; Print Startup Message
402F: AD 04 0A LDA $0A04
4032: 09 01 ORA #$01
4034: 8D 04 0A STA $0A04
4037: A2 03 LDX #$03
4039: 8E 00 0A STX $0A00 ; Restart System (BASIC Warm) [4000]
403C: A2 FB LDX #$FB
403E: 9A TXS
403F: 20 56 FF JSR $FF56 ; foenix
4042: 4C 1C 40 JMP $401C
; Set-Up Basic Constants
4045: A9 4C LDA #$4C
4047: 85 56 STA $56
4049: 8D 18 12 STA $1218 ; USR Program Jump [7D28]
404C: A9 28 LDA #$28
404E: A0 7D LDY #$7D
4050: 8D 19 12 STA $1219
4053: 8C 1A 12 STY $121A
4056: A9 9F LDA #$9F
4058: A0 84 LDY #$84
405A: 8D 7A 11 STA $117A ; Float-fixed Vector [849F]
405D: 8C 7B 11 STY $117B
4060: A9 3C LDA #$3C
4062: A0 79 LDY #$79
4064: 8D 7C 11 STA $117C ; Fixed-float Vector [793C]
4067: 8C 7D 11 STY $117D
406A: A2 55 LDX #$55
406C: BD 78 42 LDA $4278,X
406F: 9D 7F 03 STA $037F,X
4072: CA DEX
4073: D0 F7 BNE $406C
4075: 8E DF 03 STX $03DF ; FAC#1 Overflow
4078: 86 15 STX $15 ; Current I/O prompt flag
407A: 86 1A STX $1A
407C: 8E 6F 11 STX $116F ; Trace Mode: FF = on
407F: 8E 00 1C STX $1C00
4082: 86 76 STX $76 ; Graphics flag: FF = Graphics allocated
4084: 86 74 STX $74 ; Auto line number increment
4086: 86 75 STX $75
4088: 8E 6B 11 STX $116B ; Double Width Flag
408B: 8E 6A 11 STX $116A ; SCALE Mode Flag
408E: 8E 6C 11 STX $116C ; Box Fill Flag
4091: 8E 1B 12 STX $121B
4094: 8E 1C 01 STX $011C
4097: 8E 76 12 STX $1276 ; Collision IRQ Task Table
409A: 8E 77 12 STX $1277
409D: 8E 78 12 STX $1278
40A0: 8E 7F 12 STX $127F ; Collision Mask
40A3: A0 58 LDY #$58
40A5: 99 7E 11 STA $117E,Y ; Sprite Motion Tables (8 x 11 bytes)
40A8: 88 DEY
40A9: 10 FA BPL $40A5
40AB: E8 INX
40AC: 8E FD 01 STX $01FD
40AF: 8E FC 01 STX $01FC
40B2: A2 0F LDX #$0F
40B4: 8E D5 03 STX $03D5 ; Current Bank For SYS, POKE, PEEK
40B7: A2 0D LDX #$0D
40B9: 86 86 STX $86 ; Graphic foreground color (13)
40BB: A2 01 LDX #$01
40BD: 86 84 STX $84 ; Multicolor 1 (1)
40BF: A2 02 LDX #$02
40C1: 86 85 STX $85 ; Multicolor 2 (2)
40C3: 20 5C 6A JSR $6A5C ; Log Current Colors
40C6: A2 1B LDX #$1B
40C8: 86 18 STX $18
40CA: A2 01 LDX #$01
40CC: A0 1C LDY #$1C
40CE: 86 2D STX $2D ; Pointer: Start-of-BASIC (bank 0)
40D0: 84 2E STY $2E
40D2: A9 00 LDA #$00
40D4: A0 04 LDY #$04
40D6: 85 2F STA $2F ; Pointer: Start-of-variables (bank 1)
40D8: 84 30 STY $30
40DA: A9 00 LDA #$00
40DC: A0 FF LDY #$FF
40DE: 8D 12 12 STA $1212 ; Basic Program Limit [FF00]
40E1: 8C 13 12 STY $1213
40E4: A9 00 LDA #$00
40E6: A0 FF LDY #$FF
40E8: 85 39 STA $39 ; Pointer: Limit-of-memory (bank 1)
40EA: 84 3A STY $3A
40EC: A2 3F LDX #$3F
40EE: A0 07 LDY #$07
40F0: 8A TXA
40F1: 99 F8 07 STA $07F8,Y
40F4: CA DEX
40F5: 88 DEY
40F6: 10 F8 BPL $40F0
40F8: A9 00 LDA #$00
40FA: A2 6C LDX #$6C
40FC: 9D 7E 11 STA $117E,X ; Sprite Motion Tables (8 x 11 bytes)
40FF: CA DEX
4100: 10 FA BPL $40FC
4102: 20 12 41 JSR $4112 ; Chime
4105: A9 D0 LDA #$D0
4107: 8D EC 11 STA $11EC ; CHRGEN ROM Page, Graphics Mode [D0]
410A: A9 D8 LDA #$D8
410C: 8D EB 11 STA $11EB ; CHRGEN ROM Page, Text Mode [D8]
410F: 4C D9 51 JMP $51D9
; Chime
4112: A9 20 LDA #$20
4114: A0 01 LDY #$01
4116: 8D 29 12 STA $1229
4119: 8C 2A 12 STY $122A
411C: A9 04 LDA #$04
411E: 8D 2B 12 STA $122B
4121: A9 10 LDA #$10
4123: 8D 22 12 STA $1222
4126: A9 00 LDA #$00
4128: 8D 04 D4 STA $D404
412B: 8D 0B D4 STA $D40B
412E: 8D 12 D4 STA $D412
4131: 8D FD 12 STA $12FD
4134: A9 0F LDA #$0F
4136: 8D 74 12 STA $1274
4139: 8D 75 12 STA $1275
413C: 8D 18 D4 STA $D418
413F: A0 1D LDY #$1D
4141: B9 11 70 LDA $7011,Y ; Envelope A/D Patterns
4144: 99 3F 12 STA $123F,Y
4147: 88 DEY
4148: 10 F7 BPL $4141
414A: A2 09 LDX #$09
414C: BD 2F 70 LDA $702F,X ; Chime Seq
414F: 9D 67 12 STA $1267,X
4152: CA DEX
4153: 10 F7 BPL $414C
4155: 8E 85 12 STX $1285
4158: 8E 86 12 STX $1286
415B: 8E 87 12 STX $1287
415E: 8E 24 12 STX $1224
4161: 8E 26 12 STX $1226
4164: 8E 28 12 STX $1228
4167: A0 02 LDY #$02
4169: 8C 2F 12 STY $122F
416C: A2 00 LDX #$00
416E: 20 B2 6E JSR $6EB2 ; Set SID Sound
4171: CE 2F 12 DEC $122F
4174: 10 F6 BPL $416C
4176: EE 2F 12 INC $122F
4179: 60 RTS
; Set Preconfig Registers
417A: 20 45 A8 JSR $A845 ; Set Bank 15
417D: A2 03 LDX #$03
417F: BD 89 41 LDA $4189,X ; Registers For $D501
4182: 9D 01 D5 STA $D501,X
4185: CA DEX
4186: 10 F7 BPL $417F
4188: 60 RTS
; Registers For $D501
4189: 3F 7F 01 41 ; '?..a'
; Init Sprite Movement Tabs
418D: A9 00 LDA #$00
418F: A0 07 LDY #$07
4191: BE D9 6D LDX $6DD9,Y ; Sprite Motion Table Offsets
4194: 9D 7E 11 STA $117E,X ; Sprite Motion Tables (8 x 11 bytes)
4197: 88 DEY
4198: 10 F7 BPL $4191
419A: 60 RTS
; Print Startup Message
419B: A0 00 LDY #$00
419D: B9 BB 41 LDA $41BB,Y ; Startup Message
41A0: C9 40 CMP #$40
41A2: D0 0E BNE $41B2
41A4: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
41A6: 10 0D BPL $41B5
41A8: A2 13 LDX #$13
41AA: A9 20 LDA #$20
41AC: 20 69 92 JSR $9269 ; Call 'chrout'
41AF: CA DEX
41B0: D0 F8 BNE $41AA
41B2: 20 69 92 JSR $9269 ; Call 'chrout'
41B5: C8 INY
41B6: C0 96 CPY #$96
41B8: D0 E3 BNE $419D
41BA: 60 RTS
; Startup Message
41BB: 93 0D 40 20 43 4F 4D 4D ; '{CLR}{CR}@ comm'
41C3: 4F 44 4F 52 45 20 42 41 ; 'odore ba'
41CB: 53 49 43 20 56 37 2E 30 ; 'sic v7.0'
41D3: 20 31 32 32 33 36 35 20 ; ' 122365 '
41DB: 42 59 54 45 53 20 46 52 ; 'bytes fr'
41E3: 45 45 0D 40 20 20 20 28 ; 'ee{CR}@ ('
41EB: 43 29 31 39 38 36 20 43 ; 'c)1986 c'
41F3: 4F 4D 4D 4F 44 4F 52 45 ; 'ommodore'
41FB: 20 45 4C 45 43 54 52 4F ; ' electro'
4203: 4E 49 43 53 2C 20 4C 54 ; 'nics, lt'
420B: 44 2E 0D 40 20 20 20 20 ; 'd.{CR}@ '
4213: 20 20 20 20 20 28 43 29 ; ' (c)'
421B: 31 39 37 37 20 4D 49 43 ; '1977 mic'
4223: 52 4F 53 4F 46 54 20 43 ; 'rosoft c'
422B: 4F 52 50 2E 0D 40 20 20 ; 'orp.{CR}@ '
4233: 20 20 20 20 20 20 20 20 ; ' '
423B: 20 41 4C 4C 20 52 49 47 ; ' all rig'
4243: 48 54 53 20 52 45 53 45 ; 'hts rese'
424B: 52 56 45 44 0D 00 ; 'rved{CR}{0}'
; Set Basic Links
4251: A2 11 LDX #$11
4253: BD 67 42 LDA $4267,X ; Basic Links for $0300
4256: 9D 00 03 STA $0300,X ; Error Message Link [4D3F]
4259: CA DEX
425A: 10 F7 BPL $4253
425C: A9 78 LDA #$78
425E: 8D FC 02 STA $02FC ; Function Execute Hook [4C78]
4261: A9 4C LDA #$4C
4263: 8D FD 02 STA $02FD
4266: 60 RTS
; Basic Links for $0300
4267: 3F 4D .WORD $4D3F ; Error Message
4269: C6 4D .WORD $4DC6 ; BASIC Warm Start
426B: 0D 43 .WORD $430D ; Crunch BASIC Tokens
426D: 51 51 .WORD $5151 ; Print Tokens
426F: A2 4A .WORD $4AA2 ; Start New BASIC Code
4271: DA 78 .WORD $78DA ; Get Arithmetic Element
4273: 21 43 .WORD $4321 ; Crunch FE
4275: CD 51 .WORD $51CD ; List FE
4277: A9 4B .WORD $4BA9 ; Execute FE
; Chrget for $0380
4279: E6 3D INC $3D ; Textpointer: BASIC work point (chrget)
427B: D0 02 BNE $427F
427D: E6 3E INC $3E
427F: 8D 01 FF STA $FF01
4282: A0 00 LDY #$00
4284: B1 3D LDA ($3D),Y ; Textpointer: BASIC work point (chrget)
4286: 8D 03 FF STA $FF03
4289: C9 3A CMP #$3A
428B: B0 0A BCS $4297
428D: C9 20 CMP #$20
428F: F0 E8 BEQ $4279 ; Chrget for $0380
4291: 38 SEC
4292: E9 30 SBC #$30
4294: 38 SEC
4295: E9 D0 SBC #$D0
4297: 60 RTS
; Fetch From RAM Bank 0 for $039F
4298: 8D A6 03 STA $03A6
429B: 8D 01 FF STA $FF01
429E: B1 00 LDA ($00),Y
42A0: 8D 03 FF STA $FF03
42A3: 60 RTS
; Fetch From RAM Bank 1 for $03AB
42A4: 8D B2 03 STA $03B2
42A7: 8D 02 FF STA $FF02
42AA: B1 00 LDA ($00),Y
42AC: 8D 04 FF STA $FF04
42AF: 60 RTS
; Index1 Indirect Fetch From RAM Bank 1 for $03B7
42B0: 8D 02 FF STA $FF02
42B3: B1 24 LDA ($24),Y
42B5: 8D 04 FF STA $FF04
42B8: 60 RTS
; Index2 Indirect Fetch From RAM Bank 0 for $03C0
42B9: 8D 01 FF STA $FF01
42BC: B1 26 LDA ($26),Y
42BE: 8D 03 FF STA $FF03
42C1: 60 RTS
; Txtptr Fetch From RAM Bank 0 for $03C9
42C2: 8D 01 FF STA $FF01
42C5: B1 3D LDA ($3D),Y ; Textpointer: BASIC work point (chrget)
42C7: 8D 03 FF STA $FF03
42CA: 60 RTS
; Fills $03D2-$03D4 with $00 (Numeric Constant For BASIC?)
42CB: 00 00 00 ; '{0}{0}{0}'
; Get From ($50) Bank1
42CE: A9 50 LDA #$50
42D0: 4C AB 03 JMP $03AB ; Fetch From RAM Bank 1
; Get From ($3f) Bank1
42D3: A9 3F LDA #$3F
42D5: 4C AB 03 JMP $03AB ; Fetch From RAM Bank 1
; Get From ($52) Bank1
42D8: A9 52 LDA #$52
42DA: 4C AB 03 JMP $03AB ; Fetch From RAM Bank 1
; Get From ($5c) Bank0
42DD: A9 5C LDA #$5C
42DF: 4C 9F 03 JMP $039F ; Fetch From RAM Bank 0
; Get From ($5c) Bank1
42E2: A9 5C LDA #$5C
42E4: 4C AB 03 JMP $03AB ; Fetch From RAM Bank 1
; Get From ($66) Bank1
42E7: A9 66 LDA #$66
42E9: 4C AB 03 JMP $03AB ; Fetch From RAM Bank 1
; Get From ($61) Bank0
42EC: A9 61 LDA #$61
42EE: 4C 9F 03 JMP $039F ; Fetch From RAM Bank 0
; Get From ($70) Bank0
42F1: A9 70 LDA #$70
42F3: 4C 9F 03 JMP $039F ; Fetch From RAM Bank 0
; Get From ($70) Bank1
42F6: A9 70 LDA #$70
42F8: 4C AB 03 JMP $03AB ; Fetch From RAM Bank 1
; Get From ($50) Bank1
42FB: A9 50 LDA #$50
42FD: 4C AB 03 JMP $03AB ; Fetch From RAM Bank 1
; Get From ($61) Bank1
4300: A9 61 LDA #$61
4302: 4C AB 03 JMP $03AB ; Fetch From RAM Bank 1
; Get From ($24) Bank0
4305: A9 24 LDA #$24
4307: 4C 9F 03 JMP $039F ; Fetch From RAM Bank 0
; Crunch Tokens
430A: 6C 04 03 JMP ($0304) ; Crunch BASIC Tokens Link [430D]
; Crunch BASIC Tokens
430D: A5 3D LDA $3D ; Textpointer: BASIC work point (chrget)
430F: 48 PHA
4310: A5 3E LDA $3E
4312: 48 PHA
4313: 20 86 03 JSR $0386 ; CHRGOT entry
4316: 4C 1C 43 JMP $431C
4319: 20 80 03 JSR $0380 ; CHRGET
431C: 90 FB BCC $4319
431E: 6C 0C 03 JMP ($030C) ; Crunch FE Hook [4321]
; Crunch FE
4321: B0 03 BCS $4326
4323: 4C B2 43 JMP $43B2
4326: C9 00 CMP #$00
4328: F0 77 BEQ $43A1
432A: C9 3A CMP #$3A
432C: F0 EB BEQ $4319
432E: C9 3F CMP #$3F
4330: D0 04 BNE $4336
4332: A9 99 LDA #$99
4334: D0 50 BNE $4386
4336: C9 80 CMP #$80
4338: 90 0B BCC $4345
433A: C9 FF CMP #$FF
433C: F0 DB BEQ $4319
433E: A0 01 LDY #$01
4340: 20 CC 43 JSR $43CC ; Move Down Input Buffer
4343: F0 CE BEQ $4313
4345: C9 22 CMP #$22
4347: D0 0D BNE $4356
4349: 20 80 03 JSR $0380 ; CHRGET
434C: C9 00 CMP #$00
434E: F0 51 BEQ $43A1
4350: C9 22 CMP #$22
4352: F0 C5 BEQ $4319
4354: D0 F3 BNE $4349
4356: A9 46 LDA #$46
4358: A0 09 LDY #$09
435A: 20 E2 43 JSR $43E2 ; Check Keyword Match
435D: 90 06 BCC $4365
435F: A9 81 LDA #$81
4361: A2 00 LDX #$00
4363: F0 4B BEQ $43B0
4365: A9 46 LDA #$46
4367: A0 C9 LDY #$C9
4369: 20 E2 43 JSR $43E2 ; Check Keyword Match
436C: 90 06 BCC $4374
436E: A9 81 LDA #$81
4370: A2 FF LDX #$FF
4372: D0 3C BNE $43B0
4374: A9 44 LDA #$44
4376: A0 17 LDY #$17
4378: 20 E2 43 JSR $43E2 ; Check Keyword Match
437B: 90 9C BCC $4319
437D: C0 00 CPY #$00
437F: F0 03 BEQ $4384
4381: 20 CC 43 JSR $43CC ; Move Down Input Buffer
4384: A5 0D LDA $0D
4386: A0 00 LDY #$00
4388: 91 3D STA ($3D),Y ; Textpointer: BASIC work point (chrget)
438A: C9 8F CMP #$8F
438C: F0 0D BEQ $439B
438E: C9 83 CMP #$83
4390: D0 87 BNE $4319
4392: 20 80 03 JSR $0380 ; CHRGET
4395: 20 8F 52 JSR $528F ; Perform [data/bend]
4398: 4C 13 43 JMP $4313
439B: 20 80 03 JSR $0380 ; CHRGET
439E: 20 9D 52 JSR $529D ; Perform [rem]
43A1: A6 3D LDX $3D ; Textpointer: BASIC work point (chrget)
43A3: 68 PLA
43A4: 85 3E STA $3E
43A6: 68 PLA
43A7: 85 3D STA $3D ; Textpointer: BASIC work point (chrget)
43A9: 38 SEC
43AA: 8A TXA
43AB: E5 3D SBC $3D ; Textpointer: BASIC work point (chrget)
43AD: A8 TAY
43AE: C8 INY
43AF: 60 RTS
43B0: 65 0D ADC $0D
43B2: 48 PHA
43B3: 88 DEY
43B4: 20 CC 43 JSR $43CC ; Move Down Input Buffer
43B7: A9 FE LDA #$FE
43B9: E8 INX
43BA: D0 02 BNE $43BE
43BC: A9 CE LDA #$CE
43BE: A0 00 LDY #$00
43C0: 91 3D STA ($3D),Y ; Textpointer: BASIC work point (chrget)
43C2: C8 INY
43C3: 68 PLA
43C4: 91 3D STA ($3D),Y ; Textpointer: BASIC work point (chrget)
43C6: 20 80 03 JSR $0380 ; CHRGET
43C9: 4C 19 43 JMP $4319
; Move Down Input Buffer
43CC: 18 CLC
43CD: 98 TYA
43CE: 65 3D ADC $3D ; Textpointer: BASIC work point (chrget)
43D0: 85 24 STA $24
43D2: A5 3E LDA $3E
43D4: 69 00 ADC #$00
43D6: 85 25 STA $25
43D8: A0 FF LDY #$FF
43DA: C8 INY
43DB: B1 24 LDA ($24),Y
43DD: 91 3D STA ($3D),Y ; Textpointer: BASIC work point (chrget)
43DF: D0 F9 BNE $43DA
43E1: 60 RTS
; Check Keyword Match
43E2: 85 25 STA $25
43E4: 84 24 STY $24
43E6: A0 00 LDY #$00
43E8: 84 0D STY $0D
43EA: 88 DEY
43EB: C8 INY
43EC: B1 3D LDA ($3D),Y ; Textpointer: BASIC work point (chrget)
43EE: 38 SEC
43EF: F1 24 SBC ($24),Y
43F1: F0 F8 BEQ $43EB
43F3: C9 80 CMP #$80
43F5: F0 1B BEQ $4412
43F7: B1 24 LDA ($24),Y
43F9: 30 03 BMI $43FE
43FB: C8 INY
43FC: D0 F9 BNE $43F7
43FE: C8 INY
43FF: E6 0D INC $0D
4401: 18 CLC
4402: 98 TYA
4403: 65 24 ADC $24
4405: 85 24 STA $24
4407: 90 02 BCC $440B
4409: E6 25 INC $25
440B: 18 CLC
440C: A0 00 LDY #$00
440E: B1 24 LDA ($24),Y
4410: D0 DA BNE $43EC
4412: 05 0D ORA $0D
4414: 85 0D STA $0D
4416: 60 RTS
; Keywords - Non prefixed
4417: 45 4E C4 46 4F D2 4E 45 ; 'enDfoRne'
441F: 58 D4 44 41 54 C1 49 4E ; 'xTdatAin'
4427: 50 55 54 A3 49 4E 50 55 ; 'put.inpu'
442F: D4 44 49 CD 52 45 41 C4 ; 'TdiMreaD'
4437: 4C 45 D4 47 4F 54 CF 52 ; 'leTgotOr'
443F: 55 CE 49 C6 52 45 53 54 ; 'uNiFrest'
4447: 4F 52 C5 47 4F 53 55 C2 ; 'orEgosuB'
444F: 52 45 54 55 52 CE 52 45 ; 'returNre'
4457: CD 53 54 4F D0 4F CE 57 ; 'MstoPoNw'
445F: 41 49 D4 4C 4F 41 C4 53 ; 'aiTloaDs'
4467: 41 56 C5 56 45 52 49 46 ; 'avEverif'
446F: D9 44 45 C6 50 4F 4B C5 ; 'YdeFpokE'
4477: 50 52 49 4E 54 A3 50 52 ; 'print.pr'
447F: 49 4E D4 43 4F 4E D4 4C ; 'inTconTl'
4487: 49 53 D4 43 4C D2 43 4D ; 'isTclRcm'
448F: C4 53 59 D3 4F 50 45 CE ; 'DsySopeN'
4497: 43 4C 4F 53 C5 47 45 D4 ; 'closEgeT'
449F: 4E 45 D7 54 41 42 A8 54 ; 'neWtab.t'
44A7: CF 46 CE 53 50 43 A8 54 ; 'OfNspc.t'
44AF: 48 45 CE 4E 4F D4 53 54 ; 'heNnoTst'
44B7: 45 D0 AB AD AA AF DE 41 ; 'eP.....a'
44BF: 4E C4 4F D2 BE BD BC 53 ; 'nDoR...s'
44C7: 47 CE 49 4E D4 41 42 D3 ; 'gNinTabS'
44CF: 55 53 D2 46 52 C5 50 4F ; 'usRfrEpo'
44D7: D3 53 51 D2 52 4E C4 4C ; 'SsqRrnDl'
44DF: 4F C7 45 58 D0 43 4F D3 ; 'oGexPcoS'
44E7: 53 49 CE 54 41 CE 41 54 ; 'siNtaNat'
44EF: CE 50 45 45 CB 4C 45 CE ; 'NpeeKleN'
44F7: 53 54 52 A4 56 41 CC 41 ; 'str.vaLa'
44FF: 53 C3 43 48 52 A4 4C 45 ; 'sCchr.le'
4507: 46 54 A4 52 49 47 48 54 ; 'ft.right'
450F: A4 4D 49 44 A4 47 CF 52 ; '.mid.gOr'
4517: 47 D2 52 43 4C D2 80 4A ; 'gRrclR.j'
451F: 4F D9 52 44 4F D4 44 45 ; 'oYrdoTde'
4527: C3 48 45 58 A4 45 52 52 ; 'Chex.err'
452F: A4 49 4E 53 54 D2 45 4C ; '.instRel'
4537: 53 C5 52 45 53 55 4D C5 ; 'sEresumE'
453F: 54 52 41 D0 54 52 4F CE ; 'traPtroN'
4547: 54 52 4F 46 C6 53 4F 55 ; 'trofFsou'
454F: 4E C4 56 4F CC 41 55 54 ; 'nDvoLaut'
4557: CF 50 55 44 45 C6 47 52 ; 'OpudeFgr'
455F: 41 50 48 49 C3 50 41 49 ; 'aphiCpai'
4567: 4E D4 43 48 41 D2 42 4F ; 'nTchaRbo'
456F: D8 43 49 52 43 4C C5 47 ; 'XcirclEg'
4577: 53 48 41 50 C5 53 53 48 ; 'shapEssh'
457F: 41 50 C5 44 52 41 D7 4C ; 'apEdraWl'
4587: 4F 43 41 54 C5 43 4F 4C ; 'ocatEcol'
458F: 4F D2 53 43 4E 43 4C D2 ; 'oRscnclR'
4597: 53 43 41 4C C5 48 45 4C ; 'scalEhel'
459F: D0 44 CF 4C 4F 4F D0 45 ; 'PdOlooPe'
45A7: 58 49 D4 44 49 52 45 43 ; 'xiTdirec'
45AF: 54 4F 52 D9 44 53 41 56 ; 'torYdsav'
45B7: C5 44 4C 4F 41 C4 48 45 ; 'EdloaDhe'
45BF: 41 44 45 D2 53 43 52 41 ; 'adeRscra'
45C7: 54 43 C8 43 4F 4C 4C 45 ; 'tcHcolle'
45CF: 43 D4 43 4F 50 D9 52 45 ; 'cTcopYre'
45D7: 4E 41 4D C5 42 41 43 4B ; 'namEback'
45DF: 55 D0 44 45 4C 45 54 C5 ; 'uPdeletE'
45E7: 52 45 4E 55 4D 42 45 D2 ; 'renumbeR'
45EF: 4B 45 D9 4D 4F 4E 49 54 ; 'keYmonit'
45F7: 4F D2 55 53 49 4E C7 55 ; 'oRusinGu'
45FF: 4E 54 49 CC 57 48 49 4C ; 'ntiLwhil'
4607: C5 00 ; 'E{0}'
; Keywords - Prefix FE
4609: 42 41 4E CB 46 49 4C 54 ; 'banKfilt'
4611: 45 D2 50 4C 41 D9 54 45 ; 'eRplaYte'
4619: 4D 50 CF 4D 4F 56 53 50 ; 'mpOmovsp'
4621: D2 53 50 52 49 54 C5 53 ; 'RspritEs'
4629: 50 52 43 4F 4C 4F D2 52 ; 'prcoloRr'
4631: 52 45 C7 45 4E 56 45 4C ; 'reGenvel'
4639: 4F 50 C5 53 4C 45 45 D0 ; 'opEsleeP'
4641: 43 41 54 41 4C 4F C7 44 ; 'cataloGd'
4649: 4F 50 45 CE 41 50 50 45 ; 'opeNappe'
4651: 4E C4 44 43 4C 4F 53 C5 ; 'nDdclosE'
4659: 42 53 41 56 C5 42 4C 4F ; 'bsavEblo'
4661: 41 C4 52 45 43 4F 52 C4 ; 'aDrecorD'
4669: 43 4F 4E 43 41 D4 44 56 ; 'concaTdv'
4671: 45 52 49 46 D9 44 43 4C ; 'erifYdcl'
4679: 45 41 D2 53 50 52 53 41 ; 'eaRsprsa'
4681: D6 43 4F 4C 4C 49 53 49 ; 'Vcollisi'
4689: 4F CE 42 45 47 49 CE 42 ; 'oNbegiNb'
4691: 45 4E C4 57 49 4E 44 4F ; 'enDwindo'
4699: D7 42 4F 4F D4 57 49 44 ; 'WbooTwid'
46A1: 54 C8 53 50 52 44 45 C6 ; 'tHsprdeF'
46A9: 51 55 49 D4 53 54 41 53 ; 'quiTstas'
46B1: C8 A0 46 45 54 43 C8 A0 ; 'H.fetcH.'
46B9: 53 57 41 D0 4F 46 C6 46 ; 'swaPofFf'
46C1: 41 53 D4 53 4C 4F D7 00 ; 'asTsloW{0}'
; Keywords - Prefix CE
46C9: 50 4F D4 42 55 4D D0 50 ; 'poTbumPp'
46D1: 45 CE 52 53 50 50 4F D3 ; 'eNrsppoS'
46D9: 52 53 50 52 49 54 C5 52 ; 'rspritEr'
46E1: 53 50 43 4F 4C 4F D2 58 ; 'spcoloRx'
46E9: 4F D2 52 57 49 4E 44 4F ; 'oRrwindo'
46F1: D7 50 4F 49 4E 54 45 D2 ; 'WpointeR'
46F9: 00 ; '{0}'
; Unused
46FA: 00 00 ; '{0}{0}'
; Action Vectors
46FC: CC 4B .WORD $4BCD-1 ; Perform [end]
46FE: F8 5D .WORD $5DF9-1 ; Perform [for]
4700: F3 57 .WORD $57F4-1 ; Perform [next]
4702: 8E 52 .WORD $528F-1 ; Perform [data/bend]
4704: 47 56 .WORD $5648-1 ; Perform [input#]
4706: 61 56 .WORD $5662-1 ; Perform [input]
4708: 7A 58 .WORD $587B-1 ; Perform [dim]
470A: A8 56 .WORD $56A9-1 ; Perform [read]
470C: C5 53 .WORD $53C6-1 ; Perform [let]
470E: DA 59 .WORD $59DB-1 ; Perform [goto]
4710: 9A 5A .WORD $5A9B-1 ; Perform [run]
4712: C4 52 .WORD $52C5-1 ; Perform [if]
4714: C9 5A .WORD $5ACA-1 ; Perform [restore]
4716: CE 59 .WORD $59CF-1 ; Perform [gosub]
4718: 61 52 .WORD $5262-1 ; Perform [return]
471A: 9C 52 .WORD $529D-1 ; Perform [rem]
471C: CA 4B .WORD $4BCB-1 ; Perform [stop]
471E: A2 53 .WORD $53A3-1 ; Perform [on]
4720: 2C 6C .WORD $6C2D-1 ; Perform [wait]
4722: 2B 91 .WORD $912C-1 ; Perform [load]
4724: 11 91 .WORD $9112-1 ; Perform [save]
4726: 28 91 .WORD $9129-1 ; Perform [verify]
4728: F9 84 .WORD $84FA-1 ; Perform [def]
472A: E4 80 .WORD $80E5-1 ; Perform [poke]
472C: 39 55 .WORD $553A-1 ; Perform [print#]
472E: 59 55 .WORD $555A-1 ; Perform [print]
4730: 5F 5A .WORD $5A60-1 ; Perform [cont]
4732: E1 50 .WORD $50E2-1 ; Perform [list]
4734: F7 51 .WORD $51F8-1 ; Perform [clr]
4736: 3F 55 .WORD $5540-1 ; Perform [cmd]
4738: 84 58 .WORD $5885-1 ; Perform [sys]
473A: 8C 91 .WORD $918D-1 ; Perform [open]
473C: 99 91 .WORD $919A-1 ; Perform [close]
473E: 11 56 .WORD $5612-1 ; Perform [get]
4740: D5 51 .WORD $51D6-1 ; Perform [new]
4742: 90 53 .WORD $5391-1 ; Perform [else]
4744: 61 5F .WORD $5F62-1 ; Perform [resume]
4746: 4C 5F .WORD $5F4D-1 ; Perform [trap]
4748: B3 58 .WORD $58B4-1 ; Perform [tron]
474A: B6 58 .WORD $58B7-1 ; Perform [troff]
474C: EB 71 .WORD $71EC-1 ; Perform [sound]
474E: C4 71 .WORD $71C5-1 ; Perform [vol]
4750: 74 59 .WORD $5975-1 ; Perform [auto]
4752: 33 5F .WORD $5F34-1 ; Perform [pudef]
4754: 59 6B .WORD $6B5A-1 ; Perform [graphic]
4756: A7 61 .WORD $61A8-1 ; Perform [paint]
4758: D6 67 .WORD $67D7-1 ; Perform [char]
475A: B6 62 .WORD $62B7-1 ; Perform [box]
475C: 8D 66 .WORD $668E-1 ; Perform [circle]
475E: 8C 65 .WORD $658D-1 ; Perform [gshape]
4760: 2A 64 .WORD $642B-1 ; Perform [sshape]
4762: 96 67 .WORD $6797-1 ; Perform [draw]
4764: 54 69 .WORD $6955-1 ; Perform [locate]
4766: E1 69 .WORD $69E2-1 ; Perform [color]
4768: 78 6A .WORD $6A79-1 ; Perform [scnclr]
476A: 5F 69 .WORD $6960-1 ; Perform [scale]
476C: 85 59 .WORD $5986-1 ; Perform [help]
476E: DF 5F .WORD $5FE0-1 ; Perform [do]
4770: 89 60 .WORD $608A-1 ; Perform [loop]
4772: 38 60 .WORD $6039-1 ; Perform [exit]
4774: 7D A0 .WORD $A07E-1 ; Perform [catalog/directory]
4776: 8B A1 .WORD $A18C-1 ; Perform [dsave]
4778: A6 A1 .WORD $A1A7-1 ; Perform [dload]
477A: 66 A2 .WORD $A267-1 ; Perform [header]
477C: A0 A2 .WORD $A2A1-1 ; Perform [scratch]
477E: 2E A3 .WORD $A32F-1 ; Perform [collect]
4780: 45 A3 .WORD $A346-1 ; Perform [copy]
4782: 6D A3 .WORD $A36E-1 ; Perform [rename]
4784: 7B A3 .WORD $A37C-1 ; Perform [backup]
4786: 86 5E .WORD $5E87-1 ; Perform [delete]
4788: F7 5A .WORD $5AF8-1 ; Perform [renumber]
478A: 09 61 .WORD $610A-1 ; Perform [key]
478C: FF AF .WORD $B000-1 ; Perform [monitor]
478E: C8 6B .WORD $6BC9-1 ; Perform [bank]
4790: 45 70 .WORD $7046-1 ; Perform [filter]
4792: E0 6D .WORD $6DE1-1 ; Perform [play]
4794: D6 6F .WORD $6FD7-1 ; Perform [tempo]
4796: C5 6C .WORD $6CC6-1 ; Perform [movspr]
4798: 4E 6C .WORD $6C4F-1 ; Perform [sprite]
479A: 8F 71 .WORD $7190-1 ; Perform [sprcolor]
479C: BC 58 .WORD $58BD-1 ; Perform [rreg]
479E: C0 70 .WORD $70C1-1 ; Perform [envelope]
47A0: D6 6B .WORD $6BD7-1 ; Perform [sleep]
47A2: 7D A0 .WORD $A07E-1 ; Perform [catalog/directory]
47A4: 1C A1 .WORD $A11D-1 ; Perform [dopen]
47A6: 33 A1 .WORD $A134-1 ; Perform [append]
47A8: 6E A1 .WORD $A16F-1 ; Perform [dclose]
47AA: C7 A1 .WORD $A1C8-1 ; Perform [bsave]
47AC: 17 A2 .WORD $A218-1 ; Perform [bload]
47AE: D6 A2 .WORD $A2D7-1 ; Perform [record]
47B0: 61 A3 .WORD $A362-1 ; Perform [concat]
47B2: A3 A1 .WORD $A1A4-1 ; Perform [dverify]
47B4: 21 A3 .WORD $A322-1 ; Perform [dclear]
47B6: EB 76 .WORD $76EC-1 ; Perform [sprsav]
47B8: 63 71 .WORD $7164-1 ; Perform [collision]
47BA: 6B 79 .WORD $796C-1 ; Syntax Error
47BC: 8E 52 .WORD $528F-1 ; Perform [data/bend]
47BE: CB 72 .WORD $72CC-1 ; Perform [window]
47C0: 34 73 .WORD $7335-1 ; Perform [boot]
47C2: B5 71 .WORD $71B6-1 ; Perform [width]
47C4: 71 73 .WORD $7372-1 ; Perform [sprdef]
47C6: 45 48 .WORD $4846-1 ; Unimplemented Commands
47C8: 1E AA .WORD $AA1F-1 ; Perform [stash]
47CA: 00 00 .WORD $0000 ; Unused
47CC: 23 AA .WORD $AA24-1 ; Perform [fetch]
47CE: 00 00 .WORD $0000 ; Unused
47D0: 28 AA .WORD $AA29-1 ; Perform [swap]
47D2: 45 48 .WORD $4846-1 ; Unimplemented Commands
47D4: B2 77 .WORD $77B3-1 ; Perform [fast]
47D6: C3 77 .WORD $77C4-1 ; Perform [slow]
; Function Vectors
47D8: 65 8C .WORD $8C65 ; Evaluate <sgn>
47DA: FB 8C .WORD $8CFB ; Evaluate <int>
47DC: 84 8C .WORD $8C84 ; Evaluate <abs>
47DE: 18 12 .WORD $1218 ; USR Program Jump [7D28]
47E0: 00 80 .WORD $8000 ; Evaluate <fre>
47E2: D0 84 .WORD $84D0 ; Evaluate <pos>
47E4: B7 8F .WORD $8FB7 ; Evaluate <sqr>
47E6: 34 84 .WORD $8434 ; Evaluate <rnd>
47E8: CA 89 .WORD $89CA ; Evaluate <log>
47EA: 33 90 .WORD $9033 ; Evaluate <exp>
47EC: 09 94 .WORD $9409 ; Evaluate <cos>
47EE: 10 94 .WORD $9410 ; Evaluate <sin>
47F0: 59 94 .WORD $9459 ; Evaluate <tan>
47F2: B3 94 .WORD $94B3 ; Evaluate <atn>
47F4: C5 80 .WORD $80C5 ; Evaluate <peek>
47F6: 68 86 .WORD $8668 ; Evaluate <len>
47F8: AE 85 .WORD $85AE ; Evaluate <str$>
47FA: 4A 80 .WORD $804A ; Evaluate <val>
47FC: 77 86 .WORD $8677 ; Evaluate <asc>
47FE: BF 85 .WORD $85BF ; Evaluate <chr$>
4800: D6 85 .WORD $85D6 ; Evaluate <left$>
4802: 0A 86 .WORD $860A ; Evaluate <right$>
4804: 1C 86 .WORD $861C ; Evaluate <mid$>
4806: 82 81 .WORD $8182 ; Evaluate <rgr>
4808: 9B 81 .WORD $819B ; Evaluate <rclr>
480A: 00 00 .WORD $0000 ; $CE prefix
480C: 03 82 .WORD $8203 ; Evaluate <joy>
480E: 0C 9B .WORD $9B0C ; Evaluate <rdot>
4810: 76 80 .WORD $8076 ; Evaluate <dec>
4812: 42 81 .WORD $8142 ; Evaluate <hex$>
4814: F6 80 .WORD $80F6 ; Evaluate <err$>
4816: 4D 82 .WORD $824D ; Evaluate <pot>
4818: 7C 83 .WORD $837C ; Evaluate <bump>
481A: AE 82 .WORD $82AE ; Evaluate <pen>
481C: 97 83 .WORD $8397 ; Evaluate <rspos>
481E: 1E 83 .WORD $831E ; Evaluate <rsprite>
4820: 61 83 .WORD $8361 ; Evaluate <rspcolor>
4822: E1 83 .WORD $83E1 ; Evaluate <xor>
4824: 07 84 .WORD $8407 ; Evaluate <rwindow>
4826: FA 82 .WORD $82FA ; Evaluate <pointer>
; Defunct Vectors
4828: 79 47 88 .BYTE $79,<($8848-1),>($8848-1) ; Evaluate <add>
482B: 79 30 88 .BYTE $79,<($8831-1),>($8831-1) ; Evaluate <subtract>
482E: 7B 26 8A .BYTE $7B,<($8A27-1),>($8A27-1) ; Evaluate <multiply>
4831: 7B 4B 8B .BYTE $7B,<($8B4C-1),>($8B4C-1) ; Evaluate <divide>
4834: 7F C0 8F .BYTE $7F,<($8FC1-1),>($8FC1-1) ; Evaluate <power>
4837: 50 88 4C .BYTE $50,<($4C89-1),>($4C89-1) ; Evaluate <and>
483A: 46 85 4C .BYTE $46,<($4C86-1),>($4C86-1) ; Evaluate <or>
483D: 7D F9 8F .BYTE $7D,<($8FFA-1),>($8FFA-1) ; Evaluate <negate>
4840: 5A 2F 79 .BYTE $5A,<($7930-1),>($7930-1) ; Evaluate <equal>
4843: 64 B5 4C .BYTE $64,<($4CB6-1),>($4CB6-1) ; Evaluate <compare>
; Unimplemented Commands
4846: A2 28 LDX #$28
4848: 4C 3C 4D JMP $4D3C ; Error
; Error Messages
484B: 54 4F 4F 20 4D 41 4E 59 ; 'too many' ; 0: too many files
4853: 20 46 49 4C 45 D3 46 49 ; ' fileSfi' ; 1: file open
485B: 4C 45 20 4F 50 45 CE 46 ; 'le opeNf' ; 2: file not open
4863: 49 4C 45 20 4E 4F 54 20 ; 'ile not '
486B: 4F 50 45 CE 46 49 4C 45 ; 'opeNfile' ; 3: file not found
4873: 20 4E 4F 54 20 46 4F 55 ; ' not fou'
487B: 4E C4 44 45 56 49 43 45 ; 'nDdevice' ; 4: device not present
4883: 20 4E 4F 54 20 50 52 45 ; ' not pre'
488B: 53 45 4E D4 4E 4F 54 20 ; 'senTnot ' ; 5: not input file
4893: 49 4E 50 55 54 20 46 49 ; 'input fi'
489B: 4C C5 4E 4F 54 20 4F 55 ; 'lEnot ou' ; 6: not output file
48A3: 54 50 55 54 20 46 49 4C ; 'tput fil'
48AB: C5 4D 49 53 53 49 4E 47 ; 'Emissing' ; 7: missing filename
48B3: 20 46 49 4C 45 20 4E 41 ; ' file na'
48BB: 4D C5 49 4C 4C 45 47 41 ; 'mEillega' ; 8: illegal device
48C3: 4C 20 44 45 56 49 43 45 ; 'l device'
48CB: 20 4E 55 4D 42 45 D2 4E ; ' numbeRn' ; 9: next without for
48D3: 45 58 54 20 57 49 54 48 ; 'ext with'
48DB: 4F 55 54 20 46 4F D2 53 ; 'out foRs' ; 0A: syntax
48E3: 59 4E 54 41 D8 52 45 54 ; 'yntaXret' ; 0B: return without gosub
48EB: 55 52 4E 20 57 49 54 48 ; 'urn with'
48F3: 4F 55 54 20 47 4F 53 55 ; 'out gosu'
48FB: C2 4F 55 54 20 4F 46 20 ; 'Bout of ' ; 0C: out of data
4903: 44 41 54 C1 49 4C 4C 45 ; 'datAille' ; 0D: illegal quantity
490B: 47 41 4C 20 51 55 41 4E ; 'gal quan'
4913: 54 49 54 D9 4F 56 45 52 ; 'titYover' ; 0E overflow
491B: 46 4C 4F D7 4F 55 54 20 ; 'floWout ' ; 0F out of memory
4923: 4F 46 20 4D 45 4D 4F 52 ; 'of memor'
492B: D9 55 4E 44 45 46 27 44 ; 'Yundef'd' ; 10 undef'd statement
4933: 20 53 54 41 54 45 4D 45 ; ' stateme'
493B: 4E D4 42 41 44 20 53 55 ; 'nTbad su' ; 11 bad subscript
4943: 42 53 43 52 49 50 D4 52 ; 'bscripTr' ; 12 redim'd array
494B: 45 44 49 4D 27 44 20 41 ; 'edim'd a'
4953: 52 52 41 D9 44 49 56 49 ; 'rraYdivi' ; 13 division by zero
495B: 53 49 4F 4E 20 42 59 20 ; 'sion by '
4963: 5A 45 52 CF 49 4C 4C 45 ; 'zerOille' ; 14 illegal direct
496B: 47 41 4C 20 44 49 52 45 ; 'gal dire'
4973: 43 D4 54 59 50 45 20 4D ; 'cTtype m' ; 15 type mismatch
497B: 49 53 4D 41 54 43 C8 53 ; 'ismatcHs' ; 16 string to long
4983: 54 52 49 4E 47 20 54 4F ; 'tring to'
498B: 4F 20 4C 4F 4E C7 46 49 ; 'o lonGfi' ; 17 file data
4993: 4C 45 20 44 41 54 C1 46 ; 'le datAf' ; 18 formula to complex
499B: 4F 52 4D 55 4C 41 20 54 ; 'ormula t'
49A3: 4F 4F 20 43 4F 4D 50 4C ; 'oo compl'
49AB: 45 D8 43 41 4E 27 54 20 ; 'eXcan't ' ; 1A can't continue
49B3: 43 4F 4E 54 49 4E 55 C5 ; 'continuE'
49BB: 55 4E 44 45 46 27 44 20 ; 'undef'd ' ; 1B undef'd function
49C3: 46 55 4E 43 54 49 4F CE ; 'functioN'
49CB: 56 45 52 49 46 D9 4C 4F ; 'verifYlo' ; 1C verify
49D3: 41 C4 42 52 45 41 4B 00 ; 'aDbreak{0}' ; 1D load
49DB: A0 43 41 4E 27 54 20 52 ; '.can't r' ; 1E break
49E3: 45 53 55 4D C5 4C 4F 4F ; 'esumEloo' ; 1F cant't resume
49EB: 50 20 4E 4F 54 20 46 4F ; 'p not fo' ; 20 loop not found
49F3: 55 4E C4 4C 4F 4F 50 20 ; 'unDloop ' ; 21 loop without do
49FB: 57 49 54 48 4F 55 54 20 ; 'without '
4A03: 44 CF 44 49 52 45 43 54 ; 'dOdirect' ; 22 direct mode only
4A0B: 20 4D 4F 44 45 20 4F 4E ; ' mode on'
4A13: 4C D9 4E 4F 20 47 52 41 ; 'lYno gra' ; 23 no graphics area
4A1B: 50 48 49 43 53 20 41 52 ; 'phics ar'
4A23: 45 C1 42 41 44 20 44 49 ; 'eAbad di' ; 24 bad disk
4A2B: 53 CB 42 45 4E 44 20 4E ; 'sKbend n' ; 25 bend not found
4A33: 4F 54 20 46 4F 55 4E C4 ; 'ot founD'
4A3B: 4C 49 4E 45 20 4E 55 4D ; 'line num' ; 26 line number too large
4A43: 42 45 52 20 54 4F 4F 20 ; 'ber too '
4A4B: 4C 41 52 47 C5 55 4E 52 ; 'largEunr' ; 27 unresolved reference
4A53: 45 53 4F 4C 56 45 44 20 ; 'esolved '
4A5B: 52 45 46 45 52 45 4E 43 ; 'referenc'
4A63: C5 55 4E 49 4D 50 4C 45 ; 'Eunimple' ; 28 unimplemented command
4A6B: 4D 45 4E 54 45 44 20 43 ; 'mented c'
4A73: 4F 4D 4D 41 4E C4 46 49 ; 'ommanDfi' ; 29 file read
4A7B: 4C 45 20 52 45 41 C4 ; 'le reaD'
; Find Message
4A82: AA TAX
4A83: A0 00 LDY #$00
4A85: A9 4B LDA #$4B
4A87: 85 26 STA $26
4A89: A9 48 LDA #$48
4A8B: 85 27 STA $27
4A8D: CA DEX
4A8E: 30 0E BMI $4A9E
4A90: B1 26 LDA ($26),Y
4A92: 48 PHA
4A93: E6 26 INC $26
4A95: D0 02 BNE $4A99
4A97: E6 27 INC $27
4A99: 68 PLA
4A9A: 10 F4 BPL $4A90
4A9C: 30 EF BMI $4A8D
4A9E: 60 RTS
; Start New Basic Code
4A9F: 6C 08 03 JMP ($0308) ; Start New BASIC Code Link [4AA2]
; Start New BASIC Code
4AA2: 24 7F BIT $7F
4AA4: 10 4A BPL $4AF0
4AA6: AD 7F 12 LDA $127F ; Collision Mask
4AA9: 30 45 BMI $4AF0
4AAB: A2 02 LDX #$02
4AAD: BD 76 12 LDA $1276,X ; Collision IRQ Task Table
4AB0: F0 3B BEQ $4AED
4AB2: A9 00 LDA #$00
4AB4: 9D 76 12 STA $1276,X ; Collision IRQ Task Table
4AB7: BD 79 12 LDA $1279,X ; Collision IRQ Address Tables
4ABA: 85 16 STA $16
4ABC: BD 7C 12 LDA $127C,X
4ABF: 85 17 STA $17
4AC1: 8A TXA
4AC2: 48 PHA
4AC3: A5 3D LDA $3D ; Textpointer: BASIC work point (chrget)
4AC5: 48 PHA
4AC6: A5 3E LDA $3E
4AC8: 48 PHA
4AC9: AD 7F 12 LDA $127F ; Collision Mask
4ACC: 09 80 ORA #$80
4ACE: 8D 7F 12 STA $127F ; Collision Mask
4AD1: 20 80 03 JSR $0380 ; CHRGET
4AD4: 20 1D 5A JSR $5A1D ; Put Sub To B-Stack
4AD7: 20 E2 59 JSR $59E2
4ADA: 20 F6 4A JSR $4AF6
4ADD: AD 7F 12 LDA $127F ; Collision Mask
4AE0: 29 7F AND #$7F
4AE2: 8D 7F 12 STA $127F ; Collision Mask
4AE5: 68 PLA
4AE6: 85 3E STA $3E
4AE8: 68 PLA
4AE9: 85 3D STA $3D ; Textpointer: BASIC work point (chrget)
4AEB: 68 PLA
4AEC: AA TAX
4AED: CA DEX
4AEE: 10 BD BPL $4AAD
4AF0: 20 80 03 JSR $0380 ; CHRGET
4AF3: 20 3F 4B JSR $4B3F ; Execute/Trace Statement
4AF6: 20 B5 4B JSR $4BB5 ; ?
4AF9: 24 7F BIT $7F
4AFB: 10 06 BPL $4B03
4AFD: 20 34 4B JSR $4B34 ; Update Continue Pointer
4B00: BA TSX
4B01: 86 82 STX $82
4B03: A0 00 LDY #$00
4B05: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
4B08: F0 03 BEQ $4B0D
4B0A: 4C AE 4B JMP $4BAE
4B0D: 24 7F BIT $7F
4B0F: 10 20 BPL $4B31
4B11: A0 02 LDY #$02
4B13: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
4B16: F0 19 BEQ $4B31
4B18: C8 INY
4B19: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
4B1C: 85 3B STA $3B
4B1E: C8 INY
4B1F: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
4B22: 85 3C STA $3C
4B24: 98 TYA
4B25: 18 CLC
4B26: 65 3D ADC $3D ; Textpointer: BASIC work point (chrget)
4B28: 85 3D STA $3D ; Textpointer: BASIC work point (chrget)
4B2A: 90 02 BCC $4B2E
4B2C: E6 3E INC $3E
4B2E: 4C 9F 4A JMP $4A9F ; Start New Basic Code
4B31: 4C 37 4D JMP $4D37 ; Error or Ready
; Update Continue Pointer
4B34: A5 3D LDA $3D ; Textpointer: BASIC work point (chrget)
4B36: A4 3E LDY $3E
4B38: 8D 02 12 STA $1202
4B3B: 8C 03 12 STY $1203
4B3E: 60 RTS
; Execute/Trace Statement
4B3F: F0 FD BEQ $4B3E
4B41: 2C 6F 11 BIT $116F ; Trace Mode: FF = on
4B44: 10 13 BPL $4B59
4B46: 24 7F BIT $7F
4B48: 10 0F BPL $4B59
4B4A: 48 PHA
4B4B: A9 5B LDA #$5B
4B4D: 20 0C 56 JSR $560C
4B50: 20 2E 8E JSR $8E2E
4B53: A9 5D LDA #$5D
4B55: 20 0C 56 JSR $560C
4B58: 68 PLA
4B59: C9 FE CMP #$FE
4B5B: F0 37 BEQ $4B94
4B5D: C9 CB CMP #$CB
4B5F: D0 03 BNE $4B64
4B61: 4C 3D 5A JMP $5A3D ; Perform [go]
4B64: C9 CA CMP #$CA
4B66: F0 23 BEQ $4B8B
4B68: C9 FB CMP #$FB
4B6A: B0 3F BCS $4BAB
4B6C: C9 A3 CMP #$A3
4B6E: 90 06 BCC $4B76
4B70: C9 D5 CMP #$D5
4B72: 90 37 BCC $4BAB
4B74: E9 32 SBC #$32
4B76: 38 SEC
4B77: E9 80 SBC #$80
4B79: B0 03 BCS $4B7E
4B7B: 4C C6 53 JMP $53C6 ; Perform [let]
4B7E: 0A ASL A
4B7F: A8 TAY
4B80: B9 FD 46 LDA $46FD,Y
4B83: 48 PHA
4B84: B9 FC 46 LDA $46FC,Y ; Action Vectors
4B87: 48 PHA
4B88: 4C 80 03 JMP $0380 ; CHRGET
4B8B: A9 59 LDA #$59
4B8D: 48 PHA
4B8E: A9 00 LDA #$00
4B90: 48 PHA
4B91: 4C 80 03 JMP $0380 ; CHRGET
4B94: 20 80 03 JSR $0380 ; CHRGET
4B97: F0 12 BEQ $4BAB
4B99: C9 02 CMP #$02
4B9B: 90 08 BCC $4BA5
4B9D: C9 27 CMP #$27
4B9F: B0 04 BCS $4BA5
4BA1: 69 47 ADC #$47
4BA3: D0 D9 BNE $4B7E
4BA5: 38 SEC
4BA6: 6C 10 03 JMP ($0310) ; Execute FE Hook [4BA9]
; Execute FE
4BA9: 90 E6 BCC $4B91
4BAB: 4C 6C 79 JMP $796C ; Syntax Error
4BAE: C9 3A CMP #$3A
4BB0: D0 F9 BNE $4BAB
4BB2: 4C 9F 4A JMP $4A9F ; Start New Basic Code
; ?
4BB5: 20 93 92 JSR $9293 ; Call 'test stop'
4BB8: F0 01 BEQ $4BBB
4BBA: 60 RTS
4BBB: AC 0C 12 LDY $120C
4BBE: C8 INY
4BBF: F0 0F BEQ $4BD0
4BC1: 20 93 92 JSR $9293 ; Call 'test stop'
4BC4: F0 FB BEQ $4BC1
4BC6: A2 1E LDX #$1E
4BC8: 4C 3C 4D JMP $4D3C ; Error
; Perform [stop]
4BCB: B0 01 BCS $4BCE
; Perform [end]
4BCD: 18 CLC
4BCE: D0 26 BNE $4BF6
4BD0: 24 7F BIT $7F
4BD2: 10 0D BPL $4BE1
4BD4: 20 34 4B JSR $4B34 ; Update Continue Pointer
4BD7: A5 3B LDA $3B
4BD9: A4 3C LDY $3C
4BDB: 8D 00 12 STA $1200
4BDE: 8C 01 12 STY $1201
4BE1: 68 PLA
4BE2: 68 PLA
4BE3: 90 0E BCC $4BF3
4BE5: 20 81 92 JSR $9281 ; Print Following Text
4BE8: 0D 0A 42 52 45 41 4B 00 ; '{CR}{LF}break{0}'
4BF0: 4C AF 4D JMP $4DAF ; Break Entry
4BF3: 4C 37 4D JMP $4D37 ; Error or Ready
4BF6: 60 RTS
; Setup FN Reference
4BF7: C9 CE CMP #$CE
4BF9: F0 59 BEQ $4C54
4BFB: C9 D5 CMP #$D5
4BFD: B0 AC BCS $4BAB
4BFF: C9 CB CMP #$CB
4C01: 90 02 BCC $4C05
4C03: E9 01 SBC #$01
4C05: 48 PHA
4C06: AA TAX
4C07: 20 80 03 JSR $0380 ; CHRGET
4C0A: E0 D3 CPX #$D3
4C0C: F0 08 BEQ $4C16
4C0E: E0 CB CPX #$CB
4C10: B0 29 BCS $4C3B
4C12: E0 C8 CPX #$C8
4C14: 90 25 BCC $4C3B
4C16: 20 59 79 JSR $7959 ; -Check Left Parenthesis
4C19: 20 EF 77 JSR $77EF ; Evaluate Expression
4C1C: 20 5C 79 JSR $795C ; -Check Comma
4C1F: 20 DD 77 JSR $77DD ; Confirm String
4C22: 68 PLA
4C23: C9 D3 CMP #$D3
4C25: F0 59 BEQ $4C80
4C27: AA TAX
4C28: A5 67 LDA $67
4C2A: 48 PHA
4C2B: A5 66 LDA $66
4C2D: 48 PHA
4C2E: 8A TXA
4C2F: 48 PHA
4C30: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
4C33: 68 PLA
4C34: A8 TAY
4C35: 8A TXA
4C36: 48 PHA
4C37: 98 TYA
4C38: 4C 3F 4C JMP $4C3F
4C3B: 20 50 79 JSR $7950 ; Eval Within Parens
4C3E: 68 PLA
4C3F: 38 SEC
4C40: E9 B4 SBC #$B4
4C42: 0A ASL A
4C43: A8 TAY
4C44: B9 D9 47 LDA $47D9,Y
4C47: 85 58 STA $58
4C49: B9 D8 47 LDA $47D8,Y ; Function Vectors
4C4C: 85 57 STA $57
4C4E: 20 56 00 JSR $56
4C51: 4C DA 77 JMP $77DA ; Confirm Numeric
4C54: 20 80 03 JSR $0380 ; CHRGET
4C57: F0 2A BEQ $4C83
4C59: C9 0A CMP #$0A
4C5B: F0 0B BEQ $4C68
4C5D: 48 PHA
4C5E: 20 80 03 JSR $0380 ; CHRGET
4C61: 20 59 79 JSR $7959 ; -Check Left Parenthesis
4C64: 20 EF 77 JSR $77EF ; Evaluate Expression
4C67: 68 PLA
4C68: C9 02 CMP #$02
4C6A: 90 08 BCC $4C74
4C6C: C9 0B CMP #$0B
4C6E: B0 04 BCS $4C74
4C70: 69 D1 ADC #$D1
4C72: D0 CB BNE $4C3F
4C74: 38 SEC
4C75: 20 7D 4C JSR $4C7D
4C78: B0 09 BCS $4C83
4C7A: 4C DA 77 JMP $77DA ; Confirm Numeric
4C7D: 6C FC 02 JMP ($02FC) ; Function Execute Hook [4C78]
4C80: 4C C1 99 JMP $99C1 ; Evaluate <instr>
4C83: 4C 6C 79 JMP $796C ; Syntax Error
; Evaluate <or>
4C86: A0 FF LDY #$FF
4C88: 2C .BYTE $2C
; Evaluate <and>
4C89: A0 00 LDY #$00
4C8B: 84 0D STY $0D
4C8D: 20 B4 84 JSR $84B4
4C90: A5 66 LDA $66
4C92: 45 0D EOR $0D
4C94: 85 09 STA $09 ; SYS and MLM register save (SP)
4C96: A5 67 LDA $67
4C98: 45 0D EOR $0D
4C9A: 85 0A STA $0A
4C9C: 20 28 8C JSR $8C28 ; FAC#2 to FAC#1
4C9F: 20 B4 84 JSR $84B4
4CA2: A5 67 LDA $67
4CA4: 45 0D EOR $0D
4CA6: 25 0A AND $0A
4CA8: 45 0D EOR $0D
4CAA: A8 TAY
4CAB: A5 66 LDA $66
4CAD: 45 0D EOR $0D
4CAF: 25 09 AND $09 ; SYS and MLM register save (SP)
4CB1: 45 0D EOR $0D
4CB3: 4C 3C 79 JMP $793C ; Fixed-Float
; Evaluate <compare>
4CB6: 20 DE 77 JSR $77DE
4CB9: B0 13 BCS $4CCE
4CBB: A5 6F LDA $6F
4CBD: 09 7F ORA #$7F
4CBF: 25 6B AND $6B
4CC1: 85 6B STA $6B
4CC3: A9 6A LDA #$6A
4CC5: A0 00 LDY #$00
4CC7: 20 87 8C JSR $8C87 ; Compare FAC#1 to Memory
4CCA: AA TAX
4CCB: 4C 01 4D JMP $4D01
4CCE: A9 00 LDA #$00
4CD0: 85 0F STA $0F
4CD2: C6 4F DEC $4F
4CD4: 20 81 87 JSR $8781
4CD7: 85 63 STA $63
4CD9: 86 64 STX $64
4CDB: 84 65 STY $65
4CDD: A5 6D LDA $6D
4CDF: A4 6E LDY $6E
4CE1: 20 85 87 JSR $8785
4CE4: 86 6D STX $6D
4CE6: 84 6E STY $6E
4CE8: AA TAX
4CE9: 38 SEC
4CEA: E5 63 SBC $63
4CEC: F0 08 BEQ $4CF6
4CEE: A9 01 LDA #$01
4CF0: 90 04 BCC $4CF6
4CF2: A6 63 LDX $63
4CF4: A9 FF LDA #$FF
4CF6: 85 68 STA $68
4CF8: A0 FF LDY #$FF
4CFA: E8 INX
4CFB: C8 INY
4CFC: CA DEX
4CFD: D0 07 BNE $4D06
4CFF: A6 68 LDX $68
4D01: 30 1B BMI $4D1E
4D03: 18 CLC
4D04: 90 18 BCC $4D1E
4D06: A9 6D LDA #$6D
4D08: 20 AB 03 JSR $03AB ; Fetch From RAM Bank 1
4D0B: 48 PHA
4D0C: A9 64 LDA #$64
4D0E: 20 AB 03 JSR $03AB ; Fetch From RAM Bank 1
4D11: 85 79 STA $79
4D13: 68 PLA
4D14: C5 79 CMP $79
4D16: F0 E3 BEQ $4CFB
4D18: A2 FF LDX #$FF
4D1A: B0 02 BCS $4D1E
4D1C: A2 01 LDX #$01
4D1E: E8 INX
4D1F: 8A TXA
4D20: 2A ROL A
4D21: 25 14 AND $14
4D23: F0 02 BEQ $4D27
4D25: A9 FF LDA #$FF
4D27: 4C 68 8C JMP $8C68 ; Byte Fixed-Float
; Print 'ready'
4D2A: 20 81 92 JSR $9281 ; Print Following Text
4D2D: 0D 52 45 41 44 59 2E 0D ; '{CR}ready.{CR}'
4D35: 00 60 ; '{0}`'
; Error or Ready
4D37: A2 80 LDX #$80
4D39: 2C .BYTE $2C
; Print 'out of memory'
4D3A: A2 10 LDX #$10
; Error
4D3C: 6C 00 03 JMP ($0300) ; Error Message Link [4D3F]
; Error Message
4D3F: 8D 03 FF STA $FF03
4D42: 8A TXA
4D43: 30 72 BMI $4DB7
4D45: 8E 08 12 STX $1208
4D48: 24 7F BIT $7F
4D4A: 10 30 BPL $4D7C
4D4C: A0 01 LDY #$01
4D4E: B9 3B 00 LDA $3B,Y
4D51: 99 09 12 STA $1209,Y
4D54: B9 02 12 LDA $1202,Y
4D57: 99 0E 12 STA $120E,Y
4D5A: 88 DEY
4D5B: 10 F1 BPL $4D4E
4D5D: AC 0C 12 LDY $120C
4D60: C8 INY
4D61: F0 19 BEQ $4D7C
4D63: 88 DEY
4D64: 84 17 STY $17
4D66: 8C 0D 12 STY $120D
4D69: AC 0B 12 LDY $120B
4D6C: 84 16 STY $16
4D6E: A2 FF LDX #$FF
4D70: 20 D1 7E JSR $7ED1 ; String Stack patch for Error
4D73: A6 82 LDX $82
4D75: 9A TXS
4D76: 20 FB 59 JSR $59FB
4D79: 4C F6 4A JMP $4AF6
4D7C: CA DEX
4D7D: 8A TXA
4D7E: 20 82 4A JSR $4A82 ; Find Message
4D81: 20 6F 92 JSR $926F ; Call 'clrchn'
4D84: A9 00 LDA #$00
4D86: 85 15 STA $15 ; Current I/O prompt flag
4D88: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
4D8A: 30 02 BMI $4D8E
4D8C: 85 D8 STA $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
4D8E: 20 98 55 JSR $5598
4D91: 20 0A 56 JSR $560A ; -print '?'-
4D94: A0 00 LDY #$00
4D96: B1 26 LDA ($26),Y
4D98: 48 PHA
4D99: 29 7F AND #$7F
4D9B: 20 0C 56 JSR $560C
4D9E: C8 INY
4D9F: 68 PLA
4DA0: 10 F4 BPL $4D96
4DA2: 20 38 52 JSR $5238 ; Clear Stack & Work Area
4DA5: 20 81 92 JSR $9281 ; Print Following Text
4DA8: 20 45 52 52 4F 52 00 ; ' error{0}'
; Break Entry
4DAF: A4 3C LDY $3C
4DB1: C8 INY
4DB2: F0 03 BEQ $4DB7
4DB4: 20 26 8E JSR $8E26 ; Print 'in...'
4DB7: 20 2A 4D JSR $4D2A ; Print 'ready'
4DBA: A9 80 LDA #$80
4DBC: 20 90 FF JSR $FF90 ; setmsg Control OS Messages
4DBF: A9 00 LDA #$00
4DC1: 85 7F STA $7F
; Ready For Basic
4DC3: 6C 02 03 JMP ($0302) ; BASIC Warm Start Link [4DC6]
; BASIC Warm Start
4DC6: A2 FF LDX #$FF
4DC8: 86 3C STX $3C
4DCA: 20 93 4F JSR $4F93 ; Receive Input Line
4DCD: 86 3D STX $3D ; Textpointer: BASIC work point (chrget)
4DCF: 84 3E STY $3E
4DD1: 20 80 03 JSR $0380 ; CHRGET
4DD4: AA TAX
4DD5: F0 EC BEQ $4DC3 ; Ready For Basic
4DD7: 90 09 BCC $4DE2 ; Handle New Line
4DD9: 20 0A 43 JSR $430A ; Crunch Tokens
4DDC: 20 86 03 JSR $0386 ; CHRGOT entry
4DDF: 4C F3 4A JMP $4AF3
; Handle New Line
4DE2: 20 A0 50 JSR $50A0 ; Get Fixed Pt Number
4DE5: 20 0A 43 JSR $430A ; Crunch Tokens
4DE8: 84 0D STY $0D
4DEA: 20 64 50 JSR $5064 ; Find Basic Line
4DED: 90 7B BCC $4E6A
4DEF: A0 00 LDY #$00
4DF1: 20 EC 42 JSR $42EC ; Get From ($61) Bank0
4DF4: 38 SEC
4DF5: E5 61 SBC $61
4DF7: 38 SEC
4DF8: E9 04 SBC #$04
4DFA: E5 0D SBC $0D
4DFC: B0 1C BCS $4E1A
4DFE: 49 FF EOR #$FF
4E00: 69 01 ADC #$01
4E02: AC 11 12 LDY $1211
4E05: 6D 10 12 ADC $1210 ; End of Basic, Bank 0
4E08: 90 01 BCC $4E0B
4E0A: C8 INY
4E0B: CC 13 12 CPY $1213
4E0E: 90 0A BCC $4E1A
4E10: D0 05 BNE $4E17
4E12: CD 12 12 CMP $1212 ; Basic Program Limit [FF00]
4E15: 90 03 BCC $4E1A
4E17: 4C 3A 4D JMP $4D3A ; Print 'out of memory'
4E1A: A0 01 LDY #$01
4E1C: 20 EC 42 JSR $42EC ; Get From ($61) Bank0
4E1F: 85 25 STA $25
4E21: AD 10 12 LDA $1210 ; End of Basic, Bank 0
4E24: 85 24 STA $24
4E26: A5 62 LDA $62
4E28: 85 27 STA $27
4E2A: 88 DEY
4E2B: 20 EC 42 JSR $42EC ; Get From ($61) Bank0
4E2E: 18 CLC
4E2F: E5 61 SBC $61
4E31: 49 FF EOR #$FF
4E33: 18 CLC
4E34: 6D 10 12 ADC $1210 ; End of Basic, Bank 0
4E37: 8D 10 12 STA $1210 ; End of Basic, Bank 0
4E3A: 85 26 STA $26
4E3C: AD 11 12 LDA $1211
4E3F: 69 FF ADC #$FF
4E41: 8D 11 12 STA $1211
4E44: E5 62 SBC $62
4E46: AA TAX
4E47: 38 SEC
4E48: A5 61 LDA $61
4E4A: ED 10 12 SBC $1210 ; End of Basic, Bank 0
4E4D: A8 TAY
4E4E: B0 03 BCS $4E53
4E50: E8 INX
4E51: C6 27 DEC $27
4E53: 18 CLC
4E54: 65 24 ADC $24
4E56: 90 03 BCC $4E5B
4E58: C6 25 DEC $25
4E5A: 18 CLC
4E5B: 20 05 43 JSR $4305 ; Get From ($24) Bank0
4E5E: 91 26 STA ($26),Y
4E60: C8 INY
4E61: D0 F8 BNE $4E5B
4E63: E6 25 INC $25
4E65: E6 27 INC $27
4E67: CA DEX
4E68: D0 F1 BNE $4E5B
4E6A: 20 38 52 JSR $5238 ; Clear Stack & Work Area
4E6D: 20 4F 4F JSR $4F4F ; Rechain Lines
4E70: A0 00 LDY #$00
4E72: B1 3D LDA ($3D),Y ; Textpointer: BASIC work point (chrget)
4E74: D0 03 BNE $4E79
4E76: 4C D5 4D JMP $4DD5
4E79: 18 CLC
4E7A: AD 10 12 LDA $1210 ; End of Basic, Bank 0
4E7D: AC 11 12 LDY $1211
4E80: 85 5C STA $5C
4E82: 84 5D STY $5D
4E84: 65 0D ADC $0D
4E86: 90 01 BCC $4E89
4E88: C8 INY
4E89: 18 CLC
4E8A: 69 04 ADC #$04
4E8C: 90 01 BCC $4E8F
4E8E: C8 INY
4E8F: 85 5A STA $5A
4E91: 84 5B STY $5B
4E93: CC 13 12 CPY $1213
4E96: 90 0A BCC $4EA2
4E98: D0 05 BNE $4E9F
4E9A: CD 12 12 CMP $1212 ; Basic Program Limit [FF00]
4E9D: 90 03 BCC $4EA2
4E9F: 4C 3A 4D JMP $4D3A ; Print 'out of memory'
4EA2: 8D 10 12 STA $1210 ; End of Basic, Bank 0
4EA5: 8C 11 12 STY $1211
4EA8: 38 SEC
4EA9: A5 5C LDA $5C
4EAB: E5 61 SBC $61
4EAD: 85 24 STA $24
4EAF: A8 TAY
4EB0: A5 5D LDA $5D
4EB2: E5 62 SBC $62
4EB4: AA TAX
4EB5: E8 INX
4EB6: 98 TYA
4EB7: F0 25 BEQ $4EDE
4EB9: A5 5C LDA $5C
4EBB: 38 SEC
4EBC: E5 24 SBC $24
4EBE: 85 5C STA $5C
4EC0: B0 03 BCS $4EC5
4EC2: C6 5D DEC $5D
4EC4: 38 SEC
4EC5: A5 5A LDA $5A
4EC7: E5 24 SBC $24
4EC9: 85 5A STA $5A
4ECB: B0 09 BCS $4ED6
4ECD: C6 5B DEC $5B
4ECF: 90 05 BCC $4ED6
4ED1: 20 DD 42 JSR $42DD ; Get From ($5c) Bank0
4ED4: 91 5A STA ($5A),Y
4ED6: 88 DEY
4ED7: D0 F8 BNE $4ED1
4ED9: 20 DD 42 JSR $42DD ; Get From ($5c) Bank0
4EDC: 91 5A STA ($5A),Y
4EDE: C6 5D DEC $5D
4EE0: C6 5B DEC $5B
4EE2: CA DEX
4EE3: D0 F1 BNE $4ED6
4EE5: A0 00 LDY #$00
4EE7: A9 01 LDA #$01
4EE9: 91 61 STA ($61),Y
4EEB: C8 INY
4EEC: 91 61 STA ($61),Y
4EEE: C8 INY
4EEF: A5 16 LDA $16
4EF1: 91 61 STA ($61),Y
4EF3: A5 17 LDA $17
4EF5: C8 INY
4EF6: 91 61 STA ($61),Y
4EF8: 18 CLC
4EF9: A5 61 LDA $61
4EFB: 69 04 ADC #$04
4EFD: 85 61 STA $61
4EFF: 90 02 BCC $4F03
4F01: E6 62 INC $62
4F03: A4 0D LDY $0D
4F05: 88 DEY
4F06: B1 3D LDA ($3D),Y ; Textpointer: BASIC work point (chrget)
4F08: 91 61 STA ($61),Y
4F0A: 88 DEY
4F0B: C0 FF CPY #$FF
4F0D: D0 F7 BNE $4F06
4F0F: 20 4F 4F JSR $4F4F ; Rechain Lines
4F12: 20 54 52 JSR $5254 ; Textptr to BASIC start minus 1
4F15: A5 74 LDA $74 ; Auto line number increment
4F17: 05 75 ORA $75
4F19: F0 31 BEQ $4F4C
4F1B: A5 16 LDA $16
4F1D: 18 CLC
4F1E: 65 74 ADC $74 ; Auto line number increment
4F20: 85 65 STA $65
4F22: A5 17 LDA $17
4F24: 65 75 ADC $75
4F26: B0 24 BCS $4F4C
4F28: C9 FA CMP #$FA
4F2A: B0 20 BCS $4F4C
4F2C: 85 64 STA $64
4F2E: A2 90 LDX #$90
4F30: 38 SEC
4F31: 20 75 8C JSR $8C75 ; Fixed-Float
4F34: 20 42 8E JSR $8E42 ; Float to Ascii
4F37: A2 00 LDX #$00
4F39: BD 01 01 LDA $0101,X
4F3C: F0 06 BEQ $4F44
4F3E: 9D 4A 03 STA $034A,X ; IRQ Keyboard Buffer (10 Bytes)
4F41: E8 INX
4F42: D0 F5 BNE $4F39
4F44: A9 1D LDA #$1D
4F46: 9D 4A 03 STA $034A,X ; IRQ Keyboard Buffer (10 Bytes)
4F49: E8 INX
4F4A: 86 D0 STX $D0 ; Number of characters in keyboard buffer
4F4C: 4C C3 4D JMP $4DC3 ; Ready For Basic
; Rechain Lines
4F4F: A5 2D LDA $2D ; Pointer: Start-of-BASIC (bank 0)
4F51: A4 2E LDY $2E
4F53: 85 24 STA $24
4F55: 84 25 STY $25
4F57: 18 CLC
4F58: A0 00 LDY #$00
4F5A: 20 05 43 JSR $4305 ; Get From ($24) Bank0
4F5D: D0 06 BNE $4F65
4F5F: C8 INY
4F60: 20 05 43 JSR $4305 ; Get From ($24) Bank0
4F63: F0 2D BEQ $4F92
4F65: A0 04 LDY #$04
4F67: C8 INY
4F68: 20 05 43 JSR $4305 ; Get From ($24) Bank0
4F6B: D0 FA BNE $4F67
4F6D: C8 INY
4F6E: 98 TYA
4F6F: 65 24 ADC $24
4F71: AA TAX
4F72: A0 00 LDY #$00
4F74: 91 24 STA ($24),Y
4F76: 98 TYA
4F77: 65 25 ADC $25
4F79: C8 INY
4F7A: 91 24 STA ($24),Y
4F7C: 86 24 STX $24
4F7E: 85 25 STA $25
4F80: 90 D6 BCC $4F58
; Reset End-of-Basic
4F82: 18 CLC
4F83: A5 24 LDA $24
4F85: A4 25 LDY $25
4F87: 69 02 ADC #$02
4F89: 90 01 BCC $4F8C
4F8B: C8 INY
4F8C: 8D 10 12 STA $1210 ; End of Basic, Bank 0
4F8F: 8C 11 12 STY $1211
4F92: 60 RTS
; Receive Input Line
4F93: A2 00 LDX #$00
4F95: 20 E5 90 JSR $90E5 ; Basic 'input'
4F98: C9 0D CMP #$0D
4F9A: D0 03 BNE $4F9F
4F9C: 4C 8B 55 JMP $558B
4F9F: 9D 00 02 STA $0200,X
4FA2: E8 INX
4FA3: E0 A1 CPX #$A1
4FA5: 90 EE BCC $4F95
4FA7: 4C ED A5 JMP $A5ED ; Print 'string too long'
; Search B-Stack For Match
4FAA: 85 02 STA $02 ; Bank Number, Jump to SYS Address
4FAC: 20 47 50 JSR $5047 ; Copy B-Stack Pointer
4FAF: A5 3F LDA $3F
4FB1: C9 FF CMP #$FF
4FB3: D0 06 BNE $4FBB
4FB5: A5 40 LDA $40
4FB7: C9 09 CMP #$09
4FB9: F0 40 BEQ $4FFB
4FBB: 8D 03 FF STA $FF03
4FBE: A0 00 LDY #$00
4FC0: A5 02 LDA $02 ; Bank Number, Jump to SYS Address
4FC2: C9 81 CMP #$81
4FC4: D0 1B BNE $4FE1
4FC6: D1 3F CMP ($3F),Y
4FC8: D0 33 BNE $4FFD
4FCA: A0 02 LDY #$02
4FCC: A5 4C LDA $4C
4FCE: C9 FF CMP #$FF
4FD0: F0 2B BEQ $4FFD
4FD2: D1 3F CMP ($3F),Y
4FD4: D0 07 BNE $4FDD
4FD6: 88 DEY
4FD7: A5 4B LDA $4B
4FD9: D1 3F CMP ($3F),Y
4FDB: F0 20 BEQ $4FFD
4FDD: A2 12 LDX #$12
4FDF: D0 0E BNE $4FEF
4FE1: B1 3F LDA ($3F),Y
4FE3: C5 02 CMP $02 ; Bank Number, Jump to SYS Address
4FE5: F0 16 BEQ $4FFD
4FE7: A2 12 LDX #$12
4FE9: C9 81 CMP #$81
4FEB: F0 02 BEQ $4FEF
4FED: A2 05 LDX #$05
4FEF: 8A TXA
4FF0: 18 CLC
4FF1: 65 3F ADC $3F
4FF3: 85 3F STA $3F
4FF5: 90 B8 BCC $4FAF
4FF7: E6 40 INC $40
4FF9: D0 B4 BNE $4FAF
4FFB: A0 01 LDY #$01
4FFD: 60 RTS
; Move B-Stack Down
4FFE: 49 FF EOR #$FF
5000: 38 SEC
5001: 65 7D ADC $7D
5003: 85 7D STA $7D
5005: A4 7E LDY $7E
5007: B0 01 BCS $500A
5009: 88 DEY
500A: 84 7E STY $7E
500C: C0 08 CPY #$08
500E: 90 34 BCC $5044
5010: D0 04 BNE $5016
5012: C5 7D CMP $7D
5014: 90 2E BCC $5044
5016: 60 RTS
; Check Memory Space
5017: C4 36 CPY $36
5019: 90 28 BCC $5043
501B: D0 04 BNE $5021
501D: C5 35 CMP $35
501F: 90 22 BCC $5043
5021: 48 PHA
5022: A2 09 LDX #$09
5024: 98 TYA
5025: 48 PHA
5026: B5 59 LDA $59,X
5028: CA DEX
5029: 10 FA BPL $5025
502B: 20 EA 92 JSR $92EA ; Garbage Collection
502E: A2 F7 LDX #$F7
5030: 68 PLA
5031: 95 63 STA $63,X
5033: E8 INX
5034: 30 FA BMI $5030
5036: 68 PLA
5037: A8 TAY
5038: 68 PLA
5039: C4 36 CPY $36
503B: 90 06 BCC $5043
503D: D0 05 BNE $5044
503F: C5 35 CMP $35
5041: B0 01 BCS $5044
5043: 60 RTS
5044: 4C 3A 4D JMP $4D3A ; Print 'out of memory'
; Copy B-Stack Pointer
5047: A5 7D LDA $7D
5049: 85 3F STA $3F
504B: A5 7E LDA $7E
504D: 85 40 STA $40
504F: 60 RTS
; Set B-Stack Pointer
5050: A5 3F LDA $3F
5052: 85 7D STA $7D
5054: A5 40 LDA $40
5056: 85 7E STA $7E
5058: 60 RTS
; Move B-Stack Up
5059: 98 TYA
505A: 18 CLC
505B: 65 7D ADC $7D
505D: 85 7D STA $7D
505F: 90 02 BCC $5063
5061: E6 7E INC $7E
5063: 60 RTS
; Find Basic Line
5064: A5 2D LDA $2D ; Pointer: Start-of-BASIC (bank 0)
5066: A6 2E LDX $2E
5068: A0 01 LDY #$01
506A: 85 61 STA $61
506C: 86 62 STX $62
506E: 20 EC 42 JSR $42EC ; Get From ($61) Bank0
5071: F0 2B BEQ $509E
5073: C8 INY
5074: C8 INY
5075: 20 EC 42 JSR $42EC ; Get From ($61) Bank0
5078: 85 79 STA $79
507A: A5 17 LDA $17
507C: C5 79 CMP $79
507E: 90 1F BCC $509F
5080: F0 03 BEQ $5085
5082: 88 DEY
5083: D0 0E BNE $5093
5085: 88 DEY
5086: 20 EC 42 JSR $42EC ; Get From ($61) Bank0
5089: 85 79 STA $79
508B: A5 16 LDA $16
508D: C5 79 CMP $79
508F: 90 0E BCC $509F
5091: F0 0C BEQ $509F
5093: 88 DEY
5094: 20 EC 42 JSR $42EC ; Get From ($61) Bank0
5097: AA TAX
5098: 88 DEY
5099: 20 EC 42 JSR $42EC ; Get From ($61) Bank0
509C: B0 CA BCS $5068
509E: 18 CLC
509F: 60 RTS
; Get Fixed Pt Number
50A0: A2 00 LDX #$00
50A2: 86 0A STX $0A
50A4: 86 16 STX $16
50A6: 86 17 STX $17
50A8: B0 37 BCS $50E1
50AA: E6 0A INC $0A
50AC: E9 2F SBC #$2F
50AE: 85 09 STA $09 ; SYS and MLM register save (SP)
50B0: A5 17 LDA $17
50B2: 85 24 STA $24
50B4: C9 19 CMP #$19
50B6: 90 03 BCC $50BB
50B8: 4C 6C 79 JMP $796C ; Syntax Error
50BB: A5 16 LDA $16
50BD: 0A ASL A
50BE: 26 24 ROL $24
50C0: 0A ASL A
50C1: 26 24 ROL $24
50C3: 65 16 ADC $16
50C5: 85 16 STA $16
50C7: A5 24 LDA $24
50C9: 65 17 ADC $17
50CB: 85 17 STA $17
50CD: 06 16 ASL $16
50CF: 26 17 ROL $17
50D1: A5 16 LDA $16
50D3: 65 09 ADC $09 ; SYS and MLM register save (SP)
50D5: 85 16 STA $16
50D7: 90 02 BCC $50DB
50D9: E6 17 INC $17
50DB: 20 80 03 JSR $0380 ; CHRGET
50DE: 4C A8 50 JMP $50A8
50E1: 60 RTS
; Perform [list]
50E2: 20 FB 5E JSR $5EFB ; Get Line Number Range
50E5: A0 01 LDY #$01
50E7: 20 EC 42 JSR $42EC ; Get From ($61) Bank0
50EA: D0 06 BNE $50F2
50EC: 88 DEY
50ED: 20 EC 42 JSR $42EC ; Get From ($61) Bank0
50F0: F0 2E BEQ $5120
50F2: 20 B5 4B JSR $4BB5 ; ?
50F5: 20 98 55 JSR $5598
50F8: A0 02 LDY #$02
50FA: 20 EC 42 JSR $42EC ; Get From ($61) Bank0
50FD: AA TAX
50FE: C8 INY
50FF: 20 EC 42 JSR $42EC ; Get From ($61) Bank0
5102: C5 17 CMP $17
5104: D0 04 BNE $510A
5106: E4 16 CPX $16
5108: F0 02 BEQ $510C
510A: B0 14 BCS $5120
510C: 20 23 51 JSR $5123 ; List Subroutine
510F: A0 00 LDY #$00
5111: 20 EC 42 JSR $42EC ; Get From ($61) Bank0
5114: AA TAX
5115: C8 INY
5116: 20 EC 42 JSR $42EC ; Get From ($61) Bank0
5119: 86 61 STX $61
511B: 85 62 STA $62
511D: 4C E5 50 JMP $50E5
5120: 4C 98 55 JMP $5598
; List Subroutine
5123: A0 03 LDY #$03
5125: 84 4B STY $4B
5127: 84 11 STY $11
5129: 20 32 8E JSR $8E32 ; Print Integer
512C: A9 20 LDA #$20
512E: A4 4B LDY $4B
5130: 29 7F AND #$7F
5132: 20 0C 56 JSR $560C
5135: C9 22 CMP #$22
5137: D0 06 BNE $513F
5139: A5 11 LDA $11
513B: 49 FF EOR #$FF
513D: 85 11 STA $11
513F: C8 INY
5140: F0 DE BEQ $5120
5142: 24 55 BIT $55
5144: 10 03 BPL $5149
5146: 20 AC 59 JSR $59AC ; Insert Help Marker
5149: 20 EC 42 JSR $42EC ; Get From ($61) Bank0
514C: F0 3D BEQ $518B
514E: 6C 06 03 JMP ($0306) ; Print Tokens Link [5151]
; Print Tokens
5151: 10 DF BPL $5132
5153: C9 FF CMP #$FF
5155: F0 DB BEQ $5132
5157: 24 11 BIT $11
5159: 30 D7 BMI $5132
515B: C9 FE CMP #$FE
515D: F0 2D BEQ $518C
515F: C9 CE CMP #$CE
5161: F0 43 BEQ $51A6
5163: AA TAX
5164: 84 4B STY $4B
5166: A9 44 LDA #$44
5168: A0 17 LDY #$17
516A: 85 25 STA $25
516C: 84 24 STY $24
516E: A0 00 LDY #$00
5170: CA DEX
5171: 10 0F BPL $5182
5173: B1 24 LDA ($24),Y
5175: 48 PHA
5176: E6 24 INC $24
5178: D0 02 BNE $517C
517A: E6 25 INC $25
517C: 68 PLA
517D: 10 F4 BPL $5173
517F: 30 EF BMI $5170
5181: C8 INY
5182: B1 24 LDA ($24),Y
5184: 30 A8 BMI $512E
5186: 20 0C 56 JSR $560C
5189: D0 F6 BNE $5181
518B: 60 RTS
518C: AA TAX
518D: C8 INY
518E: 20 EC 42 JSR $42EC ; Get From ($61) Bank0
5191: F0 9F BEQ $5132
5193: 84 4B STY $4B
5195: C9 02 CMP #$02
5197: 90 27 BCC $51C0
5199: C9 27 CMP #$27
519B: B0 23 BCS $51C0
519D: 69 7E ADC #$7E
519F: AA TAX
51A0: A0 09 LDY #$09
51A2: A9 46 LDA #$46
51A4: D0 C4 BNE $516A
51A6: AA TAX
51A7: C8 INY
51A8: 20 EC 42 JSR $42EC ; Get From ($61) Bank0
51AB: F0 85 BEQ $5132
51AD: 84 4B STY $4B
51AF: C9 02 CMP #$02
51B1: 90 0D BCC $51C0
51B3: C9 0B CMP #$0B
51B5: B0 09 BCS $51C0
51B7: 69 7E ADC #$7E
51B9: AA TAX
51BA: A0 C9 LDY #$C9
51BC: A9 46 LDA #$46
51BE: D0 AA BNE $516A
51C0: E0 FE CPX #$FE
51C2: D0 03 BNE $51C7
51C4: A2 00 LDX #$00
51C6: 2C .BYTE $2C
51C7: A2 FF LDX #$FF
51C9: 38 SEC
51CA: 6C 0E 03 JMP ($030E) ; List FE Hook [51CD]
; List FE
51CD: B0 04 BCS $51D3
51CF: A0 00 LDY #$00
51D1: F0 AF BEQ $5182
51D3: 4C 32 51 JMP $5132
; Perform [new]
51D6: F0 01 BEQ $51D9
51D8: 60 RTS
51D9: A9 00 LDA #$00
51DB: A8 TAY
51DC: 91 2D STA ($2D),Y ; Pointer: Start-of-BASIC (bank 0)
51DE: C8 INY
51DF: 91 2D STA ($2D),Y ; Pointer: Start-of-BASIC (bank 0)
51E1: 8D 6F 11 STA $116F ; Trace Mode: FF = on
51E4: A5 2D LDA $2D ; Pointer: Start-of-BASIC (bank 0)
51E6: 18 CLC
51E7: 69 02 ADC #$02
51E9: 8D 10 12 STA $1210 ; End of Basic, Bank 0
51EC: A5 2E LDA $2E
51EE: 69 00 ADC #$00
51F0: 8D 11 12 STA $1211
; Set Up Run
51F3: 20 54 52 JSR $5254 ; Textptr to BASIC start minus 1
51F6: A9 00 LDA #$00
; Perform [clr]
51F8: D0 55 BNE $524F
51FA: 20 7B 92 JSR $927B ; Call 'clall'
51FD: A0 00 LDY #$00
51FF: 84 7A STY $7A
5201: 88 DEY
5202: 8C 0C 12 STY $120C
5205: 8C 09 12 STY $1209
5208: 8C 0A 12 STY $120A
520B: 8C 08 12 STY $1208
520E: A5 39 LDA $39 ; Pointer: Limit-of-memory (bank 1)
5210: A4 3A LDY $3A
5212: 85 35 STA $35
5214: 84 36 STY $36
5216: A9 FF LDA #$FF
5218: A0 09 LDY #$09
521A: 85 7D STA $7D
521C: 84 7E STY $7E
521E: A5 2F LDA $2F ; Pointer: Start-of-variables (bank 1)
5220: A4 30 LDY $30
5222: 85 31 STA $31
5224: 84 32 STY $32
5226: 85 33 STA $33
5228: 84 34 STY $34
522A: A2 03 LDX #$03
522C: BD 50 52 LDA $5250,X ; Pudef Characters
522F: 9D 04 12 STA $1204,X
5232: CA DEX
5233: 10 F7 BPL $522C
5235: 20 E1 5A JSR $5AE1
; Clear Stack & Work Area
5238: A2 1B LDX #$1B
523A: 86 18 STX $18
523C: 68 PLA
523D: A8 TAY
523E: 68 PLA
523F: A2 FA LDX #$FA
5241: 9A TXS
5242: 48 PHA
5243: 98 TYA
5244: 48 PHA
5245: A9 00 LDA #$00
5247: 8D 03 12 STA $1203
524A: 85 12 STA $12
524C: 8D DF 03 STA $03DF ; FAC#1 Overflow
524F: 60 RTS
; Pudef Characters
5250: 20 2C 2E 24 ; ' ,.$'
; Textptr to BASIC start minus 1
5254: 18 CLC
5255: A5 2D LDA $2D ; Pointer: Start-of-BASIC (bank 0)
5257: 69 FF ADC #$FF
5259: 85 3D STA $3D ; Textpointer: BASIC work point (chrget)
525B: A5 2E LDA $2E
525D: 69 FF ADC #$FF
525F: 85 3E STA $3E
5261: 60 RTS
; Perform [return]
5262: 68 PLA
5263: 68 PLA
5264: A9 8D LDA #$8D
5266: 20 AA 4F JSR $4FAA ; Search B-Stack For Match
5269: F0 05 BEQ $5270
526B: A2 0C LDX #$0C
526D: 4C 3C 4D JMP $4D3C ; Error
5270: 20 50 50 JSR $5050 ; Set B-Stack Pointer
5273: A0 05 LDY #$05
5275: 20 59 50 JSR $5059 ; Move B-Stack Up
5278: 88 DEY
5279: B1 3F LDA ($3F),Y
527B: 85 3E STA $3E
527D: 88 DEY
527E: B1 3F LDA ($3F),Y
5280: 85 3D STA $3D ; Textpointer: BASIC work point (chrget)
5282: 88 DEY
5283: B1 3F LDA ($3F),Y
5285: 20 3B A8 JSR $A83B ; ?
5288: B1 3F LDA ($3F),Y
528A: 85 3B STA $3B
528C: 4C 8F 52 JMP $528F ; Perform [data/bend]
; Perform [data/bend]
528F: 20 A2 52 JSR $52A2 ; Scan To Next Statement
5292: 98 TYA
5293: 18 CLC
5294: 65 3D ADC $3D ; Textpointer: BASIC work point (chrget)
5296: 85 3D STA $3D ; Textpointer: BASIC work point (chrget)
5298: 90 02 BCC $529C
529A: E6 3E INC $3E
529C: 60 RTS
; Perform [rem]
529D: 20 A5 52 JSR $52A5 ; Scan To Next Line
52A0: F0 F0 BEQ $5292
; Scan To Next Statement
52A2: A2 3A LDX #$3A
52A4: 2C .BYTE $2C
; Scan To Next Line
52A5: A2 00 LDX #$00
52A7: 86 09 STX $09 ; SYS and MLM register save (SP)
52A9: A0 00 LDY #$00
52AB: 84 0A STY $0A
52AD: A5 0A LDA $0A
52AF: A6 09 LDX $09 ; SYS and MLM register save (SP)
52B1: 85 09 STA $09 ; SYS and MLM register save (SP)
52B3: 86 0A STX $0A
52B5: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
52B8: F0 E2 BEQ $529C
52BA: C5 0A CMP $0A
52BC: F0 DE BEQ $529C
52BE: C8 INY
52BF: C9 22 CMP #$22
52C1: D0 F2 BNE $52B5
52C3: F0 E8 BEQ $52AD
; Perform [if]
52C5: 20 EF 77 JSR $77EF ; Evaluate Expression
52C8: 20 86 03 JSR $0386 ; CHRGOT entry
52CB: C9 89 CMP #$89
52CD: F0 05 BEQ $52D4
52CF: A9 A7 LDA #$A7
52D1: 20 5E 79 JSR $795E
52D4: A5 63 LDA $63
52D6: D0 26 BNE $52FE
52D8: 20 86 03 JSR $0386 ; CHRGOT entry
52DB: C9 FE CMP #$FE
52DD: D0 0B BNE $52EA
52DF: C8 INY
52E0: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
52E3: C9 18 CMP #$18
52E5: D0 03 BNE $52EA
52E7: 20 20 53 JSR $5320 ; Search/Skip Begin/Bend
52EA: 20 8F 52 JSR $528F ; Perform [data/bend]
52ED: A0 00 LDY #$00
52EF: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
52F2: F0 A9 BEQ $529D ; Perform [rem]
52F4: 20 80 03 JSR $0380 ; CHRGET
52F7: C9 D5 CMP #$D5
52F9: D0 EF BNE $52EA
52FB: 20 80 03 JSR $0380 ; CHRGET
52FE: 20 86 03 JSR $0386 ; CHRGOT entry
5301: F0 17 BEQ $531A
5303: B0 03 BCS $5308
5305: 4C DB 59 JMP $59DB ; Perform [goto]
5308: C9 FE CMP #$FE
530A: D0 0E BNE $531A
530C: C8 INY
530D: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
5310: C9 18 CMP #$18
5312: D0 06 BNE $531A
5314: 20 80 03 JSR $0380 ; CHRGET
5317: 20 80 03 JSR $0380 ; CHRGET
531A: 20 86 03 JSR $0386 ; CHRGOT entry
531D: 4C 3F 4B JMP $4B3F ; Execute/Trace Statement
; Search/Skip Begin/Bend
5320: 20 80 03 JSR $0380 ; CHRGET
5323: D0 27 BNE $534C
5325: C9 3A CMP #$3A
5327: F0 F7 BEQ $5320 ; Search/Skip Begin/Bend
5329: 24 7F BIT $7F
532B: 10 4A BPL $5377
532D: A0 02 LDY #$02
532F: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
5332: F0 43 BEQ $5377
5334: C8 INY
5335: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
5338: 85 3B STA $3B
533A: C8 INY
533B: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
533E: 85 3C STA $3C
5340: 98 TYA
5341: 18 CLC
5342: 65 3D ADC $3D ; Textpointer: BASIC work point (chrget)
5344: 85 3D STA $3D ; Textpointer: BASIC work point (chrget)
5346: 90 D8 BCC $5320 ; Search/Skip Begin/Bend
5348: E6 3E INC $3E
534A: D0 D4 BNE $5320 ; Search/Skip Begin/Bend
534C: C9 22 CMP #$22
534E: D0 07 BNE $5357
5350: 20 7C 53 JSR $537C ; Skip String Constant
5353: F0 D0 BEQ $5325
5355: D0 C9 BNE $5320 ; Search/Skip Begin/Bend
5357: C9 8F CMP #$8F
5359: D0 06 BNE $5361
535B: 20 9D 52 JSR $529D ; Perform [rem]
535E: 4C 29 53 JMP $5329
5361: C9 FE CMP #$FE
5363: D0 BB BNE $5320 ; Search/Skip Begin/Bend
5365: 20 80 03 JSR $0380 ; CHRGET
5368: C9 19 CMP #$19
536A: F0 0A BEQ $5376
536C: C9 18 CMP #$18
536E: D0 B0 BNE $5320 ; Search/Skip Begin/Bend
5370: 20 20 53 JSR $5320 ; Search/Skip Begin/Bend
5373: 4C 20 53 JMP $5320 ; Search/Skip Begin/Bend
5376: 60 RTS
5377: A2 25 LDX #$25
5379: 4C 3C 4D JMP $4D3C ; Error
; Skip String Constant
537C: A0 00 LDY #$00
537E: E6 3D INC $3D ; Textpointer: BASIC work point (chrget)
5380: D0 02 BNE $5384
5382: E6 3E INC $3E
5384: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
5387: F0 07 BEQ $5390
5389: C9 22 CMP #$22
538B: D0 F1 BNE $537E
538D: 4C 80 03 JMP $0380 ; CHRGET
5390: 60 RTS
; Perform [else]
5391: C9 FE CMP #$FE
5393: D0 0B BNE $53A0
5395: C8 INY
5396: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
5399: C9 18 CMP #$18
539B: D0 03 BNE $53A0
539D: 20 20 53 JSR $5320 ; Search/Skip Begin/Bend
53A0: 4C 9D 52 JMP $529D ; Perform [rem]
; Perform [on]
53A3: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
53A6: 48 PHA
53A7: C9 8D CMP #$8D
53A9: F0 07 BEQ $53B2
53AB: C9 89 CMP #$89
53AD: F0 03 BEQ $53B2
53AF: 4C 6C 79 JMP $796C ; Syntax Error
53B2: C6 67 DEC $67
53B4: D0 04 BNE $53BA
53B6: 68 PLA
53B7: 4C 59 4B JMP $4B59
53BA: 20 80 03 JSR $0380 ; CHRGET
53BD: 20 A0 50 JSR $50A0 ; Get Fixed Pt Number
53C0: C9 2C CMP #$2C
53C2: F0 EE BEQ $53B2
53C4: 68 PLA
53C5: 60 RTS
; Perform [let]
53C6: 20 AF 7A JSR $7AAF ; Locate Variable
53C9: 85 4B STA $4B
53CB: 84 4C STY $4C
53CD: A9 B2 LDA #$B2
53CF: 20 5E 79 JSR $795E
53D2: A5 10 LDA $10
53D4: 48 PHA
53D5: A5 0F LDA $0F
53D7: 48 PHA
53D8: 20 EF 77 JSR $77EF ; Evaluate Expression
53DB: 68 PLA
53DC: 2A ROL A
53DD: 20 DE 77 JSR $77DE
53E0: D0 22 BNE $5404
53E2: 68 PLA
53E3: 10 15 BPL $53FA
53E5: 20 47 8C JSR $8C47 ; Round FAC#1
53E8: 20 B4 84 JSR $84B4
53EB: A0 00 LDY #$00
53ED: A5 66 LDA $66
53EF: 8D 04 FF STA $FF04
53F2: 91 4B STA ($4B),Y
53F4: C8 INY
53F5: A5 67 LDA $67
53F7: 91 4B STA ($4B),Y
53F9: 60 RTS
53FA: A6 4B LDX $4B
53FC: A4 4C LDY $4C
53FE: 8D 04 FF STA $FF04
5401: 4C 00 8C JMP $8C00 ; Pack FAC#1 to RAM1
5404: 68 PLA
5405: A4 4C LDY $4C ; variable string descriptor address high byte
5407: C0 03 CPY #$03 ; system descriptor?
5409: D0 72 BNE $547D ; assign to variable
540B: 20 81 87 JSR $8781 ; get string, remove it from heap
540E: C9 06 CMP #$06 ; length not 6 (time string)
5410: D0 3E BNE $5450 ; error "?ILLEGAL QUANTITITY"
5412: A0 00 LDY #$00
5414: 84 63 STY $63
5416: 84 68 STY $68
5418: 84 72 STY $72
541A: 20 48 54 JSR $5448 ; get digit
541D: 20 17 8B JSR $8B17 ; Multiply By 10
5420: E6 72 INC $72
5422: A4 72 LDY $72
5424: 20 48 54 JSR $5448 ; get digit
5427: 20 38 8C JSR $8C38 ; FAC#1 to FAC#2
542A: AA TAX
542B: F0 05 BEQ $5432
542D: E8 INX
542E: 8A TXA
542F: 20 22 8B JSR $8B22
5432: A4 72 LDY $72
5434: C8 INY
5435: C0 06 CPY #$06
5437: D0 DF BNE $5418
5439: 20 17 8B JSR $8B17 ; Multiply By 10
543C: 20 C7 8C JSR $8CC7 ; Float-Fixed
543F: A6 66 LDX $66
5441: A4 65 LDY $65
5443: A5 67 LDA $67
5445: 4C DB FF JMP $FFDB ; settim Set Real-Time Clock
5448: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
544B: 20 90 03 JSR $0390
544E: 90 03 BCC $5453
5450: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
5453: E9 2F SBC #$2F
5455: 4C B0 8D JMP $8DB0 ; Get Ascii Digit
5458: 68 PLA
5459: C8 INY
545A: C5 36 CMP $36
545C: 90 18 BCC $5476
545E: D0 08 BNE $5468
5460: 88 DEY
5461: 20 E7 42 JSR $42E7 ; Get From ($66) Bank1
5464: C5 35 CMP $35
5466: 90 0E BCC $5476
5468: A4 67 LDY $67
546A: C4 30 CPY $30
546C: 90 08 BCC $5476
546E: D0 24 BNE $5494
5470: A5 66 LDA $66
5472: C5 2F CMP $2F ; Pointer: Start-of-variables (bank 1)
5474: B0 1E BCS $5494
5476: A5 66 LDA $66
5478: A4 67 LDY $67
547A: 4C B2 54 JMP $54B2
547D: A0 02 LDY #$02
547F: 20 E7 42 JSR $42E7 ; Get From ($66) Bank1
5482: C5 7C CMP $7C
5484: D0 D4 BNE $545A
5486: 48 PHA
5487: 88 DEY
5488: 20 E7 42 JSR $42E7 ; Get From ($66) Bank1
548B: C5 7B CMP $7B
548D: D0 C9 BNE $5458
548F: A5 7A LDA $7A
5491: F0 C5 BEQ $5458
5493: 68 PLA
5494: A0 00 LDY #$00
5496: 20 E7 42 JSR $42E7 ; Get From ($66) Bank1
5499: 20 88 86 JSR $8688 ; Calc String Vector
549C: A5 52 LDA $52
549E: A4 53 LDY $53
54A0: 85 70 STA $70
54A2: 84 71 STY $71
54A4: 20 4E 87 JSR $874E ; Build String to Memory
54A7: A5 70 LDA $70
54A9: A4 71 LDY $71
54AB: 20 E0 87 JSR $87E0 ; Clean Descriptor Stack
54AE: A9 63 LDA #$63
54B0: A0 00 LDY #$00
54B2: 85 52 STA $52
54B4: 84 53 STY $53
54B6: 85 24 STA $24
54B8: 84 25 STY $25
54BA: 20 E0 87 JSR $87E0 ; Clean Descriptor Stack
54BD: 20 F6 54 JSR $54F6 ; Check String Location
54C0: 90 0E BCC $54D0
54C2: A0 00 LDY #$00
54C4: A5 4B LDA $4B
54C6: 8D 04 FF STA $FF04
54C9: 91 24 STA ($24),Y
54CB: C8 INY
54CC: A5 4C LDA $4C
54CE: 91 24 STA ($24),Y
54D0: A5 4B LDA $4B
54D2: 85 24 STA $24
54D4: A5 4C LDA $4C
54D6: 85 25 STA $25
54D8: 20 F6 54 JSR $54F6 ; Check String Location
54DB: 90 0C BCC $54E9
54DD: 88 DEY
54DE: A9 FF LDA #$FF
54E0: 8D 04 FF STA $FF04
54E3: 91 24 STA ($24),Y
54E5: 88 DEY
54E6: 8A TXA
54E7: 91 24 STA ($24),Y
54E9: A0 02 LDY #$02
54EB: A9 52 LDA #$52
54ED: 20 AB 03 JSR $03AB ; Fetch From RAM Bank 1
54F0: 91 4B STA ($4B),Y
54F2: 88 DEY
54F3: 10 F6 BPL $54EB
54F5: 60 RTS
; Check String Location
54F6: A0 00 LDY #$00
54F8: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
54FB: 48 PHA
54FC: F0 39 BEQ $5537
54FE: C8 INY
54FF: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
5502: AA TAX
5503: C8 INY
5504: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
5507: C5 3A CMP $3A
5509: 90 06 BCC $5511
550B: D0 2A BNE $5537
550D: E4 39 CPX $39 ; Pointer: Limit-of-memory (bank 1)
550F: B0 26 BCS $5537
5511: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
5514: C5 36 CMP $36
5516: 90 1F BCC $5537
5518: D0 04 BNE $551E
551A: E4 35 CPX $35
551C: 90 19 BCC $5537
551E: C5 7C CMP $7C
5520: D0 04 BNE $5526
5522: E4 7B CPX $7B
5524: F0 11 BEQ $5537
5526: 86 24 STX $24
5528: 85 25 STA $25
552A: 68 PLA
552B: AA TAX
552C: 18 CLC
552D: 65 24 ADC $24
552F: 85 24 STA $24
5531: 90 02 BCC $5535
5533: E6 25 INC $25
5535: 38 SEC
5536: 60 RTS
5537: 68 PLA
5538: 18 CLC
5539: 60 RTS
; Perform [print#]
553A: 20 40 55 JSR $5540 ; Perform [cmd]
553D: 4C 58 56 JMP $5658
; Perform [cmd]
5540: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
5543: F0 05 BEQ $554A
5545: A9 2C LDA #$2C
5547: 20 5E 79 JSR $795E
554A: 08 PHP
554B: 86 15 STX $15 ; Current I/O prompt flag
554D: 20 EB 90 JSR $90EB ; Redirect Output
5550: 28 PLP
5551: 4C 5A 55 JMP $555A ; Perform [print]
5554: 20 E5 55 JSR $55E5
5557: 20 86 03 JSR $0386 ; CHRGOT entry
; Perform [print]
555A: F0 3C BEQ $5598
555C: C9 FB CMP #$FB
555E: D0 03 BNE $5563
5560: 4C 20 95 JMP $9520 ; Print Using
5563: F0 43 BEQ $55A8
5565: C9 A3 CMP #$A3
5567: F0 50 BEQ $55B9
5569: C9 A6 CMP #$A6
556B: 18 CLC
556C: F0 4B BEQ $55B9
556E: C9 2C CMP #$2C
5570: F0 37 BEQ $55A9
5572: C9 3B CMP #$3B
5574: F0 5E BEQ $55D4
5576: 20 EF 77 JSR $77EF ; Evaluate Expression
5579: 24 0F BIT $0F
557B: 30 D7 BMI $5554
557D: 20 42 8E JSR $8E42 ; Float to Ascii
5580: 20 9A 86 JSR $869A ; Set Up String
5583: 20 E5 55 JSR $55E5
5586: 20 00 56 JSR $5600 ; Print Format Char
5589: D0 CC BNE $5557
558B: A9 00 LDA #$00
558D: 9D 00 02 STA $0200,X
5590: A2 FF LDX #$FF
5592: A0 01 LDY #$01
5594: A5 15 LDA $15 ; Current I/O prompt flag
5596: D0 10 BNE $55A8
5598: A9 0D LDA #$0D
559A: 20 0C 56 JSR $560C
559D: 24 15 BIT $15 ; Current I/O prompt flag
559F: 10 05 BPL $55A6
55A1: A9 0A LDA #$0A
55A3: 20 0C 56 JSR $560C
55A6: 49 FF EOR #$FF
55A8: 60 RTS
55A9: 38 SEC
55AA: 20 8D 92 JSR $928D ; Call 'plot'
55AD: 98 TYA
55AE: 38 SEC
55AF: E9 0A SBC #$0A
55B1: B0 FC BCS $55AF
55B3: 49 FF EOR #$FF
55B5: 69 01 ADC #$01
55B7: D0 16 BNE $55CF
55B9: 08 PHP
55BA: 38 SEC
55BB: 20 8D 92 JSR $928D ; Call 'plot'
55BE: 84 0B STY $0B
55C0: 20 F1 87 JSR $87F1 ; Input Byte Parameter
55C3: C9 29 CMP #$29
55C5: D0 13 BNE $55DA
55C7: 28 PLP
55C8: 90 06 BCC $55D0
55CA: 8A TXA
55CB: E5 0B SBC $0B
55CD: 90 05 BCC $55D4
55CF: AA TAX
55D0: E8 INX
55D1: CA DEX
55D2: D0 09 BNE $55DD
55D4: 20 80 03 JSR $0380 ; CHRGET
55D7: 4C 63 55 JMP $5563
55DA: 4C 6C 79 JMP $796C ; Syntax Error
55DD: 20 00 56 JSR $5600 ; Print Format Char
55E0: D0 EF BNE $55D1
55E2: 20 9A 86 JSR $869A ; Set Up String
55E5: 20 81 87 JSR $8781
55E8: AA TAX
55E9: A0 00 LDY #$00
55EB: E8 INX
55EC: CA DEX
55ED: F0 B9 BEQ $55A8
55EF: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
55F2: 20 0C 56 JSR $560C
55F5: C8 INY
55F6: C9 0D CMP #$0D
55F8: D0 F2 BNE $55EC
55FA: 20 A6 55 JSR $55A6
55FD: 4C EC 55 JMP $55EC
; Print Format Char
5600: A5 15 LDA $15 ; Current I/O prompt flag
5602: F0 03 BEQ $5607 ; -print '<cursor right>'-
; -print space-
5604: A9 20 LDA #$20
5606: 2C .BYTE $2C
; -print '<cursor right>'-
5607: A9 1D LDA #$1D
5609: 2C .BYTE $2C
; -print '?'-
560A: A9 3F LDA #$3F
560C: 20 DF 90 JSR $90DF ; Basic 'chrout'
560F: 29 FF AND #$FF
5611: 60 RTS
; Perform [get]
5612: 20 D9 84 JSR $84D9 ; Check Direct
5615: 85 77 STA $77
5617: C9 23 CMP #$23
5619: F0 0A BEQ $5625
561B: C9 F9 CMP #$F9
561D: D0 16 BNE $5635 ; Getkey
561F: 20 80 03 JSR $0380 ; CHRGET
5622: 4C 35 56 JMP $5635 ; Getkey
5625: 20 80 03 JSR $0380 ; CHRGET
5628: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
562B: A9 2C LDA #$2C
562D: 20 5E 79 JSR $795E
5630: 86 15 STX $15 ; Current I/O prompt flag
5632: 20 FD 90 JSR $90FD ; Redirect Input
; Getkey
5635: A2 01 LDX #$01
5637: A0 02 LDY #$02
5639: A9 00 LDA #$00
563B: 8D 01 02 STA $0201
563E: A9 40 LDA #$40
5640: 20 B2 56 JSR $56B2
5643: A6 15 LDX $15 ; Current I/O prompt flag
5645: D0 13 BNE $565A
5647: 60 RTS
; Perform [input#]
5648: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
564B: A9 2C LDA #$2C
564D: 20 5E 79 JSR $795E
5650: 86 15 STX $15 ; Current I/O prompt flag
5652: 20 FD 90 JSR $90FD ; Redirect Input
5655: 20 71 56 JSR $5671
5658: A5 15 LDA $15 ; Current I/O prompt flag
565A: 20 6F 92 JSR $926F ; Call 'clrchn'
565D: A2 00 LDX #$00
565F: 86 15 STX $15 ; Current I/O prompt flag
5661: 60 RTS
; Perform [input]
5662: C9 22 CMP #$22
5664: D0 0B BNE $5671
5666: 20 13 79 JSR $7913
5669: A9 3B LDA #$3B
566B: 20 5E 79 JSR $795E
566E: 20 E5 55 JSR $55E5
5671: 20 D9 84 JSR $84D9 ; Check Direct
5674: A9 2C LDA #$2C
5676: 8D FF 01 STA $01FF
5679: 20 9C 56 JSR $569C ; Prompt & Input
567C: A5 15 LDA $15 ; Current I/O prompt flag
567E: F0 0D BEQ $568D
5680: 20 51 92 JSR $9251 ; Call 'status'
5683: 29 02 AND #$02
5685: F0 06 BEQ $568D
5687: 20 58 56 JSR $5658
568A: 4C 8F 52 JMP $528F ; Perform [data/bend]
568D: AD 00 02 LDA $0200
5690: D0 1E BNE $56B0
5692: A5 15 LDA $15 ; Current I/O prompt flag
5694: D0 E3 BNE $5679
5696: 20 A2 52 JSR $52A2 ; Scan To Next Statement
5699: 4C 92 52 JMP $5292
; Prompt & Input
569C: A5 15 LDA $15 ; Current I/O prompt flag
569E: D0 06 BNE $56A6
56A0: 20 0A 56 JSR $560A ; -print '?'-
56A3: 20 04 56 JSR $5604 ; -print space-
56A6: 4C 93 4F JMP $4F93 ; Receive Input Line
; Perform [read]
56A9: A6 43 LDX $43
56AB: A4 44 LDY $44
56AD: A9 98 LDA #$98
56AF: 2C .BYTE $2C
56B0: A9 00 LDA #$00
56B2: 85 13 STA $13
56B4: 86 45 STX $45
56B6: 84 46 STY $46
56B8: 20 AF 7A JSR $7AAF ; Locate Variable
56BB: 85 4B STA $4B
56BD: 84 4C STY $4C
56BF: A2 01 LDX #$01
56C1: B5 3D LDA $3D,X ; Textpointer: BASIC work point (chrget)
56C3: 95 4D STA $4D,X
56C5: B5 45 LDA $45,X
56C7: 95 3D STA $3D,X ; Textpointer: BASIC work point (chrget)
56C9: CA DEX
56CA: 10 F5 BPL $56C1
56CC: 20 86 03 JSR $0386 ; CHRGOT entry
56CF: D0 31 BNE $5702
56D1: 24 13 BIT $13
56D3: 50 1A BVC $56EF
56D5: A5 77 LDA $77
56D7: C9 F9 CMP #$F9
56D9: D0 08 BNE $56E3
56DB: 20 09 91 JSR $9109
56DE: AA TAX
56DF: F0 FA BEQ $56DB
56E1: D0 03 BNE $56E6
56E3: 20 09 91 JSR $9109
56E6: 8D 00 02 STA $0200
56E9: A2 FF LDX #$FF
56EB: A0 01 LDY #$01
56ED: D0 0F BNE $56FE
56EF: 10 03 BPL $56F4
56F1: 4C CA 57 JMP $57CA
56F4: A5 15 LDA $15 ; Current I/O prompt flag
56F6: D0 03 BNE $56FB
56F8: 20 0A 56 JSR $560A ; -print '?'-
56FB: 20 9C 56 JSR $569C ; Prompt & Input
56FE: 86 3D STX $3D ; Textpointer: BASIC work point (chrget)
5700: 84 3E STY $3E
5702: 20 80 03 JSR $0380 ; CHRGET
5705: 24 0F BIT $0F
5707: 10 31 BPL $573A
5709: 24 13 BIT $13
570B: 50 09 BVC $5716
570D: E8 INX
570E: 86 3D STX $3D ; Textpointer: BASIC work point (chrget)
5710: A9 00 LDA #$00
5712: 85 09 STA $09 ; SYS and MLM register save (SP)
5714: F0 0C BEQ $5722
5716: 85 09 STA $09 ; SYS and MLM register save (SP)
5718: C9 22 CMP #$22
571A: F0 07 BEQ $5723
571C: A9 3A LDA #$3A
571E: 85 09 STA $09 ; SYS and MLM register save (SP)
5720: A9 2C LDA #$2C
5722: 18 CLC
5723: 85 0A STA $0A
5725: A5 3D LDA $3D ; Textpointer: BASIC work point (chrget)
5727: A4 3E LDY $3E
5729: 69 00 ADC #$00
572B: 90 01 BCC $572E
572D: C8 INY
572E: 20 A0 86 JSR $86A0
5731: 20 1F 79 JSR $791F
5734: 20 05 54 JSR $5405
5737: 4C 44 57 JMP $5744
573A: A2 00 LDX #$00
573C: 20 22 8D JSR $8D22 ; String to FAC#1
573F: A5 10 LDA $10
5741: 20 E3 53 JSR $53E3
5744: 20 86 03 JSR $0386 ; CHRGOT entry
5747: F0 3B BEQ $5784
5749: C9 2C CMP #$2C
574B: F0 37 BEQ $5784
574D: A5 13 LDA $13
574F: F0 0A BEQ $575B
5751: 30 04 BMI $5757
5753: A6 15 LDX $15 ; Current I/O prompt flag
5755: D0 08 BNE $575F
5757: A2 16 LDX #$16
5759: D0 06 BNE $5761
575B: A5 15 LDA $15 ; Current I/O prompt flag
575D: F0 05 BEQ $5764
575F: A2 18 LDX #$18
5761: 4C 3C 4D JMP $4D3C ; Error
5764: 20 81 92 JSR $9281 ; Print Following Text
5767: 3F 52 45 44 4F 20 46 52 ; '?redo fr'
576F: 4F 4D 20 53 54 41 52 54 ; 'om start'
5777: 0D 00 ; '{CR}{0}'
5779: AD 02 12 LDA $1202
577C: AC 03 12 LDY $1203
577F: 85 3D STA $3D ; Textpointer: BASIC work point (chrget)
5781: 84 3E STY $3E
5783: 60 RTS
5784: A2 01 LDX #$01
5786: B5 3D LDA $3D,X ; Textpointer: BASIC work point (chrget)
5788: 95 45 STA $45,X
578A: B5 4D LDA $4D,X
578C: 95 3D STA $3D,X ; Textpointer: BASIC work point (chrget)
578E: CA DEX
578F: 10 F5 BPL $5786
5791: 20 86 03 JSR $0386 ; CHRGOT entry
5794: F0 06 BEQ $579C
5796: 20 5C 79 JSR $795C ; -Check Comma
5799: 4C B8 56 JMP $56B8
579C: A5 45 LDA $45
579E: A4 46 LDY $46
57A0: A6 13 LDX $13
57A2: 10 05 BPL $57A9
57A4: 85 43 STA $43
57A6: 84 44 STY $44
57A8: 60 RTS
57A9: A0 00 LDY #$00
57AB: A9 45 LDA #$45
57AD: 20 9F 03 JSR $039F ; Fetch From RAM Bank 0
57B0: F0 17 BEQ $57C9
57B2: A5 15 LDA $15 ; Current I/O prompt flag
57B4: D0 13 BNE $57C9
57B6: 20 81 92 JSR $9281 ; Print Following Text
57B9: 3F 45 58 54 52 41 20 49 ; '?extra i'
57C1: 47 4E 4F 52 45 44 0D 00 ; 'gnored{CR}{0}'
57C9: 60 RTS
57CA: 20 A2 52 JSR $52A2 ; Scan To Next Statement
57CD: C8 INY
57CE: AA TAX
57CF: D0 15 BNE $57E6
57D1: A2 0D LDX #$0D
57D3: C8 INY
57D4: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
57D7: F0 40 BEQ $5819
57D9: C8 INY
57DA: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
57DD: 85 41 STA $41
57DF: C8 INY
57E0: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
57E3: C8 INY
57E4: 85 42 STA $42
57E6: 20 92 52 JSR $5292
57E9: 20 86 03 JSR $0386 ; CHRGOT entry
57EC: AA TAX
57ED: E0 83 CPX #$83
57EF: D0 D9 BNE $57CA
57F1: 4C 02 57 JMP $5702
; Perform [next]
57F4: D0 13 BNE $5809
57F6: A0 FF LDY #$FF
57F8: D0 14 BNE $580E
57FA: A0 12 LDY #$12
57FC: 20 59 50 JSR $5059 ; Move B-Stack Up
57FF: 20 86 03 JSR $0386 ; CHRGOT entry
5802: C9 2C CMP #$2C
5804: D0 71 BNE $5877
5806: 20 80 03 JSR $0380 ; CHRGET
5809: 20 AF 7A JSR $7AAF ; Locate Variable
580C: 85 4B STA $4B
580E: 84 4C STY $4C
5810: A9 81 LDA #$81
5812: 20 AA 4F JSR $4FAA ; Search B-Stack For Match
5815: F0 05 BEQ $581C
5817: A2 0A LDX #$0A
5819: 4C 3C 4D JMP $4D3C ; Error
581C: 20 50 50 JSR $5050 ; Set B-Stack Pointer
581F: A5 3F LDA $3F
5821: 18 CLC
5822: 69 03 ADC #$03
5824: A4 40 LDY $40
5826: 90 01 BCC $5829
5828: C8 INY
5829: 20 D4 8B JSR $8BD4 ; Unpack ROM to FAC#1
582C: A0 08 LDY #$08
582E: B1 3F LDA ($3F),Y
5830: 85 68 STA $68
5832: A0 01 LDY #$01
5834: B1 3F LDA ($3F),Y
5836: 48 PHA
5837: AA TAX
5838: C8 INY
5839: B1 3F LDA ($3F),Y
583B: 48 PHA
583C: A8 TAY
583D: 8A TXA
583E: 20 45 88 JSR $8845 ; Add Memory
5841: 68 PLA
5842: A8 TAY
5843: 68 PLA
5844: AA TAX
5845: 8D 04 FF STA $FF04
5848: 20 00 8C JSR $8C00 ; Pack FAC#1 to RAM1
584B: A5 3F LDA $3F
584D: 18 CLC
584E: 69 09 ADC #$09
5850: A4 40 LDY $40
5852: 90 01 BCC $5855
5854: C8 INY
5855: 8D 03 FF STA $FF03
5858: 20 87 8C JSR $8C87 ; Compare FAC#1 to Memory
585B: A0 08 LDY #$08
585D: 38 SEC
585E: F1 3F SBC ($3F),Y
5860: F0 98 BEQ $57FA
5862: A0 11 LDY #$11
5864: B1 3F LDA ($3F),Y
5866: 85 3D STA $3D ; Textpointer: BASIC work point (chrget)
5868: 88 DEY
5869: B1 3F LDA ($3F),Y
586B: 85 3E STA $3E
586D: 88 DEY
586E: B1 3F LDA ($3F),Y
5870: 85 3C STA $3C
5872: 88 DEY
5873: B1 3F LDA ($3F),Y
5875: 85 3B STA $3B
5877: 60 RTS
5878: 20 5C 79 JSR $795C ; -Check Comma
; Perform [dim]
587B: AA TAX
587C: 20 B4 7A JSR $7AB4
587F: 20 86 03 JSR $0386 ; CHRGOT entry
5882: D0 F4 BNE $5878
5884: 60 RTS
; Perform [sys]
5885: 20 12 88 JSR $8812 ; -Input Float/Fixed Value
5888: A5 16 LDA $16
588A: 85 04 STA $04 ; SYS address high, MLM register PC
588C: A5 17 LDA $17
588E: 85 03 STA $03 ; SYS address low, MLM register PC
5890: AD D5 03 LDA $03D5 ; Current Bank For SYS, POKE, PEEK
5893: 85 02 STA $02 ; Bank Number, Jump to SYS Address
5895: 20 1E 9E JSR $9E1E
5898: 90 02 BCC $589C
589A: 86 06 STX $06 ; SYS and MLM register save (A)
589C: 20 1E 9E JSR $9E1E
589F: 90 02 BCC $58A3
58A1: 86 07 STX $07 ; SYS and MLM register save (X)
58A3: 20 1E 9E JSR $9E1E
58A6: 90 02 BCC $58AA
58A8: 86 08 STX $08 ; SYS and MLM register save (Y)
58AA: 20 1E 9E JSR $9E1E
58AD: 90 02 BCC $58B1
58AF: 86 05 STX $05 ; SYS and MLM register save (SR)
58B1: 4C 6E FF JMP $FF6E ; jsrfar
; Perform [tron]
58B4: A9 FF LDA #$FF
58B6: 2C .BYTE $2C
; Perform [troff]
58B7: A9 00 LDA #$00
58B9: 8D 6F 11 STA $116F ; Trace Mode: FF = on
58BC: 60 RTS
; Perform [rreg]
58BD: A9 00 LDA #$00
58BF: 85 0D STA $0D
58C1: 20 86 03 JSR $0386 ; CHRGOT entry
58C4: F0 37 BEQ $58FD
58C6: C9 2C CMP #$2C
58C8: F0 21 BEQ $58EB
58CA: 20 AF 7A JSR $7AAF ; Locate Variable
58CD: 85 4B STA $4B
58CF: 84 4C STY $4C
58D1: A5 0F LDA $0F
58D3: D0 29 BNE $58FE
58D5: A4 0D LDY $0D
58D7: B9 06 00 LDA $06,Y ; SYS and MLM register save (A)
58DA: C0 03 CPY #$03
58DC: D0 02 BNE $58E0
58DE: A5 05 LDA $05 ; SYS and MLM register save (SR)
58E0: A8 TAY
58E1: A9 00 LDA #$00
58E3: 20 3C 79 JSR $793C ; Fixed-Float
58E6: A5 10 LDA $10
58E8: 20 E3 53 JSR $53E3
58EB: E6 0D INC $0D
58ED: A5 0D LDA $0D
58EF: C9 04 CMP #$04
58F1: B0 0A BCS $58FD
58F3: 20 86 03 JSR $0386 ; CHRGOT entry
58F6: F0 05 BEQ $58FD
58F8: 20 80 03 JSR $0380 ; CHRGET
58FB: D0 C4 BNE $58C1
58FD: 60 RTS
58FE: 4C E7 77 JMP $77E7 ; Print 'type mismatch'
; Assign <mid$>
5901: 20 59 79 JSR $7959 ; -Check Left Parenthesis
5904: 20 AF 7A JSR $7AAF ; Locate Variable
5907: 85 4B STA $4B
5909: 84 4C STY $4C
590B: 20 DD 77 JSR $77DD ; Confirm String
590E: 20 09 88 JSR $8809
5911: CA DEX
5912: 86 78 STX $78
5914: C9 29 CMP #$29
5916: F0 04 BEQ $591C
5918: 20 09 88 JSR $8809
591B: 2C .BYTE $2C
591C: A2 FF LDX #$FF
591E: 86 77 STX $77
5920: 20 56 79 JSR $7956 ; -Check Right Parenthesis
5923: A9 B2 LDA #$B2
5925: 20 5E 79 JSR $795E
5928: 20 EF 77 JSR $77EF ; Evaluate Expression
592B: 20 DD 77 JSR $77DD ; Confirm String
592E: A0 02 LDY #$02
5930: A9 4B LDA #$4B
5932: 20 AB 03 JSR $03AB ; Fetch From RAM Bank 1
5935: 99 5D 00 STA $5D,Y
5938: 20 E7 42 JSR $42E7 ; Get From ($66) Bank1
593B: 99 60 00 STA $60,Y
593E: 88 DEY
593F: 10 EF BPL $5930
5941: 38 SEC
5942: A5 61 LDA $61
5944: E5 78 SBC $78
5946: 85 61 STA $61
5948: B0 02 BCS $594C
594A: C6 62 DEC $62
594C: A5 77 LDA $77
594E: C5 60 CMP $60
5950: 90 02 BCC $5954
5952: A5 60 LDA $60
5954: AA TAX
5955: F0 18 BEQ $596F
5957: 18 CLC
5958: 65 78 ADC $78
595A: B0 16 BCS $5972
595C: C5 5D CMP $5D
595E: 90 02 BCC $5962
5960: D0 10 BNE $5972
5962: A4 78 LDY $78
5964: A9 61 LDA #$61
5966: 20 AB 03 JSR $03AB ; Fetch From RAM Bank 1
5969: 91 5E STA ($5E),Y
596B: C8 INY
596C: CA DEX
596D: D0 F5 BNE $5964
596F: 4C 81 87 JMP $8781
5972: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Perform [auto]
5975: 20 F0 84 JSR $84F0 ; Check Direct
5978: 20 A0 50 JSR $50A0 ; Get Fixed Pt Number
597B: A5 16 LDA $16
597D: 85 74 STA $74 ; Auto line number increment
597F: A5 17 LDA $17
5981: 85 75 STA $75
5983: 4C 37 4D JMP $4D37 ; Error or Ready
; Perform [help]
5986: AE 08 12 LDX $1208
5989: E8 INX
598A: F0 1D BEQ $59A9
598C: AD 09 12 LDA $1209
598F: AC 0A 12 LDY $120A
5992: 85 16 STA $16
5994: 84 17 STY $17
5996: 20 64 50 JSR $5064 ; Find Basic Line
5999: 90 0E BCC $59A9
599B: 66 55 ROR $55
599D: 20 98 55 JSR $5598
59A0: A6 16 LDX $16
59A2: A5 17 LDA $17
59A4: 20 23 51 JSR $5123 ; List Subroutine
59A7: 46 55 LSR $55
59A9: 4C 98 55 JMP $5598
; Insert Help Marker
59AC: A6 62 LDX $62
59AE: 98 TYA
59AF: 18 CLC
59B0: 65 61 ADC $61
59B2: 90 01 BCC $59B5
59B4: E8 INX
59B5: EC 0F 12 CPX $120F
59B8: D0 14 BNE $59CE
59BA: CD 0E 12 CMP $120E
59BD: 90 0F BCC $59CE
59BF: F0 0D BEQ $59CE
59C1: 46 55 LSR $55
59C3: A9 12 LDA #$12
59C5: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
59C7: 10 02 BPL $59CB
59C9: A9 02 LDA #$02
59CB: 4C 0C 56 JMP $560C
59CE: 60 RTS
; Perform [gosub]
59CF: 20 1D 5A JSR $5A1D ; Put Sub To B-Stack
59D2: 20 86 03 JSR $0386 ; CHRGOT entry
59D5: 20 DB 59 JSR $59DB ; Perform [goto]
59D8: 4C F6 4A JMP $4AF6
; Perform [goto]
59DB: 20 A0 50 JSR $50A0 ; Get Fixed Pt Number
59DE: A5 0A LDA $0A
59E0: F0 38 BEQ $5A1A
59E2: 20 A5 52 JSR $52A5 ; Scan To Next Line
59E5: 38 SEC
59E6: A5 3B LDA $3B
59E8: E5 16 SBC $16
59EA: A5 3C LDA $3C
59EC: E5 17 SBC $17
59EE: B0 0B BCS $59FB
59F0: 98 TYA
59F1: 38 SEC
59F2: 65 3D ADC $3D ; Textpointer: BASIC work point (chrget)
59F4: A6 3E LDX $3E
59F6: 90 07 BCC $59FF
59F8: E8 INX
59F9: B0 04 BCS $59FF
59FB: A5 2D LDA $2D ; Pointer: Start-of-BASIC (bank 0)
59FD: A6 2E LDX $2E
59FF: 20 68 50 JSR $5068
5A02: 90 11 BCC $5A15 ; Undef'd Statement
5A04: A5 61 LDA $61
5A06: E9 01 SBC #$01
5A08: 85 3D STA $3D ; Textpointer: BASIC work point (chrget)
5A0A: A5 62 LDA $62
5A0C: E9 00 SBC #$00
5A0E: 85 3E STA $3E
5A10: 24 7F BIT $7F
5A12: 10 6D BPL $5A81
5A14: 60 RTS
; Undef'd Statement
5A15: A2 11 LDX #$11
5A17: 4C 3C 4D JMP $4D3C ; Error
5A1A: 4C 6C 79 JMP $796C ; Syntax Error
; Put Sub To B-Stack
5A1D: A9 05 LDA #$05
5A1F: 20 FE 4F JSR $4FFE ; Move B-Stack Down
5A22: A0 04 LDY #$04
5A24: A5 3E LDA $3E
5A26: 91 7D STA ($7D),Y
5A28: 88 DEY
5A29: A5 3D LDA $3D ; Textpointer: BASIC work point (chrget)
5A2B: 91 7D STA ($7D),Y
5A2D: 88 DEY
5A2E: A5 3C LDA $3C
5A30: 91 7D STA ($7D),Y
5A32: 88 DEY
5A33: A5 3B LDA $3B
5A35: 91 7D STA ($7D),Y
5A37: 88 DEY
5A38: A9 8D LDA #$8D
5A3A: 91 7D STA ($7D),Y
5A3C: 60 RTS
; Perform [go]
5A3D: 20 80 03 JSR $0380 ; CHRGET
5A40: C9 A4 CMP #$A4
5A42: D0 06 BNE $5A4A
5A44: 20 80 03 JSR $0380 ; CHRGET
5A47: 4C DB 59 JMP $59DB ; Perform [goto]
5A4A: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
5A4D: E0 40 CPX #$40
5A4F: F0 03 BEQ $5A54
5A51: 4C 6C 79 JMP $796C ; Syntax Error
5A54: 20 E1 A7 JSR $A7E1 ; Print 'are you sure'
5A57: D0 06 BNE $5A5F
5A59: 20 45 A8 JSR $A845 ; Set Bank 15
5A5C: 4C 4D FF JMP $FF4D ; 64mode
5A5F: 60 RTS
; Perform [cont]
5A60: D0 38 BNE $5A9A
5A62: 24 7F BIT $7F
5A64: 30 34 BMI $5A9A
5A66: A2 1A LDX #$1A
5A68: AC 03 12 LDY $1203
5A6B: D0 03 BNE $5A70
5A6D: 4C 3C 4D JMP $4D3C ; Error
5A70: AD 02 12 LDA $1202
5A73: 85 3D STA $3D ; Textpointer: BASIC work point (chrget)
5A75: 84 3E STY $3E
5A77: AD 00 12 LDA $1200
5A7A: AC 01 12 LDY $1201
5A7D: 85 3B STA $3B
5A7F: 84 3C STY $3C
5A81: A9 80 LDA #$80
5A83: 85 7F STA $7F
5A85: 0A ASL A
5A86: 85 74 STA $74 ; Auto line number increment
5A88: 85 75 STA $75
5A8A: 8D 7F 12 STA $127F ; Collision Mask
5A8D: 85 F6 STA $F6 ; Auto-Insert Mode Flag
5A8F: A2 02 LDX #$02
5A91: 9D 76 12 STA $1276,X ; Collision IRQ Task Table
5A94: CA DEX
5A95: 10 FA BPL $5A91
5A97: 4C 90 FF JMP $FF90 ; setmsg Control OS Messages
5A9A: 60 RTS
; Perform [run]
5A9B: F0 18 BEQ $5AB5
5A9D: 90 1C BCC $5ABB
5A9F: A9 40 LDA #$40
5AA1: 85 7F STA $7F
5AA3: 20 A7 A1 JSR $A1A7 ; Perform [dload]
5AA6: 20 81 5A JSR $5A81
5AA9: 20 F3 51 JSR $51F3 ; Set Up Run
5AAC: 20 4F 4F JSR $4F4F ; Rechain Lines
5AAF: 20 98 55 JSR $5598
5AB2: 4C F6 4A JMP $4AF6
5AB5: 20 81 5A JSR $5A81
5AB8: 4C F3 51 JMP $51F3 ; Set Up Run
5ABB: 20 FA 51 JSR $51FA
5ABE: 20 86 03 JSR $0386 ; CHRGOT entry
5AC1: 20 DB 59 JSR $59DB ; Perform [goto]
5AC4: 20 81 5A JSR $5A81
5AC7: 4C F6 4A JMP $4AF6
; Perform [restore]
5ACA: F0 15 BEQ $5AE1
5ACC: 20 12 88 JSR $8812 ; -Input Float/Fixed Value
5ACF: 84 16 STY $16
5AD1: 85 17 STA $17
5AD3: 20 64 50 JSR $5064 ; Find Basic Line
5AD6: B0 03 BCS $5ADB
5AD8: 4C 15 5A JMP $5A15 ; Undef'd Statement
5ADB: A5 61 LDA $61
5ADD: A4 62 LDY $62
5ADF: B0 05 BCS $5AE6
5AE1: 38 SEC
5AE2: A5 2D LDA $2D ; Pointer: Start-of-BASIC (bank 0)
5AE4: A4 2E LDY $2E
5AE6: E9 01 SBC #$01
5AE8: B0 01 BCS $5AEB
5AEA: 88 DEY
5AEB: 85 43 STA $43
5AED: 84 44 STY $44
5AEF: 60 RTS
; Keywords To Renumber
5AF0: 89 8A 8D A7 8C D6 D7 D5 ; '..{SHCR}..VWU'
; GOTO, RUN, GOSUB, THEN, RESTORE, RESUME, TRAP, ELSE
; Perform [renumber]
5AF8: 20 F0 84 JSR $84F0 ; Check Direct
5AFB: A9 00 LDA #$00
5AFD: A2 0A LDX #$0A ; default value =10
5AFF: 8E 70 11 STX $1170 ; for start
5B02: 8D 71 11 STA $1171
5B05: 8E 72 11 STX $1172 ; and step!
5B08: 8D 73 11 STA $1173
5B0B: 85 5C STA $5C
5B0D: 85 5D STA $5D
5B0F: 20 86 03 JSR $0386 ; CHRGOT entry
5B12: F0 54 BEQ $5B68 ; no parameters
5B14: 20 A0 50 JSR $50A0 ; 1st parameter Start: Get Fixed Pt Number -> $16/$17
5B17: A5 0A LDA $0A
5B19: F0 0A BEQ $5B25
5B1B: A5 16 LDA $16
5B1D: A6 17 LDX $17
5B1F: 8D 70 11 STA $1170 ; save new start value
5B22: 8E 71 11 STX $1171
5B25: 20 06 9E JSR $9E06 ; 2nd parameter Step: Optional Float/Fixed Parameter
5B28: 90 0E BCC $5B38 ; No value?
5B2A: 8C 72 11 STY $1172
5B2D: 8D 73 11 STA $1173 ; is new value =0?
5B30: 0D 72 11 ORA $1172
5B33: D0 03 BNE $5B38
5B35: 4C 28 7D JMP $7D28 ; Error 'illegal quantity'
5B38: 20 06 9E JSR $9E06 ; 3rd parameter Oldstart: Optional Float/Fixed Parameter
5B3B: 90 2B BCC $5B68 ; No value?
5B3D: 84 5C STY $5C ; line to start of (old start)
5B3F: 84 16 STY $16
5B41: 85 5D STA $5D
5B43: 85 17 STA $17
5B45: 20 64 50 JSR $5064 ; Find Basic Line ($16/$17)
5B48: A5 61 LDA $61
5B4A: A6 62 LDX $62
5B4C: 85 5A STA $5A ; Pointer to first line
5B4E: 86 5B STX $5B
5B50: AD 70 11 LDA $1170 ; New start line
5B53: AE 71 11 LDX $1171
5B56: 85 16 STA $16
5B58: 86 17 STX $17
5B5A: 20 64 50 JSR $5064 ; Find Basic Line
5B5D: 38 SEC
5B5E: A5 61 LDA $61 ; Old start line address (O3) - new start line address (N1)
5B60: E5 5A SBC $5A ; O1 O2 O3 (old line numbering)
5B62: A5 62 LDA $62 ; |----|--|=|=======|
5B64: E5 5B SBC $5B ; N1 N2
; "-" untouched area, "=" changed area
; A line with the number range N1 N2 must not lay inside
; the untouched area, otherwise the line number would
; appear twice!
5B66: 90 CD BCC $5B35 ; < -> illegal quantity error
; Start of pass 1: check if new linenumbers are in a valid range (does not exceed 63999)
5B68: 20 68 5D JSR $5D68 ; Get Renumber Start
; ($1170/$1171) -> ($64/$65), textptr to BASIC start ($2D/$2E)-1 -> $3D/$3E
5B6B: 20 9C 5D JSR $5D9C ; Scan ahead ($3D/$3E)++, Y=0, link low
5B6E: C8 INY ; Y=1
5B6F: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0 with offset 1: link high
5B72: F0 3A BEQ $5BAE ; Start real pass 1
; Advance to old start line loop:
5B74: C8 INY ; Y=2 (Y=1 if coming from $5886)
5B75: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0 with offset 2: number low
5B78: 38 SEC
5B79: E5 5C SBC $5C
5B7B: C8 INY ; Y=3
5B7C: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0 with offset 3: number high
5B7F: E5 5D SBC $5D
5B81: B0 07 BCS $5B8A ; current line >= old start line
5B83: 20 9D 5B JSR $5B9D ; advance to next line (textptr at link high)
5B86: D0 EC BNE $5B74 ; loop
5B88: F0 24 BEQ $5BAE ; Start real pass 1
; Step through new lines loop:
5B8A: 20 9D 5B JSR $5B9D ; advance to next line (textptr at link high)
5B8D: F0 1F BEQ $5BAE ; End of text Start real pass 1
5B8F: 20 89 5D JSR $5D89 ; line number += step ($65/$64) += ($1172/$1173)
5B92: B0 04 BCS $5B98
5B94: C9 F9 CMP #$F9 ; Line number passed 63999?
5B96: 90 F2 BCC $5B8A
5B98: A2 26 LDX #$26 ; Yes, lLine number too large error
5B9A: 4C 3C 4D JMP $4D3C ; Error
; Advance to next line traversing the link pointer
5B9D: A0 00 LDY #$00
5B9F: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0: Link low
5BA2: AA TAX
5BA3: C8 INY
5BA4: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0: Link high
5BA7: F0 04 BEQ $5BAD
5BA9: 86 3D STX $3D ; Textpointer: BASIC work point (chrget)
5BAB: 85 3E STA $3E
5BAD: 60 RTS
; Real pass 1
5BAE: A9 01 LDA #$01
5BB0: 85 77 STA $77 ; Pass down counter = 1
5BB2: AD 10 12 LDA $1210 ; End of Basic, Bank 0
5BB5: AE 11 12 LDX $1211
5BB8: 85 3F STA $3F ; Block move end pointer
5BBA: 86 40 STX $40
5BBC: 20 FB 5B JSR $5BFB ; Renumber Scan, first pass
5BBF: C6 77 DEC $77
5BC1: 20 FB 5B JSR $5BFB ; Renumber Scan, second pass
; Change all line numbers:
5BC4: 20 99 5D JSR $5D99 ; Scan Ahead, link high
5BC7: F0 2F BEQ $5BF8 ; Exit with "Rechain lines" if end of text
5BC9: 20 9C 5D JSR $5D9C ; Scan ahead ($3D/$3E)++, Y=0, line number low
5BCC: 85 16 STA $16
5BCE: C8 INY ; Y=1
5BCF: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0 Offset 1, line number high
5BD2: 38 SEC
5BD3: E5 5D SBC $5D ; compare high byte with old start line
5BD5: 90 19 BCC $5BF0
5BD7: D0 06 BNE $5BDF
5BD9: A5 16 LDA $16 ; compare low byte with old start line
5BDB: E5 5C SBC $5C
5BDD: 90 11 BCC $5BF0 ; Start found
5BDF: A5 64 LDA $64 ; Set new line number high
5BE1: 91 3D STA ($3D),Y ; Textpointer: BASIC work point (chrget)
5BE3: 88 DEY
5BE4: A5 65 LDA $65 ; Set new line number low
5BE6: 91 3D STA ($3D),Y ; Textpointer: BASIC work point (chrget)
5BE8: 20 9C 5D JSR $5D9C ; Scan ahead ($3D/$3E)++, Y=0, link low
5BEB: 20 80 5D JSR $5D80 ; Add step to new line number ($65/$64), advance to end of line
5BEE: F0 D4 BEQ $5BC4 ; Branch always, looping line number change
5BF0: 20 9C 5D JSR $5D9C ; Scan ahead ($3D/$3E)++, Y=0, link low
5BF3: 20 83 5D JSR $5D83 ; Read to end of line
5BF6: F0 CC BEQ $5BC4 ; Branch always, Looping line number change
5BF8: 4C E5 5E JMP $5EE5 ; Rechain lines
; Renumber Scan
5BFB: 20 54 52 JSR $5254 ; Textptr to BASIC start minus 1
5BFE: 20 99 5D JSR $5D99 ; Skip 2 bytes
5C01: D0 03 BNE $5C06 ; Continue with scan
5C03: 4C 68 5D JMP $5D68 ; End of text -> Get Renumber Start
5C06: 20 9C 5D JSR $5D9C ; Scan ahead ($3D/$3E)++, Y=0, line number low
5C09: 85 4B STA $4B
5C0B: 20 9C 5D JSR $5D9C ; Scan ahead ($3D/$3E)++, Y=0, line number high
5C0E: 85 4C STA $4C
5C10: 20 9C 5D JSR $5D9C ; Scan ahead ($3D/$3E)++, Y=0, line text
5C13: C9 22 CMP #$22 ; Quote, in string?
5C15: D0 0B BNE $5C22
5C17: 20 9C 5D JSR $5D9C ; Scan ahead ($3D/$3E)++, Y=0, string byte
5C1A: F0 E2 BEQ $5BFE ; End of text?
5C1C: C9 22 CMP #$22 ; End of string?
5C1E: D0 F7 BNE $5C17 ; Continue in string
5C20: F0 EE BEQ $5C10 ; End of string
5C22: AA TAX ; BASIC text byte (not in string)
5C23: F0 D9 BEQ $5BFE ; End of line, continue with next line
5C25: 10 E9 BPL $5C10 ; Not a token, continue scan
5C27: A2 08 LDX #$08 ; Check for 8 tokens ...
5C29: DD EF 5A CMP $5AEF,X ; Check for line number command token
5C2C: F0 28 BEQ $5C56
5C2E: CA DEX
5C2F: D0 F8 BNE $5C29 ; Check for next token in list
5C31: C9 CB CMP #$CB ; GO token
5C33: D0 0B BNE $5C40
5C35: 20 80 03 JSR $0380 ; CHRGET
5C38: F0 C4 BEQ $5BFE ; End of line, continue with next line
5C3A: C9 A4 CMP #$A4 ; TO token
5C3C: F0 18 BEQ $5C56 ; Handle line number
5C3E: D0 D0 BNE $5C10 ; Loop through text
5C40: C9 FE CMP #$FE ; Token extension prefix
5C42: D0 CC BNE $5C10
5C44: 20 80 03 JSR $0380 ; CHRGET
5C47: F0 EC BEQ $5C35
5C49: C9 17 CMP #$17 ; COLLISION command?
5C4B: D0 C3 BNE $5C10
5C4D: 20 80 03 JSR $0380 ; CHRGET
5C50: F0 E3 BEQ $5C35 ; End of line
5C52: C9 2C CMP #$2C ; search for ","
5C54: D0 F7 BNE $5C4D ; No COLLISION with line number argument
; Renumber scan: handle line number
5C56: A5 3D LDA $3D ; Textpointer: BASIC work point (chrget)
5C58: 8D 00 12 STA $1200 ; save current textptr to $1200/$1201
5C5B: A5 3E LDA $3E
5C5D: 8D 01 12 STA $1201
5C60: 20 80 03 JSR $0380 ; CHRGET, get line number digit
5C63: B0 AE BCS $5C13 ; no digit, contine scan line text
5C65: 20 A0 50 JSR $50A0 ; Get Fixed Pt Number: line number old
5C68: 20 19 5D JSR $5D19 ; Convert Line Number: to line number new
5C6B: AD 00 12 LDA $1200 ; restore textptr (start of line number)
5C6E: 85 3D STA $3D ; Textpointer: BASIC work point (chrget)
5C70: AD 01 12 LDA $1201
5C73: 85 3E STA $3E
5C75: 20 80 03 JSR $0380 ; CHRGET
5C78: A5 3D LDA $3D ; Decrement Textpointer
5C7A: D0 02 BNE $5C7E
5C7C: C6 3E DEC $3E
5C7E: C6 3D DEC $3D ; Textpointer: BASIC work point (chrget)
5C80: A2 FF LDX #$FF
5C82: A5 77 LDA $77
5C84: F0 41 BEQ $5CC7 ; 2nd pass handler
; Scan during first pass:
5C86: 20 8E 7E JSR $7E8E ; Patch for Renumber Scan: $5C8F+CHRGOT
5C89: C9 2C CMP #$2C ; ","?
5C8B: F0 C9 BEQ $5C56 ; Handle next line number
5C8D: D0 84 BNE $5C13 ; Contine scan line text
5C8F: E8 INX
5C90: BD 01 01 LDA $0101,X ; New line number
5C93: F0 1F BEQ $5CB4 ; End of new line number? new line number is shorter!
5C95: 20 80 03 JSR $0380 ; CHRGET ; Old line number digit
5C98: 90 F5 BCC $5C8F ; Loop as long old and new number has a digit
; longer line number
5C9A: E6 3F INC $3F ; Increment end of text pointer
5C9C: D0 02 BNE $5CA0
5C9E: E6 40 INC $40
5CA0: 38 SEC
5CA1: A5 3F LDA $3F ; End of text greater or equal than
5CA3: ED 12 12 SBC $1212 ; Basic Program Limit [FF00]?
5CA6: A5 40 LDA $40
5CA8: ED 13 12 SBC $1213
5CAB: B0 17 BCS $5CC4 ; Yes -> out of memory error!
5CAD: E8 INX ; Next byte in new line number
5CAE: BD 01 01 LDA $0101,X ; New line number digit
5CB1: D0 E7 BNE $5C9A ; still longer, loop
5CB3: 60 RTS
; Shorter line number:
5CB4: 20 80 03 JSR $0380 ; CHRGET ; Get digit?
5CB7: B0 0A BCS $5CC3 ; Exit loop if not a digit
5CB9: A5 3F LDA $3F ; Decrement end of text pointer
5CBB: D0 02 BNE $5CBF
5CBD: C6 40 DEC $40
5CBF: C6 3F DEC $3F
5CC1: 90 F1 BCC $5CB4 ; Branch always, next digit loop
5CC3: 60 RTS
5CC4: 4C 3A 4D JMP $4D3A ; Print 'out of memory'
; Renumber scan: 2nd pass handler: fill in new line number including to adjust room for it
5CC7: E8 INX
5CC8: BD 01 01 LDA $0101,X ; New line number digit
5CCB: F0 2C BEQ $5CF9 ; Shorter: move block down
5CCD: 48 PHA ; Save new number's digit
5CCE: 20 9C 5D JSR $5D9C ; Scan ahead ($3D/$3E)++, Y=0, line number digit
5CD1: C9 3A CMP #$3A ; ":" -> block move
5CD3: B0 0C BCS $5CE1
5CD5: C9 20 CMP #$20 ; " " -> block move
5CD7: F0 08 BEQ $5CE1
5CD9: 38 SEC ; Check for digit ...
5CDA: E9 30 SBC #$30
5CDC: 38 SEC
5CDD: E9 D0 SBC #$D0
5CDF: 90 10 BCC $5CF1 ; Digit -> write new number into text
5CE1: 20 A7 5D JSR $5DA7 ; Set Up Block Move
5CE4: E6 6D INC $6D ; Move up
5CE6: 20 DF 5D JSR $5DDF ; Block Move Up
5CE9: EE 10 12 INC $1210 ; Increment End of Basic, Bank 0, low byte
5CEC: D0 03 BNE $5CF1
5CEE: EE 11 12 INC $1211 ; High byte
5CF1: 68 PLA ; New line number digit
5CF2: A0 00 LDY #$00
5CF4: 91 3D STA ($3D),Y ; Write it to the BASIC text, overwrites old number
5CF6: E8 INX
5CF7: D0 CF BNE $5CC8 ; Next digit of new line number
5CF9: 20 80 03 JSR $0380 ; CHRGET, old line number digit
5CFC: B0 8B BCS $5C89 ; No digit!
5CFE: 20 A7 5D JSR $5DA7 ; Set Up Block Move
5D01: C6 6D DEC $6D ; Move down (new number is shorter)
5D03: 20 C6 5D JSR $5DC6 ; Block Move Down
5D06: AD 10 12 LDA $1210 ; Decrement End of Basic, Bank 0
5D09: D0 03 BNE $5D0E
5D0B: CE 11 12 DEC $1211
5D0E: CE 10 12 DEC $1210 ; End of Basic, Bank 0, low byte
5D11: 20 86 03 JSR $0386 ; CHRGOT entry
5D14: 90 E8 BCC $5CFE ; Still a digit, move block down
5D16: 4C 89 5C JMP $5C89 ; Continue to scan text
; Convert Line Number (find jump destination line $16/$17)
5D19: 20 68 5D JSR $5D68 ; Get Renumber Start -> $65/$64
5D1C: 20 99 5D JSR $5D99 ; loop start: scan Ahead +2
5D1F: D0 0D BNE $5D2E ; process line ...
5D21: A2 27 LDX #$27 ; program end, line not found, error number into X
5D23: A5 4B LDA $4B ; restore Basic text pointer
5D25: 85 3B STA $3B
5D27: A5 4C LDA $4C
5D29: 85 3C STA $3C
5D2B: 4C 3C 4D JMP $4D3C ; unresolved reference Error
5D2E: 20 9C 5D JSR $5D9C ; program line number low
5D31: 85 5A STA $5A
5D33: C5 16 CMP $16 ; equal line searched for?
5D35: D0 27 BNE $5D5E ; fetch line number high and to next line
5D37: 20 9C 5D JSR $5D9C ; scan ahead
5D3A: 85 5B STA $5B ; program line number high
5D3C: C5 17 CMP $17 ; equal line searched for?
5D3E: D0 23 BNE $5D63 ; to next line
; Line number found, check if in new line number range:
5D40: 38 SEC ; destination line
5D41: E5 5D SBC $5D ; below old startline?
5D43: 90 08 BCC $5D4D ; below, no conversion needed
5D45: D0 0E BNE $5D55 ; greater, do conversion
5D47: A5 16 LDA $16
5D49: E5 5C SBC $5C ; check low byte if high is same
5D4B: B0 08 BCS $5D55 ; greater, do conversion
5D4D: A5 16 LDA $16 ; in old line area, keep line number
5D4F: 85 65 STA $65 ; (new line number overwritten with old one)
5D51: A5 17 LDA $17
5D53: 85 64 STA $64
; Convert line number $65/$64 to text into $0100
5D55: A2 90 LDX #$90 ; float exponent ($90-$80= $10 = 2^16)
5D57: 38 SEC
5D58: 20 75 8C JSR $8C75 ; Fixed-Float (from $65/64)
5D5B: 4C 42 8E JMP $8E42 ; Float to ASCII (to $0100) and return
5D5E: 20 9C 5D JSR $5D9C ; scan ahead
5D61: 85 5B STA $5B ; basic text line number high
5D63: 20 75 5D JSR $5D75 ; Count Off Lines
5D66: F0 B4 BEQ $5D1C ; Branch always, next line
; Get Renumber Start
5D68: AD 70 11 LDA $1170 ; Renumber start line low byte
5D6B: 85 65 STA $65
5D6D: AD 71 11 LDA $1171 ; Renumber start line high byte
5D70: 85 64 STA $64
5D72: 4C 54 52 JMP $5254 ; Textptr to BASIC start minus 1
; Count Off Lines
5D75: A5 5A LDA $5A ; current line comparing
5D77: 38 SEC
5D78: E5 5C SBC $5C ; to old startline ...
5D7A: A5 5B LDA $5B
5D7C: E5 5D SBC $5D
5D7E: 90 03 BCC $5D83 ; ... below (skip counting)
5D80: 20 89 5D JSR $5D89 ; add renumber increment to $65/$64
5D83: 20 9C 5D JSR $5D9C ; read basic text byte
5D86: D0 FB BNE $5D83 ; until end of line
5D88: 60 RTS
; Add Renumber Increment
5D89: A5 65 LDA $65 ; new line numbers counted up so far
5D8B: 18 CLC
5D8C: 6D 72 11 ADC $1172 ; add step parameter
5D8F: 85 65 STA $65
5D91: A5 64 LDA $64
5D93: 6D 73 11 ADC $1173
5D96: 85 64 STA $64
5D98: 60 RTS
; Scan Ahead 2 Bytes
5D99: 20 9C 5D JSR $5D9C ; scan ahead 2 bytes in basic text
; Scan Ahead 1 Byte
5D9C: A0 00 LDY #$00 ; scan ahead one byte in basic text
5D9E: E6 3D INC $3D ; Textpointer: BASIC work point (chrget)
5DA0: D0 02 BNE $5DA4
5DA2: E6 3E INC $3E ; pre-increment
5DA4: 4C C9 03 JMP $03C9 ; Txtptr Fetch From RAM Bank 0
; Set Up Block Move
5DA7: A5 3D LDA $3D ; Textpointer: BASIC work point (chrget)
5DA9: 85 24 STA $24
5DAB: A5 3E LDA $3E
5DAD: 85 25 STA $25
5DAF: AD 10 12 LDA $1210 ; End of Basic, Bank 0
5DB2: 85 26 STA $26
5DB4: AD 11 12 LDA $1211
5DB7: 85 27 STA $27
5DB9: A0 00 LDY #$00
5DBB: 84 0D STY $0D
5DBD: 84 6D STY $6D
5DBF: 60 RTS
5DC0: E6 24 INC $24
5DC2: D0 02 BNE $5DC6 ; Block Move Down
5DC4: E6 25 INC $25
; Block Move Down
5DC6: A4 0D LDY $0D
5DC8: C8 INY
5DC9: 20 05 43 JSR $4305 ; Get From ($24) Bank0
5DCC: A4 6D LDY $6D
5DCE: C8 INY
5DCF: 91 24 STA ($24),Y
5DD1: 20 EE 5D JSR $5DEE ; Check Block Limit
5DD4: D0 EA BNE $5DC0
5DD6: 60 RTS
5DD7: A5 26 LDA $26
5DD9: D0 02 BNE $5DDD
5DDB: C6 27 DEC $27
5DDD: C6 26 DEC $26
; Block Move Up
5DDF: A4 0D LDY $0D
5DE1: 20 C0 03 JSR $03C0 ; Index2 Indirect Fetch From RAM Bank 0
5DE4: A4 6D LDY $6D
5DE6: 91 26 STA ($26),Y
5DE8: 20 EE 5D JSR $5DEE ; Check Block Limit
5DEB: D0 EA BNE $5DD7
5DED: 60 RTS
; Check Block Limit
5DEE: A5 24 LDA $24
5DF0: C5 26 CMP $26
5DF2: D0 04 BNE $5DF8
5DF4: A5 25 LDA $25
5DF6: C5 27 CMP $27
5DF8: 60 RTS
; Perform [for]
5DF9: A9 80 LDA #$80
5DFB: 85 12 STA $12
5DFD: 20 C6 53 JSR $53C6 ; Perform [let]
5E00: A9 81 LDA #$81
5E02: 20 AA 4F JSR $4FAA ; Search B-Stack For Match
5E05: F0 08 BEQ $5E0F
5E07: A9 12 LDA #$12
5E09: 20 FE 4F JSR $4FFE ; Move B-Stack Down
5E0C: 20 47 50 JSR $5047 ; Copy B-Stack Pointer
5E0F: 20 50 50 JSR $5050 ; Set B-Stack Pointer
5E12: 20 A2 52 JSR $52A2 ; Scan To Next Statement
5E15: 98 TYA
5E16: A0 11 LDY #$11
5E18: 18 CLC
5E19: 65 3D ADC $3D ; Textpointer: BASIC work point (chrget)
5E1B: 91 7D STA ($7D),Y
5E1D: A5 3E LDA $3E
5E1F: 69 00 ADC #$00
5E21: 88 DEY
5E22: 91 7D STA ($7D),Y
5E24: A5 3C LDA $3C
5E26: 88 DEY
5E27: 91 7D STA ($7D),Y
5E29: A5 3B LDA $3B
5E2B: 88 DEY
5E2C: 91 7D STA ($7D),Y
5E2E: A9 A4 LDA #$A4
5E30: 20 5E 79 JSR $795E
5E33: 20 DA 77 JSR $77DA ; Confirm Numeric
5E36: 20 D7 77 JSR $77D7 ; Type Match Check
5E39: A5 68 LDA $68
5E3B: 09 7F ORA #$7F
5E3D: 25 64 AND $64
5E3F: 85 64 STA $64
5E41: A2 04 LDX #$04
5E43: A0 0D LDY #$0D
5E45: B5 63 LDA $63,X
5E47: 91 7D STA ($7D),Y
5E49: CA DEX
5E4A: 88 DEY
5E4B: 10 F8 BPL $5E45
5E4D: A9 9C LDA #$9C
5E4F: A0 89 LDY #$89
5E51: 20 D4 8B JSR $8BD4 ; Unpack ROM to FAC#1
5E54: 20 86 03 JSR $0386 ; CHRGOT entry
5E57: C9 A9 CMP #$A9
5E59: D0 06 BNE $5E61
5E5B: 20 80 03 JSR $0380 ; CHRGET
5E5E: 20 D7 77 JSR $77D7 ; Type Match Check
5E61: 20 57 8C JSR $8C57 ; Get Sign
5E64: 48 PHA
5E65: 20 47 8C JSR $8C47 ; Round FAC#1
5E68: 68 PLA
5E69: A0 08 LDY #$08
5E6B: A2 05 LDX #$05
5E6D: 91 7D STA ($7D),Y
5E6F: B5 62 LDA $62,X
5E71: 88 DEY
5E72: CA DEX
5E73: 10 F8 BPL $5E6D
5E75: A5 4C LDA $4C
5E77: 91 7D STA ($7D),Y
5E79: A5 4B LDA $4B
5E7B: 88 DEY
5E7C: 91 7D STA ($7D),Y
5E7E: A9 81 LDA #$81
5E80: 88 DEY
5E81: 91 7D STA ($7D),Y
5E83: 60 RTS
5E84: 4C 6C 79 JMP $796C ; Syntax Error
; Perform [delete]
5E87: 20 F0 84 JSR $84F0 ; Check Direct
5E8A: 20 86 03 JSR $0386 ; CHRGOT entry
5E8D: F0 F5 BEQ $5E84
5E8F: 20 FB 5E JSR $5EFB ; Get Line Number Range
5E92: A5 61 LDA $61
5E94: A6 62 LDX $62
5E96: 85 26 STA $26
5E98: 86 27 STX $27
5E9A: 20 64 50 JSR $5064 ; Find Basic Line
5E9D: 90 15 BCC $5EB4
5E9F: A0 01 LDY #$01
5EA1: 20 EC 42 JSR $42EC ; Get From ($61) Bank0
5EA4: 88 DEY
5EA5: AA TAX
5EA6: D0 05 BNE $5EAD
5EA8: 20 EC 42 JSR $42EC ; Get From ($61) Bank0
5EAB: F0 07 BEQ $5EB4
5EAD: 20 EC 42 JSR $42EC ; Get From ($61) Bank0
5EB0: 85 61 STA $61
5EB2: 86 62 STX $62
5EB4: A5 26 LDA $26
5EB6: 38 SEC
5EB7: E5 61 SBC $61
5EB9: AA TAX
5EBA: A5 27 LDA $27
5EBC: E5 62 SBC $62
5EBE: A8 TAY
5EBF: B0 24 BCS $5EE5
5EC1: 8A TXA
5EC2: 18 CLC
5EC3: 6D 10 12 ADC $1210 ; End of Basic, Bank 0
5EC6: 8D 10 12 STA $1210 ; End of Basic, Bank 0
5EC9: 98 TYA
5ECA: 6D 11 12 ADC $1211
5ECD: 8D 11 12 STA $1211
5ED0: A0 00 LDY #$00
5ED2: 20 EC 42 JSR $42EC ; Get From ($61) Bank0
5ED5: 91 26 STA ($26),Y
5ED7: E6 61 INC $61
5ED9: D0 02 BNE $5EDD
5EDB: E6 62 INC $62
5EDD: 20 94 7E JSR $7E94 ; Patch for [delete]
5EE0: 90 F0 BCC $5ED2
5EE2: EA NOP
5EE3: EA NOP
5EE4: EA NOP
5EE5: 20 4F 4F JSR $4F4F ; Rechain Lines
5EE8: A5 24 LDA $24
5EEA: A6 25 LDX $25
5EEC: 18 CLC
5EED: 69 02 ADC #$02
5EEF: 8D 10 12 STA $1210 ; End of Basic, Bank 0
5EF2: 90 01 BCC $5EF5
5EF4: E8 INX
5EF5: 8E 11 12 STX $1211
5EF8: 60 RTS
; Unused
5EF9: 00 00 ; '{0}{0}'
; Get Line Number Range
5EFB: F0 12 BEQ $5F0F
5EFD: 90 10 BCC $5F0F
5EFF: C9 AB CMP #$AB
5F01: D0 2E BNE $5F31
5F03: A0 01 LDY #$01
5F05: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
5F08: F0 27 BEQ $5F31
5F0A: C9 3A CMP #$3A
5F0C: F0 23 BEQ $5F31
5F0E: 38 SEC
5F0F: 20 A0 50 JSR $50A0 ; Get Fixed Pt Number
5F12: 20 64 50 JSR $5064 ; Find Basic Line
5F15: 20 86 03 JSR $0386 ; CHRGOT entry
5F18: F0 0C BEQ $5F26
5F1A: C9 AB CMP #$AB
5F1C: D0 13 BNE $5F31
5F1E: 20 80 03 JSR $0380 ; CHRGET
5F21: 20 A0 50 JSR $50A0 ; Get Fixed Pt Number
5F24: D0 0B BNE $5F31
5F26: A5 0A LDA $0A
5F28: D0 06 BNE $5F30
5F2A: A9 FF LDA #$FF
5F2C: 85 16 STA $16
5F2E: 85 17 STA $17
5F30: 60 RTS
5F31: 4C 6C 79 JMP $796C ; Syntax Error
; Perform [pudef]
5F34: 20 7B 87 JSR $877B ; Evaluate String
5F37: A8 TAY
5F38: 88 DEY
5F39: C0 04 CPY #$04
5F3B: 90 03 BCC $5F40
5F3D: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
5F40: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
5F43: 8D 03 FF STA $FF03
5F46: 99 04 12 STA $1204,Y
5F49: 88 DEY
5F4A: 10 F4 BPL $5F40
5F4C: 60 RTS
; Perform [trap]
5F4D: 20 D9 84 JSR $84D9 ; Check Direct
5F50: 20 86 03 JSR $0386 ; CHRGOT entry
5F53: F0 07 BEQ $5F5C
5F55: 20 12 88 JSR $8812 ; -Input Float/Fixed Value
5F58: 8C 0B 12 STY $120B
5F5B: 2C .BYTE $2C
5F5C: A9 FF LDA #$FF
5F5E: 8D 0C 12 STA $120C
5F61: 60 RTS
; Perform [resume]
5F62: 20 D9 84 JSR $84D9 ; Check Direct
5F65: AE 0A 12 LDX $120A
5F68: E8 INX
5F69: F0 70 BEQ $5FDB ; Print 'can't resume'
5F6B: 20 86 03 JSR $0386 ; CHRGOT entry
5F6E: F0 47 BEQ $5FB7 ; Reinstate Trap Point
5F70: 90 3A BCC $5FAC
5F72: C9 82 CMP #$82
5F74: D0 62 BNE $5FD8 ; Syntax Exit
5F76: 20 B7 5F JSR $5FB7 ; Reinstate Trap Point
5F79: A0 00 LDY #$00
5F7B: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
5F7E: D0 26 BNE $5FA6
5F80: C8 INY
5F81: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
5F84: D0 09 BNE $5F8F
5F86: C8 INY
5F87: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
5F8A: D0 03 BNE $5F8F
5F8C: 4C 37 4D JMP $4D37 ; Error or Ready
5F8F: A0 03 LDY #$03
5F91: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
5F94: 85 3B STA $3B
5F96: C8 INY
5F97: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
5F9A: 85 3C STA $3C
5F9C: 98 TYA
5F9D: 18 CLC
5F9E: 65 3D ADC $3D ; Textpointer: BASIC work point (chrget)
5FA0: 85 3D STA $3D ; Textpointer: BASIC work point (chrget)
5FA2: 90 02 BCC $5FA6
5FA4: E6 3E INC $3E
5FA6: 20 80 03 JSR $0380 ; CHRGET
5FA9: 4C 8F 52 JMP $528F ; Perform [data/bend]
5FAC: 20 12 88 JSR $8812 ; -Input Float/Fixed Value
5FAF: 85 17 STA $17
5FB1: 20 C6 5F JSR $5FC6
5FB4: 4C FB 59 JMP $59FB
; Reinstate Trap Point
5FB7: A2 01 LDX #$01
5FB9: BD 09 12 LDA $1209,X
5FBC: 95 3B STA $3B,X
5FBE: BD 0E 12 LDA $120E,X
5FC1: 95 3D STA $3D,X ; Textpointer: BASIC work point (chrget)
5FC3: CA DEX
5FC4: 10 F3 BPL $5FB9
5FC6: A2 FF LDX #$FF
5FC8: 8E 08 12 STX $1208
5FCB: 8E 09 12 STX $1209
5FCE: 8E 0A 12 STX $120A
5FD1: AE 0D 12 LDX $120D
5FD4: 8E 0C 12 STX $120C
5FD7: 60 RTS
; Syntax Exit
5FD8: 4C 6C 79 JMP $796C ; Syntax Error
; Print 'can't resume'
5FDB: A2 1F LDX #$1F
5FDD: 4C 3C 4D JMP $4D3C ; Error
; Perform [do]
5FE0: A0 01 LDY #$01
5FE2: B9 3D 00 LDA $3D,Y ; Textpointer: BASIC work point (chrget)
5FE5: 99 14 12 STA $1214,Y
5FE8: B9 3B 00 LDA $3B,Y
5FEB: 99 16 12 STA $1216,Y
5FEE: 88 DEY
5FEF: 10 F1 BPL $5FE2
5FF1: 20 86 03 JSR $0386 ; CHRGOT entry
5FF4: F0 1C BEQ $6012
5FF6: C9 FC CMP #$FC
5FF8: F0 11 BEQ $600B
5FFA: C9 FD CMP #$FD
5FFC: D0 43 BNE $6041
5FFE: 20 DB 60 JSR $60DB ; Eval While/Until Argument
6001: A5 63 LDA $63
6003: D0 0D BNE $6012
6005: 20 86 03 JSR $0386 ; CHRGOT entry
6008: 4C 47 60 JMP $6047
600B: 20 DB 60 JSR $60DB ; Eval While/Until Argument
600E: A5 63 LDA $63
6010: D0 F3 BNE $6005
6012: A9 05 LDA #$05
6014: 20 FE 4F JSR $4FFE ; Move B-Stack Down
6017: 8D 03 FF STA $FF03
601A: A0 04 LDY #$04
601C: AD 15 12 LDA $1215
601F: 91 7D STA ($7D),Y
6021: 88 DEY
6022: AD 14 12 LDA $1214
6025: 91 7D STA ($7D),Y
6027: 88 DEY
6028: AD 17 12 LDA $1217
602B: 91 7D STA ($7D),Y
602D: 88 DEY
602E: AD 16 12 LDA $1216
6031: 91 7D STA ($7D),Y
6033: 88 DEY
6034: A9 EB LDA #$EB
6036: 91 7D STA ($7D),Y
6038: 60 RTS
; Perform [exit]
6039: 20 9B 60 JSR $609B
603C: 20 86 03 JSR $0386 ; CHRGOT entry
603F: F0 06 BEQ $6047
6041: 4C 6C 79 JMP $796C ; Syntax Error
6044: 20 80 03 JSR $0380 ; CHRGET
6047: F0 17 BEQ $6060
6049: C9 EC CMP #$EC
604B: F0 3A BEQ $6087
604D: C9 22 CMP #$22
604F: F0 0A BEQ $605B
6051: C9 EB CMP #$EB
6053: D0 EF BNE $6044
6055: 20 44 60 JSR $6044
6058: 4C 05 60 JMP $6005
605B: 20 7C 53 JSR $537C ; Skip String Constant
605E: D0 E4 BNE $6044
6060: C9 3A CMP #$3A
6062: F0 E0 BEQ $6044
6064: 24 7F BIT $7F
6066: 10 42 BPL $60AA
6068: A0 02 LDY #$02
606A: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
606D: F0 3B BEQ $60AA
606F: C8 INY
6070: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
6073: 85 3B STA $3B
6075: C8 INY
6076: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
6079: 85 3C STA $3C
607B: 98 TYA
607C: 18 CLC
607D: 65 3D ADC $3D ; Textpointer: BASIC work point (chrget)
607F: 85 3D STA $3D ; Textpointer: BASIC work point (chrget)
6081: 90 C1 BCC $6044
6083: E6 3E INC $3E
6085: D0 BD BNE $6044
6087: 4C 8F 52 JMP $528F ; Perform [data/bend]
; Perform [loop]
608A: F0 35 BEQ $60C1
608C: C9 FD CMP #$FD
608E: F0 2C BEQ $60BC
6090: C9 FC CMP #$FC
6092: D0 AD BNE $6041
6094: 20 DB 60 JSR $60DB ; Eval While/Until Argument
6097: A5 63 LDA $63
6099: F0 26 BEQ $60C1
609B: A9 EB LDA #$EB
609D: 20 AA 4F JSR $4FAA ; Search B-Stack For Match
60A0: D0 15 BNE $60B7 ; Print 'loop without do'
60A2: 20 50 50 JSR $5050 ; Set B-Stack Pointer
60A5: A0 05 LDY #$05
60A7: 4C 59 50 JMP $5059 ; Move B-Stack Up
60AA: AD 16 12 LDA $1216
60AD: AE 17 12 LDX $1217
60B0: 85 3B STA $3B
60B2: 86 3C STX $3C
; Print 'loop not found'
60B4: A2 20 LDX #$20
60B6: 2C .BYTE $2C
; Print 'loop without do'
60B7: A2 21 LDX #$21
60B9: 4C 3C 4D JMP $4D3C ; Error
60BC: 20 DB 60 JSR $60DB ; Eval While/Until Argument
60BF: F0 DA BEQ $609B
60C1: 20 9B 60 JSR $609B
60C4: 88 DEY
60C5: B1 3F LDA ($3F),Y
60C7: 85 3E STA $3E
60C9: 88 DEY
60CA: B1 3F LDA ($3F),Y
60CC: 85 3D STA $3D ; Textpointer: BASIC work point (chrget)
60CE: 88 DEY
60CF: B1 3F LDA ($3F),Y
60D1: 20 3B A8 JSR $A83B ; ?
60D4: B1 3F LDA ($3F),Y
60D6: 85 3B STA $3B
60D8: 4C E0 5F JMP $5FE0 ; Perform [do]
; Eval While/Until Argument
60DB: 20 80 03 JSR $0380 ; CHRGET
60DE: 4C EF 77 JMP $77EF ; Evaluate Expression
; Define Programmed Key
60E1: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
60E4: CA DEX
60E5: E0 08 CPX #$08
60E7: 90 03 BCC $60EC
60E9: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
60EC: 86 77 STX $77
60EE: 20 5C 79 JSR $795C ; -Check Comma
60F1: 20 7B 87 JSR $877B ; Evaluate String
60F4: A8 TAY
60F5: A9 01 LDA #$01
60F7: 85 26 STA $26
60F9: A9 24 LDA #$24
60FB: A6 77 LDX $77
60FD: E8 INX
60FE: 20 45 A8 JSR $A845 ; Set Bank 15
6101: 20 65 FF JSR $FF65 ; pfkey Prog Function Key
6104: B0 01 BCS $6107
6106: 60 RTS
6107: 4C 3A 4D JMP $4D3A ; Print 'out of memory'
; Perform [key]
610A: F0 15 BEQ $6121
610C: C9 91 CMP #$91
610E: F0 0E BEQ $611E
6110: C9 FE CMP #$FE
6112: D0 CD BNE $60E1 ; Define Programmed Key
6114: 20 80 03 JSR $0380 ; CHRGET
6117: C9 24 CMP #$24
6119: F0 03 BEQ $611E
611B: 4C 6C 79 JMP $796C ; Syntax Error
611E: 4C 46 48 JMP $4846 ; Unimplemented Commands
6121: A2 00 LDX #$00
6123: A0 00 LDY #$00
6125: E8 INX
6126: BD FF 0F LDA $0FFF,X
6129: F0 53 BEQ $617E
612B: 85 78 STA $78
612D: 86 77 STX $77
612F: A2 05 LDX #$05
6131: BD 2A A8 LDA $A82A,X ; 'key 0,'
6134: CA DEX
6135: D0 02 BNE $6139
6137: 05 77 ORA $77
6139: 20 69 92 JSR $9269 ; Call 'chrout'
613C: 8A TXA
613D: 10 F2 BPL $6131
613F: A2 07 LDX #$07
6141: B9 0A 10 LDA $100A,Y
6144: C8 INY
6145: 48 PHA
6146: 86 79 STX $79
6148: A2 04 LDX #$04
614A: DD A3 61 CMP $61A3,X
614D: F0 34 BEQ $6183
614F: CA DEX
6150: D0 F8 BNE $614A
6152: A6 79 LDX $79
6154: E0 08 CPX #$08
6156: 90 07 BCC $615F
6158: D0 0A BNE $6164
615A: A9 2B LDA #$2B
615C: 20 69 92 JSR $9269 ; Call 'chrout'
615F: A9 22 LDA #$22
6161: 20 69 92 JSR $9269 ; Call 'chrout'
6164: 68 PLA
6165: 20 69 92 JSR $9269 ; Call 'chrout'
6168: A2 09 LDX #$09
616A: C6 78 DEC $78
616C: D0 D3 BNE $6141
616E: E0 09 CPX #$09
6170: 90 05 BCC $6177
6172: A9 22 LDA #$22
6174: 20 69 92 JSR $9269 ; Call 'chrout'
6177: A9 8D LDA #$8D
6179: 20 69 92 JSR $9269 ; Call 'chrout'
617C: A6 77 LDX $77
617E: E0 08 CPX #$08
6180: D0 A3 BNE $6125
6182: 60 RTS
6183: A6 79 LDX $79
6185: BD 9A 61 LDA $619A,X
6188: 20 69 92 JSR $9269 ; Call 'chrout'
618B: CA DEX
618C: E0 03 CPX #$03
618E: B0 F5 BCS $6185
6190: 68 PLA
6191: 20 30 A8 JSR $A830 ; ?
6194: A9 29 LDA #$29
6196: 20 69 92 JSR $9269 ; Call 'chrout'
6199: A2 08 LDX #$08
619B: D0 CD BNE $616A
; '+chr$('
619D: 28 24 52 48 43 2B ; '($rhc+'
61A3: 22 0D 8D 22 1B ; '"{CR}{SHCR}"{ESC}'
; Perform [paint]
61A8: 20 2F 9E JSR $9E2F ; Parse Graphics Command
61AB: A2 04 LDX #$04
61AD: 20 52 9E JSR $9E52
61B0: 20 F2 9D JSR $9DF2 ; Restore Pixel Cursor
61B3: 20 1C 9E JSR $9E1C ; Input Optional Byte Parameter -Check Byte Parameter in List
61B6: E0 02 CPX #$02
61B8: 90 03 BCC $61BD
61BA: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
61BD: 8A TXA
61BE: 4A LSR A
61BF: 6A ROR A
61C0: 85 8B STA $8B
61C2: 10 04 BPL $61C8
61C4: A5 83 LDA $83
61C6: F0 07 BEQ $61CF
61C8: 20 49 9C JSR $9C49 ; Examine Pixel
61CB: B0 02 BCS $61CF
61CD: D0 01 BNE $61D0
61CF: 60 RTS
61D0: 20 EA 92 JSR $92EA ; Garbage Collection
61D3: 8D 03 FF STA $FF03
61D6: A5 33 LDA $33
61D8: 85 24 STA $24
61DA: A5 34 LDA $34
61DC: 85 25 STA $25
61DE: 38 SEC
61DF: A5 35 LDA $35
61E1: E9 03 SBC #$03
61E3: 85 1B STA $1B
61E5: A5 36 LDA $36
61E7: E9 00 SBC #$00
61E9: 85 1C STA $1C
61EB: A2 00 LDX #$00
61ED: 86 63 STX $63
61EF: 86 64 STX $64
61F1: AE 33 11 LDX $1133
61F4: D0 03 BNE $61F9
61F6: CE 34 11 DEC $1134
61F9: CE 33 11 DEC $1133
61FC: 20 49 9C JSR $9C49 ; Examine Pixel
61FF: B0 02 BCS $6203
6201: D0 EE BNE $61F1
6203: EE 33 11 INC $1133
6206: D0 03 BNE $620B
6208: EE 34 11 INC $1134
620B: 20 19 9C JSR $9C19
620E: AE 31 11 LDX $1131
6211: D0 03 BNE $6216
6213: CE 32 11 DEC $1132
6216: CE 31 11 DEC $1131
6219: A5 63 LDA $63
621B: 20 7C 62 JSR $627C ; Check Painting Split
621E: 85 63 STA $63
6220: 18 CLC
6221: AD 31 11 LDA $1131
6224: 69 02 ADC #$02
6226: 8D 31 11 STA $1131
6229: 90 03 BCC $622E
622B: EE 32 11 INC $1132
622E: A5 64 LDA $64
6230: 20 7C 62 JSR $627C ; Check Painting Split
6233: 85 64 STA $64
6235: AE 31 11 LDX $1131
6238: D0 03 BNE $623D
623A: CE 32 11 DEC $1132
623D: CE 31 11 DEC $1131
6240: EE 33 11 INC $1133
6243: D0 03 BNE $6248
6245: EE 34 11 INC $1134
6248: 20 49 9C JSR $9C49 ; Examine Pixel
624B: B0 02 BCS $624F
624D: D0 BC BNE $620B
624F: A2 03 LDX #$03
6251: A0 00 LDY #$00
6253: A5 25 LDA $25
6255: C5 34 CMP $34
6257: D0 06 BNE $625F
6259: A5 24 LDA $24
625B: C5 33 CMP $33
625D: F0 1A BEQ $6279
625F: A5 24 LDA $24
6261: D0 02 BNE $6265
6263: C6 25 DEC $25
6265: C6 24 DEC $24
6267: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
626A: 8D 03 FF STA $FF03
626D: 9D 31 11 STA $1131,X
6270: CA DEX
6271: 10 EC BPL $625F
6273: 20 B5 4B JSR $4BB5 ; ?
6276: 4C EB 61 JMP $61EB
6279: 4C F2 9D JMP $9DF2 ; Restore Pixel Cursor
; Check Painting Split
627C: 48 PHA
627D: 20 49 9C JSR $9C49 ; Examine Pixel
6280: B0 18 BCS $629A
6282: F0 16 BEQ $629A
6284: 68 PLA
6285: D0 16 BNE $629D
6287: AA TAX
6288: A8 TAY
6289: A5 25 LDA $25
628B: C5 1C CMP $1C
628D: 90 0F BCC $629E
628F: D0 06 BNE $6297
6291: A5 24 LDA $24
6293: C5 1B CMP $1B
6295: 90 07 BCC $629E
6297: 4C 3A 4D JMP $4D3A ; Print 'out of memory'
629A: 68 PLA
629B: A9 00 LDA #$00
629D: 60 RTS
629E: BD 31 11 LDA $1131,X
62A1: 8D 04 FF STA $FF04
62A4: 91 24 STA ($24),Y
62A6: 8D 03 FF STA $FF03
62A9: E6 24 INC $24
62AB: D0 02 BNE $62AF
62AD: E6 25 INC $25
62AF: E8 INX
62B0: E0 04 CPX #$04
62B2: D0 EA BNE $629E
62B4: A9 80 LDA #$80
62B6: 60 RTS
; Perform [box]
62B7: 20 2F 9E JSR $9E2F ; Parse Graphics Command
62BA: A2 1F LDX #$1F
62BC: 20 6D 9E JSR $9E6D
62BF: A2 2B LDX #$2B
62C1: 20 52 9E JSR $9E52
62C4: 20 06 9E JSR $9E06 ; Check Optional Float/Fixed Parameter
62C7: 8C 54 11 STY $1154
62CA: 8D 55 11 STA $1155
62CD: 20 1C 9E JSR $9E1C ; Input Optional Byte Parameter -Check Byte Parameter in List
62D0: E0 02 CPX #$02
62D2: 90 03 BCC $62D7
62D4: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
62D7: 8E 6C 11 STX $116C ; Box Fill Flag
62DA: 8A TXA
62DB: 48 PHA
62DC: 20 89 63 JSR $6389
62DF: 68 PLA
62E0: D0 1C BNE $62FE
62E2: F0 03 BEQ $62E7
62E4: 20 0B 64 JSR $640B ; ?
62E7: 20 30 9B JSR $9B30 ; Draw Line
62EA: AD 4E 11 LDA $114E
62ED: D0 F5 BNE $62E4
62EF: A2 04 LDX #$04
62F1: BD 5B 11 LDA $115B,X
62F4: 9D 30 11 STA $1130,X
62F7: CA DEX
62F8: D0 F7 BNE $62F1
62FA: 8E 6C 11 STX $116C ; Box Fill Flag
62FD: 60 RTS
62FE: A2 00 LDX #$00
6300: AD 49 11 LDA $1149
6303: 4A LSR A
6304: 90 02 BCC $6308
6306: A2 02 LDX #$02
6308: BD 60 11 LDA $1160,X
630B: 8D 5A 11 STA $115A
630E: BD 61 11 LDA $1161,X
6311: 8D 5B 11 STA $115B
6314: A9 00 LDA #$00
6316: A2 03 LDX #$03
6318: 9D 56 11 STA $1156,X
631B: CA DEX
631C: 10 FA BPL $6318
631E: A2 07 LDX #$07
6320: BD 31 11 LDA $1131,X
6323: 48 PHA
6324: CA DEX
6325: 10 F9 BPL $6320
6327: 20 30 9B JSR $9B30 ; Draw Line
632A: A2 00 LDX #$00
632C: 68 PLA
632D: 9D 31 11 STA $1131,X
6330: E8 INX
6331: E0 08 CPX #$08
6333: D0 F7 BNE $632C
6335: AD 5A 11 LDA $115A
6338: D0 05 BNE $633F
633A: CE 5B 11 DEC $115B
633D: 30 B0 BMI $62EF
633F: CE 5A 11 DEC $115A
6342: A2 25 LDX #$25
6344: A0 1B LDY #$1B
6346: AD 49 11 LDA $1149
6349: 4A LSR A
634A: 90 02 BCC $634E
634C: A0 19 LDY #$19
634E: A9 00 LDA #$00
6350: 4A LSR A
6351: 48 PHA
6352: 20 6D 9D JSR $9D6D ; Add Graphics Coordinate
6355: 9D 31 11 STA $1131,X
6358: 98 TYA
6359: 9D 32 11 STA $1132,X
635C: 68 PLA
635D: 90 02 BCC $6361
635F: 09 A0 ORA #$A0
6361: E8 INX
6362: E8 INX
6363: A0 19 LDY #$19
6365: 4E 49 11 LSR $1149
6368: 90 02 BCC $636C
636A: A0 1B LDY #$1B
636C: 2E 49 11 ROL $1149
636F: E0 27 CPX #$27
6371: F0 DD BEQ $6350
6373: A2 06 LDX #$06
6375: 0A ASL A
6376: F0 BD BEQ $6335
6378: 90 08 BCC $6382
637A: FE 31 11 INC $1131,X
637D: D0 03 BNE $6382
637F: FE 32 11 INC $1132,X
6382: 0A ASL A
6383: CA DEX
6384: CA DEX
6385: 10 F1 BPL $6378
6387: 30 95 BMI $631E
6389: A0 23 LDY #$23
638B: 20 74 9A JSR $9A74 ; ?
638E: A2 1F LDX #$1F
6390: A0 2B LDY #$2B
6392: 98 TYA
6393: 48 PHA
6394: 20 99 9D JSR $9D99 ; ?
6397: 9D 35 11 STA $1135,X
639A: 9D 39 11 STA $1139,X
639D: 9D 41 11 STA $1141,X
63A0: 98 TYA
63A1: 9D 36 11 STA $1136,X
63A4: 9D 3A 11 STA $113A,X
63A7: 9D 42 11 STA $1142,X
63AA: 68 PLA
63AB: A8 TAY
63AC: 20 6D 9D JSR $9D6D ; Add Graphics Coordinate
63AF: 9D 31 11 STA $1131,X
63B2: 98 TYA
63B3: 9D 32 11 STA $1132,X
63B6: A0 2D LDY #$2D
63B8: E8 INX
63B9: E8 INX
63BA: E0 21 CPX #$21
63BC: F0 D4 BEQ $6392
63BE: A9 90 LDA #$90
63C0: 20 F3 9A JSR $9AF3 ; ?
63C3: AD 49 11 LDA $1149
63C6: 29 03 AND #$03
63C8: 8D 49 11 STA $1149
63CB: AA TAX
63CC: BD ED 63 LDA $63ED,X ; ?
63CF: 20 0B 64 JSR $640B ; ?
63D2: 20 F2 9D JSR $9DF2 ; Restore Pixel Cursor
63D5: AD 4E 11 LDA $114E
63D8: 20 0B 64 JSR $640B ; ?
63DB: AE 49 11 LDX $1149
63DE: BD ED 63 LDA $63ED,X ; ?
63E1: 29 F0 AND #$F0
63E3: 8D 4F 11 STA $114F
63E6: BD F1 63 LDA $63F1,X
63E9: 8D 4E 11 STA $114E
63EC: 60 RTS
; ?
63ED: BE E4 41 1B ; '..a{ESC}'
63F1: 41 1B BE E4 ; 'a{ESC}..'
; Authors
63F5: 46 52 45 44 20 42 0D 54 ; 'fred b{CR}t'
63FD: 45 52 52 59 20 52 0D 4D ; 'erry r{CR}m'
6405: 49 4B 45 20 49 0D ; 'ike i{CR}'
; ?
640B: 20 67 67 JSR $6767
640E: A2 04 LDX #$04
6410: BD 32 11 LDA $1132,X
6413: 0A ASL A
6414: 7E 32 11 ROR $1132,X
6417: 7E 31 11 ROR $1131,X
641A: 90 08 BCC $6424
641C: FE 31 11 INC $1131,X
641F: D0 03 BNE $6424
6421: FE 32 11 INC $1132,X
6424: E8 INX
6425: E8 INX
6426: E0 06 CPX #$06
6428: F0 E6 BEQ $6410
642A: 60 RTS
; Perform [sshape]
642B: 20 74 A0 JSR $A074
642E: 20 AF 7A JSR $7AAF ; Locate Variable
6431: 8D 03 FF STA $FF03
6434: 8D 5F 11 STA $115F
6437: 8C 60 11 STY $1160
643A: 24 0F BIT $0F
643C: 30 03 BMI $6441
643E: 4C E7 77 JMP $77E7 ; Print 'type mismatch'
6441: A2 28 LDX #$28
6443: 20 6D 9E JSR $9E6D
6446: A2 04 LDX #$04
6448: 20 52 9E JSR $9E52
644B: A2 2A LDX #$2A
644D: A0 06 LDY #$06
644F: A9 02 LDA #$02
6451: 85 8E STA $8E
6453: 20 99 9D JSR $9D99 ; ?
6456: AA TAX
6457: 98 TYA
6458: 48 PHA
6459: A4 8E LDY $8E
645B: 20 F9 9D JSR $9DF9
645E: 90 0C BCC $646C
6460: B9 59 11 LDA $1159,Y
6463: 99 31 11 STA $1131,Y
6466: B9 5A 11 LDA $115A,Y
6469: 99 32 11 STA $1132,Y
646C: 8A TXA
646D: 99 59 11 STA $1159,Y
6470: 99 DB 03 STA $03DB,Y
6473: 68 PLA
6474: 99 5A 11 STA $115A,Y
6477: 99 DC 03 STA $03DC,Y
647A: A2 28 LDX #$28
647C: A0 04 LDY #$04
647E: C6 8E DEC $8E
6480: C6 8E DEC $8E
6482: F0 CF BEQ $6453
6484: A0 FF LDY #$FF
6486: 8C 55 11 STY $1155
6489: AD 31 11 LDA $1131
648C: 8D 5D 11 STA $115D
648F: AD 32 11 LDA $1132
6492: 8D 5E 11 STA $115E
6495: 98 TYA
6496: 20 90 86 JSR $8690
6499: 8D 03 FF STA $FF03
649C: 20 E3 9C JSR $9CE3 ; Position Pixel
649F: B1 8C LDA ($8C),Y
64A1: 90 0E BCC $64B1
64A3: AD 31 11 LDA $1131
64A6: 24 D8 BIT $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
64A8: 10 02 BPL $64AC
64AA: 38 SEC
64AB: 2A ROL A
64AC: 29 07 AND #$07
64AE: AA TAX
64AF: A9 00 LDA #$00
64B1: 24 D8 BIT $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
64B3: 10 01 BPL $64B6
64B5: CA DEX
64B6: 8E 61 11 STX $1161
64B9: 0A ASL A
64BA: CA DEX
64BB: 10 FC BPL $64B9
64BD: 6A ROR A
64BE: 85 8E STA $8E
64C0: A9 08 LDA #$08
64C2: 24 D8 BIT $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
64C4: 10 01 BPL $64C7
64C6: 4A LSR A
64C7: 18 CLC
64C8: 6D 31 11 ADC $1131
64CB: 8D 31 11 STA $1131
64CE: 90 03 BCC $64D3
64D0: EE 32 11 INC $1132
64D3: 20 E3 9C JSR $9CE3 ; Position Pixel
64D6: A9 00 LDA #$00
64D8: B0 02 BCS $64DC
64DA: B1 8C LDA ($8C),Y
64DC: 85 8F STA $8F
64DE: AE 61 11 LDX $1161
64E1: 4A LSR A
64E2: E8 INX
64E3: E0 08 CPX #$08
64E5: D0 FA BNE $64E1
64E7: 05 8E ORA $8E
64E9: EE 55 11 INC $1155
64EC: AC 55 11 LDY $1155
64EF: C0 FC CPY #$FC
64F1: 90 03 BCC $64F6
64F3: 4C ED A5 JMP $A5ED ; Print 'string too long'
64F6: 8D 04 FF STA $FF04
64F9: 91 64 STA ($64),Y
64FB: 8D 03 FF STA $FF03
64FE: AE 61 11 LDX $1161
6501: AD 59 11 LDA $1159
6504: 38 SEC
6505: 24 D8 BIT $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
6507: 10 03 BPL $650C
6509: E9 04 SBC #$04
650B: 2C .BYTE $2C
650C: E9 08 SBC #$08
650E: 8D 59 11 STA $1159
6511: A5 8F LDA $8F
6513: B0 A4 BCS $64B9
6515: CE 5A 11 DEC $115A
6518: 10 9F BPL $64B9
651A: AE 5B 11 LDX $115B
651D: D0 48 BNE $6567
651F: CE 5C 11 DEC $115C
6522: 10 43 BPL $6567
6524: 24 D8 BIT $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
6526: 10 06 BPL $652E
6528: 0E DB 03 ASL $03DB
652B: 2E DC 03 ROL $03DC
652E: A2 00 LDX #$00
6530: BD DB 03 LDA $03DB,X
6533: C8 INY
6534: 8D 04 FF STA $FF04
6537: 91 64 STA ($64),Y
6539: 8D 03 FF STA $FF03
653C: E8 INX
653D: E0 04 CPX #$04
653F: D0 EF BNE $6530
6541: C8 INY
6542: 8C DB 03 STY $03DB
6545: A5 64 LDA $64
6547: 8D DC 03 STA $03DC
654A: A5 65 LDA $65
654C: 8D DD 03 STA $03DD
654F: A9 DB LDA #$DB
6551: 85 66 STA $66
6553: A9 03 LDA #$03
6555: 85 67 STA $67
6557: AD 5F 11 LDA $115F
655A: 85 4B STA $4B
655C: AD 60 11 LDA $1160
655F: 85 4C STA $4C
6561: 20 94 54 JSR $5494
6564: 4C F2 9D JMP $9DF2 ; Restore Pixel Cursor
6567: CE 5B 11 DEC $115B
656A: EE 33 11 INC $1133
656D: D0 03 BNE $6572
656F: EE 34 11 INC $1134
6572: AD 5D 11 LDA $115D
6575: 8D 31 11 STA $1131
6578: AD 5E 11 LDA $115E
657B: 8D 32 11 STA $1132
657E: AD DB 03 LDA $03DB
6581: 8D 59 11 STA $1159
6584: AD DC 03 LDA $03DC
6587: 8D 5A 11 STA $115A
658A: 4C 9C 64 JMP $649C
; Perform [gshape]
658D: 20 74 A0 JSR $A074
6590: 20 7B 87 JSR $877B ; Evaluate String
6593: 8D 03 FF STA $FF03
6596: 8D 53 11 STA $1153
6599: 86 26 STX $26
659B: 84 27 STY $27
659D: A2 04 LDX #$04
659F: 20 52 9E JSR $9E52
65A2: 20 1C 9E JSR $9E1C ; Input Optional Byte Parameter -Check Byte Parameter in List
65A5: E0 05 CPX #$05
65A7: 90 03 BCC $65AC
65A9: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
65AC: 8E 54 11 STX $1154
65AF: A2 03 LDX #$03
65B1: AC 53 11 LDY $1153
65B4: C0 05 CPY #$05
65B6: B0 01 BCS $65B9
65B8: 60 RTS
65B9: 88 DEY
65BA: A9 26 LDA #$26
65BC: 20 AB 03 JSR $03AB ; Fetch From RAM Bank 1
65BF: 8D 03 FF STA $FF03
65C2: 9D 59 11 STA $1159,X
65C5: CA DEX
65C6: 10 F1 BPL $65B9
65C8: 8E 55 11 STX $1155
65CB: 20 F2 9D JSR $9DF2 ; Restore Pixel Cursor
65CE: AD 59 11 LDA $1159
65D1: 8D 5D 11 STA $115D
65D4: AD 5A 11 LDA $115A
65D7: 8D 5E 11 STA $115E
65DA: A9 08 LDA #$08
65DC: 8D 69 11 STA $1169
65DF: EE 55 11 INC $1155
65E2: AC 55 11 LDY $1155
65E5: A9 26 LDA #$26
65E7: 20 AB 03 JSR $03AB ; Fetch From RAM Bank 1
65EA: 8D 03 FF STA $FF03
65ED: 8D 57 11 STA $1157
65F0: 20 49 9C JSR $9C49 ; Examine Pixel
65F3: 8D 56 11 STA $1156
65F6: 0E 57 11 ASL $1157
65F9: 2A ROL A
65FA: CE 69 11 DEC $1169
65FD: 24 D8 BIT $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
65FF: 10 07 BPL $6608
6601: 0E 57 11 ASL $1157
6604: 2A ROL A
6605: CE 69 11 DEC $1169
6608: AE 54 11 LDX $1154
660B: E0 03 CPX #$03
660D: 90 0C BCC $661B
660F: F0 05 BEQ $6616
6611: 4D 56 11 EOR $1156
6614: B0 11 BCS $6627
6616: 2D 56 11 AND $1156
6619: B0 0C BCS $6627
661B: E0 01 CPX #$01
661D: 90 08 BCC $6627
661F: F0 04 BEQ $6625
6621: 0D 56 11 ORA $1156
6624: 2C .BYTE $2C
6625: 49 FF EOR #$FF
6627: 29 03 AND #$03
6629: 24 D8 BIT $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
662B: 30 02 BMI $662F
662D: 29 01 AND #$01
662F: 85 83 STA $83
6631: 20 19 9C JSR $9C19
6634: EE 31 11 INC $1131
6637: D0 03 BNE $663C
6639: EE 32 11 INC $1132
663C: 38 SEC
663D: AD 5D 11 LDA $115D
6640: 24 D8 BIT $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
6642: 10 03 BPL $6647
6644: E9 02 SBC #$02
6646: 2C .BYTE $2C
6647: E9 01 SBC #$01
6649: 8D 5D 11 STA $115D
664C: AD 5E 11 LDA $115E
664F: E9 00 SBC #$00
6651: 8D 5E 11 STA $115E
6654: B0 2D BCS $6683
6656: A2 01 LDX #$01
6658: BD 59 11 LDA $1159,X
665B: 9D 5D 11 STA $115D,X
665E: BD 35 11 LDA $1135,X
6661: 9D 31 11 STA $1131,X
6664: CA DEX
6665: 10 F1 BPL $6658
6667: EE 33 11 INC $1133
666A: D0 03 BNE $666F
666C: EE 34 11 INC $1134
666F: 38 SEC
6670: AD 5B 11 LDA $115B
6673: E9 01 SBC #$01
6675: 8D 5B 11 STA $115B
6678: AD 5C 11 LDA $115C
667B: E9 00 SBC #$00
667D: 8D 5C 11 STA $115C
6680: B0 09 BCS $668B
6682: 60 RTS
6683: AD 69 11 LDA $1169
6686: F0 03 BEQ $668B
6688: 4C F0 65 JMP $65F0
668B: 4C DA 65 JMP $65DA
; Perform [circle]
668E: 20 2F 9E JSR $9E2F ; Parse Graphics Command
6691: A2 1F LDX #$1F
6693: 20 52 9E JSR $9E52
6696: 20 06 9E JSR $9E06 ; Check Optional Float/Fixed Parameter
6699: 8C 54 11 STY $1154
669C: 8D 55 11 STA $1155
669F: 20 06 9E JSR $9E06 ; Check Optional Float/Fixed Parameter
66A2: 8C 56 11 STY $1156
66A5: B0 11 BCS $66B8
66A7: AD 54 11 LDA $1154
66AA: 8D 56 11 STA $1156
66AD: AD 55 11 LDA $1155
66B0: 24 D8 BIT $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
66B2: 10 04 BPL $66B8
66B4: 0E 56 11 ASL $1156
66B7: 2A ROL A
66B8: 8D 57 11 STA $1157
66BB: A2 23 LDX #$23
66BD: 20 4A 9D JSR $9D4A ; ?
66C0: EA NOP
66C1: EA NOP
66C2: EA NOP
66C3: EA NOP
66C4: EA NOP
66C5: 20 06 9E JSR $9E06 ; Check Optional Float/Fixed Parameter
66C8: 8C 5C 11 STY $115C
66CB: 8D 5D 11 STA $115D
66CE: 20 06 9E JSR $9E06 ; Check Optional Float/Fixed Parameter
66D1: 8C 5E 11 STY $115E
66D4: 8D 5F 11 STA $115F
66D7: 20 06 9E JSR $9E06 ; Check Optional Float/Fixed Parameter
66DA: 85 77 STA $77
66DC: 98 TYA
66DD: A4 77 LDY $77
66DF: 20 77 9A JSR $9A77
66E2: A2 2D LDX #$2D
66E4: A0 2B LDY #$2B
66E6: 20 7C 9D JSR $9D7C ; Subtract Graphics Coordinate
66E9: 90 0E BCC $66F9
66EB: A9 68 LDA #$68
66ED: A0 01 LDY #$01
66EF: 20 70 9D JSR $9D70
66F2: 9D 31 11 STA $1131,X
66F5: 98 TYA
66F6: 9D 32 11 STA $1132,X
66F9: A2 03 LDX #$03
66FB: BD 54 11 LDA $1154,X
66FE: 9D 58 11 STA $1158,X
6701: CA DEX
6702: 10 F7 BPL $66FB
6704: A9 90 LDA #$90
6706: 20 F3 9A JSR $9AF3 ; ?
6709: A2 07 LDX #$07
670B: BD 54 11 LDA $1154,X
670E: 9D 60 11 STA $1160,X
6711: CA DEX
6712: 10 F7 BPL $670B
6714: 20 50 67 JSR $6750 ; Draw Circle
6717: 20 F2 9D JSR $9DF2 ; Restore Pixel Cursor
671A: A2 02 LDX #$02
671C: 20 1E 9E JSR $9E1E
671F: 8A TXA
6720: D0 03 BNE $6725
6722: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
6725: 8E 20 12 STX $1220
6728: 18 CLC
6729: AD 20 12 LDA $1220
672C: 6D 5C 11 ADC $115C
672F: 8D 5C 11 STA $115C
6732: 90 03 BCC $6737
6734: EE 5D 11 INC $115D
6737: A2 2D LDX #$2D
6739: A0 2B LDY #$2B
673B: 20 7C 9D JSR $9D7C ; Subtract Graphics Coordinate
673E: B0 08 BCS $6748
6740: 20 50 67 JSR $6750 ; Draw Circle
6743: 20 30 9B JSR $9B30 ; Draw Line
6746: 90 E1 BCC $6729
6748: A0 2D LDY #$2D
674A: 20 52 67 JSR $6752
674D: 4C 30 9B JMP $9B30 ; Draw Line
; Draw Circle
6750: A0 2B LDY #$2B
6752: 20 74 9A JSR $9A74 ; ?
6755: A2 07 LDX #$07
6757: BD 60 11 LDA $1160,X
675A: 9D 54 11 STA $1154,X
675D: CA DEX
675E: 10 F7 BPL $6757
6760: A9 50 LDA #$50
6762: 20 F3 9A JSR $9AF3 ; ?
6765: A9 10 LDA #$10
6767: 8D 4E 11 STA $114E
676A: A0 1F LDY #$1F
676C: A2 23 LDX #$23
676E: 0E 4F 11 ASL $114F
6771: 2E 4E 11 ROL $114E
6774: 20 6B 9D JSR $9D6B
6777: E8 INX
6778: E8 INX
6779: 0E 4F 11 ASL $114F
677C: 2E 4E 11 ROL $114E
677F: 20 67 9D JSR $9D67 ; Calculate Graphics Coordinates
6782: 48 PHA
6783: 98 TYA
6784: 48 PHA
6785: A0 21 LDY #$21
6787: E8 INX
6788: E8 INX
6789: E0 27 CPX #$27
678B: F0 E1 BEQ $676E
678D: A2 03 LDX #$03
678F: 68 PLA
6790: 9D 35 11 STA $1135,X
6793: CA DEX
6794: 10 F9 BPL $678F
6796: 60 RTS
; Perform [draw]
6797: 20 74 A0 JSR $A074
679A: A2 01 LDX #$01
679C: 86 83 STX $83
679E: 20 86 03 JSR $0386 ; CHRGOT entry
67A1: C9 A4 CMP #$A4
67A3: F0 0B BEQ $67B0
67A5: 20 32 9E JSR $9E32 ; Get Color Source Param
67A8: 20 86 03 JSR $0386 ; CHRGOT entry
67AB: D0 03 BNE $67B0
67AD: 4C FB 9B JMP $9BFB ; Plot Pixel
67B0: 20 86 03 JSR $0386 ; CHRGOT entry
67B3: C9 2C CMP #$2C
67B5: F0 05 BEQ $67BC
67B7: C9 A4 CMP #$A4
67B9: F0 01 BEQ $67BC
67BB: 60 RTS
67BC: 48 PHA
67BD: 20 80 03 JSR $0380 ; CHRGET
67C0: A2 04 LDX #$04
67C2: 20 70 9E JSR $9E70
67C5: 68 PLA
67C6: 10 06 BPL $67CE
67C8: 20 30 9B JSR $9B30 ; Draw Line
67CB: 4C B0 67 JMP $67B0
67CE: 20 F2 9D JSR $9DF2 ; Restore Pixel Cursor
67D1: 20 FB 9B JSR $9BFB ; Plot Pixel
67D4: 4C B0 67 JMP $67B0
; Perform [char]
67D7: 20 32 9E JSR $9E32 ; Get Color Source Param
67DA: A2 29 LDX #$29
67DC: A0 1A LDY #$1A
67DE: A5 D8 LDA $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
67E0: D0 05 BNE $67E7
67E2: 20 ED FF JSR $FFED ; scrorg Return Screen Organization
67E5: E8 INX
67E6: C8 INY
67E7: 8E 5E 11 STX $115E
67EA: 8C 5F 11 STY $115F
67ED: 20 09 88 JSR $8809
67F0: EC 5E 11 CPX $115E
67F3: B0 0B BCS $6800
67F5: 8E 5E 11 STX $115E
67F8: 20 09 88 JSR $8809
67FB: EC 5F 11 CPX $115F
67FE: 90 03 BCC $6803
6800: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
6803: 8E 5F 11 STX $115F
6806: 20 86 03 JSR $0386 ; CHRGOT entry
6809: D0 04 BNE $680F
680B: A9 00 LDA #$00
680D: F0 06 BEQ $6815
680F: 20 5C 79 JSR $795C ; -Check Comma
6812: 20 7B 87 JSR $877B ; Evaluate String
6815: 8D 03 FF STA $FF03
6818: 8D 6E 11 STA $116E
681B: 98 TYA
681C: 48 PHA
681D: 8A TXA
681E: 48 PHA
681F: 20 1C 9E JSR $9E1C ; Input Optional Byte Parameter -Check Byte Parameter in List
6822: 8A TXA
6823: 6A ROR A
6824: 6E 3D 11 ROR $113D
6827: 68 PLA
6828: 85 24 STA $24
682A: 68 PLA
682B: 85 25 STA $25
682D: A5 D8 LDA $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
682F: D0 32 BNE $6863
6831: AE 5F 11 LDX $115F
6834: AC 5E 11 LDY $115E
6837: 18 CLC
6838: 20 82 7E JSR $7E82 ; Set Bank patch for [char]
683B: A0 00 LDY #$00
683D: 2C 3D 11 BIT $113D
6840: 10 05 BPL $6847
6842: A9 12 LDA #$12
6844: 20 88 7E JSR $7E88 ; Set Bank patch for Screen Print Link
6847: CC 6E 11 CPY $116E
684A: F0 0C BEQ $6858
684C: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
684F: 20 45 A8 JSR $A845 ; Set Bank 15
6852: 20 0C C0 JSR $C00C ; Screen Print Link
6855: C8 INY
6856: D0 EF BNE $6847
6858: 2C 3D 11 BIT $113D
685B: 10 05 BPL $6862
685D: A9 92 LDA #$92
685F: 20 88 7E JSR $7E88 ; Set Bank patch for Screen Print Link
6862: 60 RTS
6863: 20 74 A0 JSR $A074
6866: AD EC 11 LDA $11EC ; CHRGEN ROM Page, Graphics Mode [D0]
6869: 8D 68 11 STA $1168
686C: A5 86 LDA $86 ; Graphic foreground color (13)
686E: AA TAX
686F: 48 PHA
6870: A5 83 LDA $83
6872: 48 PHA
6873: 24 D8 BIT $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
6875: 10 0E BPL $6885
6877: 68 PLA
6878: F0 16 BEQ $6890
687A: 4A LSR A
687B: F0 13 BEQ $6890
687D: A6 84 LDX $84 ; Multicolor 1 (1)
687F: 90 0F BCC $6890
6881: A6 85 LDX $85 ; Multicolor 2 (2)
6883: B0 0B BCS $6890
6885: A6 86 LDX $86 ; Graphic foreground color (13)
6887: 68 PLA
6888: D0 06 BNE $6890
688A: 20 45 A8 JSR $A845 ; Set Bank 15
688D: AE 21 D0 LDX $D021
6890: 86 86 STX $86 ; Graphic foreground color (13)
6892: AE 5F 11 LDX $115F
6895: A0 00 LDY #$00
6897: 8C 60 11 STY $1160
689A: AC 60 11 LDY $1160
689D: EE 60 11 INC $1160
68A0: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
68A3: 8D 03 FF STA $FF03
68A6: CE 6E 11 DEC $116E
68A9: 30 2C BMI $68D7
68AB: C9 0E CMP #$0E
68AD: D0 05 BNE $68B4
68AF: AD EB 11 LDA $11EB ; CHRGEN ROM Page, Text Mode [D8]
68B2: D0 07 BNE $68BB
68B4: C9 8E CMP #$8E
68B6: D0 08 BNE $68C0
68B8: AD EC 11 LDA $11EC ; CHRGEN ROM Page, Graphics Mode [D0]
68BB: 8D 68 11 STA $1168
68BE: D0 09 BNE $68C9
68C0: AC 5E 11 LDY $115E
68C3: 20 DB 68 JSR $68DB ; ?
68C6: EE 5E 11 INC $115E
68C9: C0 27 CPY #$27
68CB: 90 CD BCC $689A
68CD: A0 00 LDY #$00
68CF: 8C 5E 11 STY $115E
68D2: E8 INX
68D3: E0 18 CPX #$18
68D5: 90 C3 BCC $689A
68D7: 68 PLA
68D8: 85 86 STA $86 ; Graphic foreground color (13)
68DA: 60 RTS
; ?
68DB: 48 PHA
68DC: 20 70 9C JSR $9C70 ; Set Hi-Res Color Cell
68DF: 98 TYA
68E0: 18 CLC
68E1: 7D 33 C0 ADC $C033,X ; Screen Address Low
68E4: 85 8C STA $8C
68E6: BD 4C C0 LDA $C04C,X ; Screen Address High
68E9: 69 00 ADC #$00
68EB: 06 8C ASL $8C
68ED: 2A ROL A
68EE: 06 8C ASL $8C
68F0: 2A ROL A
68F1: 06 8C ASL $8C
68F3: 2A ROL A
68F4: 85 8D STA $8D
68F6: 8D 03 FF STA $FF03
68F9: A9 00 LDA #$00
68FB: 85 77 STA $77
68FD: 68 PLA
68FE: 48 PHA
68FF: 0A ASL A
6900: 26 77 ROL $77
6902: 0A ASL A
6903: 0A ASL A
6904: 26 77 ROL $77
6906: 85 26 STA $26
6908: A5 77 LDA $77
690A: 6D 68 11 ADC $1168
690D: 85 27 STA $27
690F: 98 TYA
6910: 48 PHA
6911: A0 07 LDY #$07
6913: AD 3D 11 LDA $113D
6916: 0A ASL A
6917: B1 26 LDA ($26),Y
6919: 90 02 BCC $691D
691B: 49 FF EOR #$FF
691D: 24 D8 BIT $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
691F: 10 2B BPL $694C
6921: 29 AA AND #$AA
6923: 85 77 STA $77
6925: A5 83 LDA $83
6927: D0 0F BNE $6938
6929: A5 77 LDA $77
692B: B0 07 BCS $6934
692D: 4A LSR A
692E: 45 77 EOR $77
6930: 49 AA EOR #$AA
6932: D0 18 BNE $694C
6934: 09 55 ORA #$55
6936: D0 14 BNE $694C
6938: C9 02 CMP #$02
693A: D0 04 BNE $6940
693C: A5 77 LDA $77
693E: B0 0C BCS $694C
6940: 90 07 BCC $6949
6942: A5 77 LDA $77
6944: 4A LSR A
6945: 45 77 EOR $77
6947: 90 03 BCC $694C
6949: A5 77 LDA $77
694B: 4A LSR A
694C: 91 8C STA ($8C),Y
694E: 88 DEY
694F: 10 C2 BPL $6913
6951: 68 PLA
6952: A8 TAY
6953: 68 PLA
6954: 60 RTS
; Perform [locate]
6955: 20 74 A0 JSR $A074
6958: A2 04 LDX #$04
695A: 20 70 9E JSR $9E70
695D: 4C F2 9D JMP $9DF2 ; Restore Pixel Cursor
; Perform [scale]
6960: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
6963: E0 02 CPX #$02
6965: 90 03 BCC $696A
6967: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
696A: 8E 6A 11 STX $116A ; SCALE Mode Flag
696D: 20 86 03 JSR $0386 ; CHRGOT entry
6970: D0 14 BNE $6986
6972: A2 00 LDX #$00
6974: A9 50 LDA #$50
6976: A0 32 LDY #$32
6978: 24 D8 BIT $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
697A: 10 01 BPL $697D
697C: 4A LSR A
697D: 86 87 STX $87
697F: 85 88 STA $88
6981: 86 89 STX $89
6983: 84 8A STY $8A
6985: 60 RTS
6986: 20 C4 69 JSR $69C4
6989: A9 D8 LDA #$D8
698B: A0 69 LDY #$69
698D: 20 89 8A JSR $8A89 ; Unpack ROM to FAC#2
6990: 20 4C 8B JSR $8B4C ; Evaluate <divide>
6993: 20 15 88 JSR $8815 ; Float/Fixed
6996: C9 00 CMP #$00
6998: D0 04 BNE $699E
699A: C0 00 CPY #$00
699C: F0 37 BEQ $69D5
699E: 48 PHA
699F: 98 TYA
69A0: 48 PHA
69A1: 20 C4 69 JSR $69C4
69A4: A9 DD LDA #$DD
69A6: A0 69 LDY #$69
69A8: 20 89 8A JSR $8A89 ; Unpack ROM to FAC#2
69AB: 20 4C 8B JSR $8B4C ; Evaluate <divide>
69AE: 20 15 88 JSR $8815 ; Float/Fixed
69B1: C9 00 CMP #$00
69B3: D0 04 BNE $69B9
69B5: C0 00 CPY #$00
69B7: F0 1C BEQ $69D5
69B9: 84 89 STY $89
69BB: 85 8A STA $8A
69BD: 68 PLA
69BE: 85 87 STA $87
69C0: 68 PLA
69C1: 85 88 STA $88
69C3: 60 RTS
69C4: 20 5C 79 JSR $795C ; -Check Comma
69C7: 20 D7 77 JSR $77D7 ; Type Match Check
69CA: A5 68 LDA $68
69CC: 30 07 BMI $69D5
69CE: A5 63 LDA $63
69D0: C9 90 CMP #$90
69D2: B0 01 BCS $69D5
69D4: 60 RTS
69D5: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Scale Factor Constants
69D8: 99 1F FF 60 00 98 47 FF ; '{LTGREEN}{BLUE}.`{0}{GRAY2}g.'
69E0: 38 00 ; '8{0}'
; Perform [color]
69E2: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
69E5: E0 07 CPX #$07
69E7: B0 60 BCS $6A49
69E9: 86 77 STX $77
69EB: 20 09 88 JSR $8809
69EE: CA DEX
69EF: E0 10 CPX #$10
69F1: B0 56 BCS $6A49
69F3: 20 45 A8 JSR $A845 ; Set Bank 15
69F6: 8A TXA
69F7: A6 77 LDX $77
69F9: E0 01 CPX #$01
69FB: F0 07 BEQ $6A04
69FD: B0 09 BCS $6A08
69FF: 8D 21 D0 STA $D021
6A02: D0 3F BNE $6A43
6A04: 85 86 STA $86 ; Graphic foreground color (13)
6A06: F0 3B BEQ $6A43
6A08: E0 03 CPX #$03
6A0A: F0 06 BEQ $6A12
6A0C: B0 08 BCS $6A16
6A0E: 85 84 STA $84 ; Multicolor 1 (1)
6A10: D0 31 BNE $6A43
6A12: 85 85 STA $85 ; Multicolor 2 (2)
6A14: F0 2D BEQ $6A43
6A16: E0 05 CPX #$05
6A18: F0 07 BEQ $6A21
6A1A: B0 16 BCS $6A32
6A1C: 8D 20 D0 STA $D020
6A1F: D0 22 BNE $6A43
6A21: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
6A23: 10 08 BPL $6A2D
6A25: AA TAX
6A26: A5 F1 LDA $F1 ; Curr Attribute to Print (Default FGND Color)
6A28: 29 F0 AND #$F0
6A2A: 1D 4C 6A ORA $6A4C,X ; Color Codes
6A2D: 85 F1 STA $F1 ; Curr Attribute to Print (Default FGND Color)
6A2F: 4C 43 6A JMP $6A43
6A32: AA TAX
6A33: A9 1A LDA #$1A
6A35: 8D 00 D6 STA $D600
6A38: AD 01 D6 LDA $D601
6A3B: 29 F0 AND #$F0
6A3D: 1D 4C 6A ORA $6A4C,X ; Color Codes
6A40: 8D 01 D6 STA $D601
6A43: 20 5C 6A JSR $6A5C ; Log Current Colors
6A46: 4C 1E 9E JMP $9E1E
6A49: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Color Codes
6A4C: 00 0F 08 07 0B 04 02 0D ; '{0}{FLSHON}.{BELL}{LOCK}.{ULON}{CR}'
6A54: 0A 0C 09 06 01 05 03 0E ; '{LF}{UNLOCK}{TAB}..{WHITE}{STOP}{LOWTEXT}'
; Log Current Colors
6A5C: A5 86 LDA $86 ; Graphic foreground color (13)
6A5E: 0A ASL A
6A5F: 0A ASL A
6A60: 0A ASL A
6A61: 0A ASL A
6A62: 85 77 STA $77
6A64: 20 45 A8 JSR $A845 ; Set Bank 15
6A67: AD 21 D0 LDA $D021
6A6A: 29 0F AND #$0F
6A6C: 05 77 ORA $77
6A6E: 8D E2 03 STA $03E2
6A71: A5 84 LDA $84 ; Multicolor 1 (1)
6A73: 05 77 ORA $77
6A75: 8D E3 03 STA $03E3
6A78: 60 RTS
; Perform [scnclr]
6A79: D0 14 BNE $6A8F
6A7B: 20 8C 81 JSR $818C ; Get Graphics Mode
6A7E: C9 05 CMP #$05
6A80: 90 09 BCC $6A8B
6A82: E9 05 SBC #$05
6A84: F0 58 BEQ $6ADE
6A86: 48 PHA
6A87: 20 DE 6A JSR $6ADE
6A8A: 68 PLA
6A8B: AA TAX
6A8C: 4C 9B 6A JMP $6A9B
6A8F: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
6A92: E0 05 CPX #$05
6A94: F0 48 BEQ $6ADE
6A96: 90 03 BCC $6A9B
6A98: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
6A9B: 8A TXA
6A9C: F0 54 BEQ $6AF2
6A9E: 20 74 A0 JSR $A074
6AA1: 8A TXA
6AA2: 48 PHA
6AA3: 29 01 AND #$01
6AA5: D0 21 BNE $6AC8
6AA7: 20 F2 6A JSR $6AF2
6AAA: A5 D7 LDA $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
6AAC: 48 PHA
6AAD: 10 03 BPL $6AB2
6AAF: 20 5F FF JSR $FF5F ; swapper 40/80 swap
6AB2: AD 34 0A LDA $0A34 ; VIC Split Screen Raster Value
6AB5: 38 SEC
6AB6: E9 30 SBC #$30
6AB8: 4A LSR A
6AB9: 4A LSR A
6ABA: 4A LSR A
6ABB: AA TAX
6ABC: A0 00 LDY #$00
6ABE: 18 CLC
6ABF: 20 8D 92 JSR $928D ; Call 'plot'
6AC2: 68 PLA
6AC3: 10 03 BPL $6AC8
6AC5: 20 5F FF JSR $FF5F ; swapper 40/80 swap
6AC8: 68 PLA
6AC9: 29 02 AND #$02
6ACB: F0 03 BEQ $6AD0
6ACD: 20 17 6B JSR $6B17 ; Set Screen Color
6AD0: 20 30 6B JSR $6B30
6AD3: A9 00 LDA #$00
6AD5: A2 03 LDX #$03
6AD7: 9D 31 11 STA $1131,X
6ADA: CA DEX
6ADB: 10 FA BPL $6AD7
6ADD: 60 RTS
6ADE: A5 D7 LDA $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
6AE0: 48 PHA
6AE1: 30 03 BMI $6AE6
6AE3: 20 5F FF JSR $FF5F ; swapper 40/80 swap
6AE6: A9 93 LDA #$93
6AE8: 20 69 92 JSR $9269 ; Call 'chrout'
6AEB: 68 PLA
6AEC: 30 03 BMI $6AF1
6AEE: 20 5F FF JSR $FF5F ; swapper 40/80 swap
6AF1: 60 RTS
6AF2: A5 D7 LDA $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
6AF4: 48 PHA
6AF5: 10 03 BPL $6AFA
6AF7: 20 5F FF JSR $FF5F ; swapper 40/80 swap
6AFA: A9 93 LDA #$93
6AFC: 20 69 92 JSR $9269 ; Call 'chrout'
6AFF: 68 PLA
6B00: 10 03 BPL $6B05
6B02: 20 5F FF JSR $FF5F ; swapper 40/80 swap
6B05: 60 RTS
; Fill Memory Page
6B06: 84 8D STY $8D
6B08: A0 00 LDY #$00
6B0A: 84 8C STY $8C
6B0C: 91 8C STA ($8C),Y
6B0E: 88 DEY
6B0F: D0 FB BNE $6B0C
6B11: E6 8D INC $8D
6B13: CA DEX
6B14: D0 F6 BNE $6B0C
6B16: 60 RTS
; Set Screen Color
6B17: 20 45 A8 JSR $A845 ; Set Bank 15
6B1A: 78 SEI
6B1B: A5 01 LDA $01
6B1D: 48 PHA
6B1E: 29 FE AND #$FE
6B20: 85 01 STA $01
6B22: A5 85 LDA $85 ; Multicolor 2 (2)
6B24: A0 D8 LDY #$D8
6B26: A2 04 LDX #$04
6B28: 20 06 6B JSR $6B06 ; Fill Memory Page
6B2B: 68 PLA
6B2C: 85 01 STA $01
6B2E: 58 CLI
6B2F: 60 RTS
6B30: A9 00 LDA #$00
6B32: A0 20 LDY #$20
6B34: A2 20 LDX #$20
6B36: 20 06 6B JSR $6B06 ; Fill Memory Page
6B39: AD E2 03 LDA $03E2
6B3C: 24 D8 BIT $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
6B3E: 10 03 BPL $6B43
6B40: AD E3 03 LDA $03E3
6B43: 20 45 A8 JSR $A845 ; Set Bank 15
6B46: A0 1C LDY #$1C
6B48: A2 04 LDX #$04
6B4A: 20 06 6B JSR $6B06 ; Fill Memory Page
6B4D: A2 3F LDX #$3F
6B4F: A0 07 LDY #$07
6B51: 8A TXA
6B52: 99 F8 1F STA $1FF8,Y
6B55: CA DEX
6B56: 88 DEY
6B57: 10 F8 BPL $6B51
6B59: 60 RTS
; Perform [graphic]
6B5A: C9 9C CMP #$9C
6B5C: D0 0B BNE $6B69
6B5E: 20 22 A0 JSR $A022 ; Move Basic to $1c01
6B61: 20 80 03 JSR $0380 ; CHRGET
6B64: A9 00 LDA #$00
6B66: 85 D8 STA $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
6B68: 60 RTS
6B69: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
6B6C: 8A TXA
6B6D: 48 PHA
6B6E: E0 05 CPX #$05
6B70: F0 42 BEQ $6BB4
6B72: B0 4D BCS $6BC1
6B74: BD C4 6B LDA $6BC4,X ; Graphic modes
6B77: 85 D8 STA $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
6B79: F0 07 BEQ $6B82
6B7B: 20 4F 9F JSR $9F4F ; Allocate 9K Graphics Area for graphic/sprdef
6B7E: 24 D8 BIT $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
6B80: 50 07 BVC $6B89
6B82: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
6B84: 10 03 BPL $6B89
6B86: 20 5F FF JSR $FF5F ; swapper 40/80 swap
6B89: 20 1C 9E JSR $9E1C ; Input Optional Byte Parameter -Check Byte Parameter in List
6B8C: E0 02 CPX #$02
6B8E: B0 31 BCS $6BC1
6B90: 8A TXA
6B91: 48 PHA
6B92: A2 14 LDX #$14
6B94: 20 1E 9E JSR $9E1E
6B97: E0 1A CPX #$1A
6B99: B0 26 BCS $6BC1
6B9B: 8A TXA
6B9C: 0A ASL A
6B9D: 0A ASL A
6B9E: 0A ASL A
6B9F: 69 30 ADC #$30
6BA1: 8D 34 0A STA $0A34 ; VIC Split Screen Raster Value
6BA4: 68 PLA
6BA5: A8 TAY
6BA6: 68 PLA
6BA7: AA TAX
6BA8: 98 TYA
6BA9: F0 03 BEQ $6BAE
6BAB: 20 92 6A JSR $6A92
6BAE: A9 00 LDA #$00
6BB0: 8D 6A 11 STA $116A ; SCALE Mode Flag
6BB3: 60 RTS
6BB4: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
6BB6: 30 D1 BMI $6B89
6BB8: A5 D8 LDA $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
6BBA: 29 BF AND #$BF
6BBC: 85 D8 STA $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
6BBE: 4C 86 6B JMP $6B86
6BC1: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Graphic modes
6BC4: 00 20 60 A0 E0 ; '{0} `..'
; Perform [bank]
6BC9: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
6BCC: E0 10 CPX #$10
6BCE: B0 04 BCS $6BD4
6BD0: 8E D5 03 STX $03D5 ; Current Bank For SYS, POKE, PEEK
6BD3: 60 RTS
6BD4: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Perform [sleep]
6BD7: 20 12 88 JSR $8812 ; -Input Float/Fixed Value
6BDA: A2 00 LDX #$00
6BDC: 78 SEI
6BDD: 8C 1D 0A STY $0A1D
6BE0: 8D 1E 0A STA $0A1E
6BE3: 8E 1F 0A STX $0A1F
6BE6: 20 0C 6C JSR $6C0C
6BE9: 20 16 6C JSR $6C16
6BEC: 20 09 6C JSR $6C09 ; Multiply Sleep Time
6BEF: AC 1D 0A LDY $0A1D
6BF2: AD 1E 0A LDA $0A1E
6BF5: AE 1F 0A LDX $0A1F
6BF8: 20 09 6C JSR $6C09 ; Multiply Sleep Time
6BFB: 20 16 6C JSR $6C16
6BFE: 58 CLI
6BFF: 20 B5 4B JSR $4BB5 ; ?
6C02: AE 1F 0A LDX $0A1F
6C05: E8 INX
6C06: D0 F7 BNE $6BFF
6C08: 60 RTS
; Multiply Sleep Time
6C09: 20 0C 6C JSR $6C0C
6C0C: 0E 1D 0A ASL $0A1D
6C0F: 2E 1E 0A ROL $0A1E
6C12: 2E 1F 0A ROL $0A1F
6C15: 60 RTS
6C16: 48 PHA
6C17: 98 TYA
6C18: 6D 1D 0A ADC $0A1D
6C1B: 8D 1D 0A STA $0A1D
6C1E: 68 PLA
6C1F: 6D 1E 0A ADC $0A1E
6C22: 8D 1E 0A STA $0A1E
6C25: 8A TXA
6C26: 6D 1F 0A ADC $0A1F
6C29: 8D 1F 0A STA $0A1F
6C2C: 60 RTS
; Perform [wait]
6C2D: 20 03 88 JSR $8803 ; Params For Poke/Wait
6C30: 86 4B STX $4B
6C32: A2 00 LDX #$00
6C34: 20 86 03 JSR $0386 ; CHRGOT entry
6C37: F0 03 BEQ $6C3C
6C39: 20 09 88 JSR $8809
6C3C: 86 4C STX $4C
6C3E: A0 00 LDY #$00
6C40: AE D5 03 LDX $03D5 ; Current Bank For SYS, POKE, PEEK
6C43: A9 16 LDA #$16
6C45: 20 74 FF JSR $FF74 ; indfet Bank LDA (fetchvec),y
6C48: 45 4C EOR $4C
6C4A: 25 4B AND $4B
6C4C: F0 F0 BEQ $6C3E
6C4E: 60 RTS
; Perform [sprite]
6C4F: 20 BB 6C JSR $6CBB ; ?
6C52: 20 1E 9E JSR $9E1E
6C55: 90 05 BCC $6C5C
6C57: A0 15 LDY #$15
6C59: 20 9B 6C JSR $6C9B ; ?
6C5C: 20 1E 9E JSR $9E1E
6C5F: 90 0E BCC $6C6F
6C61: CA DEX
6C62: E0 10 CPX #$10
6C64: B0 32 BCS $6C98
6C66: 8A TXA
6C67: A6 77 LDX $77
6C69: 20 45 A8 JSR $A845 ; Set Bank 15
6C6C: 9D 27 D0 STA $D027,X
6C6F: 20 1E 9E JSR $9E1E
6C72: 90 05 BCC $6C79
6C74: A0 1B LDY #$1B
6C76: 20 9B 6C JSR $6C9B ; ?
6C79: 20 1E 9E JSR $9E1E
6C7C: 90 05 BCC $6C83
6C7E: A0 1D LDY #$1D
6C80: 20 9B 6C JSR $6C9B ; ?
6C83: 20 1E 9E JSR $9E1E
6C86: 90 05 BCC $6C8D
6C88: A0 17 LDY #$17
6C8A: 20 9B 6C JSR $6C9B ; ?
6C8D: 20 1E 9E JSR $9E1E
6C90: 90 05 BCC $6C97
6C92: A0 1C LDY #$1C
6C94: 20 9B 6C JSR $6C9B ; ?
6C97: 60 RTS
6C98: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; ?
6C9B: 8A TXA
6C9C: 4A LSR A
6C9D: D0 F9 BNE $6C98
6C9F: A6 77 LDX $77
6CA1: BD B3 6C LDA $6CB3,X ; Bit Masks
6CA4: 20 45 A8 JSR $A845 ; Set Bank 15
6CA7: 19 00 D0 ORA $D000,Y
6CAA: B0 03 BCS $6CAF
6CAC: 5D B3 6C EOR $6CB3,X ; Bit Masks
6CAF: 99 00 D0 STA $D000,Y
6CB2: 60 RTS
; Bit Masks
6CB3: 01 02 04 08 ; '.{ULON}..'
6CB7: 10 20 40 80 ; '. @.'
; ?
6CBB: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
6CBE: CA DEX
6CBF: E0 08 CPX #$08
6CC1: B0 D5 BCS $6C98
6CC3: 86 77 STX $77
6CC5: 60 RTS
; Perform [movspr]
6CC6: 20 BB 6C JSR $6CBB ; ?
6CC9: 20 9E 6D JSR $6D9E ; ?
6CCC: 2C 6E 11 BIT $116E
6CCF: 50 03 BVC $6CD4
6CD1: 4C 6C 79 JMP $796C ; Syntax Error
6CD4: 8C 35 11 STY $1135
6CD7: 8C 37 11 STY $1137
6CDA: 8D 36 11 STA $1136
6CDD: 8D 38 11 STA $1138
6CE0: 20 9E 6D JSR $6D9E ; ?
6CE3: 2C 6E 11 BIT $116E
6CE6: 50 61 BVC $6D49
6CE8: 30 3A BMI $6D24
6CEA: 98 TYA
6CEB: 48 PHA
6CEC: A0 04 LDY #$04
6CEE: 20 74 9A JSR $9A74 ; ?
6CF1: A6 77 LDX $77
6CF3: BC D9 6D LDY $6DD9,X ; Sprite Motion Table Offsets
6CF6: A9 00 LDA #$00
6CF8: 99 7E 11 STA $117E,Y ; Sprite Motion Tables (8 x 11 bytes)
6CFB: C8 INY
6CFC: A2 03 LDX #$03
6CFE: 5E 4A 11 LSR $114A,X
6D01: CA DEX
6D02: 7E 4A 11 ROR $114A,X
6D05: CA DEX
6D06: 10 F6 BPL $6CFE
6D08: E8 INX
6D09: BD 49 11 LDA $1149,X
6D0C: C8 INY
6D0D: 99 7E 11 STA $117E,Y ; Sprite Motion Tables (8 x 11 bytes)
6D10: E0 04 CPX #$04
6D12: D0 F4 BNE $6D08
6D14: A9 00 LDA #$00
6D16: C8 INY
6D17: 99 7E 11 STA $117E,Y ; Sprite Motion Tables (8 x 11 bytes)
6D1A: CA DEX
6D1B: D0 F9 BNE $6D16
6D1D: 68 PLA
6D1E: 29 0F AND #$0F
6D20: 99 74 11 STA $1174,Y
6D23: 60 RTS
6D24: 20 39 81 JSR $8139 ; Swap x With y
6D27: A8 TAY
6D28: 8A TXA
6D29: 20 77 9A JSR $9A77
6D2C: A2 04 LDX #$04
6D2E: 20 4A 9D JSR $9D4A ; ?
6D31: A2 04 LDX #$04
6D33: 18 CLC
6D34: 20 CE 9A JSR $9ACE ; ?
6D37: 9D 31 11 STA $1131,X
6D3A: 98 TYA
6D3B: 9D 32 11 STA $1132,X
6D3E: E8 INX
6D3F: E8 INX
6D40: E0 06 CPX #$06
6D42: F0 F0 BEQ $6D34
6D44: 6E 6E 11 ROR $116E
6D47: 30 0B BMI $6D54
6D49: 8C 37 11 STY $1137
6D4C: 8D 38 11 STA $1138
6D4F: A2 04 LDX #$04
6D51: 20 4A 9D JSR $9D4A ; ?
6D54: A5 77 LDA $77
6D56: AA TAX
6D57: 0A ASL A
6D58: A8 TAY
6D59: AD 37 11 LDA $1137
6D5C: 0E 6E 11 ASL $116E
6D5F: 90 09 BCC $6D6A
6D61: 18 CLC
6D62: 10 03 BPL $6D67
6D64: 49 FF EOR #$FF
6D66: 38 SEC
6D67: 79 D7 11 ADC $11D7,Y
6D6A: 78 SEI
6D6B: 99 D7 11 STA $11D7,Y
6D6E: AD 35 11 LDA $1135
6D71: 0E 6E 11 ASL $116E
6D74: 10 12 BPL $6D88
6D76: 18 CLC
6D77: 79 D6 11 ADC $11D6,Y
6D7A: 99 D6 11 STA $11D6,Y
6D7D: B0 03 BCS $6D82
6D7F: EE 36 11 INC $1136
6D82: AD E6 11 LDA $11E6
6D85: 4C 91 6D JMP $6D91
6D88: 99 D6 11 STA $11D6,Y
6D8B: AD E6 11 LDA $11E6
6D8E: 1D B3 6C ORA $6CB3,X ; Bit Masks
6D91: 4E 36 11 LSR $1136
6D94: B0 03 BCS $6D99
6D96: 5D B3 6C EOR $6CB3,X ; Bit Masks
6D99: 8D E6 11 STA $11E6
6D9C: 58 CLI
6D9D: 60 RTS
; Parse Sprite Parameter
6D9E: 20 C6 6D JSR $6DC6 ; Check for comma
6DA1: 6E 6E 11 ROR $116E
6DA4: 10 0B BPL $6DB1
6DA6: C9 3B CMP #$3B ; ";"
6DA8: F0 13 BEQ $6DBD
6DAA: C9 23 CMP #$23 ; "#"
6DAC: F0 0E BEQ $6DBC
6DAE: 4C 6C 79 JMP $796C ; Syntax Error
6DB1: 20 86 03 JSR $0386 ; CHRGOT entry
6DB4: C9 AA CMP #$AA ; Token +
6DB6: F0 05 BEQ $6DBD
6DB8: C9 AB CMP #$AB ; Token -
6DBA: F0 01 BEQ $6DBD
6DBC: 18 CLC
6DBD: 6E 6E 11 ROR $116E
6DC0: 20 D7 77 JSR $77D7 ; Type Match Check
6DC3: 4C 19 88 JMP $8819 ; Get Signed Integer
; ?
6DC6: 20 86 03 JSR $0386 ; CHRGOT entry
6DC9: F0 0D BEQ $6DD8
6DCB: C9 2C CMP #$2C
6DCD: 18 CLC
6DCE: F0 01 BEQ $6DD1
6DD0: 38 SEC
6DD1: 08 PHP
6DD2: 48 PHA
6DD3: 20 80 03 JSR $0380 ; CHRGET
6DD6: 68 PLA
6DD7: 28 PLP
6DD8: 60 RTS
; Sprite Motion Table Offsets
6DD9: 00 0B 16 21 2C 37 42 4D ; '{0}{LOCK}.!,7bm'
; Perform [play]
6DE1: 20 7B 87 JSR $877B ; Evaluate String
6DE4: 8D 03 FF STA $FF03
6DE7: 85 77 STA $77
6DE9: 20 CE 6F JSR $6FCE
6DEC: 85 78 STA $78
6DEE: A4 78 LDY $78
6DF0: C4 77 CPY $77
6DF2: F0 0D BEQ $6E01
6DF4: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
6DF7: 8D 03 FF STA $FF03
6DFA: 20 02 6E JSR $6E02 ; Analyze Play Character
6DFD: E6 78 INC $78
6DFF: D0 ED BNE $6DEE
6E01: 60 RTS
; Analyze Play Character
6E02: C9 20 CMP #$20
6E04: D0 01 BNE $6E07
6E06: 60 RTS
6E07: C9 41 CMP #$41
6E09: 90 07 BCC $6E12
6E0B: C9 48 CMP #$48
6E0D: B0 03 BCS $6E12
6E0F: 4C 1E 6F JMP $6F1E ; Note A-G
6E12: A2 04 LDX #$04
6E14: DD E7 6F CMP $6FE7,X ; Length Characters
6E17: D0 03 BNE $6E1C
6E19: 4C 07 6F JMP $6F07 ; Note Length Char
6E1C: CA DEX
6E1D: 10 F5 BPL $6E14
6E1F: C9 52 CMP #$52
6E21: D0 03 BNE $6E26
6E23: 4C 78 6F JMP $6F78 ; Rest
6E26: C9 2E CMP #$2E
6E28: D0 03 BNE $6E2D
6E2A: 4C 03 6F JMP $6F03 ; Dotted Note
6E2D: A2 05 LDX #$05
6E2F: DD EC 6F CMP $6FEC,X ; Command Characters
6E32: D0 03 BNE $6E37
6E34: 4C 52 6F JMP $6F52 ; ...votxum...
6E37: CA DEX
6E38: 10 F5 BPL $6E2F
6E3A: C9 23 CMP #$23
6E3C: D0 03 BNE $6E41
6E3E: 4C 69 6F JMP $6F69 ; Sharp
6E41: C9 24 CMP #$24
6E43: D0 03 BNE $6E48
6E45: 4C 6C 6F JMP $6F6C ; Flat
6E48: 38 SEC
6E49: E9 30 SBC #$30
6E4B: C9 0A CMP #$0A
6E4D: 90 03 BCC $6E52
6E4F: 4C FD 6E JMP $6EFD ; Play Error
6E52: 0E 26 01 ASL $0126
6E55: B0 46 BCS $6E9D ; -Voice
6E57: 0E 26 01 ASL $0126
6E5A: B0 4C BCS $6EA8 ; -Octave
6E5C: 0E 26 01 ASL $0126
6E5F: B0 50 BCS $6EB1
6E61: 0E 26 01 ASL $0126
6E64: 90 77 BCC $6EDD ; -Volume
; -Filter
6E66: C9 02 CMP #$02
6E68: 90 03 BCC $6E6D
6E6A: 4C FD 6E JMP $6EFD ; Play Error
6E6D: 4A LSR A
6E6E: AC 2F 12 LDY $122F
6E71: BE E4 6F LDX $6FE4,Y ; Voice Times Two
6E74: BD 24 12 LDA $1224,X
6E77: 10 FB BPL $6E74
6E79: B9 B3 6C LDA $6CB3,Y ; Bit Masks
6E7C: 0D 73 12 ORA $1273
6E7F: B0 03 BCS $6E84
6E81: 59 B3 6C EOR $6CB3,Y ; Bit Masks
6E84: 8D 73 12 STA $1273
6E87: AD 74 12 LDA $1274
6E8A: 8D 75 12 STA $1275
6E8D: A2 03 LDX #$03
6E8F: BD 71 12 LDA $1271,X
6E92: 20 45 A8 JSR $A845 ; Set Bank 15
6E95: 9D 15 D4 STA $D415,X
6E98: CA DEX
6E99: 10 F4 BPL $6E8F
6E9B: 30 5A BMI $6EF7
; -Voice
6E9D: AA TAX
6E9E: CA DEX
6E9F: E0 03 CPX #$03
6EA1: B0 5A BCS $6EFD ; Play Error
6EA3: 8E 2F 12 STX $122F
6EA6: 90 4F BCC $6EF7
; -Octave
6EA8: C9 07 CMP #$07
6EAA: B0 51 BCS $6EFD ; Play Error
6EAC: 8D 2B 12 STA $122B
6EAF: 90 46 BCC $6EF7
6EB1: AA TAX
; Set SID Sound
6EB2: 20 45 A8 JSR $A845 ; Set Bank 15
6EB5: AC 2F 12 LDY $122F
6EB8: BD 53 12 LDA $1253,X
6EBB: 99 30 12 STA $1230,Y
6EBE: B9 39 70 LDA $7039,Y ; SID Voice Offsets
6EC1: A8 TAY
6EC2: BD 3F 12 LDA $123F,X
6EC5: 99 05 D4 STA $D405,Y
6EC8: BD 49 12 LDA $1249,X
6ECB: 99 06 D4 STA $D406,Y
6ECE: BD 5D 12 LDA $125D,X
6ED1: 99 02 D4 STA $D402,Y
6ED4: BD 67 12 LDA $1267,X
6ED7: 99 03 D4 STA $D403,Y
6EDA: 4C F7 6E JMP $6EF7
; -Volume
6EDD: AA TAX
6EDE: AD 74 12 LDA $1274
6EE1: 29 F0 AND #$F0
6EE3: 1D 3C 70 ORA $703C,X ; SID Volume Scale
6EE6: 8D 74 12 STA $1274
6EE9: AD 75 12 LDA $1275
6EEC: 29 F0 AND #$F0
6EEE: 1D 3C 70 ORA $703C,X ; SID Volume Scale
6EF1: 20 45 A8 JSR $A845 ; Set Bank 15
6EF4: 8D 18 D4 STA $D418
6EF7: A9 00 LDA #$00
6EF9: 8D 26 01 STA $0126
6EFC: 60 RTS
; Play Error
6EFD: 20 F7 6E JSR $6EF7
6F00: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Dotted Note
6F03: 8D 33 12 STA $1233
6F06: 60 RTS
; Note Length Char
6F07: A0 80 LDY #$80
6F09: 8C 29 12 STY $1229
6F0C: A0 04 LDY #$04
6F0E: 8C 2A 12 STY $122A
6F11: CA DEX
6F12: 30 09 BMI $6F1D
6F14: 4E 2A 12 LSR $122A
6F17: 6E 29 12 ROR $1229
6F1A: 4C 11 6F JMP $6F11
6F1D: 60 RTS
; Note A-G
6F1E: 38 SEC
6F1F: E9 41 SBC #$41
6F21: AA TAX
6F22: BD F2 6F LDA $6FF2,X ; Indexes for Note Symbols
6F25: AA TAX
6F26: A9 06 LDA #$06
6F28: 38 SEC
6F29: ED 2B 12 SBC $122B
6F2C: A8 TAY
6F2D: 8A TXA
6F2E: 18 CLC
6F2F: 6D 2C 12 ADC $122C
6F32: 10 03 BPL $6F37
6F34: A9 0B LDA #$0B
6F36: C8 INY
6F37: C9 0C CMP #$0C
6F39: 90 03 BCC $6F3E
6F3B: A9 00 LDA #$00
6F3D: 88 DEY
6F3E: AA TAX
6F3F: BD F9 6F LDA $6FF9,X ; Pitch LO -- NTSC
6F42: 8D 2D 12 STA $122D
6F45: 20 A6 7E JSR $7EA6 ; Patch for Note A-G
6F48: 88 DEY
6F49: 30 27 BMI $6F72
6F4B: 4A LSR A
6F4C: 6E 2D 12 ROR $122D
6F4F: 4C 48 6F JMP $6F48
; ...votxum...
6F52: C9 4D CMP #$4D
6F54: F0 07 BEQ $6F5D
6F56: BD 1C 9D LDA $9D1C,X ; Bit Masks
6F59: 8D 26 01 STA $0126
6F5C: 60 RTS
6F5D: A0 05 LDY #$05
6F5F: B9 23 12 LDA $1223,Y
6F62: 10 FB BPL $6F5F
6F64: 88 DEY
6F65: 88 DEY
6F66: 10 F7 BPL $6F5F
6F68: 60 RTS
; Sharp
6F69: A9 01 LDA #$01
6F6B: 2C .BYTE $2C
; Flat
6F6C: A9 FF LDA #$FF
6F6E: 8D 2C 12 STA $122C
6F71: 60 RTS
6F72: 8D 2E 12 STA $122E
6F75: A9 00 LDA #$00
6F77: 2C .BYTE $2C
; Rest
6F78: A9 FF LDA #$FF
6F7A: 48 PHA
6F7B: AE 2F 12 LDX $122F
6F7E: BC E4 6F LDY $6FE4,X ; Voice Times Two
6F81: B9 24 12 LDA $1224,Y
6F84: 10 FB BPL $6F81
6F86: AD 29 12 LDA $1229
6F89: 99 23 12 STA $1223,Y
6F8C: AD 2A 12 LDA $122A
6F8F: 99 24 12 STA $1224,Y
6F92: AD 33 12 LDA $1233
6F95: F0 17 BEQ $6FAE
6F97: AD 2A 12 LDA $122A
6F9A: 4A LSR A
6F9B: 48 PHA
6F9C: AD 29 12 LDA $1229
6F9F: 6A ROR A
6FA0: 18 CLC
6FA1: 79 23 12 ADC $1223,Y
6FA4: 99 23 12 STA $1223,Y
6FA7: 68 PLA
6FA8: 79 24 12 ADC $1224,Y
6FAB: 99 24 12 STA $1224,Y
6FAE: 68 PLA
6FAF: 30 1D BMI $6FCE
6FB1: 20 45 A8 JSR $A845 ; Set Bank 15
6FB4: BC 39 70 LDY $7039,X ; SID Voice Offsets
6FB7: AD 2D 12 LDA $122D
6FBA: 99 00 D4 STA $D400,Y
6FBD: AD 2E 12 LDA $122E
6FC0: 99 01 D4 STA $D401,Y
6FC3: A9 08 LDA #$08
6FC5: 99 04 D4 STA $D404,Y
6FC8: BD 30 12 LDA $1230,X
6FCB: 99 04 D4 STA $D404,Y
6FCE: A9 00 LDA #$00
6FD0: 8D 2C 12 STA $122C
6FD3: 8D 33 12 STA $1233
6FD6: 60 RTS
; Perform [tempo]
6FD7: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
6FDA: 8A TXA
6FDB: F0 04 BEQ $6FE1
6FDD: 8E 22 12 STX $1222
6FE0: 60 RTS
6FE1: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Voice Times Two
6FE4: 00 02 04 ; '{0}{ULON}.'
; Length Characters
6FE7: 57 48 51 49 53 ; 'whqis'
; Command Characters
6FEC: 56 4F 54 58 55 4D ; 'votxum'
; Indexes for Note Symbols
6FF2: 09 0B 00 02 04 05 07 ; '{TAB}{LOCK}{0}{ULON}.{WHITE}{BELL}'
; Pitch LO -- NTSC
6FF9: 0F 0C 45 BF 7D 83 D6 79 ; '{FLSHON}{UNLOCK}e...VY'
7001: 73 C7 7C 97 ; 'SG.{GRAY1}'
; Pitch HI -- NTSC
7005: 43 47 4B 4F 54 59 5E 64 ; 'cgkoty^d'
700D: 6A 70 77 7E ; 'jPW.'
; Envelope A/D Patterns
7011: 09 C0 00 05 94 09 09 09 ; '{TAB}.{0}{WHITE}{INS}{TAB}{TAB}{TAB}'
7019: 89 09 00 C0 F0 50 40 21 ; '.{TAB}{0}..p@!'
7021: 00 90 41 00 41 21 11 81 ; '{0}{BLACK}a{0}a!{DOWN}{ORANGE}'
7029: 11 21 41 41 41 11 ; '{DOWN}!aaa{DOWN}'
; Chime Seq
702F: 06 00 00 00 00 00 02 08 ; '.{0}{0}{0}{0}{0}{ULON}.'
7037: 02 00 ; '{ULON}{0}'
; SID Voice Offsets
7039: 00 07 0E ; '{0}{BELL}{LOWTEXT}'
; SID Volume Scale
703C: 00 01 03 05 07 08 0A 0C ; '{0}.{STOP}{WHITE}{BELL}.{LF}{UNLOCK}'
7044: 0E 0F ; '{LOWTEXT}{FLSHON}'
; Perform [filter]
7046: 48 PHA
7047: A0 03 LDY #$03
7049: B9 71 12 LDA $1271,Y
704C: 99 34 12 STA $1234,Y
704F: 88 DEY
7050: 10 F7 BPL $7049
7052: 68 PLA
7053: C9 2C CMP #$2C
7055: F0 19 BEQ $7070
7057: 20 12 88 JSR $8812 ; -Input Float/Fixed Value
705A: C9 08 CMP #$08
705C: B0 60 BCS $70BE
705E: 8C 34 12 STY $1234
7061: 8C 35 12 STY $1235
7064: 4A LSR A
7065: 6E 35 12 ROR $1235
7068: 4A LSR A
7069: 6E 35 12 ROR $1235
706C: 4A LSR A
706D: 6E 35 12 ROR $1235
7070: A9 10 LDA #$10
7072: 8D 38 12 STA $1238
7075: 20 1E 9E JSR $9E1E
7078: 90 17 BCC $7091
707A: E0 01 CPX #$01
707C: 90 05 BCC $7083
707E: F0 03 BEQ $7083
7080: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
7083: AD 37 12 LDA $1237
7086: 0D 38 12 ORA $1238
7089: B0 03 BCS $708E
708B: 4D 38 12 EOR $1238
708E: 8D 37 12 STA $1237
7091: 0E 38 12 ASL $1238
7094: 10 DF BPL $7075
7096: 20 1E 9E JSR $9E1E
7099: 90 17 BCC $70B2
709B: E0 10 CPX #$10
709D: B0 1F BCS $70BE
709F: 8A TXA
70A0: 0A ASL A
70A1: 0A ASL A
70A2: 0A ASL A
70A3: 0A ASL A
70A4: 8D 39 12 STA $1239
70A7: AD 36 12 LDA $1236
70AA: 29 0F AND #$0F
70AC: 0D 39 12 ORA $1239
70AF: 8D 36 12 STA $1236
70B2: A0 03 LDY #$03
70B4: B9 34 12 LDA $1234,Y
70B7: 99 71 12 STA $1271,Y
70BA: 88 DEY
70BB: 10 F7 BPL $70B4
70BD: 60 RTS
70BE: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Perform [envelope]
70C1: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
70C4: E0 0A CPX #$0A
70C6: 90 03 BCC $70CB
70C8: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
70CB: 8E 3A 12 STX $123A
70CE: BD 3F 12 LDA $123F,X
70D1: 8D 3B 12 STA $123B
70D4: BD 49 12 LDA $1249,X
70D7: 8D 3C 12 STA $123C
70DA: BD 53 12 LDA $1253,X
70DD: 8D 3D 12 STA $123D
70E0: A2 00 LDX #$00
70E2: 8E 3E 12 STX $123E
70E5: 20 1E 9E JSR $9E1E
70E8: 90 16 BCC $7100
70EA: 8A TXA
70EB: 0A ASL A
70EC: 0A ASL A
70ED: 0A ASL A
70EE: 0A ASL A
70EF: 8D 39 12 STA $1239
70F2: AE 3E 12 LDX $123E
70F5: BD 3B 12 LDA $123B,X
70F8: 29 0F AND #$0F
70FA: 0D 39 12 ORA $1239
70FD: 9D 3B 12 STA $123B,X
7100: 20 1E 9E JSR $9E1E
7103: 90 14 BCC $7119
7105: 8A TXA
7106: 29 0F AND #$0F
7108: 8D 39 12 STA $1239
710B: AE 3E 12 LDX $123E
710E: BD 3B 12 LDA $123B,X
7111: 29 F0 AND #$F0
7113: 0D 39 12 ORA $1239
7116: 9D 3B 12 STA $123B,X
7119: AE 3E 12 LDX $123E
711C: E8 INX
711D: E0 01 CPX #$01
711F: F0 C1 BEQ $70E2
7121: 20 1E 9E JSR $9E1E
7124: 90 10 BCC $7136
7126: A9 15 LDA #$15
7128: E0 04 CPX #$04
712A: F0 07 BEQ $7133
712C: B0 9A BCS $70C8
712E: BD B7 6C LDA $6CB7,X
7131: 09 01 ORA #$01
7133: 8D 3D 12 STA $123D
7136: 20 06 9E JSR $9E06 ; Check Optional Float/Fixed Parameter
7139: 90 13 BCC $714E
713B: AA TAX
713C: AD 3D 12 LDA $123D
713F: 29 40 AND #$40
7141: F0 0B BEQ $714E
7143: 8A TXA
7144: AE 3A 12 LDX $123A
7147: 9D 67 12 STA $1267,X
714A: 98 TYA
714B: 9D 5D 12 STA $125D,X
714E: AE 3A 12 LDX $123A
7151: AD 3B 12 LDA $123B
7154: 9D 3F 12 STA $123F,X
7157: AD 3C 12 LDA $123C
715A: 9D 49 12 STA $1249,X
715D: AD 3D 12 LDA $123D
7160: 9D 53 12 STA $1253,X
7163: 60 RTS
; Perform [collision]
7164: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
7167: CA DEX
7168: E0 03 CPX #$03
716A: B0 21 BCS $718D
716C: 8E 80 12 STX $1280
716F: 20 06 9E JSR $9E06 ; Check Optional Float/Fixed Parameter
7172: 08 PHP
7173: AE 80 12 LDX $1280
7176: 9D 7C 12 STA $127C,X
7179: 98 TYA
717A: 9D 79 12 STA $1279,X ; Collision IRQ Address Tables
717D: AD 7F 12 LDA $127F ; Collision Mask
7180: 1D B3 6C ORA $6CB3,X ; Bit Masks
7183: 28 PLP
7184: B0 03 BCS $7189
7186: 5D B3 6C EOR $6CB3,X ; Bit Masks
7189: 8D 7F 12 STA $127F ; Collision Mask
718C: 60 RTS
718D: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Perform [sprcolor]
7190: C9 2C CMP #$2C
7192: F0 0E BEQ $71A2
7194: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
7197: CA DEX
7198: E0 10 CPX #$10
719A: B0 17 BCS $71B3
719C: 20 45 A8 JSR $A845 ; Set Bank 15
719F: 8E 25 D0 STX $D025
71A2: 20 1E 9E JSR $9E1E
71A5: 90 0B BCC $71B2
71A7: CA DEX
71A8: E0 10 CPX #$10
71AA: B0 07 BCS $71B3
71AC: 20 45 A8 JSR $A845 ; Set Bank 15
71AF: 8E 26 D0 STX $D026
71B2: 60 RTS
71B3: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Perform [width]
71B6: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
71B9: CA DEX
71BA: E0 02 CPX #$02
71BC: B0 04 BCS $71C2
71BE: 8E 6B 11 STX $116B ; Double Width Flag
71C1: 60 RTS
71C2: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Perform [vol]
71C5: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
71C8: E0 10 CPX #$10
71CA: B0 1D BCS $71E9
71CC: 86 77 STX $77
71CE: AD 74 12 LDA $1274
71D1: 29 F0 AND #$F0
71D3: 05 77 ORA $77
71D5: 8D 74 12 STA $1274
71D8: AD 75 12 LDA $1275
71DB: 29 F0 AND #$F0
71DD: 05 77 ORA $77
71DF: 8D 75 12 STA $1275
71E2: 20 45 A8 JSR $A845 ; Set Bank 15
71E5: 8D 18 D4 STA $D418
71E8: 60 RTS
71E9: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Perform [sound]
71EC: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
71EF: CA DEX
71F0: E0 03 CPX #$03
71F2: 90 03 BCC $71F7
71F4: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
71F7: 8E 81 12 STX $1281
71FA: 20 0F 88 JSR $880F ; Input Next Float/Fixed Value
71FD: 8C A5 12 STY $12A5
7200: 8D A6 12 STA $12A6
7203: 8C AC 12 STY $12AC
7206: 8D AD 12 STA $12AD
7209: 20 0F 88 JSR $880F ; Input Next Float/Fixed Value
720C: C9 80 CMP #$80
720E: B0 E4 BCS $71F4
7210: 8C A3 12 STY $12A3
7213: 8D A4 12 STA $12A4
7216: 20 1C 9E JSR $9E1C ; Input Optional Byte Parameter -Check Byte Parameter in List
7219: E0 03 CPX #$03
721B: B0 D7 BCS $71F4
721D: 8A TXA
721E: 8D A9 12 STA $12A9
7221: 29 01 AND #$01
7223: 08 PHP
7224: 20 06 9E JSR $9E06 ; Check Optional Float/Fixed Parameter
7227: 8C A7 12 STY $12A7
722A: 8D A8 12 STA $12A8
722D: 20 06 9E JSR $9E06 ; Check Optional Float/Fixed Parameter
7230: 28 PLP
7231: F0 0D BEQ $7240
7233: 48 PHA
7234: 98 TYA
7235: 49 FF EOR #$FF
7237: 18 CLC
7238: 69 01 ADC #$01
723A: A8 TAY
723B: 68 PLA
723C: 49 FF EOR #$FF
723E: 69 00 ADC #$00
7240: 8D AB 12 STA $12AB
7243: 98 TYA
7244: 8D AA 12 STA $12AA
7247: A2 02 LDX #$02
7249: 20 1E 9E JSR $9E1E
724C: E0 04 CPX #$04
724E: B0 CB BCS $721B
7250: BD B7 6C LDA $6CB7,X
7253: 09 01 ORA #$01
7255: 8D B0 12 STA $12B0
7258: 20 06 9E JSR $9E06 ; Check Optional Float/Fixed Parameter
725B: B0 04 BCS $7261
725D: A9 08 LDA #$08
725F: A0 00 LDY #$00
7261: C9 10 CMP #$10
7263: B0 8F BCS $71F4
7265: 8C AE 12 STY $12AE
7268: 8D AF 12 STA $12AF
726B: AD A3 12 LDA $12A3
726E: 0D A4 12 ORA $12A4
7271: F0 46 BEQ $72B9
7273: AE 81 12 LDX $1281
7276: 8A TXA
7277: 0A ASL A
7278: A8 TAY
7279: B9 24 12 LDA $1224,Y
727C: 10 FB BPL $7279
727E: BD 85 12 LDA $1285,X
7281: 10 FB BPL $727E
7283: A0 00 LDY #$00
7285: B9 A5 12 LDA $12A5,Y
7288: 9D 88 12 STA $1288,X
728B: E8 INX
728C: E8 INX
728D: E8 INX
728E: C8 INY
728F: C0 09 CPY #$09
7291: D0 F2 BNE $7285
7293: AE 81 12 LDX $1281
7296: BC 39 70 LDY $7039,X ; SID Voice Offsets
7299: 20 45 A8 JSR $A845 ; Set Bank 15
729C: A9 08 LDA #$08
729E: 99 04 D4 STA $D404,Y
72A1: A9 00 LDA #$00
72A3: 99 05 D4 STA $D405,Y
72A6: A9 F0 LDA #$F0
72A8: 99 06 D4 STA $D406,Y
72AB: A2 00 LDX #$00
72AD: BD AC 12 LDA $12AC,X
72B0: 99 00 D4 STA $D400,Y
72B3: C8 INY
72B4: E8 INX
72B5: E0 05 CPX #$05
72B7: D0 F4 BNE $72AD
72B9: AE 81 12 LDX $1281
72BC: AC A3 12 LDY $12A3
72BF: AD A4 12 LDA $12A4
72C2: 78 SEI
72C3: 9D 85 12 STA $1285,X
72C6: 98 TYA
72C7: 9D 82 12 STA $1282,X
72CA: 58 CLI
72CB: 60 RTS
; Perform [window]
72CC: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
72CF: E0 28 CPX #$28
72D1: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
72D3: 10 02 BPL $72D7
72D5: E0 50 CPX #$50
72D7: B0 59 BCS $7332
72D9: 8E B3 12 STX $12B3
72DC: 20 09 88 JSR $8809
72DF: E0 19 CPX #$19
72E1: B0 4F BCS $7332
72E3: 8E B4 12 STX $12B4
72E6: 20 09 88 JSR $8809
72E9: E0 28 CPX #$28
72EB: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
72ED: 10 02 BPL $72F1
72EF: E0 50 CPX #$50
72F1: B0 3F BCS $7332
72F3: 8E B5 12 STX $12B5
72F6: EC B3 12 CPX $12B3
72F9: 90 37 BCC $7332
72FB: 20 09 88 JSR $8809
72FE: E0 19 CPX #$19
7300: B0 30 BCS $7332
7302: 8E B6 12 STX $12B6
7305: EC B4 12 CPX $12B4
7308: 90 28 BCC $7332
730A: 20 1C 9E JSR $9E1C ; Input Optional Byte Parameter -Check Byte Parameter in List
730D: E0 02 CPX #$02
730F: B0 21 BCS $7332
7311: 8A TXA
7312: 48 PHA
7313: AE B3 12 LDX $12B3
7316: AD B4 12 LDA $12B4
7319: 18 CLC
731A: 20 2D C0 JSR $C02D ; Set Window
731D: AE B5 12 LDX $12B5
7320: AD B6 12 LDA $12B6
7323: 38 SEC
7324: 20 2D C0 JSR $C02D ; Set Window
7327: A2 13 LDX #$13
7329: 68 PLA
732A: F0 02 BEQ $732E
732C: A2 93 LDX #$93
732E: 8A TXA
732F: 4C 69 92 JMP $9269 ; Call 'chrout'
7332: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Perform [boot]
7335: A9 E6 LDA #$E6
7337: A2 FC LDX #$FC
7339: 20 C3 A3 JSR $A3C3
733C: A5 80 LDA $80
733E: 4A LSR A
733F: 90 1D BCC $735E
7341: 20 1F A2 JSR $A21F
7344: B0 29 BCS $736F
7346: AE D5 03 LDX $03D5 ; Current Bank For SYS, POKE, PEEK
7349: A5 81 LDA $81
734B: 4A LSR A
734C: 90 03 BCC $7351
734E: AE 1F 01 LDX $011F
7351: 86 02 STX $02 ; Bank Number, Jump to SYS Address
7353: A5 AC LDA $AC
7355: 85 04 STA $04 ; SYS address high, MLM register PC
7357: A5 AD LDA $AD
7359: 85 03 STA $03 ; SYS address low, MLM register PC
735B: 4C 6E FF JMP $FF6E ; jsrfar
735E: AD 12 01 LDA $0112
7361: 09 30 ORA #$30
7363: AE 1C 01 LDX $011C
7366: 20 45 A8 JSR $A845 ; Set Bank 15
7369: 20 53 FF JSR $FF53 ; boot call
736C: B0 01 BCS $736F
736E: 60 RTS
736F: 4C D0 90 JMP $90D0 ; I/O Error Message
; Perform [sprdef]
7372: 20 4F 9F JSR $9F4F ; Allocate 9K Graphics Area for graphic/sprdef
7375: 20 45 A8 JSR $A845 ; Set Bank 15
7378: A9 D0 LDA #$D0
737A: 8D 68 11 STA $1168
737D: A9 20 LDA #$20
737F: 85 D8 STA $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
7381: 20 30 6B JSR $6B30
7384: A0 80 LDY #$80
7386: 8C 3D 11 STY $113D
7389: A0 18 LDY #$18
738B: A9 20 LDA #$20
738D: A2 00 LDX #$00
738F: 20 DB 68 JSR $68DB ; ?
7392: E8 INX
7393: E0 15 CPX #$15
7395: 90 F8 BCC $738F
7397: 20 DB 68 JSR $68DB ; ?
739A: 88 DEY
739B: 10 FA BPL $7397
739D: 20 45 A8 JSR $A845 ; Set Bank 15
73A0: A5 F1 LDA $F1 ; Curr Attribute to Print (Default FGND Color)
73A2: 48 PHA
73A3: AD 21 D0 LDA $D021
73A6: 85 F1 STA $F1 ; Curr Attribute to Print (Default FGND Color)
73A8: A9 2B LDA #$2B
73AA: A2 00 LDX #$00
73AC: 8E 3D 11 STX $113D
73AF: A0 00 LDY #$00
73B1: 20 DB 68 JSR $68DB ; ?
73B4: C8 INY
73B5: C0 18 CPY #$18
73B7: 90 F8 BCC $73B1
73B9: E8 INX
73BA: E0 15 CPX #$15
73BC: 90 F1 BCC $73AF
73BE: 68 PLA
73BF: 85 F1 STA $F1 ; Curr Attribute to Print (Default FGND Color)
73C1: 20 D4 76 JSR $76D4 ; ?
73C4: A0 02 LDY #$02
73C6: A2 17 LDX #$17
73C8: B9 6C 76 LDA $766C,Y
73CB: F0 06 BEQ $73D3
73CD: 20 DB 68 JSR $68DB ; ?
73D0: C8 INY
73D1: D0 F5 BNE $73C8
73D3: 20 45 A8 JSR $A845 ; Set Bank 15
73D6: 20 E4 FF JSR $FFE4 ; (igetin) Get Vector [EEEB]
73D9: F0 FB BEQ $73D6
73DB: C9 0D CMP #$0D
73DD: D0 08 BNE $73E7
73DF: 20 30 6B JSR $6B30
73E2: A9 00 LDA #$00
73E4: 85 D8 STA $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
73E6: 60 RTS
73E7: 38 SEC
73E8: E9 31 SBC #$31
73EA: 8D FC 12 STA $12FC
73ED: C9 08 CMP #$08
73EF: B0 E5 BCS $73D6
73F1: AA TAX
73F2: 0A ASL A
73F3: A8 TAY
73F4: BD B3 6C LDA $6CB3,X ; Bit Masks
73F7: 8D 6D 11 STA $116D
73FA: 2D 1C D0 AND $D01C
73FD: F0 02 BEQ $7401
73FF: A9 80 LDA #$80
7401: 8D FA 12 STA $12FA
7404: A9 08 LDA #$08
7406: 99 D6 11 STA $11D6,Y
7409: A9 4A LDA #$4A
740B: 99 D7 11 STA $11D7,Y
740E: AD 6D 11 LDA $116D
7411: 0D E6 11 ORA $11E6
7414: 8D E6 11 STA $11E6
7417: AD 6D 11 LDA $116D
741A: 8D 15 D0 STA $D015
741D: AE FC 12 LDX $12FC
7420: BC D9 6D LDY $6DD9,X ; Sprite Motion Table Offsets
7423: A9 00 LDA #$00
7425: 99 7E 11 STA $117E,Y ; Sprite Motion Tables (8 x 11 bytes)
7428: 8A TXA
7429: A0 11 LDY #$11
742B: A2 17 LDX #$17
742D: 18 CLC
742E: 69 31 ADC #$31
7430: 20 DB 68 JSR $68DB ; ?
7433: 20 45 A8 JSR $A845 ; Set Bank 15
7436: AD FC 12 LDA $12FC
7439: 4A LSR A
743A: 6A ROR A
743B: 6A ROR A
743C: 85 4B STA $4B
743E: A0 0E LDY #$0E
7440: 90 01 BCC $7443
7442: C8 INY
7443: 84 4C STY $4C
7445: 20 D1 75 JSR $75D1 ; -?
7448: A0 3F LDY #$3F
744A: B1 4B LDA ($4B),Y
744C: 99 B7 12 STA $12B7,Y
744F: 88 DEY
7450: 10 F8 BPL $744A
; -Perform [home]
7452: A2 00 LDX #$00
7454: 8E 5F 11 STX $115F
7457: 8E 5E 11 STX $115E
745A: 20 4A 76 JSR $764A ; -?
745D: 20 E4 FF JSR $FFE4 ; (igetin) Get Vector [EEEB]
7460: F0 FB BEQ $745D
7462: 48 PHA
7463: 20 4A 76 JSR $764A ; -?
7466: 68 PLA
7467: A2 10 LDX #$10
7469: DD B4 76 CMP $76B4,X
746C: D0 0D BNE $747B
746E: CA DEX
746F: 8A TXA
7470: AE FC 12 LDX $12FC
7473: 9D 27 D0 STA $D027,X
7476: 20 D1 75 JSR $75D1 ; -?
7479: B0 DF BCS $745A
747B: CA DEX
747C: D0 EB BNE $7469
747E: A2 11 LDX #$11
7480: DD 7F 76 CMP $767F,X ; SPRDEF Commands
7483: F0 05 BEQ $748A
7485: CA DEX
7486: 10 F8 BPL $7480
7488: 30 D0 BMI $745A
748A: 8A TXA
748B: A8 TAY
748C: 0A ASL A
748D: AA TAX
748E: BD 91 76 LDA $7691,X ; SPRDEF Command Vectors HI/LO
7491: 48 PHA
7492: BD 92 76 LDA $7692,X
7495: 48 PHA
7496: 60 RTS
; -Perform [1234]
7497: 98 TYA
7498: 85 8F STA $8F
749A: 20 10 76 JSR $7610 ; -?
749D: 48 PHA
749E: AC 5E 11 LDY $115E
74A1: AE 5F 11 LDX $115F
74A4: 20 C5 76 JSR $76C5 ; ?
74A7: 68 PLA
74A8: 20 3F 76 JSR $763F ; -?
74AB: AC 5E 11 LDY $115E
74AE: 98 TYA
74AF: 29 07 AND #$07
74B1: AA TAX
74B2: 98 TYA
74B3: 4A LSR A
74B4: 4A LSR A
74B5: 4A LSR A
74B6: 18 CLC
74B7: 6D 5F 11 ADC $115F
74BA: 6D 5F 11 ADC $115F
74BD: 6D 5F 11 ADC $115F
74C0: A8 TAY
74C1: B1 4B LDA ($4B),Y
74C3: 2C FA 12 BIT $12FA
74C6: 10 18 BPL $74E0
74C8: 85 8E STA $8E
74CA: BD 1C 9D LDA $9D1C,X ; Bit Masks
74CD: 1D 1D 9D ORA $9D1D,X
74D0: 48 PHA
74D1: 05 8E ORA $8E
74D3: 85 8E STA $8E
74D5: 68 PLA
74D6: A6 8F LDX $8F
74D8: 3D 25 9F AND $9F25,X ; Multicolor Pixel Masks
74DB: 45 8E EOR $8E
74DD: 4C EA 74 JMP $74EA
74E0: 1D 1C 9D ORA $9D1C,X ; Bit Masks
74E3: 06 8F ASL $8F
74E5: D0 03 BNE $74EA
74E7: 5D 1C 9D EOR $9D1C,X ; Bit Masks
74EA: 91 4B STA ($4B),Y
74EC: 2C FA 12 BIT $12FA
74EF: 50 4E BVC $753F ; -Perform [right]
74F1: 4C 5A 74 JMP $745A
; -Perform [stop]
74F4: A0 3F LDY #$3F
74F6: B9 B7 12 LDA $12B7,Y
74F9: 91 4B STA ($4B),Y
74FB: 88 DEY
74FC: 10 F8 BPL $74F6
; -Perform [shift-return]
74FE: A9 00 LDA #$00
7500: 8D 15 D0 STA $D015
7503: 4C C4 73 JMP $73C4
; -Perform [m]
7506: AD FA 12 LDA $12FA
7509: 49 80 EOR #$80
750B: 8D FA 12 STA $12FA
750E: 20 D1 75 JSR $75D1 ; -?
7511: AD 5E 11 LDA $115E
7514: 29 FE AND #$FE
7516: 8D 5E 11 STA $115E
7519: A0 1C LDY #$1C
751B: 2C .BYTE $2C
; -Perform [y]
751C: A0 17 LDY #$17
751E: 2C .BYTE $2C
; -Perform [x]
751F: A0 1D LDY #$1D
7521: B9 00 D0 LDA $D000,Y
7524: AE FC 12 LDX $12FC
7527: 5D B3 6C EOR $6CB3,X ; Bit Masks
752A: 99 00 D0 STA $D000,Y
752D: 4C 5A 74 JMP $745A
; -Perform [clr]
7530: A0 3F LDY #$3F
7532: A9 00 LDA #$00
7534: 91 4B STA ($4B),Y
7536: 88 DEY
7537: 10 FB BPL $7534
7539: 20 D4 76 JSR $76D4 ; ?
753C: 4C 52 74 JMP $7452 ; -Perform [home]
; -Perform [right]
753F: A9 01 LDA #$01
7541: 2C .BYTE $2C
; -Perform [left]
7542: A9 FF LDA #$FF
7544: 2C FA 12 BIT $12FA
7547: 10 01 BPL $754A
7549: 0A ASL A
754A: 18 CLC
754B: 6D 5E 11 ADC $115E
754E: 30 09 BMI $7559
7550: C9 18 CMP #$18
7552: B0 2D BCS $7581 ; -Perform [return]
7554: 8D 5E 11 STA $115E
7557: 90 25 BCC $757E
7559: A2 17 LDX #$17
755B: 2C FA 12 BIT $12FA
755E: 10 01 BPL $7561
7560: CA DEX
7561: 8E 5E 11 STX $115E
; -Perform [up]
7564: A9 FF LDA #$FF
7566: 2C .BYTE $2C
; -Perform [down]
7567: A9 01 LDA #$01
7569: 18 CLC
756A: 6D 5F 11 ADC $115F
756D: C9 15 CMP #$15
756F: B0 0D BCS $757E
7571: 8D 5F 11 STA $115F
7574: 90 08 BCC $757E
; -Perform [a]
7576: AD FA 12 LDA $12FA
7579: 49 40 EOR #$40
757B: 8D FA 12 STA $12FA
757E: 4C 5A 74 JMP $745A
; -Perform [return]
7581: A9 00 LDA #$00
7583: 8D 5E 11 STA $115E
7586: F0 DF BEQ $7567 ; -Perform [down]
; -Perform [c]
7588: A0 02 LDY #$02
758A: A2 18 LDX #$18
758C: B9 61 76 LDA $7661,Y
758F: F0 06 BEQ $7597
7591: 20 DB 68 JSR $68DB ; ?
7594: C8 INY
7595: D0 F5 BNE $758C
7597: 20 45 A8 JSR $A845 ; Set Bank 15
759A: 20 E4 FF JSR $FFE4 ; (igetin) Get Vector [EEEB]
759D: F0 FB BEQ $759A
759F: C9 0D CMP #$0D
75A1: F0 1F BEQ $75C2
75A3: 38 SEC
75A4: E9 31 SBC #$31
75A6: C9 08 CMP #$08
75A8: B0 F0 BCS $759A
75AA: 4A LSR A
75AB: 6A ROR A
75AC: 6A ROR A
75AD: 85 8E STA $8E
75AF: A0 0E LDY #$0E
75B1: 90 01 BCC $75B4
75B3: C8 INY
75B4: 84 8F STY $8F
75B6: A0 3F LDY #$3F
75B8: B1 8E LDA ($8E),Y
75BA: 91 4B STA ($4B),Y
75BC: 88 DEY
75BD: 10 F9 BPL $75B8
75BF: 20 D1 75 JSR $75D1 ; -?
75C2: A9 00 LDA #$00
75C4: A8 TAY
75C5: 99 00 3E STA $3E00,Y
75C8: 88 DEY
75C9: D0 FA BNE $75C5
75CB: 4C 5A 74 JMP $745A
; Unused
75CE: FF FF FF ; '...'
; -?
75D1: A2 00 LDX #$00
75D3: 8E 60 11 STX $1160
75D6: 8E FB 12 STX $12FB
75D9: 20 C5 76 JSR $76C5 ; ?
75DC: A0 00 LDY #$00
75DE: A2 08 LDX #$08
75E0: 8C 6E 11 STY $116E
75E3: AC 60 11 LDY $1160
75E6: B1 4B LDA ($4B),Y
75E8: EE 60 11 INC $1160
75EB: AC 6E 11 LDY $116E
75EE: 0A ASL A
75EF: 2C FA 12 BIT $12FA
75F2: 10 02 BPL $75F6
75F4: 2A ROL A
75F5: CA DEX
75F6: 48 PHA
75F7: 2A ROL A
75F8: 20 10 76 JSR $7610 ; -?
75FB: 20 3F 76 JSR $763F ; -?
75FE: C8 INY
75FF: 68 PLA
7600: CA DEX
7601: D0 EB BNE $75EE
7603: C0 18 CPY #$18
7605: 90 D7 BCC $75DE
7607: AE FB 12 LDX $12FB
760A: E8 INX
760B: E0 15 CPX #$15
760D: 90 C7 BCC $75D6
760F: 60 RTS
; -?
7610: 29 03 AND #$03
7612: 4A LSR A
7613: 6A ROR A
7614: F0 0F BEQ $7625
7616: 2C FA 12 BIT $12FA
7619: 10 0F BPL $762A
761B: AD 25 D0 LDA $D025
761E: 90 14 BCC $7634
7620: AD 26 D0 LDA $D026
7623: B0 0F BCS $7634
7625: AD 21 D0 LDA $D021
7628: 90 0A BCC $7634
762A: 86 8E STX $8E
762C: AE FC 12 LDX $12FC
762F: BD 27 D0 LDA $D027,X
7632: A6 8E LDX $8E
7634: 29 0F AND #$0F
7636: 85 8E STA $8E
7638: 0A ASL A
7639: 0A ASL A
763A: 0A ASL A
763B: 0A ASL A
763C: 05 8E ORA $8E
763E: 60 RTS
; -?
763F: 91 8C STA ($8C),Y
7641: 2C FA 12 BIT $12FA
7644: 10 03 BPL $7649
7646: C8 INY
7647: 91 8C STA ($8C),Y
7649: 60 RTS
; -?
764A: AE 5F 11 LDX $115F
764D: 20 C5 76 JSR $76C5 ; ?
7650: AC 5E 11 LDY $115E
7653: 2C FA 12 BIT $12FA
7656: 10 03 BPL $765B
7658: 20 5B 76 JSR $765B
765B: B1 8C LDA ($8C),Y
765D: 49 80 EOR #$80
765F: 91 8C STA ($8C),Y
7661: C8 INY
7662: 60 RTS
; ?
7663: 43 4F 50 59 20 46 52 4F ; 'copy fro'
766B: 4D ; 'm'
766C: 3F 00 53 50 52 49 54 45 ; '?{0}sprite'
7674: 20 4E 55 4D 42 45 52 3F ; ' number?'
767C: 20 20 00 ; ' {0}'
; SPRDEF Commands
767F: 31 32 33 34 03 8D 58 59 ; '1234{STOP}{SHCR}xy'
7687: 4D 9D 1D 91 11 93 13 41 ; 'm{LEFT}{RIGHT}{UP}{DOWN}{CLR}{HOME}a'
768F: 0D 43 ; '{CR}c'
; SPRDEF Command Vectors HI/LO
7691: 74 96 .BYTE >($7497-1),<($7497-1) ; -Perform [1234]
7693: 74 96 .BYTE >($7497-1),<($7497-1) ; -Perform [1234]
7695: 74 96 .BYTE >($7497-1),<($7497-1) ; -Perform [1234]
7697: 74 96 .BYTE >($7497-1),<($7497-1) ; -Perform [1234]
7699: 74 F3 .BYTE >($74F4-1),<($74F4-1) ; -Perform [stop]
769B: 74 FD .BYTE >($74FE-1),<($74FE-1) ; -Perform [shift-return]
769D: 75 1E .BYTE >($751F-1),<($751F-1) ; -Perform [x]
769F: 75 1B .BYTE >($751C-1),<($751C-1) ; -Perform [y]
76A1: 75 05 .BYTE >($7506-1),<($7506-1) ; -Perform [m]
76A3: 75 41 .BYTE >($7542-1),<($7542-1) ; -Perform [left]
76A5: 75 3E .BYTE >($753F-1),<($753F-1) ; -Perform [right]
76A7: 75 63 .BYTE >($7564-1),<($7564-1) ; -Perform [up]
76A9: 75 66 .BYTE >($7567-1),<($7567-1) ; -Perform [down]
76AB: 75 2F .BYTE >($7530-1),<($7530-1) ; -Perform [clr]
76AD: 74 51 .BYTE >($7452-1),<($7452-1) ; -Perform [home]
76AF: 75 75 .BYTE >($7576-1),<($7576-1) ; -Perform [a]
76B1: 75 80 .BYTE >($7581-1),<($7581-1) ; -Perform [return]
76B3: 75 87 .BYTE >($7588-1),<($7588-1) ; -Perform [c]
; SPRDEF Color Commands
76B5: 90 05 1C 9F 9C 1E 1F 9E ; '{BLACK}{WHITE}{RED}{CYAN}{PURPLE}{GREEN}{BLUE}{YELLOW}'
76BD: 81 95 96 97 98 99 9A 9B ; '{ORANGE}{BROWN}{LTRED}{GRAY1}{GRAY2}{LTGREEN}{LTBLUE}{GRAY3}'
; ?
76C5: BD 33 C0 LDA $C033,X ; Screen Address Low
76C8: 85 8C STA $8C
76CA: BD 4C C0 LDA $C04C,X ; Screen Address High
76CD: 29 03 AND #$03
76CF: 09 1C ORA #$1C
76D1: 85 8D STA $8D
76D3: 60 RTS
; ?
76D4: AD 21 D0 LDA $D021
76D7: 20 34 76 JSR $7634
76DA: A2 14 LDX #$14
76DC: 48 PHA
76DD: 20 C5 76 JSR $76C5 ; ?
76E0: 68 PLA
76E1: A0 17 LDY #$17
76E3: 91 8C STA ($8C),Y
76E5: 88 DEY
76E6: 10 FB BPL $76E3
76E8: CA DEX
76E9: 10 F1 BPL $76DC
76EB: 60 RTS
; Perform [sprsav]
76EC: 20 7C 77 JSR $777C ; get expression first argument
76EF: B0 2F BCS $7720 ; got string
76F1: 85 4B STA $4B ; sprite address low
76F3: 84 4C STY $4C ; sprite address high
76F5: A0 3E LDY #$3E ; 3x21 bytes of sprite data
76F7: B1 4B LDA ($4B),Y ; copy from sprite
76F9: 99 B7 12 STA $12B7,Y ; to buffer for shape data structure
76FC: 88 DEY
76FD: 10 F8 BPL $76F7
76FF: C8 INY
7700: 8C F7 12 STY $12F7 ; finalize shape data structure: X,Y
7703: 8C F9 12 STY $12F9 ; high bytes are 0
7706: A9 17 LDA #$17 ; shape X dimension - 1
7708: 8D F6 12 STA $12F6
770B: A9 14 LDA #$14 ; shape Y dimension - 1
770D: 8D F8 12 STA $12F8
7710: A2 B7 LDX #$B7
7712: A0 12 LDY #$12 ; sprite data buffer
7714: 86 70 STX $70 ; -> ($70)
7716: 84 71 STY $71
7718: A9 43 LDA #$43 ; $3F (data) + $04 (dimension data)
771A: 20 CC 86 JSR $86CC ; allocate string space and fill from ($70)
771D: 20 99 77 JSR $7799 ; pull string from top of SDS
7720: 8E DB 03 STX $03DB ; descriptor: string length
7723: 8D DC 03 STA $03DC ; descriptor: address low
7726: 8C DD 03 STY $03DD ; descriptor: address high
7729: 20 5C 79 JSR $795C ; -Check Comma
772C: A5 3D LDA $3D ; Textpointer: BASIC work point (chrget)
772E: 8D E0 03 STA $03E0 ; keep textpointer for later variable search
7731: A5 3E LDA $3E
7733: 8D E1 03 STA $03E1
7736: 20 7C 77 JSR $777C ; get 2nd argument
7739: B0 25 BCS $7760 ; got string result
773B: 85 8C STA $8C ; sprite address low
773D: 84 8D STY $8D ; sprite address high
773F: AD DC 03 LDA $03DC ; source shape address low
7742: 85 4B STA $4B
7744: AD DD 03 LDA $03DD ; source shape address high
7747: 85 4C STA $4C
7749: A0 00 LDY #$00 ; init. index
774B: CC DB 03 CPY $03DB ; max. string length
774E: F0 0F BEQ $775F
7750: A9 4B LDA #$4B
7752: 20 AB 03 JSR $03AB ; Fetch From RAM Bank 1 ($4B)
7755: 8D 03 FF STA $FF03
7758: 91 8C STA ($8C),Y ; copy source to sprite
775A: C8 INY
775B: C0 3F CPY #$3F ; sprite length
775D: D0 EC BNE $774B
775F: 60 RTS
7760: AD E0 03 LDA $03E0 ; saved textpointer restore ...
7763: 85 3D STA $3D ; Textpointer: BASIC work point (chrget)
7765: AD E1 03 LDA $03E1
7768: 85 3E STA $3E
776A: 20 AF 7A JSR $7AAF ; Locate Variable
776D: 85 4B STA $4B
776F: 84 4C STY $4C
7771: A9 DB LDA #$DB ; $03DB (source descriptor)
7773: 85 66 STA $66 ; into ($66) as descriptor pointer
7775: A9 03 LDA #$03
7777: 85 67 STA $67
7779: 4C 05 54 JMP $5405 ; assign to variable
; get sprite data (sprite number or string shape)
777C: 20 EF 77 JSR $77EF ; Evaluate Expression
777F: 24 0F BIT $0F ; expression type?
7781: 30 16 BMI $7799 ; string value
7783: 20 F7 87 JSR $87F7 ; get integer byte
7786: CA DEX ; -1
7787: E0 08 CPX #$08
7789: B0 0B BCS $7796 ; >=8 -> error "?ILL. QUAN."
778B: 8A TXA
778C: 4A LSR A ; times 64 (per sprite)
778D: 6A ROR A
778E: 6A ROR A
778F: A0 0E LDY #$0E ; $0Exx (sprite 1 to 4)
7791: 90 01 BCC $7794
7793: C8 INY ; $0Fxx (sprite 5 to 8)
7794: 18 CLC ; mark for "from sprite"
7795: 60 RTS
7796: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
7799: A5 66 LDA $66
779B: A4 67 LDY $67
779D: 20 E0 87 JSR $87E0 ; Clean Descriptor Stack
77A0: A0 00 LDY #$00
77A2: 20 E7 42 JSR $42E7 ; Get From ($66) Bank1
77A5: AA TAX
77A6: C8 INY
77A7: 20 E7 42 JSR $42E7 ; Get From ($66) Bank1
77AA: 48 PHA
77AB: C8 INY
77AC: 20 E7 42 JSR $42E7 ; Get From ($66) Bank1
77AF: A8 TAY
77B0: 68 PLA
77B1: 38 SEC
77B2: 60 RTS
; Perform [fast]
77B3: 20 45 A8 JSR $A845 ; Set Bank 15
77B6: AD 11 D0 LDA $D011
77B9: 29 6F AND #$6F
77BB: 8D 11 D0 STA $D011
77BE: A9 01 LDA #$01
77C0: 8D 30 D0 STA $D030
77C3: 60 RTS
; Perform [slow]
77C4: 20 45 A8 JSR $A845 ; Set Bank 15
77C7: A9 00 LDA #$00
77C9: 8D 30 D0 STA $D030
77CC: AD 11 D0 LDA $D011
77CF: 29 7F AND #$7F
77D1: 09 10 ORA #$10
77D3: 8D 11 D0 STA $D011
77D6: 60 RTS
; Type Match Check
77D7: 20 EF 77 JSR $77EF ; Evaluate Expression
; Confirm Numeric
77DA: 18 CLC
77DB: 90 01 BCC $77DE
; Confirm String
77DD: 38 SEC
77DE: 24 0F BIT $0F
77E0: 30 03 BMI $77E5
77E2: B0 03 BCS $77E7 ; Print 'type mismatch'
77E4: 60 RTS
77E5: B0 FD BCS $77E4
; Print 'type mismatch'
77E7: A2 16 LDX #$16
77E9: 2C .BYTE $2C
; Print 'formula too complex'
77EA: A2 19 LDX #$19
77EC: 4C 3C 4D JMP $4D3C ; Error
; Evaluate Expression
77EF: A6 3D LDX $3D ; Textpointer: BASIC work point (chrget)
77F1: D0 02 BNE $77F5
77F3: C6 3E DEC $3E
77F5: C6 3D DEC $3D ; Textpointer: BASIC work point (chrget)
77F7: A2 00 LDX #$00
77F9: 24 .BYTE $24
77FA: 48 PHA
77FB: 8A TXA
77FC: 48 PHA
77FD: BA TSX
77FE: E0 63 CPX #$63
7800: 90 E8 BCC $77EA ; Print 'formula too complex'
7802: 20 D7 78 JSR $78D7 ; Evaluate Item
7805: A9 00 LDA #$00
7807: 85 4F STA $4F
7809: 20 86 03 JSR $0386 ; CHRGOT entry
780C: 38 SEC
780D: E9 B1 SBC #$B1
780F: 90 17 BCC $7828
7811: C9 03 CMP #$03
7813: B0 13 BCS $7828
7815: C9 01 CMP #$01
7817: 2A ROL A
7818: 49 01 EOR #$01
781A: 45 4F EOR $4F
781C: C5 4F CMP $4F
781E: 90 61 BCC $7881
7820: 85 4F STA $4F
7822: 20 80 03 JSR $0380 ; CHRGET
7825: 4C 0C 78 JMP $780C
7828: A6 4F LDX $4F
782A: D0 2C BNE $7858
782C: B0 7E BCS $78AC
782E: 69 07 ADC #$07
7830: 90 7A BCC $78AC
7832: 65 0F ADC $0F
7834: D0 03 BNE $7839
7836: 4C 0D 87 JMP $870D
7839: 69 FF ADC #$FF
783B: 85 24 STA $24
783D: 0A ASL A
783E: 65 24 ADC $24
7840: A8 TAY
7841: 68 PLA
7842: D9 28 48 CMP $4828,Y ; Defunct Vectors
7845: B0 6A BCS $78B1
7847: 20 DA 77 JSR $77DA ; Confirm Numeric
784A: 48 PHA
784B: 20 71 78 JSR $7871
784E: 68 PLA
784F: A4 4D LDY $4D
7851: 10 17 BPL $786A
7853: AA TAX
7854: F0 59 BEQ $78AF
7856: D0 62 BNE $78BA
7858: 46 0F LSR $0F
785A: 8A TXA
785B: 2A ROL A
785C: A6 3D LDX $3D ; Textpointer: BASIC work point (chrget)
785E: D0 02 BNE $7862
7860: C6 3E DEC $3E
7862: C6 3D DEC $3D ; Textpointer: BASIC work point (chrget)
7864: A0 1B LDY #$1B
7866: 85 4F STA $4F
7868: D0 D7 BNE $7841
786A: D9 28 48 CMP $4828,Y ; Defunct Vectors
786D: B0 4B BCS $78BA
786F: 90 D9 BCC $784A
7871: B9 2A 48 LDA $482A,Y
7874: 48 PHA
7875: B9 29 48 LDA $4829,Y
7878: 48 PHA
7879: 20 84 78 JSR $7884
787C: A5 4F LDA $4F
787E: 4C FA 77 JMP $77FA
7881: 4C 6C 79 JMP $796C ; Syntax Error
7884: A5 68 LDA $68
7886: BE 28 48 LDX $4828,Y ; Defunct Vectors
7889: A8 TAY
788A: 18 CLC
788B: 68 PLA
788C: 69 01 ADC #$01
788E: 85 24 STA $24
7890: 68 PLA
7891: 69 00 ADC #$00
7893: 85 25 STA $25
7895: 98 TYA
7896: 48 PHA
7897: 20 47 8C JSR $8C47 ; Round FAC#1
789A: A5 67 LDA $67
789C: 48 PHA
789D: A5 66 LDA $66
789F: 48 PHA
78A0: A5 65 LDA $65
78A2: 48 PHA
78A3: A5 64 LDA $64
78A5: 48 PHA
78A6: A5 63 LDA $63
78A8: 48 PHA
78A9: 6C 24 00 JMP ($24)
78AC: A0 FF LDY #$FF
78AE: 68 PLA
78AF: F0 23 BEQ $78D4
78B1: C9 64 CMP #$64
78B3: F0 03 BEQ $78B8
78B5: 20 DA 77 JSR $77DA ; Confirm Numeric
78B8: 84 4D STY $4D
78BA: 68 PLA
78BB: 4A LSR A
78BC: 85 14 STA $14
78BE: 68 PLA
78BF: 85 6A STA $6A
78C1: 68 PLA
78C2: 85 6B STA $6B
78C4: 68 PLA
78C5: 85 6C STA $6C
78C7: 68 PLA
78C8: 85 6D STA $6D
78CA: 68 PLA
78CB: 85 6E STA $6E
78CD: 68 PLA
78CE: 85 6F STA $6F
78D0: 45 68 EOR $68
78D2: 85 70 STA $70
78D4: A5 63 LDA $63
78D6: 60 RTS
; Evaluate Item
78D7: 6C 0A 03 JMP ($030A) ; Get Arithmetic Element Link [78DA]
; Get Arithmetic Element
78DA: A9 00 LDA #$00
78DC: 85 0F STA $0F
78DE: 20 80 03 JSR $0380 ; CHRGET
78E1: B0 05 BCS $78E8
78E3: A2 00 LDX #$00
78E5: 4C 22 8D JMP $8D22 ; String to FAC#1
78E8: 20 3C 7B JSR $7B3C ; Check Alphabetic
78EB: 90 03 BCC $78F0
78ED: 4C 78 79 JMP $7978 ; Search For Variable
78F0: C9 FF CMP #$FF
78F2: D0 0F BNE $7903 ; Continue Expression
78F4: A9 FE LDA #$FE
78F6: A0 78 LDY #$78
78F8: 20 D4 8B JSR $8BD4 ; Unpack ROM to FAC#1
78FB: 4C 80 03 JMP $0380 ; CHRGET
; Constant PI
78FE: 82 49 0F DA A1 ; '{ULOFF}i{FLSHON}Z.'
; Continue Expression
7903: C9 2E CMP #$2E
7905: F0 DC BEQ $78E3
7907: C9 AB CMP #$AB
7909: F0 66 BEQ $7971
790B: C9 AA CMP #$AA
790D: F0 CF BEQ $78DE
790F: C9 22 CMP #$22
7911: D0 15 BNE $7928
7913: A5 3D LDA $3D ; Textpointer: BASIC work point (chrget)
7915: A4 3E LDY $3E
7917: 69 00 ADC #$00
7919: 90 01 BCC $791C
791B: C8 INY
791C: 20 9A 86 JSR $869A ; Set Up String
791F: A6 72 LDX $72
7921: A4 73 LDY $73
7923: 86 3D STX $3D ; Textpointer: BASIC work point (chrget)
7925: 84 3E STY $3E
7927: 60 RTS
7928: C9 A8 CMP #$A8
792A: D0 16 BNE $7942 ; ?
792C: A0 18 LDY #$18
792E: D0 43 BNE $7973
; Evaluate <equal>
7930: 20 B4 84 JSR $84B4
7933: A5 67 LDA $67
7935: 49 FF EOR #$FF
7937: A8 TAY
7938: A5 66 LDA $66
793A: 49 FF EOR #$FF
; Fixed-Float
793C: 20 E5 84 JSR $84E5 ; Set Up 16 Bit Fix-Float
793F: 4C 70 8C JMP $8C70
; ?
7942: C9 A5 CMP #$A5
7944: D0 03 BNE $7949
7946: 4C 3B 85 JMP $853B ; Perform [fn]
7949: C9 B4 CMP #$B4
794B: 90 03 BCC $7950 ; Eval Within Parens
794D: 4C F7 4B JMP $4BF7 ; Setup FN Reference
; Eval Within Parens
7950: 20 59 79 JSR $7959 ; -Check Left Parenthesis
7953: 20 EF 77 JSR $77EF ; Evaluate Expression
; -Check Right Parenthesis
7956: A9 29 LDA #$29
7958: 2C .BYTE $2C
; -Check Left Parenthesis
7959: A9 28 LDA #$28
795B: 2C .BYTE $2C
; -Check Comma
795C: A9 2C LDA #$2C
795E: A0 00 LDY #$00
7960: 85 79 STA $79
7962: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
7965: C5 79 CMP $79
7967: D0 03 BNE $796C ; Syntax Error
7969: 4C 80 03 JMP $0380 ; CHRGET
; Syntax Error
796C: A2 0B LDX #$0B
796E: 4C 3C 4D JMP $4D3C ; Error
7971: A0 15 LDY #$15
7973: 68 PLA
7974: 68 PLA
7975: 4C 4B 78 JMP $784B
; Search For Variable
7978: 20 AF 7A JSR $7AAF ; Locate Variable
797B: 85 66 STA $66
797D: 84 67 STY $67
797F: A6 47 LDX $47
7981: A4 48 LDY $48
7983: A5 0F LDA $0F
7985: F0 63 BEQ $79EA
7987: A9 00 LDA #$00
7989: 85 71 STA $71
798B: E0 54 CPX #$54 ; "T"
798D: D0 25 BNE $79B4
798F: C0 C9 CPY #$C9 ; "I" (string) -> TI$
7991: D0 20 BNE $79B3
7993: A5 66 LDA $66
7995: C9 D2 CMP #$D2
7997: D0 1A BNE $79B3
7999: A5 67 LDA $67
799B: C9 03 CMP #$03
799D: D0 14 BNE $79B3
799F: 20 1A 7A JSR $7A1A
79A2: 84 60 STY $60
79A4: 88 DEY
79A5: 84 72 STY $72
79A7: A0 06 LDY #$06
79A9: 84 5F STY $5F
79AB: A0 24 LDY #$24
79AD: 20 CD 8E JSR $8ECD
79B0: 4C B8 85 JMP $85B8
79B3: 60 RTS
79B4: E0 44 CPX #$44 ; "D"
79B6: D0 FB BNE $79B3
79B8: C0 D3 CPY #$D3 ; "S" (string) -> DS$
79BA: D0 F7 BNE $79B3
79BC: 20 E3 79 JSR $79E3 ; get floppy channel
79BF: A0 FF LDY #$FF
79C1: C8 INY
79C2: A9 7B LDA #$7B
79C4: 20 AB 03 JSR $03AB ; Fetch From RAM Bank 1
79C7: C9 00 CMP #$00
79C9: D0 F6 BNE $79C1
79CB: 98 TYA
79CC: 20 88 86 JSR $8688 ; Calc String Vector
79CF: A8 TAY
79D0: F0 0E BEQ $79E0
79D2: 88 DEY
79D3: A9 7B LDA #$7B
79D5: 20 AB 03 JSR $03AB ; Fetch From RAM Bank 1
79D8: 91 37 STA ($37),Y
79DA: 98 TYA
79DB: D0 F5 BNE $79D2
79DD: 20 71 87 JSR $8771
79E0: 4C E3 86 JMP $86E3
79E3: A5 7A LDA $7A ; already read?
79E5: D0 40 BNE $7A27 ; exit
79E7: 4C 78 A7 JMP $A778 ; Get Floppy Channel
79EA: 24 10 BIT $10
79EC: 10 0F BPL $79FD
79EE: A0 00 LDY #$00
79F0: 20 E7 42 JSR $42E7 ; Get From ($66) Bank1
79F3: AA TAX
79F4: C8 INY
79F5: 20 E7 42 JSR $42E7 ; Get From ($66) Bank1
79F8: A8 TAY
79F9: 8A TXA
79FA: 4C 3C 79 JMP $793C ; Fixed-Float
79FD: A5 67 LDA $67
79FF: C9 03 CMP #$03
7A01: D0 7E BNE $7A81
7A03: A5 66 LDA $66
7A05: C9 D2 CMP #$D2
7A07: D0 78 BNE $7A81
7A09: E0 54 CPX #$54 ; "T"
7A0B: D0 1B BNE $7A28
7A0D: C0 49 CPY #$49 ; "I" -> TI
7A0F: D0 70 BNE $7A81
7A11: 20 1A 7A JSR $7A1A
7A14: 98 TYA
7A15: A2 A0 LDX #$A0
7A17: 4C 7B 8C JMP $8C7B
7A1A: 20 DE FF JSR $FFDE ; rdtim Read Real-Time Clock
7A1D: 86 66 STX $66
7A1F: 84 65 STY $65
7A21: 85 67 STA $67
7A23: A0 00 LDY #$00
7A25: 84 64 STY $64
7A27: 60 RTS
7A28: E0 53 CPX #$53 ; "S"
7A2A: D0 0A BNE $7A36
7A2C: C0 54 CPY #$54 ; "T"
7A2E: D0 51 BNE $7A81
7A30: 20 51 92 JSR $9251 ; Call 'status'
7A33: 4C 68 8C JMP $8C68 ; Byte Fixed-Float
7A36: E0 44 CPX #$44 ; "E"
7A38: D0 26 BNE $7A60
7A3A: C0 53 CPY #$53 ; "R"
7A3C: D0 43 BNE $7A81
7A3E: 20 E3 79 JSR $79E3
7A41: A0 00 LDY #$00
7A43: A9 7B LDA #$7B
7A45: 20 AB 03 JSR $03AB ; Fetch From RAM Bank 1
7A48: 29 0F AND #$0F
7A4A: 0A ASL A
7A4B: 85 11 STA $11
7A4D: 0A ASL A
7A4E: 0A ASL A
7A4F: 65 11 ADC $11
7A51: 85 11 STA $11
7A53: C8 INY
7A54: A9 7B LDA #$7B
7A56: 20 AB 03 JSR $03AB ; Fetch From RAM Bank 1
7A59: 29 0F AND #$0F
7A5B: 65 11 ADC $11
7A5D: 4C 68 8C JMP $8C68 ; Byte Fixed-Float
7A60: E0 45 CPX #$45 ; "E"
7A62: D0 1D BNE $7A81
7A64: C0 52 CPY #$52 ; "R"
7A66: F0 10 BEQ $7A78
7A68: C0 4C CPY #$4C ; "L"
7A6A: D0 15 BNE $7A81
7A6C: 8D 03 FF STA $FF03
7A6F: AD 0A 12 LDA $120A ; systemvariable EL: last error line
7A72: AC 09 12 LDY $1209
7A75: 4C C9 84 JMP $84C9 ; Float (.y, .a)
7A78: 8D 03 FF STA $FF03
7A7B: AD 08 12 LDA $1208 ; systemvariable ER: last error number
7A7E: 4C 68 8C JMP $8C68 ; Byte Fixed-Float
7A81: A5 66 LDA $66
7A83: A4 67 LDY $67
; Unpack RAM1 to FAC#1
7A85: 85 24 STA $24
7A87: 84 25 STY $25
7A89: A0 00 LDY #$00
7A8B: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
7A8E: 85 63 STA $63
7A90: 84 71 STY $71
7A92: C8 INY
7A93: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
7A96: 85 68 STA $68
7A98: 09 80 ORA #$80
7A9A: 85 64 STA $64
7A9C: C8 INY
7A9D: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
7AA0: 85 65 STA $65
7AA2: C8 INY
7AA3: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
7AA6: 85 66 STA $66
7AA8: C8 INY
7AA9: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
7AAC: 85 67 STA $67
7AAE: 60 RTS
; Locate Variable
7AAF: A2 00 LDX #$00
7AB1: 20 86 03 JSR $0386 ; CHRGOT entry
7AB4: 86 0E STX $0E
7AB6: 85 47 STA $47
7AB8: 20 86 03 JSR $0386 ; CHRGOT entry
7ABB: 20 3C 7B JSR $7B3C ; Check Alphabetic
7ABE: B0 03 BCS $7AC3
7AC0: 4C 6C 79 JMP $796C ; Syntax Error
7AC3: A2 00 LDX #$00
7AC5: 86 0F STX $0F
7AC7: 86 10 STX $10
7AC9: 20 80 03 JSR $0380 ; CHRGET
7ACC: 90 05 BCC $7AD3
7ACE: 20 3C 7B JSR $7B3C ; Check Alphabetic
7AD1: 90 0B BCC $7ADE
7AD3: AA TAX
7AD4: 20 80 03 JSR $0380 ; CHRGET
7AD7: 90 FB BCC $7AD4
7AD9: 20 3C 7B JSR $7B3C ; Check Alphabetic
7ADC: B0 F6 BCS $7AD4
7ADE: C9 24 CMP #$24
7AE0: D0 06 BNE $7AE8
7AE2: A9 FF LDA #$FF
7AE4: 85 0F STA $0F
7AE6: D0 10 BNE $7AF8
7AE8: C9 25 CMP #$25
7AEA: D0 13 BNE $7AFF
7AEC: A5 12 LDA $12
7AEE: D0 D0 BNE $7AC0
7AF0: A9 80 LDA #$80
7AF2: 85 10 STA $10
7AF4: 05 47 ORA $47
7AF6: 85 47 STA $47
7AF8: 8A TXA
7AF9: 09 80 ORA #$80
7AFB: AA TAX
7AFC: 20 80 03 JSR $0380 ; CHRGET
7AFF: 86 48 STX $48
7B01: 38 SEC
7B02: 05 12 ORA $12
7B04: E9 28 SBC #$28
7B06: D0 03 BNE $7B0B
7B08: 4C AB 7C JMP $7CAB ; Set Up Array
7B0B: A0 00 LDY #$00
7B0D: 84 12 STY $12
7B0F: A5 2F LDA $2F ; Pointer: Start-of-variables (bank 1)
7B11: A6 30 LDX $30
7B13: 86 62 STX $62
7B15: 85 61 STA $61
7B17: E4 32 CPX $32
7B19: D0 04 BNE $7B1F
7B1B: C5 31 CMP $31
7B1D: F0 27 BEQ $7B46 ; Create Variable
7B1F: 20 00 43 JSR $4300 ; Get From ($61) Bank1
7B22: C5 47 CMP $47
7B24: D0 0C BNE $7B32
7B26: C8 INY
7B27: 20 00 43 JSR $4300 ; Get From ($61) Bank1
7B2A: C5 48 CMP $48
7B2C: D0 03 BNE $7B31
7B2E: 4C 57 7C JMP $7C57
7B31: 88 DEY
7B32: 18 CLC
7B33: A5 61 LDA $61
7B35: 69 07 ADC #$07
7B37: 90 DC BCC $7B15
7B39: E8 INX
7B3A: D0 D7 BNE $7B13
; Check Alphabetic
7B3C: C9 41 CMP #$41
7B3E: 90 05 BCC $7B45
7B40: E9 5B SBC #$5B
7B42: 38 SEC
7B43: E9 A5 SBC #$A5
7B45: 60 RTS
; Create Variable
7B46: BA TSX
7B47: BD 02 01 LDA $0102,X
7B4A: C9 83 CMP #$83
7B4C: F0 04 BEQ $7B52
7B4E: C9 79 CMP #$79
7B50: D0 2A BNE $7B7C
7B52: A9 D2 LDA #$D2
7B54: A0 03 LDY #$03
7B56: 60 RTS
7B57: C0 C9 CPY #$C9
7B59: F0 F7 BEQ $7B52
7B5B: C0 49 CPY #$49
7B5D: D0 31 BNE $7B90
7B5F: F0 18 BEQ $7B79
7B61: C0 D3 CPY #$D3
7B63: F0 14 BEQ $7B79
7B65: C0 53 CPY #$53
7B67: D0 27 BNE $7B90
7B69: F0 0E BEQ $7B79
7B6B: C0 54 CPY #$54
7B6D: D0 21 BNE $7B90
7B6F: F0 08 BEQ $7B79
7B71: C0 52 CPY #$52
7B73: F0 04 BEQ $7B79
7B75: C0 4C CPY #$4C
7B77: D0 17 BNE $7B90
7B79: 4C 6C 79 JMP $796C ; Syntax Error
7B7C: A5 47 LDA $47
7B7E: A4 48 LDY $48
7B80: C9 54 CMP #$54
7B82: F0 D3 BEQ $7B57
7B84: C9 53 CMP #$53
7B86: F0 E3 BEQ $7B6B
7B88: C9 45 CMP #$45
7B8A: F0 E5 BEQ $7B71
7B8C: C9 44 CMP #$44
7B8E: F0 D1 BEQ $7B61
7B90: A5 31 LDA $31
7B92: A4 32 LDY $32
7B94: 85 61 STA $61
7B96: 84 62 STY $62
7B98: A5 33 LDA $33
7B9A: A4 34 LDY $34
7B9C: 85 5C STA $5C
7B9E: 84 5D STY $5D
7BA0: 18 CLC
7BA1: 69 07 ADC #$07
7BA3: 90 01 BCC $7BA6
7BA5: C8 INY
7BA6: 85 5A STA $5A
7BA8: 84 5B STY $5B
7BAA: 20 66 7C JSR $7C66
7BAD: A5 5A LDA $5A
7BAF: A4 5B LDY $5B
7BB1: C8 INY
7BB2: 85 31 STA $31
7BB4: 84 32 STY $32
7BB6: 85 5A STA $5A
7BB8: 84 5B STY $5B
7BBA: A5 5A LDA $5A
7BBC: A6 5B LDX $5B
7BBE: E4 34 CPX $34
7BC0: D0 06 BNE $7BC8
7BC2: C5 33 CMP $33
7BC4: D0 02 BNE $7BC8
7BC6: F0 78 BEQ $7C40
7BC8: 85 24 STA $24
7BCA: 86 25 STX $25
7BCC: A0 00 LDY #$00
7BCE: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
7BD1: AA TAX
7BD2: C8 INY
7BD3: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
7BD6: 08 PHP
7BD7: C8 INY
7BD8: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
7BDB: 65 5A ADC $5A
7BDD: 85 5A STA $5A
7BDF: C8 INY
7BE0: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
7BE3: 65 5B ADC $5B
7BE5: 85 5B STA $5B
7BE7: 28 PLP
7BE8: 10 D0 BPL $7BBA
7BEA: 8A TXA
7BEB: 30 CD BMI $7BBA
7BED: C8 INY
7BEE: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
7BF1: A0 00 LDY #$00
7BF3: 0A ASL A
7BF4: 69 05 ADC #$05
7BF6: 65 24 ADC $24
7BF8: 85 24 STA $24
7BFA: 90 02 BCC $7BFE
7BFC: E6 25 INC $25
7BFE: A6 25 LDX $25
7C00: E4 5B CPX $5B
7C02: D0 04 BNE $7C08
7C04: C5 5A CMP $5A
7C06: F0 B6 BEQ $7BBE
7C08: A0 00 LDY #$00
7C0A: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
7C0D: F0 24 BEQ $7C33
7C0F: 85 79 STA $79
7C11: C8 INY
7C12: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
7C15: 18 CLC
7C16: 65 79 ADC $79
7C18: 85 5C STA $5C
7C1A: C8 INY
7C1B: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
7C1E: 69 00 ADC #$00
7C20: 85 5D STA $5D
7C22: A0 00 LDY #$00
7C24: 20 E2 42 JSR $42E2 ; Get From ($5c) Bank1
7C27: 69 07 ADC #$07
7C29: 91 5C STA ($5C),Y
7C2B: C8 INY
7C2C: 20 E2 42 JSR $42E2 ; Get From ($5c) Bank1
7C2F: 69 00 ADC #$00
7C31: 91 5C STA ($5C),Y
7C33: A9 03 LDA #$03
7C35: 18 CLC
7C36: 65 24 ADC $24
7C38: 85 24 STA $24
7C3A: 90 C2 BCC $7BFE
7C3C: E6 25 INC $25
7C3E: D0 BE BNE $7BFE
7C40: A0 00 LDY #$00
7C42: A5 47 LDA $47
7C44: 8D 04 FF STA $FF04
7C47: 91 61 STA ($61),Y
7C49: C8 INY
7C4A: A5 48 LDA $48
7C4C: 91 61 STA ($61),Y
7C4E: A9 00 LDA #$00
7C50: C8 INY
7C51: 91 61 STA ($61),Y
7C53: C0 06 CPY #$06
7C55: D0 F9 BNE $7C50
7C57: A5 61 LDA $61
7C59: 18 CLC
7C5A: 69 02 ADC #$02
7C5C: A4 62 LDY $62
7C5E: 90 01 BCC $7C61
7C60: C8 INY
7C61: 85 49 STA $49
7C63: 84 4A STY $4A
7C65: 60 RTS
7C66: 20 17 50 JSR $5017 ; Check Memory Space
7C69: 85 33 STA $33
7C6B: 84 34 STY $34
7C6D: 38 SEC
7C6E: A5 5C LDA $5C
7C70: E5 61 SBC $61
7C72: 85 24 STA $24
7C74: A8 TAY
7C75: A5 5D LDA $5D
7C77: E5 62 SBC $62
7C79: AA TAX
7C7A: E8 INX
7C7B: 98 TYA
7C7C: F0 25 BEQ $7CA3
7C7E: A5 5C LDA $5C
7C80: 38 SEC
7C81: E5 24 SBC $24
7C83: 85 5C STA $5C
7C85: B0 03 BCS $7C8A
7C87: C6 5D DEC $5D
7C89: 38 SEC
7C8A: A5 5A LDA $5A
7C8C: E5 24 SBC $24
7C8E: 85 5A STA $5A
7C90: B0 09 BCS $7C9B
7C92: C6 5B DEC $5B
7C94: 90 05 BCC $7C9B
7C96: 20 E2 42 JSR $42E2 ; Get From ($5c) Bank1
7C99: 91 5A STA ($5A),Y
7C9B: 88 DEY
7C9C: D0 F8 BNE $7C96
7C9E: 20 E2 42 JSR $42E2 ; Get From ($5c) Bank1
7CA1: 91 5A STA ($5A),Y
7CA3: C6 5D DEC $5D
7CA5: C6 5B DEC $5B
7CA7: CA DEX
7CA8: D0 F1 BNE $7C9B
7CAA: 60 RTS
; Set Up Array
7CAB: A5 0E LDA $0E
7CAD: 05 10 ORA $10
7CAF: 48 PHA
7CB0: A5 0F LDA $0F
7CB2: 48 PHA
7CB3: A0 00 LDY #$00
7CB5: 98 TYA
7CB6: 48 PHA
7CB7: A5 48 LDA $48
7CB9: 48 PHA
7CBA: A5 47 LDA $47
7CBC: 48 PHA
7CBD: 20 A7 84 JSR $84A7 ; Evaluate Fixed Number
7CC0: 68 PLA
7CC1: 85 47 STA $47
7CC3: 68 PLA
7CC4: 85 48 STA $48
7CC6: 68 PLA
7CC7: A8 TAY
7CC8: BA TSX
7CC9: BD 02 01 LDA $0102,X
7CCC: 48 PHA
7CCD: BD 01 01 LDA $0101,X
7CD0: 48 PHA
7CD1: A5 66 LDA $66
7CD3: 9D 02 01 STA $0102,X
7CD6: A5 67 LDA $67
7CD8: 9D 01 01 STA $0101,X
7CDB: C8 INY
7CDC: 84 0D STY $0D
7CDE: 20 86 03 JSR $0386 ; CHRGOT entry
7CE1: A4 0D LDY $0D
7CE3: C9 2C CMP #$2C
7CE5: F0 CE BEQ $7CB5
7CE7: 20 56 79 JSR $7956 ; -Check Right Parenthesis
7CEA: 68 PLA
7CEB: 85 0F STA $0F
7CED: 68 PLA
7CEE: 85 10 STA $10
7CF0: 29 7F AND #$7F
7CF2: 85 0E STA $0E
7CF4: A6 31 LDX $31
7CF6: A5 32 LDA $32
7CF8: 86 61 STX $61
7CFA: 85 62 STA $62
7CFC: C5 34 CMP $34
7CFE: D0 04 BNE $7D04
7D00: E4 33 CPX $33
7D02: F0 42 BEQ $7D46 ; ?
7D04: A0 00 LDY #$00
7D06: 20 00 43 JSR $4300 ; Get From ($61) Bank1
7D09: C8 INY
7D0A: C5 47 CMP $47
7D0C: D0 07 BNE $7D15
7D0E: 20 00 43 JSR $4300 ; Get From ($61) Bank1
7D11: C5 48 CMP $48
7D13: F0 18 BEQ $7D2D ; ?
7D15: C8 INY
7D16: 20 00 43 JSR $4300 ; Get From ($61) Bank1
7D19: 18 CLC
7D1A: 65 61 ADC $61
7D1C: AA TAX
7D1D: C8 INY
7D1E: 20 00 43 JSR $4300 ; Get From ($61) Bank1
7D21: 65 62 ADC $62
7D23: 90 D3 BCC $7CF8
; Print 'bad subscript'
7D25: A2 12 LDX #$12
7D27: 2C .BYTE $2C
; Print 'illegal quantity'
7D28: A2 0E LDX #$0E
7D2A: 4C 3C 4D JMP $4D3C ; Error
; ?
7D2D: A2 13 LDX #$13
7D2F: A5 0E LDA $0E
7D31: D0 F7 BNE $7D2A
7D33: 20 71 7E JSR $7E71 ; Array Pointer Subroutine
7D36: A0 04 LDY #$04
7D38: 20 00 43 JSR $4300 ; Get From ($61) Bank1
7D3B: 85 79 STA $79
7D3D: A5 0D LDA $0D
7D3F: C5 79 CMP $79
7D41: D0 E2 BNE $7D25 ; Print 'bad subscript'
7D43: 4C D2 7D JMP $7DD2
; ?
7D46: 20 71 7E JSR $7E71 ; Array Pointer Subroutine
7D49: 20 17 50 JSR $5017 ; Check Memory Space
7D4C: A0 00 LDY #$00
7D4E: 84 73 STY $73
7D50: A2 05 LDX #$05
7D52: A5 47 LDA $47
7D54: 8D 04 FF STA $FF04
7D57: 91 61 STA ($61),Y
7D59: 10 01 BPL $7D5C
7D5B: CA DEX
7D5C: C8 INY
7D5D: A5 48 LDA $48
7D5F: 91 61 STA ($61),Y
7D61: 10 02 BPL $7D65
7D63: CA DEX
7D64: CA DEX
7D65: 86 72 STX $72
7D67: A5 0D LDA $0D
7D69: C8 INY
7D6A: C8 INY
7D6B: C8 INY
7D6C: 91 61 STA ($61),Y
7D6E: A2 0B LDX #$0B
7D70: A9 00 LDA #$00
7D72: 24 0E BIT $0E
7D74: 50 08 BVC $7D7E
7D76: 68 PLA
7D77: 18 CLC
7D78: 69 01 ADC #$01
7D7A: AA TAX
7D7B: 68 PLA
7D7C: 69 00 ADC #$00
7D7E: C8 INY
7D7F: 91 61 STA ($61),Y
7D81: C8 INY
7D82: 8A TXA
7D83: 91 61 STA ($61),Y
7D85: 20 3E 7E JSR $7E3E ; Compute Array Size
7D88: 86 72 STX $72
7D8A: 85 73 STA $73
7D8C: A4 24 LDY $24
7D8E: C6 0D DEC $0D
7D90: D0 DC BNE $7D6E
7D92: 65 5B ADC $5B
7D94: B0 67 BCS $7DFD
7D96: 85 5B STA $5B
7D98: A8 TAY
7D99: 8A TXA
7D9A: 65 5A ADC $5A
7D9C: 90 03 BCC $7DA1
7D9E: C8 INY
7D9F: F0 5C BEQ $7DFD
7DA1: 20 17 50 JSR $5017 ; Check Memory Space
7DA4: 85 33 STA $33
7DA6: 84 34 STY $34
7DA8: A9 00 LDA #$00
7DAA: E6 73 INC $73
7DAC: A4 72 LDY $72
7DAE: F0 05 BEQ $7DB5
7DB0: 88 DEY
7DB1: 91 5A STA ($5A),Y
7DB3: D0 FB BNE $7DB0
7DB5: C6 5B DEC $5B
7DB7: C6 73 DEC $73
7DB9: D0 F5 BNE $7DB0
7DBB: E6 5B INC $5B
7DBD: 38 SEC
7DBE: A5 33 LDA $33
7DC0: E5 61 SBC $61
7DC2: A0 02 LDY #$02
7DC4: 91 61 STA ($61),Y
7DC6: A5 34 LDA $34
7DC8: C8 INY
7DC9: E5 62 SBC $62
7DCB: 91 61 STA ($61),Y
7DCD: A5 0E LDA $0E
7DCF: D0 6C BNE $7E3D
7DD1: C8 INY
7DD2: 20 00 43 JSR $4300 ; Get From ($61) Bank1
7DD5: 85 0D STA $0D
7DD7: A9 00 LDA #$00
7DD9: 85 72 STA $72
7DDB: 85 73 STA $73
7DDD: C8 INY
7DDE: 68 PLA
7DDF: AA TAX
7DE0: 85 66 STA $66
7DE2: 20 00 43 JSR $4300 ; Get From ($61) Bank1
7DE5: 85 79 STA $79
7DE7: 68 PLA
7DE8: 85 67 STA $67
7DEA: C5 79 CMP $79
7DEC: 90 12 BCC $7E00
7DEE: D0 0A BNE $7DFA
7DF0: C8 INY
7DF1: 20 00 43 JSR $4300 ; Get From ($61) Bank1
7DF4: 85 79 STA $79
7DF6: E4 79 CPX $79
7DF8: 90 07 BCC $7E01
7DFA: 4C 25 7D JMP $7D25 ; Print 'bad subscript'
7DFD: 4C 3A 4D JMP $4D3A ; Print 'out of memory'
7E00: C8 INY
7E01: A5 73 LDA $73
7E03: 05 72 ORA $72
7E05: 18 CLC
7E06: F0 0A BEQ $7E12
7E08: 20 3E 7E JSR $7E3E ; Compute Array Size
7E0B: 8A TXA
7E0C: 65 66 ADC $66
7E0E: AA TAX
7E0F: 98 TYA
7E10: A4 24 LDY $24
7E12: 65 67 ADC $67
7E14: 86 72 STX $72
7E16: C6 0D DEC $0D
7E18: D0 C1 BNE $7DDB
7E1A: 85 73 STA $73
7E1C: A2 05 LDX #$05
7E1E: A5 47 LDA $47
7E20: 10 01 BPL $7E23
7E22: CA DEX
7E23: A5 48 LDA $48
7E25: 10 02 BPL $7E29
7E27: CA DEX
7E28: CA DEX
7E29: 86 2A STX $2A
7E2B: A9 00 LDA #$00
7E2D: 20 49 7E JSR $7E49
7E30: 8A TXA
7E31: 65 5A ADC $5A
7E33: 85 49 STA $49
7E35: 98 TYA
7E36: 65 5B ADC $5B
7E38: 85 4A STA $4A
7E3A: A8 TAY
7E3B: A5 49 LDA $49
7E3D: 60 RTS
; Compute Array Size
7E3E: 84 24 STY $24
7E40: 20 00 43 JSR $4300 ; Get From ($61) Bank1
7E43: 85 2A STA $2A
7E45: 88 DEY
7E46: 20 00 43 JSR $4300 ; Get From ($61) Bank1
7E49: 85 2B STA $2B
7E4B: A9 10 LDA #$10
7E4D: 85 5F STA $5F
7E4F: A2 00 LDX #$00
7E51: A0 00 LDY #$00
7E53: 8A TXA
7E54: 0A ASL A
7E55: AA TAX
7E56: 98 TYA
7E57: 2A ROL A
7E58: A8 TAY
7E59: B0 A2 BCS $7DFD
7E5B: 06 72 ASL $72
7E5D: 26 73 ROL $73
7E5F: 90 0B BCC $7E6C
7E61: 18 CLC
7E62: 8A TXA
7E63: 65 2A ADC $2A
7E65: AA TAX
7E66: 98 TYA
7E67: 65 2B ADC $2B
7E69: A8 TAY
7E6A: B0 91 BCS $7DFD
7E6C: C6 5F DEC $5F
7E6E: D0 E3 BNE $7E53
7E70: 60 RTS
; Array Pointer Subroutine
7E71: A5 0D LDA $0D
7E73: 0A ASL A
7E74: 69 05 ADC #$05
7E76: 65 61 ADC $61
7E78: A4 62 LDY $62
7E7A: 90 01 BCC $7E7D
7E7C: C8 INY
7E7D: 85 5A STA $5A
7E7F: 84 5B STY $5B
7E81: 60 RTS
; Set Bank patch for [char]
7E82: 20 45 A8 JSR $A845 ; Set Bank 15
7E85: 4C F0 FF JMP $FFF0 ; plot Read / Set Cursor X/Y Position
; Set Bank patch for Screen Print Link
7E88: 20 45 A8 JSR $A845 ; Set Bank 15
7E8B: 4C 0C C0 JMP $C00C ; Screen Print Link
; Patch for Renumber Scan
7E8E: 20 8F 5C JSR $5C8F
7E91: 4C 86 03 JMP $0386 ; CHRGOT entry
; Patch for [delete]
7E94: E6 26 INC $26
7E96: D0 02 BNE $7E9A
7E98: E6 27 INC $27
7E9A: 38 SEC
7E9B: A5 26 LDA $26
7E9D: ED 10 12 SBC $1210 ; End of Basic, Bank 0
7EA0: A5 27 LDA $27
7EA2: ED 11 12 SBC $1211
7EA5: 60 RTS
; Patch for Note A-G
7EA6: 2C 03 0A BIT $0A03 ; PAL/NTSC System Flag
7EA9: 30 04 BMI $7EAF
7EAB: BD 05 70 LDA $7005,X ; Pitch HI -- NTSC
7EAE: 60 RTS
7EAF: BD B9 7E LDA $7EB9,X ; Pitch LO -- PAL
7EB2: 8D 2D 12 STA $122D
7EB5: BD C5 7E LDA $7EC5,X ; Pitch HI -- PAL
7EB8: 60 RTS
; Pitch LO -- PAL
7EB9: 9C BF 22 C8 B4 EB 71 4C ; '{PURPLE}."H..Ql'
7EC1: 7F 12 08 68 ; '.{RVSON}.h'
; Pitch HI -- PAL
7EC5: 45 49 4E 52 57 5C 62 68 ; 'einrw\bh'
7ECD: 6E 75 7C 83 ; 'nU..'
; String Stack patch for Error
7ED1: 8E 0C 12 STX $120C
7ED4: A2 1B LDX #$1B
7ED6: 86 18 STX $18
7ED8: 60 RTS
; Unused
7ED9: FF FF FF FF FF FF FF FF ; '........'
7EE1: FF FF FF FF FF FF FF FF ; '........'
7EE9: FF FF FF FF FF FF FF FF ; '........'
7EF1: FF FF FF FF FF FF FF FF ; '........'
7EF9: FF FF FF FF FF FF FF FF ; '........'
7F01: FF FF FF FF FF FF FF FF ; '........'
7F09: FF FF FF FF FF FF FF FF ; '........'
7F11: FF FF FF FF FF FF FF FF ; '........'
7F19: FF FF FF FF FF FF FF FF ; '........'
7F21: FF FF FF FF FF FF FF FF ; '........'
7F29: FF FF FF FF FF FF FF FF ; '........'
7F31: FF FF FF FF FF FF FF FF ; '........'
7F39: FF FF FF FF FF FF FF FF ; '........'
7F41: FF FF FF FF FF FF FF FF ; '........'
7F49: FF FF FF FF FF FF FF FF ; '........'
7F51: FF FF FF FF FF FF FF FF ; '........'
7F59: FF FF FF FF FF FF FF FF ; '........'
7F61: FF FF FF FF FF FF FF FF ; '........'
7F69: FF FF FF FF FF FF FF FF ; '........'
7F71: FF FF FF FF FF FF FF FF ; '........'
7F79: FF FF FF FF FF FF FF FF ; '........'
7F81: FF FF FF FF FF FF FF FF ; '........'
7F89: FF FF FF FF FF FF FF FF ; '........'
7F91: FF FF FF FF FF FF FF FF ; '........'
7F99: FF FF FF FF FF FF FF FF ; '........'
7FA1: FF FF FF FF FF FF FF FF ; '........'
7FA9: FF FF FF FF FF FF FF FF ; '........'
7FB1: FF FF FF FF FF FF FF FF ; '........'
7FB9: FF FF FF FF FF FF FF ; '.......'
; Copyright notice
7FC0: 28 43 29 31 39 38 36 20 ; '(c)1986 '
7FC8: 43 4F 4D 4D 4F 44 4F 52 ; 'commodor'
7FD0: 45 20 45 4C 45 43 54 52 ; 'e electr'
7FD8: 4F 4E 49 43 53 2C 20 4C ; 'onics, l'
7FE0: 54 44 2E 20 41 4C 4C 20 ; 'td. all '
7FE8: 52 49 47 48 54 53 20 52 ; 'rights r'
7FF0: 45 53 45 52 56 45 44 2E ; 'eserved.'
; ?
7FF8: FF FF FF FF EF 8D 01 61 ; '.....{SHCR}.a'
; Evaluate <fre>
8000: 20 F7 87 JSR $87F7
8003: E0 01 CPX #$01
8005: 90 05 BCC $800C
8007: F0 31 BEQ $803A ; -Free in Bank 1
8009: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
800C: 38 SEC
800D: AD 12 12 LDA $1212 ; Basic Program Limit [FF00]
8010: ED 10 12 SBC $1210 ; End of Basic, Bank 0
8013: A8 TAY
8014: AD 13 12 LDA $1213
8017: ED 11 12 SBC $1211
801A: B0 2B BCS $8047
801C: A6 35 LDX $35
801E: E8 INX
801F: C8 INY
; Decrypt Message
8020: 85 70 STA $70
8022: 98 TYA
8023: 38 SEC
8024: E9 05 SBC #$05
8026: 85 71 STA $71
8028: A5 71 LDA $71
802A: 5D 37 AE EOR $AE37,X
802D: 45 70 EOR $70
802F: F0 44 BEQ $8075
8031: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
8034: E6 71 INC $71
8036: E8 INX
8037: D0 EF BNE $8028
8039: 60 RTS
; -Free in Bank 1
803A: 20 EA 92 JSR $92EA ; Garbage Collection
803D: 38 SEC
803E: A5 35 LDA $35
8040: E5 33 SBC $33
8042: A8 TAY
8043: A5 36 LDA $36
8045: E5 34 SBC $34
8047: 4C C9 84 JMP $84C9 ; Float (.y, .a)
; Evaluate <val>
804A: 20 6E 86 JSR $866E ; Exit String Mode
804D: D0 03 BNE $8052 ; String to Float
804F: 4C D6 88 JMP $88D6 ; Zero Both Accuymulators
; String to Float
8052: 18 CLC
8053: 65 24 ADC $24
8055: 85 72 STA $72
8057: A5 25 LDA $25
8059: 69 00 ADC #$00
805B: 85 73 STA $73
805D: A0 00 LDY #$00
805F: A9 72 LDA #$72
8061: 20 AB 03 JSR $03AB ; Fetch From RAM Bank 1
8064: 48 PHA
8065: 98 TYA
8066: 91 72 STA ($72),Y
8068: 20 03 8E JSR $8E03
806B: A2 01 LDX #$01
806D: 20 22 8D JSR $8D22 ; String to FAC#1
8070: 68 PLA
8071: A0 00 LDY #$00
8073: 91 72 STA ($72),Y
8075: 60 RTS
; Evaluate <dec>
8076: 20 6E 86 JSR $866E ; Exit String Mode
8079: 85 26 STA $26
807B: A0 00 LDY #$00
807D: 84 27 STY $27
807F: 84 72 STY $72
8081: 84 73 STY $73
8083: C4 26 CPY $26
8085: F0 34 BEQ $80BB
8087: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
808A: C8 INY
808B: C9 20 CMP #$20
808D: F0 F4 BEQ $8083
808F: E6 27 INC $27
8091: A6 27 LDX $27
8093: E0 05 CPX #$05
8095: F0 2B BEQ $80C2
8097: C9 30 CMP #$30
8099: 90 27 BCC $80C2
809B: C9 3A CMP #$3A
809D: 90 0A BCC $80A9
809F: C9 41 CMP #$41
80A1: 90 1F BCC $80C2
80A3: C9 47 CMP #$47
80A5: B0 1B BCS $80C2
80A7: E9 07 SBC #$07
80A9: E9 2F SBC #$2F
80AB: 0A ASL A
80AC: 0A ASL A
80AD: 0A ASL A
80AE: 0A ASL A
80AF: A2 04 LDX #$04
80B1: 0A ASL A
80B2: 26 72 ROL $72
80B4: 26 73 ROL $73
80B6: CA DEX
80B7: D0 F8 BNE $80B1
80B9: F0 C8 BEQ $8083
80BB: A4 72 LDY $72
80BD: A5 73 LDA $73
80BF: 4C C9 84 JMP $84C9 ; Float (.y, .a)
80C2: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Evaluate <peek>
80C5: A5 17 LDA $17
80C7: 48 PHA
80C8: A5 16 LDA $16
80CA: 48 PHA
80CB: 20 DA 77 JSR $77DA ; Confirm Numeric
80CE: 20 15 88 JSR $8815 ; Float/Fixed
80D1: AE D5 03 LDX $03D5 ; Current Bank For SYS, POKE, PEEK
80D4: A0 00 LDY #$00
80D6: A9 16 LDA #$16
80D8: 20 74 FF JSR $FF74 ; indfet Bank LDA (fetchvec),y
80DB: A8 TAY
80DC: 68 PLA
80DD: 85 16 STA $16
80DF: 68 PLA
80E0: 85 17 STA $17
80E2: 4C D4 84 JMP $84D4 ; Byte To Float
; Perform [poke]
80E5: 20 03 88 JSR $8803 ; Params For Poke/Wait
80E8: 8A TXA
80E9: A0 00 LDY #$00
80EB: A2 16 LDX #$16
80ED: 8E B9 02 STX $02B9
80F0: AE D5 03 LDX $03D5 ; Current Bank For SYS, POKE, PEEK
80F3: 4C 77 FF JMP $FF77 ; indsta Bank STA (stavec),y
; Evaluate <err$>
80F6: 20 F7 87 JSR $87F7
80F9: CA DEX
80FA: 8A TXA
80FB: C9 29 CMP #$29
80FD: B0 37 BCS $8136
80FF: 20 82 4A JSR $4A82 ; Find Message
8102: A0 FF LDY #$FF
8104: A2 00 LDX #$00
8106: E8 INX
8107: C8 INY
8108: B1 26 LDA ($26),Y
810A: 30 06 BMI $8112
810C: C9 20 CMP #$20
810E: 90 F7 BCC $8107
8110: B0 F4 BCS $8106
8112: 8A TXA
8113: 20 90 86 JSR $8690
8116: A2 00 LDX #$00
8118: A0 FF LDY #$FF
811A: 8D 04 FF STA $FF04
811D: C8 INY
811E: B1 26 LDA ($26),Y
8120: C9 20 CMP #$20
8122: 90 F9 BCC $811D
8124: 20 39 81 JSR $8139 ; Swap x With y
8127: 48 PHA
8128: 29 7F AND #$7F
812A: 91 64 STA ($64),Y
812C: 20 39 81 JSR $8139 ; Swap x With y
812F: E8 INX
8130: 68 PLA
8131: 10 EA BPL $811D
8133: 4C D1 85 JMP $85D1
8136: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Swap x With y
8139: 48 PHA
813A: 8A TXA
813B: 48 PHA
813C: 98 TYA
813D: AA TAX
813E: 68 PLA
813F: A8 TAY
8140: 68 PLA
8141: 60 RTS
; Evaluate <hex$>
8142: 20 DA 77 JSR $77DA ; Confirm Numeric
8145: A5 16 LDA $16
8147: 48 PHA
8148: A5 17 LDA $17
814A: 48 PHA
814B: 20 15 88 JSR $8815 ; Float/Fixed
814E: A9 04 LDA #$04
8150: 20 90 86 JSR $8690
8153: A0 00 LDY #$00
8155: A5 17 LDA $17
8157: 8D 04 FF STA $FF04
815A: 20 6B 81 JSR $816B ; Byte to Hex
815D: A5 16 LDA $16
815F: 20 6B 81 JSR $816B ; Byte to Hex
8162: 68 PLA
8163: 85 17 STA $17
8165: 68 PLA
8166: 85 16 STA $16
8168: 4C D1 85 JMP $85D1
; Byte to Hex
816B: 48 PHA
816C: 4A LSR A
816D: 4A LSR A
816E: 4A LSR A
816F: 4A LSR A
8170: 20 74 81 JSR $8174
8173: 68 PLA
8174: 29 0F AND #$0F
8176: C9 0A CMP #$0A
8178: 90 02 BCC $817C
817A: 69 06 ADC #$06
817C: 69 30 ADC #$30
817E: 91 64 STA ($64),Y
8180: C8 INY
8181: 60 RTS
; Evaluate <rgr>
8182: 20 DA 77 JSR $77DA ; Confirm Numeric
8185: 20 8C 81 JSR $818C ; Get Graphics Mode
8188: A8 TAY
8189: 4C D4 84 JMP $84D4 ; Byte To Float
; Get Graphics Mode
818C: A5 D8 LDA $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
818E: 18 CLC
818F: 2A ROL A
8190: 2A ROL A
8191: 2A ROL A
8192: 69 00 ADC #$00
8194: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
8196: 10 02 BPL $819A
8198: 69 05 ADC #$05
819A: 60 RTS
; Evaluate <rclr>
819B: 20 F7 87 JSR $87F7
819E: 20 45 A8 JSR $A845 ; Set Bank 15
81A1: CA DEX
81A2: 30 15 BMI $81B9
81A4: CA DEX
81A5: 30 1A BMI $81C1
81A7: CA DEX
81A8: 30 1C BMI $81C6
81AA: CA DEX
81AB: 30 1E BMI $81CB
81AD: CA DEX
81AE: 30 20 BMI $81D0
81B0: CA DEX
81B1: 30 23 BMI $81D6
81B3: CA DEX
81B4: 30 28 BMI $81DE
81B6: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
81B9: AD 21 D0 LDA $D021
81BC: 29 7F AND #$7F
81BE: 4C EC 81 JMP $81EC
81C1: A5 86 LDA $86 ; Graphic foreground color (13)
81C3: 4C EC 81 JMP $81EC
81C6: A5 84 LDA $84 ; Multicolor 1 (1)
81C8: 4C EC 81 JMP $81EC
81CB: A5 85 LDA $85 ; Multicolor 2 (2)
81CD: 4C EC 81 JMP $81EC
81D0: AD 20 D0 LDA $D020
81D3: 4C EC 81 JMP $81EC
81D6: A5 F1 LDA $F1 ; Curr Attribute to Print (Default FGND Color)
81D8: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
81DA: 10 10 BPL $81EC
81DC: 30 08 BMI $81E6
81DE: A9 1A LDA #$1A
81E0: 8D 00 D6 STA $D600
81E3: AD 01 D6 LDA $D601
81E6: 29 0F AND #$0F
81E8: AA TAX
81E9: BD F3 81 LDA $81F3,X ; CRTC Color Codes
81EC: 29 0F AND #$0F
81EE: A8 TAY
81EF: C8 INY
81F0: 4C D4 84 JMP $84D4 ; Byte To Float
; CRTC Color Codes
81F3: 00 0C 06 0E 05 0D 0B 03 ; '{0}{UNLOCK}.{LOWTEXT}{WHITE}{CR}{LOCK}{STOP}'
81FB: 02 0A 08 04 09 07 0F 01 ; '{ULON}{LF}..{TAB}{BELL}{FLSHON}.'
; Evaluate <joy>
8203: 20 F7 87 JSR $87F7
8206: CA DEX
8207: E0 02 CPX #$02
8209: B0 34 BCS $823F
820B: 8A TXA
820C: 49 01 EOR #$01
820E: AA TAX
820F: 08 PHP
8210: 20 45 A8 JSR $A845 ; Set Bank 15
8213: 78 SEI
8214: AD 00 DC LDA $DC00
8217: 48 PHA
8218: A0 FF LDY #$FF
821A: 8C 00 DC STY $DC00
821D: BD 00 DC LDA $DC00,X
8220: DD 00 DC CMP $DC00,X
8223: D0 F8 BNE $821D
8225: AA TAX
8226: 68 PLA
8227: 8D 00 DC STA $DC00
822A: 8A TXA
822B: 28 PLP
822C: 29 0F AND #$0F
822E: A8 TAY
822F: B9 3D 82 LDA $823D,Y
8232: A8 TAY
8233: 8A TXA
8234: 29 10 AND #$10
8236: D0 04 BNE $823C
8238: 98 TYA
8239: 09 80 ORA #$80
823B: A8 TAY
823C: 4C D4 84 JMP $84D4 ; Byte To Float
823F: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Joystick Values
8242: 04 02 03 00 06 08 07 00 ; '.{ULON}{STOP}{0}..{BELL}{0}'
824A: 05 01 00 ; '{WHITE}.{0}'
; Evaluate <pot>
824D: 20 56 79 JSR $7956 ; -Check Right Parenthesis
8250: 20 F7 87 JSR $87F7
8253: CA DEX
8254: E0 04 CPX #$04
8256: B0 53 BCS $82AB
8258: 20 45 A8 JSR $A845 ; Set Bank 15
825B: A0 00 LDY #$00
825D: 8A TXA
825E: A2 40 LDX #$40
8260: 4A LSR A
8261: 90 01 BCC $8264
8263: C8 INY
8264: 4A LSR A
8265: 90 02 BCC $8269
8267: A2 80 LDX #$80
8269: 8E B1 12 STX $12B1
826C: 08 PHP
826D: 78 SEI
826E: AD 00 DC LDA $DC00
8271: 48 PHA
8272: 8E 00 DC STX $DC00
8275: A2 00 LDX #$00
8277: E8 INX
8278: D0 FD BNE $8277
827A: B9 19 D4 LDA $D419,Y
827D: D9 19 D4 CMP $D419,Y
8280: D0 F8 BNE $827A
8282: 8D B2 12 STA $12B2
8285: A2 00 LDX #$00
8287: 2C B1 12 BIT $12B1
828A: 30 01 BMI $828D
828C: E8 INX
828D: A9 04 LDA #$04
828F: 88 DEY
8290: 30 01 BMI $8293
8292: 0A ASL A
8293: A0 FF LDY #$FF
8295: 8C 00 DC STY $DC00
8298: C8 INY
8299: 3D 00 DC AND $DC00,X
829C: D0 01 BNE $829F
829E: C8 INY
829F: 68 PLA
82A0: 8D 00 DC STA $DC00
82A3: 98 TYA
82A4: AC B2 12 LDY $12B2
82A7: 28 PLP
82A8: 4C C9 84 JMP $84C9 ; Float (.y, .a)
82AB: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Evaluate <pen>
82AE: 20 56 79 JSR $7956 ; -Check Right Parenthesis
82B1: 20 F7 87 JSR $87F7
82B4: E0 05 CPX #$05
82B6: B0 F3 BCS $82AB
82B8: E0 02 CPX #$02
82BA: B0 1A BCS $82D6
82BC: BC E9 11 LDY $11E9,X
82BF: 8C B1 12 STY $12B1
82C2: A9 00 LDA #$00
82C4: 9D E9 11 STA $11E9,X
82C7: E0 00 CPX #$00
82C9: D0 05 BNE $82D0
82CB: 0E B1 12 ASL $12B1
82CE: 69 00 ADC #$00
82D0: AC B1 12 LDY $12B1
82D3: 4C C9 84 JMP $84C9 ; Float (.y, .a)
82D6: 20 45 A8 JSR $A845 ; Set Bank 15
82D9: E0 04 CPX #$04
82DB: F0 10 BEQ $82ED
82DD: A0 11 LDY #$11
82DF: E0 02 CPX #$02
82E1: F0 01 BEQ $82E4
82E3: 88 DEY
82E4: 8C 00 D6 STY $D600
82E7: AC 01 D6 LDY $D601
82EA: 4C D4 84 JMP $84D4 ; Byte To Float
82ED: AD 00 D6 LDA $D600
82F0: A0 00 LDY #$00
82F2: 29 40 AND #$40
82F4: F0 01 BEQ $82F7
82F6: C8 INY
82F7: 4C D4 84 JMP $84D4 ; Byte To Float
; Evaluate <pointer>
82FA: 20 80 03 JSR $0380 ; CHRGET
82FD: 20 59 79 JSR $7959 ; -Check Left Parenthesis
8300: 20 3C 7B JSR $7B3C ; Check Alphabetic
8303: 90 16 BCC $831B
8305: 20 AF 7A JSR $7AAF ; Locate Variable
8308: AA TAX
8309: 98 TYA
830A: 48 PHA
830B: 20 56 79 JSR $7956 ; -Check Right Parenthesis
830E: 8A TXA
830F: A8 TAY
8310: 68 PLA
8311: C9 03 CMP #$03
8313: D0 03 BNE $8318
8315: A9 00 LDA #$00
8317: A8 TAY
8318: 4C C9 84 JMP $84C9 ; Float (.y, .a)
831B: 4C 6C 79 JMP $796C ; Syntax Error
; Evaluate <rsprite>
831E: 20 F7 87 JSR $87F7
8321: CA DEX
8322: E0 08 CPX #$08
8324: B0 32 BCS $8358
8326: 8A TXA
8327: 48 PHA
8328: 20 5C 79 JSR $795C ; -Check Comma
832B: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
832E: 20 56 79 JSR $7956 ; -Check Right Parenthesis
8331: E0 06 CPX #$06
8333: B0 23 BCS $8358
8335: 68 PLA
8336: A8 TAY
8337: 20 45 A8 JSR $A845 ; Set Bank 15
833A: B9 27 D0 LDA $D027,Y
833D: 29 0F AND #$0F
833F: 18 CLC
8340: 69 01 ADC #$01
8342: E0 01 CPX #$01
8344: F0 0E BEQ $8354
8346: BD 5B 83 LDA $835B,X ; VIC Sprite Register Numbers
8349: AA TAX
834A: B9 B3 6C LDA $6CB3,Y ; Bit Masks
834D: 3D 00 D0 AND $D000,X
8350: F0 02 BEQ $8354
8352: A9 01 LDA #$01
8354: A8 TAY
8355: 4C D4 84 JMP $84D4 ; Byte To Float
8358: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; VIC Sprite Register Numbers
835B: 15 27 1B 1D 17 1C ; '.'{ESC}{RIGHT}.{RED}'
; Evaluate <rspcolor>
8361: 20 56 79 JSR $7956 ; -Check Right Parenthesis
8364: 20 F7 87 JSR $87F7
8367: CA DEX
8368: E0 02 CPX #$02
836A: B0 0D BCS $8379
836C: 20 45 A8 JSR $A845 ; Set Bank 15
836F: BD 25 D0 LDA $D025,X
8372: 29 0F AND #$0F
8374: A8 TAY
8375: C8 INY
8376: 4C D4 84 JMP $84D4 ; Byte To Float
8379: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Evaluate <bump>
837C: 20 56 79 JSR $7956 ; -Check Right Parenthesis
837F: 20 F7 87 JSR $87F7
8382: CA DEX
8383: E0 02 CPX #$02
8385: B0 0D BCS $8394
8387: 78 SEI
8388: BC E7 11 LDY $11E7,X
838B: A9 00 LDA #$00
838D: 9D E7 11 STA $11E7,X
8390: 58 CLI
8391: 4C D4 84 JMP $84D4 ; Byte To Float
8394: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Evaluate <rspos>
8397: 20 F7 87 JSR $87F7
839A: CA DEX
839B: E0 08 CPX #$08
839D: B0 3F BCS $83DE
839F: 8A TXA
83A0: 48 PHA
83A1: 20 5C 79 JSR $795C ; -Check Comma
83A4: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
83A7: 20 56 79 JSR $7956 ; -Check Right Parenthesis
83AA: E0 03 CPX #$03
83AC: B0 30 BCS $83DE
83AE: 68 PLA
83AF: A8 TAY
83B0: E0 02 CPX #$02
83B2: D0 09 BNE $83BD
83B4: BE D9 6D LDX $6DD9,Y ; Sprite Motion Table Offsets
83B7: BC 7E 11 LDY $117E,X ; Sprite Motion Tables (8 x 11 bytes)
83BA: 4C D4 84 JMP $84D4 ; Byte To Float
83BD: 78 SEI
83BE: B9 B3 6C LDA $6CB3,Y ; Bit Masks
83C1: 2D E6 11 AND $11E6
83C4: F0 02 BEQ $83C8
83C6: A9 01 LDA #$01
83C8: 48 PHA
83C9: 98 TYA
83CA: 0A ASL A
83CB: A8 TAY
83CC: 8A TXA
83CD: 4A LSR A
83CE: 90 05 BCC $83D5
83D0: C8 INY
83D1: 68 PLA
83D2: A9 00 LDA #$00
83D4: 48 PHA
83D5: B9 D6 11 LDA $11D6,Y
83D8: 58 CLI
83D9: A8 TAY
83DA: 68 PLA
83DB: 4C C9 84 JMP $84C9 ; Float (.y, .a)
83DE: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Evaluate <xor>
83E1: A5 16 LDA $16
83E3: 48 PHA
83E4: A5 17 LDA $17
83E6: 48 PHA
83E7: 20 DA 77 JSR $77DA ; Confirm Numeric
83EA: 20 15 88 JSR $8815 ; Float/Fixed
83ED: 48 PHA
83EE: 98 TYA
83EF: 48 PHA
83F0: 20 0F 88 JSR $880F ; Input Next Float/Fixed Value
83F3: 20 56 79 JSR $7956 ; -Check Right Parenthesis
83F6: 68 PLA
83F7: 45 16 EOR $16
83F9: A8 TAY
83FA: 68 PLA
83FB: 45 17 EOR $17
83FD: 20 C9 84 JSR $84C9 ; Float (.y, .a)
8400: 68 PLA
8401: 85 17 STA $17
8403: 68 PLA
8404: 85 16 STA $16
8406: 60 RTS
; Evaluate <rwindow>
8407: 20 56 79 JSR $7956 ; -Check Right Parenthesis
840A: 20 F7 87 JSR $87F7
840D: E0 02 CPX #$02
840F: F0 14 BEQ $8425
8411: B0 1E BCS $8431
8413: E0 00 CPX #$00
8415: D0 07 BNE $841E
8417: A5 E4 LDA $E4 ; Window Lower Limit
8419: 38 SEC
841A: E5 E5 SBC $E5 ; Window Upper Limit
841C: B0 0F BCS $842D
841E: A5 E7 LDA $E7 ; Window Right Margin
8420: 38 SEC
8421: E5 E6 SBC $E6 ; Window Left Margin
8423: B0 08 BCS $842D
8425: A9 28 LDA #$28
8427: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
8429: 10 02 BPL $842D
842B: A9 50 LDA #$50
842D: A8 TAY
842E: 4C D4 84 JMP $84D4 ; Byte To Float
8431: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Evaluate <rnd>
8434: 20 57 8C JSR $8C57 ; Get Sign
8437: 30 31 BMI $846A
8439: D0 1A BNE $8455
843B: 20 45 A8 JSR $A845 ; Set Bank 15
843E: AD 06 DC LDA $DC06
8441: 85 64 STA $64
8443: AD 07 DC LDA $DC07
8446: 85 66 STA $66
8448: AD 04 DC LDA $DC04
844B: 85 65 STA $65
844D: AD 05 DC LDA $DC05
8450: 85 67 STA $67
8452: 4C 7A 84 JMP $847A
8455: A9 1B LDA #$1B
8457: A0 12 LDY #$12
8459: 20 D4 8B JSR $8BD4 ; Unpack ROM to FAC#1
845C: A9 90 LDA #$90
845E: A0 84 LDY #$84
8460: 20 08 8A JSR $8A08
8463: A9 95 LDA #$95
8465: A0 84 LDY #$84
8467: 20 12 8A JSR $8A12 ; Add Memory At A/Y
846A: A6 67 LDX $67
846C: A5 64 LDA $64
846E: 85 67 STA $67
8470: 86 64 STX $64
8472: A6 65 LDX $65
8474: A5 66 LDA $66
8476: 85 65 STA $65
8478: 86 66 STX $66
847A: A9 00 LDA #$00
847C: 85 68 STA $68
847E: A5 63 LDA $63
8480: 85 71 STA $71
8482: A9 80 LDA #$80
8484: 85 63 STA $63
8486: 20 B6 88 JSR $88B6
8489: A2 1B LDX #$1B
848B: A0 12 LDY #$12
848D: 4C 00 8C JMP $8C00 ; Pack FAC#1 to RAM1
; Rnd Multiplier
8490: 98 35 44 7A 00 68 28 B1 ; '{GRAY2}5dZ{0}h(.'
8498: 46 00 ; 'f{0}'
; Value -32768
849A: 90 80 00 00 00 ; '{BLACK}.{0}{0}{0}'
; Float-Fixed Signed -32768 - 32767
849F: 20 B4 84 JSR $84B4
84A2: A5 66 LDA $66
84A4: A4 67 LDY $67
84A6: 60 RTS
; Evaluate Fixed Unsigned Number 0 - 32767
84A7: 20 80 03 JSR $0380 ; CHRGET
84AA: 20 EF 77 JSR $77EF ; Evaluate Expression
; Float-Fixed Unsigned 0 - 32767
84AD: 20 DA 77 JSR $77DA ; Confirm Numeric
84B0: A5 68 LDA $68
84B2: 30 0D BMI $84C1
84B4: A5 63 LDA $63
84B6: C9 90 CMP #$90
84B8: 90 0C BCC $84C6
84BA: A9 9A LDA #$9A
84BC: A0 84 LDY #$84
84BE: 20 87 8C JSR $8C87 ; Compare FAC#1 to Memory
84C1: F0 03 BEQ $84C6
84C3: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
84C6: 4C C7 8C JMP $8CC7 ; Float-Fixed
; Float (.y, .a)
84C9: 20 E5 84 JSR $84E5 ; Set Up 16 Bit Fix-Float
84CC: 38 SEC
84CD: 4C 75 8C JMP $8C75 ; Fixed-Float
; Evaluate <pos>
84D0: 38 SEC
84D1: 20 8D 92 JSR $928D ; Call 'plot'
; Byte To Float
84D4: A9 00 LDA #$00
84D6: 4C 3C 79 JMP $793C ; Fixed-Float
; Check Direct
84D9: 24 7F BIT $7F
84DB: 30 12 BMI $84EF
; Print 'illegal direct'
84DD: A2 15 LDX #$15
84DF: 2C .BYTE $2C
; Print 'undef'd function'
84E0: A2 1B LDX #$1B
84E2: 4C 3C 4D JMP $4D3C ; Error
; Set Up 16 Bit Fix-Float
84E5: A2 00 LDX #$00
84E7: 86 0F STX $0F
84E9: 85 64 STA $64
84EB: 84 65 STY $65
84ED: A2 90 LDX #$90
84EF: 60 RTS
; Check Direct
84F0: 24 7F BIT $7F
84F2: 30 01 BMI $84F5 ; Print 'direct mode only'
84F4: 60 RTS
; Print 'direct mode only'
84F5: A2 22 LDX #$22
84F7: 4C 3C 4D JMP $4D3C ; Error
; Perform [def]
84FA: 20 28 85 JSR $8528 ; Check FN Syntax
84FD: 20 D9 84 JSR $84D9 ; Check Direct
8500: 20 59 79 JSR $7959 ; -Check Left Parenthesis
8503: A9 80 LDA #$80
8505: 85 12 STA $12
8507: 20 AF 7A JSR $7AAF ; Locate Variable
850A: 20 DA 77 JSR $77DA ; Confirm Numeric
850D: 20 56 79 JSR $7956 ; -Check Right Parenthesis
8510: A9 B2 LDA #$B2
8512: 20 5E 79 JSR $795E
8515: 48 PHA
8516: A5 4A LDA $4A
8518: 48 PHA
8519: A5 49 LDA $49
851B: 48 PHA
851C: A5 3E LDA $3E
851E: 48 PHA
851F: A5 3D LDA $3D ; Textpointer: BASIC work point (chrget)
8521: 48 PHA
8522: 20 8F 52 JSR $528F ; Perform [data/bend]
8525: 4C A0 85 JMP $85A0
; Check FN Syntax
8528: A9 A5 LDA #$A5
852A: 20 5E 79 JSR $795E
852D: 09 80 ORA #$80
852F: 85 12 STA $12
8531: 20 B6 7A JSR $7AB6
8534: 85 50 STA $50
8536: 84 51 STY $51
8538: 4C DA 77 JMP $77DA ; Confirm Numeric
; Perform [fn]
853B: 20 28 85 JSR $8528 ; Check FN Syntax
853E: A5 51 LDA $51
8540: 48 PHA
8541: A5 50 LDA $50
8543: 48 PHA
8544: 20 50 79 JSR $7950 ; Eval Within Parens
8547: 20 DA 77 JSR $77DA ; Confirm Numeric
854A: 68 PLA
854B: 85 50 STA $50
854D: 68 PLA
854E: 85 51 STA $51
8550: A0 02 LDY #$02
8552: 20 CE 42 JSR $42CE ; Get From ($50) Bank1
8555: 85 49 STA $49
8557: AA TAX
8558: C8 INY
8559: 20 CE 42 JSR $42CE ; Get From ($50) Bank1
855C: F0 82 BEQ $84E0 ; Print 'undef'd function'
855E: 85 4A STA $4A
8560: C8 INY
8561: A9 49 LDA #$49
8563: 20 AB 03 JSR $03AB ; Fetch From RAM Bank 1
8566: 48 PHA
8567: 88 DEY
8568: 10 F7 BPL $8561
856A: A4 4A LDY $4A
856C: 8D 04 FF STA $FF04
856F: 20 00 8C JSR $8C00 ; Pack FAC#1 to RAM1
8572: A5 3E LDA $3E
8574: 48 PHA
8575: A5 3D LDA $3D ; Textpointer: BASIC work point (chrget)
8577: 48 PHA
8578: 20 CE 42 JSR $42CE ; Get From ($50) Bank1
857B: 85 3D STA $3D ; Textpointer: BASIC work point (chrget)
857D: C8 INY
857E: 20 CE 42 JSR $42CE ; Get From ($50) Bank1
8581: 85 3E STA $3E
8583: A5 4A LDA $4A
8585: 48 PHA
8586: A5 49 LDA $49
8588: 48 PHA
8589: 20 D7 77 JSR $77D7 ; Type Match Check
858C: 68 PLA
858D: 85 50 STA $50
858F: 68 PLA
8590: 85 51 STA $51
8592: 20 86 03 JSR $0386 ; CHRGOT entry
8595: F0 03 BEQ $859A
8597: 4C 6C 79 JMP $796C ; Syntax Error
859A: 68 PLA
859B: 85 3D STA $3D ; Textpointer: BASIC work point (chrget)
859D: 68 PLA
859E: 85 3E STA $3E
85A0: A0 00 LDY #$00
85A2: 8D 04 FF STA $FF04
85A5: 68 PLA
85A6: 91 50 STA ($50),Y
85A8: C8 INY
85A9: C0 05 CPY #$05
85AB: D0 F8 BNE $85A5
85AD: 60 RTS
; Evaluate <str$>
85AE: 20 DA 77 JSR $77DA ; Confirm Numeric
85B1: A0 00 LDY #$00
85B3: 20 44 8E JSR $8E44
85B6: 68 PLA
85B7: 68 PLA
85B8: A9 FF LDA #$FF
85BA: A0 00 LDY #$00
85BC: 4C 9A 86 JMP $869A ; Set Up String
; Evaluate <chr$>
85BF: 20 F7 87 JSR $87F7
85C2: 8A TXA
85C3: 48 PHA
85C4: A9 01 LDA #$01
85C6: 20 90 86 JSR $8690
85C9: 68 PLA
85CA: A0 00 LDY #$00
85CC: 8D 04 FF STA $FF04
85CF: 91 64 STA ($64),Y
85D1: 68 PLA
85D2: 68 PLA
85D3: 4C E3 86 JMP $86E3
; Evaluate <left$>
85D6: 20 4D 86 JSR $864D ; Pull String Parameters
85D9: 48 PHA
85DA: 20 D8 42 JSR $42D8 ; Get From ($52) Bank1
85DD: 85 79 STA $79
85DF: 68 PLA
85E0: C5 79 CMP $79
85E2: 98 TYA
85E3: 90 05 BCC $85EA
85E5: 20 D8 42 JSR $42D8 ; Get From ($52) Bank1
85E8: AA TAX
85E9: 98 TYA
85EA: 48 PHA
85EB: 8A TXA
85EC: 48 PHA
85ED: 20 90 86 JSR $8690
85F0: A5 52 LDA $52
85F2: A4 53 LDY $53
85F4: 20 85 87 JSR $8785
85F7: 68 PLA
85F8: A8 TAY
85F9: 68 PLA
85FA: 18 CLC
85FB: 65 24 ADC $24
85FD: 85 24 STA $24
85FF: 90 02 BCC $8603
8601: E6 25 INC $25
8603: 98 TYA
8604: 20 63 87 JSR $8763
8607: 4C E3 86 JMP $86E3
; Evaluate <right$>
860A: 20 4D 86 JSR $864D ; Pull String Parameters
860D: 48 PHA
860E: 20 D8 42 JSR $42D8 ; Get From ($52) Bank1
8611: 85 79 STA $79
8613: 68 PLA
8614: 18 CLC
8615: E5 79 SBC $79
8617: 49 FF EOR #$FF
8619: 4C E3 85 JMP $85E3
; Evaluate <mid$>
861C: A9 FF LDA #$FF
861E: 85 67 STA $67
8620: 20 86 03 JSR $0386 ; CHRGOT entry
8623: C9 29 CMP #$29
8625: F0 06 BEQ $862D
8627: 20 5C 79 JSR $795C ; -Check Comma
862A: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
862D: 20 4D 86 JSR $864D ; Pull String Parameters
8630: F0 53 BEQ $8685
8632: CA DEX
8633: 8A TXA
8634: 48 PHA
8635: A2 00 LDX #$00
8637: 48 PHA
8638: 20 D8 42 JSR $42D8 ; Get From ($52) Bank1
863B: 85 79 STA $79
863D: 68 PLA
863E: 18 CLC
863F: E5 79 SBC $79
8641: B0 A8 BCS $85EB
8643: 49 FF EOR #$FF
8645: C5 67 CMP $67
8647: 90 A3 BCC $85EC
8649: A5 67 LDA $67
864B: B0 9F BCS $85EC
; Pull String Parameters
864D: 20 56 79 JSR $7956 ; -Check Right Parenthesis
8650: 68 PLA
8651: A8 TAY
8652: 68 PLA
8653: 85 57 STA $57
8655: 68 PLA
8656: 68 PLA
8657: 68 PLA
8658: AA TAX
8659: 68 PLA
865A: 85 52 STA $52
865C: 68 PLA
865D: 85 53 STA $53
865F: A5 57 LDA $57
8661: 48 PHA
8662: 98 TYA
8663: 48 PHA
8664: A0 00 LDY #$00
8666: 8A TXA
8667: 60 RTS
; Evaluate <len>
8668: 20 6E 86 JSR $866E ; Exit String Mode
866B: 4C D4 84 JMP $84D4 ; Byte To Float
; Exit String Mode
866E: 20 7E 87 JSR $877E
8671: A2 00 LDX #$00
8673: 86 0F STX $0F
8675: A8 TAY
8676: 60 RTS
; Evaluate <asc>
8677: 20 6E 86 JSR $866E ; Exit String Mode
867A: F0 06 BEQ $8682
867C: A0 00 LDY #$00
867E: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
8681: A8 TAY
8682: 4C D4 84 JMP $84D4 ; Byte To Float
8685: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Calc String Vector
8688: A6 66 LDX $66
868A: A4 67 LDY $67
868C: 86 52 STX $52
868E: 84 53 STY $53
8690: 20 99 92 JSR $9299 ; Make Room For String
8693: 86 64 STX $64
8695: 84 65 STY $65
8697: 85 63 STA $63
8699: 60 RTS
; Set Up String
869A: A2 22 LDX #$22
869C: 86 09 STX $09 ; SYS and MLM register save (SP)
869E: 86 0A STX $0A
86A0: 85 70 STA $70
86A2: 84 71 STY $71
86A4: 85 64 STA $64
86A6: 84 65 STY $65
86A8: A0 FF LDY #$FF
86AA: C8 INY
86AB: 20 F1 42 JSR $42F1 ; Get From ($70) Bank0
86AE: F0 0C BEQ $86BC
86B0: C5 09 CMP $09 ; SYS and MLM register save (SP)
86B2: F0 04 BEQ $86B8
86B4: C5 0A CMP $0A
86B6: D0 F2 BNE $86AA
86B8: C9 22 CMP #$22
86BA: F0 01 BEQ $86BD
86BC: 18 CLC
86BD: 84 63 STY $63
86BF: 98 TYA
86C0: 65 70 ADC $70
86C2: 85 72 STA $72
86C4: A6 71 LDX $71
86C6: 90 01 BCC $86C9
86C8: E8 INX
86C9: 86 73 STX $73
86CB: 98 TYA
86CC: 20 88 86 JSR $8688 ; Calc String Vector
86CF: A8 TAY ; descriptor $63/$64/$65, allocated string length
86D0: F0 11 BEQ $86E3
86D2: 48 PHA
86D3: 88 DEY ; in string index
86D4: 20 F1 42 JSR $42F1 ; Get From ($70) Bank0
86D7: 8D 04 FF STA $FF04
86DA: 91 37 STA ($37),Y ; copy to new allocated string
86DC: 98 TYA
86DD: D0 F4 BNE $86D3 ; copy loop
86DF: 68 PLA
86E0: 20 71 87 JSR $8771 ; ($37) += A, backlink pointer
86E3: A6 18 LDX $18 ; string descriptor stack
86E5: E0 24 CPX #$24 ; full?
86E7: D0 05 BNE $86EE
86E9: A2 19 LDX #$19 ; "?FORMULA TOO COMPLEX"
86EB: 4C 3C 4D JMP $4D3C ; Error
86EE: A5 63 LDA $63 ; string length from descriptor
86F0: 95 00 STA $00,X ; push descriptor on string descriptor stack
86F2: A5 64 LDA $64
86F4: 95 01 STA $01,X ; addr low
86F6: A5 65 LDA $65
86F8: 95 02 STA $02,X ; addr high
86FA: A0 00 LDY #$00
86FC: 86 66 STX $66 ; ($66) = descriptor pointer
86FE: 84 67 STY $67
8700: 84 71 STY $71
8702: 88 DEY
8703: 84 0F STY $0F ; set expression type to string
8705: 86 19 STX $19 ; string desc. stack top element
8707: E8 INX
8708: E8 INX
8709: E8 INX
870A: 86 18 STX $18 ; string desc. stack pointer (next free)
870C: 60 RTS
; String concatenation (string addition)
870D: A5 67 LDA $67 ; save first operand
870F: 48 PHA
8710: A5 66 LDA $66
8712: 48 PHA
8713: 20 D7 78 JSR $78D7 ; Evaluate Item (2nd operand)
8716: 20 DD 77 JSR $77DD ; Confirm String
8719: 68 PLA
871A: 85 70 STA $70 ; descriptor pointer to second operand
871C: 68 PLA
871D: 85 71 STA $71
871F: A0 00 LDY #$00 ; index to length byte in descriptor
8721: 20 F6 42 JSR $42F6 ; Get From ($70) Bank1
8724: 85 79 STA $79
8726: 20 E7 42 JSR $42E7 ; Get From ($66) Bank1
8729: 18 CLC
872A: 65 79 ADC $79 ; add lengths of both strings
872C: 90 03 BCC $8731 ; more than 255?
872E: 4C ED A5 JMP $A5ED ; Error 'string too long'
8731: 20 88 86 JSR $8688 ; Aquire space on heap ($37)
8734: 20 4E 87 JSR $874E ; Fetch descriptor from $70 (first operand) and copy string ($24) to heap ($37)
8737: A5 52 LDA $52 ; descriptor pointer of the second operand
8739: A4 53 LDY $53
873B: 20 85 87 JSR $8785 ; Free string of 2nd operand
873E: 20 63 87 JSR $8763 ; Copy string ($24) to heap ($37)
8741: A5 70 LDA $70 ; descriptor pointer of the first operand
8743: A4 71 LDY $71
8745: 20 85 87 JSR $8785 ; Free string of first operand
8748: 20 E3 86 JSR $86E3 ; Result on string descriptor stack
874B: 4C 09 78 JMP $7809 ; Continue evaluation
; Build String to Memory (fetch descriptor from $70/$71 and copy to heap $37/$38)
874E: A0 00 LDY #$00
8750: 20 F6 42 JSR $42F6 ; Get From ($70) Bank1
8753: 48 PHA
8754: C8 INY
8755: 20 F6 42 JSR $42F6 ; Get From ($70) Bank1
8758: AA TAX
8759: C8 INY
875A: 20 F6 42 JSR $42F6 ; Get From ($70) Bank1
875D: A8 TAY
875E: 68 PLA
875F: 86 24 STX $24 ; string address
8761: 84 25 STY $25
8763: A8 TAY ; length as index
8764: F0 0B BEQ $8771
8766: 48 PHA
8767: 88 DEY ; pre-decrement
8768: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
876B: 91 37 STA ($37),Y ; copy to heap
876D: 98 TYA
876E: D0 F7 BNE $8767
8770: 68 PLA
8771: 18 CLC
8772: 65 37 ADC $37 ; correct temp. pointer
8774: 85 37 STA $37 ; pointing to the next free byte or the backlink pointer (finally)
8776: 90 02 BCC $877A
8778: E6 38 INC $38
877A: 60 RTS
; Evaluate String
877B: 20 EF 77 JSR $77EF ; Evaluate Expression
877E: 20 DD 77 JSR $77DD ; Confirm String
8781: A5 66 LDA $66
8783: A4 67 LDY $67
; Free descriptor and/or heap space if on top
8785: 85 24 STA $24
8787: 84 25 STY $25
8789: 20 E0 87 JSR $87E0 ; Clean Descriptor Stack
878C: D0 3C BNE $87CA ; Not on SDS -> addr ($24), length in A
878E: 20 F6 54 JSR $54F6 ; Check String Location, Y=2 on exit
8791: 90 37 BCC $87CA ; Not on heap
; *** return string
8793: 88 DEY ; Mark string unused (Y=1)
8794: A9 FF LDA #$FF ; Gap mark value
8796: 8D 04 FF STA $FF04 ; Bank 1
8799: 91 24 STA ($24),Y ; Backlink high: free mark $FF
879B: 88 DEY ; Y=0
879C: 8A TXA ; String length
879D: 91 24 STA ($24),Y ; Backlink low: length
879F: 48 PHA ; Save length
87A0: 49 FF EOR #$FF ; negate (subtract!)
87A2: 38 SEC ; length
87A3: 65 24 ADC $24
87A5: A4 25 LDY $25
87A7: B0 01 BCS $87AA
87A9: 88 DEY
87AA: 85 24 STA $24 ; ($24/$25) -= length
87AC: 84 25 STY $25
87AE: AA TAX ; Address in X/Y
87AF: 68 PLA ; Restore length in A
87B0: C4 36 CPY $36 ; Top of heap high
87B2: D0 3C BNE $87F0 ; Exit
87B4: E4 35 CPX $35 ; Top of heap low
87B6: D0 38 BNE $87F0 ; Exit
; Remove from top of heap ...
87B8: 48 PHA ; Save length
87B9: 38 SEC ; ($35)+= (1 + length)
87BA: 65 35 ADC $35
87BC: 85 35 STA $35
87BE: 90 02 BCC $87C2
87C0: E6 36 INC $36
87C2: E6 35 INC $35 ; ($35) += 1
87C4: D0 02 BNE $87C8
87C6: E6 36 INC $36 ; Finally string data an backlink disposed
87C8: 68 PLA ; Restore length in A
87C9: 60 RTS ; returns X/Y adress of disposed string and length in A
; Fetch string descriptor (address and length) -> X/Y, $24/$25, length in A
87CA: A0 00 LDY #$00 ; Get string address ($24) and length A
87CC: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
87CF: 48 PHA ; Descriptor: length
87D0: C8 INY
87D1: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
87D4: AA TAX ; Descriptor: string address low
87D5: C8 INY
87D6: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
87D9: A8 TAY ; Descriptor: string address high
87DA: 86 24 STX $24 ; $24/$25 = string address
87DC: 84 25 STY $25
87DE: 68 PLA ; Length
87DF: 60 RTS ; returns X/Y string address, A length
; Clean Descriptor Stack
87E0: C4 1A CPY $1A ; Remove descriptor from SDS if A/Y is on top
87E2: D0 0C BNE $87F0 ; No
87E4: C5 19 CMP $19 ; Low byte in A
87E6: D0 08 BNE $87F0 ; No
87E8: 85 18 STA $18 ; New next free SDS position
87EA: E9 03 SBC #$03 ; Descriptor size, C-flag is alway set (from CMP above)
87EC: 85 19 STA $19 ; Adjust last descriptor pointer
87EE: A0 00 LDY #$00 ; High byte (always 0)
87F0: 60 RTS ; returns A/Y, Z-flag 1 means cleaned up, 0 otherwise
; Input Byte Parameter
87F1: 20 80 03 JSR $0380 ; CHRGET
; -Eval Byte Parameter
87F4: 20 D7 77 JSR $77D7 ; Type Match Check
87F7: 20 AD 84 JSR $84AD ; Float-Fixed Signed
87FA: A6 66 LDX $66
87FC: D0 2D BNE $882B
87FE: A6 67 LDX $67
8800: 4C 86 03 JMP $0386 ; CHRGOT entry
; Params For Poke/Wait
8803: 20 D7 77 JSR $77D7 ; Type Match Check
8806: 20 15 88 JSR $8815 ; Float/Fixed
8809: 20 5C 79 JSR $795C ; -Check Comma
880C: 4C F4 87 JMP $87F4 ; -Eval Byte Parameter
; Input Next Float/Fixed Value
880F: 20 5C 79 JSR $795C ; -Check Comma
; -Input Float/Fixed Value
8812: 20 D7 77 JSR $77D7 ; Type Match Check
; Float/Fixed
8815: A5 68 LDA $68 ; Sign
8817: 30 12 BMI $882B ; negative?
8819: A5 63 LDA $63 ; Exponent
881B: C9 91 CMP #$91 ; 16 Bit -> 0 - 65535
881D: B0 0C BCS $882B
881F: 20 C7 8C JSR $8CC7 ; Float-Fixed
8822: A5 66 LDA $66
8824: A4 67 LDY $67
8826: 84 16 STY $16
8828: 85 17 STA $17
882A: 60 RTS
882B: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Subtract From Memory
882E: 20 B4 8A JSR $8AB4 ; Unpack RAM1 to FAC#2
; Evaluate <subtract>
8831: A5 68 LDA $68
8833: 49 FF EOR #$FF
8835: 85 68 STA $68
8837: 45 6F EOR $6F
8839: 85 70 STA $70
883B: A5 63 LDA $63
883D: 4C 48 88 JMP $8848 ; Evaluate <add>
8840: 20 79 89 JSR $8979
8843: 90 3D BCC $8882
; Add Memory
8845: 20 B4 8A JSR $8AB4 ; Unpack RAM1 to FAC#2
; Evaluate <add>
8848: D0 03 BNE $884D
884A: 4C 28 8C JMP $8C28 ; FAC#2 to FAC#1
884D: A6 71 LDX $71
884F: 86 58 STX $58
8851: A2 6A LDX #$6A
8853: A5 6A LDA $6A
8855: A8 TAY
8856: D0 01 BNE $8859
8858: 60 RTS
8859: 38 SEC
885A: E5 63 SBC $63
885C: F0 24 BEQ $8882
885E: 90 12 BCC $8872
8860: 84 63 STY $63
8862: A4 6F LDY $6F
8864: 84 68 STY $68
8866: 49 FF EOR #$FF
8868: 69 00 ADC #$00
886A: A0 00 LDY #$00
886C: 84 58 STY $58
886E: A2 63 LDX #$63
8870: D0 04 BNE $8876
8872: A0 00 LDY #$00
8874: 84 71 STY $71
8876: C9 F9 CMP #$F9
8878: 30 C6 BMI $8840
887A: A8 TAY
887B: A5 71 LDA $71
887D: 56 01 LSR $01,X
887F: 20 90 89 JSR $8990
8882: 24 70 BIT $70
8884: 10 57 BPL $88DD
8886: A0 63 LDY #$63
8888: E0 6A CPX #$6A
888A: F0 02 BEQ $888E
888C: A0 6A LDY #$6A
888E: 38 SEC
888F: 49 FF EOR #$FF
8891: 65 58 ADC $58
8893: 85 71 STA $71
8895: B9 04 00 LDA $04,Y ; SYS address high, MLM register PC
8898: F5 04 SBC $04,X ; SYS address high, MLM register PC
889A: 85 67 STA $67
889C: B9 03 00 LDA $03,Y ; SYS address low, MLM register PC
889F: F5 03 SBC $03,X ; SYS address low, MLM register PC
88A1: 85 66 STA $66
88A3: B9 02 00 LDA $02,Y ; Bank Number, Jump to SYS Address
88A6: F5 02 SBC $02,X ; Bank Number, Jump to SYS Address
88A8: 85 65 STA $65
88AA: B9 01 00 LDA $01,Y
88AD: F5 01 SBC $01,X
88AF: 85 64 STA $64
88B1: B0 03 BCS $88B6
88B3: 20 26 89 JSR $8926 ; Negate FAC#1
88B6: A0 00 LDY #$00
88B8: 98 TYA
88B9: 18 CLC
88BA: A6 64 LDX $64
88BC: D0 4A BNE $8908
88BE: A6 65 LDX $65
88C0: 86 64 STX $64
88C2: A6 66 LDX $66
88C4: 86 65 STX $65
88C6: A6 67 LDX $67
88C8: 86 66 STX $66
88CA: A6 71 LDX $71
88CC: 86 67 STX $67
88CE: 84 71 STY $71
88D0: 69 08 ADC #$08
88D2: C9 20 CMP #$20
88D4: D0 E4 BNE $88BA
; Zero Both Accuymulators
88D6: A9 00 LDA #$00
88D8: 85 63 STA $63
88DA: 85 68 STA $68
88DC: 60 RTS
88DD: 65 58 ADC $58
88DF: 85 71 STA $71
88E1: A5 67 LDA $67
88E3: 65 6E ADC $6E
88E5: 85 67 STA $67
88E7: A5 66 LDA $66
88E9: 65 6D ADC $6D
88EB: 85 66 STA $66
88ED: A5 65 LDA $65
88EF: 65 6C ADC $6C
88F1: 85 65 STA $65
88F3: A5 64 LDA $64
88F5: 65 6B ADC $6B
88F7: 85 64 STA $64
88F9: 4C 15 89 JMP $8915
88FC: 69 01 ADC #$01
88FE: 06 71 ASL $71
8900: 26 67 ROL $67
8902: 26 66 ROL $66
8904: 26 65 ROL $65
8906: 26 64 ROL $64
8908: 10 F2 BPL $88FC
890A: 38 SEC
890B: E5 63 SBC $63
890D: B0 C7 BCS $88D6 ; Zero Both Accuymulators
890F: 49 FF EOR #$FF
8911: 69 01 ADC #$01
8913: 85 63 STA $63
8915: 90 0E BCC $8925
; Trim FAC#1 Left
8917: E6 63 INC $63
8919: F0 42 BEQ $895D ; Print 'overflow'
891B: 66 64 ROR $64
891D: 66 65 ROR $65
891F: 66 66 ROR $66
8921: 66 67 ROR $67
8923: 66 71 ROR $71
8925: 60 RTS
; Negate FAC#1
8926: A5 68 LDA $68
8928: 49 FF EOR #$FF
892A: 85 68 STA $68
892C: A5 64 LDA $64
892E: 49 FF EOR #$FF
8930: 85 64 STA $64
8932: A5 65 LDA $65
8934: 49 FF EOR #$FF
8936: 85 65 STA $65
8938: A5 66 LDA $66
893A: 49 FF EOR #$FF
893C: 85 66 STA $66
893E: A5 67 LDA $67
8940: 49 FF EOR #$FF
8942: 85 67 STA $67
8944: A5 71 LDA $71
8946: 49 FF EOR #$FF
8948: 85 71 STA $71
894A: E6 71 INC $71
894C: D0 0E BNE $895C
; Round Up FAC#1
894E: E6 67 INC $67
8950: D0 0A BNE $895C
8952: E6 66 INC $66
8954: D0 06 BNE $895C
8956: E6 65 INC $65
8958: D0 02 BNE $895C
895A: E6 64 INC $64
895C: 60 RTS
; Print 'overflow'
895D: A2 0F LDX #$0F
895F: 4C 3C 4D JMP $4D3C ; Error
; ?
8962: A2 27 LDX #$27
8964: B4 04 LDY $04,X ; SYS address high, MLM register PC
8966: 84 71 STY $71
8968: B4 03 LDY $03,X ; SYS address low, MLM register PC
896A: 94 04 STY $04,X ; SYS address high, MLM register PC
896C: B4 02 LDY $02,X ; Bank Number, Jump to SYS Address
896E: 94 03 STY $03,X ; SYS address low, MLM register PC
8970: B4 01 LDY $01,X
8972: 94 02 STY $02,X ; Bank Number, Jump to SYS Address
8974: AC DF 03 LDY $03DF ; FAC#1 Overflow
8977: 94 01 STY $01,X
8979: 69 08 ADC #$08
897B: 30 E7 BMI $8964
897D: F0 E5 BEQ $8964
897F: E9 08 SBC #$08
8981: A8 TAY
8982: A5 71 LDA $71
8984: B0 14 BCS $899A
8986: 16 01 ASL $01,X
8988: 90 02 BCC $898C
898A: F6 01 INC $01,X
898C: 76 01 ROR $01,X
898E: 76 01 ROR $01,X
8990: 76 02 ROR $02,X ; Bank Number, Jump to SYS Address
8992: 76 03 ROR $03,X ; SYS address low, MLM register PC
8994: 76 04 ROR $04,X ; SYS address high, MLM register PC
8996: 6A ROR A
8997: C8 INY
8998: D0 EC BNE $8986
899A: 18 CLC
899B: 60 RTS
; 1.00
899C: 81 00 00 00 00 ; '{ORANGE}{0}{0}{0}{0}'
; #03 (counter)
89A1: 03 ; '{STOP}'
; 0.434255942
89A2: 7F 5E 56 CB 79 ; '.^vKY'
; 0.57658454
89A7: 80 13 9B 0B 64 ; '.{HOME}{GRAY3}{LOCK}d'
; 0.961800759
89AC: 80 76 38 93 16 ; '.V8{CLR}.'
; 2.885390073
89B1: 82 38 AA 3B 20 ; '{ULOFF}8.; '
; 0.707106781 SQR(0.5)
89B6: 80 35 04 F3 34 ; '.5..4'
; 1.41421356 SRQ(2)
89BB: 81 35 04 F3 34 ; '{ORANGE}5..4'
; -0.5
89C0: 80 80 00 00 00 ; '..{0}{0}{0}'
; 0.693147181 LOG(2)
89C5: 80 31 72 17 F8 ; '.1R..'
; Evaluate <log>
89CA: 20 57 8C JSR $8C57 ; Get Sign
89CD: F0 02 BEQ $89D1
89CF: 10 03 BPL $89D4
89D1: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
89D4: A5 63 LDA $63
89D6: E9 7F SBC #$7F
89D8: 48 PHA
89D9: A9 80 LDA #$80
89DB: 85 63 STA $63
89DD: A9 B6 LDA #$B6
89DF: A0 89 LDY #$89
89E1: 20 12 8A JSR $8A12 ; Add Memory At A/Y
89E4: A9 BB LDA #$BB
89E6: A0 89 LDY #$89
89E8: 20 1E 8A JSR $8A1E ; Divide By Memory
89EB: A9 9C LDA #$9C
89ED: A0 89 LDY #$89
89EF: 20 18 8A JSR $8A18 ; Subtract Memory At A/Y
89F2: A9 A1 LDA #$A1
89F4: A0 89 LDY #$89
89F6: 20 86 90 JSR $9086
89F9: A9 C0 LDA #$C0
89FB: A0 89 LDY #$89
89FD: 20 12 8A JSR $8A12 ; Add Memory At A/Y
8A00: 68 PLA
8A01: 20 B0 8D JSR $8DB0 ; Get Ascii Digit
8A04: A9 C5 LDA #$C5
8A06: A0 89 LDY #$89
8A08: 20 89 8A JSR $8A89 ; Unpack ROM to FAC#2
8A0B: 4C 27 8A JMP $8A27 ; Evaluate <multiply>
; Add 0.5
8A0E: A9 76 LDA #$76
8A10: A0 8F LDY #$8F
; Add Memory At A/Y
8A12: 20 89 8A JSR $8A89 ; Unpack ROM to FAC#2
8A15: 4C 48 88 JMP $8848 ; Evaluate <add>
; Subtract Memory At A/Y
8A18: 20 89 8A JSR $8A89 ; Unpack ROM to FAC#2
8A1B: 4C 31 88 JMP $8831 ; Evaluate <subtract>
; Divide By Memory
8A1E: 20 89 8A JSR $8A89 ; Unpack ROM to FAC#2
8A21: 4C 4C 8B JMP $8B4C ; Evaluate <divide>
; Multiply By Memory
8A24: 20 B4 8A JSR $8AB4 ; Unpack RAM1 to FAC#2
; Evaluate <multiply>
8A27: D0 03 BNE $8A2C
8A29: 4C 88 8A JMP $8A88
8A2C: 20 EC 8A JSR $8AEC ; Test Both Accumulators
8A2F: A9 00 LDA #$00
8A31: 85 28 STA $28
8A33: 85 29 STA $29
8A35: 85 2A STA $2A
8A37: 85 2B STA $2B
8A39: A5 71 LDA $71
8A3B: 20 5B 8A JSR $8A5B
8A3E: A5 67 LDA $67
8A40: 20 55 8A JSR $8A55
8A43: A5 66 LDA $66
8A45: 20 55 8A JSR $8A55
8A48: A5 65 LDA $65
8A4A: 20 5B 8A JSR $8A5B
8A4D: A5 64 LDA $64
8A4F: 20 5B 8A JSR $8A5B
8A52: 4C C1 8B JMP $8BC1
8A55: D0 04 BNE $8A5B
8A57: EA NOP
8A58: 4C 62 89 JMP $8962 ; ?
8A5B: 4A LSR A
8A5C: 09 80 ORA #$80
8A5E: A8 TAY
8A5F: 90 19 BCC $8A7A
8A61: 18 CLC
8A62: A5 2B LDA $2B
8A64: 65 6E ADC $6E
8A66: 85 2B STA $2B
8A68: A5 2A LDA $2A
8A6A: 65 6D ADC $6D
8A6C: 85 2A STA $2A
8A6E: A5 29 LDA $29
8A70: 65 6C ADC $6C
8A72: 85 29 STA $29
8A74: A5 28 LDA $28
8A76: 65 6B ADC $6B
8A78: 85 28 STA $28
8A7A: 66 28 ROR $28
8A7C: 66 29 ROR $29
8A7E: 66 2A ROR $2A
8A80: 66 2B ROR $2B
8A82: 66 71 ROR $71
8A84: 98 TYA
8A85: 4A LSR A
8A86: D0 D6 BNE $8A5E
8A88: 60 RTS
; Unpack ROM to FAC#2
8A89: 85 24 STA $24
8A8B: 84 25 STY $25
8A8D: A0 04 LDY #$04
8A8F: B1 24 LDA ($24),Y
8A91: 85 6E STA $6E
8A93: 88 DEY
8A94: B1 24 LDA ($24),Y
8A96: 85 6D STA $6D
8A98: 88 DEY
8A99: B1 24 LDA ($24),Y
8A9B: 85 6C STA $6C
8A9D: 88 DEY
8A9E: B1 24 LDA ($24),Y
8AA0: 85 6F STA $6F
8AA2: 45 68 EOR $68
8AA4: 85 70 STA $70
8AA6: A5 6F LDA $6F
8AA8: 09 80 ORA #$80
8AAA: 85 6B STA $6B
8AAC: 88 DEY
8AAD: B1 24 LDA ($24),Y
8AAF: 85 6A STA $6A
8AB1: A5 63 LDA $63
8AB3: 60 RTS
; Unpack RAM1 to FAC#2
8AB4: 85 24 STA $24
8AB6: 84 25 STY $25
8AB8: AD 00 FF LDA $FF00 ; MMU Configuration Register
8ABB: 48 PHA
8ABC: A0 04 LDY #$04
8ABE: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
8AC1: 85 6E STA $6E
8AC3: 88 DEY
8AC4: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
8AC7: 85 6D STA $6D
8AC9: 88 DEY
8ACA: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
8ACD: 85 6C STA $6C
8ACF: 88 DEY
8AD0: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
8AD3: 85 6F STA $6F
8AD5: 45 68 EOR $68
8AD7: 85 70 STA $70
8AD9: A5 6F LDA $6F
8ADB: 09 80 ORA #$80
8ADD: 85 6B STA $6B
8ADF: 88 DEY
8AE0: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
8AE3: 85 6A STA $6A
8AE5: 68 PLA
8AE6: 8D 00 FF STA $FF00 ; MMU Configuration Register
8AE9: A5 63 LDA $63
8AEB: 60 RTS
; Test Both Accumulators
8AEC: A5 6A LDA $6A
8AEE: F0 1F BEQ $8B0F
8AF0: 18 CLC
8AF1: 65 63 ADC $63
8AF3: 90 04 BCC $8AF9
8AF5: 30 1D BMI $8B14
8AF7: 18 CLC
8AF8: 2C .BYTE $2C
8AF9: 10 14 BPL $8B0F
8AFB: 69 80 ADC #$80
8AFD: 85 63 STA $63
8AFF: D0 03 BNE $8B04
8B01: 4C DA 88 JMP $88DA
8B04: A5 70 LDA $70
8B06: 85 68 STA $68
8B08: 60 RTS
; Overflow/Underflow
8B09: A5 68 LDA $68
8B0B: 49 FF EOR #$FF
8B0D: 30 05 BMI $8B14
8B0F: 68 PLA
8B10: 68 PLA
8B11: 4C D6 88 JMP $88D6 ; Zero Both Accuymulators
8B14: 4C 5D 89 JMP $895D ; Print 'overflow'
; Multiply By 10
8B17: 20 38 8C JSR $8C38 ; FAC#1 to FAC#2
8B1A: AA TAX
8B1B: F0 10 BEQ $8B2D
8B1D: 18 CLC
8B1E: 69 02 ADC #$02
8B20: B0 F2 BCS $8B14
8B22: A2 00 LDX #$00
8B24: 86 70 STX $70
8B26: 20 55 88 JSR $8855
8B29: E6 63 INC $63
8B2B: F0 E7 BEQ $8B14
8B2D: 60 RTS
; +10
8B2E: 84 20 00 00 00 ; '. {0}{0}{0}'
; Print 'division by zero'
8B33: A2 14 LDX #$14
8B35: 4C 3C 4D JMP $4D3C ; Error
; Divide By 10
8B38: 20 38 8C JSR $8C38 ; FAC#1 to FAC#2
8B3B: A9 2E LDA #$2E
8B3D: A0 8B LDY #$8B
8B3F: A2 00 LDX #$00
8B41: 86 70 STX $70
8B43: 20 D4 8B JSR $8BD4 ; Unpack ROM to FAC#1
8B46: 4C 4C 8B JMP $8B4C ; Evaluate <divide>
; Divide Into Memory
8B49: 20 B4 8A JSR $8AB4 ; Unpack RAM1 to FAC#2
; Evaluate <divide>
8B4C: F0 E5 BEQ $8B33 ; Print 'division by zero'
8B4E: 20 47 8C JSR $8C47 ; Round FAC#1
8B51: A9 00 LDA #$00
8B53: 38 SEC
8B54: E5 63 SBC $63
8B56: 85 63 STA $63
8B58: 20 EC 8A JSR $8AEC ; Test Both Accumulators
8B5B: E6 63 INC $63
8B5D: F0 B5 BEQ $8B14
8B5F: A2 FC LDX #$FC
8B61: A9 01 LDA #$01
8B63: A4 6B LDY $6B
8B65: C4 64 CPY $64
8B67: D0 10 BNE $8B79
8B69: A4 6C LDY $6C
8B6B: C4 65 CPY $65
8B6D: D0 0A BNE $8B79
8B6F: A4 6D LDY $6D
8B71: C4 66 CPY $66
8B73: D0 04 BNE $8B79
8B75: A4 6E LDY $6E
8B77: C4 67 CPY $67
8B79: 08 PHP
8B7A: 2A ROL A
8B7B: 90 09 BCC $8B86
8B7D: E8 INX
8B7E: 95 2B STA $2B,X
8B80: F0 32 BEQ $8BB4
8B82: 10 34 BPL $8BB8
8B84: A9 01 LDA #$01
8B86: 28 PLP
8B87: B0 0E BCS $8B97
8B89: 06 6E ASL $6E
8B8B: 26 6D ROL $6D
8B8D: 26 6C ROL $6C
8B8F: 26 6B ROL $6B
8B91: B0 E6 BCS $8B79
8B93: 30 CE BMI $8B63
8B95: 10 E2 BPL $8B79
8B97: A8 TAY
8B98: A5 6E LDA $6E
8B9A: E5 67 SBC $67
8B9C: 85 6E STA $6E
8B9E: A5 6D LDA $6D
8BA0: E5 66 SBC $66
8BA2: 85 6D STA $6D
8BA4: A5 6C LDA $6C
8BA6: E5 65 SBC $65
8BA8: 85 6C STA $6C
8BAA: A5 6B LDA $6B
8BAC: E5 64 SBC $64
8BAE: 85 6B STA $6B
8BB0: 98 TYA
8BB1: 4C 89 8B JMP $8B89
8BB4: A9 40 LDA #$40
8BB6: D0 CE BNE $8B86
8BB8: 0A ASL A
8BB9: 0A ASL A
8BBA: 0A ASL A
8BBB: 0A ASL A
8BBC: 0A ASL A
8BBD: 0A ASL A
8BBE: 85 71 STA $71
8BC0: 28 PLP
8BC1: A5 28 LDA $28
8BC3: 85 64 STA $64
8BC5: A5 29 LDA $29
8BC7: 85 65 STA $65
8BC9: A5 2A LDA $2A
8BCB: 85 66 STA $66
8BCD: A5 2B LDA $2B
8BCF: 85 67 STA $67
8BD1: 4C B6 88 JMP $88B6
; Unpack ROM to FAC#1
8BD4: 85 24 STA $24
8BD6: 84 25 STY $25
8BD8: A0 04 LDY #$04
8BDA: B1 24 LDA ($24),Y
8BDC: 85 67 STA $67
8BDE: 88 DEY
8BDF: B1 24 LDA ($24),Y
8BE1: 85 66 STA $66
8BE3: 88 DEY
8BE4: B1 24 LDA ($24),Y
8BE6: 85 65 STA $65
8BE8: 88 DEY
8BE9: B1 24 LDA ($24),Y
8BEB: 85 68 STA $68
8BED: 09 80 ORA #$80
8BEF: 85 64 STA $64
8BF1: 88 DEY
8BF2: B1 24 LDA ($24),Y
8BF4: 85 63 STA $63
8BF6: 84 71 STY $71
8BF8: 60 RTS
; Pack FAC#1 to $5e
8BF9: A2 5E LDX #$5E
8BFB: 2C .BYTE $2C
; Pack FAC#1 to $59
8BFC: A2 59 LDX #$59
8BFE: A0 00 LDY #$00
; Pack FAC#1 to RAM1
8C00: 20 47 8C JSR $8C47 ; Round FAC#1
8C03: 86 24 STX $24
8C05: 84 25 STY $25
8C07: A0 04 LDY #$04
8C09: A5 67 LDA $67
8C0B: 91 24 STA ($24),Y
8C0D: 88 DEY
8C0E: A5 66 LDA $66
8C10: 91 24 STA ($24),Y
8C12: 88 DEY
8C13: A5 65 LDA $65
8C15: 91 24 STA ($24),Y
8C17: 88 DEY
8C18: A5 68 LDA $68
8C1A: 09 7F ORA #$7F
8C1C: 25 64 AND $64
8C1E: 91 24 STA ($24),Y
8C20: 88 DEY
8C21: A5 63 LDA $63
8C23: 91 24 STA ($24),Y
8C25: 84 71 STY $71
8C27: 60 RTS
; FAC#2 to FAC#1
8C28: A5 6F LDA $6F
8C2A: 85 68 STA $68
8C2C: A2 05 LDX #$05
8C2E: B5 69 LDA $69,X
8C30: 95 62 STA $62,X
8C32: CA DEX
8C33: D0 F9 BNE $8C2E
8C35: 86 71 STX $71
8C37: 60 RTS
; FAC#1 to FAC#2
8C38: 20 47 8C JSR $8C47 ; Round FAC#1
8C3B: A2 06 LDX #$06
8C3D: B5 62 LDA $62,X
8C3F: 95 69 STA $69,X
8C41: CA DEX
8C42: D0 F9 BNE $8C3D
8C44: 86 71 STX $71
8C46: 60 RTS
; Round FAC#1
8C47: A5 63 LDA $63
8C49: F0 FB BEQ $8C46
8C4B: 06 71 ASL $71
8C4D: 90 F7 BCC $8C46
8C4F: 20 4E 89 JSR $894E ; Round Up FAC#1
8C52: D0 F2 BNE $8C46
8C54: 4C 17 89 JMP $8917 ; Trim FAC#1 Left
; Get Sign
8C57: A5 63 LDA $63
8C59: F0 09 BEQ $8C64
8C5B: A5 68 LDA $68
8C5D: 2A ROL A
8C5E: A9 FF LDA #$FF
8C60: B0 02 BCS $8C64
8C62: A9 01 LDA #$01
8C64: 60 RTS
; Evaluate <sgn>
8C65: 20 57 8C JSR $8C57 ; Get Sign
; Byte Fixed-Float
8C68: 85 64 STA $64
8C6A: A9 00 LDA #$00
8C6C: 85 65 STA $65
8C6E: A2 88 LDX #$88
8C70: A5 64 LDA $64
8C72: 49 FF EOR #$FF
8C74: 2A ROL A
; Fixed-Float
8C75: A9 00 LDA #$00
8C77: 85 67 STA $67
8C79: 85 66 STA $66
8C7B: 86 63 STX $63
8C7D: 85 71 STA $71
8C7F: 85 68 STA $68
8C81: 4C B1 88 JMP $88B1
; Evaluate <abs>
8C84: 46 68 LSR $68
8C86: 60 RTS
; Compare FAC#1 to Memory
8C87: 85 26 STA $26
8C89: 84 27 STY $27
8C8B: A0 00 LDY #$00
8C8D: B1 26 LDA ($26),Y
8C8F: C8 INY
8C90: AA TAX
8C91: F0 C4 BEQ $8C57 ; Get Sign
8C93: B1 26 LDA ($26),Y
8C95: 45 68 EOR $68
8C97: 30 C2 BMI $8C5B
8C99: E4 63 CPX $63
8C9B: D0 21 BNE $8CBE
8C9D: B1 26 LDA ($26),Y
8C9F: 09 80 ORA #$80
8CA1: C5 64 CMP $64
8CA3: D0 19 BNE $8CBE
8CA5: C8 INY
8CA6: B1 26 LDA ($26),Y
8CA8: C5 65 CMP $65
8CAA: D0 12 BNE $8CBE
8CAC: C8 INY
8CAD: B1 26 LDA ($26),Y
8CAF: C5 66 CMP $66
8CB1: D0 0B BNE $8CBE
8CB3: C8 INY
8CB4: A9 7F LDA #$7F
8CB6: C5 71 CMP $71
8CB8: B1 26 LDA ($26),Y
8CBA: E5 67 SBC $67
8CBC: F0 2A BEQ $8CE8
8CBE: A5 68 LDA $68
8CC0: 90 02 BCC $8CC4
8CC2: 49 FF EOR #$FF
8CC4: 4C 5D 8C JMP $8C5D
; Float-Fixed
8CC7: A5 63 LDA $63
8CC9: F0 4D BEQ $8D18
8CCB: 38 SEC
8CCC: E9 A0 SBC #$A0
8CCE: 24 68 BIT $68
8CD0: 10 0A BPL $8CDC
8CD2: AA TAX
8CD3: A9 FF LDA #$FF
8CD5: 8D DF 03 STA $03DF ; FAC#1 Overflow
8CD8: 20 2C 89 JSR $892C
8CDB: 8A TXA
8CDC: A2 63 LDX #$63
8CDE: C9 F9 CMP #$F9
8CE0: 10 07 BPL $8CE9
8CE2: 20 79 89 JSR $8979
8CE5: 8C DF 03 STY $03DF ; FAC#1 Overflow
8CE8: 60 RTS
8CE9: A8 TAY
8CEA: A5 68 LDA $68
8CEC: 29 80 AND #$80
8CEE: 46 64 LSR $64
8CF0: 05 64 ORA $64
8CF2: 85 64 STA $64
8CF4: 20 90 89 JSR $8990
8CF7: 8C DF 03 STY $03DF ; FAC#1 Overflow
8CFA: 60 RTS
; Evaluate <int>
8CFB: A5 63 LDA $63
8CFD: C9 A0 CMP #$A0
8CFF: B0 20 BCS $8D21
8D01: 20 68 AA JSR $AA68
8D04: 84 71 STY $71
8D06: A5 68 LDA $68
8D08: 84 68 STY $68
8D0A: 49 80 EOR #$80
8D0C: 2A ROL A
8D0D: A9 A0 LDA #$A0
8D0F: 85 63 STA $63
8D11: A5 67 LDA $67
8D13: 85 09 STA $09 ; SYS and MLM register save (SP)
8D15: 4C B1 88 JMP $88B1
8D18: 85 64 STA $64
8D1A: 85 65 STA $65
8D1C: 85 66 STA $66
8D1E: 85 67 STA $67
8D20: A8 TAY
8D21: 60 RTS
; String to FAC#1
8D22: 8E DA 03 STX $03DA
8D25: A0 00 LDY #$00
8D27: A2 0A LDX #$0A
8D29: 94 5F STY $5F,X
8D2B: CA DEX
8D2C: 10 FB BPL $8D29
8D2E: 90 0F BCC $8D3F
8D30: C9 2D CMP #$2D
8D32: D0 04 BNE $8D38
8D34: 86 69 STX $69
8D36: F0 04 BEQ $8D3C
8D38: C9 2B CMP #$2B
8D3A: D0 05 BNE $8D41
8D3C: 20 F5 8D JSR $8DF5
8D3F: 90 5B BCC $8D9C
8D41: C9 2E CMP #$2E
8D43: F0 2E BEQ $8D73
8D45: C9 45 CMP #$45
8D47: D0 30 BNE $8D79
8D49: 20 F5 8D JSR $8DF5
8D4C: 90 17 BCC $8D65
8D4E: C9 AB CMP #$AB
8D50: F0 0E BEQ $8D60
8D52: C9 2D CMP #$2D
8D54: F0 0A BEQ $8D60
8D56: C9 AA CMP #$AA
8D58: F0 08 BEQ $8D62
8D5A: C9 2B CMP #$2B
8D5C: F0 04 BEQ $8D62
8D5E: D0 07 BNE $8D67
8D60: 66 62 ROR $62
8D62: 20 F5 8D JSR $8DF5
8D65: 90 5C BCC $8DC3
8D67: 24 62 BIT $62
8D69: 10 0E BPL $8D79
8D6B: A9 00 LDA #$00
8D6D: 38 SEC
8D6E: E5 60 SBC $60
8D70: 4C 7B 8D JMP $8D7B
8D73: 66 61 ROR $61
8D75: 24 61 BIT $61
8D77: 50 C3 BVC $8D3C
8D79: A5 60 LDA $60
8D7B: 38 SEC
8D7C: E5 5F SBC $5F
8D7E: 85 60 STA $60
8D80: F0 12 BEQ $8D94
8D82: 10 09 BPL $8D8D
8D84: 20 38 8B JSR $8B38 ; Divide By 10
8D87: E6 60 INC $60
8D89: D0 F9 BNE $8D84
8D8B: F0 07 BEQ $8D94
8D8D: 20 17 8B JSR $8B17 ; Multiply By 10
8D90: C6 60 DEC $60
8D92: D0 F9 BNE $8D8D
8D94: A5 69 LDA $69
8D96: 30 01 BMI $8D99
8D98: 60 RTS
8D99: 4C FA 8F JMP $8FFA ; Evaluate <negate>
8D9C: 48 PHA
8D9D: 24 61 BIT $61
8D9F: 10 02 BPL $8DA3
8DA1: E6 5F INC $5F
8DA3: 20 17 8B JSR $8B17 ; Multiply By 10
8DA6: 68 PLA
8DA7: 38 SEC
8DA8: E9 30 SBC #$30
8DAA: 20 B0 8D JSR $8DB0 ; Get Ascii Digit
8DAD: 4C 3C 8D JMP $8D3C
; Get Ascii Digit
8DB0: 48 PHA
8DB1: 20 38 8C JSR $8C38 ; FAC#1 to FAC#2
8DB4: 68 PLA
8DB5: 20 68 8C JSR $8C68 ; Byte Fixed-Float
8DB8: A5 6F LDA $6F
8DBA: 45 68 EOR $68
8DBC: 85 70 STA $70
8DBE: A6 63 LDX $63
8DC0: 4C 48 88 JMP $8848 ; Evaluate <add>
8DC3: A5 60 LDA $60
8DC5: C9 0A CMP #$0A
8DC7: 90 09 BCC $8DD2
8DC9: A9 64 LDA #$64
8DCB: 24 62 BIT $62
8DCD: 30 21 BMI $8DF0
8DCF: 4C 5D 89 JMP $895D ; Print 'overflow'
8DD2: 0A ASL A
8DD3: 0A ASL A
8DD4: 18 CLC
8DD5: 65 60 ADC $60
8DD7: 0A ASL A
8DD8: 18 CLC
8DD9: A0 00 LDY #$00
8DDB: 85 79 STA $79
8DDD: AD DA 03 LDA $03DA
8DE0: D0 06 BNE $8DE8
8DE2: 20 C9 03 JSR $03C9 ; Txtptr Fetch From RAM Bank 0
8DE5: 4C EB 8D JMP $8DEB
8DE8: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
8DEB: 65 79 ADC $79
8DED: 38 SEC
8DEE: E9 30 SBC #$30
8DF0: 85 60 STA $60
8DF2: 4C 62 8D JMP $8D62
8DF5: AD DA 03 LDA $03DA
8DF8: D0 03 BNE $8DFD
8DFA: 4C 80 03 JMP $0380 ; CHRGET
8DFD: E6 24 INC $24
8DFF: D0 02 BNE $8E03
8E01: E6 25 INC $25
8E03: A0 00 LDY #$00
8E05: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
8E08: C9 3A CMP #$3A
8E0A: B0 0A BCS $8E16
8E0C: C9 20 CMP #$20
8E0E: F0 ED BEQ $8DFD
8E10: 38 SEC
8E11: E9 30 SBC #$30
8E13: 38 SEC
8E14: E9 D0 SBC #$D0
8E16: 60 RTS
; 99999999.9
8E17: 9B 3E BC 1F FD ; '{GRAY3}>.{BLUE}.'
; 999999999
8E1C: 9E 6E 6B 27 FD ; '{YELLOW}nk'.'
; 1000000000
8E21: 9E 6E 6B 28 00 ; '{YELLOW}nk({0}'
; Print 'in...'
8E26: 20 81 92 JSR $9281 ; Print Following Text
8E29: 20 49 4E 20 00 ; ' in {0}'
8E2E: A5 3C LDA $3C
8E30: A6 3B LDX $3B
; Print Integer
8E32: 85 64 STA $64
8E34: 86 65 STX $65
8E36: A2 90 LDX #$90
8E38: 38 SEC
8E39: 20 75 8C JSR $8C75 ; Fixed-Float
8E3C: 20 44 8E JSR $8E44
8E3F: 4C E2 55 JMP $55E2
; Float to Ascii
8E42: A0 01 LDY #$01
8E44: A9 20 LDA #$20
8E46: 24 68 BIT $68
8E48: 10 02 BPL $8E4C
8E4A: A9 2D LDA #$2D
8E4C: 99 FF 00 STA $FF,Y
8E4F: 85 68 STA $68
8E51: 84 72 STY $72
8E53: C8 INY
8E54: A9 30 LDA #$30
8E56: A6 63 LDX $63
8E58: D0 03 BNE $8E5D
8E5A: 4C 69 8F JMP $8F69
8E5D: A9 00 LDA #$00
8E5F: E0 80 CPX #$80
8E61: F0 02 BEQ $8E65
8E63: B0 09 BCS $8E6E
8E65: A9 21 LDA #$21
8E67: A0 8E LDY #$8E
8E69: 20 08 8A JSR $8A08
8E6C: A9 F7 LDA #$F7
8E6E: 85 5F STA $5F
8E70: A9 1C LDA #$1C
8E72: A0 8E LDY #$8E
8E74: 20 87 8C JSR $8C87 ; Compare FAC#1 to Memory
8E77: F0 1E BEQ $8E97
8E79: 10 12 BPL $8E8D
8E7B: A9 17 LDA #$17
8E7D: A0 8E LDY #$8E
8E7F: 20 87 8C JSR $8C87 ; Compare FAC#1 to Memory
8E82: F0 02 BEQ $8E86
8E84: 10 0E BPL $8E94
8E86: 20 17 8B JSR $8B17 ; Multiply By 10
8E89: C6 5F DEC $5F
8E8B: D0 EE BNE $8E7B
8E8D: 20 38 8B JSR $8B38 ; Divide By 10
8E90: E6 5F INC $5F
8E92: D0 DC BNE $8E70
8E94: 20 0E 8A JSR $8A0E ; Add 0.5
8E97: 20 C7 8C JSR $8CC7 ; Float-Fixed
8E9A: A2 01 LDX #$01
8E9C: A5 5F LDA $5F
8E9E: 18 CLC
8E9F: 69 0A ADC #$0A
8EA1: 30 09 BMI $8EAC
8EA3: C9 0B CMP #$0B
8EA5: B0 06 BCS $8EAD
8EA7: 69 FF ADC #$FF
8EA9: AA TAX
8EAA: A9 02 LDA #$02
8EAC: 38 SEC
8EAD: E9 02 SBC #$02
8EAF: 85 60 STA $60
8EB1: 86 5F STX $5F
8EB3: 8A TXA
8EB4: F0 02 BEQ $8EB8
8EB6: 10 13 BPL $8ECB
8EB8: A4 72 LDY $72
8EBA: A9 2E LDA #$2E
8EBC: C8 INY
8EBD: 99 FF 00 STA $FF,Y
8EC0: 8A TXA
8EC1: F0 06 BEQ $8EC9
8EC3: A9 30 LDA #$30
8EC5: C8 INY
8EC6: 99 FF 00 STA $FF,Y
8EC9: 84 72 STY $72
8ECB: A0 00 LDY #$00
8ECD: A2 80 LDX #$80
8ECF: A5 67 LDA $67
8ED1: 18 CLC
8ED2: 79 7E 8F ADC $8F7E,Y
8ED5: 85 67 STA $67
8ED7: A5 66 LDA $66
8ED9: 79 7D 8F ADC $8F7D,Y
8EDC: 85 66 STA $66
8EDE: A5 65 LDA $65
8EE0: 79 7C 8F ADC $8F7C,Y
8EE3: 85 65 STA $65
8EE5: A5 64 LDA $64
8EE7: 79 7B 8F ADC $8F7B,Y ; Decimal Constants
8EEA: 85 64 STA $64
8EEC: E8 INX
8EED: B0 04 BCS $8EF3
8EEF: 10 DE BPL $8ECF
8EF1: 30 02 BMI $8EF5
8EF3: 30 DA BMI $8ECF
8EF5: 8A TXA
8EF6: 90 04 BCC $8EFC
8EF8: 49 FF EOR #$FF
8EFA: 69 0A ADC #$0A
8EFC: 69 2F ADC #$2F
8EFE: C8 INY
8EFF: C8 INY
8F00: C8 INY
8F01: C8 INY
8F02: 84 49 STY $49
8F04: A4 72 LDY $72
8F06: C8 INY
8F07: AA TAX
8F08: 29 7F AND #$7F
8F0A: 99 FF 00 STA $FF,Y
8F0D: C6 5F DEC $5F
8F0F: D0 06 BNE $8F17
8F11: A9 2E LDA #$2E
8F13: C8 INY
8F14: 99 FF 00 STA $FF,Y
8F17: 84 72 STY $72
8F19: A4 49 LDY $49
8F1B: 8A TXA
8F1C: 49 FF EOR #$FF
8F1E: 29 80 AND #$80
8F20: AA TAX
8F21: C0 24 CPY #$24
8F23: F0 04 BEQ $8F29
8F25: C0 3C CPY #$3C
8F27: D0 A6 BNE $8ECF
8F29: A4 72 LDY $72
8F2B: B9 FF 00 LDA $FF,Y
8F2E: 88 DEY
8F2F: C9 30 CMP #$30
8F31: F0 F8 BEQ $8F2B
8F33: C9 2E CMP #$2E
8F35: F0 01 BEQ $8F38
8F37: C8 INY
8F38: A9 2B LDA #$2B
8F3A: A6 60 LDX $60
8F3C: F0 2E BEQ $8F6C
8F3E: 10 08 BPL $8F48
8F40: A9 00 LDA #$00
8F42: 38 SEC
8F43: E5 60 SBC $60
8F45: AA TAX
8F46: A9 2D LDA #$2D
8F48: 99 01 01 STA $0101,Y
8F4B: A9 45 LDA #$45
8F4D: 99 00 01 STA $0100,Y
8F50: 8A TXA
8F51: A2 2F LDX #$2F
8F53: 38 SEC
8F54: E8 INX
8F55: E9 0A SBC #$0A
8F57: B0 FB BCS $8F54
8F59: 69 3A ADC #$3A
8F5B: 99 03 01 STA $0103,Y
8F5E: 8A TXA
8F5F: 99 02 01 STA $0102,Y
8F62: A9 00 LDA #$00
8F64: 99 04 01 STA $0104,Y
8F67: F0 08 BEQ $8F71
8F69: 99 FF 00 STA $FF,Y
8F6C: A9 00 LDA #$00
8F6E: 99 00 01 STA $0100,Y
8F71: A9 00 LDA #$00
8F73: A0 01 LDY #$01
8F75: 60 RTS
; +0.5
8F76: 80 00 00 00 00 ; '.{0}{0}{0}{0}'
; Decimal Constants
8F7B: FA ; '.'
8F7C: 0A ; '{LF}'
8F7D: 1F ; '{BLUE}'
8F7E: 00 00 98 96 80 FF F0 BD ; '{0}{0}{GRAY2}{LTRED}....'
8F86: C0 00 01 86 A0 FF FF D8 ; '.{0}.....X'
8F8E: F0 00 00 03 E8 FF FF FF ; '.{0}{0}{STOP}....'
8F96: 9C 00 00 00 0A FF FF FF ; '{PURPLE}{0}{0}{0}{LF}...'
8F9E: FF ; '.'
; TI Constants
8F9F: FF DF 0A 80 00 03 4B C0 ; '..{LF}.{0}{STOP}k.'
8FA7: FF FF 73 60 00 00 0E 10 ; '..S`{0}{0}{LOWTEXT}.'
8FAF: FF FF FD A8 00 00 00 3C ; '....{0}{0}{0}<'
; Evaluate <sqr>
8FB7: 20 38 8C JSR $8C38 ; FAC#1 to FAC#2
8FBA: A9 76 LDA #$76
8FBC: A0 8F LDY #$8F
; Raise to Memory Power
8FBE: 20 D4 8B JSR $8BD4 ; Unpack ROM to FAC#1
; Evaluate <power>
8FC1: F0 70 BEQ $9033 ; Evaluate <exp>
8FC3: A5 6A LDA $6A
8FC5: D0 03 BNE $8FCA
8FC7: 4C D8 88 JMP $88D8
8FCA: A2 50 LDX #$50
8FCC: A0 00 LDY #$00
8FCE: 20 00 8C JSR $8C00 ; Pack FAC#1 to RAM1
8FD1: A5 6F LDA $6F
8FD3: 10 0F BPL $8FE4
8FD5: 20 FB 8C JSR $8CFB ; Evaluate <int>
8FD8: A9 50 LDA #$50
8FDA: A0 00 LDY #$00
8FDC: 20 87 8C JSR $8C87 ; Compare FAC#1 to Memory
8FDF: D0 03 BNE $8FE4
8FE1: 98 TYA
8FE2: A4 09 LDY $09 ; SYS and MLM register save (SP)
8FE4: 20 2A 8C JSR $8C2A
8FE7: 98 TYA
8FE8: 48 PHA
8FE9: 20 CA 89 JSR $89CA ; Evaluate <log>
8FEC: A9 50 LDA #$50
8FEE: A0 00 LDY #$00
8FF0: 20 24 8A JSR $8A24 ; Multiply By Memory
8FF3: 20 33 90 JSR $9033 ; Evaluate <exp>
8FF6: 68 PLA
8FF7: 4A LSR A
8FF8: 90 0A BCC $9004
; Evaluate <negate>
8FFA: A5 63 LDA $63
8FFC: F0 06 BEQ $9004
8FFE: A5 68 LDA $68
9000: 49 FF EOR #$FF
9002: 85 68 STA $68
9004: 60 RTS
; 1.44269504 (1/LOG to base 2 e)
9005: 81 38 AA 3B 29 ; '{ORANGE}8.;)'
; #07 (counter)
900A: 07 ; '{BELL}'
; 2.149875 E-5
900B: 71 34 58 3E 56 ; 'Q4x>v'
; 1.435231 E-4
9010: 74 16 7E B3 1B ; 'T...{ESC}'
; 1.342263 E-3
9015: 77 2F EE E3 85 ; 'W/...'
; 9.6414017 E-3
901A: 7A 1D 84 1C 2A ; 'Z{RIGHT}.{RED}*'
; 5.550513 E-2
901F: 7C 63 59 58 0A ; '.cyx{LF}'
; 2.402263 E-4
9024: 7E 75 FD E7 C6 ; '.U..F'
; 6.931471 E-1
9029: 80 31 72 18 10 ; '.1R{TABT}.'
; 1.00
902E: 81 00 00 00 00 ; '{ORANGE}{0}{0}{0}{0}'
; Evaluate <exp>
9033: A9 05 LDA #$05
9035: A0 90 LDY #$90
9037: 20 08 8A JSR $8A08
903A: A5 71 LDA $71
903C: 69 50 ADC #$50
903E: 90 03 BCC $9043
9040: 20 4F 8C JSR $8C4F
9043: 85 58 STA $58
9045: 20 3B 8C JSR $8C3B
9048: A5 63 LDA $63
904A: C9 88 CMP #$88
904C: 90 03 BCC $9051
904E: 20 09 8B JSR $8B09 ; Overflow/Underflow
9051: 20 FB 8C JSR $8CFB ; Evaluate <int>
9054: A5 09 LDA $09 ; SYS and MLM register save (SP)
9056: 18 CLC
9057: 69 81 ADC #$81
9059: F0 F3 BEQ $904E
905B: 38 SEC
905C: E9 01 SBC #$01
905E: 48 PHA
905F: A2 05 LDX #$05
9061: B5 6A LDA $6A,X
9063: B4 63 LDY $63,X
9065: 95 63 STA $63,X
9067: 94 6A STY $6A,X
9069: CA DEX
906A: 10 F5 BPL $9061
906C: A5 58 LDA $58
906E: 85 71 STA $71
9070: 20 31 88 JSR $8831 ; Evaluate <subtract>
9073: 20 FA 8F JSR $8FFA ; Evaluate <negate>
9076: A9 0A LDA #$0A
9078: A0 90 LDY #$90
907A: 20 9C 90 JSR $909C
907D: A9 00 LDA #$00
907F: 85 70 STA $70
9081: 68 PLA
9082: 20 EE 8A JSR $8AEE
9085: 60 RTS
9086: 85 72 STA $72
9088: 84 73 STY $73
908A: 20 FC 8B JSR $8BFC ; Pack FAC#1 to $59
908D: A9 59 LDA #$59
908F: 20 24 8A JSR $8A24 ; Multiply By Memory
9092: 20 A0 90 JSR $90A0
9095: A9 59 LDA #$59
9097: A0 00 LDY #$00
9099: 4C 24 8A JMP $8A24 ; Multiply By Memory
909C: 85 72 STA $72
909E: 84 73 STY $73
90A0: 20 F9 8B JSR $8BF9 ; Pack FAC#1 to $5e
90A3: B1 72 LDA ($72),Y
90A5: 85 69 STA $69
90A7: A4 72 LDY $72
90A9: C8 INY
90AA: 98 TYA
90AB: D0 02 BNE $90AF
90AD: E6 73 INC $73
90AF: 85 72 STA $72
90B1: A4 73 LDY $73
90B3: 20 08 8A JSR $8A08
90B6: A5 72 LDA $72
90B8: A4 73 LDY $73
90BA: 18 CLC
90BB: 69 05 ADC #$05
90BD: 90 01 BCC $90C0
90BF: C8 INY
90C0: 85 72 STA $72
90C2: 84 73 STY $73
90C4: 20 12 8A JSR $8A12 ; Add Memory At A/Y
90C7: A9 5E LDA #$5E
90C9: A0 00 LDY #$00
90CB: C6 69 DEC $69
90CD: D0 E4 BNE $90B3
90CF: 60 RTS
; I/O Error Message
90D0: AA TAX
90D1: D0 02 BNE $90D5
90D3: A2 1E LDX #$1E
90D5: 4C 3C 4D JMP $4D3C ; Error
; Basic 'open'
90D8: 20 45 A8 JSR $A845 ; Set Bank 15
90DB: 20 C0 FF JSR $FFC0 ; (iopen) Open Vector [EFBD]
90DE: 60 RTS
; Basic 'chrout'
90DF: 20 69 92 JSR $9269 ; Call 'chrout'
90E2: B0 EC BCS $90D0 ; I/O Error Message
90E4: 60 RTS
; Basic 'input'
90E5: 20 63 92 JSR $9263 ; Call 'getin'
90E8: B0 E6 BCS $90D0 ; I/O Error Message
90EA: 60 RTS
; Redirect Output
90EB: 48 PHA
90EC: 20 45 A8 JSR $A845 ; Set Bank 15
90EF: 20 C9 FF JSR $FFC9 ; (ichkout) Set Output [F14C]
90F2: 20 43 92 JSR $9243 ; Release I/O String
90F5: AA TAX
90F6: 68 PLA
90F7: 90 03 BCC $90FC
90F9: 8A TXA
90FA: B0 D4 BCS $90D0 ; I/O Error Message
90FC: 60 RTS
; Redirect Input
90FD: 20 45 A8 JSR $A845 ; Set Bank 15
9100: 20 C6 FF JSR $FFC6 ; (ichkin) Set Input [F106]
9103: 20 43 92 JSR $9243 ; Release I/O String
9106: B0 C8 BCS $90D0 ; I/O Error Message
9108: 60 RTS
9109: 20 45 A8 JSR $A845 ; Set Bank 15
910C: 20 E4 FF JSR $FFE4 ; (igetin) Get Vector [EEEB]
910F: B0 C2 BCS $90D3
9111: 60 RTS
; Perform [save]
9112: 20 AE 91 JSR $91AE ; Get Load/Save Parameters
9115: AE 10 12 LDX $1210 ; End of Basic, Bank 0
9118: AC 11 12 LDY $1211
911B: A9 2D LDA #$2D
911D: 20 45 A8 JSR $A845 ; Set Bank 15
9120: 20 D8 FF JSR $FFD8 ; savesp Save RAM To Device
9123: 20 43 92 JSR $9243 ; Release I/O String
9126: B0 A8 BCS $90D0 ; I/O Error Message
9128: 60 RTS
; Perform [verify]
9129: A9 01 LDA #$01
912B: 2C .BYTE $2C
; Perform [load]
912C: A9 00 LDA #$00
912E: 85 0C STA $0C
9130: 20 AE 91 JSR $91AE ; Get Load/Save Parameters
9133: 20 45 A8 JSR $A845 ; Set Bank 15
9136: A5 0C LDA $0C
9138: A6 2D LDX $2D ; Pointer: Start-of-BASIC (bank 0)
913A: A4 2E LDY $2E
913C: 20 D5 FF JSR $FFD5 ; loadsp Load RAM From Device
913F: 08 PHP
9140: 20 43 92 JSR $9243 ; Release I/O String
9143: 28 PLP
9144: B0 65 BCS $91AB
9146: A5 0C LDA $0C
9148: F0 16 BEQ $9160
914A: A2 1C LDX #$1C
914C: 20 51 92 JSR $9251 ; Call 'status'
914F: 29 10 AND #$10
9151: D0 16 BNE $9169
9153: 24 7F BIT $7F
9155: 30 08 BMI $915F
9157: 20 81 92 JSR $9281 ; Print Following Text
915A: 0D 4F 4B 0D 00 ; '{CR}ok{CR}{0}'
915F: 60 RTS
9160: 20 51 92 JSR $9251 ; Call 'status'
9163: 29 BF AND #$BF
9165: F0 05 BEQ $916C
9167: A2 1D LDX #$1D ; "load error"
9169: 4C 3C 4D JMP $4D3C ; Error
916C: 8E 10 12 STX $1210 ; End of Basic, Bank 0
916F: 8C 11 12 STY $1211
9172: 24 7F BIT $7F
9174: 30 0E BMI $9184
9176: 70 E7 BVS $915F
9178: 20 2A 4D JSR $4D2A ; Print 'ready'
917B: 20 4F 4F JSR $4F4F ; Rechain Lines
917E: 20 F3 51 JSR $51F3 ; Set Up Run
9181: 4C C3 4D JMP $4DC3 ; Ready For Basic
9184: 20 54 52 JSR $5254 ; Textptr to BASIC start minus 1
9187: 20 4F 4F JSR $4F4F ; Rechain Lines
918A: 4C 35 52 JMP $5235
; Perform [open]
918D: 20 F6 91 JSR $91F6 ; Get Open/Close Parameters
9190: 18 CLC
9191: 20 D8 90 JSR $90D8 ; Basic 'open'
9194: 20 43 92 JSR $9243 ; Release I/O String
9197: B0 12 BCS $91AB
9199: 60 RTS
; Perform [close]
919A: 20 F6 91 JSR $91F6 ; Get Open/Close Parameters
919D: 20 45 A8 JSR $A845 ; Set Bank 15
91A0: A5 4B LDA $4B
91A2: 18 CLC
91A3: 20 75 92 JSR $9275 ; Call 'close'
91A6: 20 43 92 JSR $9243 ; Release I/O String
91A9: 90 B4 BCC $915F
91AB: 4C D0 90 JMP $90D0 ; I/O Error Message
; Get Load/Save Parameters
91AE: A9 00 LDA #$00
91B0: 20 5D 92 JSR $925D ; Call 'setnam'
91B3: A2 01 LDX #$01
91B5: A0 00 LDY #$00
91B7: 20 57 92 JSR $9257 ; Call 'setlfs'
91BA: 20 87 92 JSR $9287 ; Set Load/Save Bank
91BD: 20 E3 91 JSR $91E3 ; Get Character or Abort
91C0: 20 39 92 JSR $9239
91C3: 20 E3 91 JSR $91E3 ; Get Character or Abort
91C6: 20 DD 91 JSR $91DD ; Get Next Byte Value
91C9: A0 00 LDY #$00
91CB: 86 4B STX $4B
91CD: 20 57 92 JSR $9257 ; Call 'setlfs'
91D0: 20 E3 91 JSR $91E3 ; Get Character or Abort
91D3: 20 DD 91 JSR $91DD ; Get Next Byte Value
91D6: 8A TXA
91D7: A8 TAY
91D8: A6 4B LDX $4B
91DA: 4C 57 92 JMP $9257 ; Call 'setlfs'
; Get Next Byte Value
91DD: 20 EB 91 JSR $91EB ; Move to Next Parameter
91E0: 4C F4 87 JMP $87F4 ; -Eval Byte Parameter
; Get Character or Abort
91E3: 20 86 03 JSR $0386 ; CHRGOT entry
91E6: D0 02 BNE $91EA
91E8: 68 PLA
91E9: 68 PLA
91EA: 60 RTS
; Move to Next Parameter
91EB: 20 5C 79 JSR $795C ; -Check Comma
91EE: 20 86 03 JSR $0386 ; CHRGOT entry
91F1: D0 F7 BNE $91EA
91F3: 4C 6C 79 JMP $796C ; Syntax Error
; Get Open/Close Parameters
91F6: A9 00 LDA #$00
91F8: A2 01 LDX #$01
91FA: 20 87 92 JSR $9287 ; Set Load/Save Bank
91FD: 20 5D 92 JSR $925D ; Call 'setnam'
9200: 20 EE 91 JSR $91EE
9203: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
9206: 86 4B STX $4B
9208: 8A TXA
9209: A2 01 LDX #$01
920B: A0 00 LDY #$00
920D: 20 57 92 JSR $9257 ; Call 'setlfs'
9210: 20 E3 91 JSR $91E3 ; Get Character or Abort
9213: 20 DD 91 JSR $91DD ; Get Next Byte Value
9216: 86 4C STX $4C
9218: A0 00 LDY #$00
921A: A5 4B LDA $4B
921C: E0 03 CPX #$03
921E: 90 01 BCC $9221
9220: 88 DEY
9221: 20 57 92 JSR $9257 ; Call 'setlfs'
9224: 20 E3 91 JSR $91E3 ; Get Character or Abort
9227: 20 DD 91 JSR $91DD ; Get Next Byte Value
922A: 8A TXA
922B: A8 TAY
922C: A6 4C LDX $4C
922E: A5 4B LDA $4B
9230: 20 57 92 JSR $9257 ; Call 'setlfs'
9233: 20 E3 91 JSR $91E3 ; Get Character or Abort
9236: 20 EB 91 JSR $91EB ; Move to Next Parameter
9239: 20 7B 87 JSR $877B ; Evaluate String
923C: A6 24 LDX $24
923E: A4 25 LDY $25
9240: 4C 5D 92 JMP $925D ; Call 'setnam'
; Release I/O String
9243: 08 PHP
9244: 48 PHA
9245: A5 BA LDA $BA ; Current device
9247: C9 04 CMP #$04
9249: 90 03 BCC $924E
924B: 20 0D A8 JSR $A80D ; Release String
924E: 68 PLA
924F: 28 PLP
9250: 60 RTS
; Call 'status'
9251: 20 45 A8 JSR $A845 ; Set Bank 15
9254: 4C B7 FF JMP $FFB7 ; readss Read I/O Status Word
; Call 'setlfs'
9257: 20 45 A8 JSR $A845 ; Set Bank 15
925A: 4C BA FF JMP $FFBA ; setlfs Set Logical File Parameters
; Call 'setnam'
925D: 20 45 A8 JSR $A845 ; Set Bank 15
9260: 4C BD FF JMP $FFBD ; setnam Set Filename
; Call 'getin'
9263: 20 45 A8 JSR $A845 ; Set Bank 15
9266: 4C CF FF JMP $FFCF ; (ibasin) Input Vector, chrin [EF06]
; Call 'chrout'
9269: 20 45 A8 JSR $A845 ; Set Bank 15
926C: 4C D2 FF JMP $FFD2 ; (ibsout) Output Vector, chrout [EF79]
; Call 'clrchn'
926F: 20 45 A8 JSR $A845 ; Set Bank 15
9272: 4C CC FF JMP $FFCC ; (iclrch) Restore I/O Vector [F226]
; Call 'close'
9275: 20 45 A8 JSR $A845 ; Set Bank 15
9278: 4C C3 FF JMP $FFC3 ; (iclose) Close Vector [F188]
; Call 'clall'
927B: 20 45 A8 JSR $A845 ; Set Bank 15
927E: 4C E7 FF JMP $FFE7 ; (iclall) Close All Channels And Files [F222]
; Print Following Text
9281: 20 45 A8 JSR $A845 ; Set Bank 15
9284: 4C 7D FF JMP $FF7D ; primm Print Immediate
; Set Load/Save Bank
9287: 20 45 A8 JSR $A845 ; Set Bank 15
928A: 4C 68 FF JMP $FF68 ; setbnk
; Call 'plot'
928D: 8D 03 FF STA $FF03
9290: 4C F0 FF JMP $FFF0 ; plot Read / Set Cursor X/Y Position
; Call 'test stop'
9293: 20 45 A8 JSR $A845 ; Set Bank 15
9296: 4C E1 FF JMP $FFE1 ; (istop) Test-Stop Vector [F66E]
; Make Room For String
9299: 46 11 LSR $11 ; Clear flag "collected"
929B: AA TAX ; Byte count
929C: F0 3B BEQ $92D9 ; Skip on 0 request
929E: 48 PHA ; Save for later
929F: A5 35 LDA $35 ; Make room back-link
92A1: 38 SEC ; Borrow
92A2: E9 02 SBC #$02 ; Subtract 2 from
92A4: A4 36 LDY $36 ; heap top (FRETOP)
92A6: B0 01 BCS $92A9
92A8: 88 DEY ; Underflow in high byte
92A9: 85 24 STA $24 ; Save back-link address
92AB: 84 25 STY $25 ; New heap pointer in A/Y
92AD: 8A TXA ; Byte count
92AE: 49 FF EOR #$FF ; negate it
92B0: 38 SEC ; (=complement + 1)
92B1: 65 24 ADC $24 ; Add negative count
92B3: B0 01 BCS $92B6 ; Underflow?
92B5: 88 DEY ; High byte
92B6: C4 34 CPY $34 ; Bottom of strings reached (STREND)?
92B8: 90 20 BCC $92DA ; No memory, try collect
92BA: D0 04 BNE $92C0 ; Higher
92BC: C5 33 CMP $33 ; Low Byte
92BE: 90 1A BCC $92DA ; No memory, try collect
92C0: 85 37 STA $37 ; Temporary save (FRESPC)
92C2: 84 38 STY $38
92C4: A0 01 LDY #$01 ; Offset back-link high byte
92C6: A9 FF LDA #$FF ; Gap mark
92C8: 8D 04 FF STA $FF04 ; Switch to bank 1
92CB: 91 24 STA ($24),Y ; Store back-link high byte
92CD: 88 DEY ; Y=0
92CE: 68 PLA ; Byte count
92CF: 91 24 STA ($24),Y ; Store back-link low byte
92D1: A6 37 LDX $37 ; Temporary pointer
92D3: A4 38 LDY $38 ; as
92D5: 86 35 STX $35 ; new heap top
92D7: 84 36 STY $36 ; (FRETOP)
92D9: 60 RTS ; return address in X/Y, length in A
92DA: A5 11 LDA $11 ; Retry after a garbage collection
92DC: 30 09 BMI $92E7 ; Already tried, if bit 7 set
92DE: 20 EA 92 JSR $92EA ; Try Garbage Collection
92E1: 38 SEC ; Set flag "collected"
92E2: 66 11 ROR $11 ; Carry into bit 7
92E4: 68 PLA ; Byte count from stack
92E5: D0 B4 BNE $929B ; Retry
92E7: 4C 3A 4D JMP $4D3A ; Print 'out of memory'
; Garbage Collection
92EA: A6 18 LDX $18 ; String-Descriptor-Stack-Pointer
92EC: E0 1B CPX #$1B ; At bottom of SDS, empty?
92EE: F0 13 BEQ $9303 ; start heap walk
92F0: 20 F0 93 JSR $93F0 ; next SDS element
92F3: F0 F7 BEQ $92EC ; next if zero-length string
92F5: 8A TXA ; String low byte
92F6: A0 00 LDY #$00 ; Index on back-link part
92F8: 8D 04 FF STA $FF04 ; Switch bank
92FB: 91 5E STA ($5E),Y ; Back-link low byte
92FD: 98 TYA ; =0
92FE: C8 INY ; Index back-link part
92FF: 91 5E STA ($5E),Y ; Back-link high byte = 0
9301: D0 E9 BNE $92EC ; always, loop through SDS
9303: A0 00 LDY #$00 ; Heap walk
9305: 84 5A STY $5A ; Clear not-in-gap flag (opt.: LSR $5A)
9307: A6 39 LDX $39 ; Pointer: Limit-of-memory (bank 1)
9309: A4 3A LDY $3A ; initializes ...
930B: 86 61 STX $61 ; New heap pointer low
930D: 86 50 STX $50 ; Old heap pointer low
930F: 86 37 STX $37 ; Temporary bottom of string space low
9311: 84 62 STY $62 ; New heap pointer high
9313: 84 51 STY $51 ; Old heap pointer low
9315: 84 38 STY $38 ; Temporary bottom of string space high
9317: 8A TXA ;
9318: 20 83 93 JSR $9383 ; Get next heap element from A/Y
931B: D0 0C BNE $9329 ; Z=0: got a string
931D: 88 DEY ; Gap, Y=0
931E: 20 FB 42 JSR $42FB ; Get length From ($50),Y Bank1< (old heap)
9321: 20 D2 93 JSR $93D2 ; old heap -= length
9324: 38 SEC ; Set flag: gap encountered
9325: 66 5A ROR $5A ;
9327: D0 EF BNE $9318 ; always, loop heap
9329: 24 5A BIT $5A ; Ever saw a gap?
932B: 10 42 BPL $936F ; no, to next element without copy
932D: A2 00 LDX #$00 ; Reset flag
932F: 86 5A STX $5A ; not-in-gap
9331: A9 02 LDA #$02 ; Obsolete code (not needed)
9333: A0 01 LDY #$01 ; Get back-link high byte
9335: 20 FB 42 JSR $42FB ; Get From ($50),Y Bank1
9338: 91 61 STA ($61),Y ; Copy to new heap
933A: 88 DEY ; Y=0
933B: 20 FB 42 JSR $42FB ; Get From ($50),Y Bank1
933E: 91 61 STA ($61),Y ; Back-link low byte: copy to new heap
9340: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1, ($24),Y
9343: AA TAX ; String length from descriptor
9344: 20 E1 93 JSR $93E1 ; $61/$62 -= length (new heap pointer)
9347: 85 37 STA $37 ; Store as new ...
9349: 84 38 STY $38 ; top of heap
934B: 8A TXA ; String length
934C: 20 D2 93 JSR $93D2 ; $50/$51 -= length (old heap pointer)
934F: 8A TXA ; String length (used as count) ...
9350: A8 TAY ; to Y as index
9351: 88 DEY ; String copy loop: Pre-decrement index
9352: 20 FB 42 JSR $42FB ; Get From ($50),Y Bank1: from old heap
9355: 91 61 STA ($61),Y ; to new heap
9357: CA DEX ; Decrement count
9358: D0 F7 BNE $9351 ; next byte to copy
935A: A0 02 LDY #$02 ; Copy two bytes
935C: B9 60 00 LDA $60,Y ; New string pointer $61, $62
935F: 91 24 STA ($24),Y ; stored into descriptor (offset 1,2)
9361: 88 DEY ; Index
9362: D0 F8 BNE $935C ; Loop
9364: A5 50 LDA $50 ; New heap pointer
9366: A4 51 LDY $51 ; to A/Y
9368: 20 83 93 JSR $9383 ; Get next heap element from A/Y
936B: F0 B0 BEQ $931D ; process string
936D: D0 C4 BNE $9333 ; process gap
936F: A0 00 LDY #$00 ; Step to next element without copy
9371: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1, ($24),Y (old heap)
9374: AA TAX ; String length
9375: 20 E1 93 JSR $93E1 ; $61/$62 -= length (new heap pointer)
9378: 85 37 STA $37 ; Store as temporary ...
937A: 84 38 STY $38 ; top of heap
937C: 8A TXA ; String length
937D: 20 D2 93 JSR $93D2 ; $50/$51 -= length (old heap pointer)
9380: 4C 18 93 JMP $9318 ; Loop through heap
9383: C4 36 CPY $36 ; Get next heap element (A/Y)
9385: 90 2A BCC $93B1 ; If A/Y below or equal FRETOP, finished
9387: D0 06 BNE $938F ;
9389: C5 35 CMP $35 ; Low byte of FRETOP
938B: F0 24 BEQ $93B1 ; Equal, finished
938D: 90 22 BCC $93B1 ; Below, finished
938F: 24 5A BIT $5A ; no-gap-flag ...
9391: 30 05 BMI $9398 ; set, process string
9393: A9 02 LDA #$02 ; Subtract 2
9395: 20 E1 93 JSR $93E1 ; $61/$62 -= 2 (new heap pointer)
9398: A9 02 LDA #$02 ; Subtract 2
939A: 20 D2 93 JSR $93D2 ; $50/$51 -= 2 (old heap pointer)
939D: A0 01 LDY #$01 ; Back-link high byte
939F: 20 FB 42 JSR $42FB ; Get From ($50) Bank1
93A2: C9 FF CMP #$FF ; Marked as gap?
93A4: D0 01 BNE $93A7 ; No gap
93A6: 60 RTS ; Return a gap (Z=0)
; Not a gap ... (Y=1)
93A7: 20 FB 42 JSR $42FB ; Get From ($50),Y Bank1
93AA: 99 24 00 STA $24,Y ; Store Back-link as descriptor pointer
93AD: 88 DEY ; Decremente index (Y: 1 to 0)
93AE: 10 F7 BPL $93A7 ; Loop through 2 bytes
93B0: 60 RTS ; Leave
93B1: A6 18 LDX $18 ; Mark SDS strings as gap
93B3: E0 1B CPX #$1B ; Current SDS on bottom (empty)?
93B5: F0 10 BEQ $93C7 ; SDS empty
93B7: 20 F0 93 JSR $93F0 ; Process SDS element
93BA: F0 F7 BEQ $93B3 ; Empty, next SDS element
93BC: A0 00 LDY #$00 ; Non-empty, mark back-link as gap
93BE: 91 5E STA ($5E),Y ; Gap length
93C0: C8 INY ; Y=1
93C1: A9 FF LDA #$FF ; Gap mark to
93C3: 91 5E STA ($5E),Y ; back-link high
93C5: D0 EC BNE $93B3 ; branch always
93C7: 68 PLA ; Remove caller's address
93C8: 68 PLA ; from stack
93C9: A5 37 LDA $37 ; Temporary top of heap
93CB: A4 38 LDY $38 ;
93CD: 85 35 STA $35 ; set FRETOP
93CF: 84 36 STY $36 ;
93D1: 60 RTS ; GC finished
93D2: 49 FF EOR #$FF ; Subtract A from $50/$51
93D4: 38 SEC ; Negate value in A
93D5: 65 50 ADC $50 ; and subtract
93D7: A4 51 LDY $51 ; High byte ...
93D9: B0 01 BCS $93DC ; if underflow
93DB: 88 DEY ; correct high byte
93DC: 85 50 STA $50 ; Save back to
93DE: 84 51 STY $51 ; $50/51
93E0: 60 RTS ; and return
93E1: 49 FF EOR #$FF ; Subtract A from $61/$62
93E3: 38 SEC ; Negate value in A
93E4: 65 61 ADC $61 ; and subtract
93E6: A4 62 LDY $62 ; High byte ...
93E8: B0 01 BCS $93EB ; if underflow
93EA: 88 DEY ; correct high byte
93EB: 85 61 STA $61 ; Save back to
93ED: 84 62 STY $62 ; $61/$62
93EF: 60 RTS ; and return
93F0: CA DEX ; Get SDS element
93F1: B5 00 LDA $00,X ; String address high
93F3: 85 5F STA $5F ; Descriptor pointer
93F5: CA DEX ; Index
93F6: B5 00 LDA $00,X ; String address low
93F8: 85 5E STA $5E ; Descriptor pointer
93FA: CA DEX ; Index
93FB: B5 00 LDA $00,X ; Get length
93FD: 48 PHA ; Save length
93FE: 18 CLC ; Prepare addition
93FF: 65 5E ADC $5E ; $5E/$5F += length
9401: 85 5E STA $5E ; Low byte
9403: 90 02 BCC $9407 ; Overflow
9405: E6 5F INC $5F ; Adjust high byte
9407: 68 PLA ; Restore length into A
9408: 60 RTS ; Back
; Evaluate <cos>
9409: A9 85 LDA #$85
940B: A0 94 LDY #$94
940D: 20 12 8A JSR $8A12 ; Add Memory At A/Y
; Evaluate <sin>
9410: 20 38 8C JSR $8C38 ; FAC#1 to FAC#2
9413: A9 8A LDA #$8A
9415: A0 94 LDY #$94
9417: A6 6F LDX $6F
9419: 20 41 8B JSR $8B41
941C: 20 38 8C JSR $8C38 ; FAC#1 to FAC#2
941F: 20 FB 8C JSR $8CFB ; Evaluate <int>
9422: A9 00 LDA #$00
9424: 85 70 STA $70
9426: 20 31 88 JSR $8831 ; Evaluate <subtract>
9429: A9 8F LDA #$8F
942B: A0 94 LDY #$94
942D: 20 18 8A JSR $8A18 ; Subtract Memory At A/Y
9430: A5 68 LDA $68
9432: 48 PHA
9433: 10 0D BPL $9442
9435: 20 0E 8A JSR $8A0E ; Add 0.5
9438: A5 68 LDA $68
943A: 30 09 BMI $9445
943C: A5 14 LDA $14
943E: 49 FF EOR #$FF
9440: 85 14 STA $14
9442: 20 FA 8F JSR $8FFA ; Evaluate <negate>
9445: A9 8F LDA #$8F
9447: A0 94 LDY #$94
9449: 20 12 8A JSR $8A12 ; Add Memory At A/Y
944C: 68 PLA
944D: 10 03 BPL $9452
944F: 20 FA 8F JSR $8FFA ; Evaluate <negate>
9452: A9 94 LDA #$94
9454: A0 94 LDY #$94
9456: 4C 86 90 JMP $9086
; Evaluate <tan>
9459: 20 FC 8B JSR $8BFC ; Pack FAC#1 to $59
945C: A9 00 LDA #$00
945E: 85 14 STA $14
9460: 20 10 94 JSR $9410 ; Evaluate <sin>
9463: A2 50 LDX #$50
9465: A0 00 LDY #$00
9467: 20 00 8C JSR $8C00 ; Pack FAC#1 to RAM1
946A: A9 59 LDA #$59
946C: A0 00 LDY #$00
946E: 20 D4 8B JSR $8BD4 ; Unpack ROM to FAC#1
9471: A9 00 LDA #$00
9473: 85 68 STA $68
9475: A5 14 LDA $14
9477: 20 81 94 JSR $9481
947A: A9 50 LDA #$50
947C: A0 00 LDY #$00
947E: 4C 49 8B JMP $8B49 ; Divide Into Memory
9481: 48 PHA
9482: 4C 42 94 JMP $9442
; 1.570796327 pi/2
9485: 81 49 0F DA A2 ; '{ORANGE}i{FLSHON}Z.'
; 6.28318531 pi*2
948A: 83 49 0F DA A2 ; '.i{FLSHON}Z.'
; 0.25
948F: 7F 00 00 00 00 ; '.{0}{0}{0}{0}'
; #05 (counter)
9494: 05 ; '{WHITE}'
; -14.3813907
9495: 84 E6 1A 2D 1B ; '...-{ESC}'
; 42.0077971
949A: 86 28 07 FB F8 ; '.({BELL}..'
; -76.7041703
949F: 87 99 68 89 01 ; '.{LTGREEN}h..'
; 81.6052237
94A4: 87 23 35 DF E1 ; '.#5..'
; -41.3417021
94A9: 86 A5 5D E7 28 ; '..].('
; 6.28318531
94AE: 83 49 0F DA A2 ; '.i{FLSHON}Z.'
; Evaluate <atn>
94B3: A5 68 LDA $68
94B5: 48 PHA
94B6: 10 03 BPL $94BB
94B8: 20 FA 8F JSR $8FFA ; Evaluate <negate>
94BB: A5 63 LDA $63
94BD: 48 PHA
94BE: C9 81 CMP #$81
94C0: 90 07 BCC $94C9
94C2: A9 9C LDA #$9C
94C4: A0 89 LDY #$89
94C6: 20 1E 8A JSR $8A1E ; Divide By Memory
94C9: A9 E3 LDA #$E3
94CB: A0 94 LDY #$94
94CD: 20 86 90 JSR $9086
94D0: 68 PLA
94D1: C9 81 CMP #$81
94D3: 90 07 BCC $94DC
94D5: A9 85 LDA #$85
94D7: A0 94 LDY #$94
94D9: 20 18 8A JSR $8A18 ; Subtract Memory At A/Y
94DC: 68 PLA
94DD: 10 03 BPL $94E2
94DF: 4C FA 8F JMP $8FFA ; Evaluate <negate>
94E2: 60 RTS
; #0b (counter)
94E3: 0B ; '{LOCK}'
; -0.000684793912
94E4: 76 B3 83 BD D3 ; 'V...S'
; 0.00485094216
94E9: 79 1E F4 A6 F5 ; 'Y{GREEN}...'
; -0.161117018
94EE: 7B 83 FC B0 10 ; '.....'
; 0.034209638
94F3: 7C 0C 1F 67 CA ; '.{UNLOCK}{BLUE}gJ'
; -0.0542791328
94F8: 7C DE 53 CB C1 ; '..sKA'
; 0.0724571965
94FD: 7D 14 64 70 4C ; '.{DEL}dPl'
; -0.0898023954
9502: 7D B7 EA 51 7A ; '...qZ'
; 0.110932413
9507: 7D 63 30 88 7E ; '.c0..'
; -0.142839808
950C: 7E 92 44 99 3A ; '.{RVSOFF}d{LTGREEN}:'
; 0.19999912
9511: 7E 4C CC 91 C7 ; '.lL{UP}G'
; -0.333333316
9516: 7F AA AA AA 13 ; '....{HOME}'
; 1.00
951B: 81 00 00 00 00 ; '{ORANGE}{0}{0}{0}{0}'
; Print Using
9520: A2 FF LDX #$FF
9522: 8E 36 01 STX $0136
9525: 20 80 03 JSR $0380 ; CHRGET
9528: 20 EF 77 JSR $77EF ; Evaluate Expression
952B: 20 DD 77 JSR $77DD ; Confirm String
952E: A5 66 LDA $66
9530: 48 PHA
9531: A5 67 LDA $67
9533: 48 PHA
9534: A0 02 LDY #$02
9536: 20 E7 42 JSR $42E7 ; Get From ($66) Bank1
9539: 88 DEY
953A: 99 3F 00 STA $3F,Y
953D: D0 F7 BNE $9536
953F: 20 E7 42 JSR $42E7 ; Get From ($66) Bank1
9542: 8D 35 01 STA $0135
9545: A8 TAY
9546: F0 0B BEQ $9553
9548: 88 DEY
9549: 20 D3 42 JSR $42D3 ; Get From ($3f) Bank1
954C: C9 23 CMP #$23
954E: F0 06 BEQ $9556
9550: 98 TYA
9551: D0 F5 BNE $9548
9553: 4C 6C 79 JMP $796C ; Syntax Error
9556: A9 3B LDA #$3B
9558: 20 5E 79 JSR $795E
955B: 84 77 STY $77
955D: 8C 23 01 STY $0123
9560: 20 EF 77 JSR $77EF ; Evaluate Expression
9563: 24 0F BIT $0F
9565: 10 39 BPL $95A0
9567: 20 9F 97 JSR $979F
956A: 20 F2 98 JSR $98F2 ; ?
956D: AE 2B 01 LDX $012B
9570: F0 15 BEQ $9587
9572: A2 00 LDX #$00
9574: 38 SEC
9575: AD 31 01 LDA $0131
9578: E5 78 SBC $78
957A: 90 0B BCC $9587
957C: A2 3D LDX #$3D
957E: EC 2B 01 CPX $012B
9581: D0 03 BNE $9586
9583: 4A LSR A
9584: 69 00 ADC #$00
9586: AA TAX
9587: A0 00 LDY #$00
9589: 8A TXA
958A: F0 05 BEQ $9591
958C: CA DEX
958D: A9 20 LDA #$20
958F: D0 08 BNE $9599
9591: C4 78 CPY $78
9593: B0 F8 BCS $958D
9595: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
9598: C8 INY
9599: 20 EB 98 JSR $98EB ; ?
959C: D0 EB BNE $9589
959E: F0 27 BEQ $95C7
95A0: 20 42 8E JSR $8E42 ; Float to Ascii
95A3: A0 FF LDY #$FF
95A5: C8 INY
95A6: B9 00 01 LDA $0100,Y
95A9: D0 FA BNE $95A5
95AB: 98 TYA
95AC: 20 90 86 JSR $8690
95AF: A0 00 LDY #$00
95B1: 8D 04 FF STA $FF04
95B4: B9 00 01 LDA $0100,Y
95B7: F0 05 BEQ $95BE
95B9: 91 64 STA ($64),Y
95BB: C8 INY
95BC: D0 F6 BNE $95B4
95BE: 20 E3 86 JSR $86E3
95C1: 20 9F 97 JSR $979F
95C4: 20 E7 95 JSR $95E7
95C7: 20 86 03 JSR $0386 ; CHRGOT entry
95CA: C9 2C CMP #$2C
95CC: F0 8A BEQ $9558
95CE: 38 SEC
95CF: 66 77 ROR $77
95D1: 20 F2 98 JSR $98F2 ; ?
95D4: 68 PLA
95D5: A8 TAY
95D6: 68 PLA
95D7: 20 85 87 JSR $8785
95DA: 20 86 03 JSR $0386 ; CHRGOT entry
95DD: C9 3B CMP #$3B
95DF: F0 03 BEQ $95E4
95E1: 4C 98 55 JMP $5598
95E4: 4C 80 03 JMP $0380 ; CHRGET
95E7: 8D 03 FF STA $FF03
95EA: AD 04 12 LDA $1204
95ED: 8D 33 01 STA $0133
95F0: A9 FF LDA #$FF
95F2: 8D 32 01 STA $0132
95F5: 4C FA 95 JMP $95FA
95F8: 86 80 STX $80
95FA: C4 78 CPY $78
95FC: F0 33 BEQ $9631
95FE: B9 00 01 LDA $0100,Y
9601: C8 INY
9602: C9 20 CMP #$20
9604: F0 F4 BEQ $95FA
9606: C9 2D CMP #$2D
9608: F0 E8 BEQ $95F2
960A: C9 2E CMP #$2E
960C: F0 EA BEQ $95F8
960E: C9 45 CMP #$45
9610: F0 11 BEQ $9623
9612: 9D 00 01 STA $0100,X
9615: 8E 24 01 STX $0124
9618: E8 INX
9619: 24 80 BIT $80
961B: 10 DD BPL $95FA
961D: EE 2A 01 INC $012A
9620: 4C FA 95 JMP $95FA
9623: B9 00 01 LDA $0100,Y
9626: C9 2D CMP #$2D
9628: D0 03 BNE $962D
962A: 6E 28 01 ROR $0128
962D: C8 INY
962E: 8C 29 01 STY $0129
9631: A5 80 LDA $80
9633: 10 02 BPL $9637
9635: 86 80 STX $80
9637: 20 F2 98 JSR $98F2 ; ?
963A: AD 2C 01 LDA $012C
963D: C9 FF CMP #$FF
963F: F0 29 BEQ $966A
9641: AD 2F 01 LDA $012F
9644: F0 3F BEQ $9685
9646: AD 29 01 LDA $0129
9649: D0 12 BNE $965D
964B: AE 24 01 LDX $0124
964E: 20 74 97 JSR $9774
9651: DE 02 01 DEC $0102,X
9654: E8 INX
9655: 8E 29 01 STX $0129
9658: 20 FB 97 JSR $97FB ; ?
965B: F0 25 BEQ $9682
965D: AC 2E 01 LDY $012E
9660: D0 17 BNE $9679
9662: AC 32 01 LDY $0132
9665: 30 12 BMI $9679
9667: AD 2C 01 LDA $012C
966A: F0 6A BEQ $96D6
966C: CE 2C 01 DEC $012C
966F: D0 05 BNE $9676
9671: AD 2D 01 LDA $012D
9674: F0 60 BEQ $96D6
9676: EE 27 01 INC $0127
9679: 20 EE 96 JSR $96EE ; ?
967C: 20 B9 97 JSR $97B9 ; ?
967F: 20 EE 96 JSR $96EE ; ?
9682: 4C 1C 98 JMP $981C ; ?
9685: AC 29 01 LDY $0129
9688: F0 16 BEQ $96A0
968A: 85 78 STA $78
968C: 38 SEC
968D: 6E 30 01 ROR $0130
9690: A4 80 LDY $80
9692: AD 28 01 LDA $0128
9695: 10 06 BPL $969D
9697: 20 27 97 JSR $9727
969A: 4C A9 96 JMP $96A9
969D: 20 08 97 JSR $9708
96A0: A4 80 LDY $80
96A2: F0 05 BEQ $96A9
96A4: 20 FF 97 JSR $97FF
96A7: F0 06 BEQ $96AF
96A9: 20 B9 97 JSR $97B9 ; ?
96AC: 4C B2 96 JMP $96B2
96AF: CE 2A 01 DEC $012A
96B2: 38 SEC
96B3: AD 2C 01 LDA $012C
96B6: ED 2A 01 SBC $012A
96B9: 90 1B BCC $96D6
96BB: 8D 27 01 STA $0127
96BE: AC 2E 01 LDY $012E
96C1: D0 1B BNE $96DE
96C3: AC 32 01 LDY $0132
96C6: 30 16 BMI $96DE
96C8: A8 TAY
96C9: F0 0B BEQ $96D6
96CB: 88 DEY
96CC: D0 13 BNE $96E1
96CE: AD 2D 01 LDA $012D
96D1: 0D 2A 01 ORA $012A
96D4: D0 AC BNE $9682
96D6: A9 2A LDA #$2A
96D8: 20 EB 98 JSR $98EB ; ?
96DB: D0 FB BNE $96D8
96DD: 60 RTS
96DE: A8 TAY
96DF: F0 A1 BEQ $9682
96E1: AD 2A 01 LDA $012A
96E4: D0 9C BNE $9682
96E6: CE 27 01 DEC $0127
96E9: E6 77 INC $77
96EB: 4C 82 96 JMP $9682
; ?
96EE: 38 SEC
96EF: AD 2C 01 LDA $012C
96F2: ED 2A 01 SBC $012A
96F5: F0 39 BEQ $9730
96F7: A4 80 LDY $80
96F9: 90 16 BCC $9711
96FB: 85 78 STA $78
96FD: CC 24 01 CPY $0124
9700: F0 02 BEQ $9704
9702: B0 01 BCS $9705
9704: C8 INY
9705: EE 2A 01 INC $012A
9708: 20 3D 97 JSR $973D
970B: C6 78 DEC $78
970D: D0 EE BNE $96FD
970F: F0 1D BEQ $972E
9711: 49 FF EOR #$FF
9713: 69 01 ADC #$01
9715: 85 78 STA $78
9717: CC 23 01 CPY $0123
971A: F0 07 BEQ $9723
971C: 88 DEY
971D: CE 2A 01 DEC $012A
9720: 4C 25 97 JMP $9725
9723: E6 77 INC $77
9725: A9 80 LDA #$80
9727: 20 3F 97 JSR $973F
972A: C6 78 DEC $78
972C: D0 E9 BNE $9717
972E: 84 80 STY $80
9730: 60 RTS
9731: D0 39 BNE $976C
9733: 49 09 EOR #$09
9735: 9D 00 01 STA $0100,X
9738: CA DEX
9739: EC 29 01 CPX $0129
973C: 60 RTS
973D: A9 00 LDA #$00
973F: AE 29 01 LDX $0129
9742: E8 INX
9743: 2C 30 01 BIT $0130
9746: 30 10 BMI $9758
9748: 4D 28 01 EOR $0128
974B: F0 0B BEQ $9758
974D: 20 82 97 JSR $9782
9750: 20 31 97 JSR $9731
9753: B0 F8 BCS $974D
9755: 4C 5D 89 JMP $895D ; Print 'overflow'
9758: BD 00 01 LDA $0100,X
975B: DE 00 01 DEC $0100,X
975E: C9 30 CMP #$30
9760: 20 31 97 JSR $9731
9763: B0 F3 BCS $9758
9765: 2C 30 01 BIT $0130
9768: 10 05 BPL $976F
976A: 84 80 STY $80
976C: 68 PLA
976D: 68 PLA
976E: 60 RTS
976F: AD 28 01 LDA $0128
9772: 49 80 EOR #$80
9774: 8D 28 01 STA $0128
9777: A9 30 LDA #$30
9779: 9D 01 01 STA $0101,X
977C: A9 31 LDA #$31
977E: 9D 02 01 STA $0102,X
9781: 60 RTS
9782: BD 00 01 LDA $0100,X
9785: FE 00 01 INC $0100,X
9788: C9 39 CMP #$39
978A: 60 RTS
978B: 18 CLC
978C: C8 INY
978D: F0 05 BEQ $9794
978F: CC 35 01 CPY $0135
9792: 90 04 BCC $9798
9794: A4 77 LDY $77
9796: D0 D4 BNE $976C
9798: 20 D3 42 JSR $42D3 ; Get From ($3f) Bank1
979B: EE 31 01 INC $0131
979E: 60 RTS
979F: 20 81 87 JSR $8781
97A2: 85 78 STA $78
97A4: A2 0A LDX #$0A
97A6: A9 00 LDA #$00
97A8: 9D 27 01 STA $0127,X
97AB: CA DEX
97AC: 10 FA BPL $97A8
97AE: 8E 26 01 STX $0126
97B1: 86 80 STX $80
97B3: 8E 25 01 STX $0125
97B6: AA TAX
97B7: A8 TAY
97B8: 60 RTS
; ?
97B9: 18 CLC
97BA: A5 80 LDA $80
97BC: 6D 2D 01 ADC $012D
97BF: B0 39 BCS $97FA
97C1: 38 SEC
97C2: E5 77 SBC $77
97C4: 90 34 BCC $97FA
97C6: CD 24 01 CMP $0124
97C9: F0 02 BEQ $97CD
97CB: B0 2D BCS $97FA
97CD: CD 23 01 CMP $0123
97D0: 90 28 BCC $97FA
97D2: AA TAX
97D3: BD 00 01 LDA $0100,X
97D6: C9 35 CMP #$35
97D8: 90 20 BCC $97FA
97DA: EC 23 01 CPX $0123
97DD: F0 0A BEQ $97E9
97DF: CA DEX
97E0: 20 82 97 JSR $9782
97E3: 8E 24 01 STX $0124
97E6: F0 F2 BEQ $97DA
97E8: 60 RTS
97E9: A9 31 LDA #$31
97EB: 9D 00 01 STA $0100,X
97EE: E8 INX
97EF: 86 80 STX $80
97F1: C6 77 DEC $77
97F3: 10 05 BPL $97FA
97F5: E6 77 INC $77
97F7: EE 2A 01 INC $012A
97FA: 60 RTS
; ?
97FB: A4 80 LDY $80
97FD: F0 17 BEQ $9816
97FF: AC 23 01 LDY $0123
9802: B9 00 01 LDA $0100,Y
9805: C9 30 CMP #$30
9807: 60 RTS
9808: E6 80 INC $80
980A: 20 3D 97 JSR $973D
980D: EE 23 01 INC $0123
9810: CC 24 01 CPY $0124
9813: F0 E5 BEQ $97FA
9815: C8 INY
9816: 20 02 98 JSR $9802
9819: F0 ED BEQ $9808
981B: 60 RTS
; ?
981C: AD 25 01 LDA $0125
981F: 30 02 BMI $9823
9821: E6 77 INC $77
9823: AE 23 01 LDX $0123
9826: CA DEX
9827: AC 34 01 LDY $0134
982A: 20 D3 42 JSR $42D3 ; Get From ($3f) Bank1
982D: C8 INY
982E: C9 2C CMP #$2C
9830: D0 14 BNE $9846
9832: 2C 26 01 BIT $0126
9835: 30 09 BMI $9840
9837: 8D 03 FF STA $FF03
983A: AD 05 12 LDA $1205
983D: 4C AB 98 JMP $98AB
9840: AD 33 01 LDA $0133
9843: 4C AB 98 JMP $98AB
9846: C9 2E CMP #$2E
9848: D0 09 BNE $9853
984A: 8D 03 FF STA $FF03
984D: AD 06 12 LDA $1206
9850: 4C AB 98 JMP $98AB
9853: C9 2B CMP #$2B
9855: F0 3B BEQ $9892
9857: C9 2D CMP #$2D
9859: F0 32 BEQ $988D
985B: C9 5E CMP #$5E
985D: D0 69 BNE $98C8
985F: A9 45 LDA #$45
9861: 20 EB 98 JSR $98EB ; ?
9864: AC 29 01 LDY $0129
9867: 20 02 98 JSR $9802
986A: D0 06 BNE $9872
986C: C8 INY
986D: 20 02 98 JSR $9802
9870: F0 07 BEQ $9879
9872: A9 2D LDA #$2D
9874: 2C 28 01 BIT $0128
9877: 30 02 BMI $987B
9879: A9 2B LDA #$2B
987B: 20 EB 98 JSR $98EB ; ?
987E: AE 29 01 LDX $0129
9881: BD 00 01 LDA $0100,X
9884: 20 EB 98 JSR $98EB ; ?
9887: AC 36 01 LDY $0136
988A: 4C A1 98 JMP $98A1
988D: AD 32 01 LDA $0132
9890: 30 AE BMI $9840
9892: AD 32 01 LDA $0132
9895: 4C AB 98 JMP $98AB
9898: A5 77 LDA $77
989A: D0 18 BNE $98B4
989C: EC 24 01 CPX $0124
989F: F0 05 BEQ $98A6
98A1: E8 INX
98A2: BD 00 01 LDA $0100,X
98A5: 2C .BYTE $2C
98A6: A9 30 LDA #$30
98A8: 4E 26 01 LSR $0126
98AB: 20 EB 98 JSR $98EB ; ?
98AE: F0 03 BEQ $98B3
98B0: 4C 2A 98 JMP $982A
98B3: 60 RTS
98B4: C6 77 DEC $77
98B6: AD 25 01 LDA $0125
98B9: 30 EB BMI $98A6
98BB: 20 6E AA JSR $AA6E ; Patch for Print Using
98BE: EA NOP
98BF: 8D 03 FF STA $FF03
98C2: AD 07 12 LDA $1207
98C5: 4C A8 98 JMP $98A8
98C8: AD 27 01 LDA $0127
98CB: F0 CB BEQ $9898
98CD: CE 27 01 DEC $0127
98D0: F0 03 BEQ $98D5
98D2: 4C 40 98 JMP $9840
98D5: AD 2E 01 LDA $012E
98D8: 30 F6 BMI $98D0
98DA: 20 D3 42 JSR $42D3 ; Get From ($3f) Bank1
98DD: C9 2C CMP #$2C
98DF: D0 AC BNE $988D
98E1: AD 33 01 LDA $0133
98E4: 20 EB 98 JSR $98EB ; ?
98E7: C8 INY
98E8: 4C DA 98 JMP $98DA
; ?
98EB: 20 0C 56 JSR $560C
98EE: CE 31 01 DEC $0131
98F1: 60 RTS
; ?
98F2: AC 36 01 LDY $0136
98F5: 20 8B 97 JSR $978B
98F8: 20 A7 99 JSR $99A7
98FB: D0 14 BNE $9911
98FD: 8C 34 01 STY $0134
9900: 90 1A BCC $991C
9902: AA TAX
9903: 20 8B 97 JSR $978B
9906: B0 05 BCS $990D
9908: 20 AF 99 JSR $99AF
990B: F0 0A BEQ $9917
990D: AC 34 01 LDY $0134
9910: 8A TXA
9911: 20 0C 56 JSR $560C
9914: 4C F5 98 JMP $98F5
9917: B0 EA BCS $9903
9919: AC 34 01 LDY $0134
991C: A6 77 LDX $77
991E: D0 7A BNE $999A
9920: 8E 31 01 STX $0131
9923: 88 DEY
9924: CE 31 01 DEC $0131
9927: 20 8B 97 JSR $978B
992A: B0 74 BCS $99A0
992C: C9 2C CMP #$2C
992E: F0 F7 BEQ $9927
9930: 20 7E 99 JSR $997E
9933: 90 EF BCC $9924
9935: C9 2E CMP #$2E
9937: D0 08 BNE $9941
9939: E8 INX
993A: E0 02 CPX #$02
993C: 90 E9 BCC $9927
993E: 4C 6C 79 JMP $796C ; Syntax Error
9941: 20 B3 99 JSR $99B3
9944: D0 0B BNE $9951
9946: 90 03 BCC $994B
9948: 8D 2B 01 STA $012B
994B: FE 2C 01 INC $012C,X
994E: 4C 27 99 JMP $9927
9951: C9 24 CMP #$24
9953: D0 0F BNE $9964
9955: 2C 25 01 BIT $0125
9958: 10 F1 BPL $994B
995A: 18 CLC
995B: 6E 25 01 ROR $0125
995E: CE 2C 01 DEC $012C
9961: 4C 4B 99 JMP $994B
9964: C9 5E CMP #$5E
9966: D0 16 BNE $997E
9968: A2 02 LDX #$02
996A: 20 8B 97 JSR $978B
996D: B0 CF BCS $993E
996F: C9 5E CMP #$5E
9971: D0 CB BNE $993E
9973: CA DEX
9974: 10 F4 BPL $996A
9976: EE 2F 01 INC $012F
9979: 20 8B 97 JSR $978B
997C: B0 22 BCS $99A0
997E: C9 2B CMP #$2B
9980: D0 19 BNE $999B
9982: AD 32 01 LDA $0132
9985: 10 05 BPL $998C
9987: A9 2B LDA #$2B
9989: 8D 32 01 STA $0132
998C: AD 2E 01 LDA $012E
998F: D0 AD BNE $993E
9991: 6E 2E 01 ROR $012E
9994: 8C 36 01 STY $0136
9997: EE 31 01 INC $0131
999A: 60 RTS
999B: C9 2D CMP #$2D
999D: F0 ED BEQ $998C
999F: 38 SEC
99A0: 8C 36 01 STY $0136
99A3: CE 36 01 DEC $0136
99A6: 60 RTS
99A7: C9 2B CMP #$2B
99A9: F0 15 BEQ $99C0
99AB: C9 2D CMP #$2D
99AD: F0 11 BEQ $99C0
99AF: C9 2E CMP #$2E
99B1: F0 0D BEQ $99C0
99B3: C9 3D CMP #$3D
99B5: F0 09 BEQ $99C0
99B7: C9 3E CMP #$3E
99B9: F0 05 BEQ $99C0
99BB: C9 23 CMP #$23
99BD: D0 01 BNE $99C0
99BF: 18 CLC
99C0: 60 RTS
; Evaluate <instr>
99C1: A5 66 LDA $66
99C3: 8D D6 03 STA $03D6
99C6: A5 67 LDA $67
99C8: 8D D7 03 STA $03D7
99CB: 20 EF 77 JSR $77EF ; Evaluate Expression
99CE: 20 DD 77 JSR $77DD ; Confirm String
99D1: A5 66 LDA $66
99D3: 8D D8 03 STA $03D8
99D6: A5 67 LDA $67
99D8: 8D D9 03 STA $03D9
99DB: A2 01 LDX #$01
99DD: 86 67 STX $67
99DF: 20 86 03 JSR $0386 ; CHRGOT entry
99E2: C9 29 CMP #$29
99E4: F0 03 BEQ $99E9
99E6: 20 09 88 JSR $8809
99E9: 20 56 79 JSR $7956 ; -Check Right Parenthesis
99EC: A6 67 LDX $67
99EE: D0 03 BNE $99F3
99F0: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
99F3: CA DEX
99F4: 86 63 STX $63
99F6: A2 03 LDX #$03
99F8: BD D6 03 LDA $03D6,X
99FB: 95 59 STA $59,X
99FD: CA DEX
99FE: 10 F8 BPL $99F8
9A00: A0 02 LDY #$02
9A02: A9 59 LDA #$59
9A04: 20 AB 03 JSR $03AB ; Fetch From RAM Bank 1
9A07: 99 5D 00 STA $5D,Y
9A0A: A9 5B LDA #$5B
9A0C: 20 AB 03 JSR $03AB ; Fetch From RAM Bank 1
9A0F: 99 60 00 STA $60,Y
9A12: 88 DEY
9A13: 10 ED BPL $9A02
9A15: A5 60 LDA $60
9A17: F0 3B BEQ $9A54
9A19: A9 00 LDA #$00
9A1B: 85 64 STA $64
9A1D: 18 CLC
9A1E: A5 60 LDA $60
9A20: 65 63 ADC $63
9A22: B0 30 BCS $9A54
9A24: C5 5D CMP $5D
9A26: 90 02 BCC $9A2A
9A28: D0 2A BNE $9A54
9A2A: A4 64 LDY $64
9A2C: C4 60 CPY $60
9A2E: F0 1F BEQ $9A4F
9A30: 98 TYA
9A31: 18 CLC
9A32: 65 63 ADC $63
9A34: A8 TAY
9A35: A9 5E LDA #$5E
9A37: 20 AB 03 JSR $03AB ; Fetch From RAM Bank 1
9A3A: 85 79 STA $79
9A3C: A4 64 LDY $64
9A3E: A9 61 LDA #$61
9A40: 20 AB 03 JSR $03AB ; Fetch From RAM Bank 1
9A43: C5 79 CMP $79
9A45: F0 04 BEQ $9A4B
9A47: E6 63 INC $63
9A49: D0 CE BNE $9A19
9A4B: E6 64 INC $64
9A4D: D0 DB BNE $9A2A
9A4F: E6 63 INC $63
9A51: A5 63 LDA $63
9A53: 2C .BYTE $2C
9A54: A9 00 LDA #$00
9A56: 8D 03 FF STA $FF03
9A59: 48 PHA
9A5A: AD D8 03 LDA $03D8
9A5D: AC D9 03 LDY $03D9
9A60: 20 85 87 JSR $8785
9A63: 8D 03 FF STA $FF03
9A66: AD D6 03 LDA $03D6
9A69: AC D7 03 LDY $03D7
9A6C: 20 85 87 JSR $8785
9A6F: 68 PLA
9A70: A8 TAY
9A71: 4C D4 84 JMP $84D4 ; Byte To Float
; ?
9A74: 20 8F 9D JSR $9D8F ; Read Current X Position to A/Y
9A77: A2 00 LDX #$00
9A79: E8 INX
9A7A: 38 SEC
9A7B: E9 5A SBC #$5A
9A7D: B0 FA BCS $9A79
9A7F: 88 DEY
9A80: 10 F7 BPL $9A79
9A82: 8E 49 11 STX $1149
9A85: 48 PHA
9A86: 69 5A ADC #$5A
9A88: 20 94 9A JSR $9A94
9A8B: 68 PLA
9A8C: 18 CLC
9A8D: 49 FF EOR #$FF
9A8F: 69 01 ADC #$01
9A91: CE 49 11 DEC $1149
9A94: A2 FF LDX #$FF
9A96: E8 INX
9A97: 38 SEC
9A98: E9 0A SBC #$0A
9A9A: B0 FA BCS $9A96
9A9C: 69 0A ADC #$0A
9A9E: 85 8E STA $8E
9AA0: 8A TXA
9AA1: 0A ASL A
9AA2: AA TAX
9AA3: BD 2A 9F LDA $9F2A,X
9AA6: BC 29 9F LDY $9F29,X ; Conv Words Hi
9AA9: 18 CLC
9AAA: C6 8E DEC $8E
9AAC: 30 0C BMI $9ABA
9AAE: 7D 3E 9F ADC $9F3E,X
9AB1: 48 PHA
9AB2: 98 TYA
9AB3: 7D 3D 9F ADC $9F3D,X ; Conv Words Lo
9AB6: A8 TAY
9AB7: 68 PLA
9AB8: 90 EF BCC $9AA9
9ABA: 48 PHA
9ABB: A2 00 LDX #$00
9ABD: AD 49 11 LDA $1149
9AC0: 4A LSR A
9AC1: B0 02 BCS $9AC5
9AC3: A2 02 LDX #$02
9AC5: 68 PLA
9AC6: 9D 4A 11 STA $114A,X
9AC9: 98 TYA
9ACA: 9D 4B 11 STA $114B,X
9ACD: 60 RTS
; ?
9ACE: A0 19 LDY #$19
9AD0: 90 02 BCC $9AD4
9AD2: A0 1B LDY #$1B
9AD4: AD 49 11 LDA $1149
9AD7: 69 02 ADC #$02
9AD9: 4A LSR A
9ADA: 4A LSR A
9ADB: 08 PHP
9ADC: 20 8F 9D JSR $9D8F ; Read Current X Position to A/Y
9ADF: C0 FF CPY #$FF
9AE1: 90 07 BCC $9AEA
9AE3: 8A TXA
9AE4: A8 TAY
9AE5: 20 8F 9D JSR $9D8F ; Read Current X Position to A/Y
9AE8: B0 03 BCS $9AED
9AEA: 20 AE 9D JSR $9DAE ; ?
9AED: 28 PLP
9AEE: B0 1B BCS $9B0B
9AF0: 4C 9E 9D JMP $9D9E
; ?
9AF3: 8D 4E 11 STA $114E
9AF6: A2 23 LDX #$23
9AF8: 0E 4E 11 ASL $114E
9AFB: 20 CE 9A JSR $9ACE ; ?
9AFE: 9D 31 11 STA $1131,X
9B01: 98 TYA
9B02: 9D 32 11 STA $1132,X
9B05: E8 INX
9B06: E8 INX
9B07: E0 2B CPX #$2B
9B09: 90 ED BCC $9AF8
9B0B: 60 RTS
; Evaluate <rdot>
9B0C: 20 F7 87 JSR $87F7
9B0F: E0 02 CPX #$02
9B11: 90 10 BCC $9B23
9B13: F0 03 BEQ $9B18
9B15: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
9B18: 20 49 9C JSR $9C49 ; Examine Pixel
9B1B: A8 TAY
9B1C: 90 02 BCC $9B20
9B1E: A0 00 LDY #$00
9B20: 4C D4 84 JMP $84D4 ; Byte To Float
9B23: 8A TXA
9B24: 0A ASL A
9B25: AA TAX
9B26: BD 31 11 LDA $1131,X
9B29: A8 TAY
9B2A: BD 32 11 LDA $1132,X
9B2D: 4C 3C 79 JMP $793C ; Fixed-Float
; Draw Line
9B30: A2 02 LDX #$02
9B32: A0 06 LDY #$06
9B34: A9 00 LDA #$00
9B36: 9D 3D 11 STA $113D,X
9B39: 9D 3E 11 STA $113E,X
9B3C: 20 99 9D JSR $9D99 ; ?
9B3F: 10 08 BPL $9B49
9B41: DE 3D 11 DEC $113D,X
9B44: DE 3E 11 DEC $113E,X
9B47: D0 0B BNE $9B54
9B49: C9 00 CMP #$00
9B4B: D0 04 BNE $9B51
9B4D: C0 00 CPY #$00
9B4F: F0 03 BEQ $9B54
9B51: FE 3D 11 INC $113D,X
9B54: 9D 39 11 STA $1139,X
9B57: 0A ASL A
9B58: 9D 41 11 STA $1141,X
9B5B: 98 TYA
9B5C: 9D 3A 11 STA $113A,X
9B5F: 2A ROL A
9B60: 9D 42 11 STA $1142,X
9B63: CA DEX
9B64: CA DEX
9B65: A0 04 LDY #$04
9B67: E0 00 CPX #$00
9B69: F0 C9 BEQ $9B34
9B6B: A2 0A LDX #$0A
9B6D: A0 08 LDY #$08
9B6F: 20 7C 9D JSR $9D7C ; Subtract Graphics Coordinate
9B72: A9 00 LDA #$00
9B74: 2A ROL A
9B75: 2A ROL A
9B76: 8D 47 11 STA $1147
9B79: 49 02 EOR #$02
9B7B: 8D 48 11 STA $1148
9B7E: 18 CLC
9B7F: A9 10 LDA #$10
9B81: 6D 47 11 ADC $1147
9B84: A8 TAY
9B85: 48 PHA
9B86: 49 02 EOR #$02
9B88: AA TAX
9B89: 20 7C 9D JSR $9D7C ; Subtract Graphics Coordinate
9B8C: 9D 31 11 STA $1131,X
9B8F: 98 TYA
9B90: 9D 32 11 STA $1132,X
9B93: 68 PLA
9B94: A8 TAY
9B95: 18 CLC
9B96: A9 08 LDA #$08
9B98: 6D 48 11 ADC $1148
9B9B: AA TAX
9B9C: 20 7C 9D JSR $9D7C ; Subtract Graphics Coordinate
9B9F: 8D 45 11 STA $1145
9BA2: 8C 46 11 STY $1146
9BA5: 20 FB 9B JSR $9BFB ; Plot Pixel
9BA8: AC 48 11 LDY $1148
9BAB: 38 SEC
9BAC: B9 39 11 LDA $1139,Y
9BAF: E9 01 SBC #$01
9BB1: 99 39 11 STA $1139,Y
9BB4: B0 0B BCS $9BC1
9BB6: B9 3A 11 LDA $113A,Y
9BB9: E9 00 SBC #$00
9BBB: 99 3A 11 STA $113A,Y
9BBE: B0 01 BCS $9BC1
9BC0: 60 RTS
9BC1: AE 47 11 LDX $1147
9BC4: AD 46 11 LDA $1146
9BC7: 30 06 BMI $9BCF
9BC9: 20 EA 9B JSR $9BEA
9BCC: AE 48 11 LDX $1148
9BCF: 18 CLC
9BD0: AD 45 11 LDA $1145
9BD3: 7D 41 11 ADC $1141,X
9BD6: 8D 45 11 STA $1145
9BD9: AD 46 11 LDA $1146
9BDC: 7D 42 11 ADC $1142,X
9BDF: 8D 46 11 STA $1146
9BE2: AE 48 11 LDX $1148
9BE5: 20 EA 9B JSR $9BEA
9BE8: F0 BB BEQ $9BA5
9BEA: A0 02 LDY #$02
9BEC: 18 CLC
9BED: BD 31 11 LDA $1131,X
9BF0: 7D 3D 11 ADC $113D,X
9BF3: 9D 31 11 STA $1131,X
9BF6: E8 INX
9BF7: 88 DEY
9BF8: D0 F3 BNE $9BED
9BFA: 60 RTS
; Plot Pixel
9BFB: AD 6C 11 LDA $116C ; Box Fill Flag
9BFE: 0D 6B 11 ORA $116B ; Double Width Flag
9C01: F0 16 BEQ $9C19
9C03: EE 31 11 INC $1131
9C06: D0 03 BNE $9C0B
9C08: EE 32 11 INC $1132
9C0B: 20 19 9C JSR $9C19
9C0E: AE 31 11 LDX $1131
9C11: D0 03 BNE $9C16
9C13: CE 32 11 DEC $1132
9C16: CE 31 11 DEC $1131
9C19: 20 24 9D JSR $9D24 ; Calc Hi-Res Row/Column
9C1C: B0 24 BCS $9C42
9C1E: 20 70 9C JSR $9C70 ; Set Hi-Res Color Cell
9C21: 20 E8 9C JSR $9CE8
9C24: 8D 6D 11 STA $116D
9C27: B1 8C LDA ($8C),Y
9C29: 0D 6D 11 ORA $116D
9C2C: 24 D8 BIT $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
9C2E: 10 13 BPL $9C43
9C30: 48 PHA
9C31: A6 83 LDX $83
9C33: AD 6D 11 LDA $116D
9C36: 3D 25 9F AND $9F25,X ; Multicolor Pixel Masks
9C39: 8D 6D 11 STA $116D
9C3C: 68 PLA
9C3D: 4D 6D 11 EOR $116D
9C40: 91 8C STA ($8C),Y
9C42: 60 RTS
9C43: A6 83 LDX $83
9C45: D0 F9 BNE $9C40
9C47: F0 F4 BEQ $9C3D
; Examine Pixel
9C49: 20 E3 9C JSR $9CE3 ; Position Pixel
9C4C: B0 21 BCS $9C6F
9C4E: 8D 6D 11 STA $116D
9C51: B1 8C LDA ($8C),Y
9C53: 2D 6D 11 AND $116D
9C56: 2A ROL A
9C57: CA DEX
9C58: 10 FC BPL $9C56
9C5A: 2A ROL A
9C5B: 24 8B BIT $8B
9C5D: 30 06 BMI $9C65
9C5F: 29 03 AND #$03
9C61: C5 83 CMP $83
9C63: 18 CLC
9C64: 60 RTS
9C65: 18 CLC
9C66: 29 03 AND #$03
9C68: F0 03 BEQ $9C6D
9C6A: A2 00 LDX #$00
9C6C: 60 RTS
9C6D: A2 FF LDX #$FF
9C6F: 60 RTS
; Set Hi-Res Color Cell
9C70: BD 33 C0 LDA $C033,X ; Screen Address Low
9C73: 85 8C STA $8C
9C75: BD CA 9C LDA $9CCA,X ; Video Matrix Lines Hi
9C78: 85 8D STA $8D
9C7A: A5 83 LDA $83
9C7C: D0 08 BNE $9C86
9C7E: AD E2 03 LDA $03E2
9C81: 24 D8 BIT $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
9C83: 10 08 BPL $9C8D
9C85: 60 RTS
9C86: C9 02 CMP #$02
9C88: D0 10 BNE $9C9A
9C8A: AD E3 03 LDA $03E3
9C8D: 29 0F AND #$0F
9C8F: 85 77 STA $77
9C91: B1 8C LDA ($8C),Y
9C93: 29 F0 AND #$F0
9C95: 05 77 ORA $77
9C97: 91 8C STA ($8C),Y
9C99: 60 RTS
9C9A: B0 10 BCS $9CAC
9C9C: AD E2 03 LDA $03E2
9C9F: 29 F0 AND #$F0
9CA1: 85 77 STA $77
9CA3: B1 8C LDA ($8C),Y
9CA5: 29 0F AND #$0F
9CA7: 05 77 ORA $77
9CA9: 91 8C STA ($8C),Y
9CAB: 60 RTS
9CAC: A5 8D LDA $8D
9CAE: 29 03 AND #$03
9CB0: 09 D8 ORA #$D8
9CB2: 85 8D STA $8D
9CB4: A9 00 LDA #$00
9CB6: 8D 00 FF STA $FF00 ; MMU Configuration Register
9CB9: 78 SEI
9CBA: A5 01 LDA $01
9CBC: 48 PHA
9CBD: 29 FE AND #$FE
9CBF: 85 01 STA $01
9CC1: A5 85 LDA $85 ; Multicolor 2 (2)
9CC3: 91 8C STA ($8C),Y
9CC5: 68 PLA
9CC6: 85 01 STA $01
9CC8: 58 CLI
9CC9: 60 RTS
; Video Matrix Lines Hi
9CCA: 1C 1C 1C 1C 1C 1C 1C 1D ; '{RED}{RED}{RED}{RED}{RED}{RED}{RED}{RIGHT}'
9CD2: 1D 1D 1D 1D 1D 1E 1E 1E ; '{RIGHT}{RIGHT}{RIGHT}{RIGHT}{RIGHT}{GREEN}{GREEN}{GREEN}'
9CDA: 1E 1E 1E 1E 1F 1F 1F 1F ; '{GREEN}{GREEN}{GREEN}{GREEN}{BLUE}{BLUE}{BLUE}{BLUE}'
9CE2: 1F ; '{BLUE}'
; Position Pixel
9CE3: 20 24 9D JSR $9D24 ; Calc Hi-Res Row/Column
9CE6: B0 33 BCS $9D1B
9CE8: 98 TYA
9CE9: 18 CLC
9CEA: 7D 33 C0 ADC $C033,X ; Screen Address Low
9CED: 85 8C STA $8C
9CEF: BD 4C C0 LDA $C04C,X ; Screen Address High
9CF2: 69 00 ADC #$00
9CF4: 06 8C ASL $8C
9CF6: 2A ROL A
9CF7: 06 8C ASL $8C
9CF9: 2A ROL A
9CFA: 06 8C ASL $8C
9CFC: 2A ROL A
9CFD: 85 8D STA $8D
9CFF: AD 33 11 LDA $1133
9D02: 29 07 AND #$07
9D04: A8 TAY
9D05: AD 31 11 LDA $1131
9D08: 24 D8 BIT $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
9D0A: 08 PHP
9D0B: 10 01 BPL $9D0E
9D0D: 0A ASL A
9D0E: 29 07 AND #$07
9D10: AA TAX
9D11: BD 1C 9D LDA $9D1C,X ; Bit Masks
9D14: 28 PLP
9D15: 10 04 BPL $9D1B
9D17: E8 INX
9D18: 1D 1C 9D ORA $9D1C,X ; Bit Masks
9D1B: 60 RTS
; Bit Masks
9D1C: 80 ; '.'
9D1D: 40 20 10 08 04 02 01 ; '@ ...{ULON}.'
; Calc Hi-Res Row/Column
9D24: AD 32 11 LDA $1132
9D27: 4A LSR A
9D28: D0 1E BNE $9D48
9D2A: AD 31 11 LDA $1131
9D2D: 6A ROR A
9D2E: 4A LSR A
9D2F: 24 D8 BIT $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
9D31: 30 01 BMI $9D34
9D33: 4A LSR A
9D34: A8 TAY
9D35: C0 28 CPY #$28
9D37: B0 0F BCS $9D48
9D39: AD 34 11 LDA $1134
9D3C: D0 0A BNE $9D48
9D3E: AD 33 11 LDA $1133
9D41: 4A LSR A
9D42: 4A LSR A
9D43: 4A LSR A
9D44: AA TAX
9D45: C9 19 CMP #$19
9D47: 60 RTS
9D48: 38 SEC
9D49: 60 RTS
; ?
9D4A: AD 6A 11 LDA $116A ; SCALE Mode Flag
9D4D: F0 17 BEQ $9D66
9D4F: A5 87 LDA $87
9D51: A4 88 LDY $88
9D53: 20 5A 9D JSR $9D5A
9D56: A5 89 LDA $89
9D58: A4 8A LDY $8A
9D5A: 20 AE 9D JSR $9DAE ; ?
9D5D: 9D 31 11 STA $1131,X
9D60: 98 TYA
9D61: E8 INX
9D62: 9D 31 11 STA $1131,X
9D65: E8 INX
9D66: 60 RTS
; Calculate Graphics Coordinates
9D67: 90 07 BCC $9D70
9D69: B0 14 BCS $9D7F
9D6B: B0 0F BCS $9D7C ; Subtract Graphics Coordinate
; Add Graphics Coordinate
9D6D: 20 8F 9D JSR $9D8F ; Read Current X Position to A/Y
9D70: 18 CLC
9D71: 7D 31 11 ADC $1131,X
9D74: 48 PHA
9D75: 98 TYA
9D76: 7D 32 11 ADC $1132,X
9D79: A8 TAY
9D7A: 68 PLA
9D7B: 60 RTS
; Subtract Graphics Coordinate
9D7C: 20 8F 9D JSR $9D8F ; Read Current X Position to A/Y
9D7F: 38 SEC
9D80: FD 31 11 SBC $1131,X
9D83: 85 59 STA $59
9D85: 98 TYA
9D86: FD 32 11 SBC $1132,X
9D89: A8 TAY
9D8A: 08 PHP
9D8B: A5 59 LDA $59
9D8D: 28 PLP
9D8E: 60 RTS
; Read Current X Position to A/Y
9D8F: B9 31 11 LDA $1131,Y
9D92: 48 PHA
9D93: B9 32 11 LDA $1132,Y
9D96: A8 TAY
9D97: 68 PLA
9D98: 60 RTS
; ?
9D99: 20 7C 9D JSR $9D7C ; Subtract Graphics Coordinate
9D9C: 10 0F BPL $9DAD
9D9E: 08 PHP
9D9F: 18 CLC
9DA0: 49 FF EOR #$FF
9DA2: 69 01 ADC #$01
9DA4: 48 PHA
9DA5: 98 TYA
9DA6: 49 FF EOR #$FF
9DA8: 69 00 ADC #$00
9DAA: A8 TAY
9DAB: 68 PLA
9DAC: 28 PLP
9DAD: 60 RTS
; ?
9DAE: 84 8E STY $8E
9DB0: 85 8F STA $8F
9DB2: BD 31 11 LDA $1131,X
9DB5: BC 32 11 LDY $1132,X
9DB8: 08 PHP
9DB9: 20 9C 9D JSR $9D9C
9DBC: 9D 31 11 STA $1131,X
9DBF: 98 TYA
9DC0: 9D 32 11 STA $1132,X
9DC3: A9 00 LDA #$00
9DC5: 8D 77 11 STA $1177
9DC8: A0 10 LDY #$10
9DCA: 46 8E LSR $8E
9DCC: 66 8F ROR $8F
9DCE: 90 0F BCC $9DDF
9DD0: 18 CLC
9DD1: 7D 31 11 ADC $1131,X
9DD4: 48 PHA
9DD5: AD 77 11 LDA $1177
9DD8: 7D 32 11 ADC $1132,X
9DDB: 8D 77 11 STA $1177
9DDE: 68 PLA
9DDF: 4E 77 11 LSR $1177
9DE2: 6A ROR A
9DE3: 88 DEY
9DE4: D0 E4 BNE $9DCA
9DE6: 69 00 ADC #$00
9DE8: AC 77 11 LDY $1177
9DEB: 90 01 BCC $9DEE
9DED: C8 INY
9DEE: 28 PLP
9DEF: 4C 9C 9D JMP $9D9C
; Restore Pixel Cursor
9DF2: A0 00 LDY #$00
9DF4: 20 F9 9D JSR $9DF9
9DF7: A0 02 LDY #$02
9DF9: B9 35 11 LDA $1135,Y
9DFC: 99 31 11 STA $1131,Y
9DFF: B9 36 11 LDA $1136,Y
9E02: 99 32 11 STA $1132,Y
9E05: 60 RTS
; Check Optional Float/Fixed Parameter
9E06: 20 86 03 JSR $0386 ; CHRGOT entry
9E09: F0 0C BEQ $9E17
9E0B: 20 5C 79 JSR $795C ; -Check Comma
9E0E: C9 2C CMP #$2C
9E10: F0 05 BEQ $9E17
9E12: 20 12 88 JSR $8812 ; -Input Float/Fixed Value
9E15: 38 SEC
9E16: 60 RTS
9E17: A9 00 LDA #$00
9E19: A8 TAY
9E1A: 18 CLC
9E1B: 60 RTS
; Input Optional Byte Parameter -Check Byte Parameter in List
9E1C: A2 00 LDX #$00
9E1E: 20 86 03 JSR $0386 ; CHRGOT entry
9E21: F0 F7 BEQ $9E1A
9E23: 20 5C 79 JSR $795C ; -Check Comma
9E26: C9 2C CMP #$2C
9E28: F0 F0 BEQ $9E1A
9E2A: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
9E2D: 38 SEC
9E2E: 60 RTS
; Parse Graphics Command
9E2F: 20 74 A0 JSR $A074
; Get Color Source Param
9E32: A2 01 LDX #$01
9E34: 20 86 03 JSR $0386 ; CHRGOT entry
9E37: F0 13 BEQ $9E4C
9E39: C9 2C CMP #$2C
9E3B: F0 0F BEQ $9E4C
9E3D: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
9E40: E0 04 CPX #$04
9E42: B0 0B BCS $9E4F
9E44: E0 02 CPX #$02
9E46: 24 D8 BIT $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
9E48: 30 02 BMI $9E4C
9E4A: B0 03 BCS $9E4F
9E4C: 86 83 STX $83
9E4E: 60 RTS
9E4F: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
9E52: 20 86 03 JSR $0386 ; CHRGOT entry
9E55: F0 07 BEQ $9E5E
9E57: 20 5C 79 JSR $795C ; -Check Comma
9E5A: C9 2C CMP #$2C
9E5C: D0 12 BNE $9E70
9E5E: A0 00 LDY #$00
9E60: B9 31 11 LDA $1131,Y
9E63: 9D 31 11 STA $1131,X
9E66: E8 INX
9E67: C8 INY
9E68: C0 04 CPY #$04
9E6A: D0 F4 BNE $9E60
9E6C: 60 RTS
9E6D: 20 5C 79 JSR $795C ; -Check Comma
9E70: 8E 78 11 STX $1178
9E73: 20 08 9F JSR $9F08
9E76: 20 86 03 JSR $0386 ; CHRGOT entry
9E79: C9 2C CMP #$2C
9E7B: F0 56 BEQ $9ED3
9E7D: C9 3B CMP #$3B
9E7F: F0 03 BEQ $9E84
9E81: 4C 6C 79 JMP $796C ; Syntax Error
9E84: 20 80 03 JSR $0380 ; CHRGET
9E87: 20 12 88 JSR $8812 ; -Input Float/Fixed Value
9E8A: 85 77 STA $77
9E8C: 98 TYA
9E8D: A4 77 LDY $77
9E8F: 20 77 9A JSR $9A77
9E92: AE 78 11 LDX $1178
9E95: BD 31 11 LDA $1131,X
9E98: 9D 33 11 STA $1133,X
9E9B: BD 32 11 LDA $1132,X
9E9E: 9D 34 11 STA $1134,X
9EA1: 20 4A 9D JSR $9D4A ; ?
9EA4: A9 0E LDA #$0E
9EA6: 8D 79 11 STA $1179
9EA9: 18 CLC
9EAA: AE 78 11 LDX $1178
9EAD: 20 CE 9A JSR $9ACE ; ?
9EB0: 9D 31 11 STA $1131,X
9EB3: 98 TYA
9EB4: 9D 32 11 STA $1132,X
9EB7: A0 00 LDY #$00
9EB9: 4E 79 11 LSR $1179
9EBC: 90 02 BCC $9EC0
9EBE: A0 02 LDY #$02
9EC0: 20 6B 9D JSR $9D6B
9EC3: 9D 31 11 STA $1131,X
9EC6: 98 TYA
9EC7: 9D 32 11 STA $1132,X
9ECA: E8 INX
9ECB: E8 INX
9ECC: 4E 79 11 LSR $1179
9ECF: D0 DC BNE $9EAD
9ED1: 18 CLC
9ED2: 60 RTS
9ED3: 20 80 03 JSR $0380 ; CHRGET
9ED6: EE 78 11 INC $1178
9ED9: EE 78 11 INC $1178
9EDC: 20 08 9F JSR $9F08
9EDF: AE 78 11 LDX $1178
9EE2: CA DEX
9EE3: CA DEX
9EE4: 20 4A 9D JSR $9D4A ; ?
9EE7: A0 02 LDY #$02
9EE9: AE 78 11 LDX $1178
9EEC: E8 INX
9EED: E8 INX
9EEE: CA DEX
9EEF: CA DEX
9EF0: 4E 79 11 LSR $1179
9EF3: 90 0A BCC $9EFF
9EF5: 20 6D 9D JSR $9D6D ; Add Graphics Coordinate
9EF8: 9D 31 11 STA $1131,X
9EFB: 98 TYA
9EFC: 9D 32 11 STA $1132,X
9EFF: A0 00 LDY #$00
9F01: EC 78 11 CPX $1178
9F04: F0 E8 BEQ $9EEE
9F06: 18 CLC
9F07: 60 RTS
9F08: 20 86 03 JSR $0386 ; CHRGOT entry
9F0B: C9 AA CMP #$AA
9F0D: F0 05 BEQ $9F14
9F0F: C9 AB CMP #$AB
9F11: F0 01 BEQ $9F14
9F13: 18 CLC
9F14: 2E 79 11 ROL $1179
9F17: 20 C0 6D JSR $6DC0
9F1A: AE 78 11 LDX $1178
9F1D: 9D 32 11 STA $1132,X
9F20: 98 TYA
9F21: 9D 31 11 STA $1131,X
9F24: 60 RTS
; Multicolor Pixel Masks
9F25: FF AA 55 00 ; '..u{0}'
; Conv Words Hi
9F29: 00 ; '{0}'
9F2A: 00 2C 71 57 8D 80 00 A4 ; '{0},Qw{SHCR}.{0}.'
9F32: 8F C4 19 DD B2 F0 90 FC ; '{FLSHOFF}D....{BLACK}.'
9F3A: 1C ; '{RED}'
; Unused
9F3B: FF FF ; '..'
; Conv Words Lo
9F3D: 04 ; '.'
9F3E: 72 04 50 04 0B 03 A8 03 ; 'R.p.{LOCK}{STOP}.{STOP}'
9F46: 28 02 90 01 E3 01 28 00 ; '({ULON}{BLACK}...({0}'
9F4E: 63 ; 'c'
; Allocate 9K Graphics Area for graphic/sprdef
9F4F: A5 76 LDA $76 ; Graphics flag: FF = Graphics allocated
9F51: F0 01 BEQ $9F54
9F53: 60 RTS
9F54: AD 11 12 LDA $1211
9F57: 18 CLC
9F58: 69 24 ADC #$24
9F5A: B0 0E BCS $9F6A
9F5C: 85 62 STA $62
9F5E: CD 13 12 CMP $1213
9F61: 90 0A BCC $9F6D
9F63: D0 05 BNE $9F6A
9F65: CC 12 12 CPY $1212 ; Basic Program Limit [FF00]
9F68: 90 03 BCC $9F6D
9F6A: 4C 3A 4D JMP $4D3A ; Print 'out of memory'
9F6D: C6 76 DEC $76 ; Graphics flag: FF = Graphics allocated
9F6F: AD 10 12 LDA $1210 ; End of Basic, Bank 0
9F72: 85 24 STA $24
9F74: A5 62 LDA $62
9F76: 85 25 STA $25
9F78: AE 10 12 LDX $1210 ; End of Basic, Bank 0
9F7B: 86 26 STX $26
9F7D: AD 11 12 LDA $1211
9F80: 85 27 STA $27
9F82: 38 SEC
9F83: E9 1C SBC #$1C
9F85: A8 TAY
9F86: 8A TXA
9F87: 49 FF EOR #$FF
9F89: 85 50 STA $50
9F8B: 98 TYA
9F8C: 49 FF EOR #$FF
9F8E: 85 51 STA $51
9F90: A0 00 LDY #$00
9F92: E6 50 INC $50
9F94: D0 04 BNE $9F9A
9F96: E6 51 INC $51
9F98: F0 18 BEQ $9FB2
9F9A: A5 24 LDA $24
9F9C: D0 02 BNE $9FA0
9F9E: C6 25 DEC $25
9FA0: C6 24 DEC $24
9FA2: A5 26 LDA $26
9FA4: D0 02 BNE $9FA8
9FA6: C6 27 DEC $27
9FA8: C6 26 DEC $26
9FAA: 20 C0 03 JSR $03C0 ; Index2 Indirect Fetch From RAM Bank 0
9FAD: 91 24 STA ($24),Y
9FAF: 4C 92 9F JMP $9F92
9FB2: 18 CLC
9FB3: AD 11 12 LDA $1211
9FB6: 69 24 ADC #$24
9FB8: 8D 11 12 STA $1211
9FBB: A5 2E LDA $2E
9FBD: 69 24 ADC #$24
9FBF: 85 2E STA $2E
9FC1: A5 44 LDA $44
9FC3: 69 24 ADC #$24
9FC5: 85 44 STA $44
9FC7: 20 4F 4F JSR $4F4F ; Rechain Lines
9FCA: 20 82 4F JSR $4F82 ; Reset End-of-Basic
9FCD: 24 7F BIT $7F
9FCF: 10 2D BPL $9FFE
9FD1: A2 24 LDX #$24
9FD3: 24 76 BIT $76 ; Graphics flag: FF = Graphics allocated
9FD5: 30 02 BMI $9FD9
9FD7: A2 DC LDX #$DC
9FD9: 8A TXA
9FDA: 18 CLC
9FDB: 65 3E ADC $3E
9FDD: 85 3E STA $3E
9FDF: 8A TXA
9FE0: 18 CLC
9FE1: 6D 03 12 ADC $1203
9FE4: 8D 03 12 STA $1203
9FE7: 8A TXA
9FE8: 18 CLC
9FE9: 6D 0F 12 ADC $120F
9FEC: 8D 0F 12 STA $120F
9FEF: 20 47 50 JSR $5047 ; Copy B-Stack Pointer
9FF2: A5 3F LDA $3F
9FF4: C9 FF CMP #$FF
9FF6: D0 07 BNE $9FFF
9FF8: A5 40 LDA $40
9FFA: C9 09 CMP #$09
9FFC: D0 01 BNE $9FFF
9FFE: 60 RTS
9FFF: A0 00 LDY #$00
A001: B1 3F LDA ($3F),Y
A003: C9 81 CMP #$81
A005: D0 09 BNE $A010
A007: A0 10 LDY #$10
A009: 20 62 A0 JSR $A062
A00C: A9 12 LDA #$12
A00E: D0 07 BNE $A017
A010: A0 04 LDY #$04
A012: 20 62 A0 JSR $A062
A015: A9 05 LDA #$05
A017: 18 CLC
A018: 65 3F ADC $3F
A01A: 85 3F STA $3F
A01C: 90 D4 BCC $9FF2
A01E: E6 40 INC $40
A020: D0 D0 BNE $9FF2
; Move Basic to $1c01
A022: A5 76 LDA $76 ; Graphics flag: FF = Graphics allocated
A024: D0 01 BNE $A027
A026: 60 RTS
A027: A0 00 LDY #$00
A029: 84 76 STY $76 ; Graphics flag: FF = Graphics allocated
A02B: 84 24 STY $24
A02D: 84 26 STY $26
A02F: A9 1C LDA #$1C
A031: 85 25 STA $25
A033: A9 40 LDA #$40
A035: 85 27 STA $27
A037: 20 C0 03 JSR $03C0 ; Index2 Indirect Fetch From RAM Bank 0
A03A: 91 24 STA ($24),Y
A03C: C8 INY
A03D: D0 F8 BNE $A037
A03F: E6 25 INC $25
A041: E6 27 INC $27
A043: AD 11 12 LDA $1211
A046: C5 27 CMP $27
A048: B0 ED BCS $A037
A04A: 38 SEC
A04B: A5 2E LDA $2E
A04D: E9 24 SBC #$24
A04F: 85 2E STA $2E
A051: AD 11 12 LDA $1211
A054: E9 24 SBC #$24
A056: 8D 11 12 STA $1211
A059: A5 44 LDA $44
A05B: E9 24 SBC #$24
A05D: 85 44 STA $44
A05F: 4C C7 9F JMP $9FC7
A062: B1 3F LDA ($3F),Y
A064: 24 76 BIT $76 ; Graphics flag: FF = Graphics allocated
A066: D0 06 BNE $A06E
A068: 38 SEC
A069: E9 24 SBC #$24
A06B: 91 3F STA ($3F),Y
A06D: 60 RTS
A06E: 18 CLC
A06F: 69 24 ADC #$24
A071: 91 3F STA ($3F),Y
A073: 60 RTS
A074: A5 76 LDA $76 ; Graphics flag: FF = Graphics allocated
A076: F0 01 BEQ $A079
A078: 60 RTS
A079: A2 23 LDX #$23
A07B: 4C 3C 4D JMP $4D3C ; Error
; Perform [catalog/directory]
A07E: 20 BF A3 JSR $A3BF ; Parse DOS Commands
A081: A5 80 LDA $80
A083: 29 E6 AND #$E6
A085: F0 03 BEQ $A08A
A087: 4C 6C 79 JMP $796C ; Syntax Error
A08A: A0 01 LDY #$01
A08C: A2 01 LDX #$01
A08E: A5 80 LDA $80
A090: 29 11 AND #$11
A092: F0 06 BEQ $A09A
A094: 4A LSR A
A095: 90 02 BCC $A099
A097: E8 INX
A098: E8 INX
A099: E8 INX
A09A: 8A TXA
A09B: 20 67 A6 JSR $A667 ; Set DOS Parameters
A09E: A9 00 LDA #$00
A0A0: AA TAX
A0A1: 20 87 92 JSR $9287 ; Set Load/Save Bank
A0A4: A0 60 LDY #$60
A0A6: AE 1C 01 LDX $011C
A0A9: A9 00 LDA #$00
A0AB: 20 57 92 JSR $9257 ; Call 'setlfs'
A0AE: 38 SEC
A0AF: 20 D8 90 JSR $90D8 ; Basic 'open'
A0B2: 90 09 BCC $A0BD
A0B4: 48 PHA
A0B5: 20 14 A1 JSR $A114
A0B8: 68 PLA
A0B9: AA TAX
A0BA: 4C 3C 4D JMP $4D3C ; Error
A0BD: A2 00 LDX #$00
A0BF: 20 45 A8 JSR $A845 ; Set Bank 15
A0C2: 20 C6 FF JSR $FFC6 ; (ichkin) Set Input [F106]
A0C5: A0 03 LDY #$03
A0C7: 8C 74 11 STY $1174
A0CA: 20 63 92 JSR $9263 ; Call 'getin'
A0CD: 8D 75 11 STA $1175
A0D0: 20 51 92 JSR $9251 ; Call 'status'
A0D3: D0 3F BNE $A114
A0D5: 20 63 92 JSR $9263 ; Call 'getin'
A0D8: 8D 76 11 STA $1176
A0DB: 20 51 92 JSR $9251 ; Call 'status'
A0DE: D0 34 BNE $A114
A0E0: CE 74 11 DEC $1174
A0E3: D0 E5 BNE $A0CA
A0E5: AE 75 11 LDX $1175
A0E8: AD 76 11 LDA $1176
A0EB: 20 32 8E JSR $8E32 ; Print Integer
A0EE: A9 20 LDA #$20
A0F0: 20 69 92 JSR $9269 ; Call 'chrout'
A0F3: 20 63 92 JSR $9263 ; Call 'getin'
A0F6: 48 PHA
A0F7: 20 51 92 JSR $9251 ; Call 'status'
A0FA: D0 17 BNE $A113
A0FC: 68 PLA
A0FD: F0 06 BEQ $A105
A0FF: 20 69 92 JSR $9269 ; Call 'chrout'
A102: 4C F3 A0 JMP $A0F3
A105: A9 0D LDA #$0D
A107: 20 69 92 JSR $9269 ; Call 'chrout'
A10A: 20 93 92 JSR $9293 ; Call 'test stop'
A10D: F0 05 BEQ $A114
A10F: A0 02 LDY #$02
A111: D0 B4 BNE $A0C7
A113: 68 PLA
A114: 20 6F 92 JSR $926F ; Call 'clrchn'
A117: A9 00 LDA #$00
A119: 18 CLC
A11A: 4C 75 92 JMP $9275 ; Call 'close'
; Perform [dopen]
A11D: A9 22 LDA #$22 ; allowed params: File,#,U,D,@,W
A11F: 20 C1 A3 JSR $A3C1
A122: 20 6F A7 JSR $A76F
A125: 20 57 A1 JSR $A157 ; Find Spare SA
A128: A0 05 LDY #$05 ; mask offset
A12A: A2 04 LDX #$04 ; mask length
A12C: 24 80 BIT $80
A12E: 50 13 BVC $A143 ; no write flag
A130: A2 08 LDX #$08
A132: D0 0F BNE $A143
; Perform [append]
A134: A9 E2 LDA #$E2 ; allowed params: File,#,U,D
A136: 20 C1 A3 JSR $A3C1
A139: 20 6F A7 JSR $A76F
A13C: 20 57 A1 JSR $A157 ; Find Spare SA
A13F: A0 16 LDY #$16 ; mask offset
A141: A2 05 LDX #$05 ; mask length
A143: 8A TXA
A144: 20 67 A6 JSR $A667 ; Set DOS Parameters
A147: 20 6F 92 JSR $926F ; Call 'clrchn'
A14A: A9 00 LDA #$00
A14C: AA TAX
A14D: 20 87 92 JSR $9287 ; Set Load/Save Bank
A150: 20 D8 90 JSR $90D8 ; Basic 'open'
A153: EA NOP
A154: 4C B2 A3 JMP $A3B2
; Find Spare SA
A157: A0 61 LDY #$61
A159: C8 INY
A15A: C0 6F CPY #$6F
A15C: F0 0C BEQ $A16A
A15E: 20 45 A8 JSR $A845 ; Set Bank 15
A161: 20 5C FF JSR $FF5C ; lkupsa (second addr)
A164: 90 F3 BCC $A159
A166: 8C 1D 01 STY $011D
A169: 60 RTS
A16A: A2 01 LDX #$01
A16C: 4C 3C 4D JMP $4D3C ; Error
; Perform [dclose]
A16F: A9 F3 LDA #$F3
A171: 20 C1 A3 JSR $A3C1
A174: 20 0D A8 JSR $A80D ; Release String
A177: A5 80 LDA $80
A179: 29 04 AND #$04
A17B: F0 06 BEQ $A183
A17D: AD 1B 01 LDA $011B
A180: 4C 75 92 JMP $9275 ; Call 'close'
A183: AD 1C 01 LDA $011C
A186: 20 45 A8 JSR $A845 ; Set Bank 15
A189: 4C 4A FF JMP $FF4A ; close all
; Perform [dsave]
A18C: A9 66 LDA #$66
A18E: 20 C1 A3 JSR $A3C1 ; parse disk command parameters
A191: 20 50 A7 JSR $A750 ; filename given?
A194: A0 05 LDY #$05
A196: A9 04 LDA #$04
A198: 20 67 A6 JSR $A667 ; Set DOS Parameters
A19B: A9 00 LDA #$00
A19D: AA TAX
A19E: 20 87 92 JSR $9287 ; Set Load/Save Bank
A1A1: 4C 15 91 JMP $9115
; Perform [dverify]
A1A4: A9 01 LDA #$01
A1A6: 2C .BYTE $2C
; Perform [dload]
A1A7: A9 00 LDA #$00
A1A9: 85 0C STA $0C ; load/verify flag
A1AB: A9 E6 LDA #$E6 ; allow only filename,D,U
A1AD: 20 C1 A3 JSR $A3C1 ; parse disk command parameters
A1B0: 20 50 A7 JSR $A750 ; filename given?
A1B3: A9 00 LDA #$00
A1B5: 8D 1D 01 STA $011D
A1B8: A0 05 LDY #$05
A1BA: A9 04 LDA #$04
A1BC: 20 67 A6 JSR $A667 ; Set DOS Parameters
A1BF: A9 00 LDA #$00
A1C1: AA TAX
A1C2: 20 87 92 JSR $9287 ; Set Load/Save Bank
A1C5: 4C 33 91 JMP $9133
; Perform [bsave]
A1C8: A9 66 LDA #$66 ; allowed params: filename,@,U,D
A1CA: A2 F8 LDX #$F8 ; allowed ext. params: begin addr., end addr., bank number
A1CC: 20 C3 A3 JSR $A3C3 ; parse disk command parameters
A1CF: 20 50 A7 JSR $A750
A1D2: A5 81 LDA $81 ; ext. param. mask
A1D4: 29 06 AND #$06
A1D6: C9 06 CMP #$06 ; begin and end addr. must be given
A1D8: F0 03 BEQ $A1DD
A1DA: 4C 6C 79 JMP $796C ; Syntax Error
A1DD: AD 1A 01 LDA $011A ; end addr. high less or equal than
A1E0: CD 18 01 CMP $0118 ; begin addr. high
A1E3: 90 30 BCC $A215 ; illegal quantity
A1E5: D0 0A BNE $A1F1
A1E7: AD 19 01 LDA $0119 ; end addr. low less or equal than
A1EA: CD 17 01 CMP $0117 ; begin addr. low
A1ED: 90 26 BCC $A215 ; illegal quantity
A1EF: F0 24 BEQ $A215
A1F1: A0 05 LDY #$05 ; begin addr. < end addr.
A1F3: A9 04 LDA #$04
A1F5: 20 67 A6 JSR $A667 ; Set DOS Parameters
A1F8: AD 1F 01 LDA $011F
A1FB: A2 00 LDX #$00
A1FD: 20 87 92 JSR $9287 ; Set Load/Save Bank
A200: AE 17 01 LDX $0117 ; begin addr.
A203: AC 18 01 LDY $0118
A206: A9 5A LDA #$5A ; pointer to begin addr.
A208: 86 5A STX $5A
A20A: 84 5B STY $5B
A20C: AE 19 01 LDX $0119 ; end addr.
A20F: AC 1A 01 LDY $011A
A212: 4C 1D 91 JMP $911D
A215: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
; Perform [bload]
A218: A9 E6 LDA #$E6 ; allowed params: filename,U,D
A21A: A2 FC LDX #$FC ; allowed ext. params: begin addr., bank number
A21C: 20 C3 A3 JSR $A3C3 ; parse disk command parameters
A21F: 20 50 A7 JSR $A750
A222: AE 17 01 LDX $0117 ; start addr.
A225: AC 18 01 LDY $0118
A228: A9 00 LDA #$00
A22A: E0 FF CPX #$FF
A22C: D0 06 BNE $A234
A22E: C0 FF CPY #$FF
A230: D0 02 BNE $A234
A232: A9 FF LDA #$FF
A234: 8D 1D 01 STA $011D
A237: A0 05 LDY #$05
A239: A9 04 LDA #$04
A23B: 20 67 A6 JSR $A667 ; Set DOS Parameters
A23E: AD 1F 01 LDA $011F
A241: A2 00 LDX #$00
A243: 20 87 92 JSR $9287 ; Set Load/Save Bank
A246: A9 00 LDA #$00
A248: AE 17 01 LDX $0117
A24B: AC 18 01 LDY $0118
A24E: 20 D5 FF JSR $FFD5 ; loadsp Load RAM From Device
A251: 08 PHP
A252: 20 43 92 JSR $9243 ; Release I/O String
A255: 28 PLP
A256: 90 03 BCC $A25B
A258: 4C D0 90 JMP $90D0 ; I/O Error Message
A25B: 20 51 92 JSR $9251 ; Call 'status'
A25E: 29 BF AND #$BF
A260: F0 03 BEQ $A265
A262: 4C 67 91 JMP $9167
A265: 18 CLC
A266: 60 RTS
; Perform [header]
A267: 20 BF A3 JSR $A3BF ; Parse DOS Commands
A26A: 20 49 A7 JSR $A749
A26D: 29 01 AND #$01
A26F: C9 01 CMP #$01
A271: D0 61 BNE $A2D4
A273: 20 7B 92 JSR $927B ; Call 'clall'
A276: 20 E1 A7 JSR $A7E1 ; Print 'are you sure'
A279: D0 25 BNE $A2A0
A27B: A0 1B LDY #$1B
A27D: A9 04 LDA #$04
A27F: AE 20 01 LDX $0120
A282: F0 02 BEQ $A286
A284: A9 06 LDA #$06
A286: 20 97 A3 JSR $A397
A289: 20 78 A7 JSR $A778 ; Get Floppy Channel
A28C: 24 7F BIT $7F
A28E: 30 10 BMI $A2A0
A290: A0 00 LDY #$00
A292: A9 7B LDA #$7B
A294: 20 AB 03 JSR $03AB ; Fetch From RAM Bank 1
A297: C9 32 CMP #$32
A299: 90 05 BCC $A2A0
A29B: A2 24 LDX #$24 ; 'bad disk'
A29D: 4C 3C 4D JMP $4D3C ; Error
A2A0: 60 RTS
; Perform [scratch]
A2A1: 20 BF A3 JSR $A3BF ; Parse DOS Commands
A2A4: 20 49 A7 JSR $A749
A2A7: 20 E1 A7 JSR $A7E1 ; Print 'are you sure'
A2AA: D0 27 BNE $A2D3
A2AC: A0 37 LDY #$37
A2AE: A9 04 LDA #$04
A2B0: 20 97 A3 JSR $A397
A2B3: 20 78 A7 JSR $A778 ; Get Floppy Channel
A2B6: 24 7F BIT $7F
A2B8: 30 19 BMI $A2D3
A2BA: A9 0D LDA #$0D
A2BC: 20 69 92 JSR $9269 ; Call 'chrout'
A2BF: A0 00 LDY #$00
A2C1: A9 7B LDA #$7B
A2C3: 20 AB 03 JSR $03AB ; Fetch From RAM Bank 1
A2C6: F0 06 BEQ $A2CE
A2C8: 20 69 92 JSR $9269 ; Call 'chrout'
A2CB: C8 INY
A2CC: D0 F3 BNE $A2C1
A2CE: A9 0D LDA #$0D
A2D0: 20 DF 90 JSR $90DF ; Basic 'chrout'
A2D3: 60 RTS
A2D4: 4C 6C 79 JMP $796C ; Syntax Error
; Perform [record]
A2D7: A9 23 LDA #$23 ; "#"
A2D9: 20 5E 79 JSR $795E
A2DC: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
A2DF: E0 00 CPX #$00
A2E1: F0 37 BEQ $A31A ; "illegal quantity"
A2E3: 8E 1B 01 STX $011B ; logical filenumber
A2E6: 20 0F 88 JSR $880F ; checkt comma, Input Next Float/Fixed Value, $16/$17
A2E9: A2 01 LDX #$01 ; default =1 (in record position)
A2EB: 20 1E 9E JSR $9E1E ; check comma, get byte value
A2EE: E0 00 CPX #$00
A2F0: F0 28 BEQ $A31A ; "illegal quantity"
A2F2: E0 FF CPX #$FF
A2F4: F0 24 BEQ $A31A ; "illegal quantity"
A2F6: 8E 1E 01 STX $011E
A2F9: AD 1B 01 LDA $011B ; filenumber (for lkupla call)
A2FC: 20 45 A8 JSR $A845 ; Set Bank 15 (regs unchanged)
A2FF: 20 59 FF JSR $FF59 ; lkupla (logical addr)
A302: B0 19 BCS $A31D ; C=1 -> file not found
A304: 8C ED 11 STY $11ED ; channel number
A307: 8E 1C 01 STX $011C ; device number
A30A: A9 00 LDA #$00
A30C: 8D 1B 01 STA $011B ; filenumber (special: 0)
A30F: A9 6F LDA #$6F ; channel: $60+$0F (command channel)
A311: 8D 1D 01 STA $011D ; secondary address
A314: A0 3B LDY #$3B ; index in command pattern table
A316: A9 04 LDA #$04 ; length of pattern
A318: D0 7D BNE $A397 ; expand command pattern
A31A: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
A31D: A2 04 LDX #$04
A31F: 4C 3C 4D JMP $4D3C ; file not found error
; Perform [dclear]
A322: 20 BF A3 JSR $A3BF ; Parse DOS Commands
A325: A0 FF LDY #$FF
A327: A9 02 LDA #$02
A329: 20 97 A3 JSR $A397
A32C: 4C 83 A1 JMP $A183
; Perform [collect]
A32F: 20 BF A3 JSR $A3BF ; Parse DOS Commands
A332: 20 5B A7 JSR $A75B
A335: 20 7B 92 JSR $927B ; Call 'clall'
A338: A0 21 LDY #$21
A33A: A2 01 LDX #$01
A33C: A5 80 LDA $80
A33E: 29 10 AND #$10 ; drive number given?
A340: F0 01 BEQ $A343
A342: E8 INX
A343: 8A TXA
A344: D0 51 BNE $A397
; Perform [copy]
A346: 20 BF A3 JSR $A3BF ; Parse DOS Commands
A349: 29 30 AND #$30
A34B: C9 30 CMP #$30
A34D: D0 06 BNE $A355
A34F: A5 80 LDA $80
A351: 29 C7 AND #$C7
A353: F0 07 BEQ $A35C
A355: A5 80 LDA $80
A357: 20 60 A7 JSR $A760
A35A: A5 80 LDA $80
A35C: A0 27 LDY #$27
A35E: A9 08 LDA #$08
A360: D0 35 BNE $A397
; Perform [concat]
A362: 20 BF A3 JSR $A3BF ; Parse DOS Commands
A365: 20 60 A7 JSR $A760
A368: A0 0D LDY #$0D
A36A: A9 0C LDA #$0C
A36C: D0 29 BNE $A397
; Perform [rename]
A36E: A9 E4 LDA #$E4
A370: 20 C1 A3 JSR $A3C1
A373: 20 66 A7 JSR $A766
A376: A0 2F LDY #$2F
A378: A9 08 LDA #$08
A37A: D0 1B BNE $A397
; Perform [backup]
A37C: A9 C7 LDA #$C7
A37E: 20 C1 A3 JSR $A3C1
A381: 29 30 AND #$30
A383: C9 30 CMP #$30
A385: F0 03 BEQ $A38A
A387: 4C 6C 79 JMP $796C ; Syntax Error
A38A: 20 E1 A7 JSR $A7E1 ; Print 'are you sure'
A38D: F0 01 BEQ $A390
A38F: 60 RTS
A390: 20 83 A1 JSR $A183
A393: A0 23 LDY #$23
A395: A9 04 LDA #$04
A397: 20 67 A6 JSR $A667 ; Set DOS Parameters
A39A: 20 6F 92 JSR $926F ; Call 'clrchn'
A39D: A9 00 LDA #$00
A39F: AA TAX
A3A0: 20 87 92 JSR $9287 ; Set Load/Save Bank
A3A3: 38 SEC
A3A4: 20 D8 90 JSR $90D8 ; Basic 'open'
A3A7: 08 PHP
A3A8: 48 PHA
A3A9: AD 1B 01 LDA $011B
A3AC: 38 SEC
A3AD: 20 75 92 JSR $9275 ; Call 'close'
A3B0: 68 PLA
A3B1: 28 PLP
A3B2: B0 01 BCS $A3B5
A3B4: 60 RTS
A3B5: 4C D0 90 JMP $90D0 ; I/O Error Message
; Default DOS Disk Unit (U8 D0)
A3B8: FF FF FF FF ; '....'
; DOS Logical Address
A3BC: 00 ; '{0}'
; DOS Physical Address
A3BD: 08 ; '.'
; DOS Secondary Address
A3BE: 6F ; 'o'
; Parse DOS Commands
A3BF: A9 00 LDA #$00
A3C1: A2 FF LDX #$FF
; Continue parse DOS parameters
A3C3: 48 PHA
A3C4: 8A TXA
A3C5: 48 PHA
A3C6: A9 00 LDA #$00
A3C8: 85 80 STA $80 ; bit field: parameter read
; 01 1st fiilename
; 02 2nd fiilename
; 04 file number
; 10 drive number
; 20 device number
; 40 write flag
; 80 replace mode (@)
A3CA: 85 81 STA $81 ; bit field: extended parameters read
; 01 bank number
; 02 start address
; 04 end address
A3CC: A2 22 LDX #$22 ; clear 34 byte long
A3CE: 9D 00 01 STA $0100,X ; clear parameter buffer
A3D1: CA DEX
A3D2: D0 FA BNE $A3CE
A3D4: A2 06 LDX #$06
A3D6: BD B8 A3 LDA $A3B8,X ; Default DOS Disk Unit (U8 D0)
A3D9: 9D 17 01 STA $0117,X
A3DC: CA DEX
A3DD: 10 F7 BPL $A3D6
A3DF: AE D5 03 LDX $03D5 ; Current Bank For SYS, POKE, PEEK
A3E2: 8E 1F 01 STX $011F
A3E5: 20 86 03 JSR $0386 ; CHRGOT entry
A3E8: D0 0E BNE $A3F8
A3EA: 68 PLA ; no allowed extended parameter mask
A3EB: 25 81 AND $81 ; parameters got
A3ED: D0 6B BNE $A45A ; some wrong parameter: syntax error
A3EF: 68 PLA ; no allowed parameter mask
A3F0: 20 1D A6 JSR $A61D ; check if some wrong parameter (syntax error)
A3F3: A5 80 LDA $80 ; parameter got
A3F5: A6 81 LDX $81 : extended parameter got
A3F7: 60 RTS
; Get next parameter ...
A3F8: C9 23 CMP #$23 ; "#"
A3FA: F0 4B BEQ $A447 ; Filenumber
A3FC: C9 57 CMP #$57 ; "W"
A3FE: F0 5D BEQ $A45D ; Write mode
A400: C9 4C CMP #$4C ; "L"
A402: F0 59 BEQ $A45D ; Record length
A404: C9 52 CMP #$52 ; "R" read mode
A406: F0 29 BEQ $A431
A408: C9 44 CMP #$44 ; "D" drive number
A40A: F0 73 BEQ $A47F
A40C: C9 91 CMP #$91 ; ON token
A40E: F0 27 BEQ $A437
A410: C9 42 CMP #$42 ; "B"
A412: F0 2E BEQ $A442 ; Bank
A414: C9 55 CMP #$55 ; "U"
A416: F0 25 BEQ $A43D ; Device
A418: C9 50 CMP #$50 ; "P" Position/address
A41A: D0 03 BNE $A41F
A41C: 4C B4 A4 JMP $A4B4 ; Start/end address
A41F: C9 49 CMP #$49 ; "I"
A421: F0 75 BEQ $A498 ; Format ID
A423: C9 22 CMP #$22 ; '"'
A425: F0 07 BEQ $A42E
A427: C9 28 CMP #$28 ; "("
A429: F0 03 BEQ $A42E
A42B: 4C 6C 79 JMP $796C ; Syntax Error
A42E: 4C DC A4 JMP $A4DC ; get string (filename)
A431: 20 80 03 JSR $0380 ; CHRGET
A434: 4C FB A4 JMP $A4FB ; continue parsing
A437: 20 82 A5 JSR $A582 ; get byte B or U value
A43A: 4C F7 A4 JMP $A4F7 ; mark parameter
; get device number
A43D: 20 8D A5 JSR $A58D ; get device value
A440: D0 F8 BNE $A43A ; mark parameter
; get bank number
A442: 20 9E A5 JSR $A59E ; get byte number
A445: F0 F3 BEQ $A43A
; get filenumber
A447: A9 04 LDA #$04 ; File number marker
A449: 20 1D A6 JSR $A61D ; has parameter?
A44C: 20 F2 A5 JSR $A5F2 ; get byte value
A44F: E0 00 CPX #$00
A451: F0 42 BEQ $A495 ; illegal quantity if =0
A453: 8E 1B 01 STX $011B ; Store file number
A456: A9 04 LDA #$04
A458: D0 E0 BNE $A43A ; mark parameter
A45A: 4C 6C 79 JMP $796C ; Syntax Error
; get record length, write mode
A45D: AA TAX
A45E: A9 40 LDA #$40
A460: 20 1D A6 JSR $A61D ; check if para. exists
A463: E0 57 CPX #$57 ; "W"
A465: D0 06 BNE $A46D ; get record length value
A467: 20 80 03 JSR $0380 ; CHRGET
A46A: 4C 7B A4 JMP $A47B ; mark parameter (write flag)
A46D: 20 F2 A5 JSR $A5F2 ; get byte value
A470: E0 00 CPX #$00
A472: F0 21 BEQ $A495 ; record length
A474: E0 FF CPX #$FF ; > 0 and < 255
A476: F0 1D BEQ $A495 ; otherwise illegal quantity
A478: 8E 1E 01 STX $011E
A47B: A9 40 LDA #$40 ; mark got write flag
A47D: D0 14 BNE $A493
; get drive
A47F: A9 10 LDA #$10
A481: 20 1D A6 JSR $A61D ; check if para. exists
A484: 20 F2 A5 JSR $A5F2 ; get byte value
A487: E0 02 CPX #$02
A489: B0 0A BCS $A495 ; >=2 illegal quantitity
A48B: 8E 12 01 STX $0112 ; set source and
A48E: 8E 14 01 STX $0114 ; destination drive!
A491: A9 10 LDA #$10
A493: D0 62 BNE $A4F7 ; mark parameter
A495: 4C 28 7D JMP $7D28 ; Error 'illegal quantity'
; get format ID
A498: AD 22 01 LDA $0122 ; already set?
A49B: D0 BD BNE $A45A ; yes, syntax error
A49D: 20 80 03 JSR $0380 ; CHRGET, get 2 constant chars (no variable!)
A4A0: 8D 20 01 STA $0120 ; ID first character
A4A3: 20 80 03 JSR $0380 ; CHRGET
A4A6: 8D 21 01 STA $0121 ; ID second characer
A4A9: A9 FF LDA #$FF
A4AB: 8D 22 01 STA $0122 ; mark ID as set
A4AE: 20 80 03 JSR $0380 ; CHRGET
A4B1: 4C FB A4 JMP $A4FB ; continue parsing
; get address
A4B4: A9 02 LDA #$02 ; start address mark
A4B6: 20 22 A6 JSR $A622 ; check extended parameter
A4B9: 20 05 A6 JSR $A605 ; get value
A4BC: 8C 17 01 STY $0117 ; 16-bit start address
A4BF: 8D 18 01 STA $0118 ; high byte
A4C2: A9 02 LDA #$02 ; start address mark
A4C4: 05 81 ORA $81 ; mark extended parameter
A4C6: 85 81 STA $81
A4C8: D0 31 BNE $A4FB ; continue parsing
A4CA: A9 04 LDA #$04 ; end address mark
A4CC: 20 22 A6 JSR $A622 ; check extended parameter
A4CF: 20 05 A6 JSR $A605 ; get value
A4D2: 8C 19 01 STY $0119 ; 16 bit end address
A4D5: 8D 1A 01 STA $011A ; high byte
A4D8: A9 04 LDA #$04 ; end address mark
A4DA: D0 E8 BNE $A4C4 ; mark extended parameter
A4DC: A9 01 LDA #$01 ; get (first) filename
A4DE: 20 B9 A5 JSR $A5B9 ; get string
A4E1: 8D 11 01 STA $0111 ; first filename length
A4E4: A0 00 LDY #$00
A4E6: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
A4E9: 8D 03 FF STA $FF03
A4EC: 99 B7 12 STA $12B7,Y ; copy filename string
A4EF: C8 INY
A4F0: CC 11 01 CPY $0111 ; until length reached
A4F3: 90 F1 BCC $A4E6
A4F5: A9 01 LDA #$01 ; first filename mark
A4F7: 05 80 ORA $80 ; mark parameter
A4F9: 85 80 STA $80
A4FB: 20 86 03 JSR $0386 ; CHRGOT entry
A4FE: D0 19 BNE $A519 ; get next parameter
A500: 4C EA A3 JMP $A3EA ; end of parsing
A503: C9 91 CMP #$91 ; ON token
A505: D0 03 BNE $A50A
A507: 4C 37 A4 JMP $A437 ; get B or U value
A50A: C9 A4 CMP #$A4 ; TO-Token
A50C: F0 02 BEQ $A510 ; check for expected "P"
A50E: D0 6D BNE $A57D ; finally unknown, syntax error
A510: 20 80 03 JSR $0380 ; CHRGET ; parse destination parameters
A513: C9 50 CMP #$50 ; "P"
A515: D0 0F BNE $A526 ; continue with destination parameters
A517: F0 B1 BEQ $A4CA ; "TO P...", get address
; get next parameter
A519: C9 2C CMP #$2C ; ","
A51B: D0 E6 BNE $A503
A51D: 20 80 03 JSR $0380 ; CHRGET
A520: 4C F8 A3 JMP $A3F8 ; get next parameter
A523: 20 80 03 JSR $0380 ; CHRGET
A526: C9 44 CMP #$44 ; "D"
A528: F0 10 BEQ $A53A ; Drive number
A52A: C9 91 CMP #$91 ; ON token
A52C: F0 1F BEQ $A54D
A52E: C9 55 CMP #$55 ; "U"
A530: F0 21 BEQ $A553 ; Device number
A532: C9 22 CMP #$22 ; '"'
A534: F0 22 BEQ $A558 ; get constant string
A536: C9 28 CMP #$28 ; "(" without this prefix its a filename string
A538: F0 1E BEQ $A558
; get destination drive
A53A: A9 20 LDA #$20 ; destination drive parameter
A53C: 20 1D A6 JSR $A61D ; already set?
A53F: 20 F2 A5 JSR $A5F2 ; get byte value
A542: E0 02 CPX #$02 ; not < 2?
A544: B0 39 BCS $A57F ; "illegal quantity"
A546: 8E 14 01 STX $0114
A549: A9 20 LDA #$20
A54B: D0 1B BNE $A568 ; mark parameter
A54D: 20 82 A5 JSR $A582 ; get secondary parameters of a filename
A550: 4C 68 A5 JMP $A568 ; mark parameter
A553: 20 8D A5 JSR $A58D ; get B (bank) or U (device) value
A556: D0 10 BNE $A568 ; mark parameter
A558: A9 02 LDA #$02 ; check mark for 2nd filename
A55A: 20 B9 A5 JSR $A5B9 ; get destination sring (filename)
A55D: 8D 13 01 STA $0113 ; destination string length
A560: 8E 15 01 STX $0115 ; destination string address
A563: 8C 16 01 STY $0116
A566: A9 02 LDA #$02 ; mark parameter: 2nd filenema
A568: 05 80 ORA $80 ; set read-parameter mask
A56A: 85 80 STA $80
A56C: 20 86 03 JSR $0386 ; CHRGOT entry
A56F: F0 8F BEQ $A500 ; end of line, end parsing
A571: C9 2C CMP #$2C ; ","
A573: F0 AE BEQ $A523
A575: C9 91 CMP #$91 ; ON token
A577: F0 D4 BEQ $A54D
A579: C9 55 CMP #$55 ; "U"
A57B: F0 D6 BEQ $A553 ; get device value
A57D: D0 37 BNE $A5B6 ; Error 'syntax error'
A57F: 4C 28 7D JMP $7D28 ; Error 'illegal quantity'
A582: 20 80 03 JSR $0380 ; CHRGET
A585: C9 42 CMP #$42 ; "B"
A587: F0 15 BEQ $A59E ; ON B...
A589: C9 55 CMP #$55 ; "U"
A58B: D0 29 BNE $A5B6 ; Error 'syntax error'
A58D: 20 F2 A5 JSR $A5F2 ; ON U...
A590: E0 1F CPX #$1F ; device number over limit: 31
A592: B0 56 BCS $A5EA ; Error 'illegal device number'
A594: E0 04 CPX #$04 ; lowest device number: 4
A596: 90 52 BCC $A5EA ; Error 'illegal device number'
A598: 8E 1C 01 STX $011C
A59B: A9 08 LDA #$08 ; default device number
A59D: 60 RTS
A59E: A9 01 LDA #$01
A5A0: 20 22 A6 JSR $A622 ; bank number already read?
A5A3: 20 F2 A5 JSR $A5F2 ; Get byte value
A5A6: E0 10 CPX #$10 ; Bank number >16
A5A8: B0 D5 BCS $A57F ; illegal quantity
A5AA: 8E 1F 01 STX $011F
A5AD: A9 01 LDA #$01 ; mark bank number
A5AF: 05 81 ORA $81 ; mark extended parameters
A5B1: 85 81 STA $81
A5B3: A9 00 LDA #$00
A5B5: 60 RTS
A5B6: 4C 6C 79 JMP $796C ; Syntax Error
; get string (filename)
A5B9: 20 1D A6 JSR $A61D
A5BC: 20 7B 87 JSR $877B ; Evaluate String
A5BF: AA TAX
A5C0: F0 25 BEQ $A5E7 ; Error 'missing file name'
A5C2: A0 00 LDY #$00
A5C4: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
A5C7: C9 40 CMP #$40 ; first char. "@"
A5C9: D0 12 BNE $A5DD
A5CB: A9 80 LDA #$80 ; replace mode just once!
A5CD: 20 1D A6 JSR $A61D ; check if already given
A5D0: A5 80 LDA $80 ; mark replace mode
A5D2: 09 80 ORA #$80
A5D4: 85 80 STA $80
A5D6: CA DEX ; decrement length
A5D7: E6 24 INC $24 ; adjust string pointer
A5D9: D0 02 BNE $A5DD
A5DB: E6 25 INC $25
A5DD: 8A TXA
A5DE: C9 11 CMP #$11 ; >16 characters?
A5E0: B0 0B BCS $A5ED ; Error 'string too long'
A5E2: A6 24 LDX $24 ; filename/string address
A5E4: A4 25 LDY $25
A5E6: 60 RTS
; Error 'missing file name'
A5E7: A2 08 LDX #$08
A5E9: 2C .BYTE $2C ; skip next 2 bytes (BIT $HHLL)
; Error 'illegal device number'
A5EA: A2 09 LDX #$09
A5EC: 2C .BYTE $2C ; skip next 2 bytes (BIT $HHLL)
; Error 'string too long'
A5ED: A2 17 LDX #$17
A5EF: 4C 3C 4D JMP $4D3C ; Error with code from register X
A5F2: 20 80 03 JSR $0380 ; CHRGET
A5F5: F0 BF BEQ $A5B6
A5F7: 90 09 BCC $A602
A5F9: 20 59 79 JSR $7959 ; -Check Left Parenthesis
A5FC: 20 F4 87 JSR $87F4 ; -Eval Byte Parameter
A5FF: 4C 56 79 JMP $7956 ; -Check Right Parenthesis
A602: 4C F4 87 JMP $87F4 ; -Eval Byte Parameter
A605: 20 80 03 JSR $0380 ; CHRGET
A608: F0 AC BEQ $A5B6
A60A: 90 0E BCC $A61A
A60C: 20 59 79 JSR $7959 ; -Check Left Parenthesis
A60F: 20 12 88 JSR $8812 ; -Input Float/Fixed Value
A612: 20 56 79 JSR $7956 ; -Check Right Parenthesis
A615: A4 16 LDY $16
A617: A5 17 LDA $17
A619: 60 RTS
A61A: 4C 12 88 JMP $8812 ; -Input Float/Fixed Value
A61D: 25 80 AND $80 ; check parameter already set?
A61F: D0 95 BNE $A5B6 ; Error 'syntax error'
A621: 60 RTS
A622: 25 81 AND $81 ; check extended paramaeter already set?
A624: D0 90 BNE $A5B6 ; Error 'syntax error'
A626: 60 RTS
; DOS Command Patterns
A627: 49 D1 24 D1 3A F1 F0 D1 ; 'iQ$Q:..Q' ; I<D1> dclear
; $<D1>:<F1> directory
; <F0> dload,dsave,open,bload,bsave,boot,run
; <D1>:<F1>,<E1>,<E0> open
A62F: 3A F1 2C E1 2C E0 43 D2 ; ':.,.,.cR' ; C<D2>:<F2>=<D2>:<F2>,<D1>:<F1> concat
A637: 3A F2 3D D2 3A F2 2C D1 ; ':.=R:.,Q' ; <D1>:<F1>,A append
A63F: 3A F1 2C 41 4E D1 3A F1 ; ':.,anQ:.' ; N<D1>:<F1>,<D0> header
A647: 2C D0 56 D1 44 D2 3D D1 ; ',PvQdR=Q' ; V<D1> collect
; D<D2>=<D1> backup
A64F: 43 D2 3A F2 3D D1 3A F1 ; 'cR:.=Q:.' ; C<D2>:<F2>=<D1>:<F1> copy
A657: 52 D1 3A F2 3D D1 3A F1 ; 'rQ:.=Q:.' ; R<D1>:<F2>=<D1>:<F1> rename
A65F: 53 D1 3A F1 50 C2 E2 E0 ; 'sQ:.pB..' ; S<D1>:<F1> scratch
; P<C2><E2><E0> record
; Set DOS Parameters
A667: 8D 10 01 STA $0110 ; A: command mask length
A66A: 98 TYA ; Y: command mask start index
A66B: 48 PHA
A66C: 20 0D A8 JSR $A80D ; Release String
A66F: A2 00 LDX #$00
A671: 68 PLA
A672: CE 10 01 DEC $0110
A675: 30 48 BMI $A6BF ; set file parameters
A677: A8 TAY ; increment mask index
A678: C8 INY
A679: 98 TYA
A67A: 48 PHA
A67B: B9 27 A6 LDA $A627,Y ; DOS Command Masks
A67E: 10 37 BPL $A6B7 ; simple character, otherwise placeholder
A680: C9 C2 CMP #$C2 ; channel number placeholder
A682: F0 52 BEQ $A6D6 ; channel number expand
A684: C9 D0 CMP #$D0 ; drive number
A686: F0 5D BEQ $A6E5
A688: C9 E2 CMP #$E2 ; record number
A68A: F0 77 BEQ $A703
A68C: C9 E1 CMP #$E1 ; file extension
A68E: F0 61 BEQ $A6F1
A690: C9 F0 CMP #$F0 ; filename
A692: F0 47 BEQ $A6DB
A694: C9 F1 CMP #$F1 ; source file
A696: F0 75 BEQ $A70D
A698: C9 F2 CMP #$F2 ; destination file
A69A: F0 21 BEQ $A6BD
A69C: C9 E0 CMP #$E0 ; record size
A69E: D0 05 BNE $A6A5
A6A0: AD 1E 01 LDA $011E ; insert record size (or other char.)
A6A3: D0 12 BNE $A6B7
A6A5: C9 D1 CMP #$D1 ; source drive number
A6A7: D0 05 BNE $A6AE
A6A9: AD 12 01 LDA $0112 ; get source drive number
A6AC: 10 07 BPL $A6B5 ; branch always
A6AE: C9 D2 CMP #$D2 ; destination drive number
A6B0: D0 BF BNE $A671
A6B2: AD 14 01 LDA $0114 ; get destination drive number
A6B5: 09 30 ORA #$30 ; "0", digit base for drive number
A6B7: 9D 00 11 STA $1100,X ; store to buffer with DOS command
A6BA: E8 INX
A6BB: D0 B4 BNE $A671 ; branch always
A6BD: F0 64 BEQ $A723 ; prolonge processing destination file
; setup file parameters
A6BF: 8A TXA
A6C0: 48 PHA ; filename length
A6C1: A2 00 LDX #$00
A6C3: A0 11 LDY #$11 ; address $1100 (filename buffer)
A6C5: 20 5D 92 JSR $925D ; Call 'setnam'
A6C8: AD 1B 01 LDA $011B ; filenumber
A6CB: AE 1C 01 LDX $011C ; device
A6CE: AC 1D 01 LDY $011D ; secondary address
A6D1: 20 57 92 JSR $9257 ; Call 'setlfs'
A6D4: 68 PLA
A6D5: 60 RTS
Placeholder expand actions
A6D6: AD ED 11 LDA $11ED ; channelnumber [C2]
A6D9: D0 DC BNE $A6B7 ; store to command buffer
; filename [F0], [F2]
A6DB: 24 80 BIT $80 ; rewrite flag for '@'
A6DD: 30 02 BMI $A6E1
A6DF: 10 90 BPL $A671 ; fill in filename
A6E1: A9 40 LDA #$40 ; '@' rewrite prefix for filename
A6E3: D0 D2 BNE $A6B7 ; store to command buffer
A6E5: AD 20 01 LDA $0120 ; disk ID [D0]
A6E8: 9D 00 11 STA $1100,X
A6EB: E8 INX
A6EC: AD 21 01 LDA $0121
A6EF: D0 C6 BNE $A6B7 ; store to command buffer
A6F1: AD 1E 01 LDA $011E ; file extension [E1] (record length?)
A6F4: F0 04 BEQ $A6FA
A6F6: A9 4C LDA #$4C ; "L" -> ",L,<len>"
A6F8: D0 BD BNE $A6B7 ; store to command buffer
A6FA: A9 53 LDA #$53 ; "S"
A6FC: 8D 1E 01 STA $011E
A6FF: A9 57 LDA #$57 ; "W" -> ",W,S"
A701: D0 B4 BNE $A6B7 ; store to command buffer
A703: A5 16 LDA $16 ; record number [E2]
A705: 9D 00 11 STA $1100,X
A708: A5 17 LDA $17
A70A: E8 INX
A70B: D0 AA BNE $A6B7 ; store to command buffer
A70D: AC 11 01 LDY $0111 ; filename source [F1]
A710: F0 33 BEQ $A745
A712: A0 00 LDY #$00
A714: B9 B7 12 LDA $12B7,Y ; copy filename to command buffer
A717: 9D 00 11 STA $1100,X
A71A: E8 INX
A71B: C8 INY
A71C: CC 11 01 CPY $0111
A71F: D0 F3 BNE $A714
A721: F0 23 BEQ $A746
A723: AD 15 01 LDA $0115
A726: 85 24 STA $24
A728: AD 16 01 LDA $0116
A72B: 85 25 STA $25
A72D: AC 13 01 LDY $0113
A730: F0 13 BEQ $A745
A732: A0 00 LDY #$00
A734: 20 B7 03 JSR $03B7 ; Index1 Indirect Fetch From RAM Bank 1 ($24),Y
A737: 8D 03 FF STA $FF03
A73A: 9D 00 11 STA $1100,X
A73D: E8 INX
A73E: C8 INY
A73F: CC 13 01 CPY $0113
A742: D0 F0 BNE $A734
A744: 24 .BYTE $24
A745: CA DEX
A746: 4C 71 A6 JMP $A671
A749: 29 E6 AND #$E6
A74B: F0 03 BEQ $A750
A74D: 4C 6C 79 JMP $796C ; Syntax Error
; check for filename given
A750: A5 80 LDA $80
A752: 29 01 AND #$01
A754: C9 01 CMP #$01
A756: D0 F5 BNE $A74D ; syntax error: filename missing
A758: A5 80 LDA $80
A75A: 60 RTS
A75B: 29 E7 AND #$E7
A75D: D0 EE BNE $A74D ; syntax error
A75F: 60 RTS
A760: 29 C4 AND #$C4
A762: D0 E9 BNE $A74D
A764: A5 80 LDA $80
A766: 29 03 AND #$03
A768: C9 03 CMP #$03
A76A: D0 E1 BNE $A74D
A76C: A5 80 LDA $80
A76E: 60 RTS
A76F: 29 05 AND #$05
A771: C9 05 CMP #$05
A773: D0 D8 BNE $A74D
A775: A5 80 LDA $80
A777: 60 RTS
; Get floppy error channel
A778: A5 7A LDA $7A ; $7A/$7B/$7C DS$ string descriptor
A77A: D0 19 BNE $A795
A77C: A9 28 LDA #$28 ; default 40 characters
A77E: 85 7A STA $7A
A780: 20 99 92 JSR $9299 ; Make Room For String
A783: 86 7B STX $7B ; string address into
A785: 84 7C STY $7C ; descriptor
A787: A0 28 LDY #$28 ; string backlink offset
A789: 8D 04 FF STA $FF04 ; ???
A78C: A9 7A LDA #$7A ; backlink to descriptor $007A
A78E: 91 7B STA ($7B),Y ; backlink low
A790: C8 INY
A791: A9 00 LDA #$00
A793: 91 7B STA ($7B),Y ; backlink high, string marked as used on heap
A795: AE 1C 01 LDX $011C ; device number
A798: D0 05 BNE $A79F
A79A: A2 08 LDX #$08 ; defaults to 8
A79C: 8E 1C 01 STX $011C
A79F: A9 00 LDA #$00 ; internal filenumber 0
A7A1: A0 6F LDY #$6F ; channel $0F (+$60)
A7A3: 20 57 92 JSR $9257 ; Call 'setlfs'
A7A6: A9 00 LDA #$00
A7A8: 20 5D 92 JSR $925D ; Call 'setnam'
A7AB: 20 D8 90 JSR $90D8 ; Basic 'open'
A7AE: A2 00 LDX #$00
A7B0: 20 C6 FF JSR $FFC6 ; (ichkin) Set Input [F106]
A7B3: B0 20 BCS $A7D5
A7B5: A0 FF LDY #$FF
A7B7: C8 INY ; read channel
A7B8: 20 63 92 JSR $9263 ; Call 'getin'
A7BB: 8D 04 FF STA $FF04
A7BE: C9 0D CMP #$0D
A7C0: F0 06 BEQ $A7C8
A7C2: 91 7B STA ($7B),Y ; save into string
A7C4: C0 28 CPY #$28 ; max . 40 chars
A7C6: 90 EF BCC $A7B7
A7C8: A9 00 LDA #$00
A7CA: 91 7B STA ($7B),Y ; terminate with NULL
A7CC: 20 6F 92 JSR $926F ; Call 'clrchn'
A7CF: A9 00 LDA #$00
A7D1: 38 SEC
A7D2: 4C 75 92 JMP $9275 ; Call 'close'
A7D5: 48 PHA
A7D6: 20 C8 A7 JSR $A7C8
A7D9: 20 0D A8 JSR $A80D ; Release String
A7DC: 68 PLA
A7DD: AA TAX
A7DE: 4C 3C 4D JMP $4D3C ; Error
; Print 'are you sure'
A7E1: 24 7F BIT $7F
A7E3: 30 25 BMI $A80A
A7E5: 20 81 92 JSR $9281 ; Print Following Text
A7E8: 41 52 45 20 59 4F 55 20 ; 'are you '
A7F0: 53 55 52 45 3F 00 ; 'sure?{0}'
A7F6: 20 6F 92 JSR $926F ; Call 'clrchn'
A7F9: 20 63 92 JSR $9263 ; Call 'getin'
A7FC: 48 PHA
A7FD: C9 0D CMP #$0D
A7FF: F0 05 BEQ $A806
A801: 20 63 92 JSR $9263 ; Call 'getin'
A804: D0 F7 BNE $A7FD
A806: 68 PLA
A807: C9 59 CMP #$59
A809: 60 RTS
A80A: A9 00 LDA #$00
A80C: 60 RTS
; Release String
A80D: 98 TYA
A80E: 48 PHA
A80F: A5 7A LDA $7A
A811: F0 0D BEQ $A820
A813: A0 28 LDY #$28
A815: 98 TYA
A816: 8D 04 FF STA $FF04
A819: 91 7B STA ($7B),Y
A81B: C8 INY
A81C: A9 FF LDA #$FF
A81E: 91 7B STA ($7B),Y
A820: A9 00 LDA #$00
A822: 8D 03 FF STA $FF03
A825: 85 7A STA $7A
A827: 68 PLA
A828: A8 TAY
A829: 60 RTS
; 'key 0,'
A82A: 2C 30 20 59 45 4B ; ',0 yek'
; ?
A830: AA TAX
A831: 98 TYA
A832: 48 PHA
A833: A9 00 LDA #$00
A835: 20 32 8E JSR $8E32 ; Print Integer
A838: 68 PLA
A839: A8 TAY
A83A: 60 RTS
; ?
A83B: 85 3C STA $3C
A83D: 88 DEY
A83E: AA TAX
A83F: E8 INX
A840: D0 02 BNE $A844
A842: 86 7F STX $7F
A844: 60 RTS
; Set Bank 15
A845: 48 PHA
A846: A9 00 LDA #$00
A848: 8D 00 FF STA $FF00 ; MMU Configuration Register
A84B: 68 PLA
A84C: 60 RTS
; IRQ Work
A84D: AD FD 12 LDA $12FD
A850: F0 01 BEQ $A853
A852: 60 RTS
A853: EE FD 12 INC $12FD
A856: A2 10 LDX #$10
A858: BD D6 11 LDA $11D6,X
A85B: 9D 00 D0 STA $D000,X
A85E: CA DEX
A85F: 10 F7 BPL $A858
A861: A0 07 LDY #$07
A863: AD 15 D0 LDA $D015
A866: 39 B3 6C AND $6CB3,Y ; Bit Masks
A869: F0 38 BEQ $A8A3
A86B: BE D9 6D LDX $6DD9,Y ; Sprite Motion Table Offsets
A86E: BD 7E 11 LDA $117E,X ; Sprite Motion Tables (8 x 11 bytes)
A871: F0 30 BEQ $A8A3
A873: 9D 7F 11 STA $117F,X
A876: 98 TYA
A877: 0A ASL A
A878: A8 TAY
A879: BD 80 11 LDA $1180,X
A87C: 38 SEC
A87D: E9 01 SBC #$01
A87F: E8 INX
A880: E8 INX
A881: C8 INY
A882: 20 F4 A9 JSR $A9F4
A885: CA DEX
A886: CA DEX
A887: 88 DEY
A888: BD 80 11 LDA $1180,X
A88B: 20 F4 A9 JSR $A9F4
A88E: 08 PHP
A88F: 98 TYA
A890: 4A LSR A
A891: A8 TAY
A892: 28 PLP
A893: 90 09 BCC $A89E
A895: AD E6 11 LDA $11E6
A898: 59 B3 6C EOR $6CB3,Y ; Bit Masks
A89B: 8D E6 11 STA $11E6
A89E: DE 7F 11 DEC $117F,X
A8A1: D0 D3 BNE $A876
A8A3: 88 DEY
A8A4: 10 BD BPL $A863
A8A6: AD 19 D0 LDA $D019
A8A9: 8D 19 D0 STA $D019
A8AC: 29 0E AND #$0E
A8AE: F0 44 BEQ $A8F4
A8B0: 4A LSR A
A8B1: A0 01 LDY #$01
A8B3: 4A LSR A
A8B4: 90 20 BCC $A8D6
A8B6: 48 PHA
A8B7: B9 1E D0 LDA $D01E,Y
A8BA: 19 E7 11 ORA $11E7,Y
A8BD: 99 E7 11 STA $11E7,Y
A8C0: A9 00 LDA #$00
A8C2: 99 1E D0 STA $D01E,Y
A8C5: AD 7F 12 LDA $127F ; Collision Mask
A8C8: C0 00 CPY #$00
A8CA: F0 01 BEQ $A8CD
A8CC: 4A LSR A
A8CD: 4A LSR A
A8CE: 90 05 BCC $A8D5
A8D0: A9 FF LDA #$FF
A8D2: 99 76 12 STA $1276,Y ; Collision IRQ Task Table
A8D5: 68 PLA
A8D6: 88 DEY
A8D7: 10 DA BPL $A8B3
A8D9: 4A LSR A
A8DA: 90 18 BCC $A8F4
A8DC: AD 13 D0 LDA $D013
A8DF: 8D E9 11 STA $11E9
A8E2: AD 14 D0 LDA $D014
A8E5: 8D EA 11 STA $11EA
A8E8: AD 7F 12 LDA $127F ; Collision Mask
A8EB: 29 04 AND #$04
A8ED: F0 05 BEQ $A8F4
A8EF: A9 FF LDA #$FF
A8F1: 8D 78 12 STA $1278
A8F4: A2 00 LDX #$00
A8F6: BD 24 12 LDA $1224,X
A8F9: 30 27 BMI $A922
A8FB: BD 23 12 LDA $1223,X
A8FE: 38 SEC
A8FF: ED 22 12 SBC $1222
A902: 9D 23 12 STA $1223,X
A905: B0 1B BCS $A922
A907: BD 24 12 LDA $1224,X
A90A: E9 00 SBC #$00
A90C: 9D 24 12 STA $1224,X
A90F: B0 11 BCS $A922
A911: 8A TXA
A912: 4A LSR A
A913: A8 TAY
A914: B9 30 12 LDA $1230,Y
A917: 29 FE AND #$FE
A919: 48 PHA
A91A: B9 39 70 LDA $7039,Y ; SID Voice Offsets
A91D: A8 TAY
A91E: 68 PLA
A91F: 99 04 D4 STA $D404,Y
A922: E8 INX
A923: E8 INX
A924: E0 06 CPX #$06
A926: D0 CE BNE $A8F6
A928: A0 02 LDY #$02
A92A: B9 85 12 LDA $1285,Y
A92D: 10 06 BPL $A935
A92F: 88 DEY
A930: 10 F8 BPL $A92A
A932: 4C F0 A9 JMP $A9F0
A935: 18 CLC
A936: B9 9D 12 LDA $129D,Y
A939: 79 97 12 ADC $1297,Y
A93C: 99 9D 12 STA $129D,Y
A93F: B9 A0 12 LDA $12A0,Y
A942: 79 9A 12 ADC $129A,Y
A945: 99 A0 12 STA $12A0,Y
A948: B9 94 12 LDA $1294,Y
A94B: AA TAX
A94C: 29 01 AND #$01
A94E: F0 2E BEQ $A97E
A950: 90 0F BCC $A961
A952: 38 SEC
A953: B9 9D 12 LDA $129D,Y
A956: F9 8E 12 SBC $128E,Y
A959: B9 A0 12 LDA $12A0,Y
A95C: F9 91 12 SBC $1291,Y
A95F: B0 4D BCS $A9AE
A961: E0 02 CPX #$02
A963: 90 0A BCC $A96F
A965: 20 DA A9 JSR $A9DA
A968: A9 02 LDA #$02
A96A: 99 94 12 STA $1294,Y
A96D: D0 33 BNE $A9A2
A96F: B9 88 12 LDA $1288,Y
A972: 99 9D 12 STA $129D,Y
A975: B9 8B 12 LDA $128B,Y
A978: 99 A0 12 STA $12A0,Y
A97B: 4C AE A9 JMP $A9AE
A97E: B0 14 BCS $A994
A980: B9 A0 12 LDA $12A0,Y
A983: D9 8B 12 CMP $128B,Y
A986: 90 26 BCC $A9AE
A988: D0 0A BNE $A994
A98A: B9 9D 12 LDA $129D,Y
A98D: D9 88 12 CMP $1288,Y
A990: 90 1C BCC $A9AE
A992: F0 1A BEQ $A9AE
A994: E0 02 CPX #$02
A996: 90 0A BCC $A9A2
A998: 20 DA A9 JSR $A9DA
A99B: A9 03 LDA #$03
A99D: 99 94 12 STA $1294,Y
A9A0: D0 CD BNE $A96F
A9A2: B9 8E 12 LDA $128E,Y
A9A5: 99 9D 12 STA $129D,Y
A9A8: B9 91 12 LDA $1291,Y
A9AB: 99 A0 12 STA $12A0,Y
A9AE: BE 39 70 LDX $7039,Y ; SID Voice Offsets
A9B1: B9 9D 12 LDA $129D,Y
A9B4: 9D 00 D4 STA $D400,X
A9B7: B9 A0 12 LDA $12A0,Y
A9BA: 9D 01 D4 STA $D401,X
A9BD: 98 TYA
A9BE: AA TAX
A9BF: BD 82 12 LDA $1282,X
A9C2: D0 03 BNE $A9C7
A9C4: DE 85 12 DEC $1285,X
A9C7: DE 82 12 DEC $1282,X
A9CA: BD 85 12 LDA $1285,X
A9CD: 10 08 BPL $A9D7
A9CF: A9 08 LDA #$08
A9D1: BE 39 70 LDX $7039,Y ; SID Voice Offsets
A9D4: 9D 04 D4 STA $D404,X
A9D7: 4C 2F A9 JMP $A92F
A9DA: B9 97 12 LDA $1297,Y
A9DD: 49 FF EOR #$FF
A9DF: 18 CLC
A9E0: 69 01 ADC #$01
A9E2: 99 97 12 STA $1297,Y
A9E5: B9 9A 12 LDA $129A,Y
A9E8: 49 FF EOR #$FF
A9EA: 69 00 ADC #$00
A9EC: 99 9A 12 STA $129A,Y
A9EF: 60 RTS
A9F0: CE FD 12 DEC $12FD
A9F3: 60 RTS
A9F4: 48 PHA
A9F5: 18 CLC
A9F6: BD 81 11 LDA $1181,X
A9F9: 7D 85 11 ADC $1185,X
A9FC: 9D 85 11 STA $1185,X
A9FF: BD 82 11 LDA $1182,X
AA02: 7D 86 11 ADC $1186,X
AA05: 9D 86 11 STA $1186,X
AA08: 68 PLA
AA09: 90 13 BCC $AA1E
AA0B: 4A LSR A
AA0C: 4A LSR A
AA0D: B9 D6 11 LDA $11D6,Y
AA10: B0 05 BCS $AA17
AA12: 69 01 ADC #$01
AA14: 4C 1B AA JMP $AA1B
AA17: E9 01 SBC #$01
AA19: C9 FF CMP #$FF
AA1B: 99 D6 11 STA $11D6,Y
AA1E: 60 RTS
; Perform [stash]
AA1F: A9 84 LDA #$84
AA21: 4C 2B AA JMP $AA2B
; Perform [fetch]
AA24: A9 85 LDA #$85
AA26: 4C 2B AA JMP $AA2B
; Perform [swap]
AA29: A9 86 LDA #$86
AA2B: 48 PHA
AA2C: 20 12 88 JSR $8812 ; -Input Float/Fixed Value
AA2F: 20 45 A8 JSR $A845 ; Set Bank 15
AA32: 8C 07 DF STY $DF07
AA35: 8D 08 DF STA $DF08
AA38: 20 0F 88 JSR $880F ; Input Next Float/Fixed Value
AA3B: 20 45 A8 JSR $A845 ; Set Bank 15
AA3E: 8C 02 DF STY $DF02
AA41: 8D 03 DF STA $DF03
AA44: 20 0F 88 JSR $880F ; Input Next Float/Fixed Value
AA47: 20 45 A8 JSR $A845 ; Set Bank 15
AA4A: 8C 04 DF STY $DF04
AA4D: 8D 05 DF STA $DF05
AA50: 20 09 88 JSR $8809
AA53: E0 10 CPX #$10
AA55: B0 0E BCS $AA65
AA57: 20 45 A8 JSR $A845 ; Set Bank 15
AA5A: 8E 06 DF STX $DF06
AA5D: 68 PLA
AA5E: A8 TAY
AA5F: AE D5 03 LDX $03D5 ; Current Bank For SYS, POKE, PEEK
AA62: 4C 50 FF JMP $FF50 ; dma call
AA65: 4C 28 7D JMP $7D28 ; Print 'illegal quantity'
AA68: 20 47 8C JSR $8C47 ; Round FAC#1
AA6B: 4C C7 8C JMP $8CC7 ; Float-Fixed
; Patch for Print Using
AA6E: 20 D3 42 JSR $42D3 ; Get From ($3f) Bank1
AA71: C9 2C CMP #$2C
AA73: D0 07 BNE $AA7C
AA75: AD 33 01 LDA $0133
AA78: 20 EB 98 JSR $98EB ; ?
AA7B: C8 INY
AA7C: 38 SEC
AA7D: 6E 25 01 ROR $0125
AA80: 60 RTS
; Unused
AA81: FF FF FF FF FF FF FF FF ; '........'
AA89: FF FF FF FF FF FF FF FF ; '........'
AA91: FF FF FF FF FF FF FF FF ; '........'
AA99: FF FF FF FF FF FF FF FF ; '........'
AAA1: FF FF FF FF FF FF FF FF ; '........'
AAA9: FF FF FF FF FF FF FF FF ; '........'
AAB1: FF FF FF FF FF FF FF FF ; '........'
AAB9: FF FF FF FF FF FF FF FF ; '........'
AAC1: FF FF FF FF FF FF FF FF ; '........'
AAC9: FF FF FF FF FF FF FF FF ; '........'
AAD1: FF FF FF FF FF FF FF FF ; '........'
AAD9: FF FF FF FF FF FF FF FF ; '........'
AAE1: FF FF FF FF FF FF FF FF ; '........'
AAE9: FF FF FF FF FF FF FF FF ; '........'
AAF1: FF FF FF FF FF FF FF FF ; '........'
AAF9: FF FF FF FF FF FF FF FF ; '........'
AB01: FF FF FF FF FF FF FF FF ; '........'
AB09: FF FF FF FF FF FF FF FF ; '........'
AB11: FF FF FF FF FF FF FF FF ; '........'
AB19: FF FF FF FF FF FF FF FF ; '........'
AB21: FF FF FF FF FF FF FF FF ; '........'
AB29: FF FF FF FF FF FF FF FF ; '........'
AB31: FF FF FF FF FF FF FF FF ; '........'
AB39: FF FF FF FF FF FF FF FF ; '........'
AB41: FF FF FF FF FF FF FF FF ; '........'
AB49: FF FF FF FF FF FF FF FF ; '........'
AB51: FF FF FF FF FF FF FF FF ; '........'
AB59: FF FF FF FF FF FF FF FF ; '........'
AB61: FF FF FF FF FF FF FF FF ; '........'
AB69: FF FF FF FF FF FF FF FF ; '........'
AB71: FF FF FF FF FF FF FF FF ; '........'
AB79: FF FF FF FF FF FF FF FF ; '........'
AB81: FF FF FF FF FF FF FF FF ; '........'
AB89: FF FF FF FF FF FF FF FF ; '........'
AB91: FF FF FF FF FF FF FF FF ; '........'
AB99: FF FF FF FF FF FF FF FF ; '........'
ABA1: FF FF FF FF FF FF FF FF ; '........'
ABA9: FF FF FF FF FF FF FF FF ; '........'
ABB1: FF FF FF FF FF FF FF FF ; '........'
ABB9: FF FF FF FF FF FF FF FF ; '........'
ABC1: FF FF FF FF FF FF FF FF ; '........'
ABC9: FF FF FF FF FF FF FF FF ; '........'
ABD1: FF FF FF FF FF FF FF FF ; '........'
ABD9: FF FF FF FF FF FF FF FF ; '........'
ABE1: FF FF FF FF FF FF FF FF ; '........'
ABE9: FF FF FF FF FF FF FF FF ; '........'
ABF1: FF FF FF FF FF FF FF FF ; '........'
ABF9: FF FF FF FF FF FF FF FF ; '........'
AC01: FF FF FF FF FF FF FF FF ; '........'
AC09: FF FF FF FF FF FF FF FF ; '........'
AC11: FF FF FF FF FF FF FF FF ; '........'
AC19: FF FF FF FF FF FF FF FF ; '........'
AC21: FF FF FF FF FF FF FF FF ; '........'
AC29: FF FF FF FF FF FF FF FF ; '........'
AC31: FF FF FF FF FF FF FF FF ; '........'
AC39: FF FF FF FF FF FF FF FF ; '........'
AC41: FF FF FF FF FF FF FF FF ; '........'
AC49: FF FF FF FF FF FF FF FF ; '........'
AC51: FF FF FF FF FF FF FF FF ; '........'
AC59: FF FF FF FF FF FF FF FF ; '........'
AC61: FF FF FF FF FF FF FF FF ; '........'
AC69: FF FF FF FF FF FF FF FF ; '........'
AC71: FF FF FF FF FF FF FF FF ; '........'
AC79: FF FF FF FF FF FF FF FF ; '........'
AC81: FF FF FF FF FF FF FF FF ; '........'
AC89: FF FF FF FF FF FF FF FF ; '........'
AC91: FF FF FF FF FF FF FF FF ; '........'
AC99: FF FF FF FF FF FF FF FF ; '........'
ACA1: FF FF FF FF FF FF FF FF ; '........'
ACA9: FF FF FF FF FF FF FF FF ; '........'
ACB1: FF FF FF FF FF FF FF FF ; '........'
ACB9: FF FF FF FF FF FF FF FF ; '........'
ACC1: FF FF FF FF FF FF FF FF ; '........'
ACC9: FF FF FF FF FF FF FF FF ; '........'
ACD1: FF FF FF FF FF FF FF FF ; '........'
ACD9: FF FF FF FF FF FF FF FF ; '........'
ACE1: FF FF FF FF FF FF FF FF ; '........'
ACE9: FF FF FF FF FF FF FF FF ; '........'
ACF1: FF FF FF FF FF FF FF FF ; '........'
ACF9: FF FF FF FF FF FF FF FF ; '........'
AD01: FF FF FF FF FF FF FF FF ; '........'
AD09: FF FF FF FF FF FF FF FF ; '........'
AD11: FF FF FF FF FF FF FF FF ; '........'
AD19: FF FF FF FF FF FF FF FF ; '........'
AD21: FF FF FF FF FF FF FF FF ; '........'
AD29: FF FF FF FF FF FF FF FF ; '........'
AD31: FF FF FF FF FF FF FF FF ; '........'
AD39: FF FF FF FF FF FF FF FF ; '........'
AD41: FF FF FF FF FF FF FF FF ; '........'
AD49: FF FF FF FF FF FF FF FF ; '........'
AD51: FF FF FF FF FF FF FF FF ; '........'
AD59: FF FF FF FF FF FF FF FF ; '........'
AD61: FF FF FF FF FF FF FF FF ; '........'
AD69: FF FF FF FF FF FF FF FF ; '........'
AD71: FF FF FF FF FF FF FF FF ; '........'
AD79: FF FF FF FF FF FF FF FF ; '........'
AD81: FF FF FF FF FF FF FF FF ; '........'
AD89: FF FF FF FF FF FF FF FF ; '........'
AD91: FF FF FF FF FF FF FF FF ; '........'
AD99: FF FF FF FF FF FF FF FF ; '........'
ADA1: FF FF FF FF FF FF FF FF ; '........'
ADA9: FF FF FF FF FF FF FF FF ; '........'
ADB1: FF FF FF FF FF FF FF FF ; '........'
ADB9: FF FF FF FF FF FF FF FF ; '........'
ADC1: FF FF FF FF FF FF FF FF ; '........'
ADC9: FF FF FF FF FF FF FF FF ; '........'
ADD1: FF FF FF FF FF FF FF FF ; '........'
ADD9: FF FF FF FF FF FF FF FF ; '........'
ADE1: FF FF FF FF FF FF FF FF ; '........'
ADE9: FF FF FF FF FF FF FF FF ; '........'
ADF1: FF FF FF FF FF FF FF FF ; '........'
ADF9: FF FF FF FF FF FF FF FF ; '........'
AE01: FF FF FF FF FF FF FF FF ; '........'
AE09: FF FF FF FF FF FF FF FF ; '........'
AE11: FF FF FF FF FF FF FF FF ; '........'
AE19: FF FF FF FF FF FF FF FF ; '........'
AE21: FF FF FF FF FF FF FF FF ; '........'
AE29: FF FF FF FF FF FF FF FF ; '........'
AE31: FF FF FF FF FF FF ; '......'
AE37: FF FF FF FF FF FF FF FF ; '........'
AE3F: FF FF FF FF FF FF FF FF ; '........'
AE47: FF FF FF FF FF FF FF FF ; '........'
AE4F: FF FF FF FF FF FF FF FF ; '........'
AE57: FF FF FF FF FF FF FF FF ; '........'
AE5F: FF FF FF FF ; '....'
; Encryption key
AE63: 7B ; '.'
; Encrypted Message
AE64: E9 77 6A 5F 5E 5D BE 21 ; '.Wj_^].!'
AE6C: 3D 24 37 3F 22 55 20 24 ; '=$7?"u $'
AE74: 4A 30 27 3A 4E 2F 35 4D ; 'j0':n/5m'
AE7C: 4C 4F 40 47 46 68 69 88 ; 'lo@gfhi.'
AE84: 15 1F 0C 08 1F 0F 19 69 ; '.{BLUE}{UNLOCK}.{BLUE}{FLSHON}.i'
AE8C: 5F 71 96 05 13 11 74 89 ; '_Q{LTRED}{WHITE}{HOME}{DOWN}T.'
AE94: 05 1E 0D 01 43 6D 98 06 ; '{WHITE}{GREEN}{CR}.cm{GRAY2}.'
AE9C: 10 13 19 67 94 1C 05 75 ; '.{HOME}.g{INS}{RED}{WHITE}U'
AEA4: 37 19 EE 70 70 1D F9 61 ; '7..PP{RIGHT}.a'
AEAC: 66 66 79 79 73 38 39 E3 ; 'ffYYS89.'
AEB4: 6F 7B 6C 78 6F 7F 69 19 ; 'o.lXo.i.'
AEBC: 2F 01 E2 6E 6A 05 EC 5E ; '/..nj{WHITE}.^'
AEC4: 48 5D 15 3F DA 5C 4A 56 ; 'h].?Z\jv'
AECC: 32 D9 51 4E 58 5C 51 06 ; '2Yqnx\q.'
AED4: 2A CF 5A 4E 40 46 2C D3 ; '*Ozn@f,S'
AEDC: 43 4D 41 4E 47 08 09 E9 ; 'cmang.{TAB}.'
AEE4: 36 B0 B6 B4 DE BC AE BE ; '6.......'
AEEC: A1 DD B4 B8 B8 D2 A0 CB ; '.....R.K'
AEF4: A7 A8 A3 AA CE B9 A4 A6 ; '....N...'
AEFC: AF CF ED E7 ; '.O..'
; JMP $84B4 ; Convert F.P. to Integer
AF00: 4C B4 84 JMP $84B4
; JMP $793C ; Convert Integer to F.P.
AF03: 4C 3C 79 JMP $793C ; Fixed-Float
; JMP $8E42 ; Float to Ascii
AF06: 4C 42 8E JMP $8E42 ; Float to Ascii
; JMP $8052 ; String to Float
AF09: 4C 52 80 JMP $8052 ; String to Float
; JMP $8815 ; Float/Fixed
AF0C: 4C 15 88 JMP $8815 ; Float/Fixed
; JMP $8C75 ; Fixed-Float
AF0F: 4C 75 8C JMP $8C75 ; Fixed-Float
; JMP $882E ; Subtract From Memory
AF12: 4C 2E 88 JMP $882E ; Subtract From Memory
; JMP $8831 ; Evaluate <subtract>
AF15: 4C 31 88 JMP $8831 ; Evaluate <subtract>
; JMP $8845 ; Add Memory
AF18: 4C 45 88 JMP $8845 ; Add Memory
; JMP $8848 ; Evaluate <add>
AF1B: 4C 48 88 JMP $8848 ; Evaluate <add>
; JMP $8A24 ; Multiply By Memory
AF1E: 4C 24 8A JMP $8A24 ; Multiply By Memory
; JMP $8A27 ; Evaluate <multiply>
AF21: 4C 27 8A JMP $8A27 ; Evaluate <multiply>
; JMP $8B49 ; Divide Into Memory
AF24: 4C 49 8B JMP $8B49 ; Divide Into Memory
; JMP $8B4C ; Evaluate <divide>
AF27: 4C 4C 8B JMP $8B4C ; Evaluate <divide>
; JMP $89CA ; Evaluate <log>
AF2A: 4C CA 89 JMP $89CA ; Evaluate <log>
; JMP $8CFB ; Evaluate <int>
AF2D: 4C FB 8C JMP $8CFB ; Evaluate <int>
; JMP $8FB7 ; Evaluate <sqr>
AF30: 4C B7 8F JMP $8FB7 ; Evaluate <sqr>
; JMP $8FFA ; Evaluate <negate>
AF33: 4C FA 8F JMP $8FFA ; Evaluate <negate>
; JMP $8FBE ; Raise to Memory Power
AF36: 4C BE 8F JMP $8FBE ; Raise to Memory Power
; JMP $8FC1 ; Evaluate <power>
AF39: 4C C1 8F JMP $8FC1 ; Evaluate <power>
; JMP $9033 ; Evaluate <exp>
AF3C: 4C 33 90 JMP $9033 ; Evaluate <exp>
; JMP $9409 ; Evaluate <cos>
AF3F: 4C 09 94 JMP $9409 ; Evaluate <cos>
; JMP $9410 ; Evaluate <sin>
AF42: 4C 10 94 JMP $9410 ; Evaluate <sin>
; JMP $9459 ; Evaluate <tan>
AF45: 4C 59 94 JMP $9459 ; Evaluate <tan>
; JMP $94B3 ; Evaluate <atn>
AF48: 4C B3 94 JMP $94B3 ; Evaluate <atn>
; JMP $8C47 ; Round FAC#1
AF4B: 4C 47 8C JMP $8C47 ; Round FAC#1
; JMP $8C84 ; Evaluate <abs>
AF4E: 4C 84 8C JMP $8C84 ; Evaluate <abs>
; JMP $8C57 ; Get Sign
AF51: 4C 57 8C JMP $8C57 ; Get Sign
; JMP $8C87 ; Compare FAC#1 to Memory
AF54: 4C 87 8C JMP $8C87 ; Compare FAC#1 to Memory
; JMP $8437 ; Generate Random F.P. Number
AF57: 4C 37 84 JMP $8437
; JMP $8AB4 ; Unpack RAM1 to FAC#2
AF5A: 4C B4 8A JMP $8AB4 ; Unpack RAM1 to FAC#2
; JMP $8A89 ; Unpack ROM to FAC#2
AF5D: 4C 89 8A JMP $8A89 ; Unpack ROM to FAC#2
; JMP $7A85 ; Unpack RAM1 to FAC#1
AF60: 4C 85 7A JMP $7A85 ; Unpack RAM1 to FAC#1
; JMP $8BD4 ; Unpack ROM to FAC#1
AF63: 4C D4 8B JMP $8BD4 ; Unpack ROM to FAC#1
; JMP $8C00 ; Pack FAC#1 to RAM1
AF66: 4C 00 8C JMP $8C00 ; Pack FAC#1 to RAM1
; JMP $8C28 ; FAC#2 to FAC#1
AF69: 4C 28 8C JMP $8C28 ; FAC#2 to FAC#1
; JMP $8C38 ; FAC#1 to FAC#2
AF6C: 4C 38 8C JMP $8C38 ; FAC#1 to FAC#2
; JMP $4828 ; Defunct Vectors
AF6F: 4C 28 48 JMP $4828 ; Defunct Vectors
; JMP $9B30 ; Draw Line
AF72: 4C 30 9B JMP $9B30 ; Draw Line
; JMP $9BFB ; Plot Pixel
AF75: 4C FB 9B JMP $9BFB ; Plot Pixel
; JMP $6750 ; Draw Circle
AF78: 4C 50 67 JMP $6750 ; Draw Circle
; JMP $5A9B ; Perform [run]
AF7B: 4C 9B 5A JMP $5A9B ; Perform [run]
; JMP $51F3 ; Set Up Run
AF7E: 4C F3 51 JMP $51F3 ; Set Up Run
; JMP $51F8 ; Perform [clr]
AF81: 4C F8 51 JMP $51F8 ; Perform [clr]
; JMP $51D6 ; Perform [new]
AF84: 4C D6 51 JMP $51D6 ; Perform [new]
; JMP $4F4F ; Rechain Lines
AF87: 4C 4F 4F JMP $4F4F ; Rechain Lines
; JMP $430A ; Crunch Tokens
AF8A: 4C 0A 43 JMP $430A ; Crunch Tokens
; JMP $5064 ; Find Basic Line
AF8D: 4C 64 50 JMP $5064 ; Find Basic Line
; JMP $4AF6
AF90: 4C F6 4A JMP $4AF6
; JMP $78D7 ; Evaluate Item
AF93: 4C D7 78 JMP $78D7 ; Evaluate Item
; JMP $77EF ; Evaluate Expression
AF96: 4C EF 77 JMP $77EF ; Evaluate Expression
; JMP $5AA6
AF99: 4C A6 5A JMP $5AA6
; JMP $5A81
AF9C: 4C 81 5A JMP $5A81
; JMP $50A0 ; Get Fixed Pt Number
AF9F: 4C A0 50 JMP $50A0 ; Get Fixed Pt Number
; JMP $92EA ; Garbage Collection
AFA2: 4C EA 92 JMP $92EA ; Garbage Collection
; JMP $4DCD
AFA5: 4C CD 4D JMP $4DCD
; Unused
AFA8: FF FF FF FF FF FF FF FF ; '........'
AFB0: FF FF FF FF FF FF FF FF ; '........'
AFB8: FF FF FF FF FF FF FF FF ; '........'
AFC0: FF FF FF FF FF FF FF FF ; '........'
AFC8: FF FF FF FF FF FF FF FF ; '........'
AFD0: FF FF FF FF FF FF FF FF ; '........'
AFD8: FF FF FF FF FF FF FF FF ; '........'
AFE0: FF FF FF FF FF FF FF FF ; '........'
AFE8: FF FF FF FF FF FF FF FF ; '........'
AFF0: FF FF FF FF FF FF FF FF ; '........'
AFF8: FF FF FF FF FF FF FF FF ; '........'
; Perform [monitor]
B000: 4C 21 B0 JMP $B021 ; Print 'call' entry
; -brk- monitor entry
B003: 4C 09 B0 JMP $B009 ; Break Entry
; Monitor command entry
B006: 4C B2 B0 JMP $B0B2 ; Monitor command
; Break Entry
B009: 20 7D FF JSR $FF7D ; primm Print Immediate
B00C: 0D 42 52 45 41 4B 07 00 ; '{CR}break{BELL}{0}'
B014: 68 PLA
B015: 85 02 STA $02 ; Bank Number, Jump to SYS Address
B017: A2 05 LDX #$05
B019: 68 PLA
B01A: 95 03 STA $03,X ; SYS address low, MLM register PC
B01C: CA DEX
B01D: 10 FA BPL $B019
B01F: 30 25 BMI $B046
; Print 'call' entry
B021: A9 00 LDA #$00
B023: 8D 00 FF STA $FF00 ; MMU Configuration Register
B026: 85 06 STA $06 ; SYS and MLM register save (A)
B028: 85 07 STA $07 ; SYS and MLM register save (X)
B02A: 85 08 STA $08 ; SYS and MLM register save (Y)
B02C: 85 05 STA $05 ; SYS and MLM register save (SR)
B02E: A9 00 LDA #$00
B030: A0 B0 LDY #$B0
B032: 85 04 STA $04 ; SYS address high, MLM register PC
B034: 84 03 STY $03 ; SYS address low, MLM register PC
B036: A9 0F LDA #$0F
B038: 85 02 STA $02 ; Bank Number, Jump to SYS Address
; Print 'monitor'
B03A: 20 7D FF JSR $FF7D ; primm Print Immediate
B03D: 0D 4D 4F 4E 49 54 4F 52 ; '{CR}monitor'
B045: 00 ; '{0}'
B046: D8 CLD
B047: BA TSX
B048: 86 09 STX $09 ; SYS and MLM register save (SP)
B04A: A9 C0 LDA #$C0
B04C: 20 90 FF JSR $FF90 ; setmsg Control OS Messages
B04F: 58 CLI
; Perform [r]
B050: 20 7D FF JSR $FF7D ; primm Print Immediate
B053: 0D 20 20 20 20 50 43 20 ; '{CR} pc '
B05B: 20 53 52 20 41 43 20 58 ; ' sr ac x'
B063: 52 20 59 52 20 53 50 0D ; 'r yr sp{CR}'
B06B: 3B 20 1B 51 00 ; '; {ESC}q{0}'
B070: A5 02 LDA $02 ; Bank Number, Jump to SYS Address
B072: 20 D2 B8 JSR $B8D2 ; Byte to 2 Ascii
B075: 8A TXA
B076: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
B079: A5 03 LDA $03 ; SYS address low, MLM register PC
B07B: 20 C2 B8 JSR $B8C2 ; Output 2-Digit Byte
B07E: A0 02 LDY #$02
B080: B9 02 00 LDA $02,Y ; Bank Number, Jump to SYS Address
B083: 20 A5 B8 JSR $B8A5 ; Display 2-digit Byte
B086: C8 INY
B087: C0 08 CPY #$08
B089: 90 F5 BCC $B080
; Get Command
B08B: 20 B4 B8 JSR $B8B4 ; New Line
B08E: A2 00 LDX #$00
B090: 86 7A STX $7A
B092: 20 CF FF JSR $FFCF ; (ibasin) Input Vector, chrin [EF06]
B095: 9D 00 02 STA $0200,X
B098: E8 INX
B099: E0 A1 CPX #$A1
B09B: B0 1F BCS $B0BC ; Error
B09D: C9 0D CMP #$0D
B09F: D0 F1 BNE $B092
B0A1: A9 00 LDA #$00
B0A3: 9D FF 01 STA $01FF,X
B0A6: 20 E9 B8 JSR $B8E9 ; Get Character
B0A9: F0 E0 BEQ $B08B ; Get Command
B0AB: C9 20 CMP #$20
B0AD: F0 F7 BEQ $B0A6
B0AF: 6C 2E 03 JMP ($032E) ; Machine Lang Monitor Link [B006]
; Monitor command
B0B2: A2 15 LDX #$15
B0B4: DD E6 B0 CMP $B0E6,X ; Commands
B0B7: F0 0C BEQ $B0C5
B0B9: CA DEX
B0BA: 10 F8 BPL $B0B4
; Error
B0BC: 20 7D FF JSR $FF7D ; primm Print Immediate
B0BF: 1D 3F 00 ; '{RIGHT}?{0}'
B0C2: 4C 8B B0 JMP $B08B ; Get Command
B0C5: E0 13 CPX #$13
B0C7: B0 12 BCS $B0DB
B0C9: E0 0F CPX #$0F
B0CB: B0 13 BCS $B0E0
B0CD: 8A TXA
B0CE: 0A ASL A
B0CF: AA TAX
B0D0: BD FD B0 LDA $B0FD,X
B0D3: 48 PHA
B0D4: BD FC B0 LDA $B0FC,X ; Vectors
B0D7: 48 PHA
B0D8: 4C A7 B7 JMP $B7A7
B0DB: 85 93 STA $93 ; Work value, monitor, LOAD / SAVE 0 = LOAD, 1 = VERIFY
B0DD: 4C 37 B3 JMP $B337 ; Perform [lsv]
B0E0: 4C B1 B9 JMP $B9B1 ; Perform [$+&%]
; Perform [x]
B0E3: 6C 00 0A JMP ($0A00) ; Restart System (BASIC Warm) [4000]
; Commands
B0E6: 41 43 44 46 47 48 4A 4D ; 'acdfghjm'
B0EE: 52 54 58 40 2E 3E 3B ; 'rtx@.>;'
B0F5: 24 2B 26 25 4C 53 56 ; '$+&%lsv'
; Vectors
B0FC: 05 B4 .WORD $B406-1 ; Perform [a]
B0FE: 30 B2 .WORD $B231-1 ; Perform [c]
B100: 98 B5 .WORD $B599-1 ; Perform [d]
B102: DA B3 .WORD $B3DB-1 ; Perform [f]
B104: D5 B1 .WORD $B1D6-1 ; Perform [g]
B106: CD B2 .WORD $B2CE-1 ; Perform [h]
B108: DE B1 .WORD $B1DF-1 ; Perform [j]
B10A: 51 B1 .WORD $B152-1 ; Perform [m]
B10C: 4F B0 .WORD $B050-1 ; Perform [r]
B10E: 33 B2 .WORD $B234-1 ; Perform [t]
B110: E2 B0 .WORD $B0E3-1 ; Perform [x]
B112: 8F BA .WORD $BA90-1 ; Perform [@]
B114: 05 B4 .WORD $B406-1 ; Perform [a]
B116: AA B1 .WORD $B1AB-1 ; Perform [>]
B118: 93 B1 .WORD $B194-1 ; Perform [:]
; Read Banked Memory
B11A: 8E B2 0A STX $0AB2
B11D: A6 68 LDX $68
B11F: A9 66 LDA #$66
B121: 78 SEI
B122: 20 74 FF JSR $FF74 ; indfet Bank LDA (fetchvec),y
B125: 58 CLI
B126: AE B2 0A LDX $0AB2
B129: 60 RTS
; Write Banked Memory
B12A: 8E B2 0A STX $0AB2
B12D: A2 66 LDX #$66
B12F: 8E B9 02 STX $02B9
B132: A6 68 LDX $68
B134: 78 SEI
B135: 20 77 FF JSR $FF77 ; indsta Bank STA (stavec),y
B138: 58 CLI
B139: AE B2 0A LDX $0AB2
B13C: 60 RTS
; Compare Banked Memory
B13D: 8E B2 0A STX $0AB2
B140: A2 66 LDX #$66
B142: 8E C8 02 STX $02C8
B145: A6 68 LDX $68
B147: 78 SEI
B148: 20 7A FF JSR $FF7A ; indcmp Bank CMP (cmpvec),y
B14B: 58 CLI
B14C: 08 PHP
B14D: AE B2 0A LDX $0AB2
B150: 28 PLP
B151: 60 RTS
; Perform [m]
B152: B0 08 BCS $B15C
B154: 20 01 B9 JSR $B901 ; Copy Add0 to Add2
B157: 20 A7 B7 JSR $B7A7
B15A: 90 06 BCC $B162
B15C: A9 0B LDA #$0B
B15E: 85 60 STA $60
B160: D0 15 BNE $B177
B162: 20 0E B9 JSR $B90E ; Calculate Add2 - Add0
B165: 90 2A BCC $B191
B167: A2 03 LDX #$03
B169: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
B16B: 10 01 BPL $B16E
B16D: E8 INX
B16E: 46 62 LSR $62
B170: 66 61 ROR $61
B172: 66 60 ROR $60
B174: CA DEX
B175: D0 F7 BNE $B16E
B177: 20 E1 FF JSR $FFE1 ; (istop) Test-Stop Vector [F66E]
B17A: F0 12 BEQ $B18E
B17C: 20 E8 B1 JSR $B1E8 ; Display Memory
B17F: A9 08 LDA #$08
B181: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
B183: 10 01 BPL $B186
B185: 0A ASL A
B186: 20 52 B9 JSR $B952
B189: 20 22 B9 JSR $B922 ; Subtract Add0
B18C: B0 E9 BCS $B177
B18E: 4C 8B B0 JMP $B08B ; Get Command
B191: 4C BC B0 JMP $B0BC ; Error
; Perform [:]
B194: 20 74 B9 JSR $B974 ; Copy to Register Area
B197: A0 00 LDY #$00
B199: 20 A7 B7 JSR $B7A7
B19C: B0 0A BCS $B1A8
B19E: A5 60 LDA $60
B1A0: 99 05 00 STA $05,Y ; SYS and MLM register save (SR)
B1A3: C8 INY
B1A4: C0 05 CPY #$05
B1A6: 90 F1 BCC $B199
B1A8: 4C 8B B0 JMP $B08B ; Get Command
; Perform [>]
B1AB: B0 1C BCS $B1C9 ; Print 'esc-o-up'
B1AD: 20 01 B9 JSR $B901 ; Copy Add0 to Add2
B1B0: A0 00 LDY #$00
B1B2: 20 A7 B7 JSR $B7A7
B1B5: B0 12 BCS $B1C9 ; Print 'esc-o-up'
B1B7: A5 60 LDA $60
B1B9: 20 2A B1 JSR $B12A ; Write Banked Memory
B1BC: C8 INY
B1BD: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
B1BF: 10 04 BPL $B1C5
B1C1: C0 10 CPY #$10
B1C3: 90 ED BCC $B1B2
B1C5: C0 08 CPY #$08
B1C7: 90 E9 BCC $B1B2
; Print 'esc-o-up'
B1C9: 20 7D FF JSR $FF7D ; primm Print Immediate
B1CC: 1B 4F 91 00 ; '{ESC}o{UP}{0}'
B1D0: 20 E8 B1 JSR $B1E8 ; Display Memory
B1D3: 4C 8B B0 JMP $B08B ; Get Command
; Perform [g]
B1D6: 20 74 B9 JSR $B974 ; Copy to Register Area
B1D9: A6 09 LDX $09 ; SYS and MLM register save (SP)
B1DB: 9A TXS
B1DC: 4C 71 FF JMP $FF71 ; jmpfar
; Perform [j]
B1DF: 20 74 B9 JSR $B974 ; Copy to Register Area
B1E2: 20 6E FF JSR $FF6E ; jsrfar
B1E5: 4C 8B B0 JMP $B08B ; Get Command
; Display Memory
B1E8: 20 B4 B8 JSR $B8B4 ; New Line
B1EB: A9 3E LDA #$3E
B1ED: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
B1F0: 20 92 B8 JSR $B892 ; Display 5-Digit Address
B1F3: A0 00 LDY #$00
B1F5: F0 03 BEQ $B1FA
B1F7: 20 A8 B8 JSR $B8A8 ; Print Space
B1FA: 20 1A B1 JSR $B11A ; Read Banked Memory
B1FD: 20 C2 B8 JSR $B8C2 ; Output 2-Digit Byte
B200: C8 INY
B201: C0 08 CPY #$08
B203: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
B205: 10 02 BPL $B209
B207: C0 10 CPY #$10
B209: 90 EC BCC $B1F7
; Print ':<rvs-on>'
B20B: 20 7D FF JSR $FF7D ; primm Print Immediate
B20E: 3A 12 00 ; ':{RVSON}{0}'
B211: A0 00 LDY #$00
B213: 20 1A B1 JSR $B11A ; Read Banked Memory
B216: 48 PHA
B217: 29 7F AND #$7F
B219: C9 20 CMP #$20
B21B: 68 PLA
B21C: B0 02 BCS $B220
B21E: A9 2E LDA #$2E
B220: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
B223: C8 INY
B224: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
B226: 10 04 BPL $B22C
B228: C0 10 CPY #$10
B22A: 90 E7 BCC $B213
B22C: C0 08 CPY #$08
B22E: 90 E3 BCC $B213
B230: 60 RTS
; Perform [c]
B231: A9 00 LDA #$00
B233: 2C .BYTE $2C
; Perform [t]
B234: A9 80 LDA #$80
B236: 85 93 STA $93 ; Work value, monitor, LOAD / SAVE 0 = LOAD, 1 = VERIFY
B238: A9 00 LDA #$00
B23A: 8D B3 0A STA $0AB3
B23D: 20 83 B9 JSR $B983 ; Calculate Step/Area
B240: B0 05 BCS $B247
B242: 20 A7 B7 JSR $B7A7
B245: 90 03 BCC $B24A
B247: 4C BC B0 JMP $B0BC ; Error
B24A: 24 93 BIT $93 ; Work value, monitor, LOAD / SAVE 0 = LOAD, 1 = VERIFY
B24C: 10 2C BPL $B27A
B24E: 38 SEC
B24F: A5 66 LDA $66
B251: E5 60 SBC $60
B253: A5 67 LDA $67
B255: E5 61 SBC $61
B257: B0 21 BCS $B27A
B259: A5 63 LDA $63
B25B: 65 60 ADC $60
B25D: 85 60 STA $60
B25F: A5 64 LDA $64
B261: 65 61 ADC $61
B263: 85 61 STA $61
B265: A5 65 LDA $65
B267: 65 62 ADC $62
B269: 85 62 STA $62
B26B: A2 02 LDX #$02
B26D: BD B7 0A LDA $0AB7,X
B270: 95 66 STA $66,X
B272: CA DEX
B273: 10 F8 BPL $B26D
B275: A9 80 LDA #$80
B277: 8D B3 0A STA $0AB3
B27A: 20 B4 B8 JSR $B8B4 ; New Line
B27D: A0 00 LDY #$00
B27F: 20 E1 FF JSR $FFE1 ; (istop) Test-Stop Vector [F66E]
B282: F0 47 BEQ $B2CB
B284: 20 1A B1 JSR $B11A ; Read Banked Memory
B287: A2 60 LDX #$60
B289: 8E B9 02 STX $02B9
B28C: 8E C8 02 STX $02C8
B28F: A6 62 LDX $62
B291: 78 SEI
B292: 24 93 BIT $93 ; Work value, monitor, LOAD / SAVE 0 = LOAD, 1 = VERIFY
B294: 10 03 BPL $B299
B296: 20 77 FF JSR $FF77 ; indsta Bank STA (stavec),y
B299: A6 62 LDX $62
B29B: 20 7A FF JSR $FF7A ; indcmp Bank CMP (cmpvec),y
B29E: 58 CLI
B29F: F0 09 BEQ $B2AA
B2A1: 20 92 B8 JSR $B892 ; Display 5-Digit Address
B2A4: 20 A8 B8 JSR $B8A8 ; Print Space
B2A7: 20 A8 B8 JSR $B8A8 ; Print Space
B2AA: 2C B3 0A BIT $0AB3
B2AD: 30 0B BMI $B2BA
B2AF: E6 60 INC $60
B2B1: D0 10 BNE $B2C3 ; Add 1 to Op 3
B2B3: E6 61 INC $61
B2B5: D0 0C BNE $B2C3 ; Add 1 to Op 3
B2B7: 4C BC B0 JMP $B0BC ; Error
B2BA: 20 22 B9 JSR $B922 ; Subtract Add0
B2BD: 20 60 B9 JSR $B960 ; Decrement Pointer
B2C0: 4C C6 B2 JMP $B2C6 ; Do Next Address
; Add 1 to Op 3
B2C3: 20 50 B9 JSR $B950 ; Increment Pointer
; Do Next Address
B2C6: 20 3C B9 JSR $B93C ; Subtract Add1
B2C9: B0 B4 BCS $B27F
B2CB: 4C 8B B0 JMP $B08B ; Get Command
; Perform [h]
B2CE: 20 83 B9 JSR $B983 ; Calculate Step/Area
B2D1: B0 61 BCS $B334
B2D3: A0 00 LDY #$00
B2D5: 20 E9 B8 JSR $B8E9 ; Get Character
B2D8: C9 27 CMP #$27
B2DA: D0 16 BNE $B2F2
B2DC: 20 E9 B8 JSR $B8E9 ; Get Character
B2DF: C9 00 CMP #$00
B2E1: F0 51 BEQ $B334
B2E3: 99 80 0A STA $0A80,Y
B2E6: C8 INY
B2E7: 20 E9 B8 JSR $B8E9 ; Get Character
B2EA: F0 1B BEQ $B307
B2EC: C0 20 CPY #$20
B2EE: D0 F3 BNE $B2E3
B2F0: F0 15 BEQ $B307
B2F2: 8C 00 01 STY $0100
B2F5: 20 A5 B7 JSR $B7A5 ; Input Parameter
B2F8: A5 60 LDA $60
B2FA: 99 80 0A STA $0A80,Y
B2FD: C8 INY
B2FE: 20 A7 B7 JSR $B7A7
B301: B0 04 BCS $B307
B303: C0 20 CPY #$20
B305: D0 F1 BNE $B2F8
B307: 84 93 STY $93 ; Work value, monitor, LOAD / SAVE 0 = LOAD, 1 = VERIFY
B309: 20 B4 B8 JSR $B8B4 ; New Line
B30C: A0 00 LDY #$00
B30E: 20 1A B1 JSR $B11A ; Read Banked Memory
B311: D9 80 0A CMP $0A80,Y
B314: D0 0E BNE $B324
B316: C8 INY
B317: C4 93 CPY $93 ; Work value, monitor, LOAD / SAVE 0 = LOAD, 1 = VERIFY
B319: D0 F3 BNE $B30E
B31B: 20 92 B8 JSR $B892 ; Display 5-Digit Address
B31E: 20 A8 B8 JSR $B8A8 ; Print Space
B321: 20 A8 B8 JSR $B8A8 ; Print Space
B324: 20 E1 FF JSR $FFE1 ; (istop) Test-Stop Vector [F66E]
B327: F0 08 BEQ $B331
B329: 20 50 B9 JSR $B950 ; Increment Pointer
B32C: 20 3C B9 JSR $B93C ; Subtract Add1
B32F: B0 DB BCS $B30C
B331: 4C 8B B0 JMP $B08B ; Get Command
B334: 4C BC B0 JMP $B0BC ; Error
; Perform [lsv]
B337: A0 01 LDY #$01
B339: 84 BA STY $BA ; Current device
B33B: 84 B9 STY $B9 ; Current secondary address
B33D: 88 DEY
B33E: 84 C6 STY $C6
B340: 84 B7 STY $B7 ; Number of characters in file name
B342: 84 C7 STY $C7
B344: 84 90 STY $90 ; Status word ST
B346: A9 0A LDA #$0A
B348: 85 BC STA $BC
B34A: A9 80 LDA #$80
B34C: 85 BB STA $BB ; Pointer to file name
B34E: 20 E9 B8 JSR $B8E9 ; Get Character
B351: F0 58 BEQ $B3AB
B353: C9 20 CMP #$20
B355: F0 F7 BEQ $B34E
B357: C9 22 CMP #$22
B359: D0 15 BNE $B370
B35B: A6 7A LDX $7A
B35D: BD 00 02 LDA $0200,X
B360: F0 49 BEQ $B3AB
B362: E8 INX
B363: C9 22 CMP #$22
B365: F0 0C BEQ $B373
B367: 91 BB STA ($BB),Y ; Pointer to file name
B369: E6 B7 INC $B7 ; Number of characters in file name
B36B: C8 INY
B36C: C0 11 CPY #$11
B36E: 90 ED BCC $B35D
B370: 4C BC B0 JMP $B0BC ; Error
B373: 86 7A STX $7A
B375: 20 E9 B8 JSR $B8E9 ; Get Character
B378: F0 31 BEQ $B3AB
B37A: 20 A7 B7 JSR $B7A7
B37D: B0 2C BCS $B3AB
B37F: A5 60 LDA $60
B381: 85 BA STA $BA ; Current device
B383: 20 A7 B7 JSR $B7A7
B386: B0 23 BCS $B3AB
B388: 20 01 B9 JSR $B901 ; Copy Add0 to Add2
B38B: 85 C6 STA $C6
B38D: 20 A7 B7 JSR $B7A7
B390: B0 3F BCS $B3D1
B392: 20 B4 B8 JSR $B8B4 ; New Line
B395: A6 60 LDX $60
B397: A4 61 LDY $61
B399: A5 93 LDA $93 ; Work value, monitor, LOAD / SAVE 0 = LOAD, 1 = VERIFY
B39B: C9 53 CMP #$53
B39D: D0 D1 BNE $B370
B39F: A9 00 LDA #$00
B3A1: 85 B9 STA $B9 ; Current secondary address
B3A3: A9 66 LDA #$66
B3A5: 20 D8 FF JSR $FFD8 ; savesp Save RAM To Device
B3A8: 4C 8B B0 JMP $B08B ; Get Command
B3AB: A5 93 LDA $93 ; Work value, monitor, LOAD / SAVE 0 = LOAD, 1 = VERIFY
B3AD: C9 56 CMP #$56
B3AF: F0 06 BEQ $B3B7
B3B1: C9 4C CMP #$4C
B3B3: D0 BB BNE $B370
B3B5: A9 00 LDA #$00
B3B7: 20 D5 FF JSR $FFD5 ; loadsp Load RAM From Device
B3BA: A5 90 LDA $90 ; Status word ST
B3BC: 29 10 AND #$10
B3BE: F0 E8 BEQ $B3A8
B3C0: A5 93 LDA $93 ; Work value, monitor, LOAD / SAVE 0 = LOAD, 1 = VERIFY
B3C2: F0 AC BEQ $B370
; Print 'error'
B3C4: 20 7D FF JSR $FF7D ; primm Print Immediate
B3C7: 20 45 52 52 4F 52 00 ; ' error{0}'
B3CE: 4C 8B B0 JMP $B08B ; Get Command
B3D1: A6 66 LDX $66
B3D3: A4 67 LDY $67
B3D5: A9 00 LDA #$00
B3D7: 85 B9 STA $B9 ; Current secondary address
B3D9: F0 D0 BEQ $B3AB
; Perform [f]
B3DB: 20 83 B9 JSR $B983 ; Calculate Step/Area
B3DE: B0 23 BCS $B403
B3E0: A5 68 LDA $68
B3E2: CD B9 0A CMP $0AB9
B3E5: D0 1C BNE $B403
B3E7: 20 A7 B7 JSR $B7A7
B3EA: B0 17 BCS $B403
B3EC: A0 00 LDY #$00
B3EE: A5 60 LDA $60
B3F0: 20 2A B1 JSR $B12A ; Write Banked Memory
B3F3: 20 E1 FF JSR $FFE1 ; (istop) Test-Stop Vector [F66E]
B3F6: F0 08 BEQ $B400
B3F8: 20 50 B9 JSR $B950 ; Increment Pointer
B3FB: 20 3C B9 JSR $B93C ; Subtract Add1
B3FE: B0 EE BCS $B3EE
B400: 4C 8B B0 JMP $B08B ; Get Command
B403: 4C BC B0 JMP $B0BC ; Error
; Perform [a]
B406: B0 3A BCS $B442
B408: 20 01 B9 JSR $B901 ; Copy Add0 to Add2
B40B: A2 00 LDX #$00
B40D: 8E A1 0A STX $0AA1
B410: 8E B4 0A STX $0AB4
B413: 20 E9 B8 JSR $B8E9 ; Get Character
B416: D0 07 BNE $B41F
B418: E0 00 CPX #$00
B41A: D0 03 BNE $B41F
B41C: 4C 8B B0 JMP $B08B ; Get Command
B41F: C9 20 CMP #$20
B421: F0 E8 BEQ $B40B
B423: 9D AC 0A STA $0AAC,X
B426: E8 INX
B427: E0 03 CPX #$03
B429: D0 E8 BNE $B413
B42B: CA DEX
B42C: 30 17 BMI $B445
B42E: BD AC 0A LDA $0AAC,X
B431: 38 SEC
B432: E9 3F SBC #$3F
B434: A0 05 LDY #$05
B436: 4A LSR A
B437: 6E A1 0A ROR $0AA1
B43A: 6E A0 0A ROR $0AA0
B43D: 88 DEY
B43E: D0 F6 BNE $B436
B440: F0 E9 BEQ $B42B
B442: 4C BC B0 JMP $B0BC ; Error
B445: A2 02 LDX #$02
B447: AD B4 0A LDA $0AB4
B44A: D0 30 BNE $B47C
B44C: 20 CE B7 JSR $B7CE ; Read Value
B44F: F0 29 BEQ $B47A
B451: B0 EF BCS $B442
B453: A9 24 LDA #$24
B455: 9D A0 0A STA $0AA0,X
B458: E8 INX
B459: A5 62 LDA $62
B45B: D0 E5 BNE $B442
B45D: A0 04 LDY #$04
B45F: AD B6 0A LDA $0AB6
B462: C9 08 CMP #$08
B464: 90 05 BCC $B46B
B466: CC B4 0A CPY $0AB4
B469: F0 06 BEQ $B471
B46B: A5 61 LDA $61
B46D: D0 02 BNE $B471
B46F: A0 02 LDY #$02
B471: A9 30 LDA #$30
B473: 9D A0 0A STA $0AA0,X
B476: E8 INX
B477: 88 DEY
B478: D0 F9 BNE $B473
B47A: C6 7A DEC $7A
B47C: 20 E9 B8 JSR $B8E9 ; Get Character
B47F: F0 0E BEQ $B48F
B481: C9 20 CMP #$20
B483: F0 C2 BEQ $B447
B485: 9D A0 0A STA $0AA0,X
B488: E8 INX
B489: E0 0A CPX #$0A
B48B: 90 BA BCC $B447
B48D: B0 B3 BCS $B442
B48F: 86 63 STX $63
B491: A2 00 LDX #$00
B493: 8E B1 0A STX $0AB1
B496: A2 00 LDX #$00
B498: 86 9F STX $9F
B49A: AD B1 0A LDA $0AB1
B49D: 20 59 B6 JSR $B659 ; Classify Op Code
B4A0: AE AA 0A LDX $0AAA
B4A3: 86 64 STX $64
B4A5: AA TAX
B4A6: BD 61 B7 LDA $B761,X
B4A9: 20 7F B5 JSR $B57F ; Check A-Match
B4AC: BD 21 B7 LDA $B721,X ; Compacted Mnemonics
B4AF: 20 7F B5 JSR $B57F ; Check A-Match
B4B2: A2 06 LDX #$06
B4B4: E0 03 CPX #$03
B4B6: D0 14 BNE $B4CC
B4B8: AC AB 0A LDY $0AAB
B4BB: F0 0F BEQ $B4CC
B4BD: AD AA 0A LDA $0AAA
B4C0: C9 E8 CMP #$E8
B4C2: A9 30 LDA #$30
B4C4: B0 1E BCS $B4E4
B4C6: 20 7C B5 JSR $B57C ; Check 2 A-Matches
B4C9: 88 DEY
B4CA: D0 F1 BNE $B4BD
B4CC: 0E AA 0A ASL $0AAA
B4CF: 90 0E BCC $B4DF
B4D1: BD 14 B7 LDA $B714,X
B4D4: 20 7F B5 JSR $B57F ; Check A-Match
B4D7: BD 1A B7 LDA $B71A,X
B4DA: F0 03 BEQ $B4DF
B4DC: 20 7F B5 JSR $B57F ; Check A-Match
B4DF: CA DEX
B4E0: D0 D2 BNE $B4B4
B4E2: F0 06 BEQ $B4EA
B4E4: 20 7C B5 JSR $B57C ; Check 2 A-Matches
B4E7: 20 7C B5 JSR $B57C ; Check 2 A-Matches
B4EA: A5 63 LDA $63
B4EC: C5 9F CMP $9F
B4EE: F0 03 BEQ $B4F3
B4F0: 4C 8B B5 JMP $B58B ; Try Next Op Code
B4F3: AC AB 0A LDY $0AAB
B4F6: F0 32 BEQ $B52A
B4F8: A5 64 LDA $64
B4FA: C9 9D CMP #$9D
B4FC: D0 23 BNE $B521
B4FE: A5 60 LDA $60
B500: E5 66 SBC $66
B502: AA TAX
B503: A5 61 LDA $61
B505: E5 67 SBC $67
B507: 90 08 BCC $B511
B509: D0 6E BNE $B579
B50B: E0 82 CPX #$82
B50D: B0 6A BCS $B579
B50F: 90 08 BCC $B519
B511: A8 TAY
B512: C8 INY
B513: D0 64 BNE $B579
B515: E0 82 CPX #$82
B517: 90 60 BCC $B579
B519: CA DEX
B51A: CA DEX
B51B: 8A TXA
B51C: AC AB 0A LDY $0AAB
B51F: D0 03 BNE $B524
B521: B9 5F 00 LDA $5F,Y
B524: 20 2A B1 JSR $B12A ; Write Banked Memory
B527: 88 DEY
B528: D0 F7 BNE $B521
B52A: AD B1 0A LDA $0AB1
B52D: 20 2A B1 JSR $B12A ; Write Banked Memory
B530: 20 AD B8 JSR $B8AD ; Print Cursor-Up
; Print 'space<esc-q>'
B533: 20 7D FF JSR $FF7D ; primm Print Immediate
B536: 41 20 1B 51 00 ; 'a {ESC}q{0}'
B53B: 20 DC B5 JSR $B5DC
B53E: EE AB 0A INC $0AAB
B541: AD AB 0A LDA $0AAB
B544: 20 52 B9 JSR $B952
B547: A9 41 LDA #$41
B549: 8D 4A 03 STA $034A ; IRQ Keyboard Buffer (10 Bytes)
B54C: A9 20 LDA #$20
B54E: 8D 4B 03 STA $034B
B551: 8D 51 03 STA $0351
B554: A5 68 LDA $68
B556: 20 D2 B8 JSR $B8D2 ; Byte to 2 Ascii
B559: 8E 4C 03 STX $034C
B55C: A5 67 LDA $67
B55E: 20 D2 B8 JSR $B8D2 ; Byte to 2 Ascii
B561: 8D 4D 03 STA $034D
B564: 8E 4E 03 STX $034E
B567: A5 66 LDA $66
B569: 20 D2 B8 JSR $B8D2 ; Byte to 2 Ascii
B56C: 8D 4F 03 STA $034F
B56F: 8E 50 03 STX $0350
B572: A9 08 LDA #$08
B574: 85 D0 STA $D0 ; Number of characters in keyboard buffer
B576: 4C 8B B0 JMP $B08B ; Get Command
B579: 4C BC B0 JMP $B0BC ; Error
; Check 2 A-Matches
B57C: 20 7F B5 JSR $B57F ; Check A-Match
; Check A-Match
B57F: 8E AF 0A STX $0AAF
B582: A6 9F LDX $9F
B584: DD A0 0A CMP $0AA0,X
B587: F0 0A BEQ $B593
B589: 68 PLA
B58A: 68 PLA
; Try Next Op Code
B58B: EE B1 0A INC $0AB1
B58E: F0 E9 BEQ $B579
B590: 4C 96 B4 JMP $B496
B593: E6 9F INC $9F
B595: AE AF 0A LDX $0AAF
B598: 60 RTS
; Perform [d]
B599: B0 08 BCS $B5A3
B59B: 20 01 B9 JSR $B901 ; Copy Add0 to Add2
B59E: 20 A7 B7 JSR $B7A7
B5A1: 90 06 BCC $B5A9
B5A3: A9 14 LDA #$14
B5A5: 85 60 STA $60
B5A7: D0 05 BNE $B5AE ; Print '<cr><esc-q>'
B5A9: 20 0E B9 JSR $B90E ; Calculate Add2 - Add0
B5AC: 90 23 BCC $B5D1
; Print '<cr><esc-q>'
B5AE: 20 7D FF JSR $FF7D ; primm Print Immediate
B5B1: 0D 1B 51 00 ; '{CR}{ESC}q{0}'
B5B5: 20 E1 FF JSR $FFE1 ; (istop) Test-Stop Vector [F66E]
B5B8: F0 14 BEQ $B5CE
B5BA: 20 D4 B5 JSR $B5D4 ; Display Instruction
B5BD: EE AB 0A INC $0AAB
B5C0: AD AB 0A LDA $0AAB
B5C3: 20 52 B9 JSR $B952
B5C6: AD AB 0A LDA $0AAB
B5C9: 20 24 B9 JSR $B924
B5CC: B0 E0 BCS $B5AE ; Print '<cr><esc-q>'
B5CE: 4C 8B B0 JMP $B08B ; Get Command
B5D1: 4C BC B0 JMP $B0BC ; Error
; Display Instruction
B5D4: A9 2E LDA #$2E
B5D6: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
B5D9: 20 A8 B8 JSR $B8A8 ; Print Space
B5DC: 20 92 B8 JSR $B892 ; Display 5-Digit Address
B5DF: 20 A8 B8 JSR $B8A8 ; Print Space
B5E2: A0 00 LDY #$00
B5E4: 20 1A B1 JSR $B11A ; Read Banked Memory
B5E7: 20 59 B6 JSR $B659 ; Classify Op Code
B5EA: 48 PHA
B5EB: AE AB 0A LDX $0AAB
B5EE: E8 INX
B5EF: CA DEX
B5F0: 10 0A BPL $B5FC
; Print '<3 spaces>'
B5F2: 20 7D FF JSR $FF7D ; primm Print Immediate
B5F5: 20 20 20 00 ; ' {0}'
B5F9: 4C 02 B6 JMP $B602
B5FC: 20 1A B1 JSR $B11A ; Read Banked Memory
B5FF: 20 A5 B8 JSR $B8A5 ; Display 2-digit Byte
B602: C8 INY
B603: C0 03 CPY #$03
B605: 90 E8 BCC $B5EF
B607: 68 PLA
B608: A2 03 LDX #$03
B60A: 20 A1 B6 JSR $B6A1 ; Get Mnemonic Char
B60D: A2 06 LDX #$06
B60F: E0 03 CPX #$03
B611: D0 17 BNE $B62A
B613: AC AB 0A LDY $0AAB
B616: F0 12 BEQ $B62A
B618: AD AA 0A LDA $0AAA
B61B: C9 E8 CMP #$E8
B61D: 08 PHP
B61E: 20 1A B1 JSR $B11A ; Read Banked Memory
B621: 28 PLP
B622: B0 1D BCS $B641
B624: 20 C2 B8 JSR $B8C2 ; Output 2-Digit Byte
B627: 88 DEY
B628: D0 EE BNE $B618
B62A: 0E AA 0A ASL $0AAA
B62D: 90 0E BCC $B63D
B62F: BD 14 B7 LDA $B714,X
B632: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
B635: BD 1A B7 LDA $B71A,X
B638: F0 03 BEQ $B63D
B63A: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
B63D: CA DEX
B63E: D0 CF BNE $B60F
B640: 60 RTS
B641: 20 4D B6 JSR $B64D ; ?
B644: 18 CLC
B645: 69 01 ADC #$01
B647: D0 01 BNE $B64A
B649: E8 INX
B64A: 4C 9F B8 JMP $B89F
; ?
B64D: A6 67 LDX $67
B64F: A8 TAY
B650: 10 01 BPL $B653
B652: CA DEX
B653: 65 66 ADC $66
B655: 90 01 BCC $B658
B657: E8 INX
B658: 60 RTS
; Classify Op Code
B659: A8 TAY
B65A: 4A LSR A
B65B: 90 0B BCC $B668
B65D: 4A LSR A
B65E: B0 17 BCS $B677
B660: C9 22 CMP #$22
B662: F0 13 BEQ $B677
B664: 29 07 AND #$07
B666: 09 80 ORA #$80
B668: 4A LSR A
B669: AA TAX
B66A: BD C3 B6 LDA $B6C3,X ; Mode Tables
B66D: B0 04 BCS $B673
B66F: 4A LSR A
B670: 4A LSR A
B671: 4A LSR A
B672: 4A LSR A
B673: 29 0F AND #$0F
B675: D0 04 BNE $B67B
B677: A0 80 LDY #$80
B679: A9 00 LDA #$00
B67B: AA TAX
B67C: BD 07 B7 LDA $B707,X
B67F: 8D AA 0A STA $0AAA
B682: 29 03 AND #$03
B684: 8D AB 0A STA $0AAB
B687: 98 TYA
B688: 29 8F AND #$8F
B68A: AA TAX
B68B: 98 TYA
B68C: A0 03 LDY #$03
B68E: E0 8A CPX #$8A
B690: F0 0B BEQ $B69D
B692: 4A LSR A
B693: 90 08 BCC $B69D
B695: 4A LSR A
B696: 4A LSR A
B697: 09 20 ORA #$20
B699: 88 DEY
B69A: D0 FA BNE $B696
B69C: C8 INY
B69D: 88 DEY
B69E: D0 F2 BNE $B692
B6A0: 60 RTS
; Get Mnemonic Char
B6A1: A8 TAY
B6A2: B9 21 B7 LDA $B721,Y ; Compacted Mnemonics
B6A5: 85 63 STA $63
B6A7: B9 61 B7 LDA $B761,Y
B6AA: 85 64 STA $64
B6AC: A9 00 LDA #$00
B6AE: A0 05 LDY #$05
B6B0: 06 64 ASL $64
B6B2: 26 63 ROL $63
B6B4: 2A ROL A
B6B5: 88 DEY
B6B6: D0 F8 BNE $B6B0
B6B8: 69 3F ADC #$3F
B6BA: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
B6BD: CA DEX
B6BE: D0 EC BNE $B6AC
B6C0: 4C A8 B8 JMP $B8A8 ; Print Space
; Mode Tables
B6C3: 40 02 45 03 D0 08 40 09 ; '@{ULON}e{STOP}P.@{TAB}'
B6CB: 30 22 45 33 D0 08 40 09 ; '0"e3P.@{TAB}'
B6D3: 40 02 45 33 D0 08 40 09 ; '@{ULON}e3P.@{TAB}'
B6DB: 40 02 45 B3 D0 08 40 09 ; '@{ULON}e.P.@{TAB}'
B6E3: 00 22 44 33 D0 8C 44 00 ; '{0}"d3P.d{0}'
B6EB: 11 22 44 33 D0 8C 44 9A ; '{DOWN}"d3P.d{LTBLUE}'
B6F3: 10 22 44 33 D0 08 40 09 ; '."d3P.@{TAB}'
B6FB: 10 22 44 33 D0 08 40 09 ; '."d3P.@{TAB}'
B703: 62 13 78 A9 ; 'b{HOME}X.'
B707: 00 21 81 82 00 00 59 4D ; '{0}!{ORANGE}{ULOFF}{0}{0}ym'
B70F: 91 92 86 4A 85 ; '{UP}{RVSOFF}.j.'
B714: 9D ; '{LEFT}'
; Mode Characters
B715: 2C 29 2C 23 28 ; ',),#('
B71A: 24 59 00 58 24 24 00 ; '$y{0}x$${0}'
; Compacted Mnemonics
B721: 1C 8A 1C 23 5D 8B 1B A1 ; '{RED}.{RED}#].{ESC}.'
B729: 9D 8A 1D 23 9D 8B 1D A1 ; '{LEFT}.{RIGHT}#{LEFT}.{RIGHT}.'
B731: 00 29 19 AE 69 A8 19 23 ; '{0})..i..#'
B739: 24 53 1B 23 24 53 19 A1 ; '$s{ESC}#$s..'
B741: 00 1A 5B 5B A5 69 24 24 ; '{0}.[[.i$$'
B749: AE AE A8 AD 29 00 7C 00 ; '....){0}.{0}'
B751: 15 9C 6D 9C A5 69 29 53 ; '.{PURPLE}m{PURPLE}.i)s'
B759: 84 13 34 11 A5 69 23 A0 ; '.{HOME}4{DOWN}.i#.'
B761: D8 62 5A 48 26 62 94 88 ; 'Xbzh&b{INS}.'
B769: 54 44 C8 54 68 44 E8 94 ; 'tdHthd.{INS}'
B771: 00 B4 08 84 74 B4 28 6E ; '{0}...T.(n'
B779: 74 F4 CC 4A 72 F2 A4 8A ; 'T.LjR...'
B781: 00 AA A2 A2 74 74 74 72 ; '{0}...TTTR'
B789: 44 68 B2 32 B2 00 22 00 ; 'dh.2.{0}"{0}'
B791: 1A 1A 26 26 72 72 88 C8 ; '..&&RR.H'
B799: C4 CA 26 48 44 44 A2 C8 ; 'DJ&hdd.H'
B7A1: 0D 20 20 20 ; '{CR} '
; Input Parameter
B7A5: C6 7A DEC $7A
B7A7: 20 CE B7 JSR $B7CE ; Read Value
B7AA: B0 16 BCS $B7C2
B7AC: 20 E7 B8 JSR $B8E7 ; Get Input Char
B7AF: D0 09 BNE $B7BA
B7B1: C6 7A DEC $7A
B7B3: AD B4 0A LDA $0AB4
B7B6: D0 11 BNE $B7C9
B7B8: F0 0D BEQ $B7C7
B7BA: C9 20 CMP #$20
B7BC: F0 0B BEQ $B7C9
B7BE: C9 2C CMP #$2C
B7C0: F0 07 BEQ $B7C9
B7C2: 68 PLA
B7C3: 68 PLA
B7C4: 4C BC B0 JMP $B0BC ; Error
B7C7: 38 SEC
B7C8: 24 .BYTE $24
B7C9: 18 CLC
B7CA: AD B4 0A LDA $0AB4
B7CD: 60 RTS
; Read Value
B7CE: A9 00 LDA #$00
B7D0: 85 60 STA $60
B7D2: 85 61 STA $61
B7D4: 85 62 STA $62
B7D6: 8D B4 0A STA $0AB4
B7D9: 8A TXA
B7DA: 48 PHA
B7DB: 98 TYA
B7DC: 48 PHA
B7DD: 20 E9 B8 JSR $B8E9 ; Get Character
B7E0: D0 03 BNE $B7E5
B7E2: 4C 7E B8 JMP $B87E
B7E5: C9 20 CMP #$20
B7E7: F0 F4 BEQ $B7DD
B7E9: A2 03 LDX #$03
B7EB: DD F5 B0 CMP $B0F5,X
B7EE: F0 06 BEQ $B7F6
B7F0: CA DEX
B7F1: 10 F8 BPL $B7EB
B7F3: E8 INX
B7F4: C6 7A DEC $7A
B7F6: BC 8A B8 LDY $B88A,X ; Number Bases
B7F9: BD 8E B8 LDA $B88E,X ; Base Bits
B7FC: 8D B6 0A STA $0AB6
B7FF: 20 E9 B8 JSR $B8E9 ; Get Character
B802: F0 7A BEQ $B87E
B804: 38 SEC
B805: E9 30 SBC #$30
B807: 90 75 BCC $B87E
B809: C9 0A CMP #$0A
B80B: 90 06 BCC $B813
B80D: E9 07 SBC #$07
B80F: C9 10 CMP #$10
B811: B0 6B BCS $B87E
B813: 8D B5 0A STA $0AB5
B816: CC B5 0A CPY $0AB5
B819: 90 61 BCC $B87C
B81B: F0 5F BEQ $B87C
B81D: EE B4 0A INC $0AB4
B820: C0 0A CPY #$0A
B822: D0 0A BNE $B82E
B824: A2 02 LDX #$02
B826: B5 60 LDA $60,X
B828: 9D B7 0A STA $0AB7,X
B82B: CA DEX
B82C: 10 F8 BPL $B826
B82E: AE B6 0A LDX $0AB6
B831: 06 60 ASL $60
B833: 26 61 ROL $61
B835: 26 62 ROL $62
B837: B0 43 BCS $B87C
B839: CA DEX
B83A: D0 F5 BNE $B831
B83C: C0 0A CPY #$0A
B83E: D0 22 BNE $B862
B840: 0E B7 0A ASL $0AB7
B843: 2E B8 0A ROL $0AB8
B846: 2E B9 0A ROL $0AB9
B849: B0 31 BCS $B87C
B84B: AD B7 0A LDA $0AB7
B84E: 65 60 ADC $60
B850: 85 60 STA $60
B852: AD B8 0A LDA $0AB8
B855: 65 61 ADC $61
B857: 85 61 STA $61
B859: AD B9 0A LDA $0AB9
B85C: 65 62 ADC $62
B85E: 85 62 STA $62
B860: B0 1A BCS $B87C
B862: 18 CLC
B863: AD B5 0A LDA $0AB5
B866: 65 60 ADC $60
B868: 85 60 STA $60
B86A: 8A TXA
B86B: 65 61 ADC $61
B86D: 85 61 STA $61
B86F: 8A TXA
B870: 65 62 ADC $62
B872: 85 62 STA $62
B874: B0 06 BCS $B87C
B876: 29 F0 AND #$F0
B878: D0 02 BNE $B87C
B87A: F0 83 BEQ $B7FF
B87C: 38 SEC
B87D: 24 .BYTE $24
B87E: 18 CLC
B87F: 8C B6 0A STY $0AB6
B882: 68 PLA
B883: A8 TAY
B884: 68 PLA
B885: AA TAX
B886: AD B4 0A LDA $0AB4
B889: 60 RTS
; Number Bases
B88A: 10 0A 08 02 ; '.{LF}.{ULON}'
; Base Bits
B88E: 04 03 03 01 ; '.{STOP}{STOP}.'
; Display 5-Digit Address
B892: A5 68 LDA $68
B894: 20 D2 B8 JSR $B8D2 ; Byte to 2 Ascii
B897: 8A TXA
B898: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
B89B: A5 66 LDA $66
B89D: A6 67 LDX $67
B89F: 48 PHA
B8A0: 8A TXA
B8A1: 20 C2 B8 JSR $B8C2 ; Output 2-Digit Byte
B8A4: 68 PLA
; Display 2-digit Byte
B8A5: 20 C2 B8 JSR $B8C2 ; Output 2-Digit Byte
; Print Space
B8A8: A9 20 LDA #$20
B8AA: 4C D2 FF JMP $FFD2 ; (ibsout) Output Vector, chrout [EF79]
; Print Cursor-Up
B8AD: 20 7D FF JSR $FF7D ; primm Print Immediate
B8B0: 0D 91 00 ; '{CR}{UP}{0}'
B8B3: 60 RTS
; New Line
B8B4: A9 0D LDA #$0D
B8B6: 4C D2 FF JMP $FFD2 ; (ibsout) Output Vector, chrout [EF79]
; Blank New Line
B8B9: 20 7D FF JSR $FF7D ; primm Print Immediate
B8BC: 0D 1B 51 20 00 ; '{CR}{ESC}q {0}'
B8C1: 60 RTS
; Output 2-Digit Byte
B8C2: 8E AF 0A STX $0AAF
B8C5: 20 D2 B8 JSR $B8D2 ; Byte to 2 Ascii
B8C8: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
B8CB: 8A TXA
B8CC: AE AF 0A LDX $0AAF
B8CF: 4C D2 FF JMP $FFD2 ; (ibsout) Output Vector, chrout [EF79]
; Byte to 2 Ascii
B8D2: 48 PHA
B8D3: 20 DC B8 JSR $B8DC
B8D6: AA TAX
B8D7: 68 PLA
B8D8: 4A LSR A
B8D9: 4A LSR A
B8DA: 4A LSR A
B8DB: 4A LSR A
B8DC: 29 0F AND #$0F
B8DE: C9 0A CMP #$0A
B8E0: 90 02 BCC $B8E4
B8E2: 69 06 ADC #$06
B8E4: 69 30 ADC #$30
B8E6: 60 RTS
; Get Input Char
B8E7: C6 7A DEC $7A
; Get Character
B8E9: 8E AF 0A STX $0AAF
B8EC: A6 7A LDX $7A
B8EE: BD 00 02 LDA $0200,X
B8F1: F0 06 BEQ $B8F9
B8F3: C9 3A CMP #$3A
B8F5: F0 02 BEQ $B8F9
B8F7: C9 3F CMP #$3F
B8F9: 08 PHP
B8FA: E6 7A INC $7A
B8FC: AE AF 0A LDX $0AAF
B8FF: 28 PLP
B900: 60 RTS
; Copy Add0 to Add2
B901: A5 60 LDA $60
B903: 85 66 STA $66
B905: A5 61 LDA $61
B907: 85 67 STA $67
B909: A5 62 LDA $62
B90B: 85 68 STA $68
B90D: 60 RTS
; Calculate Add2 - Add0
B90E: 38 SEC
B90F: A5 60 LDA $60
B911: E5 66 SBC $66
B913: 85 60 STA $60
B915: A5 61 LDA $61
B917: E5 67 SBC $67
B919: 85 61 STA $61
B91B: A5 62 LDA $62
B91D: E5 68 SBC $68
B91F: 85 62 STA $62
B921: 60 RTS
; Subtract Add0
B922: A9 01 LDA #$01
B924: 8D AF 0A STA $0AAF
B927: 38 SEC
B928: A5 60 LDA $60
B92A: ED AF 0A SBC $0AAF
B92D: 85 60 STA $60
B92F: A5 61 LDA $61
B931: E9 00 SBC #$00
B933: 85 61 STA $61
B935: A5 62 LDA $62
B937: E9 00 SBC #$00
B939: 85 62 STA $62
B93B: 60 RTS
; Subtract Add1
B93C: 38 SEC
B93D: A5 63 LDA $63
B93F: E9 01 SBC #$01
B941: 85 63 STA $63
B943: A5 64 LDA $64
B945: E9 00 SBC #$00
B947: 85 64 STA $64
B949: A5 65 LDA $65
B94B: E9 00 SBC #$00
B94D: 85 65 STA $65
B94F: 60 RTS
; Increment Pointer
B950: A9 01 LDA #$01
B952: 18 CLC
B953: 65 66 ADC $66
B955: 85 66 STA $66
B957: 90 06 BCC $B95F
B959: E6 67 INC $67
B95B: D0 02 BNE $B95F
B95D: E6 68 INC $68
B95F: 60 RTS
; Decrement Pointer
B960: 38 SEC
B961: A5 66 LDA $66
B963: E9 01 SBC #$01
B965: 85 66 STA $66
B967: A5 67 LDA $67
B969: E9 00 SBC #$00
B96B: 85 67 STA $67
B96D: A5 68 LDA $68
B96F: E9 00 SBC #$00
B971: 85 68 STA $68
B973: 60 RTS
; Copy to Register Area
B974: B0 0C BCS $B982
B976: A5 60 LDA $60
B978: A4 61 LDY $61
B97A: A6 62 LDX $62
B97C: 85 04 STA $04 ; SYS address high, MLM register PC
B97E: 84 03 STY $03 ; SYS address low, MLM register PC
B980: 86 02 STX $02 ; Bank Number, Jump to SYS Address
B982: 60 RTS
; Calculate Step/Area
B983: B0 2A BCS $B9AF
B985: 20 01 B9 JSR $B901 ; Copy Add0 to Add2
B988: 20 A7 B7 JSR $B7A7
B98B: B0 22 BCS $B9AF
B98D: A5 60 LDA $60
B98F: 8D B7 0A STA $0AB7
B992: A5 61 LDA $61
B994: 8D B8 0A STA $0AB8
B997: A5 62 LDA $62
B999: 8D B9 0A STA $0AB9
B99C: 20 0E B9 JSR $B90E ; Calculate Add2 - Add0
B99F: A5 60 LDA $60
B9A1: 85 63 STA $63
B9A3: A5 61 LDA $61
B9A5: 85 64 STA $64
B9A7: A5 62 LDA $62
B9A9: 85 65 STA $65
B9AB: 90 02 BCC $B9AF
B9AD: 18 CLC
B9AE: 24 .BYTE $24
B9AF: 38 SEC
B9B0: 60 RTS
; Perform [$+&%]
B9B1: 20 A5 B7 JSR $B7A5 ; Input Parameter
B9B4: 20 B9 B8 JSR $B8B9 ; Blank New Line
B9B7: A9 24 LDA #$24
B9B9: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
B9BC: A5 62 LDA $62
B9BE: F0 07 BEQ $B9C7
B9C0: 20 D2 B8 JSR $B8D2 ; Byte to 2 Ascii
B9C3: 8A TXA
B9C4: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
B9C7: A5 60 LDA $60
B9C9: A6 61 LDX $61
B9CB: 20 9F B8 JSR $B89F
B9CE: 20 B9 B8 JSR $B8B9 ; Blank New Line
B9D1: A9 2B LDA #$2B
B9D3: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
B9D6: 20 07 BA JSR $BA07 ; Convert to Decimal
B9D9: A9 00 LDA #$00
B9DB: A2 08 LDX #$08
B9DD: A0 03 LDY #$03
B9DF: 20 5D BA JSR $BA5D ; Output Address
B9E2: 20 B9 B8 JSR $B8B9 ; Blank New Line
B9E5: A9 26 LDA #$26
B9E7: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
B9EA: A9 00 LDA #$00
B9EC: A2 08 LDX #$08
B9EE: A0 02 LDY #$02
B9F0: 20 47 BA JSR $BA47 ; Transfer Address
B9F3: 20 B9 B8 JSR $B8B9 ; Blank New Line
B9F6: A9 25 LDA #$25
B9F8: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
B9FB: A9 00 LDA #$00
B9FD: A2 18 LDX #$18
B9FF: A0 00 LDY #$00
BA01: 20 47 BA JSR $BA47 ; Transfer Address
BA04: 4C 8B B0 JMP $B08B ; Get Command
; Convert to Decimal
BA07: 20 01 B9 JSR $B901 ; Copy Add0 to Add2
BA0A: A9 00 LDA #$00
BA0C: A2 07 LDX #$07
BA0E: 9D A0 0A STA $0AA0,X
BA11: CA DEX
BA12: 10 FA BPL $BA0E
BA14: EE A7 0A INC $0AA7
BA17: A0 17 LDY #$17
BA19: 08 PHP
BA1A: 78 SEI
BA1B: F8 SED
BA1C: 46 68 LSR $68
BA1E: 66 67 ROR $67
BA20: 66 66 ROR $66
BA22: 90 0F BCC $BA33
BA24: 18 CLC
BA25: A2 03 LDX #$03
BA27: BD A4 0A LDA $0AA4,X
BA2A: 7D A0 0A ADC $0AA0,X
BA2D: 9D A0 0A STA $0AA0,X
BA30: CA DEX
BA31: 10 F4 BPL $BA27
BA33: 18 CLC
BA34: A2 03 LDX #$03
BA36: BD A4 0A LDA $0AA4,X
BA39: 7D A4 0A ADC $0AA4,X
BA3C: 9D A4 0A STA $0AA4,X
BA3F: CA DEX
BA40: 10 F4 BPL $BA36
BA42: 88 DEY
BA43: 10 D7 BPL $BA1C
BA45: 28 PLP
BA46: 60 RTS
; Transfer Address
BA47: 48 PHA
BA48: A5 60 LDA $60
BA4A: 8D A2 0A STA $0AA2
BA4D: A5 61 LDA $61
BA4F: 8D A1 0A STA $0AA1
BA52: A5 62 LDA $62
BA54: 8D A0 0A STA $0AA0
BA57: A9 00 LDA #$00
BA59: 8D A3 0A STA $0AA3
BA5C: 68 PLA
; Output Address
BA5D: 8D B4 0A STA $0AB4
BA60: 8C B6 0A STY $0AB6
BA63: AC B6 0A LDY $0AB6
BA66: A9 00 LDA #$00
BA68: 0E A3 0A ASL $0AA3
BA6B: 2E A2 0A ROL $0AA2
BA6E: 2E A1 0A ROL $0AA1
BA71: 2E A0 0A ROL $0AA0
BA74: 2A ROL A
BA75: 88 DEY
BA76: 10 F0 BPL $BA68
BA78: A8 TAY
BA79: D0 09 BNE $BA84
BA7B: E0 01 CPX #$01
BA7D: F0 05 BEQ $BA84
BA7F: AC B4 0A LDY $0AB4
BA82: F0 08 BEQ $BA8C
BA84: EE B4 0A INC $0AB4
BA87: 09 30 ORA #$30
BA89: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
BA8C: CA DEX
BA8D: D0 D4 BNE $BA63
BA8F: 60 RTS
; Perform [@]
BA90: D0 03 BNE $BA95
BA92: A2 08 LDX #$08
BA94: 2C .BYTE $2C
BA95: A6 60 LDX $60
BA97: E0 04 CPX #$04
BA99: 90 65 BCC $BB00
BA9B: E0 1F CPX #$1F
BA9D: B0 61 BCS $BB00
BA9F: 86 60 STX $60
BAA1: A9 00 LDA #$00
BAA3: 85 62 STA $62
BAA5: 85 B7 STA $B7 ; Number of characters in file name
BAA7: AA TAX
BAA8: 20 68 FF JSR $FF68 ; setbnk
BAAB: 20 E9 B8 JSR $B8E9 ; Get Character
BAAE: C6 7A DEC $7A
BAB0: C9 24 CMP #$24
BAB2: F0 4F BEQ $BB03
BAB4: A9 00 LDA #$00
BAB6: A6 60 LDX $60
BAB8: A0 0F LDY #$0F
BABA: 20 BA FF JSR $FFBA ; setlfs Set Logical File Parameters
BABD: 20 C0 FF JSR $FFC0 ; (iopen) Open Vector [EFBD]
BAC0: B0 32 BCS $BAF4
BAC2: A2 00 LDX #$00
BAC4: 20 C9 FF JSR $FFC9 ; (ichkout) Set Output [F14C]
BAC7: B0 2B BCS $BAF4
BAC9: A6 7A LDX $7A
BACB: E6 7A INC $7A
BACD: BD 00 02 LDA $0200,X
BAD0: F0 05 BEQ $BAD7
BAD2: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
BAD5: 90 F2 BCC $BAC9
BAD7: 20 CC FF JSR $FFCC ; (iclrch) Restore I/O Vector [F226]
BADA: 20 B4 B8 JSR $B8B4 ; New Line
BADD: A2 00 LDX #$00
BADF: 20 C6 FF JSR $FFC6 ; (ichkin) Set Input [F106]
BAE2: B0 10 BCS $BAF4
BAE4: 20 CF FF JSR $FFCF ; (ibasin) Input Vector, chrin [EF06]
BAE7: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
BAEA: C9 0D CMP #$0D
BAEC: F0 06 BEQ $BAF4
BAEE: A5 90 LDA $90 ; Status word ST
BAF0: 29 BF AND #$BF
BAF2: F0 F0 BEQ $BAE4
BAF4: 20 CC FF JSR $FFCC ; (iclrch) Restore I/O Vector [F226]
BAF7: A9 00 LDA #$00
BAF9: 38 SEC
BAFA: 20 C3 FF JSR $FFC3 ; (iclose) Close Vector [F188]
BAFD: 4C 8B B0 JMP $B08B ; Get Command
BB00: 4C BC B0 JMP $B0BC ; Error
BB03: A0 FF LDY #$FF
BB05: A6 7A LDX $7A
BB07: CA DEX
BB08: C8 INY
BB09: E8 INX
BB0A: BD 00 02 LDA $0200,X
BB0D: D0 F9 BNE $BB08
BB0F: 98 TYA
BB10: A6 7A LDX $7A
BB12: A0 02 LDY #$02
BB14: 20 BD FF JSR $FFBD ; setnam Set Filename
BB17: A9 00 LDA #$00
BB19: A6 60 LDX $60
BB1B: A0 60 LDY #$60
BB1D: 20 BA FF JSR $FFBA ; setlfs Set Logical File Parameters
BB20: 20 C0 FF JSR $FFC0 ; (iopen) Open Vector [EFBD]
BB23: B0 CF BCS $BAF4
BB25: A2 00 LDX #$00
BB27: 20 C6 FF JSR $FFC6 ; (ichkin) Set Input [F106]
BB2A: 20 B4 B8 JSR $B8B4 ; New Line
BB2D: A0 03 LDY #$03
BB2F: 84 63 STY $63
BB31: 20 CF FF JSR $FFCF ; (ibasin) Input Vector, chrin [EF06]
BB34: 85 60 STA $60
BB36: A5 90 LDA $90 ; Status word ST
BB38: D0 BA BNE $BAF4
BB3A: 20 CF FF JSR $FFCF ; (ibasin) Input Vector, chrin [EF06]
BB3D: 85 61 STA $61
BB3F: A5 90 LDA $90 ; Status word ST
BB41: D0 B1 BNE $BAF4
BB43: C6 63 DEC $63
BB45: D0 EA BNE $BB31
BB47: 20 07 BA JSR $BA07 ; Convert to Decimal
BB4A: A9 00 LDA #$00
BB4C: A2 08 LDX #$08
BB4E: A0 03 LDY #$03
BB50: 20 5D BA JSR $BA5D ; Output Address
BB53: A9 20 LDA #$20
BB55: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
BB58: 20 CF FF JSR $FFCF ; (ibasin) Input Vector, chrin [EF06]
BB5B: F0 09 BEQ $BB66
BB5D: A6 90 LDX $90 ; Status word ST
BB5F: D0 93 BNE $BAF4
BB61: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
BB64: 90 F2 BCC $BB58
BB66: 20 B4 B8 JSR $B8B4 ; New Line
BB69: 20 E1 FF JSR $FFE1 ; (istop) Test-Stop Vector [F66E]
BB6C: F0 86 BEQ $BAF4
BB6E: A0 02 LDY #$02
BB70: D0 BD BNE $BB2F
; Reserved For Future Patches
BB72: FF FF FF FF FF FF FF FF ; '........'
BB7A: FF FF FF FF FF FF FF FF ; '........'
BB82: FF FF FF FF FF FF FF FF ; '........'
BB8A: FF FF FF FF FF FF FF FF ; '........'
BB92: FF FF FF FF FF FF FF FF ; '........'
BB9A: FF FF FF FF FF FF FF FF ; '........'
BBA2: FF FF FF FF FF FF FF FF ; '........'
BBAA: FF FF FF FF FF FF FF FF ; '........'
BBB2: FF FF FF FF FF FF FF FF ; '........'
BBBA: FF FF FF FF FF FF FF FF ; '........'
BBC2: FF FF FF FF FF FF FF FF ; '........'
BBCA: FF FF FF FF FF FF FF FF ; '........'
BBD2: FF FF FF FF FF FF FF FF ; '........'
BBDA: FF FF FF FF FF FF FF FF ; '........'
BBE2: FF FF FF FF FF FF FF FF ; '........'
BBEA: FF FF FF FF FF FF FF FF ; '........'
BBF2: FF FF FF FF FF FF FF FF ; '........'
BBFA: FF FF FF FF FF FF FF FF ; '........'
BC02: FF FF FF FF FF FF FF FF ; '........'
BC0A: FF FF FF FF FF FF FF FF ; '........'
BC12: FF FF FF FF FF FF FF FF ; '........'
BC1A: FF FF FF FF FF FF FF FF ; '........'
BC22: FF FF FF FF FF FF FF FF ; '........'
BC2A: FF FF FF FF FF FF FF FF ; '........'
BC32: FF FF FF FF FF FF FF FF ; '........'
BC3A: FF FF FF FF FF FF FF FF ; '........'
BC42: FF FF FF FF FF FF FF FF ; '........'
BC4A: FF FF FF FF FF FF FF FF ; '........'
BC52: FF FF FF FF FF FF FF FF ; '........'
BC5A: FF FF FF FF FF FF FF FF ; '........'
BC62: FF FF FF FF FF FF FF FF ; '........'
BC6A: FF FF FF FF FF FF FF FF ; '........'
BC72: FF FF FF FF FF FF FF FF ; '........'
BC7A: FF FF FF FF FF FF FF FF ; '........'
BC82: FF FF FF FF FF FF FF FF ; '........'
BC8A: FF FF FF FF FF FF FF FF ; '........'
BC92: FF FF FF FF FF FF FF FF ; '........'
BC9A: FF FF FF FF FF FF FF FF ; '........'
BCA2: FF FF FF FF FF FF FF FF ; '........'
BCAA: FF FF FF FF FF FF FF FF ; '........'
BCB2: FF FF FF FF FF FF FF FF ; '........'
BCBA: FF FF FF FF FF FF FF FF ; '........'
BCC2: FF FF FF FF FF FF FF FF ; '........'
BCCA: FF FF FF FF FF FF FF FF ; '........'
BCD2: FF FF FF FF FF FF FF FF ; '........'
BCDA: FF FF FF FF FF FF FF FF ; '........'
BCE2: FF FF FF FF FF FF FF FF ; '........'
BCEA: FF FF FF FF FF FF FF FF ; '........'
BCF2: FF FF FF FF FF FF FF FF ; '........'
BCFA: FF FF FF FF FF FF FF FF ; '........'
BD02: FF FF FF FF FF FF FF FF ; '........'
BD0A: FF FF FF FF FF FF FF FF ; '........'
BD12: FF FF FF FF FF FF FF FF ; '........'
BD1A: FF FF FF FF FF FF FF FF ; '........'
BD22: FF FF FF FF FF FF FF FF ; '........'
BD2A: FF FF FF FF FF FF FF FF ; '........'
BD32: FF FF FF FF FF FF FF FF ; '........'
BD3A: FF FF FF FF FF FF FF FF ; '........'
BD42: FF FF FF FF FF FF FF FF ; '........'
BD4A: FF FF FF FF FF FF FF FF ; '........'
BD52: FF FF FF FF FF FF FF FF ; '........'
BD5A: FF FF FF FF FF FF FF FF ; '........'
BD62: FF FF FF FF FF FF FF FF ; '........'
BD6A: FF FF FF FF FF FF FF FF ; '........'
BD72: FF FF FF FF FF FF FF FF ; '........'
BD7A: FF FF FF FF FF FF FF FF ; '........'
BD82: FF FF FF FF FF FF FF FF ; '........'
BD8A: FF FF FF FF FF FF FF FF ; '........'
BD92: FF FF FF FF FF FF FF FF ; '........'
BD9A: FF FF FF FF FF FF FF FF ; '........'
BDA2: FF FF FF FF FF FF FF FF ; '........'
BDAA: FF FF FF FF FF FF FF FF ; '........'
BDB2: FF FF FF FF FF FF FF FF ; '........'
BDBA: FF FF FF FF FF FF FF FF ; '........'
BDC2: FF FF FF FF FF FF FF FF ; '........'
BDCA: FF FF FF FF FF FF FF FF ; '........'
BDD2: FF FF FF FF FF FF FF FF ; '........'
BDDA: FF FF FF FF FF FF FF FF ; '........'
BDE2: FF FF FF FF FF FF FF FF ; '........'
BDEA: FF FF FF FF FF FF FF FF ; '........'
BDF2: FF FF FF FF FF FF FF FF ; '........'
BDFA: FF FF FF FF FF FF FF FF ; '........'
BE02: FF FF FF FF FF FF FF FF ; '........'
BE0A: FF FF FF FF FF FF FF FF ; '........'
BE12: FF FF FF FF FF FF FF FF ; '........'
BE1A: FF FF FF FF FF FF FF FF ; '........'
BE22: FF FF FF FF FF FF FF FF ; '........'
BE2A: FF FF FF FF FF FF FF FF ; '........'
BE32: FF FF FF FF FF FF FF FF ; '........'
BE3A: FF FF FF FF FF FF FF FF ; '........'
BE42: FF FF FF FF FF FF FF FF ; '........'
BE4A: FF FF FF FF FF FF FF FF ; '........'
BE52: FF FF FF FF FF FF FF FF ; '........'
BE5A: FF FF FF FF FF FF FF FF ; '........'
BE62: FF FF FF FF FF FF FF FF ; '........'
BE6A: FF FF FF FF FF FF FF FF ; '........'
BE72: FF FF FF FF FF FF FF FF ; '........'
BE7A: FF FF FF FF FF FF FF FF ; '........'
BE82: FF FF FF FF FF FF FF FF ; '........'
BE8A: FF FF FF FF FF FF FF FF ; '........'
BE92: FF FF FF FF FF FF FF FF ; '........'
BE9A: FF FF FF FF FF FF FF FF ; '........'
BEA2: FF FF FF FF FF FF FF FF ; '........'
BEAA: FF FF FF FF FF FF FF FF ; '........'
BEB2: FF FF FF FF FF FF FF FF ; '........'
BEBA: FF FF FF FF FF FF FF FF ; '........'
BEC2: FF FF FF FF FF FF FF FF ; '........'
BECA: FF FF FF FF FF FF FF FF ; '........'
BED2: FF FF FF FF FF FF FF FF ; '........'
BEDA: FF FF FF FF FF FF FF FF ; '........'
BEE2: FF FF FF FF FF FF FF FF ; '........'
BEEA: FF FF FF FF FF FF FF FF ; '........'
BEF2: FF FF FF FF FF FF FF FF ; '........'
BEFA: FF FF FF FF FF FF FF FF ; '........'
BF02: FF FF FF FF FF FF FF FF ; '........'
BF0A: FF FF FF FF FF FF FF FF ; '........'
BF12: FF FF FF FF FF FF FF FF ; '........'
BF1A: FF FF FF FF FF FF FF FF ; '........'
BF22: FF FF FF FF FF FF FF FF ; '........'
BF2A: FF FF FF FF FF FF FF FF ; '........'
BF32: FF FF FF FF FF FF FF FF ; '........'
BF3A: FF FF FF FF FF FF FF FF ; '........'
BF42: FF FF FF FF FF FF FF FF ; '........'
BF4A: FF FF FF FF FF FF FF FF ; '........'
BF52: FF FF FF FF FF FF FF FF ; '........'
BF5A: FF FF FF FF FF FF FF FF ; '........'
BF62: FF FF FF FF FF FF FF FF ; '........'
BF6A: FF FF FF FF FF FF FF FF ; '........'
BF72: FF FF FF FF FF FF FF FF ; '........'
BF7A: FF FF FF FF FF FF FF FF ; '........'
BF82: FF FF FF FF FF FF FF FF ; '........'
BF8A: FF FF FF FF FF FF FF FF ; '........'
BF92: FF FF FF FF FF FF FF FF ; '........'
BF9A: FF FF FF FF FF FF FF FF ; '........'
BFA2: FF FF FF FF FF FF FF FF ; '........'
BFAA: FF FF FF FF FF FF FF FF ; '........'
BFB2: FF FF FF FF FF FF FF FF ; '........'
BFBA: FF FF FF FF FF FF ; '......'
; Copyright notice
BFC0: 28 43 29 31 39 38 36 20 ; '(c)1986 '
BFC8: 43 4F 4D 4D 4F 44 4F 52 ; 'commodor'
BFD0: 45 20 45 4C 45 43 54 52 ; 'e electr'
BFD8: 4F 4E 49 43 53 2C 20 4C ; 'onics, l'
BFE0: 54 44 2E 20 41 4C 4C 20 ; 'td. all '
BFE8: 52 49 47 48 54 53 20 52 ; 'rights r'
BFF0: 45 53 45 52 56 45 44 2E ; 'eserved.'
; ?
BFF8: FF FF FF FF C8 CD 01 C5 ; '....HM.E'
; -cint-
C000: 4C 7B C0 JMP $C07B ; Initialize Screen
C003: 4C 34 CC JMP $CC34 ; Put Char to Screen
; Get from Keyboard
C006: 4C 34 C2 JMP $C234 ; Get a Key
; Screen Input Link
C009: 4C 9B C2 JMP $C29B ; Input From Screen
; Screen Print Link
C00C: 4C 2D C7 JMP $C72D ; Print to Screen
; -screen-
C00F: 4C 5B CC JMP $CC5B ; Get Rows/Columns
; -scnkey-
C012: 4C 87 FC JMP $FC87 ; Init KBD Translation Tables
C015: 4C 51 C6 JMP $C651 ; Key Pickup & Repeat
; -plot-
C018: 4C 6A CC JMP $CC6A ; Read/Set Cursor
; Move 8563 Cursor Subroutine
C01B: 4C 57 CD JMP $CD57 ; Position 80-col Cursor
; Execute ESC Function using chr in .A
C01E: 4C C1 C9 JMP $C9C1 ; Kernal Analyze Esc Sequence
; Define FN Key
C021: 4C A2 CC JMP $CCA2 ; Define Function Key
; IRQ Link
C024: 4C 94 C1 JMP $C194 ; (IRQ) Split Screen
; Upload 80 Col [CE0C]
C027: 4C 0C CE JMP $CE0C ; Set Up 80 Column Char Set
; Swap 40/80 Col [CD2E]
C02A: 4C 2E CD JMP $CD2E ; Switch 40/80 Col
; Set Window
C02D: 4C 1B CA JMP $CA1B ; Set Window Part
; Unused
C030: FF FF FF ; '...'
; Screen Address Low
C033: 00 28 50 78 A0 C8 F0 18 ; '{0}(pX.H.{TABT}'
C03B: 40 68 90 B8 E0 08 30 58 ; '@h{BLACK}...0x'
C043: 80 A8 D0 F8 20 48 70 98 ; '..P. hP{GRAY2}'
C04B: C0 ; '.'
; Screen Address High
C04C: 04 04 04 04 04 04 04 05 ; '.......{WHITE}'
C054: 05 05 05 05 05 06 06 06 ; '{WHITE}{WHITE}{WHITE}{WHITE}{WHITE}...'
C05C: 06 06 06 06 07 07 07 07 ; '....{BELL}{BELL}{BELL}{BELL}'
C064: 07 ; '{BELL}'
; I/O Link Vectors
C065: B9 C7 .WORD $C7B9 ; Kernal Print Control Char
C067: 05 C8 .WORD $C805 ; Kernal Print Hi-Bit Char
C069: C1 C9 .WORD $C9C1 ; Kernal Analyze Esc Sequence
C06B: E1 C5 .WORD $C5E1 ; Kernal Keyboard Scan Subroutine
C06D: AD C6 .WORD $C6AD ; Kernal Store Key
; Keyboard Shift Vectors
C06F: 80 FA .WORD $FA80 ; Keyboard Matrix Un-Shifted
C071: D9 FA .WORD $FAD9 ; Keyboard Matrix Shifted
C073: 32 FB .WORD $FB32 ; Keyboard Matrix C-Key
C075: 8B FB .WORD $FB8B ; Keyboard Matrix Control
C077: 80 FA .WORD $FA80 ; Keyboard Matrix Un-Shifted
C079: E4 FB .WORD $FBE4 ; Keyboard Matrix Caps-Lock
; Initialize Screen
C07B: A9 03 LDA #$03
C07D: 0D 00 DD ORA $DD00
C080: 8D 00 DD STA $DD00
C083: A9 FB LDA #$FB
C085: 25 01 AND $01
C087: 09 02 ORA #$02
C089: 85 01 STA $01
C08B: 20 CC FF JSR $FFCC ; (iclrch) Restore I/O Vector [F226]
C08E: A9 00 LDA #$00
C090: 20 80 FC JSR $FC80 ; Init screen DIN patch
C093: 85 D8 STA $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
C095: 85 D7 STA $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
C097: 85 D0 STA $D0 ; Number of characters in keyboard buffer
C099: 85 D1 STA $D1 ; Number of programmed chars waiting
C09B: 85 D6 STA $D6 ; Input from screen / from keyboard
C09D: 8D 21 0A STA $0A21 ; Screen Freeze Flag
C0A0: 8D 26 0A STA $0A26 ; VIC Cursor Mode (Blinking, Solid)
C0A3: 85 D9 STA $D9 ; Character base: 0 = ROM, 4 = RAM
C0A5: 8D 2E 0A STA $0A2E ; VDC Text Screen Base address
C0A8: A9 14 LDA #$14
C0AA: 8D 2C 0A STA $0A2C ; VIC Text Mode Video Matrix & Character Base Pointer. ($d018)
C0AD: A9 78 LDA #$78
C0AF: 8D 2D 0A STA $0A2D ; VIC Graphic Mode Video Matrix & Bit Map Pointer. ($d018)
C0B2: A9 08 LDA #$08
C0B4: 8D 2F 0A STA $0A2F ; VDC Attribute Base address
C0B7: AD 4C C0 LDA $C04C ; Screen Address High
C0BA: 8D 3B 0A STA $0A3B ; VIC Text Screen Base address
C0BD: A9 0A LDA #$0A
C0BF: 8D 20 0A STA $0A20 ; Keyboard Queue Maximum Size
C0C2: 8D 28 0A STA $0A28 ; VIC Cursor Blink Counter
C0C5: 8D 27 0A STA $0A27 ; VIC Cursor Disable
C0C8: 8D 24 0A STA $0A24 ; Delay Before a Key Starts Repeating
C0CB: A9 04 LDA #$04
C0CD: 8D 23 0A STA $0A23 ; Delay Between Key Repeats
C0D0: 20 83 C9 JSR $C983 ; Esc-y Set Default Tabs
C0D3: 8D 22 0A STA $0A22 ; Enable Key Repeats (128=all, 64=none, 0=some)
C0D6: 0D 05 D5 ORA $D505
C0D9: 8D 05 D5 STA $D505
C0DC: A9 60 LDA #$60
C0DE: 8D 2B 0A STA $0A2B ; VDC Cursor Mode (when enabled)
C0E1: A9 D0 LDA #$D0
C0E3: 8D 34 0A STA $0A34 ; VIC Split Screen Raster Value
C0E6: A2 1A LDX #$1A
C0E8: BD 74 CE LDA $CE74,X ; 40-col Init Values ($e0)
C0EB: 95 E0 STA $E0,X ; Pointer to Current Line (Text)
C0ED: BD 8E CE LDA $CE8E,X ; 80-col Init Values ($0a40)
C0F0: 9D 40 0A STA $0A40,X
C0F3: CA DEX
C0F4: 10 F2 BPL $C0E8
C0F6: A2 09 LDX #$09
C0F8: BD 65 C0 LDA $C065,X ; I/O Link Vectors
C0FB: 9D 34 03 STA $0334,X ; Print Control Code Link [C7B9]
C0FE: CA DEX
C0FF: 10 F7 BPL $C0F8
C101: 2C 04 0A BIT $0A04
C104: 70 1E BVS $C124
C106: 20 81 FE JSR $FE81 ; ?
C109: A9 00 LDA #$00
C10B: 8D 3F 03 STA $033F
C10E: 20 87 FC JSR $FC87 ; Init KBD Translation Tables
C111: A2 4C LDX #$4C
C113: BD A8 CE LDA $CEA8,X ; Prog Key Lengths
C116: 9D 00 10 STA $1000,X
C119: CA DEX
C11A: 10 F7 BPL $C113
C11C: A9 40 LDA #$40
C11E: 0D 04 0A ORA $0A04
C121: 8D 04 0A STA $0A04
C124: 20 2E CD JSR $CD2E ; Switch 40/80 Col
C127: 20 83 C9 JSR $C983 ; Esc-y Set Default Tabs
C12A: 20 24 CA JSR $CA24 ; Exit Window
C12D: 20 42 C1 JSR $C142 ; Reset Window
C130: 20 2E CD JSR $CD2E ; Switch 40/80 Col
C133: 20 24 CA JSR $CA24 ; Exit Window
C136: 20 42 C1 JSR $C142 ; Reset Window
C139: 2C 05 D5 BIT $D505
C13C: 30 03 BMI $C141
C13E: 20 2E CD JSR $CD2E ; Switch 40/80 Col
C141: 60 RTS
; Reset Window
C142: 20 50 C1 JSR $C150 ; Home Cursor
C145: 20 5E C1 JSR $C15E
C148: 20 A5 C4 JSR $C4A5 ; Clear a Line
C14B: E4 E4 CPX $E4 ; Window Lower Limit
C14D: E8 INX
C14E: 90 F5 BCC $C145
; Home Cursor
C150: A6 E5 LDX $E5 ; Window Upper Limit
C152: 86 EB STX $EB ; Current Cursor Line
C154: 86 E8 STX $E8 ; Current Input Column Start
; Goto Left Border
C156: A4 E6 LDY $E6 ; Window Left Margin
C158: 84 EC STY $EC ; Current Cursor Column
C15A: 84 E9 STY $E9 ; Current Input Line Start
; Set Up New Line
C15C: A6 EB LDX $EB ; Current Cursor Line
C15E: BD 33 C0 LDA $C033,X ; Screen Address Low
C161: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
C163: 10 01 BPL $C166
C165: 0A ASL A
C166: 85 E0 STA $E0 ; Pointer to Current Line (Text)
C168: BD 4C C0 LDA $C04C,X ; Screen Address High
C16B: 29 03 AND #$03
C16D: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
C16F: 10 06 BPL $C177
C171: 2A ROL A
C172: 0D 2E 0A ORA $0A2E ; VDC Text Screen Base address
C175: 90 03 BCC $C17A
C177: 0D 3B 0A ORA $0A3B ; VIC Text Screen Base address
C17A: 85 E1 STA $E1 ; Pointer to Current Line high (Text)
; Do Screen Color
C17C: A5 E0 LDA $E0 ; Pointer to Current Line (Text)
C17E: 85 E2 STA $E2 ; Pointer to Current Line (Attribute)
C180: A5 E1 LDA $E1 ; Pointer to Current Line high (Text)
C182: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
C184: 10 07 BPL $C18D
C186: 29 07 AND #$07
C188: 0D 2F 0A ORA $0A2F ; VDC Attribute Base address
C18B: D0 04 BNE $C191
C18D: 29 03 AND #$03
C18F: 09 D8 ORA #$D8
C191: 85 E3 STA $E3 ; Pointer to Current Line high (Attribute)
C193: 60 RTS
; (IRQ) Split Screen
C194: 38 SEC
C195: AD 19 D0 LDA $D019
C198: 29 01 AND #$01
C19A: F0 07 BEQ $C1A3
C19C: 8D 19 D0 STA $D019
C19F: A5 D8 LDA $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
C1A1: C9 FF CMP #$FF
C1A3: F0 6F BEQ $C214
C1A5: 2C 11 D0 BIT $D011
C1A8: 30 04 BMI $C1AE
C1AA: 29 40 AND #$40
C1AC: D0 31 BNE $C1DF
C1AE: 38 SEC
C1AF: A5 D8 LDA $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
C1B1: F0 2C BEQ $C1DF
C1B3: 24 D8 BIT $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
C1B5: 50 06 BVC $C1BD
C1B7: AD 34 0A LDA $0A34 ; VIC Split Screen Raster Value
C1BA: 8D 12 D0 STA $D012
C1BD: A5 01 LDA $01
C1BF: 29 FD AND #$FD
C1C1: 09 04 ORA #$04
C1C3: 48 PHA
C1C4: AD 2D 0A LDA $0A2D ; VIC Graphic Mode Video Matrix & Bit Map Pointer. ($d018)
C1C7: 48 PHA
C1C8: AD 11 D0 LDA $D011
C1CB: 29 7F AND #$7F
C1CD: 09 20 ORA #$20
C1CF: A8 TAY
C1D0: AD 16 D0 LDA $D016
C1D3: 24 D8 BIT $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
C1D5: 30 03 BMI $C1DA
C1D7: 29 EF AND #$EF
C1D9: 2C .BYTE $2C
C1DA: 09 10 ORA #$10
C1DC: AA TAX
C1DD: D0 28 BNE $C207
C1DF: A9 FF LDA #$FF
C1E1: 8D 12 D0 STA $D012
C1E4: A5 01 LDA $01
C1E6: 09 02 ORA #$02
C1E8: 29 FB AND #$FB
C1EA: 05 D9 ORA $D9 ; Character base: 0 = ROM, 4 = RAM
C1EC: 48 PHA
C1ED: AD 2C 0A LDA $0A2C ; VIC Text Mode Video Matrix & Character Base Pointer. ($d018)
C1F0: 48 PHA
C1F1: AD 11 D0 LDA $D011
C1F4: 29 5F AND #$5F
C1F6: A8 TAY
C1F7: AD 16 D0 LDA $D016
C1FA: 29 EF AND #$EF
C1FC: AA TAX
C1FD: B0 08 BCS $C207
C1FF: A2 07 LDX #$07
C201: CA DEX
C202: D0 FD BNE $C201
C204: EA NOP
C205: EA NOP
C206: AA TAX
C207: 68 PLA
C208: 8D 18 D0 STA $D018
C20B: 68 PLA
C20C: 85 01 STA $01
C20E: 8C 11 D0 STY $D011
C211: 8E 16 D0 STX $D016
C214: B0 13 BCS $C229
C216: AD 30 D0 LDA $D030
C219: 29 01 AND #$01
C21B: F0 0C BEQ $C229
C21D: A5 D8 LDA $D8 ; Graphics mode code (BIT765: 000=0, 001=1, 011=2, 101=3, 111=4)
C21F: 29 40 AND #$40
C221: F0 06 BEQ $C229
C223: AD 11 D0 LDA $D011
C226: 10 01 BPL $C229
C228: 38 SEC
C229: 58 CLI
C22A: 90 07 BCC $C233
C22C: 20 87 FC JSR $FC87 ; Init KBD Translation Tables
C22F: 20 E7 C6 JSR $C6E7 ; Flash 40 Column Cursor
C232: 38 SEC
C233: 60 RTS
; Get a Key
C234: A6 D1 LDX $D1 ; Number of programmed chars waiting
C236: F0 0C BEQ $C244
C238: A4 D2 LDY $D2 ; Index Into Pending Function Key String
C23A: B9 0A 10 LDA $100A,Y
C23D: C6 D1 DEC $D1 ; Number of programmed chars waiting
C23F: E6 D2 INC $D2 ; Index Into Pending Function Key String
C241: 58 CLI
C242: 18 CLC
C243: 60 RTS
C244: AC 4A 03 LDY $034A ; IRQ Keyboard Buffer (10 Bytes)
C247: BD 4B 03 LDA $034B,X
C24A: 9D 4A 03 STA $034A,X ; IRQ Keyboard Buffer (10 Bytes)
C24D: E8 INX
C24E: E4 D0 CPX $D0 ; Number of characters in keyboard buffer
C250: D0 F5 BNE $C247
C252: C6 D0 DEC $D0 ; Number of characters in keyboard buffer
C254: 98 TYA
C255: 58 CLI
C256: 18 CLC
C257: 60 RTS
; Screen Line Editor
C258: 20 2D C7 JSR $C72D ; Print to Screen
C25B: 20 6F CD JSR $CD6F ; Set Screen Color
C25E: A5 D0 LDA $D0 ; Number of characters in keyboard buffer
C260: 05 D1 ORA $D1 ; Number of programmed chars waiting
C262: F0 FA BEQ $C25E
C264: 20 9F CD JSR $CD9F ; Turn Cursor On
C267: 20 34 C2 JSR $C234 ; Get a Key
C26A: C9 0D CMP #$0D
C26C: D0 EA BNE $C258 ; Screen Line Editor
C26E: 85 D6 STA $D6 ; Input from screen / from keyboard
C270: A9 00 LDA #$00
C272: 85 F4 STA $F4 ; Quote Mode Flag
C274: 20 C3 CB JSR $CBC3 ; Find End-of-Line
C277: 8E 30 0A STX $0A30
C27A: 20 B5 CB JSR $CBB5
C27D: A4 E6 LDY $E6 ; Window Left Margin
C27F: A5 E8 LDA $E8 ; Current Input Column Start
C281: 30 13 BMI $C296
C283: C5 EB CMP $EB ; Current Cursor Line
C285: 90 0F BCC $C296
C287: A4 E9 LDY $E9 ; Current Input Line Start
C289: CD 30 0A CMP $0A30
C28C: D0 04 BNE $C292
C28E: C4 EA CPY $EA ; Current Input Line End
C290: F0 02 BEQ $C294
C292: B0 11 BCS $C2A5
C294: 85 EB STA $EB ; Current Cursor Line
C296: 84 EC STY $EC ; Current Cursor Column
C298: 4C BC C2 JMP $C2BC ; Read Screen Char
; Input From Screen
C29B: 98 TYA
C29C: 48 PHA
C29D: 8A TXA
C29E: 48 PHA
C29F: A5 D6 LDA $D6 ; Input from screen / from keyboard
C2A1: F0 B8 BEQ $C25B
C2A3: 10 17 BPL $C2BC ; Read Screen Char
C2A5: A9 00 LDA #$00
C2A7: 85 D6 STA $D6 ; Input from screen / from keyboard
C2A9: A9 0D LDA #$0D
C2AB: A2 03 LDX #$03
C2AD: E4 99 CPX $99 ; Input device, normally 0
C2AF: F0 04 BEQ $C2B5
C2B1: E4 9A CPX $9A ; Output device, normally 3
C2B3: F0 03 BEQ $C2B8
C2B5: 20 2D C7 JSR $C72D ; Print to Screen
C2B8: A9 0D LDA #$0D
C2BA: D0 39 BNE $C2F5
; Read Screen Char
C2BC: 20 5C C1 JSR $C15C ; Set Up New Line
C2BF: 20 58 CB JSR $CB58 ; Get Screen Char/Color
C2C2: 85 EF STA $EF ; Current Character to Print
C2C4: 29 3F AND #$3F
C2C6: 06 EF ASL $EF ; Current Character to Print
C2C8: 24 EF BIT $EF ; Current Character to Print
C2CA: 10 02 BPL $C2CE
C2CC: 09 80 ORA #$80
C2CE: 90 04 BCC $C2D4
C2D0: A6 F4 LDX $F4 ; Quote Mode Flag
C2D2: D0 04 BNE $C2D8
C2D4: 70 02 BVS $C2D8
C2D6: 09 40 ORA #$40
C2D8: 20 FF C2 JSR $C2FF ; Check For Quotes
C2DB: A4 EB LDY $EB ; Current Cursor Line
C2DD: CC 30 0A CPY $0A30
C2E0: 90 0A BCC $C2EC
C2E2: A4 EC LDY $EC ; Current Cursor Column
C2E4: C4 EA CPY $EA ; Current Input Line End
C2E6: 90 04 BCC $C2EC
C2E8: 66 D6 ROR $D6 ; Input from screen / from keyboard
C2EA: 30 03 BMI $C2EF
C2EC: 20 ED CB JSR $CBED ; Move Cursor Right
C2EF: C9 DE CMP #$DE
C2F1: D0 02 BNE $C2F5
C2F3: A9 FF LDA #$FF
C2F5: 85 EF STA $EF ; Current Character to Print
C2F7: 68 PLA
C2F8: AA TAX
C2F9: 68 PLA
C2FA: A8 TAY
C2FB: A5 EF LDA $EF ; Current Character to Print
C2FD: 18 CLC
C2FE: 60 RTS
; Check For Quotes
C2FF: C9 22 CMP #$22
C301: D0 08 BNE $C30B
C303: A5 F4 LDA $F4 ; Quote Mode Flag
C305: 49 01 EOR #$01
C307: 85 F4 STA $F4 ; Quote Mode Flag
C309: A9 22 LDA #$22
C30B: 60 RTS
; Wrap Up Screen Print
C30C: A5 EF LDA $EF ; Current Character to Print
C30E: 85 F0 STA $F0 ; Previous character printed (For <ESC> Test)
C310: 20 57 CD JSR $CD57 ; Position 80-col Cursor
C313: A5 F5 LDA $F5 ; Insert Mode Flag
C315: F0 02 BEQ $C319
C317: 46 F4 LSR $F4 ; Quote Mode Flag
C319: 68 PLA
C31A: A8 TAY
C31B: 68 PLA
C31C: AA TAX
C31D: 68 PLA
C31E: 18 CLC
C31F: 60 RTS
; Ascii to Screen Code
C320: 09 40 ORA #$40
C322: A6 F3 LDX $F3 ; Reverse Mode Flag
C324: F0 02 BEQ $C328
C326: 09 80 ORA #$80
C328: A6 F5 LDX $F5 ; Insert Mode Flag
C32A: F0 02 BEQ $C32E
C32C: C6 F5 DEC $F5 ; Insert Mode Flag
C32E: 24 F6 BIT $F6 ; Auto-Insert Mode Flag
C330: 10 09 BPL $C33B
C332: 48 PHA
C333: 20 E3 C8 JSR $C8E3 ; Open Screen Space
C336: A2 00 LDX #$00
C338: 86 F5 STX $F5 ; Insert Mode Flag
C33A: 68 PLA
C33B: 20 2F CC JSR $CC2F ; Print Character
; Check Cursor Range
C33E: C4 E7 CPY $E7 ; Window Right Margin
C340: 90 0A BCC $C34C
C342: A6 EB LDX $EB ; Current Cursor Line
C344: E4 E4 CPX $E4 ; Window Lower Limit
C346: 90 04 BCC $C34C
C348: 24 F8 BIT $F8
C34A: 30 16 BMI $C362
C34C: 20 5C C1 JSR $C15C ; Set Up New Line
C34F: 20 ED CB JSR $CBED ; Move Cursor Right
C352: 90 0E BCC $C362
C354: 20 74 CB JSR $CB74 ; Check Screen Line of Location
C357: B0 08 BCS $C361
C359: 38 SEC
C35A: 24 F8 BIT $F8
C35C: 70 04 BVS $C362
C35E: 20 7C C3 JSR $C37C ; Insert a Line
C361: 18 CLC
C362: 60 RTS
; Do New Line
C363: A6 EB LDX $EB ; Current Cursor Line
C365: E4 E4 CPX $E4 ; Window Lower Limit
C367: 90 0E BCC $C377
C369: 24 F8 BIT $F8
C36B: 10 06 BPL $C373
C36D: A5 E5 LDA $E5 ; Window Upper Limit
C36F: 85 EB STA $EB ; Current Cursor Line
C371: B0 06 BCS $C379
C373: 20 A6 C3 JSR $C3A6 ; Scroll Screen
C376: 18 CLC
C377: E6 EB INC $EB ; Current Cursor Line
C379: 4C 5C C1 JMP $C15C ; Set Up New Line
; Insert a Line
C37C: A6 E8 LDX $E8 ; Current Input Column Start
C37E: 30 06 BMI $C386
C380: E4 EB CPX $EB ; Current Cursor Line
C382: 90 02 BCC $C386
C384: E6 E8 INC $E8 ; Current Input Column Start
C386: A6 E4 LDX $E4 ; Window Lower Limit
C388: 20 5E C1 JSR $C15E
C38B: A4 E6 LDY $E6 ; Window Left Margin
C38D: E4 EB CPX $EB ; Current Cursor Line
C38F: F0 0F BEQ $C3A0
C391: CA DEX
C392: 20 76 CB JSR $CB76
C395: E8 INX
C396: 20 83 CB JSR $CB83
C399: CA DEX
C39A: 20 0D C4 JSR $C40D ; Move Screen Line
C39D: 4C 88 C3 JMP $C388
C3A0: 20 A5 C4 JSR $C4A5 ; Clear a Line
C3A3: 4C 93 CB JMP $CB93
; Scroll Screen
C3A6: A6 E5 LDX $E5 ; Window Upper Limit
C3A8: E8 INX
C3A9: 20 76 CB JSR $CB76
C3AC: 90 0A BCC $C3B8
C3AE: E4 E4 CPX $E4 ; Window Lower Limit
C3B0: 90 F6 BCC $C3A8
C3B2: A6 E5 LDX $E5 ; Window Upper Limit
C3B4: E8 INX
C3B5: 20 85 CB JSR $CB85
C3B8: C6 EB DEC $EB ; Current Cursor Line
C3BA: 24 E8 BIT $E8 ; Current Input Column Start
C3BC: 30 02 BMI $C3C0
C3BE: C6 E8 DEC $E8 ; Current Input Column Start
C3C0: A6 E5 LDX $E5 ; Window Upper Limit
C3C2: E4 DF CPX $DF
C3C4: B0 02 BCS $C3C8
C3C6: C6 DF DEC $DF
C3C8: 20 DC C3 JSR $C3DC ; Delete a Line
C3CB: A6 E5 LDX $E5 ; Window Upper Limit
C3CD: 20 76 CB JSR $CB76
C3D0: 08 PHP
C3D1: 20 85 CB JSR $CB85
C3D4: 28 PLP
C3D5: 90 04 BCC $C3DB
C3D7: 24 F8 BIT $F8
C3D9: 30 CB BMI $C3A6 ; Scroll Screen
C3DB: 60 RTS
; Delete a Line
C3DC: 20 5E C1 JSR $C15E
C3DF: A4 E6 LDY $E6 ; Window Left Margin
C3E1: E4 E4 CPX $E4 ; Window Lower Limit
C3E3: B0 0F BCS $C3F4
C3E5: E8 INX
C3E6: 20 76 CB JSR $CB76
C3E9: CA DEX
C3EA: 20 83 CB JSR $CB83
C3ED: E8 INX
C3EE: 20 0D C4 JSR $C40D ; Move Screen Line
C3F1: 4C DC C3 JMP $C3DC ; Delete a Line
C3F4: 20 A5 C4 JSR $C4A5 ; Clear a Line
C3F7: A9 7F LDA #$7F
C3F9: 8D 00 DC STA $DC00
C3FC: AD 01 DC LDA $DC01
C3FF: C9 DF CMP #$DF
C401: D0 09 BNE $C40C
C403: A0 00 LDY #$00
C405: EA NOP
C406: CA DEX
C407: D0 FC BNE $C405
C409: 88 DEY
C40A: D0 F9 BNE $C405
C40C: 60 RTS
; Move Screen Line
C40D: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
C40F: 30 25 BMI $C436
C411: BD 33 C0 LDA $C033,X ; Screen Address Low
C414: 85 DC STA $DC
C416: 85 DA STA $DA
C418: BD 4C C0 LDA $C04C,X ; Screen Address High
C41B: 29 03 AND #$03
C41D: 0D 3B 0A ORA $0A3B ; VIC Text Screen Base address
C420: 85 DB STA $DB
C422: 29 03 AND #$03
C424: 09 D8 ORA #$D8
C426: 85 DD STA $DD
C428: B1 DA LDA ($DA),Y
C42A: 91 E0 STA ($E0),Y ; Pointer to Current Line (Text)
C42C: B1 DC LDA ($DC),Y
C42E: 91 E2 STA ($E2),Y ; Pointer to Current Line (Attribute)
C430: C4 E7 CPY $E7 ; Window Right Margin
C432: C8 INY
C433: 90 F3 BCC $C428
C435: 60 RTS
C436: 8E 31 0A STX $0A31
C439: 8C 32 0A STY $0A32
C43C: A2 18 LDX #$18
C43E: 20 DA CD JSR $CDDA ; Read CRTC Register
C441: 09 80 ORA #$80
C443: 20 CC CD JSR $CDCC ; Set CRTC Register
C446: 20 E6 CD JSR $CDE6 ; Set CRTC to Screen Address
C449: AE 31 0A LDX $0A31
C44C: BD 33 C0 LDA $C033,X ; Screen Address Low
C44F: 0A ASL A
C450: 85 DA STA $DA
C452: BD 4C C0 LDA $C04C,X ; Screen Address High
C455: 29 03 AND #$03
C457: 2A ROL A
C458: 0D 2E 0A ORA $0A2E ; VDC Text Screen Base address
C45B: 85 DB STA $DB
C45D: A2 20 LDX #$20
C45F: 18 CLC
C460: 98 TYA
C461: 65 DA ADC $DA
C463: 85 DA STA $DA
C465: A9 00 LDA #$00
C467: 65 DB ADC $DB
C469: 85 DB STA $DB
C46B: 20 CC CD JSR $CDCC ; Set CRTC Register
C46E: E8 INX
C46F: A5 DA LDA $DA
C471: 20 CC CD JSR $CDCC ; Set CRTC Register
C474: 38 SEC
C475: A6 E7 LDX $E7 ; Window Right Margin
C477: E8 INX
C478: 8A TXA
C479: ED 32 0A SBC $0A32
C47C: 8D 32 0A STA $0A32
C47F: A2 1E LDX #$1E
C481: 20 CC CD JSR $CDCC ; Set CRTC Register
C484: A2 20 LDX #$20
C486: A5 DB LDA $DB
C488: 29 07 AND #$07
C48A: 0D 2F 0A ORA $0A2F ; VDC Attribute Base address
C48D: 20 CC CD JSR $CDCC ; Set CRTC Register
C490: E8 INX
C491: A5 DA LDA $DA
C493: 20 CC CD JSR $CDCC ; Set CRTC Register
C496: 20 F9 CD JSR $CDF9 ; Set CRTC to Color Address
C499: AD 32 0A LDA $0A32
C49C: A2 1E LDX #$1E
C49E: 20 CC CD JSR $CDCC ; Set CRTC Register
C4A1: AE 31 0A LDX $0A31
C4A4: 60 RTS
; Clear a Line
C4A5: A4 E6 LDY $E6 ; Window Left Margin
C4A7: 20 85 CB JSR $CB85
C4AA: 20 5E C1 JSR $C15E
C4AD: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
C4AF: 30 0F BMI $C4C0
C4B1: 88 DEY
C4B2: C8 INY
C4B3: A9 20 LDA #$20
C4B5: 91 E0 STA ($E0),Y ; Pointer to Current Line (Text)
C4B7: A5 F1 LDA $F1 ; Curr Attribute to Print (Default FGND Color)
C4B9: 91 E2 STA ($E2),Y ; Pointer to Current Line (Attribute)
C4BB: C4 E7 CPY $E7 ; Window Right Margin
C4BD: D0 F3 BNE $C4B2
C4BF: 60 RTS
C4C0: 8E 31 0A STX $0A31
C4C3: 8C 32 0A STY $0A32
C4C6: A2 18 LDX #$18
C4C8: 20 DA CD JSR $CDDA ; Read CRTC Register
C4CB: 29 7F AND #$7F
C4CD: 20 CC CD JSR $CDCC ; Set CRTC Register
C4D0: A2 12 LDX #$12
C4D2: 18 CLC
C4D3: 98 TYA
C4D4: 65 E0 ADC $E0 ; Pointer to Current Line (Text)
C4D6: 48 PHA
C4D7: 8D 3C 0A STA $0A3C
C4DA: A9 00 LDA #$00
C4DC: 65 E1 ADC $E1 ; Pointer to Current Line high (Text)
C4DE: 8D 3D 0A STA $0A3D
C4E1: 20 CC CD JSR $CDCC ; Set CRTC Register
C4E4: E8 INX
C4E5: 68 PLA
C4E6: 20 CC CD JSR $CDCC ; Set CRTC Register
C4E9: A9 20 LDA #$20
C4EB: 20 CA CD JSR $CDCA ; Set CRTC Register 31
C4EE: 38 SEC
C4EF: A5 E7 LDA $E7 ; Window Right Margin
C4F1: ED 32 0A SBC $0A32
C4F4: 48 PHA
C4F5: F0 14 BEQ $C50B
C4F7: AA TAX
C4F8: 38 SEC
C4F9: 6D 3C 0A ADC $0A3C
C4FC: 8D 3C 0A STA $0A3C
C4FF: A9 00 LDA #$00
C501: 6D 3D 0A ADC $0A3D
C504: 8D 3D 0A STA $0A3D
C507: 8A TXA
C508: 20 3E C5 JSR $C53E ; Set 80-Column Counter
C50B: A2 12 LDX #$12
C50D: 18 CLC
C50E: 98 TYA
C50F: 65 E2 ADC $E2 ; Pointer to Current Line (Attribute)
C511: 48 PHA
C512: A9 00 LDA #$00
C514: 65 E3 ADC $E3 ; Pointer to Current Line high (Attribute)
C516: 20 CC CD JSR $CDCC ; Set CRTC Register
C519: E8 INX
C51A: 68 PLA
C51B: 20 CC CD JSR $CDCC ; Set CRTC Register
C51E: AD 3D 0A LDA $0A3D
C521: 29 07 AND #$07
C523: 0D 2F 0A ORA $0A2F ; VDC Attribute Base address
C526: 8D 3D 0A STA $0A3D
C529: A5 F1 LDA $F1 ; Curr Attribute to Print (Default FGND Color)
C52B: 29 8F AND #$8F
C52D: 20 CA CD JSR $CDCA ; Set CRTC Register 31
C530: 68 PLA
C531: F0 03 BEQ $C536
C533: 20 3E C5 JSR $C53E ; Set 80-Column Counter
C536: AE 31 0A LDX $0A31
C539: A4 E7 LDY $E7 ; Window Right Margin
C53B: 60 RTS
; Set 80-Column Counter to 1
C53C: A9 01 LDA #$01
; Set 80-Column Counter
C53E: A2 1E LDX #$1E
C540: 20 CC CD JSR $CDCC ; Set CRTC Register
C543: 2C 00 D6 BIT $D600
C546: 10 FB BPL $C543
C548: A2 12 LDX #$12
C54A: 20 DA CD JSR $CDDA ; Read CRTC Register
C54D: CD 3D 0A CMP $0A3D
C550: 90 EA BCC $C53C ; Set 80-Column Counter to 1
C552: A2 13 LDX #$13
C554: 20 DA CD JSR $CDDA ; Read CRTC Register
C557: CD 3C 0A CMP $0A3C
C55A: 90 E0 BCC $C53C ; Set 80-Column Counter to 1
C55C: 60 RTS
; Keyboard Scan Subroutine
C55D: A5 01 LDA $01
C55F: 29 40 AND #$40
C561: 49 40 EOR #$40
C563: 4A LSR A
C564: 4A LSR A
C565: 85 D3 STA $D3 ; Key shift flag: (1= Shift, 2= C=, 4= Control, 8= Alt, 16= Caps Lock)
C567: A0 58 LDY #$58
C569: 84 D4 STY $D4
C56B: A9 00 LDA #$00
C56D: 8D 00 DC STA $DC00
C570: 8D 2F D0 STA $D02F
C573: AE 01 DC LDX $DC01
C576: E0 FF CPX #$FF
C578: D0 03 BNE $C57D
C57A: 4C 97 C6 JMP $C697
C57D: A8 TAY
C57E: AD 3E 03 LDA $033E
C581: 85 CC STA $CC ; Keyscan Table Pointer
C583: AD 3F 03 LDA $033F
C586: 85 CD STA $CD ; Keyscan Table Pointer high
C588: A9 FF LDA #$FF
C58A: 8D 2F D0 STA $D02F
C58D: 2A ROL A
C58E: 24 D3 BIT $D3 ; Key shift flag: (1= Shift, 2= C=, 4= Control, 8= Alt, 16= Caps Lock)
C590: 30 05 BMI $C597
C592: 8D 00 DC STA $DC00
C595: 10 03 BPL $C59A
C597: 8D 2F D0 STA $D02F
C59A: A2 08 LDX #$08
C59C: 48 PHA
C59D: AD 01 DC LDA $DC01
C5A0: CD 01 DC CMP $DC01
C5A3: D0 F8 BNE $C59D
C5A5: 4A LSR A
C5A6: B0 17 BCS $C5BF
C5A8: 48 PHA
C5A9: B1 CC LDA ($CC),Y ; Keyscan Table Pointer
C5AB: C9 08 CMP #$08
C5AD: F0 08 BEQ $C5B7
C5AF: C9 05 CMP #$05
C5B1: B0 09 BCS $C5BC
C5B3: C9 03 CMP #$03
C5B5: F0 05 BEQ $C5BC
C5B7: 05 D3 ORA $D3 ; Key shift flag: (1= Shift, 2= C=, 4= Control, 8= Alt, 16= Caps Lock)
C5B9: 85 D3 STA $D3 ; Key shift flag: (1= Shift, 2= C=, 4= Control, 8= Alt, 16= Caps Lock)
C5BB: 2C .BYTE $2C
C5BC: 84 D4 STY $D4
C5BE: 68 PLA
C5BF: C8 INY
C5C0: CA DEX
C5C1: D0 E2 BNE $C5A5
C5C3: C0 59 CPY #$59
C5C5: B0 10 BCS $C5D7
C5C7: 68 PLA
C5C8: 38 SEC
C5C9: 2A ROL A
C5CA: B0 C2 BCS $C58E
C5CC: 8D 00 DC STA $DC00
C5CF: 26 D3 ROL $D3 ; Key shift flag: (1= Shift, 2= C=, 4= Control, 8= Alt, 16= Caps Lock)
C5D1: 38 SEC
C5D2: 66 D3 ROR $D3 ; Key shift flag: (1= Shift, 2= C=, 4= Control, 8= Alt, 16= Caps Lock)
C5D4: 2A ROL A
C5D5: D0 B7 BNE $C58E
C5D7: 06 D3 ASL $D3 ; Key shift flag: (1= Shift, 2= C=, 4= Control, 8= Alt, 16= Caps Lock)
C5D9: 46 D3 LSR $D3 ; Key shift flag: (1= Shift, 2= C=, 4= Control, 8= Alt, 16= Caps Lock)
C5DB: 68 PLA
C5DC: A5 D4 LDA $D4
C5DE: 6C 3A 03 JMP ($033A) ; Keyscan Link [C5E1]
; Kernal Keyboard Scan Subroutine
C5E1: C9 57 CMP #$57
C5E3: D0 13 BNE $C5F8
C5E5: 24 F7 BIT $F7
C5E7: 70 5A BVS $C643
C5E9: AD 25 0A LDA $0A25 ; Delay Between C= + SHIFT Toggles
C5EC: D0 55 BNE $C643
C5EE: A9 0D LDA #$0D
C5F0: 4D 21 0A EOR $0A21 ; Screen Freeze Flag
C5F3: 8D 21 0A STA $0A21 ; Screen Freeze Flag
C5F6: 50 30 BVC $C628
C5F8: A5 D3 LDA $D3 ; Key shift flag: (1= Shift, 2= C=, 4= Control, 8= Alt, 16= Caps Lock)
C5FA: F0 55 BEQ $C651 ; Key Pickup & Repeat
C5FC: C9 10 CMP #$10
C5FE: F0 44 BEQ $C644
C600: C9 08 CMP #$08
C602: F0 42 BEQ $C646
C604: 29 07 AND #$07
C606: C9 03 CMP #$03
C608: D0 25 BNE $C62F
C60A: A5 F7 LDA $F7
C60C: 30 43 BMI $C651 ; Key Pickup & Repeat
C60E: AD 25 0A LDA $0A25 ; Delay Between C= + SHIFT Toggles
C611: D0 3E BNE $C651 ; Key Pickup & Repeat
C613: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
C615: 10 09 BPL $C620
C617: A5 F1 LDA $F1 ; Curr Attribute to Print (Default FGND Color)
C619: 49 80 EOR #$80
C61B: 85 F1 STA $F1 ; Curr Attribute to Print (Default FGND Color)
C61D: 4C 28 C6 JMP $C628
C620: AD 2C 0A LDA $0A2C ; VIC Text Mode Video Matrix & Character Base Pointer. ($d018)
C623: 49 02 EOR #$02
C625: 8D 2C 0A STA $0A2C ; VIC Text Mode Video Matrix & Character Base Pointer. ($d018)
C628: A9 08 LDA #$08
C62A: 8D 25 0A STA $0A25 ; Delay Between C= + SHIFT Toggles
C62D: D0 22 BNE $C651 ; Key Pickup & Repeat
C62F: 0A ASL A
C630: C9 08 CMP #$08
C632: 90 12 BCC $C646
C634: A9 06 LDA #$06
C636: A6 D4 LDX $D4
C638: E0 0D CPX #$0D
C63A: D0 0A BNE $C646
C63C: 24 F7 BIT $F7
C63E: 70 06 BVS $C646
C640: 8E 21 0A STX $0A21 ; Screen Freeze Flag
C643: 60 RTS
C644: A9 0A LDA #$0A
C646: AA TAX
C647: BD 3E 03 LDA $033E,X
C64A: 85 CC STA $CC ; Keyscan Table Pointer
C64C: BD 3F 03 LDA $033F,X
C64F: 85 CD STA $CD ; Keyscan Table Pointer high
; Key Pickup & Repeat
C651: A4 D4 LDY $D4
C653: B1 CC LDA ($CC),Y ; Keyscan Table Pointer
C655: AA TAX
C656: C4 D5 CPY $D5
C658: F0 07 BEQ $C661
C65A: A0 10 LDY #$10
C65C: 8C 24 0A STY $0A24 ; Delay Before a Key Starts Repeating
C65F: D0 36 BNE $C697
C661: 29 7F AND #$7F
C663: 2C 22 0A BIT $0A22 ; Enable Key Repeats (128=all, 64=none, 0=some)
C666: 30 16 BMI $C67E
C668: 70 5A BVS $C6C4
C66A: C9 7F CMP #$7F
C66C: F0 29 BEQ $C697
C66E: C9 14 CMP #$14
C670: F0 0C BEQ $C67E
C672: C9 20 CMP #$20
C674: F0 08 BEQ $C67E
C676: C9 1D CMP #$1D
C678: F0 04 BEQ $C67E
C67A: C9 11 CMP #$11
C67C: D0 46 BNE $C6C4
C67E: AC 24 0A LDY $0A24 ; Delay Before a Key Starts Repeating
C681: F0 05 BEQ $C688
C683: CE 24 0A DEC $0A24 ; Delay Before a Key Starts Repeating
C686: D0 3C BNE $C6C4
C688: CE 23 0A DEC $0A23 ; Delay Between Key Repeats
C68B: D0 37 BNE $C6C4
C68D: A0 04 LDY #$04
C68F: 8C 23 0A STY $0A23 ; Delay Between Key Repeats
C692: A4 D0 LDY $D0 ; Number of characters in keyboard buffer
C694: 88 DEY
C695: 10 2D BPL $C6C4
C697: 4E 25 0A LSR $0A25 ; Delay Between C= + SHIFT Toggles
C69A: A4 D4 LDY $D4
C69C: 84 D5 STY $D5
C69E: E0 FF CPX #$FF
C6A0: F0 22 BEQ $C6C4
C6A2: A9 00 LDA #$00
C6A4: 8D 21 0A STA $0A21 ; Screen Freeze Flag
C6A7: 8A TXA
C6A8: A6 D3 LDX $D3 ; Key shift flag: (1= Shift, 2= C=, 4= Control, 8= Alt, 16= Caps Lock)
C6AA: 4C C6 FC JMP $FCC6 ; DIN Keyboard patch for Key Pickup
; Kernal Store Key
C6AD: A2 09 LDX #$09
C6AF: DD DD C6 CMP $C6DD,X ; Keycodes for Programmed Keys
C6B2: F0 16 BEQ $C6CA
C6B4: CA DEX
C6B5: 10 F8 BPL $C6AF
C6B7: A6 D0 LDX $D0 ; Number of characters in keyboard buffer
C6B9: EC 20 0A CPX $0A20 ; Keyboard Queue Maximum Size
C6BC: B0 06 BCS $C6C4
C6BE: 9D 4A 03 STA $034A,X ; IRQ Keyboard Buffer (10 Bytes)
C6C1: E8 INX
C6C2: 86 D0 STX $D0 ; Number of characters in keyboard buffer
C6C4: A9 7F LDA #$7F
C6C6: 8D 00 DC STA $DC00
C6C9: 60 RTS
C6CA: 4C 00 CF JMP $CF00 ; ?
C6CD: 85 D1 STA $D1 ; Number of programmed chars waiting
C6CF: A9 00 LDA #$00
C6D1: CA DEX
C6D2: 30 06 BMI $C6DA
C6D4: 18 CLC
C6D5: 7D 00 10 ADC $1000,X
C6D8: 90 F7 BCC $C6D1
C6DA: 85 D2 STA $D2 ; Index Into Pending Function Key String
C6DC: 60 RTS
; Keycodes for Programmed Keys
C6DD: 85 89 86 8A 87 8B 88 8C ; '........'
C6E5: 83 84 ; '..'
; Flash 40 Column Cursor
C6E7: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
C6E9: 30 41 BMI $C72C
C6EB: AD 27 0A LDA $0A27 ; VIC Cursor Disable
C6EE: D0 3C BNE $C72C
C6F0: CE 28 0A DEC $0A28 ; VIC Cursor Blink Counter
C6F3: D0 37 BNE $C72C
C6F5: AD 26 0A LDA $0A26 ; VIC Cursor Mode (Blinking, Solid)
C6F8: 29 C0 AND #$C0
C6FA: C9 C0 CMP #$C0
C6FC: F0 2E BEQ $C72C
C6FE: A9 14 LDA #$14
C700: 8D 28 0A STA $0A28 ; VIC Cursor Blink Counter
C703: A4 EC LDY $EC ; Current Cursor Column
C705: AE 2A 0A LDX $0A2A ; VIC Cursor Color Before Blink
C708: B1 E0 LDA ($E0),Y ; Pointer to Current Line (Text)
C70A: 2C 26 0A BIT $0A26 ; VIC Cursor Mode (Blinking, Solid)
C70D: 30 10 BMI $C71F
C70F: 8D 29 0A STA $0A29 ; VIC Cursor Character Before Blink
C712: 20 7C C1 JSR $C17C ; Do Screen Color
C715: B1 E2 LDA ($E2),Y ; Pointer to Current Line (Attribute)
C717: 8D 2A 0A STA $0A2A ; VIC Cursor Color Before Blink
C71A: A6 F1 LDX $F1 ; Curr Attribute to Print (Default FGND Color)
C71C: AD 29 0A LDA $0A29 ; VIC Cursor Character Before Blink
C71F: 49 80 EOR #$80
C721: 20 40 CC JSR $CC40
C724: AD 26 0A LDA $0A26 ; VIC Cursor Mode (Blinking, Solid)
C727: 49 80 EOR #$80
C729: 8D 26 0A STA $0A26 ; VIC Cursor Mode (Blinking, Solid)
C72C: 60 RTS
; Print to Screen
C72D: 85 EF STA $EF ; Current Character to Print
C72F: 48 PHA
C730: 8A TXA
C731: 48 PHA
C732: 98 TYA
C733: 48 PHA
C734: AD 21 0A LDA $0A21 ; Screen Freeze Flag
C737: D0 FB BNE $C734
C739: 85 D6 STA $D6 ; Input from screen / from keyboard
C73B: A9 C3 LDA #$C3
C73D: 48 PHA
C73E: A9 0B LDA #$0B
C740: 48 PHA
C741: A4 EC LDY $EC ; Current Cursor Column
C743: A5 EF LDA $EF ; Current Character to Print
C745: C9 0D CMP #$0D
C747: F0 26 BEQ $C76F
C749: C9 8D CMP #$8D
C74B: F0 22 BEQ $C76F
C74D: A6 F0 LDX $F0 ; Previous character printed (For <ESC> Test)
C74F: E0 1B CPX #$1B
C751: D0 03 BNE $C756
C753: 4C BE C9 JMP $C9BE ; Analyze Esc Sequence
C756: AA TAX
C757: 10 03 BPL $C75C
C759: 4C 02 C8 JMP $C802 ; Print Hi-Bit Char
C75C: C9 20 CMP #$20
C75E: 90 56 BCC $C7B6 ; Print Control Char
C760: C9 60 CMP #$60
C762: 90 03 BCC $C767
C764: 29 DF AND #$DF
C766: 2C .BYTE $2C
C767: 29 3F AND #$3F
C769: 20 FF C2 JSR $C2FF ; Check For Quotes
C76C: 4C 22 C3 JMP $C322
C76F: 20 C3 CB JSR $CBC3 ; Find End-of-Line
C772: E8 INX
C773: 20 85 CB JSR $CB85
C776: A4 E6 LDY $E6 ; Window Left Margin
C778: 84 EC STY $EC ; Current Cursor Column
C77A: 20 63 C3 JSR $C363 ; Do New Line
; Esc-o (escape)
C77D: A5 F1 LDA $F1 ; Curr Attribute to Print (Default FGND Color)
C77F: 29 CF AND #$CF
C781: 85 F1 STA $F1 ; Curr Attribute to Print (Default FGND Color)
C783: A9 00 LDA #$00
C785: 85 F5 STA $F5 ; Insert Mode Flag
C787: 85 F3 STA $F3 ; Reverse Mode Flag
C789: 85 F4 STA $F4 ; Quote Mode Flag
C78B: 60 RTS
; Control Characters
C78C: 02 07 09 0A 0B 0C 0E 0F ; '{ULON}{BELL}{TAB}{LF}{LOCK}{UNLOCK}{LOWTEXT}{FLSHON}'
C794: 11 12 13 14 18 1D ; '{DOWN}{RVSON}{HOME}{DEL}{TABT}{RIGHT}'
; Control Character Vectors
C79A: C6 C8 .WORD $C8C7-1 ; Chr$(2) Underline On
C79C: 8D C9 .WORD $C98E-1 ; Chr$(7) Bell
C79E: 4E C9 .WORD $C94F-1 ; Chr$(9) Tab
C7A0: B0 C9 .WORD $C9B1-1 ; Chr$(10) Linefeed
C7A2: A5 C8 .WORD $C8A6-1 ; Chr$(11) Lock
C7A4: AB C8 .WORD $C8AC-1 ; Chr$(12) Unlock
C7A6: 7F C8 .WORD $C880-1 ; Chr$(14) Text Mode
C7A8: D4 C8 .WORD $C8D5-1 ; Chr$(15) Flash On
C7AA: 59 C8 .WORD $C85A-1 ; Chr$(17) Cursor Down
C7AC: C1 C8 .WORD $C8C2-1 ; Chr$(18) Reverse
C7AE: B2 C8 .WORD $C8B3-1 ; Chr$(19) Home
C7B0: 1A C9 .WORD $C91B-1 ; Chr$(20) Delete
C7B2: 60 C9 .WORD $C961-1 ; Chr$(24) Tab Toggle
C7B4: 53 C8 .WORD $C854-1 ; Chr$(29) Cursor Right
; Print Control Char
C7B6: 6C 34 03 JMP ($0334) ; Print Control Code Link [C7B9]
; Kernal Print Control Char
C7B9: C9 1B CMP #$1B
C7BB: F0 38 BEQ $C7F5
C7BD: A6 F5 LDX $F5 ; Insert Mode Flag
C7BF: D0 08 BNE $C7C9
C7C1: C9 14 CMP #$14
C7C3: F0 0B BEQ $C7D0
C7C5: A6 F4 LDX $F4 ; Quote Mode Flag
C7C7: F0 07 BEQ $C7D0
C7C9: A2 00 LDX #$00
C7CB: 86 EF STX $EF ; Current Character to Print
C7CD: 4C 26 C3 JMP $C326
C7D0: A2 0D LDX #$0D
C7D2: DD 8C C7 CMP $C78C,X ; Control Characters
C7D5: F0 1F BEQ $C7F6
C7D7: CA DEX
C7D8: 10 F8 BPL $C7D2
C7DA: A2 0F LDX #$0F
C7DC: DD 4C CE CMP $CE4C,X ; Ascii Color Codes
C7DF: F0 04 BEQ $C7E5
C7E1: CA DEX
C7E2: 10 F8 BPL $C7DC
C7E4: 60 RTS
C7E5: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
C7E7: 30 03 BMI $C7EC
C7E9: 86 F1 STX $F1 ; Curr Attribute to Print (Default FGND Color)
C7EB: 60 RTS
C7EC: A5 F1 LDA $F1 ; Curr Attribute to Print (Default FGND Color)
C7EE: 29 F0 AND #$F0
C7F0: 1D 5C CE ORA $CE5C,X ; System Color Codes
C7F3: 85 F1 STA $F1 ; Curr Attribute to Print (Default FGND Color)
C7F5: 60 RTS
C7F6: 8A TXA
C7F7: 0A ASL A
C7F8: AA TAX
C7F9: BD 9B C7 LDA $C79B,X
C7FC: 48 PHA
C7FD: BD 9A C7 LDA $C79A,X ; Control Character Vectors
C800: 48 PHA
C801: 60 RTS
; Print Hi-Bit Char
C802: 6C 36 03 JMP ($0336) ; Print High ASCII Code Link [C805]
; Kernal Print Hi-Bit Char
C805: 29 7F AND #$7F
C807: C9 20 CMP #$20
C809: 90 09 BCC $C814
C80B: C9 7F CMP #$7F
C80D: D0 02 BNE $C811
C80F: A9 5E LDA #$5E
C811: 4C 20 C3 JMP $C320 ; Ascii to Screen Code
C814: A6 F4 LDX $F4 ; Quote Mode Flag
C816: F0 05 BEQ $C81D
C818: 09 40 ORA #$40
C81A: 4C 26 C3 JMP $C326
C81D: C9 14 CMP #$14
C81F: D0 03 BNE $C824
C821: 4C E3 C8 JMP $C8E3 ; Open Screen Space
C824: A6 F5 LDX $F5 ; Insert Mode Flag
C826: D0 F0 BNE $C818
C828: C9 11 CMP #$11
C82A: F0 3B BEQ $C867 ; Chr$(145) Cursor Up
C82C: C9 1D CMP #$1D
C82E: F0 45 BEQ $C875 ; Chr$(157) Cursor Left
C830: C9 0E CMP #$0E
C832: F0 5E BEQ $C892
C834: C9 12 CMP #$12
C836: D0 03 BNE $C83B
C838: 4C BF C8 JMP $C8BF ; Chr$(146) Clear Rvs Mode
C83B: C9 02 CMP #$02
C83D: D0 03 BNE $C842
C83F: 4C CE C8 JMP $C8CE ; Chr$(130) Underline Off
C842: C9 0F CMP #$0F
C844: D0 03 BNE $C849
C846: 4C DC C8 JMP $C8DC ; Chr$(143) Flash Off
C849: C9 13 CMP #$13
C84B: D0 03 BNE $C850
C84D: 4C 42 C1 JMP $C142 ; Reset Window
C850: 09 80 ORA #$80
C852: D0 86 BNE $C7DA
; Chr$(29) Cursor Right
C854: 20 ED CB JSR $CBED ; Move Cursor Right
C857: B0 04 BCS $C85D
C859: 60 RTS
; Chr$(17) Cursor Down
C85A: 20 63 C3 JSR $C363 ; Do New Line
C85D: 20 74 CB JSR $CB74 ; Check Screen Line of Location
C860: B0 03 BCS $C865
C862: 38 SEC
C863: 66 E8 ROR $E8 ; Current Input Column Start
C865: 18 CLC
C866: 60 RTS
; Chr$(145) Cursor Up
C867: A6 E5 LDX $E5 ; Window Upper Limit
C869: E4 EB CPX $EB ; Current Cursor Line
C86B: B0 F9 BCS $C866
C86D: 20 5D C8 JSR $C85D
C870: C6 EB DEC $EB ; Current Cursor Line
C872: 4C 5C C1 JMP $C15C ; Set Up New Line
; Chr$(157) Cursor Left
C875: 20 00 CC JSR $CC00 ; Move Cursor Left
C878: B0 EC BCS $C866
C87A: D0 E9 BNE $C865
C87C: E6 EB INC $EB ; Current Cursor Line
C87E: D0 ED BNE $C86D
; Chr$(14) Text Mode
C880: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
C882: 30 07 BMI $C88B
C884: AD 2C 0A LDA $0A2C ; VIC Text Mode Video Matrix & Character Base Pointer. ($d018)
C887: 09 02 ORA #$02
C889: D0 10 BNE $C89B
C88B: A5 F1 LDA $F1 ; Curr Attribute to Print (Default FGND Color)
C88D: 09 80 ORA #$80
C88F: 85 F1 STA $F1 ; Curr Attribute to Print (Default FGND Color)
C891: 60 RTS
C892: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
C894: 30 09 BMI $C89F
C896: AD 2C 0A LDA $0A2C ; VIC Text Mode Video Matrix & Character Base Pointer. ($d018)
C899: 29 FD AND #$FD
C89B: 8D 2C 0A STA $0A2C ; VIC Text Mode Video Matrix & Character Base Pointer. ($d018)
C89E: 60 RTS
C89F: A5 F1 LDA $F1 ; Curr Attribute to Print (Default FGND Color)
C8A1: 29 7F AND #$7F
C8A3: 85 F1 STA $F1 ; Curr Attribute to Print (Default FGND Color)
C8A5: 60 RTS
; Chr$(11) Lock
C8A6: A9 80 LDA #$80
C8A8: 05 F7 ORA $F7
C8AA: 30 04 BMI $C8B0
; Chr$(12) Unlock
C8AC: A9 7F LDA #$7F
C8AE: 25 F7 AND $F7
C8B0: 85 F7 STA $F7
C8B2: 60 RTS
; Chr$(19) Home
C8B3: A5 F0 LDA $F0 ; Previous character printed (For <ESC> Test)
C8B5: C9 13 CMP #$13
C8B7: D0 03 BNE $C8BC
C8B9: 20 24 CA JSR $CA24 ; Exit Window
C8BC: 4C 50 C1 JMP $C150 ; Home Cursor
; Chr$(146) Clear Rvs Mode
C8BF: A9 00 LDA #$00
C8C1: 2C .BYTE $2C
; Chr$(18) Reverse
C8C2: A9 80 LDA #$80
C8C4: 85 F3 STA $F3 ; Reverse Mode Flag
C8C6: 60 RTS
; Chr$(2) Underline On
C8C7: A5 F1 LDA $F1 ; Curr Attribute to Print (Default FGND Color)
C8C9: 09 20 ORA #$20
C8CB: 85 F1 STA $F1 ; Curr Attribute to Print (Default FGND Color)
C8CD: 60 RTS
; Chr$(130) Underline Off
C8CE: A5 F1 LDA $F1 ; Curr Attribute to Print (Default FGND Color)
C8D0: 29 DF AND #$DF
C8D2: 85 F1 STA $F1 ; Curr Attribute to Print (Default FGND Color)
C8D4: 60 RTS
; Chr$(15) Flash On
C8D5: A5 F1 LDA $F1 ; Curr Attribute to Print (Default FGND Color)
C8D7: 09 10 ORA #$10
C8D9: 85 F1 STA $F1 ; Curr Attribute to Print (Default FGND Color)
C8DB: 60 RTS
; Chr$(143) Flash Off
C8DC: A5 F1 LDA $F1 ; Curr Attribute to Print (Default FGND Color)
C8DE: 29 EF AND #$EF
C8E0: 85 F1 STA $F1 ; Curr Attribute to Print (Default FGND Color)
C8E2: 60 RTS
; Open Screen Space
C8E3: 20 1E CC JSR $CC1E ; Save Cursor
C8E6: 20 C3 CB JSR $CBC3 ; Find End-of-Line
C8E9: E4 DF CPX $DF
C8EB: D0 02 BNE $C8EF
C8ED: C4 DE CPY $DE
C8EF: 90 21 BCC $C912
C8F1: 20 3E C3 JSR $C33E ; Check Cursor Range
C8F4: B0 22 BCS $C918
C8F6: 20 00 CC JSR $CC00 ; Move Cursor Left
C8F9: 20 58 CB JSR $CB58 ; Get Screen Char/Color
C8FC: 20 ED CB JSR $CBED ; Move Cursor Right
C8FF: 20 32 CC JSR $CC32 ; Print Fill Color
C902: 20 00 CC JSR $CC00 ; Move Cursor Left
C905: A6 EB LDX $EB ; Current Cursor Line
C907: E4 DF CPX $DF
C909: D0 EB BNE $C8F6
C90B: C4 DE CPY $DE
C90D: D0 E7 BNE $C8F6
C90F: 20 27 CC JSR $CC27 ; Print Space
C912: E6 F5 INC $F5 ; Insert Mode Flag
C914: D0 02 BNE $C918
C916: C6 F5 DEC $F5 ; Insert Mode Flag
C918: 4C 32 C9 JMP $C932 ; Restore Cursor
; Chr$(20) Delete
C91B: 20 75 C8 JSR $C875 ; Chr$(157) Cursor Left
C91E: 20 1E CC JSR $CC1E ; Save Cursor
C921: B0 0F BCS $C932 ; Restore Cursor
C923: C4 E7 CPY $E7 ; Window Right Margin
C925: 90 16 BCC $C93D
C927: A6 EB LDX $EB ; Current Cursor Line
C929: E8 INX
C92A: 20 76 CB JSR $CB76
C92D: B0 0E BCS $C93D
C92F: 20 27 CC JSR $CC27 ; Print Space
; Restore Cursor
C932: A5 DE LDA $DE
C934: 85 EC STA $EC ; Current Cursor Column
C936: A5 DF LDA $DF
C938: 85 EB STA $EB ; Current Cursor Line
C93A: 4C 5C C1 JMP $C15C ; Set Up New Line
C93D: 20 ED CB JSR $CBED ; Move Cursor Right
C940: 20 58 CB JSR $CB58 ; Get Screen Char/Color
C943: 20 00 CC JSR $CC00 ; Move Cursor Left
C946: 20 32 CC JSR $CC32 ; Print Fill Color
C949: 20 ED CB JSR $CBED ; Move Cursor Right
C94C: 4C 23 C9 JMP $C923
; Chr$(9) Tab
C94F: A4 EC LDY $EC ; Current Cursor Column
C951: C8 INY
C952: C4 E7 CPY $E7 ; Window Right Margin
C954: B0 06 BCS $C95C
C956: 20 6C C9 JSR $C96C ; Find Tab Column
C959: F0 F6 BEQ $C951
C95B: 2C .BYTE $2C
C95C: A4 E7 LDY $E7 ; Window Right Margin
C95E: 84 EC STY $EC ; Current Cursor Column
C960: 60 RTS
; Chr$(24) Tab Toggle
C961: A4 EC LDY $EC ; Current Cursor Column
C963: 20 6C C9 JSR $C96C ; Find Tab Column
C966: 45 DA EOR $DA
C968: 9D 54 03 STA $0354,X
C96B: 60 RTS
; Find Tab Column
C96C: 98 TYA
C96D: 29 07 AND #$07
C96F: AA TAX
C970: BD 6C CE LDA $CE6C,X ; Bit Masks
C973: 85 DA STA $DA
C975: 98 TYA
C976: 4A LSR A
C977: 4A LSR A
C978: 4A LSR A
C979: AA TAX
C97A: BD 54 03 LDA $0354,X
C97D: 24 DA BIT $DA
C97F: 60 RTS
; Esc-z Clear All Tabs
C980: A9 00 LDA #$00
C982: 2C .BYTE $2C
; Esc-y Set Default Tabs
C983: A9 80 LDA #$80
C985: A2 09 LDX #$09
C987: 9D 54 03 STA $0354,X
C98A: CA DEX
C98B: 10 FA BPL $C987
C98D: 60 RTS
; Chr$(7) Bell
C98E: 24 F9 BIT $F9 ; Bell (CTRL-G): 0= enable, 128 = disable
C990: 30 FB BMI $C98D
C992: A9 15 LDA #$15
C994: 8D 18 D4 STA $D418
C997: A0 09 LDY #$09
C999: A2 00 LDX #$00
C99B: 8C 05 D4 STY $D405
C99E: 8E 06 D4 STX $D406
C9A1: A9 30 LDA #$30
C9A3: 8D 01 D4 STA $D401
C9A6: A9 20 LDA #$20
C9A8: 8D 04 D4 STA $D404
C9AB: A9 21 LDA #$21
C9AD: 8D 04 D4 STA $D404
C9B0: 60 RTS
; Chr$(10) Linefeed
C9B1: A5 EC LDA $EC ; Current Cursor Column
C9B3: 48 PHA
C9B4: 20 C3 CB JSR $CBC3 ; Find End-of-Line
C9B7: 20 63 C3 JSR $C363 ; Do New Line
C9BA: 68 PLA
C9BB: 85 EC STA $EC ; Current Cursor Column
C9BD: 60 RTS
; Analyze Esc Sequence
C9BE: 6C 38 03 JMP ($0338) ; Print ESC Sequence Link [C9C1]
; Kernal Analyze Esc Sequence
C9C1: C9 1B CMP #$1B
C9C3: D0 05 BNE $C9CA
C9C5: 46 EF LSR $EF ; Current Character to Print
C9C7: 4C 7D C7 JMP $C77D ; Esc-o (escape)
C9CA: 29 7F AND #$7F
C9CC: 38 SEC
C9CD: E9 40 SBC #$40
C9CF: C9 1B CMP #$1B
C9D1: B0 0A BCS $C9DD
C9D3: 0A ASL A
C9D4: AA TAX
C9D5: BD DF C9 LDA $C9DF,X
C9D8: 48 PHA
C9D9: BD DE C9 LDA $C9DE,X ; Esc Sequence Vectors
C9DC: 48 PHA
C9DD: 60 RTS
; Esc Sequence Vectors
C9DE: 9E CA .WORD $CA9F-1 ; Esc-@ Clear Remainder of Screen
C9E0: EC CA .WORD $CAED-1 ; Esc-a Auto Insert
C9E2: 15 CA .WORD $CA16-1 ; Esc-b Bottom
C9E4: E9 CA .WORD $CAEA-1 ; Esc-c Cancel Auto Insert
C9E6: 51 CA .WORD $CA52-1 ; Esc-d Delete Line
C9E8: 0A CB .WORD $CB0B-1 ; Esc-e Cursor Non Flash
C9EA: 20 CB .WORD $CB21-1 ; Esc-f Cursor Flash
C9EC: 36 CB .WORD $CB37-1 ; Esc-g Bell Enable
C9EE: 39 CB .WORD $CB3A-1 ; Esc-h Bell Disable
C9F0: 3C CA .WORD $CA3D-1 ; Esc-i Insert Line
C9F2: B0 CB .WORD $CBB1-1 ; Esc-j Start-of-Line
C9F4: 51 CB .WORD $CB52-1 ; Esc-k End-of-Line
C9F6: E1 CA .WORD $CAE2-1 ; Esc-l Scroll On
C9F8: E4 CA .WORD $CAE5-1 ; Esc-m Scroll Off
C9FA: 47 CB .WORD $CB48-1 ; Esc-n Screen Normal
C9FC: 7C C7 .WORD $C77D-1 ; Esc-o (escape)
C9FE: 8A CA .WORD $CA8B-1 ; Esc-p Erase Begin
CA00: 75 CA .WORD $CA76-1 ; Esc-q Erase End
CA02: 3E CB .WORD $CB3F-1 ; Esc-r Screen Reverse
CA04: F1 CA .WORD $CAF2-1 ; Esc-s Block Cursor
CA06: 13 CA .WORD $CA14-1 ; Esc-t Top
CA08: FD CA .WORD $CAFE-1 ; Esc-u Underline Cursor
CA0A: BB CA .WORD $CABC-1 ; Esc-v Scroll Up
CA0C: C9 CA .WORD $CACA-1 ; Esc-w Scroll Down
CA0E: 2B CD .WORD $CD2C-1 ; Esc-x Switch 40/80 Col
CA10: 82 C9 .WORD $C983-1 ; Esc-y Set Default Tabs
CA12: 7F C9 .WORD $C980-1 ; Esc-z Clear All Tabs
; Esc-t Top
CA14: 18 CLC
CA15: 24 .BYTE $24
; Esc-b Bottom
CA16: 38 SEC
CA17: A6 EC LDX $EC ; Current Cursor Column
CA19: A5 EB LDA $EB ; Current Cursor Line
; Set Window Part
CA1B: 90 11 BCC $CA2E
CA1D: 85 E4 STA $E4 ; Window Lower Limit
CA1F: 86 E7 STX $E7 ; Window Right Margin
CA21: 4C 32 CA JMP $CA32
; Exit Window
CA24: A5 ED LDA $ED ; Maximum Number of Screen Lines
CA26: A6 EE LDX $EE ; Maximum Number of Screen Columns
CA28: 20 1D CA JSR $CA1D
CA2B: A9 00 LDA #$00
CA2D: AA TAX
CA2E: 85 E5 STA $E5 ; Window Upper Limit
CA30: 86 E6 STX $E6 ; Window Left Margin
CA32: A9 00 LDA #$00
CA34: A2 04 LDX #$04
CA36: 9D 5D 03 STA $035D,X
CA39: CA DEX
CA3A: D0 FA BNE $CA36
CA3C: 60 RTS
; Esc-i Insert Line
CA3D: 20 7C C3 JSR $C37C ; Insert a Line
CA40: 20 56 C1 JSR $C156 ; Goto Left Border
CA43: E8 INX
CA44: 20 76 CB JSR $CB76
CA47: 08 PHP
CA48: 20 81 CB JSR $CB81 ; Extend/Trim Screen Line
CA4B: 28 PLP
CA4C: B0 03 BCS $CA51
CA4E: 38 SEC
CA4F: 66 E8 ROR $E8 ; Current Input Column Start
CA51: 60 RTS
; Esc-d Delete Line
CA52: 20 B5 CB JSR $CBB5
CA55: A5 E5 LDA $E5 ; Window Upper Limit
CA57: 48 PHA
CA58: A5 EB LDA $EB ; Current Cursor Line
CA5A: 85 E5 STA $E5 ; Window Upper Limit
CA5C: A5 F8 LDA $F8
CA5E: 48 PHA
CA5F: A9 80 LDA #$80
CA61: 85 F8 STA $F8
CA63: 20 B8 C3 JSR $C3B8
CA66: 68 PLA
CA67: 85 F8 STA $F8
CA69: A5 E5 LDA $E5 ; Window Upper Limit
CA6B: 85 EB STA $EB ; Current Cursor Line
CA6D: 68 PLA
CA6E: 85 E5 STA $E5 ; Window Upper Limit
CA70: 38 SEC
CA71: 66 E8 ROR $E8 ; Current Input Column Start
CA73: 4C 56 C1 JMP $C156 ; Goto Left Border
; Esc-q Erase End
CA76: 20 1E CC JSR $CC1E ; Save Cursor
CA79: 20 AA C4 JSR $C4AA
CA7C: E6 EB INC $EB ; Current Cursor Line
CA7E: 20 5C C1 JSR $C15C ; Set Up New Line
CA81: A4 E6 LDY $E6 ; Window Left Margin
CA83: 20 74 CB JSR $CB74 ; Check Screen Line of Location
CA86: B0 F1 BCS $CA79
CA88: 4C 32 C9 JMP $C932 ; Restore Cursor
; Esc-p Erase Begin
CA8B: 20 1E CC JSR $CC1E ; Save Cursor
CA8E: 20 27 CC JSR $CC27 ; Print Space
CA91: C4 E6 CPY $E6 ; Window Left Margin
CA93: D0 05 BNE $CA9A
CA95: 20 74 CB JSR $CB74 ; Check Screen Line of Location
CA98: 90 EE BCC $CA88
CA9A: 20 00 CC JSR $CC00 ; Move Cursor Left
CA9D: 90 EF BCC $CA8E
; Esc-@ Clear Remainder of Screen
CA9F: 20 1E CC JSR $CC1E ; Save Cursor
CAA2: 20 AA C4 JSR $C4AA
CAA5: E6 EB INC $EB ; Current Cursor Line
CAA7: 20 5C C1 JSR $C15C ; Set Up New Line
CAAA: A4 E6 LDY $E6 ; Window Left Margin
CAAC: 20 74 CB JSR $CB74 ; Check Screen Line of Location
CAAF: B0 F1 BCS $CAA2
CAB1: A5 EB LDA $EB ; Current Cursor Line
CAB3: C5 E4 CMP $E4 ; Window Lower Limit
CAB5: 90 EB BCC $CAA2
CAB7: F0 E9 BEQ $CAA2
CAB9: 4C 32 C9 JMP $C932 ; Restore Cursor
; Esc-v Scroll Up
CABC: 20 1E CC JSR $CC1E ; Save Cursor
CABF: 8A TXA
CAC0: 48 PHA
CAC1: 20 A6 C3 JSR $C3A6 ; Scroll Screen
CAC4: 68 PLA
CAC5: 85 DF STA $DF
CAC7: 4C 32 C9 JMP $C932 ; Restore Cursor
; Esc-w Scroll Down
CACA: 20 1E CC JSR $CC1E ; Save Cursor
CACD: 20 74 CB JSR $CB74 ; Check Screen Line of Location
CAD0: B0 03 BCS $CAD5
CAD2: 38 SEC
CAD3: 66 E8 ROR $E8 ; Current Input Column Start
CAD5: A5 E5 LDA $E5 ; Window Upper Limit
CAD7: 85 EB STA $EB ; Current Cursor Line
CAD9: 20 7C C3 JSR $C37C ; Insert a Line
CADC: 20 85 CB JSR $CB85
CADF: 4C 32 C9 JMP $C932 ; Restore Cursor
; Esc-l Scroll On
CAE2: A9 00 LDA #$00
CAE4: 2C .BYTE $2C
; Esc-m Scroll Off
CAE5: A9 80 LDA #$80
CAE7: 85 F8 STA $F8
CAE9: 60 RTS
; Esc-c Cancel Auto Insert
CAEA: A9 00 LDA #$00
CAEC: 2C .BYTE $2C
; Esc-a Auto Insert
CAED: A9 FF LDA #$FF
CAEF: 85 F6 STA $F6 ; Auto-Insert Mode Flag
CAF1: 60 RTS
; Esc-s Block Cursor
CAF2: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
CAF4: 10 40 BPL $CB36
CAF6: AD 2B 0A LDA $0A2B ; VDC Cursor Mode (when enabled)
CAF9: 29 E0 AND #$E0
CAFB: 4C 14 CB JMP $CB14
; Esc-u Underline Cursor
CAFE: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
CB00: 10 34 BPL $CB36
CB02: AD 2B 0A LDA $0A2B ; VDC Cursor Mode (when enabled)
CB05: 29 E0 AND #$E0
CB07: 09 07 ORA #$07
CB09: D0 09 BNE $CB14
; Esc-e Cursor Non Flash
CB0B: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
CB0D: 10 0B BPL $CB1A
CB0F: AD 2B 0A LDA $0A2B ; VDC Cursor Mode (when enabled)
CB12: 29 1F AND #$1F
CB14: 8D 2B 0A STA $0A2B ; VDC Cursor Mode (when enabled)
CB17: 4C 91 CD JMP $CD91
CB1A: AD 26 0A LDA $0A26 ; VIC Cursor Mode (Blinking, Solid)
CB1D: 09 40 ORA #$40
CB1F: D0 12 BNE $CB33
; Esc-f Cursor Flash
CB21: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
CB23: 10 09 BPL $CB2E
CB25: AD 2B 0A LDA $0A2B ; VDC Cursor Mode (when enabled)
CB28: 29 1F AND #$1F
CB2A: 09 60 ORA #$60
CB2C: D0 E6 BNE $CB14
CB2E: AD 26 0A LDA $0A26 ; VIC Cursor Mode (Blinking, Solid)
CB31: 29 BF AND #$BF
CB33: 8D 26 0A STA $0A26 ; VIC Cursor Mode (Blinking, Solid)
CB36: 60 RTS
; Esc-g Bell Enable
CB37: A9 00 LDA #$00
CB39: 2C .BYTE $2C
; Esc-h Bell Disable
CB3A: A9 80 LDA #$80
CB3C: 85 F9 STA $F9 ; Bell (CTRL-G): 0= enable, 128 = disable
CB3E: 60 RTS
; Esc-r Screen Reverse
CB3F: A2 18 LDX #$18
CB41: 20 DA CD JSR $CDDA ; Read CRTC Register
CB44: 09 40 ORA #$40
CB46: D0 07 BNE $CB4F
; Esc-n Screen Normal
CB48: A2 18 LDX #$18
CB4A: 20 DA CD JSR $CDDA ; Read CRTC Register
CB4D: 29 BF AND #$BF
CB4F: 4C CC CD JMP $CDCC ; Set CRTC Register
; Esc-k End-of-Line
CB52: 20 C3 CB JSR $CBC3 ; Find End-of-Line
CB55: 4C 3E C3 JMP $C33E ; Check Cursor Range
; Get Screen Char/Color
CB58: A4 EC LDY $EC ; Current Cursor Column
CB5A: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
CB5C: 30 07 BMI $CB65
CB5E: B1 E2 LDA ($E2),Y ; Pointer to Current Line (Attribute)
CB60: 85 F2 STA $F2
CB62: B1 E0 LDA ($E0),Y ; Pointer to Current Line (Text)
CB64: 60 RTS
CB65: 20 F9 CD JSR $CDF9 ; Set CRTC to Color Address
CB68: 20 D8 CD JSR $CDD8 ; Read CRTC Register 31
CB6B: 85 F2 STA $F2
CB6D: 20 E6 CD JSR $CDE6 ; Set CRTC to Screen Address
CB70: 20 D8 CD JSR $CDD8 ; Read CRTC Register 31
CB73: 60 RTS
; Check Screen Line of Location
CB74: A6 EB LDX $EB ; Current Cursor Line
CB76: 20 9F CB JSR $CB9F ; Set Up Line Masks
CB79: 3D 5E 03 AND $035E,X
CB7C: C9 01 CMP #$01
CB7E: 4C 90 CB JMP $CB90
; Extend/Trim Screen Line
CB81: A6 EB LDX $EB ; Current Cursor Line
CB83: B0 0E BCS $CB93
CB85: 20 9F CB JSR $CB9F ; Set Up Line Masks
CB88: 49 FF EOR #$FF
CB8A: 3D 5E 03 AND $035E,X
CB8D: 9D 5E 03 STA $035E,X
CB90: A6 DA LDX $DA
CB92: 60 RTS
CB93: 24 F8 BIT $F8
CB95: 70 DF BVS $CB76
CB97: 20 9F CB JSR $CB9F ; Set Up Line Masks
CB9A: 1D 5E 03 ORA $035E,X
CB9D: D0 EE BNE $CB8D
; Set Up Line Masks
CB9F: 86 DA STX $DA
CBA1: 8A TXA
CBA2: 29 07 AND #$07
CBA4: AA TAX
CBA5: BD 6C CE LDA $CE6C,X ; Bit Masks
CBA8: 48 PHA
CBA9: A5 DA LDA $DA
CBAB: 4A LSR A
CBAC: 4A LSR A
CBAD: 4A LSR A
CBAE: AA TAX
CBAF: 68 PLA
CBB0: 60 RTS
; Esc-j Start-of-Line
CBB1: A4 E6 LDY $E6 ; Window Left Margin
CBB3: 84 EC STY $EC ; Current Cursor Column
CBB5: 20 74 CB JSR $CB74 ; Check Screen Line of Location
CBB8: 90 06 BCC $CBC0
CBBA: C6 EB DEC $EB ; Current Cursor Line
CBBC: 10 F7 BPL $CBB5
CBBE: E6 EB INC $EB ; Current Cursor Line
CBC0: 4C 5C C1 JMP $C15C ; Set Up New Line
; Find End-of-Line
CBC3: E6 EB INC $EB ; Current Cursor Line
CBC5: 20 74 CB JSR $CB74 ; Check Screen Line of Location
CBC8: B0 F9 BCS $CBC3 ; Find End-of-Line
CBCA: C6 EB DEC $EB ; Current Cursor Line
CBCC: 20 5C C1 JSR $C15C ; Set Up New Line
CBCF: A4 E7 LDY $E7 ; Window Right Margin
CBD1: 84 EC STY $EC ; Current Cursor Column
CBD3: 20 58 CB JSR $CB58 ; Get Screen Char/Color
CBD6: A6 EB LDX $EB ; Current Cursor Line
CBD8: C9 20 CMP #$20
CBDA: D0 0E BNE $CBEA
CBDC: C4 E6 CPY $E6 ; Window Left Margin
CBDE: D0 05 BNE $CBE5
CBE0: 20 74 CB JSR $CB74 ; Check Screen Line of Location
CBE3: 90 05 BCC $CBEA
CBE5: 20 00 CC JSR $CC00 ; Move Cursor Left
CBE8: 90 E9 BCC $CBD3
CBEA: 84 EA STY $EA ; Current Input Line End
CBEC: 60 RTS
; Move Cursor Right
CBED: 48 PHA
CBEE: A4 EC LDY $EC ; Current Cursor Column
CBF0: C4 E7 CPY $E7 ; Window Right Margin
CBF2: 90 07 BCC $CBFB
CBF4: 20 63 C3 JSR $C363 ; Do New Line
CBF7: A4 E6 LDY $E6 ; Window Left Margin
CBF9: 88 DEY
CBFA: 38 SEC
CBFB: C8 INY
CBFC: 84 EC STY $EC ; Current Cursor Column
CBFE: 68 PLA
CBFF: 60 RTS
; Move Cursor Left
CC00: A4 EC LDY $EC ; Current Cursor Column
CC02: 88 DEY
CC03: 30 04 BMI $CC09
CC05: C4 E6 CPY $E6 ; Window Left Margin
CC07: B0 0F BCS $CC18
CC09: A4 E5 LDY $E5 ; Window Upper Limit
CC0B: C4 EB CPY $EB ; Current Cursor Line
CC0D: B0 0E BCS $CC1D
CC0F: C6 EB DEC $EB ; Current Cursor Line
CC11: 48 PHA
CC12: 20 5C C1 JSR $C15C ; Set Up New Line
CC15: 68 PLA
CC16: A4 E7 LDY $E7 ; Window Right Margin
CC18: 84 EC STY $EC ; Current Cursor Column
CC1A: C4 E7 CPY $E7 ; Window Right Margin
CC1C: 18 CLC
CC1D: 60 RTS
; Save Cursor
CC1E: A4 EC LDY $EC ; Current Cursor Column
CC20: 84 DE STY $DE
CC22: A6 EB LDX $EB ; Current Cursor Line
CC24: 86 DF STX $DF
CC26: 60 RTS
; Print Space
CC27: A5 F1 LDA $F1 ; Curr Attribute to Print (Default FGND Color)
CC29: 29 8F AND #$8F
CC2B: AA TAX
CC2C: A9 20 LDA #$20
CC2E: 2C .BYTE $2C
; Print Character
CC2F: A6 F1 LDX $F1 ; Curr Attribute to Print (Default FGND Color)
CC31: 2C .BYTE $2C
; Print Fill Color
CC32: A6 F2 LDX $F2
; Put Char to Screen
CC34: A8 TAY
CC35: A9 02 LDA #$02
CC37: 8D 28 0A STA $0A28 ; VIC Cursor Blink Counter
CC3A: 20 7C C1 JSR $C17C ; Do Screen Color
CC3D: 98 TYA
CC3E: A4 EC LDY $EC ; Current Cursor Column
CC40: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
CC42: 30 06 BMI $CC4A
CC44: 91 E0 STA ($E0),Y ; Pointer to Current Line (Text)
CC46: 8A TXA
CC47: 91 E2 STA ($E2),Y ; Pointer to Current Line (Attribute)
CC49: 60 RTS
CC4A: 48 PHA
CC4B: 8A TXA
CC4C: 48 PHA
CC4D: 20 F9 CD JSR $CDF9 ; Set CRTC to Color Address
CC50: 68 PLA
CC51: 20 CA CD JSR $CDCA ; Set CRTC Register 31
CC54: 20 E6 CD JSR $CDE6 ; Set CRTC to Screen Address
CC57: 68 PLA
CC58: 4C CA CD JMP $CDCA ; Set CRTC Register 31
; Get Rows/Columns
CC5B: 38 SEC
CC5C: A5 E4 LDA $E4 ; Window Lower Limit
CC5E: E5 E5 SBC $E5 ; Window Upper Limit
CC60: A8 TAY
CC61: 38 SEC
CC62: A5 E7 LDA $E7 ; Window Right Margin
CC64: E5 E6 SBC $E6 ; Window Left Margin
CC66: AA TAX
CC67: A5 EE LDA $EE ; Maximum Number of Screen Columns
CC69: 60 RTS
; Read/Set Cursor
CC6A: B0 29 BCS $CC95
CC6C: 8A TXA
CC6D: 65 E5 ADC $E5 ; Window Upper Limit
CC6F: B0 14 BCS $CC85
CC71: C5 E4 CMP $E4 ; Window Lower Limit
CC73: F0 02 BEQ $CC77
CC75: B0 0E BCS $CC85
CC77: 48 PHA
CC78: 18 CLC
CC79: 98 TYA
CC7A: 65 E6 ADC $E6 ; Window Left Margin
CC7C: B0 06 BCS $CC84
CC7E: C5 E7 CMP $E7 ; Window Right Margin
CC80: F0 04 BEQ $CC86
CC82: 90 02 BCC $CC86
CC84: 68 PLA
CC85: 60 RTS
CC86: 85 EC STA $EC ; Current Cursor Column
CC88: 85 E9 STA $E9 ; Current Input Line Start
CC8A: 68 PLA
CC8B: 85 EB STA $EB ; Current Cursor Line
CC8D: 85 E8 STA $E8 ; Current Input Column Start
CC8F: 20 5C C1 JSR $C15C ; Set Up New Line
CC92: 20 57 CD JSR $CD57 ; Position 80-col Cursor
CC95: A5 EB LDA $EB ; Current Cursor Line
CC97: E5 E5 SBC $E5 ; Window Upper Limit
CC99: AA TAX
CC9A: 38 SEC
CC9B: A5 EC LDA $EC ; Current Cursor Column
CC9D: E5 E6 SBC $E6 ; Window Left Margin
CC9F: A8 TAY
CCA0: 18 CLC
CCA1: 60 RTS
; Define Function Key
CCA2: CA DEX
CCA3: 86 DC STX $DC
CCA5: 84 DA STY $DA
CCA7: 8D AA 02 STA $02AA
CCAA: A8 TAY
CCAB: B6 02 LDX $02,Y ; Bank Number, Jump to SYS Address
CCAD: 20 6B FF JSR $FF6B ; setcfg
CCB0: 85 DE STA $DE
CCB2: A2 0A LDX #$0A
CCB4: 20 20 CD JSR $CD20
CCB7: 85 DB STA $DB
CCB9: A6 DC LDX $DC
CCBB: E8 INX
CCBC: 20 20 CD JSR $CD20
CCBF: 85 DD STA $DD
CCC1: A6 DC LDX $DC
CCC3: A5 DA LDA $DA
CCC5: 38 SEC
CCC6: FD 00 10 SBC $1000,X
CCC9: F0 2B BEQ $CCF6
CCCB: 90 16 BCC $CCE3
CCCD: 18 CLC
CCCE: 65 DB ADC $DB
CCD0: B0 4D BCS $CD1F
CCD2: AA TAX
CCD3: A4 DB LDY $DB
CCD5: C4 DD CPY $DD
CCD7: F0 1D BEQ $CCF6
CCD9: 88 DEY
CCDA: CA DEX
CCDB: B9 0A 10 LDA $100A,Y
CCDE: 9D 0A 10 STA $100A,X
CCE1: B0 F2 BCS $CCD5
CCE3: 65 DD ADC $DD
CCE5: AA TAX
CCE6: A4 DD LDY $DD
CCE8: C4 DB CPY $DB
CCEA: B0 0A BCS $CCF6
CCEC: B9 0A 10 LDA $100A,Y
CCEF: 9D 0A 10 STA $100A,X
CCF2: C8 INY
CCF3: E8 INX
CCF4: 90 F2 BCC $CCE8
CCF6: A6 DC LDX $DC
CCF8: 20 20 CD JSR $CD20
CCFB: AA TAX
CCFC: A4 DC LDY $DC
CCFE: A5 DA LDA $DA
CD00: 99 00 10 STA $1000,Y
CD03: A0 00 LDY #$00
CD05: C6 DA DEC $DA
CD07: 30 15 BMI $CD1E
CD09: 86 DF STX $DF
CD0B: A6 DE LDX $DE
CD0D: AD AA 02 LDA $02AA
CD10: 78 SEI
CD11: 20 A2 02 JSR $02A2 ; Bank Peek Subroutine
CD14: 58 CLI
CD15: A6 DF LDX $DF
CD17: 9D 0A 10 STA $100A,X
CD1A: E8 INX
CD1B: C8 INY
CD1C: D0 E7 BNE $CD05
CD1E: 18 CLC
CD1F: 60 RTS
CD20: A9 00 LDA #$00
CD22: 18 CLC
CD23: CA DEX
CD24: 30 05 BMI $CD2B
CD26: 7D 00 10 ADC $1000,X
CD29: 90 F8 BCC $CD23
CD2B: 60 RTS
; Esc-x Switch 40/80 Col
CD2C: 85 F0 STA $F0 ; Previous character printed (For <ESC> Test)
; Switch 40/80 Col
CD2E: A2 1A LDX #$1A
CD30: BC 40 0A LDY $0A40,X
CD33: B5 E0 LDA $E0,X ; Pointer to Current Line (Text)
CD35: 9D 40 0A STA $0A40,X
CD38: 98 TYA
CD39: 95 E0 STA $E0,X ; Pointer to Current Line (Text)
CD3B: CA DEX
CD3C: 10 F2 BPL $CD30
CD3E: A2 0D LDX #$0D
CD40: BC 60 0A LDY $0A60,X
CD43: BD 54 03 LDA $0354,X
CD46: 9D 60 0A STA $0A60,X
CD49: 98 TYA
CD4A: 9D 54 03 STA $0354,X
CD4D: CA DEX
CD4E: 10 F0 BPL $CD40
CD50: A5 D7 LDA $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
CD52: 49 80 EOR #$80
CD54: 85 D7 STA $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
CD56: 60 RTS
; Position 80-col Cursor
CD57: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
CD59: 10 FB BPL $CD56
CD5B: A2 0E LDX #$0E
CD5D: 18 CLC
CD5E: A5 E0 LDA $E0 ; Pointer to Current Line (Text)
CD60: 65 EC ADC $EC ; Current Cursor Column
CD62: 48 PHA
CD63: A5 E1 LDA $E1 ; Pointer to Current Line high (Text)
CD65: 69 00 ADC #$00
CD67: 20 CC CD JSR $CDCC ; Set CRTC Register
CD6A: E8 INX
CD6B: 68 PLA
CD6C: 4C CC CD JMP $CDCC ; Set CRTC Register
; Set Screen Color
CD6F: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
CD71: 10 26 BPL $CD99
CD73: 20 7C C1 JSR $C17C ; Do Screen Color
CD76: A4 EC LDY $EC ; Current Cursor Column
CD78: 20 F9 CD JSR $CDF9 ; Set CRTC to Color Address
CD7B: 20 D8 CD JSR $CDD8 ; Read CRTC Register 31
CD7E: 8D 33 0A STA $0A33 ; VDC Cursor Color Before Blink
CD81: 29 F0 AND #$F0
CD83: 85 DB STA $DB
CD85: 20 F9 CD JSR $CDF9 ; Set CRTC to Color Address
CD88: A5 F1 LDA $F1 ; Curr Attribute to Print (Default FGND Color)
CD8A: 29 0F AND #$0F
CD8C: 05 DB ORA $DB
CD8E: 20 CA CD JSR $CDCA ; Set CRTC Register 31
CD91: A2 0A LDX #$0A
CD93: AD 2B 0A LDA $0A2B ; VDC Cursor Mode (when enabled)
CD96: 4C CC CD JMP $CDCC ; Set CRTC Register
CD99: A9 00 LDA #$00
CD9B: 8D 27 0A STA $0A27 ; VIC Cursor Disable
CD9E: 60 RTS
; Turn Cursor On
CD9F: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
CDA1: 10 10 BPL $CDB3
CDA3: 20 F9 CD JSR $CDF9 ; Set CRTC to Color Address
CDA6: AD 33 0A LDA $0A33 ; VDC Cursor Color Before Blink
CDA9: 20 CA CD JSR $CDCA ; Set CRTC Register 31
CDAC: A2 0A LDX #$0A
CDAE: A9 20 LDA #$20
CDB0: 4C CC CD JMP $CDCC ; Set CRTC Register
CDB3: 8D 27 0A STA $0A27 ; VIC Cursor Disable
CDB6: AD 26 0A LDA $0A26 ; VIC Cursor Mode (Blinking, Solid)
CDB9: 10 0E BPL $CDC9
CDBB: 29 40 AND #$40
CDBD: 8D 26 0A STA $0A26 ; VIC Cursor Mode (Blinking, Solid)
CDC0: AD 29 0A LDA $0A29 ; VIC Cursor Character Before Blink
CDC3: AE 2A 0A LDX $0A2A ; VIC Cursor Color Before Blink
CDC6: 20 34 CC JSR $CC34 ; Put Char to Screen
CDC9: 60 RTS
; Set CRTC Register 31
CDCA: A2 1F LDX #$1F
; Set CRTC Register
CDCC: 8E 00 D6 STX $D600
CDCF: 2C 00 D6 BIT $D600
CDD2: 10 FB BPL $CDCF
CDD4: 8D 01 D6 STA $D601
CDD7: 60 RTS
; Read CRTC Register 31
CDD8: A2 1F LDX #$1F
; Read CRTC Register
CDDA: 8E 00 D6 STX $D600
CDDD: 2C 00 D6 BIT $D600
CDE0: 10 FB BPL $CDDD
CDE2: AD 01 D6 LDA $D601
CDE5: 60 RTS
; Set CRTC to Screen Address
CDE6: A2 12 LDX #$12
CDE8: 18 CLC
CDE9: 98 TYA
CDEA: 65 E0 ADC $E0 ; Pointer to Current Line (Text)
CDEC: 48 PHA
CDED: A9 00 LDA #$00
CDEF: 65 E1 ADC $E1 ; Pointer to Current Line high (Text)
CDF1: 20 CC CD JSR $CDCC ; Set CRTC Register
CDF4: 68 PLA
CDF5: E8 INX
CDF6: 4C CC CD JMP $CDCC ; Set CRTC Register
; Set CRTC to Color Address
CDF9: A2 12 LDX #$12
CDFB: 18 CLC
CDFC: 98 TYA
CDFD: 65 E2 ADC $E2 ; Pointer to Current Line (Attribute)
CDFF: 48 PHA
CE00: A9 00 LDA #$00
CE02: 65 E3 ADC $E3 ; Pointer to Current Line high (Attribute)
CE04: 20 CC CD JSR $CDCC ; Set CRTC Register
CE07: 68 PLA
CE08: E8 INX
CE09: 4C CC CD JMP $CDCC ; Set CRTC Register
; Set Up 80 Column Char Set
CE0C: A9 00 LDA #$00
CE0E: A0 D0 LDY #$D0
CE10: 85 DA STA $DA
CE12: 84 DB STY $DB
CE14: A2 12 LDX #$12
CE16: A9 20 LDA #$20
CE18: 20 CC CD JSR $CDCC ; Set CRTC Register
CE1B: E8 INX
CE1C: A9 00 LDA #$00
CE1E: 20 CC CD JSR $CDCC ; Set CRTC Register
CE21: A0 00 LDY #$00
CE23: A2 0E LDX #$0E
CE25: A9 DA LDA #$DA
CE27: 20 74 FF JSR $FF74 ; indfet Bank LDA (fetchvec),y
CE2A: 20 CA CD JSR $CDCA ; Set CRTC Register 31
CE2D: C8 INY
CE2E: C0 08 CPY #$08
CE30: 90 F1 BCC $CE23
CE32: A9 00 LDA #$00
CE34: 20 CA CD JSR $CDCA ; Set CRTC Register 31
CE37: 88 DEY
CE38: D0 FA BNE $CE34
CE3A: 18 CLC
CE3B: A5 DA LDA $DA
CE3D: 69 08 ADC #$08
CE3F: 85 DA STA $DA
CE41: 90 E0 BCC $CE23
CE43: E6 DB INC $DB
CE45: A5 DB LDA $DB
CE47: C9 E0 CMP #$E0
CE49: 90 D8 BCC $CE23
CE4B: 60 RTS
; Ascii Color Codes
CE4C: 90 05 1C 9F 9C 1E 1F 9E ; '{BLACK}{WHITE}{RED}{CYAN}{PURPLE}{GREEN}{BLUE}{YELLOW}'
CE54: 81 95 96 97 98 99 9A 9B ; '{ORANGE}{BROWN}{LTRED}{GRAY1}{GRAY2}{LTGREEN}{LTBLUE}{GRAY3}'
; System Color Codes
CE5C: 00 0F 08 07 0B 04 02 0D ; '{0}{FLSHON}.{BELL}{LOCK}.{ULON}{CR}'
CE64: 0A 0C 09 06 01 05 03 0E ; '{LF}{UNLOCK}{TAB}..{WHITE}{STOP}{LOWTEXT}'
; Bit Masks
CE6C: 80 40 20 10 08 04 02 01 ; '.@ ...{ULON}.'
; 40-col Init Values ($e0)
CE74: 00 04 00 D8 18 00 00 27 ; '{0}.{0}X{TABT}{0}{0}''
CE7C: 00 00 00 00 00 18 27 00 ; '{0}{0}{0}{0}{0}{TABT}'{0}'
CE84: 00 0D 0D 00 00 00 00 00 ; '{0}{CR}{CR}{0}{0}{0}{0}{0}'
CE8C: 00 00 ; '{0}{0}'
; 80-col Init Values ($0a40)
CE8E: 00 00 00 08 18 00 00 4F ; '{0}{0}{0}.{TABT}{0}{0}o'
CE96: 00 00 00 00 00 18 4F 00 ; '{0}{0}{0}{0}{0}{TABT}o{0}'
CE9E: 00 07 07 00 00 00 00 00 ; '{0}{BELL}{BELL}{0}{0}{0}{0}{0}'
CEA6: 00 00 ; '{0}{0}'
; Prog Key Lengths
CEA8: 07 06 0A 07 06 04 05 08 ; '{BELL}.{LF}{BELL}..{WHITE}.'
CEB0: 09 05 ; '{TAB}{WHITE}'
; Prog Key Definitions
CEB2: 47 52 41 50 48 49 43 44 ; 'graphicd'
CEBA: 4C 4F 41 44 22 44 49 52 ; 'load"dir'
CEC2: 45 43 54 4F 52 59 0D 53 ; 'ectory{CR}s'
CECA: 43 4E 43 4C 52 0D 44 53 ; 'cnclr{CR}ds'
CED2: 41 56 45 22 52 55 4E 0D ; 'ave"run{CR}'
CEDA: 4C 49 53 54 0D 4D 4F 4E ; 'list{CR}mon'
CEE2: 49 54 4F 52 0D 44 CC 22 ; 'itor{CR}dL"'
CEEA: 2A 0D 52 55 4E 0D 48 45 ; '*{CR}run{CR}he'
CEF2: 4C 50 0D ; 'lp{CR}'
; Unused
CEF5: FF FF FF FF FF FF FF FF ; '........'
CEFD: FF FF FF ; '...'
; ?
CF00: A5 D1 LDA $D1 ; Number of programmed chars waiting
CF02: D0 12 BNE $CF16
CF04: BD 00 10 LDA $1000,X
CF07: 85 D1 STA $D1 ; Number of programmed chars waiting
CF09: A9 00 LDA #$00
CF0B: 18 CLC
CF0C: CA DEX
CF0D: 30 05 BMI $CF14
CF0F: 7D 00 10 ADC $1000,X
CF12: 90 F8 BCC $CF0C
CF14: 85 D2 STA $D2 ; Index Into Pending Function Key String
CF16: 4C C4 C6 JMP $C6C4
; Unused
CF19: FF FF FF FF FF FF FF FF ; '........'
CF21: FF FF FF FF FF FF FF FF ; '........'
CF29: FF FF FF FF FF FF FF FF ; '........'
CF31: FF FF FF FF FF FF FF FF ; '........'
CF39: FF FF FF FF FF FF FF FF ; '........'
CF41: FF FF FF FF FF FF FF FF ; '........'
CF49: FF FF FF FF FF FF FF FF ; '........'
CF51: FF FF FF FF FF FF FF FF ; '........'
CF59: FF FF FF FF FF FF FF FF ; '........'
CF61: FF FF FF FF FF FF FF FF ; '........'
CF69: FF FF FF FF FF FF FF FF ; '........'
CF71: FF FF FF FF FF FF FF FF ; '........'
CF79: FF FF FF FF FF FF FF ; '.......'
; ?
CF80: AD 06 D5 LDA $D506
CF83: 48 PHA
CF84: 5D F0 F7 EOR $F7F0,X ; MMU Bank Configuration Values
CF87: 29 3F AND #$3F
CF89: 5D F0 F7 EOR $F7F0,X ; MMU Bank Configuration Values
CF8C: 8D 06 D5 STA $D506
CF8F: BD F0 F7 LDA $F7F0,X ; MMU Bank Configuration Values
CF92: AA TAX
CF93: 08 PHP
CF94: 78 SEI
CF95: 20 F0 03 JSR $03F0
CF98: 28 PLP
CF99: 68 PLA
CF9A: 8D 06 D5 STA $D506
CF9D: 60 RTS
; Unused
CF9E: FF FF FF FF FF FF FF FF ; '........'
CFA6: FF FF FF FF FF FF FF FF ; '........'
CFAE: FF FF FF FF FF FF FF FF ; '........'
CFB6: FF FF FF FF FF FF FF FF ; '........'
CFBE: FF FF ; '..'
; Copyright notice
CFC0: 28 43 29 31 39 38 36 20 ; '(c)1986 '
CFC8: 43 4F 4D 4D 4F 44 4F 52 ; 'commodor'
CFD0: 45 20 45 4C 45 43 54 52 ; 'e electr'
CFD8: 4F 4E 49 43 53 2C 20 4C ; 'onics, l'
CFE0: 54 44 2E 20 41 4C 4C 20 ; 'td. all '
CFE8: 52 49 47 48 54 53 20 52 ; 'rights r'
CFF0: 45 53 45 52 56 45 44 2E ; 'eserved.'
; Reserved for national character ROM checksum
CFF8: FF ; '.'
; Reserver for country code (DIN=$00,US=$FF)
CFF9: 00 ; '{0}'
; National character set signature (DIN=$91F3,US=$FFFF)
CFFA: F3 91 ; '.{UP}'
; ROM signature ($EA3B)
CFFC: 3B EA ; ';.'
; ROM revision byte
CFFE: 01 ; '.'
; ROM checksum byte
CFFF: 4C ; 'l'
; Reset Code
E000: A2 FF LDX #$FF
E002: 78 SEI
E003: 9A TXS
E004: D8 CLD
E005: A9 00 LDA #$00
E007: 8D 00 FF STA $FF00 ; MMU Configuration Register
E00A: A2 0A LDX #$0A
E00C: BD 4B E0 LDA $E04B,X ; MMU Set Up Bytes
E00F: 9D 00 D5 STA $D500,X
E012: CA DEX
E013: 10 F7 BPL $E00C
E015: 8D 04 0A STA $0A04
E018: 20 CD E0 JSR $E0CD ; Move Code For High RAM Banks
E01B: 20 F0 E1 JSR $E1F0 ; Check Special Reset
E01E: 20 42 E2 JSR $E242 ; Reset to 64/128
E021: 20 09 E1 JSR $E109 ; -init-
E024: 20 3D F6 JSR $F63D ; Watch For RUN or Shift
E027: 48 PHA
E028: 30 07 BMI $E031
E02A: A9 A5 LDA #$A5
E02C: CD 02 0A CMP $0A02 ; KERNAL Warm/Cold Init'n Status Byte
E02F: F0 03 BEQ $E034
E031: 20 93 E0 JSR $E093 ; -ramtas-
E034: 20 56 E0 JSR $E056 ; -restor-
E037: 20 00 C0 JSR $C000 ; -cint-
E03A: 68 PLA
E03B: 58 CLI
E03C: 30 03 BMI $E041
E03E: 4C 00 B0 JMP $B000 ; Perform [monitor]
E041: C9 DF CMP #$DF
E043: F0 03 BEQ $E048
E045: 6C 00 0A JMP ($0A00) ; Restart System (BASIC Warm) [4000]
E048: 4C 4B E2 JMP $E24B ; Switch to 64 Mode
; MMU Set Up Bytes
E04B: 00 00 00 00 00 BF 04 00 ; '{0}{0}{0}{0}{0}..{0}'
E053: 00 01 00 ; '{0}.{0}'
; -restor-
E056: A2 73 LDX #$73
E058: A0 E0 LDY #$E0
E05A: 18 CLC
; -vector-
E05B: 86 C3 STX $C3
E05D: 84 C4 STY $C4
E05F: A0 1F LDY #$1F
E061: B9 14 03 LDA $0314,Y ; IRQ Vector [FA65]
E064: B0 02 BCS $E068
E066: B1 C3 LDA ($C3),Y
E068: 99 14 03 STA $0314,Y ; IRQ Vector [FA65]
E06B: 90 02 BCC $E06F
E06D: 91 C3 STA ($C3),Y
E06F: 88 DEY
E070: 10 EF BPL $E061
E072: 60 RTS
; Vectors to $0314
E073: 65 FA .WORD $FA65 ; (IRQ) Normal Entry
E075: 03 B0 .WORD $B003 ; -brk- monitor entry
E077: 40 FA .WORD $FA40 ; NMI Sequence
E079: BD EF .WORD $EFBD ; -open-
E07B: 88 F1 .WORD $F188 ; -close-
E07D: 06 F1 .WORD $F106 ; -chkin-
E07F: 4C F1 .WORD $F14C ; -chkout-
E081: 26 F2 .WORD $F226 ; -clrchn-
E083: 06 EF .WORD $EF06 ; -chrin-
E085: 79 EF .WORD $EF79 ; -chrout-
E087: 6E F6 .WORD $F66E ; -stop-
E089: EB EE .WORD $EEEB ; -getin-
E08B: 22 F2 .WORD $F222 ; -clall-
E08D: 06 B0 .WORD $B006 ; Monitor command entry
E08F: 6C F2 .WORD $F26C ; -kernalload-
E091: 4E F5 .WORD $F54E ; -kernalsave-
; -ramtas-
E093: A9 00 LDA #$00
E095: A8 TAY
E096: 99 02 00 STA $02,Y ; Bank Number, Jump to SYS Address
E099: C8 INY
E09A: D0 FA BNE $E096
E09C: A0 0B LDY #$0B
E09E: 84 B3 STY $B3
E0A0: 85 B2 STA $B2
E0A2: A0 0C LDY #$0C
E0A4: 84 C9 STY $C9
E0A6: 85 C8 STA $C8
E0A8: A0 0D LDY #$0D
E0AA: 84 CB STY $CB
E0AC: 85 CA STA $CA
E0AE: 18 CLC
E0AF: A0 FF LDY #$FF
E0B1: A2 00 LDX #$00
E0B3: 20 6B F7 JSR $F76B
E0B6: A0 1C LDY #$1C
E0B8: A2 00 LDX #$00
E0BA: 20 7A F7 JSR $F77A
E0BD: A0 40 LDY #$40
E0BF: A2 00 LDX #$00
E0C1: 8C 01 0A STY $0A01
E0C4: 8E 00 0A STX $0A00 ; Restart System (BASIC Warm) [4000]
E0C7: A9 A5 LDA #$A5
E0C9: 8D 02 0A STA $0A02 ; KERNAL Warm/Cold Init'n Status Byte
E0CC: 60 RTS
; Move Code For High RAM Banks
E0CD: A0 03 LDY #$03
E0CF: B9 05 E1 LDA $E105,Y ; RAM Bank Masks
E0D2: 8D 00 FF STA $FF00 ; MMU Configuration Register
E0D5: A2 3F LDX #$3F
E0D7: BD 05 FF LDA $FF05,X ; NMI Transfer Entry
E0DA: 9D 05 FF STA $FF05,X ; NMI Transfer Entry
E0DD: CA DEX
E0DE: 10 F7 BPL $E0D7
E0E0: A2 05 LDX #$05
E0E2: BD FA FF LDA $FFFA,X ; NMI
E0E5: 9D FA FF STA $FFFA,X ; NMI
E0E8: CA DEX
E0E9: 10 F7 BPL $E0E2
E0EB: 88 DEY
E0EC: 10 E1 BPL $E0CF
E0EE: A2 59 LDX #$59
E0F0: BD 00 F8 LDA $F800,X ; Subroutines to $02a2-$02fb
E0F3: 9D A2 02 STA $02A2,X ; Bank Peek Subroutine
E0F6: CA DEX
E0F7: 10 F7 BPL $E0F0
E0F9: A2 0C LDX #$0C
E0FB: BD 5A F8 LDA $F85A,X ; DMA Code to $03f0
E0FE: 9D F0 03 STA $03F0,X
E101: CA DEX
E102: 10 F7 BPL $E0FB
E104: 60 RTS
; RAM Bank Masks
E105: 00 40 80 C0 ; '{0}@..'
; -init-
E109: A9 7F LDA #$7F
E10B: 8D 0D DC STA $DC0D
E10E: 8D 0D DD STA $DD0D
E111: 8D 00 DC STA $DC00
E114: A9 08 LDA #$08
E116: 8D 0E DC STA $DC0E
E119: 8D 0E DD STA $DD0E
E11C: 8D 0F DC STA $DC0F
E11F: 8D 0F DD STA $DD0F
E122: A2 00 LDX #$00
E124: 8E 03 DC STX $DC03
E127: 8E 03 DD STX $DD03
E12A: CA DEX
E12B: 8E 02 DC STX $DC02
E12E: A9 07 LDA #$07
E130: 8D 00 DD STA $DD00
E133: A9 3F LDA #$3F
E135: 8D 02 DD STA $DD02
E138: A9 E3 LDA #$E3
E13A: 85 01 STA $01
E13C: A9 2F LDA #$2F
E13E: 85 00 STA $00
E140: A2 FF LDX #$FF
E142: AD 11 D0 LDA $D011
E145: 10 FB BPL $E142
E147: A9 08 LDA #$08
E149: CD 12 D0 CMP $D012
E14C: 90 06 BCC $E154
E14E: AD 11 D0 LDA $D011
E151: 30 F4 BMI $E147
E153: E8 INX
E154: 8E 03 0A STX $0A03 ; PAL/NTSC System Flag
E157: A9 00 LDA #$00
E159: 20 55 FC JSR $FC55 ; ?
E15C: 8D 39 0A STA $0A39
E15F: 8D 0A 0A STA $0A0A
E162: 8D 3A 0A STA $0A3A
E165: 8D 36 0A STA $0A36
E168: 85 99 STA $99 ; Input device, normally 0
E16A: A9 03 LDA #$03
E16C: 85 9A STA $9A ; Output device, normally 3
E16E: A2 30 LDX #$30
E170: BD C7 E2 LDA $E2C7,X ; VIC 8564 Set Up
E173: 9D 00 D0 STA $D000,X
E176: CA DEX
E177: 10 F7 BPL $E170
E179: A2 00 LDX #$00
E17B: 20 DC E1 JSR $E1DC ; Set Up CRTC Registers
E17E: AD 00 D6 LDA $D600
E181: 29 07 AND #$07
E183: F0 05 BEQ $E18A
E185: A2 3B LDX #$3B
E187: 20 DC E1 JSR $E1DC ; Set Up CRTC Registers
E18A: 2C 03 0A BIT $0A03 ; PAL/NTSC System Flag
E18D: 10 05 BPL $E194
E18F: A2 3E LDX #$3E
E191: 20 67 FC JSR $FC67 ; Patch for Set Up CRTC Registers
E194: AD 04 0A LDA $0A04
E197: 30 15 BMI $E1AE
E199: 20 27 C0 JSR $C027 ; Upload 80 Col [CE0C]
E19C: A9 80 LDA #$80
E19E: 0D 04 0A ORA $0A04
E1A1: 8D 04 0A STA $0A04
E1A4: A2 FF LDX #$FF
E1A6: A0 FF LDY #$FF
E1A8: 88 DEY
E1A9: D0 FD BNE $E1A8
E1AB: CA DEX
E1AC: D0 FA BNE $E1A8
E1AE: A9 00 LDA #$00
E1B0: A2 18 LDX #$18
E1B2: 9D 00 D4 STA $D400,X
E1B5: CA DEX
E1B6: 10 FA BPL $E1B2
E1B8: A2 01 LDX #$01
E1BA: 8E 1A D0 STX $D01A
E1BD: CA DEX
E1BE: 8E 1C 0A STX $0A1C ; Fast Serial Internal/External Flag
E1C1: 8E 0F 0A STX $0A0F
E1C4: CA DEX
E1C5: 8E 06 DC STX $DC06
E1C8: 8E 07 DC STX $DC07
E1CB: A2 11 LDX #$11
E1CD: 8E 0F DC STX $DC0F
E1D0: 20 C3 E5 JSR $E5C3 ; Fast Disk Off
E1D3: 20 D6 E5 JSR $E5D6 ; Fast Disk On
E1D6: 20 C3 E5 JSR $E5C3 ; Fast Disk Off
E1D9: 4C 4E E5 JMP $E54E ; Set Clock Low
; Set Up CRTC Registers
E1DC: BC F8 E2 LDY $E2F8,X ; CRTC 8563 Set Up Pairs
E1DF: 30 0D BMI $E1EE
E1E1: E8 INX
E1E2: BD F8 E2 LDA $E2F8,X ; CRTC 8563 Set Up Pairs
E1E5: E8 INX
E1E6: 8C 00 D6 STY $D600
E1E9: 8D 01 D6 STA $D601
E1EC: 10 EE BPL $E1DC ; Set Up CRTC Registers
E1EE: E8 INX
E1EF: 60 RTS
; Check Special Reset
E1F0: A2 F5 LDX #$F5
E1F2: A0 FF LDY #$FF
E1F4: 86 C3 STX $C3
E1F6: 84 C4 STY $C4
E1F8: A9 C3 LDA #$C3
E1FA: 8D AA 02 STA $02AA
E1FD: A0 02 LDY #$02
E1FF: A2 7F LDX #$7F
E201: 20 A2 02 JSR $02A2 ; Bank Peek Subroutine
E204: D9 C4 E2 CMP $E2C4,Y ; Print 'cbm' Mask
E207: D0 1B BNE $E224
E209: 88 DEY
E20A: 10 F3 BPL $E1FF
E20C: A2 F8 LDX #$F8
E20E: A0 FF LDY #$FF
E210: 86 C3 STX $C3
E212: 84 C4 STY $C4
E214: A0 01 LDY #$01
E216: A2 7F LDX #$7F
E218: 20 A2 02 JSR $02A2 ; Bank Peek Subroutine
E21B: 99 02 00 STA $02,Y ; Bank Number, Jump to SYS Address
E21E: 88 DEY
E21F: 10 F5 BPL $E216
E221: 6C 02 00 JMP ($02) ; Bank Number, Jump to SYS Address
E224: A9 40 LDA #$40
E226: 8D 00 FF STA $FF00 ; MMU Configuration Register
E229: A9 24 LDA #$24
E22B: A0 E2 LDY #$E2
E22D: 8D F8 FF STA $FFF8 ; SYSTEM
E230: 8C F9 FF STY $FFF9
E233: A2 03 LDX #$03
E235: BD C3 E2 LDA $E2C3,X
E238: 9D F4 FF STA $FFF4,X
E23B: CA DEX
E23C: D0 F7 BNE $E235
E23E: 8E 00 FF STX $FF00 ; MMU Configuration Register
E241: 60 RTS
; Reset to 64/128
E242: AD 05 D5 LDA $D505
E245: 29 30 AND #$30
E247: C9 30 CMP #$30
E249: F0 20 BEQ $E26B ; Scan All ROMs
; Switch to 64 Mode
E24B: A9 E3 LDA #$E3
E24D: 85 01 STA $01
E24F: A9 2F LDA #$2F
E251: 85 00 STA $00
E253: A2 08 LDX #$08
E255: BD 62 E2 LDA $E262,X
E258: 95 01 STA $01,X
E25A: CA DEX
E25B: D0 F8 BNE $E255
E25D: 8E 30 D0 STX $D030
E260: 4C 02 00 JMP $02 ; Bank Number, Jump to SYS Address
; Code to $02
E263: A9 F7 LDA #$F7
E265: 8D 05 D5 STA $D505
E268: 6C FC FF JMP ($FFFC) ; RESET
; Scan All ROMs
E26B: A2 03 LDX #$03
E26D: 8E C0 0A STX $0AC0
E270: A9 00 LDA #$00
E272: 9D C1 0A STA $0AC1,X
E275: CA DEX
E276: 10 FA BPL $E272
E278: 85 9E STA $9E
E27A: A0 09 LDY #$09
E27C: AE C0 0A LDX $0AC0
E27F: BD BC E2 LDA $E2BC,X ; ROM Addresses High
E282: 85 9F STA $9F
E284: BD C0 E2 LDA $E2C0,X ; ROM Banks
E287: 85 02 STA $02 ; Bank Number, Jump to SYS Address
E289: A6 02 LDX $02 ; Bank Number, Jump to SYS Address
E28B: A9 9E LDA #$9E
E28D: 20 D0 F7 JSR $F7D0 ; Get Char From Memory Bank
E290: D9 BD E2 CMP $E2BD,Y
E293: D0 21 BNE $E2B6
E295: 88 DEY
E296: C0 07 CPY #$07
E298: B0 EF BCS $E289
E29A: A6 02 LDX $02 ; Bank Number, Jump to SYS Address
E29C: A9 9E LDA #$9E
E29E: 20 D0 F7 JSR $F7D0 ; Get Char From Memory Bank
E2A1: AE C0 0A LDX $0AC0
E2A4: 9D C1 0A STA $0AC1,X
E2A7: C9 01 CMP #$01
E2A9: D0 0B BNE $E2B6
E2AB: A5 9E LDA $9E
E2AD: A4 9F LDY $9F
E2AF: 85 04 STA $04 ; SYS address high, MLM register PC
E2B1: 84 03 STY $03 ; SYS address low, MLM register PC
E2B3: 20 CD 02 JSR $02CD ; JSR to another bank
E2B6: CE C0 0A DEC $0AC0
E2B9: 10 BF BPL $E27A
E2BB: 60 RTS
; ROM Addresses High
E2BC: C0 ; '.'
E2BD: 80 C0 80 ; '...'
; ROM Banks
E2C0: 04 04 08 ; '...'
E2C3: 08 ; '.'
; Print 'cbm' Mask
E2C4: 43 42 4D ; 'cbm'
; VIC 8564 Set Up
E2C7: 00 00 00 00 00 00 00 00 ; '{0}{0}{0}{0}{0}{0}{0}{0}'
E2CF: 00 00 00 00 00 00 00 00 ; '{0}{0}{0}{0}{0}{0}{0}{0}'
E2D7: 00 1B FF 00 00 00 08 00 ; '{0}{ESC}.{0}{0}{0}.{0}'
E2DF: 14 FF 01 00 00 00 00 00 ; '{DEL}..{0}{0}{0}{0}{0}'
E2E7: 0D 0B 01 02 03 01 02 00 ; '{CR}{LOCK}.{ULON}{STOP}.{ULON}{0}'
E2EF: 01 02 03 04 05 06 07 FF ; '.{ULON}{STOP}.{WHITE}.{BELL}.'
E2F7: FC ; '.'
; CRTC 8563 Set Up Pairs
E2F8: 00 7E 01 50 02 66 03 49 ; '{0}..p{ULON}f{STOP}i'
E300: 04 20 05 00 06 19 07 1D ; '. {WHITE}{0}..{BELL}{RIGHT}'
E308: 08 00 09 07 0A 20 0B 07 ; '.{0}{TAB}{BELL}{LF} {LOCK}{BELL}'
E310: 0C 00 0D 00 0E 00 0F 00 ; '{UNLOCK}{0}{CR}{0}{LOWTEXT}{0}{FLSHON}{0}'
E318: 14 08 15 00 17 08 18 20 ; '{DEL}..{0}..{TABT} '
E320: 19 40 1A F0 1B 00 1C 20 ; '.@..{ESC}{0}{RED} '
E328: 1D 07 22 7D 23 64 24 05 ; '{RIGHT}{BELL}".#d${WHITE}'
E330: 16 78 FF 19 47 FF 04 26 ; '.X..g..&'
E338: 07 20 FF ; '{BELL} .'
; -talk-
E33B: 09 40 ORA #$40
E33D: 2C .BYTE $2C
; -listen-
E33E: 09 20 ORA #$20
E340: 20 EC E7 JSR $E7EC ; Interlock RS-232/Serial
E343: 48 PHA
E344: 24 94 BIT $94
E346: 10 0A BPL $E352
E348: 38 SEC
E349: 66 A3 ROR $A3
E34B: 20 8C E3 JSR $E38C ; Send Data On Serial Bus
E34E: 46 94 LSR $94
E350: 46 A3 LSR $A3
E352: 68 PLA
E353: 85 95 STA $95
E355: 20 73 E5 JSR $E573 ; Stabilize Timing
E358: 20 57 E5 JSR $E557 ; Set Data High
E35B: AD 00 DD LDA $DD00
E35E: 29 08 AND #$08
E360: D0 12 BNE $E374
E362: 20 D6 E5 JSR $E5D6 ; Fast Disk On
E365: A9 FF LDA #$FF
E367: 8D 0C DC STA $DC0C
E36A: 20 BC E5 JSR $E5BC ; Prepare For Response
E36D: 8A TXA
E36E: A2 14 LDX #$14
E370: CA DEX
E371: D0 FD BNE $E370
E373: AA TAX
E374: AD 00 DD LDA $DD00
E377: 09 08 ORA #$08
E379: 8D 00 DD STA $DD00
E37C: 20 73 E5 JSR $E573 ; Stabilize Timing
E37F: 20 4E E5 JSR $E54E ; Set Clock Low
E382: 20 57 E5 JSR $E557 ; Set Data High
E385: 8A TXA
E386: A2 B8 LDX #$B8
E388: CA DEX
E389: D0 FD BNE $E388
E38B: AA TAX
; Send Data On Serial Bus
E38C: 20 73 E5 JSR $E573 ; Stabilize Timing
E38F: 20 57 E5 JSR $E557 ; Set Data High
E392: 20 69 E5 JSR $E569 ; Read Serial Lines
E395: 90 03 BCC $E39A
E397: 4C 28 E4 JMP $E428
E39A: 2C 0D DC BIT $DC0D
E39D: 20 45 E5 JSR $E545 ; Set Clock High
E3A0: 24 A3 BIT $A3
E3A2: 10 0A BPL $E3AE
E3A4: 20 69 E5 JSR $E569 ; Read Serial Lines
E3A7: 90 FB BCC $E3A4
E3A9: 20 69 E5 JSR $E569 ; Read Serial Lines
E3AC: B0 FB BCS $E3A9
E3AE: AD 00 DD LDA $DD00
E3B1: CD 00 DD CMP $DD00
E3B4: D0 F8 BNE $E3AE
E3B6: 48 PHA
E3B7: AD 0D DC LDA $DC0D
E3BA: 29 08 AND #$08
E3BC: F0 05 BEQ $E3C3
E3BE: A9 C0 LDA #$C0
E3C0: 8D 1C 0A STA $0A1C ; Fast Serial Internal/External Flag
E3C3: 68 PLA
E3C4: 10 E8 BPL $E3AE
E3C6: 09 10 ORA #$10
E3C8: 8D 00 DD STA $DD00
E3CB: 29 08 AND #$08
E3CD: D0 13 BNE $E3E2
E3CF: 2C 1C 0A BIT $0A1C ; Fast Serial Internal/External Flag
E3D2: 10 0E BPL $E3E2
E3D4: 20 D6 E5 JSR $E5D6 ; Fast Disk On
E3D7: A5 95 LDA $95
E3D9: 8D 0C DC STA $DC0C
E3DC: 20 BC E5 JSR $E5BC ; Prepare For Response
E3DF: 4C 12 E4 JMP $E412
E3E2: A9 08 LDA #$08
E3E4: 85 A5 STA $A5
E3E6: AD 00 DD LDA $DD00
E3E9: CD 00 DD CMP $DD00
E3EC: D0 F8 BNE $E3E6
E3EE: 0A ASL A
E3EF: 90 34 BCC $E425
E3F1: 66 95 ROR $95
E3F3: B0 05 BCS $E3FA
E3F5: 20 60 E5 JSR $E560 ; Set Data Low
E3F8: D0 03 BNE $E3FD
E3FA: 20 57 E5 JSR $E557 ; Set Data High
E3FD: 20 45 E5 JSR $E545 ; Set Clock High
E400: EA NOP
E401: EA NOP
E402: EA NOP
E403: EA NOP
E404: AD 00 DD LDA $DD00
E407: 29 DF AND #$DF
E409: 09 10 ORA #$10
E40B: 8D 00 DD STA $DD00
E40E: C6 A5 DEC $A5
E410: D0 D4 BNE $E3E6
E412: 8A TXA
E413: 48 PHA
E414: A2 22 LDX #$22
E416: 20 69 E5 JSR $E569 ; Read Serial Lines
E419: B0 05 BCS $E420
E41B: 68 PLA
E41C: AA TAX
E41D: 4C 9F E5 JMP $E59F ; Restore Timing
E420: CA DEX
E421: D0 F3 BNE $E416
E423: 68 PLA
E424: AA TAX
E425: A9 03 LDA #$03
E427: 2C .BYTE $2C
E428: A9 80 LDA #$80
E42A: 48 PHA
E42B: AD 1C 0A LDA $0A1C ; Fast Serial Internal/External Flag
E42E: 29 7F AND #$7F
E430: 8D 1C 0A STA $0A1C ; Fast Serial Internal/External Flag
E433: 68 PLA
E434: 20 57 F7 JSR $F757 ; Set Status Bit
E437: 20 9F E5 JSR $E59F ; Restore Timing
E43A: 18 CLC
E43B: 4C 35 E5 JMP $E535 ; Reset ATN
; -acptr-
E43E: 20 73 E5 JSR $E573 ; Stabilize Timing
E441: A9 00 LDA #$00
E443: 85 A5 STA $A5
E445: 2C 0D DC BIT $DC0D
E448: 8A TXA
E449: 48 PHA
E44A: 20 45 E5 JSR $E545 ; Set Clock High
E44D: 20 69 E5 JSR $E569 ; Read Serial Lines
E450: 10 FB BPL $E44D
E452: A2 0D LDX #$0D
E454: AD 00 DD LDA $DD00
E457: 29 DF AND #$DF
E459: 8D 00 DD STA $DD00
E45C: AD 00 DD LDA $DD00
E45F: CD 00 DD CMP $DD00
E462: D0 F8 BNE $E45C
E464: 0A ASL A
E465: 10 1D BPL $E484
E467: CA DEX
E468: D0 F2 BNE $E45C
E46A: A5 A5 LDA $A5
E46C: D0 0F BNE $E47D
E46E: 20 60 E5 JSR $E560 ; Set Data Low
E471: 20 45 E5 JSR $E545 ; Set Clock High
E474: A9 40 LDA #$40
E476: 20 57 F7 JSR $F757 ; Set Status Bit
E479: E6 A5 INC $A5
E47B: D0 D5 BNE $E452
E47D: 68 PLA
E47E: AA TAX
E47F: A9 02 LDA #$02
E481: 4C 2A E4 JMP $E42A
E484: A2 08 LDX #$08
E486: AD 0D DC LDA $DC0D
E489: 29 08 AND #$08
E48B: D0 28 BNE $E4B5
E48D: AD 00 DD LDA $DD00
E490: CD 00 DD CMP $DD00
E493: D0 F8 BNE $E48D
E495: 0A ASL A
E496: 10 EE BPL $E486
E498: 66 A4 ROR $A4
E49A: AD 00 DD LDA $DD00
E49D: CD 00 DD CMP $DD00
E4A0: D0 F8 BNE $E49A
E4A2: 0A ASL A
E4A3: 30 F5 BMI $E49A
E4A5: CA DEX
E4A6: F0 17 BEQ $E4BF
E4A8: AD 00 DD LDA $DD00
E4AB: CD 00 DD CMP $DD00
E4AE: D0 F8 BNE $E4A8
E4B0: 0A ASL A
E4B1: 10 F5 BPL $E4A8
E4B3: 30 E3 BMI $E498
E4B5: AD 0C DC LDA $DC0C
E4B8: 85 A4 STA $A4
E4BA: A9 C0 LDA #$C0
E4BC: 8D 1C 0A STA $0A1C ; Fast Serial Internal/External Flag
E4BF: 68 PLA
E4C0: AA TAX
E4C1: 20 60 E5 JSR $E560 ; Set Data Low
E4C4: 24 90 BIT $90 ; Status word ST
E4C6: 50 03 BVC $E4CB
E4C8: 20 38 E5 JSR $E538
E4CB: 20 9F E5 JSR $E59F ; Restore Timing
E4CE: A5 A4 LDA $A4
E4D0: 18 CLC
E4D1: 60 RTS
; -second-
E4D2: 85 95 STA $95
E4D4: 20 7C E3 JSR $E37C
; Set ATN High
E4D7: AD 00 DD LDA $DD00
E4DA: 29 F7 AND #$F7
E4DC: 8D 00 DD STA $DD00
E4DF: 60 RTS
; -tksa-
E4E0: 85 95 STA $95
E4E2: 20 7C E3 JSR $E37C
E4E5: 24 90 BIT $90 ; Status word ST
E4E7: 30 4C BMI $E535 ; Reset ATN
E4E9: 20 73 E5 JSR $E573 ; Stabilize Timing
E4EC: 20 60 E5 JSR $E560 ; Set Data Low
E4EF: 20 D7 E4 JSR $E4D7 ; Set ATN High
E4F2: 20 45 E5 JSR $E545 ; Set Clock High
E4F5: AD 00 DD LDA $DD00
E4F8: CD 00 DD CMP $DD00
E4FB: D0 F8 BNE $E4F5
E4FD: 0A ASL A
E4FE: 30 F5 BMI $E4F5
E500: 4C 9F E5 JMP $E59F ; Restore Timing
; -ciout- Print Serial
E503: 24 94 BIT $94
E505: 30 05 BMI $E50C
E507: 38 SEC
E508: 66 94 ROR $94
E50A: D0 05 BNE $E511
E50C: 48 PHA
E50D: 20 8C E3 JSR $E38C ; Send Data On Serial Bus
E510: 68 PLA
E511: 85 95 STA $95
E513: 18 CLC
E514: 60 RTS
; -untlk-
E515: 20 73 E5 JSR $E573 ; Stabilize Timing
E518: 20 4E E5 JSR $E54E ; Set Clock Low
E51B: AD 00 DD LDA $DD00
E51E: 09 08 ORA #$08
E520: 8D 00 DD STA $DD00
E523: A9 5F LDA #$5F
E525: 2C .BYTE $2C
; -unlsn-
E526: A9 3F LDA #$3F
E528: 48 PHA
E529: AD 1C 0A LDA $0A1C ; Fast Serial Internal/External Flag
E52C: 29 7F AND #$7F
E52E: 8D 1C 0A STA $0A1C ; Fast Serial Internal/External Flag
E531: 68 PLA
E532: 20 43 E3 JSR $E343
; Reset ATN
E535: 20 D7 E4 JSR $E4D7 ; Set ATN High
E538: 8A TXA
E539: A2 0A LDX #$0A
E53B: CA DEX
E53C: D0 FD BNE $E53B
E53E: AA TAX
E53F: 20 45 E5 JSR $E545 ; Set Clock High
E542: 4C 57 E5 JMP $E557 ; Set Data High
; Set Clock High
E545: AD 00 DD LDA $DD00
E548: 29 EF AND #$EF
E54A: 8D 00 DD STA $DD00
E54D: 60 RTS
; Set Clock Low
E54E: AD 00 DD LDA $DD00
E551: 09 10 ORA #$10
E553: 8D 00 DD STA $DD00
E556: 60 RTS
; Set Data High
E557: AD 00 DD LDA $DD00
E55A: 29 DF AND #$DF
E55C: 8D 00 DD STA $DD00
E55F: 60 RTS
; Set Data Low
E560: AD 00 DD LDA $DD00
E563: 09 20 ORA #$20
E565: 8D 00 DD STA $DD00
E568: 60 RTS
; Read Serial Lines
E569: AD 00 DD LDA $DD00
E56C: CD 00 DD CMP $DD00
E56F: D0 F8 BNE $E569 ; Read Serial Lines
E571: 0A ASL A
E572: 60 RTS
; Stabilize Timing
E573: 78 SEI
E574: 2C 3A 0A BIT $0A3A
E577: 30 25 BMI $E59E
E579: 2C 37 0A BIT $0A37
E57C: 30 20 BMI $E59E
E57E: AD 30 D0 LDA $D030
E581: 8D 37 0A STA $0A37
E584: AD 15 D0 LDA $D015
E587: 8D 38 0A STA $0A38
E58A: A9 00 LDA #$00
E58C: 8D 15 D0 STA $D015
E58F: 8D 30 D0 STA $D030
E592: AD 38 0A LDA $0A38
E595: F0 07 BEQ $E59E
E597: 8A TXA
E598: A2 00 LDX #$00
E59A: CA DEX
E59B: D0 FD BNE $E59A
E59D: AA TAX
E59E: 60 RTS
; Restore Timing
E59F: 2C 3A 0A BIT $0A3A
E5A2: 30 16 BMI $E5BA
E5A4: 2C 37 0A BIT $0A37
E5A7: 10 11 BPL $E5BA
E5A9: AD 38 0A LDA $0A38
E5AC: 8D 15 D0 STA $D015
E5AF: AD 37 0A LDA $0A37
E5B2: 8D 30 D0 STA $D030
E5B5: A9 00 LDA #$00
E5B7: 8D 37 0A STA $0A37
E5BA: 58 CLI
E5BB: 60 RTS
; Prepare For Response
E5BC: AD 0D DC LDA $DC0D
E5BF: 29 08 AND #$08
E5C1: F0 F9 BEQ $E5BC ; Prepare For Response
; Fast Disk Off
E5C3: AD 0E DC LDA $DC0E
E5C6: 29 80 AND #$80
E5C8: 09 08 ORA #$08
E5CA: 8D 0E DC STA $DC0E
E5CD: AD 05 D5 LDA $D505
E5D0: 29 F7 AND #$F7
E5D2: 8D 05 D5 STA $D505
E5D5: 60 RTS
; Fast Disk On
E5D6: AD 05 D5 LDA $D505
E5D9: 09 08 ORA #$08
E5DB: 8D 05 D5 STA $D505
E5DE: A9 7F LDA #$7F
E5E0: 8D 0D DC STA $DC0D
E5E3: A9 00 LDA #$00
E5E5: 8D 05 DC STA $DC05
E5E8: A9 04 LDA #$04
E5EA: 8D 04 DC STA $DC04
E5ED: AD 0E DC LDA $DC0E
E5F0: 29 80 AND #$80
E5F2: 09 55 ORA #$55
E5F4: 8D 0E DC STA $DC0E
E5F7: 2C 0D DC BIT $DC0D
E5FA: 60 RTS
; Fast Disk On/Off
E5FB: 90 C6 BCC $E5C3 ; Fast Disk Off
E5FD: B0 D7 BCS $E5D6 ; Fast Disk On
; (NMI) Transmit RS-232
E5FF: A5 B4 LDA $B4
E601: F0 47 BEQ $E64A ; RS-232 Handshake
E603: 30 3F BMI $E644
E605: 46 B6 LSR $B6
E607: A2 00 LDX #$00
E609: 90 01 BCC $E60C
E60B: CA DEX
E60C: 8A TXA
E60D: 45 BD EOR $BD
E60F: 85 BD STA $BD
E611: C6 B4 DEC $B4
E613: F0 06 BEQ $E61B
E615: 8A TXA
E616: 29 04 AND #$04
E618: 85 B5 STA $B5
E61A: 60 RTS
E61B: A9 20 LDA #$20
E61D: 2C 11 0A BIT $0A11 ; RS-232 Command Register
E620: F0 14 BEQ $E636
E622: 30 1C BMI $E640
E624: 70 14 BVS $E63A
E626: A5 BD LDA $BD
E628: D0 01 BNE $E62B
E62A: CA DEX
E62B: C6 B4 DEC $B4
E62D: AD 10 0A LDA $0A10 ; RS-232 Control Register
E630: 10 E3 BPL $E615
E632: C6 B4 DEC $B4
E634: D0 DF BNE $E615
E636: E6 B4 INC $B4
E638: D0 F0 BNE $E62A
E63A: A5 BD LDA $BD
E63C: F0 ED BEQ $E62B
E63E: D0 EA BNE $E62A
E640: 70 E9 BVS $E62B
E642: 50 E6 BVC $E62A
E644: E6 B4 INC $B4
E646: A2 FF LDX #$FF
E648: D0 CB BNE $E615
; RS-232 Handshake
E64A: AD 11 0A LDA $0A11 ; RS-232 Command Register
E64D: 4A LSR A
E64E: 90 07 BCC $E657
E650: 2C 01 DD BIT $DD01
E653: 10 1D BPL $E672
E655: 50 1E BVC $E675
E657: A9 00 LDA #$00
E659: 85 BD STA $BD
E65B: 85 B5 STA $B5
E65D: AE 15 0A LDX $0A15 ; RS-232 Number of Bits To Send
E660: 86 B4 STX $B4
E662: AC 1A 0A LDY $0A1A ; RS-232 Output Buffer Index to Start
E665: CC 1B 0A CPY $0A1B ; RS-232 Output Buffer Index to End
E668: F0 13 BEQ $E67D
E66A: B1 CA LDA ($CA),Y
E66C: 85 B6 STA $B6
E66E: EE 1A 0A INC $0A1A ; RS-232 Output Buffer Index to Start
E671: 60 RTS
E672: A9 40 LDA #$40
E674: 2C .BYTE $2C
E675: A9 10 LDA #$10
E677: 0D 14 0A ORA $0A14 ; RS-232 Status Register
E67A: 8D 14 0A STA $0A14 ; RS-232 Status Register
E67D: A9 01 LDA #$01
E67F: 8D 0D DD STA $DD0D
E682: 4D 0F 0A EOR $0A0F
E685: 09 80 ORA #$80
E687: 8D 0F 0A STA $0A0F
E68A: 8D 0D DD STA $DD0D
E68D: 60 RTS
; Set RS-232 Bit Count
E68E: A2 09 LDX #$09
E690: A9 20 LDA #$20
E692: 2C 10 0A BIT $0A10 ; RS-232 Control Register
E695: F0 01 BEQ $E698
E697: CA DEX
E698: 50 02 BVC $E69C
E69A: CA DEX
E69B: CA DEX
E69C: 60 RTS
; (NMI) RS-232 Receive
E69D: A6 A9 LDX $A9
E69F: D0 33 BNE $E6D4
E6A1: C6 A8 DEC $A8
E6A3: F0 3A BEQ $E6DF
E6A5: 30 0D BMI $E6B4
E6A7: A5 A7 LDA $A7
E6A9: 45 AB EOR $AB
E6AB: 85 AB STA $AB
E6AD: 46 A7 LSR $A7
E6AF: 66 AA ROR $AA
E6B1: 60 RTS
E6B2: C6 A8 DEC $A8
E6B4: A5 A7 LDA $A7
E6B6: F0 6B BEQ $E723
E6B8: AD 10 0A LDA $0A10 ; RS-232 Control Register
E6BB: 0A ASL A
E6BC: A9 01 LDA #$01
E6BE: 65 A8 ADC $A8
E6C0: D0 EF BNE $E6B1
E6C2: A9 90 LDA #$90
E6C4: 8D 0D DD STA $DD0D
E6C7: 0D 0F 0A ORA $0A0F
E6CA: 8D 0F 0A STA $0A0F
E6CD: 85 A9 STA $A9
E6CF: A9 02 LDA #$02
E6D1: 4C 7F E6 JMP $E67F
E6D4: A5 A7 LDA $A7
E6D6: D0 EA BNE $E6C2
E6D8: 85 A9 STA $A9
E6DA: A9 01 LDA #$01
E6DC: 85 AB STA $AB
E6DE: 60 RTS
E6DF: AC 18 0A LDY $0A18 ; RS-232 Input Buffer Index to End
E6E2: C8 INY
E6E3: CC 19 0A CPY $0A19 ; RS-232 Input Buffer Index to Start
E6E6: F0 2A BEQ $E712
E6E8: 8C 18 0A STY $0A18 ; RS-232 Input Buffer Index to End
E6EB: 88 DEY
E6EC: A5 AA LDA $AA
E6EE: AE 15 0A LDX $0A15 ; RS-232 Number of Bits To Send
E6F1: E0 09 CPX #$09
E6F3: F0 04 BEQ $E6F9
E6F5: 4A LSR A
E6F6: E8 INX
E6F7: D0 F8 BNE $E6F1
E6F9: 91 C8 STA ($C8),Y
E6FB: A9 20 LDA #$20
E6FD: 2C 11 0A BIT $0A11 ; RS-232 Command Register
E700: F0 B0 BEQ $E6B2
E702: 30 AD BMI $E6B1
E704: A5 A7 LDA $A7
E706: 45 AB EOR $AB
E708: F0 03 BEQ $E70D
E70A: 70 A5 BVS $E6B1
E70C: 2C .BYTE $2C
E70D: 50 A2 BVC $E6B1
E70F: A9 01 LDA #$01
E711: 2C .BYTE $2C
E712: A9 04 LDA #$04
E714: 2C .BYTE $2C
E715: A9 80 LDA #$80
E717: 2C .BYTE $2C
E718: A9 02 LDA #$02
E71A: 0D 14 0A ORA $0A14 ; RS-232 Status Register
E71D: 8D 14 0A STA $0A14 ; RS-232 Status Register
E720: 4C C2 E6 JMP $E6C2
E723: A5 AA LDA $AA
E725: D0 F1 BNE $E718
E727: F0 EC BEQ $E715
E729: 85 9A STA $9A ; Output device, normally 3
E72B: AD 11 0A LDA $0A11 ; RS-232 Command Register
E72E: 4A LSR A
E72F: 90 29 BCC $E75A
E731: A9 02 LDA #$02
E733: 2C 01 DD BIT $DD01
E736: 10 1D BPL $E755
E738: D0 20 BNE $E75A
E73A: AD 0F 0A LDA $0A0F
E73D: 29 02 AND #$02
E73F: D0 F9 BNE $E73A
E741: 2C 01 DD BIT $DD01
E744: 70 FB BVS $E741
E746: AD 01 DD LDA $DD01
E749: 09 02 ORA #$02
E74B: 8D 01 DD STA $DD01
E74E: 2C 01 DD BIT $DD01
E751: 70 07 BVS $E75A
E753: 30 F9 BMI $E74E
E755: A9 40 LDA #$40
E757: 8D 14 0A STA $0A14 ; RS-232 Status Register
E75A: 18 CLC
E75B: 60 RTS
E75C: 20 70 E7 JSR $E770
; Send To RS-232
E75F: AC 1B 0A LDY $0A1B ; RS-232 Output Buffer Index to End
E762: C8 INY
E763: CC 1A 0A CPY $0A1A ; RS-232 Output Buffer Index to Start
E766: F0 F4 BEQ $E75C
E768: 8C 1B 0A STY $0A1B ; RS-232 Output Buffer Index to End
E76B: 88 DEY
E76C: A5 9E LDA $9E
E76E: 91 CA STA ($CA),Y
E770: AD 0F 0A LDA $0A0F
E773: 4A LSR A
E774: B0 1E BCS $E794
E776: A9 10 LDA #$10
E778: 8D 0E DD STA $DD0E
E77B: AD 16 0A LDA $0A16 ; RS-232 Baud Rate Full Bit Time (Created by OPEN)
E77E: 8D 04 DD STA $DD04
E781: AD 17 0A LDA $0A17
E784: 8D 05 DD STA $DD05
E787: A9 81 LDA #$81
E789: 20 7F E6 JSR $E67F
E78C: 20 4A E6 JSR $E64A ; RS-232 Handshake
E78F: A9 11 LDA #$11
E791: 8D 0E DD STA $DD0E
E794: 60 RTS
; Connect RS-232 Input
E795: 85 99 STA $99 ; Input device, normally 0
E797: AD 11 0A LDA $0A11 ; RS-232 Command Register
E79A: 4A LSR A
E79B: 90 28 BCC $E7C5
E79D: 29 08 AND #$08
E79F: F0 24 BEQ $E7C5
E7A1: A9 02 LDA #$02
E7A3: 2C 01 DD BIT $DD01
E7A6: 10 AD BPL $E755
E7A8: F0 22 BEQ $E7CC
E7AA: AD 0F 0A LDA $0A0F
E7AD: 4A LSR A
E7AE: B0 FA BCS $E7AA
E7B0: AD 01 DD LDA $DD01
E7B3: 29 FD AND #$FD
E7B5: 8D 01 DD STA $DD01
E7B8: AD 01 DD LDA $DD01
E7BB: 29 04 AND #$04
E7BD: F0 F9 BEQ $E7B8
E7BF: A9 90 LDA #$90
E7C1: 18 CLC
E7C2: 4C 7F E6 JMP $E67F
E7C5: AD 0F 0A LDA $0A0F
E7C8: 29 12 AND #$12
E7CA: F0 F3 BEQ $E7BF
E7CC: 18 CLC
E7CD: 60 RTS
; Get From RS-232
E7CE: AD 14 0A LDA $0A14 ; RS-232 Status Register
E7D1: AC 19 0A LDY $0A19 ; RS-232 Input Buffer Index to Start
E7D4: CC 18 0A CPY $0A18 ; RS-232 Input Buffer Index to End
E7D7: F0 0B BEQ $E7E4
E7D9: 29 F7 AND #$F7
E7DB: 8D 14 0A STA $0A14 ; RS-232 Status Register
E7DE: B1 C8 LDA ($C8),Y
E7E0: EE 19 0A INC $0A19 ; RS-232 Input Buffer Index to Start
E7E3: 60 RTS
E7E4: 09 08 ORA #$08
E7E6: 8D 14 0A STA $0A14 ; RS-232 Status Register
E7E9: A9 00 LDA #$00
E7EB: 60 RTS
; Interlock RS-232/Serial
E7EC: 48 PHA
E7ED: AD 0F 0A LDA $0A0F
E7F0: F0 11 BEQ $E803
E7F2: AD 0F 0A LDA $0A0F
E7F5: 29 03 AND #$03
E7F7: D0 F9 BNE $E7F2
E7F9: A9 10 LDA #$10
E7FB: 8D 0D DD STA $DD0D
E7FE: A9 00 LDA #$00
E800: 8D 0F 0A STA $0A0F
E803: 68 PLA
E804: 60 RTS
; (NMI) RS-232 Control I/O
E805: 98 TYA
E806: 2D 0F 0A AND $0A0F
E809: AA TAX
E80A: 29 01 AND #$01
E80C: F0 28 BEQ $E836
E80E: AD 00 DD LDA $DD00
E811: 29 FB AND #$FB
E813: 05 B5 ORA $B5
E815: 8D 00 DD STA $DD00
E818: AD 0F 0A LDA $0A0F
E81B: 8D 0D DD STA $DD0D
E81E: 8A TXA
E81F: 29 12 AND #$12
E821: F0 0D BEQ $E830
E823: 29 02 AND #$02
E825: F0 06 BEQ $E82D
E827: 20 78 E8 JSR $E878 ; (NMI) RS-232 Receive Timing
E82A: 4C 30 E8 JMP $E830
E82D: 20 A9 E8 JSR $E8A9 ; (NMI) RS-232 Transmit Timing
E830: 20 FF E5 JSR $E5FF ; (NMI) Transmit RS-232
E833: 4C 49 E8 JMP $E849
E836: 8A TXA
E837: 29 02 AND #$02
E839: F0 06 BEQ $E841
E83B: 20 78 E8 JSR $E878 ; (NMI) RS-232 Receive Timing
E83E: 4C 49 E8 JMP $E849
E841: 8A TXA
E842: 29 10 AND #$10
E844: F0 03 BEQ $E849
E846: 20 A9 E8 JSR $E8A9 ; (NMI) RS-232 Transmit Timing
E849: AD 0F 0A LDA $0A0F
E84C: 8D 0D DD STA $DD0D
E84F: 60 RTS
; RS-232 Timings For NTSC
E850: C1 27 3E 1A C5 11 74 0E ; 'A'>.E{DOWN}T{LOWTEXT}'
E858: ED 0C 45 06 F0 02 46 01 ; '.{UNLOCK}e..{ULON}f.'
E860: B8 00 ; '.{0}'
E862: 71 ; 'Q'
E863: 00 ; '{0}'
; RS-232 Timing Table -- PAL
E864: 19 26 44 19 1A 11 E8 0D ; '.&d..{DOWN}.{CR}'
E86C: 70 0C 06 06 D1 02 37 01 ; 'P{UNLOCK}..Q{ULON}7.'
E874: AE 00 69 00 ; '.{0}i{0}'
; (NMI) RS-232 Receive Timing
E878: AD 01 DD LDA $DD01
E87B: 29 01 AND #$01
E87D: 85 A7 STA $A7
E87F: AD 06 DD LDA $DD06
E882: E9 28 SBC #$28
E884: 6D 16 0A ADC $0A16 ; RS-232 Baud Rate Full Bit Time (Created by OPEN)
E887: 8D 06 DD STA $DD06
E88A: AD 07 DD LDA $DD07
E88D: 6D 17 0A ADC $0A17
E890: 8D 07 DD STA $DD07
E893: A9 11 LDA #$11
E895: 8D 0F DD STA $DD0F
E898: AD 0F 0A LDA $0A0F
E89B: 8D 0D DD STA $DD0D
E89E: A9 FF LDA #$FF
E8A0: 8D 06 DD STA $DD06
E8A3: 8D 07 DD STA $DD07
E8A6: 4C 9D E6 JMP $E69D ; (NMI) RS-232 Receive
; (NMI) RS-232 Transmit Timing
E8A9: AD 12 0A LDA $0A12 ; RS-232 User Baud Rate
E8AC: 8D 06 DD STA $DD06
E8AF: AD 13 0A LDA $0A13
E8B2: 8D 07 DD STA $DD07
E8B5: A9 11 LDA #$11
E8B7: 8D 0F DD STA $DD0F
E8BA: A9 12 LDA #$12
E8BC: 4D 0F 0A EOR $0A0F
E8BF: 8D 0F 0A STA $0A0F
E8C2: A9 FF LDA #$FF
E8C4: 8D 06 DD STA $DD06
E8C7: 8D 07 DD STA $DD07
E8CA: AE 15 0A LDX $0A15 ; RS-232 Number of Bits To Send
E8CD: 86 A8 STX $A8
E8CF: 60 RTS
; Find Any Tape Header
E8D0: A5 93 LDA $93 ; Work value, monitor, LOAD / SAVE 0 = LOAD, 1 = VERIFY
E8D2: 48 PHA
E8D3: 20 F2 E9 JSR $E9F2 ; Initiate Tape Read
E8D6: 68 PLA
E8D7: 85 93 STA $93 ; Work value, monitor, LOAD / SAVE 0 = LOAD, 1 = VERIFY
E8D9: B0 3D BCS $E918
E8DB: A0 00 LDY #$00
E8DD: B1 B2 LDA ($B2),Y
E8DF: C9 05 CMP #$05
E8E1: F0 34 BEQ $E917
E8E3: C9 01 CMP #$01
E8E5: F0 08 BEQ $E8EF
E8E7: C9 03 CMP #$03
E8E9: F0 04 BEQ $E8EF
E8EB: C9 04 CMP #$04
E8ED: D0 E1 BNE $E8D0 ; Find Any Tape Header
E8EF: AA TAX
E8F0: 24 9D BIT $9D ; I/O messages: 192 = all, 128 = commands, 64 = errors, 0 = nil
E8F2: 10 22 BPL $E916
E8F4: A0 63 LDY #$63
E8F6: 20 22 F7 JSR $F722 ; Print I/O Message
E8F9: A0 05 LDY #$05
E8FB: B1 B2 LDA ($B2),Y
E8FD: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
E900: C8 INY
E901: C0 15 CPY #$15
E903: D0 F6 BNE $E8FB
E905: A5 A1 LDA $A1 ; Jiffy clock Middle
E907: 69 02 ADC #$02
E909: A4 91 LDY $91 ; Keyswitch: STOP and RVS flags (STOP, Q, C=, Space, 2, CTRL, <-, 1)
E90B: C8 INY
E90C: D0 04 BNE $E912
E90E: C5 A1 CMP $A1 ; Jiffy clock Middle
E910: D0 F7 BNE $E909
E912: C0 F0 CPY #$F0
E914: F0 BA BEQ $E8D0 ; Find Any Tape Header
E916: 18 CLC
E917: 88 DEY
E918: 60 RTS
; Write Tape Header
E919: 85 9E STA $9E
E91B: 20 80 E9 JSR $E980 ; Get Buffer Address
E91E: 90 5F BCC $E97F
E920: A5 C2 LDA $C2
E922: 48 PHA
E923: A5 C1 LDA $C1
E925: 48 PHA
E926: A5 AF LDA $AF
E928: 48 PHA
E929: A5 AE LDA $AE ; Tape end address / End of program
E92B: 48 PHA
E92C: A0 BF LDY #$BF
E92E: A9 20 LDA #$20
E930: 91 B2 STA ($B2),Y
E932: 88 DEY
E933: D0 FB BNE $E930
E935: A5 9E LDA $9E
E937: 91 B2 STA ($B2),Y
E939: C8 INY
E93A: A5 C1 LDA $C1
E93C: 91 B2 STA ($B2),Y
E93E: C8 INY
E93F: A5 C2 LDA $C2
E941: 91 B2 STA ($B2),Y
E943: C8 INY
E944: A5 AE LDA $AE ; Tape end address / End of program
E946: 91 B2 STA ($B2),Y
E948: C8 INY
E949: A5 AF LDA $AF
E94B: 91 B2 STA ($B2),Y
E94D: C8 INY
E94E: 84 9F STY $9F
E950: A0 00 LDY #$00
E952: 84 9E STY $9E
E954: A4 9E LDY $9E
E956: C4 B7 CPY $B7 ; Number of characters in file name
E958: F0 0D BEQ $E967
E95A: 20 AE F7 JSR $F7AE ; Get Char From Memory
E95D: A4 9F LDY $9F
E95F: 91 B2 STA ($B2),Y
E961: E6 9E INC $9E
E963: E6 9F INC $9F
E965: D0 ED BNE $E954
E967: 20 87 E9 JSR $E987 ; Get Tape Buffer Start & End Addrs
E96A: A9 69 LDA #$69
E96C: 85 AB STA $AB
E96E: 20 1C EA JSR $EA1C
E971: A8 TAY
E972: 68 PLA
E973: 85 AE STA $AE ; Tape end address / End of program
E975: 68 PLA
E976: 85 AF STA $AF
E978: 68 PLA
E979: 85 C1 STA $C1
E97B: 68 PLA
E97C: 85 C2 STA $C2
E97E: 98 TYA
E97F: 60 RTS
; Get Buffer Address
E980: A6 B2 LDX $B2
E982: A4 B3 LDY $B3
E984: C0 02 CPY #$02
E986: 60 RTS
; Get Tape Buffer Start & End Addrs
E987: 20 80 E9 JSR $E980 ; Get Buffer Address
E98A: 8A TXA
E98B: 85 C1 STA $C1
E98D: 18 CLC
E98E: 69 C0 ADC #$C0
E990: 85 AE STA $AE ; Tape end address / End of program
E992: 98 TYA
E993: 85 C2 STA $C2
E995: 69 00 ADC #$00
E997: 85 AF STA $AF
E999: 60 RTS
; Find Specific Header
E99A: 20 D0 E8 JSR $E8D0 ; Find Any Tape Header
E99D: B0 1E BCS $E9BD
E99F: A0 05 LDY #$05
E9A1: 84 9F STY $9F
E9A3: A0 00 LDY #$00
E9A5: 84 9E STY $9E
E9A7: C4 B7 CPY $B7 ; Number of characters in file name
E9A9: F0 11 BEQ $E9BC
E9AB: 20 AE F7 JSR $F7AE ; Get Char From Memory
E9AE: A4 9F LDY $9F
E9B0: D1 B2 CMP ($B2),Y
E9B2: D0 E6 BNE $E99A ; Find Specific Header
E9B4: E6 9E INC $9E
E9B6: E6 9F INC $9F
E9B8: A4 9E LDY $9E
E9BA: D0 EB BNE $E9A7
E9BC: 18 CLC
E9BD: 60 RTS
; Bump Tape Pointer
E9BE: 20 80 E9 JSR $E980 ; Get Buffer Address
E9C1: E6 A6 INC $A6
E9C3: A4 A6 LDY $A6
E9C5: C0 C0 CPY #$C0
E9C7: 60 RTS
; Print 'press play on tape'
E9C8: 20 DF E9 JSR $E9DF ; Check Tape Status
E9CB: F0 1A BEQ $E9E7
E9CD: A0 1B LDY #$1B
E9CF: 20 22 F7 JSR $F722 ; Print I/O Message
E9D2: 20 8F EA JSR $EA8F ; Check Tape Stop
E9D5: 20 DF E9 JSR $E9DF ; Check Tape Status
E9D8: D0 F8 BNE $E9D2
E9DA: A0 6A LDY #$6A
E9DC: 4C 22 F7 JMP $F722 ; Print I/O Message
; Check Tape Status
E9DF: A9 10 LDA #$10
E9E1: 24 01 BIT $01
E9E3: D0 02 BNE $E9E7
E9E5: 24 01 BIT $01
E9E7: 18 CLC
E9E8: 60 RTS
; Print 'press record ...'
E9E9: 20 DF E9 JSR $E9DF ; Check Tape Status
E9EC: F0 F9 BEQ $E9E7
E9EE: A0 2E LDY #$2E
E9F0: D0 DD BNE $E9CF
; Initiate Tape Read
E9F2: A9 00 LDA #$00
E9F4: 85 90 STA $90 ; Status word ST
E9F6: 85 93 STA $93 ; Work value, monitor, LOAD / SAVE 0 = LOAD, 1 = VERIFY
E9F8: 20 87 E9 JSR $E987 ; Get Tape Buffer Start & End Addrs
E9FB: 20 C8 E9 JSR $E9C8 ; Print 'press play on tape'
E9FE: B0 1F BCS $EA1F
EA00: 78 SEI
EA01: A9 00 LDA #$00
EA03: 85 AA STA $AA
EA05: 85 B4 STA $B4
EA07: 85 B0 STA $B0
EA09: 85 9E STA $9E
EA0B: 85 9F STA $9F
EA0D: 85 9C STA $9C
EA0F: A9 90 LDA #$90
EA11: A2 0E LDX #$0E
EA13: D0 11 BNE $EA26 ; Common Tape Code
; Initiate Tape Write
EA15: 20 87 E9 JSR $E987 ; Get Tape Buffer Start & End Addrs
EA18: A9 14 LDA #$14
EA1A: 85 AB STA $AB
EA1C: 20 E9 E9 JSR $E9E9 ; Print 'press record ...'
EA1F: B0 7A BCS $EA9B
EA21: 78 SEI
EA22: A9 82 LDA #$82
EA24: A2 08 LDX #$08
; Common Tape Code
EA26: A0 00 LDY #$00
EA28: 8C 1A D0 STY $D01A
EA2B: 88 DEY
EA2C: 8C 19 D0 STY $D019
EA2F: 8D 0D DC STA $DC0D
EA32: AD 0E DC LDA $DC0E
EA35: 09 19 ORA #$19
EA37: 8D 0F DC STA $DC0F
EA3A: 29 91 AND #$91
EA3C: 8D 0B 0A STA $0A0B
EA3F: 20 EC E7 JSR $E7EC ; Interlock RS-232/Serial
EA42: AD 11 D0 LDA $D011
EA45: A8 TAY
EA46: 29 10 AND #$10
EA48: 8D 39 0A STA $0A39
EA4B: 98 TYA
EA4C: 29 6F AND #$6F
EA4E: 8D 11 D0 STA $D011
EA51: 20 74 E5 JSR $E574
EA54: AD 14 03 LDA $0314 ; IRQ Vector [FA65]
EA57: 8D 09 0A STA $0A09
EA5A: AD 15 03 LDA $0315
EA5D: 8D 0A 0A STA $0A0A
EA60: 20 9B EE JSR $EE9B ; Switch IRQ Vector
EA63: A9 02 LDA #$02
EA65: 85 BE STA $BE
EA67: 20 5A ED JSR $ED5A ; New Char Set Up
EA6A: A5 01 LDA $01
EA6C: 29 1F AND #$1F
EA6E: 85 01 STA $01
EA70: 85 C0 STA $C0
EA72: A2 FF LDX #$FF
EA74: A0 FF LDY #$FF
EA76: 88 DEY
EA77: D0 FD BNE $EA76
EA79: CA DEX
EA7A: D0 F8 BNE $EA74
EA7C: 58 CLI
; Wait For Tape
EA7D: AD 0A 0A LDA $0A0A
EA80: CD 15 03 CMP $0315
EA83: 18 CLC
EA84: F0 15 BEQ $EA9B
EA86: 20 8F EA JSR $EA8F ; Check Tape Stop
EA89: 20 3D F6 JSR $F63D ; Watch For RUN or Shift
EA8C: 4C 7D EA JMP $EA7D ; Wait For Tape
; Check Tape Stop
EA8F: 20 E1 FF JSR $FFE1 ; (istop) Test-Stop Vector [F66E]
EA92: 18 CLC
EA93: D0 0B BNE $EAA0
EA95: 20 57 EE JSR $EE57 ; Wind Up Tape I/O
EA98: 38 SEC
EA99: 68 PLA
EA9A: 68 PLA
EA9B: A9 00 LDA #$00
EA9D: 8D 0A 0A STA $0A0A
EAA0: 60 RTS
; Set Read Timing
EAA1: 86 B1 STX $B1
EAA3: A5 B0 LDA $B0
EAA5: 0A ASL A
EAA6: 0A ASL A
EAA7: 18 CLC
EAA8: 65 B0 ADC $B0
EAAA: 18 CLC
EAAB: 65 B1 ADC $B1
EAAD: 85 B1 STA $B1
EAAF: A9 00 LDA #$00
EAB1: 24 B0 BIT $B0
EAB3: 30 01 BMI $EAB6
EAB5: 2A ROL A
EAB6: 06 B1 ASL $B1
EAB8: 2A ROL A
EAB9: 06 B1 ASL $B1
EABB: 2A ROL A
EABC: AA TAX
EABD: AD 06 DC LDA $DC06
EAC0: C9 16 CMP #$16
EAC2: 90 F9 BCC $EABD
EAC4: 65 B1 ADC $B1
EAC6: 8D 04 DC STA $DC04
EAC9: 8A TXA
EACA: 6D 07 DC ADC $DC07
EACD: 8D 05 DC STA $DC05
EAD0: AD 0B 0A LDA $0A0B
EAD3: 8D 0E DC STA $DC0E
EAD6: 8D 0D 0A STA $0A0D
EAD9: AD 0D DC LDA $DC0D
EADC: 29 10 AND #$10
EADE: F0 09 BEQ $EAE9
EAE0: A9 EA LDA #$EA
EAE2: 48 PHA
EAE3: A9 E9 LDA #$E9
EAE5: 48 PHA
EAE6: 4C C8 EE JMP $EEC8 ; (IRQ) Clear Break
EAE9: 58 CLI
EAEA: 60 RTS
; (IRQ) Read Tape Bits
EAEB: AE 07 DC LDX $DC07
EAEE: A0 FF LDY #$FF
EAF0: 98 TYA
EAF1: ED 06 DC SBC $DC06
EAF4: EC 07 DC CPX $DC07
EAF7: D0 F2 BNE $EAEB ; (IRQ) Read Tape Bits
EAF9: 86 B1 STX $B1
EAFB: AA TAX
EAFC: 8C 06 DC STY $DC06
EAFF: 8C 07 DC STY $DC07
EB02: A9 19 LDA #$19
EB04: 8D 0F DC STA $DC0F
EB07: AD 0D DC LDA $DC0D
EB0A: 8D 0C 0A STA $0A0C
EB0D: 98 TYA
EB0E: E5 B1 SBC $B1
EB10: 86 B1 STX $B1
EB12: 4A LSR A
EB13: 66 B1 ROR $B1
EB15: 4A LSR A
EB16: 66 B1 ROR $B1
EB18: A5 B0 LDA $B0
EB1A: 18 CLC
EB1B: 69 3C ADC #$3C
EB1D: C5 B1 CMP $B1
EB1F: B0 4A BCS $EB6B
EB21: A6 9C LDX $9C
EB23: F0 03 BEQ $EB28
EB25: 4C 1F EC JMP $EC1F ; Store Tape Chars
EB28: A6 A3 LDX $A3
EB2A: 30 1B BMI $EB47
EB2C: A2 00 LDX #$00
EB2E: 69 30 ADC #$30
EB30: 65 B0 ADC $B0
EB32: C5 B1 CMP $B1
EB34: B0 1C BCS $EB52
EB36: E8 INX
EB37: 69 26 ADC #$26
EB39: 65 B0 ADC $B0
EB3B: C5 B1 CMP $B1
EB3D: B0 17 BCS $EB56
EB3F: 69 2C ADC #$2C
EB41: 65 B0 ADC $B0
EB43: C5 B1 CMP $B1
EB45: 90 03 BCC $EB4A
EB47: 4C CF EB JMP $EBCF
EB4A: A5 B4 LDA $B4
EB4C: F0 1D BEQ $EB6B
EB4E: 85 A8 STA $A8
EB50: D0 19 BNE $EB6B
EB52: E6 A9 INC $A9
EB54: B0 02 BCS $EB58
EB56: C6 A9 DEC $A9
EB58: 38 SEC
EB59: E9 13 SBC #$13
EB5B: E5 B1 SBC $B1
EB5D: 65 92 ADC $92
EB5F: 85 92 STA $92
EB61: A5 A4 LDA $A4
EB63: 49 01 EOR #$01
EB65: 85 A4 STA $A4
EB67: F0 2B BEQ $EB94
EB69: 86 C5 STX $C5
EB6B: A5 B4 LDA $B4
EB6D: F0 22 BEQ $EB91
EB6F: AD 0C 0A LDA $0A0C
EB72: 29 01 AND #$01
EB74: D0 05 BNE $EB7B
EB76: AD 0D 0A LDA $0A0D
EB79: D0 16 BNE $EB91
EB7B: A9 00 LDA #$00
EB7D: 85 A4 STA $A4
EB7F: 8D 0D 0A STA $0A0D
EB82: A5 A3 LDA $A3
EB84: 10 30 BPL $EBB6
EB86: 30 BF BMI $EB47
EB88: A2 A6 LDX #$A6
EB8A: 20 A1 EA JSR $EAA1 ; Set Read Timing
EB8D: A5 9B LDA $9B
EB8F: D0 B9 BNE $EB4A
EB91: 4C 33 FF JMP $FF33 ; Return From Interrupt
EB94: A5 92 LDA $92
EB96: F0 07 BEQ $EB9F
EB98: 30 03 BMI $EB9D
EB9A: C6 B0 DEC $B0
EB9C: 2C .BYTE $2C
EB9D: E6 B0 INC $B0
EB9F: A9 00 LDA #$00
EBA1: 85 92 STA $92
EBA3: E4 C5 CPX $C5
EBA5: D0 0F BNE $EBB6
EBA7: 8A TXA
EBA8: D0 A0 BNE $EB4A
EBAA: A5 A9 LDA $A9
EBAC: 30 BD BMI $EB6B
EBAE: C9 10 CMP #$10
EBB0: 90 B9 BCC $EB6B
EBB2: 85 96 STA $96
EBB4: B0 B5 BCS $EB6B
EBB6: 8A TXA
EBB7: 45 9B EOR $9B
EBB9: 85 9B STA $9B
EBBB: A5 B4 LDA $B4
EBBD: F0 D2 BEQ $EB91
EBBF: C6 A3 DEC $A3
EBC1: 30 C5 BMI $EB88
EBC3: 46 C5 LSR $C5
EBC5: 66 BF ROR $BF
EBC7: A2 DA LDX #$DA
EBC9: 20 A1 EA JSR $EAA1 ; Set Read Timing
EBCC: 4C 33 FF JMP $FF33 ; Return From Interrupt
EBCF: A5 96 LDA $96
EBD1: F0 04 BEQ $EBD7
EBD3: A5 B4 LDA $B4
EBD5: F0 07 BEQ $EBDE
EBD7: A5 A3 LDA $A3
EBD9: 30 03 BMI $EBDE
EBDB: 4C 56 EB JMP $EB56
EBDE: 46 B1 LSR $B1
EBE0: A9 93 LDA #$93
EBE2: 38 SEC
EBE3: E5 B1 SBC $B1
EBE5: 65 B0 ADC $B0
EBE7: 0A ASL A
EBE8: AA TAX
EBE9: 20 A1 EA JSR $EAA1 ; Set Read Timing
EBEC: E6 9C INC $9C
EBEE: A5 B4 LDA $B4
EBF0: D0 11 BNE $EC03
EBF2: A5 96 LDA $96
EBF4: F0 26 BEQ $EC1C
EBF6: 85 A8 STA $A8
EBF8: A9 00 LDA #$00
EBFA: 85 96 STA $96
EBFC: A9 81 LDA #$81
EBFE: 8D 0D DC STA $DC0D
EC01: 85 B4 STA $B4
EC03: A5 96 LDA $96
EC05: 85 B5 STA $B5
EC07: F0 09 BEQ $EC12
EC09: A9 00 LDA #$00
EC0B: 85 B4 STA $B4
EC0D: A9 01 LDA #$01
EC0F: 8D 0D DC STA $DC0D
EC12: A5 BF LDA $BF
EC14: 85 BD STA $BD
EC16: A5 A8 LDA $A8
EC18: 05 A9 ORA $A9
EC1A: 85 B6 STA $B6
EC1C: 4C 33 FF JMP $FF33 ; Return From Interrupt
; Store Tape Chars
EC1F: 20 5A ED JSR $ED5A ; New Char Set Up
EC22: 85 9C STA $9C
EC24: A2 DA LDX #$DA
EC26: 20 A1 EA JSR $EAA1 ; Set Read Timing
EC29: A5 BE LDA $BE
EC2B: F0 02 BEQ $EC2F
EC2D: 85 A7 STA $A7
EC2F: A9 0F LDA #$0F
EC31: 24 AA BIT $AA
EC33: 10 17 BPL $EC4C
EC35: A5 B5 LDA $B5
EC37: D0 0C BNE $EC45
EC39: A6 BE LDX $BE
EC3B: CA DEX
EC3C: D0 0B BNE $EC49
EC3E: A9 08 LDA #$08
EC40: 20 57 F7 JSR $F757 ; Set Status Bit
EC43: D0 04 BNE $EC49
EC45: A9 00 LDA #$00
EC47: 85 AA STA $AA
EC49: 4C 33 FF JMP $FF33 ; Return From Interrupt
EC4C: 70 31 BVS $EC7F
EC4E: D0 18 BNE $EC68
EC50: A5 B5 LDA $B5
EC52: D0 F5 BNE $EC49
EC54: A5 B6 LDA $B6
EC56: D0 F1 BNE $EC49
EC58: A5 A7 LDA $A7
EC5A: 4A LSR A
EC5B: A5 BD LDA $BD
EC5D: 30 03 BMI $EC62
EC5F: 90 18 BCC $EC79
EC61: 18 CLC
EC62: B0 15 BCS $EC79
EC64: 29 0F AND #$0F
EC66: 85 AA STA $AA
EC68: C6 AA DEC $AA
EC6A: D0 DD BNE $EC49
EC6C: A9 40 LDA #$40
EC6E: 85 AA STA $AA
EC70: 20 51 ED JSR $ED51 ; Reset Pointer
EC73: A9 00 LDA #$00
EC75: 85 AB STA $AB
EC77: F0 D0 BEQ $EC49
EC79: A9 80 LDA #$80
EC7B: 85 AA STA $AA
EC7D: D0 CA BNE $EC49
EC7F: A5 B5 LDA $B5
EC81: F0 0A BEQ $EC8D
EC83: A9 04 LDA #$04
EC85: 20 57 F7 JSR $F757 ; Set Status Bit
EC88: A9 00 LDA #$00
EC8A: 4C 0C ED JMP $ED0C
EC8D: 20 B7 EE JSR $EEB7 ; Check End Address
EC90: 90 03 BCC $EC95
EC92: 4C 0A ED JMP $ED0A
EC95: A6 A7 LDX $A7
EC97: CA DEX
EC98: F0 2E BEQ $ECC8
EC9A: A5 93 LDA $93 ; Work value, monitor, LOAD / SAVE 0 = LOAD, 1 = VERIFY
EC9C: F0 0D BEQ $ECAB
EC9E: A0 00 LDY #$00
ECA0: 20 CC F7 JSR $F7CC
ECA3: C5 BD CMP $BD
ECA5: F0 04 BEQ $ECAB
ECA7: A9 01 LDA #$01
ECA9: 85 B6 STA $B6
ECAB: A5 B6 LDA $B6
ECAD: F0 4C BEQ $ECFB
ECAF: A2 3D LDX #$3D
ECB1: E4 9E CPX $9E
ECB3: 90 3F BCC $ECF4
ECB5: A6 9E LDX $9E
ECB7: A5 AD LDA $AD
ECB9: 9D 01 01 STA $0101,X
ECBC: A5 AC LDA $AC
ECBE: 9D 00 01 STA $0100,X
ECC1: E8 INX
ECC2: E8 INX
ECC3: 86 9E STX $9E
ECC5: 4C FB EC JMP $ECFB
ECC8: A6 9F LDX $9F
ECCA: E4 9E CPX $9E
ECCC: F0 37 BEQ $ED05
ECCE: A5 AC LDA $AC
ECD0: DD 00 01 CMP $0100,X
ECD3: D0 30 BNE $ED05
ECD5: A5 AD LDA $AD
ECD7: DD 01 01 CMP $0101,X
ECDA: D0 29 BNE $ED05
ECDC: E6 9F INC $9F
ECDE: E6 9F INC $9F
ECE0: A5 93 LDA $93 ; Work value, monitor, LOAD / SAVE 0 = LOAD, 1 = VERIFY
ECE2: F0 0C BEQ $ECF0
ECE4: A0 00 LDY #$00
ECE6: 20 CC F7 JSR $F7CC
ECE9: C5 BD CMP $BD
ECEB: F0 18 BEQ $ED05
ECED: C8 INY
ECEE: 84 B6 STY $B6
ECF0: A5 B6 LDA $B6
ECF2: F0 07 BEQ $ECFB
ECF4: A9 10 LDA #$10
ECF6: 20 57 F7 JSR $F757 ; Set Status Bit
ECF9: D0 0A BNE $ED05
ECFB: A5 93 LDA $93 ; Work value, monitor, LOAD / SAVE 0 = LOAD, 1 = VERIFY
ECFD: D0 06 BNE $ED05
ECFF: A8 TAY
ED00: A5 BD LDA $BD
ED02: 20 BC F7 JSR $F7BC ; Store Loaded Byte
ED05: 20 C1 EE JSR $EEC1 ; Bump Address
ED08: D0 44 BNE $ED4E
ED0A: A9 80 LDA #$80
ED0C: 85 AA STA $AA
ED0E: 78 SEI
ED0F: A2 01 LDX #$01
ED11: 8E 0D DC STX $DC0D
ED14: AE 0D DC LDX $DC0D
ED17: A6 BE LDX $BE
ED19: CA DEX
ED1A: 30 02 BMI $ED1E
ED1C: 86 BE STX $BE
ED1E: C6 A7 DEC $A7
ED20: F0 08 BEQ $ED2A
ED22: A5 9E LDA $9E
ED24: D0 28 BNE $ED4E
ED26: 85 BE STA $BE
ED28: F0 24 BEQ $ED4E
ED2A: 20 57 EE JSR $EE57 ; Wind Up Tape I/O
ED2D: 20 51 ED JSR $ED51 ; Reset Pointer
ED30: A0 00 LDY #$00
ED32: 84 AB STY $AB
ED34: 20 CC F7 JSR $F7CC
ED37: 45 AB EOR $AB
ED39: 85 AB STA $AB
ED3B: 20 C1 EE JSR $EEC1 ; Bump Address
ED3E: 20 B7 EE JSR $EEB7 ; Check End Address
ED41: 90 F1 BCC $ED34
ED43: A5 AB LDA $AB
ED45: 45 BD EOR $BD
ED47: F0 05 BEQ $ED4E
ED49: A9 20 LDA #$20
ED4B: 20 57 F7 JSR $F757 ; Set Status Bit
ED4E: 4C 33 FF JMP $FF33 ; Return From Interrupt
; Reset Pointer
ED51: A5 C2 LDA $C2
ED53: 85 AD STA $AD
ED55: A5 C1 LDA $C1
ED57: 85 AC STA $AC
ED59: 60 RTS
; New Char Set Up
ED5A: A9 08 LDA #$08
ED5C: 85 A3 STA $A3
ED5E: A9 00 LDA #$00
ED60: 85 A4 STA $A4
ED62: 85 A8 STA $A8
ED64: 85 9B STA $9B
ED66: 85 A9 STA $A9
ED68: 60 RTS
; Write Transition to Tape
ED69: A5 BD LDA $BD
ED6B: 4A LSR A
ED6C: A9 60 LDA #$60
ED6E: 90 02 BCC $ED72
ED70: A9 B0 LDA #$B0
ED72: A2 00 LDX #$00
ED74: 8D 06 DC STA $DC06
ED77: 8E 07 DC STX $DC07
ED7A: AD 0D DC LDA $DC0D
ED7D: A9 19 LDA #$19
ED7F: 8D 0F DC STA $DC0F
ED82: A5 01 LDA $01
ED84: 49 08 EOR #$08
ED86: 85 01 STA $01
ED88: 29 08 AND #$08
ED8A: 60 RTS
; Write Data to Tape
ED8B: 38 SEC
ED8C: 66 B6 ROR $B6
ED8E: 30 3C BMI $EDCC
; (IRQ) Tape Write
ED90: A5 A8 LDA $A8
ED92: D0 12 BNE $EDA6
ED94: A9 10 LDA #$10
ED96: A2 01 LDX #$01
ED98: 20 74 ED JSR $ED74
ED9B: D0 2F BNE $EDCC
ED9D: E6 A8 INC $A8
ED9F: A5 B6 LDA $B6
EDA1: 10 29 BPL $EDCC
EDA3: 4C 1B EE JMP $EE1B
EDA6: A5 A9 LDA $A9
EDA8: D0 09 BNE $EDB3
EDAA: 20 70 ED JSR $ED70
EDAD: D0 1D BNE $EDCC
EDAF: E6 A9 INC $A9
EDB1: D0 19 BNE $EDCC
EDB3: 20 69 ED JSR $ED69 ; Write Transition to Tape
EDB6: D0 14 BNE $EDCC
EDB8: A5 A4 LDA $A4
EDBA: 49 01 EOR #$01
EDBC: 85 A4 STA $A4
EDBE: F0 0F BEQ $EDCF
EDC0: A5 BD LDA $BD
EDC2: 49 01 EOR #$01
EDC4: 85 BD STA $BD
EDC6: 29 01 AND #$01
EDC8: 45 9B EOR $9B
EDCA: 85 9B STA $9B
EDCC: 4C 33 FF JMP $FF33 ; Return From Interrupt
EDCF: 46 BD LSR $BD
EDD1: C6 A3 DEC $A3
EDD3: A5 A3 LDA $A3
EDD5: F0 3B BEQ $EE12
EDD7: 10 F3 BPL $EDCC
EDD9: 20 5A ED JSR $ED5A ; New Char Set Up
EDDC: 58 CLI
EDDD: A5 A5 LDA $A5
EDDF: F0 12 BEQ $EDF3
EDE1: A2 00 LDX #$00
EDE3: 86 C5 STX $C5
EDE5: C6 A5 DEC $A5
EDE7: A6 BE LDX $BE
EDE9: E0 02 CPX #$02
EDEB: D0 02 BNE $EDEF
EDED: 09 80 ORA #$80
EDEF: 85 BD STA $BD
EDF1: D0 D9 BNE $EDCC
EDF3: 20 B7 EE JSR $EEB7 ; Check End Address
EDF6: 90 0A BCC $EE02
EDF8: D0 91 BNE $ED8B ; Write Data to Tape
EDFA: E6 AD INC $AD
EDFC: A5 C5 LDA $C5
EDFE: 85 BD STA $BD
EE00: B0 CA BCS $EDCC
EE02: A0 00 LDY #$00
EE04: 20 CC F7 JSR $F7CC
EE07: 85 BD STA $BD
EE09: 45 C5 EOR $C5
EE0B: 85 C5 STA $C5
EE0D: 20 C1 EE JSR $EEC1 ; Bump Address
EE10: D0 BA BNE $EDCC
EE12: A5 9B LDA $9B
EE14: 49 01 EOR #$01
EE16: 85 BD STA $BD
EE18: 4C 33 FF JMP $FF33 ; Return From Interrupt
EE1B: C6 BE DEC $BE
EE1D: D0 03 BNE $EE22
EE1F: 20 B0 EE JSR $EEB0 ; Kill Tape Motor
EE22: A9 50 LDA #$50
EE24: 85 A7 STA $A7
EE26: A2 08 LDX #$08
EE28: 78 SEI
EE29: 20 9B EE JSR $EE9B ; Switch IRQ Vector
EE2C: D0 EA BNE $EE18
; (IRQ) Tape Leader
EE2E: A9 78 LDA #$78
EE30: 20 72 ED JSR $ED72
EE33: D0 E3 BNE $EE18
EE35: C6 A7 DEC $A7
EE37: D0 DF BNE $EE18
EE39: 20 5A ED JSR $ED5A ; New Char Set Up
EE3C: C6 AB DEC $AB
EE3E: 10 D8 BPL $EE18
EE40: A2 0A LDX #$0A
EE42: 20 9B EE JSR $EE9B ; Switch IRQ Vector
EE45: 58 CLI
EE46: E6 AB INC $AB
EE48: A5 BE LDA $BE
EE4A: F0 49 BEQ $EE95
EE4C: 20 51 ED JSR $ED51 ; Reset Pointer
EE4F: A2 09 LDX #$09
EE51: 86 A5 STX $A5
EE53: 86 B6 STX $B6
EE55: D0 82 BNE $EDD9
; Wind Up Tape I/O
EE57: 08 PHP
EE58: 78 SEI
EE59: AD 11 D0 LDA $D011
EE5C: 0D 39 0A ORA $0A39
EE5F: 29 7F AND #$7F
EE61: 8D 11 D0 STA $D011
EE64: 2C 3A 0A BIT $0A3A
EE67: 30 16 BMI $EE7F
EE69: 2C 37 0A BIT $0A37
EE6C: 10 11 BPL $EE7F
EE6E: AD 38 0A LDA $0A38
EE71: 8D 15 D0 STA $D015
EE74: AD 37 0A LDA $0A37
EE77: 8D 30 D0 STA $D030
EE7A: A9 00 LDA #$00
EE7C: 8D 37 0A STA $0A37
EE7F: 20 B0 EE JSR $EEB0 ; Kill Tape Motor
EE82: 20 B8 E1 JSR $E1B8
EE85: AD 0A 0A LDA $0A0A
EE88: F0 09 BEQ $EE93
EE8A: 8D 15 03 STA $0315
EE8D: AD 09 0A LDA $0A09
EE90: 8D 14 03 STA $0314 ; IRQ Vector [FA65]
EE93: 28 PLP
EE94: 60 RTS
EE95: 20 57 EE JSR $EE57 ; Wind Up Tape I/O
EE98: 4C 33 FF JMP $FF33 ; Return From Interrupt
; Switch IRQ Vector
EE9B: BD A0 EE LDA $EEA0,X
EE9E: 8D 14 03 STA $0314 ; IRQ Vector [FA65]
EEA1: BD A1 EE LDA $EEA1,X
EEA4: 8D 15 03 STA $0315
EEA7: 60 RTS
; IRQ Vectors
EEA8: 2E EE .WORD $EE2E ; (IRQ) Tape Leader
EEAA: 90 ED .WORD $ED90 ; (IRQ) Tape Write
EEAC: 65 FA .WORD $FA65 ; (IRQ) Normal Entry
EEAE: EB EA .WORD $EAEB ; (IRQ) Read Tape Bits
; Kill Tape Motor
EEB0: A5 01 LDA $01
EEB2: 09 20 ORA #$20
EEB4: 85 01 STA $01
EEB6: 60 RTS
; Check End Address
EEB7: 38 SEC
EEB8: A5 AC LDA $AC
EEBA: E5 AE SBC $AE ; Tape end address / End of program
EEBC: A5 AD LDA $AD
EEBE: E5 AF SBC $AF
EEC0: 60 RTS
; Bump Address
EEC1: E6 AC INC $AC
EEC3: D0 02 BNE $EEC7
EEC5: E6 AD INC $AD
EEC7: 60 RTS
; (IRQ) Clear Break
EEC8: 08 PHP
EEC9: 68 PLA
EECA: 29 EF AND #$EF
EECC: 48 PHA
EECD: 4C 17 FF JMP $FF17 ; IRQ Transfer Entry
; Control Tape Motor
EED0: A5 01 LDA $01
EED2: 29 10 AND #$10
EED4: F0 0A BEQ $EEE0
EED6: A0 00 LDY #$00
EED8: 84 C0 STY $C0
EEDA: A5 01 LDA $01
EEDC: 09 20 ORA #$20
EEDE: D0 08 BNE $EEE8
EEE0: A5 C0 LDA $C0
EEE2: D0 06 BNE $EEEA
EEE4: A5 01 LDA $01
EEE6: 29 DF AND #$DF
EEE8: 85 01 STA $01
EEEA: 60 RTS
; -getin-
EEEB: A5 99 LDA $99 ; Input device, normally 0
EEED: D0 0A BNE $EEF9
EEEF: A5 D0 LDA $D0 ; Number of characters in keyboard buffer
EEF1: 05 D1 ORA $D1 ; Number of programmed chars waiting
EEF3: F0 0F BEQ $EF04
EEF5: 78 SEI
EEF6: 4C 06 C0 JMP $C006 ; Get from Keyboard
EEF9: C9 02 CMP #$02
EEFB: D0 18 BNE $EF15
EEFD: 84 97 STY $97
EEFF: 20 CE E7 JSR $E7CE ; Get From RS-232
EF02: A4 97 LDY $97
EF04: 18 CLC
EF05: 60 RTS
; -chrin-
EF06: A5 99 LDA $99 ; Input device, normally 0
EF08: D0 0B BNE $EF15
EF0A: A5 EC LDA $EC ; Current Cursor Column
EF0C: 85 E9 STA $E9 ; Current Input Line Start
EF0E: A5 EB LDA $EB ; Current Cursor Line
EF10: 85 E8 STA $E8 ; Current Input Column Start
EF12: 4C 09 C0 JMP $C009 ; Screen Input Link
EF15: C9 03 CMP #$03
EF17: D0 09 BNE $EF22
EF19: 20 40 FC JSR $FC40 ; ?
EF1C: A5 E7 LDA $E7 ; Window Right Margin
EF1E: 85 EA STA $EA ; Current Input Line End
EF20: B0 F0 BCS $EF12
EF22: B0 38 BCS $EF5C
EF24: C9 02 CMP #$02
EF26: F0 3F BEQ $EF67
EF28: 86 97 STX $97
EF2A: 20 48 EF JSR $EF48 ; Get Char From Tape
EF2D: B0 16 BCS $EF45
EF2F: 48 PHA
EF30: 20 48 EF JSR $EF48 ; Get Char From Tape
EF33: B0 0D BCS $EF42
EF35: D0 05 BNE $EF3C
EF37: A9 40 LDA #$40
EF39: 20 57 F7 JSR $F757 ; Set Status Bit
EF3C: C6 A6 DEC $A6
EF3E: A6 97 LDX $97
EF40: 68 PLA
EF41: 60 RTS
EF42: AA TAX
EF43: 68 PLA
EF44: 8A TXA
EF45: A6 97 LDX $97
EF47: 60 RTS
; Get Char From Tape
EF48: 20 BE E9 JSR $E9BE ; Bump Tape Pointer
EF4B: D0 0B BNE $EF58
EF4D: 20 F2 E9 JSR $E9F2 ; Initiate Tape Read
EF50: B0 09 BCS $EF5B
EF52: A9 00 LDA #$00
EF54: 85 A6 STA $A6
EF56: F0 F0 BEQ $EF48 ; Get Char From Tape
EF58: B1 B2 LDA ($B2),Y
EF5A: 18 CLC
EF5B: 60 RTS
EF5C: A5 90 LDA $90 ; Status word ST
EF5E: D0 03 BNE $EF63
EF60: 4C 3E E4 JMP $E43E ; -acptr-
EF63: A9 0D LDA #$0D
EF65: 18 CLC
EF66: 60 RTS
EF67: 20 FD EE JSR $EEFD
EF6A: B0 F9 BCS $EF65
EF6C: C9 00 CMP #$00
EF6E: D0 F6 BNE $EF66
EF70: AD 14 0A LDA $0A14 ; RS-232 Status Register
EF73: 29 60 AND #$60
EF75: D0 EC BNE $EF63
EF77: F0 EE BEQ $EF67
; -chrout-
EF79: 48 PHA
EF7A: A5 9A LDA $9A ; Output device, normally 3
EF7C: C9 03 CMP #$03
EF7E: D0 04 BNE $EF84
EF80: 68 PLA
EF81: 4C 0C C0 JMP $C00C ; Screen Print Link
EF84: 90 04 BCC $EF8A
EF86: 68 PLA
EF87: 4C 03 E5 JMP $E503 ; -ciout- Print Serial
EF8A: 4A LSR A
EF8B: 68 PLA
EF8C: 85 9E STA $9E
EF8E: 8A TXA
EF8F: 48 PHA
EF90: 98 TYA
EF91: 48 PHA
EF92: 90 23 BCC $EFB7
EF94: 20 BE E9 JSR $E9BE ; Bump Tape Pointer
EF97: D0 0E BNE $EFA7
EF99: 20 15 EA JSR $EA15 ; Initiate Tape Write
EF9C: B0 0E BCS $EFAC
EF9E: A9 02 LDA #$02
EFA0: A0 00 LDY #$00
EFA2: 91 B2 STA ($B2),Y
EFA4: C8 INY
EFA5: 84 A6 STY $A6
EFA7: A5 9E LDA $9E
EFA9: 91 B2 STA ($B2),Y
EFAB: 18 CLC
EFAC: 68 PLA
EFAD: A8 TAY
EFAE: 68 PLA
EFAF: AA TAX
EFB0: A5 9E LDA $9E
EFB2: 90 02 BCC $EFB6
EFB4: A9 00 LDA #$00
EFB6: 60 RTS
EFB7: 20 5F E7 JSR $E75F ; Send To RS-232
EFBA: 4C AB EF JMP $EFAB
; -open-
EFBD: A6 B8 LDX $B8 ; Current logical file
EFBF: 20 02 F2 JSR $F202 ; Search For File
EFC2: F0 2F BEQ $EFF3
EFC4: A6 98 LDX $98 ; How many open files
EFC6: E0 0A CPX #$0A
EFC8: B0 26 BCS $EFF0
EFCA: E6 98 INC $98 ; How many open files
EFCC: A5 B8 LDA $B8 ; Current logical file
EFCE: 9D 62 03 STA $0362,X ; Logical File Number Table
EFD1: A5 B9 LDA $B9 ; Current secondary address
EFD3: 09 60 ORA #$60
EFD5: 85 B9 STA $B9 ; Current secondary address
EFD7: 9D 76 03 STA $0376,X ; Secondary Addresse Table
EFDA: A5 BA LDA $BA ; Current device
EFDC: 9D 6C 03 STA $036C,X ; Device Number Table
EFDF: F0 0D BEQ $EFEE
EFE1: C9 02 CMP #$02
EFE3: F0 5B BEQ $F040
EFE5: 90 0F BCC $EFF6
EFE7: C9 03 CMP #$03
EFE9: F0 03 BEQ $EFEE
EFEB: 20 CB F0 JSR $F0CB ; Check Serial Open
EFEE: 18 CLC
EFEF: 60 RTS
EFF0: 4C 7C F6 JMP $F67C ; Print 'too many files'
EFF3: 4C 7F F6 JMP $F67F ; Print 'file open'
EFF6: 20 80 E9 JSR $E980 ; Get Buffer Address
EFF9: B0 03 BCS $EFFE
EFFB: 4C 94 F6 JMP $F694 ; Print 'illegal device no'
EFFE: A5 B9 LDA $B9 ; Current secondary address
F000: 29 0F AND #$0F
F002: D0 1F BNE $F023
F004: 20 C8 E9 JSR $E9C8 ; Print 'press play on tape'
F007: B0 36 BCS $F03F
F009: 20 0F F5 JSR $F50F ; Print 'searching'
F00C: A5 B7 LDA $B7 ; Number of characters in file name
F00E: F0 0A BEQ $F01A
F010: 20 9A E9 JSR $E99A ; Find Specific Header
F013: 90 18 BCC $F02D
F015: F0 28 BEQ $F03F
F017: 4C 85 F6 JMP $F685 ; Print 'file not found'
F01A: 20 D0 E8 JSR $E8D0 ; Find Any Tape Header
F01D: 90 0E BCC $F02D
F01F: F0 1E BEQ $F03F
F021: B0 F4 BCS $F017
F023: 20 E9 E9 JSR $E9E9 ; Print 'press record ...'
F026: B0 17 BCS $F03F
F028: A9 04 LDA #$04
F02A: 20 19 E9 JSR $E919 ; Write Tape Header
F02D: A9 BF LDA #$BF
F02F: A4 B9 LDY $B9 ; Current secondary address
F031: C0 60 CPY #$60
F033: F0 07 BEQ $F03C
F035: A0 00 LDY #$00
F037: A9 02 LDA #$02
F039: 91 B2 STA ($B2),Y
F03B: 98 TYA
F03C: 85 A6 STA $A6
F03E: 18 CLC
F03F: 60 RTS
F040: 20 B0 F0 JSR $F0B0 ; Set CIA to RS-232
F043: 8C 14 0A STY $0A14 ; RS-232 Status Register
F046: C4 B7 CPY $B7 ; Number of characters in file name
F048: F0 0B BEQ $F055
F04A: 20 AE F7 JSR $F7AE ; Get Char From Memory
F04D: 99 10 0A STA $0A10,Y ; RS-232 Control Register
F050: C8 INY
F051: C0 04 CPY #$04
F053: D0 F1 BNE $F046
F055: 20 8E E6 JSR $E68E ; Set RS-232 Bit Count
F058: 8E 15 0A STX $0A15 ; RS-232 Number of Bits To Send
F05B: AD 10 0A LDA $0A10 ; RS-232 Control Register
F05E: 29 0F AND #$0F
F060: F0 1C BEQ $F07E
F062: 0A ASL A
F063: AA TAX
F064: AD 03 0A LDA $0A03 ; PAL/NTSC System Flag
F067: D0 09 BNE $F072
F069: BC 4F E8 LDY $E84F,X
F06C: BD 4E E8 LDA $E84E,X
F06F: 4C 78 F0 JMP $F078
F072: BC 63 E8 LDY $E863,X
F075: BD 62 E8 LDA $E862,X
F078: 8C 13 0A STY $0A13
F07B: 8D 12 0A STA $0A12 ; RS-232 User Baud Rate
F07E: AD 12 0A LDA $0A12 ; RS-232 User Baud Rate
F081: 0A ASL A
F082: AA TAX
F083: AD 13 0A LDA $0A13
F086: 2A ROL A
F087: A8 TAY
F088: 8A TXA
F089: 69 C8 ADC #$C8
F08B: 8D 16 0A STA $0A16 ; RS-232 Baud Rate Full Bit Time (Created by OPEN)
F08E: 98 TYA
F08F: 69 00 ADC #$00
F091: 8D 17 0A STA $0A17
F094: AD 11 0A LDA $0A11 ; RS-232 Command Register
F097: 4A LSR A
F098: 90 09 BCC $F0A3
F09A: AD 01 DD LDA $DD01
F09D: 30 04 BMI $F0A3
F09F: 20 55 E7 JSR $E755
F0A2: 18 CLC
F0A3: AD 18 0A LDA $0A18 ; RS-232 Input Buffer Index to End
F0A6: 8D 19 0A STA $0A19 ; RS-232 Input Buffer Index to Start
F0A9: AD 1B 0A LDA $0A1B ; RS-232 Output Buffer Index to End
F0AC: 8D 1A 0A STA $0A1A ; RS-232 Output Buffer Index to Start
F0AF: 60 RTS
; Set CIA to RS-232
F0B0: A9 7F LDA #$7F
F0B2: 8D 0D DD STA $DD0D
F0B5: A9 06 LDA #$06
F0B7: 8D 03 DD STA $DD03
F0BA: 8D 01 DD STA $DD01
F0BD: A9 04 LDA #$04
F0BF: 0D 00 DD ORA $DD00
F0C2: 8D 00 DD STA $DD00
F0C5: A0 00 LDY #$00
F0C7: 8C 0F 0A STY $0A0F
F0CA: 60 RTS
; Check Serial Open
F0CB: A5 B9 LDA $B9 ; Current secondary address
F0CD: 30 04 BMI $F0D3
F0CF: A4 B7 LDY $B7 ; Number of characters in file name
F0D1: D0 02 BNE $F0D5
F0D3: 18 CLC
F0D4: 60 RTS
F0D5: A9 00 LDA #$00
F0D7: 85 90 STA $90 ; Status word ST
F0D9: A5 BA LDA $BA ; Current device
F0DB: 20 3E E3 JSR $E33E ; -listen-
F0DE: 24 90 BIT $90 ; Status word ST
F0E0: 30 0B BMI $F0ED
F0E2: A5 B9 LDA $B9 ; Current secondary address
F0E4: 09 F0 ORA #$F0
F0E6: 20 D2 E4 JSR $E4D2 ; -second-
F0E9: A5 90 LDA $90 ; Status word ST
F0EB: 10 05 BPL $F0F2
F0ED: 68 PLA
F0EE: 68 PLA
F0EF: 4C 88 F6 JMP $F688 ; Print 'device not present'
F0F2: A5 B7 LDA $B7 ; Number of characters in file name
F0F4: F0 0D BEQ $F103
F0F6: A0 00 LDY #$00
F0F8: 20 AE F7 JSR $F7AE ; Get Char From Memory
F0FB: 20 03 E5 JSR $E503 ; -ciout- Print Serial
F0FE: C8 INY
F0FF: C4 B7 CPY $B7 ; Number of characters in file name
F101: D0 F5 BNE $F0F8
F103: 4C B0 F5 JMP $F5B0
; -chkin-
F106: 20 02 F2 JSR $F202 ; Search For File
F109: D0 3E BNE $F149
F10B: 20 12 F2 JSR $F212 ; Set File Parameters
F10E: F0 13 BEQ $F123
F110: C9 03 CMP #$03
F112: F0 0F BEQ $F123
F114: B0 11 BCS $F127
F116: C9 02 CMP #$02
F118: D0 03 BNE $F11D
F11A: 4C 95 E7 JMP $E795 ; Connect RS-232 Input
F11D: A6 B9 LDX $B9 ; Current secondary address
F11F: E0 60 CPX #$60
F121: D0 20 BNE $F143
F123: 85 99 STA $99 ; Input device, normally 0
F125: 18 CLC
F126: 60 RTS
F127: AA TAX
F128: 20 3B E3 JSR $E33B ; -talk-
F12B: 24 90 BIT $90 ; Status word ST
F12D: 30 11 BMI $F140
F12F: A5 B9 LDA $B9 ; Current secondary address
F131: 10 05 BPL $F138
F133: 20 E9 E4 JSR $E4E9
F136: 10 03 BPL $F13B
F138: 20 E0 E4 JSR $E4E0 ; -tksa-
F13B: 8A TXA
F13C: 24 90 BIT $90 ; Status word ST
F13E: 10 E3 BPL $F123
F140: 4C 88 F6 JMP $F688 ; Print 'device not present'
F143: 4C 8B F6 JMP $F68B ; Print 'not input file'
F146: 4C 8E F6 JMP $F68E ; Print 'not output file'
F149: 4C 82 F6 JMP $F682 ; Print 'file not open'
; -chkout-
F14C: 20 02 F2 JSR $F202 ; Search For File
F14F: D0 F8 BNE $F149
F151: 20 12 F2 JSR $F212 ; Set File Parameters
F154: F0 F0 BEQ $F146
F156: C9 03 CMP #$03
F158: F0 0F BEQ $F169
F15A: B0 11 BCS $F16D
F15C: C9 02 CMP #$02
F15E: D0 03 BNE $F163
F160: 4C 29 E7 JMP $E729
F163: A6 B9 LDX $B9 ; Current secondary address
F165: E0 60 CPX #$60
F167: F0 DD BEQ $F146
F169: 85 9A STA $9A ; Output device, normally 3
F16B: 18 CLC
F16C: 60 RTS
F16D: AA TAX
F16E: 20 3E E3 JSR $E33E ; -listen-
F171: 24 90 BIT $90 ; Status word ST
F173: 30 CB BMI $F140
F175: A5 B9 LDA $B9 ; Current secondary address
F177: 10 05 BPL $F17E
F179: 20 D7 E4 JSR $E4D7 ; Set ATN High
F17C: D0 03 BNE $F181
F17E: 20 D2 E4 JSR $E4D2 ; -second-
F181: 8A TXA
F182: 24 90 BIT $90 ; Status word ST
F184: 10 E3 BPL $F169
F186: 30 B8 BMI $F140
; -close-
F188: 66 92 ROR $92
F18A: 20 07 F2 JSR $F207
F18D: D0 DC BNE $F16B
F18F: 20 12 F2 JSR $F212 ; Set File Parameters
F192: 8A TXA
F193: 48 PHA
F194: A5 BA LDA $BA ; Current device
F196: F0 4C BEQ $F1E4 ; Delete File
F198: C9 03 CMP #$03
F19A: F0 48 BEQ $F1E4 ; Delete File
F19C: B0 31 BCS $F1CF
F19E: C9 02 CMP #$02
F1A0: D0 07 BNE $F1A9
F1A2: 68 PLA
F1A3: 20 E5 F1 JSR $F1E5
F1A6: 4C B0 F0 JMP $F0B0 ; Set CIA to RS-232
F1A9: A5 B9 LDA $B9 ; Current secondary address
F1AB: 29 0F AND #$0F
F1AD: F0 35 BEQ $F1E4 ; Delete File
F1AF: 20 80 E9 JSR $E980 ; Get Buffer Address
F1B2: A9 00 LDA #$00
F1B4: 38 SEC
F1B5: 20 8C EF JSR $EF8C
F1B8: 20 15 EA JSR $EA15 ; Initiate Tape Write
F1BB: 90 04 BCC $F1C1
F1BD: 68 PLA
F1BE: A9 00 LDA #$00
F1C0: 60 RTS
F1C1: A5 B9 LDA $B9 ; Current secondary address
F1C3: C9 62 CMP #$62
F1C5: D0 1D BNE $F1E4 ; Delete File
F1C7: A9 05 LDA #$05
F1C9: 20 19 E9 JSR $E919 ; Write Tape Header
F1CC: 4C E4 F1 JMP $F1E4 ; Delete File
F1CF: 24 92 BIT $92
F1D1: 10 0E BPL $F1E1
F1D3: A5 BA LDA $BA ; Current device
F1D5: C9 08 CMP #$08
F1D7: 90 08 BCC $F1E1
F1D9: A5 B9 LDA $B9 ; Current secondary address
F1DB: 29 0F AND #$0F
F1DD: C9 0F CMP #$0F
F1DF: F0 03 BEQ $F1E4 ; Delete File
F1E1: 20 9E F5 JSR $F59E
; Delete File
F1E4: 68 PLA
F1E5: AA TAX
F1E6: C6 98 DEC $98 ; How many open files
F1E8: E4 98 CPX $98 ; How many open files
F1EA: F0 14 BEQ $F200
F1EC: A4 98 LDY $98 ; How many open files
F1EE: B9 62 03 LDA $0362,Y ; Logical File Number Table
F1F1: 9D 62 03 STA $0362,X ; Logical File Number Table
F1F4: B9 6C 03 LDA $036C,Y ; Device Number Table
F1F7: 9D 6C 03 STA $036C,X ; Device Number Table
F1FA: B9 76 03 LDA $0376,Y ; Secondary Addresse Table
F1FD: 9D 76 03 STA $0376,X ; Secondary Addresse Table
F200: 18 CLC
F201: 60 RTS
; Search For File
F202: A9 00 LDA #$00
F204: 85 90 STA $90 ; Status word ST
F206: 8A TXA
F207: A6 98 LDX $98 ; How many open files
F209: CA DEX
F20A: 30 05 BMI $F211
F20C: DD 62 03 CMP $0362,X ; Logical File Number Table
F20F: D0 F8 BNE $F209
F211: 60 RTS
; Set File Parameters
F212: BD 62 03 LDA $0362,X ; Logical File Number Table
F215: 85 B8 STA $B8 ; Current logical file
F217: BD 76 03 LDA $0376,X ; Secondary Addresse Table
F21A: 85 B9 STA $B9 ; Current secondary address
F21C: BD 6C 03 LDA $036C,X ; Device Number Table
F21F: 85 BA STA $BA ; Current device
F221: 60 RTS
; -clall-
F222: A9 00 LDA #$00
F224: 85 98 STA $98 ; How many open files
; -clrchn-
F226: A2 03 LDX #$03
F228: E4 9A CPX $9A ; Output device, normally 3
F22A: B0 03 BCS $F22F
F22C: 20 26 E5 JSR $E526 ; -unlsn-
F22F: E4 99 CPX $99 ; Input device, normally 0
F231: B0 03 BCS $F236
F233: 20 15 E5 JSR $E515 ; -untlk-
F236: 86 9A STX $9A ; Output device, normally 3
F238: A9 00 LDA #$00
F23A: 85 99 STA $99 ; Input device, normally 0
F23C: 60 RTS
; Clear I/O Path
F23D: 85 BA STA $BA ; Current device
F23F: C5 9A CMP $9A ; Output device, normally 3
F241: D0 05 BNE $F248
F243: A9 03 LDA #$03
F245: 85 9A STA $9A ; Output device, normally 3
F247: 2C .BYTE $2C
F248: C5 99 CMP $99 ; Input device, normally 0
F24A: D0 04 BNE $F250
F24C: A9 00 LDA #$00
F24E: 85 99 STA $99 ; Input device, normally 0
F250: A5 BA LDA $BA ; Current device
F252: A6 98 LDX $98 ; How many open files
F254: CA DEX
F255: 30 0D BMI $F264
F257: DD 6C 03 CMP $036C,X ; Device Number Table
F25A: D0 F8 BNE $F254
F25C: BD 62 03 LDA $0362,X ; Logical File Number Table
F25F: 20 C3 FF JSR $FFC3 ; (iclose) Close Vector [F188]
F262: 90 EC BCC $F250
F264: 60 RTS
; -load-
F265: 86 C3 STX $C3
F267: 84 C4 STY $C4
F269: 6C 30 03 JMP ($0330) ; LOAD Link [F26C]
; -kernalload-
F26C: 85 93 STA $93 ; Work value, monitor, LOAD / SAVE 0 = LOAD, 1 = VERIFY
F26E: A9 00 LDA #$00
F270: 85 90 STA $90 ; Status word ST
F272: A5 BA LDA $BA ; Current device
F274: C9 04 CMP #$04
F276: B0 03 BCS $F27B ; Serial Load
F278: 4C 26 F3 JMP $F326
; Serial Load
F27B: AD 1C 0A LDA $0A1C ; Fast Serial Internal/External Flag
F27E: 29 BE AND #$BE
F280: 8D 1C 0A STA $0A1C ; Fast Serial Internal/External Flag
F283: A6 B9 LDX $B9 ; Current secondary address
F285: 86 9E STX $9E
F287: A4 B7 LDY $B7 ; Number of characters in file name
F289: D0 03 BNE $F28E
F28B: 4C 1A F3 JMP $F31A
F28E: 84 9F STY $9F
F290: 20 0F F5 JSR $F50F ; Print 'searching'
F293: 20 A1 F3 JSR $F3A1 ; Disk Load
F296: B0 03 BCS $F29B
F298: 4C 9B F3 JMP $F39B
F29B: A4 9F LDY $9F
F29D: 84 B7 STY $B7 ; Number of characters in file name
F29F: A9 60 LDA #$60
F2A1: 85 B9 STA $B9 ; Current secondary address
F2A3: 20 CB F0 JSR $F0CB ; Check Serial Open
F2A6: A5 BA LDA $BA ; Current device
F2A8: 20 3B E3 JSR $E33B ; -talk-
F2AB: A5 B9 LDA $B9 ; Current secondary address
F2AD: 20 E0 E4 JSR $E4E0 ; -tksa-
F2B0: 20 3E E4 JSR $E43E ; -acptr-
F2B3: 85 AE STA $AE ; Tape end address / End of program
F2B5: 20 3E E4 JSR $E43E ; -acptr-
F2B8: 85 AF STA $AF
F2BA: A5 90 LDA $90 ; Status word ST
F2BC: 4A LSR A
F2BD: 4A LSR A
F2BE: B0 57 BCS $F317
F2C0: A5 9E LDA $9E
F2C2: D0 08 BNE $F2CC
F2C4: A5 C3 LDA $C3
F2C6: 85 AE STA $AE ; Tape end address / End of program
F2C8: A5 C4 LDA $C4
F2CA: 85 AF STA $AF
F2CC: 20 4A FC JSR $FC4A ; ?
F2CF: A9 FD LDA #$FD
F2D1: 25 90 AND $90 ; Status word ST
F2D3: 85 90 STA $90 ; Status word ST
F2D5: 20 E1 FF JSR $FFE1 ; (istop) Test-Stop Vector [F66E]
F2D8: F0 49 BEQ $F323
F2DA: 20 3E E4 JSR $E43E ; -acptr-
F2DD: AA TAX
F2DE: A5 90 LDA $90 ; Status word ST
F2E0: 4A LSR A
F2E1: 4A LSR A
F2E2: B0 EB BCS $F2CF
F2E4: 8A TXA
F2E5: A4 93 LDY $93 ; Work value, monitor, LOAD / SAVE 0 = LOAD, 1 = VERIFY
F2E7: F0 12 BEQ $F2FB
F2E9: 85 BD STA $BD
F2EB: A0 00 LDY #$00
F2ED: 20 C9 F7 JSR $F7C9 ; Read Byte to be Saved
F2F0: C5 BD CMP $BD
F2F2: F0 0A BEQ $F2FE
F2F4: A9 10 LDA #$10
F2F6: 20 57 F7 JSR $F757 ; Set Status Bit
F2F9: D0 03 BNE $F2FE
F2FB: 20 BF F7 JSR $F7BF
F2FE: E6 AE INC $AE ; Tape end address / End of program
F300: D0 08 BNE $F30A
F302: E6 AF INC $AF
F304: A5 AF LDA $AF
F306: C9 FF CMP #$FF
F308: F0 16 BEQ $F320
F30A: 24 90 BIT $90 ; Status word ST
F30C: 50 C1 BVC $F2CF
F30E: 20 15 E5 JSR $E515 ; -untlk-
F311: 20 9E F5 JSR $F59E
F314: 4C 9B F3 JMP $F39B
F317: 4C 85 F6 JMP $F685 ; Print 'file not found'
F31A: 4C 91 F6 JMP $F691 ; Print 'missing file name'
F31D: 4C 94 F6 JMP $F694 ; Print 'illegal device no'
F320: 4C 97 F6 JMP $F697 ; Error #0
F323: 4C B5 F5 JMP $F5B5 ; Terminate Serial Input
F326: C9 01 CMP #$01
F328: D0 F3 BNE $F31D
; Tape Load
F32A: 20 80 E9 JSR $E980 ; Get Buffer Address
F32D: 90 EE BCC $F31D
F32F: 20 C8 E9 JSR $E9C8 ; Print 'press play on tape'
F332: B0 6C BCS $F3A0
F334: 20 0F F5 JSR $F50F ; Print 'searching'
F337: A5 B7 LDA $B7 ; Number of characters in file name
F339: F0 09 BEQ $F344
F33B: 20 9A E9 JSR $E99A ; Find Specific Header
F33E: 90 0B BCC $F34B
F340: F0 5E BEQ $F3A0
F342: B0 D3 BCS $F317
F344: 20 D0 E8 JSR $E8D0 ; Find Any Tape Header
F347: F0 57 BEQ $F3A0
F349: B0 CC BCS $F317
F34B: 38 SEC
F34C: A5 90 LDA $90 ; Status word ST
F34E: 29 10 AND #$10
F350: D0 4E BNE $F3A0
F352: E0 01 CPX #$01
F354: F0 11 BEQ $F367
F356: E0 03 CPX #$03
F358: D0 DD BNE $F337
F35A: A0 01 LDY #$01
F35C: B1 B2 LDA ($B2),Y
F35E: 85 C3 STA $C3
F360: C8 INY
F361: B1 B2 LDA ($B2),Y
F363: 85 C4 STA $C4
F365: B0 04 BCS $F36B
F367: A5 B9 LDA $B9 ; Current secondary address
F369: D0 EF BNE $F35A
F36B: A0 03 LDY #$03
F36D: B1 B2 LDA ($B2),Y
F36F: A0 01 LDY #$01
F371: F1 B2 SBC ($B2),Y
F373: AA TAX
F374: A0 04 LDY #$04
F376: B1 B2 LDA ($B2),Y
F378: A0 02 LDY #$02
F37A: F1 B2 SBC ($B2),Y
F37C: A8 TAY
F37D: 18 CLC
F37E: 8A TXA
F37F: 65 C3 ADC $C3
F381: 85 AE STA $AE ; Tape end address / End of program
F383: 98 TYA
F384: 65 C4 ADC $C4
F386: 85 AF STA $AF
F388: C9 FF CMP #$FF
F38A: F0 94 BEQ $F320
F38C: A5 C3 LDA $C3
F38E: 85 C1 STA $C1
F390: A5 C4 LDA $C4
F392: 85 C2 STA $C2
F394: 20 33 F5 JSR $F533 ; Print 'loading'
F397: 20 FB E9 JSR $E9FB
F39A: 24 .BYTE $24
F39B: 18 CLC
F39C: A6 AE LDX $AE ; Tape end address / End of program
F39E: A4 AF LDY $AF
F3A0: 60 RTS
; Disk Load
F3A1: A0 00 LDY #$00
F3A3: 20 AE F7 JSR $F7AE ; Get Char From Memory
F3A6: C9 24 CMP #$24
F3A8: F0 F6 BEQ $F3A0
F3AA: A6 BA LDX $BA ; Current device
F3AC: A0 0F LDY #$0F
F3AE: A9 00 LDA #$00
F3B0: 20 38 F7 JSR $F738 ; -setlfs-
F3B3: 85 B7 STA $B7 ; Number of characters in file name
F3B5: 20 C0 FF JSR $FFC0 ; (iopen) Open Vector [EFBD]
F3B8: A6 B8 LDX $B8 ; Current logical file
F3BA: 20 C9 FF JSR $FFC9 ; (ichkout) Set Output [F14C]
F3BD: 90 08 BCC $F3C7
F3BF: 20 8C F4 JSR $F48C ; Close Off Serial
F3C2: 68 PLA
F3C3: 68 PLA
F3C4: 4C 88 F6 JMP $F688 ; Print 'device not present'
F3C7: A0 03 LDY #$03
F3C9: B9 0B F5 LDA $F50B,Y
F3CC: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
F3CF: 88 DEY
F3D0: D0 F7 BNE $F3C9
F3D2: 20 AE F7 JSR $F7AE ; Get Char From Memory
F3D5: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
F3D8: C8 INY
F3D9: C4 9F CPY $9F
F3DB: D0 F5 BNE $F3D2
F3DD: 20 CC FF JSR $FFCC ; (iclrch) Restore I/O Vector [F226]
F3E0: 2C 1C 0A BIT $0A1C ; Fast Serial Internal/External Flag
F3E3: 70 05 BVS $F3EA ; Burst Load
F3E5: 20 8C F4 JSR $F48C ; Close Off Serial
F3E8: 38 SEC
F3E9: 60 RTS
; Burst Load
F3EA: A5 9F LDA $9F
F3EC: 85 B7 STA $B7 ; Number of characters in file name
F3EE: 78 SEI
F3EF: 20 45 E5 JSR $E545 ; Set Clock High
F3F2: 20 C3 E5 JSR $E5C3 ; Fast Disk Off
F3F5: 2C 0D DC BIT $DC0D
F3F8: 20 03 F5 JSR $F503 ; Toggle Clock Line
F3FB: 20 BA F4 JSR $F4BA ; Get Serial Byte
F3FE: C9 02 CMP #$02
F400: D0 08 BNE $F40A
F402: 20 8C F4 JSR $F48C ; Close Off Serial
F405: 68 PLA
F406: 68 PLA
F407: 4C 85 F6 JMP $F685 ; Print 'file not found'
F40A: 48 PHA
F40B: C9 1F CMP #$1F
F40D: D0 0B BNE $F41A
F40F: 20 03 F5 JSR $F503 ; Toggle Clock Line
F412: 20 BA F4 JSR $F4BA ; Get Serial Byte
F415: 85 A5 STA $A5
F417: 4C 21 F4 JMP $F421
F41A: C9 02 CMP #$02
F41C: 90 03 BCC $F421
F41E: 68 PLA
F41F: B0 77 BCS $F498
F421: 20 33 F5 JSR $F533 ; Print 'loading'
F424: 20 03 F5 JSR $F503 ; Toggle Clock Line
F427: 20 BA F4 JSR $F4BA ; Get Serial Byte
F42A: 85 AE STA $AE ; Tape end address / End of program
F42C: 20 03 F5 JSR $F503 ; Toggle Clock Line
F42F: 20 BA F4 JSR $F4BA ; Get Serial Byte
F432: 85 AF STA $AF
F434: A6 9E LDX $9E
F436: D0 08 BNE $F440
F438: A5 C3 LDA $C3
F43A: A6 C4 LDX $C4
F43C: 85 AE STA $AE ; Tape end address / End of program
F43E: 86 AF STX $AF
F440: A5 AE LDA $AE ; Tape end address / End of program
F442: A6 AF LDX $AF
F444: 85 AC STA $AC
F446: 86 AD STX $AD
F448: 68 PLA
F449: C9 1F CMP #$1F
F44B: F0 32 BEQ $F47F
F44D: 20 03 F5 JSR $F503 ; Toggle Clock Line
F450: A9 FC LDA #$FC
F452: 85 A5 STA $A5
F454: 20 3D F6 JSR $F63D ; Watch For RUN or Shift
F457: 20 E1 FF JSR $FFE1 ; (istop) Test-Stop Vector [F66E]
F45A: F0 4A BEQ $F4A6
F45C: 20 C5 F4 JSR $F4C5 ; Receive Serial Byte
F45F: B0 51 BCS $F4B2
F461: 20 BA F4 JSR $F4BA ; Get Serial Byte
F464: C9 02 CMP #$02
F466: 90 06 BCC $F46E
F468: C9 1F CMP #$1F
F46A: F0 0B BEQ $F477
F46C: D0 2A BNE $F498
F46E: 20 03 F5 JSR $F503 ; Toggle Clock Line
F471: A9 FE LDA #$FE
F473: 85 A5 STA $A5
F475: D0 DD BNE $F454
F477: 20 03 F5 JSR $F503 ; Toggle Clock Line
F47A: 20 BA F4 JSR $F4BA ; Get Serial Byte
F47D: 85 A5 STA $A5
F47F: 20 03 F5 JSR $F503 ; Toggle Clock Line
F482: 20 C5 F4 JSR $F4C5 ; Receive Serial Byte
F485: B0 2B BCS $F4B2
F487: A9 40 LDA #$40
F489: 20 57 F7 JSR $F757 ; Set Status Bit
; Close Off Serial
F48C: 20 45 E5 JSR $E545 ; Set Clock High
F48F: 58 CLI
F490: A5 B8 LDA $B8 ; Current logical file
F492: 38 SEC
F493: 20 C3 FF JSR $FFC3 ; (iclose) Close Vector [F188]
F496: 18 CLC
F497: 60 RTS
F498: A9 02 LDA #$02
F49A: 20 57 F7 JSR $F757 ; Set Status Bit
F49D: 20 8C F4 JSR $F48C ; Close Off Serial
F4A0: 68 PLA
F4A1: 68 PLA
F4A2: A9 29 LDA #$29
F4A4: 38 SEC
F4A5: 60 RTS
F4A6: 20 8C F4 JSR $F48C ; Close Off Serial
F4A9: A9 00 LDA #$00
F4AB: 85 B9 STA $B9 ; Current secondary address
F4AD: 68 PLA
F4AE: 68 PLA
F4AF: 4C B5 F5 JMP $F5B5 ; Terminate Serial Input
F4B2: 20 8C F4 JSR $F48C ; Close Off Serial
F4B5: 68 PLA
F4B6: 68 PLA
F4B7: 4C 97 F6 JMP $F697 ; Error #0
; Get Serial Byte
F4BA: A9 08 LDA #$08
F4BC: 2C 0D DC BIT $DC0D
F4BF: F0 FB BEQ $F4BC
F4C1: AD 0C DC LDA $DC0C
F4C4: 60 RTS
; Receive Serial Byte
F4C5: A9 08 LDA #$08
F4C7: 2C 0D DC BIT $DC0D
F4CA: F0 FB BEQ $F4C7
F4CC: AC 0C DC LDY $DC0C
F4CF: AD 00 DD LDA $DD00
F4D2: 49 10 EOR #$10
F4D4: 8D 00 DD STA $DD00
F4D7: 98 TYA
F4D8: A4 93 LDY $93 ; Work value, monitor, LOAD / SAVE 0 = LOAD, 1 = VERIFY
F4DA: F0 12 BEQ $F4EE
F4DC: 85 BD STA $BD
F4DE: A0 00 LDY #$00
F4E0: 20 C9 F7 JSR $F7C9 ; Read Byte to be Saved
F4E3: C5 BD CMP $BD
F4E5: F0 0A BEQ $F4F1
F4E7: A9 10 LDA #$10
F4E9: 20 57 F7 JSR $F757 ; Set Status Bit
F4EC: D0 03 BNE $F4F1
F4EE: 20 BF F7 JSR $F7BF
F4F1: E6 AE INC $AE ; Tape end address / End of program
F4F3: D0 08 BNE $F4FD
F4F5: E6 AF INC $AF
F4F7: A5 AF LDA $AF
F4F9: C9 FF CMP #$FF
F4FB: F0 05 BEQ $F502
F4FD: C6 A5 DEC $A5
F4FF: D0 C4 BNE $F4C5 ; Receive Serial Byte
F501: 18 CLC
F502: 60 RTS
; Toggle Clock Line
F503: AD 00 DD LDA $DD00
F506: 49 10 EOR #$10
F508: 8D 00 DD STA $DD00
F50B: 60 RTS
; Print 'u0' Disk Reset
F50C: 1F 30 55 ; '{BLUE}0u'
; Print 'searching'
F50F: A5 9D LDA $9D ; I/O messages: 192 = all, 128 = commands, 64 = errors, 0 = nil
F511: 10 1F BPL $F532
F513: A0 0C LDY #$0C
F515: 20 22 F7 JSR $F722 ; Print I/O Message
F518: A5 B7 LDA $B7 ; Number of characters in file name
F51A: F0 16 BEQ $F532
F51C: A0 17 LDY #$17
F51E: 20 22 F7 JSR $F722 ; Print I/O Message
; Send File Name
F521: A4 B7 LDY $B7 ; Number of characters in file name
F523: F0 0D BEQ $F532
F525: A0 00 LDY #$00
F527: 20 AE F7 JSR $F7AE ; Get Char From Memory
F52A: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
F52D: C8 INY
F52E: C4 B7 CPY $B7 ; Number of characters in file name
F530: D0 F5 BNE $F527
F532: 60 RTS
; Print 'loading'
F533: A0 49 LDY #$49
F535: A5 93 LDA $93 ; Work value, monitor, LOAD / SAVE 0 = LOAD, 1 = VERIFY
F537: F0 02 BEQ $F53B
F539: A0 59 LDY #$59
F53B: 4C 1E F7 JMP $F71E ; Print If Direct
; -save-
F53E: 86 AE STX $AE ; Tape end address / End of program
F540: 84 AF STY $AF
F542: AA TAX
F543: B5 00 LDA $00,X
F545: 85 C1 STA $C1
F547: B5 01 LDA $01,X
F549: 85 C2 STA $C2
F54B: 6C 32 03 JMP ($0332) ; SAVE Link [F54E]
; -kernalsave-
F54E: A5 BA LDA $BA ; Current device
F550: C9 01 CMP #$01
F552: F0 74 BEQ $F5C8 ; Save to Tape
F554: C9 04 CMP #$04
F556: B0 09 BCS $F561
F558: 4C 94 F6 JMP $F694 ; Print 'illegal device no'
F55B: 4C 91 F6 JMP $F691 ; Print 'missing file name'
F55E: 4C 85 F6 JMP $F685 ; Print 'file not found'
F561: A4 B7 LDY $B7 ; Number of characters in file name
F563: F0 F6 BEQ $F55B
F565: A9 61 LDA #$61
F567: 85 B9 STA $B9 ; Current secondary address
F569: 20 CB F0 JSR $F0CB ; Check Serial Open
F56C: 20 BC F5 JSR $F5BC ; Print 'saving'
F56F: A5 BA LDA $BA ; Current device
F571: 20 3E E3 JSR $E33E ; -listen-
F574: A5 B9 LDA $B9 ; Current secondary address
F576: 20 D2 E4 JSR $E4D2 ; -second-
F579: A0 00 LDY #$00
F57B: 20 51 ED JSR $ED51 ; Reset Pointer
F57E: 20 03 E5 JSR $E503 ; -ciout- Print Serial
F581: A5 AD LDA $AD
F583: 20 03 E5 JSR $E503 ; -ciout- Print Serial
F586: 20 B7 EE JSR $EEB7 ; Check End Address
F589: B0 10 BCS $F59B
F58B: 20 CC F7 JSR $F7CC
F58E: 20 03 E5 JSR $E503 ; -ciout- Print Serial
F591: 20 E1 FF JSR $FFE1 ; (istop) Test-Stop Vector [F66E]
F594: F0 1F BEQ $F5B5 ; Terminate Serial Input
F596: 20 C1 EE JSR $EEC1 ; Bump Address
F599: D0 EB BNE $F586
F59B: 20 26 E5 JSR $E526 ; -unlsn-
F59E: 24 B9 BIT $B9 ; Current secondary address
F5A0: 30 11 BMI $F5B3
F5A2: A5 BA LDA $BA ; Current device
F5A4: 20 3E E3 JSR $E33E ; -listen-
F5A7: A5 B9 LDA $B9 ; Current secondary address
F5A9: 29 EF AND #$EF
F5AB: 09 E0 ORA #$E0
F5AD: 20 D2 E4 JSR $E4D2 ; -second-
F5B0: 20 26 E5 JSR $E526 ; -unlsn-
F5B3: 18 CLC
F5B4: 60 RTS
; Terminate Serial Input
F5B5: 20 9E F5 JSR $F59E
F5B8: A9 00 LDA #$00
F5BA: 38 SEC
F5BB: 60 RTS
; Print 'saving'
F5BC: A5 9D LDA $9D ; I/O messages: 192 = all, 128 = commands, 64 = errors, 0 = nil
F5BE: 10 37 BPL $F5F7
F5C0: A0 51 LDY #$51
F5C2: 20 22 F7 JSR $F722 ; Print I/O Message
F5C5: 4C 21 F5 JMP $F521 ; Send File Name
; Save to Tape
F5C8: 20 80 E9 JSR $E980 ; Get Buffer Address
F5CB: 90 8B BCC $F558
F5CD: 20 E9 E9 JSR $E9E9 ; Print 'press record ...'
F5D0: B0 25 BCS $F5F7
F5D2: 20 BC F5 JSR $F5BC ; Print 'saving'
F5D5: A2 03 LDX #$03
F5D7: A5 B9 LDA $B9 ; Current secondary address
F5D9: 29 01 AND #$01
F5DB: D0 02 BNE $F5DF
F5DD: A2 01 LDX #$01
F5DF: 8A TXA
F5E0: 20 19 E9 JSR $E919 ; Write Tape Header
F5E3: B0 12 BCS $F5F7
F5E5: 20 18 EA JSR $EA18
F5E8: B0 0D BCS $F5F7
F5EA: A5 B9 LDA $B9 ; Current secondary address
F5EC: 29 02 AND #$02
F5EE: F0 06 BEQ $F5F6
F5F0: A9 05 LDA #$05
F5F2: 20 19 E9 JSR $E919 ; Write Tape Header
F5F5: 24 .BYTE $24
F5F6: 18 CLC
F5F7: 60 RTS
; -udtim-
F5F8: E6 A2 INC $A2 ; Jiffy clock Low
F5FA: D0 06 BNE $F602
F5FC: E6 A1 INC $A1 ; Jiffy clock Middle
F5FE: D0 02 BNE $F602
F600: E6 A0 INC $A0 ; Jiffy clock High
F602: 38 SEC
F603: A5 A2 LDA $A2 ; Jiffy clock Low
F605: E9 01 SBC #$01
F607: A5 A1 LDA $A1 ; Jiffy clock Middle
F609: E9 1A SBC #$1A
F60B: A5 A0 LDA $A0 ; Jiffy clock High
F60D: E9 4F SBC #$4F
F60F: 90 08 BCC $F619
F611: A2 00 LDX #$00
F613: 86 A0 STX $A0 ; Jiffy clock High
F615: 86 A1 STX $A1 ; Jiffy clock Middle
F617: 86 A2 STX $A2 ; Jiffy clock Low
F619: AD 1D 0A LDA $0A1D
F61C: D0 0B BNE $F629
F61E: AD 1E 0A LDA $0A1E
F621: D0 03 BNE $F626
F623: CE 1F 0A DEC $0A1F
F626: CE 1E 0A DEC $0A1E
F629: CE 1D 0A DEC $0A1D
F62C: 2C 03 0A BIT $0A03 ; PAL/NTSC System Flag
F62F: 10 0C BPL $F63D ; Watch For RUN or Shift
F631: CE 36 0A DEC $0A36
F634: 10 07 BPL $F63D ; Watch For RUN or Shift
F636: A9 05 LDA #$05
F638: 8D 36 0A STA $0A36
F63B: D0 BB BNE $F5F8 ; -udtim-
; Watch For RUN or Shift
F63D: AD 01 DC LDA $DC01
F640: CD 01 DC CMP $DC01
F643: D0 F8 BNE $F63D ; Watch For RUN or Shift
F645: AA TAX
F646: 30 13 BMI $F65B
F648: A2 BD LDX #$BD
F64A: 8E 00 DC STX $DC00
F64D: AE 01 DC LDX $DC01
F650: EC 01 DC CPX $DC01
F653: D0 F8 BNE $F64D
F655: 8D 00 DC STA $DC00
F658: E8 INX
F659: D0 02 BNE $F65D
F65B: 85 91 STA $91 ; Keyswitch: STOP and RVS flags (STOP, Q, C=, Space, 2, CTRL, <-, 1)
F65D: 60 RTS
; -rdtim-
F65E: 78 SEI
F65F: A5 A2 LDA $A2 ; Jiffy clock Low
F661: A6 A1 LDX $A1 ; Jiffy clock Middle
F663: A4 A0 LDY $A0 ; Jiffy clock High
; -settim-
F665: 78 SEI
F666: 85 A2 STA $A2 ; Jiffy clock Low
F668: 86 A1 STX $A1 ; Jiffy clock Middle
F66A: 84 A0 STY $A0 ; Jiffy clock High
F66C: 58 CLI
F66D: 60 RTS
; -stop-
F66E: A5 91 LDA $91 ; Keyswitch: STOP and RVS flags (STOP, Q, C=, Space, 2, CTRL, <-, 1)
F670: C9 7F CMP #$7F
F672: D0 07 BNE $F67B
F674: 08 PHP
F675: 20 CC FF JSR $FFCC ; (iclrch) Restore I/O Vector [F226]
F678: 85 D0 STA $D0 ; Number of characters in keyboard buffer
F67A: 28 PLP
F67B: 60 RTS
; Print 'too many files'
F67C: A9 01 LDA #$01
F67E: 2C .BYTE $2C
; Print 'file open'
F67F: A9 02 LDA #$02
F681: 2C .BYTE $2C
; Print 'file not open'
F682: A9 03 LDA #$03
F684: 2C .BYTE $2C
; Print 'file not found'
F685: A9 04 LDA #$04
F687: 2C .BYTE $2C
; Print 'device not present'
F688: A9 05 LDA #$05
F68A: 2C .BYTE $2C
; Print 'not input file'
F68B: A9 06 LDA #$06
F68D: 2C .BYTE $2C
; Print 'not output file'
F68E: A9 07 LDA #$07
F690: 2C .BYTE $2C
; Print 'missing file name'
F691: A9 08 LDA #$08
F693: 2C .BYTE $2C
; Print 'illegal device no'
F694: A9 09 LDA #$09
F696: 2C .BYTE $2C
; Error #0
F697: A9 10 LDA #$10
F699: 48 PHA
F69A: 20 CC FF JSR $FFCC ; (iclrch) Restore I/O Vector [F226]
F69D: A0 00 LDY #$00
F69F: 24 9D BIT $9D ; I/O messages: 192 = all, 128 = commands, 64 = errors, 0 = nil
F6A1: 50 0A BVC $F6AD
F6A3: 20 22 F7 JSR $F722 ; Print I/O Message
F6A6: 68 PLA
F6A7: 48 PHA
F6A8: 09 30 ORA #$30
F6AA: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
F6AD: 68 PLA
F6AE: 38 SEC
F6AF: 60 RTS
; Messages
F6B0: 0D 49 2F 4F 20 45 52 52 ; '{CR}i/o err'
F6B8: 4F 52 20 A3 0D 53 45 41 ; 'or .{CR}sea'
F6C0: 52 43 48 49 4E 47 A0 46 ; 'rching.f'
F6C8: 4F 52 A0 0D 50 52 45 53 ; 'or.{CR}pres'
F6D0: 53 20 50 4C 41 59 20 4F ; 's play o'
F6D8: 4E 20 54 41 50 C5 50 52 ; 'n tapEpr'
F6E0: 45 53 53 20 52 45 43 4F ; 'ess reco'
F6E8: 52 44 20 26 20 50 4C 41 ; 'rd & pla'
F6F0: 59 20 4F 4E 20 54 41 50 ; 'y on tap'
F6F8: C5 0D 4C 4F 41 44 49 4E ; 'E{CR}loadin'
F700: C7 0D 53 41 56 49 4E 47 ; 'G{CR}saving'
F708: A0 0D 56 45 52 49 46 59 ; '.{CR}verify'
F710: 49 4E C7 0D 46 4F 55 4E ; 'inG{CR}foun'
F718: 44 A0 0D 4F 4B 8D ; 'd.{CR}ok{SHCR}'
; Print If Direct
F71E: 24 9D BIT $9D ; I/O messages: 192 = all, 128 = commands, 64 = errors, 0 = nil
F720: 10 0D BPL $F72F
; Print I/O Message
F722: B9 B0 F6 LDA $F6B0,Y ; Messages
F725: 08 PHP
F726: 29 7F AND #$7F
F728: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
F72B: C8 INY
F72C: 28 PLP
F72D: 10 F3 BPL $F722 ; Print I/O Message
F72F: 18 CLC
F730: 60 RTS
; -setnam-
F731: 85 B7 STA $B7 ; Number of characters in file name
F733: 86 BB STX $BB ; Pointer to file name
F735: 84 BC STY $BC
F737: 60 RTS
; -setlfs-
F738: 85 B8 STA $B8 ; Current logical file
F73A: 86 BA STX $BA ; Current device
F73C: 84 B9 STY $B9 ; Current secondary address
F73E: 60 RTS
; Set Load/Save Bank
F73F: 85 C6 STA $C6
F741: 86 C7 STX $C7
F743: 60 RTS
; -rdst-
F744: A5 BA LDA $BA ; Current device
F746: C9 02 CMP #$02
F748: D0 0B BNE $F755
F74A: AD 14 0A LDA $0A14 ; RS-232 Status Register
F74D: 48 PHA
F74E: A9 00 LDA #$00
F750: 8D 14 0A STA $0A14 ; RS-232 Status Register
F753: 68 PLA
F754: 60 RTS
F755: A5 90 LDA $90 ; Status word ST
; Set Status Bit
F757: 05 90 ORA $90 ; Status word ST
F759: 85 90 STA $90 ; Status word ST
F75B: 60 RTS
; -setmsg-
F75C: 85 9D STA $9D ; I/O messages: 192 = all, 128 = commands, 64 = errors, 0 = nil
F75E: 60 RTS
; Set Serial Timeout
F75F: 8D 0E 0A STA $0A0E
F762: 60 RTS
; -memtop-
F763: 90 06 BCC $F76B
F765: AE 07 0A LDX $0A07
F768: AC 08 0A LDY $0A08
F76B: 8E 07 0A STX $0A07
F76E: 8C 08 0A STY $0A08
F771: 60 RTS
; -membot-
F772: 90 06 BCC $F77A
F774: AE 05 0A LDX $0A05
F777: AC 06 0A LDY $0A06
F77A: 8E 05 0A STX $0A05
F77D: 8C 06 0A STY $0A06
F780: 60 RTS
; -iobase-
F781: A2 00 LDX #$00
F783: A0 D0 LDY #$D0
F785: 60 RTS
; Search For SA
F786: 98 TYA
F787: A6 98 LDX $98 ; How many open files
F789: CA DEX
F78A: 30 0F BMI $F79B
F78C: DD 76 03 CMP $0376,X ; Secondary Addresse Table
F78F: D0 F8 BNE $F789
F791: 20 12 F2 JSR $F212 ; Set File Parameters
F794: AA TAX
F795: A5 B8 LDA $B8 ; Current logical file
F797: A4 B9 LDY $B9 ; Current secondary address
F799: 18 CLC
F79A: 60 RTS
F79B: 38 SEC
F79C: 60 RTS
; Search & Set Up File
F79D: AA TAX
F79E: 20 02 F2 JSR $F202 ; Search For File
F7A1: F0 EE BEQ $F791
F7A3: D0 F6 BNE $F79B
; Trigger DMA
F7A5: BD F0 F7 LDA $F7F0,X ; MMU Bank Configuration Values
F7A8: 29 FE AND #$FE
F7AA: AA TAX
F7AB: 4C F0 03 JMP $03F0
; Get Char From Memory
F7AE: 8E 35 0A STX $0A35
F7B1: A6 C7 LDX $C7
F7B3: A9 BB LDA #$BB
F7B5: 20 D0 F7 JSR $F7D0 ; Get Char From Memory Bank
F7B8: AE 35 0A LDX $0A35
F7BB: 60 RTS
; Store Loaded Byte
F7BC: A2 AC LDX #$AC
F7BE: 2C .BYTE $2C
F7BF: A2 AE LDX #$AE
F7C1: 8E B9 02 STX $02B9
F7C4: A6 C6 LDX $C6
F7C6: 4C DA F7 JMP $F7DA ; Store Char to Memory Bank
; Read Byte to be Saved
F7C9: A9 AE LDA #$AE
F7CB: 2C .BYTE $2C
F7CC: A9 AC LDA #$AC
F7CE: A6 C6 LDX $C6
; Get Char From Memory Bank
F7D0: 8D AA 02 STA $02AA
F7D3: BD F0 F7 LDA $F7F0,X ; MMU Bank Configuration Values
F7D6: AA TAX
F7D7: 4C A2 02 JMP $02A2 ; Bank Peek Subroutine
; Store Char to Memory Bank
F7DA: 48 PHA
F7DB: BD F0 F7 LDA $F7F0,X ; MMU Bank Configuration Values
F7DE: AA TAX
F7DF: 68 PLA
F7E0: 4C AF 02 JMP $02AF ; Bank Poke Subroutine
; Compare Char With Memory Bank
F7E3: 48 PHA
F7E4: BD F0 F7 LDA $F7F0,X ; MMU Bank Configuration Values
F7E7: AA TAX
F7E8: 68 PLA
F7E9: 4C BE 02 JMP $02BE ; Bank Compare Subroutine
; Load Memory Control Mask
F7EC: BD F0 F7 LDA $F7F0,X ; MMU Bank Configuration Values
F7EF: 60 RTS
; MMU Bank Configuration Values
F7F0: 3F 7F BF FF 16 56 96 D6 ; '?....v{LTRED}V'
F7F8: 2A 6A AA EA 06 0A 01 00 ; '*j...{LF}.{0}'
; Subroutines to $02a2-$02fb
F800: AD 00 FF LDA $FF00 ; MMU Configuration Register
F803: 8E 00 FF STX $FF00 ; MMU Configuration Register
F806: AA TAX
F807: B1 FF LDA ($FF),Y
F809: 8E 00 FF STX $FF00 ; MMU Configuration Register
F80C: 60 RTS
F80D: 48 PHA
F80E: AD 00 FF LDA $FF00 ; MMU Configuration Register
F811: 8E 00 FF STX $FF00 ; MMU Configuration Register
F814: AA TAX
F815: 68 PLA
F816: 91 FF STA ($FF),Y
F818: 8E 00 FF STX $FF00 ; MMU Configuration Register
F81B: 60 RTS
F81C: 48 PHA
F81D: AD 00 FF LDA $FF00 ; MMU Configuration Register
F820: 8E 00 FF STX $FF00 ; MMU Configuration Register
F823: AA TAX
F824: 68 PLA
F825: D1 FF CMP ($FF),Y
F827: 8E 00 FF STX $FF00 ; MMU Configuration Register
F82A: 60 RTS
F82B: 20 E3 02 JSR $02E3 ; JMP to another bank
F82E: 85 06 STA $06 ; SYS and MLM register save (A)
F830: 86 07 STX $07 ; SYS and MLM register save (X)
F832: 84 08 STY $08 ; SYS and MLM register save (Y)
F834: 08 PHP
F835: 68 PLA
F836: 85 05 STA $05 ; SYS and MLM register save (SR)
F838: BA TSX
F839: 86 09 STX $09 ; SYS and MLM register save (SP)
F83B: A9 00 LDA #$00
F83D: 8D 00 FF STA $FF00 ; MMU Configuration Register
F840: 60 RTS
F841: A2 00 LDX #$00
F843: B5 03 LDA $03,X ; SYS address low, MLM register PC
F845: 48 PHA
F846: E8 INX
F847: E0 03 CPX #$03
F849: 90 F8 BCC $F843
F84B: A6 02 LDX $02 ; Bank Number, Jump to SYS Address
F84D: 20 6B FF JSR $FF6B ; setcfg
F850: 8D 00 FF STA $FF00 ; MMU Configuration Register
F853: A5 06 LDA $06 ; SYS and MLM register save (A)
F855: A6 07 LDX $07 ; SYS and MLM register save (X)
F857: A4 08 LDY $08 ; SYS and MLM register save (Y)
F859: 40 RTI
; DMA Code to $03f0
F85A: AE 00 FF LDX $FF00 ; MMU Configuration Register
F85D: 8C 01 DF STY $DF01
F860: 8D 00 FF STA $FF00 ; MMU Configuration Register
F863: 8E 00 FF STX $FF00 ; MMU Configuration Register
F866: 60 RTS
; Check Auto Start ROM
F867: 78 SEI
F868: A2 03 LDX #$03
F86A: 8E C0 0A STX $0AC0
F86D: AE C0 0A LDX $0AC0
F870: BD C1 0A LDA $0AC1,X
F873: F0 11 BEQ $F886
F875: A0 00 LDY #$00
F877: BD BC E2 LDA $E2BC,X ; ROM Addresses High
F87A: 85 03 STA $03 ; SYS address low, MLM register PC
F87C: 84 04 STY $04 ; SYS address high, MLM register PC
F87E: BD C0 E2 LDA $E2C0,X ; ROM Banks
F881: 85 02 STA $02 ; Bank Number, Jump to SYS Address
F883: 20 CD 02 JSR $02CD ; JSR to another bank
F886: CE C0 0A DEC $0AC0
F889: 10 E2 BPL $F86D
F88B: 58 CLI
F88C: A2 08 LDX #$08 ; default device
F88E: A9 30 LDA #$30 ; default drive ('0')
; Check For Boot Disk
F890: 85 BF STA $BF ; drive number
F892: 86 BA STX $BA ; Current device
F894: 8A TXA
F895: 20 3D F2 JSR $F23D ; Clear I/O Path
F898: A2 00 LDX #$00
F89A: 86 9F STX $9F
F89C: 86 C2 STX $C2
F89E: E8 INX
F89F: 86 C1 STX $C1 ; ($C1/$C2) = 0
F8A1: C8 INY ; delay loop
F8A2: D0 FD BNE $F8A1
F8A4: E8 INX
F8A5: D0 FA BNE $F8A1
F8A7: A2 0C LDX #$0C
F8A9: BD 08 FA LDA $FA08,X ; Block Read Command String
; "00 10 0 31:1u" = "u1:13 0 01 00"
F8AC: 9D 00 01 STA $0100,X
F8AF: CA DEX
F8B0: 10 F7 BPL $F8A9
F8B2: A5 BF LDA $BF ; drive number
F8B4: 8D 06 01 STA $0106
F8B7: A9 00 LDA #$00
F8B9: A2 0F LDX #$0F
F8BB: 20 3F F7 JSR $F73F ; Set Load/Save Bank ($C6/$C7)
F8BE: A9 01 LDA #$01
F8C0: A2 15 LDX #$15 ; Initialize (i) floppy command
F8C2: A0 FA LDY #$FA
F8C4: 20 31 F7 JSR $F731 ; -setnam-
F8C7: A9 00 LDA #$00 ; open 0,8,15
F8C9: A0 0F LDY #$0F
F8CB: A6 BA LDX $BA ; Current device
F8CD: 20 38 F7 JSR $F738 ; -setlfs-
F8D0: 20 C0 FF JSR $FFC0 ; (iopen) Open Vector [EFBD]
F8D3: B0 16 BCS $F8EB
F8D5: A9 01 LDA #$01
F8D7: A2 16 LDX #$16 ; channel command "#"
F8D9: A0 FA LDY #$FA
F8DB: 20 31 F7 JSR $F731 ; -setnam-
F8DE: A9 0D LDA #$0D ; open 13,8,13
F8E0: A8 TAY
F8E1: A6 BA LDX $BA ; Current device
F8E3: 20 38 F7 JSR $F738 ; -setlfs-
F8E6: 20 C0 FF JSR $FFC0 ; (iopen) Open Vector [EFBD]
F8E9: 90 03 BCC $F8EE
F8EB: 4C 8B F9 JMP $F98B ; Wind Up Disk Boot
F8EE: A9 00 LDA #$00
F8F0: A0 0B LDY #$0B
F8F2: 85 AC STA $AC
F8F4: 84 AD STY $AD ; read to input buffer $0B00
F8F6: 20 D5 F9 JSR $F9D5 ; send command on LFN 0, read from 13
F8F9: A2 00 LDX #$00
F8FB: BD 00 0B LDA $0B00,X
F8FE: DD C4 E2 CMP $E2C4,X ; check for 'cbm' identification
F901: D0 E8 BNE $F8EB
F903: E8 INX
F904: E0 03 CPX #$03
F906: 90 F3 BCC $F8FB
; Print 'booting'
F908: 20 17 FA JSR $FA17 ; Print a Message
F90B: 0D 42 4F 4F 54 49 4E 47 ; '{CR}booting'
F913: 20 00 ; ' {0}'
F915: BD 00 0B LDA $0B00,X ; $0B00-0B06 -> $A9-$AF
F918: 95 A9 STA $A9,X ; boot parameters: "cbm", boot data addr low/high/bank,
F91A: E8 INX ; block count
F91B: E0 07 CPX #$07
F91D: 90 F6 BCC $F915
F91F: BD 00 0B LDA $0B00,X ; print optional boot message
F922: F0 06 BEQ $F92A
F924: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
F927: E8 INX
F928: D0 F5 BNE $F91F
F92A: 86 9E STX $9E ; save position message end marker
; Print '...'
F92C: 20 17 FA JSR $FA17 ; Print a Message
F92F: 2E 2E 2E 0D 00 ; '...{CR}{0}'
F934: A5 AE LDA $AE ; bank number for boot data
F936: 85 C6 STA $C6
F938: A5 AF LDA $AF ; boot block count
F93A: F0 09 BEQ $F945
F93C: C6 AF DEC $AF ; block count decrement
F93E: 20 B3 F9 JSR $F9B3 ; Read Next Boot Block
F941: E6 AD INC $AD ; boot data addr +256
F943: D0 F3 BNE $F938
F945: 20 8B F9 JSR $F98B ; Wind Up Disk Boot
F948: A6 9E LDX $9E ; position message end marker
F94A: 2C .BYTE $2C
F94B: E6 9F INC $9F ; count filename length
F94D: E8 INX ; advance trough boot block
F94E: BD 00 0B LDA $0B00,X ; go through (optional) filename
F951: D0 F8 BNE $F94B
F953: E8 INX
F954: 86 04 STX $04 ; SYS address high, MLM register PC
F956: A6 9E LDX $9E ; step back to position messages end marker
F958: A9 3A LDA #$3A ; ":"
F95A: 9D 00 0B STA $0B00,X ; overwrite 0 from message
F95D: CA DEX ; step back in buffer
F95E: A5 BF LDA $BF ; take drive number
F960: 9D 00 0B STA $0B00,X ; write before ":" (overwritting last message char.)
F963: 86 9E STX $9E ; save as filename start position
F965: A6 9F LDX $9F ; filename length
F967: F0 15 BEQ $F97E ; no file, do JSR code
F969: E8 INX ; filename length
F96A: E8 INX ; +2 (<drive>+":")
F96B: 8A TXA ; filename length adjusted
F96C: A6 9E LDX $9E ; filename ptr low
F96E: A0 0B LDY #$0B ; filename ptr high
F970: 20 31 F7 JSR $F731 ; -setnam-
F973: A9 00 LDA #$00 ; bank 0
F975: AA TAX
F976: 20 3F F7 JSR $F73F ; Set Load/Save Bank ($C6/$C7)
F979: A9 00 LDA #$00
F97B: 20 69 F2 JSR $F269 ; LOAD
F97E: A9 0B LDA #$0B ; high byte $0Bxx
F980: 85 03 STA $03 ; SYS address low, MLM register PC
F982: A9 0F LDA #$0F ; bank 15
F984: 85 02 STA $02 ; Bank Number, Jump to SYS Address
F986: 20 CD 02 JSR $02CD ; JSR to another bank
F989: 18 CLC
F98A: 60 RTS
; Wind Up Disk Boot
F98B: 08 PHP
F98C: 48 PHA
F98D: 20 CC FF JSR $FFCC ; (iclrch) Restore I/O Vector [F226]
F990: A9 0D LDA #$0D ; close 13
F992: 18 CLC
F993: 20 C3 FF JSR $FFC3 ; (iclose) Close Vector [F188]
F996: A2 00 LDX #$00
F998: 20 C9 FF JSR $FFC9 ; (ichkout) Set Output [F14C]
F99B: B0 0A BCS $F9A7
F99D: A9 55 LDA #$55 ; "U"
F99F: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
F9A2: A9 49 LDA #$49 ; "I" = U9 = Drive init
F9A4: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
F9A7: 20 CC FF JSR $FFCC ; (iclrch) Restore I/O Vector [F226]
F9AA: A9 00 LDA #$00
F9AC: 38 SEC
F9AD: 20 C3 FF JSR $FFC3 ; (iclose) Close Vector [F188]
F9B0: 68 PLA
F9B1: 28 PLP
F9B2: 60 RTS
; Read Next Boot Block
F9B3: A6 C2 LDX $C2 ; sector
F9B5: E8 INX
F9B6: E0 15 CPX #$15 ; wrap if 21
F9B8: 90 04 BCC $F9BE
F9BA: A2 00 LDX #$00
F9BC: E6 C1 INC $C1 ; increment track
F9BE: 86 C2 STX $C2 ; sector = 0
F9C0: 8A TXA
F9C1: 20 FB F9 JSR $F9FB ; To 2-Digit Decimal
F9C4: 8D 00 01 STA $0100
F9C7: 8E 01 01 STX $0101 ; sector
F9CA: A5 C1 LDA $C1
F9CC: 20 FB F9 JSR $F9FB ; To 2-Digit Decimal
F9CF: 8D 03 01 STA $0103
F9D2: 8E 04 01 STX $0104 ; track
F9D5: A2 00 LDX #$00
F9D7: 20 C9 FF JSR $FFC9 ; (ichkout) Set Output [F14C]
F9DA: A2 0C LDX #$0C ; 12 characters
F9DC: BD 00 01 LDA $0100,X ; send reversed ...
F9DF: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
F9E2: CA DEX
F9E3: 10 F7 BPL $F9DC
F9E5: 20 CC FF JSR $FFCC ; (iclrch) Restore I/O Vector [F226]
F9E8: A2 0D LDX #$0D
F9EA: 20 C6 FF JSR $FFC6 ; (ichkin) Set Input [F106]
F9ED: A0 00 LDY #$00
F9EF: 20 CF FF JSR $FFCF ; (ibasin) Input Vector, chrin [EF06]
F9F2: 20 BC F7 JSR $F7BC ; Store Loaded Byte
F9F5: C8 INY
F9F6: D0 F7 BNE $F9EF
F9F8: 4C CC FF JMP $FFCC ; (iclrch) Restore I/O Vector [F226]
; To 2-Digit Decimal
F9FB: A2 30 LDX #$30
F9FD: 38 SEC
F9FE: E9 0A SBC #$0A
FA00: 90 03 BCC $FA05
FA02: E8 INX
FA03: B0 F9 BCS $F9FE
FA05: 69 3A ADC #$3A
FA07: 60 RTS
; Block Read Command String
FA08: 30 30 20 31 30 20 30 20 ; '00 10 0 '
FA10: 33 31 3A 31 55 49 23 ; '31:1ui#'
; Print a Message
FA17: 48 PHA
FA18: 8A TXA
FA19: 48 PHA
FA1A: 98 TYA
FA1B: 48 PHA
FA1C: A0 00 LDY #$00
FA1E: BA TSX
FA1F: FE 04 01 INC $0104,X
FA22: D0 03 BNE $FA27
FA24: FE 05 01 INC $0105,X
FA27: BD 04 01 LDA $0104,X
FA2A: 85 CE STA $CE
FA2C: BD 05 01 LDA $0105,X
FA2F: 85 CF STA $CF
FA31: B1 CE LDA ($CE),Y
FA33: F0 05 BEQ $FA3A
FA35: 20 D2 FF JSR $FFD2 ; (ibsout) Output Vector, chrout [EF79]
FA38: 90 E4 BCC $FA1E
FA3A: 68 PLA
FA3B: A8 TAY
FA3C: 68 PLA
FA3D: AA TAX
FA3E: 68 PLA
FA3F: 60 RTS
; NMI Sequence
FA40: D8 CLD
FA41: A9 7F LDA #$7F
FA43: 8D 0D DD STA $DD0D
FA46: AC 0D DD LDY $DD0D
FA49: 30 14 BMI $FA5F
FA4B: 20 3D F6 JSR $F63D ; Watch For RUN or Shift
FA4E: 20 E1 FF JSR $FFE1 ; (istop) Test-Stop Vector [F66E]
FA51: D0 0C BNE $FA5F
FA53: 20 56 E0 JSR $E056 ; -restor-
FA56: 20 09 E1 JSR $E109 ; -init-
FA59: 20 00 C0 JSR $C000 ; -cint-
FA5C: 6C 00 0A JMP ($0A00) ; Restart System (BASIC Warm) [4000]
FA5F: 20 05 E8 JSR $E805 ; (NMI) RS-232 Control I/O
FA62: 4C 33 FF JMP $FF33 ; Return From Interrupt
; (IRQ) Normal Entry
FA65: D8 CLD
FA66: 20 24 C0 JSR $C024 ; IRQ Link
FA69: 90 12 BCC $FA7D
FA6B: 20 F8 F5 JSR $F5F8 ; -udtim-
FA6E: 20 D0 EE JSR $EED0 ; Control Tape Motor
FA71: AD 0D DC LDA $DC0D
FA74: AD 04 0A LDA $0A04
FA77: 4A LSR A
FA78: 90 03 BCC $FA7D
FA7A: 20 06 40 JSR $4006 ; IRQ Entry
FA7D: 4C 33 FF JMP $FF33 ; Return From Interrupt
; Keyboard Matrix Un-Shifted
FA80: 14 0D 1D 88 85 86 87 11 ; '{DEL}{CR}{RIGHT}....{DOWN}'
FA88: 33 57 41 34 5A 53 45 01 ; '3wa4zse.'
FA90: 35 52 44 36 43 46 54 58 ; '5rd6cftx'
FA98: 37 59 47 38 42 48 55 56 ; '7yg8bhuv'
FAA0: 39 49 4A 30 4D 4B 4F 4E ; '9ij0mkon'
FAA8: 2B 50 4C 2D 2E 3A 40 2C ; '+pl-.:@,'
FAB0: 5C 2A 3B 13 01 3D 5E 2F ; '\*;{HOME}.=^/'
FAB8: 31 5F 04 32 20 02 51 03 ; '1_.2 {ULON}q{STOP}'
FAC0: 84 38 35 09 32 34 37 31 ; '.85{TAB}2471'
FAC8: 1B 2B 2D 0A 0D 36 39 33 ; '{ESC}+-{LF}{CR}693'
FAD0: 08 30 2E 91 11 9D 1D FF ; '.0.{UP}{DOWN}{LEFT}{RIGHT}.'
FAD8: FF ; '.'
; Keyboard Matrix Shifted
FAD9: 94 8D 9D 8C 89 8A 8B 91 ; '{INS}{SHCR}{LEFT}....{UP}'
FAE1: 23 D7 C1 24 DA D3 C5 01 ; '#WA$ZSE.'
FAE9: 25 D2 C4 26 C3 C6 D4 D8 ; '%RD&CFTX'
FAF1: 27 D9 C7 28 C2 C8 D5 D6 ; ''YG(BHUV'
FAF9: 29 C9 CA 30 CD CB CF CE ; ')IJ0MKON'
FB01: DB D0 CC DD 3E 5B BA 3C ; '.PL.>[.<'
FB09: A9 C0 5D 93 01 3D DE 3F ; '..]{CLR}.=.?'
FB11: 21 5F 04 22 A0 02 D1 83 ; '!_.".{ULON}Q.'
FB19: 84 38 35 18 32 34 37 31 ; '.85{TABT}2471'
FB21: 1B 2B 2D 0A 8D 36 39 33 ; '{ESC}+-{LF}{SHCR}693'
FB29: 08 30 2E 91 11 9D 1D FF ; '.0.{UP}{DOWN}{LEFT}{RIGHT}.'
FB31: FF ; '.'
; Keyboard Matrix C-Key
FB32: 94 8D 9D 8C 89 8A 8B 91 ; '{INS}{SHCR}{LEFT}....{UP}'
FB3A: 96 B3 B0 97 AD AE B1 01 ; '{LTRED}..{GRAY1}....'
FB42: 98 B2 AC 99 BC BB A3 BD ; '{GRAY2}..{LTGREEN}....'
FB4A: 9A B7 A5 9B BF B4 B8 BE ; '{LTBLUE}..{GRAY3}....'
FB52: 29 A2 B5 30 A7 A1 B9 AA ; ')..0....'
FB5A: A6 AF B6 DC 3E 5B A4 3C ; '....>[.<'
FB62: A8 DF 5D 93 01 3D DE 3F ; '..]{CLR}.=.?'
FB6A: 81 5F 04 95 A0 02 AB 03 ; '{ORANGE}_.{BROWN}.{ULON}.{STOP}'
FB72: 84 38 35 18 32 34 37 31 ; '.85{TABT}2471'
FB7A: 1B 2B 2D 0A 8D 36 39 33 ; '{ESC}+-{LF}{SHCR}693'
FB82: 08 30 2E 91 11 9D 1D FF ; '.0.{UP}{DOWN}{LEFT}{RIGHT}.'
FB8A: FF ; '.'
; Keyboard Matrix Control
FB8B: FF FF FF FF FF FF FF FF ; '........'
FB93: 1C 17 01 9F 1A 13 05 FF ; '{RED}..{CYAN}.{HOME}{WHITE}.'
FB9B: 9C 12 04 1E 03 06 14 18 ; '{PURPLE}{RVSON}.{GREEN}{STOP}.{DEL}{TABT}'
FBA3: 1F 19 07 9E 02 08 15 16 ; '{BLUE}.{BELL}{YELLOW}{ULON}...'
FBAB: 12 09 0A 92 0D 0B 0F 0E ; '{RVSON}{TAB}{LF}{RVSOFF}{CR}{LOCK}{FLSHON}{LOWTEXT}'
FBB3: FF 10 0C FF FF 1B 00 FF ; '..{UNLOCK}..{ESC}{0}.'
FBBB: 1C FF 1D FF FF 1F 1E FF ; '{RED}.{RIGHT}..{BLUE}{GREEN}.'
FBC3: 90 06 FF 05 FF FF 11 FF ; '{BLACK}..{WHITE}..{DOWN}.'
FBCB: 84 38 35 18 32 34 37 31 ; '.85{TABT}2471'
FBD3: 1B 2B 2D 0A 8D 36 39 33 ; '{ESC}+-{LF}{SHCR}693'
FBDB: 08 30 2E 91 11 9D 1D FF ; '.0.{UP}{DOWN}{LEFT}{RIGHT}.'
FBE3: FF ; '.'
; Keyboard Matrix Caps-Lock
FBE4: 14 0D 1D 88 85 86 87 11 ; '{DEL}{CR}{RIGHT}....{DOWN}'
FBEC: 33 D7 C1 34 DA D3 C5 01 ; '3WA4ZSE.'
FBF4: 35 D2 C4 36 C3 C6 D4 D8 ; '5RD6CFTX'
FBFC: 37 D9 C7 38 C2 C8 D5 D6 ; '7YG8BHUV'
FC04: 39 C9 CA 30 CD CB CF CE ; '9IJ0MKON'
FC0C: 2B D0 CC 2D 2E 3A 40 2C ; '+PL-.:@,'
FC14: 5C 2A 3B 13 01 3D 5E 2F ; '\*;{HOME}.=^/'
FC1C: 31 5F 04 32 20 02 D1 03 ; '1_.2 {ULON}Q{STOP}'
FC24: 84 38 35 09 32 34 37 31 ; '.85{TAB}2471'
FC2C: 1B 2B 2D 0A 0D 36 39 33 ; '{ESC}+-{LF}{CR}693'
FC34: 08 30 2E 91 11 9D 1D FF ; '.0.{UP}{DOWN}{LEFT}{RIGHT}.'
FC3C: FF ; '.'
; Unused
FC3D: FF FF FF ; '...'
; ?
FC40: 05 D6 ORA $D6 ; Input from screen / from keyboard
FC42: 85 D6 STA $D6 ; Input from screen / from keyboard
FC44: A5 EB LDA $EB ; Current Cursor Line
FC46: 8D 30 0A STA $0A30
FC49: 60 RTS
; ?
FC4A: A5 AE LDA $AE ; Tape end address / End of program
FC4C: A4 AF LDY $AF
FC4E: 85 AC STA $AC
FC50: 84 AD STY $AD
FC52: 4C 33 F5 JMP $F533 ; Print 'loading'
; ?
FC55: 8D 37 0A STA $0A37
FC58: 8D 11 0A STA $0A11 ; RS-232 Command Register
FC5B: 8D 12 0A STA $0A12 ; RS-232 User Baud Rate
FC5E: 8D 13 0A STA $0A13
FC61: A2 06 LDX #$06
FC63: 8E 10 0A STX $0A10 ; RS-232 Control Register
FC66: 60 RTS
; Patch for Set Up CRTC Registers
FC67: A0 00 LDY #$00
FC69: A9 7F LDA #$7F
FC6B: 8C 00 D6 STY $D600
FC6E: 8D 01 D6 STA $D601
FC71: 4C DC E1 JMP $E1DC ; Set Up CRTC Registers
; Unused
FC74: FF FF FF FF FF FF FF FF ; '........'
FC7C: FF FF FF FF ; '....'
; Init screen DIN patch
FC80: 8D C5 0A STA $0AC5
FC83: 8D 18 D4 STA $D418
FC86: 60 RTS
; Init KBD Translation Tables
FC87: 2C C5 0A BIT $0AC5
FC8A: 30 37 BMI $FCC3
FC8C: A5 D3 LDA $D3 ; Key shift flag: (1= Shift, 2= C=, 4= Control, 8= Alt, 16= Caps Lock)
FC8E: 29 10 AND #$10
FC90: F0 0D BEQ $FC9F
FC92: AD 3F 03 LDA $033F
FC95: C9 FD CMP #$FD
FC97: F0 2A BEQ $FCC3
FC99: A9 34 LDA #$34
FC9B: A0 FE LDY #$FE
FC9D: D0 0B BNE $FCAA
FC9F: AD 3F 03 LDA $033F
FCA2: C9 FA CMP #$FA
FCA4: F0 1D BEQ $FCC3
FCA6: A9 6F LDA #$6F
FCA8: A0 C0 LDY #$C0
FCAA: 85 CC STA $CC ; Keyscan Table Pointer
FCAC: 84 CD STY $CD ; Keyscan Table Pointer high
FCAE: A0 0B LDY #$0B
FCB0: B1 CC LDA ($CC),Y ; Keyscan Table Pointer
FCB2: 99 3E 03 STA $033E,Y
FCB5: 88 DEY
FCB6: 10 F8 BPL $FCB0
FCB8: C8 INY
FCB9: 8C C5 0A STY $0AC5
FCBC: 08 PHP
FCBD: 78 SEI
FCBE: 20 0C CE JSR $CE0C ; Set Up 80 Column Char Set
FCC1: 28 PLP
FCC2: 60 RTS
FCC3: 4C 5D C5 JMP $C55D ; Keyboard Scan Subroutine
; DIN Keyboard patch for Key Pickup
FCC6: AE 3F 03 LDX $033F
FCC9: E0 FD CPX #$FD
FCCB: D0 55 BNE $FD22
FCCD: AE C5 0A LDX $0AC5
FCD0: 30 50 BMI $FD22
FCD2: F0 1D BEQ $FCF1
FCD4: BC 45 FE LDY $FE45,X
FCD7: CA DEX
FCD8: 88 DEY
FCD9: 48 PHA
FCDA: 98 TYA
FCDB: DD 45 FE CMP $FE45,X
FCDE: 68 PLA
FCDF: 90 08 BCC $FCE9
FCE1: D9 4A FE CMP $FE4A,Y
FCE4: D0 F2 BNE $FCD8
FCE6: B9 65 FE LDA $FE65,Y
FCE9: 48 PHA
FCEA: 29 7F AND #$7F
FCEC: C9 20 CMP #$20
FCEE: 68 PLA
FCEF: 90 23 BCC $FD14
FCF1: A2 05 LDX #$05
FCF3: DD 3F FE CMP $FE3F,X
FCF6: F0 03 BEQ $FCFB
FCF8: CA DEX
FCF9: D0 F8 BNE $FCF3
FCFB: 8E C5 0A STX $0AC5
FCFE: E0 00 CPX #$00
FD00: F0 20 BEQ $FD22
FD02: A8 TAY
FD03: 24 F6 BIT $F6 ; Auto-Insert Mode Flag
FD05: 30 0D BMI $FD14
FD07: 24 D7 BIT $D7 ; 40 / 80 columns: 0 = 40, 128 = 80
FD09: 10 0A BPL $FD15
FD0B: A2 0A LDX #$0A
FD0D: 20 DA CD JSR $CDDA ; Read CRTC Register
FD10: 29 40 AND #$40
FD12: D0 06 BNE $FD1A
FD14: 60 RTS
FD15: AD 27 0A LDA $0A27 ; VIC Cursor Disable
FD18: D0 FA BNE $FD14
FD1A: 98 TYA
FD1B: 09 40 ORA #$40
FD1D: 29 7F AND #$7F
FD1F: 4C 2F CC JMP $CC2F ; Print Character
FD22: A6 D3 LDX $D3 ; Key shift flag: (1= Shift, 2= C=, 4= Control, 8= Alt, 16= Caps Lock)
FD24: A4 D5 LDY $D5
FD26: 6C 3C 03 JMP ($033C) ; Store Key [C6AD]
; DIN Keyboard Matrix Un-Shifted
FD29: 14 0D 1D 88 85 86 87 11 ; '{DEL}{CR}{RIGHT}....{DOWN}'
FD31: 33 57 41 34 59 53 45 01 ; '3wa4yse.'
FD39: 35 52 44 36 43 46 54 58 ; '5rd6cftx'
FD41: 37 5A 47 38 42 48 55 56 ; '7zg8bhuv'
FD49: 39 49 4A 30 4D 4B 4F 4E ; '9ij0mkon'
FD51: BE 50 4C AF 2E BC BD 2C ; '.pl....,'
FD59: 5B 2B BB 13 01 23 5D 2D ; '[+.{HOME}.#]-'
FD61: 31 3C 04 32 20 02 51 03 ; '1<.2 {ULON}q{STOP}'
FD69: 84 38 35 09 32 34 37 31 ; '.85{TAB}2471'
FD71: 1B 2B 2D 0A 0D 36 39 33 ; '{ESC}+-{LF}{CR}693'
FD79: 08 30 2E 91 11 9D 1D FF ; '.0.{UP}{DOWN}{LEFT}{RIGHT}.'
FD81: FF ; '.'
; DIN Keyboard Matrix Shifted
FD82: 94 8D 9D 8C 89 8A 8B 91 ; '{INS}{SHCR}{LEFT}....{UP}'
FD8A: 40 D7 C1 24 D9 D3 C5 01 ; '@WA$YSE.'
FD92: 25 D2 C4 26 C3 C6 D4 D8 ; '%RD&CFTX'
FD9A: 2F DA C7 28 C2 C8 D5 D6 ; '/ZG(BHUV'
FDA2: 29 C9 CA 3D CD CB CF CE ; ')IJ=MKON'
FDAA: 3F D0 CC C0 3A DC DD 3B ; '?PL.:..;'
FDB2: 5E 2A DB 93 01 27 5C 5F ; '^*.{CLR}.'\_'
FDBA: 21 3E 04 22 A0 02 D1 83 ; '!>.".{ULON}Q.'
FDC2: 84 38 35 18 32 34 37 31 ; '.85{TABT}2471'
FDCA: 1B 2B 2D 0A 8D 36 39 33 ; '{ESC}+-{LF}{SHCR}693'
FDD2: 08 30 2E 91 11 9D 1D FF ; '.0.{UP}{DOWN}{LEFT}{RIGHT}.'
FDDA: FF ; '.'
; DIN Keyboard Matrix C-Key
FDDB: 94 8D 9D 8C 89 8A 8B 91 ; '{INS}{SHCR}{LEFT}....{UP}'
FDE3: 96 A7 A8 97 A2 AA A3 01 ; '{LTRED}..{GRAY1}....'
FDEB: 98 A9 C4 99 C5 D3 CE A4 ; '{GRAY2}.D{LTGREEN}ESN.'
FDF3: 9A C2 DF 9B A1 C9 D6 D7 ; '{LTBLUE}B.{GRAY3}.IVW'
FDFB: D1 C3 D5 C1 CB DA D8 CD ; 'QCUAKZXM'
FE03: AB D9 C8 BF BA CA B0 AC ; '.YH..J..'
FE0B: AD A6 DB 93 01 DD DE B9 ; '...{CLR}....'
FE13: 81 B1 04 95 A0 02 A5 03 ; '{ORANGE}..{BROWN}.{ULON}.{STOP}'
FE1B: 84 38 35 18 32 34 37 31 ; '.85{TABT}2471'
FE23: 1B 2B 2D 0A 8D 36 39 33 ; '{ESC}+-{LF}{SHCR}693'
FE2B: 08 30 2E 91 11 9D 1D FF ; '.0.{UP}{DOWN}{LEFT}{RIGHT}.'
FE33: FF ; '.'
; DIN Keyboard Matrix Control
FE34: 29 FD 82 FD DB FD 8B FB ; ').{ULOFF}.....'
FE3C: 29 FD 29 ; ').)'
FE3F: FD AF C0 BF 00 00 ; '....{0}{0}'
FE45: 01 03 07 0C 0C ; '.{STOP}{BELL}{UNLOCK}{UNLOCK}'
FE4A: 0C 45 C0 41 45 55 AF 41 ; '{UNLOCK}e.aeu.a'
FE52: 45 49 4F 55 FF FF FF FF ; 'eiou....'
FE5A: FF FF FF FF FF FF FF FF ; '........'
FE62: FF FF FF ; '...'
FE65: FF AC BF B2 AE B3 BF B4 ; '........'
FE6D: B5 B6 B7 B8 FF FF FF FF ; '........'
FE75: FF FF FF FF FF FF FF FF ; '........'
FE7D: FF FF FF FF ; '....'
; ?
FE81: A5 01 LDA $01
FE83: 29 40 AND #$40
FE85: 49 40 EOR #$40
FE87: 4A LSR A
FE88: 4A LSR A
FE89: 85 D3 STA $D3 ; Key shift flag: (1= Shift, 2= C=, 4= Control, 8= Alt, 16= Caps Lock)
FE8B: 60 RTS
; Unused
FE8C: FF FF FF FF FF FF FF FF ; '........'
FE94: FF FF FF FF FF FF FF FF ; '........'
FE9C: FF FF FF FF FF FF FF FF ; '........'
FEA4: FF FF FF FF FF FF FF FF ; '........'
FEAC: FF FF FF FF FF FF FF FF ; '........'
FEB4: FF FF FF FF FF FF FF FF ; '........'
FEBC: FF FF FF FF FF FF FF FF ; '........'
FEC4: FF FF FF FF FF FF FF FF ; '........'
FECC: FF FF FF FF FF FF FF FF ; '........'
FED4: FF FF FF FF FF FF FF FF ; '........'
FEDC: FF FF FF FF FF FF FF FF ; '........'
FEE4: FF FF FF FF FF FF FF FF ; '........'
FEEC: FF FF FF FF FF FF FF FF ; '........'
FEF4: FF FF FF FF FF FF FF FF ; '........'
FEFC: FF FF FF ; '...'
; Patch byte
FEFF: FF ; '.'
; MMU Configuration Register
FF00: FF ; '.'
FF01: FF ; '.'
FF02: FF ; '.'
FF03: FF ; '.'
FF04: FF ; '.'
; NMI Transfer Entry
FF05: 78 SEI
FF06: 48 PHA
FF07: 8A TXA
FF08: 48 PHA
FF09: 98 TYA
FF0A: 48 PHA
FF0B: AD 00 FF LDA $FF00 ; MMU Configuration Register
FF0E: 48 PHA
FF0F: A9 00 LDA #$00
FF11: 8D 00 FF STA $FF00 ; MMU Configuration Register
FF14: 6C 18 03 JMP ($0318) ; NMI Interrupt Vector [FA40]
; IRQ Transfer Entry
FF17: 48 PHA
FF18: 8A TXA
FF19: 48 PHA
FF1A: 98 TYA
FF1B: 48 PHA
FF1C: AD 00 FF LDA $FF00 ; MMU Configuration Register
FF1F: 48 PHA
FF20: A9 00 LDA #$00
FF22: 8D 00 FF STA $FF00 ; MMU Configuration Register
FF25: BA TSX
FF26: BD 05 01 LDA $0105,X
FF29: 29 10 AND #$10
FF2B: F0 03 BEQ $FF30
FF2D: 6C 16 03 JMP ($0316) ; Break Interrupt Vector [B003]
FF30: 6C 14 03 JMP ($0314) ; IRQ Vector [FA65]
; Return From Interrupt
FF33: 68 PLA
FF34: 8D 00 FF STA $FF00 ; MMU Configuration Register
FF37: 68 PLA
FF38: A8 TAY
FF39: 68 PLA
FF3A: AA TAX
FF3B: 68 PLA
FF3C: 40 RTI
; Reset Transfer Entry
FF3D: A9 00 LDA #$00
FF3F: 8D 00 FF STA $FF00 ; MMU Configuration Register
FF42: 4C 00 E0 JMP $E000 ; Reset Code
; Unused
FF45: FF FF ; '..'
; spinspout (fast serial)
FF47: 4C FB E5 JMP $E5FB ; Fast Disk On/Off
; close all
FF4A: 4C 3D F2 JMP $F23D ; Clear I/O Path
; 64mode
FF4D: 4C 4B E2 JMP $E24B ; Switch to 64 Mode
; dma call
FF50: 4C 80 CF JMP $CF80 ; ?
; boot call
FF53: 4C 90 F8 JMP $F890 ; Check For Boot Disk
; foenix
FF56: 4C 67 F8 JMP $F867 ; Check Auto Start ROM
; lkupla (logical addr)
FF59: 4C 9D F7 JMP $F79D ; Search & Set Up File
; lkupsa (second addr)
FF5C: 4C 86 F7 JMP $F786 ; Search For SA
; swapper 40/80 swap
FF5F: 4C 2A C0 JMP $C02A ; Swap 40/80 Col [CD2E]
; dlchr Init 80col charam
FF62: 4C 27 C0 JMP $C027 ; Upload 80 Col [CE0C]
; pfkey Prog Function Key
FF65: 4C 21 C0 JMP $C021 ; Define FN Key
; setbnk
FF68: 4C 3F F7 JMP $F73F ; Set Load/Save Bank
; setcfg
FF6B: 4C EC F7 JMP $F7EC ; Load Memory Control Mask
; jsrfar
FF6E: 4C CD 02 JMP $02CD ; JSR to another bank
; jmpfar
FF71: 4C E3 02 JMP $02E3 ; JMP to another bank
; indfet Bank LDA (fetchvec),y
FF74: 4C D0 F7 JMP $F7D0 ; Get Char From Memory Bank
; indsta Bank STA (stavec),y
FF77: 4C DA F7 JMP $F7DA ; Store Char to Memory Bank
; indcmp Bank CMP (cmpvec),y
FF7A: 4C E3 F7 JMP $F7E3 ; Compare Char With Memory Bank
; primm Print Immediate
FF7D: 4C 17 FA JMP $FA17 ; Print a Message
; Kernal Version Number
FF80: 01 ; '.'
; cint Init Editor & Video Chips
FF81: 4C 00 C0 JMP $C000 ; -cint-
; ioinit Init I/O Devices, Ports & Timers
FF84: 4C 09 E1 JMP $E109 ; -init-
; ramtas Init Ram & Buffers
FF87: 4C 93 E0 JMP $E093 ; -ramtas-
; restor Restore Vectors
FF8A: 4C 56 E0 JMP $E056 ; -restor-
; vector Change Vectors For User
FF8D: 4C 5B E0 JMP $E05B ; -vector-
; setmsg Control OS Messages
FF90: 4C 5C F7 JMP $F75C ; -setmsg-
; secnd Send SA After Listen
FF93: 4C D2 E4 JMP $E4D2 ; -second-
; tksa Send SA After Talk
FF96: 4C E0 E4 JMP $E4E0 ; -tksa-
; memtop Set/Read System RAM Top
FF99: 4C 63 F7 JMP $F763 ; -memtop-
; membot Set/Read System RAM Bottom
FF9C: 4C 72 F7 JMP $F772 ; -membot-
; key Scan Keyboard
FF9F: 4C 12 C0 JMP $C012 ; -scnkey-
; settmo Set Timeout In IEEE
FFA2: 4C 5F F7 JMP $F75F ; Set Serial Timeout
; acptr Handshake Serial Byte In
FFA5: 4C 3E E4 JMP $E43E ; -acptr-
; ciout Handshake Serial Byte Out
FFA8: 4C 03 E5 JMP $E503 ; -ciout- Print Serial
; untlk Command Serial Bus UNTALK
FFAB: 4C 15 E5 JMP $E515 ; -untlk-
; unlsn Command Serial Bus UNLISTEN
FFAE: 4C 26 E5 JMP $E526 ; -unlsn-
; listn Command Serial Bus LISTEN
FFB1: 4C 3E E3 JMP $E33E ; -listen-
; talk Command Serial Bus TALK
FFB4: 4C 3B E3 JMP $E33B ; -talk-
; readss Read I/O Status Word
FFB7: 4C 44 F7 JMP $F744 ; -rdst-
; setlfs Set Logical File Parameters
FFBA: 4C 38 F7 JMP $F738 ; -setlfs-
; setnam Set Filename
FFBD: 4C 31 F7 JMP $F731 ; -setnam-
; (iopen) Open Vector [EFBD]
FFC0: 6C 1A 03 JMP ($031A) ; OPEN Vector [EFBD]
; (iclose) Close Vector [F188]
FFC3: 6C 1C 03 JMP ($031C) ; CLOSE Vector [F188]
; (ichkin) Set Input [F106]
FFC6: 6C 1E 03 JMP ($031E) ; Set Input Vector [F106]
; (ichkout) Set Output [F14C]
FFC9: 6C 20 03 JMP ($0320) ; Set Output Vector [F14C]
; (iclrch) Restore I/O Vector [F226]
FFCC: 6C 22 03 JMP ($0322) ; Restore I/O Vector [F226]
; (ibasin) Input Vector, chrin [EF06]
FFCF: 6C 24 03 JMP ($0324) ; Input Vector [EF06]
; (ibsout) Output Vector, chrout [EF79]
FFD2: 6C 26 03 JMP ($0326) ; Output Vector [EF79]
; loadsp Load RAM From Device
FFD5: 4C 65 F2 JMP $F265 ; -load-
; savesp Save RAM To Device
FFD8: 4C 3E F5 JMP $F53E ; -save-
; settim Set Real-Time Clock
FFDB: 4C 65 F6 JMP $F665 ; -settim-
; rdtim Read Real-Time Clock
FFDE: 4C 5E F6 JMP $F65E ; -rdtim-
; (istop) Test-Stop Vector [F66E]
FFE1: 6C 28 03 JMP ($0328) ; Test STOP Key [F66E]
; (igetin) Get Vector [EEEB]
FFE4: 6C 2A 03 JMP ($032A) ; GET Vector [EEEB]
; (iclall) Close All Channels And Files [F222]
FFE7: 6C 2C 03 JMP ($032C) ; Abort I/O Vector [F222]
; udtim Increment Real-Time Clock
FFEA: 4C F8 F5 JMP $F5F8 ; -udtim-
; scrorg Return Screen Organization
FFED: 4C 0F C0 JMP $C00F ; -screen-
; plot Read / Set Cursor X/Y Position
FFF0: 4C 18 C0 JMP $C018 ; -plot-
; iobase Return I/O Base Address
FFF3: 4C 81 F7 JMP $F781 ; -iobase-
; [ffff]
FFF6: FF FF ; '..'
; SYSTEM
FFF8: 24 E2 .WORD $E224
; NMI
FFFA: 05 FF .WORD $FF05 ; NMI Transfer Entry
; RESET
FFFC: 3D FF .WORD $FF3D ; Reset Transfer Entry
; IRQ
FFFE: 17 FF .WORD $FF17 ; IRQ Transfer Entry