source: thomson/code/3rdparty/sources2-hcl/OPTIONS2.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: 13.3 KB
Line 
1SIDTXT * choisit quelle face du disque
2 FCC "SIDE @"
3 FCB 0
4OPSIDE LDA <DKDRV choisit la face
5 ADDA #'0
6 STA ,U
7 LDX #CHKBOL
8 STX <INPCHK
9 LDX #VALASC
10 STX <INPVAL
11 LDA #1
12 JSR INPUT choix de la face
13 JSR IPIHEX
14 BEQ EOPSID
15 LDB ,U
16 SUBB #'0
17 STB <DKDRV
18 CLRA
19EOPSID JMP HWINDW
20
21FILTXT * option: remplit zone mémoire
22 FCC "FILL $@"
23 FDB 0,0
24 FCC " TO $"
25 FDB 0,0
26 FCC ">PATTERN $"
27 FDB 0,0,0,0,0,0,0,0
28OPFILL LDA #4
29 LEAY 4,U
30 JSR INPUT lit adresse début
31 BEQ EOPFIL
32 STU <FILBEG
33 LDA #4
34 JSR DIPUT2 lit adresse de fin
35 BEQ EOPFIL
36 STU <FILEND
37 JSR CLRBAR
38 LDX #CHKSOP
39 STX <INPCHK
40 LDX #VALSOP
41 STX <INPVAL
42 LDA #16 16 digits maximum
43 JSR DIPUT2 motif remplissage
44 TSTB chaîne " ?
45 BEQ *+3
46 LSRA
47 JSR IPIHEX
48 BEQ EOPFIL
49 CLR <CLIGNO
50 LDB #32 efface le curseur
51 JSR PUTC
52 LDX <FILEND
53 LEAY ,U
54 LDB ,U
55 CMPA #1
56 BEQ SIGPAT
57 STX >SPIDF1+1 motif long
58 LDX <FILBEG
59 CMPX <FILEND
60 BEQ EOPFIL-2
61 STA <FILBEG
62HUGPAT LDB ,U+
63 STB ,X+
64 DECA
65 BNE *+6
66 LEAU ,Y
67 LDA <FILBEG
68SPIDF1 CMPX #0
69 BNE HUGPAT
70 LDB ,U
71 BRA EOPFIL-2
72
73SIGPAT STX >SPIDF2+1 motif à 1 octet
74 LDX <FILBEG
75 CMPX <FILEND
76 BEQ EOPFIL-2 on remplit la
77FILL STB ,X+ zone avec l'octet
78SPIDF2 CMPX #0 spécifié...
79 BNE FILL
80 STB ,X
81EOPFIL CLRA
82 JMP HWINDW
83
84COPTXT * option: copie une zone mémoire
85 FCC "COPY $@"
86 FDB 0,0
87 FCC " - $"
88 FDB 0,0
89 FCC " TO $"
90 FDB 0,0
91OPCOPY LDA #4
92 LEAY 4,U
93 JSR INPUT lit adresse début
94 BEQ EOPCOP zone source
95 STU <COPBEG
96 LDA #4
97 JSR DIPUT2 lit adresse de fin
98 BEQ EOPCOP zone source
99 STU <COPEND
100 LDA #4
101 JSR DIPUT2 lit adresse début
102 BEQ EOPCOP zone destination
103 CLR <CLIGNO
104 LDB #32 efface le curseur
105 JSR PUTC
106 CMPU <COPBEG
107 BLS ASCECP mode ascending
108 LDX <COPEND mode descending
109 LDD <COPEND
110 SUBD <COPBEG longueur zone - 1
111 BEQ EOPCOP-4
112 LEAU D,U
113 LEAX 1,X
114 LEAU 1,U
115 LDD <COPBEG
116 STD SPIDC1+1
117 LDB ,-X
118 STB ,-U
119SPIDC1 CMPX #0
120 BNE *-7
121 CLRA
122 JMP HWINDW
123
124ASCECP LDD <COPEND copie en mode
125 STD >SPIDC2+1 ascending
126 LDX <COPBEG
127 CMPX <COPEND
128 BEQ EOPCOP-4
129 LDB ,X+ copie de la zone
130 STB ,U+ source vers la
131SPIDC2 CMPX #0 zone destination
132 BNE *-7
133 LDB ,X
134 STB ,U
135EOPCOP CLRA
136 JMP HWINDW
137
138ABOTXT * option: au sujet de FAB-Mon
139 FCC "ABOUT@"
140 FCC " "
141 FCC " FAB-Monitor v3.1 "
142 FCC " Copyright (c) 1992 by "
143 FCC " Laurent Hiriart "
144 FCC " "
145 FCC " Published by A.S.C.I. "
146 FCC "365, Chemin des montants"
147 FCC " 54690 EULMONT "
148 FCC " "
149 FCC "Comments,suggestions and"
150 FCC "bug reports are welcome."
151 FCC " "
152OPABOU CLRA
153 JSR GETC
154 CMPB #2 touche Stop ?
155 LBEQ HWINDW
156 CMPB #13 touche Entrée ?
157 BNE OPABOU+1
158 JSR HWINDW
159 LDA #12 lignes à afficher
160 STA <CMPT
161OPABOD LDA #5 marge à gauche
162 LDB #32
163 JSR PUTC
164 DECA
165 BNE *-4
166 LDA #24 affiche une ligne
167 LDB ,U+ de texte
168 JSR PUTC
169 DECA
170 BNE *-6
171 LDA #11 tabulation droite
172 LDB #32
173 JSR PUTC
174 DECA
175 BNE *-4
176 DEC <CMPT
177 BNE OPABOD
178 RTS
179
180VIWTXT * option: affiche le répertoire
181 FCC "VIEW@"
182VIWLIN FCC " 0:DiskName F:"
183 FCC "316 O: 0 R: 4 "
184OPVIEW CLRA
185 JSR GETC
186 CMPB #2
187 LBEQ HWINDW
188 CMPB #13
189 BNE OPVIEW+1
190 JSR HWINDW
191 LDY #VIWLIN+3
192 LDB <DKDRV
193 ADDB #'0
194 STB ,Y++
195 CLR <DKOPC opération READ
196 LDX #IOZONE
197 STX <DKBUF
198 LDD #$1401
199 STD <DKTRK
200 JSR DISK
201 LDB #8
202 LDA ,X+ copie du nom de la
203 STA ,Y+ disquette
204 DECB
205 BNE *-5
206 INC <DKSEC
207 LDX #FAT
208 STX <DKBUF
209 JSR DISK charge la FAT
210 LEAX 1,X et l'analyse
211 STB <CMPT
212DSKF LDA ,X+
213 CMPA #$FF bloc libre ?
214 BNE *+3
215 INCB FREE++
216 CMPA #$FE
217 BNE *+4
218 INC <CMPT RESERVED++
219 CMPX #FAT+161
220 BLO DSKF
221 STB <VIWTMP
222 LEAU 7,Y Nb(Ko)=2*Nb(Blocs)
223 JSR BB2DEC FREE
224 LEAU 4,U
225 LDB #160
226 SUBB <VIWTMP blocs libres
227 SUBB <CMPT "" réservés
228 JSR BB2DEC OCCUPIED
229 LEAU 4,U
230 LDB <CMPT
231 JSR BB2DEC RESERVED
232 LDX #VIWLIN affiche le header
233 JSR DISLIN+3 du catalogue
234 LDU #LINE
235 LDD #$2820 efface la zone
236 STB ,U+ qui va servir aux
237 DECA lignes de fichiers
238 BNE *-3
239 LDY #VFITYP
240 LDX #CATALG
241 STX <DKBUF
242 LDD #$317
243 STB <CMPT
244VIWDIR STA <DKSEC
245 JSR DISK charge directory
246 LDX #CATALG
247DIRAFF LDB ,X
248 BEQ VESCAT oui:stop recherche
249 CMPB #$FF fin du catalogue
250 BEQ EOPVIW
251 BSR VAFFIL
252 BEQ EOPVIW DIR interrompu
253VESCAT LEAX 32,X
254 CMPX #CATALG+256
255 BLO DIRAFF
256 INCA
257 CMPA #17
258 BLO VIWDIR
259EOPVIW CLRA
260 RTS
261
262VAFFIL PSHS X,A
263 CLRA
264 STA <VIWTMP
265 STA <FILEN
266 DECA
267 LDB 13,X 1er bloc ds la FAT
268 LDX #FAT+1
269 ABX
270 INC <FILEN nbre blocs ++
271 LDB ,X
272 STA ,X code=-1
273 CMPB #$A0
274 BLO *-12 détruit chaînage
275 SUBB #$C1
276 CMPB #8
277 BLO *+7
278 LDA #9 Bad File Structure
279 JMP ERROR
280 LDX 1,S retrouve pointeur
281 STB <VIWTMP+1
282 LDA <FILEN nombre de blocs
283 DECA
284 LDB #8
285 MUL
286 ADDD <VIWTMP calcule la taille
287 STD <VIWTMP précise,en octets
288 LDA #255
289 MUL T=255*((Nblocks-1)
290 STD <VWTMP2 *8+(Nsecteurs dans
291 LDA <VIWTMP dernier block)-1)+
292 LDB #255 Noctets dans le
293 MUL dernier secteur.
294 ADDB <VWTMP2
295 BCC *+3
296 INCA
297 STD <VIWTMP+1
298 LDD 14,X octets utilisés ds
299 ADDD <VWTMP2 le dernier secteur
300 BCC *+4
301 INC <VIWTMP+1
302 STB <VWTMP2+1
303 LDB <VIWTMP+1
304 ADDB #'0
305 LDU #LINE
306 STB ,U+
307 JSR ATOHEX affiche la taille
308 LDA <VWTMP2+1
309 JSR ATOHEX précise,en octets
310 LDA #8
311 LEAU 1,U
312 LDB ,X+
313 STB ,U+ copie du nom
314 DECA
315 BNE *-5
316 LDA #3
317 LEAU 1,U
318 LDB ,X+
319 STB ,U+ copie du suffixe
320 DECA
321 BNE *-5
322 LDD ,X
323 STD <VIWTMP
324 LDA #8 copie commentaire
325 LEAU 4,U
326 LEAX 5,X
327 LDB ,X+
328 BNE *+4
329 LDB #32 -> espace si $00
330 STB ,U+
331 DECA
332 BNE *-9
333 LEAU 1,U
334 LDB <FILEN
335 JSR BB2DEC longueur 2*Nblocks
336 LEAU 1,U
337 LDB #'?
338 LDA <VIWTMP
339 CMPA #3
340 BHI *+4
341 LDB A,Y
342 STB ,U++ type du fichier
343 LDB #'B
344 LDA <VIWTMP+1
345 BEQ *+4
346 LDB #'A
347 STB ,U Sémaphore Asc/Bin
348 JSR DISLIN
349 JSR GETC
350 CMPB #2
351 BEQ VFITYP-2 DIR interrompu
352 DEC <CMPT
353 BNE VFITYP-2
354 JSR GETC
355 BCC *-3
356 CMPB #2
357 BEQ VFITYP-2
358 LDA #24
359 STA <CMPT
360 PULS A,X,PC
361VFITYP FCC "BDMA"
362
363HLPTXT * option: affiche les commandes
364 FCC "HELP@"
365 FCC " T TRANSFER ROM "
366 FCC " "
367OPHELP CLRA
368 JSR GETC
369 CMPB #2
370 LBEQ HWINDW
371 CMPB #13
372 BNE OPHELP+1
373 JSR HWINDW
374 LDY #OPTION
375 LDA #24
376 STA <CMPT
377
378HLPDSP LDU #OPHELP-40+7
379 LDB ,Y+
380 CMPB #13
381 BNE HLPART
382 LDA #'E copie ENT
383 STA -5,U
384 LDD #$4E54
385 BRA HLPJN1
386HLPART CMPB #12
387 BNE HLPNOR
388 LDA #'R copie RAZ
389 STA -5,U
390 LDD #$415A
391 BRA HLPJN1
392HLPNOR LDA #32
393 STA -5,U
394HLPJN1 STD -4,U
395 LDX ,Y
396 LDB ,X+
397 CMPB #'@
398 BEQ *+6
399 STB ,U+
400 BRA *-8
401 LDA -1,U
402 CMPA #32
403 BEQ *+8
404 CMPA #'$
405 BNE *+6
406 LEAU -1,U
407 LEAU -1,U
408 LDB #32
409 STB ,U+
410 CMPU #OPHELP-9
411 BLO *-6
412 LDU #OPHELP-40
413 LDA #40
414 LDB ,U+
415 JSR PUTC
416 DECA
417 BNE *-6
418 DEC <CMPT
419 BNE HLPGON
420 JSR GETC
421 BEQ *-3
422 CMPB #2
423 BEQ EOHELP
424HLPGON LEAY 4,Y
425 CMPY #ENDOPT
426 BNE HLPDSP
427EOHELP CLRA
428 RTS
429
430IMATXT * option: sauvegarde d'écran PPM
431 FCC "IMAGE @"
432 FCB 0
433 FCC "ILENAME."
434 FCB 0
435 FCC "AP ; "
436 FCB 0
437 FCC "omments"
438OPIMAG JSR FILRQT saisie du nom
439 BEQ *+5
440 JSR COMRQT saisie commentaire
441 JSR IPIHEX
442 JSR HWINDW
443 LBEQ EOPIMA
444 LDX #NULL
445 JSR SETPAL palettes en noir
446 LDA $E7E5
447 STA <IMABNK
448 LDD <CODCDD+1 mode d'affichage
449 STA $E7DC
450 CLRA
451 ASLB
452 ROLA
453 ASLB
454 ROLA
455 BNE *+5
456 LDA >ZZZBK1+1
457 STA $E7E5
458 DEC $E7C3
459 JSR BNK2VW copie l'écran
460 LDX #COLORS+32
461 JSR SETPAL
462
463 LDA #39 largeur - 1
464 LDB $605F
465 ANDB #$C0
466 STB <IS4080
467 BEQ *+4
468 ADDA #40
469 LDY #$A000 adresse début code
470 STY <BEGADR
471 STB ,Y+ code colonnes
472 LDB #$18 taille de l'écran
473 STD ,Y++
474 BSR PLANE
475 LDA <IS4080
476 BNE FINCOD
477 DEC $E7C3
478 BSR PLANE
479
480FINCOD TFR Y,D
481 ANDB #1 alignement sur une
482 BEQ *+4 adresse paire
483 CLR ,Y+
484 LDX #COLORS+64
485KOPIPA LDD ,--X
486 BITA #$10
487 BEQ *+5
488 ADDD #1
489 ANDA #15
490 STD ,Y++
491 CMPX #COLORS+32
492 BNE KOPIPA
493 CLRA
494 LDB <CODCDD
495 STD ,Y++
496 LDD #$484C
497 STD ,Y++
498 LEAX -$A000,Y
499 STX <FILSIZ
500 LDD #0
501 STD <EXEADR
502 LDA #12 Picture Too Large
503 CMPX #$4000
504 LBHI ERROR
505 LDD #$200 FILE/DATA types
506 STD <FILETY
507 JSR SAVEM
508
509 LDX #NULL
510 JSR SETPAL
511 CLR $E7DC
512 LDA $E7C3
513 ANDA #254
514 STA $E7C3
515 JSR VW2BNK
516 LDA <IMABNK
517 STA $E7E5
518 JSR FABSCR
519EOPIMA CLRA
520 RTS
521
522
523PLANE LDU #$4000 compacte un plan
524 STU <HIGADR
525 LDD #$28C8 40 cols / 200 ligs
526 TST <IS4080
527 BEQ *+4
528 ADDA #40
529 STD <CMPTLH
530GROUP CLRA nombre occurences
531 LDB ,U
532 BSR SEGBAS segment courant et
533 BNE SINGLE + bas identiques ?
534
535
536MMSEG BSR NXLINE
537 INCA
538 CMPA #$FF
539 BEQ EOLIST
540 CMPB ,U
541 BNE EOLIST
542 TST <CMPTLH
543 BNE MMSEG
544EOLIST STD ,Y++
545 BRA NGROUP
546
547SINGLE STA ,Y++
548 PSHS Y
549ALLDIF BSR NXLINE
550 STB ,Y+
551 INCA
552 CMPA #$FF
553 BEQ EOSING
554 LDB ,U
555 BSR SEGBAS
556 BEQ EOSING
557 TST <CMPTLH
558 BNE ALLDIF
559EOSING PULS X
560 STA -1,X
561
562
563NGROUP LDA <CMPTLH
564 BNE GROUP
565 CLRA
566 CLRB
567 STD ,Y++
568 RTS
569
570SEGBAS PSHS B,A
571 LDB 40,U
572 LDA <CMPTLH+1
573 DECA
574 BNE CMPSGB
575 BSR NXTCOL fin de la ligne
576 LDB ,X
577 BSR NXCOL2
578CMPSGB CMPB 1,S
579 PULS A,B,PC
580
581NXLINE LEAU 40,U
582 DEC <CMPTLH+1 1ligne de moins
583 BNE EONXLN
584
585 PSHS A
586 DEC <CMPTLH 1colonne de moins
587 LDA #200
588 STA <CMPTLH+1
589 BSR NXTCOL
590 STX <HIGADR
591 LEAU ,X
592 PULS A,PC
593
594NXTCOL LDX <HIGADR
595NXCOL2 LDA <IS4080
596 BEQ INCCOL
597 LDA $E7C3
598 EORA #1
599 STA $E7C3
600 LSRA
601 BHS EONXLN
602INCCOL LEAX 1,X
603EONXLN RTS
Note: See TracBrowser for help on using the repository browser.