     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) <arg1 (ebx)>, <arg2 (ecx)>, <arg3 (edx)>
    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 <res 00000003>          alignb 4
   350                                  
   351 000007EC <res 00000004>          color:	resd 1
   352 000007F0 <res 00000004>          prevx:	resd 1
   353                                  ;prevy:	resd 1
   354                                  
   355                                  bss_start:
   356 000007F4 <res 00000B40>          _fx:	resd 720 ; for every X values from 0 to 719
   357 00001334 <res 000021C0>          	resd 2880-720 ; used for repetitive x values for continuity
   358                                  bss_end:
