From ecf01a2dc9e86a721b12c436189769315a51e87e Mon Sep 17 00:00:00 2001 From: Redo Date: Fri, 1 Dec 2023 04:19:46 -0600 Subject: [PATCH] accumulated old changes --- assembler-8608.lua | 5 ++++- emulator/8608emulator.dll | Bin 164507 -> 164507 bytes emulator/8608emulator.lua | 1 + emulator/instructions_gen.c | 4 ++-- emulator/keycodes.lua | 30 +++++++++++++++--------------- rom-8608-defs.lua | 2 +- 6 files changed, 23 insertions(+), 19 deletions(-) diff --git a/assembler-8608.lua b/assembler-8608.lua index 8a99e16..010d48d 100644 --- a/assembler-8608.lua +++ b/assembler-8608.lua @@ -323,7 +323,10 @@ local function fixCode(code) return code end local stringEscapes = { ["\\"] = "\\", ["n"] = "\n", ["r"] = "\r", ["t"] = "\t", ["0"] = "\0", ["\""] = "\"", ["\'"] = "\'", } +local prefixIdx = 0 local function prefixCode(code, fn) -- fix strings, add line numbers + prefixIdx = prefixIdx + 1 + local outt = {} local outnextnl = {} local linenum = 1 @@ -335,7 +338,7 @@ local function prefixCode(code, fn) -- fix strings, add line numbers local state = "code" -- code, comment, string, stringesc, commentml local lastbracelabel = 0 - local function bracelabel() lastbracelabel = lastbracelabel+1; return "_BRACE_"..lastbracelabel.."_"; end + local function bracelabel() lastbracelabel = lastbracelabel+1; return "_BRACE_"..string.format("%02d", prefixIdx)..lastbracelabel.."_"; end local bracestack = {} local bracehasmid = {} local lastnl = false diff --git a/emulator/8608emulator.dll b/emulator/8608emulator.dll index 99234eca487edb73b565f8d3b92bfd62427a13b9..e04d18ef438b87f419fc86222aaab3bd11476992 100644 GIT binary patch delta 12706 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 delta 12747 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 E4-B)p%>V!Z diff --git a/emulator/8608emulator.lua b/emulator/8608emulator.lua index a3d94ef..e8bd716 100644 --- a/emulator/8608emulator.lua +++ b/emulator/8608emulator.lua @@ -668,6 +668,7 @@ function love.keypressed(k) elseif k=="o" then RunToNextInstr(cpu) elseif k=="r" then RunCPU = not RunCPU elseif k=="i" then CPU.c.irq = 1 + elseif k=="u" then CPU.c.rfg = 1 end end end diff --git a/emulator/instructions_gen.c b/emulator/instructions_gen.c index 24e9fb9..974f61e 100644 --- a/emulator/instructions_gen.c +++ b/emulator/instructions_gen.c @@ -200,8 +200,8 @@ void cpu_instr_108_3(struct CPU* const cpu, struct Memory* const mem) { storeutp void cpu_instr_108_4(struct CPU* const cpu, struct Memory* const mem) { lni; } void cpu_instr_110_0(struct CPU* const cpu, struct Memory* const mem) { loadimm161 cpu->cycle++; } void cpu_instr_110_1(struct CPU* const cpu, struct Memory* const mem) { loadimm162 cpu->cycle++; } -void cpu_instr_110_2(struct CPU* const cpu, struct Memory* const mem) { storeut(hibyte(cpu->p)); cpu->cycle++; } -void cpu_instr_110_3(struct CPU* const cpu, struct Memory* const mem) { storeutp1(lobyte(cpu->p)); cpu->cycle++; } +void cpu_instr_110_2(struct CPU* const cpu, struct Memory* const mem) { storeut(hibyte(cpu->q)); cpu->cycle++; } +void cpu_instr_110_3(struct CPU* const cpu, struct Memory* const mem) { storeutp1(lobyte(cpu->q)); cpu->cycle++; } void cpu_instr_110_4(struct CPU* const cpu, struct Memory* const mem) { lni; } void cpu_instr_112_0(struct CPU* const cpu, struct Memory* const mem) { loadimmedt cpu->cycle++; } void cpu_instr_112_1(struct CPU* const cpu, struct Memory* const mem) { subf(cpu->a,cpu->t); lni; } diff --git a/emulator/keycodes.lua b/emulator/keycodes.lua index fb1aa34..1ff3625 100644 --- a/emulator/keycodes.lua +++ b/emulator/keycodes.lua @@ -5,12 +5,12 @@ return { ["return"] = 13, ["lshift"] = 16, - ["lcontrol"] = 17, + ["lctrl"] = 17, --["lcontrol"] = 17, ["lalt"] = 18, -- this block does not match vkey codes ["rshift"] = 20, - ["rcontrol"] = 21, + ["rctrl"] = 21, --["rcontrol"] = 21, ["ralt"] = 22, -- this block does not match vkey codes @@ -18,7 +18,7 @@ return { ["="] = 25, [","] = 26, ["."] = 27, - ["-"] = 28, + ["-"] = 28, -- not in bl ["/"] = 29, ["`"] = 30, @@ -95,18 +95,18 @@ return { ["kp."] = 110, --["numpaddecimal"] = 110, ["kp/"] = 111, --["/"] = 111, - ["f1"] = 112, - ["f2"] = 113, - ["f3"] = 114, - ["f4"] = 115, - ["f5"] = 116, - ["f6"] = 117, - ["f7"] = 118, - ["f8"] = 119, - ["f9"] = 120, - ["f10"] = 121, - ["f11"] = 122, - ["f12"] = 123, + ["f1"] = 112, + ["f2"] = 113, + ["f3"] = 114, + ["f4"] = 115, + ["f5"] = 116, + ["f6"] = 117, + ["f7"] = 118, + ["f8"] = 119, + ["f9"] = 120, + ["f10"] = 121, + ["f11"] = 122, + ["f12"] = 123, ["invalid"] = 127, } diff --git a/rom-8608-defs.lua b/rom-8608-defs.lua index e09fc7e..4d7daa7 100644 --- a/rom-8608-defs.lua +++ b/rom-8608-defs.lua @@ -334,7 +334,7 @@ instructions = { { mnem="ldp *imm16" , opcode=0x68, {"loadImm161","instrSub1"}, {"loadImm162","instrSub2"}, {"loadUTU","adwIncUT","adwSaveP","instrSub3"}, {"adrlP","loadRegT","instrSub4"}, {"adwrUT","adwSaveP","instrNext"}, desc="P=*imm16", ccode={"loadimm161","loadimm162","cpu.p=wordut; cpu.u=loadut;","cpu.t=loadpp1;","cpu.p=wordut; lni;"} }, -- 0x69 { mnem="ldq *imm16" , opcode=0x6A, {"loadImm161","instrSub1"}, {"loadImm162","instrSub2"}, {"loadUTU","adwIncUT","adwSaveQ","instrSub3"}, {"adrlQ","loadRegT","instrSub4"}, {"adwrUT","adwSaveQ","instrNext"}, desc="Q=*imm16", ccode={"loadimm161","loadimm162","cpu.q=wordut; cpu.u=loadut;","cpu.t=loadqp1;","cpu.q=wordut; lni;"} }, -- 0x6B { mnem="stp *imm16" , opcode=0x6C, {"loadImm161","instrSub1"}, {"loadImm162","instrSub2"}, {"storeUT","alurPH","instrSub3"}, {"storeUT","adrInc","alurPL","instrSub4"}, {"instrNext"}, desc="*imm16=P", ccode={"loadimm161","loadimm162","storeut(hibyte(cpu.p));","storeutp1(lobyte(cpu.p));","lni;"} }, -- 0x6D - { mnem="stq *imm16" , opcode=0x6E, {"loadImm161","instrSub1"}, {"loadImm162","instrSub2"}, {"storeUT","alurQH","instrSub3"}, {"storeUT","adrInc","alurQL","instrSub4"}, {"instrNext"}, desc="*imm16=Q", ccode={"loadimm161","loadimm162","storeut(hibyte(cpu.p));","storeutp1(lobyte(cpu.p));","lni;"} }, -- 0x6F + { mnem="stq *imm16" , opcode=0x6E, {"loadImm161","instrSub1"}, {"loadImm162","instrSub2"}, {"storeUT","alurQH","instrSub3"}, {"storeUT","adrInc","alurQL","instrSub4"}, {"instrNext"}, desc="*imm16=Q", ccode={"loadimm161","loadimm162","storeut(hibyte(cpu.q));","storeutp1(lobyte(cpu.q));","lni;"} }, -- 0x6F { mnem="ldp *p" , opcode=0x92, {"adrlP","load161","instrSub1"}, {"adrlP","load162","instrSub2"}, {"adwrUT","adwSaveP","instrNext"}, desc="P=*P", ccode={"cpu.u=loadp;","cpu.t=loadpp1;","cpu.p=wordut; lni;"} }, { mnem="ldq *p" , opcode=0x93, {"adrlP","load161","instrSub1"}, {"adrlP","load162","instrSub2"}, {"adwrUT","adwSaveQ","instrNext"}, desc="Q=*P", ccode={"cpu.u=loadp;","cpu.t=loadpp1;","cpu.q=wordut; lni;"} }, { mnem="ldp *q" , opcode=0x94, {"adrlQ","load161","instrSub1"}, {"adrlQ","load162","instrSub2"}, {"adwrUT","adwSaveP","instrNext"}, desc="P=*Q", ccode={"cpu.u=loadq;","cpu.t=loadqp1;","cpu.p=wordut; lni;"} },