Remove rom and pxe boot related stuff
I dont intend to ever implement that
This commit is contained in:
parent
ebd356ed8e
commit
ff179a5e98
13
Makefile
13
Makefile
@ -16,14 +16,14 @@ QEMU_ARGS += $(shell test -w /dev/kvm && echo --enable-kvm)
|
|||||||
|
|
||||||
ifdef DEBUG
|
ifdef DEBUG
|
||||||
ROMS += dprintf.rom
|
ROMS += dprintf.rom
|
||||||
NASM_ARGS += -l $(basename $@).lst
|
NASM_ARGS += -l $(basename $@).lst -DDEBUG=1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifndef DISPLAY
|
ifndef DISPLAY
|
||||||
QEMU_ARGS += --display curses
|
QEMU_ARGS += --display curses
|
||||||
endif
|
endif
|
||||||
|
|
||||||
.PHONY: default bootstrap clean qemu-rom qemu-floppy qemu-pxe
|
.PHONY: default clean qemu-floppy5 qemu-floppy3
|
||||||
|
|
||||||
default: fd1440.img
|
default: fd1440.img
|
||||||
|
|
||||||
@ -76,12 +76,3 @@ qemu-floppy5: fd360.img $(ROMS)
|
|||||||
|
|
||||||
qemu-hdd: hdimage.img $(ROMS)
|
qemu-hdd: hdimage.img $(ROMS)
|
||||||
$(QEMU) $(QEMU_ARGS) -boot c -hda hdimage.img
|
$(QEMU) $(QEMU_ARGS) -boot c -hda hdimage.img
|
||||||
|
|
||||||
qemu-pxe: pxeboot.0 $(ROMS)
|
|
||||||
$(QEMU) $(QEMU_ARGS) -boot n \
|
|
||||||
-option-rom /usr/share/qemu/pxe-rtl8139.rom \
|
|
||||||
-device e1000,netdev=mynet0,mac=52:54:00:12:34:56 \
|
|
||||||
-netdev user,id=mynet0,net=192.168.76.0/24,dhcpstart=192.168.76.9,tftp=$(CURDIR),bootfile=pxeboot.0
|
|
||||||
|
|
||||||
qemu-rom: kernel.rom
|
|
||||||
$(QEMU) $(QEMU_ARGS) --option-rom kernel.rom
|
|
||||||
|
@ -1,71 +0,0 @@
|
|||||||
org 0x7C00
|
|
||||||
|
|
||||||
xor ax, ax
|
|
||||||
mov ds, ax
|
|
||||||
mov es, ax
|
|
||||||
mov ss, ax
|
|
||||||
mov sp, 0x7C00
|
|
||||||
|
|
||||||
mov si, 0x400
|
|
||||||
|
|
||||||
loop: mov dx, si
|
|
||||||
call dmpdx
|
|
||||||
mov al, 0x20
|
|
||||||
int 0x10
|
|
||||||
int 0x10
|
|
||||||
|
|
||||||
push si
|
|
||||||
mov cx, 8
|
|
||||||
wloop: lodsw
|
|
||||||
xchg al, ah
|
|
||||||
mov dx, ax
|
|
||||||
push cx
|
|
||||||
call dmpdx
|
|
||||||
mov al, 0x20
|
|
||||||
int 0x10
|
|
||||||
pop cx
|
|
||||||
loop wloop
|
|
||||||
pop si
|
|
||||||
mov al, 0x20
|
|
||||||
int 0x10
|
|
||||||
|
|
||||||
mov cx, 16
|
|
||||||
aloop: lodsb
|
|
||||||
cmp al, 0x20
|
|
||||||
jnc noadj
|
|
||||||
mov al, '.'
|
|
||||||
noadj: int 0x10
|
|
||||||
loop aloop
|
|
||||||
mov al, 0x0A
|
|
||||||
int 0x10
|
|
||||||
mov al, 0x0D
|
|
||||||
int 0x10
|
|
||||||
|
|
||||||
cmp si, 0x500
|
|
||||||
jc loop
|
|
||||||
|
|
||||||
hlt: hlt
|
|
||||||
jmp hlt
|
|
||||||
|
|
||||||
dmpdx: ; setup bx and ah for int 10h call
|
|
||||||
xor bx, bx
|
|
||||||
mov ah, 0x0e
|
|
||||||
mov cl, 4
|
|
||||||
; this double-call is essentially a 4 times repeating loop
|
|
||||||
call dmpdx1
|
|
||||||
dmpdx1: call dmpdx2
|
|
||||||
dmpdx2: ; grab highest nibble from dx
|
|
||||||
mov al, dh
|
|
||||||
; remove highest nibble from dx
|
|
||||||
shl dx, cl
|
|
||||||
; shift away second-highest nibble that we accidentally copied
|
|
||||||
shr al, cl
|
|
||||||
; map 0-9 to ascii codes for '0' to '9'
|
|
||||||
add al, 0x30
|
|
||||||
; if result is larger than '9', ...
|
|
||||||
cmp al, 0x3a
|
|
||||||
jl dmpdx3
|
|
||||||
; ... add 7 so we continue at 'A'
|
|
||||||
add al, 7
|
|
||||||
dmpdx3: int 0x10
|
|
||||||
ret
|
|
113
boot/pxeboot.asm
113
boot/pxeboot.asm
@ -1,113 +0,0 @@
|
|||||||
org 0x7C00
|
|
||||||
|
|
||||||
main:
|
|
||||||
mov ax, [es:bx+0x0A]
|
|
||||||
mov [cs:pxejmp], ax
|
|
||||||
mov ax, [es:bx+0x0A+2]
|
|
||||||
mov [cs:pxejmp+2], ax
|
|
||||||
|
|
||||||
mov ax, cs
|
|
||||||
mov ds, ax
|
|
||||||
mov si, pxejmp
|
|
||||||
call dump
|
|
||||||
|
|
||||||
mov ax, cs
|
|
||||||
mov ds, ax
|
|
||||||
mov di, pxestat
|
|
||||||
mov bx, 0x0071
|
|
||||||
|
|
||||||
call UsePXEAPI
|
|
||||||
|
|
||||||
mov ax, cs
|
|
||||||
mov ds, ax
|
|
||||||
mov si, pxestat
|
|
||||||
call dump
|
|
||||||
call dump
|
|
||||||
|
|
||||||
hlt: hlt
|
|
||||||
jmp hlt
|
|
||||||
|
|
||||||
UsePXEAPI:
|
|
||||||
push ds
|
|
||||||
push di
|
|
||||||
push bx
|
|
||||||
int 3
|
|
||||||
call far [pxejmp]
|
|
||||||
int 3
|
|
||||||
add sp, 6
|
|
||||||
ret
|
|
||||||
|
|
||||||
pxejmp: dd 0
|
|
||||||
|
|
||||||
pxestat:
|
|
||||||
.Status dw 0
|
|
||||||
.PacketType dw 2
|
|
||||||
.BufferSize dw 0
|
|
||||||
.BufferOff dw 0
|
|
||||||
.BufferSeg dw 0
|
|
||||||
.BufferLimit dw 0
|
|
||||||
|
|
||||||
;tftp_open:
|
|
||||||
; .Status dw 0
|
|
||||||
; .SIP dd 0
|
|
||||||
; .GIP dd 0
|
|
||||||
; .Filename db "pxe.bs"
|
|
||||||
; times (128-6) db 0
|
|
||||||
; .Port dw 0
|
|
||||||
; .PacketSize dw 0
|
|
||||||
|
|
||||||
space:
|
|
||||||
mov al, 0x20
|
|
||||||
jmp putc
|
|
||||||
putbc:
|
|
||||||
cmp al, 0x80
|
|
||||||
jnc dot
|
|
||||||
cmp al, 0x20
|
|
||||||
jnc putc
|
|
||||||
dot:
|
|
||||||
mov al, '.'
|
|
||||||
putc:
|
|
||||||
push ax
|
|
||||||
push bx
|
|
||||||
mov ah, 0x0e
|
|
||||||
xor bx, bx
|
|
||||||
int 0x10
|
|
||||||
pop bx
|
|
||||||
pop ax
|
|
||||||
ret
|
|
||||||
|
|
||||||
dump: push cx
|
|
||||||
mov ax, ds
|
|
||||||
call print16
|
|
||||||
mov al, ':'
|
|
||||||
call putc
|
|
||||||
mov ax, si
|
|
||||||
call print16
|
|
||||||
call space
|
|
||||||
call space
|
|
||||||
|
|
||||||
mov cx, 0x08
|
|
||||||
push si
|
|
||||||
.hloop: lodsb
|
|
||||||
call print8
|
|
||||||
lodsb
|
|
||||||
call print8
|
|
||||||
call space
|
|
||||||
loop .hloop
|
|
||||||
pop si
|
|
||||||
call space
|
|
||||||
|
|
||||||
mov cx, 0x10
|
|
||||||
.aloop: lodsb
|
|
||||||
call putbc
|
|
||||||
loop .aloop
|
|
||||||
|
|
||||||
mov al, 0x0A
|
|
||||||
call putc
|
|
||||||
mov al, 0x0D
|
|
||||||
call putc
|
|
||||||
pop cx
|
|
||||||
ret
|
|
||||||
|
|
||||||
%include "print.asm"
|
|
||||||
%include "printf.asm"
|
|
@ -1,90 +0,0 @@
|
|||||||
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
|
|
@ -1,99 +0,0 @@
|
|||||||
org 0x7C00
|
|
||||||
|
|
||||||
cols: equ 80
|
|
||||||
rows: equ 30
|
|
||||||
|
|
||||||
main:
|
|
||||||
mov ax, cs
|
|
||||||
mov ds, ax
|
|
||||||
mov es, ax
|
|
||||||
mov ss, ax
|
|
||||||
xor sp, sp
|
|
||||||
|
|
||||||
mov ah, 0x42
|
|
||||||
mov si, dap
|
|
||||||
int 0x13
|
|
||||||
|
|
||||||
mov ax, 0x0011
|
|
||||||
int 0x10
|
|
||||||
|
|
||||||
mov di, txtbuf
|
|
||||||
.loop:
|
|
||||||
call sync
|
|
||||||
xor ax, ax
|
|
||||||
int 0x16
|
|
||||||
stosb
|
|
||||||
jmp .loop
|
|
||||||
|
|
||||||
hlt:
|
|
||||||
hlt
|
|
||||||
jmp hlt
|
|
||||||
|
|
||||||
sync:
|
|
||||||
push ax
|
|
||||||
push si
|
|
||||||
push di
|
|
||||||
push es
|
|
||||||
mov si, txtbuf
|
|
||||||
mov ax, 0xA000
|
|
||||||
mov es, ax
|
|
||||||
mov di, 0
|
|
||||||
|
|
||||||
mov bx, font
|
|
||||||
mov cx, rows
|
|
||||||
.loop:
|
|
||||||
call charline
|
|
||||||
loop .loop
|
|
||||||
|
|
||||||
pop es
|
|
||||||
pop di
|
|
||||||
pop si
|
|
||||||
pop ax
|
|
||||||
ret
|
|
||||||
|
|
||||||
charline:
|
|
||||||
push bx
|
|
||||||
push cx
|
|
||||||
mov cx, 8
|
|
||||||
.loop:
|
|
||||||
call scanline
|
|
||||||
call scanline
|
|
||||||
inc bh
|
|
||||||
loop .loop
|
|
||||||
add si, cols
|
|
||||||
pop cx
|
|
||||||
pop bx
|
|
||||||
ret
|
|
||||||
|
|
||||||
scanline:
|
|
||||||
push si
|
|
||||||
push cx
|
|
||||||
mov cx, cols
|
|
||||||
.loop:
|
|
||||||
lodsb
|
|
||||||
mov bl, al
|
|
||||||
mov al, [bx]
|
|
||||||
stosb
|
|
||||||
loop .loop
|
|
||||||
pop cx
|
|
||||||
pop si
|
|
||||||
ret
|
|
||||||
|
|
||||||
dap:
|
|
||||||
db 0x10
|
|
||||||
db 1
|
|
||||||
dw 20
|
|
||||||
dw font, 0
|
|
||||||
dq 1
|
|
||||||
|
|
||||||
times (510 - ($-$$)) nop
|
|
||||||
|
|
||||||
dw 0xAA55
|
|
||||||
|
|
||||||
font:
|
|
||||||
incbin "cp437.bin"
|
|
||||||
|
|
||||||
txtbuf:
|
|
||||||
times (rows * cols) db 0
|
|
||||||
|
|
||||||
end:
|
|
Loading…
Reference in New Issue
Block a user