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 db string: "I won, the game!" db hexbyte: 0xab dw hexword: 0x1234abcd db replace: "I lost" start: // test print string lwi string, rg0 push rg0 call print::print pop zero // test print hex byte. ldb hexbyte, rg0 push rg0 call print::print_hex_byte pop zero // test print hex word. ldw hexword, rg0 push rg0 call print::print_hex_word pop zero // test print char lli 0x40, rg0 // print @ push rg0 call print::print_byte pop zero // test newline call print::print_newline lwi string rg0 push rg0 call print::print // test print word lwi 0x31323334, rg0 // print 1234 push rg0 call print::print_word pop zero // test reset cursor pos call print::reset // test print string at reset pos lwi replace, rg0 push rg0 call print::print pop zero 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