trap: OUT

This commit is contained in:
dogeystamp 2024-01-14 19:58:17 -05:00
parent 666152229a
commit 7953afdd5d
Signed by: dogeystamp
GPG Key ID: 7225FE3592EFFA38

View File

@ -289,7 +289,7 @@ fn op_trap(vm: &mut VM, instr: u16) {
let trap_vector = instr & 0xff;
match trap_vector {
0x20 => trap_getc(vm),
0x21 => todo!("OUT"),
0x21 => trap_out(vm),
0x22 => trap_puts(vm),
0x23 => todo!("IN"),
0x24 => todo!("PUTSP"),
@ -315,3 +315,11 @@ fn trap_getc(vm: &mut VM) {
while vm.mem.get_mem(0xFE00) & (1 << 15) == 0 {}
vm.registers.r0 = vm.mem.get_mem(0xFE02) & 0xFF;
}
fn trap_out(vm: &mut VM) {
let val = char::from_u32((vm.registers.r0 & 0xFF).into());
match val {
Some(c) => print!("{}", c),
None => {}
}
}