C--: Difference between revisions
Jump to navigation
Jump to search
[unchecked revision] | [unchecked revision] |
Content deleted Content added
Line 237: | Line 237: | ||
$ INT 0x16 |
$ INT 0x16 |
||
} |
} |
||
====Enable Protected Mode==== |
|||
... |
|||
?code32 false |
|||
... |
|||
DSWORD[#gdtr] = #gdt_end - #gdt0; |
|||
DSWORD[#gdtr] = DSWORD[#gdtr] - 1; |
|||
DSDWORD[#gdtr + 2] = START + #gdt0; |
|||
DSWORD[#idtr] = #idt_end - #idt; |
|||
DSWORD[#idtr] = DSWORD[#idtr] - 1; |
|||
DSDWORD[#idtr + 2] = START + #idt; |
|||
BX = #gdtr; |
|||
$ db 0x3e, 0x0f, 0x01, 0x17 |
|||
BX = #idtr; |
|||
$ db 0x3e, 0x0f, 0x01, 0x1f |
|||
$ MOV EAX, CR0 |
|||
$ OR AL, 1 |
|||
$ MOV CR0, EAX |
|||
jump_pm32: |
|||
$ db 0xEA |
|||
$ dw 0 |
|||
$ dw 0x10 |
|||
} |
|||
?code32 TRUE |
|||
void _1() |
|||
{ |
|||
do_pm32: |
|||
$ MOV AX, 0x18 |
|||
$ MOV DS, AX |
|||
$ MOV SS, AX |
|||
$ MOV AX, 0x08 |
|||
$ MOV ES, AX |
|||
@setup_pic(0x20, 0x28); |
|||
... |
|||