$EBFF/60415: Wait loop
Jump from $EC9B, $EBF3:
EBFF: 58 CLI
EC00: A5 7C LDA $7C ; ATN signal discovered?
EC02: F0 03 BEQ $EC07 ; no
EC04: 4C 5B E8 JMP $E85B ; to IEEE routine
Jump from $EC02:
EC07: 58 CLI
EC08: A9 0E LDA #$0E ; 14
EC0A: 85 72 STA $72 ; as secondary address
EC0C: A9 00 LDA #$00
EC0E: 85 6F STA $6F ; job counter
EC10: 85 70 STA $70
Jump from $EC2D:
EC12: A6 72 LDX $72
EC14: BD 2B 02 LDA $022B,X ; secondary address
EC17: C9 FF CMP #$FF ; channel associated?
EC19: F0 10 BEQ $EC2B ; no
EC1B: 29 3F AND #$3F
EC1D: 85 82 STA $82 ; channel number
EC1F: 20 93 DF JSR $DF93 ; get buffer number
EC22: AA TAX
EC23: BD 5B 02 LDA $025B,X ; drive number
EC26: 29 01 AND #$01
EC28: AA TAX
EC29: F6 6F INC $6F,X ; increment job counter
Jump from $EC19:
EC2B: C6 72 DEC $72 ; lo address
EC2D: 10 E3 BPL $EC12 ; continue search
EC2F: A0 04 LDY #$04 ; buffer counter
Jump from $EC3C:
EC31: B9 00 00 LDA $00,Y ; disk controller in action?
EC34: 10 05 BPL $EC3B ; no
EC36: 29 01 AND #$01 ; isolate drive number
EC38: AA TAX
EC39: F6 6F INC $6F,X ; increment job counter
Jump from $EC34:
EC3B: 88 DEY
EC3C: 10 F3 BPL $EC31 ; next buffer
EC3E: 78 SEI
EC3F: AD 00 1C LDA $1C00
EC42: 29 F7 AND #$F7 ; erase LED bit
EC44: 48 PHA
EC45: A5 7F LDA $7F ; drive number
EC47: 85 86 STA $86
EC49: A9 00 LDA #$00
EC4B: 85 7F STA $7F ; drive 0
EC4D: A5 6F LDA $6F ; job for drive 0?
EC4F: F0 0B BEQ $EC5C ; no
EC51: A5 1C LDA $1C ; write protect for drive 0?
EC53: F0 03 BEQ $EC58 ; no
EC55: 20 13 D3 JSR $D313 ; close all channels to drive 0
Jump from $EC53:
EC58: 68 PLA
EC59: 09 08 ORA #$08 ; set LED bit
EC5B: 48 PHA
Jump from $EC4F:
EC5C: E6 7F INC $7F ; increment drive number
EC5E: A5 70 LDA $70 ; job for drive 1?
EC60: F0 0B BEQ $EC6D ; no
EC62: A5 1D LDA $1D ; write protect for drive 1?
EC64: F0 03 BEQ $EC69 ; no
EC66: 20 13 D3 JSR $D313 ; close all channels to drive 1
Jump from $EC64:
EC69: 68 PLA
EC6A: 09 00 ORA #$00
EC6C: 48 PHA
Jump from $EC60:
EC6D: A5 86 LDA $86
EC6F: 85 7F STA $7F ; get drive number back
EC71: 68 PLA ; bit for LED
EC72: AE 6C 02 LDX $026C ; interrupt counter
EC75: F0 21 BEQ $EC98 ; to zero?
EC77: AD 00 1C LDA $1C00
EC7A: E0 80 CPX #$80
EC7C: D0 03 BNE $EC81
EC7E: 4C 8B EC JMP $EC8B
Jump from $EC7C:
EC81: AE 05 18 LDX $1805 ; erase timer interrupt
EC84: 30 12 BMI $EC98
EC86: A2 A0 LDX #$A0
EC88: 8E 05 18 STX $1805 ; set timer
Jump from $EC7E:
EC8B: CE 6C 02 DEC $026C ; decrement counter
EC8E: D0 08 BNE $EC98 ; not yet zero?
EC90: 4D 6D 02 EOR $026D
EC93: A2 10 LDX #$10
EC95: 8E 6C 02 STX $026C ; reset counter
Jump from $EC75, $EC84, $EC8E:
EC98: 8D 00 1C STA $1C00 ; turn LED on/off
EC9B: 4C FF EB JMP $EBFF ; back to wait loop
Previous Page / Next Page