I've made a simple OS that gets user input and prints it. It works well on VirtualBox but not on physical hardware (with Intel Atom).
My bootloader has a BIOS parameter block. However, I do not believe that is causing anything.
When I type Steve for example in VirtualBox
On real hardwareSteve
Hi Steve!
So it isn't printing the name Steve. Why? Everything else functions (I can boot with int 13h and enter user input) on physical hardware but not printing what I put in.Steve
Hi !
Here's the code for my kernel
Code: Select all
BITS 16
org 0x7c00
mov di, buffer
jmp Main
Main:
mov ah, 0x0
int 16h
mov ah, 0eh
int 10h
cmp al, 0x0d
je ready
stosb
jmp Main
ready:
mov ah, 0eh
mov al, 13
int 10h
mov ah, 0eh
mov al, 10
int 10h
mov al, 0
stosb
mov si, msg
call Print
mov si, buffer
call Print
mov ah, 0eh
mov al, '!'
int 10h
mov ah, 0eh
mov al, 13
int 10h
mov ah, 0eh
mov al, 10
int 10h
mov di, buffer
jmp Main
Print:
lodsb
cmp al, 0
je Done
mov ah, 0eh
int 10h
jmp Print
Done:
ret
buffer times 64 db 0
msg db 'Hi '
BIOS interrupts work. I don't know what to do. I have tried everything I can possibly think of. I can't really debug it since it is physical hardware.
Any help would be appreciated.
Thanks
Steve.