     1                                  ; ****************************************************************************
     2                                  ; writestr.s - TRDOS 386 (TRDOS v2.0.3) Test Program - write string 
     3                                  ; ----------------------------------------------------------------------------
     4                                  ;
     5                                  ; 05/12/2020 (03/12/2020)
     6                                  ;
     7                                  ; ****************************************************************************
     8                                  
     9                                  ; 01/03/2017
    10                                  ; 16/10/2016
    11                                  ; 29/04/2016
    12                                  ; TRDOS 386 system calls (temporary list!)
    13                                  _ver 	equ 0
    14                                  _exit 	equ 1
    15                                  _fork 	equ 2
    16                                  _read 	equ 3
    17                                  _write	equ 4
    18                                  _open	equ 5
    19                                  _close 	equ 6
    20                                  _wait 	equ 7
    21                                  _creat 	equ 8
    22                                  _link 	equ 9
    23                                  _unlink	equ 10
    24                                  _exec	equ 11
    25                                  _chdir	equ 12
    26                                  _time 	equ 13
    27                                  _mkdir 	equ 14
    28                                  _chmod	equ 15
    29                                  _chown	equ 16
    30                                  _break	equ 17
    31                                  _stat	equ 18
    32                                  _seek	equ 19
    33                                  _tell 	equ 20
    34                                  _mount	equ 21
    35                                  _umount	equ 22
    36                                  _setuid	equ 23
    37                                  _getuid	equ 24
    38                                  _stime	equ 25
    39                                  _quit	equ 26	
    40                                  _intr	equ 27
    41                                  _fstat	equ 28
    42                                  _emt 	equ 29
    43                                  _mdate 	equ 30
    44                                  _video 	equ 31
    45                                  _audio	equ 32
    46                                  _timer	equ 33
    47                                  _sleep	equ 34
    48                                  _msg    equ 35
    49                                  _geterr	equ 36
    50                                  _fpsave	equ 37
    51                                  _pri	equ 38
    52                                  _rele	equ 39
    53                                  _fff	equ 40
    54                                  _fnf	equ 41
    55                                  _alloc	equ 42
    56                                  _dalloc equ 43
    57                                  _calbac equ 44
    58                                  
    59                                  %macro sys 1-4
    60                                      ; 29/04/2016 - TRDOS 386 (TRDOS v2.0)	
    61                                      ; 03/09/2015	
    62                                      ; 13/04/2015
    63                                      ; Retro UNIX 386 v1 system call.	
    64                                      %if %0 >= 2   
    65                                          mov ebx, %2
    66                                          %if %0 >= 3    
    67                                              mov ecx, %3
    68                                              %if %0 = 4
    69                                                 mov edx, %4   
    70                                              %endif
    71                                          %endif
    72                                      %endif
    73                                      mov eax, %1
    74                                      ;int 30h
    75                                      int 40h ; TRDOS 386 (TRDOS v2.0)	   
    76                                  %endmacro
    77                                  
    78                                  ; TRDOS 386 (and Retro UNIX 386 v1) system call format:
    79                                  ; sys systemcall (eax) <arg1 (ebx)>, <arg2 (ecx)>, <arg3 (edx)>
    80                                  
    81                                  ;========================================================================
    82                                  ; TEST VESA VBE 3 16 BIT PROTECTED MODE INTERFACE FAR CALL FOR TRDOS 386 
    83                                  ;========================================================================
    84                                  
    85                                  [BITS 32]	; 32-bit intructions
    86                                  
    87                                  [ORG 0] 
    88                                  START_CODE:
    89                                  		; clear video page (set video mode to 03h again)
    90                                  		;mov 	eax, 13h
    91                                  		;int	31h
    92 00000000 B803000000              		mov	eax, 03h
    93 00000005 CD31                    		int	31h
    94                                  
    95                                  		; write character string
    96                                  
    97 00000007 BD[2D000000]            		mov	ebp, message
    98                                  		;mov	ecx, msg_end - message
    99 0000000C B9BF000000              		mov	ecx, m_length
   100 00000011 BB0F000000              		mov	ebx, 0Fh  ; white
   101 00000016 BA00010000              		mov	edx, 0100h ; row 1, column 0
   102 0000001B B801130000              		mov	eax, 1301h
   103 00000020 CD31                    		int	31h ; int 10h
   104                                  
   105 00000022 30E4                    		xor	ah, ah
   106 00000024 CD32                    		int	32h
   107                                  
   108                                  		;mov 	eax, 03h
   109                                  		;int	31h		
   110                                  
   111                                  		sys	_exit
   111                              <1> 
   111                              <1> 
   111                              <1> 
   111                              <1> 
   111                              <1>  %if %0 >= 2
   111                              <1>  mov ebx, %2
   111                              <1>  %if %0 >= 3
   111                              <1>  mov ecx, %3
   111                              <1>  %if %0 = 4
   111                              <1>  mov edx, %4
   111                              <1>  %endif
   111                              <1>  %endif
   111                              <1>  %endif
   111 00000026 B801000000          <1>  mov eax, %1
   111                              <1> 
   111 0000002B CD40                <1>  int 40h
   112                                  
   113                                  ;-----------------------------------------------------------------
   114                                  ;  MESSAGE
   115                                  ;-----------------------------------------------------------------
   116                                  
   117                                  message:
   118 0000002D 0D0A                    	db	0Dh,0Ah
   119 0000002F 5452444F5320333836-     	db	"TRDOS 386 Video Bios Write String Test"
   119 00000038 20566964656F204269-
   119 00000041 6F7320577269746520-
   119 0000004A 537472696E67205465-
   119 00000053 7374               
   120 00000055 0D0A0D0A                	db	0Dh,0Ah,0Dh,0Ah
   121 00000059 30302C30312C30322C-     	db	"00,01,02,03,04,05,06,07,08,09,10"
   121 00000062 30332C30342C30352C-
   121 0000006B 30362C30372C30382C-
   121 00000074 30392C3130         
   122 00000079 31312C31322C31332C-     	db	"11,12,13,14,15,16,17,18,19,20,21"
   122 00000082 31342C31352C31362C-
   122 0000008B 31372C31382C31392C-
   122 00000094 32302C3231         
   123 00000099 0D0A                    	db	0Dh,0Ah
   124 0000009B 412C422C432C442C45-     	db	"A,B,C,D,E,F,G,H,I,J,K,L,M"
   124 000000A4 2C462C472C482C492C-
   124 000000AD 4A2C4B2C4C2C4D     
   125 000000B4 0D0A                    	db	0Dh, 0Ah
   126 000000B6 4E2C4F2C502C512C52-     	db	"N,O,P,Q,R,S,T,U,V,X,W,Y,Z"
   126 000000BF 2C532C542C552C562C-
   126 000000C8 582C572C592C5A     
   127 000000CF 0D0A0D0A                	db	0Dh,0Ah,0Dh, 0Ah
   128 000000D3 287072657373206120-     	db	"(press a key to exit)"
   128 000000DC 6B657920746F206578-
   128 000000E5 697429             
   129 000000E8 0D0A0D0A                	db	0Dh,0Ah,0Dh,0Ah	
   130                                  m_length equ $ - message
   131                                  ;msg_end:
   132 000000EC 00                      	db	0 
   133                                  
   134 000000ED 4572646F67616E2054-     	db	"Erdogan Tan - 05/12/2020 (TRDOS 386 v2.0.3)"
   134 000000F6 616E202D2030352F31-
   134 000000FF 322F32303230202854-
   134 00000108 52444F532033383620-
   134 00000111 76322E302E3329     
   135 00000118 00                      	db	0 	
