mirror of
https://github.com/g012/l65.git
synced 2025-01-10 06:30:14 +00:00
Added LDAX+, LDAX-, STAX+ and STAX- (renamed ldaxi, ldaxd, staxi, staxd).
This commit is contained in:
parent
fe3cdabf4f
commit
77b69902c2
26
l7801.lua
26
l7801.lua
@ -38,11 +38,16 @@ local Keywords_data = {
|
|||||||
'dc',
|
'dc',
|
||||||
}
|
}
|
||||||
local Keywords_7801 = {
|
local Keywords_7801 = {
|
||||||
'aci','adi','adinc','ani','bit0','bit1','bit2','bit3','bit4','bit5','bit6','bit7',
|
'aci','adi','adinc','ani','bit0','bit1','bit2','bit3',
|
||||||
'block','calb','calf','call','calt','clc','ei','eqi','eqiw','daa','di','dcr','dcrw','dcx',
|
'bit4','bit5','bit6','bit7','block','calb','calf','call',
|
||||||
'ex','exx','gti','halt','inr','inrw','inx','jb','jmp','jr','jre','ldaw','ldax','lti','lxi','mov','mvi','mviw','mvix','nei','nop',
|
'calt','clc','ei','eqi','eqiw','daa','di','dcr',
|
||||||
'offi','oni','ori','pen','per','pex','ret','reti','rets','rld','rrd','sio','softi','staw','stax','stc','stm',
|
'dcrw','dcx','ex','exx','gti','halt','inr','inrw',
|
||||||
'sbi','sui','suinb','table','xri',
|
'inx','jb','jmp','jr','jre','ldaw','ldax','ldaxd',
|
||||||
|
'ldaxi','lti','lxi','mov','mvi','mviw','mvix','nei',
|
||||||
|
'nop','offi','oni','ori','pen','per','pex','ret',
|
||||||
|
'reti','rets','rld','rrd','sio','softi','staw','stax',
|
||||||
|
'staxd','staxi','stc','stm','sbi','sui','suinb','table',
|
||||||
|
'xri',
|
||||||
}
|
}
|
||||||
|
|
||||||
local Registers_7801 = {
|
local Registers_7801 = {
|
||||||
@ -94,8 +99,8 @@ local opcode_regb = lookupify{
|
|||||||
'aci','adi','adinc','ani','eqi','gti','lti','mvi','nei','offi','oni','ori','sbi','sui','suinb','xri',
|
'aci','adi','adinc','ani','eqi','gti','lti','mvi','nei','offi','oni','ori','sbi','sui','suinb','xri',
|
||||||
}
|
}
|
||||||
local opcode_reg_ind = lookupify{
|
local opcode_reg_ind = lookupify{
|
||||||
'ldax',
|
'ldax','ldaxd','ldaxi',
|
||||||
'stax',
|
'stax','staxd','staxi',
|
||||||
}
|
}
|
||||||
local opcode_reg_ind_ex = lookupify{
|
local opcode_reg_ind_ex = lookupify{
|
||||||
'mvix'
|
'mvix'
|
||||||
@ -113,8 +118,8 @@ local opcode_reg_list = {
|
|||||||
l = lookupify{'mvi'},
|
l = lookupify{'mvi'},
|
||||||
v = lookupify{'mvi'},
|
v = lookupify{'mvi'},
|
||||||
bc = lookupify{'ldax','lxi','mvix','stax'},
|
bc = lookupify{'ldax','lxi','mvix','stax'},
|
||||||
de = lookupify{'ldax','lxi','mvix','stax'},
|
de = lookupify{'ldax','ldaxd','ldaxi','lxi','mvix','stax','staxd','staxi'},
|
||||||
hl = lookupify{'dcx','inx','ldax','lxi','mvix','stax'},
|
hl = lookupify{'dcx','inx','ldax','ldaxd','ldaxi','lxi','mvix','stax','staxd','staxi'},
|
||||||
sp = lookupify{'dcx','inx','lxi'},
|
sp = lookupify{'dcx','inx','lxi'},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1490,14 +1495,13 @@ local function ParseLua(src, src_name)
|
|||||||
if not (opcode_reg_list[register_name] and opcode_reg_list[register_name][op]) then
|
if not (opcode_reg_list[register_name] and opcode_reg_list[register_name][op]) then
|
||||||
return false, GenerateError("Opcode " .. op .. " doesn't support this addressing mode")
|
return false, GenerateError("Opcode " .. op .. " doesn't support this addressing mode")
|
||||||
end
|
end
|
||||||
for _,v in ipairs(tokenList[#tokenList].LeadingWhite) do table.insert(paren_open_whites, v) end
|
|
||||||
if not tok:ConsumeSymbol(')', tokenList) then
|
if not tok:ConsumeSymbol(')', tokenList) then
|
||||||
return false, GenerateError("Unexpected character")
|
return false, GenerateError("Unexpected character")
|
||||||
end
|
end
|
||||||
if opcode_reg_ind[op] then
|
if opcode_reg_ind[op] then
|
||||||
for _,v in ipairs(tokenList[#tokenList-1].LeadingWhite) do table.insert(paren_close_whites, v) end
|
for _,v in ipairs(tokenList[#tokenList-1].LeadingWhite) do table.insert(paren_close_whites, v) end
|
||||||
for _,v in ipairs(tokenList[#tokenList].LeadingWhite) do table.insert(paren_close_whites, v) end
|
for _,v in ipairs(tokenList[#tokenList].LeadingWhite) do table.insert(paren_close_whites, v) end
|
||||||
stat = emit_call{name=op .. register_name, paren_open_white=paren_open_whites} break
|
stat = emit_call{name=op .. register_name, paren_open_white=paren_open_whites, paren_close_white=paren_close_whites} break
|
||||||
end
|
end
|
||||||
if not tok:ConsumeSymbol(',', tokenList) then
|
if not tok:ConsumeSymbol(',', tokenList) then
|
||||||
return false, GenerateError("Unexpected character")
|
return false, GenerateError("Unexpected character")
|
||||||
|
@ -124,5 +124,13 @@ section{"rom", org=0x8000}
|
|||||||
stax (hl)
|
stax (hl)
|
||||||
mviw (v,0x9a),0x3f
|
mviw (v,0x9a),0x3f
|
||||||
eqiw (v,0xc5),0x1b
|
eqiw (v,0xc5),0x1b
|
||||||
|
ldaxd (de)
|
||||||
|
ldaxi (de)
|
||||||
|
ldaxd (hl)
|
||||||
|
ldaxi (hl)
|
||||||
|
staxd (de)
|
||||||
|
staxi (de)
|
||||||
|
staxd (hl)
|
||||||
|
staxi (hl)
|
||||||
|
|
||||||
writebin(filename .. '.bin')
|
writebin(filename .. '.bin')
|
20
uPD7801.lua
20
uPD7801.lua
@ -77,11 +77,19 @@ local opr16={
|
|||||||
inxde=M.op(0x22,7),
|
inxde=M.op(0x22,7),
|
||||||
inxhl=M.op(0x32,7),
|
inxhl=M.op(0x32,7),
|
||||||
ldaxbc=M.op(0x29,7),
|
ldaxbc=M.op(0x29,7),
|
||||||
|
ldaxdde=M.op(0x2e,7),
|
||||||
ldaxde=M.op(0x2a,7),
|
ldaxde=M.op(0x2a,7),
|
||||||
ldaxhl=M.op(0x2b,7),
|
ldaxhl=M.op(0x2b,7),
|
||||||
|
ldaxide=M.op(0x2c,7),
|
||||||
|
ldaxdhl=M.op(0x2f,7),
|
||||||
|
ldaxihl=M.op(0x2d,7),
|
||||||
staxbc=M.op(0x39,7),
|
staxbc=M.op(0x39,7),
|
||||||
staxde=M.op(0x3a,7),
|
staxde=M.op(0x3a,7),
|
||||||
|
staxdde=M.op(0x3e,7),
|
||||||
|
staxdhl=M.op(0x3f,7),
|
||||||
staxhl=M.op(0x3b,7),
|
staxhl=M.op(0x3b,7),
|
||||||
|
staxide=M.op(0x3c,7),
|
||||||
|
staxihl=M.op(0x3d,7),
|
||||||
} M.opr16 = opr16
|
} M.opr16 = opr16
|
||||||
for k,v in pairs(opr16) do
|
for k,v in pairs(opr16) do
|
||||||
M[k] = function()
|
M[k] = function()
|
||||||
@ -320,18 +328,6 @@ end
|
|||||||
return M
|
return M
|
||||||
|
|
||||||
--[[ [todo]
|
--[[ [todo]
|
||||||
8 bits instructions:
|
|
||||||
-- d
|
|
||||||
ldaxm=M.op(0x2e,7),
|
|
||||||
ldaxp=M.op(0x2c,7),
|
|
||||||
staxm=M.op(0x3e,7),
|
|
||||||
staxp=M.op(0x3c,7)
|
|
||||||
|
|
||||||
-- h
|
|
||||||
ldaxm=M.op(0x2f,7),
|
|
||||||
ldaxp=M.op(0x2d,7),
|
|
||||||
staxm=M.op(0x3f,7),
|
|
||||||
staxp=M.op(0x3d,7)
|
|
||||||
|
|
||||||
16 bits instructions:
|
16 bits instructions:
|
||||||
0x48xx
|
0x48xx
|
||||||
|
Loading…
x
Reference in New Issue
Block a user