Skip to content

Commit

Permalink
Fixed streaming for Sys system call implementations.
Browse files Browse the repository at this point in the history
  • Loading branch information
nthnn committed Mar 2, 2024
1 parent 03220cc commit 1ecbefc
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 11 deletions.
14 changes: 7 additions & 7 deletions src/rishka_syscalls.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,25 +76,25 @@ void change_rt_strpass(char* data) {

void rishka_syscall_io_prints(rishka_virtual_machine* vm) {
char* arg = (char*) rishka_vm_getptr(vm, (((rishka_u64_arrptr*) & vm->registers)->a).v[10]);
Serial.print(arg != NULL ? arg : "(null)");
vm->stream->print(arg != NULL ? arg : "(null)");
}

void rishka_syscall_io_printn(rishka_virtual_machine* vm) {
int64_t arg = (int64_t)(((rishka_u64_arrptr*) & vm->registers)->a).v[10];
Serial.print(arg);
vm->stream->print(arg);
}

void rishka_syscall_io_printd(rishka_virtual_machine* vm) {
double arg = rishka_long_to_double((((rishka_u64_arrptr*) & vm->registers)->a).v[10]);
Serial.print(arg);
vm->stream->print(arg);
}

char rishka_syscall_io_readch() {
return (char) Serial.read();
char rishka_syscall_io_readch(rishka_virtual_machine* vm) {
return (char) vm->stream->read();
}

size_t rishka_syscall_io_readline() {
char* input = (char*) Serial.readString().c_str();
size_t rishka_syscall_io_readline(rishka_virtual_machine* vm) {
char* input = (char*) vm->stream->readString().c_str();
change_rt_strpass(input);

return strlen(input);
Expand Down
4 changes: 2 additions & 2 deletions src/rishka_syscalls.h
Original file line number Diff line number Diff line change
Expand Up @@ -125,8 +125,8 @@ enum rishka_syscall {
void rishka_syscall_io_prints(rishka_virtual_machine* vm);
void rishka_syscall_io_printn(rishka_virtual_machine* vm);
void rishka_syscall_io_printd(rishka_virtual_machine* vm);
char rishka_syscall_io_readch();
size_t rishka_syscall_io_readline();
char rishka_syscall_io_readch(rishka_virtual_machine* vm);
size_t rishka_syscall_io_readline(rishka_virtual_machine* vm);

void rishka_syscall_sys_delay(rishka_virtual_machine* vm);
unsigned long rishka_syscall_sys_micros();
Expand Down
4 changes: 2 additions & 2 deletions src/rishka_vm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -592,10 +592,10 @@ uint64_t rishka_vm_handle_syscall(rishka_virtual_machine* vm, uint64_t code) {
break;

case RISHKA_SC_IO_READCH:
return rishka_syscall_io_readch();
return rishka_syscall_io_readch(vm);

case RISHKA_SC_IO_READLINE:
return (uint64_t) rishka_syscall_io_readline();
return rishka_syscall_io_readline(vm);

case RISHKA_SC_SYS_DELAY_MS:
rishka_syscall_sys_delay(vm);
Expand Down

0 comments on commit 1ecbefc

Please sign in to comment.