1 ; **************************************************************************** 2 ; line11.s - TRDOS 386 (TRDOS v2.0.3) Test Program - 'sysvideo' pixel w/r tests 3 ; ---------------------------------------------------------------------------- 4 ; 5 ; 07/03/2021 6 ; 7 ; **************************************************************************** 8 ; nasm line11.s -l line11.txt -o LINE11.PRG -Z error.txt 9 ; (modified from 'line5.s', 12/02/2021) 10 11 ; Draw lines by using 'sysvideo' bh=020Eh (VESA VBE mode version) 12 13 ; 14/07/2020 14 ; 31/12/2017 15 ; TRDOS 386 (v2.0) system calls 16 _ver equ 0 17 _exit equ 1 18 _fork equ 2 19 _read equ 3 20 _write equ 4 21 _open equ 5 22 _close equ 6 23 _wait equ 7 24 _create equ 8 25 _rename equ 9 26 _delete equ 10 27 _exec equ 11 28 _chdir equ 12 29 _time equ 13 30 _mkdir equ 14 31 _chmod equ 15 32 _rmdir equ 16 33 _break equ 17 34 _drive equ 18 35 _seek equ 19 36 _tell equ 20 37 _memory equ 21 38 _prompt equ 22 39 _path equ 23 40 _env equ 24 41 _stime equ 25 42 _quit equ 26 43 _intr equ 27 44 _dir equ 28 45 _emt equ 29 46 _ldrvt equ 30 47 _video equ 31 48 _audio equ 32 49 _timer equ 33 50 _sleep equ 34 51 _msg equ 35 52 _geterr equ 36 53 _fpstat equ 37 54 _pri equ 38 55 _rele equ 39 56 _fff equ 40 57 _fnf equ 41 58 _alloc equ 42 59 _dalloc equ 43 60 _calbac equ 44 61 _dma equ 45 62 63 %macro sys 1-4 64 ; 29/04/2016 - TRDOS 386 (TRDOS v2.0) 65 ; 03/09/2015 66 ; 13/04/2015 67 ; Retro UNIX 386 v1 system call. 68 %if %0 >= 2 69 mov ebx, %2 70 %if %0 >= 3 71 mov ecx, %3 72 %if %0 = 4 73 mov edx, %4 74 %endif 75 %endif 76 %endif 77 mov eax, %1 78 ;int 30h 79 int 40h ; TRDOS 386 (TRDOS v2.0) 80 %endmacro 81 82 ; Retro UNIX 386 v1 system call format: 83 ; sys systemcall (eax) , , 84 85 [BITS 32] ; We need 32-bit intructions for protected mode 86 87 [ORG 0] 88 89 START_CODE: 90 ; clear bss 91 00000000 BF[A0050000] mov edi, bss_start 92 00000005 B97A000000 mov ecx, (bss_end - bss_start)/4 93 ;xor eax, eax 94 0000000A F3AB rep stosd 95 96 ; program message 97 0000000C BE[FB020000] mov esi, program_msg 98 00000011 E858010000 call print_msg 99 100 00000016 30E4 xor ah, ah 101 ;int 16h ; KEYBOARD - READ CHAR FROM BUFFER, WAIT IF EMPTY 102 ; Return: AH = scan code, AL = character 103 00000018 CD32 int 32h ; TRDOS 386 Keyboard interrupt 104 105 ; Get VESA VBE video bios number 106 ; (vbe2 or vbe3, emulator or not) 107 ;mov ebx, 0906h 108 ;sys _video 109 110 ; get [truecolor] status (24bpp or 32bpp for VBE3 vbios) 111 0000001A BB09090000 mov ebx, 0909h 112 sys _video 64 <1> 65 <1> 66 <1> 67 <1> 68 <1> %if %0 >= 2 69 <1> mov ebx, %2 70 <1> %if %0 >= 3 71 <1> mov ecx, %3 72 <1> %if %0 = 4 73 <1> mov edx, %4 74 <1> %endif 75 <1> %endif 76 <1> %endif 77 0000001F B81F000000 <1> mov eax, %1 78 <1> 79 00000024 CD40 <1> int 40h 113 114 00000026 B912010000 mov ecx, 112h ; VESA VBE video mode (640x480, 24bpp) 115 116 ;cmp ah, 3 117 ;je short set_vmode 118 ;cmp ah, 2 119 ;;jne terminate ; invalid !? 120 ;jne short set_vmode 121 ;and al, al 122 ;jz short set_vmode ; invalid !? (AL must be >= C0h.) 123 124 0000002B 3C20 cmp al, 32 125 0000002D 7402 je short set_vmode 126 127 ; VBE2 bios or default truecolor bpp is 24 bpp 128 ; so, we are using video mode 142h 129 ; (TRDOS 386 running in emulator or very old hardware!) 130 131 ; BOCHS/QEMU/VBOX emulator 132 0000002F B142 mov cl, 42h ; Bochs/Plex86 video mode 142h 133 ; (640*480, 32bpp) 134 135 ; Set Video Mode to 112h ; 640x480, 32 bit true colors 136 ; 137 ; NOTE: NVIDIA GEFORCE FX 5500 VIDEO BIOS uses 32bpp 138 ; instead of 24bpp for same VBE video mode numbers. 139 ; So, 112h is 640*480, 24bpp for BOCHS/QEMU emulator 140 ; but, it is 640*480, 32 bpp for real computer 141 ; with NVIDIA graphics card and video bios. 142 ; (Also it is -it must be- 32bpp for other new hardware.) 143 144 ;sys _video, 08FFh, 112h 145 set_vmode: 146 ; ecx = VESA VBE video mode 147 sys _video, 08FFh 64 <1> 65 <1> 66 <1> 67 <1> 68 <1> %if %0 >= 2 69 00000031 BBFF080000 <1> mov ebx, %2 70 <1> %if %0 >= 3 71 <1> mov ecx, %3 72 <1> %if %0 = 4 73 <1> mov edx, %4 74 <1> %endif 75 <1> %endif 76 <1> %endif 77 00000036 B81F000000 <1> mov eax, %1 78 <1> 79 0000003B CD40 <1> int 40h 148 0000003D 09C0 or eax, eax 149 ;jz short terminate 150 ;mov [LFB_ADDR], edx ; pointer to LFB info table/structure 151 0000003F 750E jnz short set_vesa_mode_112h_ok 152 153 terminate: 154 00000041 E824020000 call set_text_mode 155 sys _exit 64 <1> 65 <1> 66 <1> 67 <1> 68 <1> %if %0 >= 2 69 <1> mov ebx, %2 70 <1> %if %0 >= 3 71 <1> mov ecx, %3 72 <1> %if %0 = 4 73 <1> mov edx, %4 74 <1> %endif 75 <1> %endif 76 <1> %endif 77 00000046 B801000000 <1> mov eax, %1 78 <1> 79 0000004B CD40 <1> int 40h 156 halt: 157 0000004D EBFE jmp short halt 158 159 set_vesa_mode_112h_ok: 160 0000004F C705[A0050000]0000- mov dword [color], 0FF0000h ; initial pixel color 160 00000057 FF00 161 162 ; initializing position difference parameters 163 ;mov al, [maxdx] 164 ;shr al, 1 165 ;mov [posdx], al 166 ;mov al, [maxdy] 167 ;shr al, 1 168 ;mov [posdy], al 169 170 next_phase: 171 00000059 E821010000 call drawrect 172 waitforkey: 173 0000005E B401 mov ah, 1 174 00000060 CD32 int 32h 175 00000062 740C jz short getkey 176 00000064 66FF05[A6050000] inc word [counter] 177 0000006B 90 nop 178 0000006C 90 nop 179 0000006D 90 nop 180 0000006E EBEE jmp short waitforkey 181 getkey: 182 00000070 30E4 xor ah, ah 183 00000072 CD32 int 32h 184 185 00000074 663D032E cmp ax, 2E03h 186 00000078 74C7 je short terminate 187 0000007A 3C1B cmp al, 1Bh ; ESC key 188 0000007C 74C3 je short terminate 189 190 0000007E 3C2B cmp al, '+' 191 00000080 7509 jne short _1 192 193 00000082 8305[A0050000]20 add dword [color], 20h 194 00000089 EBCE jmp short next_phase 195 _1: 196 0000008B 3C2D cmp al, '-' 197 0000008D 7509 jne short _2 198 199 0000008F 832D[A0050000]20 sub dword [color], 20h 200 00000096 EBC1 jmp short next_phase 201 _2: 202 00000098 3C20 cmp al, 20h ; space 203 0000009A 750C jne short _3 204 0000009C 8105[A0050000]2020- add dword [color], 2020h 204 000000A4 0000 205 000000A6 EBB1 jmp short next_phase 206 _3: 207 000000A8 80FC4B cmp ah, 4Bh 208 000000AB 7509 jne short _4 209 ; left arrow 210 000000AD C605[A5050000]01 mov byte [direction], 1 211 000000B4 EBA3 jmp next_phase 212 _4: 213 000000B6 80FC4D cmp ah, 4Dh 214 000000B9 7509 jne short _5 215 ; right arrow 216 000000BB C605[A5050000]02 mov byte [direction], 2 217 000000C2 EB95 jmp next_phase 218 _5: 219 000000C4 80FC50 cmp ah, 50h 220 000000C7 7509 jne short _6 221 ; down arrow 222 000000C9 C605[A5050000]03 mov byte [direction], 3 223 000000D0 EB87 jmp next_phase 224 _6: 225 000000D2 80FC48 cmp ah, 48h 226 000000D5 750C jne short _7 227 ; up arrow 228 000000D7 C605[A5050000]04 mov byte [direction], 4 229 000000DE E976FFFFFF jmp next_phase 230 _7: 231 000000E3 80FC47 cmp ah, 47h ; Home key 232 000000E6 750C jne short _9 233 _8: 234 000000E8 C605[A4050000]00 mov byte [phase], 0 235 000000EF E965FFFFFF jmp next_phase 236 _9: 237 000000F4 80FC4F cmp ah, 4Fh ; End key 238 000000F7 750C jne short _10 239 000000F9 C705[A0050000]0000- mov dword [color], 0FF0000h 239 00000101 FF00 240 00000103 EBE3 jmp short _8 241 _10: 242 00000105 663D0D1C cmp ax, 1C0Dh 243 00000109 7520 jne short _12 244 245 0000010B FE05[A4050000] inc byte [phase] 246 00000111 803D[A4050000]05 cmp byte [phase], 5 247 00000118 7705 ja short _11 248 0000011A E93AFFFFFF jmp next_phase 249 _11: 250 0000011F C605[A4050000]00 mov byte [phase], 0 251 00000126 E92EFFFFFF jmp next_phase 252 _12: 253 0000012B 80FC49 cmp ah, 49h ; Page UP 254 0000012E 751A jne short _14 255 00000130 FE0D[A4050000] dec byte [phase] 256 00000136 790D jns short _13 257 00000138 E81B010000 call beep 258 0000013D FE05[A4050000] inc byte [phase] 259 00000143 EB24 jmp short _15 260 _13: 261 00000145 E90FFFFFFF jmp next_phase 262 _14: 263 0000014A 80FC51 cmp ah, 51h ; Page Down 264 0000014D 751A jne short _15 265 0000014F FE05[A4050000] inc byte [phase] 266 00000155 803D[A4050000]05 cmp byte [phase], 5 267 0000015C 76E7 jna short _13 268 0000015E E8F5000000 call beep 269 00000163 FE0D[A4050000] dec byte [phase] 270 _15: 271 00000169 E9F0FEFFFF jmp waitforkey 272 273 print_msg: 274 0000016E B40E mov ah, 0Eh 275 00000170 BB07000000 mov ebx, 7 276 ;mov bl, 7 ; char attribute & color 277 p_next_chr: 278 00000175 AC lodsb 279 00000176 08C0 or al, al 280 00000178 7404 jz short p_retn ; retn 281 0000017A CD31 int 31h 282 0000017C EBF7 jmp short p_next_chr 283 p_retn: 284 0000017E C3 retn 285 286 drawrect: 287 ; draw rectangles 288 0000017F 803D[A4050000]03 cmp byte [phase], 3 289 00000186 7321 jnb short dr_x 290 00000188 31C0 xor eax, eax 291 0000018A 3805[A5050000] cmp byte [direction], al ; 0 292 00000190 7617 jna short dr_x 293 00000192 8705[A0050000] xchg eax, [color] 294 00000198 50 push eax 295 00000199 E80B000000 call dr_x 296 0000019E 58 pop eax 297 0000019F A3[A0050000] mov [color], eax 298 000001A4 E8C8000000 call change_positions 299 dr_x: 300 000001A9 803D[A4050000]00 cmp byte [phase], 0 301 000001B0 772F ja short dr_2 302 ; position 1 rectangles 303 000001B2 BE[B6030000] mov esi, positions1 304 000001B7 BF[A8050000] mov edi, rectbuffer1 305 dr_0: 306 000001BC B914000000 mov ecx, 20 ; 20 lines, 5 rectangles 307 000001C1 57 push edi 308 dr_1: 309 000001C2 AD lodsd 310 000001C3 AB stosd ; position 311 000001C4 AD lodsd ; 312 000001C5 AB stosd ; length (and type, h/v) 313 000001C6 E2FA loop dr_1 314 000001C8 5E pop esi 315 316 ; BL bit 5 = 1 -> write lines via user buffer 317 sys _video, 022Eh, [color], 20 64 <1> 65 <1> 66 <1> 67 <1> 68 <1> %if %0 >= 2 69 000001C9 BB2E020000 <1> mov ebx, %2 70 <1> %if %0 >= 3 71 000001CE 8B0D[A0050000] <1> mov ecx, %3 72 <1> %if %0 = 4 73 000001D4 BA14000000 <1> mov edx, %4 74 <1> %endif 75 <1> %endif 76 <1> %endif 77 000001D9 B81F000000 <1> mov eax, %1 78 <1> 79 000001DE CD40 <1> int 40h 318 000001E0 C3 retn 319 dr_2: 320 000001E1 803D[A4050000]01 cmp byte [phase], 1 321 000001E8 770C ja short dr_3 322 ; position 2 rectangles 323 000001EA BE[56040000] mov esi, positions2 324 000001EF BF[48060000] mov edi, rectbuffer2 325 000001F4 EBC6 jmp short dr_0 326 dr_3: 327 000001F6 803D[A4050000]02 cmp byte [phase], 2 328 000001FD 770C ja short dr_4 329 ; position 3 rectangles 330 000001FF BE[F6040000] mov esi, positions3 331 00000204 BF[E8060000] mov edi, rectbuffer3 332 00000209 EBB1 jmp short dr_0 333 dr_4: 334 0000020B 803D[A4050000]03 cmp byte [phase], 3 335 00000212 771C ja short dr_6 336 ; delete position 1 rectangles 337 00000214 BE[A8050000] mov esi, rectbuffer1 338 dr_5: 339 ; clear previous positions (by using black color) 340 ; BL bit 5 = 1 -> write lines via user buffer 341 sys _video, 022Eh, 0, 20 64 <1> 65 <1> 66 <1> 67 <1> 68 <1> %if %0 >= 2 69 00000219 BB2E020000 <1> mov ebx, %2 70 <1> %if %0 >= 3 71 0000021E B900000000 <1> mov ecx, %3 72 <1> %if %0 = 4 73 00000223 BA14000000 <1> mov edx, %4 74 <1> %endif 75 <1> %endif 76 <1> %endif 77 00000228 B81F000000 <1> mov eax, %1 78 <1> 79 0000022D CD40 <1> int 40h 342 0000022F C3 retn 343 dr_6: 344 00000230 803D[A4050000]04 cmp byte [phase], 4 345 00000237 7707 ja short dr_7 346 ; delete position 2 rectangles 347 00000239 BE[48060000] mov esi, rectbuffer2 348 0000023E EBD9 jmp short dr_5 349 dr_7: 350 00000240 803D[A4050000]05 cmp byte [phase], 5 351 00000247 7707 ja short dr_8 352 ; delete position 2 rectangles 353 00000249 BE[E8060000] mov esi, rectbuffer3 354 0000024E EBC9 jmp short dr_5 355 dr_8: 356 00000250 C605[A4050000]00 mov byte [phase], 0 357 00000257 C3 retn 358 359 beep: 360 ; call beep function (16/64 second, 886Hz) 361 sys _audio, 16, 1331 64 <1> 65 <1> 66 <1> 67 <1> 68 <1> %if %0 >= 2 69 00000258 BB10000000 <1> mov ebx, %2 70 <1> %if %0 >= 3 71 0000025D B933050000 <1> mov ecx, %3 72 <1> %if %0 = 4 73 <1> mov edx, %4 74 <1> %endif 75 <1> %endif 76 <1> %endif 77 00000262 B820000000 <1> mov eax, %1 78 <1> 79 00000267 CD40 <1> int 40h 362 00000269 C3 retn 363 364 set_text_mode: 365 0000026A 30E4 xor ah, ah 366 0000026C B003 mov al, 3 367 ;int 10h ; al = 03h text mode, int 10 video 368 0000026E CD31 int 31h ; TRDOS 386 - Video interrupt 369 00000270 C3 retn 370 371 change_positions: 372 00000271 B93C000000 mov ecx, 60 ; 60 lines, 15 rectangles 373 00000276 803D[A5050000]02 cmp byte [direction], 2 374 0000027D 7749 ja short chgpos3 ; scroll down/up 375 0000027F 8A25[96050000] mov ah, [maxdx] 376 00000285 A0[9A050000] mov al, [posdx] 377 0000028A BE[B6030000] mov esi, positions1 ; start address 378 0000028F 7422 je short chgpos1 ; slide to right 379 ; slide to left 380 00000291 20C0 and al, al 381 00000293 7611 jna short chgpos_beep 382 00000295 FEC8 dec al 383 00000297 A2[9A050000] mov [posdx], al 384 ; (horizontal positions) -L- 385 chgpos0: 386 0000029C 66FF0E dec word [esi] 387 0000029F 83C608 add esi, 8 388 000002A2 E2F8 loop chgpos0 389 000002A4 EB05 jmp short chgpos_retn 390 chgpos_beep: 391 000002A6 E8ADFFFFFF call beep 392 chgpos_retn: 393 000002AB C605[A5050000]00 mov byte [direction], 0 394 000002B2 C3 retn 395 chgpos1: 396 000002B3 38E0 cmp al, ah ; right (dx) limit ? 397 000002B5 73EF jnb short chgpos_beep 398 000002B7 FEC0 inc al 399 000002B9 A2[9A050000] mov [posdx], al 400 ; (horizontal positions) -R- 401 chgpos2: 402 000002BE 66FF06 inc word [esi] 403 000002C1 83C608 add esi, 8 404 000002C4 E2F8 loop chgpos2 405 000002C6 EBE3 jmp short chgpos_retn 406 chgpos3: 407 000002C8 8A25[98050000] mov ah, [maxdy] 408 000002CE A0[9C050000] mov al, [posdy] 409 000002D3 BE[B8030000] mov esi, positions1+2 ; start address 410 000002D8 803D[A5050000]03 cmp byte [direction], 3 411 000002DF 770D ja short chgpos4 ; scroll up 412 ; scroll down 413 000002E1 38E0 cmp al, ah ; down (dy) limit ? 414 000002E3 73C1 jnb short chgpos_beep 415 000002E5 FEC0 inc al 416 000002E7 A2[9C050000] mov [posdy], al 417 ; (vertical positions) -D- 418 000002EC EBD0 jmp short chgpos2 419 chgpos4: 420 ; scroll up 421 000002EE 08C0 or al, al 422 000002F0 76B4 jna short chgpos_beep 423 000002F2 FEC8 dec al 424 000002F4 A2[9C050000] mov [posdy], al 425 ; (vertical positions) -U- 426 000002F9 EBA1 jmp short chgpos0 427 428 program_msg: 429 000002FB 5452444F5320333836- db "TRDOS 386 v2.0.3 - ('sysvideo') Test Program - Draw Lines" 429 00000304 2076322E302E33202D- 429 0000030D 202827737973766964- 429 00000316 656F27292054657374- 429 0000031F 2050726F6772616D20- 429 00000328 2D2044726177204C69- 429 00000331 6E6573 430 00000334 0D0A db 0Dh, 0Ah 431 00000336 6279204572646F6761- db "by Erdogan Tan - 07/03/2021" 431 0000033F 6E2054616E202D2030- 431 00000348 372F30332F32303231 432 ;db 0Dh, 0Ah, 0 433 00000351 0D0A0D0A db 0Dh, 0Ah, 0Dh, 0Ah 434 00000355 507265737320454E54- db "Press ENTER to draw SQUAREs .." 434 0000035E 455220746F20647261- 434 00000367 772053515541524573- 434 00000370 202E2E 435 00000373 0D0A db 0Dh, 0Ah 436 00000375 507265737320535041- db "Press SPACE to change COLOR .." 436 0000037E 434520746F20636861- 436 00000387 6E676520434F4C4F52- 436 00000390 202E2E 437 00000393 0D0A db 0Dh, 0Ah 438 00000395 0D0A db 0Dh, 0Ah 439 00000397 507265737320616E79- db "Press any key to continue .." 439 000003A0 206B657920746F2063- 439 000003A9 6F6E74696E7565202E- 439 000003B2 2E 440 nextline: 441 000003B3 0D0A00 db 0Dh, 0Ah, 0 442 443 positions1: 444 ; rectangle 1 445 000003B6 30003C0024000000 dw 48,60,36,0 446 000003BE 53003C0024100000 dw 83,60,4096+36,0 447 000003C6 30005F0024000000 dw 48,95,36,0 448 000003CE 30003C0024100000 dw 48,60,4096+36,0 449 ; rectangle 2 450 000003D6 280178009C000000 dw 296,120,156,0 451 000003DE C301780078100000 dw 451,120,4096+120,0 452 000003E6 2801EF009C000000 dw 296,239,156,0 453 000003EE 2801780078100000 dw 296,120,4096+120,0 454 ; rectangle 3 455 000003F6 E801600018000000 dw 488,96,24,0 456 000003FE FF01600018100000 dw 511,96,4096+24,0 457 00000406 E801770018000000 dw 488,119,24,0 458 0000040E E801600018100000 dw 488,96,4096+24,0 459 ; rectangle 4 460 00000416 D80050016C000000 dw 216,336,108,0 461 0000041E 430150010C100000 dw 323,336,4096+12,0 462 00000426 D8005B016C000000 dw 216,347,108,0 463 0000042E D80050010C100000 dw 216,336,4096+12,0 464 ; rectangle 5 465 00000436 180246010C000000 dw 536,326,12,0 466 0000043E 230246013C100000 dw 547,326,4096+60,0 467 00000446 180281010C000000 dw 536,385,12,0 468 0000044E 180246013C100000 dw 536,326,4096+60,0 469 positions2: 470 ; rectangle 6 471 00000456 EC00CC0018000000 dw 236,204,24,0 ; line 1, x1, y1, h 472 0000045E 0301CC0054100000 dw 259,204,4096+84,0 ; line 2, x2, y1, v 473 00000466 EC001F0118000000 dw 236,287,24,0 ; line 3, x1, y2, h 474 0000046E EC00CC0054100000 dw 236,204,4096+84,0 ; line 4, x1, y1, v 475 ; rectangle 7 476 00000476 54002C0160000000 dw 84,300,96,0 477 0000047E B3002C0154100000 dw 179,300,4096+84,0 478 00000486 54007F0160000000 dw 84,383,96,0 479 0000048E 54002C0154100000 dw 84,300,4096+84,0 480 ; rectangle 8 481 00000496 F801220118000000 dw 504,290,24,0 482 0000049E 0F02220118100000 dw 527,290,4096+24,0 483 000004A6 F801390118000000 dw 504,313,24,0 484 000004AE F801220118100000 dw 504,290,4096+24,0 485 ; rectangle 9 486 000004B6 2801480048000000 dw 296,72,72,0 487 000004BE 6F01480018100000 dw 367,72,4096+24,0 488 000004C6 28015F0048000000 dw 296,95,72,0 489 000004CE 2801480018100000 dw 296,72,4096+24,0 490 ; rectangle 10 491 000004D6 5C01140130000000 dw 348,276,48,0 492 000004DE 8B01140124100000 dw 395,276,4096+36,0 493 000004E6 5C01370130000000 dw 348,311,48,0 494 000004EE 5C01140124100000 dw 348,276,4096+36,0 495 positions3: 496 ; rectangle 11 497 000004F6 D001480018000000 dw 464,72,24,0 498 000004FE E701480018100000 dw 487,72,4096+24,0 499 00000506 D0015F0018000000 dw 464,95,24,0 500 0000050E D001480018100000 dw 464,72,4096+24,0 501 ; rectangle 12 502 00000516 84006C0048000000 dw 132,108,72,0 503 0000051E CB006C0048100000 dw 203,108,4096+72,0 504 00000526 8400B30048000000 dw 132,179,72,0 505 0000052E 84006C0048100000 dw 132,108,4096+72,0 506 ; rectangle 13 507 00000536 0002780030000000 dw 512,120,48,0 508 0000053E 2F02780024100000 dw 559,120,4096+36,0 509 00000546 00029B0030000000 dw 512,155,48,0 510 0000054E 0002780024100000 dw 512,120,4096+36,0 511 ; rectangle 14 512 00000556 980108010C000000 dw 408,264,12,0 513 0000055E A301080118100000 dw 419,264,4096+24,0 514 00000566 98011F010C000000 dw 408,287,12,0 515 0000056E 9801080118100000 dw 408,264,4096+24,0 516 ; rectangle 15 517 00000576 A401460148000000 dw 420,326,72,0 518 0000057E EB0146013C100000 dw 491,326,4096+60,0 519 00000586 A401810148000000 dw 420,385,72,0 520 0000058E A40146013C100000 dw 420,326,4096+60,0 521 522 00000596 6000 maxdx: dw 96 523 00000598 6000 maxdy: dw 96 524 0000059A 3000 posdx: dw 48 525 0000059C 3000 posdy: dw 48 526 527 bss: 528 529 ABSOLUTE bss 530 531 0000059E ???? alignb 4 532 533 bss_start: 534 000005A0 ???????? color: resd 1 535 000005A4 ?? phase: resb 1 536 000005A5 ?? direction: resb 1 537 000005A6 ???? counter: resw 1 538 ;posdx: resw 1 539 ;posdy: resw 1 540 541 rectbuffer1: 542 000005A8 resd 40 543 rectbuffer2: 544 00000648 resd 40 545 rectbuffer3: 546 000006E8 resd 40 547 548 bss_end: