Get rid of pre-tables for interrupts and kprintf

This commit is contained in:
Nero 2019-05-02 20:14:31 +00:00
parent 49ae13c73a
commit 0622188353
3 changed files with 43 additions and 308 deletions

View file

@ -5,13 +5,6 @@ optrom_length:
db 0x00
jmp optrom_init
str_vendor:
db "Nero", 0
align 16
str_product:
db "Nero DOS", 0
times (0x1A - ($-$$)) db 0
dw pnp
@ -36,13 +29,13 @@ pnp:
align 16
optrom_init:
xor ax, ax
mov es, ax
mov di, 0x0060 ; vector (0x18 * 4 bytes)
mov ax, start
stosw
mov ax, cs
stosw
; setup data stack below code stack
mov bp, sp
sub bp, 0x80
; intnum and offset to data stack
mov word [ss:bp], 0x18
mov word [ss:bp+2], start
call intr_register
retf
putc:
@ -57,6 +50,8 @@ putc:
announce:
push cs
mov ax, cs
mov ds, ax
mov ax, str_product
push ax
call printf
@ -65,42 +60,26 @@ announce:
ret
start:
mov ax, cs
xor ax, ax
mov ds, ax
mov es, ax
; setup code + data stack
mov ss, ax
mov sp, ax
mov bp, sp
; data stack starts 512 bytes below code stack
sub bp, 0x200
call announce
; clear memory until 0x01000
xor ax, ax
mov es, ax
mov di, 0x500
mov cx, 0xB00
rep stosb
sub bp, 4
mov word [ss:bp], 3
mov word [ss:bp+2], isr_debug
call intr_register
call intr_init
sti
sub sp, 0x10
mov si, sp
mov word [ss:si+0x00], 0
mov word [ss:si+0x02], 1
mov word [ss:si+0x04], 0
mov word [ss:si+0x06], 0x2000
mov word [ss:si+0x08], 0x07fc
mov word [ss:si+0x0A], 0
mov word [ss:si+0x0C], 0
mov word [ss:si+0x0E], 0
mov ah, 0x42
push ss
pop ds
call ramdisk_io
push ax
call printf
db "AX=%X", 0x0A, 0x0D, 0x00
pop ax
add sp, 0x10
int 3
.halt:
hlt
@ -111,9 +90,5 @@ start:
%include "intr.asm"
%include "debug.asm"
%include "kprintf.asm"
%include "dosapi.asm"
_reloc_end:
align 512