include fib: "./lib/maths/fib.dsa" include maths: "./lib/maths/core.dsa" include print: "./lib/io/print.dsa" dw idt: 0xFFFF0000 dw stack: 0x10000 init: // setup interrupt handlers ldw idt, idr lwi handle_hard_fault, rg0 stw rg0, idr, 4 // set up a stack. ldw stack, bpr mov bpr, spr dw string: "hello world" start: lwi 37, rg0 lwi 12, rg1 push rg0 push rg1 call maths::divmod pop rg0 // result pop rg1 // remainder push rg1 push rg0 call print::print_hex_byte call print::print_whitespace pop zero call print::print_hex_byte call print::print_newline lwi string, rg0 //lwi 10, rg0 pusha 4 push rg0 call print::print //call fib::fib_n pop zero call print::print_newline popa 4 pusha 4 push rg0 call print::print //call fib::fib_n pop zero call print::print_newline popa 4 pusha 4 push rg0 call print::print //call fib::fib_n pop zero call print::print_newline popa 4 pusha 4 push rg0 call print::print //call fib::fib_n pop zero call print::print_newline popa 4 hlt // fault handler in case we fail DSA. dw hard_fault_err: "FATAL: Illegal Instruction or Memory Access!" handle_hard_fault: call print::clear call print::reset lwi hard_fault_err, rg0 push rg0 call print::print pop zero hlt