1 ; **************************************************************************** 2 ; sinus7.s - TRDOS 386 (TRDOS v2.0.3) Test Program - 'sysvideo' pixel tests 3 ; ---------------------------------------------------------------------------- 4 ; 5 ; 19/02/2021 6 ; 7 ; **************************************************************************** 8 ; nasm sinus7.s -l sinus7.txt -o SINUS7.PRG -Z error.txt 9 ; (modified from 'sinus6.s', 19/02/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[F4070000] mov edi, bss_start 92 00000005 B9400B0000 mov ecx, (bss_end - bss_start)/4 93 ;xor eax, eax 94 0000000A F3AB rep stosd 95 96 ; program message 97 0000000C BE[81010000] mov esi, program_msg 98 00000011 E8A2000000 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 106 ; Set Video Mode to 105h ; 1024x768, 256 colors 107 sys _video, 08FFh, 105h 107 <1> 107 <1> 107 <1> 107 <1> 107 <1> %if %0 >= 2 107 0000001A BBFF080000 <1> mov ebx, %2 107 <1> %if %0 >= 3 107 0000001F B905010000 <1> mov ecx, %3 107 <1> %if %0 = 4 107 <1> mov edx, %4 107 <1> %endif 107 <1> %endif 107 <1> %endif 107 00000024 B81F000000 <1> mov eax, %1 107 <1> 107 00000029 CD40 <1> int 40h 108 0000002B 09C0 or eax, eax 109 ;jz short terminate 110 ;mov [LFB_ADDR], edx ; pointer to LFB info table/structure 111 0000002D 750E jnz short set_vesa_mode_105h_ok 112 113 terminate: 114 0000002F E846010000 call set_text_mode 115 sys _exit 115 <1> 115 <1> 115 <1> 115 <1> 115 <1> %if %0 >= 2 115 <1> mov ebx, %2 115 <1> %if %0 >= 3 115 <1> mov ecx, %3 115 <1> %if %0 = 4 115 <1> mov edx, %4 115 <1> %endif 115 <1> %endif 115 <1> %endif 115 00000034 B801000000 <1> mov eax, %1 115 <1> 115 00000039 CD40 <1> int 40h 116 halt: 117 0000003B EBFE jmp short halt 118 119 set_vesa_mode_105h_ok: 120 0000003D C605[EC070000]1C mov byte [color], 28 ; initial pixel color 121 _0: 122 00000044 E880000000 call drawsinewave 123 waitforkey: 124 ;mov ah, 1 125 ;int 32h 126 ;jz short getkey 127 ;inc word [counter] 128 ;nop 129 ;nop 130 ;nop 131 ;jmp short waitforkey 132 getkey: 133 00000049 30E4 xor ah, ah 134 0000004B CD32 int 32h 135 136 0000004D 663D032E cmp ax, 2E03h 137 00000051 74DC je short terminate 138 00000053 3C1B cmp al, 1Bh ; ESC key 139 00000055 74D8 je short terminate 140 141 00000057 3C2B cmp al, '+' 142 00000059 7508 jne short _1 143 144 0000005B FE05[EC070000] inc byte [color] 145 00000061 EBE1 jmp short _0 146 _1: 147 00000063 3C2D cmp al, '-' 148 00000065 7508 jne short _2 149 150 00000067 FE0D[EC070000] dec byte [color] 151 0000006D EBD5 jmp short _0 152 _2: 153 0000006F 3C20 cmp al, 20h ; space 154 00000071 7509 jne short _3 155 00000073 8005[EC070000]08 add byte [color], 8 156 0000007A EBC8 jmp short _0 157 _3: 158 0000007C 80FC4B cmp ah, 4Bh 159 0000007F 7507 jne short _5 160 ; left arrow 161 _4: 162 00000081 E8E2000000 call beep 163 00000086 EBC1 jmp waitforkey 164 _5: 165 00000088 80FC4D cmp ah, 4Dh 166 0000008B 7502 jne short _6 167 168 ; right arrow 169 0000008D EBF2 jmp short _4 170 _6: 171 0000008F 80FC50 cmp ah, 50h 172 00000092 7502 jne short _7 173 ; down arrow 174 00000094 EBEB jmp short _4 175 _7: 176 00000096 80FC48 cmp ah, 48h 177 00000099 7502 jne short _8 178 ; up arrow 179 0000009B EBE4 jmp short _4 180 _8: 181 0000009D 663D0D1C cmp ax, 1C0Dh 182 000000A1 750E jne short _9 183 000000A3 E8C0000000 call beep 184 000000A8 8005[EC070000]04 add byte [color], 4 185 000000AF EB93 jmp short _0 186 _9: 187 000000B1 E8B2000000 call beep 188 000000B6 EB91 jmp waitforkey 189 190 print_msg: 191 000000B8 B40E mov ah, 0Eh 192 000000BA BB07000000 mov ebx, 7 193 ;mov bl, 7 ; char attribute & color 194 p_next_chr: 195 000000BF AC lodsb 196 000000C0 08C0 or al, al 197 000000C2 7404 jz short p_retn ; retn 198 000000C4 CD31 int 31h 199 000000C6 EBF7 jmp short p_next_chr 200 p_retn: 201 000000C8 C3 retn 202 203 drawsinewave: 204 ; INPUT: 205 ; sinustable 206 ; 207 ; Modified registers: esi, edi, eax, ecx, ebx, edx 208 209 ; fill _fx table by using sine wave table 210 ; x = 0 to 719 211 ; y = +180 to -180 212 ; +180 --> 359 -> screen row position = (360-511)+203 = 204 213 ; -180 --> 0 -> screen row position = (360-0)+203 = 563 214 215 000000C9 BE[47020000] mov esi, sinustable 216 000000CE BF[F4070000] mov edi, _fx 217 000000D3 31C0 xor eax, eax 218 000000D5 29DB sub ebx, ebx ; 0 ; x 219 000000D7 31ED xor ebp, ebp ; pixel count 220 000000D9 66AD lodsw 221 000000DB EB45 jmp short _dsw_5 222 _dsw_0: 223 000000DD 66AD lodsw ; ax = 360-y value 224 ; 225 000000DF 6639C8 cmp ax, cx ; [prevy] 226 000000E2 743E je short _dsw_5 227 000000E4 7218 jb short _dsw_3 228 _dsw_1: 229 000000E6 6641 inc cx ; previous 360-y 230 000000E8 6639C8 cmp ax, cx 231 000000EB 7635 jna short _dsw_5 232 ; ebx = x 233 ; eax = 360 - y 234 000000ED E81A000000 call _dsw_4 235 000000F2 EBF2 jmp short _dsw_1 236 _dsw_2: 237 000000F4 50 push eax 238 000000F5 E858000000 call getpixeloffset 239 000000FA AB stosd 240 000000FB 58 pop eax 241 000000FC 45 inc ebp ; increase pixel count 242 000000FD C3 retn 243 _dsw_3: 244 000000FE 6649 dec cx ; previous 360-y 245 00000100 6639C8 cmp ax, cx 246 00000103 731D jnb short _dsw_5 247 ; ebx = x 248 ; eax = 360 - y 249 00000105 E802000000 call _dsw_4 250 0000010A EBF2 jmp short _dsw_3 251 _dsw_4: 252 0000010C 53 push ebx 253 0000010D 8B1D[F0070000] mov ebx, [prevx] 254 00000113 91 xchg eax, ecx ; [prevy] 255 00000114 E8DBFFFFFF call _dsw_2 256 00000119 91 xchg ecx, eax 257 0000011A 5B pop ebx 258 0000011B FF05[F0070000] inc dword [prevx] 259 00000121 C3 retn 260 _dsw_5: 261 00000122 891D[F0070000] mov [prevx], ebx ; previous x value 262 00000128 89C1 mov ecx, eax ; previous 360-y value 263 0000012A E8C5FFFFFF call _dsw_2 264 0000012F 43 inc ebx 265 00000130 81FBD0020000 cmp ebx, 720 266 00000136 72A5 jb short _dsw_0 267 268 00000138 BE[F4070000] mov esi, _fx 269 ;mov edx, ebp 270 ; 271 ; edx = pixel count 272 ; esi = user's single color pixel buffer address 273 sys _video, 0305h, [color], ebp 273 <1> 273 <1> 273 <1> 273 <1> 273 <1> %if %0 >= 2 273 0000013D BB05030000 <1> mov ebx, %2 273 <1> %if %0 >= 3 273 00000142 8B0D[EC070000] <1> mov ecx, %3 273 <1> %if %0 = 4 273 00000148 89EA <1> mov edx, %4 273 <1> %endif 273 <1> %endif 273 <1> %endif 273 0000014A B81F000000 <1> mov eax, %1 273 <1> 273 0000014F CD40 <1> int 40h 274 275 00000151 C3 retn 276 277 getpixeloffset: 278 ; ebx = x position 279 ; eax = 360 - y position 280 00000152 BA33020000 mov edx, 360+203 ; 563 281 00000157 29C2 sub edx, eax ; convert row position from 360-y 282 ; row = (360-y)+203 283 00000159 B800040000 mov eax, 1024 ; screen width 284 0000015E F7E2 mul edx 285 00000160 01D8 add eax, ebx ; add x to y*1024 286 00000162 0598000000 add eax, ((1024-720)/2) 287 ; eax = pixel offset on display page 288 00000167 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 00000168 BB10000000 <1> mov ebx, %2 291 <1> %if %0 >= 3 291 0000016D 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 00000172 B820000000 <1> mov eax, %1 291 <1> 291 00000177 CD40 <1> int 40h 292 00000179 C3 retn 293 294 set_text_mode: 295 0000017A 30E4 xor ah, ah 296 0000017C B003 mov al, 3 297 ;int 10h ; al = 03h text mode, int 10 video 298 0000017E CD31 int 31h ; TRDOS 386 - Video interrupt 299 00000180 C3 retn 300 301 program_msg: 302 00000181 5452444F5320333836- db "TRDOS 386 v2.0.3 - ('sysvideo') Test Program - Draw Sine Wave" 302 0000018A 2076322E302E33202D- 302 00000193 202827737973766964- 302 0000019C 656F27292054657374- 302 000001A5 2050726F6772616D20- 302 000001AE 2D2044726177205369- 302 000001B7 6E652057617665 303 000001BE 0D0A db 0Dh, 0Ah 304 000001C0 6279204572646F6761- db "by Erdogan Tan - 19/02/2021" 304 000001C9 6E2054616E202D2031- 304 000001D2 392F30322F32303231 305 ;db 0Dh, 0Ah, 0 306 000001DB 0D0A0D0A db 0Dh, 0Ah, 0Dh, 0Ah 307 308 000001DF 557365205350414345- db "Use SPACE,ENTER,'+','-' keys to change COLOR .." 308 000001E8 2C454E5445522C272B- 308 000001F1 272C272D27206B6579- 308 000001FA 7320746F206368616E- 308 00000203 676520434F4C4F5220- 308 0000020C 2E2E 309 0000020E 0D0A db 0Dh, 0Ah 310 00000210 507265737320455343- db "Press ESC to exit .." 310 00000219 20746F206578697420- 310 00000222 2E2E 311 00000224 0D0A db 0Dh, 0Ah 312 00000226 0D0A db 0Dh, 0Ah 313 00000228 507265737320616E79- db "Press any key to continue .." 313 00000231 206B657920746F2063- 313 0000023A 6F6E74696E7565202E- 313 00000243 2E 314 nextline: 315 00000244 0D0A00 db 0Dh, 0Ah, 0 316 317 sinustable: ; sine wave table (x=0 to 719, y= +180 to -180) 318 ; 19/02/2021 319 ; https://daycounter.com/Calculators/Sine-Generator-Calculator2.phtml 320 ; 720x360 (x= 0 to 719, y = 0 to 359) 321 00000247 B400B500B700B800BA- dw 180,181,183,184,186,187,189,190,192,194,195,197,198,200,201,203,204,206,208,209,211,212,214,215,217,218,220,221,223,224,226,227 321 00000250 00BB00BD00BE00C000- 321 00000259 C200C300C500C600C8- 321 00000262 00C900CB00CC00CE00- 321 0000026B D000D100D300D400D6- 321 00000274 00D700D900DA00DC00- 321 0000027D DD00DF00E000E200E3- 321 00000286 00 322 00000287 E500E600E800E900EB- dw 229,230,232,233,235,236,238,239,241,242,244,245,247,248,250,251,253,254,255,257,258,260,261,262,264,265,267,268,269,271,272,273 322 00000290 00EC00EE00EF00F100- 322 00000299 F200F400F500F700F8- 322 000002A2 00FA00FB00FD00FE00- 322 000002AB FF0001010201040105- 322 000002B4 010601080109010B01- 322 000002BD 0C010D010F01100111- 322 000002C6 01 323 000002C7 130114011501170118- dw 275,276,277,279,280,281,282,284,285,286,288,289,290,291,292,294,295,296,297,298,300,301,302,303,304,305,306,308,309,310,311,312 323 000002D0 0119011A011C011D01- 323 000002D9 1E0120012101220123- 323 000002E2 012401260127012801- 323 000002EB 29012A012C012D012E- 323 000002F4 012F01300131013201- 323 000002FD 340135013601370138- 323 00000306 01 324 00000307 39013A013B013C013D- dw 313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,327,328,329,330,331,332,333,333,334,335,336,336,337,338,339,339,340 324 00000310 013E013F0140014101- 324 00000319 420143014401450146- 324 00000322 014701470148014901- 324 0000032B 4A014B014C014D014D- 324 00000334 014E014F0150015001- 324 0000033D 510152015301530154- 324 00000346 01 325 00000347 550156015601570157- dw 341,342,342,343,343,344,345,345,346,347,347,348,348,349,349,350,350,351,351,352,352,352,353,353,354,354,354,355,355,355,356,356 325 00000350 015801590159015A01- 325 00000359 5B015B015C015C015D- 325 00000362 015D015E015E015F01- 325 0000036B 5F0160016001600161- 325 00000374 016101620162016201- 325 0000037D 630163016301640164- 325 00000386 01 326 00000387 640165016501650165- dw 356,357,357,357,357,357,358,358,358,358,358,358,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,358,358,358 326 00000390 016501660166016601- 326 00000399 660166016601670167- 326 000003A2 016701670167016701- 326 000003AB 670167016701670167- 326 000003B4 016701670167016701- 326 000003BD 670167016601660166- 326 000003C6 01 327 000003C7 660166016601650165- dw 358,358,358,357,357,357,357,357,356,356,356,355,355,355,354,354,354,353,353,352,352,352,351,351,350,350,349,349,348,348,347,347 327 000003D0 016501650165016401- 327 000003D9 640164016301630163- 327 000003E2 016201620162016101- 327 000003EB 61016001600160015F- 327 000003F4 015F015E015E015D01- 327 000003FD 5D015C015C015B015B- 327 00000406 01 328 00000407 5A0159015901580157- dw 346,345,345,344,343,343,342,342,341,340,339,339,338,337,336,336,335,334,333,333,332,331,330,329,328,327,327,326,325,324,323,322 328 00000410 015701560156015501- 328 00000419 540153015301520151- 328 00000422 01500150014F014E01- 328 0000042B 4D014D014C014B014A- 328 00000434 014901480147014701- 328 0000043D 460145014401430142- 328 00000446 01 329 00000447 410140013F013E013D- dw 321,320,319,318,317,316,315,314,313,312,311,310,309,308,306,305,304,303,302,301,300,298,297,296,295,294,292,291,290,289,288,286 329 00000450 013C013B013A013901- 329 00000459 380137013601350134- 329 00000462 013201310130012F01- 329 0000046B 2E012D012C012A0129- 329 00000474 012801270126012401- 329 0000047D 23012201210120011E- 329 00000486 01 330 00000487 1D011C011A01190118- dw 285,284,282,281,280,279,277,276,275,273,272,271,269,268,267,265,264,262,261,260,258,257,255,254,253,251,250,248,247,245,244,242 330 00000490 011701150114011301- 330 00000499 110110010F010D010C- 330 000004A2 010B01090108010601- 330 000004AB 0501040102010101FF- 330 000004B4 00FE00FD00FB00FA00- 330 000004BD F800F700F500F400F2- 330 000004C6 00 331 000004C7 F100EF00EE00EC00EB- dw 241,239,238,236,235,233,232,230,229,227,226,224,223,221,220,218,217,215,214,212,211,209,208,206,204,203,201,200,198,197,195,194 331 000004D0 00E900E800E600E500- 331 000004D9 E300E200E000DF00DD- 331 000004E2 00DC00DA00D900D700- 331 000004EB D600D400D300D100D0- 331 000004F4 00CE00CC00CB00C900- 331 000004FD C800C600C500C300C2- 331 00000506 00 332 00000507 C000BE00BD00BB00BA- dw 192,190,189,187,186,184,183,181,180,178,176,175,173,172,170,169,167,165,164,162,161,159,158,156,155,153,151,150,148,147,145,144 332 00000510 00B800B700B500B400- 332 00000519 B200B000AF00AD00AC- 332 00000522 00AA00A900A700A500- 332 0000052B A400A200A1009F009E- 332 00000534 009C009B0099009700- 332 0000053D 960094009300910090- 332 00000546 00 333 00000547 8E008D008B008A0088- dw 142,141,139,138,136,135,133,132,130,129,127,126,124,123,121,120,118,117,115,114,112,111,109,108,106,105,104,102,101,99,98,97 333 00000550 008700850084008200- 333 00000559 81007F007E007C007B- 333 00000562 007900780076007500- 333 0000056B 7300720070006F006D- 333 00000574 006C006A0069006800- 333 0000057D 660065006300620061- 333 00000586 00 334 00000587 5F005E005C005B005A- dw 95,94,92,91,90,88,87,86,84,83,82,80,79,78,77,75,74,73,71,70,69,68,67,65,64,63,62,61,59,58,57,56 334 00000590 005800570056005400- 334 00000599 5300520050004F004E- 334 000005A2 004D004B004A004900- 334 000005AB 470046004500440043- 334 000005B4 00410040003F003E00- 334 000005BD 3D003B003A00390038- 334 000005C6 00 335 000005C7 370036003500330032- dw 55,54,53,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,32,31,30,29,28,27,26,26,25 335 000005D0 00310030002F002E00- 335 000005D9 2D002C002B002A0029- 335 000005E2 002800270026002500- 335 000005EB 240023002200210020- 335 000005F4 0020001F001E001D00- 335 000005FD 1C001B001A001A0019- 335 00000606 00 336 00000607 180017001700160015- dw 24,23,23,22,21,20,20,19,18,17,17,16,16,15,14,14,13,12,12,11,11,10,10,9,9,8,8,7,7,7,6,6 336 00000610 001400140013001200- 336 00000619 11001100100010000F- 336 00000622 000E000E000D000C00- 336 0000062B 0C000B000B000A000A- 336 00000634 000900090008000800- 336 0000063D 070007000700060006- 336 00000646 00 337 00000647 050005000500040004- dw 5,5,5,4,4,4,3,3,3,2,2,2,2,2,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0 337 00000650 000400030003000300- 337 00000659 020002000200020002- 337 00000662 000100010001000100- 337 0000066B 010001000000000000- 337 00000674 000000000000000000- 337 0000067D 000000000000000000- 337 00000686 00 338 00000687 000000000000000000- dw 0,0,0,0,0,1,1,1,1,1,1,2,2,2,2,2,3,3,3,4,4,4,5,5,5,6,6,7,7,7,8,8 338 00000690 000100010001000100- 338 00000699 010001000200020002- 338 000006A2 000200020003000300- 338 000006AB 030004000400040005- 338 000006B4 000500050006000600- 338 000006BD 070007000700080008- 338 000006C6 00 339 000006C7 090009000A000A000B- dw 9,9,10,10,11,11,12,12,13,14,14,15,16,16,17,17,18,19,20,20,21,22,23,23,24,25,26,26,27,28,29,30 339 000006D0 000B000C000C000D00- 339 000006D9 0E000E000F00100010- 339 000006E2 001100110012001300- 339 000006EB 140014001500160017- 339 000006F4 001700180019001A00- 339 000006FD 1A001B001C001D001E- 339 00000706 00 340 00000707 1F0020002000210022- dw 31,32,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,61,62,63 340 00000710 002300240025002600- 340 00000719 2700280029002A002B- 340 00000722 002C002D002E002F00- 340 0000072B 300031003200330035- 340 00000734 003600370038003900- 340 0000073D 3A003B003D003E003F- 340 00000746 00 341 00000747 400041004300440045- dw 64,65,67,68,69,70,71,73,74,75,77,78,79,80,82,83,84,86,87,88,90,91,92,94,95,97,98,99,101,102,104,105 341 00000750 004600470049004A00- 341 00000759 4B004D004E004F0050- 341 00000762 005200530054005600- 341 0000076B 570058005A005B005C- 341 00000774 005E005F0061006200- 341 0000077D 630065006600680069- 341 00000786 00 342 00000787 6A006C006D006F0070- dw 106,108,109,111,112,114,115,117,118,120,121,123,124,126,127,129,130,132,133,135,136,138,139,141,142,144,145,147,148,150,151,153 342 00000790 007200730075007600- 342 00000799 780079007B007C007E- 342 000007A2 007F00810082008400- 342 000007AB 8500870088008A008B- 342 000007B4 008D008E0090009100- 342 000007BD 930094009600970099- 342 000007C6 00 343 000007C7 9B009C009E009F00A1- dw 155,156,158,159,161,162,164,165,167,169,170,172,173,175,176,178,180, 343 000007D0 00A200A400A500A700- 343 000007D9 A900AA00AC00AD00AF- 343 000007E2 00B000B200B400 344 345 bss: 346 347 ABSOLUTE bss 348 349 000007E9 alignb 4 350 351 000007EC color: resd 1 352 000007F0 prevx: resd 1 353 ;prevy: resd 1 354 355 bss_start: 356 000007F4 _fx: resd 720 ; for every X values from 0 to 719 357 00001334 resd 2880-720 ; used for repetitive x values for continuity 358 bss_end: