fixed read syscall

This commit is contained in:
zongor 2025-09-25 15:27:59 -07:00
parent fe921a1050
commit 3733f432e7
2 changed files with 18 additions and 12 deletions

View File

@ -188,14 +188,18 @@ bool step_vm(VM *vm) {
size_reg = read_u8(vm, code, vm->pc);
vm->pc++;
path_ptr = frame->registers[path_reg]; /* R0: path pointer */
buffer_ptr = frame->registers[buffer_reg]; /* R1: buffer pointer */
size = frame->registers[size_reg]; /* R2: size */
path_ptr = frame->registers[path_reg]; /* path pointer */
size = frame->registers[size_reg]; /* size */
buffer_ptr = vm->mp;
dev = find_device_by_path(vm, (const char *)&vm->memory[path_ptr + 4]);
if (dev && dev->ops->read) {
vm->flag =
dev->ops->read(dev->data, (u8 *)&vm->memory[buffer_ptr], size);
dev->ops->read(dev->data, (u8 *)&vm->memory[buffer_ptr + 4], size);
vm->mp += size + 4;
write_u32(vm, memory, buffer_ptr, size);
frame->end = vm->mp;
frame->registers[buffer_reg] = buffer_ptr;
} else {
vm->flag = 0;
}

View File

@ -14,8 +14,10 @@
(load-immediate $7 &help)
(string-length $8 $7)
(syscall DEVICE-WRITE $10 $7 $8)
;(load-immediate $8 32)
;(syscall DEVICE-READ $10 $2 $8) ; FIXME
(load-immediate $8 32)
(syscall DEVICE-READ $10 $2 $8)
(push $2)
(call &println)
(nat-to-string $4 $1)
(push $4)
(call &println)
@ -34,5 +36,5 @@
(return)))
(data
(label terminal-namespace "/dev/term/0")
(label help "Enter a string:\n")
(label help "Enter a string: ")
(label new-line "\n")))