source: Thomson/code/3rdparty/sources2-hcl/ANIMA3D.ASM

Last change on this file was 51, checked in by pulkomandy, 6 years ago

Add that collection of 3rdparty source I had lying on my disk for some time...

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.