Add prototype for serial bootloader
This commit is contained in:
parent
1259fe14fe
commit
78d5b6aa28
5
Makefile
5
Makefile
@ -4,7 +4,7 @@ FD_SECTORS = 9
|
||||
|
||||
QEMU_ARCH = $(shell uname -m)
|
||||
QEMU = qemu-system-$(QEMU_ARCH)
|
||||
QEMU_ARGS =
|
||||
QEMU_ARGS = -serial stdio
|
||||
|
||||
ifdef KVM
|
||||
QEMU_ARGS += --enable-kvm
|
||||
@ -39,3 +39,6 @@ qemu-rom: kernel.rom
|
||||
|
||||
qemu-floppy: fdimage.img
|
||||
$(QEMU) $(QEMU_ARGS) -boot c -hda fdimage.img
|
||||
|
||||
qemu-serial: boot/serial.bin
|
||||
$(QEMU) $(QEMU_ARGS) -hda boot/serial.bin
|
90
boot/serial.asm
Normal file
90
boot/serial.asm
Normal file
@ -0,0 +1,90 @@
|
||||
org 0x7c00
|
||||
|
||||
xor ax, ax
|
||||
mov ds, ax
|
||||
mov es, ax
|
||||
mov ss, ax
|
||||
mov sp, 0x7c00
|
||||
jmp 0:start
|
||||
|
||||
getc:
|
||||
mov ah, 0x02
|
||||
mov dx, 0x0000
|
||||
int 0x14
|
||||
test ah, 0x80
|
||||
jnz getc
|
||||
ret
|
||||
|
||||
putc:
|
||||
mov ah, 0x01
|
||||
mov dx, 0x0000
|
||||
int 0x14
|
||||
ret
|
||||
|
||||
init_port:
|
||||
mov ah, 0x00
|
||||
mov al, 0b11100011
|
||||
mov dx, 0x0000
|
||||
int 0x14
|
||||
ret
|
||||
|
||||
dump:
|
||||
mov si, 0x500
|
||||
mov cx, di
|
||||
sub cx, si
|
||||
.loop:
|
||||
lodsb
|
||||
call print8
|
||||
loop .loop
|
||||
mov al, 0x0A
|
||||
call putc
|
||||
mov al, 0x0D
|
||||
call putc
|
||||
ret
|
||||
|
||||
line_reset:
|
||||
cmp di, 0x500
|
||||
je .reset
|
||||
call line_process
|
||||
.reset:
|
||||
mov di, 0x500
|
||||
xor bp, bp
|
||||
jmp mainloop
|
||||
|
||||
line_process:
|
||||
call dump
|
||||
ret
|
||||
|
||||
start:
|
||||
call init_port
|
||||
mov di, 0x500
|
||||
jmp line_reset
|
||||
|
||||
mainloop:
|
||||
call getc
|
||||
cmp al, ':'
|
||||
je line_reset
|
||||
cmp al, 0x20
|
||||
jb line_reset
|
||||
sub al, 0x30
|
||||
cmp al, 9
|
||||
jbe .noadjust
|
||||
sub al, 7
|
||||
.noadjust:
|
||||
test bp, bp
|
||||
jnz .secondnib
|
||||
mov cl, 4
|
||||
shl al, cl
|
||||
mov [di], al
|
||||
not bp
|
||||
jmp mainloop
|
||||
.secondnib:
|
||||
or [di], al
|
||||
inc di
|
||||
not bp
|
||||
jmp mainloop
|
||||
|
||||
%include "print.asm"
|
||||
|
||||
times 510-($-$$) db 0x00
|
||||
db 0x55,0xaa
|
Loading…
Reference in New Issue
Block a user