// $01 = mirror of FLG?
// $07 = EDL
// $C2 = ESA
// $DC[0x08] unknown array

THG_SPC_Driver:

    clrp

    mov x, #$4f; mov sp, x;
    mov a, #$30; mov $f1, a
    mov a, #$00; mov x, a
    
.clearRam1: // clears $0000 to $00EF
    
    mov (x)+, a; cmp x, #$f0

    bne .clearRam1

    setp

    mov a, #$00; mov x, a
    
.clearRam2: // clears $0100 to $01FF
    
    mov (x)+, a; cmp x, #$ff

    bne .clearRam2

    clrp

    mov a, #$00; mov y, #$02; movw $c2, ya  // $C2.w = 0x0200;
    mov a, #$00; mov y, a; 
    
   
.clearRam3: // clears $0200 to $03FF
    
    mov ($c2)+y, a; inc y;

    bne .clearRam3

    inc $c3; cmp $c3, #$04;
    
    bne .clearRam3

    mov $cf, #$01; 
    mov $10, #$ff

    mov a, #$00; 
    mov y, #$0c; call WriteDSP
    mov y, #$1c; call WriteDSP
    mov y, #$2c; call WriteDSP
    mov y, #$3c; call WriteDSP
    mov y, #$2d; call WriteDSP
    mov y, #$3d; call WriteDSP
    mov y, #$4d; call WriteDSP
    
    mov a, #$19; 
    mov y, #$5d; call WriteDSP

    mov a, #$ff; mov $0d, a;
    mov a, #$64; mov $d8, a;
    
    mov a, #$7f; 
    mov y, #$0c; call WriteDSP
    mov y, #$1c; call WriteDSP
    mov a, #$ff;
    mov y, #$5c; call WriteDSP

    mov a, #$24; mov $fa, a
    mov a, #$01; mov $f1, a
    mov a, #$06; mov $07, a

    call  $16f3 // ????

$088B:
    
    inc $ce; mov a, $ce; mov $f6, a

    bbs0 $d0, $0898

    mov y, $fd

    beq $088B

$0898:
    
    clr0 $d0

    call ReadFromSCPU

    or a, #$00

    beq $08aa

    mov $f7, a

    call  $1298

    mov a, #$31; mov $f1, a
    mov a, #$ef; mov $f7, a
    mov a, $cd; or a, $00

    bne   $08bc

    mov a, #$00; mov $02, a
    mov $eb, a; 
    
    bra   $088b

    mov y, #$05; 
    
.writeRegs1:
    
    mov a, RegList2+1+y; mov $f2, a; 
    mov a, ValueList2+1+y; mov x, a; mov a,(x); mov $f3, a

    dbnz  y, .writeRegs1

    mov y, #$04; 
    
.writeRegs2:
    
    mov a, RegList1+1+y; mov $f2, a
    mov a, ValueList1+1+y; mov x, a; mov a,(x); mov $f3, a

    dbnz  y, .writeRegs2

    mov $16, y; mov $17, y

    mov a, $d8; clrc; adc a, $d9; mov $d9, a; // $D9 += $D8

    bcs .overflow1:

    call  $09C1

    bra   $090F

.overflow1:

    mov x, #$10

    call  $09e4

    mov $12, x
    mov a, $cc+x
    
    beq   $0907

    mov $15, a

    call  $167f
    call  $166f
    call  $0a84
    call  $15d9

$0907:

    0907: f8 12     mov x, $12
    0909: 3d        inc   x
    090a: 3d        inc   x
    090b: c8 18     cmp   x, #$18
    090d: d0 e4     bne   $08f3
    090f: e4 0d     mov a, $0d
    0911: 60        clrc
    0912: 84 0e     adc   a, $0e
    0914: c4 0e     mov $0e, a
    0916: b0 05     bcs   $091d
    0918: 3f 99 09  call  $0999
    091b: 2f 2f     bra   $094c
    091d: 3f 05 0a  call  $0a05
    0920: cd 00     mov x, #$00
    0922: 8f 01 15  mov $15, #$01
    0925: d8 12     mov $12, x
    0927: e4 00     mov a, $00
    0929: 24 15     and   a, $15
    092b: f0 17     beq   $0944
    092d: 7d        mov a, x
    092e: 9f        xcn   a
    092f: 5c        lsr   a
    0930: c4 13     mov $13, a
    0932: 3f 6f 16  call  $166f
    0935: 3f 84 0a  call  $0a84
    0938: e4 cd     mov a, $cd
    093a: 24 15     and   a, $15
    093c: d0 03     bne   $0941
    093e: 3f d9 15  call  $15d9
    0941: 3f 3e 16  call  $163e
    0944: 3d        inc   x
    0945: 3d        inc   x
    0946: 0b 15     asl   $15
    0948: d0 db     bne   $0925
    094a: 32 cf     clr1  $cf
    094c: 3f 5c 09  call  $095c
    094f: e4 00     mov a, $00
    0951: d0 06     bne   $0959
    0953: e8 00     mov a, #$00
    0955: c4 03     mov $03, a
    0957: c4 04     mov $04, a
    0959: 5f 8b 08  jmp   $088b
    095c: e4 d3     mov a, $d3
    095e: f0 38     beq   $0998
    0960: 8b d3     dec   $d3
    0962: d0 13     bne   $0977
    0964: e4 d7     mov a, $d7
    0966: c4 10     mov $10, a
    0968: d2 cf     clr6  $cf
    096a: 53 d0 2b  bbc2  $d0, $0997
    096d: 52 d0     clr2  $d0
    096f: e4 05     mov a, $05
    0971: c4 03     mov $03, a
    0973: c4 04     mov $04, a
    0975: 2f 21     bra   $0998
    0977: 60        clrc
    0978: e4 d5     mov a, $d5
    097a: 84 d6     adc   a, $d6
    097c: c4 d6     mov $d6, a
    097e: e4 10     mov a, $10
    0980: 84 d4     adc   a, $d4
    0982: c4 10     mov $10, a
    0984: 53 d0 11  bbc2  $d0, $0998
    0987: 60        clrc
    0988: e4 ed     mov a, $ed
    098a: 84 ee     adc   a, $ee
    098c: c4 ee     mov $ee, a
    098e: e4 ef     mov a, $ef
    0990: 84 ec     adc   a, $ec
    0992: c4 ef     mov $ef, a
    0994: c4 03     mov $03, a
    0996: c4 04     mov $04, a

$0998:    
    
    0998: 6f        ret

// *************************************    
    
$0999:    
    
    mov x, #$00
    mov $15, #$01

$099E:

    mov $12, x
    mov a, $00
    and   a, $15

    beq $09b8

    mov a, x; xcn a; lsr a; mov $13, a

    call  $166f

    mov a, $0e; mov $da, a

    call  $0a21

    call  $163e

$09B8:    
    
    mov x, $12; inc x; inc x; asl $15

    bne   $099e

    ret

// *************************************

$09C1: // ???

    mov x, #$10; 
    
.loop:
    
    mov $12, x
    mov a, $cc+x

    beq .skip

    mov $15, a

    call  $167f
    call  $166f

    mov a, $d9
    mov $da, a
    
    call  $0a21
    call  $163e

.skip:

    mov x, $12
    inc x; inc x; cmp x, #$18

    bne .loop

    ret
    
// *************************************

$09E4:

    mov a, $e4

    beq   $0a04

    dec   $e4

    bne   $09f0

    mov a, $e8

    bra   $09fb

$09F0:
    
    clrc; mov a, $e6; adc a, $e7; mov $e7, a
    mov a, $e9; adc a, $e5

$09FB:

    mov $e9, a

    and $01, #$20; or  a, $01
    mov $01, a

$0A04:

    ret
    
// *************************************

$0A05:
    
    mov a, $08

    beq .return

    dec $08
    
    bne .branch1
    
    mov a, $0c; mov $0d, a // $0D = $0C

    bra .return

.branch1:
    
    // branch is only reached if $08 > 1 at the start of the routine
    clrc
    mov a, $0a; adc a, $0b; mov $0b, a // $0B += $0A
    mov a, $0d; adc a, $09; mov $0d, a // $0D += ($09 + carry)

.return

    ret

// *************************************

$0A21:

    mov a, $79+x

    beq $0A35

    mov a, $02d0+x; cmp a, $02d1+x

    bne $0A35
    
    call $15B6
    
    bbs2 $d1, $0A35
    
    set1 $d1

$0A35:

    call  $16e8

    clr7  $ca
    mov a, $49+x

    beq   $0a69

    mov a, $0271+x

    bne   $0a69

    set7  $ca
    mov a, $0241+x; mov y, a; mov $c2, a; mov a, $0258+x

    call  $16de

    mov $c7, y; mov y, $da; mul ya; mov $c8, y
    mov $c9, #$00; mov y, $da; mov a, $c7; mul ya; addw  ya, $c8

    call  $16de

    addw  ya, $cb; movw  $cb, ya // $CB += YA

$0A69:

    mov a, $60+x

    beq $0a74

    mov a, $0289+x
    cmp a, $78+x
    
    beq $0a77

$0A74:
    
    jmp $0c5a

$0A77:
       
    mov y, $da; mov a, $02a0+x; mul ya
    mov a, y; clrc; adc a, $61+x

    jmp   $0c1e

// *************************************

$0A84:
    
    mov a, $18+x

    beq   $0AC3

    0a88: 9b 18     dec   $18+x
    0a8a: f4 19     mov a, $19+x

    0a8c: f0 35     beq   $0AC3

    0a8e: 9b 19     dec   $19+x

    0a90: d0 31     bne   $0AC3

    0a92: 63 d1 2e  bbs3  $d1, $0AC3

    0a95: 43 d1 15  bbs2  $d1, $0AAD

    0a98: f3 d1 12  bbc7  $d1, $0AAD

    0a9b: e4 cd     mov a, $cd
    0a9d: 24 15     and   a, $15

    0a9f: d0 22     bne   $0AC3

    0aa1: e4 13     mov a, $13

    0aa3: 3f a8 16  call  $16A8

    0aa6: 93 d1 1a  bbc4  $d1, $0AC3

    0aa9: b2 d1     clr5  $d1

    0aab: 2f 16     bra   $0AC3

$0AAD:

    0aad: 93 d1 04  bbc4  $d1, $0AB4

    0ab0: a2 d1     set5  $d1

    0ab2: 2f 0f     bra   $0ac3

$0AB4:
    
    0ab4: c8 10     cmp   x, #$10

    0ab6: b0 06     bcs   $0abe

    0ab8: e4 cd     mov a, $cd
    0aba: 24 15     and   a, $15

    0abc: d0 05     bne   $0ac3

    0abe: b2 d1     clr5  $d1
    0ac0: 09 15 17  or    ($17),($15)

$0AC3:

    0ac3: 3f c9 0a  call  $0ac9

    0ac6: 5f f4 0c  jmp   $0cf4

$0AC9:
    
    0ac9: f4 48     mov a, $48+x

    0acb: f0 28     beq   $0af5

    0acd: 9b 48     dec   $48+x

    0acf: d0 0a     bne   $0adb

    0ad1: f5 f9 01  mov a, $01f9+x
    0ad4: d5 10 02  mov $0210+x, a
    0ad7: 22 d1     set1  $d1
    0ad9: 2f 1a     bra   $0af5
    0adb: 60        clrc
    0adc: f5 e1 01  mov a, $01e1+x
    0adf: 95 f8 01  adc   a, $01f8+x
    0ae2: d5 f8 01  mov $01f8+x, a
    0ae5: f5 10 02  mov a, $0210+x
    0ae8: 95 e0 01  adc   a, $01e0+x
    0aeb: 75 10 02  cmp   a, $0210+x
    0aee: f0 05     beq   $0af5
    0af0: d5 10 02  mov $0210+x, a
    0af3: 22 d1     set1  $d1

$0AF5:

    0af5: f4 31     mov a, $31+x

    0af7: f0 24     beq   $0b1d

    0af9: 9b 31     dec   $31+x
    0afb: d0 09     bne   $0b06
    0afd: f5 40 02  mov a, $0240+x
    0b00: d4 30     mov $30+x, a
    0b02: 22 d1     set1  $d1
    0b04: 2f 17     bra   $0b1d
    0b06: 60        clrc
    0b07: f5 28 02  mov a, $0228+x
    0b0a: 95 29 02  adc   a, $0229+x
    0b0d: d5 29 02  mov $0229+x, a
    0b10: f4 30     mov a, $30+x
    0b12: 95 11 02  adc   a, $0211+x
    0b15: 74 30     cmp   a, $30+x
    0b17: f0 04     beq   $0b1d
    0b19: d4 30     mov $30+x, a
    0b1b: 22 d1     set1  $d1

$0B1D:
  
    0b1d: fb 79     mov y, $79+x

    0b1f: f0 2c     beq   $0b4d

    0b21: f5 d0 02  mov a, $02d0+x
    0b24: 75 d1 02  cmp   a, $02d1+x
    0b27: d0 1d     bne   $0b46
    0b29: f5 e8 02  mov a, $02e8+x
    0b2c: 10 07     bpl   $0b35
    0b2e: fc        inc   y
    0b2f: d0 04     bne   $0b35
    0b31: e8 80     mov a, #$80
    0b33: 2f 04     bra   $0b39
    0b35: 60        clrc
    0b36: 95 e9 02  adc   a, $02e9+x
    0b39: d5 e8 02  mov $02e8+x, a
    0b3c: 3f c1 15  call  $15c1
    0b3f: 43 d1 0b  bbs2  $d1, $0b4c
    0b42: 22 d1     set1  $d1
    0b44: 2f 07     bra   $0b4d
    0b46: f5 d1 02  mov a, $02d1+x
    0b49: bc        inc   a
    0b4a: d5 d1 02  mov $02d1+x, a

$0B4D:

    0b4d: d3 d1 61  bbc6  $d1, $0bb1

    0b50: f5 18 03  mov a, $0318+x
    0b53: c4 c2     mov $c2, a
    0b55: f5 01 03  mov a, $0301+x

    0b58: 30 24     bmi   $0b7e

    0b5a: c4 c3     mov $c3, a
    0b5c: 60        clrc
    0b5d: f5 30 03  mov a, $0330+x
    0b60: fd        mov y, a
    0b61: f5 19 03  mov a, $0319+x
    0b64: 7a c2     addw  ya, $c2
    0b66: c4 c2     mov $c2, a
    0b68: dd        mov a, y
    0b69: 75 31 03  cmp   a, $0331+x

    0b6c: 90 36     bcc   $0ba4

    0b6e: f5 01 03  mov a, $0301+x
    0b71: 08 80     or    a, #$80
    0b73: d5 01 03  mov $0301+x, a
    0b76: 8f 00 c2  mov $c2, #$00
    0b79: f5 31 03  mov a, $0331+x

    0b7c: 2f 26     bra   $0ba4

    0b7e: 28 7f     and   a, #$7f
    0b80: c4 c3     mov $c3, a
    0b82: f5 30 03  mov a, $0330+x
    0b85: fd        mov y, a
    0b86: f5 19 03  mov a, $0319+x
    0b89: 80        setc
    0b8a: 9a c2     subw  ya, $c2
    0b8c: c4 c2     mov $c2, a
    0b8e: dd        mov a, y
    0b8f: 30 13     bmi   $0ba4
    0b91: 75 48 03  cmp   a, $0348+x
    0b94: b0 0e     bcs   $0ba4
    0b96: f5 01 03  mov a, $0301+x
    0b99: 28 7f     and   a, #$7f
    0b9b: d5 01 03  mov $0301+x, a
    0b9e: 8f 00 c2  mov $c2, #$00
    0ba1: f5 48 03  mov a, $0348+x
    0ba4: d5 30 03  mov $0330+x, a
    0ba7: d5 10 02  mov $0210+x, a
    0baa: 22 d1     set1  $d1
    0bac: e4 c2     mov a, $c2
    0bae: d5 19 03  mov $0319+x, a

$0BB1:

    0bb1: f2 ca     clr7  $ca
    0bb3: f4 49     mov a, $49+x

    0bb5: f0 31     beq   $0be8

    0bb7: f5 71 02  mov a, $0271+x
    0bba: f0 06     beq   $0bc2
    0bbc: 9c        dec   a
    0bbd: d5 71 02  mov $0271+x, a
    0bc0: 2f 26     bra   $0be8
    0bc2: 9b 49     dec   $49+x
    0bc4: d0 0d     bne   $0bd3
    0bc6: f5 70 02  mov a, $0270+x
    0bc9: d5 88 02  mov $0288+x, a
    0bcc: e8 00     mov a, #$00
    0bce: d5 59 02  mov $0259+x, a
    0bd1: 2f 15     bra   $0be8
    0bd3: e2 ca     set7  $ca
    0bd5: 60        clrc
    0bd6: f5 58 02  mov a, $0258+x
    0bd9: 95 59 02  adc   a, $0259+x
    0bdc: d5 59 02  mov $0259+x, a
    0bdf: f5 88 02  mov a, $0288+x
    0be2: 95 41 02  adc   a, $0241+x
    0be5: d5 88 02  mov $0288+x, a

$0BE8:

    0be8: 3f e8 16  call  $16e8

    0beb: f4 60     mov a, $60+x

    0bed: f0 6b     beq   $0c5a

    0bef: f5 89 02  mov a, $0289+x
    0bf2: 74 78     cmp   a, $78+x
    0bf4: f0 04     beq   $0bfa
    0bf6: bb 78     inc   $78+x
    0bf8: 2f 60     bra   $0c5a
    0bfa: f5 50 01  mov a, $0150+x
    0bfd: 75 a1 02  cmp   a, $02a1+x
    0c00: d0 05     bne   $0c07
    0c02: f5 b8 02  mov a, $02b8+x
    0c05: 2f 0d     bra   $0c14
    0c07: 40        setp
    0c08: bb 50     inc   $50+x
    0c0a: 20        clrp
    0c0b: fd        mov y, a
    0c0c: f0 02     beq   $0c10
    0c0e: f4 60     mov a, $60+x
    0c10: 60        clrc
    0c11: 95 b9 02  adc   a, $02b9+x
    0c14: d4 60     mov $60+x, a
    0c16: f4 61     mov a, $61+x
    0c18: 60        clrc
    0c19: 95 a0 02  adc   a, $02a0+x
    0c1c: d4 61     mov $61+x, a
    0c1e: c4 c2     mov $c2, a
    0c20: 1c        asl   a
    0c21: 1c        asl   a

    0c22: 90 02     bcc   $0c26
    0c24: 48 ff     eor   a, #$ff
    0c26: fd        mov y, a
    0c27: f4 60     mov a, $60+x
    0c29: 68 f1     cmp   a, #$f1
    0c2b: 90 05     bcc   $0c32
    0c2d: 28 0f     and   a, #$0f
    0c2f: cf        mul   ya
    0c30: 2f 18     bra   $0c4a
    0c32: cf        mul   ya
    0c33: dd        mov a, y
    0c34: f0 27     beq   $0c5d
    0c36: 75 91 03  cmp   a, $0391+x
    0c39: f0 22     beq   $0c5d
    0c3b: d5 91 03  mov $0391+x, a
    0c3e: 8d 00     mov y, #$00
    0c40: f3 c2 07  bbc7  $c2, $0c49
    0c43: da c8     movw  $c8, ya
    0c45: e8 00     mov a, #$00
    0c47: fd        mov y, a
    0c48: 9a c8     subw  ya, $c8
    0c4a: 7a cb     addw  ya, $cb
    0c4c: da cb     movw  $cb, ya
    0c4e: c8 10     cmp   x, #$10
    0c50: b0 0c     bcs   $0c5e
    0c52: e4 cd     mov a, $cd
    0c54: 24 15     and   a, $15
    0c56: d0 05     bne   $0c5d
    0c58: 2f 04     bra   $0c5e

$0C5A:

    0c5a: e3 ca f1  bbs7  $ca, $0c4d

$0C5D:    
    
    0c5d: 6f        ret

$0C5E:
    
    0c5e: 43 d1 fc  bbs2  $d1, $0C5D

    clr7 $ca
    mov a, $cc; asl a;
    mov y, #$00; 
    mov x, #$18; 
    div ya, x; mov x, a; // X = quotient(($CC << 1) / 24)

    mov a, $17de+y; mov $c7, a
    mov a, $17dd+y; mov $c6, a
    mov a, $17e0+y; mov $c2, a
    mov a, $17df+y; mov y, $c2; subw ya, $c6; 
    mov y, $cb; mul ya; mov a, y

    mov y, #$00; addw ya, $c6; mov $c7, y; asl a; rol $c7; mov $c6, a

    bra $0c97

$0C93:
    
    lsr $c7; ror a; inc x

$0C97:

    0c97: c8 06     cmp x, #$06

    0c99: d0 f8     bne $0c93

    0c9b: c4 c6     mov $c6, a
    0c9d: f8 12     mov x, $12
    0c9f: f5 b0 01  mov a, $01b0+x
    0ca2: eb c7     mov y, $c7
    0ca4: cf        mul ya
    0ca5: da c8     movw $c8, ya
    0ca7: f5 b0 01  mov a, $01b0+x
    0caa: eb c6     mov y, $c6
    0cac: cf        mul ya
    0cad: cb c2     mov $c2, y
    0caf: f5 b1 01  mov a, $01b1+x
    0cb2: eb c6     mov y, $c6
    0cb4: cf        mul   ya
    0cb5: 7a c8     addw  ya, $c8
    0cb7: da c8     movw  $c8, ya
    0cb9: f5 b1 01  mov a, $01b1+x
    0cbc: eb c7     mov y, $c7
    0cbe: cf        mul   ya
    0cbf: fd        mov y, a
    0cc0: e4 c2     mov a, $c2
    0cc2: 7a c8     addw  ya, $c8
    0cc4: da c8     movw  $c8, ya
    0cc6: 8d 00     mov y, #$00
    0cc8: f5 81 01  mov a, $0181+x

    0ccb: d0 12     bne   $0cdf

    0ccd: ba c8     movw  ya, $c8

    0ccf: 2f 10     bra   $0ce1

    0cd1: 8d 00     mov y, #$00
    0cd3: 28 7f     and   a, #$7f

    0cd5: 10 08     bpl   $0cdf

    0cd7: da c6     movw  $c6, ya
    0cd9: ba c8     movw  ya, $c8
    0cdb: 9a c6     subw  ya, $c6

    0cdd: 2f 00     bra   $0cdf

$0CDF:

    0cdf: 7a c8     addw  ya, $c8

$0CE1:

    movw $c8, ya
    mov a, $13
    or    a, #$02
    mov y, a
    mov a, $c8
    mov $f2, y
    mov $f3, a
    inc   y
    mov a, $c9

    jmp   $167a
    
    mov a, $18+x
    
    beq   $0cf9

    ret

    0cf9: 3f 64 16  call  $1664
    0cfc: fd        mov y, a

    0cfd: d0 60     bne   $0d5f

    0cff: e4 15     mov a, $15
    0d01: c8 10     cmp   x, #$10

    0d03: b0 05     bcs   $0d0a

    0d05: 4e 00 00  tclr1 $0000

    0d08: 2f 3b     bra   $0d45

    0d0a: 4e cd 00  tclr1 $00cd
    0d0d: 24 00     and   a, $00

    0d0f: f0 2e     beq   $0d3f

    0d11: 8f 01 c3  mov $c3, #$01
    0d14: cd 00     mov x, #$00
    0d16: 64 c3     cmp   a, $c3

    0d18: f0 06     beq   $0d20

    0d1a: 3d        inc   x
    0d1b: 3d        inc   x
    0d1c: 0b c3     asl   $c3

    0d1e: d0 f6     bne   $0d16

    0d20: f5 61 03  mov a, $0361+x
    0d23: c4 c5     mov $c5, a

    0d25: 3f f3 0e  call  $0ef3

    0d28: 3f 93 16  call  $1693

    0d2b: f5 c8 01  mov a, $01c8+x
    0d2e: 08 02     or    a, #$02
    0d30: d5 c8 01  mov $01c8+x, a
    0d33: e4 eb     mov a, $eb
    0d35: eb cd     mov y, $cd

    0d37: f0 02     beq   $0d3b

    0d39: 24 02     and   a, $02
    0d3b: c4 02     mov $02, a
    0d3d: f8 12     mov x, $12
    0d3f: e8 00     mov a, #$00
    0d41: d4 cb     mov $cb+x, a
    0d43: d4 cc     mov $cc+x, a
    0d45: e4 15     mov a, $15
    0d47: 4e ea 00  tclr1 $00ea
    0d4a: 4e e3 00  tclr1 $00e3
    0d4d: 8d 5c     mov y, #$5c

    0d4f: 3f 7a 16  call WriteDSP

    0d52: e8 00     mov a, #$00
    0d54: 8d 2d     mov y, #$2d

    0d56: 3f 7a 16  call WriteDSP

    0d59: 8d 3d     mov y, #$3d

    0d5b: 3f 7a 16  call WriteDSP

    0d5e: 6f        ret

$0D5F:

    0d5f: fd        mov y, a


    0d60: 10 41     bpl   $0da3
    0d62: 68 c8     cmp   a, #$c8

    0d64: f0 1f     beq   $0d85

    0d66: 68 c9     cmp   a, #$c9

    0d68: f0 10     beq   $0d7a

    0d6a: 68 ca     cmp   a, #$ca

    0d6c: f0 07     beq   $0d75

    0d6e: 68 d0     cmp   a, #$d0

    0d70: 90 31     bcc   $0da3

    0d72: 5f 63 0e  jmp   $0e63

    0d75: 42 d1     set2  $d1

    0d77: 5f 0b 0e  jmp   $0e0b

    0d7a: 3f 66 16  call  $1666

    0d7d: d5 51 01  mov $0151+x, a
    0d80: 72 d1     clr3  $d1

    0d82: 5f 0b 0e  jmp   $0e0b

    0d85: 3f 64 16  call  $1664

    0d88: fd        mov y, a

    0d89: 3f 8f 0d  call  $0d8f

    0d8c: 5f f9 0c  jmp   $0cf9

    0d8f: d5 51 01  mov $0151+x, a
    0d92: d4 18     mov $18+x, a
    0d94: f5 69 01  mov a, $0169+x
    0d97: cf        mul   ya
    0d98: dd        mov a, y

    0d99: d0 02     bne   $0d9d

    0d9b: e8 01     mov a, #$01
    0d9d: d4 19     mov $19+x, a
    0d9f: d5 68 01  mov $0168+x, a

    0da2: 6f        ret

    0da3: 52 d1     clr2  $d1
    0da5: 68 10     cmp   a, #$10

    0da7: b0 07     bcs   $0db0

    0da9: c4 11     mov $11, a

    0dab: 3f cb 0e  call  $0ecb

    0dae: e8 a4     mov a, #$a4
    0db0: 28 7f     and   a, #$7f
    0db2: 60        clrc
    0db3: c8 10     cmp   x, #$10

    0db5: b0 03     bcs   $0dba

    0db7: 60        clrc
    0db8: 84 0f     adc   a, $0f
    0dba: 60        clrc
    0dbb: 95 80 01  adc   a, $0180+x
    0dbe: d5 88 02  mov $0288+x, a
    0dc1: c4 cc     mov $cc, a
    0dc3: 8f 00 cb  mov $cb, #$00
    0dc6: f5 a1 02  mov a, $02a1+x
    0dc9: 5c        lsr   a
    0dca: e8 00     mov a, #$00
    0dcc: 7c        ror   a
    0dcd: d4 61     mov $61+x, a
    0dcf: e8 00     mov a, #$00
    0dd1: d4 78     mov $78+x, a
    0dd3: d5 50 01  mov $0150+x, a
    0dd6: d5 59 02  mov $0259+x, a
    0dd9: d5 e8 02  mov $02e8+x, a
    0ddc: d5 d1 02  mov $02d1+x, a
    0ddf: c8 10     cmp   x, #$10
    0de1: b0 06     bcs   $0de9
    0de3: e4 15     mov a, $15
    0de5: 24 cd     and   a, $cd
    0de7: d0 19     bne   $0e02
    0de9: f3 d1 0d  bbc7  $d1, $0df8
    0dec: e4 15     mov a, $15
    0dee: 8d 5c     mov y, #$5c
    0df0: 3f 7a 16  call WriteDSP
    0df3: 3f bb 16  call  $16bb
    0df6: 3f 93 16  call  $1693
    0df9: 3f 63 0c  call  $0c63
    0dfc: a3 d1 03  bbs5  $d1, $0e01
    0dff: 09 15 16  or    ($16),($15)
    0e02: e7 90     mov a,($90+x)
    0e04: 68 e7     cmp   a, #$e7
    0e06: d0 05     bne   $0e0d
    0e08: 3f 2e 0e  call  $0e2e
    0e0b: e7 90     mov a,($90+x)
    0e0d: 68 c9     cmp   a, #$c9
    0e0f: d0 07     bne   $0e18
    0e11: 62 d1     set3  $d1
    0e13: 93 d1 02  bbc4  $d1, $0e17
    0e16: a2 d1     set5  $d1
    0e18: 43 d1 08  bbs2  $d1, $0e23
    0e1b: f5 51 01  mov a, $0151+x
    0e1e: fd        mov y, a
    0e1f: 3f 92 0d  call  $0d92

    0e22: 6f        ret

$0E23:
   
    0e23: f5 51 01  mov a, $0151+x
    0e26: d4 18     mov $18+x, a
    0e28: f5 68 01  mov a, $0168+x
    0e2b: d4 19     mov $19+x, a

    0e2d: 6f        ret

// *************************************

$0E2E:

    call  $165e

    mov $0271+x, a

    call  $1664

    mov $49+x, a

    call  $1664

    cmp   x, #$10

    bcs   $0e43

    clrc
    adc   a, $0f

$0E43:

    clrc; adc a, $0180+x; and a, #$7f; mov $0270+x, a
    mov y, #$00; mov $c2, y; 
    setc; sbc a, $0288+x
    mov y, $49+x; push y; 
    pop x; 
    
    call  $16cc

    mov $0258+x, a; mov a, y; mov $0241+x, a

    ret

    setc; sbc a, #$d0; asl a; mov x, a; mov a, $0e77+x
    mov $c2, a
    mov a, $0e78+x
    mov $c3, a
    mov x, #$00

    jmp   ($00c2+x)

    bbc6  $0e, $0e74
    brk
    dec   x
0e7c: 0f        brk
0e7d: 3e 0f     cmp   x, $0f
0e7f: 5d        mov x, a
0e80: 0f        brk
0e81: 6c 0f 9f  ror   $9f0f
0e84: 0f        brk
0e85: 83 0f 03  bbs4  $0f, $0e8a
0e88: 10 c2     bpl   $0e4c
0e8a: 0f        brk
0e8b: 2b 10     rol   $10
0e8d: ca 0f d4  mov1  $1a81,7,c
0e90: 0f        brk
0e91: 4d        push  x
0e92: 10 6a     bpl   $0efe
0e94: 10 a8     bpl   $0e3e
0e96: 10 5e     bpl   $0ef6
0e98: 10 af     bpl   $0e49
0e9a: 10 b7     bpl   $0e53
0e9c: 10 c0     bpl   $0e5e
0e9e: 10 c9     bpl   $0e69
0ea0: 10 da     bpl   $0e7c
0ea2: 10 eb     bpl   $0e8f
0ea4: 10 f9     bpl   $0e9f
0ea6: 10 fe     bpl   $0ea6
0ea8: 10 05     bpl   $0eaf
0eaa: 11        tcall 1
0eab: 0c 11 17  asl   $1711
0eae: 11        tcall 1
0eaf: 1f 11 5a  jmp   ($5a11+x)
0eb2: 11        tcall 1
0eb3: 6d        push  y
0eb4: 11        tcall 1
0eb5: 86        adc   a,(x)
0eb6: 11        tcall 1
0eb7: 9f        xcn   a
0eb8: 11        tcall 1
0eb9: d1        tcall 13
0eba: 11        tcall 1
0ebb: f9 11     mov x, $11+y
0ebd: 02 12     set0  $12
0ebf: 0a 12 12  or1   c, $0242,2
0ec2: 12 1e     clr0  $1e
0ec4: 12 3f     clr0  $3f
0ec6: 12 59     clr0  $59
0ec8: 12 71     clr0  $71
0eca: 12 80     clr0  $80
0ecc: a8 10     sbc   a, #$10
0ece: 8f 80 11  mov $11, #$80
0ed1: 2f 03     bra   $0ed6
0ed3: 3f 64 16  call  $1664
0ed6: c4 c5     mov $c5, a
0ed8: c8 10     cmp   x, #$10
0eda: b0 09     bcs   $0ee5
0edc: d5 61 03  mov $0361+x, a
0edf: e4 cd     mov a, $cd
0ee1: 24 15     and   a, $15
0ee3: d0 03     bne   $0ee8
0ee5: 3f f3 0e  call  $0ef3
0ee8: e4 11     mov a, $11
0eea: 30 03     bmi   $0eef
0eec: 5f f9 0c  jmp   $0cf9
0eef: 8f 00 11  mov $11, #$00
0ef2: 6f        ret
0ef3: e4 13     mov a, $13
0ef5: 08 04     or    a, #$04
0ef7: c4 14     mov $14, a
0ef9: 8f 00 c2  mov $c2, #$00
0efc: 8f 18 c3  mov $c3, #$18
0eff: e4 c5     mov a, $c5
0f01: eb 14     mov y, $14
0f03: cb f2     mov $f2, y
0f05: c4 f3     mov $f3, a
0f07: 8d 00     mov y, #$00
0f09: e4 c5     mov a, $c5
0f0b: f0 04     beq   $0f11
0f0d: 8d 02     mov y, #$02
0f0f: cf        mul   ya
0f10: fd        mov y, a
0f11: f7 c2     mov a,($c2)+y
0f13: d5 b1 01  mov $01b1+x, a
0f16: fc        inc   y
0f17: f7 c2     mov a,($c2)+y
0f19: d5 b0 01  mov $01b0+x, a
0f1c: 6f        ret
0f1d: 3f 64 16  call  $1664
0f20: 08 80     or    a, #$80
0f22: c4 c2     mov $c2, a
0f24: c8 10     cmp   x, #$10
0f26: b0 09     bcs   $0f31
0f28: d5 49 03  mov $0349+x, a
0f2b: e4 cd     mov a, $cd
0f2d: 24 15     and   a, $15
0f2f: d0 0a     bne   $0f3b
0f31: e4 13     mov a, $13
0f33: 08 05     or    a, #$05
0f35: fd        mov y, a
0f36: e4 c2     mov a, $c2
0f38: 3f 7a 16  call WriteDSP
0f3b: 5f f9 0c  jmp   $0cf9
0f3e: 3f 64 16  call  $1664
0f41: c4 c2     mov $c2, a
0f43: c8 10     cmp   x, #$10
0f45: b0 09     bcs   $0f50
0f47: d5 60 03  mov $0360+x, a
0f4a: e4 cd     mov a, $cd
0f4c: 24 15     and   a, $15
0f4e: d0 0a     bne   $0f5a
0f50: e4 13     mov a, $13
0f52: 08 06     or    a, #$06
0f54: fd        mov y, a
0f55: e4 c2     mov a, $c2
0f57: 3f 7a 16  call WriteDSP
0f5a: 5f f9 0c  jmp   $0cf9
0f5d: 3f 64 16  call  $1664
0f60: 28 1f     and   a, #$1f
0f62: 08 a0     or    a, #$a0
0f64: d5 99 01  mov $0199+x, a
0f67: e2 d1     set7  $d1
0f69: 5f f9 0c  jmp   $0cf9
0f6c: f8 12     mov x, $12
0f6e: f2 d1     clr7  $d1
0f70: c8 10     cmp   x, #$10
0f72: b0 06     bcs   $0f7a
0f74: e4 cd     mov a, $cd
0f76: 24 15     and   a, $15
0f78: d0 06     bne   $0f80
0f7a: 3f bb 16  call  $16bb
0f7d: 3f 93 16  call  $1693
0f80: 5f f9 0c  jmp   $0cf9
0f83: 3f 64 16  call  $1664
0f86: c4 c2     mov $c2, a
0f88: 38 3f d2  and   $d2, #$3f
0f8b: e8 c0     mov a, #$c0
0f8d: 24 c2     and   a, $c2
0f8f: 04 d2     or    a, $d2
0f91: c4 d2     mov $d2, a
0f93: e4 c2     mov a, $c2
0f95: 28 1f     and   a, #$1f
0f97: d5 10 02  mov $0210+x, a
    set1  $d1
    
    jmp   $0cf9
    
    call  $1664

    // $0169[$12] = $17B3[($C2 & 0x70) >> 4]
    mov $c2, a; and a, #$70; xcn a; mov x; mov a, $17b3+x; mov x, $12; mov $0169+x, a  

    // $0198[$12] = $17BB[$C2 & 0x0F];
    mov a, $c2; and a, #$0f; mov x, a; mov a, $17bb+x; mov x, $12; mov $0198+x, a; 

    set1  $d1

    jmp   $0cf9

    0fc2: 3f 64 16  call  $1664
0fc5: c4 0d     mov $0d, a
0fc7: 5f f9 0c  jmp   $0cf9
0fca: 3f 64 16  call  $1664
0fcd: d4 30     mov $30+x, a
0fcf: 22 d1     set1  $d1
0fd1: 5f f9 0c  jmp   $0cf9
0fd4: 3f 58 16  call  $1658
0fd7: eb c2     mov y, $c2
0fd9: db 31     mov $31+x, y
0fdb: d5 40 02  mov $0240+x, a
0fde: 8d 00     mov y, #$00
0fe0: cb c2     mov $c2, y
0fe2: 80        setc
0fe3: b4 30     sbc   a, $30+x
0fe5: fb 31     mov y, $31+x
0fe7: 6d        push  y
0fe8: ce        pop   x
0fe9: 3f cc 16  call  $16cc
0fec: d5 28 02  mov $0228+x, a
0fef: dd        mov a, y
0ff0: d5 11 02  mov $0211+x, a
0ff3: e8 00     mov a, #$00
0ff5: d5 29 02  mov $0229+x, a
0ff8: 5f f9 0c  jmp   $0cf9
0ffb: 3f 64 16  call  $1664
0ffe: c4 10     mov $10, a
1000: 5f f9 0c  jmp   $0cf9
1003: 3f 58 16  call  $1658
1006: eb c2     mov y, $c2
1008: db 48     mov $48+x, y
100a: d5 f9 01  mov $01f9+x, a
100d: 8d 00     mov y, #$00
100f: cb c2     mov $c2, y
1011: 80        setc
1012: b5 10 02  sbc   a, $0210+x
1015: fb 48     mov y, $48+x
1017: 6d        push  y
1018: ce        pop   x
1019: 3f cc 16  call  $16cc
101c: d5 e1 01  mov $01e1+x, a
101f: dd        mov a, y
1020: d5 e0 01  mov $01e0+x, a
1023: e8 00     mov a, #$00
1025: d5 f8 01  mov $01f8+x, a
1028: 5f f9 0c  jmp   $0cf9
102b: 3f 58 16  call  $1658
102e: eb c2     mov y, $c2
1030: cb 08     mov $08, y
1032: c4 0c     mov $0c, a
1034: 8d 00     mov y, #$00
1036: cb c2     mov $c2, y
1038: 80        setc
1039: a4 0d     sbc   a, $0d
103b: eb 08     mov y, $08
103d: 6d        push  y
103e: ce        pop   x
103f: 3f cc 16  call  $16cc
1042: c4 0a     mov $0a, a
1044: dd        mov a, y
1045: c4 09     mov $09, a
1047: 8f 00 0b  mov $0b, #$00
104a: 5f f9 0c  jmp   $0cf9
104d: 3f 64 16  call  $1664
1050: d5 d0 02  mov $02d0+x, a
1053: 3f 64 16  call  $1664
1056: d5 e9 02  mov $02e9+x, a
1059: 3f 64 16  call  $1664
105c: 2f 07     bra   $1065
105e: f8 12     mov x, $12
1060: e8 00     mov a, #$00
1062: d5 00 03  mov $0300+x, a
1065: d4 79     mov $79+x, a
1067: 5f f9 0c  jmp   $0cf9
106a: c2 d1     set6  $d1
106c: 3f 58 16  call  $1658
106f: c4 c3     mov $c3, a
1071: 60        clrc
1072: 95 10 02  adc   a, $0210+x
1075: 68 15     cmp   a, #$15
1077: 90 02     bcc   $107b
1079: e8 14     mov a, #$14
107b: d5 31 03  mov $0331+x, a
107e: 80        setc
107f: f5 10 02  mov a, $0210+x
1082: d5 30 03  mov $0330+x, a
1085: a4 c3     sbc   a, $c3
1087: 10 02     bpl   $108b
1089: e8 00     mov a, #$00
108b: d5 48 03  mov $0348+x, a
108e: e8 00     mov a, #$00
1090: d5 19 03  mov $0319+x, a
1093: f8 c2     mov x, $c2
1095: e4 c3     mov a, $c3
1097: 1c        asl   a
1098: 8f 00 c2  mov $c2, #$00
109b: 3f d4 16  call  $16d4
109e: d5 18 03  mov $0318+x, a
10a1: dd        mov a, y
10a2: d5 01 03  mov $0301+x, a
10a5: 5f f9 0c  jmp   $0cf9
10a8: f8 12     mov x, $12
10aa: d2 d1     clr6  $d1
10ac: 5f f9 0c  jmp   $0cf9
10af: 3f 64 16  call  $1664
10b2: c4 0f     mov $0f, a
10b4: 5f f9 0c  jmp   $0cf9
10b7: 3f 64 16  call  $1664
10ba: d5 80 01  mov $0180+x, a
10bd: 5f f9 0c  jmp   $0cf9
10c0: 3f 64 16  call  $1664
10c3: d5 81 01  mov $0181+x, a
10c6: 5f f9 0c  jmp   $0cf9
10c9: 3f 64 16  call  $1664
10cc: d5 89 02  mov $0289+x, a
10cf: 3f 66 16  call  $1666
10d2: d5 a0 02  mov $02a0+x, a
10d5: 3f 66 16  call  $1666
10d8: 2f 04     bra   $10de
10da: f8 12     mov x, $12
10dc: e8 00     mov a, #$00
10de: d4 60     mov $60+x, a
10e0: d5 b8 02  mov $02b8+x, a
10e3: e8 00     mov a, #$00
10e5: d5 a1 02  mov $02a1+x, a
10e8: 5f f9 0c  jmp   $0cf9
10eb: 3f 58 16  call  $1658
10ee: d5 b0 01  mov $01b0+x, a
10f1: e4 c2     mov a, $c2
10f3: d5 b1 01  mov $01b1+x, a
10f6: 5f f9 0c  jmp   $0cf9
10f9: f8 12     mov x, $12
10fb: 5f f9 0c  jmp   $0cf9
10fe: f8 12     mov x, $12
1100: 82 d1     set4  $d1
1102: 5f f9 0c  jmp   $0cf9
1105: f8 12     mov x, $12
1107: 92 d1     clr4  $d1
1109: 5f f9 0c  jmp   $0cf9
110c: 3f 64 16  call  $1664
110f: c4 07     mov $07, a
1111: 3f f3 16  call  $16f3
1114: 5f f9 0c  jmp   $0cf9
1117: 3f 64 16  call  $1664
111a: c4 06     mov $06, a
111c: 5f f9 0c  jmp   $0cf9
111f: 3f 64 16  call  $1664
1122: 8f 00 c2  mov $c2, #$00
1125: 8f 3a c3  mov $c3, #$3a
1128: c4 c7     mov $c7, a
112a: 8d 00     mov y, #$00
112c: f7 c2     mov a,($c2)+y
112e: c4 c4     mov $c4, a
1130: fc        inc   y
1131: f7 c2     mov a,($c2)+y
1133: c4 c5     mov $c5, a
1135: dc        dec   y
1136: f7 c4     mov a,($c4)+y
1138: c4 c8     mov $c8, a
113a: fc        inc   y
113b: f7 c4     mov a,($c4)+y
113d: c4 c9     mov $c9, a
113f: e4 c7     mov a, $c7
1141: 8d 08     mov y, #$08
1143: cf        mul   ya
1144: fd        mov y, a
1145: cd 0f     mov x, #$0f
1147: f7 c8     mov a,($c8)+y
1149: d8 f2     mov $f2, x
114b: c4 f3     mov $f3, a
114d: fc        inc   y
114e: 7d        mov a, x
114f: 60        clrc
1150: 88 10     adc   a, #$10
1152: 5d        mov x, a
1153: 10 f2     bpl   $1147
1155: f8 12     mov x, $12
1157: 5f f9 0c  jmp   $0cf9
115a: 3f 64 16  call  $1664
115d: 43 d0 0a  bbs2  $d0, $1169
1160: 28 7f     and   a, #$7f
1162: c4 05     mov $05, a
1164: c4 03     mov $03, a
1166: c4 04     mov $04, a
1168: b2 01     clr5  $01
116a: 5f f9 0c  jmp   $0cf9
116d: f8 12     mov x, $12
116f: e4 15     mov a, $15
1171: c8 10     cmp   x, #$10
1173: b0 0b     bcs   $1180
1175: e4 cd     mov a, $cd
1177: 24 15     and   a, $15
1179: d0 08     bne   $1183
117b: e4 15     mov a, $15
117d: 0e eb 00  tset1 $00eb
1180: 0e 02 00  tset1 $0002
1183: 5f f9 0c  jmp   $0cf9
1186: f8 12     mov x, $12
1188: e4 15     mov a, $15
118a: c8 10     cmp   x, #$10
118c: b0 0b     bcs   $1199
118e: e4 cd     mov a, $cd
1190: 24 15     and   a, $15
1192: d0 08     bne   $119c
1194: e4 15     mov a, $15
1196: 4e eb 00  tclr1 $00eb
1199: 4e 02 00  tclr1 $0002
119c: 5f f9 0c  jmp   $0cf9
119f: f8 12     mov x, $12
11a1: e8 20     mov a, #$20
11a3: 24 01     and   a, $01
11a5: c4 01     mov $01, a
11a7: 3f 66 16  call  $1666
11aa: 28 1f     and   a, #$1f
11ac: c4 e9     mov $e9, a
11ae: 04 01     or    a, $01
11b0: c4 01     mov $01, a
11b2: fa 15 e3  mov ($e3),($15)
11b5: 09 15 16  or    ($16),($15)
11b8: 52 d1     clr2  $d1
11ba: e7 90     mov a,($90+x)
11bc: 68 f1     cmp   a, #$f1
11be: f0 07     beq   $11c7
11c0: f5 51 01  mov a, $0151+x
11c3: fd        mov y, a
11c4: 5f 92 0d  jmp   $0d92
11c7: 3f 5e 16  call  $165e
11ca: c4 c2     mov $c2, a
11cc: 3f 64 16  call  $1664
11cf: 2f 03     bra   $11d4
11d1: 3f 58 16  call  $1658
11d4: c8 10     cmp   x, #$10
11d6: 90 ef     bcc   $11c7
11d8: eb c2     mov y, $c2
11da: cb e4     mov $e4, y
11dc: c4 e8     mov $e8, a
11de: 8d 00     mov y, #$00
11e0: 8f 00 c2  mov $c2, #$00
11e3: 80        setc
11e4: a4 e9     sbc   a, $e9
11e6: eb e4     mov y, $e4
11e8: 6d        push  y
11e9: ce        pop   x
11ea: 3f cc 16  call  $16cc
11ed: c4 e6     mov $e6, a
11ef: dd        mov a, y
11f0: c4 e5     mov $e5, a
11f2: e4 e4     mov a, $e4
11f4: fd        mov y, a
11f5: 3f 8f 0d  call  $0d8f
11f8: 6f        ret
11f9: f8 12     mov x, $12
11fb: e8 00     mov a, #$00
11fd: c4 e3     mov $e3, a
11ff: 5f f9 0c  jmp   $0cf9
1202: f8 12     mov x, $12
1204: 09 15 ea  or    ($ea),($15)
1207: 5f f9 0c  jmp   $0cf9
120a: f8 12     mov x, $12
120c: 8f 00 ea  mov $ea, #$00
120f: 5f f9 0c  jmp   $0cf9
1212: 3f 58 16  call  $1658
1215: d4 91     mov $91+x, a
1217: e4 c2     mov a, $c2
1219: d4 90     mov $90+x, a
121b: 5f f9 0c  jmp   $0cf9
121e: 3f 58 16  call  $1658
1221: fd        mov y, a
1222: f4 90     mov a, $90+x
1224: c7 a8     mov ($a8+x), a
1226: f4 91     mov a, $91+x
1228: bb a8     inc   $a8+x
122a: c7 a8     mov ($a8+x), a
122c: bb a8     inc   $a8+x
122e: e4 c2     mov a, $c2
1230: d4 90     mov $90+x, a
1232: dd        mov a, y
1233: d4 91     mov $91+x, a
1235: f5 78 03  mov a, $0378+x
1238: bc        inc   a
1239: d5 78 03  mov $0378+x, a
123c: 5f f9 0c  jmp   $0cf9
123f: f8 12     mov x, $12
1241: f5 78 03  mov a, $0378+x
1244: f0 10     beq   $1256
1246: 9c        dec   a
1247: d5 78 03  mov $0378+x, a
124a: 9b a8     dec   $a8+x
124c: e7 a8     mov a,($a8+x)
124e: d4 91     mov $91+x, a
1250: 9b a8     dec   $a8+x
1252: e7 a8     mov a,($a8+x)
1254: d4 90     mov $90+x, a
1256: 5f f9 0c  jmp   $0cf9
1259: 3f 64 16  call  $1664
125c: fd        mov y, a
125d: f4 90     mov a, $90+x
125f: c7 a8     mov ($a8+x), a
1261: bb a8     inc   $a8+x
1263: f4 91     mov a, $91+x
1265: c7 a8     mov ($a8+x), a
1267: bb a8     inc   $a8+x
1269: dd        mov a, y
126a: c7 a8     mov ($a8+x), a
126c: bb a8     inc   $a8+x

126e: 5f f9 0c  jmp   $0cf9

1271: f8 12     mov x, $12
1273: 9b a8     dec   $a8+x
1275: e7 a8     mov a,($a8+x)
1277: 9c        dec   a

1278: d0 07     bne   $1281

    dec   $a8+x
    dec   $a8+x

    jmp $0cf9

$1281:

    mov ($a8+x), a; dec $a8+x;

    mov a,($a8+x); mov $91+x, a; dec $a8+x
    mov a,($a8+x); mov $90+x, a; inc $a8+x; inc $a8+x; inc $a8+x
    
    jmp $0cf9
    
    cmp a, #$f0

    bcc $12b1

    and a, #$0f; asl a

    mov $c2, x
    mov x, a
    
    // $C4.w = $13FD+X.w
    mov a, $13fd+x; mov $c4, a;
    mov a, $13fe+x; mov $c5, a;
    mov x, #$00

    jmp   ($00c4+x) // why not just do "jmp ($13FD+x)" ?????

$12B1:
    
    cmp a, #$b6

    bcs $1314

    cmp a, #$10

    bcc $12c4

    setc; sbc a, #$10;

    mov $c2, #$00; mov $c3, #$1a

    bra $12dc

$12C4:    
    
    mov $c2, #$00; mov $c3, #$3a;
    mov x, #$00; mov $02, x; mov $06, x; mov $03, x; mov $04, x; mov $0f, x

    bbs1 $d0, $12DC

    mov $10, #$ff

$12DC:

    mov y, #$00
    mov $c7, a

    mov a,($c2)+y; mov $c4, a; inc y;
    mov a,($c2)+y; mov $c5, a; 
    
    mov a, $c7; mov $c6, #$00; asl a; rol $c6; mov y, $c6; addw ya, $c4; movw $c4, ya

    mov y, #$00; 
    mov a,($c4)+y; mov $c8, a; inc y;
    mov a,($c4)+y; mov $c9, a; dec y;

$1303:    
    
    mov a,($c8)+y; incw $c8;
    mov $c2, a; and a, #$1f; mov $12, a

    mov a,($c8)+y; incw $c8; mov y, a

    bne   $1315

$1314:

    ret

$1315:
    
    mov $c3, a

    mov x, $12; cmp x, #$10

    bcs $1323

    131d: 24 cd     and   a, $cd

    131f: f0 3b     beq   $135c

    1321: 2f 1c     bra   $133f

$1323:

    1323: e4 c2     mov a, $c2
    1325: 28 e0     and a, #$e0
    1327: 9f        xcn a
    1328: 5c        lsr a
    1329: c4 c2     mov $c2, a
    132b: cd 16     mov x, #$16

$132D:

    132d: f4 cc     mov a, $cc+x

    132f: f0 17     beq $1348

    1331: e4 c3     mov a, $c3
    1333: 74 cc     cmp a, $cc+x

    1335: d0 11     bne $1348

    1337: f4 cb     mov a, $cb+x
    1339: 64 c2     cmp a, $c2

    133b: f0 0b     beq $1348
    133d: 90 09     bcc $1348

    133f: 20        clrp
    1340: 3a c8     incw  $c8
    1342: 3a c8     incw  $c8
    1344: 8d 00     mov y, #$00

    1346: 2f bb     bra $1303

$1348:
    
    dec   x
    1349: 1d        dec   x
    134a: c8 0e     cmp   x, #$0e
    134c: d0 df     bne   $132d
    134e: f8 12     mov x, $12
    1350: e4 c2     mov a, $c2
    1352: d4 cb     mov $cb+x, a
    1354: f4 cc     mov a, $cc+x
    1356: c4 c6     mov $c6, a
    1358: e4 c3     mov a, $c3
    135a: d4 cc     mov $cc+x, a

$135C:    

    135c: e8 00     mov a, #$00
    135e: d5 c9 01  mov $01c9+x, a
    1361: d5 c8 01  mov $01c8+x, a
    1364: d5 78 03  mov $0378+x, a
    1367: d5 80 01  mov $0180+x, a
    136a: d4 18     mov $18+x, a
    136c: d5 48 00  mov $0048+x, a
    136f: d5 31 00  mov $0031+x, a
    1372: d5 49 00  mov $0049+x, a
    1375: d5 81 01  mov $0181+x, a
    1378: d4 60     mov $60+x, a
    137a: d4 79     mov $79+x, a
    137c: d5 00 03  mov $0300+x, a
    137f: d4 30     mov $30+x, a
    1381: e8 ff     mov a, #$ff
    1383: d4 30     mov $30+x, a
    1385: e8 0a     mov a, #$0a
    1387: d5 10 02  mov $0210+x, a
    138a: e8 fc     mov a, #$fc
    138c: d5 69 01  mov $0169+x, a
    138f: e8 ff     mov a, #$ff
    1391: d5 98 01  mov $0198+x, a
    1394: 8f 04 c7  mov $c7, #$04
    1397: 7d        mov a, x
    1398: 5c        lsr   a
    1399: c4 c5     mov $c5, a
    139b: f0 10     beq   $13ad
    139d: e8 00     mov a, #$00
    139f: 8f 14 c2  mov $c2, #$14
    13a2: 60        clrc
    13a3: 84 c2     adc   a, $c2
    13a5: 90 02     bcc   $13a9
    13a7: ab c7     inc   $c7
    13a9: 8b c5     dec   $c5
    13ab: d0 f5     bne   $13a2
    13ad: d4 a8     mov $a8+x, a
    13af: e4 c7     mov a, $c7
    13b1: d4 a9     mov $a9+x, a
    13b3: 8d 00     mov y, #$00
    13b5: f7 c8     mov a,($c8)+y
    13b7: d4 90     mov $90+x, a
    13b9: 3a c8     incw  $c8
    13bb: f7 c8     mov a,($c8)+y
    13bd: 3a c8     incw  $c8
    13bf: d4 91     mov $91+x, a
    13c1: c8 10     cmp   x, #$10
    13c3: 90 19     bcc   $13de
    13c5: e4 c3     mov a, $c3
    13c7: 4e 16 00  tclr1 $0016
    13ca: 09 c3 cd  or    ($cd),($c3)
    13cd: 09 c6 c3  or    ($c3),($c6)
    13d0: e8 64     mov a, #$64
    13d2: c4 d8     mov $d8, a
    13d4: 48 ff     eor   a, #$ff
    13d6: bc        inc   a
    13d7: c4 d9     mov $d9, a
    13d9: 8f 00 e4  mov $e4, #$00
    
    bra $13ef
    
$13DE:
    
13de: 09 c3 00  or    ($00),($c3)
13e1: 8f ff 0d  mov $0d, #$ff
13e4: ab 0e     inc   $0e
13e6: 8f 00 08  mov $08, #$00
13e9: e4 cd     mov a, $cd
13eb: 24 c3     and   a, $c3

13ed: d0 0b     bne   $13fa

13ef: 09 c3 17  or    ($17),($c3)
13f2: e4 c3     mov a, $c3
13f4: 4e e3 00  tclr1 $00e3
13f7: 4e ea 00  tclr1 $00ea

$13FA:

    jmp $1303

// *************************************

JumpTable1:

    dw $1480* 
    dw $1484*
    dw $1422*
    dw $1427*
    dw $142C*
    dw $1431*
    dw $1436*
    dw $1437*
    dw $1459*
    dw $1421*
    dw $148C*
    dw $1485*
    dw $14E3*
    dw $15B3
    dw $141B*

// *************************************

$141B:

    mov x, #$02
    mov a, #$ff; mov $30+x, a

$1421:    
    
    ret

// *************************************    

$1422:    
    
    set3 $cf
    set6 $01

    ret

// *************************************   
    
$1427:    
    
    clr3 $cf
    clr6 $01

    ret

// *************************************

$142C: 
   
    set0 $cf
    set1 $cf

    ret

// *************************************

$1431:    
    
    clr0 $cf
    set1 $cf

    ret

// *************************************    
    
$1436:    
    
    ret

// *************************************    
    
$1437:    
    
    1437: c3 cf 45  bbs6  $cf, .return

    143a: 42 d0     set2  $d0
    143c: cd 96     mov x, #$96
    143e: e4 05     mov a, $05

    1440: 3f d4 16  call  $16d4

    1443: c4 ed     mov $ed, a; 
    1445: dd        mov a, y
    1446: c4 ec     mov $ec, a
    1448: 8f 00 ee  mov $ee, #$00
    144b: e8 00     mov a, #$00
    144d: c4 ef     mov $ef, a
    144f: c4 03     mov $03, a
    1451: c4 04     mov $04, a
    1453: c4 10     mov $10, a
    1455: 48 ff     eor a, #$ff

    1457: 2f 05     bra   $145e

$1459:    
    
    1459: c3 cf 23  bbs6  $cf, .return

    145c: e8 00     mov a, #$00

$145E:

    145e: 8d 96     mov y, #$96
    1460: cb c2     mov $c2, y
    1462: cb d3     mov $d3, y
    1464: c4 d7     mov $d7, a
    1466: 8d 00     mov y, #$00
    1468: 8f 00 c2  mov $c2, #$00
    146b: 80        setc
    146c: a4 10     sbc   a, $10
    146e: eb d3     mov y, $d3
    1470: 6d        push  y
    1471: ce        pop   x

    1472: 3f cc 16  call  $16cc

    1475: c4 d5     mov $d5, a
    1477: dd        mov a, y
    1478: c4 d4     mov $d4, a
    147a: 8f 00 d6  mov $d6, #$00
    147d: c2 cf     set6  $cf

.return:

    ret

$1480:

    mov $10, #$ff

    ret

// *************************************
    
$1484:

    ret

// *************************************
    
$1485:

    1485: e2 cf     set7  $cf

    1487: 3f 1b 15  call  $151b

    148a: 2f 06     bra   $1492

// -------------------------------------
    
$148C:    
    
    bbc7 $cf, $1492

    mov $10, #$00

$1492:

    set7  $ca
    mov a, #$00
    mov $ea, a
    mov $e3, a
    mov $00, a
    mov $cd, a
    mov $17, a
    mov $16, a
    mov $03, a
    mov $04, a
    mov y, #$3c

    call WriteDSP

    mov y, #$2c

    call WriteDSP

    mov x, #$db
    mov a, #$00

$14B4:

    mov (x)+, a
    cmp   x, #$e3
 
    bne   $14b4

    mov a, #$ff
    mov y, #$5c

    call WriteDSP

    bbc7 $ca, $14d7

    14c3: 8d 04     mov y, #$04

$14C5:

    mov a, $17ce+y
    mov $f2, a
    mov a, $17d3+y
    mov x, a
    mov a, #$00
    mov (x), a
    mov $f3, a

    dbnz  y, $14c5

    call EchoBufferOff

    clr6  $cf
    clr2  $d0
    mov a, #$00
    mov $d3, a
    mov $ca, a

    ret

// *************************************
    
$14E3:

    14e3: f2 cf     clr7  $cf
    14e5: e5 02 05  mov a, $0502
    14e8: c4 eb     mov $eb, a
    14ea: 3f 1b 15  call  $151b
    14ed: cd 00     mov x, #$00
    14ef: 8f 01 15  mov $15, #$01
    14f2: e4 00     mov a, $00
    14f4: 24 15     and   a, $15
    14f6: f0 12     beq   $150a
    14f8: 7d        mov a, x
    14f9: 9f        xcn   a
    14fa: 5c        lsr   a
    14fb: c4 13     mov $13, a
    14fd: f5 61 03  mov a, $0361+x
    1500: c4 c5     mov $c5, a
    1502: 3f f3 0e  call  $0ef3
    1505: 3f 93 16  call  $1693
    1508: 22 d1     set1  $d1
    150a: 3d        inc   x
    150b: 3d        inc   x
    150c: 0b 15     asl   $15
    150e: d0 e2     bne   $14f2
    1510: e4 07     mov a, $07
    1512: 3f f3 16  call  $16f3
    1515: b2 01     clr5  $01
    1517: 3f 37 14  call  $1437
    151a: 6f        ret
    151b: e8 00     mov a, #$00
    151d: 5d        mov x, a
    151e: 8d 05     mov y, #$05
    1520: da c2     movw  $c2, ya
    1522: 8d 00     mov y, #$00
    1524: 8f 10 c7  mov $c7, #$10
    1527: f3 cf 09  bbc7  $cf, $1532
    152a: bf        mov a,(x)+
    152b: d7 c2     mov ($c2)+y, a
    152d: fc        inc   y
    152e: 6e c7 f6  dbnz  $c7, $1526
    1531: 2f 07     bra   $153a
    1533: f7 c2     mov a,($c2)+y
    1535: fc        inc   y
    1536: af        mov (x)+, a
    1537: 6e c7 f9  dbnz  $c7, $1532
    153a: 8f 10 c7  mov $c7, #$10
    153d: 7d        mov a, x
    153e: 60        clrc
    153f: 88 08     adc   a, #$08
    1541: 5d        mov x, a
    1542: c8 c0     cmp   x, #$c0
    1544: d0 e1     bne   $1527
    1546: e8 50     mov a, #$50
    1548: c4 c4     mov $c4, a
    154a: e8 01     mov a, #$01
    154c: c4 c5     mov $c5, a
    154e: cd 00     mov x, #$00

$1550:

    bbc7  $cf, $1563

    mov a,($c4+x); incw $c4; mov ($c2)+y, a; inc y

    bne $155e

    inc $c3

$155E:

    dbnz $c7, $154f
    
    bra $1571

$1563:
    
    1563: f7 c2     mov a,($c2)+y
    1565: fc        inc   y
    1566: d0 02     bne   $156a
    1568: ab c3     inc   $c3
    156a: c7 c4     mov ($c4+x), a
    156c: 3a c4     incw  $c4
    156e: 6e c7 f2  dbnz  $c7, $1562
    1571: cb c6     mov $c6, y
    1573: e8 08     mov a, #$08
    1575: 8d 00     mov y, #$00
    1577: 7a c4     addw  ya, $c4
    1579: da c4     movw  $c4, ya
    157b: eb c6     mov y, $c6
    157d: 8f 10 c7  mov $c7, #$10
    1580: 78 90 c4  cmp   $c4, #$90

    1583: d0 cb     bne $1550

    1585: 78 03 c5  cmp $c5, #$03

    1588: d0 c6     bne $1550

    158a: e8 00     mov a, #$00
    158c: c4 c4     mov $c4, a
    158e: e8 04     mov a, #$04
    1590: c4 c5     mov $c5, a

$1592:

    1592: f3 cf 0d  bbc7  $cf, $15a1
    1595: e7 c4     mov a,($c4+x)
    1597: 3a c4     incw  $c4
    1599: d7 c2     mov ($c2)+y, a
    159b: fc        inc   y
    159c: d0 02     bne   $15a0
    159e: ab c3     inc   $c3
    15a0: 2f 0b     bra   $15ad
    15a2: f7 c2     mov a,($c2)+y
    15a4: fc        inc   y

    15a5: d0 02     bne   $15a9

    15a7: ab c3     inc   $c3
    15a9: c7 c4     mov ($c4+x), a
    15ab: 3a c4     incw  $c4
    15ad: 78 a0 c4  cmp   $c4, #$a0

    15b0: d0 e0     bne   $1592

    15b2: 6f        ret

// *************************************

$15B3:

    set0 $d0

    ret

// *************************************

$15B6:
    
    mov y, $da; mov a, $02e9+x; mul ya; 
    
    mov a, y; clrc; adc a, $02e8+x; asl a
    
    bcc $15c6
    
    eor a, #$ff

$15C6:

    mov y, $79+x
    mul ya
    mov a, y
    eor a, #$ff
    inc a
    cmp a, $0379+x

    beq   $15d8

    mov $0300+x, a
    mov $0379+x, a

$15D8:

    ret

// *************************************

$15D9:

    bbs1 $cf, $15E5

    bbs6 $cf, $15E5

    bbs2 $d1, $163E

    bbc1 $d1, $163E

$15E5:
    
    clr1  $d1
    mov a, $13
    or    a, #$00
    mov $14, a
    mov $ca, #$00
    mov a, $0300+x

    bne   $15f7

    mov a, #$ff

$15F7:

    mov y, $10
    mul ya
    mov a, $0198+x
    mul ya
    mov a, $30+x
    mul ya
    mov a, y
    mul ya
    mov $c2, y
    
    bbs0 $cf, $160D
    
    mov $cc, #$0a

    bra $1612

$160D:

    mov a, $0210+x; mov $cc, a

$1612:    
    
    mov y, $cc
    mov a, $179e+y
    mov y, a
    mov a, $c2
    mul ya
    mov a, $cc
    asl a

    bbc0 $14, $1622

    asl a

$1622:

    mov a, y

    bcc $1628

    eor a, #$ff
    inc a

    call $1649

    mov y, $14

    call WriteDSP

    mov a, #$14
    setc
    sbc a, $cc
    mov $cc, a
    inc $14
    inc $ca

    bbc1  $14, $1612

$163E:

    mov a, $d2; mov $01c9+x, a
    mov a, $d1; mov $01c8+x, a  // $D1.w = $01C8+X.w
    
    ret

// *************************************
    
$1649:
    
    mov y, $ca

    bne $1651

    bbs7 $d2, $1654

    ret

$1651:    
    
    bbc6  $d2, .return

$1654:
    
    eor a, #$ff
    inc a

.return:
    
    ret

// *************************************
    
$1658:
    
    mov x, $12
    mov a,($90+x); mov $c2, a; // $C2 = ($90+X)
    inc $90+x
    
    bne $1666
    
    inc $91+x
    mov x, $12

$1666:
    
    mov a,($90+x)
    inc $90+x
    
    bne .return
    
    inc $91+x
    
.return:
    
    ret

// *************************************
    
$166F:
    
    mov a, $01c9+x; mov $d2, a;
    mov a, $01c8+x; mov $d1, a; // $D1.w = $01C8+X.w

    ret

// *******************************
WriteDSP:

    mov $f2, y
    mov $f3, a

    ret

// *******************************

$167F:

    mov $c2, #$00
    cmp a, #$01
    
    beq $168d

$1686:
    
    inc   $c2
    lsr   a
    cmp   a, #$01
    
    bne   $1686

$168D:

    mov a, $c2
    xcn   a
    mov $13, a
    
    ret

// *******************************

$1693:
    
    mov a, $13; or a, #$05; mov y, a
    mov a, $0349+x; mov $f2, y; mov $f3, a

    inc y
    mov a, $0360+x; mov $f2, y; mov $f3, a

    ret

// *******************************

$16A8:

    or a, #$05; mov y, a        // Y = A | 0x05;
    mov a, $0349+x; and a, #$7f // A = $0349+X & 0x7F;

    call WriteDSP

    inc y; inc y;
    mov a, $0199+x

    jmp WriteDSP

// *******************************
    
$16BB:    
    
    mov a, $13; or a, #$05; mov y, a
    mov a, #$00

    call WriteDSP

    inc y; inc y;
    mov a, #$bf

    jmp WriteDSP

// *******************************

$16CC:

    notc
    ror $c2

    bpl $16d4

    eor a, #$ff
    inc a

$16D4:

    mov y, #$00
    div ya, x

    push a
    mov a, #$00
    div ya, x
    pop y
    mov x, $12

    bbc7  $c2, $16E7

    movw  $c8, ya; movw  ya, $c0; subw  ya, $c8

$16E7:

    ret
    
// *******************************

$16E8:
    
    mov a, $0288+x; mov $cc, a
    mov a, $0259+x; mov $cb, a

    ret

// *******************************

$16F3:

    asl a; asl a; asl a; eor a, #$ff; inc a; mov $c2, a; // $C2 = -(A << 3);
    
    set5 $01; 
    mov a, $01; mov y, #$6c;
    mov $f2, y; mov $f3, a;  // FLG = $01

    mov a, $07; mov y, #$7d;
    mov $f2, y; mov $f3, a;  // EDL = $07

    mov a, $c2; mov y, #$6d
    mov $f2, y; mov $f3, a;  // ESA = $C2

    mov a, #$80; mov $fb, a; // T1TARGET = 0x80
    mov a, #$03; mov $f1, a; // enable Timers 0 & 1
    mov a, $07;  mov $c6, a; // 

$1721:
    
    mov y, $fd // t0_out

    beq   $1721 // wait for timer 0 to count up to its target value at least once

    dbnz  $c6, $1721 // $C6 was loaded with the intended value for EDL... so I'm not sure why this is here

    mov y, $c2; 
    
$172A:
    
    mov a, #$00; movw $c2, ya

    mov a, #$00; mov y, a; 
    
.clearRam: // zeroes the echo ring buffer
    
    mov ($c2)+y, a; inc y

    bne .clearRam

    inc $c3; cmp $c3, #$00

    bne .clearRam

    ret

// *******************************
 
$173E: // routine appears unused, but it's too early to tell
 
    asl a; asl a; asl a; eor a, #$ff; inc a; mov y, a

    jmp   $172a

// *************************************

EchoBufferOff:

    // disables echo buffer

    mov a, #$20; mov $01, a
    mov y, #$6c; 

    jmp WriteDSP

// *************************************

ReadFromSCPU:

    mov a, $f4
    cmp a, #$ef

    beq .someCommand

    ret

.someCommand:
    
    mov a, #$aa; mov $f4, a
    mov a, #$bb; mov $f5, a // send 0xBBAA the S-CPU on ports 0-1
    mov a, #$cc;

.syncWait1:

    cmp a, $f4

    bne .syncWait1          // wait for a response of 0xCC on port 0

    call EchoBufferOff
   
    mov a, $f6; mov y, $f7
    movw $c2, ya           // $C2 = word input on ports 2-3 (and address sent by the S-CPU telling us where to write the data)

.syncWait3:

    mov y, #$00; mov a, #$00

.syncWait2:

    mov $f4, a; mov a, $f4
    cmp a, #$11
    
    bne .syncWait2         // wait for a response of 0x11 on port 0

    mov a, $f6; mov ($c2)+y, a; inc y
    mov a, $f7; mov ($c2)+y, a; inc y // write a word of data to the address pointed to by $C2

    mov a, #$22; mov $f4, a
    mov a, $f4; cmp a, #$dd           // ask if that's the last of the data

    beq .syncWait3                    // keep receiving word sized data until the S-CPU tells us we're done

    cmp a, #$ee                       // 0xEE signals the end of the transmission, 0xDD means to keep transferring, 

    bne   $1789

    mov a, #$ee; mov $f4, a           // Acknowledge to the S-CPU that we're ending the communication
    mov x, #$33; mov $f1, x           // enable timers 0 and 1 and clear all the input ports
    
    mov a, #$00; 
    
    ret

// *************************************

    // data... most likely

.someTable1 // $179E
    db $7F, $7E, $7D, $7C, $7A, $77, $73, $6E, $67, $5E, $51, $42, $34, $35, $1E, $15, $0D, $07, $03, $01, $00

.someTable2 // $17b3

    db $32, $65, $7f, $98, $b2, $cb

// beyond?...????    
      
17b9: e5 fc 0a  mov a, $0afc
17bc: 19        or    (x),(y)
17bd: 28 3c     and   a, #$3c
17bf: 50 64     bvc   $1825
17c1: 7d        mov a, x
17c2: 96 aa b9  adc   a, $b9aa+y
17c5: c8 d4     cmp   x, #$d4
17c7: e1        tcall 14
17c8: eb f5     mov y, $f5
17ca: ff        stop

RegList1:
    db $4C, $5C, $2D, $3D

RegList2:
    db $4D, $0D, $2C, $3C, $6C

ValueList2:
    db $02, $06, $03, $04, $01

ValueList1:
    db $16, $17, $EA, $E3

TuningList:
    dw $085F, $08DE, $0965, $09F4, $0A8C, $0B2C, $0BD6, $0C8B
    dw $0D4A, $0E14, $0EEA, $0FCD, $10BE, $10BE, $10BE, $10BE // last four entries are probably part of another table