]> git.lizzy.rs Git - nyax.git/blob - stage2/mmap.asm
Finish paging driver
[nyax.git] / stage2 / mmap.asm
1 %define MAPMAGIC 0x534D4150
2
3 mmap:
4         mov ebx, .msg
5         call print_str
6
7         xor ebx, ebx    ; counter for interrupt
8         mov di, MEMMAP
9
10 .loop:
11         ; issue an INT 0x15, EAX = 0xE820 interrupt
12         mov eax, 0xE820
13         mov ecx, 24
14         mov edx, MAPMAGIC
15         int 0x15
16
17         cmp eax, MAPMAGIC ; detect failure
18         jne .fail
19
20         cmp dword[di+16], 1
21         jne .next
22
23         cmp dword[di+4], 0
24         jne .keep
25
26         cmp dword[di+0], 0x100000
27         jb .next
28
29 .keep:
30         mov dword[di+20], 0
31         add di, 24
32
33 .next:
34         cmp ebx, 0
35         jne .loop
36
37         mov dword[di+0], 0
38         mov dword[di+4], 0
39
40         ;mov ax, di
41         ;sub ax, MEMMAP
42         ;xor dx, dx
43         ;mov bx, 24
44         ;div bx
45         ;mov [MEMMAPCNT], ax
46
47         ret
48
49 .fail:
50         mov ebx, .fail_msg
51         call print_str
52         jmp $
53
54 .msg: db "getting extended memory map", 10, 13, 0
55 .fail_msg: db "memory map failure", 10, 13, 0
56