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

Contents of /public/atari/tools/rembrandt/DIVERS/LINE_001.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: 2748 byte(s)
Added Rembrandt and Forgotten Bits
1 initialise_datas
2 move #160,x1 Centre de l'‚cran
3 move #100,y1
4
5 move #219,x2 En bas au 3/4 … droite
6 move #199,y2
7
8 teste_sens_en_y
9 move y2,d1
10 sub y1,d1 D1=hauteur
11 bpl.s sens_vertical_correct
12 neg d1
13 move.l xy1,d2 Si la hauteur est n‚gative, on inverse
14 move.l xy2,xy1 les coordonn‚es pour tracer de haut en
15 move.l d2,xy2 bas dans tous les cas.
16 sens_vertical_correct
17
18 move x2,d0
19 sub x1,d0 D0=largeur
20 spl flag_sens_tra‡age_x Indique dans quel sens on trace (0:Gauche/1:Droite)
21 bpl.s signe_horizontal_correct
22 neg d0
23 signe_horizontal_correct
24
25 move d1,d7 Il faut tracer [largeur+1] points en DBra.
26
27 addq #1,d0 Il faut rajouter 1 … la largeur et … la
28 addq #1,d1 hauteur calcul‚s pr‚c‚dement.
29
30 cmp d0,d1 Si (D1 ò D0), alors on trace en Y.
31 bge trace_verticalement
32
33 trace_horizontalement
34 move d0,d6
35 divu.l d1,d6:d2 Ix en 32 bits de pr‚cision.
36 moveq #0,d3 Ix'=0
37
38 move x1,d0 AprŠs le test initial, on est sur que X1/Y1
39 move y1,d1 est le couple le plus haut. (Point d‚part).
40
41 tst.b flag_sens_tra‡age_x
42 beq trace_horizontal_gauche
43
44 trace_horizontal_droite
45 bsr trace_point Affiche le point en (d0,d1)
46 addq #1,d0 Incr‚mente en X
47 add.l d2,d3 Fait un incr‚ment sur 32 bits.
48 addx.l d4,d1 Puis ,effectue le d‚placement en +Y
49 dbra d7,trace_horizontal_droite
50 rts
51
52 trace_horizontal_gauche
53 bsr trace_point Affiche le point en (d0,d1)
54 subq #1,d0 D‚cr‚mente en X
55 add.l d2,d3 Fait un incr‚ment sur 32 bits.
56 addx.l d4,d1 Puis ,effectue le d‚placement en +Y
57 dbra d7,trace_horizontal_gauche
58 rts
59
60
61
62
63
64 ; D0=x
65 ; D1=y
66 ; D2=ix
67 ; D3=ix'
68 ; D4=registre … z‚ro
69 ; D7=compteur
70
71 trace_verticalement
72 move d0,d6
73 divu.l d1,d6:d2 Ix en 32 bits de pr‚cision.
74 moveq #0,d3 Ix'=0
75
76 move x1,d0 AprŠs le test initial, on est sur que X1/Y1
77 move y1,d1 est le couple le plus haut. (Point d‚part).
78
79 tst.b flag_sens_tra‡age_x
80 beq trace_vertical_gauche
81
82 trace_vertical_droite
83 bsr trace_point Affiche le point en (d0,d1)
84 add.l d2,d3 Fait un incr‚ment sur 32 bits.
85 addx.l d4,d0 Puis ,effectue le d‚placement en -X
86 addq #1,d1 Descend d'un cran dans l'image
87 dbra d7,trace_vertical_droite
88 rts
89
90 trace_vertical_gauche
91 bsr trace_point Affiche le point en (d0,d1)
92 add.l d2,d3 Fait un incr‚ment sur 32 bits.
93 subx.l d4,d0 Puis ,effectue le d‚placement en -X
94 addq #1,d1 Descend d'un cran dans l'image
95 dbra d7,trace_vertical_gauche
96 rts
97
98
99 trace_point
100 movem.l d0-d6,-(sp)
101
102 movem.l (sp)+,d0-d6
103 rts
104
105
106 flag_sens_tra‡age_x ds.w 1 Flag (byte)
107
108 x ds.l 1
109 y ds.l 1
110
111 xy1
112 x1 ds.w 1
113 y1 ds.w 1
114
115 xy2
116 x2 ds.w 1
117 y2 ds.w 1
118
119 couleur ds.w 1
120 ‚cran ds.l 1
121
122
123

  ViewVC Help
Powered by ViewVC 1.1.26