source: thomson/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-D1.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: 22.8 KB
Line 
1 TITLE TO-GRAPH: S/P CARTOUCHE
2* ------------------------------
3 PAGE
4
5****************************************
6* *
7* TO-GRAPH *
8* *
9* S/P cartouche *
10* *
11* ATTENTION version demo !!! *
12* *
13* *
14****************************************
15
16
17*=======================================
18* S/P recherche d'un album dans table
19* (création si inexistant)
20* Entrée: X pt nom album
21* Sortie: CY 1 pas de place
22* 0 ok
23* X pt dans table si ok
24*=======================================
25
26XCHALB PSHS D,Y,U
27 LEAS -1,S
28ALBC SET 0
29PD SET 1
30*---------------------------------------
31
32 LBSR XPTALB
33 BCC CHALBF trouvé ->
34
35 TST MAXALB
36 BEQ CHALBR pas de place ->
37 LDU #TABALB
38 CLR ALBC,S
39CHAL1 TST 8,U
40 BMI CHAVID poste vide ->
41 INC ALBC,S
42 LDA ALBC,S
43 CMPA MAXALB
44 BGE CHALBR pas de place ->
45 LEAU 9,U
46 BRA CHAL1 ->
47
48CHAVID LDA #8
49CHAVI0 LDB ,X+
50 STB ,U+
51 DECA
52 BNE CHAVI0 ->
53 NEG ,U marque occupé
54 LEAX -8,U
55 INC NBALB
56CHALBF ANDCC #$FE
57 LEAS 1,S
58 PULS D,Y,U,PC ->>
59CHALBR LDB #7 'out of memory'
60 JSR DOSERR
61 ORCC #$01
62 LEAS 1,S
63 PULS D,Y,U,PC ->>
64
65
66*=======================================
67* S/P saisie d'un album
68*
69* Entrée: A,B coordonnées fenêtre
70* X Pt recepteur nom
71* Sortie: CY 1 Raz
72* 0 ok
73* (X) zone nom rendu
74*=======================================
75
76FCZIAL FCB FLOCF,0,0,11,26
77 FCB FTRAME,FTOURI
78 FCB FLOCF,1,1,5,24
79 FCB FFOND,FTOURE,FCADRE
80 FCB FLOCF,7,1,3,24
81 FCB FFOND,FTOURE,FCADRE
82 FCB FLOCF,2,3,1,24
83 FCB FEDI
84 FCC \Nomdel'album:\
85 FCB 0
86 FCB FLOCF,4,16,1,8
87 FCB FTOURE
88 FCB FCZI,255,TEXTE
89
90 FCB FLOCF,8,3,1,24
91 FCB FEDI
92 FCC \OK\
93 FCB BALISE
94 FCC \Annuler\
95 FCB BALISE,0
96 FCB FLOCF,8,6,1,1
97 FCB FPOUSS,RC,OFF
98 FCB FLOCF,8,22,1,1
99 FCB FPOUSS,FF,OFF
100 FCB FSTOP
101
102*---------------------------------------
103XCZIAL PSHS D,X,Y,U
104 LEAS -9,S
105BUF1 SET 0
106PD SET 9
107PX SET 11
108*---------------------------------------
109
110 LEAX FCZIAL,PCR
111 JSR FENOUV
112
113 JSR FENACT sélection
114CZIAL1 JSR FEN
115 TSTB
116 BEQ CZIAL1 ->
117 CMPB #FF
118 BEQ CZIALR raz ->
119 CMPB #RC
120 BEQ CZIALO RC ->
121 BRA CZIAL1 ->
122
123CZIALO LDX PX,S résultat
124 LDB #8
125 LDA #SP
126CZIAO0 STA ,X+
127 DECB
128 BNE CZIAO0 ->
129 LEAX BUF1,S
130 LDB #255
131 JSR FENLCZ
132 LEAX BUF1,S
133 LDY PX,S
134CZIAO1 LDA ,X+
135 BEQ CZIAO2 ->
136 STA ,Y+
137 BRA CZIAO1 ->
138
139CZIAO2 CLRB
140 JSR FENFER
141 JSR FENACT
142 ANDCC #$FE
143 LEAS 9,S
144 PULS D,X,Y,U,PC ->>
145CZIALR CLRB
146 JSR FENFER
147 JSR FENACT
148 ORCC #$01
149 LEAS 9,S
150 PULS D,X,Y,U,PC ->>
151
152
153*=======================================
154* S/P raz d'une rectangulaire au point
155*
156* Entrée: XT0,YT0 coord. début
157* XT1,YT1 coord. fin
158*=======================================
159
160XCLRTI LDA #$FF
161 STA FILFLG
162 LDD #PLEIN
163 STD MACP
164 LDU #TRRAZ
165 LBSR COMBK1
166 LDX <XT0
167 STX XXXXXX
168 CLRA
169 LDB <YT0
170 STD YYYYYY
171 LDX <XT1
172 CLRA
173 LDB <YT1
174 TFR D,Y
175 LDB #BOX
176 JSR EXTRA
177 LDU #TRNORM
178 LBSR COMBK1
179 RTS
180
181
182*=======================================
183* S/P ecriture sur fichier
184*
185* Entrée: A car. à ecrire
186* Sortie: CY 0 si ok
187* 1 si erreur (fichier sera
188* fermé !)
189*=======================================
190
191XECRFI PSHS B
192*---------------------------------------
193 LDB #PRINT
194 JSR EXTRA
195 TSTB
196 BNE ECFIR erreur ->
197 ANDCC #$FE
198 PULS B,PC ->>
199
200ECFIR PSHS B
201 LDB #CLOSE # erreur PRINT
202 JSR EXTRA
203 PULS B
204 JSR DOSERR
205 ORCC #$1
206 PULS B,PC ->>
207
208
209*=======================================
210* S/P impression d'un fragment de page
211* limité par CADRNG-CADCOL
212* CADHAU-CADLAR
213* Entrée B interrupteur pleine page
214*=======================================
215
216FFDEMO FCB FLOCF,0,0,10,56
217 FCB FFOND,FTOURE,FCADRE
218
219 FCB FLOCF,1,2,1,56
220 FCB FEDI
221 FCC \Distribution:\
222 FCB 0
223 FCB FLOCF,3,6,1,56
224 FCB FEDI,ESC,$4E
225 FCC \A.S.C.I.\
226 FCB 0
227 FCB FLOCR,2,0,1,56
228 FCB FEDI
229 FCC \365ChemindesMontants\
230 FCB 0
231 FCB FLOCR,2,0,1,56
232 FCB FEDI
233 FCC \54690EULMONT\
234 FCB ESC,$4C,0
235 FCB FSTOP
236
237FFCIMP FCB FLOCF,0,0,11,21
238 FCB FTRAME,FTOURI
239
240 FCB FLOCF,1,1,5,19
241 FCB FFOND,FTOURE,FCADRE
242 FCB FLOCF,2,3,1,19
243 FCB FEDI
244 FCC \ImprimanteOK?\
245 FCB 0
246 FCB FLOCF,4,3,1,19
247 FCB FEDI
248 FCC \DoublePasse\
249 FCB BALISE,0
250 FCB FLOCF,4,17,1,1
251 FCB FINV,$44,OFF
252
253 FCB FLOCF,7,1,3,19
254 FCB FFOND,FTOURE,FCADRE
255 FCB FLOCF,8,3,1,19
256 FCB FEDI
257 FCC \OK\
258 FCB BALISE
259 FCC \Annuler\
260 FCB BALISE,0
261 FCB FLOCF,8,6,1,1
262 FCB FPOUSS,RC,OFF
263 FCB FLOCF,8,17,1,1
264 FCB FPOUSS,FF,OFF
265 FCB FSTOP
266
267*---------------------------------------
268XIMPPA PSHS B
269 LEAS -963,S
270FLGPAS SET 0
271MEMBK SET 1
272DBK SET 2
273BUFFER SET 3
274PB SET 963
275*---------------------------------------
276 LDA BANKC
277 STA MEMBK,S
278
279 LDD #$0633
280 LEAX FFCIMP,PCR
281 JSR FENOUV
282
283* Sélection opérateur
284
285IMPC0 JSR FENACT sélection
286IMPC1 JSR FEN
287 TSTB
288 BEQ IMPC1 ->
289 CMPB #FF
290 LBEQ IMPCRZ raz ->
291 CMPB #RC
292 BEQ IMPCOK RC ->
293 BRA IMPC1
294
295IMPCOK JSR FENDES
296 JSR FENCH
297 JSR FENIVD
298
299* V E R S I O N D E M O ! ! ! ! ! !
300
301 LEAX FFDEMO,PCR
302 LDD #$0711
303 JSR FENOUV
304 JSR FENACT
305BFDEM JSR FEN
306 TSTB
307 BNE BFDEMF ->
308 JSR LPIN
309 BCS BFDEMF ->
310 BEQ BFDEMF ->
311 BRA BFDEM ->
312BFDEMF CLRB
313 JSR FENFER
314
315IMPCRZ LDA MEMBK,S
316 STA BANKC
317 LEAS 963,S
318 CLRB
319 JSR FENFER
320 PULS B,PC
321
322
323*=======================================
324* S/P impression d'une ligne graphique
325*
326* Entrée X pt buffer
327* 8 seg. 1er car
328* 8 seg. 2eme car
329* ...
330* A 0 en simple passage
331* #0 en double passage
332* B nb car.
333*=======================================
334
335XIMPLI PSHS D,X,Y,U
336 LEAS -10,S
337BUFV SET 0
338NBSEG SET 8
339PA SET 10
340PB SET 11
341PX SET 12
342*---------------------------------------
343 STB CPTLT
344
345* Codage buffer en colonnes
346BIMPL0 LEAY BUFV,S raz mano
347 LDA #8
348BIMPL1 CLR ,Y+
349 DECA
350 BNE BIMPL1 ->
351
352 LDA #8 colonnes car.
353 STA CPTCT cour. -> mano
354BIMPL2 LDA #8
355 LEAY BUFV,S
356 LDB ,X+
357BIMPL3 LSLB
358 ROR ,Y+
359 DECA
360 BNE BIMPL3 ->
361 DEC CPTCT
362 BNE BIMPL2 ->
363
364 LEAX -8,X buffer recodé
365 LEAY BUFV,S
366 LDA #8
367BIMPL4 LDB ,Y+
368 STB ,X+
369 DECA
370 BNE BIMPL4 ->
371
372 DEC CPTLT
373 BNE BIMPL0 car. suiv ->
374
375* Calcul et codage ASCII nb segment
376* en soustrayant les nuls de droite
377 LDB PB,S
378 LDA #8
379 MUL
380 LDX PX,S
381 LEAX D,X
382LIMPK0 TST ,-X
383 BNE LIMPK1 ->
384 SUBD #1
385 BNE LIMPK0 ->
386LIMPK1 STD NBSEG,S
387 LBEQ LIMPL3 rien ->
388
389 LEAX BUFV,S
390 LDY #3
391 JSR BINDCD
392 LDA #3
393 LEAX BUFV,S
394BIMPL5 LDB ,X+
395 CMPB #$20
396 BNE LIMPL0 ->
397 ADDB #$10
398 STB -1,X
399 DECA
400 BNE BIMPL5 ->
401
402LIMPL0 LDB #ESC édition graphiq.
403 JSR RSCO
404 LDB #$47
405 LDA PA,S
406 BEQ LIMPL1
407 ADDB #2
408LIMPL1 JSR RSCO
409
410 LEAX BUFV,S
411 LDA #3
412BIMPL6 LDB ,X+
413 JSR RSCO
414 DECA
415 BNE BIMPL6 ->
416
417 LDX PX,S
418 LDY NBSEG,S
419
420 LDA PA,S
421 BNE BIMPL8 double ->
422
423BIMPL7 LDB ,X+ simple
424 JSR RSCO
425 LEAY -1,Y
426 BNE BIMPL7 ->
427 BRA LIMPL3 ->
428
429BIMPL8 LDA ,X+ double/1er oct.
430 CLRB
431 LSRA
432 RORB
433 LSRB
434 LSRA
435 RORB
436 LSRB
437 LSRA
438 RORB
439 LSRB
440 LSRA
441 RORB
442 STB BUFV,S
443 LSRB
444 ORB BUFV,S
445 JSR RSCO
446* double/1er oct.
447 CLRB
448 LSRA
449 RORB
450 LSRB
451 LSRA
452 RORB
453 LSRB
454 LSRA
455 RORB
456 LSRB
457 LSRA
458 RORB
459 STB BUFV,S
460 LSRB
461 ORB BUFV,S
462 JSR RSCO
463 LEAY -1,Y
464 BNE BIMPL8 ->
465
466LIMPL3 LDB #LF lig. suiv
467 JSR RSCO
468
469 LEAS 10,S
470 PULS D,X,Y,U,PC
471
472
473*=======================================
474* S/P lecture sur le fichier courant
475*
476* Sortie: A car. lu si ok
477* CY 0 si ok
478* 1 si pb -> erreur traitée
479* fichier fermé
480*=======================================
481
482XLECFI PSHS B
483*---------------------------------------
484 LDB #INPUT
485 JSR EXTRA
486 TSTB
487 BNE LEFIFR erreur ->
488 LDB #78 'bad picture'
489 TST EOFFLG si eof !
490 BNE LEFIFR ->
491 LDA CARCOU
492 ANDCC #$FE
493 PULS B,PC ->>
494
495LEFIFR JSR DOSERR
496 LDB #CLOSE
497 JSR EXTRA
498 ORCC #1
499 PULS B,PC
500
501
502*=======================================
503* S/P lecture écran -> tiroir
504*
505* Entrée XT0,YT0 coord. début
506* XT1,YT1 coord. fin
507*=======================================
508
509TMAQG2 FDB $FF7F,$3F1F,$0F07,$0301
510TMAQD2 FDB $80C0,$E0F0,$F8FC,$FEFF
511
512XLITTI EQU *
513*---------------------------------------
514 LDA #1 note tiroir ok
515 STA <FLGTIR
516
517* calcul des dimensions points
518 LDD <XT1
519 SUBD <XT0
520 ADDD #1
521 STD <LPTTIR
522 LDA <YT1
523 SUBA <YT0
524 INCA
525 STA <HPTTIR
526
527* calcul des dimensions segment
528* Nb: le tiroir est augmenté de 1
529* en largeur à cause décalages
530* ultérieurs
531 LDD <XT0
532 LSRA
533 RORB
534 LSRA
535 RORB
536 LSRB
537 STB <COLT0
538 LDD <XT1
539 LSRA
540 RORB
541 LSRA
542 RORB
543 LSRB
544 INCB +1 sur largeur
545 STB <COLT1
546 SUBB <COLT0
547 INCB
548 STB <LARTIR
549 LDD <XT0
550 ANDB #$07
551 STB <DECTIR décal. bit/seg.
552
553* calcul des référence 1er segment
554* (page écran et adresse
555 LDA $E7C3
556 ANDA #$FE
557 LDB <COLT0
558 LSRB
559 BCS XDCC2 ->
560 ORA #$01
561XDCC2 STA <PRE7C3
562 LDA <YT0
563 LDB #40
564 MUL
565 ADDD #$4000
566 STD <ADPRSG
567 CLRA
568 LDB <COLT0
569 LSRB
570 ADDD <ADPRSG
571 STD <ADPRSG
572
573* calcul des nb de seg. sur page
574* du 1er et sur l'autre
575 LDA <LARTIR
576 LSRA
577 STA <NBSEG1
578 STA <NBSEG2
579 BCC XDCC3 ->
580 INC <NBSEG1
581
582* acquisition des seg. 1ère page
583XDCC3 LDA <PRE7C3
584 STA $E7C3
585 LDA <HPTTIR
586 STA <CPTLT
587 LDU <ADPRSG
588 STU <ADPRSL
589 LDX #ZONTRA
590 TFR X,Y Y=ad 1ère lign
591XDCC10 LDA <NBSEG1
592XDCC11 LDB ,U+
593 STB ,X++
594 DECA
595 BNE XDCC11 ->
596 TFR Y,X
597 LDB <LARTIR
598 ABX
599 TFR X,Y
600 LDU <ADPRSL
601 LEAU 40,U
602 STU <ADPRSL
603 DEC <CPTLT
604 BNE XDCC10 ->
605
606* acquisition des seg. 2ème page
607 LDA $E7C3
608 EORA #$01
609 STA $E7C3
610 LDA <HPTTIR
611 STA <CPTLT
612 CLRA
613 LDB <PRE7C3
614 ANDB #1
615 EORB #1
616 ADDD <ADPRSG
617 STD <ADPRSL
618 TFR D,U
619 LDX #ZONTRA+1
620 TFR X,Y Y=ad 1ère lign
621XDCC20 LDA <NBSEG2
622XDCC21 LDB ,U+
623 STB ,X++
624 DECA
625 BNE XDCC21 ->
626 TFR Y,X
627 LDB <LARTIR
628 ABX
629 TFR X,Y
630 LDU <ADPRSL
631 LEAU 40,U
632 STU <ADPRSL
633 DEC <CPTLT
634 BNE XDCC20 ->
635
636* mise à zéro des bits hors tiroir
637* à gauche
638 LEAX TMAQG2,PCR
639 LDA <DECTIR
640 BEQ RZDT ->
641 LDA A,X
642 STA <CPTCT
643 LDA <HPTTIR
644 LDX #ZONTRA
645BRGT LDB ,X
646 ANDB <CPTCT
647 STB ,X
648 LDB <LARTIR
649 ABX
650 DECA
651 BNE BRGT ->
652
653* mise à zéro des bits hors tiroir
654* à droite
655RZDT LDD <XT1
656 ANDB #7
657 CMPB #7
658 BEQ RZDD ->
659 LEAX TMAQD2,PCR
660 LDA B,X
661 STA <CPTCT
662 LDA <HPTTIR
663 LDX #ZONTRA
664 LDB <LARTIR
665 ABX
666 LEAX -2,X
667BRDT LDB ,X
668 ANDB <CPTCT
669 STB ,X
670 LDB <LARTIR
671 ABX
672 DECA
673 BNE BRDT ->
674
675* mise à zéro du segment supplé-
676* mentaire pour décalage
677RZDD LDA <HPTTIR
678 LDX #ZONTRA
679 LDB <LARTIR
680 ABX
681 LEAX -1,X
682BRDD CLR ,X
683 LDB <LARTIR
684 ABX
685 DECA
686 BNE BRDD ->
687 RTS
688
689
690*=======================================
691* S/P Lecture d'un bit sur le tiroir
692*
693* Entrée: X coord. dans tiroir
694* CPTLT
695* Sortie: Z bit nul ou non
696*=======================================
697
698TEXTBL FDB $8040,$2010,$0804,$0201
699
700XLECTX PSHS X
701PX SET 0
702*---------------------------------------
703 LDU #$A000
704 LDA <CPTLT
705 LDB <LARTIR
706 MUL
707 LEAU D,U
708 TFR X,D
709 LSRA
710 RORB
711 LSRA
712 RORB
713 LSRB
714 LDB D,U
715 LDA PX+1,S
716 ANDA #7
717 LEAX TEXTBL,PCR
718 ANDB A,X
719 PULS X,PC
720
721
722*=======================================
723* S/P pointage d'un album dans table
724*
725* Entrée: X pt nom album
726* Sortie: CY 1 pas trouvé
727* 0 ok
728* X pt dans table si ok
729* non modifié sinon
730*=======================================
731
732XPTALB PSHS D,X,Y,U
733 LEAS -1,S
734ALBC SET 0
735PD SET 1
736PX SET 3
737*---------------------------------------
738
739 TST MAXALB
740 BEQ PTALER ->
741
742 LDU #TABALB
743 CLR ALBC,S
744PTAL1 TST 8,U
745 BMI PTAVID poste vide ->
746 LDX PX,S
747 TFR U,Y
748 LDA #8
749PTAL2 LDB ,X+
750 CMPB ,Y+
751 BNE PTAL3 différent ->
752 DECA
753 BNE PTAL2 ->
754 BRA PTALOK trouvé ->
755PTAL3 INC ALBC,S
756 LDA ALBC,S
757 CMPA MAXALB
758 BGE PTALER fini ->
759PTAVID LEAU 9,U
760 BRA PTAL1 ->
761
762PTALOK STU PX,S
763 ANDCC #$FE
764 LEAS 1,S
765 PULS D,X,Y,U,PC ->>
766PTALER ORCC #$01
767 LEAS 1,S
768 PULS D,X,Y,U,PC ->>
769
770
771*=======================================
772* S/P sélection d'un album préexistant
773*
774* Entrée: A,B coordonnées fenêtre
775* X =0 => visu seule
776* =-1 => sélection
777* Y nb niv. à remonter si ok
778* (aucun si <0 )
779* Sortie: CY 1 Raz ou pas d'album
780* 0 ok
781* X pt dans table si ok
782*=======================================
783
784FFELAL FCB FLOCF,0,0,13,44
785 FCB FTRAME,FTOURI
786 FCB FCOMF,FF,OFF
787 FCB FLOCF,1,1,1,42
788 FCB FFOND,FTOURE,FCADRE
789 FCB FLOCF,1,15,1,42
790 FCB FEDI,ESC,$4E
791 FCC \ALBUMS\
792 FCB ESC,$4C,0
793 FCB FLOCF,3,1,9,42
794 FCB FFOND,FTOURE,FCADRE
795
796 FCB FLOCF,4,3,1,8
797 FCB FPOUSS,200,INTERD
798 FCB FLOCF,4,13,1,8
799 FCB FPOUSS,201,INTERD
800 FCB FLOCF,4,23,1,8
801 FCB FPOUSS,202,INTERD
802 FCB FLOCF,4,33,1,8
803 FCB FPOUSS,203,INTERD
804
805 FCB FLOCF,6,3,1,8
806 FCB FPOUSS,204,INTERD
807 FCB FLOCF,6,13,1,8
808 FCB FPOUSS,205,INTERD
809 FCB FLOCF,6,23,1,8
810 FCB FPOUSS,206,INTERD
811 FCB FLOCF,6,33,1,8
812 FCB FPOUSS,207,INTERD
813
814 FCB FLOCF,8,3,1,8
815 FCB FPOUSS,208,INTERD
816 FCB FLOCF,8,13,1,8
817 FCB FPOUSS,209,INTERD
818 FCB FLOCF,8,23,1,8
819 FCB FPOUSS,210,INTERD
820 FCB FLOCF,8,33,1,8
821 FCB FPOUSS,211,INTERD
822
823 FCB FLOCF,10,3,1,8
824 FCB FPOUSS,212,INTERD
825 FCB FLOCF,10,13,1,8
826 FCB FPOUSS,213,INTERD
827 FCB FLOCF,10,23,1,8
828 FCB FPOUSS,214,INTERD
829 FCB FLOCF,10,33,1,8
830 FCB FPOUSS,215,INTERD
831 FCB FSTOP
832
833MPASAL FCC \PASD'ALBUM\
834 FCB 0
835
836*---------------------------------------
837XSELAL PSHS D,X,Y,U
838 LEAS -2,S
839ALBC SET 0
840ALBOK SET 1
841PD SET 2
842PX SET 4
843PYL SET 7
844*---------------------------------------
845
846 TST NBALB
847 BNE SELAL0 ->
848 LEAX MPASAL,PCR
849 JSR FENERR
850 LBRA SELALF ->
851SELAL0 LEAX FFELAL,PCR
852 LDD PD,S
853 JSR FENOUV
854
855 CLR ALBC,S visu albums
856 CLR ALBOK,S
857 LDU #TABALB
858SELAL1 TST 8,U
859 BMI ALVID ->
860 LDB ALBOK,S poste occupé
861 ADDB #200
862 JSR FENCH
863 TST PX,S
864 BEQ SELALV visu seule ->
865 LDA #OFF
866 STA VAL,X
867SELALV LDA #8
868SELAL2 LDB ,U+
869 JSR FENPUT
870 DECA
871 BNE SELAL2 ->
872 LEAU 1,U
873 INC ALBOK,S
874SELAL3 INC ALBC,S
875 LDA ALBC,S
876 CMPA #16
877 BGE SELAL4 fini ->
878 BRA SELAL1 ->
879ALVID LEAU 9,U
880 BRA SELAL3 ->
881
882SELAL4 JSR FENACT sélection
883SELAL5 JSR FEN
884 TSTB
885 BEQ SELAL5 ->
886 CMPB #FF
887 BEQ SELALR raz ->
888 TST PX,S
889 BEQ SELAL5 visu seule ->
890 SUBB #200
891 BMI SELAL5 ->
892 CMPB ALBOK,S
893 BGE SELAL5 ->
894
895* Album sélectionné
896 INCB
897 LDX #TABALB
898SELAL6 TST 8,X
899 BMI SELAL7 ->
900 DECB
901 BEQ FSELAL pointé ->
902SELAL7 LEAX 9,X
903 BRA SELAL6 ->
904
905FSELAL STX PX,S
906 LDB PYL,S
907 BMI SELALZ dépile par appel
908 JSR FENFER .lant
909 JSR FENACT
910SELALZ ANDCC #$FE
911 LEAS 2,S
912 PULS D,X,Y,U,PC ->>
913SELALR CLRB
914 JSR FENFER
915 JSR FENACT
916SELALF ORCC #$01
917 LEAS 2,S
918 PULS D,X,Y,U,PC ->>
919
920
921*=======================================
922* S/P visualisation du tiroir
923*
924* Entrée: X coord. graphique haut
925* Y gauche
926* A #0 si effacement préalable
927*=======================================
928
929XVISTI PSHS D,X,Y,U
930PA SET 0
931PB SET 1
932PX SET 2
933PY SET 4
934*---------------------------------------
935
936* calculer coord. de visualisation
937 LDD PX,S
938 STD <XT0
939 ADDD <LPTTIR
940 SUBD #1
941 STD <XT1
942
943 LDD PY,S
944 STD <YT0
945 CLRA
946 LDB <HPTTIR
947 ADDD <YT0
948 SUBD #1
949 STD <YT1
950
951* décaler le tiroir pour corresp.
952* colonnes
953 LDD <XT0
954 ANDB #7
955 LBSR XDECAL
956
957* calcul de la zone visualisée
958 LDD <XT0
959 ASRA
960 RORB
961 ASRA
962 RORB
963 ASRA
964 RORB
965 STB <COLT0
966 CLR <DECSEG
967 CMPB #4
968 BGE XPCL10 ->
969 LDA #4
970 SUBA <COLT0
971 STA <DECSEG
972 LDA #4
973 STA <COLT0
974 LDD #32
975 STD <XT0
976
977XPCL10 CLR <DECLIG
978 LDD <YT0
979 CMPD #8
980 BGE XPCL11 ->
981 LDD #8
982 SUBD <YT0
983 STB <DECLIG
984 LDD #8
985 STD <YT0
986XPCL11 LDA <YT0+1
987 STA <YT0 valeur 8..191
988
989 LDD <XT1
990 ASRA
991 RORB
992 ASRA
993 RORB
994 ASRA
995 RORB
996 STB <COLT1
997 CMPB #77
998 BLE XPCL12 ->
999 LDB #77
1000 STB <COLT1
1001 LDD #623
1002 STD <XT1
1003
1004XPCL12 LDD <YT1
1005 CMPD #191
1006 BLE XPCL13 ->
1007 LDD #191
1008 STD <YT1
1009XPCL13 LDA <YT1+1 valeur 8..191
1010 STA <YT1
1011
1012 LDA <COLT1
1013 SUBA <COLT0
1014 INCA
1015 STA <LARTV
1016 LDA <YT1
1017 SUBA <YT0
1018 INCA
1019 STA <HAUTV
1020
1021* calcul des référence 1er segment
1022* (page écran et adresse
1023 LDA $E7C3
1024 ANDA #$FE
1025 LDB <COLT0
1026 LSRB
1027 BCS XPCC2 ->
1028 ORA #$01
1029XPCC2 STA <PRE7C3
1030 LDA <YT0
1031 LDB #40
1032 MUL
1033 ADDD #$4000
1034 STD <ADPRSG
1035 CLRA
1036 LDB <COLT0
1037 LSRB
1038 ADDD <ADPRSG
1039 STD <ADPRSG
1040
1041* calcul des nb de seg. sur page
1042* du 1er et sur l'autre
1043 LDA <LARTV
1044 LSRA
1045 STA <NBSEG1
1046 STA <NBSEG2
1047 BCC XPCC3 ->
1048 INC <NBSEG1
1049
1050* si demandé... effacer
1051XPCC3 TST PA,S
1052 BEQ XPCC4 ->
1053 LBSR XCLRTI
1054
1055* superposition des seg. 1ère page
1056XPCC4 LDA <PRE7C3
1057 STA $E7C3
1058 LDA <HAUTV
1059 STA <CPTLT
1060 LDU <ADPRSG
1061 STU <ADPRSL
1062 LDY #ZONTRA Y=ad 1ére ligne
1063 LDA <LARTIR
1064 LDB <DECLIG
1065 MUL
1066 LEAY D,Y
1067XPCC10 LDA <DECSEG
1068 LEAX A,Y
1069 LDA <NBSEG1
1070XPCC11 LDB ,U
1071 ORB ,X++
1072 STB ,U+
1073 DECA
1074 BNE XPCC11 ->
1075 LDB <LARTIR
1076 LEAY B,Y
1077 LDU <ADPRSL
1078 LEAU 40,U
1079 STU <ADPRSL
1080 DEC <CPTLT
1081 BNE XPCC10 ->
1082
1083* superposition des seg. 2ème page
1084 LDA $E7C3
1085 EORA #$01
1086 STA $E7C3
1087 LDA <HAUTV
1088 STA <CPTLT
1089 CLRA
1090 LDB <PRE7C3
1091 ANDB #1
1092 EORB #1
1093 ADDD <ADPRSG
1094 STD <ADPRSL
1095 TFR D,U
1096 LDY #ZONTRA+1 Y=ad 1ére ligne
1097 LDA <LARTIR
1098 LDB <DECLIG
1099 MUL
1100 LEAY D,Y
1101XPCC20 LDA <DECSEG
1102 LEAX A,Y
1103 LDA <NBSEG2
1104XPCC21 LDB ,U
1105 ORB ,X++
1106 STB ,U+
1107 DECA
1108 BNE XPCC21 ->
1109 LDB <LARTIR
1110 LEAY B,Y
1111 LDU <ADPRSL
1112 LEAU 40,U
1113 STU <ADPRSL
1114 DEC <CPTLT
1115 BNE XPCC20 ->
1116
1117 PULS D,X,Y,U,PC ->>
Note: See TracBrowser for help on using the repository browser.