source: thomson/code/3rdparty/sources2-hcl/ANIMA3D.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: 28.3 KB
Line 
1****************************************
2* *
3* 3D fil de fer by Doctor Lô *
4* *
5***************31-10-90*****************
6* et 19-1-91 *
7* éditeur le 26-1-91 *
8****************************************
9
10
11TEXTE EQU $7200
12OBJETS EQU $7300
13EXEC EQU $89E0
14CENTRE EQU $8A00
15SINUS EQU $8E00
16FONTES EQU $9080
17LINKS EQU $917A
18CODE EQU $926A
19DIR EQU $9E
20Z EQU $D8
21CORDOS EQU $9F00
22ECRAN EQU $C000-31*40
23ECRTXT EQU $DE7A adresse à l'écran
24HAUT EQU 192
25QUAD EQU 128
26NN EQU $8000 masque "non nul"
27
28
29 ORG EXEC procédure d'appel
30 ORCC #80
31 LDD #$20E
32 BSR COPBNK
33 JSR G
34 LDD #$E02
35COPBNK LDX #$A000 copie de la bank 2
36 STA $E7E5 (basic) en bank 14
37 LDU ,X
38 STB $E7E5
39 STU ,X++
40 CMPX #$E000
41 BLO *-13
42 RTS
43
44 ORG LINKS
45 FDB $25B,$B02,NN+12,ARETES
46 FCB 11,12,1,12
47 FDB $373,$B00,0,COLOUR
48 FCB 0,13,2,13
49 FDB $4E8,$200,0,SCROLL
50 FCB 1,14,3,14
51 FDB $675,$800,OBJETS,NOBJ
52 FCB 2,3,4,3
53 FDB $78D,$800,0,NOBJ
54 FCB 3,15,5,4
55 FDB $8A5,$800,0,NOBJ
56 FCB 4,16,6,15
57 FDB $9BD,$800,0,NOBJ
58 FCB 5,17,7,16
59 FDB $AD5,$800,0,NOBJ
60 FCB 6,7,8,17
61 FDB $BED,$800,0,NOBJ
62 FCB 7,8,9,8
63 FDB $D80,$200,0,SCROLL
64 FCB 8,9,10,9
65 FDB $151E,$A00,1,CENTR1
66 FCB 9,10,11,10
67 FDB $1636,$A01,4,CENTR2
68 FCB 10,18,0,11
69 FDB $274,$A03,511,ANGLES
70 FCB 19,0,13,0
71 FDB $38C,$A03,511,ANGLES
72 FCB 12,1,14,1
73 FDB $4A4,$A03,511,ANGLES
74 FCB 13,2,15,2
75 FDB $7E8,$E03,511,SPEEDS
76 FCB 14,5,16,4
77 FDB $900,$E03,511,SPEEDS
78 FCB 15,6,17,5
79 FDB $A18,$E03,511,SPEEDS
80 FCB 16,7,18,6
81 FDB $18F3,$A03,NN+999,WAITS
82 FCB 17,18,19,11
83 FDB $1A0B,$A04,NN+9999,WAITS
84 FCB 18,19,12,19
85
86 ORG CODE
87G LDA #$E7
88 EXG A,DP
89 LDB <$E6
90 STD RDP+1
91 LDA #$60 écran $4000-$5F40
92 STA <$E6 (de l'éditeur)
93 CLR <$DC en cartouche
94
95 LDD #32
96 STA <$DB
97 STA <$DA
98 DECB
99 BNE *-3
100 LDX #MAP décompacte image
101 STX $616B
102 LDD #$FF0E
103 STA $6249
104 STB $616D
105 INCB
106 STB <$E5
107 LDD #$100
108 STD $61D6
109 CLR $6288
110 LDB #69
111 JSR $EC0C
112
113 LDB #2 copie fond éditeur
114COPICT STB <$E5 dans écran démo
115 LDX #$DF40
116 CLR ,-X
117 CMPX #$C000
118 BNE *-5
119 LDX #$A000
120 LDU #$2000
121 LDA ,U
122 LDB #40
123 STA ,X+
124 DECB
125 BNE *-3
126 LEAU 40,U
127 CMPX #$BF40
128 BNE *-15
129 LDB <$E5
130 INCB
131 CMPB #4
132 BNE COPICT
133 LDD ,--U
134 STD ,--X
135 CMPX #$BDD8
136 BNE *-7
137 LDX #$DDD8
138 LDU #$1DD8
139 LDD ,U++
140 STD ,X++
141 CMPX #$DF40
142 BNE *-7
143 LDX #$DE7A
144 LDY #TEXTE
145 LDB ,Y+
146 JSR PUTC
147 CMPX #$DE9E
148 BNE *-8
149
150 LDA #DIR
151 TFR A,DP
152 LDD #TEXTE initialisations
153 STD <Z+34
154 LDD #ECRTXT
155 STD <Z+36
156 LDD #100 latence du texte
157 STD WAITXT+1
158 STD <Z+32
159 LDU #OBJETS
160 JSR DEFOBJ
161 LDA #128
162 STA $E7DD
163 LDA #1
164 LDX #256
165BLUES TST $E7E7 apparition 'fondu'
166 BMI *-3
167 TST $E7E7
168 BPL *-3
169 TFR A,B
170 LEAY ,X
171 JSR $EC00
172 INCA
173 CMPA #7
174 BNE *-8
175 TFR B,A
176 LEAX 256,X
177 INCA
178 CMPA #7
179 BNE BLUES
180 LDA #15
181 LDX #-1
182 LEAY 1,X
183 JSR $EC00
184 STX MAP-34
185 LDX #MAP-64
186 LDA #-1
187 JSR $EC00
188
189 LDA #$62 scroll de la barre
190 STA $E7E6
191 LDX #$3DFF-40
192 STX <Z
193 LDA #1
194SONIA STA <Z+2
195 TST $E7E7
196 BPL *-3
197 TST $E7E7
198 BMI *-3
199 LDB #9
200 STB <Z+3
201 LDU #$BDD8-40
202 STU <Z+4
203HELENE LDX <Z
204 LEAX 40,X
205 STX <Z
206 LDU <Z+4
207 LEAU 40,U
208 STU <Z+4
209 LDB <Z+2
210 LDA ,U+
211 STA ,X+
212 LDA $1FFF,U
213 STA -$2001,X
214 DECB
215 BNE *-13
216 DEC <Z+3
217 BNE HELENE
218 LDX <Z
219 LEAX -361,X
220 STX <Z
221 LDA <Z+2
222 INCA
223 CMPA #41
224 BNE SONIA
225 LDA #$60
226 STA $E7E6
227
228BIGBCL LDD #$2C0 boucle principale
229 STA $E7E5
230 STB $E7DD
231 BSR IMAGE
232 LDD #$380
233 STA $E7E5
234 STB $E7DD
235 BSR IMAGE
236 TST $E7C8
237 BEQ BIGBCL
238 JSR $E806
239 CMPB #$99 sortie avec 'F10'
240 LBNE EDITOR
241
242RDP LDD #0 retour au basic
243 TFR A,DP
244 STB $E7E6
245 CLR $E7DD
246 LDX #MAP-32
247 LDA #255
248 JSR $EC00
249 RTS
250
251IMAGE STS RS+2 génère un écran
252 LDA #HAUT/12-1
253 STA <Z
254 LDU #VIDE effacement total
255 PULU D,X,Y,S
256 LDU #ECRAN+(HAUT+28)*40-8
257RUB FCC /6v6v6v3P6v6v6v3P/
258 FCC /6v6v6v3P6v6v6v3P/
259 FCC /6v6v6v3P6v6v6v3P/
260 FCC /6v6v6v3P6v6v6v3P/
261 FCC /6v6v6v3P6v6v6v3P/
262 FCC /6v6v6v3P6v6v6v3P/
263 DEC <Z
264 BNE RUB
265 FCC /6v6v6v3P6v6v6v/
266
267 LDX <Z+32 affiche une lettre
268 BEQ *+8
269 LEAX -1,X
270 STX <Z+32
271 BRA FAFTEX
272 LDY <Z+34 où dans le texte
273 LDB ,Y
274 LDA #5
275 MUL
276 LDU #FONTES
277 LEAU D,U
278 LDX <Z+36 position à l'écran
279 PULU D
280 STA -80,X
281 STB -40,X
282 PULU D
283 STA ,X
284 STB 40,X
285 LDA ,U
286 STA 80,X
287 INC <Z+31
288 LDA #1
289 BITA <Z+31
290 BEQ WAITXT+5
291 LEAX 1,X
292 LEAY 1,Y
293 LDB ,Y
294 BPL *+6
295 LDY #TEXTE
296 CMPX #ECRTXT+36
297 BNE *+10
298 LDX #ECRTXT
299WAITXT LDD #0
300 STD <Z+32
301 STX <Z+36
302 STY <Z+34
303
304FAFTEX LDX <Z+38
305 LEAX -1,X
306 STX <Z+38
307 BNE *+13
308 LDX <Z+29
309 LDU 10,X
310 LDS RS+2
311 JSR DEFOBJ objet suivant
312
313 LDU <Z+18
314 LDA ,U+ nbre de points
315 STA <Z+14
316 LDS #CORDOS
317 LDX <Z+27 abcisse du centre
318 LDA ,X
319 ANDA #7
320 ADDA #92
321 STA ABCENT+1
322 LDB ,X
323 LSRB
324 LSRB
325 LSRB
326VITCEN LEAX 7,X
327 CMPX #CENTRE+512
328 BLO *+6
329 LEAX -512,X
330 STX <Z+27
331 LDX #ECRAN
332 ABX
333 STX LINE1-28
334 STX LINE2-26
335 STX LINE3-28
336 STX LINE4-26
337 LDX #ECRAN+(HAUT+22)*40+24
338 ABX
339 STX RUB-2
340
341**** rotation autour de (zz') ****
342COORD LDX <Z+8 pointe sur cos (a)
343 LDA ,U abcisse (X)
344 LDB ,X
345 ANDA #127
346 ANDB #127
347 MUL
348 STD <Z+4 ABS ( X * cos a )
349 LDA ,U
350 EORA ,X
351 BPL *+9
352 LDD #0
353 SUBD <Z+4
354 STD <Z+4
355
356 LDA 1,U ordonnée (Y)
357 LDB QUAD,X
358 ANDA #127
359 ANDB #127
360 MUL
361 STD <Z+6 ABS ( Y * sin a )
362 LDA 1,U
363 EORA QUAD,X
364 BPL *+9
365 LDD #0
366 SUBD <Z+6
367 STD <Z+6
368
369 LDD <Z+4
370 SUBD <Z+6
371 ASLB
372 ROLA
373 BCC *+11
374 STD <Z+4
375 LDD #0
376 SUBD <Z+4
377 ORA #128
378 STA <Z X' = Xcosa - Ysina
379
380 LDA ,U abcisse (X)
381 LDB QUAD,X
382 ANDA #127
383 ANDB #127
384 MUL
385 STD <Z+4 ABS ( X * sin a )
386 LDA ,U+
387 EORA QUAD,X
388 BPL *+9
389 LDD #0
390 SUBD <Z+4
391 STD <Z+4
392
393 LDA ,U ordonnée (Y)
394 LDB ,X
395 ANDA #127
396 ANDB #127
397 MUL
398 STD <Z+6 ABS ( Y * cos a )
399 LDA ,U+
400 EORA ,X
401 BPL *+9
402 LDD #0
403 SUBD <Z+6
404 STD <Z+6
405
406 LDD <Z+4
407 ADDD <Z+6
408 ASLB
409 ROLA
410 BCC *+11
411 STD <Z+4
412 LDD #0
413 SUBD <Z+4
414 ORA #128
415 STA <Z+1 Y' = Xsina + Ycosa
416
417**** rotation autour de (yy') ****
418
419 LDX <Z+10 pointe sur cos (b)
420 LDA ,U cote (Z)
421 LDB ,X
422 ANDA #127
423 ANDB #127
424 MUL
425 STD <Z+4 ABS ( Z * cos b )
426 LDA ,U
427 EORA ,X
428 BPL *+9
429 LDD #0
430 SUBD <Z+4
431 STD <Z+4
432
433 LDA <Z abcisse (X)
434 LDB QUAD,X
435 ANDA #127
436 ANDB #127
437 MUL
438 STD <Z+6 ABS ( X * sin b )
439 LDA <Z
440 EORA QUAD,X
441 BPL *+9
442 LDD #0
443 SUBD <Z+6
444 STD <Z+6
445
446 LDD <Z+4
447 SUBD <Z+6
448 ASLB
449 ROLA
450 BCC *+11
451 STD <Z+4
452 LDD #0
453 SUBD <Z+4
454 ORA #128
455 STA <Z+15 Z' = Zcosb - Xsinb
456
457 LDA ,U cote (Z)
458 LDB QUAD,X
459 ANDA #127
460 ANDB #127
461 MUL
462 STD <Z+4 ABS ( Z * sin b )
463 LDA ,U+
464 EORA QUAD,X
465 BPL *+9
466 LDD #0
467 SUBD <Z+4
468 STD <Z+4
469
470 LDA <Z abcisse (X)
471 LDB ,X
472 ANDA #127
473 ANDB #127
474 MUL
475 STD <Z+6 ABS ( X * cos b )
476 LDA <Z
477 EORA ,X
478 BPL *+9
479 LDD #0
480 SUBD <Z+6
481 STD <Z+6
482
483 LDD <Z+4
484 ADDD <Z+6
485 ASLB
486 ROLA
487 BCC *+11
488 STD <Z+4
489 LDD #0
490 SUBD <Z+4
491 ORA #128
492 STA <Z+16 X' = Zsinb + Xcosb
493
494**** rotation autour de (xx') ****
495
496 LDX <Z+12 pointe sur cos (c)
497 LDA <Z+1 ordonnée (Y)
498 LDB ,X
499 ANDA #127
500 ANDB #127
501 MUL
502 STD <Z+4 ABS ( Y * cos c )
503 LDA <Z+1
504 EORA ,X
505 BPL *+9
506 LDD #0
507 SUBD <Z+4
508 STD <Z+4
509
510 LDA <Z+15 cote (Z)
511 LDB QUAD,X
512 ANDA #127
513 ANDB #127
514 MUL
515 STD <Z+6 ABS ( Z * sin c )
516 LDA <Z+15
517 EORA QUAD,X
518 BPL *+9
519 LDD #0
520 SUBD <Z+6
521 STD <Z+6
522
523 LDD <Z+4
524 SUBD <Z+6
525 ASLB
526 ROLA
527 BCC *+11
528 STD <Z+4
529 LDD #0
530 SUBD <Z+4
531 ORA #128
532 STA <Z+17 Y' = Ycosc - Zsinc
533
534 LDD <Z+16
535 ANDA #127
536 CMPA <Z+16
537 BEQ *+3
538 NEGA
539ABCENT ADDA #0 x centre écran
540 ANDB #127
541 CMPB <Z+17
542 BEQ *+3
543 NEGB
544 ADDB #124 y centre écran
545
546 STD ,S++ remplit table des
547 DEC <Z+14 coordonnées écran
548 LBNE COORD
549RS LDS #0
550
551 LDA <Z+26 nbre de segments
552 STA <Z+14
553 LDY #VIDE-8
554TRACE LDX #CORDOS
555 LDB ,U+
556 LDD B,X
557 STD <Z+6
558 LDB ,U+
559 LDD B,X trace les segments
560 BSR DRAW entre différentes
561 DEC <Z+14 coordonnées écran
562 BNE TRACE
563
564 LDD <Z+8
565 ADDD <Z+20
566 CMPD #SINUS+4*QUAD
567 BLO *+5
568 SUBD #4*QUAD
569 STD <Z+8
570 LDD <Z+10
571 ADDD <Z+22
572 CMPD #SINUS+4*QUAD
573 BLO *+5
574 SUBD #4*QUAD
575 STD <Z+10
576 LDD <Z+12
577 ADDD <Z+24
578 CMPD #SINUS+4*QUAD
579 BLO *+5
580 SUBD #4*QUAD
581 STD <Z+12
582 RTS
583
584
585DRAW STD <Z+4
586 CMPA <Z+6 si x1 > x2 alors
587 BLS *+10 permutation
588 LDX <Z+6
589 STX <Z+4
590 STD <Z+6
591 LDB <Z+5
592
593 CMPB <Z+7
594 LBHI MONTEE quand y1 < y2
595
596 LDD <Z+6
597 SUBA <Z+4 A = (dx)
598 STA <Z+1
599 SUBB <Z+5 B = (dy)
600 CMPB <Z+1
601 LBHI VERTI1 quand (dy) > (dx)
602
603 TFR B,A
604 CLRB (dy) / (dx) = 0.?
605 ASLA
606 BCS *+6
607 CMPA <Z+1
608 BLO *+6
609 SUBA <Z+1
610 ORB #128
611 ASLA
612 BCS *+6
613 CMPA <Z+1
614 BLO *+6
615 SUBA <Z+1
616 ORB #64
617 ASLA
618 BCS *+6
619 CMPA <Z+1
620 BLO *+6
621 SUBA <Z+1
622 ORB #32
623 ASLA
624 BCS *+6
625 CMPA <Z+1
626 BLO *+6
627 SUBA <Z+1
628 ORB #16
629 ASLA
630 BCS *+6
631 CMPA <Z+1
632 BLO *+6
633 SUBA <Z+1
634 ORB #8
635 ASLA
636 BCS *+6
637 CMPA <Z+1
638 BLO *+6
639 SUBA <Z+1
640 ORB #4
641 ASLA
642 BCS *+6
643 CMPA <Z+1
644 BLO *+6
645 SUBA <Z+1
646 ORB #2
647 ASLA
648 BCS *+6
649 CMPA <Z+1
650 BLO *+6
651 SUBA <Z+1
652 ORB #1
653 STB MMSEG1+1
654
655 LDX #ECRAN
656 LDA #40
657 LDB <Z+5
658 MUL
659 LEAX D,X
660 LDB <Z+4
661 LSRB
662 LSRB
663 LSRB
664 ABX
665 LDB <Z+4
666 ANDB #7
667 LDA B,Y
668 STA <Z
669 INC <Z+1
670 CLRB
671
672 LDA ,X
673LINE1 ORA <Z
674 DEC <Z+1
675 BNE *+5
676 STA ,X
677 RTS
678 LSR <Z
679 BNE MMSEG1
680 ROR <Z
681 STA ,X+
682 LDA ,X
683MMSEG1 ADDB #0
684 BCC LINE1
685 STA ,X
686 LEAX 40,X
687 BRA LINE1-2
688
689VERTI1 STB <Z+1
690 CLRB (dx) / (dy) = 0.?
691 ASLA
692 BCS *+6
693 CMPA <Z+1
694 BLO *+6
695 SUBA <Z+1
696 ORB #128
697 ASLA
698 BCS *+6
699 CMPA <Z+1
700 BLO *+6
701 SUBA <Z+1
702 ORB #64
703 ASLA
704 BCS *+6
705 CMPA <Z+1
706 BLO *+6
707 SUBA <Z+1
708 ORB #32
709 ASLA
710 BCS *+6
711 CMPA <Z+1
712 BLO *+6
713 SUBA <Z+1
714 ORB #16
715 ASLA
716 BCS *+6
717 CMPA <Z+1
718 BLO *+6
719 SUBA <Z+1
720 ORB #8
721 ASLA
722 BCS *+6
723 CMPA <Z+1
724 BLO *+6
725 SUBA <Z+1
726 ORB #4
727 ASLA
728 BCS *+6
729 CMPA <Z+1
730 BLO *+6
731 SUBA <Z+1
732 ORB #2
733 ASLA
734 BCS *+6
735 CMPA <Z+1
736 BLO *+6
737 SUBA <Z+1
738 ORB #1
739 STB VIRG1+1
740
741 LDX #ECRAN
742 LDA #40
743 LDB <Z+5
744 MUL
745 LEAX D,X
746 LDB <Z+4
747 LSRB
748 LSRB
749 LSRB
750 ABX
751 LDB <Z+4
752 ANDB #7
753 LDA B,Y
754 STA <Z
755 INC <Z+1
756 CLRB
757
758LINE2 LDA ,X
759 ORA <Z
760 STA ,X
761 LEAX 40,X
762 DEC <Z+1
763 BNE *+3
764 RTS
765VIRG1 ADDB #0
766 BCC LINE2
767 LSR <Z
768 BNE LINE2
769 ROR <Z
770 LEAX 1,X
771 BRA LINE2
772
773MONTEE LDD <Z+6
774 SUBA <Z+4 A = (dx)
775 STA <Z+1
776 LDB <Z+5
777 SUBB <Z+7 B = (dy)
778 CMPB <Z+1
779 LBHI VERTI2 quand (dy) > (dx)
780
781 TFR B,A
782 CLRB (dy) / (dx) = 0.?
783 ASLA
784 BCS *+6
785 CMPA <Z+1
786 BLO *+6
787 SUBA <Z+1
788 ORB #128
789 ASLA
790 BCS *+6
791 CMPA <Z+1
792 BLO *+6
793 SUBA <Z+1
794 ORB #64
795 ASLA
796 BCS *+6
797 CMPA <Z+1
798 BLO *+6
799 SUBA <Z+1
800 ORB #32
801 ASLA
802 BCS *+6
803 CMPA <Z+1
804 BLO *+6
805 SUBA <Z+1
806 ORB #16
807 ASLA
808 BCS *+6
809 CMPA <Z+1
810 BLO *+6
811 SUBA <Z+1
812 ORB #8
813 ASLA
814 BCS *+6
815 CMPA <Z+1
816 BLO *+6
817 SUBA <Z+1
818 ORB #4
819 ASLA
820 BCS *+6
821 CMPA <Z+1
822 BLO *+6
823 SUBA <Z+1
824 ORB #2
825 ASLA
826 BCS *+6
827 CMPA <Z+1
828 BLO *+6
829 SUBA <Z+1
830 ORB #1
831 STB MMSEG2+1
832
833 LDX #ECRAN
834 LDA #40
835 LDB <Z+5
836 MUL
837 LEAX D,X
838 LDB <Z+4
839 LSRB
840 LSRB
841 LSRB
842 ABX
843 LDB <Z+4
844 ANDB #7
845 LDA B,Y
846 STA <Z
847 INC <Z+1
848 CLRB
849
850 LDA ,X
851LINE3 ORA <Z
852 DEC <Z+1
853 BNE *+5
854 STA ,X
855 RTS
856 LSR <Z
857 BNE MMSEG2
858 ROR <Z
859 STA ,X+
860 LDA ,X
861MMSEG2 ADDB #0
862 BCC LINE3
863 STA ,X
864 LEAX -40,X
865 BRA LINE3-2
866
867VERTI2 STB <Z+1
868 CLRB (dx) / (dy) = 0.?
869 ASLA
870 BCS *+6
871 CMPA <Z+1
872 BLO *+6
873 SUBA <Z+1
874 ORB #128
875 ASLA
876 BCS *+6
877 CMPA <Z+1
878 BLO *+6
879 SUBA <Z+1
880 ORB #64
881 ASLA
882 BCS *+6
883 CMPA <Z+1
884 BLO *+6
885 SUBA <Z+1
886 ORB #32
887 ASLA
888 BCS *+6
889 CMPA <Z+1
890 BLO *+6
891 SUBA <Z+1
892 ORB #16
893 ASLA
894 BCS *+6
895 CMPA <Z+1
896 BLO *+6
897 SUBA <Z+1
898 ORB #8
899 ASLA
900 BCS *+6
901 CMPA <Z+1
902 BLO *+6
903 SUBA <Z+1
904 ORB #4
905 ASLA
906 BCS *+6
907 CMPA <Z+1
908 BLO *+6
909 SUBA <Z+1
910 ORB #2
911 ASLA
912 BCS *+6
913 CMPA <Z+1
914 BLO *+6
915 SUBA <Z+1
916 ORB #1
917 STB VIRG2+1
918
919 LDX #ECRAN
920 LDA #40
921 LDB <Z+5
922 MUL
923 LEAX D,X
924 LDB <Z+4
925 LSRB
926 LSRB
927 LSRB
928 ABX
929 LDB <Z+4
930 ANDB #7
931 LDA B,Y
932 STA <Z
933 INC <Z+1
934 CLRB
935
936LINE4 LDA ,X
937 ORA <Z
938 STA ,X
939 LEAX -40,X
940 DEC <Z+1
941 BNE *+3
942 RTS
943VIRG2 ADDB #0
944 BCC LINE4
945 LSR <Z
946 BNE LINE4
947 ROR <Z
948 LEAX 1,X
949 BRA LINE4
950
951 FDB $8040,$2010,$0804,$0201
952VIDE FDB 0,0,0,0
953
954DEFOBJ STU <Z+29
955 LDX 12,U couleur de l'objet
956 LEAY ,X
957 LDA #15
958 JSR $EC00
959 LDX #CENTRE
960 LDA 14,U
961 BMI *+5
962 LDX #CENTRE+512
963 STX <Z+27 type déplacement
964 LEAX 512,X
965 STX VITCEN+3 et
966 ANDA #127
967 STA VITCEN+1 vitesse du centre
968 LEAU 15,U
969 PULU D,X,Y
970 STD <Z+8 angle A
971 STX <Z+10 angle B
972 STY <Z+12 angle C
973 PULU D,X,Y
974 STD <Z+20 vit-A
975 STX <Z+22 vit-B
976 STY <Z+24 vit-C
977 LDA ,U+
978 STA <Z+26 nombre de segments
979 PULU X
980 STX <Z+38 attente objet
981 STU <Z+18
982NEWSCR BSR VIDECR
983 LDA $E7E5
984 EORA #1
985 STA $E7E5
986 BSR VIDECR
987 LDA $E7E5
988 EORA #1
989 STA $E7E5
990 RTS
991
992VIDECR STS EDITOR-3
993 LDA #HAUT/12-1
994 STA <Z
995 LDU #VIDE
996 PULU D,X,Y,S
997 LDU #ECRAN+(HAUT+28)*40
998KILALL FCC /6v6v6v6v6v6v6v6v6v6v/
999 FCC /6v6v6v6v6v6v6v6v6v6v/
1000 FCC /6v6v6v6v6v6v6v6v6v6v/
1001 FCC /6v6v6v6v6v6v6v6v6v6v/
1002 FCC /6v6v6v6v6v6v6v6v6v6v/
1003 FCC /6v6v6v6v6v6v6v6v6v6v/
1004 DEC <Z
1005 BNE KILALL
1006 FCC /6v6v6v6v6v6v6v6v6v6v/
1007 LDS #0
1008 RTS
1009
1010EDITOR LDA #$C0
1011 STA $E7DD
1012 LDX #$2000 couleur Editeur
1013 LDA ,X+
1014 ANDA #120
1015 CMPA #56
1016 BNE *+10
1017 LDA $9FFF,X forme Démo
1018 STA $DFFF,X forme Editeur
1019 CMPX #$3DD8
1020 BNE EDITOR+8
1021 LDA #10
1022 STA <Z+6
1023 LDX #$274 angles
1024 LDU <Z+12
1025 LEAU -SINUS,U
1026 LDA #3
1027 JSR WRITE
1028 LDX #$38C
1029 LDU <Z+10
1030 LEAU -SINUS,U
1031 LDA #3
1032 JSR WRITE
1033 LDX #$4A4
1034 LDU <Z+8
1035 LEAU -SINUS,U
1036 LDA #3
1037 JSR WRITE
1038 LDX #$18F3 attentes
1039 LDU <Z+32
1040 LDA #3
1041 JSR WRITE
1042 LDX #$1A0B
1043 LDU <Z+38
1044 LDA #4
1045 JSR WRITE
1046 LDX #$1636 vitesse centre
1047 LDB VITCEN+1
1048 CLRA
1049 TFR D,U
1050 LDA #1
1051 JSR WRITE
1052 INC <Z+6
1053 LDX #$25B nombre de segments
1054 LDB <Z+26
1055 CLRA
1056 TFR D,U
1057 LDA #2
1058 JSR WRITE
1059 LDU <Z+18
1060 LDB -3,U
1061 STB LINKS+5
1062 LDB #14
1063 STB <Z+6
1064 LDX #$7E8 vitesses rotation
1065 LDU <Z+24
1066 LDA #3
1067 JSR WRITE
1068 LDX #$900
1069 LDU <Z+22
1070 LDA #3
1071 JSR WRITE
1072 LDX #$A18
1073 LDU <Z+20
1074 LDA #3
1075 JSR WRITE
1076 LDX #$151F type dplcmt centre
1077 LDY #CENTR2-19
1078 CLR LINKS+125
1079 LDU VITCEN+3
1080 CMPU #CENTRE+512
1081 BEQ *+7
1082 INC LINKS+125
1083 LEAY 10,Y
1084 LDB ,Y+
1085 BMI *+7
1086 JSR PUTC
1087 BRA *-7
1088 LDX #$48B objet courant
1089 LDY <Z+29
1090 LDB ,Y+
1091 JSR PUTC
1092 CMPX #$493
1093 BNE *-8
1094 LDX #$675 liste objets
1095 LDY #LINKS+40
1096 LDU ,Y
1097 STS ZEBEST+2
1098 LDA #6
1099 STA <Z+1
1100 STU ,Y
1101 LDA #8
1102 STA <Z
1103NOMOBJ LDB ,U+
1104 LDS #FONTES
1105 LDA #5
1106 MUL
1107 LEAS D,S
1108 PULS D
1109 STA -80,X
1110 STB -40,X
1111 PULS D
1112 STA ,X+
1113 STB 39,X
1114 LDA ,S
1115 STA 79,X
1116 DEC <Z
1117 BNE NOMOBJ
1118 LEAX 272,X
1119 LEAY 12,Y
1120 LDU 2,U
1121 DEC <Z+1
1122 BNE NOMOBJ-6
1123ZEBEST LDS #0
1124 LDA #15
1125 LDX #-1
1126 LEAY 1,X
1127 JSR $EC00
1128 STX <Z
1129 LDX #$37B palette
1130 LDB <Z
1131 ANDB #15
1132 ADDB #12
1133 JSR PUTC
1134 LDB <Z+1
1135 LSRB
1136 LSRB
1137 LSRB
1138 LSRB
1139 ADDB #12
1140 JSR PUTC
1141 LDB <Z+1
1142 ANDB #15
1143 ADDB #12
1144 JSR PUTC
1145 CLR $E7DD
1146 LDB #0
1147 STB <Z+14
1148 LDA <Z+14
1149ARROWS LDY #LINKS
1150 STA <Z+14
1151 LDB #12
1152 MUL
1153 LEAY D,Y
1154 LDX ,Y
1155 LDA 2,Y
1156 STA <Z+6
1157 BSR INVERS
1158 LDA <Z+6
1159CLAV JSR $E806
1160 CMPB #13
1161 BNE NOEXIT
1162 BSR INVERS
1163 LDA 3,Y
1164 BEQ NOEXIT-3
1165 LDX ,Y
1166 LDU 4,Y
1167 JSR READ
1168 JMP [6,Y]
1169NOEXIT CMPB #2
1170 BNE *+15
1171 LDB <Z+14
1172 STB ARROWS-5
1173 BSR INVERS
1174 JSR NEWSCR
1175 JMP BIGBCL
1176 SUBB #8
1177 CMPB #3
1178 BHI CLAV
1179 BSR INVERS
1180 TSTB
1181 BNE *+6
1182 LDA 11,Y
1183 BRA ARROWS
1184 CMPB #1
1185 BNE *+6
1186 LDA 9,Y
1187 BRA ARROWS
1188 CMPB #2
1189 BNE *+6
1190 LDA 10,Y
1191 BRA ARROWS
1192 LDA 8,Y
1193 BRA ARROWS
1194
1195INVERS PSHS X
1196 TST $E7E7
1197 BPL *-3
1198 TST $E7E7
1199 BMI *-3
1200 COM -120,X
1201 COM -80,X
1202 COM -40,X
1203 COM ,X+
1204 COM 39,X
1205 COM 79,X
1206 COM 119,X
1207 DECA
1208 BNE INVERS+12
1209 PULS X,PC
1210
1211COLOUR LDX #$37E
1212 LDA #3
1213 LEAX -1,X
1214 CLRB
1215 STB -80,X
1216 STB -40,X
1217 STB ,X
1218 STB 40,X
1219 LDB #127
1220 STB 80,X
1221 DECA
1222 BNE COLOUR+5
1223 LDY #DIR*256+Z
1224GETKEY JSR $E806
1225 SUBB #48
1226 CMPB #10
1227 BLO *+12
1228 SUBB #7
1229 CMPB #10
1230 BLO GETKEY
1231 CMPB #15
1232 BHI GETKEY
1233 STB ,Y+
1234 ADDB #12
1235 JSR PUTC
1236 CMPY #DIR*256+Z+3
1237 BNE GETKEY
1238 LDB <Z+1
1239 ASLB
1240 ASLB
1241 ASLB
1242 ASLB
1243 ADDB <Z+2
1244 LDA <Z
1245 TFR D,X
1246 LEAY ,X
1247 LDA #15
1248 JSR $EC00
1249 JMP ARROWS-2
1250NOBJ LDU 4,Y
1251 JSR DEFOBJ
1252 JMP BIGBCL
1253SCROLL LDX #$675
1254 LDY #LINKS+3*12+4
1255 STS ARETES-5
1256 LDA <Z+14
1257 LDS ,Y premier actuel
1258 LDU 8,S précédent
1259 CMPA #9
1260 BNE *+4
1261 LDU 10,S suivant
1262 LDA #6
1263 STA <Z+1
1264 TST $E7E7
1265 BPL *-3
1266 TST $E7E7
1267 BMI *-3
1268 STU ,Y
1269 LDA #8
1270 STA <Z
1271AFNAME LDB ,U+
1272 LDS #FONTES
1273 LDA #5
1274 MUL
1275 LEAS D,S
1276 PULS D
1277 STA -80,X
1278 STB -40,X
1279 PULS D
1280 STA ,X+
1281 STB 39,X
1282 LDA ,S
1283 STA 79,X
1284 DEC <Z
1285 BNE AFNAME
1286 LEAX 272,X
1287 LEAY 12,Y
1288 LDU 2,U
1289 DEC <Z+1
1290 BNE AFNAME-6
1291 LDS #0
1292 JMP ARROWS-2
1293ARETES STB <Z+26
1294 JMP ARROWS-2
1295WAITS TFR D,U
1296 LDA <Z+14
1297 CMPA #19
1298 BNE *+7
1299 STU <Z+38
1300 JMP ARROWS
1301 LDX <Z+32
1302 BEQ *+4
1303 STU <Z+32
1304 STU WAITXT+1
1305 JMP ARROWS
1306CENTR1 INC 5,Y
1307 LDA 5,Y
1308 LDY #CENTR2-19
1309 LDU #CENTRE
1310 LEAX 1,X
1311 BITA #1
1312 BEQ *+7
1313 LEAY 10,Y
1314 LDU #CENTRE+512
1315 STU <Z+27
1316 LEAU 512,U
1317 STU VITCEN+3
1318 TST $E7E7
1319 BPL *-3
1320 TST $E7E7
1321 BMI *-3
1322 LDB ,Y+
1323 BMI *+7
1324 JSR PUTC
1325 BRA *-7
1326 JMP ARROWS-2
1327 FCB 37,30,35,28,0,37,36,35,28
1328 FCB $F7 pingpong/sinusoïde
1329 FCB 40,30,35,42,40,36,30,25,26
1330CENTR2 STB VITCEN+1
1331 JMP ARROWS-2
1332ANGLES LDU #SINUS
1333 LEAU D,U
1334 LDB <Z+14
1335 ASLB
1336 NEGB
1337 SUBB #220
1338 LDX #DIR*256+Z
1339 ABX
1340 STU ,X
1341 JMP ARROWS-2
1342SPEEDS TFR D,U
1343 LDB <Z+14
1344 ASLB
1345 NEGB
1346 SUBB #202
1347 LDX #DIR*256+Z
1348 ABX
1349 STU ,X
1350 JMP ARROWS-2
1351
1352PUTC LDU #FONTES
1353 LDA #5
1354 MUL
1355 LEAU D,U
1356 PULU D
1357 STA -80,X
1358 STB -40,X
1359 PULU D
1360 STA ,X+
1361 STB 39,X
1362 LDA ,U
1363 STA 79,X
1364 RTS
1365
1366READ PSHS X,Y
1367 STA <Z+7
1368 STU <Z
1369 LDB <Z+6
1370 ABX
1371EFF LEAX -1,X
1372 CLRB
1373 STB -80,X
1374 STB -40,X
1375 STB ,X
1376 STB 40,X
1377 LDB #127
1378 STB 80,X
1379 DECA
1380 BNE EFF
1381
1382 CLR <Z+2
1383 CLR <Z+3
1384 CLR <Z+4
1385 LDY #DIR*256+Z
1386 LDA #6
1387 SUBA <Z+7
1388 LEAY A,Y
1389INKEY JSR $E806
1390 SUBB #48
1391 CMPB #9
1392 BHI INKEY
1393 STB ,Y+
1394 ADDB #12
1395 JSR PUTC
1396 CMPY #DIR*256+Z+6
1397 BNE INKEY
1398
1399 LDA <Z+2
1400 LDB #10
1401 MUL
1402 ADDB <Z+3
1403 LDA #100
1404 MUL
1405 STD <Z+2
1406 LDA <Z+4
1407 LDB #10
1408 MUL
1409 ADDB <Z+5
1410 ADDD <Z+2
1411 STD <Z+2
1412
1413 LDD <Z
1414 BITA #128
1415 BEQ *+10
1416 ANDA #127 si nul -> égal à 1
1417 LDX <Z+2
1418 BNE *+4
1419 INC <Z+3
1420 CMPD <Z+2
1421 BHI *+4
1422 STD <Z+2
1423 PULS X,Y
1424 LDU <Z+2
1425 LDA <Z+7
1426
1427WRITE PSHS X,Y
1428 STU <Z
1429 CLR <Z+2
1430 CLR <Z+3
1431 CLR <Z+4
1432 STA <Z+7
1433 TFR U,D
1434MIL CMPD #1000
1435 BLO CENT
1436 SUBD #1000
1437 INC <Z+2
1438 BRA MIL
1439CENT CMPD #100
1440 BLO DIX
1441 SUBD #100
1442 INC <Z+3
1443 BRA CENT
1444DIX CMPB #10
1445 BLO *+8
1446 SUBB #10
1447 INC <Z+4
1448 BRA DIX
1449 STB <Z+5
1450
1451 LDB <Z+6
1452 SUBB <Z+7
1453 ABX
1454 LDY #DIR*256+Z
1455 LDA #6
1456 SUBA <Z+7
1457 LEAY A,Y
1458 LDB ,Y
1459 BNE ECHO
1460 CMPY #DIR*256+Z+5
1461 BEQ ECHO
1462 JSR PUTC
1463 LEAY 1,Y
1464 BRA *-15
1465ECHO LDB ,Y+
1466 ADDB #12
1467 JSR PUTC
1468 CMPY #DIR*256+Z+6
1469 BNE *-11
1470 LDD <Z
1471 PULS PC,X,Y
1472
1473 FDB 0,256,512,768,$400,$500
1474 FDB $600,273,546,819,239,207
1475 FDB 175,143,111,4095
1476 FDB 0,15,240,255,3840
1477 FDB 3855,4080,4095,1911,826
1478 FDB 931,938,2611,2618,3815,123
1479MAP
1480 END
Note: See TracBrowser for help on using the repository browser.