diff --git a/l7801.lua b/l7801.lua index f5a48d1..1ca9314 100644 --- a/l7801.lua +++ b/l7801.lua @@ -104,7 +104,7 @@ local opcode_reg_list = { v = lookupify{'mvi'}, bc = lookupify{'lxi'}, de = lookupify{'lxi'}, - hl = lookupify{'lxi'}, + hl = lookupify{'dcx','inx','lxi'}, sp = lookupify{'dcx','inx','lxi'}, } diff --git a/samples/scv_test.l65 b/samples/scv_test.l65 index dee1774..e0ef9e3 100644 --- a/samples/scv_test.l65 +++ b/samples/scv_test.l65 @@ -107,5 +107,10 @@ section{"rom", org=0x8000} bit5 (v,0xdc) bit6 (v,0xba) bit7 (v,0x98) - + dcx bc + dcx de + dcx hl + inx bc + inx de + inx hl writebin(filename .. '.bin') \ No newline at end of file diff --git a/uPD7801.lua b/uPD7801.lua index a89cb3d..2ddc021 100644 --- a/uPD7801.lua +++ b/uPD7801.lua @@ -69,6 +69,21 @@ for k,v in pairs(opsp) do end end +local opr16={ + dcxbc=M.op(0x13,7), + dcxde=M.op(0x23,7), + dcxhl=M.op(0x33,7), + inxbc=M.op(0x12,7), + inxde=M.op(0x22,7), + inxhl=M.op(0x32,7), +} M.opr16 = opr16 +for k,v in pairs(opr16) do + M[k] = function() + table.insert(M.section_current.instructions, { size=1, cycles=v.cycles, bin=v.opc }) + end +end + + local opregxx ={ mvib=M.op(0x6a,7), mvic=M.op(0x6b,7), @@ -294,14 +309,8 @@ return M mvixbc=M.op(0x49,10), mvixde=M.op(0x4a,10), mvixhl=M.op(0x4b,10) - + - (r16) - dcxbc=M.op(0x13,7), - dcxde=M.op(0x23,7), - dcxhl=M.op(0x33,7), - inxbc=M.op(0x12,7), - inxde=M.op(0x22,7), - inxhl=M.op(0x32,7), ldaxbc=M.op(0x29,7), ldaxde=M.op(0x2a,7), ldaxhl=M.op(0x2b,7),