rdos/kernel/main.asm

106 lines
1.4 KiB
NASM
Raw Normal View History

cpu 8086
org 0x0000
db 0x55, 0xAA
optrom_length:
db 0x00
jmp optrom_init
2019-08-31 00:18:05 +02:00
; reserved area
times (0x1A - ($-$$)) db 0
dw pnp
align 16
pnp:
db "$PnP"
2019-08-31 00:18:05 +02:00
.version:
db 1 ; version 1
2019-08-31 00:18:05 +02:00
.length:
db 2 ; 2 * 16 length
dw 0 ; offset of next header
db 0
2019-08-31 00:18:05 +02:00
.checksum:
db 0 ; checksum (filled by fix-rom)
dd 0 ; device identifier
dw str_vendor ; manufacturer string
dw str_product ; product name string
db 0,0,0 ; device type string
db 0x20 ; device indicator, bit for "read cacheable" set
dw 0 ; boot connection vector
dw 0 ; boot disconnect vector
dw start ; bootstrap entry point
dw 0 ; reserved
dw 0
2019-05-02 22:25:50 +02:00
str_vendor:
db "Nero", 0
str_product:
db "Nero DOS ", 60, 234, 62, 0
optrom_init:
push cs
pop es
2019-09-01 16:16:47 +02:00
mov di, isr_debug
mov ax, 0x1
call intr_register
mov ax, 0x3
call intr_register
mov di, start
mov ax, 0x18
call intr_register
2019-09-01 16:16:47 +02:00
retf
putc:
push bx
push cx
mov ah, 0x0e
mov bx, 0x0000
int 0x10
pop cx
pop bx
ret
announce:
2019-05-02 22:26:11 +02:00
push ds
push cs
2019-09-03 12:58:06 +02:00
push cs
pop ds
mov ax, str_product
push ax
call printf
db "%S (CS=%Xh)", 0x0A, 0x0D, 0x00
add sp, 4
2019-05-02 22:26:11 +02:00
pop ds
ret
start:
xor ax, ax
mov ds, ax
mov es, ax
mov ss, ax
mov sp, 0x800
mov di, sp
call announce
2019-09-03 12:58:06 +02:00
call drvtab_create
int3
2019-08-31 00:18:05 +02:00
cli
.halt:
hlt
jmp .halt
2019-09-03 12:58:06 +02:00
%include "intr.asm"
%include "drvtab.asm"
%include "printf.inc"
2019-08-31 00:18:05 +02:00
%include "print.asm"
%include "debug.asm"
2019-08-30 19:40:47 +02:00
align 512