1 ; **************************************************************************** 2 ; sinus10.s - TRDOS 386 (TRDOS v2.0.3) Test Program - 'sysvideo' pixel tests 3 ; ---------------------------------------------------------------------------- 4 ; 5 ; 02/03/2021 6 ; 7 ; **************************************************************************** 8 ; nasm sinus10.s -l sinus10.txt -o SINUS10.PRG -Z error.txt 9 ; (modified from 'sinus8.s', 02/03/2021) 10 11 ; Draw sinus wave/curve by using 'sysvideo' bx=0305h 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[580A0000] mov edi, bss_start 92 00000005 B900100000 mov ecx, (bss_end - bss_start)/4 93 ;xor eax, eax 94 0000000A F3AB rep stosd 95 96 ; program message 97 0000000C BE[88010000] mov esi, program_msg 98 00000011 E8AC000000 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 ; Set Video Mode to 117h ; 1024x768, 16 bit high colors 106 sys _video, 08FFh, 117h 106 <1> 106 <1> 106 <1> 106 <1> 106 <1> %if %0 >= 2 106 0000001A BBFF080000 <1> mov ebx, %2 106 <1> %if %0 >= 3 106 0000001F B917010000 <1> mov ecx, %3 106 <1> %if %0 = 4 106 <1> mov edx, %4 106 <1> %endif 106 <1> %endif 106 <1> %endif 106 00000024 B81F000000 <1> mov eax, %1 106 <1> 106 00000029 CD40 <1> int 40h 107 0000002B 09C0 or eax, eax 108 ;jz short terminate 109 ;mov [LFB_ADDR], edx ; pointer to LFB info table/structure 110 0000002D 750E jnz short set_vesa_mode_117h_ok 111 112 terminate: 113 0000002F E84D010000 call set_text_mode 114 sys _exit 114 <1> 114 <1> 114 <1> 114 <1> 114 <1> %if %0 >= 2 114 <1> mov ebx, %2 114 <1> %if %0 >= 3 114 <1> mov ecx, %3 114 <1> %if %0 = 4 114 <1> mov edx, %4 114 <1> %endif 114 <1> %endif 114 <1> %endif 114 00000034 B801000000 <1> mov eax, %1 114 <1> 114 00000039 CD40 <1> int 40h 115 halt: 116 0000003B EBFE jmp short halt 117 118 set_vesa_mode_117h_ok: 119 0000003D 66C705[500A0000]00- mov word [color], 1111100000000000b ; initial pixel color 119 00000045 F8 120 _0: 121 00000046 E888000000 call drawsinewave 122 waitforkey: 123 ;mov ah, 1 124 ;int 32h 125 ;jz short getkey 126 ;inc word [counter] 127 ;nop 128 ;nop 129 ;nop 130 ;jmp short waitforkey 131 getkey: 132 0000004B 30E4 xor ah, ah 133 0000004D CD32 int 32h 134 135 0000004F 663D032E cmp ax, 2E03h 136 00000053 74DA je short terminate 137 00000055 3C1B cmp al, 1Bh ; ESC key 138 00000057 74D6 je short terminate 139 140 00000059 3C2B cmp al, '+' 141 0000005B 750A jne short _1 142 143 0000005D 668305[500A0000]20 add word [color], 20h 144 00000065 EBDF jmp short _0 145 _1: 146 00000067 3C2D cmp al, '-' 147 00000069 750A jne short _2 148 149 0000006B 66832D[500A0000]20 sub word [color], 20h 150 00000073 EBD1 jmp short _0 151 _2: 152 00000075 3C20 cmp al, 20h ; space 153 00000077 750B jne short _3 154 00000079 668105[500A0000]20- add word [color], 2020h 154 00000081 20 155 00000082 EBC2 jmp short _0 156 _3: 157 00000084 80FC4B cmp ah, 4Bh 158 00000087 7507 jne short _5 159 ; left arrow 160 _4: 161 00000089 E8E1000000 call beep 162 0000008E EBBB jmp waitforkey 163 _5: 164 00000090 80FC4D cmp ah, 4Dh 165 00000093 7502 jne short _6 166 167 ; right arrow 168 00000095 EBF2 jmp short _4 169 _6: 170 00000097 80FC50 cmp ah, 50h 171 0000009A 7502 jne short _7 172 ; down arrow 173 0000009C EBEB jmp short _4 174 _7: 175 0000009E 80FC48 cmp ah, 48h 176 000000A1 7502 jne short _8 177 ; up arrow 178 000000A3 EBE4 jmp short _4 179 _8: 180 000000A5 663D0D1C cmp ax, 1C0Dh 181 000000A9 7510 jne short _9 182 000000AB E8BF000000 call beep 183 000000B0 668105[500A0000]10- add word [color], 1010h 183 000000B8 10 184 000000B9 EB8B jmp short _0 185 _9: 186 000000BB E8AF000000 call beep 187 000000C0 EB89 jmp waitforkey 188 189 print_msg: 190 000000C2 B40E mov ah, 0Eh 191 000000C4 BB07000000 mov ebx, 7 192 ;mov bl, 7 ; char attribute & color 193 p_next_chr: 194 000000C9 AC lodsb 195 000000CA 08C0 or al, al 196 000000CC 7404 jz short p_retn ; retn 197 000000CE CD31 int 31h 198 000000D0 EBF7 jmp short p_next_chr 199 p_retn: 200 000000D2 C3 retn 201 202 drawsinewave: 203 ; INPUT: 204 ; sinustable 205 ; 206 ; Modified registers: esi, edi, eax, ecx, ebx, edx 207 208 ; fill _fx table by using sine wave table 209 ; x = 0 to 1023 210 ; y = +256 to -256 211 ; +256 --> 511 -> screen row position = (512-511)+127 = 128 212 ; -256 --> 0 -> screen row position = (512-0)+127 = 639 213 214 000000D3 BE[4E020000] mov esi, sinustable 215 000000D8 BF[580A0000] mov edi, _fx 216 000000DD 31C0 xor eax, eax 217 000000DF 29DB sub ebx, ebx ; 0 ; x 218 000000E1 31ED xor ebp, ebp ; pixel count 219 000000E3 66AD lodsw 220 000000E5 EB45 jmp short _dsw_5 221 _dsw_0: 222 000000E7 66AD lodsw ; ax = 512-y value 223 ; 224 000000E9 6639C8 cmp ax, cx ; [prevy] 225 000000EC 743E je short _dsw_5 226 000000EE 7218 jb short _dsw_3 227 _dsw_1: 228 000000F0 6641 inc cx ; previous 512-y 229 000000F2 6639C8 cmp ax, cx 230 000000F5 7635 jna short _dsw_5 231 ; ebx = x 232 ; eax = 512 - y 233 000000F7 E81A000000 call _dsw_4 234 000000FC EBF2 jmp short _dsw_1 235 _dsw_2: 236 000000FE 50 push eax 237 000000FF E858000000 call getpixeloffset 238 00000104 AB stosd 239 00000105 58 pop eax 240 00000106 45 inc ebp ; increase pixel count 241 00000107 C3 retn 242 _dsw_3: 243 00000108 6649 dec cx ; previous 512-y 244 0000010A 6639C8 cmp ax, cx 245 0000010D 731D jnb short _dsw_5 246 ; ebx = x 247 ; eax = 512 - y 248 0000010F E802000000 call _dsw_4 249 00000114 EBF2 jmp short _dsw_3 250 _dsw_4: 251 00000116 53 push ebx 252 00000117 8B1D[540A0000] mov ebx, [prevx] 253 0000011D 91 xchg eax, ecx ; [prevy] 254 0000011E E8DBFFFFFF call _dsw_2 255 00000123 91 xchg ecx, eax 256 00000124 5B pop ebx 257 00000125 FF05[540A0000] inc dword [prevx] 258 0000012B C3 retn 259 _dsw_5: 260 0000012C 891D[540A0000] mov [prevx], ebx ; previous x value 261 00000132 89C1 mov ecx, eax ; previous 512-y value 262 00000134 E8C5FFFFFF call _dsw_2 263 00000139 43 inc ebx 264 0000013A 81FB00040000 cmp ebx, 1024 265 00000140 72A5 jb short _dsw_0 266 267 00000142 BE[580A0000] mov esi, _fx 268 ;mov edx, ebp 269 ; 270 ; edx = pixel count 271 ; esi = user's single color pixel buffer address 272 sys _video, 0305h, [color], ebp 272 <1> 272 <1> 272 <1> 272 <1> 272 <1> %if %0 >= 2 272 00000147 BB05030000 <1> mov ebx, %2 272 <1> %if %0 >= 3 272 0000014C 8B0D[500A0000] <1> mov ecx, %3 272 <1> %if %0 = 4 272 00000152 89EA <1> mov edx, %4 272 <1> %endif 272 <1> %endif 272 <1> %endif 272 00000154 B81F000000 <1> mov eax, %1 272 <1> 272 00000159 CD40 <1> int 40h 273 274 0000015B C3 retn 275 276 getpixeloffset: 277 ; 162 bit high color pixel offset 278 ; ebx = x position 279 ; eax = 512 - y position 280 0000015C BA7F020000 mov edx, 512+127 ; 639 281 00000161 29C2 sub edx, eax ; convert row position from 512-y 282 ; row = (512-y)+127 283 00000163 B800080000 mov eax, 1024*2 ; screen width 284 00000168 F7E2 mul edx 285 0000016A 01D8 add eax, ebx 286 0000016C 01D8 add eax, ebx ; add x to y*1024 287 ; eax = pixel offset on display page 288 0000016E C3 retn 289 beep: 290 ; call beep function (16/64 second, 886Hz) 291 sys _audio, 16, 1331 291 <1> 291 <1> 291 <1> 291 <1> 291 <1> %if %0 >= 2 291 0000016F BB10000000 <1> mov ebx, %2 291 <1> %if %0 >= 3 291 00000174 B933050000 <1> mov ecx, %3 291 <1> %if %0 = 4 291 <1> mov edx, %4 291 <1> %endif 291 <1> %endif 291 <1> %endif 291 00000179 B820000000 <1> mov eax, %1 291 <1> 291 0000017E CD40 <1> int 40h 292 00000180 C3 retn 293 294 set_text_mode: 295 00000181 30E4 xor ah, ah 296 00000183 B003 mov al, 3 297 ;int 10h ; al = 03h text mode, int 10 video 298 00000185 CD31 int 31h ; TRDOS 386 - Video interrupt 299 00000187 C3 retn 300 301 program_msg: 302 00000188 5452444F5320333836- db "TRDOS 386 v2.0.3 - ('sysvideo') Test Program - Draw Sine Wave" 302 00000191 2076322E302E33202D- 302 0000019A 202827737973766964- 302 000001A3 656F27292054657374- 302 000001AC 2050726F6772616D20- 302 000001B5 2D2044726177205369- 302 000001BE 6E652057617665 303 000001C5 0D0A db 0Dh, 0Ah 304 000001C7 6279204572646F6761- db "by Erdogan Tan - 02/03/2021" 304 000001D0 6E2054616E202D2030- 304 000001D9 322F30332F32303231 305 ;db 0Dh, 0Ah, 0 306 000001E2 0D0A0D0A db 0Dh, 0Ah, 0Dh, 0Ah 307 308 000001E6 557365205350414345- db "Use SPACE,ENTER,'+','-' keys to change COLOR .." 308 000001EF 2C454E5445522C272B- 308 000001F8 272C272D27206B6579- 308 00000201 7320746F206368616E- 308 0000020A 676520434F4C4F5220- 308 00000213 2E2E 309 00000215 0D0A db 0Dh, 0Ah 310 00000217 507265737320455343- db "Press ESC to exit .." 310 00000220 20746F206578697420- 310 00000229 2E2E 311 0000022B 0D0A db 0Dh, 0Ah 312 0000022D 0D0A db 0Dh, 0Ah 313 0000022F 507265737320616E79- db "Press any key to continue .." 313 00000238 206B657920746F2063- 313 00000241 6F6E74696E7565202E- 313 0000024A 2E 314 nextline: 315 0000024B 0D0A00 db 0Dh, 0Ah, 0 316 317 sinustable: ; sine wave table (x=0 to 1023, y= +256 to -256) 318 ; 19/02/2021 319 ; https://daycounter.com/Calculators/Sine-Generator-Calculator2.phtml 320 ; 1024x512 (x= 0 to 1023, y = 0 to 511) 321 0000024E 000101010301040106- dw 256,257,259,260,262,263,265,266,268,270,271,273,274,276,277,279,281,282,284,285,287,288,290,291,293,295,296,298,299,301,302,304 321 00000257 01070109010A010C01- 321 00000260 0E010F011101120114- 321 00000269 011501170119011A01- 321 00000272 1C011D011F01200122- 321 0000027B 012301250127012801- 321 00000284 2A012B012D012E0130- 321 0000028D 01 322 0000028E 310133013401360137- dw 305,307,308,310,311,313,315,316,318,319,321,322,324,325,327,328,330,331,333,334,336,337,339,340,342,343,345,346,347,349,350,352 322 00000297 0139013B013C013E01- 322 000002A0 3F0141014201440145- 322 000002A9 01470148014A014B01- 322 000002B2 4D014E015001510153- 322 000002BB 015401560157015901- 322 000002C4 5A015B015D015E0160- 322 000002CD 01 323 000002CE 610163016401660167- dw 353,355,356,358,359,360,362,363,365,366,368,369,370,372,373,375,376,377,379,380,381,383,384,386,387,388,390,391,392,394,395,396 323 000002D7 0168016A016B016D01- 323 000002E0 6E0170017101720174- 323 000002E9 017501770178017901- 323 000002F2 7B017C017D017F0180- 323 000002FB 018201830184018601- 323 00000304 870188018A018B018C- 323 0000030D 01 324 0000030E 8D018F019001910193- dw 397,399,400,401,403,404,405,406,408,409,410,411,413,414,415,416,418,419,420,421,422,424,425,426,427,428,429,431,432,433,434,435 324 00000317 019401950196019801- 324 00000320 99019A019B019D019E- 324 00000329 019F01A001A201A301- 324 00000332 A401A501A601A801A9- 324 0000033B 01AA01AB01AC01AD01- 324 00000344 AF01B001B101B201B3- 324 0000034D 01 325 0000034E B401B501B601B701B9- dw 436,437,438,439,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,463,464,465,466,467 325 00000357 01BA01BB01BC01BD01- 325 00000360 BE01BF01C001C101C2- 325 00000369 01C301C401C501C601- 325 00000372 C701C801C901CA01CB- 325 0000037B 01CC01CD01CE01CF01- 325 00000384 CF01D001D101D201D3- 325 0000038D 01 326 0000038E D401D501D601D701D7- dw 468,469,470,471,471,472,473,474,475,475,476,477,478,479,479,480,481,482,482,483,484,484,485,486,486,487,488,488,489,490,490,491 326 00000397 01D801D901DA01DB01- 326 000003A0 DB01DC01DD01DE01DF- 326 000003A9 01DF01E001E101E201- 326 000003B2 E201E301E401E401E5- 326 000003BB 01E601E601E701E801- 326 000003C4 E801E901EA01EA01EB- 326 000003CD 01 327 000003CE EC01EC01ED01ED01EE- dw 492,492,493,493,494,494,495,496,496,497,497,498,498,499,499,500,500,500,501,501,502,502,503,503,503,504,504,504,505,505,505,506 327 000003D7 01EE01EF01F001F001- 327 000003E0 F101F101F201F201F3- 327 000003E9 01F301F401F401F401- 327 000003F2 F501F501F601F601F7- 327 000003FB 01F701F701F801F801- 327 00000404 F801F901F901F901FA- 327 0000040D 01 328 0000040E FA01FA01FB01FB01FB- dw 506,506,507,507,507,508,508,508,508,508,509,509,509,509,509,510,510,510,510,510,510,510,511,511,511,511,511,511,511,511,511,511 328 00000417 01FC01FC01FC01FC01- 328 00000420 FC01FD01FD01FD01FD- 328 00000429 01FD01FE01FE01FE01- 328 00000432 FE01FE01FE01FE01FF- 328 0000043B 01FF01FF01FF01FF01- 328 00000444 FF01FF01FF01FF01FF- 328 0000044D 01 329 0000044E FF01FF01FF01FF01FF- dw 511,511,511,511,511,511,511,511,511,511,511,510,510,510,510,510,510,510,509,509,509,509,509,508,508,508,508,508,507,507,507,506 329 00000457 01FF01FF01FF01FF01- 329 00000460 FF01FF01FE01FE01FE- 329 00000469 01FE01FE01FE01FE01- 329 00000472 FD01FD01FD01FD01FD- 329 0000047B 01FC01FC01FC01FC01- 329 00000484 FC01FB01FB01FB01FA- 329 0000048D 01 330 0000048E FA01FA01F901F901F9- dw 506,506,505,505,505,504,504,504,503,503,503,502,502,501,501,500,500,500,499,499,498,498,497,497,496,496,495,494,494,493,493,492 330 00000497 01F801F801F801F701- 330 000004A0 F701F701F601F601F5- 330 000004A9 01F501F401F401F401- 330 000004B2 F301F301F201F201F1- 330 000004BB 01F101F001F001EF01- 330 000004C4 EE01EE01ED01ED01EC- 330 000004CD 01 331 000004CE EC01EB01EA01EA01E9- dw 492,491,490,490,489,488,488,487,486,486,485,484,484,483,482,482,481,480,479,479,478,477,476,475,475,474,473,472,471,471,470,469 331 000004D7 01E801E801E701E601- 331 000004E0 E601E501E401E401E3- 331 000004E9 01E201E201E101E001- 331 000004F2 DF01DF01DE01DD01DC- 331 000004FB 01DB01DB01DA01D901- 331 00000504 D801D701D701D601D5- 331 0000050D 01 332 0000050E D401D301D201D101D0- dw 468,467,466,465,464,463,463,462,461,460,459,458,457,456,455,454,453,452,451,450,449,448,447,446,445,444,443,442,441,439,438,437 332 00000517 01CF01CF01CE01CD01- 332 00000520 CC01CB01CA01C901C8- 332 00000529 01C701C601C501C401- 332 00000532 C301C201C101C001BF- 332 0000053B 01BE01BD01BC01BB01- 332 00000544 BA01B901B701B601B5- 332 0000054D 01 333 0000054E B401B301B201B101B0- dw 436,435,434,433,432,431,429,428,427,426,425,424,422,421,420,419,418,416,415,414,413,411,410,409,408,406,405,404,403,401,400,399 333 00000557 01AF01AD01AC01AB01- 333 00000560 AA01A901A801A601A5- 333 00000569 01A401A301A201A001- 333 00000572 9F019E019D019B019A- 333 0000057B 019901980196019501- 333 00000584 94019301910190018F- 333 0000058D 01 334 0000058E 8D018C018B018A0188- dw 397,396,395,394,392,391,390,388,387,386,384,383,381,380,379,377,376,375,373,372,370,369,368,366,365,363,362,360,359,358,356,355 334 00000597 018701860184018301- 334 000005A0 820180017F017D017C- 334 000005A9 017B01790178017701- 334 000005B2 750174017201710170- 334 000005BB 016E016D016B016A01- 334 000005C4 680167016601640163- 334 000005CD 01 335 000005CE 610160015E015D015B- dw 353,352,350,349,347,346,345,343,342,340,339,337,336,334,333,331,330,328,327,325,324,322,321,319,318,316,315,313,311,310,308,307 335 000005D7 015A01590157015601- 335 000005E0 54015301510150014E- 335 000005E9 014D014B014A014801- 335 000005F2 470145014401420141- 335 000005FB 013F013E013C013B01- 335 00000604 390137013601340133- 335 0000060D 01 336 0000060E 310130012E012D012B- dw 305,304,302,301,299,298,296,295,293,291,290,288,287,285,284,282,281,279,277,276,274,273,271,270,268,266,265,263,262,260,259,257 336 00000617 012A01280127012501- 336 00000620 2301220120011F011D- 336 00000629 011C011A0119011701- 336 00000632 15011401120111010F- 336 0000063B 010E010C010A010901- 336 00000644 070106010401030101- 336 0000064D 01 337 0000064E 0001FE00FC00FB00F9- dw 256,254,252,251,249,248,246,245,243,241,240,238,237,235,234,232,230,229,227,226,224,223,221,220,218,216,215,213,212,210,209,207 337 00000657 00F800F600F500F300- 337 00000660 F100F000EE00ED00EB- 337 00000669 00EA00E800E600E500- 337 00000672 E300E200E000DF00DD- 337 0000067B 00DC00DA00D800D700- 337 00000684 D500D400D200D100CF- 337 0000068D 00 338 0000068E CE00CC00CB00C900C8- dw 206,204,203,201,200,198,196,195,193,192,190,189,187,186,184,183,181,180,178,177,175,174,172,171,169,168,166,165,164,162,161,159 338 00000697 00C600C400C300C100- 338 000006A0 C000BE00BD00BB00BA- 338 000006A9 00B800B700B500B400- 338 000006B2 B200B100AF00AE00AC- 338 000006BB 00AB00A900A800A600- 338 000006C4 A500A400A200A1009F- 338 000006CD 00 339 000006CE 9E009C009B00990098- dw 158,156,155,153,152,151,149,148,146,145,143,142,141,139,138,136,135,134,132,131,130,128,127,125,124,123,121,120,119,117,116,115 339 000006D7 009700950094009200- 339 000006E0 91008F008E008D008B- 339 000006E9 008A00880087008600- 339 000006F2 84008300820080007F- 339 000006FB 007D007C007B007900- 339 00000704 780077007500740073- 339 0000070D 00 340 0000070E 720070006F006E006C- dw 114,112,111,110,108,107,106,105,103,102,101,100,98,97,96,95,93,92,91,90,89,87,86,85,84,83,82,80,79,78,77,76 340 00000717 006B006A0069006700- 340 00000720 660065006400620061- 340 00000729 0060005F005D005C00- 340 00000732 5B005A005900570056- 340 0000073B 005500540053005200- 340 00000744 50004F004E004D004C- 340 0000074D 00 341 0000074E 4B004A004900480046- dw 75,74,73,72,70,69,68,67,66,65,64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,48,47,46,45,44 341 00000757 004500440043004200- 341 00000760 410040003F003E003D- 341 00000769 003C003B003A003900- 341 00000772 380037003600350034- 341 0000077B 003300320031003000- 341 00000784 30002F002E002D002C- 341 0000078D 00 342 0000078E 2B002A002900280028- dw 43,42,41,40,40,39,38,37,36,36,35,34,33,32,32,31,30,29,29,28,27,27,26,25,25,24,23,23,22,21,21,20 342 00000797 002700260025002400- 342 000007A0 240023002200210020- 342 000007A9 0020001F001E001D00- 342 000007B2 1D001C001B001B001A- 342 000007BB 001900190018001700- 342 000007C4 170016001500150014- 342 000007CD 00 343 000007CE 130013001200120011- dw 19,19,18,18,17,17,16,15,15,14,14,13,13,12,12,11,11,11,10,10,9,9,8,8,8,7,7,7,6,6,6,5 343 000007D7 00110010000F000F00- 343 000007E0 0E000E000D000D000C- 343 000007E9 000C000B000B000B00- 343 000007F2 0A000A000900090008- 343 000007FB 000800080007000700- 343 00000804 070006000600060005- 343 0000080D 00 344 0000080E 050005000400040004- dw 5,5,4,4,4,3,3,3,3,3,2,2,2,2,2,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0 344 00000817 000300030003000300- 344 00000820 030002000200020002- 344 00000829 000200010001000100- 344 00000832 010001000100010000- 344 0000083B 000000000000000000- 344 00000844 000000000000000000- 344 0000084D 00 345 0000084E 000000000000000000- dw 0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,5 345 00000857 000000000000000000- 345 00000860 000000000100010001- 345 00000869 000100010001000100- 345 00000872 020002000200020002- 345 0000087B 000300030003000300- 345 00000884 030004000400040005- 345 0000088D 00 346 0000088E 050005000600060006- dw 5,5,6,6,6,7,7,7,8,8,8,9,9,10,10,11,11,11,12,12,13,13,14,14,15,15,16,17,17,18,18,19 346 00000897 000700070007000800- 346 000008A0 08000800090009000A- 346 000008A9 000A000B000B000B00- 346 000008B2 0C000C000D000D000E- 346 000008BB 000E000F000F001000- 346 000008C4 110011001200120013- 346 000008CD 00 347 000008CE 130014001500150016- dw 19,20,21,21,22,23,23,24,25,25,26,27,27,28,29,29,30,31,32,32,33,34,35,36,36,37,38,39,40,40,41,42 347 000008D7 001700170018001900- 347 000008E0 19001A001B001B001C- 347 000008E9 001D001D001E001F00- 347 000008F2 200020002100220023- 347 000008FB 002400240025002600- 347 00000904 27002800280029002A- 347 0000090D 00 348 0000090E 2B002C002D002E002F- dw 43,44,45,46,47,48,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,72,73,74 348 00000917 003000300031003200- 348 00000920 330034003500360037- 348 00000929 00380039003A003B00- 348 00000932 3C003D003E003F0040- 348 0000093B 004100420043004400- 348 00000944 45004600480049004A- 348 0000094D 00 349 0000094E 4B004C004D004E004F- dw 75,76,77,78,79,80,82,83,84,85,86,87,89,90,91,92,93,95,96,97,98,100,101,102,103,105,106,107,108,110,111,112 349 00000957 005000520053005400- 349 00000960 55005600570059005A- 349 00000969 005B005C005D005F00- 349 00000972 600061006200640065- 349 0000097B 006600670069006A00- 349 00000984 6B006C006E006F0070- 349 0000098D 00 350 0000098E 720073007400750077- dw 114,115,116,117,119,120,121,123,124,125,127,128,130,131,132,134,135,136,138,139,141,142,143,145,146,148,149,151,152,153,155,156 350 00000997 00780079007B007C00- 350 000009A0 7D007F008000820083- 350 000009A9 008400860087008800- 350 000009B2 8A008B008D008E008F- 350 000009BB 009100920094009500- 350 000009C4 9700980099009B009C- 350 000009CD 00 351 000009CE 9E009F00A100A200A4- dw 158,159,161,162,164,165,166,168,169,171,172,174,175,177,178,180,181,183,184,186,187,189,190,192,193,195,196,198,200,201,203,204 351 000009D7 00A500A600A800A900- 351 000009E0 AB00AC00AE00AF00B1- 351 000009E9 00B200B400B500B700- 351 000009F2 B800BA00BB00BD00BE- 351 000009FB 00C000C100C300C400- 351 00000A04 C600C800C900CB00CC- 351 00000A0D 00 352 00000A0E CE00CF00D100D200D4- dw 206,207,209,210,212,213,215,216,218,220,221,223,224,226,227,229,230,232,234,235,237,238,240,241,243,245,246,248,249,251,252,254 352 00000A17 00D500D700D800DA00- 352 00000A20 DC00DD00DF00E000E2- 352 00000A29 00E300E500E600E800- 352 00000A32 EA00EB00ED00EE00F0- 352 00000A3B 00F100F300F500F600- 352 00000A44 F800F900FB00FC00FE- 352 00000A4D 00 353 354 bss: 355 356 ABSOLUTE bss 357 358 00000A4E alignb 4 359 360 00000A50 color: resd 1 361 00000A54 prevx: resd 1 362 ;prevy: resd 1 363 364 bss_start: 365 00000A58 _fx: resd 1024 ; for every X values from 0 to 1023 366 00001A58 resd 4096-1024 ; used for repetitive x values for continuity 367 bss_end: