tetris/.build/main.lst
2021-01-08 04:13:16 +01:00

1024 lines
49 KiB
Plaintext

1 ;--------------------------------------------------------
2 ; File Created by SDCC : free open source ANSI-C Compiler
3 ; Version 4.0.0 #11528 (Linux)
4 ;--------------------------------------------------------
5 .module main
6 .optsdcc -mz80
7
8 ;--------------------------------------------------------
9 ; Public variables in this module
10 ;--------------------------------------------------------
11 .globl _main
12 .globl _loop
13 .globl _draw
14 .globl _render
15 .globl _new_shape
16 .globl _does_piece_fit
17 .globl _initialize_field
18 .globl _rotate
19 .globl _construct_shapes
20 .globl _random
21 .globl _put_string
22 .globl _counter
23 .globl _current_y
24 .globl _current_x
25 .globl _current_rotation
26 .globl _current_shape
27 .globl _seed
28 .globl _screen
29 .globl _field
30 .globl _tetromino
31 ;--------------------------------------------------------
32 ; special function registers
33 ;--------------------------------------------------------
0002 34 _cout = 0x0002
001F 35 _status = 0x001f
001E 36 _key = 0x001e
37 ;--------------------------------------------------------
38 ; ram data
39 ;--------------------------------------------------------
40 .area _DATA
0000 41 _tetromino::
0000 42 .ds 14
000E 43 _field::
000E 44 .ds 216
00E6 45 _screen::
00E6 46 .ds 216
01BE 47 _seed::
01BE 48 .ds 1
49 ;--------------------------------------------------------
50 ; ram data
51 ;--------------------------------------------------------
52 .area _INITIALIZED
0000 53 _current_shape::
0000 54 .ds 1
0001 55 _current_rotation::
0001 56 .ds 1
0002 57 _current_x::
0002 58 .ds 1
0003 59 _current_y::
0003 60 .ds 1
0004 61 _counter::
0004 62 .ds 1
63 ;--------------------------------------------------------
64 ; absolute external ram data
65 ;--------------------------------------------------------
66 .area _DABS (ABS)
67 ;--------------------------------------------------------
68 ; global & static initialisations
69 ;--------------------------------------------------------
70 .area _HOME
71 .area _GSINIT
72 .area _GSFINAL
73 .area _GSINIT
74 ;--------------------------------------------------------
75 ; Home
76 ;--------------------------------------------------------
77 .area _HOME
78 .area _HOME
79 ;--------------------------------------------------------
80 ; code
81 ;--------------------------------------------------------
82 .area _CODE
83 ;src/main.c:12: void construct_shapes() {
84 ; ---------------------------------
85 ; Function construct_shapes
86 ; ---------------------------------
0000 87 _construct_shapes::
88 ;src/main.c:13: tetromino[0] = "..X."
0000 21r2Br00 [10] 89 ld hl, #___str_0
0003 22r00r00 [16] 90 ld (_tetromino), hl
91 ;src/main.c:18: tetromino[1] = "..X."
0006 21r3Cr00 [10] 92 ld hl, #___str_1
0009 22r02r00 [16] 93 ld ((_tetromino + 0x0002)), hl
94 ;src/main.c:23: tetromino[2] = ".X.."
000C 21r4Dr00 [10] 95 ld hl, #___str_2
000F 22r04r00 [16] 96 ld ((_tetromino + 0x0004)), hl
97 ;src/main.c:28: tetromino[3] = "..X."
0012 21r5Er00 [10] 98 ld hl, #___str_3
0015 22r06r00 [16] 99 ld ((_tetromino + 0x0006)), hl
100 ;src/main.c:33: tetromino[4] = ".X.."
0018 21r6Fr00 [10] 101 ld hl, #___str_4
001B 22r08r00 [16] 102 ld ((_tetromino + 0x0008)), hl
103 ;src/main.c:38: tetromino[5] = "..X."
001E 21r80r00 [10] 104 ld hl, #___str_5
0021 22r0Ar00 [16] 105 ld ((_tetromino + 0x000a)), hl
106 ;src/main.c:43: tetromino[6] = "...."
0024 21r91r00 [10] 107 ld hl, #___str_6
0027 22r0Cr00 [16] 108 ld ((_tetromino + 0x000c)), hl
109 ;src/main.c:47: }
002A C9 [10] 110 ret
002B 111 ___str_0:
002B 2E 2E 58 2E 2E 2E 112 .ascii "..X...X...X...X."
58 2E 2E 2E 58 2E
2E 2E 58 2E
003B 00 113 .db 0x00
003C 114 ___str_1:
003C 2E 2E 58 2E 2E 58 115 .ascii "..X..XX..X......"
58 2E 2E 58 2E 2E
2E 2E 2E 2E
004C 00 116 .db 0x00
004D 117 ___str_2:
004D 2E 58 2E 2E 2E 58 118 .ascii ".X...XX...X....."
58 2E 2E 2E 58 2E
2E 2E 2E 2E
005D 00 119 .db 0x00
005E 120 ___str_3:
005E 2E 2E 58 2E 2E 2E 121 .ascii "..X...X..XX....."
58 2E 2E 58 58 2E
2E 2E 2E 2E
006E 00 122 .db 0x00
006F 123 ___str_4:
006F 2E 58 2E 2E 2E 58 124 .ascii ".X...X...XX....."
2E 2E 2E 58 58 2E
2E 2E 2E 2E
007F 00 125 .db 0x00
0080 126 ___str_5:
0080 2E 2E 58 2E 2E 58 127 .ascii "..X..XX...X....."
58 2E 2E 2E 58 2E
2E 2E 2E 2E
0090 00 128 .db 0x00
0091 129 ___str_6:
0091 2E 2E 2E 2E 2E 58 130 .ascii ".....XX..XX....."
58 2E 2E 58 58 2E
2E 2E 2E 2E
00A1 00 131 .db 0x00
132 ;src/main.c:49: uint8_t rotate(uint8_t x, uint8_t y, uint8_t r) {
133 ; ---------------------------------
134 ; Function rotate
135 ; ---------------------------------
00A2 136 _rotate::
00A2 DD E5 [15] 137 push ix
00A4 DD 21 00 00 [14] 138 ld ix,#0
00A8 DD 39 [15] 139 add ix,sp
00AA 3B [ 6] 140 dec sp
141 ;src/main.c:52: return y*4+x;
00AB DD 7E 05 [19] 142 ld a, 5 (ix)
00AE DD 4E 04 [19] 143 ld c, 4 (ix)
00B1 87 [ 4] 144 add a, a
00B2 87 [ 4] 145 add a, a
00B3 6F [ 4] 146 ld l, a
147 ;src/main.c:50: switch (r) {
00B4 DD 7E 06 [19] 148 ld a, 6 (ix)
00B7 B7 [ 4] 149 or a, a
00B8 28 21 [12] 150 jr Z,00101$
151 ;src/main.c:54: return 12 + y - x*4;
00BA DD 5E 05 [19] 152 ld e, 5 (ix)
00BD DD 7E 04 [19] 153 ld a, 4 (ix)
00C0 87 [ 4] 154 add a, a
00C1 87 [ 4] 155 add a, a
00C2 DD 77 FF [19] 156 ld -1 (ix), a
157 ;src/main.c:50: switch (r) {
00C5 DD 7E 06 [19] 158 ld a, 6 (ix)
00C8 3D [ 4] 159 dec a
00C9 28 13 [12] 160 jr Z,00102$
00CB DD 7E 06 [19] 161 ld a, 6 (ix)
00CE D6 02 [ 7] 162 sub a, #0x02
00D0 28 15 [12] 163 jr Z,00103$
00D2 DD 7E 06 [19] 164 ld a, 6 (ix)
00D5 D6 03 [ 7] 165 sub a, #0x03
00D7 28 15 [12] 166 jr Z,00104$
00D9 18 1C [12] 167 jr 00105$
168 ;src/main.c:51: case 0:
00DB 169 00101$:
170 ;src/main.c:52: return y*4+x;
00DB 09 [11] 171 add hl, bc
00DC 18 1B [12] 172 jr 00106$
173 ;src/main.c:53: case 1:
00DE 174 00102$:
175 ;src/main.c:54: return 12 + y - x*4;
00DE 7B [ 4] 176 ld a, e
00DF C6 0C [ 7] 177 add a, #0x0c
00E1 DD 96 FF [19] 178 sub a, -1 (ix)
00E4 6F [ 4] 179 ld l, a
00E5 18 12 [12] 180 jr 00106$
181 ;src/main.c:55: case 2:
00E7 182 00103$:
183 ;src/main.c:56: return 15 - y*4 - x;
00E7 3E 0F [ 7] 184 ld a, #0x0f
00E9 95 [ 4] 185 sub a, l
00EA 91 [ 4] 186 sub a, c
00EB 6F [ 4] 187 ld l, a
00EC 18 0B [12] 188 jr 00106$
189 ;src/main.c:57: case 3:
00EE 190 00104$:
191 ;src/main.c:58: return 3 - y + x*4;
00EE 3E 03 [ 7] 192 ld a, #0x03
00F0 93 [ 4] 193 sub a, e
00F1 DD 86 FF [19] 194 add a, -1 (ix)
00F4 6F [ 4] 195 ld l, a
00F5 18 02 [12] 196 jr 00106$
197 ;src/main.c:59: }
00F7 198 00105$:
199 ;src/main.c:60: return 0;
00F7 2E 00 [ 7] 200 ld l, #0x00
00F9 201 00106$:
202 ;src/main.c:61: }
00F9 33 [ 6] 203 inc sp
00FA DD E1 [14] 204 pop ix
00FC C9 [10] 205 ret
206 ;src/main.c:63: void initialize_field() {
207 ; ---------------------------------
208 ; Function initialize_field
209 ; ---------------------------------
00FD 210 _initialize_field::
00FD DD E5 [15] 211 push ix
00FF DD 21 00 00 [14] 212 ld ix,#0
0103 DD 39 [15] 213 add ix,sp
0105 F5 [11] 214 push af
0106 3B [ 6] 215 dec sp
216 ;src/main.c:64: for (uint8_t y = 0; y < HEIGHT; ++y) {
0107 0E 00 [ 7] 217 ld c, #0x00
0109 218 00107$:
219 ;src/main.c:65: for (uint8_t x = 0; x < WIDTH; ++x) {
0109 79 [ 4] 220 ld a,c
010A FE 12 [ 7] 221 cp a,#0x12
010C 30 55 [12] 222 jr NC,00109$
010E D6 11 [ 7] 223 sub a, #0x11
0110 3E 01 [ 7] 224 ld a, #0x01
0112 28 01 [12] 225 jr Z,00153$
0114 AF [ 4] 226 xor a, a
0115 227 00153$:
0115 DD 77 FD [19] 228 ld -3 (ix), a
0118 1E 00 [ 7] 229 ld e, #0x00
011A 230 00104$:
011A 7B [ 4] 231 ld a, e
011B D6 0C [ 7] 232 sub a, #0x0c
011D 30 41 [12] 233 jr NC,00108$
234 ;src/main.c:66: field[y*WIDTH + x] = (x == 0 || x == WIDTH - 1 || y == HEIGHT-1) ? 9 : 0;
011F 69 [ 4] 235 ld l, c
0120 26 00 [ 7] 236 ld h, #0x00
0122 D5 [11] 237 push de
0123 5D [ 4] 238 ld e, l
0124 54 [ 4] 239 ld d, h
0125 29 [11] 240 add hl, hl
0126 19 [11] 241 add hl, de
0127 29 [11] 242 add hl, hl
0128 29 [11] 243 add hl, hl
0129 D1 [10] 244 pop de
012A 7B [ 4] 245 ld a, e
012B 16 00 [ 7] 246 ld d, #0x00
012D 85 [ 4] 247 add a, l
012E 6F [ 4] 248 ld l, a
012F 7A [ 4] 249 ld a, d
0130 8C [ 4] 250 adc a, h
0131 67 [ 4] 251 ld h, a
0132 7D [ 4] 252 ld a, l
0133 C6r0E [ 7] 253 add a, #<(_field)
0135 DD 77 FE [19] 254 ld -2 (ix), a
0138 7C [ 4] 255 ld a, h
0139 CEs00 [ 7] 256 adc a, #>(_field)
013B DD 77 FF [19] 257 ld -1 (ix), a
013E 7B [ 4] 258 ld a, e
013F B7 [ 4] 259 or a, a
0140 28 0B [12] 260 jr Z,00114$
0142 7B [ 4] 261 ld a, e
0143 D6 0B [ 7] 262 sub a, #0x0b
0145 28 06 [12] 263 jr Z,00114$
0147 DD CB FD 46 [20] 264 bit 0, -3 (ix)
014B 28 05 [12] 265 jr Z,00111$
014D 266 00114$:
014D 21 09 00 [10] 267 ld hl, #0x0009
0150 18 03 [12] 268 jr 00112$
0152 269 00111$:
0152 21 00 00 [10] 270 ld hl, #0x0000
0155 271 00112$:
0155 7D [ 4] 272 ld a, l
0156 DD 6E FE [19] 273 ld l, -2 (ix)
0159 DD 66 FF [19] 274 ld h, -1 (ix)
015C 77 [ 7] 275 ld (hl), a
276 ;src/main.c:65: for (uint8_t x = 0; x < WIDTH; ++x) {
015D 1C [ 4] 277 inc e
015E 18 BA [12] 278 jr 00104$
0160 279 00108$:
280 ;src/main.c:64: for (uint8_t y = 0; y < HEIGHT; ++y) {
0160 0C [ 4] 281 inc c
0161 18 A6 [12] 282 jr 00107$
0163 283 00109$:
284 ;src/main.c:69: }
0163 DD F9 [10] 285 ld sp, ix
0165 DD E1 [14] 286 pop ix
0167 C9 [10] 287 ret
288 ;src/main.c:71: uint8_t does_piece_fit(uint8_t shape, uint8_t rotation, uint8_t px, uint8_t py) {
289 ; ---------------------------------
290 ; Function does_piece_fit
291 ; ---------------------------------
0168 292 _does_piece_fit::
0168 DD E5 [15] 293 push ix
016A DD 21 00 00 [14] 294 ld ix,#0
016E DD 39 [15] 295 add ix,sp
0170 F5 [11] 296 push af
0171 F5 [11] 297 push af
298 ;src/main.c:72: for (uint8_t y = 0; y < 4; ++y) {
0172 0E 00 [ 7] 299 ld c, #0x00
0174 300 00116$:
0174 79 [ 4] 301 ld a, c
0175 D6 04 [ 7] 302 sub a, #0x04
0177 D2r1Er02 [10] 303 jp NC, 00111$
304 ;src/main.c:73: for (uint8_t x = 0; x < 4; ++x) {
017A DD 7E 07 [19] 305 ld a, 7 (ix)
017D 81 [ 4] 306 add a, c
017E DD 77 FC [19] 307 ld -4 (ix), a
0181 AF [ 4] 308 xor a, a
0182 DD 77 FF [19] 309 ld -1 (ix), a
0185 310 00113$:
0185 DD 7E FF [19] 311 ld a, -1 (ix)
0188 D6 04 [ 7] 312 sub a, #0x04
018A D2r1Ar02 [10] 313 jp NC, 00117$
314 ;src/main.c:75: uint8_t pi = rotate(x, y, rotation);
018D C5 [11] 315 push bc
018E DD 46 05 [19] 316 ld b, 5 (ix)
0191 C5 [11] 317 push bc
0192 DD 7E FF [19] 318 ld a, -1 (ix)
0195 F5 [11] 319 push af
0196 33 [ 6] 320 inc sp
0197 CDrA2r00 [17] 321 call _rotate
019A F1 [10] 322 pop af
019B 33 [ 6] 323 inc sp
019C C1 [10] 324 pop bc
019D DD 75 FD [19] 325 ld -3 (ix), l
326 ;src/main.c:78: uint8_t fi = (py + y) * WIDTH + px + x;
01A0 DD 7E FC [19] 327 ld a, -4 (ix)
01A3 5F [ 4] 328 ld e, a
01A4 87 [ 4] 329 add a, a
01A5 83 [ 4] 330 add a, e
01A6 87 [ 4] 331 add a, a
01A7 87 [ 4] 332 add a, a
01A8 DD 46 06 [19] 333 ld b, 6 (ix)
01AB 80 [ 4] 334 add a, b
01AC DD 46 FF [19] 335 ld b, -1 (ix)
01AF 80 [ 4] 336 add a, b
01B0 DD 77 FE [19] 337 ld -2 (ix), a
338 ;src/main.c:80: if (px + x >= 0 && px + x < WIDTH) {
01B3 DD 5E 06 [19] 339 ld e, 6 (ix)
01B6 16 00 [ 7] 340 ld d, #0x00
01B8 DD 6E FF [19] 341 ld l, -1 (ix)
01BB 26 00 [ 7] 342 ld h, #0x00
01BD 19 [11] 343 add hl, de
01BE CB 7C [ 8] 344 bit 7, h
01C0 20 52 [12] 345 jr NZ,00114$
01C2 11 0C 80 [10] 346 ld de, #0x800c
01C5 29 [11] 347 add hl, hl
01C6 3F [ 4] 348 ccf
01C7 CB 1C [ 8] 349 rr h
01C9 CB 1D [ 8] 350 rr l
01CB ED 52 [15] 351 sbc hl, de
01CD 30 45 [12] 352 jr NC,00114$
353 ;src/main.c:81: if (py + y >= 0 && py + y < HEIGHT) {
01CF DD 5E 07 [19] 354 ld e, 7 (ix)
01D2 16 00 [ 7] 355 ld d, #0x00
01D4 69 [ 4] 356 ld l, c
01D5 26 00 [ 7] 357 ld h, #0x00
01D7 19 [11] 358 add hl, de
01D8 CB 7C [ 8] 359 bit 7, h
01DA 20 38 [12] 360 jr NZ,00114$
01DC 11 12 80 [10] 361 ld de, #0x8012
01DF 29 [11] 362 add hl, hl
01E0 3F [ 4] 363 ccf
01E1 CB 1C [ 8] 364 rr h
01E3 CB 1D [ 8] 365 rr l
01E5 ED 52 [15] 366 sbc hl, de
01E7 30 2B [12] 367 jr NC,00114$
368 ;src/main.c:83: if (tetromino[shape][pi] == 'X' && field[fi] != 0) {
01E9 DD 6E 04 [19] 369 ld l, 4 (ix)
01EC 26 00 [ 7] 370 ld h, #0x00
01EE 29 [11] 371 add hl, hl
01EF 11r00r00 [10] 372 ld de, #_tetromino
01F2 19 [11] 373 add hl, de
01F3 5E [ 7] 374 ld e, (hl)
01F4 23 [ 6] 375 inc hl
01F5 56 [ 7] 376 ld d, (hl)
01F6 DD 6E FD [19] 377 ld l, -3 (ix)
01F9 26 00 [ 7] 378 ld h, #0x00
01FB 19 [11] 379 add hl, de
01FC 7E [ 7] 380 ld a, (hl)
01FD D6 58 [ 7] 381 sub a, #0x58
01FF 20 13 [12] 382 jr NZ,00114$
0201 DD 7E FE [19] 383 ld a, -2 (ix)
0204 C6r0E [ 7] 384 add a, #<(_field)
0206 5F [ 4] 385 ld e, a
0207 3E 00 [ 7] 386 ld a, #0x00
0209 CEs00 [ 7] 387 adc a, #>(_field)
020B 57 [ 4] 388 ld d, a
020C 1A [ 7] 389 ld a, (de)
020D B7 [ 4] 390 or a, a
020E 28 04 [12] 391 jr Z,00114$
392 ;src/main.c:84: return 0;
0210 2E 00 [ 7] 393 ld l, #0x00
0212 18 0C [12] 394 jr 00118$
0214 395 00114$:
396 ;src/main.c:73: for (uint8_t x = 0; x < 4; ++x) {
0214 DD 34 FF [23] 397 inc -1 (ix)
0217 C3r85r01 [10] 398 jp 00113$
021A 399 00117$:
400 ;src/main.c:72: for (uint8_t y = 0; y < 4; ++y) {
021A 0C [ 4] 401 inc c
021B C3r74r01 [10] 402 jp 00116$
021E 403 00111$:
404 ;src/main.c:91: return 1;
021E 2E 01 [ 7] 405 ld l, #0x01
0220 406 00118$:
407 ;src/main.c:92: }
0220 DD F9 [10] 408 ld sp, ix
0222 DD E1 [14] 409 pop ix
0224 C9 [10] 410 ret
411 ;src/main.c:99: void new_shape() {
412 ; ---------------------------------
413 ; Function new_shape
414 ; ---------------------------------
0225 415 _new_shape::
416 ;src/main.c:100: do {
0225 417 00101$:
418 ;src/main.c:101: current_shape = random() & 0x07;
0225 CDr00r00 [17] 419 call _random
0228 7D [ 4] 420 ld a, l
0229 E6 07 [ 7] 421 and a, #0x07
022B 32r00r00 [13] 422 ld (_current_shape+0), a
423 ;src/main.c:102: } while (current_shape == 7);
022E 3Ar00r00 [13] 424 ld a,(#_current_shape + 0)
0231 D6 07 [ 7] 425 sub a, #0x07
0233 28 F0 [12] 426 jr Z,00101$
427 ;src/main.c:103: }
0235 C9 [10] 428 ret
429 ;src/main.c:105: void render() {
430 ; ---------------------------------
431 ; Function render
432 ; ---------------------------------
0236 433 _render::
0236 DD E5 [15] 434 push ix
0238 DD 21 00 00 [14] 435 ld ix,#0
023C DD 39 [15] 436 add ix,sp
023E F5 [11] 437 push af
023F F5 [11] 438 push af
439 ;src/main.c:107: for (uint8_t i = 0; i < WIDTH*HEIGHT; ++i) {
0240 01rE6r00 [10] 440 ld bc, #_screen+0
0243 11r0Er00 [10] 441 ld de, #_field+0
0246 AF [ 4] 442 xor a, a
0247 DD 77 FF [19] 443 ld -1 (ix), a
024A 444 00107$:
024A DD 7E FF [19] 445 ld a, -1 (ix)
024D D6 D8 [ 7] 446 sub a, #0xd8
024F 30 20 [12] 447 jr NC,00101$
448 ;src/main.c:108: screen[i] = field[i];
0251 79 [ 4] 449 ld a, c
0252 DD 86 FF [19] 450 add a, -1 (ix)
0255 DD 77 FD [19] 451 ld -3 (ix), a
0258 78 [ 4] 452 ld a, b
0259 CE 00 [ 7] 453 adc a, #0x00
025B DD 77 FE [19] 454 ld -2 (ix), a
025E DD 6E FF [19] 455 ld l, -1 (ix)
0261 26 00 [ 7] 456 ld h, #0x00
0263 19 [11] 457 add hl, de
0264 7E [ 7] 458 ld a, (hl)
0265 DD 6E FD [19] 459 ld l, -3 (ix)
0268 DD 66 FE [19] 460 ld h, -2 (ix)
026B 77 [ 7] 461 ld (hl), a
462 ;src/main.c:107: for (uint8_t i = 0; i < WIDTH*HEIGHT; ++i) {
026C DD 34 FF [23] 463 inc -1 (ix)
026F 18 D9 [12] 464 jr 00107$
0271 465 00101$:
466 ;src/main.c:112: for (uint8_t y = 0; y < 4; ++y) {
0271 1E 00 [ 7] 467 ld e, #0x00
0273 468 00113$:
0273 7B [ 4] 469 ld a, e
0274 D6 04 [ 7] 470 sub a, #0x04
0276 D2r1Br03 [10] 471 jp NC, 00115$
472 ;src/main.c:113: for (uint8_t x = 0; x < 4; ++x) {
0279 16 00 [ 7] 473 ld d, #0x00
027B 474 00110$:
027B 7A [ 4] 475 ld a, d
027C D6 04 [ 7] 476 sub a, #0x04
027E D2r17r03 [10] 477 jp NC, 00114$
478 ;src/main.c:114: if (tetromino[current_shape][rotate(x, y, current_rotation)] == 'X') {
0281 FD 21r00r00 [14] 479 ld iy, #_current_shape
0285 FD 6E 00 [19] 480 ld l, 0 (iy)
0288 26 00 [ 7] 481 ld h, #0x00
028A 29 [11] 482 add hl, hl
028B 3Er00 [ 7] 483 ld a, #<(_tetromino)
028D 85 [ 4] 484 add a, l
028E 6F [ 4] 485 ld l, a
028F 3Es00 [ 7] 486 ld a, #>(_tetromino)
0291 8C [ 4] 487 adc a, h
0292 67 [ 4] 488 ld h, a
0293 7E [ 7] 489 ld a, (hl)
0294 DD 77 FE [19] 490 ld -2 (ix), a
0297 23 [ 6] 491 inc hl
0298 7E [ 7] 492 ld a, (hl)
0299 DD 77 FF [19] 493 ld -1 (ix), a
029C C5 [11] 494 push bc
029D D5 [11] 495 push de
029E 3Ar01r00 [13] 496 ld a, (_current_rotation)
02A1 F5 [11] 497 push af
02A2 33 [ 6] 498 inc sp
02A3 7B [ 4] 499 ld a, e
02A4 F5 [11] 500 push af
02A5 33 [ 6] 501 inc sp
02A6 D5 [11] 502 push de
02A7 33 [ 6] 503 inc sp
02A8 CDrA2r00 [17] 504 call _rotate
02AB F1 [10] 505 pop af
02AC 33 [ 6] 506 inc sp
02AD 7D [ 4] 507 ld a, l
02AE D1 [10] 508 pop de
02AF C1 [10] 509 pop bc
02B0 DD 86 FE [19] 510 add a, -2 (ix)
02B3 6F [ 4] 511 ld l, a
02B4 3E 00 [ 7] 512 ld a, #0x00
02B6 DD 8E FF [19] 513 adc a, -1 (ix)
02B9 67 [ 4] 514 ld h, a
02BA 7E [ 7] 515 ld a, (hl)
02BB D6 58 [ 7] 516 sub a, #0x58
02BD 20 54 [12] 517 jr NZ,00111$
518 ;src/main.c:115: screen[(current_y+y)*WIDTH + current_x + x] = current_shape + 1;
02BF FD 21r03r00 [14] 519 ld iy, #_current_y
02C3 FD 6E 00 [19] 520 ld l, 0 (iy)
02C6 26 00 [ 7] 521 ld h, #0x00
02C8 DD 73 FE [19] 522 ld -2 (ix), e
02CB AF [ 4] 523 xor a, a
02CC DD 77 FF [19] 524 ld -1 (ix), a
02CF DD 7E FE [19] 525 ld a, -2 (ix)
02D2 85 [ 4] 526 add a, l
02D3 6F [ 4] 527 ld l, a
02D4 DD 7E FF [19] 528 ld a, -1 (ix)
02D7 8C [ 4] 529 adc a, h
02D8 67 [ 4] 530 ld h, a
02D9 D5 [11] 531 push de
02DA 5D [ 4] 532 ld e, l
02DB 54 [ 4] 533 ld d, h
02DC 29 [11] 534 add hl, hl
02DD 19 [11] 535 add hl, de
02DE 29 [11] 536 add hl, hl
02DF 29 [11] 537 add hl, hl
02E0 D1 [10] 538 pop de
02E1 E3 [19] 539 ex (sp), hl
02E2 3Ar02r00 [13] 540 ld a,(#_current_x + 0)
02E5 26 00 [ 7] 541 ld h, #0x00
02E7 DD 86 FC [19] 542 add a, -4 (ix)
02EA DD 77 FE [19] 543 ld -2 (ix), a
02ED 7C [ 4] 544 ld a, h
02EE DD 8E FD [19] 545 adc a, -3 (ix)
02F1 DD 77 FF [19] 546 ld -1 (ix), a
02F4 6A [ 4] 547 ld l, d
02F5 26 00 [ 7] 548 ld h, #0x00
02F7 7D [ 4] 549 ld a, l
02F8 DD 86 FE [19] 550 add a, -2 (ix)
02FB 6F [ 4] 551 ld l, a
02FC 7C [ 4] 552 ld a, h
02FD DD 8E FF [19] 553 adc a, -1 (ix)
0300 67 [ 4] 554 ld h, a
0301 09 [11] 555 add hl, bc
0302 DD 75 FE [19] 556 ld -2 (ix), l
0305 DD 74 FF [19] 557 ld -1 (ix), h
0308 3Ar00r00 [13] 558 ld a,(#_current_shape + 0)
030B 3C [ 4] 559 inc a
030C DD 6E FE [19] 560 ld l, -2 (ix)
030F DD 66 FF [19] 561 ld h, -1 (ix)
0312 77 [ 7] 562 ld (hl), a
0313 563 00111$:
564 ;src/main.c:113: for (uint8_t x = 0; x < 4; ++x) {
0313 14 [ 4] 565 inc d
0314 C3r7Br02 [10] 566 jp 00110$
0317 567 00114$:
568 ;src/main.c:112: for (uint8_t y = 0; y < 4; ++y) {
0317 1C [ 4] 569 inc e
0318 C3r73r02 [10] 570 jp 00113$
031B 571 00115$:
572 ;src/main.c:119: }
031B DD F9 [10] 573 ld sp, ix
031D DD E1 [14] 574 pop ix
031F C9 [10] 575 ret
576 ;src/main.c:122: void draw() {
577 ; ---------------------------------
578 ; Function draw
579 ; ---------------------------------
0320 580 _draw::
0320 DD E5 [15] 581 push ix
0322 DD 21 00 00 [14] 582 ld ix,#0
0326 DD 39 [15] 583 add ix,sp
0328 3B [ 6] 584 dec sp
585 ;src/main.c:124: put_string("\033[2;2H");
0329 21rB3r03 [10] 586 ld hl, #___str_8
032C E5 [11] 587 push hl
032D CDr00r00 [17] 588 call _put_string
0330 F1 [10] 589 pop af
590 ;src/main.c:125: for (uint8_t y = 0; y < HEIGHT*SCALE; ++y) {
0331 0E 00 [ 7] 591 ld c, #0x00
0333 592 00112$:
0333 79 [ 4] 593 ld a, c
0334 D6 12 [ 7] 594 sub a, #0x12
0336 30 6C [12] 595 jr NC,00114$
596 ;src/main.c:126: for (uint8_t x = 0; x < WIDTH*SCALE; ++x) {
0338 AF [ 4] 597 xor a, a
0339 DD 77 FF [19] 598 ld -1 (ix), a
033C 599 00109$:
033C DD 7E FF [19] 600 ld a, -1 (ix)
033F D6 0C [ 7] 601 sub a, #0x0c
0341 30 52 [12] 602 jr NC,00106$
603 ;src/main.c:127: uint8_t i = screen[y/SCALE*WIDTH + x/SCALE];
0343 59 [ 4] 604 ld e, c
0344 16 00 [ 7] 605 ld d, #0x00
0346 6B [ 4] 606 ld l, e
0347 62 [ 4] 607 ld h, d
0348 29 [11] 608 add hl, hl
0349 19 [11] 609 add hl, de
034A 29 [11] 610 add hl, hl
034B 29 [11] 611 add hl, hl
034C DD 5E FF [19] 612 ld e, -1 (ix)
034F 16 00 [ 7] 613 ld d, #0x00
0351 19 [11] 614 add hl, de
0352 11rE6r00 [10] 615 ld de, #_screen
0355 19 [11] 616 add hl, de
0356 5E [ 7] 617 ld e, (hl)
618 ;src/main.c:128: if (i >= 8) {
0357 7B [ 4] 619 ld a, e
0358 D6 08 [ 7] 620 sub a, #0x08
035A 38 12 [12] 621 jr C,00104$
622 ;src/main.c:129: cout = '\033';
035C 3E 1B [ 7] 623 ld a, #0x1b
035E D3 02 [11] 624 out (_cout), a
625 ;src/main.c:130: cout = '[';
0360 3E 5B [ 7] 626 ld a, #0x5b
0362 D3 02 [11] 627 out (_cout), a
628 ;src/main.c:131: cout = '0';
0364 3E 30 [ 7] 629 ld a, #0x30
0366 D3 02 [11] 630 out (_cout), a
631 ;src/main.c:132: cout = 'm';
0368 3E 6D [ 7] 632 ld a, #0x6d
036A D3 02 [11] 633 out (_cout), a
036C 18 19 [12] 634 jr 00105$
036E 635 00104$:
636 ;src/main.c:133: } else if (i > 0) {
036E 7B [ 4] 637 ld a, e
036F B7 [ 4] 638 or a, a
0370 28 15 [12] 639 jr Z,00105$
640 ;src/main.c:134: cout = '\033';
0372 3E 1B [ 7] 641 ld a, #0x1b
0374 D3 02 [11] 642 out (_cout), a
643 ;src/main.c:135: cout = '[';
0376 3E 5B [ 7] 644 ld a, #0x5b
0378 D3 02 [11] 645 out (_cout), a
646 ;src/main.c:136: cout = '3';
037A 3E 33 [ 7] 647 ld a, #0x33
037C D3 02 [11] 648 out (_cout), a
649 ;src/main.c:137: cout = 48+i;
037E 7B [ 4] 650 ld a, e
037F C6 30 [ 7] 651 add a, #0x30
0381 D3 02 [11] 652 out (_cout), a
653 ;src/main.c:138: cout = 'm';
0383 3E 6D [ 7] 654 ld a, #0x6d
0385 D3 02 [11] 655 out (_cout), a
0387 656 00105$:
657 ;src/main.c:140: char c = " RGOBMCW=#"[i];
0387 21rA8r03 [10] 658 ld hl, #___str_7
038A 16 00 [ 7] 659 ld d, #0x00
038C 19 [11] 660 add hl, de
038D 7E [ 7] 661 ld a, (hl)
038E D3 02 [11] 662 out (_cout), a
663 ;src/main.c:126: for (uint8_t x = 0; x < WIDTH*SCALE; ++x) {
0390 DD 34 FF [23] 664 inc -1 (ix)
0393 18 A7 [12] 665 jr 00109$
0395 666 00106$:
667 ;src/main.c:143: cout = '\n';
0395 3E 0A [ 7] 668 ld a, #0x0a
0397 D3 02 [11] 669 out (_cout), a
670 ;src/main.c:144: cout = '\r';
0399 3E 0D [ 7] 671 ld a, #0x0d
039B D3 02 [11] 672 out (_cout), a
673 ;src/main.c:145: cout = ' ';
039D 3E 20 [ 7] 674 ld a, #0x20
039F D3 02 [11] 675 out (_cout), a
676 ;src/main.c:125: for (uint8_t y = 0; y < HEIGHT*SCALE; ++y) {
03A1 0C [ 4] 677 inc c
03A2 18 8F [12] 678 jr 00112$
03A4 679 00114$:
680 ;src/main.c:147: }
03A4 33 [ 6] 681 inc sp
03A5 DD E1 [14] 682 pop ix
03A7 C9 [10] 683 ret
03A8 684 ___str_7:
03A8 20 52 47 4F 42 4D 685 .ascii " RGOBMCW=#"
43 57 3D 23
03B2 00 686 .db 0x00
03B3 687 ___str_8:
03B3 1B 688 .db 0x1b
03B4 5B 32 3B 32 48 689 .ascii "[2;2H"
03B9 00 690 .db 0x00
691 ;src/main.c:154: uint8_t loop() {
692 ; ---------------------------------
693 ; Function loop
694 ; ---------------------------------
03BA 695 _loop::
03BA DD E5 [15] 696 push ix
03BC DD 21 00 00 [14] 697 ld ix,#0
03C0 DD 39 [15] 698 add ix,sp
03C2 F5 [11] 699 push af
700 ;src/main.c:156: if (status & 1) {
03C3 DB 1F [11] 701 in a, (_status)
03C5 0F [ 4] 702 rrca
03C6 D2r6Cr04 [10] 703 jp NC,00116$
704 ;src/main.c:157: uint8_t nx = current_x;
03C9 3Ar02r00 [13] 705 ld a,(#_current_x + 0)
03CC DD 77 FE [19] 706 ld -2 (ix), a
707 ;src/main.c:158: uint8_t ny = current_y;
03CF 21r03r00 [10] 708 ld hl,#_current_y + 0
03D2 4E [ 7] 709 ld c, (hl)
710 ;src/main.c:159: uint8_t nr = current_rotation;
03D3 3Ar01r00 [13] 711 ld a,(#_current_rotation + 0)
03D6 DD 77 FF [19] 712 ld -1 (ix), a
713 ;src/main.c:161: switch (key) {
03D9 DB 1E [11] 714 in a, (_key)
03DB FE 03 [ 7] 715 cp a, #0x03
03DD 28 16 [12] 716 jr Z,00101$
03DF FE 61 [ 7] 717 cp a, #0x61
03E1 28 1F [12] 718 jr Z,00102$
03E3 FE 64 [ 7] 719 cp a, #0x64
03E5 28 20 [12] 720 jr Z,00103$
03E7 FE 72 [ 7] 721 cp a, #0x72
03E9 28 21 [12] 722 jr Z,00104$
03EB FE 73 [ 7] 723 cp a, #0x73
03ED 28 2D [12] 724 jr Z,00107$
03EF D6 77 [ 7] 725 sub a, #0x77
03F1 28 30 [12] 726 jr Z,00142$
03F3 18 4D [12] 727 jr 00112$
728 ;src/main.c:162: case 0x03:
03F5 729 00101$:
730 ;src/main.c:163: put_string("Exit!\n\r");
03F5 21r2Ar05 [10] 731 ld hl, #___str_9
03F8 E5 [11] 732 push hl
03F9 CDr00r00 [17] 733 call _put_string
03FC F1 [10] 734 pop af
735 ;src/main.c:164: return 0;
03FD 2E 00 [ 7] 736 ld l, #0x00
03FF C3r25r05 [10] 737 jp 00132$
738 ;src/main.c:167: case 'a':
0402 739 00102$:
740 ;src/main.c:168: nx--;
0402 DD 35 FE [23] 741 dec -2 (ix)
742 ;src/main.c:169: break;
0405 18 3B [12] 743 jr 00112$
744 ;src/main.c:172: case 'd':
0407 745 00103$:
746 ;src/main.c:173: nx++;
0407 DD 34 FE [23] 747 inc -2 (ix)
748 ;src/main.c:174: break;
040A 18 36 [12] 749 jr 00112$
750 ;src/main.c:177: case 'r':
040C 751 00104$:
752 ;src/main.c:178: nr++;
040C DD 34 FF [23] 753 inc -1 (ix)
754 ;src/main.c:179: if (nr == 4) {
040F DD 7E FF [19] 755 ld a, -1 (ix)
0412 D6 04 [ 7] 756 sub a, #0x04
0414 20 2C [12] 757 jr NZ,00112$
758 ;src/main.c:180: nr = 0;
0416 AF [ 4] 759 xor a, a
0417 DD 77 FF [19] 760 ld -1 (ix), a
761 ;src/main.c:182: break;
041A 18 26 [12] 762 jr 00112$
763 ;src/main.c:185: case 's':
041C 764 00107$:
765 ;src/main.c:186: counter = 0;
041C 21r04r00 [10] 766 ld hl,#_counter + 0
041F 36 00 [10] 767 ld (hl), #0x00
768 ;src/main.c:187: break;
0421 18 1F [12] 769 jr 00112$
770 ;src/main.c:191: while (does_piece_fit(current_shape, current_rotation, current_x, ++ny + 1));
0423 771 00142$:
0423 772 00109$:
0423 0C [ 4] 773 inc c
0424 79 [ 4] 774 ld a, c
0425 3C [ 4] 775 inc a
0426 C5 [11] 776 push bc
0427 F5 [11] 777 push af
0428 33 [ 6] 778 inc sp
0429 3Ar02r00 [13] 779 ld a, (_current_x)
042C F5 [11] 780 push af
042D 33 [ 6] 781 inc sp
042E 3Ar01r00 [13] 782 ld a, (_current_rotation)
0431 F5 [11] 783 push af
0432 33 [ 6] 784 inc sp
0433 3Ar00r00 [13] 785 ld a, (_current_shape)
0436 F5 [11] 786 push af
0437 33 [ 6] 787 inc sp
0438 CDr68r01 [17] 788 call _does_piece_fit
043B F1 [10] 789 pop af
043C F1 [10] 790 pop af
043D 7D [ 4] 791 ld a, l
043E C1 [10] 792 pop bc
043F B7 [ 4] 793 or a, a
0440 20 E1 [12] 794 jr NZ,00109$
795 ;src/main.c:193: }
0442 796 00112$:
797 ;src/main.c:195: if (does_piece_fit(current_shape, nr, nx, ny)) {
0442 C5 [11] 798 push bc
0443 79 [ 4] 799 ld a, c
0444 F5 [11] 800 push af
0445 33 [ 6] 801 inc sp
0446 DD 66 FE [19] 802 ld h, -2 (ix)
0449 DD 6E FF [19] 803 ld l, -1 (ix)
044C E5 [11] 804 push hl
044D 3Ar00r00 [13] 805 ld a, (_current_shape)
0450 F5 [11] 806 push af
0451 33 [ 6] 807 inc sp
0452 CDr68r01 [17] 808 call _does_piece_fit
0455 F1 [10] 809 pop af
0456 F1 [10] 810 pop af
0457 7D [ 4] 811 ld a, l
0458 C1 [10] 812 pop bc
0459 B7 [ 4] 813 or a, a
045A 28 10 [12] 814 jr Z,00116$
815 ;src/main.c:196: current_x = nx;
045C DD 7E FE [19] 816 ld a, -2 (ix)
045F 32r02r00 [13] 817 ld (#_current_x + 0),a
818 ;src/main.c:197: current_y = ny;
0462 21r03r00 [10] 819 ld hl,#_current_y + 0
0465 71 [ 7] 820 ld (hl), c
821 ;src/main.c:198: current_rotation = nr;
0466 DD 7E FF [19] 822 ld a, -1 (ix)
0469 32r01r00 [13] 823 ld (#_current_rotation + 0),a
046C 824 00116$:
825 ;src/main.c:203: if (counter == 0) {
046C 3Ar04r00 [13] 826 ld a,(#_counter + 0)
046F B7 [ 4] 827 or a, a
0470 C2r19r05 [10] 828 jp NZ, 00125$
829 ;src/main.c:204: if (does_piece_fit(current_shape, current_rotation, current_x, current_y+1)) {
0473 3Ar03r00 [13] 830 ld a,(#_current_y + 0)
0476 3C [ 4] 831 inc a
0477 F5 [11] 832 push af
0478 33 [ 6] 833 inc sp
0479 3Ar02r00 [13] 834 ld a, (_current_x)
047C F5 [11] 835 push af
047D 33 [ 6] 836 inc sp
047E 3Ar01r00 [13] 837 ld a, (_current_rotation)
0481 F5 [11] 838 push af
0482 33 [ 6] 839 inc sp
0483 3Ar00r00 [13] 840 ld a, (_current_shape)
0486 F5 [11] 841 push af
0487 33 [ 6] 842 inc sp
0488 CDr68r01 [17] 843 call _does_piece_fit
048B F1 [10] 844 pop af
048C F1 [10] 845 pop af
048D 7D [ 4] 846 ld a, l
048E B7 [ 4] 847 or a, a
048F 28 07 [12] 848 jr Z,00150$
849 ;src/main.c:205: current_y++;
0491 21r03r00 [10] 850 ld hl, #_current_y+0
0494 34 [11] 851 inc (hl)
0495 C3r14r05 [10] 852 jp 00123$
853 ;src/main.c:208: for (uint8_t y = 0; y < 4; ++y) {
0498 854 00150$:
0498 0E 00 [ 7] 855 ld c, #0x00
049A 856 00130$:
049A 79 [ 4] 857 ld a, c
049B D6 04 [ 7] 858 sub a, #0x04
049D 30 63 [12] 859 jr NC,00120$
860 ;src/main.c:209: for (uint8_t x = 0; x < 4; ++x) {
049F 06 00 [ 7] 861 ld b, #0x00
04A1 862 00127$:
04A1 78 [ 4] 863 ld a, b
04A2 D6 04 [ 7] 864 sub a, #0x04
04A4 30 59 [12] 865 jr NC,00131$
866 ;src/main.c:210: if (tetromino[current_shape][rotate(x, y, current_rotation)] == 'X') {
04A6 FD 21r00r00 [14] 867 ld iy, #_current_shape
04AA FD 6E 00 [19] 868 ld l, 0 (iy)
04AD 26 00 [ 7] 869 ld h, #0x00
04AF 29 [11] 870 add hl, hl
04B0 11r00r00 [10] 871 ld de, #_tetromino
04B3 19 [11] 872 add hl, de
04B4 5E [ 7] 873 ld e, (hl)
04B5 23 [ 6] 874 inc hl
04B6 56 [ 7] 875 ld d, (hl)
04B7 C5 [11] 876 push bc
04B8 D5 [11] 877 push de
04B9 3Ar01r00 [13] 878 ld a, (_current_rotation)
04BC F5 [11] 879 push af
04BD 33 [ 6] 880 inc sp
04BE 79 [ 4] 881 ld a, c
04BF F5 [11] 882 push af
04C0 33 [ 6] 883 inc sp
04C1 C5 [11] 884 push bc
04C2 33 [ 6] 885 inc sp
04C3 CDrA2r00 [17] 886 call _rotate
04C6 F1 [10] 887 pop af
04C7 33 [ 6] 888 inc sp
04C8 D1 [10] 889 pop de
04C9 C1 [10] 890 pop bc
04CA 26 00 [ 7] 891 ld h, #0x00
04CC 19 [11] 892 add hl, de
04CD 7E [ 7] 893 ld a, (hl)
04CE D6 58 [ 7] 894 sub a, #0x58
04D0 20 2A [12] 895 jr NZ,00128$
896 ;src/main.c:211: field[(current_y+y)*WIDTH + current_x + x] = current_shape + 1;
04D2 21r03r00 [10] 897 ld hl,#_current_y + 0
04D5 5E [ 7] 898 ld e, (hl)
04D6 16 00 [ 7] 899 ld d, #0x00
04D8 69 [ 4] 900 ld l, c
04D9 26 00 [ 7] 901 ld h, #0x00
04DB 19 [11] 902 add hl, de
04DC 5D [ 4] 903 ld e, l
04DD 54 [ 4] 904 ld d, h
04DE 29 [11] 905 add hl, hl
04DF 19 [11] 906 add hl, de
04E0 29 [11] 907 add hl, hl
04E1 29 [11] 908 add hl, hl
04E2 EB [ 4] 909 ex de, hl
04E3 FD 21r02r00 [14] 910 ld iy, #_current_x
04E7 FD 6E 00 [19] 911 ld l, 0 (iy)
04EA 26 00 [ 7] 912 ld h, #0x00
04EC 19 [11] 913 add hl, de
04ED 58 [ 4] 914 ld e, b
04EE 16 00 [ 7] 915 ld d, #0x00
04F0 19 [11] 916 add hl, de
04F1 EB [ 4] 917 ex de, hl
04F2 21r0Er00 [10] 918 ld hl, #_field
04F5 19 [11] 919 add hl, de
04F6 EB [ 4] 920 ex de, hl
04F7 3Ar00r00 [13] 921 ld a,(#_current_shape + 0)
04FA 3C [ 4] 922 inc a
04FB 12 [ 7] 923 ld (de), a
04FC 924 00128$:
925 ;src/main.c:209: for (uint8_t x = 0; x < 4; ++x) {
04FC 04 [ 4] 926 inc b
04FD 18 A2 [12] 927 jr 00127$
04FF 928 00131$:
929 ;src/main.c:208: for (uint8_t y = 0; y < 4; ++y) {
04FF 0C [ 4] 930 inc c
0500 18 98 [12] 931 jr 00130$
0502 932 00120$:
933 ;src/main.c:216: new_shape();
0502 CDr25r02 [17] 934 call _new_shape
935 ;src/main.c:217: current_y = 0;
0505 21r03r00 [10] 936 ld hl,#_current_y + 0
0508 36 00 [10] 937 ld (hl), #0x00
938 ;src/main.c:218: current_x = WIDTH/2;
050A 21r02r00 [10] 939 ld hl,#_current_x + 0
050D 36 06 [10] 940 ld (hl), #0x06
941 ;src/main.c:219: current_rotation = 0;
050F 21r01r00 [10] 942 ld hl,#_current_rotation + 0
0512 36 00 [10] 943 ld (hl), #0x00
0514 944 00123$:
945 ;src/main.c:221: counter = SPEED;
0514 21r04r00 [10] 946 ld hl,#_counter + 0
0517 36 02 [10] 947 ld (hl), #0x02
0519 948 00125$:
949 ;src/main.c:224: counter--;
0519 21r04r00 [10] 950 ld hl, #_counter+0
051C 35 [11] 951 dec (hl)
952 ;src/main.c:226: render();
051D CDr36r02 [17] 953 call _render
954 ;src/main.c:227: draw();
0520 CDr20r03 [17] 955 call _draw
956 ;src/main.c:229: return 1;
0523 2E 01 [ 7] 957 ld l, #0x01
0525 958 00132$:
959 ;src/main.c:230: }
0525 DD F9 [10] 960 ld sp, ix
0527 DD E1 [14] 961 pop ix
0529 C9 [10] 962 ret
052A 963 ___str_9:
052A 45 78 69 74 21 964 .ascii "Exit!"
052F 0A 965 .db 0x0a
0530 0D 966 .db 0x0d
0531 00 967 .db 0x00
968 ;src/main.c:234: void main() {
969 ; ---------------------------------
970 ; Function main
971 ; ---------------------------------
0532 972 _main::
973 ;src/main.c:235: construct_shapes();
0532 CDr00r00 [17] 974 call _construct_shapes
975 ;src/main.c:236: initialize_field();
0535 CDrFDr00 [17] 976 call _initialize_field
977 ;src/main.c:239: new_shape();
0538 CDr25r02 [17] 978 call _new_shape
979 ;src/main.c:242: put_string("\033[2J");
053B 21r4Br05 [10] 980 ld hl, #___str_10
053E E5 [11] 981 push hl
053F CDr00r00 [17] 982 call _put_string
0542 F1 [10] 983 pop af
984 ;src/main.c:246: while (loop());
0543 985 00101$:
0543 CDrBAr03 [17] 986 call _loop
0546 7D [ 4] 987 ld a, l
0547 B7 [ 4] 988 or a, a
0548 20 F9 [12] 989 jr NZ,00101$
990 ;src/main.c:247: }
054A C9 [10] 991 ret
054B 992 ___str_10:
054B 1B 993 .db 0x1b
054C 5B 32 4A 994 .ascii "[2J"
054F 00 995 .db 0x00
996 .area _CODE
997 .area _INITIALIZER
0000 998 __xinit__current_shape:
0000 00 999 .db #0x00 ; 0
0001 1000 __xinit__current_rotation:
0001 00 1001 .db #0x00 ; 0
0002 1002 __xinit__current_x:
0002 06 1003 .db #0x06 ; 6
0003 1004 __xinit__current_y:
0003 00 1005 .db #0x00 ; 0
0004 1006 __xinit__counter:
0004 02 1007 .db #0x02 ; 2
1008 .area _CABS (ABS)