     1                                  ; ****************************************************************************
     2                                  ; bin2db2.s (TRDOS 386, TRDOS v2.0 - sample binary file, 'bin2db2.prg')
     3                                  ; ----------------------------------------------------------------------------
     4                                  ; BIN2DB2.PRG ! 'sysseek', 'sysread', 'syswrite' TEST program for TRDOS 386 !
     5                                  ;
     6                                  ; 06/11/2016
     7                                  ;
     8                                  ; [ Last Modification: 06/11/2016 ]
     9                                  ;
    10                                  ; ****************************************************************************
    11                                  
    12                                  ; 16/10/2016
    13                                  ; 29/04/2016
    14                                  ; TRDOS 386 system calls (temporary list!)
    15                                  _ver 	equ 0
    16                                  _exit 	equ 1
    17                                  _fork 	equ 2
    18                                  _read 	equ 3
    19                                  _write	equ 4
    20                                  _open	equ 5
    21                                  _close 	equ 6
    22                                  _wait 	equ 7
    23                                  _creat 	equ 8
    24                                  _link 	equ 9
    25                                  _unlink	equ 10
    26                                  _exec	equ 11
    27                                  _chdir	equ 12
    28                                  _time 	equ 13
    29                                  _mkdir 	equ 14
    30                                  _chmod	equ 15
    31                                  _chown	equ 16
    32                                  _break	equ 17
    33                                  _stat	equ 18
    34                                  _seek	equ 19
    35                                  _tell 	equ 20
    36                                  _mount	equ 21
    37                                  _umount	equ 22
    38                                  _setuid	equ 23
    39                                  _getuid	equ 24
    40                                  _stime	equ 25
    41                                  _quit	equ 26	
    42                                  _intr	equ 27
    43                                  _fstat	equ 28
    44                                  _emt 	equ 29
    45                                  _mdate 	equ 30
    46                                  _video 	equ 31
    47                                  _audio	equ 32
    48                                  _timer	equ 33
    49                                  _sleep	equ 34
    50                                  _msg    equ 35
    51                                  _geterr	equ 36
    52                                  _rsvd1	equ 37
    53                                  _pri	equ 38
    54                                  _rele	equ 39
    55                                  _fff	equ 40
    56                                  _fnf	equ 41
    57                                  
    58                                  %macro sys 1-4
    59                                      ; 29/04/2016 - TRDOS 386 (TRDOS v2.0)	
    60                                      ; 03/09/2015	
    61                                      ; 13/04/2015
    62                                      ; Retro UNIX 386 v1 system call.		
    63                                      %if %0 >= 2   
    64                                          mov ebx, %2
    65                                          %if %0 >= 3    
    66                                              mov ecx, %3
    67                                              %if %0 = 4
    68                                                 mov edx, %4   
    69                                              %endif
    70                                          %endif
    71                                      %endif
    72                                      mov eax, %1
    73                                      ;int 30h
    74                                      int 40h ; TRDOS 386 (TRDOS v2.0)		   
    75                                  %endmacro
    76                                  
    77                                  ; TRDOS 386 (and Retro UNIX 386 v1) system call format:
    78                                  ; sys systemcall (eax) <arg1 (ebx)>, <arg2 (ecx)>, <arg3 (edx)>
    79                                  
    80                                  [BITS 32] ; We need 32-bit intructions for protected mode
    81                                  
    82                                  [ORG 0] 
    83                                  
    84                                  START_CODE:
    85 00000000 89E6                    	mov	esi, esp
    86 00000002 AD                      	lodsd
    87 00000003 83F802                  	cmp	eax, 2 ; two arguments (program file name & binary file name)
    88 00000006 0F8293010000            	jb	prg_msg ; nothing to do
    89 0000000C 741F                    	je	short a_1
    90 0000000E 83F804                  	cmp	eax, 4
    91 00000011 0F8288010000            	jb	prg_msg ; wrong arguments (offset and byte count are needed)
    92                                  
    93 00000017 FE05[25040000]          	inc	byte [args]
    94 0000001D 8B4608                  	mov	eax, [esi+8] ; offset
    95 00000020 A3[28040000]            	mov	[arg_offset], eax
    96 00000025 8B460C                  	mov	eax, [esi+12] ; byte count
    97 00000028 A3[2C040000]            	mov	[arg_bcount], eax
    98                                  a_1:
    99 0000002D AD                      	lodsd ; program file name address 
   100 0000002E AD                      	lodsd ; binary file name address (file to be read)
   101                                  	; EAX = arg2 ; file name address
   102                                  
   103                                  open_bin_file:
   104                                  	sys	_open, eax, 0 ; open for reading
   104                              <1> 
   104                              <1> 
   104                              <1> 
   104                              <1> 
   104                              <1>  %if %0 >= 2
   104 0000002F 89C3                <1>  mov ebx, %2
   104                              <1>  %if %0 >= 3
   104 00000031 B900000000          <1>  mov ecx, %3
   104                              <1>  %if %0 = 4
   104                              <1>  mov edx, %4
   104                              <1>  %endif
   104                              <1>  %endif
   104                              <1>  %endif
   104 00000036 B805000000          <1>  mov eax, %1
   104                              <1> 
   104 0000003B CD40                <1>  int 40h
   105 0000003D 0F828A010000            	jc	open_error
   106                                  
   107 00000043 A3[30040000]            	mov	[fhandle], eax ; file handle/index number
   108                                  
   109 00000048 29C0                    	sub	eax, eax
   110 0000004A 48                      	dec	eax
   111 0000004B A3[3C040000]            	mov	[fbcount], eax ; 0FFFFFFFFh ; byte count
   112                                  
   113 00000050 803D[25040000]00        	cmp	byte [args], 0
   114 00000057 7651                    	jna	short a_2
   115                                  
   116 00000059 BF[38040000]            	mov	edi, foffset
   117 0000005E 8B35[28040000]          	mov	esi, [arg_offset]
   118                                  
   119 00000064 E8C9010000              	call	check_and_set_numbers
   120 00000069 0F8271010000            	jc	args_error
   121 0000006F C605[25040000]01        	mov	byte [args], 1 ; reset
   122 00000076 BF[3C040000]            	mov	edi, fbcount
   123 0000007B 8B35[2C040000]          	mov	esi, [arg_bcount]
   124 00000081 E8AC010000              	call	check_and_set_numbers		
   125 00000086 0F8254010000            	jc	args_error
   126                                  
   127                                  	sys	_seek, [fhandle], [foffset], 0
   127                              <1> 
   127                              <1> 
   127                              <1> 
   127                              <1> 
   127                              <1>  %if %0 >= 2
   127 0000008C 8B1D[30040000]      <1>  mov ebx, %2
   127                              <1>  %if %0 >= 3
   127 00000092 8B0D[38040000]      <1>  mov ecx, %3
   127                              <1>  %if %0 = 4
   127 00000098 BA00000000          <1>  mov edx, %4
   127                              <1>  %endif
   127                              <1>  %endif
   127                              <1>  %endif
   127 0000009D B813000000          <1>  mov eax, %1
   127                              <1> 
   127 000000A2 CD40                <1>  int 40h
   128 000000A4 0F8208010000             	jc	seek_error	; disk read or memory allocation error
   129                                  a_2:
   130 000000AA C605[24040000]0E        	mov	byte [color], 0Eh ; Yellow
   131 000000B1 BE[F8030000]            	mov	esi, msg_reading
   132 000000B6 E865010000              	call	print_msg
   133                                  
   134                                  read_file:
   135                                  	sys	_read, [fhandle], BUFFER, [fbcount] 
   135                              <1> 
   135                              <1> 
   135                              <1> 
   135                              <1> 
   135                              <1>  %if %0 >= 2
   135 000000BB 8B1D[30040000]      <1>  mov ebx, %2
   135                              <1>  %if %0 >= 3
   135 000000C1 B9[40040000]        <1>  mov ecx, %3
   135                              <1>  %if %0 = 4
   135 000000C6 8B15[3C040000]      <1>  mov edx, %4
   135                              <1>  %endif
   135                              <1>  %endif
   135                              <1>  %endif
   135 000000CC B803000000          <1>  mov eax, %1
   135                              <1> 
   135 000000D1 CD40                <1>  int 40h
   136 000000D3 0F821B010000             	jc	rw_error	; disk read or memory allocation error
   137                                  
   138 000000D9 A3[34040000]            	mov	[fsize], eax ; file size (read bytes)
   139                                  
   140 000000DE E831010000              	call	print_msg_ok
   141                                  
   142                                  close_bin_file:
   143                                  	sys	_close, [fhandle] ; close file
   143                              <1> 
   143                              <1> 
   143                              <1> 
   143                              <1> 
   143                              <1>  %if %0 >= 2
   143 000000E3 8B1D[30040000]      <1>  mov ebx, %2
   143                              <1>  %if %0 >= 3
   143                              <1>  mov ecx, %3
   143                              <1>  %if %0 = 4
   143                              <1>  mov edx, %4
   143                              <1>  %endif
   143                              <1>  %endif
   143                              <1>  %endif
   143 000000E9 B806000000          <1>  mov eax, %1
   143                              <1> 
   143 000000EE CD40                <1>  int 40h
   144                                  
   145                                  convert_byte_to_db:
   146 000000F0 BE[40040000]            	mov	esi, BUFFER
   147 000000F5 89F2                    	mov	edx, esi
   148 000000F7 0315[34040000]          	add	edx, [fsize]
   149 000000FD 89D7                    	mov	edi, edx 
   150                                  
   151 000000FF 31C9                    	xor	ecx, ecx
   152                                  c_0:
   153 00000101 B108                    	mov	cl, 8
   154                                  c_1:
   155 00000103 66B86462                	mov	ax, 'db'
   156 00000107 66AB                    	stosw
   157 00000109 B020                    	mov	al, ' '
   158 0000010B AA                      	stosb
   159                                  c_2: 
   160 0000010C AC                      	lodsb
   161 0000010D E8B7010000              	call	hex
   162 00000112 3C39                    	cmp	al, '9'
   163 00000114 7604                    	jna	short c_3	
   164                                  
   165 00000116 C60730                  	mov	byte [edi], '0'
   166 00000119 47                      	inc	edi
   167                                  c_3:
   168 0000011A 66AB                    	stosw
   169 0000011C B068                    	mov	al, 'h'
   170 0000011E AA                      	stosb
   171                                  
   172 0000011F FF0D[34040000]          	dec	dword [fsize]
   173 00000125 7414                    	jz	short c_5
   174                                  
   175 00000127 FEC9                    	dec	cl
   176 00000129 7408                    	jz	short c_4
   177                                  
   178 0000012B 66B82C20                	mov	ax, ', '
   179 0000012F 66AB                    	stosw
   180 00000131 EBD9                    	jmp	short c_2
   181                                  c_4:
   182 00000133 66B80D0A                	mov 	ax, 0A0Dh
   183 00000137 66AB                    	stosw
   184 00000139 EBC6                    	jmp	short c_0
   185                                  c_5:
   186 0000013B 66B80D0A                	mov 	ax, 0A0Dh
   187 0000013F 66AB                    	stosw
   188                                  
   189                                  create_txt_file:
   190                                  	sys	_creat, txt_file, 0 ; create (normal) file
   190                              <1> 
   190                              <1> 
   190                              <1> 
   190                              <1> 
   190                              <1>  %if %0 >= 2
   190 00000141 BB[19040000]        <1>  mov ebx, %2
   190                              <1>  %if %0 >= 3
   190 00000146 B900000000          <1>  mov ecx, %3
   190                              <1>  %if %0 = 4
   190                              <1>  mov edx, %4
   190                              <1>  %endif
   190                              <1>  %endif
   190                              <1>  %endif
   190 0000014B B808000000          <1>  mov eax, %1
   190                              <1> 
   190 00000150 CD40                <1>  int 40h
   191 00000152 7272                    	jc	short create_error
   192                                  
   193 00000154 A3[30040000]            	mov	[fhandle], eax
   194                                  
   195 00000159 C605[24040000]0B        	mov	byte [color], 0Bh ; Light Cyan
   196 00000160 BE[06040000]            	mov	esi, msg_writing
   197 00000165 E8B6000000              	call	print_msg
   198                                  
   199 0000016A 29D7                    	sub	edi, edx ; file size 
   200                                  	; edx = start address of the text
   201                                  
   202                                  	sys	_write, [fhandle], edx, edi ; write to 'BIN2DB.TXT' 
   202                              <1> 
   202                              <1> 
   202                              <1> 
   202                              <1> 
   202                              <1>  %if %0 >= 2
   202 0000016C 8B1D[30040000]      <1>  mov ebx, %2
   202                              <1>  %if %0 >= 3
   202 00000172 89D1                <1>  mov ecx, %3
   202                              <1>  %if %0 = 4
   202 00000174 89FA                <1>  mov edx, %4
   202                              <1>  %endif
   202                              <1>  %endif
   202                              <1>  %endif
   202 00000176 B804000000          <1>  mov eax, %1
   202                              <1> 
   202 0000017B CD40                <1>  int 40h
   203 0000017D 7275                     	jc	short rw_error  ; disk write (or free space) error
   204                                  
   205 0000017F E890000000              	call	print_msg_ok
   206                                  
   207                                  	sys	_close, [fhandle] ; close file
   207                              <1> 
   207                              <1> 
   207                              <1> 
   207                              <1> 
   207                              <1>  %if %0 >= 2
   207 00000184 8B1D[30040000]      <1>  mov ebx, %2
   207                              <1>  %if %0 >= 3
   207                              <1>  mov ecx, %3
   207                              <1>  %if %0 = 4
   207                              <1>  mov edx, %4
   207                              <1>  %endif
   207                              <1>  %endif
   207                              <1>  %endif
   207 0000018A B806000000          <1>  mov eax, %1
   207                              <1> 
   207 0000018F CD40                <1>  int 40h
   208                                  
   209 00000191 C605[24040000]07        	mov	byte [color], 07h ; Light Gray (Default Color)
   210 00000198 BE[EA030000]            	mov	esi, nextline
   211 0000019D EB05                    	jmp	short print_nl
   212                                  
   213                                  prg_msg:
   214 0000019F BE[F1020000]            	mov	esi, msg_program
   215                                  print_nl:
   216 000001A4 E877000000              	call	print_msg	
   217                                  terminate:
   218                                  	sys 	_exit			   ; INT 40h
   218                              <1> 
   218                              <1> 
   218                              <1> 
   218                              <1> 
   218                              <1>  %if %0 >= 2
   218                              <1>  mov ebx, %2
   218                              <1>  %if %0 >= 3
   218                              <1>  mov ecx, %3
   218                              <1>  %if %0 = 4
   218                              <1>  mov edx, %4
   218                              <1>  %endif
   218                              <1>  %endif
   218                              <1>  %endif
   218 000001A9 B801000000          <1>  mov eax, %1
   218                              <1> 
   218 000001AE CD40                <1>  int 40h
   219                                  here:
   220 000001B0 EBFE                    	jmp	short here
   221                                  
   222                                  seek_error:
   223                                  	sys	_close, [fhandle] ; close file
   223                              <1> 
   223                              <1> 
   223                              <1> 
   223                              <1> 
   223                              <1>  %if %0 >= 2
   223 000001B2 8B1D[30040000]      <1>  mov ebx, %2
   223                              <1>  %if %0 >= 3
   223                              <1>  mov ecx, %3
   223                              <1>  %if %0 = 4
   223                              <1>  mov edx, %4
   223                              <1>  %endif
   223                              <1>  %endif
   223                              <1>  %endif
   223 000001B8 B806000000          <1>  mov eax, %1
   223                              <1> 
   223 000001BD CD40                <1>  int 40h
   224 000001BF BE[C3030000]            	mov	esi, msg_seek_error
   225 000001C4 EB0C                    	jmp	short open_create_error
   226                                  create_error:
   227 000001C6 BE[D7030000]            	mov	esi, msg_create_error
   228 000001CB EB05                    	jmp	short open_create_error
   229                                  open_error:
   230 000001CD BE[83030000]            	mov	esi, msg_open_error
   231                                  open_create_error:
   232 000001D2 C605[24040000]0C        	mov	byte [color], 0Ch ; Light Red
   233 000001D9 E842000000              	call	print_msg		   ; INT 31h
   234 000001DE EBC9                    	jmp	short terminate	
   235                                  
   236                                  args_error:
   237                                  	sys	_close, [fhandle] ; close file
   237                              <1> 
   237                              <1> 
   237                              <1> 
   237                              <1> 
   237                              <1>  %if %0 >= 2
   237 000001E0 8B1D[30040000]      <1>  mov ebx, %2
   237                              <1>  %if %0 >= 3
   237                              <1>  mov ecx, %3
   237                              <1>  %if %0 = 4
   237                              <1>  mov edx, %4
   237                              <1>  %endif
   237                              <1>  %endif
   237                              <1>  %endif
   237 000001E6 B806000000          <1>  mov eax, %1
   237                              <1> 
   237 000001EB CD40                <1>  int 40h
   238 000001ED BE[97030000]            	mov	esi, msg_args_error
   239 000001F2 EBDE                    	jmp	short open_create_error
   240                                  
   241                                  rw_error:
   242                                  	sys	_close, [fhandle] ; close file
   242                              <1> 
   242                              <1> 
   242                              <1> 
   242                              <1> 
   242                              <1>  %if %0 >= 2
   242 000001F4 8B1D[30040000]      <1>  mov ebx, %2
   242                              <1>  %if %0 >= 3
   242                              <1>  mov ecx, %3
   242                              <1>  %if %0 = 4
   242                              <1>  mov edx, %4
   242                              <1>  %endif
   242                              <1>  %endif
   242                              <1>  %endif
   242 000001FA B806000000          <1>  mov eax, %1
   242                              <1> 
   242 000001FF CD40                <1>  int 40h
   243 00000201 C605[24040000]0C        	mov	byte [color], 0Ch ; Light Red
   244 00000208 BE[ED030000]            	mov	esi, msg_error
   245 0000020D E80E000000              	call	print_msg		   ; INT 31h
   246 00000212 EB95                    	jmp	short terminate
   247                                  
   248                                  print_msg_ok:
   249 00000214 C605[24040000]0A        	mov	byte [color], 0Ah ; Light Green
   250 0000021B BE[14040000]            	mov	esi, msg_ok
   251                                  print_msg:
   252 00000220 0FB61D[24040000]        	movzx	ebx, byte [color] ; text color (bl)
   253                                  		               ; video page 0 (bh)
   254 00000227 B40E                    	mov	ah, 0Eh ; teletype output (write tty)
   255 00000229 AC                      	lodsb
   256                                  _p_nextchar:
   257 0000022A CD31                    	int	31h
   258 0000022C AC                      	lodsb
   259 0000022D 20C0                    	and	al, al
   260 0000022F 75F9                    	jnz	short _p_nextchar
   261 00000231 C3                      	retn
   262                                  
   263                                  check_and_set_numbers:
   264                                  	; edi = number (destination) address
   265                                  	; esi = argument address (offset or byte count)
   266                                  	; ecx = 0
   267 00000232 89F3                    	mov	ebx, esi
   268 00000234 31C0                    	xor	eax, eax
   269 00000236 8907                    	mov	[edi], eax ; 0 ; reset
   270 00000238 B102                    	mov	cl, 2
   271                                  b_0:
   272 0000023A AC                      	lodsb
   273 0000023B 3C30                    	cmp	al, '0'
   274 0000023D 7238                    	jb	short b_4
   275 0000023F 3C39                    	cmp	al, '9'
   276 00000241 76F7                    	jna	short b_0
   277 00000243 840D[25040000]          	test	[args], cl ; 2
   278 00000249 7506                    	jnz	short b_1 ; 2 or 3
   279 0000024B 880D[25040000]          	mov	[args], cl ; 2
   280                                  b_1:
   281 00000251 24DF                    	and	al, 0DFh
   282 00000253 3C41                    	cmp	al, 'A'
   283 00000255 7216                     	jb	short b_err
   284 00000257 3C46                    	cmp	al, 'F'
   285 00000259 76DF                    	jna	short b_0
   286 0000025B 3C48                    	cmp	al, 'H'
   287 0000025D 750D                     	jne	short b_2
   288 0000025F 380D[25040000]          	cmp	[args], cl ; 2	
   289 00000265 7705                    	ja	short b_2 ; double 'H' !?
   290 00000267 43                      	inc	ebx
   291 00000268 39F3                    	cmp	ebx, esi ; 1 digit at least
   292 0000026A 7202                    	jb	short b_3
   293                                  b_2: 	; Error ! (Invalid numeric chars)
   294 0000026C F9                      	stc	; 1st char is 'h' or 'H'
   295                                  b_err:
   296 0000026D C3                      	retn
   297                                  b_3:
   298 0000026E 4B                      	dec	ebx
   299                                  	;mov	byte [args], 3 ; 'H'
   300 0000026F FE05[25040000]          	inc	byte [args]
   301 00000275 EBC3                    	jmp	short b_0
   302                                  b_4:
   303 00000277 3C00                    	cmp	al, 0
   304 00000279 77F1                    	ja	short b_2
   305                                  
   306 0000027B 89DE                    	mov	esi, ebx
   307 0000027D 380D[25040000]          	cmp	[args], cl ; 2
   308 00000283 74E7                    	je	short b_2 ; last char isn't 'H'
   309 00000285 771E                    	ja	short b_7	
   310                                  
   311                                  b_5:	; decimal number input
   312 00000287 AC                      	lodsb
   313 00000288 20C0                    	and	al, al
   314 0000028A 7418                    	jz	short b_6
   315                                  
   316 0000028C 88C1                    	mov	cl, al
   317                                  
   318 0000028E B80A000000              	mov	eax, 10
   319 00000293 8B17                    	mov	edx, [edi]
   320 00000295 F7E2                    	mul	edx
   321 00000297 09D2                    	or	edx, edx
   322 00000299 75D1                    	jnz	short b_2
   323 0000029B 8907                    	mov	[edi], eax
   324                                  
   325 0000029D 80E930                  	sub	cl, '0'
   326 000002A0 010F                    	add	[edi], ecx
   327 000002A2 73E3                    	jnc	short b_5
   328                                  b_6:
   329 000002A4 C3                      	retn
   330                                  
   331                                  b_7: 	; hexadecimal number input
   332 000002A5 AC                      	lodsb
   333 000002A6 3C39                    	cmp	al, '9'
   334 000002A8 760A                    	jna	short b_8
   335 000002AA 24DF                    	and	al, 0DFh
   336 000002AC 3C48                    	cmp	al, 'H'
   337 000002AE 74F4                    	je	short b_6
   338                                  	
   339 000002B0 2C37                    	sub	al, 'A'-10
   340 000002B2 EB02                    	jmp	short b_9
   341                                  b_8:
   342 000002B4 2C30                    	sub	al, '0'
   343                                  b_9:
   344 000002B6 8B1F                    	mov	ebx, [edi]
   345 000002B8 21DB                    	and	ebx, ebx
   346 000002BA 7405                    	jz	short b_10
   347 000002BC C1E304                  	shl	ebx, 4 ; * 16 for next digit
   348 000002BF 72E3                    	jc	short b_6
   349                                  b_10:
   350 000002C1 01C3                    	add	ebx, eax
   351 000002C3 72DF                    	jc	short b_6
   352 000002C5 891F                    	mov	[edi], ebx
   353 000002C7 EBDC                    	jmp	short b_7
   354                                  
   355                                  hex:
   356 000002C9 0FB6D8                  	movzx	ebx, al
   357 000002CC C0EB04                  	shr	bl, 4
   358 000002CF 8A9B[E1020000]          	mov	bl, [ebx+hexchrs] 	 	
   359 000002D5 86D8                    	xchg	bl, al
   360 000002D7 80E30F                  	and	bl, 0Fh
   361 000002DA 8AA3[E1020000]          	mov	ah, [ebx+hexchrs] 
   362 000002E0 C3                      	retn
   363                                  
   364                                  hexchrs:
   365 000002E1 303132333435363738-     	db '0123456789ABCDEF'
   365 000002EA 39414243444546     
   366                                  
   367                                  ;-----------------------------------------------------------------
   368                                  ;  messages
   369                                  ;-----------------------------------------------------------------
   370                                  
   371                                  msg_program:
   372 000002F1 0D0A                    	db 0Dh, 0Ah
   373 000002F3 42494E324442322E50-     	db "BIN2DB2.PRG /// TRDOS 386 sysseek & syswrite test program"
   373 000002FC 5247202F2F2F205452-
   373 00000305 444F53203338362073-
   373 0000030E 79737365656B202620-
   373 00000317 737973777269746520-
   373 00000320 746573742070726F67-
   373 00000329 72616D             
   374 0000032C 0D0A                    	db 0Dh, 0Ah
   375 0000032E 6279204572646F6761-     	db "by Erdogan Tan, 06/11/2016", 0Dh, 0Ah
   375 00000337 6E2054616E2C203036-
   375 00000340 2F31312F323031360D-
   375 00000349 0A                 
   376 0000034A 0D0A                    	db 0Dh, 0Ah
   377 0000034C 55736167653A204249-     	db "Usage: BIN2DB2 <file name> <<offset>> <<byte count>>"
   377 00000355 4E32444232203C6669-
   377 0000035E 6C65206E616D653E20-
   377 00000367 3C3C6F66667365743E-
   377 00000370 3E203C3C6279746520-
   377 00000379 636F756E743E3E     
   378 00000380 0D0A00                  	db 0Dh, 0Ah, 0
   379                                  
   380                                  msg_open_error:
   381 00000383 0D0A                    	db 0Dh, 0Ah
   382 00000385 7379736F70656E2065-     	db 'sysopen error !'
   382 0000038E 72726F722021       
   383 00000394 0D0A00                  	db 0Dh, 0Ah, 0
   384                                  
   385                                  msg_args_error:
   386 00000397 0D0A                    	db 0Dh, 0Ah
   387 00000399 617267756D656E7420-     	db 'argument (offset or byte count) error !'
   387 000003A2 286F6666736574206F-
   387 000003AB 72206279746520636F-
   387 000003B4 756E7429206572726F-
   387 000003BD 722021             
   388 000003C0 0D0A00                  	db 0Dh, 0Ah, 0
   389                                  
   390                                  msg_seek_error:
   391 000003C3 0D0A                    	db 0Dh, 0Ah
   392 000003C5 7379737365656B2065-     	db 'sysseek error !'
   392 000003CE 72726F722021       
   393 000003D4 0D0A00                  	db 0Dh, 0Ah, 0
   394                                  
   395                                  msg_create_error:
   396 000003D7 0D0A                    	db 0Dh, 0Ah
   397 000003D9 737973637265617465-     	db 'syscreate error !'
   397 000003E2 206572726F722021   
   398                                  nextline:
   399 000003EA 0D0A00                  	db 0Dh, 0Ah, 0
   400                                  
   401                                  msg_error:
   402 000003ED 4552524F522021200D-     	db 'ERROR ! ', 0Dh, 0Ah, 0
   402 000003F6 0A00               
   403                                  
   404                                  msg_reading:
   405 000003F8 0D0A                    	db 0Dh, 0Ah
   406 000003FA 52656164696E672E2E-     	db 'Reading... ', 0
   406 00000403 2E2000             
   407                                  
   408                                  msg_writing:
   409 00000406 0D0A                    	db 0Dh, 0Ah
   410 00000408 57726974696E672E2E-     	db 'Writing... ', 0
   410 00000411 2E2000             
   411                                  
   412                                  msg_ok:
   413 00000414 4F4B2E2000              	db 'OK. ', 0
   414                                  
   415                                  txt_file:
   416 00000419 42494E3244422E5458-     	db 'BIN2DB.TXT', 0
   416 00000422 5400               
   417                                  
   418 00000424 0F                      color:	db 0Fh ; White
   419                                  
   420 00000425 00                      args:	db 0 ; offset & byte count
   421                                  
   422                                  bss:
   423                                  
   424                                  ABSOLUTE bss
   425                                  
   426 00000426 <res 00000002>          alignb 4
   427                                  
   428 00000428 <res 00000004>          arg_offset: resd 1
   429 0000042C <res 00000004>          arg_bcount: resd 1
   430                                  
   431 00000430 <res 00000004>          fhandle: resd 1
   432 00000434 <res 00000004>          fsize:	 resd 1
   433                                  
   434 00000438 <res 00000004>          foffset: resd 1
   435 0000043C <res 00000004>          fbcount: resd 1
   436                                  
   437                                  BUFFER:	
