blob: 561993e6fdce8404b0c3b6129c1b20d9ec05dba8 [file] [log] [blame]
* CC++ PAR MICHEL SAINT-BRIANT
* Pour copie de disquettes TO
RETOUR EQU $6AF9 (=X% EN BASIC 512)
ORIGIN EQU $6ABA (=O% EN BASIC 512)
DESTIN EQU $6A6D (=D% EN BASIC 512)
PISTE EQU $6AC1 (=P% EN BASIC 512)
ORG $8000
*VERIFIER DISK-ORIGIN. PROTEGE
*un EXEC analyse la disquette dans le
*lecteur ORIGIN (O% sous BASIC512) et
*retourne dans la variable X% l'état du
*lecteur:
* X%=0 -> OK=disquette protégée
* X%=255 -> disquette non prot.
* X%=254 -> lecteur vide.
VERPRO PSHS A,B,DP,CC,X,Y,U
CLR RETOUR
LDA ORIGIN
STA >$6049
JSR $E09D
JSR $E0A7
JSR $E452
BCS NOPRET
LDA 1,X
BITA #$04
BNE FINVER
BRA INCORR
*VERIFIER DISK-DESTIN. NON PROTEGE
*un EXEC analyse la disquette dans le
*lecteur DESTIN (D% sous BASIC512) et
*retourne dans la variable X% l'état du
*lecteur:
* X%=0 -> OK=disq. non protégée
* X%=255 -> disquette protégée.
* X%=254 -> lecteur vide.
VERNON PSHS A,B,DP,CC,X,Y,U
CLR RETOUR
LDA DESTIN
STA >$6049
JSR $E09D
JSR $E0A7
JSR $E452
BCS NOPRET
LDA 1,X
BITA #$04
BEQ FINVER
INCORR DEC RETOUR
FINVER LDA #$40
STA 2,X
CLR ,X
PULS A,B,DP,CC,X,Y,U,PC
NOPRET LDA #254
STA RETOUR
BRA FINVER
* COPIE D'UNE PISTE EN ABSOLUE FIDELITE
* Lit la piste P% du lecteur O% et
* stocke le résultat dans la banque
* courante depuis $A200 et restructure
* les signaux.
AF PSHS A,B,DP,CC,X,Y,U
JSR $E09D
LDA #2
LDB ORIGIN
STD <$48
LDA PISTE PISTE=P (P%)
STA <$4B
JSR $E0A7
JSR $E452
JSR $E341
LDB #$1B
JSR $E394
LDD #$E718
TFR A,DP
STB <$D0
LDA >$6057
ORA #4
STA <$D2
LDX #$A000
LDU #$FFFF
LDA #0
PREPA STU ,X++
DECA
BNE PREPA
LDA #$40
ATTL0 BITA <$D1
BEQ ATTL0
ATTL1 BITA <$D1
BNE ATTL1
LDA <$D3
ATTL3 LDB <$D0
BPL ATTL3
LDA <$D3
ANDB #1
STD ,X++
LDA <$D1
BITA #$40
BEQ ATTL3
CLR <$D0
LDA #$40
STA <$D2
LDA #$FE
STA 1,X
* ON MET A 4E LES PREMIERS OCTETS
LDY #$A200
LDA #$4E
PREM1 LDB 1,Y
BNE POSE
STA ,Y++
BRA PREM1
* ON POSE DES CODES FE POUR STOPPER
POSE LDB #$FE
STB 1,X
LEAX 1,X
STOP LDA ,--X
BMI FINLIR
BEQ STOP
LEAX 1,X
STB 7,X
STB 9,X
STB 11,X
STB 13,X
STB 15,X
* ON RESTITUE LES CODES A1 (+ LES 00) EN
* RECTIFIANT LE NOMBRE DE CODES A1 POUR
* LES SYNCHROS (3 POUR TO8/8D/9+ ET 2
* SEULEMENT POUR LES ATARI ST ET PC720K)
REST0 LEAX 1,X
REST1 LDA ,--X
BMI FINLIR
BEQ REST1
LEAX 1,X
LDA #3 <---- nombre de A1
LDU #$A10A
REST2 STU ,--X
DECA
BNE REST2
LDU #$0000
LDA #$0C
REST3 STU ,--X
DECA
BNE REST3
BRA REST0
FINLIR PULS A,B,CC,DP,X,Y,U,PC
* ON ECRIT LA PISTE RESTRUCTUREE
* sur piste P% du lecteur D% depuis la
* banque courante ($A200 ...)
PSHS A,B,CC,DP,X,Y,U
JSR $E09D
LDA #$40
LDB DESTIN
STD <$48
LDA PISTE
STA <$4B
JSR $E004
CLR <$48
JSR $E0A7
JSR $E45A
LDB #$18
JSR $E394
JSR $E341
LDA #$E7
TFR A,DP
ATTI0 LDA <$D3
LDA <$D0
BPL ATTI0
ATTI1 LDA <$D0
BPL ATTI1
LDD #0
STD <$D3
LDD #$4004
STB <$D0
INDEX0 BITA <$D1
BEQ INDEX0
INDEX1 BITA <$D1
BNE INDEX1
LDX #$A200
ATTE0 LDA <$D3
LDA <$D0
BPL ATTE0
ATTE1 LDA <$D0
BPL ATTE1
LDD #$4EFF
STD <$D3
LDB #$04
STB <$D0
ATTE2 LDB <$D0
BPL ATTE2
LDD ,X++
TSTB
BMI FINI
BNE DEBSIG DEBUT DE SIGNAL
STA <$D3
BRA ATTE2
DEBSIG STD <$D3
ATTE3 LDB <$D0
BPL ATTE3
LDD ,X++
TSTB
BMI FINI
BEQ FINSIG
STA <$D3
BRA ATTE3
FINSIG LDB #$FF
STD <$D3
BRA ATTE2
FINI STA <$D3
ATTE4 LDD <$D0
BPL ATTE4
LDA ,X++
STA <$D3
BITB #$40
BEQ ATTE4
CLR <$D0
LDA #$40
STA <$D2
PULS A,B,DP,CC,X,Y,U,PC
* COPIE D'UNE PISTE EN FIDELITE NORMALE
* copie du type BACKUP sans formatage.
* depuis lecteur O% vers lecteur D% pour
* la piste P% ;en retour on peut lire X%
* X%=0 Tout est OK
* X%=255 Lecture impossible
* X%=254 Ecriture impossible
FN PSHS A,B,DP,CC,X,Y,U
CLR RETOUR
LDA #$60
TFR A,DP
LDA ORIGIN
STA <$49
LDA PISTE
STA <$4B
LDX #$A000
STX <$4F
C1010 LDA #1
STA <$4C
C1020 LDA #2 <-nbre de tentati-
STA FOIS \ves de lecture.
C1030 LDA #2
STA <$48
JSR $E004
BCC C1040
DEC FOIS
BNE C1030
COM RETOUR
BRA FINFN
C1040 INC <$4F
LDA <$4C
ADDA #5 <-un facteur de 5
CMPA #16 \pour un entre-
BLS C1050 lacement de 7.
SUBA #16
C1050 STA <$4C
CMPA #1
BNE C1020
LDA DESTIN
STA <$49
LDX #$A000
STX <$4F
C2010 LDA #1
STA <$4C
C2020 LDA #2 <-nbre de tentati-
STA FOIS \ves d'écriture
C2030 LDA #8
STA <$48
JSR $E004
BCC C2040
DEC FOIS
BNE C2030
LDA #254
STA RETOUR
BRA FINFN
C2040 INC <$4F
LDA <$4C
ADDA #5 <-facteur de 5
CMPA #16
BLS C2050
SUBA #16
C2050 STA <$4C
CMPA #1
BNE C2020
FINFN PULS A,B,DP,CC,X,Y,U,PC
FOIS FCB 0
END