$D1E2/53730: Find read channel and buffer
Jump from $CB9A, $CBDF, $DC48, $ECA4:
D1E2: 18 CLC ; flag for reading
Jump from $D1E0:
D1E3: 08 PHP ; save
D1E4: 85 6F STA $6F ; buffer number
D1E6: 20 27 D2 JSR $D227 ; close channel
D1E9: 20 7F D3 JSR $D37F ; allocate free channel
D1EC: 85 82 STA $82 ; channel number
D1EE: A6 83 LDX $83 ; secondary address
D1F0: 28 PLP
D1F1: 90 02 BCC $D1F5 ; read channel?
D1F3: 09 80 ORA #$80 ; flag for writing
Jump from $D1F1:
D1F5: 9D 2B 02 STA $022B,X ; set
D1F8: 29 3F AND #$3F
D1FA: A8 TAY
D1FB: A9 FF LDA #$FF ; default value
D1FD: 99 A7 00 STA $A7,Y
D200: 99 AE 00 STA $AE,Y ; write in associated table
D203: 99 CD 00 STA $CD,Y
D206: C6 6F DEC $6F ; decrement buffer number
D208: 30 1C BMI $D226 ; done already?
D20A: 20 8E D2 JSR $D28E ; find buffer
D20D: 10 08 BPL $D217 ; found?
Jump from $D221, $DC7E, $DD13:
D20F: 20 5A D2 JSR $D25A ; erase flags in table
D212: A9 70 LDA #$70
D214: 4C C8 C1 JMP $C1C8 ; 70, 'no channel'
Jump from $D20D:
D217: 99 A7 00 STA $A7,Y ; buffer number in table
D21A: C6 6F DEC $6F ; buffer number
D21C: 30 08 BMI $D226 ; already done?
D21E: 20 8E D2 JSR $D28E ; find buffer
D221: 30 EC BMI $D20F ; not found?
D223: 99 AE 00 STA $AE,Y ; buffer number in table
Jump from $D208, $D21C:
D226: 60 RTS
Previous Page / Next Page