CLRTRK
.Page
;++
; Sync20 will clear a track partially bny writing 20 usec 'FF's to
; the disk. Sync20 will use theh values in the "y" reg as the number
; of sets of sync nibbles to write to the disk.
;
; INPUT
; Y = number to write
; A = Addr/Data Mark flag -->0 0 == Data & 1 == Addr
;
; OUTPUT
; X = Destroyed
; Y = 'FF'
; A = Unknown
; "Counter" = 'FF'
;--
BsTbl .Equ * ; 5 20 usec bytes coded in the following 6 bytes
.Byte 0FF, 0FC, 0F3, 0CF, 03F, 0FF
Sync20 .Equ * ; Entry point
Sty Counter
Sta Temp1
Lda #0FF ;
Sta Q7H ; Change from SENSE to WRITE LOAD
$05 Ldy #05 ; 2 Transfer 6 bytes, zero based
$07 Lda BsTbl,y ; 4
$10 Ldx Q6L ; 4 Sense line encoded in Bit &
Bpl $10 ; 2,3 Wait for Bit 7 to become a '1'
Sta Q6H ; 4
Dey ; 2
Bpl $07 ; 2,3
Dec Counter ; 5
Bne $05 ; 2,3
$20 Ldx Q6L ; 4
Bpl $20 ; 2,3
Sta Q6H ; 4
Lda Temp1 ; 3
Bne $50 ; 2,3 if !=0 then use address mark values
Lda DatMk1 ; 3 12 First data field mark
Jsr WrNib1 ; 6 14/6
Lda DatMk2 ; 3 9 second data field mark
Jmp WrNib1 ; 3 12 Rts to caller from WrNib1
$50 Lda AdrMk1 ; 3 12 first address field mark
Jsr WrNib1 ; 6 14/6
Lda AdrMk2 ; 3 9 second address field mark
Jmp WrNib1 ; 3 12 Rts to caller from WrNib1