/[projet1]/public/atari/tools/rembrandt/DIVERS/LIGNE_03.S
Defence Force logotype

Contents of /public/atari/tools/rembrandt/DIVERS/LIGNE_03.S

Parent Directory Parent Directory | Revision Log Revision Log


Revision 67 - (show annotations)
Sat Apr 25 18:10:46 2009 UTC (10 years, 7 months ago) by dbug
File size: 2929 byte(s)
Added Rembrandt and Forgotten Bits
1 *
2 *
3 * Petite routine … la con destin‚e a convertir une image
4 * DEGAS en image TRUE COLOR
5 *
6 *
7 * bsr trace_ligne
8
9 couleur=0
10 ;
11 ;
12 ; Quelques constantes pour les modes vid‚os
13 ;
14 ;
15 col2=0
16 col4=1
17 col16=2
18 col256=3
19 coltc=4
20
21 l40=0
22 l80=8
23
24 tv=0
25 vga=16
26 pal=32
27 overscan=64
28 st=128
29 interlace=256
30
31 mode=coltc+l40+tv+pal
32
33 pea superviseur
34 move #$26,-(sp)
35 trap #14
36 addq #6,sp
37 ;
38 ; Et quitte
39 ;
40 clr -(sp)
41 trap #1
42
43
44
45
46 superviseur
47 ;
48 ; R‚cupŠre la r‚solution courante et l'adresse de la m‚moire
49 ; vid‚o
50 ;
51 move #-1,-(sp)
52 move #88,-(sp)
53 trap #14
54 addq #4,sp
55 move d0,old_video
56
57 move #2,-(sp)
58 trap #14
59 addq #2,sp
60 move.l d0,old_adresse
61
62 ;
63 ; Valide ma propre r‚solution
64 ; et mon propre ecran
65 ;
66 move #mode,-(sp)
67 move #3,-(sp)
68 pea ecran
69 pea ecran
70 move #5,-(sp)
71 trap #14
72 add #14,sp
73
74 attend_touche
75 dc.w $a000
76 move -602(a0),x1+2
77 move -600(a0),y1+2
78 tst.w -596(a0)
79 bne.s fin_boucle
80
81 move #$7000,$ffff9800.w
82 bsr.s trace_ligne
83 move #-1,$ffff9800.w
84
85 move #37,-(sp)
86 trap #14
87 addq #2,sp
88
89 bra.s attend_touche
90
91 fin_boucle
92
93 ;
94 ; Restaure tout
95 ;
96 move old_video,-(sp)
97 move #3,-(sp)
98 move.l old_adresse,-(sp)
99 move.l old_adresse,-(sp)
100 move #5,-(sp)
101 trap #14
102 add #14,sp
103 rts
104
105
106
107 x1 dc.l 1
108 y1 dc.l 199
109
110 x2 dc.l 160
111 y2 dc.l 100
112
113 largeur=45
114 hauteur=185
115
116 *ix=0.2432433243... = 15941
117 *iy=1
118
119 trace_ligne
120
121 move.l x2,d0
122 move.l x1,d1
123 sub.l d1,d0 d0 = Largeur
124 bpl.s .largeur_positive
125 neg.l d0 d0 = ABS(Largeur)
126 .largeur_positive
127 addq.l #1,d0
128
129 move.l y2,d1
130 move.l y1,d2
131 sub.l d2,d1 d1 = Hauteur
132 bpl.s .hauteur_positive
133 neg.l d1 d1 = ABS(hauteur)
134 .hauteur_positive
135 addq.l #1,d1
136
137 *** d0=ABS(largeur) /DX
138 *** d1=ABS(hauteur) /DY
139 *** d5=ix
140 *** d6=iy
141 *** d7=nombre de points
142
143 cmp.l d1,d0
144 bge.s largeur_max
145 hauteur_max
146 move d1,d7 Nombre de points=hauteur
147 subq #1,d7
148 move d0,d5
149 swap d5
150 divu.l d1,d5 IX=DX/DY
151 move.l #1*65536,d6 IY=1
152 bra.s inverse_incr‚ment
153
154 largeur_max
155 move d0,d7 Nombre de points=largeur
156 subq #1,d7
157 move.l #1*65536,d5 IX=1
158 move d1,d6
159 swap d6
160 divu.l d0,d6 IY=DY/DX
161 bra.s inverse_incr‚ment
162
163 nop
164
165 inverse_incr‚ment
166 moveq #0,d0 Partie d‚cimale de X
167 move.l x1,d1 Partie entiŠre de X
168 cmp.l x2,d1
169 ble ok_x
170 neg.l d5
171 ok_x
172
173 moveq #0,d2 Partie d‚cimale de Y
174 move.l y1,d3 Partie entiŠre de Y
175 cmp.l y2,d3
176 ble ok_y
177 neg.l d6
178 ok_y
179
180 .loop
181 lea ecran,a0
182 add.l d1,a0 X x2
183 add.l d1,a0
184 move.l d3,d4 Y x640
185 mulu.l #640,d4
186 add.l d4,a0
187 move #couleur,(a0)
188
189 add.l d5,d0 Incr‚mente en X
190 add.l d6,d1
191 exg d5,a5
192 exg d6,a6
193 add.l d5,d2 Incr‚mente en Y
194 add.l d6,d3
195 exg d5,a5
196 exg d6,a6
197 dbra d7,.loop
198 rts
199
200 section DATA
201
202 section BSS
203
204 old_video ds.w 1
205 old_adresse ds.w 1
206 x_souris ds.w 1
207 y_souris ds.w 1
208 ds.l 10000
209 ecran ds.l 128000/4
210 buffer ds.l 128000/4
211 ds.l 10000
212
213 end
214

  ViewVC Help
Powered by ViewVC 1.1.26