Here is the full source for the mainloop with the audiofix in the right place in case other opensource chips would like to try it out:
Code:
.macro bclr address bit
.byte 0xF5, 0xD8 + \bit
.word \address
.endm
_label1:
# mov (0x8336), D0 #D2A
mov (0x833E), D0 #D2B
cmp 0, D0
beq _label3
mov (A2), D0
cmp 0, D0
bne _label3
# mov D3, (0x8334) #D2A
mov D3, (0x833C) #D2B
mov 1, D0
mov D0, (A3)
mov 0xFFFF, D1
# mov 0x8334, A0 #D2A
mov 0x833c, A0 #D2B
jsr sub_94EC3
# mov (0x8334), D0 #D2A
mov (0x833C), D0 #D2B
or 0x80, D0
# mov D0, (0x8334) #D2A
mov D0, (0x833C) #D2B
_label2:
# Audiofix goes here
# mov (0x8334),d1 #D2A
mov (0x833C),d1 #D2B
btst 68,d1
beq _label2b #No fix
# movbu (0x8346),d1 #D2A
movbu (0x834E),d1 #D2B
extxb d1
cmp -127,d1
bne _label2b #No fix
# movbu (0x85bc),d1 #D2A
movbu (0x85C6),d1 #D2B
extxb d1
cmp 2,d1
bne _label2b #No fix
jsr _audiofix #Go to audiofix
bra _label1
_label2b:
jsr sub_851F1
bra _label1
_label3:
# mov D3, (0x8334) #A
mov D3, (0x833C) #B
mov 1, D0
mov D0, (A3)
mov 0xFFFF, D1
# mov 0x8334, A0 #A
mov 0x833C, A0 #B
jsr sub_94F61
#############################################################
sub d0,d0 #Clear d0
# movbu (0x8576),d0 #Read Mediabyte #A
movbu (0x8580),d0 #Read Mediabyte #B
cmp 0x28,d0 #Does it need patching?
beq _patch38 #Yes?, then do it
cmp 0x38,d0 #Is it a backup?
bne _done #No?, then we're done here
# movbu (0x8308),d0 #Read DI #A
movbu (0x8310),d0 #Read DI #B
cmp 0xA4,d0 #A4 command?
bne _done #No?, then we're done
mov 0x28,d0 #New mediabyte is 0x28
bra _patch_mediabyte #patchit
_patch38:
mov 0x38,d0 #Restore mediabyte to 0x38
_patch_mediabyte:
# movb d0,(0x8576) #Restore mediabyte #A
movb d0,(0x8580) #Restore mediabyte #B
_done:
#############################################################
# mov (0x8334), D0 #A
mov (0x833C), D0 #B
and 0x532, D0
cmp 0x20, D0
bne _label2
# movbu (0x8369), D0 #A
movbu (0x8371), D0 #B
cmp 0, D0
bne _label4
jmp _label13
_label4:
# mov (0x85B8), D0 #A
mov (0x85C2), D0 #B
cmp 4, D0
beq _label5
# mov (0x85B8), D0 #A
mov (0x85C2), D0 #B
cmp 3, D0
beq _label5
jmp _label13
_label5:
# movbu (0x8308), D2 #A
movbu (0x8310), D2 #B
movbu (0x40030F), D0
btst 0x10, D0
beq _label6
mov 0x800, D0
# mov D0, (0x8330) #A
mov D0, (0x8338) #B
mov 4, D0
# mov D0, (0x8332) #A
mov D0, (0x833A) #B
jsr sub_83E13
_label6:
jsr sub_83E03
# bclr (0x8368), 0 #A
bclr (0x8370), 0 #B
# movbu (0x8346), D0 #A
movbu (0x834E), D0 #B
cmp 0, D0
beq _label7
# movbu (0x8346), D0 #A
movbu (0x834E), D0 #B
cmp 0x13, D0
bne _label8
_label7:
# mov D3, (0x85B8) #A
mov D3, (0x85C2) #B
bra _label9
_label8:
mov 1, D0
mov D0, (A2)
_label9:
# movb D3, (0x8369) #A
movb D3, (0x8371) #B
mov 1, D0
mov 0xFFDF, D1
jsr sub_952B0
# movbu (0x838C), D0 #A
movbu (0x8394), D0 #B
cmp 0, D0
beq _label10
# movb D3, (0x838C) #A
movb D3, (0x8394) #B
jsr sub_9241E
_label10:
mov D2, A0
cmp 0xA8, A0
beq _label11
cmp 0xD0, A0
beq _label11
cmp 0xA4, A0
beq _label11
jmp _label1
_label11:
jsr sub_838DC
# movbu (0x8368), D0 #A
movbu (0x8370), D0 #B
btst 0x10, D0
bne _label12
jmp _label1
_label12:
and 0xFFEF, D0
# movb D0, (0x8368) #A
movb D0, (0x8370) #B
jsr sub_89E6C
jmp _label1
_label13:
# movb D3, (0x8369) #A
movb D3, (0x8371) #B
jmp _label2
_audiofix:
jsr sub_85171
jsr sub_851a5
mov 8,d0
# mov d0,(0x85a8) #D2A
mov d0,(0x85b2) #D2B
mov 2,d0
jsr sub_8795
mov d0,d2
jsr sub_851aa
jsr sub_8517e
mov d2,d0
rts
sub_8786:
# mov (0x8418),a0 #D2A
mov (0x8420),a0 #D2B
mov (6,a0),d2
# mov (0x8428),d0 #A
mov (0x8430),d0 #B
add d2,d0
sub d1,d1
jsr sub_8736
rts
sub_8795:
jsr sub_840b5
# mov d0,(0x837a) #D2A
mov d0,(0x8382) #D2B
cmp 0,d0
bne _label_87b9
mov 5,d0
# mov d0,(0x85bc) #D2A
mov d0,(0x85c6) #D2B
mov 2,d0
# mov d0,(0x85c6) #D2A
mov d0,(0x85d0) #D2B
mov 9,d0
# mov d0,(0x85be) #D2A
mov d0,(0x85c8) #D2B
sub d0,d0
# movb d0,(0x8373) #D2A
movb d0,(0x837b) #D2B
jsr sub_8786
sub d0,d0
rts
_label_87b9:
mov 5,d0
# mov d0,(0x85bc) #A
mov d0,(0x85c6) #B
mov 1,d0
# mov d0,(0x85c6) #A
mov d0,(0x85d0) #B
mov 9,d0
rts
sub_8730:
jsr sub_91e65
rts
sub_8736:
add -26,a3
movx d2,(10,a3)
movx d3,(14,a3)
mov a1,(18,a3)
mov a2,(22,a3)
mov d1,a2
mov d0,d3
mov 1,d0
movb d0,(2,a3)
mov 176,d0
movb d0,(1,a3)
sub d2,d2
movb d2,(a3)
mov a3,a0
mov 1,d0
jsr sub_8730
movb d2,(2,a3)
movb d2,(a3)
mov a3,a0
mov 1,d0
jsr sub_8730
mov d3,(2,a3)
mov a2,d0
mov d0,(4,a3)
mov 2,d0
movb d0,(1,a3)
mov 8,d0
movb d0,(a3)
mov 4,d0
mov a3,a0
jsr sub_8730
movx (10,a3),d2
movx (14,a3),d3
mov (18,a3),a1
mov (22,a3),a2
add 26,a3
rts