From 9ebec735c488e2f7ac29933fb51b4e6e65c7b93f Mon Sep 17 00:00:00 2001 From: Ian C Date: Fri, 5 Dec 2008 00:37:26 +0000 Subject: Initial working version of memory snapshots --- source/zx81.c | 106 +++++++++++++++++++++++++++++++++------------------------- 1 file changed, 61 insertions(+), 45 deletions(-) (limited to 'source/zx81.c') diff --git a/source/zx81.c b/source/zx81.c index a8620c3..00d6015 100644 --- a/source/zx81.c +++ b/source/zx81.c @@ -226,40 +226,28 @@ static void RomPatch(void) static Z80Byte FromASCII(char c) { - switch(c) - { - case '\'': - case '"': - return 11; - - case '(': - return 16; - - case ')': - return 17; + static const char *charset = + /* 0123456789 */ + " _________" + "_\"#$:?()><" + "=+-*/:,.01" + "23456789ab" + "cdefghijkl" + "mnopqrstuv" + "wxyz"; - case '-': - return 22; - - case '*': - return 23; + int f; - case ',': - return 26; + c = tolower(c); - case '.': - return 27; + for(f = 0; charset[f]; f++) + { + if (charset[f] == c) + { + return f; + } } - if (c>='0' && c<='9') - return (c-'0')+28; - - if (c>='a' && c<='z') - return (c-'a')+38; - - if (c>='A' && c<='Z') - return (c-'A')+38; - return 0; } @@ -1028,6 +1016,10 @@ void ZX81SuspendDisplay(void) void ZX81ResumeDisplay(void) { ClearText(); + + /* Reset last_I to force hi/lo res detection + */ + last_I = 0; } @@ -1081,27 +1073,51 @@ void ZX81Reconfigure(void) void ZX81SaveSnapshot(FILE *fp) { - STRPUT(fp, mem); - STRPUT(fp, matrix); - STRPUT(fp, waitkey); - STRPUT(fp, started); - STRPUT(fp, RAMBOT); - STRPUT(fp, RAMTOP); - STRPUT(fp, prev_lk1); - STRPUT(fp, prev_lk2); + int f; + + for(f=0; f