summaryrefslogtreecommitdiff
path: root/src/stage2_a20.asm
diff options
context:
space:
mode:
Diffstat (limited to 'src/stage2_a20.asm')
-rw-r--r--src/stage2_a20.asm20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/stage2_a20.asm b/src/stage2_a20.asm
index 630c67a..2110621 100644
--- a/src/stage2_a20.asm
+++ b/src/stage2_a20.asm
@@ -32,9 +32,13 @@ check_A20_enabled:
pop ax
mov byte [es:di], al
+ mov al, '0'
+ call print_char
mov ax, 0 ; wrapped around (last cmp)
je .exit
+ mov al, '1'
+ call print_char
mov ax, 1 ; not wrapped around
.exit:
@@ -43,16 +47,17 @@ check_A20_enabled:
pop es
pop ds
popf
-
+
ret
check_and_enable_A20:
call check_A20_enabled
cmp ax, 1
je A20_ENABLED
- ret
A20_ENABLE_VIA_BIOS:
+ mov al, 'X'
+ call print_char
mov ax, 0x2401
int 0x15
@@ -61,6 +66,8 @@ A20_ENABLE_VIA_BIOS:
je A20_ENABLED
A20_ENABLE_KBD_PORT:
+ mov al, 'X'
+ call print_char
mov al, 0xdd
out 0x64, al
@@ -68,8 +75,13 @@ A20_ENABLE_KBD_PORT:
cmp ax, 1
je A20_ENABLED
+ jmp A20_FAST_SPECIAL_PORT
+
A20_ENABLE_KBD_OUT:
+ mov al, 'X'
+ call print_char
+
cli
call .wait_input
@@ -122,6 +134,10 @@ A20_ENABLE_KBD_OUT:
je A20_ENABLED
A20_FAST_SPECIAL_PORT:
+
+ mov al, 'X'
+ call print_char
+
in al, 0x92
or al, 2
out 0x92, al