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)