1 ; **************************************************************************** 2 ; vgawstr.s - TRDOS 386 (TRDOS v2.0.3) Test Program - write string 3 ; ---------------------------------------------------------------------------- 4 ; 5 ; 05/12/2020 6 ; 7 ; **************************************************************************** 8 ; writestr.s (05/12/2020) 9 10 ; 01/03/2017 11 ; 16/10/2016 12 ; 29/04/2016 13 ; TRDOS 386 system calls (temporary list!) 14 _ver equ 0 15 _exit equ 1 16 _fork equ 2 17 _read equ 3 18 _write equ 4 19 _open equ 5 20 _close equ 6 21 _wait equ 7 22 _creat equ 8 23 _link equ 9 24 _unlink equ 10 25 _exec equ 11 26 _chdir equ 12 27 _time equ 13 28 _mkdir equ 14 29 _chmod equ 15 30 _chown equ 16 31 _break equ 17 32 _stat equ 18 33 _seek equ 19 34 _tell equ 20 35 _mount equ 21 36 _umount equ 22 37 _setuid equ 23 38 _getuid equ 24 39 _stime equ 25 40 _quit equ 26 41 _intr equ 27 42 _fstat equ 28 43 _emt equ 29 44 _mdate equ 30 45 _video equ 31 46 _audio equ 32 47 _timer equ 33 48 _sleep equ 34 49 _msg equ 35 50 _geterr equ 36 51 _fpsave equ 37 52 _pri equ 38 53 _rele equ 39 54 _fff equ 40 55 _fnf equ 41 56 _alloc equ 42 57 _dalloc equ 43 58 _calbac equ 44 59 60 %macro sys 1-4 61 ; 29/04/2016 - TRDOS 386 (TRDOS v2.0) 62 ; 03/09/2015 63 ; 13/04/2015 64 ; Retro UNIX 386 v1 system call. 65 %if %0 >= 2 66 mov ebx, %2 67 %if %0 >= 3 68 mov ecx, %3 69 %if %0 = 4 70 mov edx, %4 71 %endif 72 %endif 73 %endif 74 mov eax, %1 75 ;int 30h 76 int 40h ; TRDOS 386 (TRDOS v2.0) 77 %endmacro 78 79 ; TRDOS 386 (and Retro UNIX 386 v1) system call format: 80 ; sys systemcall (eax) , , 81 82 ;======================================================================== 83 ; TEST VESA VBE 3 16 BIT PROTECTED MODE INTERFACE FAR CALL FOR TRDOS 386 84 ;======================================================================== 85 86 [BITS 32] ; 32-bit intructions 87 88 [ORG 0] 89 START_CODE: 90 ; set video mode to 13h 91 00000000 B813000000 mov eax, 13h 92 00000005 CD31 int 31h 93 94 ; write character string 95 96 00000007 BD[52000000] mov ebp, message 97 ;mov ecx, msg_end - message 98 0000000C B9C1000000 mov ecx, m_length 99 00000011 BB0F000000 mov ebx, 0Fh ; white 100 00000016 BA00010000 mov edx, 0100h ; row 1, column 0 101 0000001B B801130000 mov eax, 1301h 102 00000020 CD31 int 31h ; int 10h 103 104 ; wait for keystroke 105 00000022 30E4 xor ah, ah 106 00000024 CD32 int 32h 107 108 ; set video mode to 03h 109 00000026 B803000000 mov eax, 03h 110 0000002B CD31 int 31h 111 112 ; get cursor position 113 0000002D B403 mov ah, 03h 114 ;xor bh, bh 115 0000002F CD31 int 31h 116 ; dx = cursor position 117 118 00000031 BD[52000000] mov ebp, message 119 ;mov ecx, msg_end - message 120 00000036 B9C1000000 mov ecx, m_length 121 0000003B BB0F000000 mov ebx, 0Fh ; white 122 00000040 B801130000 mov eax, 1301h 123 00000045 CD31 int 31h ; int 10h 124 125 00000047 30E4 xor ah, ah 126 00000049 CD32 int 32h 127 128 sys _exit 128 <1> 128 <1> 128 <1> 128 <1> 128 <1> %if %0 >= 2 128 <1> mov ebx, %2 128 <1> %if %0 >= 3 128 <1> mov ecx, %3 128 <1> %if %0 = 4 128 <1> mov edx, %4 128 <1> %endif 128 <1> %endif 128 <1> %endif 128 0000004B B801000000 <1> mov eax, %1 128 <1> 128 00000050 CD40 <1> int 40h 129 130 ;----------------------------------------------------------------- 131 ; MESSAGE 132 ;----------------------------------------------------------------- 133 134 message: 135 00000052 0D0A db 0Dh,0Ah 136 00000054 5452444F5320333836- db "TRDOS 386 Video Bios Write String Test" 136 0000005D 20566964656F204269- 136 00000066 6F7320577269746520- 136 0000006F 537472696E67205465- 136 00000078 7374 137 0000007A 0D0A0D0A db 0Dh,0Ah,0Dh,0Ah 138 0000007E 30302C30312C30322C- db "00,01,02,03,04,05,06,07,08,09,10" 138 00000087 30332C30342C30352C- 138 00000090 30362C30372C30382C- 138 00000099 30392C3130 139 0000009E 0D0A db 0Dh,0Ah 140 000000A0 31312C31322C31332C- db "11,12,13,14,15,16,17,18,19,20,21" 140 000000A9 31342C31352C31362C- 140 000000B2 31372C31382C31392C- 140 000000BB 32302C3231 141 000000C0 0D0A db 0Dh,0Ah 142 000000C2 412C422C432C442C45- db "A,B,C,D,E,F,G,H,I,J,K,L,M" 142 000000CB 2C462C472C482C492C- 142 000000D4 4A2C4B2C4C2C4D 143 000000DB 0D0A db 0Dh,0Ah 144 000000DD 4E2C4F2C502C512C52- db "N,O,P,Q,R,S,T,U,V,X,W,Y,Z" 144 000000E6 2C532C542C552C562C- 144 000000EF 582C572C592C5A 145 000000F6 0D0A0D0A db 0Dh,0Ah,0Dh, 0Ah 146 000000FA 287072657373206120- db "(press a key to exit)" 146 00000103 6B657920746F206578- 146 0000010C 697429 147 0000010F 0D0A0D0A db 0Dh,0Ah,0Dh,0Ah 148 m_length equ $ - message 149 ;msg_end: 150 00000113 00 db 0 151 152 00000114 4572646F67616E2054- db "Erdogan Tan - 05/12/2020 (TRDOS 386 v2.0.3)" 152 0000011D 616E202D2030352F31- 152 00000126 322F32303230202854- 152 0000012F 52444F532033383620- 152 00000138 76322E302E3329 153 0000013F 00 db 0