diff --git a/l7801.lua b/l7801.lua index cce6ffe..2035d75 100644 --- a/l7801.lua +++ b/l7801.lua @@ -151,24 +151,21 @@ local opcode_reg_reg_list = { tm1 = lookupify{'mov'}, s = lookupify{'mov'}, }, - b = { - a = lookupify{'mov'}, - }, - c = { - a = lookupify{'mov'}, - }, - d = { - a = lookupify{'mov'}, - }, - e = { - a = lookupify{'mov'}, - }, - h = { - a = lookupify{'mov'}, - }, - l = { - a = lookupify{'mov'}, - }, + b = { a = lookupify{'mov'} }, + c = { a = lookupify{'mov'} }, + d = { a = lookupify{'mov'} }, + e = { a = lookupify{'mov'} }, + h = { a = lookupify{'mov'} }, + l = { a = lookupify{'mov'} }, + pa = { a = lookupify{'mov'} }, + pb = { a = lookupify{'mov'} }, + pc = { a = lookupify{'mov'} }, + mk = { a = lookupify{'mov'} }, + mb = { a = lookupify{'mov'} }, + mc = { a = lookupify{'mov'} }, + tm0 = { a = lookupify{'mov'} }, + tm1 = { a = lookupify{'mov'} }, + s = { a = lookupify{'mov'} }, v = {}, } diff --git a/samples/scv_test.l65 b/samples/scv_test.l65 index ad68f98..561dd05 100644 --- a/samples/scv_test.l65 +++ b/samples/scv_test.l65 @@ -177,5 +177,14 @@ section{"rom", org=0x8000} mov a,tm0 mov a,tm1 mov a,s + mov pa,a + mov pb,a + mov pc,a + mov mk,a + mov mb,a + mov mc,a + mov tm0,a + mov tm1,a + mov s,a writebin(filename .. '.bin') \ No newline at end of file diff --git a/uPD7801.lua b/uPD7801.lua index ce5bd43..8d33894 100644 --- a/uPD7801.lua +++ b/uPD7801.lua @@ -430,15 +430,29 @@ for k,v in pairs(op4car8) do end end +local op4dr8a={ + movpaa=M.op(0xc0,10), + movpba=M.op(0xc1,10), + movpca=M.op(0xc2,10), + movmka=M.op(0xc3,10), + movmba=M.op(0xc4,10), + movmca=M.op(0xc5,10), + movtm0a=M.op(0xc6,10), + movtm1a=M.op(0xc7,10), + movsa=M.op(0xc8,10), +} M.op4dr8a = op4dr8a +for k,v in pairs(op4dr8a) do + M[k] = function() + table.insert(M.section_current.instructions, { size=2, cycles=v.cycles, bin={ 0x4d, v.opc } }) + end +end + + return M --[[ [todo] 16 bits instructions: - 0x4cxx - - - 0x4dxx 0x60xx 0x64xx 0x70xx