This repository has been archived by the owner on Jul 15, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.s
268 lines (246 loc) · 6.07 KB
/
test.s
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
.globl makeSomePixels
// NOTE makeSomePixels
makeSomePixels:
sub sp, sp, #8
stur x30, [sp, #0] // Guardamos el return pointer en memoria
// Primero con setPixel
mov x16, 320 // x setPixel
mov x12, 240 // y setPixel
bl setPixel // Pixel a pintar
mov x13, 17 // R
mov x14, 88 // G
mov x15, 253 // B
bl setColour // R+G+B = Azul
stur w18, [x0]
mov x13, 250 // R
mov x14, 250 // G
mov x15, 250 // B
bl setColour // R+G+B = Azul
mov x16, 330 // x setPixel
mov x12, 240 // y setPixel
bl setPixel // Pixel a pintar
stur w18, [x0]
mov x16, 310 // x setPixel
mov x12, 240 // y setPixel
bl setPixel // Pixel a pintar
stur w18, [x0]
mov x16, 320 // x setPixel
mov x12, 250 // y setPixel
bl setPixel // Pixel a pintar
stur w18, [x0]
mov x16, 320 // x setPixel
mov x12, 230 // y setPixel
bl setPixel // Pixel a pintar
stur w18, [x0]
// Luego con drawPixel
mov x13, 10 // R
mov x14, 250 // G
mov x15, 10 // B
bl setColour // R+G+B = Azul
mov x16, 10 // x setPixel
mov x12, 10 // y setPixel
bl drawPixel // Dibuja el pixel
mov x16, 470 // x setPixel
mov x12, 630 // y setPixel
bl setPixel // Pixel a pintar
mov x16, 480 // x setPixel
mov x12, 10 // y setPixel
bl setPixel // Pixel a pintar
mov x16, 10 // x setPixel
mov x12, 640 // y setPixel
bl setPixel // Pixel a pintar
ldur x30, [sp, #0] // Guardamos el return pointer en memoria ret
add sp, sp, #8 // Liberamos memoria
ret
.globl makeSomeLines
// NOTE makeSomeLines
makeSomeLines: // TODO Limpiar y cambiar x -> w en los stur
sub sp, sp, #8
stur x30, [sp, #0] // Guardamos el return pointer en memoria
mov x21, 320 // xo
mov x22, 240 // yo
mov x23, 100 // w
mov x13, 255 // R
mov x14, 255 // G
mov x15, 0 // B
bl setColour // R+G+B = Amarillo
bl doHorizontalLine
// Pintamos un rectágulo en el medio de la pantalla
mov x21, 320 // x2
mov x22, 240 // y2
mov x23, 20 // w largo de pixeles
mov x24, 40 // h alto de pixeles
mov x13, 255 // R
mov x14, 255 // G
mov x15, 255 // B
bl setColour // R+G+B = Blanco
bl doRectangle
// Pintamos el origen del rectágunlo
mov x16, 320 // x s0etPixel
mov x12, 240 // y setPixel
bl setPixel // Pixel a pintar
mov x13, 255 // R
mov x14, 0 // G
mov x15, 8 // B
bl setColour // R+G+B = Rojo
stur x18, [x0] // Lo pinto
ldur x30, [sp, #0] // Guardamos el return pointer en memoria ret
add sp, sp, #8 // Liberamos memoria
ret
.globl circleTest
// NOTE circleTest
circleTest:
sub sp, sp, #8
stur x30, [sp, #0] // Guardamos el return pointer en memoria
mov x13, 250 // R
mov x14, 81 // G
mov x15, 171 // B
bl setColour // R+G+B = Rosa
mov x21, 250 // xc x centro
mov x22, 240 // yc y centro
mov x23, 50 // radio
mov x16, x21
mov x12, x22
bl drawPixel // Pintamos el medio
mov x24, #1
bl doCircle
ldur x30, [sp, #0] // Guardamos el return pointer en memoria ret
add sp, sp, #8 // Liberamos memoria
ret
.globl circleTestFill
// NOTE circleTestFill
circleTestFill:
sub sp, sp, #8
stur x30, [sp, #0] // Guardamos el return pointer en memoria
mov x13, 250 // R
mov x14, 81 // G
mov x15, 171 // B
bl setColour // R+G+B = Rosa
mov x21, 350 // xc x centro
mov x22, 240 // yc y centro
mov x23, 50 // radio
mov x24, xzr
bl doCircle
mov x16, x21
mov x12, x22
bl drawPixel
ldur x30, [sp, #0] // Guardamos el return pointer en memoria ret
add sp, sp, #8 // Liberamos memoria
ret
.globl testLines
// NOTE testLines
testLines:
sub sp, sp, #8
stur x30, [sp, #0] // Guardamos el return pointer en memoria
// Dibujamos una línea xc0, yc0 -> xc1, yc1
mov x21, 150
mov x22, 30
mov x23, 50
mov x24, 200
mov x13, 85 // R
mov x14, 255 // G
mov x15, 237 // B
bl setColour // R+G+B = cyan 55ffed
bl drawLine
// Task
mov x13, 255 // R
mov x14, 251 // G
mov x15, 0 // B
bl setColour // Amarillo fffb00
mov x16, 150
mov x12, 30
bl drawPixel
mov x16, 50
mov x12, 200
bl drawPixel
mov x21, #320 // xc x centro
mov x22, #300 // yc y centro
bl doRaven // Dibujamos un cuervo
// Dibujamos una línea "vertical"
mov x21, 59
mov x22, 59
mov x23, 100
mov x24, 100
mov x13, 255 // R
mov x14, 145 // G
mov x15, 0 // B
bl setColour // R+G+B = Naranja
bl drawLine
mov x13, 17 // R
mov x14, 253 // G
mov x15, 64 // B
bl setColour // Verde
mov x16, 59
mov x12, 59
bl drawPixel
mov x16, 100
mov x12, 100
bl drawPixel
mov x13, 255 // R
mov x14, 145 // G
mov x15, 0 // B
bl setColour // R+G+B = Naranja
mov x21, 200
//bl verticalLine
mov x21, 300
//bl verticalLine // NOTE OK
ldur x30, [sp, #0] // Guardamos el return pointer en memoria ret
add sp, sp, #8 // Liberamos memoria
ret
.globl testRGB1
// NOTE testRGB1
testRGB1:
mov x13, 250 // R
mov x14, 81 // G
mov x15, 171 // B
bl setColour // R+G+B = Rosa
mov x21, 100
//bl verticalLine
//bl lineAnimation
//bl rgbcycletest
.globl testAnit
// NOTE testAnit
testAnit:
bl animationTest
bl circleAnimation1
.globl circleTest2
// NOTE Circle Test2
circleTest2:
sub sp, sp, #8
stur x30, [sp, #0] // Guardamos el return pointer en memoria
// Dibujamos un círculo
// Medio es 320 x 240
mov x13, 250 // R
mov x14, 81 // G
mov x15, 171 // B
bl setColour // R+G+B = Rosa
stur x18, [x0]
mov x21, 320 // xc x centro
mov x22, 240 // yc y centro
mov x23, 20 // radio
bl doCircle
// Return
ldur x30, [sp, #0] // Guardamos el return pointer en memoria ret
add sp, sp, #8 // Liberamos memoria
ret
.globl testThings2
// NOTE testThings2
testThings2:
// Dibujamos un círculo
// Medio es 320 x 240
// FIXME Checkear
mov x16, 320
mov x12, 240
bl setPixel
//
mov x13, 250 // R
mov x14, 81 // G
mov x15, 171 // B
bl setColour // R+G+B = Rosa
//stur x18, [x0]
//mov x16, 320
//mov x12, 240
mov x21, 110 // xc x centro
mov x22, 110 // yc y centro
mov x23, #100 // radio
bl doCircle