mirror of
https://github.com/KolibriOS/kolibrios.git
synced 2024-12-23 23:26:49 +03:00
74 lines
1.1 KiB
NASM
74 lines
1.1 KiB
NASM
|
format MZ
|
|||
|
heap 0
|
|||
|
stack 800h
|
|||
|
entry main:start
|
|||
|
|
|||
|
segment main use16
|
|||
|
|
|||
|
use16
|
|||
|
start:
|
|||
|
|
|||
|
mov ax,_data
|
|||
|
mov ds, ax
|
|||
|
mov es, ax
|
|||
|
|
|||
|
xor eax, eax
|
|||
|
mov ax,ds
|
|||
|
|
|||
|
shl eax, 4
|
|||
|
|
|||
|
mov bx, gdt
|
|||
|
add ebx, eax ; ebx - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> gdt
|
|||
|
|
|||
|
mov word [gdtPtr], 2 * 8 -1 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gdt 2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = 0x000f
|
|||
|
mov dword [gdtPtr + 2], ebx
|
|||
|
|
|||
|
lgdt pword [gdtPtr]
|
|||
|
|
|||
|
in al, 0x70 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NMI
|
|||
|
mov bl, al
|
|||
|
or al, 0x80
|
|||
|
out 70h , al
|
|||
|
in al, 0x71 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RTC <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> 0<>70
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> 0x71
|
|||
|
|
|||
|
cli
|
|||
|
|
|||
|
mov eax, cr0
|
|||
|
or al, 01b
|
|||
|
mov cr0, eax
|
|||
|
|
|||
|
mov dx, 0x08
|
|||
|
mov gs, dx ;gs - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> 0 <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0xFFFFFFFF
|
|||
|
mov fs, dx
|
|||
|
|
|||
|
and al, 0xFE
|
|||
|
mov cr0, eax
|
|||
|
|
|||
|
sti
|
|||
|
|
|||
|
mov al, bl
|
|||
|
out 70h , al
|
|||
|
in al, 71h
|
|||
|
|
|||
|
mov dx,92h
|
|||
|
in al,dx
|
|||
|
or al,2
|
|||
|
out dx,al
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
;mov eax, [gs:0xFFFFFFF0] ;
|
|||
|
|
|||
|
mov ah,4ch ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int 21h
|
|||
|
|
|||
|
segment _data use16
|
|||
|
|
|||
|
align 16
|
|||
|
|
|||
|
gdt dw 0, 0, 0, 0 ;0
|
|||
|
_flat dw 0ffffh,0,0F200h,008fh ;08 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DPL = 3
|
|||
|
;<3B><><EFBFBD><EFBFBD> 0, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0xFFFFFFFF
|
|||
|
|
|||
|
gdtPtr dq ?
|