$C823/51235:   Perform [S] - Scratch command

C823: 20 98 C3  JSR $C398       ; ascertain file type
C826: 20 20 C3  JSR $C320       ; get drive number
C829: 20 CA C3  JSR $C3CA       ; initialize drive if needed
C82C: A9 00     LDA #$00
C82E: 85 86     STA $86         ; counter for erased files
C830: 20 9D C4  JSR $C49D       ; search for file in directory
C833: 30 3D     BMI $C872       ; not found?

Jump from $C870:

C835: 20 B7 DD  JSR $DDB7       ; is file open
C838: 90 33     BCC $C86D       ; yes
C83A: A0 00     LDY #$00
C83C: B1 94     LDA ($94),Y     ; file type
C83E: 29 40     AND #$40        ; scratch protect
C840: D0 2B     BNE $C86D       ; yes
C842: 20 B6 C8  JSR $C8B6       ; erase file and note in directory
C845: A0 13     LDY #$13
C847: B1 94     LDA ($94),Y     ; track number of the first side-sector
C849: F0 0A     BEQ $C855       ; none present?
C84B: 85 80     STA $80         ; note track number
C84D: C8        INY
C84E: B1 94     LDA ($94),Y     ; and sector number
C850: 85 81     STA $81
C852: 20 7D C8  JSR $C87D       ; erase side-sector

Jump from $C849:

C855: AE 53 02  LDX $0253       ; file number
C858: A9 20     LDA #$20
C85A: 35 E7     AND $E7,X       ; bit 5 set?
C85C: D0 0D     BNE $C86B       ; yes, file not closed
C85E: BD 80 02  LDA $0280,X     ; get track
C861: 85 80     STA $80
C863: BD 85 02  LDA $0285,X     ; and sector
C866: 85 81     STA $81
C868: 20 7D C8  JSR $C87D       ; erase file

Jump from $C85C:

C86B: E6 86     INC $86         ; increment number of erased files

Jump from $C838, $C840:

C86D: 20 8B C4  JSR $C48B       ; search for next file
C870: 10 C3     BPL $C835       ; if present, erase

Jump from $C833:

C872: A5 86     LDA $86         ; number of erased files
C874: 85 80     STA $80         ; save as 'track'
C876: A9 01     LDA #$01        ; 1 as disk status
C878: A0 00     LDY #$00        ; 0 as 'sector'
C87A: 4C A3 C1  JMP $C1A3       ; message 'files scratched'

    Previous Page / Next Page