From: Patrycjusz R. Łogiewa (silverdr_at_inet.com.pl)
Date: 2005-04-26 18:16:15
[...]
> BTW: The cbm4win/cbm4linux formatter cbmformat does this job wrong, as
> well as the 9-seconds-formatter. Anyway, I *never* saw any code
> execute TWO "bvc *" before going into read mode (other then the
> ROM
> format routine), thus, this error seems to be very wide spread.
I know It's quite old now but I once dug up the sources of the quite
reliable fast copy program I reversed some ages ago because Ruud was
asking if I could find them - now I checked them and they contain the
following routine... I include it because you once asked and maybe you
can see something interesting there ;-) It has the same double BVCs in
question but of course I can't really explain why is this needed. Since
I am now also up to similar matters (I am trying to adapt some software
to work with DD3), I can only add my voice to the chorus "can someone
explain that?"
Formatting routine follows:
format_track_703:
LDA #$00
STA $C1 ; current sector
STA $1800
LDA $43 ; number of sectors per track
STA $C3 ; sectors left
LDA #$CE
STA $1C0C
LDA #$FF
STA $1C03
LDA #$55
STA $1C01
LDX #$01
JSR $FE24 ; Write $55 10240 times - clearout the track
L722:
LDA #$FF ; SYNC mark
STA $1C01
LDX #$05 ; number of SYNC-bytes
L729:
BVC L729 ; wait for BYTE-READY
CLV
DEX
BNE L729 ; all SYNC-bytes on disk?
LDX #$08 ; number of bytes from buffer
LDY $C1 ; pointer to buffer position
L733:
BVC L733 ; write circuit ready?
CLV ; yes, restore the flag
LDA $0200,Y
STA $1C01
INY
DEX
BNE L733 ; all (header?) bytes written?
STY $C1 ; buffer position merken
LDX #$0B
L744:
BVC L744
CLV
LDA #$55 ; $0b fill-bytes ($55)
STA $1C01 ; write
DEX
BNE L744
LDA #$FF ; SYNC mark?
LDX #$05 ; five times?
L753:
BVC L753
CLV
STA $1C01
DEX
BNE L753 ; all sync marks?
TXA ; LDA #$00
LDY #$A2 ; 162 times?
L75F:
BVC L75F
CLV
EOR $1801 ; get the byte from parallel port
STA $1C01 ; write to disk
DEC $1800 ; acknowledge (DATA HI?)?
LDA $1801
L76E:
BVC L76E
CLV
EOR $1801 ; zero out??
STA $1C01
INC $1800 ; acknowledge (DATA LO?)?
LDA $1801
DEY
BNE L75F
LDA #$55
LDX $45
L784:
BVC L784
CLV
STA $1C01
DEX
BNE L784
LDA $1C00 ;
EOR #$08 ; LED bit toggle
STA $1C00 ; and set
DEC $C3
BEQ L79C ; all sectors?
JMP L722 ; no, write next
L79C:
DEC $1800
L79F:
BVC L79F
CLV
L7A2:
BVC L7A2
CLV
JSR $FE00 ; Switch to reading
JMP main_loop_319
--
Marriage is the sole cause of divorce.
Message was sent through the cbm-hackers mailing list
Archive generated by hypermail pre-2.1.8.