source: thomson/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-C2.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: 33.1 KB
Line 
1 TITLE TO-GRAPH: S/P cartouche 2
2* ---------------------------------
3 PAGE
4
5****************************************
6* *
7* TO-GRAPH *
8* *
9* S/P de la cartouche no 2 *
10* *
11****************************************
12
13
14*=======================================
15* S/P décalage droite/gauche du tiroir
16* pour mettre les 1ers points de
17* chaque ligne dans une colonne
18* donnée
19* Entrée: B rang à obtenir pour 1er pt
20* (0..7)
21*=======================================
22
23XDECAL PSHS D,X
24 LEAS -1,S
25CPTDEC SET 0
26PA SET 1
27PB SET 2
28*---------------------------------------
29 SUBB <DECTIR
30 LBEQ DECTF déja ok ->
31 BMI DECTG à gauche ->
32 STB CPTDEC,S # à droite
33 LDB PB,S
34 STB <DECTIR
35BDCDD LDX #ZONTRA
36 LDA <HPTTIR
37BDCDL LDB <LARTIR
38 ANDCC #$FE
39BDCDC ROR ,X+
40 DECB
41 BNE BDCDC ->
42 DECA
43 BNE BDCDL ->
44 DEC CPTDEC,S
45 BNE BDCDD ->
46 BRA DECTF ->
47
48DECTG NEGB # à gauche
49 STB CPTDEC,S
50 LDB PB,S
51 STB <DECTIR
52BDCGD LDX #ZONTRA
53 LDA <HPTTIR
54 LDB <LARTIR
55 MUL
56 LEAX D,X
57 LDA <HPTTIR
58BDCGL LDB <LARTIR
59 ANDCC #$FE
60BDCGC ROL ,-X
61 DECB
62 BNE BDCGC ->
63 DECA
64 BNE BDCGL ->
65 DEC CPTDEC,S
66 BNE BDCGD ->
67
68DECTF LEAS 1,S
69 PULS D,X,PC
70
71
72*=======================================
73* S/P génération d'un dessin tortue
74* d'avance éventuellement décomposé
75* en plusieurs (max soft 255)
76*
77* Entrée: D déplacement
78* X chaine rangement
79* Sortie: X ...
80*=======================================
81
82XDEPTO PSHS D
83 LEAS -5,S
84DEPCPT SET 0
85DEPCOU SET 2
86DEPCAR SET 4
87PD SET 5
88*---------------------------------------
89 LDA -1,X
90 STA DEPCAR,S
91 LDD PD,S
92 STD DEPCPT,S
93DEPTO0 LDD DEPCPT,S
94 CMPD #255
95 BLE DEPTO1 ->
96 LDD #255
97DEPTO1 STD DEPCOU,S
98 LDD DEPCOU,S
99 JSR BINDCG
100 ABX
101 LDD DEPCPT,S
102 SUBD DEPCOU,S
103 STD DEPCPT,S
104 BLE DEPTOF ->
105 LDD #$4C30 'L0'
106 STD ,X++
107 LDA DEPCAR,S
108 STA ,X+
109 BRA DEPTO0 ->
110
111DEPTOF LEAS 5,S
112 PULS D,PC
113
114
115*=======================================
116* S/P copie d'une page écran vers la
117* zone correspondante de la feuille
118*
119* Entrée: B 0 page paire
120* 1 page impaire
121* RGDECR emplacement écran
122* CLDECR dans la feuille
123*=======================================
124
125XECRFE PSHS D,X,Y
126 LEAS -2,S
127MEMBK SET 0
128DBK SET 1
129PA SET 2
130PB SET 3
131*---------------------------------------
132 LDA BANKC
133 STA MEMBK,S
134
135* Commut. page écran à sauvegarder
136 LDA $E7C3
137 ANDA #$FE
138 ADDA PB,S
139 EORA #1
140 STA $E7C3
141 LDA #PBKTRA+2
142 TST PB,S
143 BEQ ECFE00 ->
144 ADDA #3
145ECFE00 STA DBK,S
146
147* Calcul de l'adresse RAM début ligne
148* initiale de la feuille (bank+déplac.)
149 LDA <RGDECR *60*8 !
150 LSLA
151 LDB #60*4
152 MUL
153 ADDB <CLDECR
154 ADCA #0
155 ADDD <ADF
156 BCC ECFE0 ->
157 ADDD #$FFFF-48959
158ECFE0 CMPD #48960
159 BCS ECFE1 ->
160 SUBD #48960
161ECFE1 STD <ADPRRL
162 ROLA
163 ROLA
164 ROLA
165 ANDA #3
166 ADDA PB,S 3 bank par page
167 ADDA PB,S écran
168 ADDA PB,S
169 ADDA #PBKTRA
170 STA BANKC
171 LDD <ADPRRL
172 ANDA #$3F
173 ADDD #$A000
174 STD <ADPRRL
175
176* Initialisation du 1er segment à lire
177* sur l'écran
178 LDD #$4000+8*40+2
179 STD <ADPRSL
180
181* Nb de lignes écran à déplacer (+1)
182 LDA #185
183 STA <CPTLT
184
185* Boucle de copie .. X= ad. écran
186* Y= ad. RAM
187 LDX <ADPRSL
188 LDY <ADPRRL
189
190BECFE DEC <CPTLT
191 LBEQ FECFE fini ->
192 LDA BANKC
193 LDB #37
194 CMPA DBK,S
195 BEQ ECFE30 dernier bank ->
196
197 CMPY #$E000-36
198 BCS BECFE1 move 37 ok ->
199 PSHS Y move en 2 fois
200 LDD #$E000
201 SUBD ,S++
202 STB <CPTCT
203BECFE0 LDA ,X+
204 STA ,Y+
205 DECB
206 BNE BECFE0 ->
207 INC BANKC
208 LDY #$A000
209 LDB #37
210 SUBB <CPTCT
211BECFE1 LDA ,X+
212 STA ,Y+
213 DECB
214 BNE BECFE1 ->
215
216 LEAX 40-37,X ligne écran suiv
217 LEAY 60-37,Y ligne feuille
218 CMPY #$E000
219 BCS BECFE ->
220 INC BANKC
221 LEAY -$4000,Y
222 BRA BECFE ->
223
224ECFE30 CMPY #$DF40-36
225 BCS BECFE3 move 37 ok ->
226 PSHS Y move en 2 fois
227 LDD #$DF40
228 SUBD ,S++
229 STB <CPTCT
230BECFE2 LDA ,X+
231 STA ,Y+
232 DECB
233 BNE BECFE2 ->
234 DEC BANKC
235 DEC BANKC
236 LDY #$A000
237 LDB #37
238 SUBB <CPTCT
239BECFE3 LDA ,X+
240 STA ,Y+
241 DECB
242 BNE BECFE3 ->
243
244 LEAX 40-37,X ligne écran suiv
245 LEAY 60-37,Y ligne feuille
246 CMPY #$DF40
247 LBCS BECFE ->
248 DEC BANKC
249 DEC BANKC
250 LEAY -$DF40,Y
251 LEAY $A000,Y
252 LBRA BECFE ->
253
254FECFE LDA MEMBK,S
255 STA BANKC
256 LEAS 2,S
257 PULS D,X,Y,PC
258
259
260*=======================================
261* S/P copie vers une page écran de la
262* zone correspondante de la feuille
263*
264* Entrée: B 0 page paire
265* 1 page impaire
266* RGDECR emplacement écran
267* CLDECR dans la feuille
268*=======================================
269
270XFEUEC PSHS D,X,Y
271 LEAS -2,S
272MEMBK SET 0
273DBK SET 1
274PA SET 2
275PB SET 3
276*---------------------------------------
277 LDA BANKC
278 STA MEMBK,S
279
280* Commut. page écran à régénérer
281 LDA $E7C3
282 ANDA #$FE
283 ADDA PB,S
284 EORA #1
285 STA $E7C3
286 LDA #PBKTRA+2
287 TST PB,S
288 BEQ FEEC00 ->
289 ADDA #3
290FEEC00 STA DBK,S
291
292* Calcul de l'adresse RAM début ligne
293* initiale de la feuille (bank+déplac.)
294 LDA <RGDECR *60*8 !
295 LSLA
296 LDB #60*4
297 MUL
298 ADDB <CLDECR
299 ADCA #0
300 ADDD <ADF
301 BCC FEEC0 ->
302 ADDD #$FFFF-48959
303FEEC0 CMPD #48960
304 BCS FEEC1 ->
305 SUBD #48960
306FEEC1 STD <ADPRRL
307 ROLA
308 ROLA
309 ROLA
310 ANDA #3
311 ADDA PB,S 3 bank par page
312 ADDA PB,S écran
313 ADDA PB,S
314 ADDA #PBKTRA
315 STA BANKC
316 LDD <ADPRRL
317 ANDA #$3F
318 ADDD #$A000
319 STD <ADPRRL
320
321* Initialisation du 1er segment à écrire
322* sur l'écran
323 LDD #$4000+8*40+2
324 STD <ADPRSL
325
326* Nb de lignes écran à déplacer (+1)
327 LDA #185
328 STA <CPTLT
329
330* Boucle de copie .. X= ad. écran
331* Y= ad. RAM
332 LDX <ADPRSL
333 LDY <ADPRRL
334
335BFEEC DEC <CPTLT
336 LBEQ FFEEC fini ->
337 LDA BANKC
338 LDB #37
339 CMPA DBK,S
340 BEQ FEEC30 dernier bank ->
341
342 CMPY #$E000-36
343 BCS BFEEC1 move 37 ok ->
344 PSHS Y move en 2 fois
345 LDD #$E000
346 SUBD ,S++
347 STB <CPTCT
348BFEEC0 LDA ,Y+
349 STA ,X+
350 DECB
351 BNE BFEEC0 ->
352 INC BANKC
353 LDY #$A000
354 LDB #37
355 SUBB <CPTCT
356BFEEC1 LDA ,Y+
357 STA ,X+
358 DECB
359 BNE BFEEC1 ->
360
361 LEAX 40-37,X ligne écran suiv
362 LEAY 60-37,Y ligne feuille
363 CMPY #$E000
364 BCS BFEEC ->
365 INC BANKC
366 LEAY -$4000,Y
367 BRA BFEEC ->
368
369FEEC30 CMPY #$DF40-36
370 BCS BFEEC3 move 37 ok ->
371 PSHS Y move en 2 fois
372 LDD #$DF40
373 SUBD ,S++
374 STB <CPTCT
375BFEEC2 LDA ,Y+
376 STA ,X+
377 DECB
378 BNE BFEEC2 ->
379 DEC BANKC
380 DEC BANKC
381 LDY #$A000
382 LDB #37
383 SUBB <CPTCT
384BFEEC3 LDA ,Y+
385 STA ,X+
386 DECB
387 BNE BFEEC3 ->
388
389 LEAX 40-37,X ligne écran suiv
390 LEAY 60-37,Y ligne feuille
391 CMPY #$DF40
392 LBCS BFEEC ->
393 DEC BANKC
394 DEC BANKC
395 LEAY -$DF40,Y
396 LEAY $A000,Y
397 LBRA BFEEC ->
398
399FFEEC LDA MEMBK,S
400 STA BANKC
401 LEAS 2,S
402 PULS D,X,Y,PC
403
404
405*=======================================
406* S/P inversion du tiroir pour visu.
407* temporaire
408*=======================================
409
410XINVTI EQU *
411*---------------------------------------
412* calculer coord. de visualisation
413 LDD <LPTTIR
414 LSRA
415 RORB
416 PSHS D
417 LDD REGX
418 SUBD ,S++
419 STD <XT0
420 ADDD <LPTTIR
421 SUBD #1
422 STD <XT1
423
424 CLRA calcul +/- 32k
425 LDB <HPTTIR
426 LSRA
427 RORB
428 PSHS D
429 LDD REGY
430 SUBD ,S++
431 STD <YT0
432 CLRA
433 LDB <HPTTIR
434 ADDD <YT0
435 SUBD #1
436 STD <YT1
437
438* décaler le tiroir pour corresp.
439* colonnes
440 LDD <XT0
441 ANDB #7
442 LBSR XDECAL
443
444* calcul de la zone visualisée
445 LDD <XT0
446 ASRA
447 RORB
448 ASRA
449 RORB
450 ASRA
451 RORB
452 STB <COLT0
453 CLR <DECSEG
454 CMPB #4
455 BGE INVT10 ->
456 LDA #4
457 SUBA <COLT0
458 STA <DECSEG
459 LDA #4
460 STA <COLT0
461 LDD #32
462 STD <XT0
463
464INVT10 CLR <DECLIG
465 LDD <YT0
466 CMPD #8
467 BGE INVT11 ->
468 LDD #8
469 SUBD <YT0
470 STB <DECLIG
471 LDD #8
472 STD <YT0
473INVT11 LDA <YT0+1
474 STA <YT0 valeur 8..191
475
476 LDD <XT1
477 ASRA
478 RORB
479 ASRA
480 RORB
481 ASRA
482 RORB
483 STB <COLT1
484 CMPB #77
485 BLE INVT12 ->
486 LDB #77
487 STB <COLT1
488 LDD #623
489 STD <XT1
490
491INVT12 LDD <YT1
492 CMPD #191
493 BLE INVT13 ->
494 LDD #191
495 STD <YT1
496INVT13 LDA <YT1+1 valeur 8..191
497 STA <YT1
498
499 LDA <COLT1
500 SUBA <COLT0
501 INCA
502 STA <LARTV
503 LDA <YT1
504 SUBA <YT0
505 INCA
506 STA <HAUTV
507
508* calcul des référence 1er segment
509* (page écran et adresse
510 LDA $E7C3
511 ANDA #$FE
512 LDB <COLT0
513 LSRB
514 BCS INVT14 ->
515 ORA #$01
516INVT14 STA <PRE7C3
517 LDA <YT0
518 LDB #40
519 MUL
520 ADDD #$4000
521 STD <ADPRSG
522 CLRA
523 LDB <COLT0
524 LSRB
525 ADDD <ADPRSG
526 STD <ADPRSG
527
528* calcul des nb de seg. sur page
529* du 1er et sur l'autre
530 LDA <LARTV
531 LSRA
532 STA <NBSEG1
533 STA <NBSEG2
534 BCC INVT15 ->
535 INC <NBSEG1
536
537* xor sur seg. 1ère page
538INVT15 LDA <PRE7C3
539 STA $E7C3
540 LDA <HAUTV
541 STA <CPTLT
542 LDU <ADPRSG
543 STU <ADPRSL
544 LDY #ZONTRA Y=ad 1ére ligne
545 LDA <LARTIR
546 LDB <DECLIG
547 MUL
548 LEAY D,Y
549INVT16 LDA <DECSEG
550 LEAX A,Y
551 LDA <NBSEG1
552INVT17 LDB ,U
553 EORB ,X++
554 STB ,U+
555 DECA
556 BNE INVT17 ->
557 LDB <LARTIR
558 LEAY B,Y
559 LDU <ADPRSL
560 LEAU 40,U
561 STU <ADPRSL
562 DEC <CPTLT
563 BNE INVT16 ->
564
565* xor seg. 2ème page
566 LDA $E7C3
567 EORA #$01
568 STA $E7C3
569 LDA <HAUTV
570 STA <CPTLT
571 CLRA
572 LDB <PRE7C3
573 ANDB #1
574 EORB #1
575 ADDD <ADPRSG
576 STD <ADPRSL
577 TFR D,U
578 LDY #ZONTRA+1 Y=ad 1ére ligne
579 LDA <LARTIR
580 LDB <DECLIG
581 MUL
582 LEAY D,Y
583INVT18 LDA <DECSEG
584 LEAX A,Y
585 LDA <NBSEG2
586INVT19 LDB ,U
587 EORB ,X++
588 STB ,U+
589 DECA
590 BNE INVT19 ->
591 LDB <LARTIR
592 LEAY B,Y
593 LDU <ADPRSL
594 LEAU 40,U
595 STU <ADPRSL
596 DEC <CPTLT
597 BNE INVT18 ->
598 RTS
599
600
601*=======================================
602* S/P raz de l'écran de travail
603*=======================================
604
605XRAZEC PSHS D,Y
606 LDD #$0104
607 LDY #$174A
608 JSR FENLOC
609 JSR FENFON
610 PULS D,Y,PC
611
612
613*=======================================
614* S/P raz de la feuille de travail
615*=======================================
616
617XRAZFE PSHS D,X
618 LEAS -2,S
619MEMBK SET 0
620BKTRA SET 1
621*---------------------------------------
622 LDA BANKC
623 STA MEMBK,S
624 LDA #PBKTRA
625 STA BKTRA,S
626BRAZF0 LDA BKTRA,S
627 CMPA #DBKTRA
628 BGT FRAZF fin ->
629 STA BANKC
630 LDD #0
631 LDX #$A000
632BRAZF1 STD ,X++
633 CMPX #$E000
634 BNE BRAZF1 ->
635 INC BKTRA,S
636 BRA BRAZF0 ->
637FRAZF LDA MEMBK,S
638 STA BANKC
639 LEAS 2,S
640 PULS D,X,PC
641
642
643*=======================================
644* S/P traitement de la fenêtre de
645* cadrage de la feuille
646*
647* Entrée: A =0 cadrage seul
648* #0 +sélection zone
649*
650* Sortie: <ADF pour le cadrage
651* et si sélection zone:
652* CADRNG rangée début (0..101)
653* CADCOL colonne début (0..59 )
654* CADHAU hauteur (1..102)
655* CADLAR (1..120)
656* B éventuelle sélec ext
657* A interrupteur pleine
658* page
659* Z 1 zone ok
660* 0 feuille vide ou aband.
661*=======================================
662
663FFCADS FCB FCALL
664 FDB FFCADF-$4000
665
666 FCB FLOCF,8,18,1,1
667 FCB FEDI
668 FCC \Pleine\
669 FCB 0
670 FCB FLOCR,1,1,1,1
671 FCB FEDI
672 FCC \page\
673 FCB 0
674 FCB FLOCR,2,1,1,1
675 FCB FEDI,BALISE,0
676 FCB FLOCF,11,20,1,1
677 FCB FINV,$50,OFF
678 FCB FSTOP
679
680FFCADC FCB FCALL
681 FDB FFCADF-$4000
682
683 FCB FLOCF,0,0,23,26
684 FCB FCOMF,FF,OFF
685
686 FCB FLOCA,0,5,1,16
687 FCB FPOUSS,$90,OFF
688 FCB FLOCA,0,23,1,12
689 FCB FPOUSS,$91,OFF
690 FCB FLOCA,0,37,1,14
691 FCB FPOUSS,$92,OFF
692 FCB FLOCA,0,53,1,12
693 FCB FPOUSS,$93,OFF
694 FCB FLOCA,0,67,1,12
695 FCB FPOUSS,$94,OFF
696 FCB FLOCA,1,1,2,2
697 FCB FPOUSS,$0F,OFF (ctrl) O
698 FCB FLOCA,4,1,2,2
699 FCB FPOUSS,$10,OFF (ctrl) P
700 FCB FLOCA,7,1,1,2
701 FCB FINV,$12,OFF (ctrl) R
702 FCB FLOCA,10,1,1,2
703 FCB FINV,$13,OFF (ctrl) S
704 FCB FLOCA,13,1,2,2
705 FCB FPOUSS,$14,OFF (ctrl) T
706 FCB FLOCA,16,1,2,2
707 FCB FPOUSS,$15,OFF (ctrl) U
708 FCB FLOCA,20,1,1,2
709 FCB FPOUSS,$05,OFF (ctrl) E
710 FCB FLOCA,22,1,1,2
711 FCB FPOUSS,$11,OFF (ctrl) Q
712 FCB FLOCA,24,6,1,4
713 FCB FPOUSS,BS+$80,OFF
714 FCB FLOCA,24,10,1,2
715 FCB FPOUSS,BS,OFF
716 FCB FLOCA,24,12,1,60
717 FCB FPOUSS,$80,OFF
718 FCB FLOCA,24,72,1,2
719 FCB FPOUSS,HT,OFF
720 FCB FLOCA,24,74,1,4
721 FCB FPOUSS,HT+$80,OFF
722 FCB FLOCA,1,78,2,2
723 FCB FPOUSS,VT+$80,OFF
724 FCB FLOCA,3,78,1,2
725 FCB FPOUSS,VT,OFF
726 FCB FLOCA,4,78,17,2
727 FCB FPOUSS,$81,OFF
728 FCB FLOCA,21,78,1,2
729 FCB FPOUSS,LF,OFF
730 FCB FLOCA,22,78,2,2
731 FCB FPOUSS,LF+$80,OFF
732 FCB FEDI,ESC,$4C,0
733 FCB FSTOP
734
735FFCADF FCB FLOCF,0,0,23,26
736 FCB FTRAME,FTOURI
737 FCB FLOCF,1,1,1,24
738 FCB FFOND,FTOURE,FCADRE
739 FCB FEDI,HT,ESC,$4E
740 FCC \CADRAGE\
741 FCB ESC,$4C,0
742 FCB FLOCF,3,1,15,24
743 FCB FFOND,FTOURE,FCADRE
744 FCB FLOCF,19,1,3,24
745 FCB FFOND,FTOURE,FCADRE
746
747 FCB FLOCF,14,20,1,2
748 FCB FEDI,ESC,$4E,SS2,$2D,0
749 FCB FTOURI
750 FCB FPOUSS,VT,OFF
751 FCB FLOCR,1,-2,1,2
752 FCB FEDI,SS2,$2C,0
753 FCB FTOURI
754 FCB FPOUSS,BS,OFF
755 FCB FLOCR,0,4,1,2
756 FCB FEDI,SS2,$2E,0
757 FCB FTOURI
758 FCB FPOUSS,HT,OFF
759 FCB FLOCR,1,-2,1,2
760 FCB FEDI,SS2,$2F,ESC,$4C,0
761 FCB FTOURI
762 FCB FPOUSS,LF,OFF
763
764 FCB FLOCF,20,3,1,1
765 FCB FEDI
766 FCC \OK\
767 FCB BALISE
768 FCC \Annuler\
769 FCB BALISE,0
770 FCB FLOCF,20,6,1,1
771 FCB FPOUSS,RC,OFF
772 FCB FLOCF,20,22,1,1
773 FCB FPOUSS,FF,OFF
774 FCB FSTOP
775
776*---------------------------------------
777XSPCAD PSHS D,X,Y,U #(SPCADR)#
778 LEAS -128,S
779BUFRED SET 0
780MEMBK SET 120
781DBK SET 121
782YRED SET 122
783DECRNG SET 124 decalage +/-
784DECCOL SET 125 ...
785DRLG SET 126 dern ...
786CLDRO SET 127 col. bord droit
787PA SET 128
788PB SET 129
789*---------------------------------------
790
791 CLR DECRNG,S résultat cadr.
792 CLR DECCOL,S
793
794 LEAX FFCADC,PCR
795 TST PA,S
796 BEQ SPCAD0 ->
797 LEAX FFCADS,PCR
798SPCAD0 LDD #$011C
799 JSR FENOUV
800
801 LDX #239
802 STX XXXXXX
803 LDX #360
804 LDY #39
805 STY YYYYYY
806 LDY #142
807 CLR FILFLG
808 LDB #BOX
809 JSR EXTRA
810
811* Positionnement initial sur la feuille
812
813 LDA BANKC
814 STA MEMBK,S
815
816 LDD <ADF
817 ROLA
818 ROLA
819 ROLA
820 ANDA #3
821 ADDA #PBKTRA
822 STA DBK,S
823 LDD <ADF
824 ANDA #$3F
825 ADDD #$A000
826 STD <ADPRRL
827 LDY #40
828 STY YRED,S
829
830* Raz buffer image rangée
831
832BRED0 LEAX BUFRED,S
833 LDB #120
834BRED1 CLR ,X+
835 DECB
836 BNE BRED1 ->
837
838* Boucle de lecture de 8 lignes (1 car.)
839* en page 0
840
841 LDA DBK,S
842 STA BANKC
843 LDA #9
844 STA <CPTLT
845 LDY <ADPRRL
846BRED2 LEAX BUFRED,S
847 DEC <CPTLT
848 LBEQ RED0F -->
849 LDA BANKC
850 LDB #60
851 CMPA #PBKTRA+2
852 BEQ RED0D dernier bank ->
853 CMPY #$E000-59
854 BCS BRED01 trait. 60 ok ->
855 PSHS Y trait. en 2 fois
856 LDD #$E000
857 SUBD ,S++
858 STB <CPTCT
859BRED00 LDA ,Y+
860 BEQ LRED00 ->
861 STA ,X
862LRED00 LEAX 2,X
863 DECB
864 BNE BRED00 ->
865 INC BANKC
866 LDY #$A000
867 LDB #60
868 SUBB <CPTCT
869BRED01 LDA ,Y+
870 BEQ LRED01 ->
871 STA ,X
872LRED01 LEAX 2,X
873 DECB
874 BNE BRED01 ->
875 CMPY #$E000
876 BCS BRED2 ->
877 INC BANKC
878 LDY #$A000
879 BRA BRED2 ->
880
881RED0D CMPY #$DF40-59 dernier bank
882 BCS BRED03 trait. 60 ok ->
883 PSHS Y trait. en 2 fois
884 LDD #$DF40
885 SUBD ,S++
886 STB <CPTCT
887BRED02 LDA ,Y+
888 BEQ LRED02 ->
889 STA ,X
890LRED02 LEAX 2,X
891 DECB
892 BNE BRED02 ->
893 DEC BANKC
894 DEC BANKC
895 LDY #$A000
896 LDB #60
897 SUBB <CPTCT
898BRED03 LDA ,Y+
899 BEQ LRED03 ->
900 STA ,X
901LRED03 LEAX 2,X
902 DECB
903 BNE BRED03 ->
904 CMPY #$DF40
905 LBCS BRED2 ->
906 DEC BANKC
907 DEC BANKC
908 LDY #$A000
909 LBRA BRED2 ->
910RED0F EQU *
911
912* Boucle de lecture de 8 lignes (1 car.)
913* en page 1
914
915 LDA DBK,S
916 ADDA #3
917 STA BANKC
918 LDA #9
919 STA <CPTLT
920 LDY <ADPRRL
921BRED3 LEAX BUFRED,S
922 LEAX 1,X
923 DEC <CPTLT
924 LBEQ RED1F -->
925 LDA BANKC
926 LDB #60
927 CMPA #PBKTRA+5
928 BEQ RED1D dernier bank ->
929 CMPY #$E000-59
930 BCS BRED11 trait. 60 ok ->
931 PSHS Y trait. en 2 fois
932 LDD #$E000
933 SUBD ,S++
934 STB <CPTCT
935BRED10 LDA ,Y+
936 BEQ LRED10 ->
937 STA ,X
938LRED10 LEAX 2,X
939 DECB
940 BNE BRED10 ->
941 INC BANKC
942 LDY #$A000
943 LDB #60
944 SUBB <CPTCT
945BRED11 LDA ,Y+
946 BEQ LRED11 ->
947 STA ,X
948LRED11 LEAX 2,X
949 DECB
950 BNE BRED11 ->
951 CMPY #$E000
952 BCS BRED3 ->
953 INC BANKC
954 LDY #$A000
955 BRA BRED3 ->
956
957RED1D CMPY #$DF40-59 dernier bank
958 BCS BRED13 trait. 60 ok ->
959 PSHS Y trait. en 2 fois
960 LDD #$DF40
961 SUBD ,S++
962 STB <CPTCT
963BRED12 LDA ,Y+
964 BEQ LRED12 ->
965 STA ,X
966LRED12 LEAX 2,X
967 DECB
968 BNE BRED12 ->
969 DEC BANKC
970 DEC BANKC
971 LDY #$A000
972 LDB #60
973 SUBB <CPTCT
974BRED13 LDA ,Y+
975 BEQ LRED13 ->
976 STA ,X
977LRED13 LEAX 2,X
978 DECB
979 BNE BRED13 ->
980 CMPY #$DF40
981 LBCS BRED3 ->
982 DEC BANKC
983 DEC BANKC
984 LDY #$A000
985 LBRA BRED3 ->
986
987RED1F STY <ADPRRL
988 LDA BANKC
989 SUBA #3
990 STA DBK,S
991
992* Boucle de visualisation de la ligne
993* réduite.
994
995 CLRA
996 LEAU BUFRED,S
997 LDY YRED,S
998RED4 TST ,U+
999 BEQ RED5 ->
1000 LDX #240
1001 LEAX A,X
1002 LDB #PSETXY
1003 JSR EXTRA
1004RED5 INCA
1005 CMPA #120
1006 BNE RED4 ->
1007
1008* Passer à la ligne car. suivante
1009
1010 LEAY 1,Y
1011 STY YRED,S
1012 CMPY #40+102
1013 LBNE BRED0 ->
1014
1015* Sélection opérateur
1016
1017CADR0 JSR FENACT sélection
1018CADR1 JSR FEN
1019 TSTB
1020 BEQ CADR1 ->
1021 CMPB #FF
1022 LBEQ CADRRZ raz ->
1023 CMPB #RC
1024 LBEQ CADROK RC ->
1025 CMPB #VT
1026 LBEQ CADRVT VT ->
1027 CMPB #BS
1028 LBEQ CADRBS BS ->
1029 CMPB #HT
1030 LBEQ CADRHT HT ->
1031 CMPB #LF
1032 LBEQ CADRLF LF ->
1033 TST PA,S
1034 BNE CADR1 ->
1035 LDA #$92
1036 LDX #CADRRT-$4000
1037 LDY #CADRRZ-$4000
1038 LDU #ABORT
1039 LBSR COMBK1
1040 CMPU #0
1041 BEQ CADR1 ->
1042 JMP ,U
1043
1044CADRVT EQU *
1045******
1046
1047* Vérification ligne non vide
1048 JSR FENDES
1049
1050 LDA $E7C3
1051 ORA #1
1052 STA $E7C3
1053 LDX #$4000+5*8*40+15
1054 LDB #8
1055CDRVV0 TST ,X+
1056 LBNE CADR0 ->
1057 DECB
1058 BNE CDRVV0 ->
1059 LDA $E7C3
1060 EORA #1
1061 STA $E7C3
1062 LDX #$4000+5*8*40+15
1063 LDB #7
1064CDRVV1 TST ,X+
1065 LBNE CADR0 ->
1066 DECB
1067 BNE CDRVV1 ->
1068
1069* Scroll point
1070 LDX #$4000+5*8*40+15
1071 LEAY 40,X
1072 LDB #101
1073 STB <CPTLT
1074BVH0 LDB #7
1075BVH1 LDA ,Y+
1076 STA ,X+
1077 DECB
1078 BNE BVH1 ->
1079 LEAX 40-7,X
1080 LEAY 40-7,Y
1081 DEC <CPTLT
1082 BNE BVH0 ->
1083
1084 LDB #7 raz nouv ligne
1085BVH10 CLR ,X+
1086 DECB
1087 BNE BVH10 ->
1088
1089 LDA $E7C3
1090 EORA #1
1091 STA $E7C3
1092 LDX #$4000+5*8*40+15
1093 LEAY 40,X
1094 LDB #101
1095 STB <CPTLT
1096BVH2 LDB #8
1097BVH3 LDA ,Y+
1098 STA ,X+
1099 DECB
1100 BNE BVH3 ->
1101 LEAX 40-8,X
1102 LEAY 40-8,Y
1103 DEC <CPTLT
1104 BNE BVH2 ->
1105
1106 LDB #8 raz nouv ligne
1107BVH30 CLR ,X+
1108 DECB
1109 BNE BVH30 ->
1110
1111 INC DECRNG,S
1112 LBRA CADR0 ->
1113
1114CADRBS EQU *
1115******
1116
1117* Vérification 2 colonnes gauches vides
1118 JSR FENDES
1119
1120 LDA $E7C3
1121 ORA #1
1122 STA $E7C3
1123 LDX #$4000+5*8*40+15
1124 LDB #102
1125CDRBV0 LDA ,X
1126 ANDA #$C0
1127 LBNE CADR0 ->
1128 LEAX 40,X
1129 DECB
1130 BNE CDRBV0 ->
1131
1132* Scroll 2 points
1133 LDX #$4000+5*8*40+22
1134 LDB #102
1135 STB <CPTLT
1136BVG0 LDB #7
1137 LSL ,X
1138 LEAX -1,X
1139BVG1 DEC $E7C3
1140 ROL ,X
1141 INC $E7C3
1142 ROL ,X
1143 LEAX -1,X
1144 DECB
1145 BNE BVG1 ->
1146 LEAX 48,X
1147 DEC <CPTLT
1148 BNE BVG0 ->
1149
1150 LDX #$4000+5*8*40+22
1151 LDB #102
1152 STB <CPTLT
1153BVG2 LDB #7
1154 LSL ,X
1155 LEAX -1,X
1156BVG3 DEC $E7C3
1157 ROL ,X
1158 INC $E7C3
1159 ROL ,X
1160 LEAX -1,X
1161 DECB
1162 BNE BVG3 ->
1163 LEAX 48,X
1164 DEC <CPTLT
1165 BNE BVG2 ->
1166
1167 INC DECCOL,S
1168 LBRA CADR0 ->
1169
1170CADRHT EQU *
1171******
1172
1173* Vérification 2 colonnes droites vides
1174 JSR FENDES
1175
1176 LDA $E7C3
1177 ORA #1
1178 STA $E7C3
1179 LDX #$4000+5*8*40+22
1180 LDB #102
1181CDRHV0 LDA ,X
1182 ANDA #$03
1183 LBNE CADR0 ->
1184 LEAX 40,X
1185 DECB
1186 BNE CDRHV0 ->
1187
1188* Scroll 2 points
1189 LDX #$4000+5*8*40+15
1190 LDB #102
1191 STB <CPTLT
1192BVD0 LDB #7
1193 LSR ,X
1194BVD1 DEC $E7C3
1195 ROR ,X+
1196 INC $E7C3
1197 ROR ,X
1198 DECB
1199 BNE BVD1 ->
1200 LEAX 40-7,X
1201 DEC <CPTLT
1202 BNE BVD0 ->
1203
1204 LDX #$4000+5*8*40+15
1205 LDB #102
1206 STB <CPTLT
1207BVD2 LDB #7
1208 LSR ,X
1209BVD3 DEC $E7C3
1210 ROR ,X+
1211 INC $E7C3
1212 ROR ,X
1213 DECB
1214 BNE BVD3 ->
1215 LEAX 40-7,X
1216 DEC <CPTLT
1217 BNE BVD2 ->
1218
1219 DEC DECCOL,S
1220 LBRA CADR0 ->
1221
1222CADRLF EQU *
1223******
1224
1225* Vérification ligne non vide
1226 JSR FENDES
1227
1228 LDA $E7C3
1229 ORA #1
1230 STA $E7C3
1231 LDX #$4000+5*8*40+15+101*40
1232 LDB #8
1233CDRVB0 TST ,X+
1234 LBNE CADR0 ->
1235 DECB
1236 BNE CDRVB0 ->
1237 LDA $E7C3
1238 EORA #1
1239 STA $E7C3
1240 LDX #$4000+5*8*40+15+101*40
1241 LDB #7
1242CDRVB1 TST ,X+
1243 LBNE CADR0 ->
1244 DECB
1245 BNE CDRVB1 ->
1246
1247* Scroll point
1248 LDX #$4000+5*8*40+15+101*40
1249 LEAY -40,X
1250 LDB #101
1251 STB <CPTLT
1252BVB0 LDB #7
1253BVB1 LDA ,Y+
1254 STA ,X+
1255 DECB
1256 BNE BVB1 ->
1257 LEAX -47,X
1258 LEAY -47,Y
1259 DEC <CPTLT
1260 BNE BVB0 ->
1261
1262 LDB #7 raz nouv ligne
1263BVB10 CLR ,X+
1264 DECB
1265 BNE BVB10 ->
1266
1267 LDA $E7C3
1268 EORA #1
1269 STA $E7C3
1270 LDX #$4000+5*8*40+15+101*40
1271 LEAY -40,X
1272 LDB #101
1273 STB <CPTLT
1274BVB2 LDB #8
1275BVB3 LDA ,Y+
1276 STA ,X+
1277 DECB
1278 BNE BVB3 ->
1279 LEAX -48,X
1280 LEAY -48,Y
1281 DEC <CPTLT
1282 BNE BVB2 ->
1283
1284 LDB #8 raz nouv ligne
1285BVB30 CLR ,X+
1286 DECB
1287 BNE BVB30 ->
1288
1289 DEC DECRNG,S
1290 LBRA CADR0 ->
1291
1292CADROK EQU * Sortie normale
1293******
1294 JSR FENDES
1295 LDA MEMBK,S
1296 STA BANKC
1297
1298* Déterminer nouvelle adresse feuille
1299 LDA DECRNG,S
1300 BEQ CADRO2 ->
1301 BMI CADRO0 ->
1302 LSLA *8*60
1303 LDB #240
1304 MUL
1305 ADDD <ADF
1306 CMPD #48960
1307 BCS CADRO1 ->
1308 SUBD #48960
1309 BRA CADRO1 ->
1310CADRO0 NEGA
1311 LSLA *8*60
1312 LDB #240
1313 MUL
1314 PSHS D
1315 LDD <ADF
1316 SUBD ,S++
1317 BCC CADRO1 ->
1318 ADDD #48960
1319CADRO1 STD <ADF
1320CADRO2 LDB DECCOL,S
1321 BEQ CADRO5 ->
1322 BMI CADRO3 ->
1323 CLRA
1324 ADDD <ADF
1325 CMPD #48960
1326 BCS CADRO4 ->
1327 SUBD #48960
1328 BRA CADRO4 ->
1329CADRO3 NEGB
1330 CLRA
1331 PSHS D
1332 LDD <ADF
1333 SUBD ,S++
1334 BCC CADRO4 ->
1335 ADDD #48960
1336CADRO4 STD <ADF
1337
1338* Déterminer sélection si demandé
1339CADRO5 TST PA,S
1340 LBEQ CADRO6 ->
1341 LDB #$50
1342 JSR FENCH
1343 LDA VAL,X
1344 STA PA,S
1345
1346* Déterminer la 1ère ligne non vide
1347 LDA $E7C3 # page 0
1348 ORA #1
1349 STA $E7C3
1350 LDX #$4000+5*8*40+15
1351 LDB #102
1352 STB <CPTLT
1353BD1L0 LDB #8
1354BD1L1 TST ,X+
1355 BNE LD1L0 trouvé ->
1356 DECB
1357 BNE BD1L1 ->
1358 LEAX 40-8,X
1359 DEC <CPTLT
1360 BNE BD1L0 ->
1361
1362LD1L0 LDB #102
1363 SUBB <CPTLT
1364 STB CADRNG result page 0
1365
1366 LDA $E7C3 # page 1
1367 EORA #1
1368 STA $E7C3
1369 LDX #$4000+5*8*40+15
1370 LDB #102
1371 STB <CPTLT
1372BD2L0 LDB #7
1373BD2L1 TST ,X+
1374 BNE LD2L0 trouvé ->
1375 DECB
1376 BNE BD2L1 ->
1377 LEAX 40-7,X
1378 DEC <CPTLT
1379 BNE BD2L0 ->
1380
1381LD2L0 LDB #102 result page 1
1382 SUBB <CPTLT
1383 CMPB CADRNG
1384 BGE LD2L1 ->
1385 STB CADRNG
1386LD2L1 LDB CADRNG
1387 CMPB #102
1388 LBEQ CADRRZ feuille vide ->
1389
1390* Détermination dernière ligne
1391 LDA $E7C3 # page 0
1392 ORA #1
1393 STA $E7C3
1394 LDX #$4000+5*8*40+15+101*40
1395 LDB #101
1396 STB <CPTLT
1397BDDL0 LDB #8
1398BDDL1 TST ,X+
1399 BNE LDDL0 trouvé ->
1400 DECB
1401 BNE BDDL1 ->
1402 LEAX -48,X
1403 DEC <CPTLT
1404 BRA BDDL0 ->
1405
1406LDDL0 LDB <CPTLT result page 0
1407 STB DRLG,S
1408
1409 LDA $E7C3 # page 1
1410 EORA #1
1411 STA $E7C3
1412 LDX #$4000+5*8*40+15+101*40
1413 LDB #101
1414 STB <CPTLT
1415BDDL2 LDB #7
1416BDDL3 TST ,X+
1417 BNE LDDL1 trouvé ->
1418 DECB
1419 BNE BDDL3 ->
1420 LEAX -47,X
1421 DEC <CPTLT
1422 BRA BDDL2 ->
1423
1424LDDL1 LDB <CPTLT
1425 CMPB DRLG,S
1426 BGT LDDL2 ->
1427 LDB DRLG,S
1428LDDL2 SUBB CADRNG
1429 INCB
1430 STB CADHAU
1431
1432* Cumul des lignes sur le buffer
1433* BUFRED
1434 LEAX BUFRED,S
1435 LDB #15
1436BRAZBR CLR ,X+
1437 DECB
1438 BNE BRAZBR ->
1439
1440 LDA $E7C3 page 0
1441 ORA #1
1442 STA $E7C3
1443 LDX #$4000+5*8*40+15
1444 LDA CADRNG
1445 LDB #40
1446 MUL
1447 LEAX D,X
1448 LDA CADHAU
1449 STA <CPTLT
1450BCUM0 LDB #8
1451 LEAY BUFRED,S
1452BCUM1 LDA ,X+
1453 ORA ,Y
1454 STA ,Y++
1455 DECB
1456 BNE BCUM1 ->
1457 LEAX 40-8,X
1458 DEC <CPTLT
1459 BNE BCUM0 ->
1460
1461 LDA $E7C3 page 1
1462 EORA #1
1463 STA $E7C3
1464 LDX #$4000+5*8*40+15
1465 LDA CADRNG
1466 LDB #40
1467 MUL
1468 LEAX D,X
1469 LDA CADHAU
1470 STA <CPTLT
1471BCUM2 LDB #7
1472 LEAY BUFRED,S
1473 LEAY 1,Y
1474BCUM3 LDA ,X+
1475 ORA ,Y
1476 STA ,Y++
1477 DECB
1478 BNE BCUM3 ->
1479 LEAX 40-7,X
1480 DEC <CPTLT
1481 BNE BCUM2 ->
1482
1483* Recherche borne gauche
1484 LEAX BUFRED,S
1485 CLRB
1486BRBG0 LDA ,X+
1487 BNE LRBG0 ->
1488 INCB
1489 BRA BRBG0 ->
1490LRBG0 PSHS A
1491 LDA #8
1492 MUL
1493 STB CADCOL
1494 PULS A
1495 LDB #-1
1496BRBG1 LSLA
1497 INCB
1498 BCC BRBG1 ->
1499 ADDB CADCOL
1500 LSRB colonne / page
1501 STB CADCOL paire
1502
1503* Recherche borne droite
1504 LEAX BUFRED,S
1505 LDB #14
1506BRBD0 LDA B,X
1507 BNE LRBD0 ->
1508 DECB
1509 BRA BRBD0 ->
1510LRBD0 PSHS A
1511 LDA #8
1512 MUL
1513 PULS A
1514 STB CLDRO,S
1515 LDB #8
1516BRBD1 LSRA
1517 DECB
1518 BCC BRBD1 ->
1519 ADDB CLDRO,S
1520 SUBB CADCOL 0..59 et non
1521 SUBB CADCOL 0..119 !!!
1522 INCB
1523 STB CADLAR
1524
1525 LDX #240
1526 LDA CADCOL
1527 LSLA
1528 LEAX A,X
1529 STX XXXXXX
1530 LDA CADLAR
1531 LEAX A,X
1532 LEAX -1,X
1533 LDY #40
1534 LDA CADRNG
1535 LEAY A,Y
1536 STY YYYYYY
1537 LDA CADHAU
1538 LEAY A,Y
1539 LEAY -1,Y
1540 LDB #BOX
1541 JSR EXTRA
1542
1543CADRO6 CLR PB,S
1544 ANDCC #$FB
1545 LEAS 128,S
1546 PULS D,X,Y,U,PC ->>
1547
1548CADRRZ EQU *
1549******
1550 CLRB
1551CADRRT STB PB,S
1552 CLRB
1553 JSR FENFER
1554 JSR FENACT
1555 LDA MEMBK,S
1556 STA BANKC
1557 ORCC #$04
1558 LEAS 128,S
1559 PULS D,X,Y,U,PC ->>
1560
1561
1562*=======================================
1563* S/P visualisation de l'ascenceur bas
1564*=======================================
1565
1566XVISAB LDA #1
1567 LDB #60
1568 TFR D,Y
1569 LDA #24
1570 LDB #12
1571 JSR FENLOC
1572 JSR FENFON
1573 JSR FENTI
1574 LDA #1
1575 LDB #37
1576 TFR D,Y
1577 LDA #24
1578 LDB #12
1579 ADDB CLDECR
1580 JSR FENLOC
1581 JSR FENTRA
1582 JSR FENTI
1583 RTS
1584
1585
1586*=======================================
1587* S/P visualisation de l'ascenceur droit
1588*=======================================
1589
1590XVISAD LDA #17
1591 LDB #2
1592 TFR D,Y
1593 LDA #4
1594 LDB #78
1595 JSR FENLOC
1596 JSR FENFON
1597 JSR FENTI
1598 LDA #4
1599 LDB #2
1600 TFR D,Y
1601 LDB RGDECR
1602 CLRA
1603DDIV6 SUBB #6
1604 BCS FDIV6 ->
1605 INCA
1606 BRA DDIV6 ->
1607FDIV6 TSTA
1608 BNE VISAS0 ->
1609 TST RGDECR
1610 BEQ VISAS1 ->
1611 INCA montrer pas haut
1612 BRA VISAS1
1613VISAS0 CMPA #13
1614 BNE VISAS1
1615 LDB RGDECR
1616 CMPB #78
1617 BGE VISAS1
1618 DECA montrer pas bas
1619VISAS1 ADDA #4
1620 LDB #78
1621 JSR FENLOC
1622 JSR FENTRA
1623 JSR FENTI
1624 RTS
Note: See TracBrowser for help on using the repository browser.