source: thomson/code/3rdparty/sources2-hcl/DRAW.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: 7.1 KB
Line 
1****************************************
2* Traçage de segments optimisé *
3* abcisses et ordonnées sur 8 bits *
4****************************************
5* - FONCTIONNE EN MODE 40 COLONNES - *
6* GESTION DES COULEURS NON ASSUREE ICI *
7* - ATTENTION AUX DEPASSEMENTS EN Y !- *
8****************************************
9********** By Doctor Lô of HCL *********
10
11 ORG $9C00
12ECRAN EQU $C004
13DIR EQU $9F } pour les accès
14Z EQU $00 } en page directe
15
16G ORCC #80
17 LDA #DIR
18 TFR A,DP
19 CLR $E7E5
20
21SYNCRO TST $E7E7
22 BMI *-3
23 TST $E7E7
24 BPL *-3
25 LDD #15
26 STA $E7DB
27 STB $E7DA
28 STA $E7DA
29
30 LDD #$FF00 coordonnees point1
31 STD <Z+6
32 LDD #$00C7 deuxieme point
33 JSR DRAW
34
35 LDD #0
36 STA $E7DB
37 STB $E7DA
38 STA $E7DA
39 TST $E7C8
40 BEQ SYNCRO
41 SWI
42
43
44DRAW LDU #PUISS permanent (pixels)
45 STD <Z+4
46 CMPA <Z+6 si x1 > x2 alors
47 BLS *+10 permutation
48 LDX <Z+6
49 STX <Z+4
50 STD <Z+6
51 LDB <Z+5
52
53 CMPB <Z+7
54 LBHI MONTEE quand y1 < y2
55
56 LDD <Z+6
57 SUBA <Z+4 A = (dx)
58 STA <Z+1
59 SUBB <Z+5 B = (dy)
60 CMPB <Z+1
61 LBHI VERTI1 quand (dy) > (dx)
62
63 TFR B,A
64 CLRB (dy) / (dx) = 0.?
65 ASLA
66 BCS *+6
67 CMPA <Z+1
68 BLO *+6
69 SUBA <Z+1
70 ORB #128
71 ASLA
72 BCS *+6
73 CMPA <Z+1
74 BLO *+6
75 SUBA <Z+1
76 ORB #64
77 ASLA
78 BCS *+6
79 CMPA <Z+1
80 BLO *+6
81 SUBA <Z+1
82 ORB #32
83 ASLA
84 BCS *+6
85 CMPA <Z+1
86 BLO *+6
87 SUBA <Z+1
88 ORB #16
89 ASLA
90 BCS *+6
91 CMPA <Z+1
92 BLO *+6
93 SUBA <Z+1
94 ORB #8
95 ASLA
96 BCS *+6
97 CMPA <Z+1
98 BLO *+6
99 SUBA <Z+1
100 ORB #4
101 ASLA
102 BCS *+6
103 CMPA <Z+1
104 BLO *+6
105 SUBA <Z+1
106 ORB #2
107 ASLA
108 BCS *+6
109 CMPA <Z+1
110 BLO *+6
111 SUBA <Z+1
112 ORB #1
113 STB MMSEG1+1
114
115 LDX #ECRAN
116 LDA #40
117 LDB <Z+5
118 MUL
119 LEAX D,X
120 LDB <Z+4
121 LSRB
122 LSRB
123 LSRB
124 ABX
125 LDB <Z+4
126 ANDB #7
127 LDA B,U
128 STA <Z
129 CLRB
130
131 LDA ,X
132LINE1 ORA <Z
133 DEC <Z+1
134 BNE *+5
135 STA ,X
136 RTS
137 LSR <Z
138 BNE MMSEG1
139 ROR <Z
140 STA ,X+
141 LDA ,X
142MMSEG1 ADDB #0
143 BCC LINE1
144 STA ,X
145 LEAX 40,X
146 BRA LINE1-2
147
148VERTI1 STB <Z+1
149 CLRB (dx) / (dy) = 0.?
150 ASLA
151 BCS *+6
152 CMPA <Z+1
153 BLO *+6
154 SUBA <Z+1
155 ORB #128
156 ASLA
157 BCS *+6
158 CMPA <Z+1
159 BLO *+6
160 SUBA <Z+1
161 ORB #64
162 ASLA
163 BCS *+6
164 CMPA <Z+1
165 BLO *+6
166 SUBA <Z+1
167 ORB #32
168 ASLA
169 BCS *+6
170 CMPA <Z+1
171 BLO *+6
172 SUBA <Z+1
173 ORB #16
174 ASLA
175 BCS *+6
176 CMPA <Z+1
177 BLO *+6
178 SUBA <Z+1
179 ORB #8
180 ASLA
181 BCS *+6
182 CMPA <Z+1
183 BLO *+6
184 SUBA <Z+1
185 ORB #4
186 ASLA
187 BCS *+6
188 CMPA <Z+1
189 BLO *+6
190 SUBA <Z+1
191 ORB #2
192 ASLA
193 BCS *+6
194 CMPA <Z+1
195 BLO *+6
196 SUBA <Z+1
197 ORB #1
198 STB VIRG1+1
199
200 LDX #ECRAN
201 LDA #40
202 LDB <Z+5
203 MUL
204 LEAX D,X
205 LDB <Z+4
206 LSRB
207 LSRB
208 LSRB
209 ABX
210 LDB <Z+4
211 ANDB #7
212 LDA B,U
213 STA LINE2+3
214 CLRB
215
216LINE2 LDA ,X
217 ORA #0
218 STA ,X
219 LEAX 40,X
220 DEC <Z+1
221 BNE *+3
222 RTS
223VIRG1 ADDB #0
224 BCC LINE2
225 LSR LINE2+3
226 BNE LINE2
227 ROR LINE2+3
228 LEAX 1,X
229 BRA LINE2
230
231MONTEE LDD <Z+6
232 SUBA <Z+4 A = (dx)
233 STA <Z+1
234 LDB <Z+5
235 SUBB <Z+7 B = (dy)
236 CMPB <Z+1
237 LBHI VERTI2 quand (dy) > (dx)
238
239 TFR B,A
240 CLRB (dy) / (dx) = 0.?
241 ASLA
242 BCS *+6
243 CMPA <Z+1
244 BLO *+6
245 SUBA <Z+1
246 ORB #128
247 ASLA
248 BCS *+6
249 CMPA <Z+1
250 BLO *+6
251 SUBA <Z+1
252 ORB #64
253 ASLA
254 BCS *+6
255 CMPA <Z+1
256 BLO *+6
257 SUBA <Z+1
258 ORB #32
259 ASLA
260 BCS *+6
261 CMPA <Z+1
262 BLO *+6
263 SUBA <Z+1
264 ORB #16
265 ASLA
266 BCS *+6
267 CMPA <Z+1
268 BLO *+6
269 SUBA <Z+1
270 ORB #8
271 ASLA
272 BCS *+6
273 CMPA <Z+1
274 BLO *+6
275 SUBA <Z+1
276 ORB #4
277 ASLA
278 BCS *+6
279 CMPA <Z+1
280 BLO *+6
281 SUBA <Z+1
282 ORB #2
283 ASLA
284 BCS *+6
285 CMPA <Z+1
286 BLO *+6
287 SUBA <Z+1
288 ORB #1
289 STB MMSEG2+1
290
291 LDX #ECRAN
292 LDA #40
293 LDB <Z+5
294 MUL
295 LEAX D,X
296 LDB <Z+4
297 LSRB
298 LSRB
299 LSRB
300 ABX
301 LDB <Z+4
302 ANDB #7
303 LDA B,U
304 STA <Z
305 CLRB
306
307 LDA ,X
308LINE3 ORA <Z
309 DEC <Z+1
310 BNE *+5
311 STA ,X
312 RTS
313 LSR <Z
314 BNE MMSEG2
315 ROR <Z
316 STA ,X+
317 LDA ,X
318MMSEG2 ADDB #0
319 BCC LINE3
320 STA ,X
321 LEAX -40,X
322 BRA LINE3-2
323
324VERTI2 STB <Z+1
325 CLRB (dx) / (dy) = 0.?
326 ASLA
327 BCS *+6
328 CMPA <Z+1
329 BLO *+6
330 SUBA <Z+1
331 ORB #128
332 ASLA
333 BCS *+6
334 CMPA <Z+1
335 BLO *+6
336 SUBA <Z+1
337 ORB #64
338 ASLA
339 BCS *+6
340 CMPA <Z+1
341 BLO *+6
342 SUBA <Z+1
343 ORB #32
344 ASLA
345 BCS *+6
346 CMPA <Z+1
347 BLO *+6
348 SUBA <Z+1
349 ORB #16
350 ASLA
351 BCS *+6
352 CMPA <Z+1
353 BLO *+6
354 SUBA <Z+1
355 ORB #8
356 ASLA
357 BCS *+6
358 CMPA <Z+1
359 BLO *+6
360 SUBA <Z+1
361 ORB #4
362 ASLA
363 BCS *+6
364 CMPA <Z+1
365 BLO *+6
366 SUBA <Z+1
367 ORB #2
368 ASLA
369 BCS *+6
370 CMPA <Z+1
371 BLO *+6
372 SUBA <Z+1
373 ORB #1
374 STB VIRG2+1
375
376 LDX #ECRAN
377 LDA #40
378 LDB <Z+5
379 MUL
380 LEAX D,X
381 LDB <Z+4
382 LSRB
383 LSRB
384 LSRB
385 ABX
386 LDB <Z+4
387 ANDB #7
388 LDA B,U
389 STA LINE4+3
390 CLRB
391
392LINE4 LDA ,X
393 ORA #0
394 STA ,X
395 LEAX -40,X
396 DEC <Z+1
397 BNE *+3
398 RTS
399VIRG2 ADDB #0
400 BCC LINE4
401 LSR LINE4+3
402 BNE LINE4
403 ROR LINE4+3
404 LEAX 1,X
405 BRA LINE4
406
407PUISS FDB $8040,$2010,$0804,$0201
408 END
Note: See TracBrowser for help on using the repository browser.