1 ; **************************************************************************** 2 ; args386.s (TRDOS 386, TRDOS v2.0 - sample binary file, 'args386.prg') 3 ; ---------------------------------------------------------------------------- 4 ; ARGS386.PRG ! TEST program ! 5 ; 6 ; 09/05/2016 7 ; 8 ; Derived from 'args386.s' source code for Retro UNIX 386 v1 9 ; 10 ; [ Last Modification: 11/05/2016 ] 11 ; 12 ; **************************************************************************** 13 ; args386.s (11/10/2015, Retro UNIX 386 v1, NASM 2.11) 14 15 ; 29/04/2016 16 ; TRDOS 386 system calls (temporary list!) 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 _creat equ 8 26 _link equ 9 27 _unlink equ 10 28 _exec equ 11 29 _chdir equ 12 30 _time equ 13 31 _mkdir equ 14 32 _chmod equ 15 33 _chown equ 16 34 _break equ 17 35 _stat equ 18 36 _seek equ 19 37 _tell equ 20 38 _mount equ 21 39 _umount equ 22 40 _setuid equ 23 41 _getuid equ 24 42 _stime equ 25 43 _quit equ 26 44 _intr equ 27 45 _fstat equ 28 46 _emt equ 29 47 _mdate equ 30 48 _stty equ 31 49 _gtty equ 32 50 _ilgins equ 33 51 _sleep equ 34 52 _msg equ 35 53 54 %macro sys 1-4 55 ; 29/04/2016 - TRDOS 386 (TRDOS v2.0) 56 ; 03/09/2015 57 ; 13/04/2015 58 ; Retro UNIX 386 v1 system call. 59 %if %0 >= 2 60 mov ebx, %2 61 %if %0 >= 3 62 mov ecx, %3 63 %if %0 = 4 64 mov edx, %4 65 %endif 66 %endif 67 %endif 68 mov eax, %1 69 ;int 30h 70 int 40h ; TRDOS 386 (TRDOS v2.0) 71 %endmacro 72 73 ; Retro UNIX 386 v1 system call format: 74 ; sys systemcall (eax) , , 75 76 [BITS 32] ; We need 32-bit intructions for protected mode 77 78 [ORG 0] 79 80 START_CODE: 81 sys _msg, version, 255, 0Ah 82 <1> 83 <1> 84 <1> 85 <1> 86 <1> %if %0 >= 2 87 00000000 BB[7F000000] <1> mov ebx, %2 88 <1> %if %0 >= 3 89 00000005 B9FF000000 <1> mov ecx, %3 90 <1> %if %0 = 4 91 0000000A BA0A000000 <1> mov edx, %4 92 <1> %endif 93 <1> %endif 94 <1> %endif 95 0000000F B823000000 <1> mov eax, %1 96 <1> 97 00000014 CD40 <1> int 40h 98 00000016 89E6 mov esi, esp 99 00000018 AD lodsd 100 00000019 21C0 and eax, eax 101 0000001B 744B jz short terminate 102 0000001D 89C5 mov ebp, eax 103 nextarg: 104 0000001F FE05[7B000000] inc byte [argn] 105 sys _msg, args, 255, 0Eh 106 <1> 107 <1> 108 <1> 109 <1> 110 <1> %if %0 >= 2 111 00000025 BB[71000000] <1> mov ebx, %2 112 <1> %if %0 >= 3 113 0000002A B9FF000000 <1> mov ecx, %3 114 <1> %if %0 = 4 115 0000002F BA0E000000 <1> mov edx, %4 116 <1> %endif 117 <1> %endif 118 <1> %endif 119 00000034 B823000000 <1> mov eax, %1 120 <1> 121 00000039 CD40 <1> int 40h 122 0000003B AD lodsd 123 sys _msg, eax, 255, 0Fh 124 <1> 125 <1> 126 <1> 127 <1> 128 <1> %if %0 >= 2 129 0000003C 89C3 <1> mov ebx, %2 130 <1> %if %0 >= 3 131 0000003E B9FF000000 <1> mov ecx, %3 132 <1> %if %0 = 4 133 00000043 BA0F000000 <1> mov edx, %4 134 <1> %endif 135 <1> %endif 136 <1> %endif 137 00000048 B823000000 <1> mov eax, %1 138 <1> 139 0000004D CD40 <1> int 40h 140 0000004F 4D dec ebp 141 00000050 75CD jnz short nextarg 142 sys _msg, nexline, 2, 07h 143 <1> 144 <1> 145 <1> 146 <1> 147 <1> %if %0 >= 2 148 00000052 BB[C4000000] <1> mov ebx, %2 149 <1> %if %0 >= 3 150 00000057 B902000000 <1> mov ecx, %3 151 <1> %if %0 = 4 152 0000005C BA07000000 <1> mov edx, %4 153 <1> %endif 154 <1> %endif 155 <1> %endif 156 00000061 B823000000 <1> mov eax, %1 157 <1> 158 00000066 CD40 <1> int 40h 159 terminate: 160 sys _exit 161 <1> 162 <1> 163 <1> 164 <1> 165 <1> %if %0 >= 2 166 <1> mov ebx, %2 167 <1> %if %0 >= 3 168 <1> mov ecx, %3 169 <1> %if %0 = 4 170 <1> mov edx, %4 171 <1> %endif 172 <1> %endif 173 <1> %endif 174 00000068 B801000000 <1> mov eax, %1 175 <1> 176 0000006D CD40 <1> int 40h 177 halt: 178 0000006F EBFE jmp short halt 179 args: 180 00000071 0D0A db 0Dh, 0Ah 181 00000073 417267756D656E74 db 'Argument' 182 argn: 183 0000007B 30 db '0' 184 0000007C 3A20 db ': ' 185 0000007E 00 db 0 186 version: 187 0000007F 0D0A db 0Dh, 0Ah 188 00000081 5452444F5320333836- db 'TRDOS 386 - Argument List Test Program' 189 0000008A 202D20417267756D65- 190 00000093 6E74204C6973742054- 191 0000009C 6573742050726F6772- 192 000000A5 616D 193 000000A7 0D0A db 0Dh, 0Ah 194 000000A9 6279204572646F6761- db 'by Erdogan Tan - 09/05/2016' 195 000000B2 6E2054616E202D2030- 196 000000BB 392F30352F32303136 197 nexline: 198 000000C4 0D0A00 db 0Dh, 0Ah, 0