source: thomson/code/3rdparty/sources2-hcl/FabMonitor/FABMON.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: 15.8 KB
Line 
1**** Fichier principal (Programme). ****
2
3 INCLUD EQUATES
4
5 ORG CODE
6 STA KOMBAC+1
7 LDX #$5FEF exécuté au RESET:
8 STX >$600A ->indirection GETC
9 LDB #$20
10 STB >$5FFB ->rétablit le saut
11 BRA KOMBAC
12 FCC " FAB-Mon v3.1 "
13
14G STA KOMBAC+1
15 PULS CC,A,B
16 JSR GETC
17 PSHS B,A,CC
18 CMPB #'Z-64 CNT-Z appuyé ?
19 BEQ *+10
20KOMBAC LDD #$00E7
21 TFR B,DP
22 JMP PCRTAD
23
24*** sauvegarde des registres du 6809
25 ORCC #80
26 STA DIR*256+REGIST-15 ($E7E6)
27 LEAS 4,S
28 PULS D adresse retour
29 STD DIR*256+REGIST-2
30 STS DIR*256+REGIST-14 pile S
31 LEAS -6,S
32 PULS A registre CC
33 STA DIR*256+REGIST-12
34 PULS A,B,DP registres A,B,DP
35 LDS #DIR*256+REGIST-2
36 PSHS U,Y,X,DP,B,A
37 LDS #DIR*256+Z
38 LDA #DIR
39 TFR A,DP
40
41*** sauvegarde de la palette de couleurs
42 LDX #COLORS+32
43 JSR SYNCRO
44 LDA #16
45 CLR $E7DB
46PALSAV LDB $E7DA
47 STB 1,X
48 LDB $E7DA
49 STB ,X++
50 DECA
51 BNE PALSAV
52 LDX #NULL palettes en noir
53 JSR SETPAL
54
55*** sauvegarde de l'environnement du TO8
56 LDA $E7C3
57 LDB $E7E7
58 ANDB #1 registre E7E4
59 STD <C3E4 registre E7C3
60 ANDA #254
61 STA $E7C3
62 LDB #$54
63 STB $E7E7 gestion pages E7E5
64
65 LDA $E7E5
66 STA >*+7
67 JSR ZZZBK1 sauve écran > bank
68 LDA #0
69 STA $E7E5
70
71 LDA $605F devrait permettre
72 LDX #AFFMOD de retrouver le
73 LDB ,X+ mode d'affichage
74 CMPA ,X++
75 BEQ AFFUND
76 CMPX #COLORS
77 BNE *-9
78AFFUND LDA -1,X
79 STD <CODCDD registre E7DC
80 CLR $E7E4 et No de CONSOLE
81 LDB $E7E4
82BORDER ADDB #0 couleur du tour
83 STB <CODCDD+2 registre E7DD
84
85 LDD #0
86 STD $E7DC
87 LDA $6049 face du lecteur
88 ANDA #1
89 STA <DKDRV
90 LDB $6052 position tête Dsk0
91 STB <TRACK
92 LDX #BUFCLV
93 LDD $6079
94 STD ,X++
95 STX $6079
96 JSR FABMON
97
98* on remet tout en place et on se casse.
99
100 LDD >BUFCLV
101 STD $6079
102 LDB <TRACK position tête Dsk0
103 STB $6052
104 LDD <CODCDD+1 restaure rgistrs
105 STD $E7DC du TO8
106 LDA $E7E5
107 STA >*+7
108 JSR GBK2VW restaure
109 LDA #0 bank -> écran
110 STA $E7E5
111 LDD <C3E4
112 STA $E7C3
113 STB $E7E4
114
115 LDX #COLORS+32
116 JSR SETPAL
117 LDA $6081
118 STA $E7E7
119
120 LDS #DIR*256+REGIST-14
121 PULS Y vraie pile retour
122 PULS A,X registres CC,A,B
123 STA -6,Y
124 STX -5,Y
125 PULS A registre DP
126 STA -3,Y
127 LDX <REGIST-2
128 STX -2,Y adresse de retour
129 PULS X,Y,U
130 LDS <REGIST-14
131 LEAS -6,S
132 LDA <REGIST-15 ($E7E6)
133 JMP >KOMBAC
134
135SETPAL PSHS A,B
136 BSR SYNCRO
137 LDB #16
138 CLR $E7DB
139 LDA 1,X
140 STA $E7DA
141 LDA ,X++
142 STA $E7DA
143 DECB
144 BNE *-11
145 PULS A,B,PC
146SYNCRO LDA $E7E7 syncro basse
147 BPL *-3
148 LDA $E7E7
149 BMI *-3
150 LDB #4*45 descend encore
151 TST ,X 6 de 45 lignes
152 LDA 1,X 5
153 DECB 2
154 BNE *-5 3
155 RTS
156
157GVW2BK LDA $E7C3
158 ANDA #254
159 STA $E7C3
160ZZZBK1 LDA #0
161 STA $E7E5
162VW2BNK LDX #$A000
163 LDU #$4000
164 LDD ,U++
165 STD ,X++
166 CMPX #$C000
167 BNE *-7
168 INC $E7C3
169 LDU #$4000
170 LDD ,U++
171 STD ,X++
172 CMPX #$E000
173 BNE *-7
174 RTS
175
176GBK2VW LDA $E7C3
177 ANDA #254
178 STA $E7C3
179ZZZBK2 LDA >ZZZBK1+1
180 STA $E7E5
181BNK2VW LDX #$A000
182 LDU #$4000
183 LDD ,X++
184 STD ,U++
185 CMPX #$C000
186 BNE *-7
187 INC $E7C3
188 LDU #$4000
189 LDD ,X++
190 STD ,U++
191 CMPX #$E000
192 BNE *-7
193 RTS
194
195FABSCR LDA $E7C3
196 ANDA #254
197 STA $E7C3
198 LDX #$5F40 dessine l'écran de
199 LDD #$C1C1 FAB-Monitor v3.1
200 STD ,--X
201 CMPX #$4000+192*40
202 BHI *-5
203CMOTIF LDU #$D0D0
204 LDD #$9090
205 STU ,--X
206 STD ,--X
207 STU ,--X
208 STD ,--X
209 STU ,--X
210 LDB #$D8
211 LDA #25
212 STB ,-X
213 DECA
214 BNE *-3
215 LDB #$F0
216 LDA #5
217 STB ,-X
218 DECA
219 BNE *-3
220 CMPX #$4000
221 BHI CMOTIF
222 INC $E7C3
223 CLR ,X+
224 CMPX #$5F40
225 BLO *-5
226 LDU #SCREEN
227 STU <CURSOR
228 LDA #-1
229 STA <IMABNK
230 LDX #COLORS
231 JMP SETPAL
232
233
234* programme: FAB-Monitor v3.1
235FABMON JSR FABSCR
236CMSTRT LDX #$4000+192*40
237 LDD #0
238 STD ,X++ efface la barre de
239 CMPX #$5F40 commandes
240 BLO *-5
241 LDX <CURSOR sauve curseur haut
242 STX <WRKCSR
243 LDD #SCREEN+25*320
244 STD <BOTTOM
245 LDX #SCREEN+4+24*320
246 STX <CURSOR
247 LDA #-1
248 STA <CLIGNO
249 LDD #$43E affiche l'invite
250 STA <XPOS ">"
251 JSR PUTC
252COMMND JSR GETC lecture lettre-clé
253 CMPB #$60 lettre minuscule
254 BLO *+4
255 ANDB #$DF
256 LDX #OPTION
257QELOPT CMPB ,X+
258 BNE OPTNXT
259 LDU ,X++ la lettre est une
260 LDB ,U+ clé : affichage du
261 CMPB #'@ texte et exécution
262 BEQ *+7 de la commande
263 JSR PUTC
264 BRA *-9
265 JSR [,X]
266ERRET1 TSTA
267 BEQ CMSTRT
268 LDX #NULL palettes en noir
269 JMP SETPAL et on quitte
270OPTNXT LEAX 4,X
271 CMPX #ENDOPT
272 BLO QELOPT
273 BRA COMMND
274OPTION FCB 13
275 FDB LNFEED,OPFEED
276 FCB 12
277 FDB RAZWIN,OPRAZW
278 FCB '?
279 FDB HLPTXT,OPHELP
280 FCB '@
281 FDB ASCTXT,OPASCI
282 FCB 'A
283 FDB ABOTXT,OPABOU
284 FCB 'B
285 FDB BNKTXT,OPBANK
286 FCB 'C
287 FDB COPTXT,OPCOPY
288 FCB 'D
289 FDB DMPTXT,OPDUMP
290 FCB 'E
291 FDB JSRTXT,OPGJSR
292 FCB 'F
293 FDB FILTXT,OPFILL
294 FCB 'G
295 FDB GADTXT,OPGADG
296 FCB 'H
297 FDB HNKTXT,OPHUNK
298 FCB 'I
299 FDB IMATXT,OPIMAG
300 FCB 'J
301 FDB JMPTXT,OPJUMP
302 FCB 'K
303 FDB KILTXT,OPKILL
304 FCB 'L
305 FDB LODTXT,OPLOAD
306 FCB 'M
307 FDB MODTXT,OPMODE
308 FCB 'N
309 FDB PALTXT,OPNPAL
310 FCB 'O
311 FDB BORTXT,OPBORD
312 FCB 'P
313 FDB POKTXT,OPPOKE
314 FCB 'Q
315 FDB QITTXT,OPQUIT
316 FCB 'R
317 FDB RIDTXT,OPREAD
318 FCB 'S
319 FDB SERTXT,OPSEAR
320 FCB 'T
321 FDB ROMTXT,OPROMC
322 FCB 'U
323 FDB DESTXT,OPDESA
324 FCB 'V
325 FDB VIWTXT,OPVIEW
326 FCB 'W
327 FDB WRITXT,OPWRIT
328 FCB 'X
329 FDB REGTXT,OPREGI
330 FCB '=
331 FDB RGETXT,OPRGEQ
332 FCB 'Y
333 FDB SIDTXT,OPSIDE
334 FCB 'Z
335 FDB MOVTXT,OPMOVE
336 FCB '*
337 FDB COLTXT,OPCOLO
338ENDOPT
339
340PALTXT * initialise la palette couleurs
341 FCC "NEW PALETTE@"
342OPNPAL JSR GETC
343 CMPB #2
344 BEQ EOPPAL
345 CMPB #13
346 BNE OPNPAL
347 LDX #COLORS
348 LDU #COLORS+32
349 LDD ,X++
350 STD ,U++
351 CMPX #COLORS+32
352 BNE *-7
353EOPPAL CLRA
354 JMP HWINDW
355
356
357BORTXT * change la couleur du cadre
358 FCC "BORDER $@"
359 FCB 0
360OPBORD LDA #1
361 JSR INPUT
362 JSR HWINDW
363 BEQ EOPBOR
364 TFR U,D
365 STB >BORDER+1
366 LDB <CODCDD+2
367 ANDB #$F0
368 ADDB >BORDER+1
369 STB <CODCDD+2 registre E7DD
370EOPBOR CLRA
371 RTS
372
373MOVTXT * option: déplace l'indirection
374 FCC "ZAPPER AT $@"
375 FDB 0,0
376OPMOVE LDD $6089
377 JSR ATOHEX
378 TFR B,A
379 JSR ATOHEX
380 LEAU -4,U
381 LDX #VALZAP
382 STX <INPVAL
383 LDA #4
384 JSR INPUT
385 LDX #VALHEX
386 STX <INPVAL
387 JSR HWINDW
388 BEQ EOPMOV
389 CMPU #$6000
390 BHS ZAPONE
391 LDB $E7E5
392 STB <CMPT
393 LDB >ZZZBK1+1
394 STB $E7E5
395 LEAU $6000,U
396 BSR ZAPONE
397 LEAU $2000-16,U
398 BSR ZAPONE
399 LDB <CMPT
400 STB $E7E5
401 LEAU -$8000-16,U
402 BRA VECTRS
403ZAPONE LDA #20 taille du zappeur
404 LDX >$6089
405 CMPU >$6089
406 BLS MVZAPI
407 LEAX A,X
408 LEAU A,U
409MVZAPD LDB ,-X copie en mode
410 STB ,-U descending
411 DECA
412 BNE *-5
413 BRA VECTRS
414MVZAPI LEAY ,U
415 LDB ,X+ copie en mode
416 STB ,U+ ascending
417 DECA
418 BNE *-5
419 LEAU ,Y
420VECTRS STU >$6089 détournement RESET
421 LEAU 3,U
422 STU >$600A indirection GETC
423 STU >$0004
424 LEAU 12,U
425 STU >$000C
426 LEAU 1,U
427 STU >$0034
428 CLRA
429EOPMOV RTS
430
431
432ROMTXT * option: copie une ROM en RAM
433 FCC "TRANSFER ROM $@"
434 FCB 0
435 FCC " TO BANK $"
436 FDB 0
437OPROMC LDA #1
438 JSR INPUT choix de la page
439 LBEQ HWINDW de ROM ($0 à $F)
440 TFR U,D
441 LDX #CPYROM
442 STB 11,X ROM à commuter
443 LDU #OPROMC-2
444 LDA $E7E5
445 STA <CMPT
446 JSR ATOHEX
447 LDD #VALBNK
448 STD <INPVAL
449 LDU #OPROMC-12
450 LDA #2
451 JSR DINPUT choix de la banque
452 LDX #VALHEX de RAM ($00 à $1F)
453 STX <INPVAL
454 JSR HWINDW
455 BEQ EOPROM
456 TFR U,D
457 STB $E7E5
458
459 LDX #CPYROM
460 LDB $E7E6
461 STB ROMEND-CPYROM-7,X
462 LDU #$4000+192*40
463 LDA #$C9
464 DEC $E7C3
465 STA ,U
466 INC $E7C3
467 LDB ,X+
468 STB ,U+
469 CMPX #ROMEND
470 BNE *-15
471 LDX #0
472 LDU #$A000
473 JMP >$4000+192*40
474RETROM LDX #$4000+192*40
475 DEC $E7C3
476 LDD #$00C1+256*(ROMEND-CPYROM)
477 STB ,X+
478 DECA
479 BNE *-3
480 INC $E7C3
481 LDB <CMPT
482 STB $E7E5
483 CLRA
484EOPROM RTS
485
486CPYROM CLR $E7E6
487 LDA >$0020
488 FCB $A7,$8C,ROMEND-9-*-3
489 CLR >$0000
490 LDD ,X++
491 STD ,U++
492 LDD ,X++
493 STD ,U++
494 CMPX #$4000
495 BNE *-11
496 CLR >$0000
497 LDA #0
498 STA $E7E6
499 JMP >RETROM
500ROMEND
501
502MODTXT * change le mode d'affichage
503 FCC "MODE $@"
504 FCB 0
505OPMODE LDB <CODCDD
506 ADDB #'0
507 STB ,U
508 LDX #CHKMOD
509 STX <INPCHK
510 LDA #1
511 JSR INPUT
512 LDX #CHKHEX
513 STX <INPCHK
514 JSR HWINDW
515 BEQ EOPMOD
516 TFR U,D
517 TFR B,A
518
519 LDX #AFFMOD
520 LDB ,X++
521 CMPA ,X+
522 BEQ MDFUND
523 CMPX #COLORS
524 BNE *-9
525 BRA EOPMOD
526MDFUND STD <CODCDD rgs E7DC / CONSOLE
527 LDA -2,X
528 STA $605F
529EOPMOD CLRA
530 RTS
531
532GADTXT * Exécuter un gadget utilisateur
533 FCC "GADGET@"
534OPGADG CLRA
535 JSR GETC
536 CMPB #2
537 LBEQ HWINDW
538 CMPB #13
539 BNE OPGADG
540 LDA #13 No Gadget Installd
541 JMP ERROR
542
543COLTXT * Voir la palette de couleurs
544 FCC "SHOW COLORS@"
545OPCOLO CLRA
546 JSR GETC
547 CMPB #2
548 LBEQ HWINDW
549 CMPB #13
550 BNE OPCOLO
551 JSR HWINDW
552 JSR SYNCRO
553 PSHS DP On récupèrera DP
554 LDB #$E7 à la sortie !
555 TFR B,DP Pour accès rapides
556 LDD #30 couleur 15 en noir
557 STB <$DB
558 STA <$DA
559 STA <$DA
560 LDA #15
561 STA <$DD tour en couleur 15
562 LDA <$C8
563 ANDA #1 attend relâchement
564 BNE *-4 du clavier
565
566* SYNCRONISATION - REGLAGE COLONNE *****
567* b5 de $E7E7 : situation en ligne INILN
568 LDX #*+4
569 LDA #32
570 BITA <$E7 sort quand
571 BEQ *-2 spot dans fenêtre
572 BITA <$E7 sort quand
573 BNE *-2 spot entre border
574 STA ,X+ 5
575 MUL 11 boucle de 63
576 MUL 11 cycles dont on
577 MUL 11 sort quand le
578 MUL 11 spot est sur la
579 LDA ,-X 5 dernière
580 BITA <$E7 4 C O L O N N E
581 BEQ *-10 3 de la fenêtre
582
583* SYNCRONISATION - REGLAGE LIGNE *******
584* b7 de $E7E7 : situation en trame INITN
585 MUL 11 boucle de 64
586 MUL 11 cycles dont on
587 MUL 11 sort quand le
588 MUL 11 spot est sur
589 MUL 11 une ligne
590 TST <$E7 6 DANS le border
591 BPL *-7 3
592 MUL 11 boucle de 64
593 MUL 11 cycles dont on
594 MUL 11 sort quand le
595 MUL 11 spot est sur la
596 MUL 11 dernière
597 TST <$E7 6 L I G N E
598 BMI *-7 3 de la fenêtre
599
600 LDX #115*8-3
601 LEAX -1,X Pour centrer les
602 BNE *-2 lignes de copper.
603
604BORCOL LDU #COLORS+32
605 LDD ,U++ 8
606 STD >NOSTAL+1 6
607 LDA #30 2
608 STA <$DB 4
609NOSTAL LDD #0 3
610 STB <$DA 4
611 STA <$DA 4
612 LDX #8*11 3
613 LEAX -1,X 5
614 BNE *-2 3
615 MUL 11
616 MUL 11
617 CMPU #COLORS+66 5
618 BNE BORCOL+3 3
619
620 LDX #107*8+8-2
621 LEAX -1,X
622 BNE *-2
623 ABX
624 LDA <$C8 clavier frappé ?
625 BEQ BORCOL non -> boucle
626
627 JSR SYNCRO
628 LDD #30
629 STA <$DD tour en couleur 0
630 STB <$DB
631 LDD >COLORS+30
632 STB <$DA couleur 15 en brun
633 STA <$DA
634 JSR GETC Vide buffR clavier
635 PULS DP
636 CLRA
637 RTS
638
639ASCTXT * Afficher la table ASCII
640 FCC "ASCII TABLE@"
641OPASCI CLRA
642 JSR GETC
643 CMPB #2
644 LBEQ HWINDW
645 CMPB #13
646 BNE OPASCI+1
647 JSR HWINDW
648
649 LDD #$2032
650 STD <DMPBYT
651 LDU #PUTC
652ASCIIT LDB #32
653 JSR ,U
654 CMPA #100
655 BLS *+4
656 LDB #'1
657 JSR ,U
658 LDA <DMPBYT+1
659 JSR DA2HEX
660 LDA <DMPBYT
661 LDB #8
662 STB <CMPT
663 LDB #32
664ASCIHX JSR ,U
665 JSR DA2HEX
666 INCA
667 DEC <CMPT
668 BNE ASCIHX
669 JSR ,U
670 JSR ,U
671 LDB <DMPBYT
672 LDA #8
673ASCICH JSR ,U
674 INCB
675 DECA
676 BNE ASCICH
677 STB <DMPBYT
678 LDB #32
679 JSR ,U
680 JSR ,U
681 LDA <DMPBYT+1
682 ADDA #8
683 DAA
684 STA <DMPBYT+1
685 LDA <DMPBYT
686 CMPA #128
687 BNE ASCIIT
688 CLRA
689 RTS
690
691
692
693 INCLUD OPTIONS2
694 INCLUD OPTIONS
695 INCLUD FNCTBASE
696 INCLUD FILES
697
698
699 ORG $2300-15-32
700AFFMOD FCB $2A,$80,1 * 80 colonnes
701 FCB $21,$01,2 * Bitmap 4
702 FCB $7B,$40,3 * Bitmap 16
703 FCB $41,$10,4 * Bitmap 4 SpéC
704 FCB $00,$00,0 * TO7 / défaut
705COLORS FDB 0,15,240,255,3840,3855
706 FDB 4080,4095,1911,826,931
707 FDB 938,2611,2618,3815,123
708 FDB 0,0,0,0,0,0,0,0
709 FDB 0,0,0,0,0,0,0,0
710NULL FDB 0,0,0,0,0,0,0,0
711 FDB 0,0,0,0,0,0,0,0
712BUFCLV FDB 0 OLD buffer clavier
713 FDB 0,0 mon buffer clavier
714
715
716 END
Note: See TracBrowser for help on using the repository browser.