cpu 8086 org 0x0100 jmp init isr_dos_main: cmp ah, 0x01 je isr_getc_echo cmp ah, 0x02 je isr_putc jmp isr_invalid %include "chario.asm" %include "intr.asm" %include "cache.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 isr_error: push bp mov bp, sp ; set carry flag or WORD [SS:BP+6], 1 pop bp isr_return: iret init: push cs pop es mov di, isr_dos_main mov ax, 0x21 call intr_register mov di, kernel_end call cache_init int3 cli .halt: hlt jmp .halt kernel_end: