Add files via upload

This commit is contained in:
Ærþ 2022-04-16 01:22:30 +10:00 committed by GitHub
parent 615cc26672
commit b43d52bf2f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 100 additions and 11 deletions

View file

@ -1,8 +1,8 @@
#define ROM vm->devices[2]
void rom_write(struct VMinst* vm, void* data, uint64_t length) {
printf("rom_write was called. [%p, %p, %lu]", vm, data, length);
exit(-1);
if (length == 0) ((uint64_t*)ROM.buffer)[0] = (uint64_t)data;
else fwrite(data, sizeof(uint8_t), length, ((FILE**)(ROM.buffer))[1024 * 256 / 8 - 1 - ((uint64_t*)ROM.buffer)[0]]);
}
void rom_out(struct VMinst* vm) {
@ -11,10 +11,11 @@ void rom_out(struct VMinst* vm) {
}
void rom_read(struct VMinst* vm, void* buffer, uint64_t length, uint64_t where) {
fread(buffer, sizeof(uint8_t), length, ((FILE**)(ROM.buffer))[1024 * 256 / 8 - 1 - ((uint64_t*)ROM.buffer)[0]]);
}
void rom_wait(struct VMinst* vm, uint64_t data) {
fseek(((FILE**)(ROM.buffer))[1024 * 256 / 8 - 1 - ((uint64_t*)ROM.buffer)[0]], data, SEEK_SET);
}
void rom_poweroff(struct VMinst* vm) {
@ -29,6 +30,7 @@ void rom_poweroff(struct VMinst* vm) {
void setup_rom(struct VMinst* vm) {
ROM.buffer = malloc(1024 * 256);
((uint64_t*)ROM.buffer)[0] = 0;
ROM.write = &rom_write;
ROM.out = &rom_out;
ROM.read = &rom_read;
@ -39,6 +41,6 @@ void setup_rom(struct VMinst* vm) {
exit(-1);
}
for (int i = 0; i < DEV_ROM_COUNT; ++i) {
((uint64_t**)ROM.buffer)[1024 * 32 - 8 + i] = (uint64_t*) fopen(dev_rom[i], "rb+");
((uint64_t**)ROM.buffer)[1024 * 256 / 8 - 1 - i] = (uint64_t*) fopen(dev_rom[i], "wb+");
}
}