1 ; **************************************************************************** 2 ; sinus13.s - TRDOS 386 (TRDOS v2.0.3) Test Program - 'sysvideo' pixel tests 3 ; ---------------------------------------------------------------------------- 4 ; 5 ; 07/03/2021 6 ; 7 ; **************************************************************************** 8 ; nasm sinus13.s -l sinus13.txt -o SINUS13.PRG -Z error.txt 9 ; (modified from 'sinus12.s', 07/03/2021) 10 11 ; Draw sinus wave/curve by using 'sysvideo' bx=0305h 12 ; (640*480, 32 bit true color version) 13 14 ; 14/07/2020 15 ; 31/12/2017 16 ; TRDOS 386 (v2.0) system calls 17 _ver equ 0 18 _exit equ 1 19 _fork equ 2 20 _read equ 3 21 _write equ 4 22 _open equ 5 23 _close equ 6 24 _wait equ 7 25 _create equ 8 26 _rename equ 9 27 _delete equ 10 28 _exec equ 11 29 _chdir equ 12 30 _time equ 13 31 _mkdir equ 14 32 _chmod equ 15 33 _rmdir equ 16 34 _break equ 17 35 _drive equ 18 36 _seek equ 19 37 _tell equ 20 38 _memory equ 21 39 _prompt equ 22 40 _path equ 23 41 _env equ 24 42 _stime equ 25 43 _quit equ 26 44 _intr equ 27 45 _dir equ 28 46 _emt equ 29 47 _ldrvt equ 30 48 _video equ 31 49 _audio equ 32 50 _timer equ 33 51 _sleep equ 34 52 _msg equ 35 53 _geterr equ 36 54 _fpstat equ 37 55 _pri equ 38 56 _rele equ 39 57 _fff equ 40 58 _fnf equ 41 59 _alloc equ 42 60 _dalloc equ 43 61 _calbac equ 44 62 _dma equ 45 63 64 %macro sys 1-4 65 ; 29/04/2016 - TRDOS 386 (TRDOS v2.0) 66 ; 03/09/2015 67 ; 13/04/2015 68 ; Retro UNIX 386 v1 system call. 69 %if %0 >= 2 70 mov ebx, %2 71 %if %0 >= 3 72 mov ecx, %3 73 %if %0 = 4 74 mov edx, %4 75 %endif 76 %endif 77 %endif 78 mov eax, %1 79 ;int 30h 80 int 40h ; TRDOS 386 (TRDOS v2.0) 81 %endmacro 82 83 ; Retro UNIX 386 v1 system call format: 84 ; sys systemcall (eax) , , 85 86 [BITS 32] ; We need 32-bit intructions for protected mode 87 88 [ORG 0] 89 90 START_CODE: 91 ; clear bss 92 00000000 BF[20070000] mov edi, bss_start 93 00000005 B900080000 mov ecx, (bss_end - bss_start)/4 94 ;xor eax, eax 95 0000000A F3AB rep stosd 96 97 ; program message 98 0000000C BE[51010000] mov esi, program_msg 99 00000011 E8BF000000 call print_msg 100 101 00000016 30E4 xor ah, ah 102 ;int 16h ; KEYBOARD - READ CHAR FROM BUFFER, WAIT IF EMPTY 103 ; Return: AH = scan code, AL = character 104 00000018 CD32 int 32h ; TRDOS 386 Keyboard interrupt 105 106 ; Get VESA VBE video bios number 107 ; (vbe2 or vbe3, emulator or not) 108 ;mov ebx, 0906h 109 ;sys _video 110 111 ; get [truecolor] status (24bpp or 32bpp for VBE3 vbios) 112 0000001A BB09090000 mov ebx, 0909h 113 sys _video 65 <1> 66 <1> 67 <1> 68 <1> 69 <1> %if %0 >= 2 70 <1> mov ebx, %2 71 <1> %if %0 >= 3 72 <1> mov ecx, %3 73 <1> %if %0 = 4 74 <1> mov edx, %4 75 <1> %endif 76 <1> %endif 77 <1> %endif 78 0000001F B81F000000 <1> mov eax, %1 79 <1> 80 00000024 CD40 <1> int 40h 114 115 00000026 B912010000 mov ecx, 112h ; VESA VBE video mode (640x480, 24bpp) 116 117 ;cmp ah, 3 118 ;je short set_vmode 119 ;cmp ah, 2 120 ;;jne terminate ; invalid !? 121 ;jne short set_vmode 122 ;and al, al 123 ;jz short set_vmode ; invalid !? (AL must be >= C0h.) 124 125 0000002B 3C20 cmp al, 32 126 0000002D 7402 je short set_vmode 127 128 ; VBE2 bios or default truecolor bpp is 24 bpp 129 ; so, we are using video mode 142h 130 ; (TRDOS 386 running in emulator or very old hardware!) 131 132 ; BOCHS/QEMU/VBOX emulator 133 0000002F B142 mov cl, 42h ; Bochs/Plex86 video mode 142h 134 ; (640*480, 32bpp) 135 136 ; Set Video Mode to 112h ; 640x480, 32 bit true colors 137 ; 138 ; NOTE: NVIDIA GEFORCE FX 5500 VIDEO BIOS uses 32bpp 139 ; instead of 24bpp for same VBE video mode numbers. 140 ; So, 112h is 640*480, 24bpp for BOCHS/QEMU emulator 141 ; but, it is 640*480, 32 bpp for real computer 142 ; with NVIDIA graphics card and video bios. 143 ; (Also it is -it must be- 32bpp for other new hardware.) 144 145 ;sys _video, 08FFh, 112h 146 set_vmode: 147 ; ecx = VESA VBE video mode 148 sys _video, 08FFh 65 <1> 66 <1> 67 <1> 68 <1> 69 <1> %if %0 >= 2 70 00000031 BBFF080000 <1> mov ebx, %2 71 <1> %if %0 >= 3 72 <1> mov ecx, %3 73 <1> %if %0 = 4 74 <1> mov edx, %4 75 <1> %endif 76 <1> %endif 77 <1> %endif 78 00000036 B81F000000 <1> mov eax, %1 79 <1> 80 0000003B CD40 <1> int 40h 149 0000003D 09C0 or eax, eax 150 ;jz short terminate 151 ;mov [LFB_ADDR], edx ; pointer to LFB info table/structure 152 0000003F 750E jnz short set_vesa_mode_112h_ok 153 154 terminate: 155 00000041 E804010000 call set_text_mode 156 sys _exit 65 <1> 66 <1> 67 <1> 68 <1> 69 <1> %if %0 >= 2 70 <1> mov ebx, %2 71 <1> %if %0 >= 3 72 <1> mov ecx, %3 73 <1> %if %0 = 4 74 <1> mov edx, %4 75 <1> %endif 76 <1> %endif 77 <1> %endif 78 00000046 B801000000 <1> mov eax, %1 79 <1> 80 0000004B CD40 <1> int 40h 157 halt: 158 0000004D EBFE jmp short halt 159 160 set_vesa_mode_112h_ok: 161 0000004F C705[18070000]0000- mov dword [color], 0FF0000h ; initial pixel color 161 00000057 FF00 162 _0: 163 00000059 E888000000 call drawsinewave 164 waitforkey: 165 ;mov ah, 1 166 ;int 32h 167 ;jz short getkey 168 ;inc word [counter] 169 ;nop 170 ;nop 171 ;nop 172 ;jmp short waitforkey 173 getkey: 174 0000005E 30E4 xor ah, ah 175 00000060 CD32 int 32h 176 177 00000062 663D032E cmp ax, 2E03h 178 00000066 74D9 je short terminate 179 00000068 3C1B cmp al, 1Bh ; ESC key 180 0000006A 74D5 je short terminate 181 182 0000006C 3C2B cmp al, '+' 183 0000006E 7509 jne short _1 184 185 00000070 8305[18070000]20 add dword [color], 20h 186 00000077 EBE0 jmp short _0 187 _1: 188 00000079 3C2D cmp al, '-' 189 0000007B 7509 jne short _2 190 191 0000007D 832D[18070000]20 sub dword [color], 20h 192 00000084 EBD3 jmp short _0 193 _2: 194 00000086 3C20 cmp al, 20h ; space 195 00000088 750C jne short _3 196 0000008A 8105[18070000]2020- add dword [color], 2020h 196 00000092 0000 197 00000094 EBC3 jmp short _0 198 _3: 199 00000096 80FC4B cmp ah, 4Bh 200 00000099 7507 jne short _5 201 ; left arrow 202 _4: 203 0000009B E898000000 call beep 204 000000A0 EBBC jmp waitforkey 205 _5: 206 000000A2 80FC4D cmp ah, 4Dh 207 000000A5 7502 jne short _6 208 209 ; right arrow 210 000000A7 EBF2 jmp short _4 211 _6: 212 000000A9 80FC50 cmp ah, 50h 213 000000AC 7502 jne short _7 214 ; down arrow 215 000000AE EBEB jmp short _4 216 _7: 217 000000B0 80FC48 cmp ah, 48h 218 000000B3 7502 jne short _8 219 ; up arrow 220 000000B5 EBE4 jmp short _4 221 _8: 222 000000B7 663D0D1C cmp ax, 1C0Dh 223 000000BB 7511 jne short _9 224 000000BD E876000000 call beep 225 000000C2 8105[18070000]1010- add dword [color], 1010h 225 000000CA 0000 226 000000CC EB8B jmp short _0 227 _9: 228 000000CE E865000000 call beep 229 000000D3 EB89 jmp waitforkey 230 231 print_msg: 232 000000D5 B40E mov ah, 0Eh 233 000000D7 BB07000000 mov ebx, 7 234 ;mov bl, 7 ; char attribute & color 235 p_next_chr: 236 000000DC AC lodsb 237 000000DD 08C0 or al, al 238 000000DF 7404 jz short p_retn ; retn 239 000000E1 CD31 int 31h 240 000000E3 EBF7 jmp short p_next_chr 241 p_retn: 242 000000E5 C3 retn 243 244 drawsinewave: 245 ; INPUT: 246 ; sinustable 247 ; 248 ; Modified registers: esi, edi, eax, ecx, ebx, edx 249 250 ; fill _fx table by using sine wave table 251 ; x = 0 to 639 252 ; y = +200 to -200 253 ; +200 --> 399 -> screen row position = (400-399)+39 = 40 254 ; -200 --> 0 -> screen row position = (400-0)+39 = 439 255 256 000000E6 BE[17020000] mov esi, sinustable 257 000000EB BF[20070000] mov edi, _fx 258 ;xor eax, eax 259 000000F0 29DB sub ebx, ebx ; 0 ; x 260 000000F2 31ED xor ebp, ebp ; pixel count 261 262 ;xor eax, eax 263 ;lodsw ; ax = 400-y value 264 265 ; ;;;; start of curve continuity code 266 ; 267 ; lodsw 268 ; jmp short _dsw_5 269 _dsw_0: 270 000000F4 31C0 xor eax, eax 271 000000F6 66AD lodsw ; ax = 400-y value ; *** 272 ; ; 273 ; cmp ax, cx ; [prevy] 274 ; je short _dsw_5 275 ; jb short _dsw_3 276 ;_dsw_1: 277 ; inc cx ; previous 400-y 278 ; cmp ax, cx 279 ; jna short _dsw_5 280 ; ; ebx = x 281 ; ; eax = 400 - y 282 ; call _dsw_4 283 ; jmp short _dsw_1 284 ;_dsw_2: 285 ; push eax 286 ; call getpixeloffset 287 ; stosd 288 ; pop eax 289 ; inc ebp ; increase pixel count 290 ; retn 291 ;_dsw_3: 292 ; dec cx ; previous 400-y 293 ; cmp ax, cx 294 ; jnb short _dsw_5 295 ; ; ebx = x 296 ; ; eax = 400 - y 297 ; call _dsw_4 298 ; jmp short _dsw_3 299 ;_dsw_4: 300 ; push ebx 301 ; mov ebx, [prevx] 302 ; xchg eax, ecx ; [prevy] 303 ; call _dsw_2 304 ; xchg ecx, eax 305 ; pop ebx 306 ; inc dword [prevx] 307 ; retn 308 ;_dsw_5: 309 ; mov [prevx], ebx ; previous x value 310 ; mov ecx, eax ; previous 400-y value 311 ; call _dsw_2 312 ; 313 ; ;;;; end of curve continuity code 314 315 000000F8 E825000000 call getpixeloffset 316 000000FD AB stosd 317 000000FE 45 inc ebp ; increase pixel count 318 319 000000FF 43 inc ebx 320 00000100 81FB80020000 cmp ebx, 640 321 00000106 72EC jb short _dsw_0 322 323 00000108 BE[20070000] mov esi, _fx 324 ;mov edx, ebp 325 ; 326 ; edx = pixel count 327 ; esi = user's single color pixel buffer address 328 sys _video, 0305h, [color], ebp 65 <1> 66 <1> 67 <1> 68 <1> 69 <1> %if %0 >= 2 70 0000010D BB05030000 <1> mov ebx, %2 71 <1> %if %0 >= 3 72 00000112 8B0D[18070000] <1> mov ecx, %3 73 <1> %if %0 = 4 74 00000118 89EA <1> mov edx, %4 75 <1> %endif 76 <1> %endif 77 <1> %endif 78 0000011A B81F000000 <1> mov eax, %1 79 <1> 80 0000011F CD40 <1> int 40h 329 330 00000121 C3 retn 331 332 getpixeloffset: 333 ; ebx = x position 334 ; eax = 400 - y position 335 00000122 BAB7010000 mov edx, 439 336 00000127 29C2 sub edx, eax ; convert row position from 400-y 337 ; row = (400-y)+39 338 00000129 B8000A0000 mov eax, 640*4 ; screen width 339 0000012E F7E2 mul edx 340 00000130 53 push ebx 341 00000131 C1E302 shl ebx, 2 342 00000134 01D8 add eax, ebx ; add x to y*640 343 00000136 5B pop ebx 344 ; eax = pixel offset on display page 345 00000137 C3 retn 346 beep: 347 ; call beep function (16/64 second, 886Hz) 348 sys _audio, 16, 1331 65 <1> 66 <1> 67 <1> 68 <1> 69 <1> %if %0 >= 2 70 00000138 BB10000000 <1> mov ebx, %2 71 <1> %if %0 >= 3 72 0000013D B933050000 <1> mov ecx, %3 73 <1> %if %0 = 4 74 <1> mov edx, %4 75 <1> %endif 76 <1> %endif 77 <1> %endif 78 00000142 B820000000 <1> mov eax, %1 79 <1> 80 00000147 CD40 <1> int 40h 349 00000149 C3 retn 350 351 set_text_mode: 352 0000014A 30E4 xor ah, ah 353 0000014C B003 mov al, 3 354 ;int 10h ; al = 03h text mode, int 10 video 355 0000014E CD31 int 31h ; TRDOS 386 - Video interrupt 356 00000150 C3 retn 357 358 program_msg: 359 00000151 5452444F5320333836- db "TRDOS 386 v2.0.3 - ('sysvideo') Test Program - Draw Sine Wave" 359 0000015A 2076322E302E33202D- 359 00000163 202827737973766964- 359 0000016C 656F27292054657374- 359 00000175 2050726F6772616D20- 359 0000017E 2D2044726177205369- 359 00000187 6E652057617665 360 0000018E 0D0A db 0Dh, 0Ah 361 00000190 6279204572646F6761- db "by Erdogan Tan - 07/03/2021" 361 00000199 6E2054616E202D2030- 361 000001A2 372F30332F32303231 362 ;db 0Dh, 0Ah, 0 363 000001AB 0D0A0D0A db 0Dh, 0Ah, 0Dh, 0Ah 364 365 000001AF 557365205350414345- db "Use SPACE,ENTER,'+','-' keys to change COLOR .." 365 000001B8 2C454E5445522C272B- 365 000001C1 272C272D27206B6579- 365 000001CA 7320746F206368616E- 365 000001D3 676520434F4C4F5220- 365 000001DC 2E2E 366 000001DE 0D0A db 0Dh, 0Ah 367 000001E0 507265737320455343- db "Press ESC to exit .." 367 000001E9 20746F206578697420- 367 000001F2 2E2E 368 000001F4 0D0A db 0Dh, 0Ah 369 000001F6 0D0A db 0Dh, 0Ah 370 000001F8 507265737320616E79- db "Press any key to continue .." 370 00000201 206B657920746F2063- 370 0000020A 6F6E74696E7565202E- 370 00000213 2E 371 nextline: 372 00000214 0D0A00 db 0Dh, 0Ah, 0 373 374 sinustable: ; sine wave table (x=0 to 639, y= +200 to -200) 375 ; 19/02/2021 376 ; https://daycounter.com/Calculators/Sine-Generator-Calculator2.phtml 377 ; 640x400 (x= 0 to 639, y = 0 to 399) 378 00000217 C800C900CB00CD00CF- dw 200,201,203,205,207,209,211,213,215,217,219,221,223,225,227,229 378 00000220 00D100D300D500D700- 378 00000229 D900DB00DD00DF00E1- 378 00000232 00E300E500 379 00000237 E700E900EB00EC00EE- dw 231,233,235,236,238,240,242,244,246,248,250,252,254,256,257,259 379 00000240 00F000F200F400F600- 379 00000249 F800FA00FC00FE0000- 379 00000252 0101010301 380 00000257 0501070109010B010D- dw 261,263,265,267,269,270,272,274,276,278,279,281,283,285,287,288 380 00000260 010E01100112011401- 380 00000269 1601170119011B011D- 380 00000272 011F012001 381 00000277 220124012601270129- dw 290,292,294,295,297,299,300,302,304,305,307,309,310,312,314,315 381 00000280 012B012C012E013001- 381 00000289 310133013501360138- 381 00000292 013A013B01 382 00000297 3D013E014001410143- dw 317,318,320,321,323,325,326,328,329,331,332,333,335,336,338,339 382 000002A0 014501460148014901- 382 000002A9 4B014C014D014F0150- 382 000002B2 0152015301 383 000002B7 55015601570159015A- dw 341,342,343,345,346,347,349,350,351,352,354,355,356,357,359,360 383 000002C0 015B015D015E015F01- 383 000002C9 600162016301640165- 383 000002D2 0167016801 384 000002D7 69016A016B016C016D- dw 361,362,363,364,365,366,368,369,370,371,372,373,374,375,375,376 384 000002E0 016E01700171017201- 384 000002E9 730174017501760177- 384 000002F2 0177017801 385 000002F7 79017A017B017C017D- dw 377,378,379,380,381,381,382,383,384,385,385,386,387,387,388,389 385 00000300 017D017E017F018001- 385 00000309 810181018201830183- 385 00000312 0184018501 386 00000317 850186018601870188- dw 389,390,390,391,392,392,393,393,393,394,394,395,395,396,396,396 386 00000320 018801890189018901- 386 00000329 8A018A018B018B018C- 386 00000332 018C018C01 387 00000337 8D018D018D018D018E- dw 397,397,397,397,398,398,398,398,398,399,399,399,399,399,399,399 387 00000340 018E018E018E018E01- 387 00000349 8F018F018F018F018F- 387 00000352 018F018F01 388 00000357 8F018F018F018F018F- dw 399,399,399,399,399,399,399,399,398,398,398,398,398,397,397,397 388 00000360 018F018F018F018E01- 388 00000369 8E018E018E018E018D- 388 00000372 018D018D01 389 00000377 8D018C018C018C018B- dw 397,396,396,396,395,395,394,394,393,393,393,392,392,391,390,390 389 00000380 018B018A018A018901- 389 00000389 890189018801880187- 389 00000392 0186018601 390 00000397 850185018401830183- dw 389,389,388,387,387,386,385,385,384,383,382,381,381,380,379,378 390 000003A0 018201810181018001- 390 000003A9 7F017E017D017D017C- 390 000003B2 017B017A01 391 000003B7 790178017701770176- dw 377,376,375,375,374,373,372,371,370,369,368,366,365,364,363,362 391 000003C0 017501740173017201- 391 000003C9 710170016E016D016C- 391 000003D2 016B016A01 392 000003D7 690168016701650164- dw 361,360,359,357,356,355,354,352,351,350,349,347,346,345,343,342 392 000003E0 016301620160015F01- 392 000003E9 5E015D015B015A0159- 392 000003F2 0157015601 393 000003F7 55015301520150014F- dw 341,339,338,336,335,333,332,331,329,328,326,325,323,321,320,318 393 00000400 014D014C014B014901- 393 00000409 480146014501430141- 393 00000412 0140013E01 394 00000417 3D013B013A01380136- dw 317,315,314,312,310,309,307,305,304,302,300,299,297,295,294,292 394 00000420 013501330131013001- 394 00000429 2E012C012B01290127- 394 00000432 0126012401 395 00000437 220120011F011D011B- dw 290,288,287,285,283,281,279,278,276,274,272,270,269,267,265,263 395 00000440 011901170116011401- 395 00000449 120110010E010D010B- 395 00000452 0109010701 396 00000457 0501030101010001FE- dw 261,259,257,256,254,252,250,248,246,244,242,240,238,236,235,233 396 00000460 00FC00FA00F800F600- 396 00000469 F400F200F000EE00EC- 396 00000472 00EB00E900 397 00000477 E700E500E300E100DF- dw 231,229,227,225,223,221,219,217,215,213,211,209,207,205,203,201 397 00000480 00DD00DB00D900D700- 397 00000489 D500D300D100CF00CD- 397 00000492 00CB00C900 398 00000497 C800C600C400C200C0- dw 200,198,196,194,192,190,188,186,184,182,180,178,176,174,172,170 398 000004A0 00BE00BC00BA00B800- 398 000004A9 B600B400B200B000AE- 398 000004B2 00AC00AA00 399 000004B7 A800A600A400A300A1- dw 168,166,164,163,161,159,157,155,153,151,149,147,145,143,142,140 399 000004C0 009F009D009B009900- 399 000004C9 97009500930091008F- 399 000004D2 008E008C00 400 000004D7 8A0088008600840082- dw 138,136,134,132,130,129,127,125,123,121,120,118,116,114,112,111 400 000004E0 0081007F007D007B00- 400 000004E9 790078007600740072- 400 000004F2 0070006F00 401 000004F7 6D006B006900680066- dw 109,107,105,104,102,100,99,97,95,94,92,90,89,87,85,84 401 00000500 006400630061005F00- 401 00000509 5E005C005A00590057- 401 00000512 0055005400 402 00000517 520051004F004E004C- dw 82,81,79,78,76,74,73,71,70,68,67,66,64,63,61,60 402 00000520 004A00490047004600- 402 00000529 44004300420040003F- 402 00000532 003D003C00 403 00000537 3A0039003800360035- dw 58,57,56,54,53,52,50,49,48,47,45,44,43,42,40,39 403 00000540 003400320031003000- 403 00000549 2F002D002C002B002A- 403 00000552 0028002700 404 00000557 260025002400230022- dw 38,37,36,35,34,33,31,30,29,28,27,26,25,24,24,23 404 00000560 0021001F001E001D00- 404 00000569 1C001B001A00190018- 404 00000572 0018001700 405 00000577 160015001400130012- dw 22,21,20,19,18,18,17,16,15,14,14,13,12,12,11,10 405 00000580 001200110010000F00- 405 00000589 0E000E000D000C000C- 405 00000592 000B000A00 406 00000597 0A0009000900080007- dw 10,9,9,8,7,7,6,6,6,5,5,4,4,3,3,3 406 000005A0 000700060006000600- 406 000005A9 050005000400040003- 406 000005B2 0003000300 407 000005B7 020002000200020001- dw 2,2,2,2,1,1,1,1,1,0,0,0,0,0,0,0 407 000005C0 000100010001000100- 407 000005C9 000000000000000000- 407 000005D2 0000000000 408 000005D7 000000000000000000- dw 0,0,0,0,0,0,0,0,1,1,1,1,1,2,2,2 408 000005E0 000000000000000100- 408 000005E9 010001000100010002- 408 000005F2 0002000200 409 000005F7 020003000300030004- dw 2,3,3,3,4,4,5,5,6,6,6,7,7,8,9,9 409 00000600 000400050005000600- 409 00000609 060006000700070008- 409 00000612 0009000900 410 00000617 0A000A000B000C000C- dw 10,10,11,12,12,13,14,14,15,16,17,18,18,19,20,21 410 00000620 000D000E000E000F00- 410 00000629 100011001200120013- 410 00000632 0014001500 411 00000637 160017001800180019- dw 22,23,24,24,25,26,27,28,29,30,31,33,34,35,36,37 411 00000640 001A001B001C001D00- 411 00000649 1E001F002100220023- 411 00000652 0024002500 412 00000657 2600270028002A002B- dw 38,39,40,42,43,44,45,47,48,49,50,52,53,54,56,57 412 00000660 002C002D002F003000- 412 00000669 310032003400350036- 412 00000672 0038003900 413 00000677 3A003C003D003F0040- dw 58,60,61,63,64,66,67,68,70,71,73,74,76,78,79,81 413 00000680 004200430044004600- 413 00000689 470049004A004C004E- 413 00000692 004F005100 414 00000697 520054005500570059- dw 82,84,85,87,89,90,92,94,95,97,99,100,102,104,105,107 414 000006A0 005A005C005E005F00- 414 000006A9 610063006400660068- 414 000006B2 0069006B00 415 000006B7 6D006F007000720074- dw 109,111,112,114,116,118,120,121,123,125,127,129,130,132,134,136 415 000006C0 007600780079007B00- 415 000006C9 7D007F008100820084- 415 000006D2 0086008800 416 000006D7 8A008C008E008F0091- dw 138,140,142,143,145,147,149,151,153,155,157,159,161,163,164,166 416 000006E0 009300950097009900- 416 000006E9 9B009D009F00A100A3- 416 000006F2 00A400A600 417 000006F7 A800AA00AC00AE00B0- dw 168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198 417 00000700 00B200B400B600B800- 417 00000709 BA00BC00BE00C000C2- 417 00000712 00C400C600 418 419 bss: 420 421 ABSOLUTE bss 422 423 00000717 ?? alignb 4 424 425 00000718 ???????? color: resd 1 426 0000071C ???????? prevx: resd 1 427 ;prevy: resd 1 428 429 bss_start: 430 00000720 _fx: resd 640 ; for every X values from 0 to 639 431 00001120 resd 2048-640 ; used for repetitive x values for curve continuity 432 bss_end: