source: thomson/code/3rdparty/sources3-lambinet/Copiers/CC++.ASM@ ceffc47

main
Last change on this file since ceffc47 was ceffc47, checked in by Adrien Destugues <pulkomandy@…>, 10 years ago

Add that collection of 3rdparty source I had lying on my disk for some time...

git-svn-id: svn://localhost/thomson@51 85ae3b6b-dc8f-4344-a89d-598714f2e4e5

  • Property mode set to 100644
File size: 6.3 KB
Line 
1* CC++ PAR MICHEL SAINT-BRIANT
2* Pour copie de disquettes TO
3
4RETOUR EQU $6AF9 (=X% EN BASIC 512)
5ORIGIN EQU $6ABA (=O% EN BASIC 512)
6DESTIN EQU $6A6D (=D% EN BASIC 512)
7PISTE EQU $6AC1 (=P% EN BASIC 512)
8
9 ORG $8000
10
11*VERIFIER DISK-ORIGIN. PROTEGE
12*un EXEC analyse la disquette dans le
13*lecteur ORIGIN (O% sous BASIC512) et
14*retourne dans la variable X% l'état du
15*lecteur:
16* X%=0 -> OK=disquette protégée
17* X%=255 -> disquette non prot.
18* X%=254 -> lecteur vide.
19
20VERPRO PSHS A,B,DP,CC,X,Y,U
21 CLR RETOUR
22 LDA ORIGIN
23 STA >$6049
24 JSR $E09D
25 JSR $E0A7
26 JSR $E452
27 BCS NOPRET
28 LDA 1,X
29 BITA #$04
30 BNE FINVER
31 BRA INCORR
32
33*VERIFIER DISK-DESTIN. NON PROTEGE
34*un EXEC analyse la disquette dans le
35*lecteur DESTIN (D% sous BASIC512) et
36*retourne dans la variable X% l'état du
37*lecteur:
38* X%=0 -> OK=disq. non protégée
39* X%=255 -> disquette protégée.
40* X%=254 -> lecteur vide.
41
42VERNON PSHS A,B,DP,CC,X,Y,U
43 CLR RETOUR
44 LDA DESTIN
45 STA >$6049
46 JSR $E09D
47 JSR $E0A7
48 JSR $E452
49 BCS NOPRET
50 LDA 1,X
51 BITA #$04
52 BEQ FINVER
53INCORR DEC RETOUR
54FINVER LDA #$40
55 STA 2,X
56 CLR ,X
57 PULS A,B,DP,CC,X,Y,U,PC
58
59NOPRET LDA #254
60 STA RETOUR
61 BRA FINVER
62
63* COPIE D'UNE PISTE EN ABSOLUE FIDELITE
64* Lit la piste P% du lecteur O% et
65* stocke le résultat dans la banque
66* courante depuis $A200 et restructure
67* les signaux.
68
69AF PSHS A,B,DP,CC,X,Y,U
70 JSR $E09D
71 LDA #2
72 LDB ORIGIN
73 STD <$48
74 LDA PISTE PISTE=P (P%)
75 STA <$4B
76 JSR $E0A7
77 JSR $E452
78 JSR $E341
79 LDB #$1B
80 JSR $E394
81 LDD #$E718
82 TFR A,DP
83 STB <$D0
84 LDA >$6057
85 ORA #4
86 STA <$D2
87 LDX #$A000
88 LDU #$FFFF
89 LDA #0
90PREPA STU ,X++
91 DECA
92 BNE PREPA
93 LDA #$40
94ATTL0 BITA <$D1
95 BEQ ATTL0
96ATTL1 BITA <$D1
97 BNE ATTL1
98 LDA <$D3
99ATTL3 LDB <$D0
100 BPL ATTL3
101 LDA <$D3
102 ANDB #1
103 STD ,X++
104 LDA <$D1
105 BITA #$40
106 BEQ ATTL3
107 CLR <$D0
108 LDA #$40
109 STA <$D2
110 LDA #$FE
111 STA 1,X
112
113* ON MET A 4E LES PREMIERS OCTETS
114
115 LDY #$A200
116 LDA #$4E
117PREM1 LDB 1,Y
118 BNE POSE
119 STA ,Y++
120 BRA PREM1
121
122* ON POSE DES CODES FE POUR STOPPER
123
124POSE LDB #$FE
125 STB 1,X
126 LEAX 1,X
127STOP LDA ,--X
128 BMI FINLIR
129 BEQ STOP
130 LEAX 1,X
131 STB 7,X
132 STB 9,X
133 STB 11,X
134 STB 13,X
135 STB 15,X
136
137* ON RESTITUE LES CODES A1 (+ LES 00) EN
138* RECTIFIANT LE NOMBRE DE CODES A1 POUR
139* LES SYNCHROS (3 POUR TO8/8D/9+ ET 2
140* SEULEMENT POUR LES ATARI ST ET PC720K)
141
142
143REST0 LEAX 1,X
144REST1 LDA ,--X
145 BMI FINLIR
146 BEQ REST1
147 LEAX 1,X
148 LDA #3 <---- nombre de A1
149 LDU #$A10A
150REST2 STU ,--X
151 DECA
152 BNE REST2
153 LDU #$0000
154 LDA #$0C
155REST3 STU ,--X
156 DECA
157 BNE REST3
158 BRA REST0
159
160FINLIR PULS A,B,CC,DP,X,Y,U,PC
161
162* ON ECRIT LA PISTE RESTRUCTUREE
163* sur piste P% du lecteur D% depuis la
164* banque courante ($A200 ...)
165
166 PSHS A,B,CC,DP,X,Y,U
167 JSR $E09D
168 LDA #$40
169 LDB DESTIN
170 STD <$48
171 LDA PISTE
172 STA <$4B
173 JSR $E004
174 CLR <$48
175 JSR $E0A7
176 JSR $E45A
177 LDB #$18
178 JSR $E394
179 JSR $E341
180 LDA #$E7
181 TFR A,DP
182ATTI0 LDA <$D3
183 LDA <$D0
184 BPL ATTI0
185ATTI1 LDA <$D0
186 BPL ATTI1
187 LDD #0
188 STD <$D3
189 LDD #$4004
190 STB <$D0
191INDEX0 BITA <$D1
192 BEQ INDEX0
193INDEX1 BITA <$D1
194 BNE INDEX1
195 LDX #$A200
196ATTE0 LDA <$D3
197 LDA <$D0
198 BPL ATTE0
199ATTE1 LDA <$D0
200 BPL ATTE1
201 LDD #$4EFF
202 STD <$D3
203 LDB #$04
204 STB <$D0
205ATTE2 LDB <$D0
206 BPL ATTE2
207 LDD ,X++
208 TSTB
209 BMI FINI
210 BNE DEBSIG DEBUT DE SIGNAL
211 STA <$D3
212 BRA ATTE2
213DEBSIG STD <$D3
214ATTE3 LDB <$D0
215 BPL ATTE3
216 LDD ,X++
217 TSTB
218 BMI FINI
219 BEQ FINSIG
220 STA <$D3
221 BRA ATTE3
222FINSIG LDB #$FF
223 STD <$D3
224 BRA ATTE2
225FINI STA <$D3
226ATTE4 LDD <$D0
227 BPL ATTE4
228 LDA ,X++
229 STA <$D3
230 BITB #$40
231 BEQ ATTE4
232 CLR <$D0
233 LDA #$40
234 STA <$D2
235 PULS A,B,DP,CC,X,Y,U,PC
236
237* COPIE D'UNE PISTE EN FIDELITE NORMALE
238* copie du type BACKUP sans formatage.
239* depuis lecteur O% vers lecteur D% pour
240* la piste P% ;en retour on peut lire X%
241* X%=0 Tout est OK
242* X%=255 Lecture impossible
243* X%=254 Ecriture impossible
244
245FN PSHS A,B,DP,CC,X,Y,U
246 CLR RETOUR
247 LDA #$60
248 TFR A,DP
249 LDA ORIGIN
250 STA <$49
251 LDA PISTE
252 STA <$4B
253 LDX #$A000
254 STX <$4F
255C1010 LDA #1
256 STA <$4C
257C1020 LDA #2 <-nbre de tentati-
258 STA FOIS \ves de lecture.
259C1030 LDA #2
260 STA <$48
261 JSR $E004
262 BCC C1040
263 DEC FOIS
264 BNE C1030
265 COM RETOUR
266 BRA FINFN
267C1040 INC <$4F
268 LDA <$4C
269 ADDA #5 <-un facteur de 5
270 CMPA #16 \pour un entre-
271 BLS C1050 lacement de 7.
272 SUBA #16
273C1050 STA <$4C
274 CMPA #1
275 BNE C1020
276 LDA DESTIN
277 STA <$49
278 LDX #$A000
279 STX <$4F
280C2010 LDA #1
281 STA <$4C
282C2020 LDA #2 <-nbre de tentati-
283 STA FOIS \ves d'écriture
284C2030 LDA #8
285 STA <$48
286 JSR $E004
287 BCC C2040
288 DEC FOIS
289 BNE C2030
290 LDA #254
291 STA RETOUR
292 BRA FINFN
293C2040 INC <$4F
294 LDA <$4C
295 ADDA #5 <-facteur de 5
296 CMPA #16
297 BLS C2050
298 SUBA #16
299C2050 STA <$4C
300 CMPA #1
301 BNE C2020
302FINFN PULS A,B,DP,CC,X,Y,U,PC
303
304FOIS FCB 0
305
306 END
Note: See TracBrowser for help on using the repository browser.