Skip to content

Instantly share code, notes, and snippets.

@jedie
Last active December 23, 2015 03:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jedie/6573826 to your computer and use it in GitHub Desktop.
Save jedie/6573826 to your computer and use it in GitHub Desktop.
L_145D equ $145d
L_2211 equ $2211
L_552D equ $552d
L_8000 jmp L_BB40 ; $8000-$8002: Hardware Initialisation (JMP $bb40; D64 JMP $bb3c)
L_8003 jmp L_BB88 ; $8003-$8005: Software Initialisation (JMP $bb88)
L_8006 jmp L_BBE5 ; $8006-$8008: %POLCAT% Scans keyboard, rets value in A (JMP $bbe5) Called indirectly from [$a000]
L_8009 jmp L_BBB5 ; $8009-$800b: %CBLINK% Cursor Blink (JMP $bbb5)
L_800C jmp L_BCAB ; $800c-$800e: %CHROUT% Write chr in A to screen (JMP $bcab)
L_800F jmp L_BD1A ; $800f-$8011: %LPOUT% Line printer character output in A reg., forces end-of-line sequences, outputs extra spaces to cause LFs etc. See: $0099-009c, $0148 (JMP $bd1a)
L_8012 jmp L_BD52 ; $8012-$8014: Reads Joystick (JMP $bd52) Called indirectly from [$a00a]
L_8015 jmp L_BDCF ; $8015-$8017: Cassette relay on (JMP $bdcf)
L_8018 jmp L_BDDC ; $8018-$801a: Cassette relay off (JMP $bddc)
L_801B jmp L_BE68 ; $801b-$801d: Write leader to cassette (JMP $be68) Called indirectly from [$a00c]
L_801E jmp L_BE12 ; $801e-$8020: Output byte in A to cassette (JMP $be12)
L_8021 jmp L_BDE7 ; $8021-$8023: Cassette on, init for reading (JMP $bde7) Called indirectly from [$a004]
L_8024 jmp L_BDAD ; $8024-$8026: Input byte from cassette into A (JMP $bdad)
L_8027 jmp L_BDA5 ; $8027-$8029: Get one bit from cassette to CC.C (JMP $bda5)
L_802A jmp L_BE7B ; $802a-$802c: Reads a byte from serial port (JMP $be7b)
L_802D jmp L_BE7C ; $802d-$802f: Sends a byte to serial port (D32 JMP $be7c; D64 JMP $be98)
jmp L_BE7D ; $be7b-$be97: D64 - Read byte from serial port to A, JMPd to from $802a, $be7d-$be7e: D32 - JMPd to from $8030 (COMB; RTS)
L_8143 fcb $ad,$aa ; jsr; $8033-$8153: Reserved words table
jsr L_BC55
fcb $71,$84,$15 ; neg L_8415; $8415: NEW token dispatch address
bvc L_8143 ; $8033-$8153: Reserved words table
adca L_81BA ; $8154-$81c9: Reserved words dispatch table (Tokens 0x80-0xba only)
neg L_B81E ; $b81e: SKIPF token dispatch address
L_81B9 fcb $87,$aa ; discarda #$aa; $8154-$81c9: Reserved words dispatch table (Tokens 0x80-0xba only)
L_81BA equ L_81B9 + 1 ; $8154-$81c9: Reserved words dispatch table (Tokens 0x80-0xba only)
subb L_AAF3 ; $aaf3: PUT token dispatch address
ldx L_A9AF ; $a9af: PMODE token dispatch address
fcb $ad,$bd,$a0,$49 ; jsr [>L_2211,pcr]
L_81E7 addd <$54 ; $81ca-$824f: Function words table
bcs L_81E7 ; $81ca-$824f: Function words table
L_826E ldx #$5c8d ; $8250-$8293: Function words dispatch table
L_826F equ L_826E + 1 ; $8250-$8293: Function words dispatch table
ldb >L_552D,pcr
bsr L_826F ; $8250-$8293: Function words dispatch table
andb L_9BB4 ; $9bb4: INSTR function token dispatch address
rol L_910E ; $910e: + operator dispatch address (see $8294)
rol L_9105 ; $9105: - operator dispatch address (see $8294)
fcb $7b,$92,$75 ; dec L_9275; $9275: * operator dispatch address (see $8294)
fcb $7b,$93,$3c ; dec L_933C; $933c: / operator dispatch address (see $8294)
clr L_96A0 ; $96a0: ^ operator dispatch address (see $8294)
ble L_82EF ; $82eb-$82ef: 0x0d, 'OK', 0x0d, 0x00
bra L_8326
bra L_82EB ; $82eb-$82ef: 0x0d, 'OK', 0x0d, 0x00
L_82EB tst <$4f ; $82eb-$82ef: 0x0d, 'OK', 0x0d, 0x00
L_82EE tst <$00 ; $82eb-$82ef: 0x0d, 'OK', 0x0d, 0x00
L_82EF equ L_82EE + 1 ; $82eb-$82ef: 0x0d, 'OK', 0x0d, 0x00
L_82F6 neg <$30 ; $82f0-$82f6: 0x0d, 'BREAK', 0x00
L_82F7 equ L_82F6 + 1
L_82F8 lsr a,u
L_82F9 equ L_82F8 + 1
bne L_8318
beq L_8314
beq L_8318
bra L_82F9
L_8314 ldx <$11
L_8318 ldx <$0f
L_831C bsr L_8335
L_831E ldu <$41
L_8326 lda ,-x
bne L_8326
L_8330 rts
L_8331 clra
L_8335 addd #$003a
bcs L_8342
bcs L_8330
L_8342 ldb #$0c
L_8344 jsr >$018e ; $8344: System Error - generates error message according to B (CoCo $ac46)
jsr L_8018 ; $8018-$801a: Cassette relay off (JMP $bddc)
jsr L_BAC3 ; $bac3: Audio off: Disables sound (CoCo $a974)
jsr L_8434 ; $8434: Resets stack - all entries are lost (CoCo $ad33)
jsr L_90A5
jsr L_90F8
bsr L_839E
bsr L_839E
L_8366 jsr L_90E5
beq L_8371 ; $8371: Prints OK prompt and returns to Command mode (CoCo $ac73)
jsr L_9573
L_8371 jsr L_90A5 ; $8371: Prints OK prompt and returns to Command mode (CoCo $ac73)
ldx #L_82EB ; $82eb-$82ef: 0x0d, 'OK', 0x0d, 0x00
jsr L_90E5 ; $90e5: Out String: Prints ASCIIZ string ptd to by X to DEVN (CoCo $b99c)
L_837A jsr L_B5C6
bcs L_837A
lbne L_B6FD
beq L_837A
bcs L_83A3
bne L_8344 ; $8344: System Error - generates error message according to B (CoCo $ac46)
jsr L_8F67
jmp L_84D6
L_839E lda ,x+
jmp L_90FA
L_83A3 jsr L_869A
L_83A6 ldx <$2b
jsr L_8F67
bsr L_83FF
bcs L_83C6
L_83BC ldu ,x
L_83BD equ L_83BC + 1
L_83BE pulu a
bne L_83BE
L_83C6 lda >$02dc
beq L_83E7
jsr L_831C
L_83DB pulu a
bne L_83DB
L_83E7 bsr L_841F
bsr L_83ED ; $83ed: BasVect2 - completes init once BASIC program loaded (CoCo $acef)
bra L_837A
L_83ED ldx <$19 ; $83ed: BasVect2 - completes init once BASIC program loaded (CoCo $acef)
L_83EF ldd ,x
beq L_8414
L_83F5 lda ,u+
bne L_83F5
L_83FB ldx ,x
L_83FC equ L_83FB + 1
bra L_83EF
L_83FF ldd <$2b
L_8403 ldu ,x
beq L_8410
bls L_8412
bra L_8403
L_8410 orcc #$01
L_8412 stx <$47
L_8414 rts
L_8415 bne L_8412 ; $8415: NEW token dispatch address
L_8417 ldx <$19 ; $8417: Erases program in memory same as NEW (CoCo $ad19) {1} Called from BASIC init routine ($b3ba)
L_841F ldx <$19 ; $841f: BasVect1 - sets up various vectors after a BASIC program loaded (CoCo $ad21)
jsr L_85EE
L_8424 jsr >$0197
jsr L_8514 ; $8514: RESTORE token dispatch address
L_8434 ldx #$01a9 ; $8434: Resets stack - all entries are lost (CoCo $ad33)
jsr L_86BC ; $86bc: LET token dispatch address
jsr L_82F7
bne L_845A
L_845A ldb #$09
jsr L_8331
jsr L_861B
jsr L_89AC ; $89ac: CkChar: as for CkComa but checks for chr in B (CoCo $b26f)
jsr L_8874
jsr L_8872
jmp L_891B
jsr L_93BF ; $93bf-$93d4: %MOVFM% Converts a 5-byte BASIC Real variable structure pointed to by X to FAC at $004f {2}
bne L_8491
jsr L_8872
L_8491 jsr L_9418
jsr L_8917
L_849F jsr >$019a ; $849f: RUN BASIC - runs BASIC program in mem used by Autorun programs (CoCo $ad9e)
bsr L_851B
beq L_84B5
beq L_84D6
L_84B2 jmp L_89B4
L_84B5 lda ,x++
lbeq L_8545
beq L_84D6
jsr L_B54A ; $b54a: %OUTCHR% Sends char in A to DEVN (CoCo $a282) Called indirectly from [$a002]
jsr L_957A ; $957a: Print Number: outputs D as number to DEVN (CoCo $bdcc)
jsr L_B54A ; $b54a: %OUTCHR% Sends char in A to DEVN (CoCo $a282) Called indirectly from [$a002]
L_84D6 jsr <$9f
bsr L_84DC
bra L_849F ; $849f: RUN BASIC - runs BASIC program in mem used by Autorun programs (CoCo $ad9e)
L_84DC beq L_851A
lbpl L_86BC ; $86bc: LET token dispatch address
bhi L_84F5
L_84F5 cmpa #$ff
beq L_8501
bls L_84B2
L_8501 jsr <$9f
lbeq L_9B0C
lbeq L_9D51
bra L_84B2
L_8514 ldx <$19 ; $8514: RESTORE token dispatch address
L_8518 stx <$33
L_851A rts
L_851B jsr L_8006
beq L_852A
L_8520 cmpa #$03
beq L_8539 ; $8539: STOP token dispatch address
beq L_852B ; $852b: Waits for key press, returns key in A (CoCo $adfb)
L_852A rts
L_852B jsr L_8006 ; $852b: Waits for key press, returns key in A (CoCo $adfb)
beq L_852B ; $852b: Waits for key press, returns key in A (CoCo $adfb)
bra L_8520
jsr L_B65C
bra L_853B
L_8539 orcc #$01 ; $8539: STOP token dispatch address
L_853B bne L_8570
L_8541 ror <$00
L_8545 ldx <$68
beq L_8552
L_8552 clr <$6f
ldx #L_82EF ; $82eb-$82ef: 0x0d, 'OK', 0x0d, 0x00
lbpl L_8371 ; $8371: Prints OK prompt and returns to Command mode (CoCo $ac73)
jmp L_8366
bne L_8570
lbeq L_8344 ; $8344: System Error - generates error message according to B (CoCo $ac46)
L_8570 rts
beq L_859F
jsr L_8B23
beq L_858A
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
jsr L_8E83 ; $8e83: Get16Bit: returns value of following number in X (CoCo $b73d)
bhi L_85A2
L_858A tfr x,d
bcs L_85A2
bcs L_85A2
bcs L_85A2
L_859F jmp L_8424
L_85A2 jmp L_8342
jsr L_98E3 ; $98e3: Called from BASIC init routine ($b3ba-)
jsr L_B65C
lbeq L_841F ; $841f: BasVect1 - sets up various vectors after a BASIC program loaded (CoCo $ad21)
jsr L_8424
bra L_85D2
L_85BB jsr <$9f
beq L_85D7
bne L_860A
jsr L_8331
L_85D2 bsr L_85D7
jmp L_849F ; $849f: RUN BASIC - runs BASIC program in mem used by Autorun programs (CoCo $ad9e)
L_85D7 jsr <$a5
jsr L_869A
bsr L_861E
bhi L_85E9
L_85E9 jsr L_8403
bcs L_8605
L_85EE leax -1,x
L_85F2 rts
bne L_85F2
jsr L_82F7
beq L_860D
L_8604 cmpx #$c60e
L_8605 equ L_8604 + 1
jmp L_8344 ; $8344: System Error - generates error message according to B (CoCo $ac46)
L_860A jmp L_89B4
L_860D puls a,x,u
L_8613 bsr L_861B ; $8613: DATA token dispatch address
L_861A rts
L_861B ldb #$3a
L_861D lda #$5f
L_861E equ L_861D + 1
L_8624 tfr b,a
L_862A lda ,x
beq L_861A
beq L_861A
beq L_8624
bne L_863F
L_863F cmpa #$86
bne L_862A
bra L_862A
jsr L_8872
beq L_8655
jsr L_89AC ; $89ac: CkChar: as for CkComa but checks for chr in B (CoCo $b26f)
L_8655 lda <$4f
bne L_866C
L_865B bsr L_8613
beq L_861A
bne L_865B
bpl L_865B
L_866C jsr <$a5
lbcs L_85D7
jmp L_84DC
jsr L_8E51 ; $8e51: Get8Bit: returns value of following number in B (CoCo $b70b)
jsr L_89AC ; $89ac: CkChar: as for CkComa but checks for chr in B (CoCo $b26f)
beq L_8687
L_8685 bne L_860A
L_8687 dec <$53
bne L_8690
jmp L_85BB
L_8690 jsr <$9f
bsr L_869A
beq L_8687
L_869A ldx <$8a
L_869E bcc L_8704
bhi L_8685
bra L_869E
L_86BC jsr L_8A94 ; $86bc: LET token dispatch address
jsr L_89AC ; $89ac: CkChar: as for CkComa but checks for chr in B (CoCo $b26f)
jsr L_8887 ; $8887: Get string: compiles a string and puts it in free string space (CoCo $b156)
jsr L_8879
lbeq L_93DE
L_86D7 jsr >$019d
bcc L_86F4
bcs L_86F4
jsr L_8C50
jsr L_8D89
L_86F4 stx <$4d
jsr L_8DBB
L_8704 rts
L_870C ldb #$24
beq L_8715
L_8712 jmp L_8344
L_8715 lda <$09
beq L_8720
jmp L_89B4 ; $89b4: Both reserved word and function dispatch tables of Stub 1 at $012a point here
L_8720 ldx #L_8704
jsr L_90E5 ; $90e5: Out String: Prints ASCIIZ string ptd to by X to DEVN (CoCo $b99c)
jsr L_9C76
bsr L_8733
L_8733 cmpa #$23
bne L_8740
jsr L_B7D7
jsr L_B623
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
L_8740 cmpa #$22
bne L_874F
jsr L_8975
jsr L_89AC ; $89ac: CkChar: as for CkComa but checks for chr in B (CoCo $b26f)
jsr L_90E8
L_874F ldx #$02dc
bne L_877A
bsr L_8760
bra L_877A
L_8760 jsr L_90F8
jsr L_90F5
L_8766 jsr L_B5C6
bcc L_8770
jmp L_8541
L_8770 ldb #$30
bne L_8712
L_8779 lda #$4f
L_877A equ L_8779 + 1
L_877F jsr L_8A94
bne L_879A
bne L_87EA
jsr L_90F8
L_8798 bsr L_8760
L_8799 equ L_8798 + 1
L_879A stx <$a6
beq L_87C9
beq L_87BC
jsr L_B595
bne L_87BC
L_87BC sta <$02
jsr L_8C61
jsr L_897A
jsr L_86D7
bra L_87CF
L_87C9 jsr L_94BD
jsr L_93DE
L_87CF jsr <$a5
beq L_87D9
lbne L_870C
L_87D9 ldx <$a6
beq L_8806
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
bra L_877F
L_87EA stx <$a6
jsr L_861B
bne L_87FE
beq L_883B
L_87FE lda ,x
bne L_87EA
bra L_879A
L_8806 ldx <$35
lbne L_8518
beq L_8818
ldx #L_8818
jmp L_90E5 ; $90e5: Out String: Prints ASCIIZ string ptd to by X to DEVN (CoCo $b99c)
L_8818 rts
bra L_886A
bne L_882F
bra L_8832
L_882F jsr L_8A94
L_8832 stx <$3b
jsr L_82F7
beq L_883D
L_883B bra L_8884
L_883D tfr x,s
jsr L_93BF ; $93bf-$93d4: %MOVFM% Converts a 5-byte BASIC Real variable structure pointed to by X to FAC at $004f {2}
jsr L_910B
jsr L_93DE
jsr L_9441
beq L_8865
L_8862 jmp L_849F
L_8865 leas <$12,s
L_886A cmpa #$2c
bne L_8862
bsr L_882F
L_8872 bsr L_8887
L_8874 andcc #$fe
L_8876 tst >$1a01
L_8877 equ L_8876 + 1 ; $8877: Get expression: evaluates next expression and puts VARPTR addr in $0052:0053 (CoCo $b146)
L_8879 tst <$06
bcs L_8880
bpl L_8818
L_887F cmpx #$2b96
L_8880 equ L_887F + 1
L_8884 jmp L_8344
L_8887 bsr L_88F7 ; $8887: Get string: compiles a string and puts it in free string space (CoCo $b156)
L_8889 clra
L_888A cmpx #$3404
L_888B equ L_888A + 1
jsr L_8331
jsr L_8954
L_8899 jsr <$a5
L_889B suba #$ca
bcs L_88B2
bcc L_88B2
bcs L_8910
bra L_889B
L_88B2 ldb <$3f
bne L_88E9
lbcc L_8925
bcc L_8925
lbeq L_8D55
L_88D0 puls a
bcc L_892B
bsr L_8874
bsr L_8905
bne L_88FF
lbeq L_8951
bra L_8934
L_88E9 lsl <$06
bsr L_88F7
bra L_88D0
L_88F7 ldx <$a6
jmp L_85EE
L_88FE leay ,y++
L_88FF equ L_88FE + 1
L_8904 addd <$ec
L_8905 equ L_8904 + 1
lbra L_888B
L_8910 jmp L_89B4
L_8917 puls y
L_891B ldb <$4f
L_8925 ldx <$8a
beq L_8951
L_892B cmpa #$64
beq L_8932
jsr L_8874
L_8932 stx <$3d
L_8934 puls b
beq L_8953
beq L_8953
L_8951 ldb <$4f
L_8953 rts
L_8954 jsr >$018b
bcc L_8960
L_895D jmp L_94BD
L_8960 jsr L_8ADF
bcc L_89C1
beq L_895D
beq L_89B9
beq L_8954
bne L_897F
L_8975 ldx <$a6
jsr L_8C5B
L_897A ldx <$64
L_897F cmpa #$c0
bne L_8990
jsr L_888B
jsr L_8B2D ; $8b2d: %INTCNV%
jmp L_8C37 ; $8c35-$8c3f: Assign16Bit: assigns D to numeric variable (CoCo $b4f2) ?? 8c35:8c36 is a BRN, $8c36-$8c3f: Assign8Bit: assigns B to numeric variable (CoCo $b4f3) clears A, stores D in FAC, $8c37-$8c3f: %GIVABF% returns D as 16bit val in FAC
L_8990 cmpa #$be
lbeq L_9CC4
lbeq L_9C1B
beq L_89CD
L_899F bsr L_89A7
jsr L_8887 ; $8887: Get string: compiles a string and puts it in free string space (CoCo $b156)
L_89A4 ldb #$29 ; $89a4: CkClBrak: checks cmd line for closed bracket (CoCo $b267)
L_89A6 cmpx #$c628
L_89A7 equ L_89A6 + 1 ; $89a7: CkOpBrak: checks cmd line for open bracket (CoCo $b26a)
L_89A9 cmpx #$c62c
L_89AA equ L_89A9 + 1 ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
L_89AC cmpb [$00a6] ; $89ac: CkChar: as for CkComa but checks for chr in B (CoCo $b26f)
bne L_89B4 ; $89b4: Both reserved word and function dispatch tables of Stub 1 at $012a point here
L_89B4 ldb #$02 ; $89b4: Both reserved word and function dispatch tables of Stub 1 at $012a point here
jmp L_8344 ; $8344: System Error - generates error message according to B (CoCo $ac46)
L_89B9 lda #$7d
jsr L_888B
jmp L_96DE
L_89C1 jsr L_8A94
bne L_8953
jmp L_93BF ; $93bf-$93d4: %MOVFM% Converts a 5-byte BASIC Real variable structure pointed to by X to FAC at $004f {2}
L_89CD jsr <$9f
bls L_89DC
L_89DC pshs b
bcs L_8A04
bcc L_8A06
bsr L_89A7 ; $89a7: CkOpBrak: checks cmd line for open bracket (CoCo $b26a)
bcc L_8A06
jsr L_8887 ; $8887: Get string: compiles a string and puts it in free string space (CoCo $b156)
bsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
jsr L_8877 ; $8877: Get expression: evaluates next expression and puts VARPTR addr in $0052:0053 (CoCo $b146)
jsr L_8E51 ; $8e51: Get8Bit: returns value of following number in B (CoCo $b70b)
L_8A03 ldx #$8d99
L_8A04 equ L_8A03 + 1
L_8A06 puls b
jmp L_8874
jsr L_8B2D ; $8b2d: %INTCNV%
jsr L_93F5
jsr L_8B2D ; $8b2d: %INTCNV%
bne L_8A2A
bra L_8A2E
L_8A2A ora <$01
L_8A2E jmp L_8C37
jsr L_8879
bne L_8A46
jsr L_9441
bra L_8A7C
L_8A46 clr <$06
jsr L_8D9D
jsr L_8D9F ; $8d9f: %DELVAR% frees space taken by variable (CoCo $b659)
beq L_8A65
bcc L_8A65
L_8A65 sta <$54
L_8A6A decb
bne L_8A71
bra L_8A7C
L_8A71 lda ,x+
beq L_8A6A
bcc L_8A7C
L_8A7C addb #$01
beq L_8A85
L_8A85 jmp L_9427
L_8A88 jsr L_89AA
bsr L_8A97
bne L_8A88
L_8A94 clrb ; $8a94: %GETVAR% gets VARPTR addr of following variables name (CoCo $b357)
L_8A97 stb <$05
L_8A99 sta <$37
bsr L_8ADF
lbcs L_89B4 ; $89b4: Both reserved word and function dispatch tables of Stub 1 at $012a point here
bcs L_8AAE
bsr L_8ADF
bcs L_8AB8
L_8AAE tfr a,b
L_8AB0 jsr <$9f
bcs L_8AB0
bsr L_8ADF
bcc L_8AB0
L_8AB8 cmpa #$24
bne L_8AC2
L_8AC2 stb <$38
lbeq L_8B44
L_8AD2 cmpx <$1d
beq L_8AE8
beq L_8B19
bra L_8AD2
L_8ADF cmpa #$41
bcs L_8AE7
L_8AE7 rts
L_8AE8 ldx #$008a
beq L_8B1B
jsr L_831C
L_8B19 stx <$39
L_8B1B rts
L_8B20 neg <$9d
L_8B21 equ L_8B20 + 1
L_8B22 stx <$bd
L_8B23 equ L_8B22 + 1
L_8B26 jsr L_8874
bmi L_8B8D ; $8b8d-$8b91: Jump to this causes ?FC ERROR
L_8B2D jsr L_8874 ; $8b2d: %INTCNV%
bcs L_8B3E
jsr L_9441
bne L_8B8D ; $8b8d-$8b91: Jump to this causes ?FC ERROR
L_8B3E jsr L_9473
L_8B44 ldb <$05
L_8B4B ldx <$37
bsr L_8B21
beq L_8B4B
jsr L_89A4 ; $89a4: CkClBrak: checks cmd line for closed bracket (CoCo $b267)
L_8B6D cmpx <$1f
beq L_8B92
beq L_8B7E
bra L_8B6D
L_8B7E ldb #$12
bne L_8B8F ; $8b8d-$8b91: Jump to this causes ?FC ERROR
beq L_8BE3
L_8B8A ldb #$10
L_8B8C cmpx #$c608
L_8B8D equ L_8B8C + 1 ; $8b8d-$8b91: Jump to this causes ?FC ERROR
L_8B8F jmp L_8344 ; $8b8d-$8b91: Jump to this causes ?FC ERROR
L_8B92 ldd #$0005
jsr L_8331
L_8BA4 ldb #$0b
beq L_8BB0
L_8BB0 std 5,x
bsr L_8C11
bne L_8BA4
lbcs L_8342
jsr L_8335
L_8BCF leax -1,x
bne L_8BCF
bne L_8C10
L_8BE3 ldb 4,x
L_8BE9 std <$64
bcc L_8C2E
beq L_8BFC
bsr L_8C11
L_8BFC leax 2,x
bne L_8BE9
L_8C10 rts
L_8C11 lda #$10
L_8C1B lslb
bcs L_8C2E
bcc L_8C29
bcs L_8C2E
L_8C29 dec <$45
bne L_8C1B
L_8C2E jmp L_8B8A
jmp L_9FCE ; $9fce-$9fff: D32 - Unused 0x00
L_8C36 clra ; $8c35-$8c3f: Assign16Bit: assigns D to numeric variable (CoCo $b4f2) ?? 8c35:8c36 is a BRN, $8c36-$8c3f: Assign8Bit: assigns B to numeric variable (CoCo $b4f3) clears A, stores D in FAC
L_8C37 clr <$06 ; $8c35-$8c3f: Assign16Bit: assigns D to numeric variable (CoCo $b4f2) ?? 8c35:8c36 is a BRN, $8c36-$8c3f: Assign8Bit: assigns B to numeric variable (CoCo $b4f3) clears A, stores D in FAC, $8c37-$8c3f: %GIVABF% returns D as 16bit val in FAC
jmp L_942D ; $942d: Jumped to from GIVABF routine at 8c37-8c3f - returns 16 bit value in FAC to BASIC ??
jsr L_8874
jsr L_958A
bra L_8C5B
L_8C50 stx <$4d
L_8C52 bsr L_8CB3
L_8C54 stx <$58
L_8C59 leax -1,x
L_8C5B lda #$22
L_8C5D sta <$01
L_8C61 leax 1,x
L_8C69 incb
beq L_8C7A
beq L_8C76
bne L_8C69
L_8C76 cmpa #$22
beq L_8C7C
L_8C7A leax -1,x
L_8C7C stx <$64
bhi L_8C92
bsr L_8C50
jsr L_8D8B
L_8C92 ldx <$0b
bne L_8C9E
L_8C9B jmp L_8344
L_8C9E lda <$56
L_8CB3 clr <$07
L_8CB5 clra
bcs L_8CCB
L_8CCB ldb #$1a
beq L_8C9B
bsr L_8CD7 ; $8cd7: Forces String space Garbage collection (CoCo $b591)
bra L_8CB5
L_8CD7 ldx <$27 ; $8cd7: Forces String space Garbage collection (CoCo $b591)
L_8CD9 stx <$23
L_8CE6 cmpx <$0b
beq L_8CEE
bsr L_8D1E
bra L_8CE6
L_8CEE ldx <$1b
L_8CF0 cmpx <$1d
beq L_8CF8
bsr L_8D18
bra L_8CF0
L_8CF8 stx <$41
L_8CFA ldx <$41
L_8CFC cmpx <$1f
beq L_8D35
bpl L_8CFA
L_8D10 cmpx <$41
beq L_8CFC
bsr L_8D1E
bra L_8D10
L_8D18 lda 1,x
bpl L_8D32
L_8D1E ldb ,x
beq L_8D32
bhi L_8D32
bls L_8D32
L_8D32 leax 5,x
L_8D34 rts
L_8D35 ldx <$4b
beq L_8D34
jsr L_831E
jmp L_8CD9
L_8D55 ldd <$52
jsr L_8954
jsr L_8877 ; $8877: Get expression: evaluates next expression and puts VARPTR addr in $0052:0053 (CoCo $b146)
bcc L_8D70
jmp L_8344 ; $8344: System Error - generates error message according to B (CoCo $ac46)
L_8D70 jsr L_8C50
bsr L_8D89
bsr L_8D9F ; $8d9f: %DELVAR% frees space taken by variable (CoCo $b659)
bsr L_8D8B
bsr L_8D9F ; $8d9f: %DELVAR% frees space taken by variable (CoCo $b659)
jsr L_8C92
jmp L_8899
L_8D89 ldx 2,x
L_8D8B ldu <$25
bra L_8D94
L_8D90 lda ,x+
L_8D94 decb
bne L_8D90
L_8D9A jsr L_8877 ; $8d9a: Sub -
L_8D9D ldx <$52
L_8D9F ldb ,x ; $8d9f: %DELVAR% frees space taken by variable (CoCo $b659)
bsr L_8DBB
bne L_8DB8
bne L_8DB5
L_8DB5 leax 1,x
L_8DB8 ldx 2,x
L_8DBB cmpx <$0d
bne L_8DC6
L_8DC6 rts
bsr L_8DCC
L_8DC9 jmp L_8C36
L_8DCC bsr L_8D9A
jsr L_8E54
L_8DD5 ldb #$01
jsr L_8CB3
jsr L_8C54
L_8DE1 leas 2,s
L_8DE3 jmp L_8C92
bsr L_8DEA
bra L_8DC9
L_8DEA bsr L_8DCC
beq L_8E4C
bsr L_8E3B
L_8DF3 clra
L_8DF4 cmpb ,x
bls L_8DFB
L_8DFB pshs a,b
jsr L_8C52
bsr L_8D9F ; $8d9f: %DELVAR% frees space taken by variable (CoCo $b659)
jsr L_8D8B
bra L_8DE3
bsr L_8E3B
bra L_8DF4
beq L_8E24
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
bsr L_8E51 ; $8e51: Get8Bit: returns value of following number in B (CoCo $b70b)
L_8E24 bsr L_8E3B
beq L_8E4C
bcc L_8DFB
bls L_8DFB
bra L_8DFB
L_8E3B jsr L_89A4
L_8E4C jmp L_8B8D
L_8E4F jsr <$9f
L_8E51 jsr L_8872 ; $8e51: Get8Bit: returns value of following number in B (CoCo $b70b)
L_8E54 jsr L_8B26
bne L_8E4C
jsr L_8DCC
lbeq L_9182
jsr L_94BD
L_8E7A bsr L_8E83
L_8E7E jsr L_89AA
bra L_8E51 ; $8e51: Get8Bit: returns value of following number in B (CoCo $b70b)
L_8E83 jsr L_8872 ; $8e83: Get16Bit: returns value of following number in X (CoCo $b73d)
L_8E86 lda <$54
bmi L_8E4C
bhi L_8E4C
jsr L_9473
bsr L_8E86
jmp L_8C36 ; $8c35-$8c3f: Assign16Bit: assigns D to numeric variable (CoCo $b4f2) ?? 8c35:8c36 is a BRN, $8c36-$8c3f: Assign8Bit: assigns B to numeric variable (CoCo $b4f3) clears A, stores D in FAC
bsr L_8E7A
L_8EAA pshs cc ; $8eaa: LIST token dispatch address, List Basic to DEVN (CoCo $b764)
jsr L_869A
jsr L_83FF
beq L_8ECA
beq L_8ECF
bne L_8EC9
beq L_8ECA
jsr L_869A
beq L_8ECF
L_8EC9 rts
L_8ECA ldu #$ffff
L_8ECF leas 2,s
L_8ED3 jsr L_90A5
jsr L_B77B
bne L_8EE5
L_8EDD jsr L_B663
jmp L_8371 ; $8371: Prints OK prompt and returns to Command mode (CoCo $ac73)
L_8EE5 stx <$66
bhi L_8EDD
jsr L_957A ; $957a: Print Number: outputs D as number to DEVN (CoCo $bdcc)
jsr L_90F5
bsr L_8F08
L_8EFF lda ,u+
beq L_8ED3
jsr L_90FA
bra L_8EFF
L_8F08 jsr >$01a6
L_8F11 lda ,x+
beq L_8F66
bmi L_8F2C
bne L_8F28
beq L_8F11
beq L_8F11
L_8F25 cmpx #$8621
L_8F26 equ L_8F25 + 1
L_8F28 bsr L_8F5A
bra L_8F11
L_8F2C ldu #$0116
bne L_8F37
L_8F37 anda #$7f
L_8F39 leau 10,u
beq L_8F26
bpl L_8F39
L_8F47 deca
bmi L_8F50
L_8F4A tst ,u+
bpl L_8F4A
bra L_8F47
L_8F50 lda ,u
bsr L_8F5A
bpl L_8F50
bra L_8F11
L_8F5A cmpy #$03d6
bcc L_8F66
L_8F66 rts
L_8F67 jsr >$01a3
L_8F6F clr <$43
L_8F73 lda ,x+
beq L_8F98
beq L_8F8A
jsr L_8ADF
bcc L_8F98
bcs L_8F88
bls L_8F98
L_8F88 clr <$43
L_8F8A cmpa #$20
beq L_8F98
beq L_8FCC
beq L_8FB1
L_8F98 sta ,u+
beq L_8FA2
beq L_8F6F
L_8FA0 bra L_8F73
L_8FA2 clr ,u+
L_8FB1 cmpa #$3f
bne L_8FB9
bra L_8F98
L_8FB9 cmpa #$27
bne L_8FD0
L_8FC2 clr <$42
L_8FC4 lda ,x+
beq L_8F98
beq L_8F98
L_8FCC sta ,u+
bra L_8FC4
L_8FD0 cmpa #$30
bcs L_8FD8
bcs L_8F98
L_8FD8 leax -1,x
L_8FE1 clr <$42
L_8FE3 leau 10,u
beq L_901A
L_8FEC ldx ,s
L_8FEE ldb ,y+
beq L_8FEE
bne L_9030
bne L_9008
bne L_900C
L_9008 std ,u++
bra L_8FA0
L_900C stb ,u+
bne L_9014
L_9014 cmpb #$82
beq L_8FC2
L_9018 bra L_8FA0
L_901A ldu #$011b
bne L_8FE1
jsr L_8ADF
bcs L_9018
bra L_9018
L_9030 inc <$42
beq L_8FE3
L_9037 ldb ,y+
bpl L_9037
bra L_8FEC
beq L_90A1 ; $90a1: Print CR/LF: moves cursor posn to start of new line (CoCo $b958)
bsr L_9044
L_9044 cmpa #$40
bne L_904D
jsr L_B786
bra L_9057
L_904D cmpa #$23
bne L_905E
jsr L_B7D7
jsr L_B63C
L_9057 jsr <$a5
beq L_90A1 ; $90a1: Print CR/LF: moves cursor posn to start of new line (CoCo $b958)
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
L_905E cmpa #$cd
lbeq L_A225
L_9064 beq L_90AE
L_9066 cmpa #$bb
beq L_90C7
beq L_90AF
beq L_90E0
jsr L_8887 ; $8887: Get string: compiles a string and puts it in free string space (CoCo $b156)
bne L_9081
jsr L_9587
jsr L_8C59
L_9081 bsr L_90E8
jsr L_B595
beq L_9092
bsr L_90A1 ; $90a1: Print CR/LF: moves cursor posn to start of new line (CoCo $b958)
bra L_9064
L_9092 tstb
bne L_909D
beq L_90AF
bsr L_90F5
L_909D jsr <$a5
bne L_9066
L_90A1 lda #$0d ; $90a1: Print CR/LF: moves cursor posn to start of new line (CoCo $b958)
bra L_90FA
L_90A5 jsr L_B595
beq L_90A1 ; $90a1: Print CR/LF: moves cursor posn to start of new line (CoCo $b958)
bne L_90A1 ; $90a1: Print CR/LF: moves cursor posn to start of new line (CoCo $b958)
L_90AE rts
L_90AF jsr L_B595
beq L_90BE
bcs L_90C0
bsr L_90A1 ; $90a1: Print CR/LF: moves cursor posn to start of new line (CoCo $b958)
bra L_90E0
L_90BE ldb <$6c
L_90C0 subb <$6a
bcc L_90C0
bra L_90D7
L_90C7 jsr L_8E4F
lbne L_89B4 ; $89b4: Both reserved word and function dispatch tables of Stub 1 at $012a point here
jsr L_B595
bls L_90E0
L_90D7 tst <$6e
bne L_90E0
L_90DB bsr L_90F5
bne L_90DB
L_90E0 jsr <$9f
jmp L_9064
L_90E5 jsr L_8C5B ; $90e5: Out String: Prints ASCIIZ string ptd to by X to DEVN (CoCo $b99c)
L_90E8 jsr L_8D9D
L_90EC decb
beq L_90AE
bsr L_90FA
bra L_90EC
L_90F5 lda #$20
L_90F7 cmpx #L_863F
L_90F8 equ L_90F7 + 1
L_90FA jmp L_B54A
L_90FD ldx #$966e
bra L_910B
L_9102 jsr L_92DA
L_9105 com <$54 ; $9105: - operator dispatch address (see $8294)
bra L_910E ; $910e: + operator dispatch address (see $8294)
L_910B jsr L_92DA
L_910E tstb ; $910e: + operator dispatch address (see $8294)
lbeq L_93F5
L_9116 tfr a,b
beq L_9187
beq L_9188
bcs L_912B
L_912B cmpb #$f8
ble L_9188
jsr L_9203
L_9135 ldb <$62
bpl L_9144
L_9144 sta <$63
bpl L_91A5
L_9161 bcs L_9165
bsr L_91C2
L_9165 clrb
L_9166 lda <$50
bne L_9198
blt L_9166
L_9182 clra
L_9183 sta <$4f
L_9187 rts
L_9188 bsr L_91F7
bra L_9135
L_918D incb
L_9198 bpl L_918D
bls L_9182
L_91A4 cmpx #$2508
L_91A5 equ L_91A4 + 1
L_91A9 lda #$00
bra L_91BB
L_91AF inc <$4f
beq L_91DB
L_91BB bcc L_91C1
bsr L_91CC
beq L_91AF
L_91C1 rts
L_91C2 com <$54
L_91C4 com <$50
L_91CC ldx <$52
bne L_91DA
L_91DA rts
L_91DB ldb #$0a
jmp L_8344 ; $8344: System Error - generates error message according to B (CoCo $ac46)
L_91E0 ldx #$0012
L_91E3 lda 4,x
L_91F7 addb #$08
ble L_91E3
beq L_920D
L_9201 asr 1,x
L_9203 ror 2,x
bne L_9201
L_920D rts
lbra L_145D
bra L_91A9
L_923C jsr L_9418 ; $923c: LOG function token dispatch address
lble L_8B8D ; $8b8d-$8b91: Jump to this causes ?FC ERROR
L_9243 ldx #$9228
L_9244 equ L_9243 + 1
jsr L_910B
jsr L_933A
jsr L_9102
jsr L_9743
jsr L_910B
jsr L_9547
L_9273 bsr L_92DA
L_9275 beq L_92D9 ; $9275: * operator dispatch address (see $8294)
bsr L_92F3
L_9279 lda #$00
bsr L_92A9
bsr L_92A9
bsr L_92A9
bsr L_92AD
jsr L_93B6
jmp L_9165
L_92A9 lbeq L_91E0
L_92AD coma
L_92AE lda <$13
beq L_92D9
bcc L_92CB
L_92CB rora
bra L_92AE
L_92D9 rts
L_92DA ldd 1,x
L_92F3 tsta
beq L_930C
bvc L_930C
beq L_930E
L_9307 lda <$54
bra L_930E
L_930C leas 2,s
L_930E lbpl L_9182
L_9312 jmp L_91DB
L_9315 jsr L_940A
beq L_9327
bcs L_9312
jsr L_9116
beq L_9312
L_9327 rts
L_932C neg <$bd
L_932D equ L_932C + 1
L_9334 stb <$62
jsr L_93BF ; $93bf-$93d4: %MOVFM% Converts a 5-byte BASIC Real variable structure pointed to by X to FAC at $004f {2}
L_9339 cmpx #$8d9e
L_933A equ L_9339 + 1
L_933C beq L_93B1 ; $933c: / operator dispatch address (see $8294)
bsr L_92F3
beq L_9312
L_934F lda <$50
bne L_9368
bne L_9368
bne L_9368
bne L_9368
L_9368 tfr cc,a
bcc L_9377
bmi L_93A7
beq L_93A3
L_9377 tfr a,cc
bcs L_9389
L_937B lsl <$60
bcs L_9368
bmi L_934F
bra L_9368
L_9389 lda <$60
bra L_937B
L_93A3 ldb #$40
bra L_9377
L_93A7 rorb
bsr L_93B6
jmp L_9165
L_93B1 ldb #$14
jmp L_8344 ; $8344: System Error - generates error message according to B (CoCo $ac46)
L_93B6 ldx <$13
L_93BF pshs a ; $93bf-$93d4: %MOVFM% Converts a 5-byte BASIC Real variable structure pointed to by X to FAC at $004f {2}
L_93D5 ldx #$0045
bra L_93E0
L_93DA ldx #$0040
L_93DD cmpx #$9e3b
L_93DE equ L_93DD + 1
L_93E0 lda <$4f
L_93F5 lda <$61
L_93F7 sta <$54
L_940A ldd <$4f
L_9418 ldb <$4f
beq L_9424
L_941C ldb <$54
L_941E rolb
bcs L_9424
L_9424 rts
bsr L_9418
L_9427 stb <$50
L_942D lda <$50 ; $942d: Jumped to from GIVABF routine at 8c37-8c3f - returns 16 bit value in FAC to BASIC ??
L_9431 stb <$4f
jmp L_9161
L_9441 ldb ,x
beq L_9418
bmi L_941C
L_944B ldb <$4f
bne L_946E
bne L_946E
bne L_946E
bne L_946E
bne L_946E
L_946E rorb
bra L_941E
L_9473 ldb <$4f
beq L_94B4
bpl L_9482
jsr L_91C4
L_9482 ldx #$004f
bgt L_948F
jsr L_91F7
L_948F clr <$5b
jmp L_9203
L_9499 ldb <$4f ; $9499: INT function token dispatch address
bcc L_94BC
bsr L_9473
jmp L_9161
L_94B4 stb <$50
L_94BC rts
L_94BD ldx <$8a
bcs L_9534
lbeq L_9C1B
bne L_94DB
bra L_94DF
L_94DB cmpa #$2b
bne L_94E3
L_94DF jsr <$9f
bcs L_9534
L_94E3 cmpa #$2e
beq L_950F
bne L_9513
bcs L_9553
beq L_9501
beq L_9501
beq L_9503
beq L_9503
bra L_9507
L_9501 com <$48
L_9503 jsr <$9f
bcs L_9553
L_9507 tst <$48
beq L_9513
bra L_9513
L_950F com <$46
bne L_94DF
L_9513 lda <$47
beq L_952D
bpl L_9526
L_951D jsr L_932D
bne L_951D
bra L_952D
L_9526 jsr L_9315
bne L_9526
L_952D lda <$55
bpl L_94BC
jmp L_96DE
L_9534 ldb <$45
jsr L_9315
bsr L_9547
bra L_94DF
L_9547 jsr L_93DA
jsr L_9427
jmp L_910B
L_9553 ldb <$47
bra L_9503
std L_9E6E
L_9572 neg <$8e ; $956e-$9572: 5 byte floating point number
L_9573 equ L_9572 + 1
bsr L_9584
L_957A std <$50 ; $957a: Print Number: outputs D as number to DEVN (CoCo $bdcc)
jsr L_9431
bsr L_9587
L_9584 jmp L_90E5
L_9587 ldu #$03da
L_958A lda #$20
bpl L_9592
L_9592 sta ,u+
lbeq L_9666
bhi L_95AD
jsr L_9273
L_95AD sta <$45
L_95AF ldx #$9569
jsr L_944B
bgt L_95C6
L_95B7 ldx #$9564
jsr L_944B
bgt L_95CD
jsr L_9315
bra L_95B7
L_95C6 jsr L_932D
bra L_95AF
L_95CD jsr L_90FD
jsr L_9473
bmi L_95E4
bcc L_95E4
L_95E4 deca
bgt L_95F9
beq L_95F9
L_95F9 ldx #$9673
L_95FE lda <$53
bvc L_95FE
bcc L_9620
L_9620 addb #$2f
bne L_9632
L_9632 comb
bne L_95FE
L_963A lda ,-u
beq L_963A
bne L_9646
L_9646 lda #$2b
beq L_9668
bpl L_9651
L_9651 sta 2,u
L_9659 inca
bcc L_9659
bra L_966A
L_9666 sta ,u
L_9668 clr 1,u
L_966A ldx #$03da
L_966D rts
subb L_BDC0
jsr L_940A
jsr L_93BF ; $93bf-$93d4: %MOVFM% Converts a 5-byte BASIC Real variable structure pointed to by X to FAC at $004f {2}
L_96A0 beq L_9713 ; $96a0: ^ operator dispatch address (see $8294)
bne L_96AE
lbmi L_93B1
jmp L_9183
L_96AE ldx #$004a
jsr L_93E0
bpl L_96C9
jsr L_9499 ; $9499: INT function token dispatch address
jsr L_944B
bne L_96C9
L_96C9 jsr L_93F7
jsr L_923C ; $923c: LOG function token dispatch address
jsr L_9273
bsr L_9713 ; $9713: EXP function token dispatch address
bcc L_966D
L_96DE lda <$4f
beq L_96E4
L_96E4 rts
L_96E5 cmpa #$38
L_96E6 equ L_96E5 + 1
bvs L_96F2
L_96F0 lsr >$167e
L_96F2 equ L_96F0 + 2
ble L_96E6
L_9713 ldx #$96e5 ; $9713: EXP function token dispatch address
bsr L_974F
jsr L_93DA
bcs L_9724
L_9721 jmp L_9307
L_9724 jsr L_9499
beq L_9721
jsr L_9102
bsr L_9752
jsr L_92F3
L_9743 stx <$64
jsr L_93DA
bsr L_974F
bsr L_9754
L_974F jmp L_9273
L_9752 stx <$64
L_9754 jsr L_93D5
L_975F bsr L_974F
jsr L_910B
bne L_975F
jsr L_9418
bmi L_9798
beq L_978E ; $978e: Random Number: generates 8bit random number in $0116
bsr L_978B
jsr L_93DA
bsr L_978E ; $978e: Random Number: generates 8bit random number in $0116
bsr L_974F
jsr L_910B
L_978B jmp L_9499
L_978E ldx >$0116 ; $978e: Random Number: generates 8bit random number in $0116
L_9798 ldx L_97C7
ldx L_97C9
jsr L_9279
jmp L_9165
L_97C7 nega
L_97C8 ldb 13,u
L_97C9 equ L_97C8 + 1
jsr L_910B
L_97D1 jsr L_940A ; $97d1: SIN function token dispatch address
jsr L_9334
jsr L_940A
bsr L_978B
jsr L_9105 ; $9105: - operator dispatch address (see $8294)
jsr L_9102
bpl L_97FF
jsr L_90FD
bmi L_9802
L_97FF jsr L_96DE
L_9802 ldx #$9849
jsr L_910B
bpl L_9810
jsr L_96DE
L_9810 ldx #$984e
L_9813 jmp L_9743
jsr L_93DA
bsr L_97D1 ; $97d1: SIN function token dispatch address
jsr L_93E0
jsr L_93BF ; $93bf-$93d4: %MOVFM% Converts a 5-byte BASIC Real variable structure pointed to by X to FAC at $004f {2}
bsr L_983B
lbeq L_91DB
L_9838 jmp L_933A
L_983B pshs a
bra L_97FF
blt L_986F
eorb L_8799
bls L_9896
L_986F rora
bpl L_987F
bsr L_98A2
L_987F lda <$4f
bcs L_988C
bsr L_9838
L_988C ldx #$98a6
bsr L_9813
L_9895 bcs L_989D
L_9896 equ L_9895 + 1
jsr L_9102
L_989D puls a
bpl L_98A5
L_98A2 jmp L_96DE
L_98A5 rts
subd L_83BD
fcb $7b,$83,$fc ; dec L_83FC
jmp L_9244
clr L_AAAA
L_98E2 neg <$cc
L_98E3 equ L_98E2 + 1 ; $98e3: Called from BASIC init routine ($b3ba-)
L_98FF rts
L_9900 jsr <$9f
jsr L_B7AA
bsr L_994A
bsr L_994A
lbcs L_8B8D ; $8b8d-$8b91: Jump to this causes ?FC ERROR
bsr L_994A
bne L_98FF
jsr L_B891
jsr L_801B ; $801b-$801d: Write leader to cassette (JMP $be68) Called indirectly from [$a00c]
L_992B stx <$7e
bcc L_993C
jmp L_B6CD
L_993C cmpd #$00ff
bcc L_9945
L_9945 jsr L_B999
bra L_992B
L_994A jsr L_89AA
jsr L_8E83 ; $8e83: Get16Bit: returns value of following number in X (CoCo $b73d)
jsr L_9418
bmi L_995E
L_995B jmp L_9499
L_995E com <$54
bsr L_995B
jmp L_96DE
jsr L_9D9F
L_996A lda #$01
jsr L_83FF
lbcs L_8605
jsr L_8F08
L_997F ldd <$2b
jsr L_957A ; $957a: Print Number: outputs D as number to DEVN (CoCo $bdcc)
jsr L_90F5
bne L_99B3
L_998E clrb
L_998F jsr L_9AB9
jsr L_A438 ; $a438-$a440: Sub - returns CC.C set if A is not char '0'-'9'
bcs L_99A2
bra L_998F
L_99A2 subb #$01
bne L_99AF
jsr L_90A1 ; $90a1: Print CR/LF: moves cursor posn to start of new line (CoCo $b958)
bra L_996A
L_99AF cmpa #$4c
bne L_99BE
L_99B3 bsr L_99E6
jsr L_90A1 ; $90a1: Print CR/LF: moves cursor posn to start of new line (CoCo $b958)
bra L_997F
L_99BC leas 2,s
L_99BE cmpa #$0d
bne L_99CF
bsr L_99E6
L_99C4 jsr L_90A1
jmp L_83A6
L_99CF cmpa #$45
beq L_99C4
bne L_99DD
jsr L_90A1 ; $90a1: Print CR/LF: moves cursor posn to start of new line (CoCo $b958)
jmp L_8371 ; $8371: Prints OK prompt and returns to Command mode (CoCo $ac73)
L_99DD bsr L_99E1
bra L_998E
L_99E1 cmpa #$20
bne L_99F5
L_99E5 cmpx #$c6f9
L_99E6 equ L_99E5 + 1
L_99E8 lda ,x
beq L_99F4
jsr L_B54A ; $b54a: %OUTCHR% Sends char in A to DEVN (CoCo $a282) Called indirectly from [$a002]
bne L_99E8
L_99F4 rts
L_99F5 cmpa #$44
bne L_9A41
L_99F9 tst ,x
beq L_99F4
bsr L_9A03
bne L_99F9
L_9A03 dec <$d7
L_9A07 leay 1,y
bne L_9A07
L_9A10 cmpa #$49
beq L_9A27
beq L_9A25
bne L_9A78
L_9A25 bsr L_99E6
L_9A27 jsr L_9AB9
beq L_99BC
beq L_9A57
bne L_9A58
beq L_9A27
bsr L_9A82
bsr L_9A03
bra L_9A27
L_9A41 cmpa #$43
bne L_9A10
L_9A45 tst ,x
beq L_9A57
jsr L_9AB9
bcs L_9A50
bra L_9A45
L_9A50 sta ,x+
bsr L_9A8B
bne L_9A45
L_9A57 rts
L_9A58 ldb <$d7
bne L_9A60
bra L_9A27
L_9A60 pshs x
L_9A62 tst ,x+
bne L_9A62
L_9A66 ldb ,-x
bne L_9A66
bsr L_9A8B
bra L_9A27
L_9A78 cmpa #$08
bne L_9A8E
L_9A7C bsr L_9A82
bne L_9A7C
L_9A82 cmpx #$02dd
beq L_9A57
L_9A8B jmp L_B54A
L_9A8E cmpa #$4b
beq L_9A97
beq L_9A97
L_9A97 pshs a
bsr L_9AB9
L_9A9D lda ,x
beq L_9AB7
bne L_9AAB
bsr L_9A8B
bra L_9AAE
L_9AAB jsr L_9A03
L_9AAE lda ,x
bne L_9A9D
bne L_9A9D
L_9AB7 puls y,pc
L_9AB9 jsr L_B505
bcc L_9AB9
bne L_9AC6
L_9AC6 cmpa #$0d
beq L_9AD8
beq L_9AD8
beq L_9AD8
bcs L_9AB9
L_9AD8 rts
jsr L_B7E0
jsr L_B63C
jsr L_B595
jmp L_8C36 ; $8c35-$8c3f: Assign16Bit: assigns D to numeric variable (CoCo $b4f2) ?? 8c35:8c36 is a BRN, $8c36-$8c3f: Assign8Bit: assigns B to numeric variable (CoCo $b4f3) clears A, stores D in FAC
jsr L_89A7 ; $89a7: CkOpBrak: checks cmd line for open bracket (CoCo $b26a)
jsr L_8A94 ; $8a94: %GETVAR% gets VARPTR addr of following variables name (CoCo $b357)
jsr L_89A4 ; $89a4: CkClBrak: checks cmd line for closed bracket (CoCo $b267)
bne L_9B5A
jmp L_9FD0 ; $9fce-$9fff: D32 - Unused 0x00, $9fd0-$9fd8: D64 - Patch to support VARPTRs >32K
L_9B0C jsr <$9f
jsr L_89A7 ; $89a7: CkOpBrak: checks cmd line for open bracket (CoCo $b26a)
jsr L_8A94 ; $8a94: %GETVAR% gets VARPTR addr of following variables name (CoCo $b357)
bls L_9B21
bls L_9B33
L_9B21 ldb ,x
jsr L_8CB3
jsr L_8D89
L_9B33 jsr L_8E7E
beq L_9B5A
beq L_9B44
jsr L_8E7E
L_9B44 pshs b
jsr L_89A4 ; $89a4: CkClBrak: checks cmd line for closed bracket (CoCo $b267)
jsr L_89AC ; $89ac: CkChar: as for CkComa but checks for chr in B (CoCo $b26f)
bsr L_9B7E
bcc L_9B5D
L_9B5A jmp L_8B8D
L_9B5D inca
bcc L_9B64
L_9B64 lda 1,s
beq L_9B7C
bls L_9B75
L_9B75 tfr a,b
jsr L_B7CC ; $b7cc: Copy B bytes from X to U
L_9B7C puls a,b,x,pc
L_9B7E jsr L_8887
jmp L_8D9A ; $8d9a: Sub -
jsr L_89A7 ; $89a7: CkOpBrak: checks cmd line for open bracket (CoCo $b26a)
jsr L_8E51 ; $8e51: Get8Bit: returns value of following number in B (CoCo $b70b)
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
jsr L_8887 ; $8887: Get string: compiles a string and puts it in free string space (CoCo $b156)
jsr L_89A4 ; $89a4: CkClBrak: checks cmd line for closed bracket (CoCo $b267)
bne L_9B9E
jsr L_8E54
bra L_9BA1
L_9B9E jsr L_8DEA
L_9BA1 pshs b
jsr L_8C52
beq L_9BB1
L_9BAC sta ,x+
bne L_9BAC
L_9BB1 jmp L_8DE1
L_9BB4 jsr L_89A7 ; $9bb4: INSTR function token dispatch address
jsr L_8887 ; $8887: Get string: compiles a string and puts it in free string space (CoCo $b156)
bne L_9BD2
jsr L_8E54
beq L_9B5A
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
jsr L_8887 ; $8887: Get string: compiles a string and puts it in free string space (CoCo $b156)
jsr L_8877 ; $8877: Get expression: evaluates next expression and puts VARPTR addr in $0052:0053 (CoCo $b146)
L_9BD2 ldx <$52
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
jsr L_9B7E
jsr L_89A4 ; $89a4: CkClBrak: checks cmd line for closed bracket (CoCo $b267)
jsr L_8D9F ; $8d9f: %DELVAR% frees space taken by variable (CoCo $b659)
bcs L_9C0F
beq L_9C0C
L_9BF4 leay ,x
bcs L_9C0F
L_9C03 lda ,x+
bne L_9C15
bne L_9C03
L_9C0C ldb 6,s
L_9C0E brn L_9C6F
L_9C0F equ L_9C0E + 1
jmp L_8C36 ; $8c35-$8c3f: Assign16Bit: assigns D to numeric variable (CoCo $b4f2) ?? 8c35:8c36 is a BRN, $8c36-$8c3f: Assign8Bit: assigns B to numeric variable (CoCo $b4f3) clears A, stores D in FAC
L_9C15 inc 6,s
bra L_9BF4
L_9C1B clr <$52
beq L_9C3A
beq L_9C4F
bra L_9C3C
L_9C30 cmpa #$38
lbhi L_89B4 ; $89b4: Both reserved word and function dispatch tables of Stub 1 at $012a point here
bsr L_9C64
L_9C3A jsr <$9f
L_9C3C bcs L_9C30
L_9C3E clr <$50 ; $9c3e: Assign16BitB: assigns value in $0052:0053 to a variable (CoCo $880e)
jmp L_9165
L_9C4F jsr <$9f
bcs L_9C5E
jsr L_8ADF
bcs L_9C3E ; $9c3e: Assign16BitB: assigns value in $0052:0053 to a variable (CoCo $880e)
bcc L_9C3E ; $9c3e: Assign16BitB: assigns value in $0052:0053 to a variable (CoCo $880e)
L_9C5E ldb #$04
bsr L_9C64
bra L_9C4F
L_9C64 lsl 1,x
lbcs L_91DB
bne L_9C64
L_9C6F suba #$30
L_9C75 rts
L_9C76 ldx <$68
bne L_9C75
L_9C7E jmp L_8344
lbeq L_9D00 ; $9d00-$9d0c: Sub
bsr L_9CB1
bsr L_9C76
jsr L_89A7 ; $89a7: CkOpBrak: checks cmd line for open bracket (CoCo $b26a)
jsr L_8A94 ; $8a94: %GETVAR% gets VARPTR addr of following variables name (CoCo $b357)
bsr L_9CC1
jsr L_89A4 ; $89a4: CkClBrak: checks cmd line for closed bracket (CoCo $b267)
jsr L_89AC ; $89ac: CkChar: as for CkComa but checks for chr in B (CoCo $b26f)
jmp L_8613 ; $8613: DATA token dispatch address
L_9CB1 ldb #$be
jsr L_89AC ; $89ac: CkChar: as for CkComa but checks for chr in B (CoCo $b26f)
jsr L_8A99
L_9CC1 jmp L_8874
L_9CC4 bsr L_9CB1
jsr L_899F
bsr L_9CC1
beq L_9C7E
jsr L_93E0
jsr L_8872
lbne L_89B4 ; $89b4: Both reserved word and function dispatch tables of Stub 1 at $012a point here
L_9D00 jsr <$9f ; $9d00-$9d0c: Sub
bsr L_9D0D ; $9d0d-$9d1c: Sub which returns a ptr in X to the address in the USR table (ref'd by $00b0:00b1) of the USR function to be called
bsr L_9D35 ; $9d35-$9d3c: Sub which checks for '=' token, then gets value of next expression by JMPing to $8e83
L_9D0D jsr L_9FD9 ; $9d0d-$9d1c: Sub which returns a ptr in X to the address in the USR table (ref'd by $00b0:00b1) of the USR function to be called
bcc L_9D18 ; $9d0d-$9d1c: Sub which returns a ptr in X to the address in the USR table (ref'd by $00b0:00b1) of the USR function to be called
L_9D18 ldx <$b0 ; $9d0d-$9d1c: Sub which returns a ptr in X to the address in the USR table (ref'd by $00b0:00b1) of the USR function to be called
bsr L_9D0D ; $9d0d-$9d1c: Sub which returns a ptr in X to the address in the USR table (ref'd by $00b0:00b1) of the USR function to be called
jsr L_899F
beq L_9D34
jsr L_8D9D
L_9D34 rts
L_9D35 ldb #$cb ; $9d35-$9d3c: Sub which checks for '=' token, then gets value of next expression by JMPing to $8e83
jsr L_89AC ; $89ac: CkChar: as for CkComa but checks for chr in B (CoCo $b26f)
jmp L_8E83 ; $8e83: Get16Bit: returns value of following number in X (CoCo $b73d)
L_9D3D lda >$ff03 ; $9d3d: IRQ interrupt service routine
bmi L_9D43
L_9D43 lda >$ff02
jmp L_AFD9 ; $afd9: PLAY IRQ routine - branches to $bb02 if $00e3 == 0x0000
L_9D51 jsr <$9f
bsr L_9D35 ; $9d35-$9d3c: Sub which checks for '=' token, then gets value of next expression by JMPing to $8e83
jmp L_9C3E ; $9c3e: Assign16BitB: assigns value in $0052:0053 to a variable (CoCo $880e)
lbeq L_8B8D ; $8b8d-$8b91: Jump to this causes ?FC ERROR
jsr L_869A
jsr L_83FF
beq L_9D81
bne L_9DB0
beq L_9D7D
bsr L_9D9F
bra L_9D81
L_9D7D lda #$ff
L_9D81 ldu <$d3
L_9D83 cmpx #$eec4
L_9D84 equ L_9D83 + 1
beq L_9D90
bls L_9D84
L_9D90 ldx <$d3
bsr L_9DA9
jsr L_841F ; $841f: BasVect1 - sets up various vectors after a BASIC program loaded (CoCo $ad21)
jsr L_83EF
jmp L_8371 ; $8371: Prints OK prompt and returns to Command mode (CoCo $ac73)
L_9D9F jsr L_869A
jmp L_B7F9
L_9DA5 lda ,u+
L_9DA9 cmpu <$1b
bne L_9DA5
L_9DB0 rts
L_9DB1 jsr L_9C76
bne L_9DC3
jsr L_B7D7
jsr L_B623
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
L_9DC3 cmpa #$22
bne L_9DD2
jsr L_8975
jsr L_89AC ; $89ac: CkChar: as for CkComa but checks for chr in B (CoCo $b26f)
jsr L_90E8
L_9DD2 leas -2,s
jsr L_8766
jsr L_8A94 ; $8a94: %GETVAR% gets VARPTR addr of following variables name (CoCo $b357)
jsr L_8877 ; $8877: Get expression: evaluates next expression and puts VARPTR addr in $0052:0053 (CoCo $b146)
jsr L_8C5D
jmp L_86D7
L_9DED jsr L_869A
L_9DF3 ldx <$d1
L_9DF5 stx <$2b
jmp L_83FF
jsr L_8424
bcc L_9E11
bsr L_9DED
L_9E11 beq L_9E2E
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
bcc L_9E1E
bsr L_9DED
L_9E1E beq L_9E2E
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
bcc L_9E2B
bsr L_9DED
beq L_9E74
L_9E2B jsr L_B7F9
L_9E2E bsr L_9DF3
bsr L_9DF5
bcs L_9E74
bsr L_9E58
jsr L_9ECE
jsr L_83ED ; $83ed: BasVect2 - completes init once BASIC program loaded (CoCo $acef)
bsr L_9DF3
bsr L_9E82
bsr L_9E59
bsr L_9E82
jsr L_9F6C
jsr L_8424
jsr L_83ED ; $83ed: BasVect2 - completes init once BASIC program loaded (CoCo $acef)
jmp L_8371 ; $8371: Prints OK prompt and returns to Command mode (CoCo $ac73)
L_9E58 lda #$4f
L_9E59 equ L_9E58 + 1
bsr L_9E77
L_9E62 tst <$d8
bne L_9E68
L_9E68 ldx ,x
bsr L_9E77
L_9E6E bcs L_9E74
bcs L_9E62
L_9E74 jmp L_8B8D
L_9E77 pshs a,b
bne L_9E81
L_9E81 rts
L_9E82 ldx <$19
L_9E86 leax 1,x
bsr L_9E77
L_9E8A leax 3,x
L_9E8C leax 1,x
beq L_9E86
beq L_9EA3
beq L_9EC4
bne L_9E8C
L_9E9D lda #$03
bra L_9E8A
L_9EA3 ldd 1,x
beq L_9EAA
L_9EAA ldb 3,x
beq L_9EB1
L_9EB1 std 1,x
jsr L_83FF
L_9EB8 ldx <$0f
bcs L_9E9D
bra L_9E8A
L_9EC4 clr ,x
bra L_9EB8
L_9ECE ldx <$19
bra L_9ED6
L_9ED2 ldx <$a6
L_9ED6 bsr L_9E77
L_9EDA leax 1,x
L_9EDC stx <$a6
L_9EDE jsr <$9f
L_9EE0 tsta
beq L_9ED2
bpl L_9EDE
beq L_9EDA
beq L_9F04
beq L_9F04
bne L_9EDE
beq L_9F04
bne L_9EDC
L_9F04 jsr <$9f
bcs L_9F0C
L_9F08 jsr <$a5
bra L_9EE0
L_9F0C ldx <$a6
jsr L_869A
L_9F15 lda ,-x
jsr L_A438 ; $a438-$a440: Sub - returns CC.C set if A is not char '0'-'9'
bcs L_9F15
beq L_9F46
bcs L_9F32
jsr L_9DA9
bra L_9F46
L_9F32 stx <$47
jsr L_831C
L_9F46 puls x
bne L_9F58
L_9F58 stb 1,x
bne L_9F62
L_9F62 stb 3,x
beq L_9F04
bra L_9F08
L_9F6C ldx <$19
L_9F70 leax 1,x
jsr L_9E77
L_9F7B leax 1,x
L_9F7D lda ,x
beq L_9F70
beq L_9F9F
bne L_9F7B
jsr L_90E5 ; $90e5: Out String: Prints ASCIIZ string ptd to by X to DEVN (CoCo $b99c)
jsr L_957A ; $957a: Print Number: outputs D as number to DEVN (CoCo $bdcc)
jsr L_9573
jsr L_90A1 ; $90a1: Print CR/LF: moves cursor posn to start of new line (CoCo $b958)
L_9F9F pshs x
jsr L_9C3E ; $9c3e: Assign16BitB: assigns value in $0052:0053 to a variable (CoCo $880e)
jsr L_9587
L_9FAF leax 1,x
beq L_9FBA
bra L_9FAF
L_9FBA leax ,u
beq L_9F7D
jsr L_9DA9
bra L_9F7D
bra L_9FCE ; $9fce-$9fff: D32 - Unused 0x00
L_9FCE subd <$1f ; $9fce-$9fff: D32 - Unused 0x00
L_9FD0 clr <$06 ; $9fce-$9fff: D32 - Unused 0x00, $9fd0-$9fd8: D64 - Patch to support VARPTRs >32K
jmp L_9C3E ; $9c3e: Assign16BitB: assigns value in $0052:0053 to a variable (CoCo $880e)
L_9FD9 clrb ; $9fce-$9fff: D32 - Unused 0x00, $9fd9-$9fff: D64 - Unused 0x00
bcs L_9FE4 ; $9fce-$9fff: D32 - Unused 0x00, $9fd9-$9fff: D64 - Unused 0x00
bhi L_9FE4 ; $9fce-$9fff: D32 - Unused 0x00, $9fd9-$9fff: D64 - Unused 0x00
L_9FE4 jmp <$9f ; $9fce-$9fff: D32 - Unused 0x00, $9fd9-$9fff: D64 - Unused 0x00
L_9FE6 clr >$ff02 ; $9fce-$9fff: D32 - Unused 0x00, $9fd9-$9fff: D64 - Unused 0x00
jsr L_BBEC ; $bbec: Keyboard polling sub, returns key code in A
bne L_9FFD ; $9fce-$9fff: D32 - Unused 0x00, $9fd9-$9fff: D64 - Unused 0x00
beq L_9FE6 ; $9fce-$9fff: D32 - Unused 0x00, $9fd9-$9fff: D64 - Unused 0x00
L_9FFD tsta ; $9fce-$9fff: D32 - Unused 0x00, $9fd9-$9fff: D64 - Unused 0x00
jsr L_8E86
L_A016 pshs b
L_A01B lsl <$53
bne L_A01B
bne L_A030
beq L_A030
beq L_A03C
L_A030 addb #$30
bls L_A038
L_A038 stb ,x+
L_A03C puls b
bne L_A016
jmp L_8C5B
beq L_A05A
lbne L_89B4 ; $89b4: Both reserved word and function dispatch tables of Stub 1 at $012a point here
L_A05A sta <$e6
L_A05D lda <$e6
beq L_A064
L_A064 lsr >$0151
L_A06D cmpa ,x+
bne L_A079
bne L_A06D
bra L_A088
L_A079 dec >$011d
bne L_A08B
L_A080 sta ,x+
bne L_A080
L_A088 sta >$011d
L_A08B rti
L_A08E clr <$78
jsr L_B7AA
jsr L_B87A
lbeq L_B73C
jsr L_B867
bne L_A08B
beq L_A0BA
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
jsr L_8E83 ; $8e83: Get16Bit: returns value of following number in X (CoCo $b73d)
L_A0BA stx <$d3
jsr L_B7F9
L_A0BF bsr L_A0EA
bsr L_A0E3
bsr L_A0E3
lbne L_B663
L_A0D5 bsr L_A0EA
bne L_A0F1
bne L_A0D5
bra L_A0BF
L_A0E3 bsr L_A0E5
L_A0E5 bsr L_A0EA
L_A0E9 rts
L_A0EA jsr L_B50A ; $a0ea: Waits for keypress with flashing cursor (CoCo $8cc6)
beq L_A0E9
L_A0F1 jmp L_B84B
bsr L_A115
beq L_A101
bsr L_A108
L_A101 ldb #$34
jmp L_8344 ; $8344: System Error - generates error message according to B (CoCo $ac46)
L_A106 ldu <$7e
L_A108 leax 1,u
jsr L_A17E
jmp L_B876
L_A115 clra
bra L_A11E
L_A11C bsr L_A149
L_A11E lda #$8a
bsr L_A159
bne L_A11C
L_A127 lda ,x+
jsr L_A1C1
bne L_A127
bsr L_A163
bne L_A11C
bsr L_A173
bne L_A11C
bsr L_A173
bne L_A11C
bsr L_A16C
bne L_A11C
L_A149 inc ,y
bcs L_A16B
jsr L_802D ; $802d-$802f: Sends a byte to serial port (D32 JMP $be7c; D64 JMP $be98)
jmp L_B84B
L_A159 pshs a
bsr L_A1BA
bne L_A161
L_A161 puls a,pc
L_A163 lda 1,y
bsr L_A1BA
bne L_A16B
L_A16B rts
L_A16C bsr L_A173
bne L_A16B
L_A173 jsr L_802A
L_A17E clra
bra L_A18D
L_A18B bsr L_A149
L_A18D lda #$97
bsr L_A159
bne L_A18B
bsr L_A1C1
bsr L_A1C1
bsr L_A163
bne L_A18B
bsr L_A173
bne L_A18B
L_A1A9 bsr L_A173
bne L_A18B
bne L_A1A9
bsr L_A16C
bne L_A18B
L_A1BA clr 1,y
bsr L_A1C9
jmp L_802A ; $802a-$802c: Reads a byte from serial port (JMP $be7b)
L_A1C1 pshs a
L_A1C9 jmp L_802D
L_A1CC lda #$01
L_A1D0 decb
jsr L_A366
lbeq L_A266
jsr L_8887 ; $8887: Get string: compiles a string and puts it in free string space (CoCo $b156)
jsr L_8877 ; $8877: Get expression: evaluates next expression and puts VARPTR addr in $0052:0053 (CoCo $b146)
jsr L_8DF3
jsr L_90E8
L_A1F4 decb
lbmi L_A341
jsr L_90F5
bra L_A1F4
L_A1FE stb <$d3
L_A206 lda ,x
beq L_A1D0
bne L_A217
bne L_A206
L_A217 ldx <$0f
L_A21D jsr L_A366
jsr L_B54A ; $b54a: %OUTCHR% Sends char in A to DEVN (CoCo $a282) Called indirectly from [$a002]
bra L_A247
L_A225 jsr L_8889
jsr L_8877 ; $8877: Get expression: evaluates next expression and puts VARPTR addr in $0052:0053 (CoCo $b146)
jsr L_89AC ; $89ac: CkChar: as for CkComa but checks for chr in B (CoCo $b26f)
bra L_A23C
L_A236 lda <$d7
beq L_A242
L_A23C clr <$d7
bne L_A245
L_A242 jmp L_8B8D
L_A245 ldx 2,x
L_A247 clr <$da
L_A249 clr <$d9
lbeq L_A1CC
beq L_A2B2
bne L_A270
jsr L_A366
jsr L_B54A ; $b54a: %OUTCHR% Sends char in A to DEVN (CoCo $a282) Called indirectly from [$a002]
L_A260 jsr <$a5
bne L_A236
L_A266 bne L_A26B
jsr L_90A1 ; $90a1: Print CR/LF: moves cursor posn to start of new line (CoCo $b958)
L_A26B ldx <$d5
jmp L_8D9F ; $8d9f: %DELVAR% frees space taken by variable (CoCo $b659)
L_A270 cmpa #$2b
bne L_A27D
jsr L_A366
bra L_A249
L_A27D cmpa #$2e
beq L_A2CF
lbeq L_A1FE
L_A289 bne L_A21D
beq L_A2A8
bne L_A289
bcs L_A2AE
bne L_A2AE
L_A2A8 lda <$da
L_A2AE leax 1,x
L_A2B2 clr <$d8
L_A2B4 inc <$d9
beq L_A302
beq L_A2DD
beq L_A2B4
bne L_A2E8
bra L_A2B4
L_A2CF lda ,x
lbne L_A21D
L_A2DD inc <$d8
beq L_A302
beq L_A2DD
L_A2E8 cmpa #$5e
bne L_A302
bne L_A302
bne L_A302
bne L_A302
bcs L_A302
L_A302 leax -1,x
bne L_A324
beq L_A324
beq L_A31D
bne L_A324
L_A31D ora #$04
L_A324 jsr <$a5
lbeq L_A266
jsr L_8872
lbhi L_8B8D ; $8b8d-$8b91: Jump to this causes ?FC ERROR
jsr L_A373
jsr L_90E5 ; $90e5: Out String: Prints ASCIIZ string ptd to by X to DEVN (CoCo $b99c)
L_A341 clr <$d7
beq L_A354
beq L_A352
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
bra L_A354
L_A352 jsr <$9f
L_A354 ldx <$d5
lbne L_A247
jmp L_A260
L_A366 pshs a
beq L_A371
jsr L_B54A ; $b54a: %OUTCHR% Sends char in A to DEVN (CoCo $a282) Called indirectly from [$a002]
L_A371 puls a,pc
L_A373 ldu #$03db
beq L_A380
L_A380 tst <$54
bpl L_A388
L_A388 stb ,u+
lbne L_A49B
jsr L_944B
bmi L_A3B1
jsr L_9587
L_A39F lda ,x+
bne L_A39F
L_A3A3 lda ,-x
bne L_A3A3
L_A3B1 lda <$4f
beq L_A3BA
jsr L_A55B
L_A3BA lda <$47
lbmi L_A441
jsr L_A478
jsr L_A5F1
jsr L_A590
jsr L_A60F
jsr L_A5D7
bne L_A3DE
L_A3DE deca
jsr L_A478
L_A3E2 jsr L_A513
beq L_A3EE
beq L_A3EE
L_A3EE clr ,u
L_A3F3 leax 1,x
beq L_A437
beq L_A3F3
beq L_A3F3
L_A40A pshs a
beq L_A40A
beq L_A40A
beq L_A40A
bne L_A42C
bsr L_A438 ; $a438-$a440: Sub - returns CC.C set if A is not char '0'-'9'
bcs L_A42C
L_A424 puls a
bne L_A424
bra L_A3F3
L_A42C puls a
bne L_A42C
L_A437 rts
L_A438 cmpa #$30 ; $a438-$a440: Sub - returns CC.C set if A is not char '0'-'9'
bcs L_A440 ; $a438-$a440: Sub - returns CC.C set if A is not char '0'-'9'
L_A440 rts ; $a438-$a440: Sub - returns CC.C set if A is not char '0'-'9'
L_A441 lda <$d8
beq L_A446
L_A446 adda <$47
bmi L_A44B
L_A44B pshs a
L_A44D bpl L_A459
jsr L_932D
bra L_A44D
L_A459 lda <$47
bmi L_A47C
bsr L_A478
jsr L_A5F1
bra L_A48D
L_A470 pshs a
L_A478 deca
bpl L_A470
L_A47C lda <$d9
bsr L_A478
jsr L_A5DB
bsr L_A478
L_A48D jsr L_A590
bne L_A496
L_A496 adda <$47
lbra L_A3DE
L_A49B lda <$4f
beq L_A4A4
jsr L_A55B
L_A4A4 lda <$d8
beq L_A4A9
L_A4A9 adda <$d9
bne L_A4B7
L_A4B7 adda >$03da
L_A4BE bpl L_A4CA
jsr L_932D
bra L_A4BE
L_A4CA lda ,s
bmi L_A4CF
L_A4CF nega
jsr L_A590
jsr L_A60F
bne L_A4E8
L_A4E8 ldb ,s+
beq L_A4F5
L_A4F5 lda #$2b
bpl L_A4FD
L_A4FD sta 1,u
L_A505 inca
bcc L_A505
jmp L_A3E2
L_A513 ldx #$03db
beq L_A52C
bne L_A52C
L_A52C pshs b
L_A52E sta ,x+
beq L_A544
beq L_A544
beq L_A52E
beq L_A52E
bne L_A548
L_A544 lda #$30
L_A548 lda <$da
beq L_A552
L_A552 anda #$04
bne L_A55A
L_A55A rts
L_A55B pshs u
L_A55E sta <$47
bhi L_A577
jsr L_9273
bra L_A55E
L_A572 jsr L_932D
L_A577 ldx #$9569
jsr L_944B
bgt L_A572
L_A57F ldx #$9564
jsr L_944B
bgt L_A58E
jsr L_9315
bra L_A57F
L_A58E puls u,pc
L_A590 pshs u
jsr L_90FD
jsr L_9473
L_A59F bsr L_A5D7
L_A5A1 lda <$53
bvc L_A5A1
bcc L_A5C3
L_A5C3 addb #$2f
bne L_A59F
L_A5D7 dec <$45
bne L_A5E4
L_A5DB stu <$39
L_A5E4 dec <$d7
bne L_A5F0
L_A5F0 rts
L_A5F1 lda <$47
L_A5F8 suba #$03
bcc L_A5F8
bne L_A608
L_A608 rts
L_A609 pshs a
bsr L_A5D7
L_A60F deca
bmi L_A61C
bne L_A609
L_A61C rts
L_A61D ldu #$a62a
L_A626 bsr L_A61D
bra L_A67F
L_A677 ldb <$b9
L_A67B lsra
bcc L_A681
L_A67F leax 1,x
L_A681 rts
bcc L_A67B
L_A68A jsr L_8E7A
L_A691 cmpb #$c0
bcs L_A697
L_A697 clra
bcs L_A6A5
L_A6A5 std ,y
L_A6A8 jsr L_A68A
L_A6AB ldu #$00bd
L_A6AE lda <$b6
bcc L_A6BA
L_A6BA lda <$b6
bcc L_A6C6
L_A6C6 rts
jsr L_A740
jsr L_A6AB
jsr L_A626
bcc L_A6E9
L_A6D7 cmpa #$04
bcs L_A6DF
bra L_A6D7
L_A6DF inca
L_A6E4 tfr a,b
jmp L_8C36 ; $8c35-$8c3f: Assign16Bit: assigns D to numeric variable (CoCo $b4f2) ?? 8c35:8c36 is a BRN, $8c36-$8c3f: Assign8Bit: assigns B to numeric variable (CoCo $b4f3) clears A, stores D in FAC
L_A6E9 tsta
beq L_A6E4
bra L_A6DF
bra L_A6F4
L_A6F4 sta <$c2
jsr L_89A7 ; $89a7: CkOpBrak: checks cmd line for open bracket (CoCo $b26a)
jsr L_A6A8
jsr L_A90F
jsr L_89A4 ; $89a4: CkClBrak: checks cmd line for closed bracket (CoCo $b267)
jsr L_A626
L_A705 ldb ,x
L_A71D ldx <$c7
beq L_A72C
jsr L_A740
L_A72C ldb #$c4
jsr L_89AC ; $89ac: CkChar: as for CkComa but checks for chr in B (CoCo $b26f)
jsr L_89A7 ; $89a7: CkOpBrak: checks cmd line for open bracket (CoCo $b26a)
jsr L_8E7A
jsr L_A691
bra L_A746
L_A740 jsr L_89A7
jsr L_A68A
L_A746 jmp L_89A4
lbeq L_9DB1
beq L_A75C
beq L_A75C
jsr L_89AC ; $89ac: CkChar: as for CkComa but checks for chr in B (CoCo $b26f)
L_A75C jsr L_A71D
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
beq L_A777
lbne L_89B4 ; $89b4: Both reserved word and function dispatch tables of Stub 1 at $012a point here
L_A776 lda #$5f
L_A777 equ L_A776 + 1
jsr L_A7AE
jsr L_A928 ; $a928: Set Colours: sets up locations $00b4, $00b5 (CoCo $959a)
lbeq L_A82F
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
jsr L_89AC ; $89ac: CkChar: as for CkComa but checks for chr in B (CoCo $b26f)
bne L_A7B7
bsr L_A7D2
bsr L_A7FC
bsr L_A7FC
bra L_A7D2
L_A7AE jsr L_A6AB
jmp L_A6AE
L_A7B7 ldb #$46
jsr L_89AC ; $89ac: CkChar: as for CkComa but checks for chr in B (CoCo $b26f)
bra L_A7C2
L_A7BE leax -1,x
L_A7C0 stx <$bf
L_A7C2 jsr L_A7D2
beq L_A7D1
bcc L_A7BE
bra L_A7C0
L_A7D1 rts
L_A7D2 ldx <$bd
jsr L_AAB8
bcc L_A7DF
L_A7DF tfr d,y
jsr L_A626
bsr L_A822
L_A7EC sta <$d7
jsr L_A705
bne L_A7EC
L_A7FA puls a,b
L_A7FC ldd <$bf
jsr L_AAAB
bcc L_A809
L_A809 tfr d,y
jsr L_A626
bsr L_A82B
bra L_A7EC
L_A822 ldu #$a818
L_A82B ldu #$a677
L_A82F ldy #$a89b
jsr L_AAAB
lbeq L_A7D2
bcc L_A840
L_A840 pshs a,b
jsr L_AAB8
beq L_A7FA
bcc L_A84F
L_A84F cmpd ,s
bcc L_A85A
L_A85A pshs a,b,u
bcs L_A86B
bcs L_A86B
L_A86B pshs a,b,x
jsr L_A61D
L_A870 jsr ,u
jsr L_A705
beq L_A890
bcs L_A870
bra L_A870
L_A890 puls x
L_A894 ldx <$bd
L_A8A2 ldx <$bd
L_A8B0 ldu #$00d3
jmp L_A6AE
beq L_A8D0
bsr L_A8E8
L_A8C4 lda #$55
L_A8C9 stb ,x+
bne L_A8C9
L_A8D0 ldb <$b3
bra L_A8C4
beq L_A8E0
bsr L_A8E8
beq L_A8E7
L_A8E0 jsr L_89AA
bsr L_A8E8
L_A8E7 rts
L_A8E8 jsr L_8E51
L_A8EB cmpb #$09
lbcc L_8B8D ; $8b8d-$8b91: Jump to this causes ?FC ERROR
bcs L_A8FA
L_A8FA pshs a
bcc L_A909
bne L_A906
L_A904 ldb #$04
L_A906 decb
L_A907 puls a,pc
L_A909 rorb
bcs L_A904
bra L_A907
L_A90F jsr L_A928
beq L_A926
beq L_A926
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
beq L_A926
jsr L_A8E8
bsr L_A930
L_A926 jmp <$a5
L_A928 ldb <$b2 ; $a928: Set Colours: sets up locations $00b4, $00b5 (CoCo $959a)
bne L_A930
L_A930 stb <$b4
L_A938 bne L_A95D ; $a938: Select Display: Selects Text (CC.Z=1) or Graphics (CC.Z=0) mode (CoCo $95aa)
L_A93A pshs a,b,x ; $a93a: Reset VDU: resets default VDU mode (CoCo $95ac)
L_A95D pshs a,b,x
jsr L_A99D ; $a99d: Set VDG Offset for graphics mode (CoCo $960f)
bne L_A985
L_A985 bsr L_A989
L_A989 ldb #$03 ; $a989: Set VDG Mode given in A (CoCo $95fb)
L_A98E rora
bcc L_A995
bra L_A997
L_A995 sta ,x
L_A997 leax 2,x
bne L_A98E
L_A99D ldb #$07 ; $a99d: Set VDG Offset for graphics mode (CoCo $960f)
bra L_A98E
L_A9A4 lda >$ff22 ; $a9a4: Set VDG Colour set from $00c1 (CoCo $9616)
L_A9AF cmpa #$2c ; $a9af: PMODE token dispatch address
beq L_A9DE
jsr L_8E51 ; $8e51: Get8Bit: returns value of following number in B (CoCo $b70b)
bcc L_A9FB
bhi L_A9FB
beq L_A9FA
L_A9DE jsr L_8E7E
beq L_A9FB
bhi L_A9FB
L_A9FA rts
L_A9FB jmp L_8B8D
beq L_AA0D
jsr L_8E51 ; $8e51: Get8Bit: returns value of following number in B (CoCo $b70b)
jsr L_A938 ; $a938: Select Display: Selects Text (CC.Z=1) or Graphics (CC.Z=0) mode (CoCo $95aa)
beq L_A9FA
L_AA0D jsr L_8E7E
beq L_AA15
L_AA15 stb <$c1
bra L_A9A4 ; $a9a4: Set VDG Colour set from $00c1 (CoCo $9616)
jsr L_8E51 ; $8e51: Get8Bit: returns value of following number in B (CoCo $b70b)
beq L_AA23 ; $aa23: Reserve HiRes Graphics RAM, moves BASIC if nec. (CoCo $9695)
bcc L_A9FB
L_AA23 lda #$06 ; $aa23: Reserve HiRes Graphics RAM, moves BASIC if nec. (CoCo $9695)
lbcs L_8B8D ; $8b8d-$8b91: Jump to this causes ?FC ERROR
bcc L_A9FB
beq L_AA4F
L_AA4F ldu <$1b
bcc L_AA6F
L_AA58 lda ,-u
bne L_AA58
L_AA66 jsr L_83ED
jsr L_8424
jmp L_849F ; $849f: RUN BASIC - runs BASIC program in mem used by Autorun programs (CoCo $ad9e)
L_AA6F ldu <$19
L_AA76 lda ,u+
bne L_AA76
bra L_AA66
L_AA81 ldb #$1e ; $aa81: Called from BASIC init routine ($b3ba-)
jmp L_8417 ; $8417: Erases program in memory same as NEW (CoCo $ad19) {1} Called from BASIC init routine ($b3ba)
bra L_AAB1
bra L_AAC1
L_AAA9 bra L_AAC3
L_AAAA equ L_AAA9 + 1
L_AAAB ldd <$c5
L_AAAF bcc L_AAEC
L_AAB1 pshs cc
jsr L_B15E
L_AAB8 ldd <$c3
bra L_AAAF
bsr L_AADA ; $aada-$aaef: Sub - reads and checks PCOPY page numbers
L_AAC0 pshs a,b
L_AAC1 equ L_AAC0 + 1
L_AAC2 ldb #$bc
L_AAC3 equ L_AAC2 + 1
jsr L_89AC ; $89ac: CkChar: as for CkComa but checks for chr in B (CoCo $b26f)
bsr L_AADA ; $aada-$aaef: Sub - reads and checks PCOPY page numbers
L_AAD1 ldd ,x++
bne L_AAD1
L_AADA jsr L_8E51 ; $aada-$aaef: Sub - reads and checks PCOPY page numbers
beq L_AAED ; $aada-$aaef: Sub - reads and checks PCOPY page numbers
bhi L_AAED ; $aada-$aaef: Sub - reads and checks PCOPY page numbers
L_AAEC rts ; $aada-$aaef: Sub - reads and checks PCOPY page numbers
L_AAED jmp L_8B8D ; $aada-$aaef: Sub - reads and checks PCOPY page numbers
bra L_AAF5
L_AAF3 ldb #$01 ; $aaf3: PUT token dispatch address
L_AAF5 stb <$d8
bne L_AB00
L_AB00 jsr L_A71D
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
jsr L_AC67
bne L_AAED ; $aada-$aaef: Sub - reads and checks PCOPY page numbers
beq L_AB52
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
bne L_AB35
jsr L_89AC ; $89ac: CkChar: as for CkComa but checks for chr in B (CoCo $b26f)
bra L_AB65
L_AB35 ldb #$05
L_AB3A ldu ,x++
beq L_AB49
bne L_AB3A
jmp L_89B4 ; $89b4: Both reserved word and function dispatch tables of Stub 1 at $012a point here
L_AB49 sty <$d5
bra L_AB65
L_AB52 ldb #$f8
bcc L_AB5B
L_AB5B tfr b,a
L_AB65 jsr L_AAB8
bcc L_AB6E
L_AB6E std <$c3
jsr L_AAAB
bcc L_AB79
L_AB79 std <$c5
bcc L_AB86
L_AB86 jsr L_A7AE
L_AB91 tst <$d4
L_AB92 equ L_AB91 + 1
bne L_ABED
jsr L_A626
L_ABA3 ldb <$c4
L_ABA7 tst <$d8
beq L_ABCC
bsr L_ABBE
L_ABB1 decb
bne L_ABA7
jsr L_A677
bne L_ABA3
L_ABBD rts
L_ABBE ldu <$cf
bne L_ABBD
L_ABC9 jmp L_8B8D
L_ABCC lda ,x+
bsr L_ABBE
bra L_ABB1
ble L_AB92
L_ABED addd #$0001
bne L_ABFF
L_ABF8 sta ,-u
bhi L_ABF8
L_ABFF jsr L_A626
bcc L_AC09
L_AC09 ldb #$01
L_AC0E pshs a,x
L_AC12 pshs a,u
bcc L_AC1F
beq L_ABC9
L_AC1F tst <$d8
beq L_AC42
beq L_AC2B
L_AC2B jmp [$00d9]
bra L_AC4C
bra L_AC4C
bra L_AC4C
L_AC42 bita ,x
beq L_AC4C
L_AC4C puls a,u
jsr L_A67B
bne L_AC12
bne L_AC0E
L_AC67 jsr L_8A94
L_AC72 cmpx <$1f
lbeq L_8B8D ; $8b8d-$8b91: Jump to this causes ?FC ERROR
beq L_AC83
bra L_AC72
L_AC83 leax 2,x
L_AC86 rts
bne L_AC8D
L_AC8D jsr L_A740
jsr L_A6AB
jsr L_A90F
beq L_ACA5
jsr L_A90F
L_ACA5 lda <$b5
jsr L_A8B0
jsr L_A61D
jsr L_AD7A
beq L_ACCC
jsr L_AD66
jsr L_AD55
jsr L_AD55
L_ACCC sts <$dc
L_ACCF tst <$db
bne L_ACD6
L_ACD6 puls a,b,x,u
beq L_AC86
bmi L_ACEF
bls L_ACF3
L_ACEF tstb
beq L_ACCF
L_ACF3 stb <$c0
jsr L_AD7A
beq L_AD09
bcs L_AD04
bsr L_AD3C
L_AD04 jsr L_AD66
L_AD07 bsr L_AD55
L_AD09 coma
L_AD0B addd <$d1
ble L_AD27
jsr L_A894
jsr L_ADAD
bne L_AD1E
bra L_AD0B
L_AD1E jsr L_A8A2
bsr L_AD61
bsr L_AD83
bra L_AD07
L_AD27 jsr L_A894
ble L_AD39
bsr L_AD3C
L_AD39 jmp L_ACCF
L_AD3C std <$cb
L_AD47 ldb <$c0
jsr L_8331
L_AD55 std <$cb
bra L_AD47
L_AD61 ldx <$bd
L_AD66 std <$cd
bsr L_AD61
bsr L_AD83
L_AD7A jsr L_AD61
ldy #L_A8A2
bra L_AD89
L_AD83 ldy #L_A894
L_AD89 ldu <$8a
L_AD8D bmi L_ADA6
bhi L_ADA6
bsr L_ADAD
beq L_ADA4
jsr L_A705
bra L_AD8D
L_ADA4 puls y,u
L_ADA6 tfr u,d
L_ADAD jsr [$00d9]
jsr L_8887 ; $8887: Get string: compiles a string and puts it in free string space (CoCo $b156)
jsr L_BAF1 ; $baf1-$bb01: Sub to init PIA for sound source output specified by the lower 2 bits of B - 00 = DAC, 01 = Tape input, 10 = External Cart source, 11 = none This code duplicates the function of $bd41-bd51, the only dif being an ASRB replacing a RORB
jsr L_BAC5 ; $bac5-$bad3: Enables sound (CoCo $a976)
L_ADCD jsr L_8D9A
bra L_ADD4
L_ADD2 puls b,x
L_ADD4 stb <$d8
beq L_ADD2
lbeq L_BAC3 ; $bac3: Audio off: Disables sound (CoCo $a974)
L_ADDE tst <$d8
beq L_ADD2
jsr L_AF33 ; $af33: Sub - gets next PLAY cmd in A
beq L_ADDE
beq L_ADDE
lbeq L_AFA5
bsr L_ADF7
bra L_ADDE
L_ADF7 cmpa #$4f
bne L_AE08
bsr L_AE5B
bhi L_AE68
L_AE08 cmpa #$56
bne L_AE26
bsr L_AE5B
bhi L_AE68
L_AE26 cmpa #$4c
bne L_AE4D
bsr L_AE5B
beq L_AE68
L_AE35 bsr L_AE3A
bcc L_AE35
L_AE3A tst <$d8
beq L_AE48
jsr L_AF33 ; $af33: Sub - gets next PLAY cmd in A
beq L_AE4A
jsr L_AF7D
L_AE48 coma
L_AE4A inc <$e5
L_AE4D cmpa #$54
bne L_AE5E
bsr L_AE5B
beq L_AE68
L_AE5B jmp L_AF47
L_AE5E cmpa #$50
bne L_AE86
jsr L_B066
bne L_AE6B
L_AE68 jmp L_8B8D
L_AE6B lda <$e5
bsr L_AE82
L_AE82 clr ,-s
bra L_AEC6
L_AE86 cmpa #$4e
bne L_AE8D
jsr L_AF33 ; $af33: Sub - gets next PLAY cmd in A
L_AE8D cmpa #$41
bcs L_AE95
bls L_AE9A ; $ae9a: Play Note: A contains ASCII code (CoCo $9ad7)
L_AE95 jsr L_AF59
bra L_AEBD
L_AE9A suba #$41 ; $ae9a: Play Note: A contains ASCII code (CoCo $9ad7)
beq L_AEBD
jsr L_AF33 ; $af33: Sub - gets next PLAY cmd in A
beq L_AEB0
bne L_AEB3
L_AEB0 incb
bra L_AEBD
L_AEB3 cmpa #$2d
bne L_AEBA
bra L_AEBD
L_AEBA jsr L_AF7D
L_AEBD decb
bhi L_AE68
L_AEC6 lda <$e2
bhi L_AEFF
L_AED3 ldx #$affd
L_AED4 equ L_AED3 + 1
bsr L_AF27
L_AEE4 bsr L_AEF2
bsr L_AEF5
bsr L_AEF2
bsr L_AEF5
bra L_AEE4
L_AEF2 lda #$7c
L_AEF5 sta >$ff20
L_AEFA leax -1,x
bne L_AEFA
L_AEFF ldx #$b015
bsr L_AF27
L_AF0D bsr L_AF1B
bsr L_AF1E
bsr L_AF1B
bsr L_AF1E
bra L_AF0D
L_AF1B lda #$7c
L_AF1E sta >$ff20
L_AF23 deca
bne L_AF23
L_AF27 ldb #$ff
beq L_AF32
L_AF32 rts
L_AF33 pshs x ; $af33: Sub - gets next PLAY cmd in A
L_AF35 tst <$d8
beq L_AF86
beq L_AF35
L_AF47 bsr L_AF33
beq L_AF89
beq L_AF8D
beq L_AF97
beq L_AF92
L_AF59 cmpa #$3d
beq L_AF9C
jsr L_A438 ; $a438-$a440: Sub - returns CC.C set if A is not char '0'-'9'
bcs L_AF86
L_AF63 suba #$30
bne L_AF86
bcs L_AF86
beq L_AF8C
jsr L_AF33 ; $af33: Sub - gets next PLAY cmd in A
jsr L_A438 ; $a438-$a440: Sub - returns CC.C set if A is not char '0'-'9'
bcc L_AF63
L_AF7D inc <$d8
L_AF86 jmp L_8B8D
L_AF89 incb
beq L_AF86
L_AF8C rts
L_AF8D tstb
beq L_AF86
L_AF92 tstb
beq L_AF86
L_AF97 tstb
bmi L_AF86
L_AF9C pshs y,u
bsr L_AFB6
jsr L_8E54
L_AFA5 jsr L_AFB6
jsr L_8331
jmp L_ADCD
L_AFB6 ldx <$d9
jsr L_AF33 ; $af33: Sub - gets next PLAY cmd in A
jsr L_8ADF
bcs L_AF86
L_AFC2 jsr L_AF33
bne L_AFC2
jsr L_89C1
L_AFD9 clra ; $afd9: PLAY IRQ routine - branches to $bb02 if $00e3 == 0x0000
lbeq L_BB02 ; $bb02-$bb0c: Interrupt service subroutine to decrement $008d:008e, returns with RTI
bhi L_AFF5
L_AFF5 rti
bmi L_B06D
bne L_B06A
brn L_B068
lbra L_C463
jsr L_A928 ; $a928: Set Colours: sets up locations $00b4, $00b5 (CoCo $959a)
jsr L_8887 ; $8887: Get string: compiles a string and puts it in free string space (CoCo $b156)
L_B061 jsr L_8D9A
bra L_B06E
L_B066 jsr L_AF33
L_B068 equ L_B066 + 2
L_B069 jmp L_AF59
L_B06A equ L_B069 + 1
L_B06C puls b,x
L_B06D equ L_B06C + 1
L_B06E stb <$d8
beq L_B06C
lbeq L_B162
L_B078 tst <$d8
beq L_B06C
jsr L_AF33 ; $af33: Sub - gets next PLAY cmd in A
beq L_B078
beq L_B078
bne L_B08F
bra L_B078
L_B08F cmpa #$42
bne L_B097
bra L_B078
L_B097 cmpa #$58
lbeq L_B133
lbeq L_B1CD
beq L_B0BC
jsr L_AF33 ; $af33: Sub - gets next PLAY cmd in A
jsr L_8ADF
jsr L_AF7D
bcc L_B0BC
bsr L_B066
L_B0BC puls a
beq L_B0EA
beq L_B0F4
beq L_B0FC
beq L_B12A
beq L_B127
beq L_B122
beq L_B11D
beq L_B10D
beq L_B108
beq L_B116
beq L_B104
L_B0E7 jmp L_8B8D
L_B0EA jsr L_A8EB
jsr L_A928 ; $a928: Set Colours: sets up locations $00b4, $00b5 (CoCo $959a)
L_B0F2 bra L_B078
L_B0F4 cmpb #$04
bcc L_B0E7
bra L_B0F2
L_B0FC cmpb #$3f
bcc L_B0E7
bra L_B0F2
L_B104 clra
bsr L_B15F
L_B107 brn L_B158
L_B108 equ L_B107 + 1
bra L_B166
L_B10D clra
bsr L_B15F
bra L_B166
L_B116 clra
bsr L_B15F
bra L_B166
L_B11D clra
L_B11E ldx <$8a
bra L_B166
L_B122 clra
bsr L_B15F
bra L_B11E
L_B127 clra
bra L_B12D
L_B12A clra
bsr L_B15F
L_B12D ldx <$8a
bra L_B166
L_B133 jsr L_AFB6
jsr L_8331
jmp L_B061
L_B144 ldb <$e9
beq L_B163
bpl L_B151
bsr L_B15E
L_B151 jsr L_B350
L_B158 lsra
bpl L_B162
L_B15E nega
L_B15F negb
L_B162 rts
L_B163 tfr x,d
L_B166 pshs a,b
bsr L_B144
bsr L_B144
L_B177 tst ,s
beq L_B183
bsr L_B15E
bra L_B177
L_B183 puls y
bmi L_B18D
L_B18D tfr x,d
bmi L_B197
L_B197 cmpu #$0100
bcs L_B1A0
L_B1A0 cmpx #$00c0
bcs L_B1A8
L_B1A8 ldd <$c7
bne L_B1BC
L_B1BC jsr L_A7AE
bne L_B1C6
jsr L_A82F
L_B1C6 clr <$d5
jmp L_B078
L_B1CD jsr L_AF33
jsr L_B1F9
jsr L_AF33 ; $af33: Sub - gets next PLAY cmd in A
lbne L_B0E7
jsr L_B1F6
beq L_B1F1
bne L_B197
L_B1F1 tfr u,d
jmp L_B166
L_B1F6 jsr L_AF33
L_B1F9 cmpa #$2b
beq L_B204
beq L_B205
jsr L_AF7D
L_B204 clra
L_B205 pshs a
jsr L_B066
beq L_B213
L_B213 rts
lsl L_AED4
bne L_B23E
L_B23E jsr L_A8B0
jsr L_A740
jsr L_A6AB
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
jsr L_8E83 ; $8e83: Get16Bit: returns value of following number in X (CoCo $b73d)
jsr L_A6AE
jsr L_A90F
beq L_B27A
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
jsr L_8872
jsr L_8E86
L_B27A lda <$b6
beq L_B284
L_B284 stx <$d1
jsr L_B37D
jsr L_B37D
L_B298 pshs a,b
beq L_B2AC
L_B2AC lslb
jsr L_B342
jsr L_B342
beq L_B2CC
beq L_B2CC
L_B2CC stx <$c3
jsr L_B350
lbne L_8B8D ; $8b8d-$8b91: Jump to this causes ?FC ERROR
bcs L_B2F6
bcc L_B2F6
bcc L_B303
bra L_B303
L_B2F6 ldd <$cb
bcs L_B301
bcs L_B303
L_B301 ldd <$d3
L_B303 std <$c3
bcs L_B315
bcc L_B322
bra L_B322
L_B315 ldd <$cd
bcs L_B320
bcs L_B322
L_B320 ldd <$d5
L_B322 std <$c5
bne L_B32A
bsr L_B37A
L_B32A puls a,b
bcs L_B335
beq L_B341
L_B335 incb
bne L_B33E
L_B33E jmp L_B298
L_B341 rts
L_B342 ldx <$cf
beq L_B34F
bsr L_B350
L_B34F rts
L_B350 pshs a,b,x,y,u
bcc L_B36F
L_B36F lda ,s
L_B37A jmp L_A82F
L_B37D clrb
beq L_B393
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
jsr L_8872
jsr L_8E54
L_B393 tfr b,a
bne L_B3BA ; $b3ba: Cold start routine - clears lo mem, inits BASIC
bne L_B3BA ; $b3ba: Cold start routine - clears lo mem, inits BASIC
jmp L_8000 ; $8000-$8002: Hardware Initialisation (JMP $bb40; D64 JMP $bb3c)
L_B3BA ldx #$0401 ; $b3ba: Cold start routine - clears lo mem, inits BASIC
L_B3BD clr ,--x
bne L_B3BD
jsr L_BA77 ; $ba77-$ba85: Clears text screen (CoCo $a928)
L_B3CA lda 2,x
bne L_B3D9
bra L_B3CA
L_B3D9 stx <$74
jsr L_8003 ; $8003-$8005: Software Initialisation (JMP $bb88)
jsr L_B7CC ; $b7cc: Copy B bytes from X to U
jsr L_B7CC ; $b7cc: Copy B bytes from X to U
ldx #L_89B4 ; $89b4: Both reserved word and function dispatch tables of Stub 1 at $012a point here
L_B40A sta ,x+
bne L_B40A
jsr L_8417 ; $8417: Erases program in memory same as NEW (CoCo $ad19) {1} Called from BASIC init routine ($b3ba)
jsr L_98E3 ; $98e3: Called from BASIC init routine ($b3ba-)
ldu #L_8B8D ; $8b8d-$8b91: Jump to this causes ?FC ERROR
L_B422 stu ,x++
bne L_B422
jsr L_AA81 ; $aa81: Called from BASIC init routine ($b3ba-)
L_B42F sta >$ff03
L_B431 equ L_B42F + 2
lbeq L_BED0 ; $be7f-$bfef: D32 - Unused area, all 0x00, $bec5-$beda: D64 - Key scan which pauses printer during printing {8}
L_B43C andcc #$af
jsr L_90E5 ; $90e5: Out String: Prints ASCIIZ string ptd to by X to DEVN (CoCo $b99c)
bra L_B466
jsr L_8434 ; $8434: Resets stack - all entries are lost (CoCo $ad33)
jsr L_BA77 ; $ba77-$ba85: Clears text screen (CoCo $a928)
L_B466 jmp L_8371
L_B469 tst >$ff23 ; $b469-$b46e: FIRQ interrupt service routine - branches to $b46f if source was cartridge else RTI
bmi L_B46F ; $b46f-$b47a: Calls $b480 twice, then JMPs to $8000 with Y = $b47b
L_B46F jsr L_B480 ; $b46f-$b47a: Calls $b480 twice, then JMPs to $8000 with Y = $b47b
jsr L_B480 ; $b480-$b486: Loads X from $008a (0x0000) and decrements to 0x0000 Gives 524,298 cycle, approx. 590ms delay
jmp L_8000 ; $8000-$8002: Hardware Initialisation (JMP $bb40; D64 JMP $bb3c)
L_B480 ldx <$8a ; $b480-$b486: Loads X from $008a (0x0000) and decrements to 0x0000 Gives 524,298 cycle, approx. 590ms delay
L_B482 leax -1,x ; $b480-$b486: Loads X from $008a (0x0000) and decrements to 0x0000 Gives 524,298 cycle, approx. 590ms delay
bne L_B482 ; $b480-$b486: Loads X from $008a (0x0000) and decrements to 0x0000 Gives 524,298 cycle, approx. 590ms delay
bne L_B48F ; $b487-$b494: 14 bytes copied to $009d-$00aa at startup
L_B48F lda >$0000 ; $b487-$b494: 14 bytes copied to $009d-$00aa at startup
jmp L_BB26 ; $bb26-$bb34: Jumped to from selfmodifying CHRGET routine at $009f
jmp L_9D3D ; $9d3d: IRQ interrupt service routine
jmp L_B469 ; $b469-$b46e: FIRQ interrupt service routine - branches to $b46f if source was cartridge else RTI
bhi L_B431
bvc L_B4F8 ; $b4ed-$b504: '(C) 1982 BY MICROSOFT', 0x0d, 0x0d, 0x00
bvs L_B4D7 ; $b4cd-$b4ec: '16K BASIC INTERPRETER 1.0 ', 0x0d
bra L_B501 ; $b4ed-$b504: '(C) 1982 BY MICROSOFT', 0x0d, 0x0d, 0x00
bra L_B508
bra L_B515
bra L_B4DA ; $b4cd-$b4ec: '16K BASIC INTERPRETER 1.0 ', 0x0d
bra L_B514
L_B4D6 bra L_B521 ; $b4cd-$b4ec: '16K BASIC INTERPRETER 1.0 ', 0x0d
L_B4D7 equ L_B4D6 + 1 ; $b4cd-$b4ec: '16K BASIC INTERPRETER 1.0 ', 0x0d
L_B4DA fcb $45 ; lsra; $b4cd-$b4ec: '16K BASIC INTERPRETER 1.0 ', 0x0d
bra L_B515
bgt L_B516
bra L_B508
bra L_B50A
bra L_B50C
bvs L_B511
bra L_B539
L_B4F8 bra L_B547 ; $b4ed-$b504: '(C) 1982 BY MICROSOFT', 0x0d, 0x0d, 0x00
L_B501 lsrb ; $b4ed-$b504: '(C) 1982 BY MICROSOFT', 0x0d, 0x0d, 0x00
L_B504 neg <$8d ; $b4ed-$b504: '(C) 1982 BY MICROSOFT', 0x0d, 0x0d, 0x00
L_B505 equ L_B504 + 1 ; $b505: Waits for key with cursor ? Called from SuperDos E6 ROM
L_B508 clr >$39bd
L_B50A equ L_B508 + 2
L_B50B fcb $01,$6a ; neg <$6a
L_B50C equ L_B50B + 1
L_B511 beq L_B538
L_B513 tst <$79
L_B514 equ L_B513 + 1
L_B515 bne L_B51A
L_B516 equ L_B515 + 1
L_B51A pshs b,x,y,u
L_B520 pshs a
L_B521 equ L_B520 + 1
bne L_B531
beq L_B533
jsr L_B867
L_B531 puls a,b,x,y,u,pc
L_B533 jsr L_A106
bra L_B531
L_B538 pshs b,x
L_B539 equ L_B538 + 1
L_B53A jsr L_8009
jsr L_8006 ; $8006-$8008: %POLCAT% Scans keyboard, rets value in A (JMP $bbe5) Called indirectly from [$a000]
beq L_B53A
L_B544 stb [$0088]
L_B547 equ L_B544 + 3
L_B54A jsr >$0167 ; $b54a: %OUTCHR% Sends char in A to DEVN (CoCo $a282) Called indirectly from [$a002]
bne L_B557
L_B557 incb
lbmi L_800F ; $800f-$8011: %LPOUT% Line printer character output in A reg., forces end-of-line sequences, outputs extra spaces to cause LFs etc. See: $0099-009c, $0148 (JMP $bd1a)
bne L_B58F
beq L_B576
bne L_B56E
bsr L_B578
L_B56E ldx <$7a
L_B576 puls a,b,x,pc
L_B578 ldb #$01
L_B57A stb <$7c
jsr L_B991 ; $b991: Write 1st Block (CoCo $a7e5)
jmp L_B882
L_B58F jsr L_A93A
jmp L_800C ; $800c-$800e: %CHROUT% Write chr in A to screen (JMP $bcab)
L_B595 jsr >$0164
beq L_B5A9
beq L_B5BA
bra L_B5B2
L_B5A9 ldb <$89
L_B5B2 stx <$6a
L_B5BA com <$6e
bra L_B5B2
L_B5C3 jsr L_BA77
L_B5C6 jsr >$0182
L_B5D0 jsr L_B505
bne L_B602
bne L_B5FE
beq L_B5C3
bne L_B5EA
beq L_B5C6
bra L_B61E
L_B5EA cmpa #$15
bne L_B5F8
L_B5EE decb
beq L_B5C6
jsr L_B54A ; $b54a: %OUTCHR% Sends char in A to DEVN (CoCo $a282) Called indirectly from [$a002]
bra L_B5EE
L_B5F8 cmpa #$03
beq L_B603
L_B5FE cmpa #$0d
bne L_B60F
L_B602 clra
L_B603 pshs cc
jsr L_90A1 ; $90a1: Print CR/LF: moves cursor posn to start of new line (CoCo $b958)
L_B60F cmpa #$20
bcs L_B5D0
bcc L_B5D0
bcc L_B5D0
L_B61E jsr L_B54A
bra L_B5D0
L_B623 jsr >$016d
beq L_B64B
bne L_B639
bne L_B636
L_B631 ldb #$2e
jmp L_8344 ; $8344: System Error - generates error message according to B (CoCo $ac46)
L_B636 deca
beq L_B64B
L_B639 jmp L_B848
L_B63C jsr >$0170
bne L_B64B
beq L_B631
beq L_B639
L_B64B rts
beq L_B65C
jsr L_B7D7
L_B651 bsr L_B663
beq L_B681
jsr L_B7D4
bra L_B651
L_B65C jsr >$0173
L_B663 jsr >$0176
bne L_B681
bne L_B67F
beq L_B67A
jsr L_B578
L_B67A ldb #$ff
jsr L_B57A
L_B67F clr <$78
L_B681 rts
lbeq L_9900
jsr L_B7AA
beq L_B6A5 ; $b6a5: Write BASIC: writes BASIC program to cassette (CoCo $a469)
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
jsr L_89AC ; $89ac: CkChar: as for CkComa but checks for chr in B (CoCo $b26f)
bne L_B681
jsr L_B88E
jmp L_8EAA ; $8eaa: LIST token dispatch address, List Basic to DEVN (CoCo $b764)
L_B6A5 clra ; $b6a5: Write BASIC: writes BASIC program to cassette (CoCo $a469)
jsr L_B891
jsr L_801B ; $801b-$801d: Write leader to cassette (JMP $be68) Called indirectly from [$a00c]
L_B6B4 stx <$7e
beq L_B6CD
bcc L_B6C8
L_B6C8 jsr L_B999
bra L_B6B4
L_B6CD neg <$7c
jmp L_B994
lbeq L_A08E
jsr L_B7F7
jsr L_B87A
beq L_B706
beq L_B70B
jsr L_8417 ; $8417: Erases program in memory same as NEW (CoCo $ad19) {1} Called from BASIC init routine ($b3ba)
jsr L_B867
jmp L_837A
L_B6FD jsr >$0185
jsr L_B663
jmp L_8371 ; $8371: Prints OK prompt and returns to Command mode (CoCo $ac73)
L_B706 lda >$01e2
beq L_B70E
L_B70B jmp L_B848
L_B70E jsr L_8417
jsr L_8021 ; $8021-$8023: Cassette on, init for reading (JMP $bde7) Called indirectly from [$a004]
L_B716 stx <$7e
jsr L_8335
jsr L_B93E ; $b93e: %BLKIN% reads a block of data into cas. buffer (CoCo $a70b) Called indirectly from [$a006]
bne L_B736
beq L_B736
bpl L_B716
bsr L_B76D
jsr L_90E5 ; $90e5: Out String: Prints ASCIIZ string ptd to by X to DEVN (CoCo $b99c)
jmp L_83E7
L_B736 jsr L_8417
L_B739 jmp L_B84B
L_B73C ldx <$8a
beq L_B748 ; $b748: Read Binary file from tape (CoCo $a511)
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
jsr L_8E83 ; $8e83: Get16Bit: returns value of following number in X (CoCo $b73d)
L_B748 lda >$01e2 ; $b748: Read Binary file from tape (CoCo $a511)
bne L_B70B
jsr L_8021 ; $8021-$8023: Cassette on, init for reading (JMP $bde7) Called indirectly from [$a004]
L_B760 jsr L_B93E
bne L_B739
beq L_B739
bpl L_B760
L_B76D jmp L_8018
beq L_B777
jsr L_8E83 ; $8e83: Get16Bit: returns value of following number in X (CoCo $b73d)
L_B777 jmp [$009d]
L_B77B jsr >$017f
beq L_B7D3
jmp L_851B
L_B786 jsr L_8B21
lbhi L_8B8D ; $8b8d-$8b91: Jump to this causes ?FC ERROR
bne L_B79D
jsr L_8006 ; $8006-$8008: %POLCAT% Scans keyboard, rets value in A (JMP $bbe5) Called indirectly from [$a000]
L_B79D clr <$87
lbne L_8DD5
jmp L_8DE1
L_B7AA ldx #$01d1
L_B7B1 sta ,x+
bne L_B7B1
beq L_B7D3
jsr L_8887 ; $8887: Get string: compiles a string and puts it in free string space (CoCo $b156)
jsr L_8D9A ; $8d9a: Sub -
beq L_B7D3
L_B7C9 cmpx #$c608
L_B7CA equ L_B7C9 + 1
L_B7CC lda ,x+ ; $b7cc: Copy B bytes from X to U
bne L_B7CC ; $b7cc: Copy B bytes from X to U
L_B7D3 rts
L_B7D4 jsr L_89AA
L_B7D7 cmpa #$23
bne L_B7DD
L_B7DD jsr L_8872
L_B7E0 jsr L_8B2D
bne L_B851
beq L_B7F6
bpl L_B851
blt L_B851
L_B7F6 rts
L_B7F7 bsr L_B7AA
L_B7F9 jsr <$a5
L_B7FB beq L_B7F6
jmp L_89B4 ; $89b4: Both reserved word and function dispatch tables of Stub 1 at $012a point here
bsr L_B7E0
jsr L_B623
beq L_B816
bne L_B816
L_B816 puls a
L_B81A sex
jmp L_8C37 ; $8c35-$8c3f: Assign16Bit: assigns D to numeric variable (CoCo $b4f2) ?? 8c35:8c36 is a BRN, $8c36-$8c3f: Assign8Bit: assigns B to numeric variable (CoCo $b4f3) clears A, stores D in FAC, $8c37-$8c3f: %GIVABF% returns D as 16bit val in FAC
L_B81E bsr L_B7F7 ; $b81e: SKIPF token dispatch address
bsr L_B87A
jsr L_B903
bne L_B84B
jsr L_8887 ; $8887: Get string: compiles a string and puts it in free string space (CoCo $b156)
jsr L_8DEA
bsr L_B7D4
jsr L_89AA ; $89aa: CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo $b26d)
bsr L_B7F7
beq L_B856
beq L_B88A
L_B848 ldb #$2c
L_B84A cmpx #$c62a
L_B84B equ L_B84A + 1
L_B84D cmpx #$c626
L_B84E equ L_B84D + 1
L_B850 cmpx #$c628
L_B851 equ L_B850 + 1
jmp L_8344 ; $8344: System Error - generates error message according to B (CoCo $ac46)
L_B856 inca
bmi L_B848
bne L_B889
bsr L_B87A
beq L_B848
L_B867 jsr L_B933
bne L_B84B
beq L_B84B
bmi L_B889
beq L_B867
L_B876 sta <$79
bra L_B884
L_B87A tst <$78
bne L_B84E
bsr L_B8B3 ; $b8b3: Find File: searches tape for matching filename (CoCo $a681)
bne L_B84B
L_B882 clr <$79
L_B884 ldx #$01da
L_B889 rts
L_B88A inca
bne L_B889
L_B88E ldx #$ffff
L_B891 tst <$78
bne L_B84E
jsr L_B7CA
jsr L_B991 ; $b991: Write 1st Block (CoCo $a7e5)
bra L_B882
L_B8B3 ldx #$01da ; $b8b3: Find File: searches tape for matching filename (CoCo $a681)
L_B8B8 lda <$68
bne L_B8C8
jsr L_BA77 ; $ba77-$ba85: Clears text screen (CoCo $a928)
L_B8C8 bsr L_B933
bne L_B8C8
L_B8D8 lda ,x+
bne L_B8E6
jsr L_B54A ; $b54a: %OUTCHR% Sends char in A to DEVN (CoCo $a282) Called indirectly from [$a002]
L_B8E6 suba ,u+
bne L_B8D8
beq L_B8FD
beq L_B8FD
bsr L_B903
bne L_B902
bra L_B8B8
L_B8FD lda #$46
bsr L_B92A
L_B902 rts
L_B903 tst >$01e4
bne L_B911
jsr L_8021 ; $8021-$8023: Cassette on, init for reading (JMP $bde7) Called indirectly from [$a004]
L_B90B bsr L_B93E
bsr L_B917
bra L_B90B
L_B911 bsr L_B933
bsr L_B917
bra L_B911
L_B917 bne L_B91F
bmi L_B932
L_B91F sta <$81
bra L_B938
L_B925 lda >$0400
L_B92A ldb <$68
bne L_B932
L_B932 rts
L_B933 jsr L_8021 ; $b933: Read 1st Block: reads filename block to cas. buf (CoCo $a701)
bsr L_B93E ; $b93e: %BLKIN% reads a block of data into cas. buffer (CoCo $a70b) Called indirectly from [$a006]
L_B938 jsr L_8018
L_B93E orcc #$50 ; $b93e: %BLKIN% reads a block of data into cas. buffer (CoCo $a70b) Called indirectly from [$a006]
bsr L_B925
L_B945 jsr L_8027
bne L_B945
jsr L_8024 ; $8024-$8026: Input byte from cassette into A (JMP $bdad)
jsr L_8024 ; $8024-$8026: Input byte from cassette into A (JMP $bdad)
beq L_B972
L_B961 jsr L_8024
bne L_B97C
bne L_B961
L_B972 jsr L_8024
beq L_B97E
L_B97B cmpx #$8602
L_B97C equ L_B97B + 1
L_B97E sta <$81
beq L_B996
jsr L_B7FB
jmp L_8015 ; $8015-$8017: Cassette relay on (JMP $bdcf)
L_B991 jsr L_801B ; $b991: Write 1st Block (CoCo $a7e5)
L_B994 bsr L_B999
L_B996 jmp L_8018
L_B999 orcc #$50 ; $b999-$b9d1: %BLKOUT% writes a block of data to cassette (CoCo $a7f4) Called indirectly from [$a008]
beq L_B9AA ; $b999-$b9d1: %BLKOUT% writes a block of data to cassette (CoCo $a7f4) Called indirectly from [$a008]
L_B9A5 adda ,x+ ; $b999-$b9d1: %BLKOUT% writes a block of data to cassette (CoCo $a7f4) Called indirectly from [$a008]
bne L_B9A5 ; $b999-$b9d1: %BLKOUT% writes a block of data to cassette (CoCo $a7f4) Called indirectly from [$a008]
L_B9AA adda <$7c ; $b999-$b9d1: %BLKOUT% writes a block of data to cassette (CoCo $a7f4) Called indirectly from [$a008]
bsr L_B9CD ; $b999-$b9d1: %BLKOUT% writes a block of data to cassette (CoCo $a7f4) Called indirectly from [$a008], $b9cd-$b9d1: Write byte 0x55 to cassette by JMPing to $801e
bsr L_B9CF ; $b999-$b9d1: %BLKOUT% writes a block of data to cassette (CoCo $a7f4) Called indirectly from [$a008], $b9cd-$b9d1: Write byte 0x55 to cassette by JMPing to $801e, $b9cf-$b9d1: JMPs to $801e to write byte in A
bsr L_B9CF ; $b999-$b9d1: %BLKOUT% writes a block of data to cassette (CoCo $a7f4) Called indirectly from [$a008], $b9cd-$b9d1: Write byte 0x55 to cassette by JMPing to $801e, $b9cf-$b9d1: JMPs to $801e to write byte in A
bsr L_B9CF ; $b999-$b9d1: %BLKOUT% writes a block of data to cassette (CoCo $a7f4) Called indirectly from [$a008], $b9cd-$b9d1: Write byte 0x55 to cassette by JMPing to $801e, $b9cf-$b9d1: JMPs to $801e to write byte in A
beq L_B9C9 ; $b999-$b9d1: %BLKOUT% writes a block of data to cassette (CoCo $a7f4) Called indirectly from [$a008]
L_B9C1 lda ,x+ ; $b999-$b9d1: %BLKOUT% writes a block of data to cassette (CoCo $a7f4) Called indirectly from [$a008]
bsr L_B9CF ; $b999-$b9d1: %BLKOUT% writes a block of data to cassette (CoCo $a7f4) Called indirectly from [$a008], $b9cd-$b9d1: Write byte 0x55 to cassette by JMPing to $801e, $b9cf-$b9d1: JMPs to $801e to write byte in A
bne L_B9C1 ; $b999-$b9d1: %BLKOUT% writes a block of data to cassette (CoCo $a7f4) Called indirectly from [$a008]
L_B9C9 lda <$80 ; $b999-$b9d1: %BLKOUT% writes a block of data to cassette (CoCo $a7f4) Called indirectly from [$a008]
bsr L_B9CF ; $b999-$b9d1: %BLKOUT% writes a block of data to cassette (CoCo $a7f4) Called indirectly from [$a008], $b9cd-$b9d1: Write byte 0x55 to cassette by JMPing to $801e, $b9cf-$b9d1: JMPs to $801e to write byte in A
L_B9CD lda #$55 ; $b999-$b9d1: %BLKOUT% writes a block of data to cassette (CoCo $a7f4) Called indirectly from [$a008], $b9cd-$b9d1: Write byte 0x55 to cassette by JMPing to $801e
L_B9CF jmp L_801E ; $b999-$b9d1: %BLKOUT% writes a block of data to cassette (CoCo $a7f4) Called indirectly from [$a008], $b9cd-$b9d1: Write byte 0x55 to cassette by JMPing to $801e, $b9cf-$b9d1: JMPs to $801e to write byte in A
bsr L_BA13
jsr L_8E7E
bhi L_BA24
bmi L_B9E7
bra L_B9EF
L_B9E7 ldb ,x
bpl L_B9EE
L_B9ED brn L_BA4E
L_B9EE equ L_B9ED + 1
L_B9EF pshs b
bsr L_BA5C
bmi L_B9F8
L_B9F8 anda #$0f
L_B9FE ora #$80
bsr L_BA13
bsr L_BA5C
bpl L_B9FE
L_BA13 jsr L_89A7
L_BA16 jsr L_8E51
bhi L_BA24
jsr L_8E7E
L_BA24 bhi L_BA97
L_BA3D lsrb
bpl L_BA3D
bsr L_BA16
bpl L_BA59
L_BA4E beq L_BA58
L_BA58 incb
L_BA59 jsr L_B81A
L_BA5C jmp L_89A4
beq L_BA77 ; $ba77-$ba85: Clears text screen (CoCo $a928)
jsr L_8E51 ; $8e51: Get8Bit: returns value of following number in B (CoCo $b70b)
bhi L_BA86 ; $ba86-$ba8d: Clears screen, prints '(C) 1982 BY MICROSOFT' msg at $b4ec
beq L_BA74
L_BA74 orb #$80
L_BA76 cmpx #$c660
L_BA77 equ L_BA76 + 1 ; $ba77-$ba85: Clears text screen (CoCo $a928)
L_BA7E stb ,x+ ; $ba77-$ba85: Clears text screen (CoCo $a928), $ba79-$ba85: Clears text screen with value in B (CoCo $a92a)
bls L_BA7E ; $ba77-$ba85: Clears text screen (CoCo $a928), $ba79-$ba85: Clears text screen with value in B (CoCo $a92a)
L_BA86 bsr L_BA77 ; $ba86-$ba8d: Clears screen, prints '(C) 1982 BY MICROSOFT' msg at $b4ec
jmp L_90E5 ; $90e5: Out String: Prints ASCIIZ string ptd to by X to DEVN (CoCo $b99c)
L_BA8E jsr L_89AA
L_BA91 jsr L_8E51
bne L_BAD3 ; $bac5-$bad3: Enables sound (CoCo $a976)
L_BA97 jmp L_8B8D
bsr L_BA91
bsr L_BA8E
bsr L_BAF1 ; $baf1-$bb01: Sub to init PIA for sound source output specified by the lower 2 bits of B - 00 = DAC, 01 = Tape input, 10 = External Cart source, 11 = none This code duplicates the function of $bd41-bd51, the only dif being an ASRB replacing a RORB
bsr L_BAC5 ; $bac5-$bad3: Enables sound (CoCo $a976)
L_BAB3 bsr L_BAD4
bsr L_BAD6 ; $bad4-$bade: Reset DAC - writes (D32 0x7e; D64 0x7c) to D/A (CoCo $a985), $bad6-$bade: Writes A to DAC - bits 0,1 of A must be 0 (CoCo $a987)
bsr L_BAD4 ; $bad4-$bade: Reset DAC - writes (D32 0x7e; D64 0x7c) to D/A (CoCo $a985)
bsr L_BAD6 ; $bad4-$bade: Reset DAC - writes (D32 0x7e; D64 0x7c) to D/A (CoCo $a985), $bad6-$bade: Writes A to DAC - bits 0,1 of A must be 0 (CoCo $a987)
bne L_BAB3
L_BAC3 clra ; $bac3: Audio off: Disables sound (CoCo $a974)
L_BAC4 cmpx #$8608
L_BAC5 equ L_BAC4 + 1 ; $bac5-$bad3: Enables sound (CoCo $a976)
L_BAD3 rts ; $bac5-$bad3: Enables sound (CoCo $a976)
L_BAD4 lda #$7c ; $bad4-$bade: Reset DAC - writes (D32 0x7e; D64 0x7c) to D/A (CoCo $a985)
L_BAD6 sta >$ff20 ; $bad4-$bade: Reset DAC - writes (D32 0x7e; D64 0x7c) to D/A (CoCo $a985), $bad6-$bade: Writes A to DAC - bits 0,1 of A must be 0 (CoCo $a987)
L_BADB inca ; $bad4-$bade: Reset DAC - writes (D32 0x7e; D64 0x7c) to D/A (CoCo $a985), $bad6-$bade: Writes A to DAC - bits 0,1 of A must be 0 (CoCo $a987)
bne L_BADB ; $bad4-$bade: Reset DAC - writes (D32 0x7e; D64 0x7c) to D/A (CoCo $a985), $bad6-$bade: Writes A to DAC - bits 0,1 of A must be 0 (CoCo $a987)
beq L_BAC3 ; $bac3: Audio off: Disables sound (CoCo $a974)
jsr L_B7FB
bsr L_BAF1 ; $baf1-$bb01: Sub to init PIA for sound source output specified by the lower 2 bits of B - 00 = DAC, 01 = Tape input, 10 = External Cart source, 11 = none This code duplicates the function of $bd41-bd51, the only dif being an ASRB replacing a RORB
bra L_BAC5 ; $bac5-$bad3: Enables sound (CoCo $a976)
L_BAF1 ldu #$ff01 ; $baf1-$bb01: Sub to init PIA for sound source output specified by the lower 2 bits of B - 00 = DAC, 01 = Tape input, 10 = External Cart source, 11 = none This code duplicates the function of $bd41-bd51, the only dif being an ASRB replacing a RORB
bsr L_BAF6 ; $baf1-$bb01: Sub to init PIA for sound source output specified by the lower 2 bits of B - 00 = DAC, 01 = Tape input, 10 = External Cart source, 11 = none This code duplicates the function of $bd41-bd51, the only dif being an ASRB replacing a RORB
L_BAF6 lda ,u ; $baf1-$bb01: Sub to init PIA for sound source output specified by the lower 2 bits of B - 00 = DAC, 01 = Tape input, 10 = External Cart source, 11 = none This code duplicates the function of $bd41-bd51, the only dif being an ASRB replacing a RORB
bcc L_BAFF ; $baf1-$bb01: Sub to init PIA for sound source output specified by the lower 2 bits of B - 00 = DAC, 01 = Tape input, 10 = External Cart source, 11 = none This code duplicates the function of $bd41-bd51, the only dif being an ASRB replacing a RORB
L_BAFF sta ,u++ ; $baf1-$bb01: Sub to init PIA for sound source output specified by the lower 2 bits of B - 00 = DAC, 01 = Tape input, 10 = External Cart source, 11 = none This code duplicates the function of $bd41-bd51, the only dif being an ASRB replacing a RORB
L_BB02 ldx <$8d ; $bb02-$bb0c: Interrupt service subroutine to decrement $008d:008e, returns with RTI
lbeq L_A05D
jsr L_8E54
lbhi L_8B8D ; $8b8d-$8b91: Jump to this causes ?FC ERROR
bne L_BB1C
jsr L_8012 ; $8012-$8014: Reads Joystick (JMP $bd52) Called indirectly from [$a00a]
L_BB1C ldx #$015a
jmp L_8C36 ; $8c35-$8c3f: Assign16Bit: assigns D to numeric variable (CoCo $b4f2) ?? 8c35:8c36 is a BRN, $8c36-$8c3f: Assign8Bit: assigns B to numeric variable (CoCo $b4f3) clears A, stores D in FAC
L_BB26 cmpa #$3a ; $bb26-$bb34: Jumped to from selfmodifying CHRGET routine at $009f
bcc L_BB34 ; $bb26-$bb34: Jumped to from selfmodifying CHRGET routine at $009f
bne L_BB30 ; $bb26-$bb34: Jumped to from selfmodifying CHRGET routine at $009f
L_BB30 suba #$30 ; $bb26-$bb34: Jumped to from selfmodifying CHRGET routine at $009f
L_BB34 rts ; $bb26-$bb34: Jumped to from selfmodifying CHRGET routine at $009f
L_BB40 ldd #$0034 ; $bb3c-$bb87: D64 - Hardware init, JMPd to from $8000, Y should contain return address, $bb40-$bb87: D32 - Hardware init, JMPd to from $8000, Y should contain return address
L_BB70 sta ,x++ ; $bb3c-$bb87: D64 - Hardware init, JMPd to from $8000, Y should contain return address, $bb40-$bb87: D32 - Hardware init, JMPd to from $8000, Y should contain return address
bne L_BB70 ; $bb3c-$bb87: D64 - Hardware init, JMPd to from $8000, Y should contain return address, $bb40-$bb87: D32 - Hardware init, JMPd to from $8000, Y should contain return address
beq L_BB81 ; $bb3c-$bb87: D64 - Hardware init, JMPd to from $8000, Y should contain return address, $bb40-$bb87: D32 - Hardware init, JMPd to from $8000, Y should contain return address, $bb80-$bb82: D64 - Boots 64K mode with JMP $bf49
bra L_BB84 ; $bb3c-$bb87: D64 - Hardware init, JMPd to from $8000, Y should contain return address, $bb40-$bb87: D32 - Hardware init, JMPd to from $8000, Y should contain return address
L_BB81 stb >$ffdd ; $bb3c-$bb87: D64 - Hardware init, JMPd to from $8000, Y should contain return address, $bb40-$bb87: D32 - Hardware init, JMPd to from $8000, Y should contain return address, $bb80-$bb82: D64 - Boots 64K mode with JMP $bf49
L_BB84 tfr b,dp ; $bb3c-$bb87: D64 - Hardware init, JMPd to from $8000, Y should contain return address, $bb40-$bb87: D32 - Hardware init, JMPd to from $8000, Y should contain return address
L_BB88 ldx #$bb9f ; $bb88-$bb9e: Software init, JMPd to from $8003, inits $008f-009b, $0148-0150 with ROM defaults
bsr L_BB97 ; $bb88-$bb9e: Software init, JMPd to from $8003, inits $008f-009b, $0148-0150 with ROM defaults, $bb97-$bb9e: CopyXtoU - copies B bytes from X to U
L_BB97 lda ,x+ ; $bb88-$bb9e: Software init, JMPd to from $8003, inits $008f-009b, $0148-0150 with ROM defaults, $bb97-$bb9e: CopyXtoU - copies B bytes from X to U
bne L_BB97 ; $bb88-$bb9e: Software init, JMPd to from $8003, inits $008f-009b, $0148-0150 with ROM defaults, $bb97-$bb9e: CopyXtoU - copies B bytes from X to U
L_BBB5 dec <$8f ; $bbb5-$bbcc: Flashes cursor, JMPd to from $8009 (CoCo $a199)
bne L_BBC5 ; $bbb5-$bbcc: Flashes cursor, JMPd to from $8009 (CoCo $a199), $bbc5-$bbcc: Decrements X from 0x045e, gives 1ms delay
L_BBC5 ldx #$045e ; $bbb5-$bbcc: Flashes cursor, JMPd to from $8009 (CoCo $a199), $bbc5-$bbcc: Decrements X from 0x045e, gives 1ms delay
L_BBC8 leax -1,x ; $bbb5-$bbcc: Flashes cursor, JMPd to from $8009 (CoCo $a199), $bbc5-$bbcc: Decrements X from 0x045e, gives 1ms delay, $bbc8-$bbcc: Decrements X until 0 then returns
bne L_BBC8 ; $bbb5-$bbcc: Flashes cursor, JMPd to from $8009 (CoCo $a199), $bbc5-$bbcc: Decrements X from 0x045e, gives 1ms delay, $bbc8-$bbcc: Decrements X until 0 then returns
L_BBCD ldb >$ff00 ; $bbcd-$bbd9: subroutine
bmi L_BBD9 ; $bbcd-$bbd9: subroutine
L_BBD9 rts ; $bbcd-$bbd9: subroutine
L_BBDA ldb #$7f
L_BBE5 pshs b,x ; $bbe5-$bbea: %INCH% Scans keyboard, returns char in A, JMPd to from $8006 (CoCo $a1c1)
bsr L_BBEC ; $bbec: Keyboard polling sub, returns key code in A
L_BBEC clr ,--s ; $bbec: Keyboard polling sub, returns key code in A
bmi L_BC01
beq L_BC6F
L_BC01 sta ,x+
L_BC08 bsr L_BBCD
bne L_BC1F
bcs L_BC08
bra L_BC6F
L_BC1F ldx <$97
bsr L_BBC8 ; $bbb5-$bbcc: Flashes cursor, JMPd to from $8009 (CoCo $a199), $bbc5-$bbcc: Decrements X from 0x045e, gives 1ms delay, $bbc8-$bbcc: Decrements X until 0 then returns
bsr L_BBCD ; $bbcd-$bbd9: subroutine
bne L_BC6F
bsr L_BBCD ; $bbcd-$bbd9: subroutine
bne L_BC6F
L_BC3C adda #$08
bcc L_BC3C
beq L_BC76
bcs L_BC5F
bcs L_BC74
bhi L_BC72
bsr L_BBDA
L_BC54 beq L_BC68
L_BC55 equ L_BC54 + 1
bne L_BC68
bra L_BC68
L_BC5F adda #$30
lbsr L_BBDA
bne L_BC68
L_BC68 cmpa #$12
bne L_BC70
L_BC6F clra
L_BC70 puls x,pc
L_BC72 suba #$1a
L_BC74 suba #$0b
L_BC76 lsla
lbsr L_BBDA
bne L_BC7D
L_BC7D ldx #$bc84
bra L_BC68
bge L_BCC4
blt L_BCC7
bgt L_BCCA
ble L_BCCD
bra L_BCBA
L_BCA0 lda #$60 ; $bca0: Clear VDU line from cursor posn (CoCo $a323)
bne L_BCA0 ; $bca0: Clear VDU line from cursor posn (CoCo $a323)
L_BCAB pshs a,b,x ; $bcab: %OUTCH% Put char in A to screen, JMPd to from $800c (CoCo $a30a)
bne L_BCBE
beq L_BCF3
L_BCBA sta ,-x
bra L_BCDB
L_BCBE cmpa #$0d
bne L_BCC6
bsr L_BCA0 ; $bca0: Clear VDU line from cursor posn (CoCo $a323)
L_BCC4 bra L_BCDB
L_BCC6 cmpa #$20
L_BCC7 equ L_BCC6 + 1
bcs L_BCF3
L_BCCA tsta
bmi L_BCD9
L_BCCD cmpa #$40
bcs L_BCD7
bcs L_BCD9
L_BCD7 eora #$40
L_BCD9 sta ,x+
L_BCDB stx <$88
bls L_BCF3
L_BCE5 ldd <$20,x
bcs L_BCE5
bsr L_BCA0 ; $bca0: Clear VDU line from cursor posn (CoCo $a323)
L_BCF3 puls a,b,x,pc
L_BCF5 pshs b ; $bcf5-$bd09: %TXLPCH% Low level routine to print char in A (CoCo $)
L_BCF7 ldb >$ff22 ; $bcf5-$bd09: %TXLPCH% Low level routine to print char in A (CoCo $)
bcs L_BCF7 ; $bcf5-$bd09: %TXLPCH% Low level routine to print char in A (CoCo $)
L_BD0A ldx #$014a ; $bd0a: PCRLF: moves print head to next line
L_BD0F tstb
beq L_BD19
bsr L_BCF5 ; $bcf5-$bd09: %TXLPCH% Low level routine to print char in A (CoCo $)
bra L_BD0F
L_BD19 rts
L_BD1A pshs a,b,x ; $bd1a: Send char in A to printer, JMPd to from $800f (CoCo $a2bf) D64 - This routine uses Y as well and is source of a bug in the Clear-J fn of Visitext Word-Pro.
beq L_BD33
bcs L_BD26
L_BD26 bsr L_BCF5
bcs L_BD3F
bne L_BD3D
L_BD33 tst <$9c
bne L_BD3B
bsr L_BCF5 ; $bcf5-$bd09: %TXLPCH% Low level routine to print char in A (CoCo $)
L_BD3B bsr L_BD0A
L_BD3D clr <$9c
L_BD3F puls a,b,x,pc
L_BD41 ldu #$ff01 ; $bd41-$bd51: %SNDSEL% Selects Analogue Mux channel from B. Used to read Joysticks or set sound channel (CoCo $a9a2) 0x00 DAC / Right Joystick, x-axis 0x01 Cassette / Right Joystick, y-axis 0x02 Cartridge / Left Joystick, x-axis 0x03 Unused / Left Joystick, y-axis See also $baf1-bb01
bsr L_BD46 ; $bd41-$bd51: %SNDSEL% Selects Analogue Mux channel from B. Used to read Joysticks or set sound channel (CoCo $a9a2) 0x00 DAC / Right Joystick, x-axis 0x01 Cassette / Right Joystick, y-axis 0x02 Cartridge / Left Joystick, x-axis 0x03 Unused / Left Joystick, y-axis See also $baf1-bb01
L_BD46 lda ,u ; $bd41-$bd51: %SNDSEL% Selects Analogue Mux channel from B. Used to read Joysticks or set sound channel (CoCo $a9a2) 0x00 DAC / Right Joystick, x-axis 0x01 Cassette / Right Joystick, y-axis 0x02 Cartridge / Left Joystick, x-axis 0x03 Unused / Left Joystick, y-axis See also $baf1-bb01
bcc L_BD4F ; $bd41-$bd51: %SNDSEL% Selects Analogue Mux channel from B. Used to read Joysticks or set sound channel (CoCo $a9a2) 0x00 DAC / Right Joystick, x-axis 0x01 Cassette / Right Joystick, y-axis 0x02 Cartridge / Left Joystick, x-axis 0x03 Unused / Left Joystick, y-axis See also $baf1-bb01
L_BD4F sta ,u++ ; $bd41-$bd51: %SNDSEL% Selects Analogue Mux channel from B. Used to read Joysticks or set sound channel (CoCo $a9a2) 0x00 DAC / Right Joystick, x-axis 0x01 Cassette / Right Joystick, y-axis 0x02 Cartridge / Left Joystick, x-axis 0x03 Unused / Left Joystick, y-axis See also $baf1-bb01
L_BD52 leas -3,s ; $bd52: %JOYIN% Reads Joysticks updates $015a-015d, JMPd to from $8012 (CoCo $a9de)
L_BD59 lda #$0a
bsr L_BD41 ; $bd41-$bd51: %SNDSEL% Selects Analogue Mux channel from B. Used to read Joysticks or set sound channel (CoCo $a9a2) 0x00 DAC / Right Joystick, x-axis 0x01 Cassette / Right Joystick, y-axis 0x02 Cartridge / Left Joystick, x-axis 0x03 Unused / Left Joystick, y-axis See also $baf1-bb01
L_BD5F ldd #$4080
L_BD62 sta ,s
bmi L_BD70
bra L_BD72
L_BD70 addb ,s
L_BD72 lsra
bne L_BD62
beq L_BD81
bne L_BD5F
L_BD81 stb ,-x
bpl L_BD59
L_BD8A inc <$82 ; $bd8a-$bd90: Increments $0082, samples Cassette input bit into CC.C
L_BD91 clr <$82 ; $bd91-$bd9d: Sub
bne L_BD9E ; $bd9e: Sub
L_BD97 bsr L_BDA0 ; $bd91-$bd9d: Sub, $bd97-$bd9d: Sub
L_BD99 bsr L_BD8A ; $bd91-$bd9d: Sub, $bd97-$bd9d: Sub, $bd99-$bd9d: Sub
bcc L_BD99 ; $bd91-$bd9d: Sub, $bd97-$bd9d: Sub, $bd99-$bd9d: Sub
L_BD9E bsr L_BD99 ; $bd9e: Sub
L_BDA0 bsr L_BD8A ; $bda0: Sub
bcs L_BDA0 ; $bda0: Sub
L_BDA5 bsr L_BD91 ; $bda5: %BITIN% Get one bit from cassette to CC.C, JMPd to from $8027 (CoCo $a755)
L_BDAD lda #$08 ; $bdad: %CBIN% Input byte from cassette into A, JMPd to from $8024 (CoCo $a749)
L_BDB1 bsr L_BDA5
bne L_BDB1
L_BDB9 clr <$82 ; $bdb9: Sub
bsr L_BDA0 ; $bda0: Sub
bra L_BDC3
L_BDBF clr <$82 ; $bdbf: Sub
L_BDC0 equ L_BDBF + 1
bsr L_BD99 ; $bd91-$bd9d: Sub, $bd97-$bd9d: Sub, $bd99-$bd9d: Sub
L_BDC3 ldb <$82
bhi L_BDCC
L_BDCC clr <$83
L_BDCF lda >$ff21 ; $bdcf-$bddb: %CASON% Motor on - Turns on relay, loads X with delay value from $0095:0096 (0xda5c) then LBRAs to $bbc8, JMPd to from $8015 (CoCo $a7ca)
lbra L_BBC8 ; $bbb5-$bbcc: Flashes cursor, JMPd to from $8009 (CoCo $a199), $bbc5-$bbcc: Decrements X from 0x045e, gives 1ms delay, $bbc8-$bbcc: Decrements X until 0 then returns
L_BDDC lda >$ff21 ; $bddc-$bde6: %CASOFF% Motor off - turns relay off, re-enables FIRQ, IRQ, JMPd to from $8018 (CoCo $a7eb)
L_BDE7 orcc #$50 ; $bde7: %CSRDON% Read Leader - Disables FIRQ, IRQ, Cassette on, init for reading, JMPd to from $8021 (CoCo $a77c)
bsr L_BDCF ; $bdcf-$bddb: %CASON% Motor on - Turns on relay, loads X with delay value from $0095:0096 (0xda5c) then LBRAs to $bbc8, JMPd to from $8015 (CoCo $a7ca)
L_BDED bsr L_BD97
L_BDEF bsr L_BDB9
bhi L_BDFF
L_BDF3 bsr L_BDBF
bcs L_BE03
bra L_BE0D
L_BDFF bsr L_BDBF
bhi L_BDEF
L_BE03 bsr L_BDB9
bcs L_BDF3
L_BE0D bne L_BDED
L_BE12 pshs a ; $be12-$be43: %CBOUT% Output byte in A to cassette, JMPd to from $801e (CoCo $a82a)
L_BE16 ldy #$be44 ; $be12-$be43: %CBOUT% Output byte in A to cassette, JMPd to from $801e (CoCo $a82a)
bne L_BE30 ; $be12-$be43: %CBOUT% Output byte in A to cassette, JMPd to from $801e (CoCo $a82a)
L_BE23 lda ,y+ ; $be12-$be43: %CBOUT% Output byte in A to cassette, JMPd to from $801e (CoCo $a82a)
cmpy #L_BE68 ; $be68-$be7a: %WRTLDR% disables FIRQ, IRQ, turns on cassette, writes number of leader bytes = 0x55 according to $0090:0091 (d32 0x0080), JMPd to from $801b Pre: B,Y Des: CC,A,X Ret: X=0x0000,A=0x55
bcc L_BE3D ; $be12-$be43: %CBOUT% Output byte in A to cassette, JMPd to from $801e (CoCo $a82a)
bra L_BE23 ; $be12-$be43: %CBOUT% Output byte in A to cassette, JMPd to from $801e (CoCo $a82a)
L_BE30 lda ,y++ ; $be12-$be43: %CBOUT% Output byte in A to cassette, JMPd to from $801e (CoCo $a82a)
cmpy #L_BE68 ; $be68-$be7a: %WRTLDR% disables FIRQ, IRQ, turns on cassette, writes number of leader bytes = 0x55 according to $0090:0091 (d32 0x0080), JMPd to from $801b Pre: B,Y Des: CC,A,X Ret: X=0x0000,A=0x55
bcc L_BE3D ; $be12-$be43: %CBOUT% Output byte in A to cassette, JMPd to from $801e (CoCo $a82a)
bra L_BE30 ; $be12-$be43: %CBOUT% Output byte in A to cassette, JMPd to from $801e (CoCo $a82a)
L_BE3D sta <$85 ; $be12-$be43: %CBOUT% Output byte in A to cassette, JMPd to from $801e (CoCo $a82a)
bcc L_BE16 ; $be12-$be43: %CBOUT% Output byte in A to cassette, JMPd to from $801e (CoCo $a82a)
eora L_A890
fcb $10,$20,$30,$40 ; lbra L_EEA6
L_BE67 lsl -12,y ; $be44-$be67: 36 bytes of Sine Wave data in upper 5 bits of each byte.
L_BE68 equ L_BE67 + 1 ; $be68-$be7a: %WRTLDR% disables FIRQ, IRQ, turns on cassette, writes number of leader bytes = 0x55 according to $0090:0091 (d32 0x0080), JMPd to from $801b Pre: B,Y Des: CC,A,X Ret: X=0x0000,A=0x55
bcc L_BE85 ; $be7b-$be97: D64 - Read byte from serial port to A, JMPd to from $802a, $be7f-$bfef: D32 - Unused area, all 0x00
lbsr L_BDCF ; $bdcf-$bddb: %CASON% Motor on - Turns on relay, loads X with delay value from $0095:0096 (0xda5c) then LBRAs to $bbc8, JMPd to from $8015 (CoCo $a7ca)
L_BE73 bsr L_BE12 ; $be68-$be7a: %WRTLDR% disables FIRQ, IRQ, turns on cassette, writes number of leader bytes = 0x55 according to $0090:0091 (d32 0x0080), JMPd to from $801b Pre: B,Y Des: CC,A,X Ret: X=0x0000,A=0x55
bne L_BE73 ; $be68-$be7a: %WRTLDR% disables FIRQ, IRQ, turns on cassette, writes number of leader bytes = 0x55 according to $0090:0091 (d32 0x0080), JMPd to from $801b Pre: B,Y Des: CC,A,X Ret: X=0x0000,A=0x55
L_BE7B rts ; $be7b: D32 - JMPd to from $802a (RTS), $be7b-$be97: D64 - Read byte from serial port to A, JMPd to from $802a
L_BE7C rts ; $be7b-$be97: D64 - Read byte from serial port to A, JMPd to from $802a, $be7c: D32 - JMPd to from $802d (RTS)
L_BE7D comb ; $be7b-$be97: D64 - Read byte from serial port to A, JMPd to from $802a, $be7d-$be7e: D32 - JMPd to from $8030 (COMB; RTS)
L_BE85 fcb $4e ; $be7b-$be97: D64 - Read byte from serial port to A, JMPd to from $802a, $be7f-$bfef: D32 - Unused area, all 0x00
bra L_BEBB ; $be7f-$bfef: D32 - Unused area, all 0x00, $bea6-$bebd: D64 - Set baud rate in B, JMPd to from $8030
bra L_BEE6 ; $be7f-$bfef: D32 - Unused area, all 0x00
bra L_BEEE ; $be7f-$bfef: D32 - Unused area, all 0x00
bra L_BEF3 ; $be7f-$bfef: D32 - Unused area, all 0x00
bra L_BEF2 ; $be7f-$bfef: D32 - Unused area, all 0x00
bra L_BF01 ; $be7f-$bfef: D32 - Unused area, all 0x00, $beff-$bf0b: D64 - Patched into Software init to CLR $03fd-03ff
bra L_BEFA ; $be7f-$bfef: D32 - Unused area, all 0x00
bra L_BEEC ; $be7f-$bfef: D32 - Unused area, all 0x00
L_BEBA leax -16,y ; $be7f-$bfef: D32 - Unused area, all 0x00, $bea6-$bebd: D64 - Set baud rate in B, JMPd to from $8030
L_BEBB equ L_BEBA + 1 ; $be7f-$bfef: D32 - Unused area, all 0x00, $bea6-$bebd: D64 - Set baud rate in B, JMPd to from $8030
L_BECF neg <$8d ; $be7f-$bfef: D32 - Unused area, all 0x00, $bec5-$beda: D64 - Key scan which pauses printer during printing {8}
L_BED0 equ L_BECF + 1 ; $be7f-$bfef: D32 - Unused area, all 0x00, $bec5-$beda: D64 - Key scan which pauses printer during printing {8}
bsr L_BF06 ; $be7f-$bfef: D32 - Unused area, all 0x00, $beff-$bf0b: D64 - Patched into Software init to CLR $03fd-03ff
bsr L_BF06 ; $be7f-$bfef: D32 - Unused area, all 0x00, $beff-$bf0b: D64 - Patched into Software init to CLR $03fd-03ff
L_BEE5 ldu #$0549 ; $be7f-$bfef: D32 - Unused area, all 0x00
L_BEE6 equ L_BEE5 + 1 ; $be7f-$bfef: D32 - Unused area, all 0x00
bsr L_BF06 ; $be7f-$bfef: D32 - Unused area, all 0x00, $beff-$bf0b: D64 - Patched into Software init to CLR $03fd-03ff
L_BEEA jsr L_BBE5 ; $be7f-$bfef: D32 - Unused area, all 0x00
L_BEEC equ L_BEEA + 2 ; $be7f-$bfef: D32 - Unused area, all 0x00
L_BEED beq L_BEEA ; $be7f-$bfef: D32 - Unused area, all 0x00
L_BEEE equ L_BEED + 1 ; $be7f-$bfef: D32 - Unused area, all 0x00
L_BEF1 cmpa #$42 ; $be7f-$bfef: D32 - Unused area, all 0x00
L_BEF2 equ L_BEF1 + 1 ; $be7f-$bfef: D32 - Unused area, all 0x00
L_BEF3 beq L_BEFE ; $be7f-$bfef: D32 - Unused area, all 0x00
bne L_BEEA ; $be7f-$bfef: D32 - Unused area, all 0x00
L_BEF9 bsr L_BF03 ; $be7f-$bfef: D32 - Unused area, all 0x00
L_BEFA equ L_BEF9 + 1 ; $be7f-$bfef: D32 - Unused area, all 0x00
lbra L_C002
L_BEFE bsr L_BF03 ; $be7f-$bfef: D32 - Unused area, all 0x00
L_BF00 lbra L_B43C ; $be7f-$bfef: D32 - Unused area, all 0x00, $beff-$bf0b: D64 - Patched into Software init to CLR $03fd-03ff
L_BF01 equ L_BF00 + 1 ; $be7f-$bfef: D32 - Unused area, all 0x00, $beff-$bf0b: D64 - Patched into Software init to CLR $03fd-03ff
L_BF03 lbra L_BA77 ; $be7f-$bfef: D32 - Unused area, all 0x00, $beff-$bf0b: D64 - Patched into Software init to CLR $03fd-03ff
L_BF06 stu <$88 ; $be7f-$bfef: D32 - Unused area, all 0x00, $beff-$bf0b: D64 - Patched into Software init to CLR $03fd-03ff
lbra L_90E5 ; $90e5: Out String: Prints ASCIIZ string ptd to by X to DEVN (CoCo $b99c)
bra L_BF5E ; $be7f-$bfef: D32 - Unused area, all 0x00, $bf5a-$bfe8: D64 - Bootstrap routine code copied to $01da-0268
bvs L_BF39 ; $be7f-$bfef: D32 - Unused area, all 0x00, $bf20-$bf48: D64 - IRQ routine which can be hooked in D32 mode to provide 64 mode style auto-repeat and serial support
bra L_BF61 ; $be7f-$bfef: D32 - Unused area, all 0x00, $bf5a-$bfe8: D64 - Bootstrap routine code copied to $01da-0268
bvs L_BF48 ; $be7f-$bfef: D32 - Unused area, all 0x00, $bf20-$bf48: D64 - IRQ routine which can be hooked in D32 mode to provide 64 mode style auto-repeat and serial support
bra L_BF72 ; $be7f-$bfef: D32 - Unused area, all 0x00, $bf5a-$bfe8: D64 - Bootstrap routine code copied to $01da-0268
L_BF38 neg <$00 ; $be7f-$bfef: D32 - Unused area, all 0x00, $bf20-$bf48: D64 - IRQ routine which can be hooked in D32 mode to provide 64 mode style auto-repeat and serial support
L_BF39 equ L_BF38 + 1 ; $be7f-$bfef: D32 - Unused area, all 0x00, $bf20-$bf48: D64 - IRQ routine which can be hooked in D32 mode to provide 64 mode style auto-repeat and serial support
L_BF48 neg <$00 ; $be7f-$bfef: D32 - Unused area, all 0x00, $bf20-$bf48: D64 - IRQ routine which can be hooked in D32 mode to provide 64 mode style auto-repeat and serial support
L_BF5E neg <$00 ; $be7f-$bfef: D32 - Unused area, all 0x00, $bf5a-$bfe8: D64 - Bootstrap routine code copied to $01da-0268
L_BF60 neg <$00 ; $be7f-$bfef: D32 - Unused area, all 0x00, $bf5a-$bfe8: D64 - Bootstrap routine code copied to $01da-0268
L_BF61 equ L_BF60 + 1 ; $be7f-$bfef: D32 - Unused area, all 0x00, $bf5a-$bfe8: D64 - Bootstrap routine code copied to $01da-0268
L_BF72 neg <$00 ; $be7f-$bfef: D32 - Unused area, all 0x00, $bf5a-$bfe8: D64 - Bootstrap routine code copied to $01da-0268
bra L_C01C
L_C002 equ $c002
L_C01C equ $c01c
L_C463 equ $c463
L_EEA6 equ $eea6
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment