diff --git a/assembler-8608.lua b/assembler-8608.lua index 20bdbab..b3d4c98 100644 --- a/assembler-8608.lua +++ b/assembler-8608.lua @@ -443,8 +443,16 @@ local function printMemory(mem) print("Memory Dump:") local anynonempty = false local lastbase = -16 + local lastline = "" + local numreps = 0 + local function closereps(base) + if numreps~=0 then + print("(repeated "..numreps.." more times, up to "..string.format("%04X", base+16)..")") + numreps = 0 + end + end for base = 0, 0xFFF0, 16 do - local line = { string.format("%04X", base), " |" } + local line = {} local nonempty = false for addr = base, base+15 do if addr%4==0 then table.insert(line, " ") end @@ -459,12 +467,20 @@ local function printMemory(mem) end end if nonempty then - if base ~= lastbase+16 then print("...") end - print(table.concat(line)) + local l = table.concat(line) + if l~=lastline or base~=lastbase+16 then + closereps(base) + if base ~= lastbase+16 then print("...") end + print(string.format("%04X", base).." |"..l) + else + numreps = numreps+1 + end + lastline = l lastbase = base anynonempty = true end end + closereps(lastbase) if not anynonempty then print("Empty") end print() end