source: thomson/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-X2.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 100755
File size: 17.8 KB
Line 
1 TITLE TO-GRAPH: Traitement
2* ------------------------------
3 PAGE
4
5****************************************
6* *
7* TO-GRAPH *
8* *
9* Traitement: GRAPH-X *
10* *
11****************************************
12
13
14*=======================================
15* S/P traitement du réaffichage de
16* l'outil caractère
17*=======================================
18
19AFFCAR LEAS -1,S
20MEMACT SET 0
21*---------------------------------------
22
23 LDA OUTIL
24 CMPA #CARACT
25 BNE AFFCAF ->
26 LDB TCAR
27 SUBB #TCN
28 PSHS B
29 LSLB
30 ADDB ,S+
31 LDX #TABTOR
32 ABX
33 LDY ,X
34 LDB 2,X
35
36 LDA ETAOUT
37 CMPA #POINTE
38 BEQ AFFCA0 ->
39
40 PSHS B copie en RAM
41 LDX #TFORME
42COPTO0 LDA ,Y+
43 STA ,X+
44 DECB
45 BNE COPTO0 ->
46 PULS B
47
48 STB FACLO compil sur place
49 LDX #TFORME
50 LDY #TFORME
51 LDB #CMPTOR
52 JSR EXTRA
53
54 LDY #TORTXT
55 LDA #$FF
56 LDB #SHOW
57 JSR EXTRA
58 BRA AFFCAF ->
59
60AFFCA0 TST STDTOR
61 BNE AFFCAF hors écran ! ->
62 TFR Y,X
63 LDA #1
64 JSR FENTOR
65
66AFFCAF LEAS 1,S
67 RTS
68
69
70*=======================================
71* S/P décalage droite/gauche du tiroir
72* pour mettre les 1ers points de
73* chaque ligne dans une colonne
74* donnée
75* Entrée: B rang à obtenir pour 1er pt
76* (0..7)
77*=======================================
78
79DECALT PSHS U
80 LDU #XDECAL
81 JSR COMBK2
82 PULS U,PC
83
84
85*=======================================
86* S/P génération d'un dessin tortue
87* d'avance éventuellement décomposé
88* en plusieurs (max soft 255)
89*
90* Entrée: D déplacement
91* X chaine rangement
92* Sortie: X ...
93*=======================================
94
95DEPTOR PSHS U
96 LDU #XDEPTO
97 JSR COMBK2
98 PULS U,PC
99
100
101*=======================================
102* S/P traitement d'effacement de l'outil
103* caractère
104*=======================================
105
106EFFCAR LEAS -1,S
107MEMACT SET 0
108*---------------------------------------
109
110 LDA OUTIL
111 CMPA #CARACT
112 BNE EFFCAF ->
113 LDA ETAOUT
114 CMPA #TIRE
115 BNE EFFCAF ->
116 LDY #TORTXT
117 CLRA
118 LDB #SHOW
119 JSR EXTRA
120EFFCAF LEAS 1,S
121 RTS
122
123
124*=======================================
125* S/P traitement visu/effac. des outils
126* ligne en mode TIRE
127*=======================================
128
129INVLIG EQU *
130*---------------------------------------
131
132 LDA ETAOUT
133 CMPA #TIRE
134 BNE XIF ->
135 LDB OUTIL
136 LSLB
137 ADDB OUTIL
138 LEAX XINOUT,PCR
139 JSR B,X
140XIF RTS ->>
141*---------------------------------------
142XINOUT LBRA XIF points
143 LBRA XILIGN
144 LBRA XIRECT
145 LBRA XIRECT carré
146 LBRA XIELLI
147 LBRA XIELLI cercle
148 LBRA XIF caractère
149 LBRA XIF peinture
150 LBRA XIF gomme
151 LBRA XIF loupe
152 LBRA XIF couper copier
153 LBRA XIF coller
154*---------------------------------------
155
156XIRECT EQU *
157*-----
158 JSR FENDES
159 JSR TRINV ancien tracé
160 CLR FILFLG
161 JSR TRRECT
162 JSR FENACT
163 RTS
164
165XILIGN
166*-----
167 JSR FENDES
168 JSR TRINV ancien tracé
169 JSR TRLIGN
170 JSR FENACT
171 RTS
172
173XIELLI EQU *
174*-----
175 JSR FENDES
176 JSR TRINV ancien tracé
177 CLR FILFLG
178 JSR TRELLI
179 JSR FENACT
180 RTS
181
182
183*=======================================
184* S/P expension d'un caractère dans
185* les 4 tailles standards en la
186* position souris courante
187*
188* Entrée: X coordonnées souris
189* Y
190* TXTMOT motif du caractère
191*=======================================
192
193EXPCAR PSHS D,X,Y,U
194 LEAS -4,S
195CPTC SET 0
196FLGL SET 1 flag double haut
197FLGC SET 2 flag double larg
198LIGMOT SET 3
199PD SET 4
200PX SET 6
201PY SET 8
202*---------------------------------------
203 LDB #$13 transparent ?
204 JSR FENCH
205 LDB VAL,X
206 CMPB #ON
207 BEQ EXPA0 ->
208 JSR TRRAZ effacement zone
209 LDA #$FF
210 STA FILFLG
211 LDD #PLEIN
212 STD MACP
213 LDX PX,S
214 STX XXXXXX
215 LDY PY,S
216 STY YYYYYY
217 LEAX 7,X
218 LEAY -7,Y
219 LDA TCAR
220 CMPA #TCN
221 BEQ EXPA01 ->
222 CMPA #TCDH
223 BEQ EXPA00 ->
224 LEAX 8,X
225 CMPA #TCDL
226 BEQ EXPA01 ->
227EXPA00 LEAY -8,Y
228EXPA01 LDB #BOX
229 JSR EXTRA
230 JSR TRNORM
231
232EXPA0 LDY PY,S
233 LDU #TXTMOT
234
235EXPA1 CLR FLGL,S
236EXPA2 LDA #8
237 STA CPTC,S
238 LDX PX,S
239 LDA ,U
240 STA LIGMOT,S
241
242EXPA3 CLR FLGC,S
243EXPA4 LDA LIGMOT,S
244 LSLA
245 BCC EXPA5 ->
246 LDB #PSETXY
247 JSR EXTRA
248
249EXPA5 LEAX 1,X
250
251 TST FLGC,S
252 BNE EXPA6 ->
253 COM FLGC,S
254 LDA TCAR
255 CMPA #TCN
256 BEQ EXPA6 ->
257 CMPA #TCDH
258 BEQ EXPA6 ->
259 BRA EXPA4 double larg. ->
260
261EXPA6 LSL LIGMOT,S
262 DEC CPTC,S
263 BNE EXPA3 ->
264
265 LEAY -1,Y
266
267 TST FLGL,S
268 BNE EXPA7 ->
269 COM FLGL,S
270 LDA TCAR
271 CMPA #TCN
272 BEQ EXPA7 ->
273 CMPA #TCDL
274 BEQ EXPA7 ->
275 BRA EXPA2 double haut. ->
276
277EXPA7 LEAU 1,U
278 CMPU #TXTMOT+8
279 LBNE EXPA1 ->
280
281 JSR TRNORM
282
283 LEAS 4,S
284 PULS D,X,Y,U,PC
285
286
287*=======================================
288* S/P inversion du tiroir pour visu.
289* temporaire
290*=======================================
291
292INVTIR PSHS U
293 LDU #XINVTI
294 JSR COMBK2
295 PULS U,PC
296
297
298*=======================================
299* S/P efface la loupe de pointage
300*=======================================
301
302RAZLOU LEAS -1,S
303MEMTL SET 0
304*---------------------------------------
305 JSR FENDES
306 LDA TLIGN
307 STA MEMTL,S
308 LDA #2
309 STA TLIGN
310 TST FLGLOU
311 BEQ RAZLOF ->
312
313 JSR TRINV
314 CLR FILFLG
315 JSR TRRECT
316
317 LDA FLGLOU
318 CMPA #2
319 BNE RAZLOF ->
320
321 LDA $E7C3 restau 1ére page
322 ORA #1
323 STA $E7C3
324 LDX #$4000
325 LEAX 40*8*3,X
326 LDB COLLOU
327 LSRB
328 LEAX B,X
329 LDA #BKMANO
330 STA BANKC
331 LDY #$A000
332 LDU #18*8
333RAZLO0 LDA #9
334RAZLO1 LDB ,Y+
335 STB ,X+
336 DECA
337 BNE RAZLO1 ->
338 LEAX 31,X
339 LEAU -1,U
340 CMPU #0
341 BNE RAZLO0 ->
342
343 LDA $E7C3 sauver 2éme page
344 EORA #1
345 STA $E7C3
346 LDX #$4000
347 LEAX 40*8*3,X
348 LDB COLLOU
349 LSRB
350 LEAX B,X
351 LDU #18*8
352RAZLO2 LDA #9
353RAZLO3 LDB ,Y+
354 STB ,X+
355 DECA
356 BNE RAZLO3 ->
357 LEAX 31,X
358 LEAU -1,U
359 CMPU #0
360 BNE RAZLO2 ->
361 LDA #BKTIR
362 STA BANKC
363
364RAZLOF CLR FLGLOU
365 LDA MEMTL,S
366 STA TLIGN
367 LEAS 1,S
368 RTS
369
370
371*=======================================
372* S/P visualise tortue selon tiroir
373* (tortue std si tiroir vide)
374*=======================================
375
376TORCOL LEAS -80,S
377DEBTOR SET 0
378*---------------------------------------
379 TST FLGTIR
380 BNE TORCO0 ->
381 LDD #0 tortue std
382 LBRA TORCOF ->
383TORCO0 EQU *
384 LEAX DEBTOR,S
385 LDD #$4C31 'L128'
386 STD ,X++
387 LDD #$3238
388 STD ,X++
389 LDA #$55 'Uxxx'
390 STA ,X+
391 LDD <LPTTIR
392 LSRA
393 RORB
394 JSR DEPTOR
395 LDD #$5236 'R64Uxxx'
396 STD ,X++
397 LDD #$3455
398 STD ,X++
399 CLRA
400 LDB <HPTTIR
401 LSRB
402 JSR BINDCG
403 ABX
404 LDD #$4C31 'L128'
405 STD ,X++
406 LDD #$3238
407 STD ,X++
408 LDA #$44 'Dxxx'
409 STA ,X+
410 CLRA
411 LDB <HPTTIR
412 DECB
413 JSR BINDCG
414 ABX
415 LDD #$4C36 'L64Dxxx'
416 STD ,X++
417 LDD #$3444
418 STD ,X++
419 LDD <LPTTIR
420 SUBD #1
421 JSR DEPTOR
422 LDD #$4C36 'L64Dxxx'
423 STD ,X++
424 LDD #$3444
425 STD ,X++
426 CLRA
427 LDB <HPTTIR
428 DECB
429 JSR BINDCG
430 ABX
431 LDD #$4C36 'L64Dxxx'
432 STD ,X++
433 LDD #$3444
434 STD ,X++
435 LDD <LPTTIR
436 SUBD #1
437 JSR DEPTOR
438 TFR X,D
439 LEAX DEBTOR,S
440 PSHS X
441 SUBD ,S++
442 LDA #1
443
444TORCOF JSR FENTOR
445 JSR FENACT
446 LEAS 80,S
447 RTS
448
449
450*=======================================
451* S/P fixe fenêtre graphique sur zone
452* travail
453*=======================================
454
455TRAMIN PSHS D
456 LDD #32
457 STD XL
458 LDD #623
459 STD XR
460 LDD #8
461 STD YB
462 LDD #191
463 STD YT
464 PULS D,PC
465
466
467*=======================================
468* S/P fixe fenêtre graphique sur écran
469* total
470*=======================================
471
472TRAMAX PSHS D
473 LDD #0 restaure écr trav
474 STD XL
475 STD YB
476 LDD #639
477 STD XR
478 LDD #199
479 STD YT
480 PULS D,PC
481
482
483*=======================================
484* S/P tracé d'une ellipse dans les 3
485* tailles possibles
486* Entrée: X0TIRE coordonnées centre
487* Y0TIRE
488* X1TIRE rayons
489* Y1TIRE
490* Nb: Le mode de dessin doit être
491* déterminé à l'appel il est remis
492* en normal après traitement ...
493* Idem pour FILFLG
494*=======================================
495
496TRELLI PSHS D,X,Y
497*---------------------------------------
498 JSR TRAMIN
499
500 LDX X0TIRE
501 STX XXXXXX
502 LDA X1TIRE
503 STA AXEH
504 LDY Y0TIRE
505 STY YYYYYY
506 LDA Y1TIRE
507 STA AXEV
508 CLR CAMFLG
509 LDB #CIRCLE
510 JSR EXTRA
511 LDB TLIGN
512 CMPB #1
513 BEQ TRELLF ->
514 CLR FILFLG
515 LDA X1TIRE
516 INCA
517 STA AXEH
518 LDA Y1TIRE
519 INCA
520 STA AXEV
521 LDB #CIRCLE
522 JSR EXTRA
523 LDB TLIGN
524 CMPB #2
525 BEQ TRELLF ->
526 LDA X1TIRE
527 INCA
528 INCA
529 STA AXEH
530 LDA Y1TIRE
531 INCA
532 INCA
533 STA AXEV
534 LDB #CIRCLE
535 JSR EXTRA
536
537TRELLF JSR TRAMAX
538 JSR TRNORM
539 PULS D,X,Y,PC
540
541
542*=======================================
543* S/P tracé d'une droite dans les 3
544* tailles possibles
545* Entrée: X0TIRE coordonnées
546* Y0TIRE
547* X1TIRE
548* Y1TIRE
549* Nb: Le mode de dessin doit être
550* déterminé à l'appel il est remis
551* en normal après traitement ...
552*=======================================
553
554TPOINT FCB 0,0,0,1,1,1,1,0,1,-1,0,-1
555 FCB -1,-1,-1,0,-1,1
556TPTV FCB 0,0,0,1,0,-1
557TPTH FCB 0,0,1,0,-1,0
558*---------------------------------------
559TRLIGN PSHS D,X,Y,U
560 LEAS -5,S
561NBPTS SET 0
562DELTAX SET 1
563DELTAY SET 3
564*---------------------------------------
565 JSR TRAMIN
566
567 LDA TLIGN calcul nb points
568 TFR A,B pour un pavé
569 MUL
570 STB NBPTS,S
571 LEAU TPOINT,PCR
572 LDD X0TIRE
573 CMPD X1TIRE
574 BNE LTRLI0 ->
575 LDD Y0TIRE
576 CMPD Y1TIRE
577 BNE LTRLI0 ->
578 LBRA BTRLI0 pavé ->
579
580LTRLI0 LDA TLIGN cas des tracés
581 STA NBPTS,S
582 LDD X1TIRE
583 SUBD X0TIRE
584 BGE LTRLI1 ->
585 LDD X0TIRE
586 SUBD X1TIRE
587LTRLI1 STD DELTAX,S
588 LDD Y1TIRE
589 SUBD Y0TIRE
590 BGE LTRLI2 ->
591 LDD Y0TIRE
592 SUBD Y1TIRE
593LTRLI2 STD DELTAY,S
594 CMPD DELTAX,S
595 BGE LTRLIH ->
596 LEAU TPTV,PCR pts verticaux
597 BRA BTRLI0 ->
598LTRLIH LEAU TPTH,PCR pts horizontaux
599
600BTRLI0 LDX X0TIRE
601 LDA ,U
602 LEAX A,X
603 STX XXXXXX
604 LDX X1TIRE
605 LDA ,U+
606 LEAX A,X
607 LDY Y0TIRE
608 LDA ,U
609 LEAY A,Y
610 STY YYYYYY
611 LDY Y1TIRE
612 LDA ,U+
613 LEAY A,Y
614 LDB #LINE
615 JSR EXTRA
616
617 DEC NBPTS,S
618 BNE BTRLI0 ->
619
620 JSR TRAMAX
621 JSR TRNORM
622 LEAS 5,S
623 PULS D,X,Y,U,PC
624
625
626*=======================================
627* S/P tracé d'un rectangle dans les 3
628* tailles possibles
629* Entrée: X0TIRE coordonnées début
630* Y0TIRE
631* X1TIRE coordonnées fin
632* Y1TIRE
633* Nb: Le mode de dessin doit être
634* déterminé à l'appel il est remis
635* en normal après traitement ...
636* Idem pour FILFLG
637*=======================================
638
639TRRECT PSHS D,X,Y,U
640 LEAS -8,S
641X0LOC SET 0
642Y0LOC SET 2
643X1LOC SET 4
644Y1LOC SET 6
645*---------------------------------------
646 JSR TRAMIN
647
648 LDD X0TIRE Mettre les coor.
649 LDX X1TIRE au mieux !!!
650 CMPD X1TIRE
651 BCS RGPLG0 ->
652 EXG D,X
653RGPLG0 STD X0LOC,S
654 STX X1LOC,S
655
656 LDD Y0TIRE
657 LDX Y1TIRE
658 CMPD Y1TIRE
659 BCS RGPLG1 ->
660 EXG D,X
661RGPLG1 STD Y0LOC,S
662 STX Y1LOC,S
663
664 LEAU X0LOC,S
665 BSR TRBOX
666
667 LDB TLIGN
668 CMPB #1
669 BEQ TRRECF ->
670 CLR FILFLG
671 LDD X0LOC,S
672 SUBD #1
673 STD X0LOC,S
674 LDD Y0LOC,S
675 SUBD #1
676 STD Y0LOC,S
677 LDD X1LOC,S
678 ADDD #1
679 STD X1LOC,S
680 LDD Y1LOC,S
681 ADDD #1
682 STD Y1LOC,S
683 BSR TRBOX
684
685 LDB TLIGN
686 CMPB #2
687 BEQ TRRECF ->
688 LDD X0LOC,S
689 SUBD #1
690 STD X0LOC,S
691 LDD Y0LOC,S
692 SUBD #1
693 STD Y0LOC,S
694 LDD X1LOC,S
695 ADDD #1
696 STD X1LOC,S
697 LDD Y1LOC,S
698 ADDD #1
699 STD Y1LOC,S
700 BSR TRBOX
701
702TRRECF JSR TRAMAX
703 JSR TRNORM
704 LEAS 8,S
705 PULS D,X,Y,U,PC ->>
706*---------------------------------------
707
708TRBOX LDX X0LOC,U
709 STX XXXXXX
710 LDX X1LOC,U
711 LDY Y0LOC,U
712 STY YYYYYY
713 LDY Y1LOC,U
714 LDB #BOX
715 JSR EXTRA
716 RTS
717
718
719*=======================================
720* S/P sélection du mode de tracé
721*=======================================
722
723TRNORM PSHS D # normal
724 CLRA
725 BRA TRCHOI ->
726TRTRAN PSHS D # transparent
727 LDA #1
728 BRA TRCHOI ->
729TRINV PSHS D # inversion
730 LDA #2
731 BRA TRCHOI ->
732TRRAZ PSHS D # tracé en 0
733 CLRA
734 STA TRATYP
735 LDA #-1
736 STA COULGR
737 BRA XTR0 ->
738TRCHOI STA TRATYP
739 CLR COULGR
740XTR0 LDB #CHOIX
741 JSR EXTRA
742 PULS D,PC
743
744
745*=======================================
746* S/P détermination des variables de
747* tracé pour les remplissages
748*=======================================
749
750TRREMP JSR TRNORM
751 JSR TRAMIN
752 CLR FILFLG
753 LDB #$12 rempli ?
754 JSR FENCH
755 LDB VAL,X
756 CMPB #OFF
757 BEQ TRREM0 ->
758 COM FILFLG
759 LDD #MOTIF
760 STD MACP
761 LDB #$13 transparent ?
762 JSR FENCH
763 LDB VAL,X
764 CMPB #OFF
765 BEQ TRREM0 ->
766 JSR TRTRAN
767TRREM0 RTS
768
769
770*=======================================
771* S/P visualisation temporaire de la
772* loupe sous forme d'une boite en
773* taille 3 selon les coord.
774* (REGX/REGY)
775* Si FLGLOU = 0 on suppose 1er passe
776*=======================================
777
778VISLOU LEAS -1,S
779MEMTL SET 0
780*---------------------------------------
781 JSR FENDES
782 JSR TRINV
783 LDA TLIGN
784 STA MEMTL,S
785 LDA #2
786 STA TLIGN
787 TST FLGLOU
788 BEQ NOUVL0 ->
789 JSR TRINV
790 CLR FILFLG
791 JSR TRRECT
792
793NOUVL0 LDA #1
794 STA FLGLOU
795 LDD REGY
796 CMPD #24
797 BGT NOUVL1 ->
798 LDD #7
799 BRA NOUVL5 ->
800NOUVL1 CMPD #176
801 BLT NOUVL2 ->
802 LDD #159
803 BRA NOUVL5 ->
804NOUVL2 SUBD #17
805
806NOUVL5 STD Y0TIRE
807 ADDD #33
808 STD Y1TIRE
809
810 LDD REGX
811 CMPD #48
812 BGT NOUVL6 ->
813 LDD #31
814 BRA NOUVL9 ->
815NOUVL6 CMPD #608
816 BLT NOUVL7 ->
817 LDD #591
818 BRA NOUVL9 ->
819NOUVL7 SUBD #17
820
821NOUVL9 STD X0TIRE
822 ADDD #33
823 STD X1TIRE
824
825 JSR TRINV
826 CLR FILFLG
827 JSR TRRECT
828
829 JSR FENACT
830 LDA MEMTL,S
831 STA TLIGN
832 LEAS 1,S
833 RTS
834
835
836*=======================================
837* S/P visualisation temporaire du
838* tiroir en la position souris
839* courante (REGX/REGY)
840* Maintient jusqu'à:
841* - déplacement souris
842* - clic gauche
843* - fin clic droit
844*=======================================
845
846TMPTIR EQU *
847*---------------------------------------
848 JSR FENDES
849 TST FLGTIR
850 BNE VISTI0 ok ->
851 LDX #MTIRVI
852 JSR FENERR
853 LBRA VISTIF ->
854
855VISTI0 JSR INVTIR visu. tempor.
856VISTI1 JSR GETL
857 BCS VISTI1 ->
858 CMPX REGX
859 BNE VISTI9 déplac. ->
860 CMPY REGY
861 BNE VISTI9 déplac. ->
862 JSR LPIN
863 BCS VISTI9 clic gauche ->
864 BNE VISTI9 fin .. droit->
865 BRA VISTI1 ->
866VISTI9 JSR INVTIR fin visu. temp.
867
868VISTIF JSR FENACT
869 RTS
Note: See TracBrowser for help on using the repository browser.