rdos/kernel/main.asm

61 lines
737 B
NASM
Raw Normal View History

cpu 8086
org 0x0
jmp init
2019-09-06 00:24:39 +02:00
isr_dos_main:
cmp ah, 0x01
je isr_getc_echo
cmp ah, 0x02
je isr_putc
cmp ah, 0x25
je isr_intr_register
jmp isr_invalid
%include "intr.asm"
%include "chario.asm"
; ISR for invalid subfunctions or unimplemented
isr_invalid:
mov bp, 0xFEFE
int3
.hlt:
hlt
jmp .hlt
; ISR tail to set carry flag to signal error
2019-09-06 00:24:39 +02:00
isr_error:
push bp
mov bp, sp
; set carry flag
or WORD [SS:BP+6], 1
pop bp
isr_return:
iret
2019-09-19 22:02:16 +02:00
%include "drive.asm"
init:
mov ax, cs
mov ds, ax
mov es, ax
2019-09-19 22:02:16 +02:00
mov di, kernel_end
call drive_setup
mov dx, isr_dos_main
mov ax, 0x2521
pushf
push cs
call isr_dos_main
2019-09-03 12:58:06 +02:00
2019-09-19 22:02:16 +02:00
mov dl, 0x37
mov ah, 0x02
int 0x21
cli
.halt:
hlt
jmp .halt
2019-09-06 00:24:39 +02:00
2019-09-19 22:02:16 +02:00
kernel_end: