From 06dc63ce740b7a94b3350e624b6b27375bd7ff22 Mon Sep 17 00:00:00 2001 From: Redo Date: Tue, 1 Nov 2022 14:01:15 -0600 Subject: [PATCH] add string to hex dump --- assembler-8608.lua | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/assembler-8608.lua b/assembler-8608.lua index 1dd332e..2df1f29 100644 --- a/assembler-8608.lua +++ b/assembler-8608.lua @@ -455,6 +455,12 @@ local function disassembleHex(hex, arch) disassembleMemory(memToHex(hex), arch) end +local printableCharsS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789`-=[]\\;\',./~!@#$%^&*()_+{}|:\"<> " +local printableChars = {}; for i = 1, #printableCharsS do printableChars[printableCharsS:sub(i, i)] = true end; +local function toPrintableChar(n) + local c = string.char(n) + return printableChars[c] and c or "?" +end local function printMemory(mem) print("Memory Dump:") local anynonempty = false @@ -469,17 +475,21 @@ local function printMemory(mem) end for base = 0, 0xFFF0, 16 do local line = {} + local strt = {} local nonempty = false for addr = base, base+15 do if addr%4==0 then table.insert(line, " ") end if mem[addr]==false then nonempty = true table.insert(line, "XX ") + table.insert(strt, "X") elseif mem[addr] then nonempty = true table.insert(line, string.format("%02X", mem[addr]).." ") + table.insert(strt, toPrintableChar(mem[addr])) else table.insert(line, "-- ") + table.insert(strt, "-") end end if nonempty then @@ -487,7 +497,7 @@ local function printMemory(mem) if l~=lastline or base~=lastbase+16 then closereps(base-16) if base ~= lastbase+16 then print("...") end - print(string.format("%04X", base).." |"..l) + print(string.format("%04X", base).." | "..l.." | "..table.concat(strt)) else numreps = numreps+1 end