continuing with serial driver in dsa.

This commit is contained in:
2026-03-16 23:18:53 +00:00
parent 6061e1701e
commit ffdd392003
7 changed files with 186 additions and 94 deletions
+5 -8
View File
@@ -1,4 +1,5 @@
include print: "./print.dsa"
include serial: "./serial.dsa"
dw idt: 0xFFFF0000
setup_base: func
@@ -15,8 +16,8 @@ setup_base: func
_loop_start:
stw rg1, rg2 // store guard into current IDT entry
subi rg2, 4, rg2 // decrement counter
ieq rg2, zero, rg3 // check if counter is zero
jnz rg3, _loop_start // repeat until all entries set
ieq rg2, idr, rg3 // check if we've reached the base address
jez rg3, _loop_start // repeat until all entries set
// make sure we can handle an invalid interrupt
lwi _handle_invalid_interrupt, rg0
@@ -31,16 +32,12 @@ _loop_start:
setup_io: func
push rg0
lwi _serial_interrupt, rg0
stw rg0, idr, 132 // 33*4, interrupt idx 32
lwi serial::serial_isr, rg0
stw rg0, idr, 128 // 32*4, interrupt idx 32
pop rg0
return
// does nothing, but wakes the kernel
_serial_interrupt:
nop
iret
db _invalid_int: "FATAL: Invalid Interrupt!"
_handle_invalid_interrupt: