1 | ** Traitement des fichiers et du DISK **
|
---|
2 |
|
---|
3 | FCC "Hunks Exec "
|
---|
4 | HUNKS JSR FILPOS
|
---|
5 | LDA #11 Bad File Mode
|
---|
6 | LDB 11,X Type du fichier:
|
---|
7 | CMPB #2 langage machine
|
---|
8 | LBNE ERROR
|
---|
9 | LDB 12,X Sémaphore:binaire
|
---|
10 | LBNE ERROR
|
---|
11 | LDD 14,X nb octets dans le
|
---|
12 | STD <BYLASE dernier secteur
|
---|
13 | LDB 13,X 1er bloc ds la FAT
|
---|
14 | STB <FATPTR
|
---|
15 | LDX #FAT+1 ce pointeur est-il
|
---|
16 | LDB B,X cohérent
|
---|
17 | CMPB #$A0
|
---|
18 | BLO H1FTOK
|
---|
19 | LDA #9 Bad File Structure
|
---|
20 | SUBB #$C1
|
---|
21 | CMPB #7
|
---|
22 | LBHI ERROR
|
---|
23 | H1FTOK CLR <LASTBK dernier bloc? FAUX
|
---|
24 | CLR <LASTSC "" secteur? FAUX
|
---|
25 | LDX #IOZONE
|
---|
26 | STX <DKBUF
|
---|
27 | JSR LPOSFT 1er bloc fichier
|
---|
28 | JSR HNXSEC
|
---|
29 | LDA #40 affiche "Hunks "
|
---|
30 | LDU #HUNKS-14
|
---|
31 | LDB ,U+
|
---|
32 | JSR PUTC
|
---|
33 | DECA
|
---|
34 | CMPA #33
|
---|
35 | BNE *-8
|
---|
36 | JSR PUTC
|
---|
37 | DECA
|
---|
38 | BNE *-4
|
---|
39 | LDU <CURSOR
|
---|
40 | LEAU -313,U
|
---|
41 | STU <CURSOR
|
---|
42 | LDD #$718
|
---|
43 | STA <XPOS
|
---|
44 | STB <CMPT+1
|
---|
45 |
|
---|
46 | HDGON LDU #IODESC
|
---|
47 | LDY #5
|
---|
48 | JSR LVIDBF
|
---|
49 | LDY IODESC+1 nombre d'octets
|
---|
50 | LDU IODESC+3 adresse début
|
---|
51 | LDA IODESC
|
---|
52 | BNE EOHNK code <>0 = EOfile
|
---|
53 | TFR U,D
|
---|
54 | JSR DA2HEX
|
---|
55 | TFR B,A
|
---|
56 | JSR DA2HEX
|
---|
57 | LDB #'-
|
---|
58 | JSR PUTC
|
---|
59 | LDB #'>
|
---|
60 | JSR PUTC
|
---|
61 | TFR Y,D
|
---|
62 | SUBD #1
|
---|
63 | LEAU D,U
|
---|
64 | TFR U,D
|
---|
65 | JSR DA2HEX
|
---|
66 | TFR B,A
|
---|
67 | JSR DA2HEX
|
---|
68 | LDA <XPOS
|
---|
69 | CMPA #20
|
---|
70 | BLO AFHNK2
|
---|
71 | DEC <CMPT+1
|
---|
72 | BNE HFPAUS
|
---|
73 | JSR GETC
|
---|
74 | BCC *-3
|
---|
75 | CMPB #2
|
---|
76 | BEQ HVIDBF-1
|
---|
77 | LDA #24
|
---|
78 | STA <CMPT+1
|
---|
79 | HFPAUS LDD #$3320
|
---|
80 | JSR PUTC
|
---|
81 | DECA
|
---|
82 | BNE *-4
|
---|
83 | LDU <CURSOR
|
---|
84 | LEAU -313,U
|
---|
85 | STU <CURSOR
|
---|
86 | LDA #7
|
---|
87 | STA <XPOS
|
---|
88 | BRA EOHNK-8
|
---|
89 | AFHNK2 LDB #32
|
---|
90 | JSR PUTC
|
---|
91 | JSR PUTC
|
---|
92 | LDU IODESC+3
|
---|
93 | BSR HVIDBF
|
---|
94 | JMP HDGON
|
---|
95 | EOHNK LDA #9 Bad File Structure
|
---|
96 | LEAX -IOZONE,X nombre d'octets
|
---|
97 | CMPX <BYLASE dans le dernier
|
---|
98 | LBNE ERROR secteur
|
---|
99 | LDA <XPOS
|
---|
100 | CMPA #10
|
---|
101 | BHI EOHNK2
|
---|
102 | LDU <CURSOR
|
---|
103 | LEAU -7,U
|
---|
104 | STU <CURSOR
|
---|
105 | CLR <XPOS
|
---|
106 | BRA EOHNK3
|
---|
107 | EOHNK2 LDB #32
|
---|
108 | JSR PUTC
|
---|
109 | LDA <XPOS
|
---|
110 | BNE *-5
|
---|
111 | EOHNK3 LDA #7
|
---|
112 | LDU #HUNKS-7
|
---|
113 | LDB ,U+
|
---|
114 | JSR PUTC
|
---|
115 | DECA
|
---|
116 | BNE *-6
|
---|
117 | LDD IODESC+3
|
---|
118 | JSR DA2HEX d'exécution
|
---|
119 | TFR B,A
|
---|
120 | JSR DA2HEX
|
---|
121 | LDB #32
|
---|
122 | JSR PUTC
|
---|
123 | LDA <XPOS
|
---|
124 | BNE *-5
|
---|
125 | RTS
|
---|
126 |
|
---|
127 | HVIDBF LEAX 1,X vide le buffer I/O
|
---|
128 | CMPX #IOZONE+255 fin buffer ?
|
---|
129 | BNE *+8
|
---|
130 | LDB <LASTSC fin dernier sector
|
---|
131 | BNE HNXSEC-1 -> fin fichier
|
---|
132 | BSR HNXSEC
|
---|
133 | LEAY -1,Y fin transfert ?
|
---|
134 | BNE HVIDBF
|
---|
135 | RTS
|
---|
136 |
|
---|
137 | HNXSEC JSR DISK
|
---|
138 | INC <DKSEC secteur suivant
|
---|
139 | DEC <CMPT fin du bloc ?
|
---|
140 | LBNE LNXSCF
|
---|
141 | LDB <LASTBK dernier bloc lu
|
---|
142 | LBEQ LPOSFT ->pas de suivant!
|
---|
143 | STB <LASTSC
|
---|
144 | JMP LNXSCF dernier secteur
|
---|
145 |
|
---|
146 | LOADM JSR FILPOS
|
---|
147 | LDA <FILETY
|
---|
148 | BNE IGFITY
|
---|
149 | LDB 11,X Type du fichier:
|
---|
150 | CMPB #2 langage machine
|
---|
151 | BNE *+6
|
---|
152 | LDB 12,X Sémaphore:binaire
|
---|
153 | BEQ *+7
|
---|
154 | LDA #11 Bad File Mode
|
---|
155 | JMP ERROR
|
---|
156 | IGFITY LDU 14,X nb octets dans le
|
---|
157 | STU <BYLASE dernier secteur
|
---|
158 | LDB 13,X 1er bloc ds la FAT
|
---|
159 | STB <FATPTR
|
---|
160 | LDX #FAT+1 ce pointeur est-il
|
---|
161 | LDB B,X cohérent
|
---|
162 | CMPB #$A0
|
---|
163 | BLO L1FTOK
|
---|
164 | SUBB #$C1
|
---|
165 | CMPB #8
|
---|
166 | BLO *+7
|
---|
167 | LDA #9 Bad File Structure
|
---|
168 | JMP ERROR
|
---|
169 | L1FTOK CLR <LASTSC "" secteur? FAUX
|
---|
170 | CLR <LASTBK dernier bloc? FAUX
|
---|
171 | LDX #IOZONE
|
---|
172 | STX <DKBUF
|
---|
173 | BSR LPOSFT 1er bloc fichier
|
---|
174 | LDA <FILETY
|
---|
175 | BEQ RILODM
|
---|
176 | LDU <LSHIFT début du buffer
|
---|
177 | LDY <FILSIZ taille+1 du buffer
|
---|
178 | BSR LNXSEC
|
---|
179 | LEAY -1,Y
|
---|
180 | BRA LVIDBF
|
---|
181 | RILODM BSR LNXSEC
|
---|
182 |
|
---|
183 | LDGON LDU #IODESC
|
---|
184 | LDY #5
|
---|
185 | BSR LVIDBF
|
---|
186 | LDY IODESC+1 nombre d'octets
|
---|
187 | LDU IODESC+3 adresse début
|
---|
188 | LDD <LSHIFT
|
---|
189 | LEAU D,U +décalage
|
---|
190 | LDA IODESC
|
---|
191 | BNE EOLOD code <>0 = EOfile
|
---|
192 | BSR LVIDBF
|
---|
193 | BRA LDGON
|
---|
194 | EOLOD LDA #9 Bad File Structure
|
---|
195 | LEAX -IOZONE,X nombre d'octets
|
---|
196 | CMPX <BYLASE dans le dernier
|
---|
197 | LBNE ERROR secteur
|
---|
198 | LDD IODESC+3
|
---|
199 | LDU #OPGJSR-4 adresse
|
---|
200 | JSR ATOHEX d'exécution
|
---|
201 | TFR B,A
|
---|
202 | JMP ATOHEX
|
---|
203 |
|
---|
204 | LVIDBF LDB ,X+ vide le buffer I/O
|
---|
205 | STB ,U+ vers la mémoire
|
---|
206 | CMPX #IOZONE+255 fin buffer ?
|
---|
207 | BNE *+8
|
---|
208 | LDB <LASTSC fin dernier sector
|
---|
209 | BNE LNXSEC-1 -> fin fichier
|
---|
210 | BSR LNXSEC
|
---|
211 | LEAY -1,Y fin transfert ?
|
---|
212 | BNE LVIDBF
|
---|
213 | RTS
|
---|
214 |
|
---|
215 | LNXSEC JSR DISK
|
---|
216 | INC <DKSEC secteur suivant
|
---|
217 | DEC <CMPT fin du bloc ?
|
---|
218 | BNE LNXSCF
|
---|
219 | LDB <LASTBK dernier bloc lu ?
|
---|
220 | BEQ LPOSFT NON:prépare suivnt
|
---|
221 | STB <LASTSC OUI:c'est donc le
|
---|
222 | LDB <FILETY dernier secteur
|
---|
223 | BEQ LNXSCF que l'on vient de
|
---|
224 | CMPY <BYLASE
|
---|
225 | BLS LNXSCF
|
---|
226 | LDY <BYLASE charger ...
|
---|
227 | LEAY 1,Y
|
---|
228 | BRA LNXSCF (->taille si !BIN)
|
---|
229 |
|
---|
230 | LPOSFT LDX #FAT+1
|
---|
231 | LDB <FATPTR
|
---|
232 | ABX
|
---|
233 | LDA <FATPTR
|
---|
234 | LDB #1 Piste/Secteur
|
---|
235 | LSRA d'après No du bloc
|
---|
236 | BCC *+4
|
---|
237 | ADDB #8
|
---|
238 | STD <DKTRK
|
---|
239 | LDB ,X "libère" le bloc
|
---|
240 | LDA #-1 que l'on va lire
|
---|
241 | STA ,X
|
---|
242 | CMPB #$A0 à quoi ressemble
|
---|
243 | BHS *+8 le bloc que l'on
|
---|
244 | TFR B,A va lire ?
|
---|
245 | LDB #8 (nombre secteurs,
|
---|
246 | BRA LRBFTF fin de chaîne...?)
|
---|
247 | SUBB #$C1
|
---|
248 | CMPB #7
|
---|
249 | BHI LDBKER
|
---|
250 | INCB on va lire le
|
---|
251 | STA <LASTBK dernier bloc.
|
---|
252 | LRBFTF STB <CMPT nombre de secteurs
|
---|
253 | STA <FATPTR
|
---|
254 | LNXSCF LDX #IOZONE
|
---|
255 | RTS
|
---|
256 | LDBKER LDA #9 Bad File Structure
|
---|
257 | JMP ERROR
|
---|
258 |
|
---|
259 | KILLM JSR FILPOS trouve le fichier
|
---|
260 | JSR KILFAT modifie FAT et DIR
|
---|
261 | LDB #2
|
---|
262 | STB <DKOPC commande WRITE
|
---|
263 | JSR DISK ré-écriture du DIR
|
---|
264 | LDX #FAT
|
---|
265 | STX <DKBUF
|
---|
266 | STB <DKSEC
|
---|
267 | JMP DISK écriture de la FAT
|
---|
268 |
|
---|
269 | FILPOS CLR <DKOPC opération READ
|
---|
270 | LDD #$1402
|
---|
271 | STD <DKTRK
|
---|
272 | LDX #FAT
|
---|
273 | STX <DKBUF
|
---|
274 | JSR DISK charge la FAT
|
---|
275 | LDX #CATALG
|
---|
276 | STX <DKBUF
|
---|
277 | LDA #3
|
---|
278 | READIR STA <DKSEC
|
---|
279 | JSR DISK charge directory
|
---|
280 | LDX #CATALG
|
---|
281 | DIRCMP PSHS X,A
|
---|
282 | LDU #FILNAM
|
---|
283 | LDA #11
|
---|
284 | LDB ,X+
|
---|
285 | CMPB ,U+
|
---|
286 | BNE *+5
|
---|
287 | DECA
|
---|
288 | BNE *-7
|
---|
289 | PULS A,X
|
---|
290 | BEQ EOSDIR oui:stop recherche
|
---|
291 | LDB ,X
|
---|
292 | SRDIR1 CMPB #$FF fin du catalogue
|
---|
293 | BEQ FLNTFD
|
---|
294 | LEAX 32,X
|
---|
295 | CMPX #CATALG+256
|
---|
296 | BLO DIRCMP
|
---|
297 | INCA
|
---|
298 | CMPA #17
|
---|
299 | BLO READIR
|
---|
300 | FLNTFD LDA #10 File Not Found
|
---|
301 | JMP ERROR
|
---|
302 | EOSDIR RTS
|
---|
303 |
|
---|
304 |
|
---|
305 | SAVEM LDA <FILETY
|
---|
306 | LDY #1
|
---|
307 | LDX <FILSIZ
|
---|
308 | CMPA #2
|
---|
309 | BNE QTBLCK
|
---|
310 | LEAX 10,X nombre de blocs
|
---|
311 | QTBLCK CMPX #255 requis au total =
|
---|
312 | BLO SVRDFT (5+taille+5)/255
|
---|
313 | LEAY 1,Y
|
---|
314 | LEAX -255,X
|
---|
315 | BRA QTBLCK
|
---|
316 | SVRDFT LDX #$1402
|
---|
317 | STX <DKTRK
|
---|
318 | LDX #FAT
|
---|
319 | STX <DKBUF
|
---|
320 | CLR <DKOPC
|
---|
321 | JSR DISK charge la FAT
|
---|
322 | LDB ,X+
|
---|
323 | BNE ANAFAT-5
|
---|
324 | LDD 40,X
|
---|
325 | CMPD #$FEFE
|
---|
326 | BEQ *+7
|
---|
327 | LDA #6 bad FAT structure
|
---|
328 | JMP ERROR
|
---|
329 | ANAFAT LDB ,X+
|
---|
330 | CMPB #$FF
|
---|
331 | BNE *+6
|
---|
332 | LEAY -1,Y nombre de blocs --
|
---|
333 | BEQ PLAFOK
|
---|
334 | CMPB #$FE
|
---|
335 | BHS EANFAT
|
---|
336 | CMPB #$A0
|
---|
337 | BLO EANFAT
|
---|
338 | SUBB #$C1
|
---|
339 | CMPB #8
|
---|
340 | BLO EANFAT
|
---|
341 | LDA #6 bad FAT structure
|
---|
342 | JMP ERROR [0-9F][C1-C8]FE,FF
|
---|
343 | EANFAT CMPX #FAT+161
|
---|
344 | BLO ANAFAT
|
---|
345 | LDA #7 disk full
|
---|
346 | JMP ERROR
|
---|
347 | PLAFOK LDX #CATALG
|
---|
348 | STX <DKBUF
|
---|
349 | CLR <DIRSEC
|
---|
350 | LDA #3
|
---|
351 | RDIRNX STA <DKSEC
|
---|
352 | LDX <DKBUF
|
---|
353 | LEAU 256,X
|
---|
354 | STU SRPLDF+4
|
---|
355 | JSR DISK charge directory
|
---|
356 | SRPLDR PSHS X,A le fichier
|
---|
357 | LDU #FILNAM à sauver existe
|
---|
358 | LDA #11 déjà ?
|
---|
359 | LDB ,X+
|
---|
360 | CMPB ,U+
|
---|
361 | BNE *+5
|
---|
362 | DECA
|
---|
363 | BNE *-7
|
---|
364 | PULS A,X
|
---|
365 | BNE *+7 non:analyse suiv..
|
---|
366 | JSR KILFAT oui: le détruit et
|
---|
367 | BRA PLADF1 arrête l'analyse
|
---|
368 | LDB ,X
|
---|
369 | BNE SRPLD1
|
---|
370 | LDB <DIRSEC entrée libre:1ère?
|
---|
371 | BNE SRPLDF
|
---|
372 | STA <DIRSEC
|
---|
373 | STX <DIRPTR
|
---|
374 | LDU #IOZONE
|
---|
375 | STU <DKBUF
|
---|
376 | BRA SRPLDF
|
---|
377 | SRPLD1 CMPB #$FF fin du catalogue
|
---|
378 | BEQ PLADFD
|
---|
379 | SRPLDF LEAX 32,X
|
---|
380 | CMPX #CATALG+256 !! est modifié
|
---|
381 | BLO SRPLDR
|
---|
382 | INCA
|
---|
383 | CMPA #17
|
---|
384 | BLO RDIRNX
|
---|
385 | LDB <DIRSEC
|
---|
386 | BNE PLADF1
|
---|
387 | LDA #8 directory full
|
---|
388 | JMP ERROR
|
---|
389 | PLADFD LDB <DIRSEC
|
---|
390 | BEQ PLADF1
|
---|
391 | LDA <DIRSEC
|
---|
392 | LDX <DIRPTR
|
---|
393 | PLADF1 STA <DIRSEC
|
---|
394 | CMPX #IOZONE
|
---|
395 | BLO PLADF2
|
---|
396 | LEAX -256,X
|
---|
397 | CLRA
|
---|
398 | LDU #CATALG
|
---|
399 | LDY #IOZONE
|
---|
400 | LDB ,Y+
|
---|
401 | STB ,U+
|
---|
402 | DECA
|
---|
403 | BNE *-5
|
---|
404 | PLADF2 STX <DIRPTR
|
---|
405 |
|
---|
406 | LDD #1
|
---|
407 | STD <DKTRK
|
---|
408 | LDA #2 opération WRITE
|
---|
409 | STA <DKOPC
|
---|
410 | LDD <EXEADR
|
---|
411 | STD IODESC+3
|
---|
412 | LDD #$FF00
|
---|
413 | STD IODESC
|
---|
414 | STB IODESC+2
|
---|
415 | LDA #1 1er secteur
|
---|
416 | STA <FATPTR se positionne sur
|
---|
417 | JSR SPOSFT le 1er bloc libre
|
---|
418 | LDB <FATPTR
|
---|
419 | SUBB #2 Numéro du 1er bloc
|
---|
420 | STB 13,X logique du fichier
|
---|
421 | LDX #IOZONE
|
---|
422 | STX <DKBUF
|
---|
423 |
|
---|
424 | LDY <FILSIZ
|
---|
425 | LDU <BEGADR
|
---|
426 | LDB <FILETY
|
---|
427 | CMPB #2
|
---|
428 | BNE NOSHNK
|
---|
429 | CLR ,X+
|
---|
430 | STY ,X++ longueur à écrire
|
---|
431 | STU ,X++
|
---|
432 | LDB <IMABNK si c'est une image
|
---|
433 | BMI *+6 MAP, le début est
|
---|
434 | CLR -1,X en fait $000 dans
|
---|
435 | CLR -2,X le fichier !!!
|
---|
436 | NOSHNK CLR IOZONE+255
|
---|
437 | LDB #8 secteurs par bloc
|
---|
438 | STB <CMPT
|
---|
439 |
|
---|
440 | BSR CPNSAV sauve le programme
|
---|
441 | LDB <FILETY
|
---|
442 | CMPB #2
|
---|
443 | BNE NOEHNK
|
---|
444 | CMPX #IOZONE+255
|
---|
445 | BNE *+4 si fin buffer I/O,
|
---|
446 | BSR SVNXTS avance d'1 secteur
|
---|
447 | LDU #IODESC
|
---|
448 | LDY #5
|
---|
449 | BSR CPNSAV sauve terminateur
|
---|
450 | NOEHNK CMPX #IOZONE+255
|
---|
451 | BEQ *+5 si pas déja fait,
|
---|
452 | JSR DISK sauve buffer I/O
|
---|
453 | LEAY -IOZONE,X nombre octets
|
---|
454 | LDX #FAT utilisés dans
|
---|
455 | LDB <FATPTR le dernier secteur
|
---|
456 | ABX
|
---|
457 | LDB <DKSEC nombre de secteurs
|
---|
458 | CMPB #9 utilisés dans le
|
---|
459 | BLO *+4 dernier bloc
|
---|
460 | SUBB #8
|
---|
461 | ADDB #$C0
|
---|
462 | STB -1,X
|
---|
463 | BRA BLKTRV+2
|
---|
464 | IODESC FCB $FF,0,0,00,00
|
---|
465 |
|
---|
466 | CPNSAV LDB ,U+ remplit buffer I/O
|
---|
467 | STB ,X+
|
---|
468 | CMPX #IOZONE+255
|
---|
469 | BLO *+4
|
---|
470 | BSR SAVSEC
|
---|
471 | LEAY -1,Y
|
---|
472 | BNE CPNSAV
|
---|
473 | RTS
|
---|
474 | SAVSEC JSR DISK écrit un secteur
|
---|
475 | CMPY #1
|
---|
476 | BEQ SNXTSF+3
|
---|
477 | SVNXTS INCA passe au secteur
|
---|
478 | CMPA #17 suivant
|
---|
479 | BLO *+6
|
---|
480 | INC <DKTRK
|
---|
481 | LDA #1
|
---|
482 | STA <DKSEC
|
---|
483 | DEC <CMPT 8 secteurs / bloc
|
---|
484 | BNE SNXTSF
|
---|
485 | LDB #8
|
---|
486 | STB <CMPT
|
---|
487 | LDX #FAT
|
---|
488 | LDB <FATPTR Prec=Courant
|
---|
489 | ABX
|
---|
490 | BSR SPOSFT nouveau Courant
|
---|
491 | LDB <FATPTR
|
---|
492 | SUBB #2
|
---|
493 | STB -1,X Prec->Suiv=Courant
|
---|
494 | SNXTSF LDX #IOZONE
|
---|
495 | RTS
|
---|
496 | SPOSFT PSHS X
|
---|
497 | LDX #FAT
|
---|
498 | LDB <FATPTR
|
---|
499 | ABX
|
---|
500 | SRBKFT LDB ,X+ se positionne sur
|
---|
501 | INC <FATPTR le bloc libre
|
---|
502 | CMPB #$FF suivant
|
---|
503 | BEQ BLKTRV
|
---|
504 | ADDA #8
|
---|
505 | CMPA #17
|
---|
506 | BLO *+6
|
---|
507 | INC <DKTRK
|
---|
508 | LDA #1
|
---|
509 | STA <DKSEC
|
---|
510 | BRA SRBKFT
|
---|
511 | BLKTRV PULS X,PC
|
---|
512 |
|
---|
513 | LDX <DIRPTR suite & fin de la
|
---|
514 | LDU #FILNAM sauvegarde
|
---|
515 | LDA #11
|
---|
516 | LDB ,U+ copie du nom
|
---|
517 | STB ,X+ et du suffixe
|
---|
518 | DECA
|
---|
519 | BNE *-5
|
---|
520 | LDD <FILETY Type du fichier:
|
---|
521 | STA ,X+ langage machine
|
---|
522 | STB ,X++ Sémaphore: binaire
|
---|
523 | STY ,X++ Nb octets dans le
|
---|
524 | LDA #8 dernier secteur
|
---|
525 | LDB ,U+
|
---|
526 | STB ,X+ copie commentaire
|
---|
527 | DECA
|
---|
528 | BNE *-5
|
---|
529 | LDD #8
|
---|
530 | STA ,X+ 18 à 1F : réservé
|
---|
531 | DECB
|
---|
532 | BNE *-3
|
---|
533 |
|
---|
534 | LDD #$1402
|
---|
535 | STD <DKTRK
|
---|
536 | LDX #FAT
|
---|
537 | STX <DKBUF
|
---|
538 | JSR DISK
|
---|
539 | LDB <DIRSEC
|
---|
540 | STB <DKSEC
|
---|
541 | LDX #CATALG
|
---|
542 | STX <DKBUF
|
---|
543 | JMP DISK
|
---|
544 |
|
---|
545 | KILFAT PSHS X,A
|
---|
546 | CLR ,X
|
---|
547 | LDB 13,X 1er bloc ds la FAT
|
---|
548 | LDX #FAT+1
|
---|
549 | ABX
|
---|
550 | LDA #$FF
|
---|
551 | LDB ,X
|
---|
552 | STA ,X
|
---|
553 | CMPB #$A0
|
---|
554 | BLO KILFAT+6 détruit chaînage
|
---|
555 | SUBB #$C1
|
---|
556 | CMPB #7
|
---|
557 | BHI *+4
|
---|
558 | PULS A,X,PC
|
---|
559 | LDA #9 Bad File Structure
|
---|
560 |
|
---|
561 | ERROR LDB #24
|
---|
562 | MUL
|
---|
563 | LDU #ERRTXT-24
|
---|
564 | LEAU D,U
|
---|
565 | LDA <IMABNK
|
---|
566 | BMI STDERR
|
---|
567 | PSHS U,A
|
---|
568 | LDA $E7C3
|
---|
569 | ANDA #254
|
---|
570 | STA $E7C3
|
---|
571 | JSR VW2BNK
|
---|
572 | LDX #NULL
|
---|
573 | JSR SETPAL
|
---|
574 | CLR >$E7DC
|
---|
575 | JSR FABSCR
|
---|
576 | PULS A,U
|
---|
577 | STA $E7E5
|
---|
578 | STDERR LDX #$4000+192*40
|
---|
579 | CLR ,X+
|
---|
580 | CMPX #$5F40
|
---|
581 | BNE *-5
|
---|
582 | LDX #SCREEN+8+24*320
|
---|
583 | STX <CURSOR
|
---|
584 | LDD #$1808
|
---|
585 | STB <XPOS
|
---|
586 | LDX #SCREEN+25*320
|
---|
587 | STX <BOTTOM
|
---|
588 | CLR <CLIGNO
|
---|
589 | LDB ,U+
|
---|
590 | JSR PUTC affiche l'erreur
|
---|
591 | DECA
|
---|
592 | BNE *-6
|
---|
593 | JSR GETC
|
---|
594 | TSTB
|
---|
595 | BEQ *-4 attente clavier
|
---|
596 | LDX ,S
|
---|
597 | CMPX #ERRET1 dépile tout et
|
---|
598 | BEQ *+6 retour au menu
|
---|
599 | LEAS 1,S (fin d'option)
|
---|
600 | BRA *-9
|
---|
601 | CLRA
|
---|
602 | JMP HWINDW
|
---|
603 |
|
---|
604 | ERRTXT FCC " No Disk "
|
---|
605 | FCC " Bad Sector "
|
---|
606 | FCC " Timing Failure "
|
---|
607 | FCC " Unreadable Datas "
|
---|
608 | FCC " Disk Write Protected "
|
---|
609 | FCC " Bad FAT Structure "
|
---|
610 | FCC " Disk Full "
|
---|
611 | FCC " Directory Full "
|
---|
612 | FCC " Bad File Structure "
|
---|
613 | FCC " File Not Found "
|
---|
614 | FCC " Bad File Type "
|
---|
615 | FCC " Uncompressible Picture "
|
---|
616 | FCC " No Gadget Installed "
|
---|
617 |
|
---|
618 | FILNAM FCC "FILENAMEBINcomments"
|
---|
619 | DISK PSHS U,Y,X,B,A initialisations
|
---|
620 | LDX #$E7D0
|
---|
621 | LDA #$41
|
---|
622 | TST <DKDRV sélection du drive
|
---|
623 | BEQ *+4
|
---|
624 | LDA #1
|
---|
625 | STA 2,X
|
---|
626 | STA <DKTMP
|
---|
627 | LDU #DKOPER
|
---|
628 | LDB <DKOPC
|
---|
629 | JSR [B,U]
|
---|
630 | PSHS CC
|
---|
631 | CLR ,X
|
---|
632 | SORTIE LDB #$40 sortie
|
---|
633 | STB 2,X
|
---|
634 | PULS CC
|
---|
635 | LBNE ERROR
|
---|
636 | PULS A,B,X,Y,U,PC
|
---|
637 | DKOPER FDB READ,WRITE
|
---|
638 |
|
---|
639 | RTS
|
---|
640 | READ JSR POSPIS
|
---|
641 | BNE READ-1 bad positionnement
|
---|
642 | JSR COMPEN
|
---|
643 | LDB #$1B
|
---|
644 | JSR POSSEC
|
---|
645 | LDA #4
|
---|
646 | LDY #$7500
|
---|
647 | RDTRY1 LEAY -1,Y
|
---|
648 | BNE *+5
|
---|
649 | LDA #2 identificateur
|
---|
650 | RTS incorrect
|
---|
651 | LDB ,X
|
---|
652 | BITB #2
|
---|
653 | BEQ RDTRY1
|
---|
654 | LDB 3,X
|
---|
655 | RDTRY2 DECA
|
---|
656 | BNE *+5
|
---|
657 | LDA #3
|
---|
658 | RTS problème de timing
|
---|
659 | LDB ,X
|
---|
660 | BPL *-2
|
---|
661 | LDB 3,X
|
---|
662 | CMPB #$FB
|
---|
663 | BNE RDTRY2
|
---|
664 | LDY #256
|
---|
665 | LIT LDB ,X lecteur prêt ?
|
---|
666 | BPL *-2
|
---|
667 | LDB 3,X
|
---|
668 | STB ,U+
|
---|
669 | LEAY -1,Y
|
---|
670 | BNE LIT
|
---|
671 | LDB ,X
|
---|
672 | BITB #8 opération finie ?
|
---|
673 | BEQ *-4
|
---|
674 | BITB #4
|
---|
675 | BEQ *+4
|
---|
676 | LDA #4 checksum incorrect
|
---|
677 | RTS
|
---|
678 |
|
---|
679 | WRITE JSR POSPIS
|
---|
680 | BNE WRITE-1 pas positionné
|
---|
681 | LDA 1,X
|
---|
682 | BITA #4
|
---|
683 | BEQ *+5
|
---|
684 | LDA #5 disquette protégée
|
---|
685 | RTS
|
---|
686 | JSR COMPEN
|
---|
687 | LDB #$19
|
---|
688 | BSR POSSEC
|
---|
689 | LDY #$7500
|
---|
690 | WRTRY1 LEAY -1,Y
|
---|
691 | BNE *+5
|
---|
692 | LDA #2 identificateur
|
---|
693 | RTS incorrect
|
---|
694 | LDB ,X
|
---|
695 | BITB #2
|
---|
696 | BEQ WRTRY1
|
---|
697 | STA 3,X
|
---|
698 | LDB ,X
|
---|
699 | BPL *-2
|
---|
700 | STA 3,X
|
---|
701 | LDB ,X
|
---|
702 | BPL *-2
|
---|
703 | LDB #$FB
|
---|
704 | STB 3,X
|
---|
705 | LDY #256
|
---|
706 | ECRIT LDB ,X lecteur prêt ?
|
---|
707 | BPL *-2
|
---|
708 | LDB ,U+
|
---|
709 | STB 3,X
|
---|
710 | LEAY -1,Y
|
---|
711 | BNE ECRIT
|
---|
712 | LDB ,X
|
---|
713 | BITB #8 opération finie ?
|
---|
714 | BEQ *-4
|
---|
715 | JMP WAIT2-6
|
---|
716 |
|
---|
717 | COMPEN LDB <DKTRK si pistes internes
|
---|
718 | CMPB #$39 pré-compensation
|
---|
719 | BPL *+7
|
---|
720 | LDD #$9F00+256/8
|
---|
721 | BRA *+5
|
---|
722 | INTERN LDD #$1F02+256/8
|
---|
723 | STA 7,X
|
---|
724 | STB 1,X
|
---|
725 | RTS
|
---|
726 |
|
---|
727 | POSSEC LDA <DKSEC
|
---|
728 | STA 5,X
|
---|
729 | LDA #10
|
---|
730 | STA 4,X
|
---|
731 | LDA #$A1
|
---|
732 | STA 3,X
|
---|
733 | LDU <DKBUF
|
---|
734 | STB ,X
|
---|
735 | RTS
|
---|
736 |
|
---|
737 | POSPIS BSR TSTDRV
|
---|
738 | BNE *+5 Lecteur non prêt
|
---|
739 | BSR MOVE
|
---|
740 | CLRA
|
---|
741 | RTS
|
---|
742 | TSTDRV LDY #$8000 lance le drive
|
---|
743 | LDB <DKTMP (s'il existe!)
|
---|
744 | ORB #4
|
---|
745 | STB 2,X active moteur
|
---|
746 | ANDB #$FB
|
---|
747 | STB 2,X inactive moteur
|
---|
748 | LEAY -1,Y
|
---|
749 | BNE *+5
|
---|
750 | LDA #1 la disquette
|
---|
751 | RTS ne répond pas
|
---|
752 | LDB 1,X
|
---|
753 | ANDB #2
|
---|
754 | BEQ TSTDRV+4
|
---|
755 | CLRA le drive est prêt
|
---|
756 | RTS
|
---|
757 | MOVE JSR WAIT3
|
---|
758 | LDB <TRACK la piste où est la
|
---|
759 | LDA <DKTMP tête présentement
|
---|
760 | SUBB <DKTRK
|
---|
761 | BEQ PISOK
|
---|
762 | BPL *+5
|
---|
763 | ORA #$20
|
---|
764 | NEGB
|
---|
765 | STA 2,X
|
---|
766 | MVTETE ORA #$14 commande de pas ON
|
---|
767 | STA 2,X
|
---|
768 | ANDA #$EB pas OFF
|
---|
769 | STA 2,X
|
---|
770 | BSR WAIT3
|
---|
771 | DECB
|
---|
772 | BNE MVTETE
|
---|
773 | BSR WAIT2
|
---|
774 | PISOK LDB <DKTRK la tête est sur la
|
---|
775 | STB 6,X bonne piste
|
---|
776 | STB <TRACK
|
---|
777 | RTS
|
---|
778 |
|
---|
779 | LDY #$6C
|
---|
780 | BRA WAIT3+4
|
---|
781 | WAIT2 LDY #$750
|
---|
782 | BRA WAIT3+4
|
---|
783 | WAIT3 LDY #$2EC
|
---|
784 | LEAY -1,Y
|
---|
785 | BNE *-2
|
---|
786 | RTS
|
---|