mirror of
https://github.com/ish-app/ish.git
synced 2026-01-25 14:06:40 +00:00
59 lines
1.3 KiB
C
59 lines
1.3 KiB
C
#include "sys/calls.h"
|
|
#include "emu/process.h"
|
|
|
|
// TODO all this crap can and should return errors
|
|
|
|
dword_t user_get(addr_t addr) {
|
|
return *(dword_t *) mem_read_ptr(&curmem, addr);
|
|
}
|
|
|
|
byte_t user_get8(addr_t addr) {
|
|
return *(byte_t *) mem_read_ptr(&curmem, addr);
|
|
}
|
|
|
|
void user_put(addr_t addr, dword_t value) {
|
|
*(dword_t *) mem_write_ptr(&curmem, addr) = value;
|
|
}
|
|
|
|
void user_put8(addr_t addr, byte_t value) {
|
|
*(byte_t *) mem_write_ptr(&curmem, addr) = value;
|
|
}
|
|
|
|
int user_get_string(addr_t addr, char *buf, size_t max) {
|
|
size_t i = 0;
|
|
while (i < max) {
|
|
buf[i] = user_get8(addr + i);
|
|
if (buf[i] == '\0') break;
|
|
i++;
|
|
}
|
|
return i;
|
|
}
|
|
|
|
void user_put_string(addr_t addr, const char *buf) {
|
|
size_t i = 0;
|
|
while (buf[i] != '\0') {
|
|
user_put8(addr + i, buf[i]);
|
|
i++;
|
|
}
|
|
user_put8(addr + i, '\0');
|
|
}
|
|
|
|
int user_get_count(addr_t addr, void *buf, size_t count) {
|
|
char *cbuf = (char *) buf;
|
|
size_t i = 0;
|
|
while (i < count) {
|
|
cbuf[i] = user_get8(addr + i);
|
|
i++;
|
|
}
|
|
return i;
|
|
}
|
|
|
|
void user_put_count(addr_t addr, const void *buf, size_t count) {
|
|
const char *cbuf = (const char *) buf;
|
|
size_t i = 0;
|
|
while (i < count) {
|
|
user_put8(addr + i, cbuf[i]);
|
|
i++;
|
|
}
|
|
}
|