     1                                  ; ****************************************************************************
     2                                  ; blocks15.s - TRDOS 386 (TRDOS v2.0.3) Test Program - 'sysvideo' pixel tests
     3                                  ; ----------------------------------------------------------------------------
     4                                  ;
     5                                  ; 02/03/2021 (01/03/2021)
     6                                  ;
     7                                  ; ****************************************************************************
     8                                  ; nasm blocks15.s -l blocks15.txt -o BLOCKS15.PRG -Z error.txt
     9                                  ; (modified from 'blocks5.s', 26/02/2021)
    10                                  
    11                                  ; 'sysvideo' bh = 2, block copy and modification test (VESA VBE mode 101h)
    12                                  ; (mask 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) <arg1 (ebx)>, <arg2 (ecx)>, <arg3 (edx)>
    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[BC050000]            	mov	edi, bss_start
    93 00000005 B901840300              	mov	ecx, (bss_end - bss_start)/4
    94                                  	;xor	eax, eax
    95 0000000A F3AB                    	rep	stosd
    96                                  
    97                                  	; program message
    98 0000000C BE[F8040000]            	mov	esi, program_msg
    99 00000011 E8AE040000              	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                                  	; Set Video Mode to 112h ; 640x480, 24 bit true colors
   107                                  	sys	_video, 08FFh, 112h
   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 B912010000          <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 7505                    	jnz	short set_vesa_mode_112h_ok
   112 0000002F E958040000              	jmp	terminate
   113                                  
   114                                  set_vesa_mode_112h_ok:
   115 00000034 B9FFFFFF00              	mov	ecx, 0FFFFFFh ; WHITE
   116 00000039 BB01020000              	mov	ebx, 0201h ; Full screen, new color
   117                                  	sys	_video
   117                              <1> 
   117                              <1> 
   117                              <1> 
   117                              <1> 
   117                              <1>  %if %0 >= 2
   117                              <1>  mov ebx, %2
   117                              <1>  %if %0 >= 3
   117                              <1>  mov ecx, %3
   117                              <1>  %if %0 = 4
   117                              <1>  mov edx, %4
   117                              <1>  %endif
   117                              <1>  %endif
   117                              <1>  %endif
   117 0000003E B81F000000          <1>  mov eax, %1
   117                              <1> 
   117 00000043 CD40                <1>  int 40h
   118                                  
   119                                  	;mov	dword [tcolor], 0
   120 00000045 BEF000D000              	mov	esi, 208*65536+240
   121 0000004A BD[A9050000]            	mov	ebp, txt_white
   122 0000004F E881040000               	call	print_text
   123                                  
   124 00000054 E841040000              	call	waitforkey
   125                                  
   126                                  	; full screen replace color (replace black colors)
   127 00000059 29C9                    	sub	ecx, ecx ; 0 ; BLACK
   128 0000005B BA0080FF00              	mov	edx, 0FF8000h ; ORANGE
   129 00000060 B30C                    	mov	bl, 0Ch
   130                                  	sys	_video
   130                              <1> 
   130                              <1> 
   130                              <1> 
   130                              <1> 
   130                              <1>  %if %0 >= 2
   130                              <1>  mov ebx, %2
   130                              <1>  %if %0 >= 3
   130                              <1>  mov ecx, %3
   130                              <1>  %if %0 = 4
   130                              <1>  mov edx, %4
   130                              <1>  %endif
   130                              <1>  %endif
   130                              <1>  %endif
   130 00000062 B81F000000          <1>  mov eax, %1
   130                              <1> 
   130 00000067 CD40                <1>  int 40h
   131                                  	
   132 00000069 E82C040000              	call	waitforkey
   133                                  
   134                                  	; Mask color = black
   135                                  	; full screen NOT (except mask color)
   136 0000006E BF0080FF00              	mov	edi, 0FF8000h ; ORANGE
   137 00000073 BB27020000              	mov	ebx, 0227h ; masked 'NOT', full screen
   138                                  	sys	_video
   138                              <1> 
   138                              <1> 
   138                              <1> 
   138                              <1> 
   138                              <1>  %if %0 >= 2
   138                              <1>  mov ebx, %2
   138                              <1>  %if %0 >= 3
   138                              <1>  mov ecx, %3
   138                              <1>  %if %0 = 4
   138                              <1>  mov edx, %4
   138                              <1>  %endif
   138                              <1>  %endif
   138                              <1>  %endif
   138 00000078 B81F000000          <1>  mov eax, %1
   138                              <1> 
   138 0000007D CD40                <1>  int 40h
   139                                  	
   140 0000007F E816040000              	call	waitforkey
   141                                  
   142                                  	; full screen replace color (replace black colors)
   143 00000084 B90080FF00              	mov	ecx, 0FF8000h ; ORANGE
   144 00000089 BAFFFFFF00              	mov	edx, 0FFFFFFh ; WHITE
   145 0000008E B30C                    	mov	bl, 0Ch
   146                                  	sys	_video
   146                              <1> 
   146                              <1> 
   146                              <1> 
   146                              <1> 
   146                              <1>  %if %0 >= 2
   146                              <1>  mov ebx, %2
   146                              <1>  %if %0 >= 3
   146                              <1>  mov ecx, %3
   146                              <1>  %if %0 = 4
   146                              <1>  mov edx, %4
   146                              <1>  %endif
   146                              <1>  %endif
   146                              <1>  %endif
   146 00000090 B81F000000          <1>  mov eax, %1
   146                              <1> 
   146 00000095 CD40                <1>  int 40h
   147                                  	
   148 00000097 E8FE030000              	call	waitforkey
   149                                  
   150                                  	; full screen - blue color 
   151                                  
   152 0000009C B9FF000000              	mov	ecx, 0FFh ; BLUE
   153 000000A1 B301                    	mov	bl, 01h ; Full screen, new color
   154                                  	sys	_video
   154                              <1> 
   154                              <1> 
   154                              <1> 
   154                              <1> 
   154                              <1>  %if %0 >= 2
   154                              <1>  mov ebx, %2
   154                              <1>  %if %0 >= 3
   154                              <1>  mov ecx, %3
   154                              <1>  %if %0 = 4
   154                              <1>  mov edx, %4
   154                              <1>  %endif
   154                              <1>  %endif
   154                              <1>  %endif
   154 000000A3 B81F000000          <1>  mov eax, %1
   154                              <1> 
   154 000000A8 CD40                <1>  int 40h
   155                                  
   156 000000AA C705[BC050000]FFFF-     	mov	dword [tcolor], 0FFFFFFh
   156 000000B2 FF00               
   157 000000B4 BE0201D000              	mov	esi, 208*65536+258
   158 000000B9 BD[93050000]            	mov	ebp, txt_blue
   159 000000BE E812040000               	call	print_text
   160                                  
   161 000000C3 E8D2030000              	call	waitforkey
   162                                  
   163                                  	; Mask color = white
   164                                  	; full screen NOT (except mask color)
   165 000000C8 BFFFFFFF00              	mov	edi, 0FFFFFFh
   166 000000CD B327                    	mov	bl, 27h ; masked 'NOT', full screen
   167                                  	sys	_video
   167                              <1> 
   167                              <1> 
   167                              <1> 
   167                              <1> 
   167                              <1>  %if %0 >= 2
   167                              <1>  mov ebx, %2
   167                              <1>  %if %0 >= 3
   167                              <1>  mov ecx, %3
   167                              <1>  %if %0 = 4
   167                              <1>  mov edx, %4
   167                              <1>  %endif
   167                              <1>  %endif
   167                              <1>  %endif
   167 000000CF B81F000000          <1>  mov eax, %1
   167                              <1> 
   167 000000D4 CD40                <1>  int 40h
   168                                  
   169 000000D6 E8BF030000              	call	waitforkey
   170                                  	
   171 000000DB B90000FF00              	mov	ecx, 0FF0000h ; RED
   172 000000E0 B301                    	mov	bl, 01h ; Full screen, new color
   173                                  	sys	_video
   173                              <1> 
   173                              <1> 
   173                              <1> 
   173                              <1> 
   173                              <1>  %if %0 >= 2
   173                              <1>  mov ebx, %2
   173                              <1>  %if %0 >= 3
   173                              <1>  mov ecx, %3
   173                              <1>  %if %0 = 4
   173                              <1>  mov edx, %4
   173                              <1>  %endif
   173                              <1>  %endif
   173                              <1>  %endif
   173 000000E2 B81F000000          <1>  mov eax, %1
   173                              <1> 
   173 000000E7 CD40                <1>  int 40h
   174                                  
   175                                  	;mov	dword [tcolor], 0FFFFFFh
   176 000000E9 BE1401D000              	mov	esi, 208*65536+276
   177 000000EE BD[98050000]            	mov	ebp, txt_red
   178 000000F3 E8DD030000               	call	print_text
   179                                  
   180 000000F8 E89D030000              	call	waitforkey
   181                                  
   182                                  	; Mask color = red
   183                                  	; full screen NEW COLOR (except mask color)
   184 000000FD BF0000FF00              	mov	edi, 0FF0000h ; mask color, RED
   185 00000102 B900FFFF00              	mov	ecx, 0FFFF00h ; YELLOW
   186 00000107 B321                    	mov	bl, 21h ; masked new color, full screen
   187                                  	sys	_video
   187                              <1> 
   187                              <1> 
   187                              <1> 
   187                              <1> 
   187                              <1>  %if %0 >= 2
   187                              <1>  mov ebx, %2
   187                              <1>  %if %0 >= 3
   187                              <1>  mov ecx, %3
   187                              <1>  %if %0 = 4
   187                              <1>  mov edx, %4
   187                              <1>  %endif
   187                              <1>  %endif
   187                              <1>  %endif
   187 00000109 B81F000000          <1>  mov eax, %1
   187                              <1> 
   187 0000010E CD40                <1>  int 40h
   188                                  
   189 00000110 E885030000              	call	waitforkey
   190                                  	
   191                                  	; full screen replace color (replace yellow colors)
   192 00000115 B900FFFF00              	mov	ecx, 0FFFF00h ; YELLOW
   193 0000011A BA0080FF00              	mov	edx, 0FF8000h ; new color, ORANGE
   194 0000011F B30C                    	mov	bl, 0Ch
   195                                  	sys	_video
   195                              <1> 
   195                              <1> 
   195                              <1> 
   195                              <1> 
   195                              <1>  %if %0 >= 2
   195                              <1>  mov ebx, %2
   195                              <1>  %if %0 >= 3
   195                              <1>  mov ecx, %3
   195                              <1>  %if %0 = 4
   195                              <1>  mov edx, %4
   195                              <1>  %endif
   195                              <1>  %endif
   195                              <1>  %endif
   195 00000121 B81F000000          <1>  mov eax, %1
   195                              <1> 
   195 00000126 CD40                <1>  int 40h
   196                                  
   197 00000128 E86D030000              	call	waitforkey
   198                                  
   199                                  	; full screen - green color
   200                                  
   201 0000012D B900FF0000              	mov	ecx, 0FF00h ; GREEN
   202 00000132 BB01020000              	mov	ebx, 0201h ; Full screen, new color
   203                                  	sys	_video
   203                              <1> 
   203                              <1> 
   203                              <1> 
   203                              <1> 
   203                              <1>  %if %0 >= 2
   203                              <1>  mov ebx, %2
   203                              <1>  %if %0 >= 3
   203                              <1>  mov ecx, %3
   203                              <1>  %if %0 = 4
   203                              <1>  mov edx, %4
   203                              <1>  %endif
   203                              <1>  %endif
   203                              <1>  %endif
   203 00000137 B81F000000          <1>  mov eax, %1
   203                              <1> 
   203 0000013C CD40                <1>  int 40h
   204                                  
   205 0000013E C705[BC050000]0000-     	mov	dword [tcolor], 0
   205 00000146 0000               
   206 00000148 BEF000D000              	mov	esi, 208*65536+240
   207 0000014D BD[9C050000]            	mov	ebp, txt_green
   208 00000152 E87E030000               	call	print_text
   209                                  
   210 00000157 E83E030000              	call	waitforkey
   211                                  
   212                                  	; Masked new color
   213 0000015C BF00FF0000              	mov	edi, 0FF00h ; mask color, GREEN
   214 00000161 B9FFFFFF00              	mov	ecx, 0FFFFFFh ; WHITE
   215 00000166 B321                    	mov	bl, 21h ; masked new color, full screen
   216                                  	sys	_video
   216                              <1> 
   216                              <1> 
   216                              <1> 
   216                              <1> 
   216                              <1>  %if %0 >= 2
   216                              <1>  mov ebx, %2
   216                              <1>  %if %0 >= 3
   216                              <1>  mov ecx, %3
   216                              <1>  %if %0 = 4
   216                              <1>  mov edx, %4
   216                              <1>  %endif
   216                              <1>  %endif
   216                              <1>  %endif
   216 00000168 B81F000000          <1>  mov eax, %1
   216                              <1> 
   216 0000016D CD40                <1>  int 40h
   217                                  
   218 0000016F E826030000              	call	waitforkey
   219                                  	
   220                                  	; Masked mix colors
   221 00000174 BFFFFFFF00              	mov	edi, 0FFFFFFh ; WHITE
   222 00000179 B9FF000000              	mov	ecx, 0FFh 
   223 0000017E B32B                    	mov	bl, 2Bh  ; masked MIX colors, full screen
   224                                  	sys	_video
   224                              <1> 
   224                              <1> 
   224                              <1> 
   224                              <1> 
   224                              <1>  %if %0 >= 2
   224                              <1>  mov ebx, %2
   224                              <1>  %if %0 >= 3
   224                              <1>  mov ecx, %3
   224                              <1>  %if %0 = 4
   224                              <1>  mov edx, %4
   224                              <1>  %endif
   224                              <1>  %endif
   224                              <1>  %endif
   224 00000180 B81F000000          <1>  mov eax, %1
   224                              <1> 
   224 00000185 CD40                <1>  int 40h
   225                                  
   226 00000187 E80E030000              	call	waitforkey
   227                                  
   228                                  	; full screen - yellow color
   229                                  
   230 0000018C B900FFFF00              	mov	ecx, 0FFFF00h ; YELLOW
   231 00000191 BB01020000              	mov	ebx, 0201h ; Full screen, new color
   232                                  	sys	_video
   232                              <1> 
   232                              <1> 
   232                              <1> 
   232                              <1> 
   232                              <1>  %if %0 >= 2
   232                              <1>  mov ebx, %2
   232                              <1>  %if %0 >= 3
   232                              <1>  mov ecx, %3
   232                              <1>  %if %0 = 4
   232                              <1>  mov edx, %4
   232                              <1>  %endif
   232                              <1>  %endif
   232                              <1>  %endif
   232 00000196 B81F000000          <1>  mov eax, %1
   232                              <1> 
   232 0000019B CD40                <1>  int 40h
   233                                  
   234                                  	;mov	dword [tcolor], 0
   235 0000019D BEDE00D000              	mov	esi, 208*65536+222
   236 000001A2 BD[A2050000]            	mov	ebp, txt_yellow
   237 000001A7 E829030000               	call	print_text
   238                                  
   239 000001AC E8E9020000              	call	waitforkey
   240                                  
   241                                  	; masked add color
   242 000001B1 31FF                    	xor	edi, edi ; mask color is BLACK 
   243 000001B3 B980000000              	mov	ecx, 80h ; add 80h to current color
   244 000001B8 B322                    	mov	bl, 22h
   245                                  	sys	_video
   245                              <1> 
   245                              <1> 
   245                              <1> 
   245                              <1> 
   245                              <1>  %if %0 >= 2
   245                              <1>  mov ebx, %2
   245                              <1>  %if %0 >= 3
   245                              <1>  mov ecx, %3
   245                              <1>  %if %0 = 4
   245                              <1>  mov edx, %4
   245                              <1>  %endif
   245                              <1>  %endif
   245                              <1>  %endif
   245 000001BA B81F000000          <1>  mov eax, %1
   245                              <1> 
   245 000001BF CD40                <1>  int 40h
   246                                  
   247 000001C1 E8D4020000              	call	waitforkey
   248                                  
   249                                  	; masked sub color
   250                                  	;xor	edi, edi ; mask color is BLACK 
   251                                  	;mov	ecx, 80h ; sub 80h from current color
   252 000001C6 B323                    	mov	bl, 23h
   253                                  	sys	_video
   253                              <1> 
   253                              <1> 
   253                              <1> 
   253                              <1> 
   253                              <1>  %if %0 >= 2
   253                              <1>  mov ebx, %2
   253                              <1>  %if %0 >= 3
   253                              <1>  mov ecx, %3
   253                              <1>  %if %0 = 4
   253                              <1>  mov edx, %4
   253                              <1>  %endif
   253                              <1>  %endif
   253                              <1>  %endif
   253 000001C8 B81F000000          <1>  mov eax, %1
   253                              <1> 
   253 000001CD CD40                <1>  int 40h
   254                                  
   255 000001CF E8C6020000              	call	waitforkey
   256                                  
   257                                  	; masked AND colors
   258                                  	;xor	edi, edi ; mask color is BLACK
   259 000001D4 B900303000              	mov	ecx, 303000h ; and 30h with current color
   260 000001D9 B325                    	mov	bl, 25h
   261                                  	sys	_video
   261                              <1> 
   261                              <1> 
   261                              <1> 
   261                              <1> 
   261                              <1>  %if %0 >= 2
   261                              <1>  mov ebx, %2
   261                              <1>  %if %0 >= 3
   261                              <1>  mov ecx, %3
   261                              <1>  %if %0 = 4
   261                              <1>  mov edx, %4
   261                              <1>  %endif
   261                              <1>  %endif
   261                              <1>  %endif
   261 000001DB B81F000000          <1>  mov eax, %1
   261                              <1> 
   261 000001E0 CD40                <1>  int 40h
   262                                  	
   263 000001E2 E8B3020000              	call	waitforkey
   264                                  
   265                                  	; masked OR colors
   266 000001E7 BF00FFFF00              	mov	edi, 0FFFF00h ; mask color is Yellow
   267 000001EC B940200000              	mov	ecx, 002040h ; or 40h with current color
   268 000001F1 B324                    	mov	bl, 24h
   269                                  	sys	_video
   269                              <1> 
   269                              <1> 
   269                              <1> 
   269                              <1> 
   269                              <1>  %if %0 >= 2
   269                              <1>  mov ebx, %2
   269                              <1>  %if %0 >= 3
   269                              <1>  mov ecx, %3
   269                              <1>  %if %0 = 4
   269                              <1>  mov edx, %4
   269                              <1>  %endif
   269                              <1>  %endif
   269                              <1>  %endif
   269 000001F3 B81F000000          <1>  mov eax, %1
   269                              <1> 
   269 000001F8 CD40                <1>  int 40h
   270                                  	
   271 000001FA E89B020000              	call	waitforkey
   272                                  
   273                                  	; masked XOR colors
   274                                  	;mov	edi, 0FFFF00h ; mask color is Yellow
   275 000001FF B92F2F2F00              	mov	ecx, 2F2F2Fh ; xor 2Fh with current color
   276 00000204 B326                    	mov	bl, 26h
   277                                  	sys	_video
   277                              <1> 
   277                              <1> 
   277                              <1> 
   277                              <1> 
   277                              <1>  %if %0 >= 2
   277                              <1>  mov ebx, %2
   277                              <1>  %if %0 >= 3
   277                              <1>  mov ecx, %3
   277                              <1>  %if %0 = 4
   277                              <1>  mov edx, %4
   277                              <1>  %endif
   277                              <1>  %endif
   277                              <1>  %endif
   277 00000206 B81F000000          <1>  mov eax, %1
   277                              <1> 
   277 0000020B CD40                <1>  int 40h
   278                                  
   279 0000020D E888020000              	call	waitforkey
   280                                  
   281                                  	; Full screen copy
   282 00000212 BE[C0050000]            	mov	esi, fullscreen_buffer
   283 00000217 89F7                    	mov	edi, esi
   284                                  
   285                                  	; Black
   286 00000219 B900190000              	mov	ecx, 640*10
   287 0000021E 31C0                    	xor	eax, eax ; black
   288                                  _l2s1:
   289 00000220 66AB                    	stosw
   290 00000222 AA                      	stosb
   291 00000223 E2FB                    	loop	_l2s1
   292                                  
   293                                  	; White
   294 00000225 B9800C0000              	mov	ecx, 640*5
   295 0000022A B8FFFFFF00              	mov	eax, 0FFFFFFh
   296                                  _l2w1:
   297 0000022F 66AB                    	stosw
   298 00000231 AA                      	stosb
   299 00000232 E2FB                    	loop	_l2w1
   300                                  
   301                                  	; Black
   302 00000234 B9800C0000              	mov	ecx, 640*5
   303 00000239 31C0                    	xor	eax, eax ; black
   304                                  _l2s2:
   305 0000023B 66AB                    	stosw
   306 0000023D AA                      	stosb
   307 0000023E E2FB                    	loop	_l2s2
   308                                  
   309                                  	; Blue
   310 00000240 B900130100              	mov	ecx, 640*110
   311                                  	;xor	eax, eax
   312                                  _l2b:
   313 00000245 B0FF                    	mov	al, 0FFh
   314 00000247 AA                      	stosb
   315 00000248 30C0                    	xor	al, al
   316 0000024A 66AB                    	stosw	
   317 0000024C E2F7                    	loop	_l2b
   318                                  
   319                                  	; Red
   320 0000024E B900130100              	mov	ecx, 640*110
   321                                  	;xor	eax, eax
   322                                  _l2r:
   323 00000253 66AB                    	stosw
   324 00000255 B0FF                    	mov	al, 0FFh
   325 00000257 AA                      	stosb
   326 00000258 30C0                    	xor	al, al
   327 0000025A E2F7                    	loop	_l2r
   328                                  
   329                                  	; Green
   330 0000025C B900130100              	mov	ecx, 640*110
   331                                  	;xor	eax, eax
   332                                  _l2g:
   333 00000261 AA                      	stosb
   334 00000262 B0FF                    	mov	al, 0FFh
   335 00000264 66AB                    	stosw
   336 00000266 30C0                    	xor	al, al
   337 00000268 E2F7                    	loop	_l2g
   338                                  
   339                                  	; Yellow
   340 0000026A B900130100              	mov	ecx, 640*110
   341 0000026F B4FF                    	mov	ah, 0FFh
   342                                  _l2y:
   343 00000271 30C0                    	xor	al, al
   344 00000273 AA                      	stosb
   345 00000274 B0FF                    	mov	al, 0FFh
   346 00000276 66AB                    	stosw
   347 00000278 E2F7                    	loop	_l2y
   348                                  
   349                                  	; Black
   350 0000027A B9800C0000              	mov	ecx, 640*5
   351 0000027F 31C0                    	xor	eax, eax ; black
   352                                  _l2s3:
   353 00000281 66AB                    	stosw
   354 00000283 AA                      	stosb
   355 00000284 E2FB                    	loop	_l2s3
   356                                  
   357                                  	; White
   358 00000286 B9800C0000              	mov	ecx, 640*5
   359 0000028B B8FFFFFF00              	mov	eax, 0FFFFFFh
   360                                  _l2w2:
   361 00000290 66AB                    	stosw
   362 00000292 AA                      	stosb
   363 00000293 E2FB                    	loop	_l2w2
   364                                  
   365                                  	; Black
   366 00000295 B900190000              	mov	ecx, 640*10
   367 0000029A 31C0                    	xor	eax, eax ; black
   368                                  _l2s4:
   369 0000029C 66AB                    	stosw
   370 0000029E AA                      	stosb
   371 0000029F E2FB                    	loop	_l2s4
   372                                  
   373 000002A1 BB00020000              	mov	ebx, 0200h ; Full screen copy
   374                                  	sys	_video
   374                              <1> 
   374                              <1> 
   374                              <1> 
   374                              <1> 
   374                              <1>  %if %0 >= 2
   374                              <1>  mov ebx, %2
   374                              <1>  %if %0 >= 3
   374                              <1>  mov ecx, %3
   374                              <1>  %if %0 = 4
   374                              <1>  mov edx, %4
   374                              <1>  %endif
   374                              <1>  %endif
   374                              <1>  %endif
   374 000002A6 B81F000000          <1>  mov eax, %1
   374                              <1> 
   374 000002AB CD40                <1>  int 40h
   375                                  
   376 000002AD E8E8010000              	call	waitforkey
   377                                  
   378 000002B2 C705[BC050000]FFFF-     	mov	dword [tcolor], 0FFFFFFh
   378 000002BA FF00               
   379                                  
   380 000002BC BE2B002B00              	mov	esi, 43*65536+43
   381 000002C1 BD[93050000]            	mov	ebp, txt_blue
   382 000002C6 E80A020000               	call	print_text
   383                                  	
   384 000002CB E8CA010000              	call	waitforkey
   385                                  
   386 000002D0 BE2B009900              	mov	esi, 153*65536+43
   387 000002D5 BD[98050000]            	mov	ebp, txt_red
   388 000002DA E8F6010000               	call	print_text
   389                                  	
   390 000002DF E8B6010000              	call	waitforkey
   391                                  
   392 000002E4 BE2B000701              	mov	esi, 263*65536+43
   393 000002E9 BD[9C050000]            	mov	ebp, txt_green
   394 000002EE E8E2010000               	call	print_text
   395                                  	
   396 000002F3 E8A2010000              	call	waitforkey
   397                                  
   398 000002F8 BE2B007501              	mov	esi, 373*65536+43
   399 000002FD BD[A2050000]            	mov	ebp, txt_yellow
   400 00000302 E8CE010000               	call	print_text
   401                                  	
   402 00000307 E88E010000              	call	waitforkey
   403                                  
   404 0000030C C705[BC050000]0000-     	mov	dword [tcolor], 0
   404 00000314 0000               
   405                                  
   406 00000316 BE2B000701              	mov	esi, 263*65536+43
   407 0000031B BD[9C050000]            	mov	ebp, txt_green
   408 00000320 E8B0010000               	call	print_text
   409                                  	
   410 00000325 E870010000              	call	waitforkey
   411                                  
   412 0000032A BE2B007501              	mov	esi, 373*65536+43
   413 0000032F BD[A2050000]            	mov	ebp, txt_yellow
   414 00000334 E89C010000               	call	print_text
   415                                  	
   416 00000339 E85C010000              	call	waitforkey
   417                                  
   418                                  	; Masked new color, window
   419                                  	; (blue block starts at row 20)
   420                                  	; ((white text color will be changed to black))
   421 0000033E BFFF000000              	mov	edi, 0FFh ; mask color, BLUE
   422 00000343 31C9                    	xor	ecx, ecx ; 0 ; BLACK (new color)
   423 00000345 BA28001400              	mov	edx, 20*65536+40 ; column 40, row 20
   424 0000034A BEA0006E00              	mov	esi, 110*65536+160 ; size: 110*160
   425 0000034F BB31020000              	mov	ebx, 0231h ; Masked new color in window
   426                                  	sys	_video
   426                              <1> 
   426                              <1> 
   426                              <1> 
   426                              <1> 
   426                              <1>  %if %0 >= 2
   426                              <1>  mov ebx, %2
   426                              <1>  %if %0 >= 3
   426                              <1>  mov ecx, %3
   426                              <1>  %if %0 = 4
   426                              <1>  mov edx, %4
   426                              <1>  %endif
   426                              <1>  %endif
   426                              <1>  %endif
   426 00000354 B81F000000          <1>  mov eax, %1
   426                              <1> 
   426 00000359 CD40                <1>  int 40h
   427                                  
   428 0000035B E83A010000              	call	waitforkey
   429                                  
   430                                  	; Masked AND colors, window
   431                                  	; (red block starts at row 130)
   432                                  	; ((white text color will be changed to black))
   433 00000360 BF0000FF00              	mov	edi, 0FF0000h ; mask color, RED
   434                                  	;xor	ecx, ecx ; BLACK (and color)
   435 00000365 BA28008200              	mov	edx, 130*65536+40 ; column 40, row 130
   436 0000036A BEA0006E00              	mov	esi, 110*65536+160 ; size: 110*160
   437                                  	;mov	ebx, 0235h ; Masked AND colors in window
   438 0000036F B335                    	mov	bl, 35h
   439                                  	sys	_video
   439                              <1> 
   439                              <1> 
   439                              <1> 
   439                              <1> 
   439                              <1>  %if %0 >= 2
   439                              <1>  mov ebx, %2
   439                              <1>  %if %0 >= 3
   439                              <1>  mov ecx, %3
   439                              <1>  %if %0 = 4
   439                              <1>  mov edx, %4
   439                              <1>  %endif
   439                              <1>  %endif
   439                              <1>  %endif
   439 00000371 B81F000000          <1>  mov eax, %1
   439                              <1> 
   439 00000376 CD40                <1>  int 40h
   440                                  
   441 00000378 E81D010000              	call	waitforkey
   442                                  
   443                                  	; Masked ADD to yellow block position
   444 0000037D 29FF                    	sub	edi, edi ; mask color, BLACK
   445 0000037F B188                    	mov	cl, 88h ; add 88h to current color
   446 00000381 BA00005E01              	mov	edx, 350*65536 ; column 0, row 350
   447 00000386 BE80026E00              	mov	esi, 110*65536+640 ; size: 110*640
   448                                  	;mov	ebx, 0232h ; add color, window, masked
   449 0000038B B332                    	mov	bl, 32h
   450                                  	sys	_video	
   450                              <1> 
   450                              <1> 
   450                              <1> 
   450                              <1> 
   450                              <1>  %if %0 >= 2
   450                              <1>  mov ebx, %2
   450                              <1>  %if %0 >= 3
   450                              <1>  mov ecx, %3
   450                              <1>  %if %0 = 4
   450                              <1>  mov edx, %4
   450                              <1>  %endif
   450                              <1>  %endif
   450                              <1>  %endif
   450 0000038D B81F000000          <1>  mov eax, %1
   450                              <1> 
   450 00000392 CD40                <1>  int 40h
   451                                  
   452 00000394 E801010000              	call	waitforkey
   453                                  
   454                                  	; Masked SUB from green block position
   455                                  	;sub	edi, edi ; mask color, BLACK
   456                                  	;mov	ecx, 88h ; sub 88h from current color
   457 00000399 BA0000F000              	mov	edx, 240*65536 ; column 0, row 240
   458                                  	;mov	esi, 110*65536+640 ; size: 110*640
   459                                  	;mov	ebx, 0233h ; sub color, window, masked
   460 0000039E B333                    	mov	bl, 33h
   461                                  	sys	_video	
   461                              <1> 
   461                              <1> 
   461                              <1> 
   461                              <1> 
   461                              <1>  %if %0 >= 2
   461                              <1>  mov ebx, %2
   461                              <1>  %if %0 >= 3
   461                              <1>  mov ecx, %3
   461                              <1>  %if %0 = 4
   461                              <1>  mov edx, %4
   461                              <1>  %endif
   461                              <1>  %endif
   461                              <1>  %endif
   461 000003A0 B81F000000          <1>  mov eax, %1
   461                              <1> 
   461 000003A5 CD40                <1>  int 40h
   462                                  
   463 000003A7 E8EE000000              	call	waitforkey
   464                                  
   465                                  	; Masked SUB from yellow block position
   466                                  	;sub	edi, edi ; mask color, BLACK
   467                                  	;mov	cl, 88h ; add 88h to current color
   468 000003AC BA00005E01              	mov	edx, 350*65536 ; column 0, row 350
   469                                  	;mov	esi, 110*65536+640 ; size: 110*640
   470                                  	;mov	ebx, 0233h ; sub color, window, masked
   471                                  	sys	_video	
   471                              <1> 
   471                              <1> 
   471                              <1> 
   471                              <1> 
   471                              <1>  %if %0 >= 2
   471                              <1>  mov ebx, %2
   471                              <1>  %if %0 >= 3
   471                              <1>  mov ecx, %3
   471                              <1>  %if %0 = 4
   471                              <1>  mov edx, %4
   471                              <1>  %endif
   471                              <1>  %endif
   471                              <1>  %endif
   471 000003B1 B81F000000          <1>  mov eax, %1
   471                              <1> 
   471 000003B6 CD40                <1>  int 40h
   472                                  
   473 000003B8 E8DD000000              	call	waitforkey
   474                                  
   475                                  	; Masked ADD to green block position
   476                                  	;sub	edi, edi ; mask color, BLACK
   477                                  	;mov	cl, 88h ; sub 88h from current color
   478 000003BD BA0000F000              	mov	edx, 240*65536 ; column 0, row 240
   479                                  	;mov	esi, 110*65536+640 ; size: 110*640
   480                                  	;mov	ebx, 0232h ; add color, window, masked
   481 000003C2 B332                    	mov	bl, 32h
   482                                  	sys	_video	
   482                              <1> 
   482                              <1> 
   482                              <1> 
   482                              <1> 
   482                              <1>  %if %0 >= 2
   482                              <1>  mov ebx, %2
   482                              <1>  %if %0 >= 3
   482                              <1>  mov ecx, %3
   482                              <1>  %if %0 = 4
   482                              <1>  mov edx, %4
   482                              <1>  %endif
   482                              <1>  %endif
   482                              <1>  %endif
   482 000003C4 B81F000000          <1>  mov eax, %1
   482                              <1> 
   482 000003C9 CD40                <1>  int 40h
   483                                  
   484 000003CB E8CA000000              	call	waitforkey
   485                                  
   486                                  	; Masked OR colors, window
   487                                  	; (white block starts at row 10)
   488 000003D0 BFFF000000              	mov	edi, 0FFh ; mask color, BLUE
   489 000003D5 B900808000              	mov	ecx, 808000h ; OR value (with current color)
   490 000003DA BA00000A00              	mov	edx, 10*65536+0 ; column 0, row 10
   491 000003DF BE80027800              	mov	esi, 120*65536+640 ; size: 120*640
   492 000003E4 BB34020000              	mov	ebx, 0234h ; Masked OR colors in window
   493                                  	sys	_video
   493                              <1> 
   493                              <1> 
   493                              <1> 
   493                              <1> 
   493                              <1>  %if %0 >= 2
   493                              <1>  mov ebx, %2
   493                              <1>  %if %0 >= 3
   493                              <1>  mov ecx, %3
   493                              <1>  %if %0 = 4
   493                              <1>  mov edx, %4
   493                              <1>  %endif
   493                              <1>  %endif
   493                              <1>  %endif
   493 000003E9 B81F000000          <1>  mov eax, %1
   493                              <1> 
   493 000003EE CD40                <1>  int 40h
   494                                  
   495 000003F0 E8A5000000              	call	waitforkey
   496                                  
   497                                  	; Masked XOR colors, window
   498                                  	; (white block starts at row 465)
   499 000003F5 BF00FFFF00              	mov	edi, 0FFFF00h ; mask color, YELLOW
   500 000003FA B94F4F4F00              	mov	ecx, 4F4F4Fh ; XOR value (with current color)
   501 000003FF BA00005E01              	mov	edx, 350*65536+0 ; column 0, row 465
   502 00000404 BE80027800              	mov	esi, 120*65536+640 ; size: 120*640
   503                                  	;mov	ebx, 0236h ; Masked XOR colors in window
   504 00000409 B334                    	mov	bl, 34h
   505                                  	sys	_video
   505                              <1> 
   505                              <1> 
   505                              <1> 
   505                              <1> 
   505                              <1>  %if %0 >= 2
   505                              <1>  mov ebx, %2
   505                              <1>  %if %0 >= 3
   505                              <1>  mov ecx, %3
   505                              <1>  %if %0 = 4
   505                              <1>  mov edx, %4
   505                              <1>  %endif
   505                              <1>  %endif
   505                              <1>  %endif
   505 0000040B B81F000000          <1>  mov eax, %1
   505                              <1> 
   505 00000410 CD40                <1>  int 40h
   506                                  
   507 00000412 E883000000              	call	waitforkey
   508                                  
   509                                  	; Masked mix color, window
   510                                  	; (blue block starts at row 20)
   511 00000417 BFFF000000              	mov	edi, 0FFh ; mask color, BLUE
   512 0000041C B930303000              	mov	ecx, 303030h
   513 00000421 BA28001400              	mov	edx, 20*65536+40 ; column 40, row 20
   514 00000426 BEA0006E00              	mov	esi, 110*65536+160 ; size: 110*160
   515                                  	;mov	ebx, 023Bh ; Masked mix colors in window
   516 0000042B B33B                    	mov	bl, 3Bh
   517                                  	sys	_video
   517                              <1> 
   517                              <1> 
   517                              <1> 
   517                              <1> 
   517                              <1>  %if %0 >= 2
   517                              <1>  mov ebx, %2
   517                              <1>  %if %0 >= 3
   517                              <1>  mov ecx, %3
   517                              <1>  %if %0 = 4
   517                              <1>  mov edx, %4
   517                              <1>  %endif
   517                              <1>  %endif
   517                              <1>  %endif
   517 0000042D B81F000000          <1>  mov eax, %1
   517                              <1> 
   517 00000432 CD40                <1>  int 40h
   518                                  
   519 00000434 E861000000              	call	waitforkey
   520                                  
   521                                  	; Masked mix color, window
   522                                  	; (red block starts at row 130)
   523 00000439 BF0000FF00              	mov	edi, 0FF0000h ; mask color, RED
   524 0000043E B98E8E8E00              	mov	ecx, 8E8E8Eh
   525 00000443 BA28008200              	mov	edx, 130*65536+40 ; column 40, row 130
   526 00000448 BEA0006E00              	mov	esi, 110*65536+160 ; size: 110*160
   527                                  	;mov	ebx, 023Bh ; Masked mix colors in window
   528                                  	sys	_video
   528                              <1> 
   528                              <1> 
   528                              <1> 
   528                              <1> 
   528                              <1>  %if %0 >= 2
   528                              <1>  mov ebx, %2
   528                              <1>  %if %0 >= 3
   528                              <1>  mov ecx, %3
   528                              <1>  %if %0 = 4
   528                              <1>  mov edx, %4
   528                              <1>  %endif
   528                              <1>  %endif
   528                              <1>  %endif
   528 0000044D B81F000000          <1>  mov eax, %1
   528                              <1> 
   528 00000452 CD40                <1>  int 40h
   529                                  
   530 00000454 E841000000              	call	waitforkey
   531                                  
   532                                  	; Masked mix color, window
   533                                  	; (red block starts at row 130)
   534 00000459 BF00FF0000              	mov	edi, 0FF00h ; mask color, GREEN
   535 0000045E B980808000              	mov	ecx, 808080h
   536 00000463 BA2800F000              	mov	edx, 240*65536+40 ; column 240, row 130
   537 00000468 BEB4006E00              	mov	esi, 110*65536+180 ; size: 110*180
   538                                  	;mov	ebx, 023Bh ; Masked mix colors in window
   539                                  	sys	_video
   539                              <1> 
   539                              <1> 
   539                              <1> 
   539                              <1> 
   539                              <1>  %if %0 >= 2
   539                              <1>  mov ebx, %2
   539                              <1>  %if %0 >= 3
   539                              <1>  mov ecx, %3
   539                              <1>  %if %0 = 4
   539                              <1>  mov edx, %4
   539                              <1>  %endif
   539                              <1>  %endif
   539                              <1>  %endif
   539 0000046D B81F000000          <1>  mov eax, %1
   539                              <1> 
   539 00000472 CD40                <1>  int 40h
   540                                  
   541 00000474 E821000000              	call	waitforkey
   542                                  
   543                                  	; copy full screen buffer to screen
   544 00000479 BE[C0050000]            	mov	esi, fullscreen_buffer
   545                                  	;mov	ebx, 0200h
   546 0000047E 30DB                    	xor	bl, bl ; mov bl, 0
   547                                  	sys	_video
   547                              <1> 
   547                              <1> 
   547                              <1> 
   547                              <1> 
   547                              <1>  %if %0 >= 2
   547                              <1>  mov ebx, %2
   547                              <1>  %if %0 >= 3
   547                              <1>  mov ecx, %3
   547                              <1>  %if %0 = 4
   547                              <1>  mov edx, %4
   547                              <1>  %endif
   547                              <1>  %endif
   547                              <1>  %endif
   547 00000480 B81F000000          <1>  mov eax, %1
   547                              <1> 
   547 00000485 CD40                <1>  int 40h
   548                                  	
   549 00000487 E80E000000              	call	waitforkey  
   550                                  		; wait for key stroke before exit
   551                                  terminate:
   552 0000048C E82C000000              	call	set_text_mode
   553                                  	sys	_exit
   553                              <1> 
   553                              <1> 
   553                              <1> 
   553                              <1> 
   553                              <1>  %if %0 >= 2
   553                              <1>  mov ebx, %2
   553                              <1>  %if %0 >= 3
   553                              <1>  mov ecx, %3
   553                              <1>  %if %0 = 4
   553                              <1>  mov edx, %4
   553                              <1>  %endif
   553                              <1>  %endif
   553                              <1>  %endif
   553 00000491 B801000000          <1>  mov eax, %1
   553                              <1> 
   553 00000496 CD40                <1>  int 40h
   554                                  halt:
   555 00000498 EBFE                    	jmp	short halt
   556                                  
   557                                  waitforkey:
   558 0000049A B401                    	mov	ah, 1
   559 0000049C CD32                    	int	32h
   560 0000049E 740B                    	jz	short getkey
   561 000004A0 FF05[B8050000]          	inc	dword [counter]
   562 000004A6 90                      	nop
   563 000004A7 90                      	nop
   564 000004A8 90                      	nop
   565 000004A9 EBEF                    	jmp	short waitforkey
   566                                  getkey:
   567 000004AB 30E4                    	xor	ah, ah
   568 000004AD CD32                    	int	32h
   569                                  
   570 000004AF 663D032E                	cmp	ax, 2E03h
   571 000004B3 7405                    	je	short _terminate
   572 000004B5 3C1B                    	cmp	al, 1Bh ; ESC key
   573 000004B7 7401                    	je	short _terminate
   574 000004B9 C3                      	retn
   575                                  _terminate:
   576 000004BA 58                      	pop	eax ; return address
   577 000004BB EBCF                    	jmp	short terminate
   578                                  	
   579                                  set_text_mode:
   580 000004BD 30E4                    	xor    ah, ah
   581 000004BF B003                    	mov    al, 3                        
   582                                   	;int   10h ; al = 03h text mode, int 10 video
   583 000004C1 CD31                    	int    31h ; TRDOS 386 - Video interrupt
   584 000004C3 C3                      	retn
   585                                  
   586                                  print_msg:
   587 000004C4 B40E                    	mov	ah, 0Eh
   588 000004C6 BB07000000              	mov	ebx, 7
   589                                  	;mov	bl, 7 ; char attribute & color
   590                                  p_next_chr:
   591 000004CB AC                      	lodsb
   592 000004CC 08C0                    	or	al, al
   593 000004CE 7404                    	jz	short p_retn ; retn	
   594 000004D0 CD31                    	int	31h
   595 000004D2 EBF7                    	jmp	short p_next_chr
   596                                  p_retn:
   597 000004D4 C3                      	retn
   598                                  
   599                                  print_text:
   600                                  	; ebp = text address
   601                                  	; esi = row/column position (si = column)
   602                                  p_d_x:
   603                                  	;mov	dh, 0 ; 8x16 system font
   604 000004D5 B606                    	mov	dh, 6 ; 32*64 scaled font (base: 8*16 system font) 
   605                                  p_d_x_n:
   606 000004D7 8A5500                  	mov	dl, [ebp]
   607 000004DA 20D2                    	and	dl, dl
   608 000004DC 7419                    	jz	short p_d_x_ok
   609                                  	sys	_video, 020Fh, [tcolor] 
   609                              <1> 
   609                              <1> 
   609                              <1> 
   609                              <1> 
   609                              <1>  %if %0 >= 2
   609 000004DE BB0F020000          <1>  mov ebx, %2
   609                              <1>  %if %0 >= 3
   609 000004E3 8B0D[BC050000]      <1>  mov ecx, %3
   609                              <1>  %if %0 = 4
   609                              <1>  mov edx, %4
   609                              <1>  %endif
   609                              <1>  %endif
   609                              <1>  %endif
   609 000004E9 B81F000000          <1>  mov eax, %1
   609                              <1> 
   609 000004EE CD40                <1>  int 40h
   610 000004F0 45                      	inc	ebp
   611 000004F1 6683C624                	add	si, 36 ; next char pos
   612 000004F5 EBE0                    	jmp	short p_d_x_n
   613                                  p_d_x_ok:
   614 000004F7 C3                      	retn
   615                                  
   616                                  program_msg:
   617 000004F8 5452444F5320333836-     	db "TRDOS 386 v2.0.3 - ('sysvideo') Test Program - Block Operations"
   617 00000501 2076322E302E33202D-
   617 0000050A 202827737973766964-
   617 00000513 656F27292054657374-
   617 0000051C 2050726F6772616D20-
   617 00000525 2D20426C6F636B204F-
   617 0000052E 7065726174696F6E73 
   618 00000537 0D0A                    	db 0Dh, 0Ah
   619 00000539 6279204572646F6761-     	db "by Erdogan Tan - 02/03/2021"
   619 00000542 6E2054616E202D2030-
   619 0000054B 322F30332F32303231 
   620                                  	;db 0Dh, 0Ah, 0
   621 00000554 0D0A0D0A                	db 0Dh, 0Ah, 0Dh, 0Ah
   622 00000558 507265737320616E79-     	db "Press any key to continue .."
   622 00000561 206B657920746F2063-
   622 0000056A 6F6E74696E7565202E-
   622 00000573 2E                 
   623 00000574 0D0A                    	db 0Dh, 0Ah	
   624 00000576 285072657373204553-     	db "(Press ESC to exit) .."
   624 0000057F 4320746F2065786974-
   624 00000588 29202E2E           
   625 0000058C 0D0A                    	db 0Dh, 0Ah
   626 0000058E 0D0A                    	db 0Dh, 0Ah
   627                                  
   628                                  nextline:
   629 00000590 0D0A00                  	db 0Dh, 0Ah, 0
   630                                  
   631                                  txt_blue:
   632 00000593 424C554500              	db "BLUE", 0
   633                                  txt_red:
   634 00000598 52454400                	db "RED", 0
   635                                  txt_green:
   636 0000059C 475245454E00            	db "GREEN", 0
   637                                  txt_yellow:
   638 000005A2 59454C4C4F5700          	db "YELLOW", 0
   639                                  txt_white:
   640 000005A9 574849544500            	db "WHITE", 0
   641                                  txt_black:
   642 000005AF 424C41434B00            	db "BLACK", 0
   643                                  	
   644                                  bss:
   645                                  
   646                                  ABSOLUTE bss
   647                                  
   648 000005B5 <res 00000003>          alignb 4
   649                                  
   650                                  counter:
   651 000005B8 <res 00000004>          	resd 1	
   652                                  
   653                                  bss_start:
   654 000005BC <res 00000004>          tcolor: resd 1
   655                                  
   656                                  fullscreen_buffer:
   657 000005C0 <res 000E1000>          	resb 307200*3
   658                                  bss_end:
