source: thomson/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-C1.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: 30.3 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****************************************
12
13
14*=======================================
15* S/P recherche d'un album dans table
16* (création si inexistant)
17* Entrée: X pt nom album
18* Sortie: CY 1 pas de place
19* 0 ok
20* X pt dans table si ok
21*=======================================
22
23XCHALB PSHS D,Y,U
24 LEAS -1,S
25ALBC SET 0
26PD SET 1
27*---------------------------------------
28
29 LBSR XPTALB
30 BCC CHALBF trouvé ->
31
32 TST MAXALB
33 BEQ CHALBR pas de place ->
34 LDU #TABALB
35 CLR ALBC,S
36CHAL1 TST 8,U
37 BMI CHAVID poste vide ->
38 INC ALBC,S
39 LDA ALBC,S
40 CMPA MAXALB
41 BGE CHALBR pas de place ->
42 LEAU 9,U
43 BRA CHAL1 ->
44
45CHAVID LDA #8
46CHAVI0 LDB ,X+
47 STB ,U+
48 DECA
49 BNE CHAVI0 ->
50 NEG ,U marque occupé
51 LEAX -8,U
52 INC NBALB
53CHALBF ANDCC #$FE
54 LEAS 1,S
55 PULS D,Y,U,PC ->>
56CHALBR LDB #7 'out of memory'
57 JSR DOSERR
58 ORCC #$01
59 LEAS 1,S
60 PULS D,Y,U,PC ->>
61
62
63*=======================================
64* S/P saisie d'un album
65*
66* Entrée: A,B coordonnées fenêtre
67* X Pt recepteur nom
68* Sortie: CY 1 Raz
69* 0 ok
70* (X) zone nom rendu
71*=======================================
72
73FCZIAL FCB FLOCF,0,0,11,26
74 FCB FTRAME,FTOURI
75 FCB FLOCF,1,1,5,24
76 FCB FFOND,FTOURE,FCADRE
77 FCB FLOCF,7,1,3,24
78 FCB FFOND,FTOURE,FCADRE
79 FCB FLOCF,2,3,1,24
80 FCB FEDI
81 FCC \Nomdel'album:\
82 FCB 0
83 FCB FLOCF,4,16,1,8
84 FCB FTOURE
85 FCB FCZI,255,TEXTE
86
87 FCB FLOCF,8,3,1,24
88 FCB FEDI
89 FCC \OK\
90 FCB BALISE
91 FCC \Annuler\
92 FCB BALISE,0
93 FCB FLOCF,8,6,1,1
94 FCB FPOUSS,RC,OFF
95 FCB FLOCF,8,22,1,1
96 FCB FPOUSS,FF,OFF
97 FCB FSTOP
98
99*---------------------------------------
100XCZIAL PSHS D,X,Y,U
101 LEAS -9,S
102BUF1 SET 0
103PD SET 9
104PX SET 11
105*---------------------------------------
106
107 LEAX FCZIAL,PCR
108 JSR FENOUV
109
110 JSR FENACT sélection
111CZIAL1 JSR FEN
112 TSTB
113 BEQ CZIAL1 ->
114 CMPB #FF
115 BEQ CZIALR raz ->
116 CMPB #RC
117 BEQ CZIALO RC ->
118 BRA CZIAL1 ->
119
120CZIALO LDX PX,S résultat
121 LDB #8
122 LDA #SP
123CZIAO0 STA ,X+
124 DECB
125 BNE CZIAO0 ->
126 LEAX BUF1,S
127 LDB #255
128 JSR FENLCZ
129 LEAX BUF1,S
130 LDY PX,S
131CZIAO1 LDA ,X+
132 BEQ CZIAO2 ->
133 STA ,Y+
134 BRA CZIAO1 ->
135
136CZIAO2 CLRB
137 JSR FENFER
138 JSR FENACT
139 ANDCC #$FE
140 LEAS 9,S
141 PULS D,X,Y,U,PC ->>
142CZIALR CLRB
143 JSR FENFER
144 JSR FENACT
145 ORCC #$01
146 LEAS 9,S
147 PULS D,X,Y,U,PC ->>
148
149
150*=======================================
151* S/P raz d'une rectangulaire au point
152*
153* Entrée: XT0,YT0 coord. début
154* XT1,YT1 coord. fin
155*=======================================
156
157XCLRTI LDA #$FF
158 STA FILFLG
159 LDD #PLEIN
160 STD MACP
161 LDU #TRRAZ
162 LBSR COMBK1
163 LDX <XT0
164 STX XXXXXX
165 CLRA
166 LDB <YT0
167 STD YYYYYY
168 LDX <XT1
169 CLRA
170 LDB <YT1
171 TFR D,Y
172 LDB #BOX
173 JSR EXTRA
174 LDU #TRNORM
175 LBSR COMBK1
176 RTS
177
178
179*=======================================
180* S/P ecriture sur fichier
181*
182* Entrée: A car. à ecrire
183* Sortie: CY 0 si ok
184* 1 si erreur (fichier sera
185* fermé !)
186*=======================================
187
188XECRFI PSHS B
189*---------------------------------------
190 LDB #PRINT
191 JSR EXTRA
192 TSTB
193 BNE ECFIR erreur ->
194 ANDCC #$FE
195 PULS B,PC ->>
196
197ECFIR PSHS B
198 LDB #CLOSE # erreur PRINT
199 JSR EXTRA
200 PULS B
201 JSR DOSERR
202 ORCC #$1
203 PULS B,PC ->>
204
205
206*=======================================
207* S/P impression d'un fragment de page
208* limité par CADRNG-CADCOL
209* CADHAU-CADLAR
210* Entrée B interrupteur pleine page
211*=======================================
212
213FFCIMP FCB FLOCF,0,0,11,24
214 FCB FTRAME,FTOURI
215
216 FCB FLOCF,1,1,5,22
217 FCB FFOND,FTOURE,FCADRE
218 FCB FLOCF,2,3,1,22
219 FCB FEDI
220 FCC \Impr.OK?\
221 FCB 0
222 FCB FLOCR,0,6,1,7
223 FCB FTOURE,FCADRE
224 FCB FPOUSS,'I,OFF
225 FCB FLOCF,4,6,1,22
226 FCB FEDI
227 FCC \Brouillon\
228 FCB BALISE,0
229 FCB FLOCR,0,10,1,1
230 FCB FINV,'B,OFF
231
232 FCB FLOCF,7,1,3,22
233 FCB FFOND,FTOURE,FCADRE
234 FCB FLOCF,8,3,1,22
235 FCB FEDI
236 FCC \OK\
237 FCB BALISE
238 FCC \Annuler\
239 FCB BALISE,0
240 FCB FLOCF,8,6,1,1
241 FCB FPOUSS,RC,OFF
242 FCB FLOCF,8,20,1,1
243 FCB FPOUSS,FF,OFF
244 FCB FSTOP
245
246MTYPIP FCC \THOMSON\
247 FCB 0
248 FCC \EPSON\
249 FCB 0
250 FCC \IBM\
251 FDB 0
252
253TYPIMP FCB THOMSO type imprimante
254THOMSO EQU 0
255EPSON EQU 1
256IBM EQU 2
257MAXIMP EQU 3
258
259*---------------------------------------
260XIMPPA PSHS B
261 LEAS -963,S
262FLGPAS SET 0
263MEMBK SET 1
264DBK SET 2
265BUFFER SET 3
266PB SET 963
267*---------------------------------------
268 LDA BANKC
269 STA MEMBK,S
270
271 LDD #$0633
272 LEAX FFCIMP,PCR
273 JSR FENOUV
274
275IMPC00 LDB #'I
276 JSR FENCH
277 LEAX TYPIMP,PCR
278 LDA ,X
279 LDB #8
280 MUL
281 LEAX MTYPIP,PCR
282 LEAX D,X
283
284 JSR FENFON
285 JSR FENEDI
286
287* Sélection opérateur
288
289IMPC0 JSR FENACT sélection
290IMPC1 JSR FEN
291 TSTB
292 BEQ IMPC1 ->
293 CMPB #FF
294 LBEQ IMPCRZ raz ->
295 CMPB #RC
296 BEQ IMPCOK RC ->
297 CMPB #'I
298 BEQ CHGIMP Imprim. ->
299 BRA IMPC1 ->
300
301CHGIMP JSR FENDES
302 LEAX TYPIMP,PCR
303 LDA ,X
304 INCA
305 CMPA #MAXIMP
306 BNE CHGIM0 ->
307 CLRA
308CHGIM0 LDB $E7E6 autorise écritur
309 ORB #$40 cartouche
310 STB $E7E6
311 STA ,X
312 LDB $E7E6 interdit écritur
313 ANDB #$BF cartouche
314 STB $E7E6
315 LBRA IMPC00 ->
316
317IMPCOK JSR FENDES
318 JSR FENCH
319 JSR FENIVD
320 LDB #'B
321 JSR FENCH
322 CLR FLGPAS,S
323 LDA VAL,X
324 CMPA #OFF
325 BNE LIMPC ->
326 COM FLGPAS,S
327
328LIMPC LDA #$40 open //
329 STA RSOPC
330 JSR RSCO
331 LBCS IMPCRZ ->
332
333 LDA #$08 écriture //
334 STA RSOPC
335
336 LEAX TYPIMP,PCR
337 LDA ,X
338 CMPA #IBM
339 BEQ SETIP0 ->
340 LDB #ESC reset imprimante
341 JSR RSCO
342 LDB #'@
343 JSR RSCO
344
345SETIP0 CMPA #THOMSO
346 BNE SETIP1 ->
347* THOMSON
348 LDB #ESC suppress inter
349 JSR RSCO ligne
350 LDB #$39
351 JSR RSCO
352 BRA SETIP3 ->
353* IBM EPSON
354SETIP1 LDB #ESC suppress inter
355 JSR RSCO ligne
356 LDB #'3
357 JSR RSCO
358 LDB #24
359 TST FLGPAS,S
360 BEQ SETI11 ->
361 DECB double passe
362SETI11 JSR RSCO
363 TST FLGPAS,S
364 BEQ SETIP2 ->
365 LDB #ESC unidirectionnel
366 JSR RSCO
367 LDB #'U
368 JSR RSCO
369 LDB #1
370 JSR RSCO
371SETIP2 CMPA #IBM
372 BNE SETIP3 ->
373 LDB #ESC supprime auto LF
374 JSR RSCO
375 LDB #'5
376 JSR RSCO
377 LDB #0
378 JSR RSCO
379SETIP3 EQU *
380
381 LDB PB,S passez lignes
382 CMPB #ON en pleine page
383 BNE LIMPC0 ->
384
385 LDA CADRNG
386 STA <CPTLT
387BIMPC0 BEQ LIMPC0
388 LDB #LF
389 JSR RSCO
390
391 LEAX BUFFER,S test d'interrupt
392 LDD #$0D39
393 JSR SBREAK
394 LBCS IMPCAB ->
395
396 DEC <CPTLT
397 BRA BIMPC0 ->
398
399* Calcul de l'adresse RAM début ligne
400* initiale de la feuille (bank+déplac.)
401LIMPC0 LDA CADRNG *60*8 !
402 LSLA
403 LDB #60*4
404 MUL
405 ADDB CADCOL
406 ADCA #0
407 ADDD <ADF
408 BCC LIMPC1 ->
409 ADDD #$FFFF-48959
410LIMPC1 CMPD #48960
411 BCS LIMPC2 ->
412 SUBD #48960
413LIMPC2 STD <ADPRRL
414 ROLA
415 ROLA
416 ROLA
417 ANDA #3
418 ADDA #PBKTRA
419 STA DBK,S
420 LDD <ADPRRL
421 ANDA #$3F
422 ADDD #$A000
423 STD <ADPRRL
424
425* Boucle de lecture de 8 lignes (1 car.)
426* en page 0
427
428BRIP0 LDA DBK,S
429 STA BANKC
430 LDA #9
431 STA <CPTLT
432 LDY <ADPRRL
433BRIP2 LEAX BUFFER,S
434 LDA #9
435 SUBA <CPTLT
436 LEAX A,X
437 DEC <CPTLT
438 LBEQ RIP0F -->
439 LDA BANKC
440 LDB #60
441 CMPA #PBKTRA+2
442 BEQ RIP0D dernier bank ->
443 CMPY #$E000-59
444 BCS BRIP01 trait. 60 ok ->
445 PSHS Y trait. en 2 fois
446 LDD #$E000
447 SUBD ,S++
448 STB <CPTCT
449BRIP00 LDA ,Y+
450 STA ,X
451 LEAX 16,X
452 DECB
453 BNE BRIP00 ->
454 INC BANKC
455 LDY #$A000
456 LDB #60
457 SUBB <CPTCT
458BRIP01 LDA ,Y+
459 STA ,X
460 LEAX 16,X
461 DECB
462 BNE BRIP01 ->
463 CMPY #$E000
464 BCS BRIP2 ->
465 INC BANKC
466 LDY #$A000
467 BRA BRIP2 ->
468
469RIP0D CMPY #$DF40-59 dernier bank
470 BCS BRIP03 trait. 60 ok ->
471 PSHS Y trait. en 2 fois
472 LDD #$DF40
473 SUBD ,S++
474 STB <CPTCT
475BRIP02 LDA ,Y+
476 STA ,X
477 LEAX 16,X
478 DECB
479 BNE BRIP02 ->
480 DEC BANKC
481 DEC BANKC
482 LDY #$A000
483 LDB #60
484 SUBB <CPTCT
485BRIP03 LDA ,Y+
486 STA ,X
487 LEAX 16,X
488 DECB
489 BNE BRIP03 ->
490 CMPY #$DF40
491 LBCS BRIP2 ->
492 DEC BANKC
493 DEC BANKC
494 LDY #$A000
495 LBRA BRIP2 ->
496RIP0F EQU *
497
498* Boucle de lecture de 8 lignes (1 car.)
499* en page 1
500
501 LDA DBK,S
502 ADDA #3
503 STA BANKC
504 LDA #9
505 STA <CPTLT
506 LDY <ADPRRL
507BRIP3 LEAX BUFFER,S
508 LEAX 8,X
509 LDA #9
510 SUBA <CPTLT
511 LEAX A,X
512 DEC <CPTLT
513 LBEQ RIP1F -->
514 LDA BANKC
515 LDB #60
516 CMPA #PBKTRA+5
517 BEQ RIP1D dernier bank ->
518 CMPY #$E000-59
519 BCS BRIP11 trait. 60 ok ->
520 PSHS Y trait. en 2 fois
521 LDD #$E000
522 SUBD ,S++
523 STB <CPTCT
524BRIP10 LDA ,Y+
525 STA ,X
526 LEAX 16,X
527 DECB
528 BNE BRIP10 ->
529 INC BANKC
530 LDY #$A000
531 LDB #60
532 SUBB <CPTCT
533BRIP11 LDA ,Y+
534 STA ,X
535 LEAX 16,X
536 DECB
537 BNE BRIP11 ->
538 CMPY #$E000
539 BCS BRIP3 ->
540 INC BANKC
541 LDY #$A000
542 BRA BRIP3 ->
543
544RIP1D CMPY #$DF40-59 dernier bank
545 BCS BRIP13 trait. 60 ok ->
546 PSHS Y trait. en 2 fois
547 LDD #$DF40
548 SUBD ,S++
549 STB <CPTCT
550BRIP12 LDA ,Y+
551 STA ,X
552 LEAX 16,X
553 DECB
554 BNE BRIP12 ->
555 DEC BANKC
556 DEC BANKC
557 LDY #$A000
558 LDB #60
559 SUBB <CPTCT
560BRIP13 LDA ,Y+
561 STA ,X
562 LEAX 16,X
563 DECB
564 BNE BRIP13 ->
565 CMPY #$DF40
566 LBCS BRIP3 ->
567 DEC BANKC
568 DEC BANKC
569 LDY #$A000
570 LBRA BRIP3 ->
571
572RIP1F STY <ADPRRL
573 LDA BANKC
574 SUBA #3
575 STA DBK,S
576
577* Edition ligne graphique
578
579 LEAX BUFFER,S
580 LDB CADLAR
581 LDA FLGPAS,S
582 LBSR XIMPLI
583
584 LEAX BUFFER,S test d'interrupt
585 LDD #$0D39
586 JSR SBREAK
587 BCS IMPCAB ->
588
589 DEC CADHAU
590 LBNE BRIP0 ->
591
592IMPCAB LDB #ESC reset imprimante
593 JSR RSCO
594 LDB #'@
595 LEAX TYPIMP,PCR
596 LDA ,X
597 CMPA #IBM
598 BNE RSTIP ->
599 LDB #'2
600RSTIP JSR RSCO
601 CMPA #THOMSO
602 BEQ RSTIP1 ->
603 LDB #ESC bidirectionnel
604 JSR RSCO
605 LDB #'U
606 JSR RSCO
607 LDB #0
608 JSR RSCO
609
610RSTIP1 LDA #$10 close
611 STA RSOPC
612 JSR RSCO
613
614IMPCRZ LDA MEMBK,S
615 STA BANKC
616 LEAS 963,S
617 CLRB
618 JSR FENFER
619 PULS B,PC
620
621
622*=======================================
623* S/P impression d'une ligne graphique
624*
625* Entrée X pt buffer
626* 8 seg. 1er car
627* 8 seg. 2eme car
628* ...
629* A 0 en simple passage
630* #0 en double passage
631* B nb car.
632*=======================================
633
634XIMPLI PSHS D,X,Y,U
635 LEAS -10,S
636BUFV SET 0
637NBSEG SET 8
638PA SET 10
639PB SET 11
640PX SET 12
641*---------------------------------------
642 STB CPTLT
643
644* Codage buffer en colonnes
645BIMPL0 LEAY BUFV,S raz mano
646 LDA #8
647BIMPL1 CLR ,Y+
648 DECA
649 BNE BIMPL1 ->
650
651 LDA #8 colonnes car.
652 STA CPTCT cour. -> mano
653BIMPL2 LDA #8
654 LEAY BUFV,S
655 LDB ,X+
656BIMPL3 LSLB
657 ROR ,Y+
658 DECA
659 BNE BIMPL3 ->
660 DEC CPTCT
661 BNE BIMPL2 ->
662
663 LEAX -8,X buffer recodé
664 LEAY BUFV,S
665 LDA #8
666BIMPL4 LDB ,Y+
667 STB ,X+
668 DECA
669 BNE BIMPL4 ->
670
671 DEC CPTLT
672 BNE BIMPL0 car. suiv ->
673
674* Calcul et codage ASCII nb segment
675* en soustrayant les nuls de droite
676 LDB PB,S
677 LDA #8
678 MUL
679 LDX PX,S
680 LEAX D,X
681LIMPK0 TST ,-X
682 BNE LIMPK1 ->
683 SUBD #1
684 BNE LIMPK0 ->
685LIMPK1 ADDD #1 force pair
686 ANDB #$FE
687 STD NBSEG,S
688 LBEQ LIMPL3 rien ->
689
690 LEAX BUFV,S
691 LDY #3
692 JSR BINDCD
693 LDA #3
694 LEAX BUFV,S
695BIMPL5 LDB ,X+
696 CMPB #$20
697 BNE LIMPL0 ->
698 ADDB #$10
699 STB -1,X
700 DECA
701 BNE BIMPL5 ->
702
703
704LIMPL0 LDB #ESC édition graphiq.
705 JSR RSCO
706
707 LEAY TYPIMP,PCR
708 LDA ,Y
709 CMPA #THOMSO
710 BNE SETGR0 ->
711 LDB #$47
712 LDA PA,S
713 BEQ LIMPL1 ->
714 ADDB #2
715LIMPL1 JSR RSCO
716
717 LEAX BUFV,S
718 LDA #3
719BIMPL6 LDB ,X+
720 JSR RSCO
721 DECA
722 BNE BIMPL6 ->
723 BRA SETGR1 ->
724
725SETGR0 LDB #'L
726 JSR RSCO
727 LDD NBSEG,S
728 JSR RSCO
729 TFR A,B
730 JSR RSCO
731
732SETGR1 EQU *
733
734 LDX PX,S
735 LDY NBSEG,S
736
737 LEAU TYPIMP,PCR
738 LDA ,U
739 CMPA #THOMSO
740 BNE SELIP0 ->
741 LDA PA,S
742 LBNE BIMPLA normal THOMSON->
743 BRA BIMPL9 brouillon ... ->
744SELIP0 LDA PA,S
745 BNE XIMPL8 normal IBM EPS->
746
747BIMPL7 LDA ,X+ brouillon IBM EP
748 LDB #1
749SIMPL7 LSRA
750 ROLB
751 BCC SIMPL7 ->
752 JSR RSCO
753 LEAY -1,Y
754 BNE BIMPL7 ->
755 LBRA LIMPL3 ->
756
757XIMPL8 PSHS X,Y
758BIMPL8 LDA ,X+ normal IBM EPSON
759 LDB #1 passe 1
760SIMPL8 LSRA
761 ROLB
762 BCC SIMPL8 ->
763 JSR RSCO
764 LEAY -1,Y
765 BNE BIMPL8 ->
766 PULS X,Y
767 LDB #ESC passe 1/216 "
768 JSR RSCO (pour 1/2 point)
769 LDB #'J (1 pt = 1/72 ")
770 JSR RSCO
771 LDB #1
772 JSR RSCO
773 LDB #RC
774 JSR RSCO
775 LDB #ESC
776 JSR RSCO
777 LDB #'L
778 JSR RSCO
779 LDD NBSEG,S
780 JSR RSCO
781 TFR A,B
782 JSR RSCO
783BIMPH8 LDA ,X+ normal IBM EPSON
784 LDB #1 passe 2
785SIMPH8 LSRA
786 ROLB
787 BCC SIMPH8 ->
788 JSR RSCO
789 LEAY -1,Y
790 BNE BIMPH8 ->
791 LBRA LIMPL3 ->
792
793BIMPL9 LDB ,X+ brouillon THOMSO
794 JSR RSCO
795 LEAY -1,Y
796 BNE BIMPL9 ->
797 LBRA LIMPL3 ->
798
799BIMPLA LDA ,X+ double/1er oct.
800 CLRB
801 LSRA
802 RORB
803 LSRB
804 LSRA
805 RORB
806 LSRB
807 LSRA
808 RORB
809 LSRB
810 LSRA
811 RORB
812 STB BUFV,S
813 LSRB
814 ORB BUFV,S
815 JSR RSCO
816* double/1er oct.
817 CLRB
818 LSRA
819 RORB
820 LSRB
821 LSRA
822 RORB
823 LSRB
824 LSRA
825 RORB
826 LSRB
827 LSRA
828 RORB
829 STB BUFV,S
830 LSRB
831 ORB BUFV,S
832 JSR RSCO
833 LEAY -1,Y
834 BNE BIMPLA ->
835
836LIMPL3 LDB #LF lig. suiv
837 JSR RSCO
838
839 LEAS 10,S
840 PULS D,X,Y,U,PC
841
842
843*=======================================
844* S/P lecture sur le fichier courant
845*
846* Sortie: A car. lu si ok
847* CY 0 si ok
848* 1 si pb -> erreur traitée
849* fichier fermé
850*=======================================
851
852XLECFI PSHS B
853*---------------------------------------
854 LDB #INPUT
855 JSR EXTRA
856 TSTB
857 BNE LEFIFR erreur ->
858 LDB #78 'bad picture'
859 TST EOFFLG si eof !
860 BNE LEFIFR ->
861 LDA CARCOU
862 ANDCC #$FE
863 PULS B,PC ->>
864
865LEFIFR JSR DOSERR
866 LDB #CLOSE
867 JSR EXTRA
868 ORCC #1
869 PULS B,PC
870
871
872*=======================================
873* S/P lecture écran -> tiroir
874*
875* Entrée XT0,YT0 coord. début
876* XT1,YT1 coord. fin
877*=======================================
878
879TMAQG2 FDB $FF7F,$3F1F,$0F07,$0301
880TMAQD2 FDB $80C0,$E0F0,$F8FC,$FEFF
881
882XLITTI EQU *
883*---------------------------------------
884 LDA #1 note tiroir ok
885 STA <FLGTIR
886
887* calcul des dimensions points
888 LDD <XT1
889 SUBD <XT0
890 ADDD #1
891 STD <LPTTIR
892 LDA <YT1
893 SUBA <YT0
894 INCA
895 STA <HPTTIR
896
897* calcul des dimensions segment
898* Nb: le tiroir est augmenté de 1
899* en largeur à cause décalages
900* ultérieurs
901 LDD <XT0
902 LSRA
903 RORB
904 LSRA
905 RORB
906 LSRB
907 STB <COLT0
908 LDD <XT1
909 LSRA
910 RORB
911 LSRA
912 RORB
913 LSRB
914 INCB +1 sur largeur
915 STB <COLT1
916 SUBB <COLT0
917 INCB
918 STB <LARTIR
919 LDD <XT0
920 ANDB #$07
921 STB <DECTIR décal. bit/seg.
922
923* calcul des référence 1er segment
924* (page écran et adresse
925 LDA $E7C3
926 ANDA #$FE
927 LDB <COLT0
928 LSRB
929 BCS XDCC2 ->
930 ORA #$01
931XDCC2 STA <PRE7C3
932 LDA <YT0
933 LDB #40
934 MUL
935 ADDD #$4000
936 STD <ADPRSG
937 CLRA
938 LDB <COLT0
939 LSRB
940 ADDD <ADPRSG
941 STD <ADPRSG
942
943* calcul des nb de seg. sur page
944* du 1er et sur l'autre
945 LDA <LARTIR
946 LSRA
947 STA <NBSEG1
948 STA <NBSEG2
949 BCC XDCC3 ->
950 INC <NBSEG1
951
952* acquisition des seg. 1ère page
953XDCC3 LDA <PRE7C3
954 STA $E7C3
955 LDA <HPTTIR
956 STA <CPTLT
957 LDU <ADPRSG
958 STU <ADPRSL
959 LDX #ZONTRA
960 TFR X,Y Y=ad 1ère lign
961XDCC10 LDA <NBSEG1
962XDCC11 LDB ,U+
963 STB ,X++
964 DECA
965 BNE XDCC11 ->
966 TFR Y,X
967 LDB <LARTIR
968 ABX
969 TFR X,Y
970 LDU <ADPRSL
971 LEAU 40,U
972 STU <ADPRSL
973 DEC <CPTLT
974 BNE XDCC10 ->
975
976* acquisition des seg. 2ème page
977 LDA $E7C3
978 EORA #$01
979 STA $E7C3
980 LDA <HPTTIR
981 STA <CPTLT
982 CLRA
983 LDB <PRE7C3
984 ANDB #1
985 EORB #1
986 ADDD <ADPRSG
987 STD <ADPRSL
988 TFR D,U
989 LDX #ZONTRA+1
990 TFR X,Y Y=ad 1ère lign
991XDCC20 LDA <NBSEG2
992XDCC21 LDB ,U+
993 STB ,X++
994 DECA
995 BNE XDCC21 ->
996 TFR Y,X
997 LDB <LARTIR
998 ABX
999 TFR X,Y
1000 LDU <ADPRSL
1001 LEAU 40,U
1002 STU <ADPRSL
1003 DEC <CPTLT
1004 BNE XDCC20 ->
1005
1006* mise à zéro des bits hors tiroir
1007* à gauche
1008 LEAX TMAQG2,PCR
1009 LDA <DECTIR
1010 BEQ RZDT ->
1011 LDA A,X
1012 STA <CPTCT
1013 LDA <HPTTIR
1014 LDX #ZONTRA
1015BRGT LDB ,X
1016 ANDB <CPTCT
1017 STB ,X
1018 LDB <LARTIR
1019 ABX
1020 DECA
1021 BNE BRGT ->
1022
1023* mise à zéro des bits hors tiroir
1024* à droite
1025RZDT LDD <XT1
1026 ANDB #7
1027 CMPB #7
1028 BEQ RZDD ->
1029 LEAX TMAQD2,PCR
1030 LDA B,X
1031 STA <CPTCT
1032 LDA <HPTTIR
1033 LDX #ZONTRA
1034 LDB <LARTIR
1035 ABX
1036 LEAX -2,X
1037BRDT LDB ,X
1038 ANDB <CPTCT
1039 STB ,X
1040 LDB <LARTIR
1041 ABX
1042 DECA
1043 BNE BRDT ->
1044
1045* mise à zéro du segment supplé-
1046* mentaire pour décalage
1047RZDD LDA <HPTTIR
1048 LDX #ZONTRA
1049 LDB <LARTIR
1050 ABX
1051 LEAX -1,X
1052BRDD CLR ,X
1053 LDB <LARTIR
1054 ABX
1055 DECA
1056 BNE BRDD ->
1057 RTS
1058
1059
1060*=======================================
1061* S/P Lecture d'un bit sur le tiroir
1062*
1063* Entrée: X coord. dans tiroir
1064* CPTLT
1065* Sortie: Z bit nul ou non
1066*=======================================
1067
1068TEXTBL FDB $8040,$2010,$0804,$0201
1069
1070XLECTX PSHS X
1071PX SET 0
1072*---------------------------------------
1073 LDU #$A000
1074 LDA <CPTLT
1075 LDB <LARTIR
1076 MUL
1077 LEAU D,U
1078 TFR X,D
1079 LSRA
1080 RORB
1081 LSRA
1082 RORB
1083 LSRB
1084 LDB D,U
1085 LDA PX+1,S
1086 ANDA #7
1087 LEAX TEXTBL,PCR
1088 ANDB A,X
1089 PULS X,PC
1090
1091
1092*=======================================
1093* S/P pointage d'un album dans table
1094*
1095* Entrée: X pt nom album
1096* Sortie: CY 1 pas trouvé
1097* 0 ok
1098* X pt dans table si ok
1099* non modifié sinon
1100*=======================================
1101
1102XPTALB PSHS D,X,Y,U
1103 LEAS -1,S
1104ALBC SET 0
1105PD SET 1
1106PX SET 3
1107*---------------------------------------
1108
1109 TST MAXALB
1110 BEQ PTALER ->
1111
1112 LDU #TABALB
1113 CLR ALBC,S
1114PTAL1 TST 8,U
1115 BMI PTAVID poste vide ->
1116 LDX PX,S
1117 TFR U,Y
1118 LDA #8
1119PTAL2 LDB ,X+
1120 CMPB ,Y+
1121 BNE PTAL3 différent ->
1122 DECA
1123 BNE PTAL2 ->
1124 BRA PTALOK trouvé ->
1125PTAL3 INC ALBC,S
1126 LDA ALBC,S
1127 CMPA MAXALB
1128 BGE PTALER fini ->
1129PTAVID LEAU 9,U
1130 BRA PTAL1 ->
1131
1132PTALOK STU PX,S
1133 ANDCC #$FE
1134 LEAS 1,S
1135 PULS D,X,Y,U,PC ->>
1136PTALER ORCC #$01
1137 LEAS 1,S
1138 PULS D,X,Y,U,PC ->>
1139
1140
1141*=======================================
1142* S/P sélection d'un album préexistant
1143*
1144* Entrée: A,B coordonnées fenêtre
1145* X =0 => visu seule
1146* =-1 => sélection
1147* Y nb niv. à remonter si ok
1148* (aucun si <0 )
1149* Sortie: CY 1 Raz ou pas d'album
1150* 0 ok
1151* X pt dans table si ok
1152*=======================================
1153
1154FFELAL FCB FLOCF,0,0,13,44
1155 FCB FTRAME,FTOURI
1156 FCB FCOMF,FF,OFF
1157 FCB FLOCF,1,1,1,42
1158 FCB FFOND,FTOURE,FCADRE
1159 FCB FLOCF,1,15,1,42
1160 FCB FEDI,ESC,$4E
1161 FCC \ALBUMS\
1162 FCB ESC,$4C,0
1163 FCB FLOCF,3,1,9,42
1164 FCB FFOND,FTOURE,FCADRE
1165
1166 FCB FLOCF,4,3,1,8
1167 FCB FPOUSS,200,INTERD
1168 FCB FLOCF,4,13,1,8
1169 FCB FPOUSS,201,INTERD
1170 FCB FLOCF,4,23,1,8
1171 FCB FPOUSS,202,INTERD
1172 FCB FLOCF,4,33,1,8
1173 FCB FPOUSS,203,INTERD
1174
1175 FCB FLOCF,6,3,1,8
1176 FCB FPOUSS,204,INTERD
1177 FCB FLOCF,6,13,1,8
1178 FCB FPOUSS,205,INTERD
1179 FCB FLOCF,6,23,1,8
1180 FCB FPOUSS,206,INTERD
1181 FCB FLOCF,6,33,1,8
1182 FCB FPOUSS,207,INTERD
1183
1184 FCB FLOCF,8,3,1,8
1185 FCB FPOUSS,208,INTERD
1186 FCB FLOCF,8,13,1,8
1187 FCB FPOUSS,209,INTERD
1188 FCB FLOCF,8,23,1,8
1189 FCB FPOUSS,210,INTERD
1190 FCB FLOCF,8,33,1,8
1191 FCB FPOUSS,211,INTERD
1192
1193 FCB FLOCF,10,3,1,8
1194 FCB FPOUSS,212,INTERD
1195 FCB FLOCF,10,13,1,8
1196 FCB FPOUSS,213,INTERD
1197 FCB FLOCF,10,23,1,8
1198 FCB FPOUSS,214,INTERD
1199 FCB FLOCF,10,33,1,8
1200 FCB FPOUSS,215,INTERD
1201 FCB FSTOP
1202
1203MPASAL FCC \PASD'ALBUM\
1204 FCB 0
1205
1206*---------------------------------------
1207XSELAL PSHS D,X,Y,U
1208 LEAS -2,S
1209ALBC SET 0
1210ALBOK SET 1
1211PD SET 2
1212PX SET 4
1213PYL SET 7
1214*---------------------------------------
1215
1216 TST NBALB
1217 BNE SELAL0 ->
1218 LEAX MPASAL,PCR
1219 JSR FENERR
1220 LBRA SELALF ->
1221SELAL0 LEAX FFELAL,PCR
1222 LDD PD,S
1223 JSR FENOUV
1224
1225 CLR ALBC,S visu albums
1226 CLR ALBOK,S
1227 LDU #TABALB
1228SELAL1 TST 8,U
1229 BMI ALVID ->
1230 LDB ALBOK,S poste occupé
1231 ADDB #200
1232 JSR FENCH
1233 TST PX,S
1234 BEQ SELALV visu seule ->
1235 LDA #OFF
1236 STA VAL,X
1237SELALV LDA #8
1238SELAL2 LDB ,U+
1239 JSR FENPUT
1240 DECA
1241 BNE SELAL2 ->
1242 LEAU 1,U
1243 INC ALBOK,S
1244SELAL3 INC ALBC,S
1245 LDA ALBC,S
1246 CMPA #16
1247 BGE SELAL4 fini ->
1248 BRA SELAL1 ->
1249ALVID LEAU 9,U
1250 BRA SELAL3 ->
1251
1252SELAL4 JSR FENACT sélection
1253SELAL5 JSR FEN
1254 TSTB
1255 BEQ SELAL5 ->
1256 CMPB #FF
1257 BEQ SELALR raz ->
1258 TST PX,S
1259 BEQ SELAL5 visu seule ->
1260 SUBB #200
1261 BMI SELAL5 ->
1262 CMPB ALBOK,S
1263 BGE SELAL5 ->
1264
1265* Album sélectionné
1266 INCB
1267 LDX #TABALB
1268SELAL6 TST 8,X
1269 BMI SELAL7 ->
1270 DECB
1271 BEQ FSELAL pointé ->
1272SELAL7 LEAX 9,X
1273 BRA SELAL6 ->
1274
1275FSELAL STX PX,S
1276 LDB PYL,S
1277 BMI SELALZ dépile par appel
1278 JSR FENFER .lant
1279 JSR FENACT
1280SELALZ ANDCC #$FE
1281 LEAS 2,S
1282 PULS D,X,Y,U,PC ->>
1283SELALR CLRB
1284 JSR FENFER
1285 JSR FENACT
1286SELALF ORCC #$01
1287 LEAS 2,S
1288 PULS D,X,Y,U,PC ->>
1289
1290
1291*=======================================
1292* S/P visualisation du tiroir
1293*
1294* Entrée: X coord. graphique haut
1295* Y gauche
1296* A #0 si effacement préalable
1297*=======================================
1298
1299XVISTI PSHS D,X,Y,U
1300PA SET 0
1301PB SET 1
1302PX SET 2
1303PY SET 4
1304*---------------------------------------
1305
1306* calculer coord. de visualisation
1307 LDD PX,S
1308 STD <XT0
1309 ADDD <LPTTIR
1310 SUBD #1
1311 STD <XT1
1312
1313 LDD PY,S
1314 STD <YT0
1315 CLRA
1316 LDB <HPTTIR
1317 ADDD <YT0
1318 SUBD #1
1319 STD <YT1
1320
1321* décaler le tiroir pour corresp.
1322* colonnes
1323 LDD <XT0
1324 ANDB #7
1325 LBSR XDECAL
1326
1327* calcul de la zone visualisée
1328 LDD <XT0
1329 ASRA
1330 RORB
1331 ASRA
1332 RORB
1333 ASRA
1334 RORB
1335 STB <COLT0
1336 CLR <DECSEG
1337 CMPB #4
1338 BGE XPCL10 ->
1339 LDA #4
1340 SUBA <COLT0
1341 STA <DECSEG
1342 LDA #4
1343 STA <COLT0
1344 LDD #32
1345 STD <XT0
1346
1347XPCL10 CLR <DECLIG
1348 LDD <YT0
1349 CMPD #8
1350 BGE XPCL11 ->
1351 LDD #8
1352 SUBD <YT0
1353 STB <DECLIG
1354 LDD #8
1355 STD <YT0
1356XPCL11 LDA <YT0+1
1357 STA <YT0 valeur 8..191
1358
1359 LDD <XT1
1360 ASRA
1361 RORB
1362 ASRA
1363 RORB
1364 ASRA
1365 RORB
1366 STB <COLT1
1367 CMPB #77
1368 BLE XPCL12 ->
1369 LDB #77
1370 STB <COLT1
1371 LDD #623
1372 STD <XT1
1373
1374XPCL12 LDD <YT1
1375 CMPD #191
1376 BLE XPCL13 ->
1377 LDD #191
1378 STD <YT1
1379XPCL13 LDA <YT1+1 valeur 8..191
1380 STA <YT1
1381
1382 LDA <COLT1
1383 SUBA <COLT0
1384 INCA
1385 STA <LARTV
1386 LDA <YT1
1387 SUBA <YT0
1388 INCA
1389 STA <HAUTV
1390
1391* calcul des référence 1er segment
1392* (page écran et adresse
1393 LDA $E7C3
1394 ANDA #$FE
1395 LDB <COLT0
1396 LSRB
1397 BCS XPCC2 ->
1398 ORA #$01
1399XPCC2 STA <PRE7C3
1400 LDA <YT0
1401 LDB #40
1402 MUL
1403 ADDD #$4000
1404 STD <ADPRSG
1405 CLRA
1406 LDB <COLT0
1407 LSRB
1408 ADDD <ADPRSG
1409 STD <ADPRSG
1410
1411* calcul des nb de seg. sur page
1412* du 1er et sur l'autre
1413 LDA <LARTV
1414 LSRA
1415 STA <NBSEG1
1416 STA <NBSEG2
1417 BCC XPCC3 ->
1418 INC <NBSEG1
1419
1420* si demandé... effacer
1421XPCC3 TST PA,S
1422 BEQ XPCC4 ->
1423 LBSR XCLRTI
1424
1425* superposition des seg. 1ère page
1426XPCC4 LDA <PRE7C3
1427 STA $E7C3
1428 LDA <HAUTV
1429 STA <CPTLT
1430 LDU <ADPRSG
1431 STU <ADPRSL
1432 LDY #ZONTRA Y=ad 1ére ligne
1433 LDA <LARTIR
1434 LDB <DECLIG
1435 MUL
1436 LEAY D,Y
1437XPCC10 LDA <DECSEG
1438 LEAX A,Y
1439 LDA <NBSEG1
1440XPCC11 LDB ,U
1441 ORB ,X++
1442 STB ,U+
1443 DECA
1444 BNE XPCC11 ->
1445 LDB <LARTIR
1446 LEAY B,Y
1447 LDU <ADPRSL
1448 LEAU 40,U
1449 STU <ADPRSL
1450 DEC <CPTLT
1451 BNE XPCC10 ->
1452
1453* superposition des seg. 2ème page
1454 LDA $E7C3
1455 EORA #$01
1456 STA $E7C3
1457 LDA <HAUTV
1458 STA <CPTLT
1459 CLRA
1460 LDB <PRE7C3
1461 ANDB #1
1462 EORB #1
1463 ADDD <ADPRSG
1464 STD <ADPRSL
1465 TFR D,U
1466 LDY #ZONTRA+1 Y=ad 1ére ligne
1467 LDA <LARTIR
1468 LDB <DECLIG
1469 MUL
1470 LEAY D,Y
1471XPCC20 LDA <DECSEG
1472 LEAX A,Y
1473 LDA <NBSEG2
1474XPCC21 LDB ,U
1475 ORB ,X++
1476 STB ,U+
1477 DECA
1478 BNE XPCC21 ->
1479 LDB <LARTIR
1480 LEAY B,Y
1481 LDU <ADPRSL
1482 LEAU 40,U
1483 STU <ADPRSL
1484 DEC <CPTLT
1485 BNE XPCC20 ->
1486
1487 PULS D,X,Y,U,PC ->>
Note: See TracBrowser for help on using the repository browser.