1 ; **************************************************************************** 2 ; pmi32s - TRDOS 386 (TRDOS v2.0.3) Test Program - switch vbe3 pmi32 state 3 ; ---------------------------------------------------------------------------- 4 ; 5 ; 04/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) , , 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 ; get status of vesa vbe3 protected mode interface 90 00000000 31DB xor ebx, ebx 91 00000002 66BB0209 mov bx, 0902h 92 sys _video 92 <1> 92 <1> 92 <1> 92 <1> 92 <1> %if %0 >= 2 92 <1> mov ebx, %2 92 <1> %if %0 >= 3 92 <1> mov ecx, %3 92 <1> %if %0 = 4 92 <1> mov edx, %4 92 <1> %endif 92 <1> %endif 92 <1> %endif 92 00000006 B81F000000 <1> mov eax, %1 92 <1> 92 0000000B CD40 <1> int 40h 93 94 0000000D 08C0 or al, al 95 0000000F 7420 jz short not_vbe3_vbios ; not available 96 97 00000011 88C3 mov bl, al ; 1 (disabled) or 2 (enabled) 98 00000013 FECB dec bl ; 0 (disabled) or 1 (enabled) 99 00000015 80F301 xor bl, 1 ; 1 = 0, 0 = 1 ; switch 100 ;mov bh, 9 101 sys _video 101 <1> 101 <1> 101 <1> 101 <1> 101 <1> %if %0 >= 2 101 <1> mov ebx, %2 101 <1> %if %0 >= 3 101 <1> mov ecx, %3 101 <1> %if %0 = 4 101 <1> mov edx, %4 101 <1> %endif 101 <1> %endif 101 <1> %endif 101 00000018 B81F000000 <1> mov eax, %1 101 <1> 101 0000001D CD40 <1> int 40h 102 103 0000001F 3C01 cmp al, 1 104 00000021 7707 ja short pmienabled 105 pmidisabled: 106 00000023 BE[92000000] mov esi, pmidisabledmsg 107 00000028 EB0C jmp print_msg 108 pmienabled: 109 0000002A BE[7F000000] mov esi, pmienabledmsg 110 0000002F EB05 jmp print_msg 111 not_vbe3_vbios: 112 00000031 BE[50000000] mov esi, novbe3msg 113 print_msg: 114 sys _msg, esi, 255, 0Fh 114 <1> 114 <1> 114 <1> 114 <1> 114 <1> %if %0 >= 2 114 00000036 89F3 <1> mov ebx, %2 114 <1> %if %0 >= 3 114 00000038 B9FF000000 <1> mov ecx, %3 114 <1> %if %0 = 4 114 0000003D BA0F000000 <1> mov edx, %4 114 <1> %endif 114 <1> %endif 114 <1> %endif 114 00000042 B823000000 <1> mov eax, %1 114 <1> 114 00000047 CD40 <1> int 40h 115 ; message with white color 116 ; (max. 255 chars) 117 sys _exit 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 00000049 B801000000 <1> mov eax, %1 117 <1> 117 0000004E CD40 <1> int 40h 118 119 ;----------------------------------------------------------------- 120 ; MESSAGE 121 ;----------------------------------------------------------------- 122 123 novbe3msg: 124 00000050 0D0A db 0Dh, 0Ah 125 00000052 564553412056424533- db "VESA VBE3 video bios PMI is not detected !" 125 0000005B 20766964656F206269- 125 00000064 6F7320504D49206973- 125 0000006D 206E6F742064657465- 125 00000076 637465642021 126 0000007C 0D0A00 db 0Dh, 0Ah,0 127 128 pmienabledmsg: 129 0000007F 0D0A07 db 0Dh, 0Ah, 07h 130 00000082 504D4920456E61626C- db "PMI Enabled !" 130 0000008B 65642021 131 0000008F 0D0A00 db 0Dh, 0Ah,0 132 133 pmidisabledmsg: 134 00000092 0D0A07 db 0Dh, 0Ah, 07h 135 00000095 504D49204469736162- db "PMI Disabled !" 135 0000009E 6C65642021 136 000000A3 0D0A00 db 0Dh, 0Ah,0 137 138 000000A6 4572646F67616E2054- db "Erdogan Tan - 04/12/2020 (TRDOS 386 v2.0.3)" 138 000000AF 616E202D2030342F31- 138 000000B8 322F32303230202854- 138 000000C1 52444F532033383620- 138 000000CA 76322E302E3329 139 000000D1 00 db 0