removed "unimplemented" disclaimer from readme. It's rough but usable now.
[bootcensus] / src / vbioshack.s
1 # pcboot - bootable PC demo/game kernel
2 # Copyright (C) 2018  John Tsiombikas <nuclear@member.fsf.org>
3
4 # This program is free software: you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation, either version 3 of the License, or
7 # (at your option) any later version.
8
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY, without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU General Public License for more details.
13
14 # You should have received a copy of the GNU General Public License
15 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
16
17         .text
18
19         .align 4
20         .short 0
21 saved_idtr:
22 idtlim: .short 0
23 idtaddr:.long 0
24
25         .short 0
26 saved_gdtr:
27 gdtlim: .short 0
28 gdtaddr:.long 0
29
30         .short 0
31 rmidt:  .short 0x3ff
32         .long 0
33
34         # drop back to real mode to set video mode hack
35         .global set_mode13h
36 set_mode13h:
37         cli
38         #sgdt (saved_gdtr)
39         sidt (saved_idtr)
40         lidt (rmidt)
41
42         mov %cr0, %eax
43         and $0xfffe, %ax
44         mov %eax, %cr0
45         jmp 0f
46
47 0:      xor %ax, %ax
48         mov %ax, %ds
49         mov %ax, %es
50         mov %ax, %ss
51
52         #mov $0x13, %ax
53         #int $0x10
54
55         mov %cr0, %eax
56         or $1, %ax
57         mov %eax, %cr0
58         jmp 0f
59
60 0:      mov $0x10, %ax
61         mov %ax, %ds
62         mov %ax, %es
63         mov %ax, %ss
64
65         sidt (saved_idtr)
66         sti
67         ret