Code: Select all
bits 16
org 0x7c00
start:
mov ax, cs
mov ds, ax
mov es, ax
mov fs, ax
mov ax, 0x1D0
mov ss, ax
mov sp, 0x200
mov si, init
call PutStr
cli
call waitkeyclear
mov al, 0xd1
out 0x64, al
call waitkeyclear
mov al, 0xdf
out 0x60, al
call waitkeyclear
mov cx, 0x10
.waisttime
nop
nop
xor ax, ax
loop .waisttime
mov al, 0xd0
out 0x64, al
call waitkeyfull
in al, 0x60
test al, 2
jnz .A20_on
mov al, 'A'
call halt
.A20_on
sti
mov si, A20_success
call PutStr
hlt
waitkeyclear:
xor al, al
mov al, 0x64
test al, 2
jnz waitkeyclear
ret
waitkeyfull:
xor cx, cx
mov al, 0x64
test al, 1
jz waitkeyfull
ret
halt:
cli
hlt
PutStr:
mov ah,0x0E
mov bh,0x00
mov bl,0x07
.nextchar
lodsb
or al,al
jz .return
int 0x10
jmp .nextchar
.return
ret
drive dw ''
A20_success db 'A20 Enabled', 13, 10, 0
init db 'initiation started', 13, 10, 0
times 510-($-$$) db 0
dw 0xAA55
Thanks in advance,
Jules