rdos/kernel/main.asm

121 lines
1.6 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
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
2019-09-06 00:24:39 +02:00
push cs
pop es
mov di, isr_dos_main
mov ax, 0x21
call intr_register
.loop:
mov ah, 0x01
int 0x21
jmp .loop
2019-09-03 12:58:06 +02:00
2019-08-31 00:18:05 +02:00
cli
.halt:
hlt
jmp .halt
2019-09-06 00:24:39 +02:00
isr_dos_main:
cmp ah, 0x01
je isr_getc
cmp ah, 0x02
je isr_putc
isr_error:
push bp
mov bp, sp
; set carry flag
or WORD [SS:BP+6], 1
pop bp
isr_return:
iret
2019-09-03 12:58:06 +02:00
%include "intr.asm"
%include "drvtab.asm"
2019-09-06 00:24:39 +02:00
%include "chario.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