$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