From 400c49e96b836d5b1000305434ef17a7b9a5ee96 Mon Sep 17 00:00:00 2001 From: Andrew Alderwick Date: Wed, 21 Apr 2021 13:37:41 +0100 Subject: [PATCH] Fixed file_poke --- src/debugger.c | 14 ++++++-------- src/emulator.c | 16 ++++++---------- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/debugger.c b/src/debugger.c index a6dfbcd..00d53ca 100644 --- a/src/debugger.c +++ b/src/debugger.c @@ -54,22 +54,20 @@ console_poke(Device *d, Uint8 b0, Uint8 b1) Uint8 file_poke(Device *d, Uint8 b0, Uint8 b1) { - /* Uint8 read = b0 == 0xd; if(read || b0 == 0xf) { - char *name = (char *)&d->mem[mempeek16(m, 0x8)]; - Uint16 result = 0, length = mempeek16(m, 0xa); - Uint16 offset = mempeek16(m, 0x4); - Uint16 addr = (m[b0 - 1] << 8) | b1; + char *name = (char *)&d->mem[mempeek16(d->dat, 0x8)]; + Uint16 result = 0, length = mempeek16(d->dat, 0xa); + Uint16 offset = mempeek16(d->dat, 0x4); + Uint16 addr = (d->dat[b0 - 1] << 8) | b1; FILE *f = fopen(name, read ? "r" : (offset ? "a" : "w")); if(f) { - if(fseek(f, offset, SEEK_SET) != -1 && (result = read ? fread(&m[addr], 1, length, f) : fwrite(&m[addr], 1, length, f))) + if(fseek(f, offset, SEEK_SET) != -1 && (result = read ? fread(&d->mem[addr], 1, length, f) : fwrite(&d->mem[addr], 1, length, f))) printf("%s %d bytes, at %04x from %s\n", read ? "Loaded" : "Saved", length, addr, name); fclose(f); } - mempoke16(m, 0x2, result); + mempoke16(d->dat, 0x2, result); } - */ return b1; } diff --git a/src/emulator.c b/src/emulator.c index 41afaca..b895d5f 100644 --- a/src/emulator.c +++ b/src/emulator.c @@ -225,24 +225,20 @@ screen_poke(Device *d, Uint8 b0, Uint8 b1) Uint8 file_poke(Device *d, Uint8 b0, Uint8 b1) { - /* TODO: Figure out why fwrite doesn't work with d->mem Uint8 read = b0 == 0xd; if(read || b0 == 0xf) { - char *name = (char *)&d->mem[mempeek16(m, 0x8)]; - Uint16 result = 0, length = mempeek16(m, 0xa); - Uint16 offset = mempeek16(m, 0x4); - Uint16 addr = (m[b0 - 1] << 8) | b1; + char *name = (char *)&d->mem[mempeek16(d->dat, 0x8)]; + Uint16 result = 0, length = mempeek16(d->dat, 0xa); + Uint16 offset = mempeek16(d->dat, 0x4); + Uint16 addr = (d->dat[b0 - 1] << 8) | b1; FILE *f = fopen(name, read ? "r" : (offset ? "a" : "w")); if(f) { - if(fseek(f, offset, SEEK_SET) != -1 && (result = read ? fread(d->mem[addr], 1, length, f) : fwrite(&d->mem[addr], 1, length, f))) + if(fseek(f, offset, SEEK_SET) != -1 && (result = read ? fread(&d->mem[addr], 1, length, f) : fwrite(&d->mem[addr], 1, length, f))) printf("%s %d bytes, at %04x from %s\n", read ? "Loaded" : "Saved", length, addr, name); fclose(f); } - mempoke16(m, 0x2, result); + mempoke16(d->dat, 0x2, result); } - */ - (void)d; - (void)b0; return b1; }