mirror of
https://github.com/g012/l65.git
synced 2024-09-28 10:54:37 +00:00
Added the last opcodes of 0x70xx.
This commit is contained in:
parent
c42546e483
commit
345f9d522d
25
l7801.lua
25
l7801.lua
@ -54,6 +54,9 @@ local Keywords_7801 = {
|
|||||||
'ona','offa',
|
'ona','offa',
|
||||||
'anaw','xraw','oraw','addncw','gtaw','subnbw','ltaw','addw','onaw','adcw','offaw','subw','neaw','sbbw','eqaw',
|
'anaw','xraw','oraw','addncw','gtaw','subnbw','ltaw','addw','onaw','adcw','offaw','subw','neaw','sbbw','eqaw',
|
||||||
'sspd','lspd','sbcd','lbcd','sded','lded','shld','lhld',
|
'sspd','lspd','sbcd','lbcd','sded','lded','shld','lhld',
|
||||||
|
'anax','xrax','orax','addncx','gtax','subnbx','ltax','addx','onax','adcx','offax','subx','neax','sbbx','eqax',
|
||||||
|
'anaxi','xraxi','oraxi','addncxi','gtaxi','subnbxi','ltaxi','addxi','onaxi','adcxi','offaxi','subxi','neaxi','sbbxi','eqaxi',
|
||||||
|
'anaxd','xraxd','oraxd','addncxd','gtaxd','subnbxd','ltaxd','addxd','onaxd','adcxd','offaxd','subxd','neaxd','sbbxd','eqaxd',
|
||||||
}
|
}
|
||||||
local Registers_7801 = {
|
local Registers_7801 = {
|
||||||
a=8,b=8,c=8,d=8,e=8,h=8,l=8,v=8,
|
a=8,b=8,c=8,d=8,e=8,h=8,l=8,v=8,
|
||||||
@ -114,6 +117,9 @@ local opcode_regb = lookupify{
|
|||||||
local opcode_reg_ind = lookupify{
|
local opcode_reg_ind = lookupify{
|
||||||
'ldax','ldaxd','ldaxi',
|
'ldax','ldaxd','ldaxi',
|
||||||
'stax','staxd','staxi',
|
'stax','staxd','staxi',
|
||||||
|
'anax','xrax','orax','addncx','gtax','subnbx','ltax','addx','onax','adcx','offax','subx','neax','sbbx','eqax',
|
||||||
|
'anaxi','xraxi','oraxi','addncxi','gtaxi','subnbxi','ltaxi','addxi','onaxi','adcxi','offaxi','subxi','neaxi','sbbxi','eqaxi',
|
||||||
|
'anaxd','xraxd','oraxd','addncxd','gtaxd','subnbxd','ltaxd','addxd','onaxd','adcxd','offaxd','subxd','neaxd','sbbxd','eqaxd',
|
||||||
}
|
}
|
||||||
local opcode_reg_ind_ex = lookupify{
|
local opcode_reg_ind_ex = lookupify{
|
||||||
'mvix'
|
'mvix'
|
||||||
@ -140,9 +146,22 @@ local opcode_reg_list = {
|
|||||||
'bit0','bit1','bit2','bit3','bit4','bit5','bit6','bit7',
|
'bit0','bit1','bit2','bit3','bit4','bit5','bit6','bit7',
|
||||||
'anaw','xraw','oraw','addncw','gtaw','subnbw','ltaw','addw','onaw','adcw','offaw','subw','neaw','sbbw','eqaw',
|
'anaw','xraw','oraw','addncw','gtaw','subnbw','ltaw','addw','onaw','adcw','offaw','subw','neaw','sbbw','eqaw',
|
||||||
},
|
},
|
||||||
bc = lookupify{'ldax','lxi','mvix','pop','push','stax'},
|
bc = lookupify{
|
||||||
de = lookupify{'ldax','ldaxd','ldaxi','lxi','mvix','pop','push','stax','staxd','staxi'},
|
'ldax','lxi','mvix','pop','push','stax',
|
||||||
hl = lookupify{'dcx','inx','ldax','ldaxd','ldaxi','lxi','mvix','pop','push','stax','staxd','staxi'},
|
'anax','xrax','orax','addncx','gtax','subnbx','ltax','addx','onax','adcx','offax','subx','neax','sbbx','eqax',
|
||||||
|
},
|
||||||
|
de = lookupify{
|
||||||
|
'ldax','ldaxd','ldaxi','lxi','mvix','pop','push','stax','staxd','staxi',
|
||||||
|
'anax','xrax','orax','addncx','gtax','subnbx','ltax','addx','onax','adcx','offax','subx','neax','sbbx','eqax',
|
||||||
|
'anaxi','xraxi','oraxi','addncxi','gtaxi','subnbxi','ltaxi','addxi','onaxi','adcxi','offaxi','subxi','neaxi','sbbxi','eqaxi',
|
||||||
|
'anaxd','xraxd','oraxd','addncxd','gtaxd','subnbxd','ltaxd','addxd','onaxd','adcxd','offaxd','subxd','neaxd','sbbxd','eqaxd',
|
||||||
|
},
|
||||||
|
hl = lookupify{
|
||||||
|
'dcx','inx','ldax','ldaxd','ldaxi','lxi','mvix','pop','push','stax','staxd','staxi',
|
||||||
|
'anax','xrax','orax','addncx','gtax','subnbx','ltax','addx','onax','adcx','offax','subx','neax','sbbx','eqax',
|
||||||
|
'anaxi','xraxi','oraxi','addncxi','gtaxi','subnbxi','ltaxi','addxi','onaxi','adcxi','offaxi','subxi','neaxi','sbbxi','eqaxi',
|
||||||
|
'anaxd','xraxd','oraxd','addncxd','gtaxd','subnbxd','ltaxd','addxd','onaxd','adcxd','offaxd','subxd','neaxd','sbbxd','eqaxd',
|
||||||
|
},
|
||||||
sp = lookupify{'dcx','inx','lxi'},
|
sp = lookupify{'dcx','inx','lxi'},
|
||||||
va = lookupify{'pop','push'},
|
va = lookupify{'pop','push'},
|
||||||
pa = lookupify{'ani','xri','ori','adinc','gti','suinb','lti','adi','oni','aci','offi','sui','nei','sbi','eqi'},
|
pa = lookupify{'ani','xri','ori','adinc','gti','suinb','lti','adi','oni','aci','offi','sui','nei','sbi','eqi'},
|
||||||
|
@ -629,5 +629,110 @@ section{"rom", org=0x8000}
|
|||||||
mov e,(0x0ff0)
|
mov e,(0x0ff0)
|
||||||
mov h,(0x0fff)
|
mov h,(0x0fff)
|
||||||
mov l,(0xf000)
|
mov l,(0xf000)
|
||||||
|
anax (bc)
|
||||||
|
xrax (bc)
|
||||||
|
orax (bc)
|
||||||
|
addncx (bc)
|
||||||
|
gtax (bc)
|
||||||
|
subnbx (bc)
|
||||||
|
ltax (bc)
|
||||||
|
addx (bc)
|
||||||
|
onax (bc)
|
||||||
|
adcx (bc)
|
||||||
|
offax (bc)
|
||||||
|
subx (bc)
|
||||||
|
neax (bc)
|
||||||
|
sbbx (bc)
|
||||||
|
eqax (bc)
|
||||||
|
anax (de)
|
||||||
|
xrax (de)
|
||||||
|
orax (de)
|
||||||
|
addncx (de)
|
||||||
|
gtax (de)
|
||||||
|
subnbx (de)
|
||||||
|
ltax (de)
|
||||||
|
addx (de)
|
||||||
|
onax (de)
|
||||||
|
adcx (de)
|
||||||
|
offax (de)
|
||||||
|
subx (de)
|
||||||
|
neax (de)
|
||||||
|
sbbx (de)
|
||||||
|
eqax (de)
|
||||||
|
anax (hl)
|
||||||
|
xrax (hl)
|
||||||
|
orax (hl)
|
||||||
|
addncx (hl)
|
||||||
|
gtax (hl)
|
||||||
|
subnbx (hl)
|
||||||
|
ltax (hl)
|
||||||
|
addx (hl)
|
||||||
|
onax (hl)
|
||||||
|
adcx (hl)
|
||||||
|
offax (hl)
|
||||||
|
subx (hl)
|
||||||
|
neax (hl)
|
||||||
|
sbbx (hl)
|
||||||
|
eqax (hl)
|
||||||
|
anaxi (de)
|
||||||
|
xraxi (de)
|
||||||
|
oraxi (de)
|
||||||
|
addncxi (de)
|
||||||
|
gtaxi (de)
|
||||||
|
subnbxi (de)
|
||||||
|
ltaxi (de)
|
||||||
|
addxi (de)
|
||||||
|
onaxi (de)
|
||||||
|
adcxi (de)
|
||||||
|
offaxi (de)
|
||||||
|
subxi (de)
|
||||||
|
neaxi (de)
|
||||||
|
sbbxi (de)
|
||||||
|
eqaxi (de)
|
||||||
|
anaxi (hl)
|
||||||
|
xraxi (hl)
|
||||||
|
oraxi (hl)
|
||||||
|
addncxi (hl)
|
||||||
|
gtaxi (hl)
|
||||||
|
subnbxi (hl)
|
||||||
|
ltaxi (hl)
|
||||||
|
addxi (hl)
|
||||||
|
onaxi (hl)
|
||||||
|
adcxi (hl)
|
||||||
|
offaxi (hl)
|
||||||
|
subxi (hl)
|
||||||
|
neaxi (hl)
|
||||||
|
sbbxi (hl)
|
||||||
|
eqaxi (hl)
|
||||||
|
anaxd (de)
|
||||||
|
xraxd (de)
|
||||||
|
oraxd (de)
|
||||||
|
addncxd (de)
|
||||||
|
gtaxd (de)
|
||||||
|
subnbxd (de)
|
||||||
|
ltaxd (de)
|
||||||
|
addxd (de)
|
||||||
|
onaxd (de)
|
||||||
|
adcxd (de)
|
||||||
|
offaxd (de)
|
||||||
|
subxd (de)
|
||||||
|
neaxd (de)
|
||||||
|
sbbxd (de)
|
||||||
|
eqaxd (de)
|
||||||
|
anaxd (hl)
|
||||||
|
xraxd (hl)
|
||||||
|
oraxd (hl)
|
||||||
|
addncxd (hl)
|
||||||
|
gtaxd (hl)
|
||||||
|
subnbxd (hl)
|
||||||
|
ltaxd (hl)
|
||||||
|
addxd (hl)
|
||||||
|
onaxd (hl)
|
||||||
|
adcxd (hl)
|
||||||
|
offaxd (hl)
|
||||||
|
subxd (hl)
|
||||||
|
neaxd (hl)
|
||||||
|
sbbxd (hl)
|
||||||
|
eqaxd (hl)
|
||||||
|
|
||||||
writebin(filename .. '.bin')
|
writebin(filename .. '.bin')
|
||||||
|
124
uPD7801.lua
124
uPD7801.lua
@ -623,116 +623,16 @@ for k,v in pairs(op70r8ind) do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
k = 0x89
|
||||||
|
local op70names = {'anax','xrax','orax','addncx','gtax','subnbx','ltax','addx','onax','adcx','offax','subx','neax','sbbx','eqax'}
|
||||||
|
local op70suffixes = {'bc','de','hl','ide','ihl','dde','dhl'}
|
||||||
|
for i,o in ipairs(op70names) do
|
||||||
|
for j,s in ipairs(op70suffixes) do
|
||||||
|
local l = 0x00 + k + (j-1) + (8 * (i-1))
|
||||||
|
M[o .. s] = function()
|
||||||
|
table.insert(M.section_current.instructions, { size=2, cycles=11, bin={ 0x70, l } })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
||||||
--[[ [todo]
|
|
||||||
|
|
||||||
16 bits instructions:
|
|
||||||
0x70xx
|
|
||||||
11
|
|
||||||
case 0x89: my_stprintf_s(buffer, buffer_len, _T("anax b")); break;
|
|
||||||
case 0x8a: my_stprintf_s(buffer, buffer_len, _T("anax d")); break;
|
|
||||||
case 0x8b: my_stprintf_s(buffer, buffer_len, _T("anax h")); break;
|
|
||||||
case 0x8c: my_stprintf_s(buffer, buffer_len, _T("anax d+")); break;
|
|
||||||
case 0x8d: my_stprintf_s(buffer, buffer_len, _T("anax h+")); break;
|
|
||||||
case 0x8e: my_stprintf_s(buffer, buffer_len, _T("anax d-")); break;
|
|
||||||
case 0x8f: my_stprintf_s(buffer, buffer_len, _T("anax h-")); break;
|
|
||||||
case 0x91: my_stprintf_s(buffer, buffer_len, _T("xrax b")); break;
|
|
||||||
case 0x92: my_stprintf_s(buffer, buffer_len, _T("xrax d")); break;
|
|
||||||
case 0x93: my_stprintf_s(buffer, buffer_len, _T("xrax h")); break;
|
|
||||||
case 0x94: my_stprintf_s(buffer, buffer_len, _T("xrax d+")); break;
|
|
||||||
case 0x95: my_stprintf_s(buffer, buffer_len, _T("xrax h+")); break;
|
|
||||||
case 0x96: my_stprintf_s(buffer, buffer_len, _T("xrax d-")); break;
|
|
||||||
case 0x97: my_stprintf_s(buffer, buffer_len, _T("xrax h-")); break;
|
|
||||||
case 0x99: my_stprintf_s(buffer, buffer_len, _T("orax b")); break;
|
|
||||||
case 0x9a: my_stprintf_s(buffer, buffer_len, _T("orax d")); break;
|
|
||||||
case 0x9b: my_stprintf_s(buffer, buffer_len, _T("orax h")); break;
|
|
||||||
case 0x9c: my_stprintf_s(buffer, buffer_len, _T("orax d+")); break;
|
|
||||||
case 0x9d: my_stprintf_s(buffer, buffer_len, _T("orax h+")); break;
|
|
||||||
case 0x9e: my_stprintf_s(buffer, buffer_len, _T("orax d-")); break;
|
|
||||||
case 0x9f: my_stprintf_s(buffer, buffer_len, _T("orax h-")); break;
|
|
||||||
case 0xa1: my_stprintf_s(buffer, buffer_len, _T("addncx b")); break;
|
|
||||||
case 0xa2: my_stprintf_s(buffer, buffer_len, _T("addncx d")); break;
|
|
||||||
case 0xa3: my_stprintf_s(buffer, buffer_len, _T("addncx h")); break;
|
|
||||||
case 0xa4: my_stprintf_s(buffer, buffer_len, _T("addncx d+")); break;
|
|
||||||
case 0xa5: my_stprintf_s(buffer, buffer_len, _T("addncx h+")); break;
|
|
||||||
case 0xa6: my_stprintf_s(buffer, buffer_len, _T("addncx d-")); break;
|
|
||||||
case 0xa7: my_stprintf_s(buffer, buffer_len, _T("addncx h-")); break;
|
|
||||||
case 0xa9: my_stprintf_s(buffer, buffer_len, _T("gtax b")); break;
|
|
||||||
case 0xaa: my_stprintf_s(buffer, buffer_len, _T("gtax d")); break;
|
|
||||||
case 0xab: my_stprintf_s(buffer, buffer_len, _T("gtax h")); break;
|
|
||||||
case 0xac: my_stprintf_s(buffer, buffer_len, _T("gtax d+")); break;
|
|
||||||
case 0xad: my_stprintf_s(buffer, buffer_len, _T("gtax h+")); break;
|
|
||||||
case 0xae: my_stprintf_s(buffer, buffer_len, _T("gtax d-")); break;
|
|
||||||
case 0xaf: my_stprintf_s(buffer, buffer_len, _T("gtax h-")); break;
|
|
||||||
case 0xb1: my_stprintf_s(buffer, buffer_len, _T("subnbx b")); break;
|
|
||||||
case 0xb2: my_stprintf_s(buffer, buffer_len, _T("subnbx d")); break;
|
|
||||||
case 0xb3: my_stprintf_s(buffer, buffer_len, _T("subnbx h")); break;
|
|
||||||
case 0xb4: my_stprintf_s(buffer, buffer_len, _T("subnbx d+")); break;
|
|
||||||
case 0xb5: my_stprintf_s(buffer, buffer_len, _T("subnbx h+")); break;
|
|
||||||
case 0xb6: my_stprintf_s(buffer, buffer_len, _T("subnbx d-")); break;
|
|
||||||
case 0xb7: my_stprintf_s(buffer, buffer_len, _T("subnbx h-")); break;
|
|
||||||
case 0xb9: my_stprintf_s(buffer, buffer_len, _T("ltax b")); break;
|
|
||||||
case 0xba: my_stprintf_s(buffer, buffer_len, _T("ltax d")); break;
|
|
||||||
case 0xbb: my_stprintf_s(buffer, buffer_len, _T("ltax h")); break;
|
|
||||||
case 0xbc: my_stprintf_s(buffer, buffer_len, _T("ltax d+")); break;
|
|
||||||
case 0xbd: my_stprintf_s(buffer, buffer_len, _T("ltax h+")); break;
|
|
||||||
case 0xbe: my_stprintf_s(buffer, buffer_len, _T("ltax d-")); break;
|
|
||||||
case 0xbf: my_stprintf_s(buffer, buffer_len, _T("ltax h-")); break;
|
|
||||||
case 0xc1: my_stprintf_s(buffer, buffer_len, _T("addx b")); break;
|
|
||||||
case 0xc2: my_stprintf_s(buffer, buffer_len, _T("addx d")); break;
|
|
||||||
case 0xc3: my_stprintf_s(buffer, buffer_len, _T("addx h")); break;
|
|
||||||
case 0xc4: my_stprintf_s(buffer, buffer_len, _T("addx d+")); break;
|
|
||||||
case 0xc5: my_stprintf_s(buffer, buffer_len, _T("addx h+")); break;
|
|
||||||
case 0xc6: my_stprintf_s(buffer, buffer_len, _T("addx d-")); break;
|
|
||||||
case 0xc7: my_stprintf_s(buffer, buffer_len, _T("addx h-")); break;
|
|
||||||
case 0xc9: my_stprintf_s(buffer, buffer_len, _T("onax b")); break;
|
|
||||||
case 0xca: my_stprintf_s(buffer, buffer_len, _T("onax d")); break;
|
|
||||||
case 0xcb: my_stprintf_s(buffer, buffer_len, _T("onax h")); break;
|
|
||||||
case 0xcc: my_stprintf_s(buffer, buffer_len, _T("onax d+")); break;
|
|
||||||
case 0xcd: my_stprintf_s(buffer, buffer_len, _T("onax h+")); break;
|
|
||||||
case 0xce: my_stprintf_s(buffer, buffer_len, _T("onax d-")); break;
|
|
||||||
case 0xcf: my_stprintf_s(buffer, buffer_len, _T("onax h-")); break;
|
|
||||||
case 0xd1: my_stprintf_s(buffer, buffer_len, _T("adcx b")); break;
|
|
||||||
case 0xd2: my_stprintf_s(buffer, buffer_len, _T("adcx d")); break;
|
|
||||||
case 0xd3: my_stprintf_s(buffer, buffer_len, _T("adcx h")); break;
|
|
||||||
case 0xd4: my_stprintf_s(buffer, buffer_len, _T("adcx d+")); break;
|
|
||||||
case 0xd5: my_stprintf_s(buffer, buffer_len, _T("adcx h+")); break;
|
|
||||||
case 0xd6: my_stprintf_s(buffer, buffer_len, _T("adcx d-")); break;
|
|
||||||
case 0xd7: my_stprintf_s(buffer, buffer_len, _T("adcx h-")); break;
|
|
||||||
case 0xd9: my_stprintf_s(buffer, buffer_len, _T("offax b")); break;
|
|
||||||
case 0xda: my_stprintf_s(buffer, buffer_len, _T("offax d")); break;
|
|
||||||
case 0xdb: my_stprintf_s(buffer, buffer_len, _T("offax h")); break;
|
|
||||||
case 0xdc: my_stprintf_s(buffer, buffer_len, _T("offax d+")); break;
|
|
||||||
case 0xdd: my_stprintf_s(buffer, buffer_len, _T("offax h+")); break;
|
|
||||||
case 0xde: my_stprintf_s(buffer, buffer_len, _T("offax d-")); break;
|
|
||||||
case 0xdf: my_stprintf_s(buffer, buffer_len, _T("offax h-")); break;
|
|
||||||
case 0xe1: my_stprintf_s(buffer, buffer_len, _T("subx b")); break;
|
|
||||||
case 0xe2: my_stprintf_s(buffer, buffer_len, _T("subx d")); break;
|
|
||||||
case 0xe3: my_stprintf_s(buffer, buffer_len, _T("subx h")); break;
|
|
||||||
case 0xe4: my_stprintf_s(buffer, buffer_len, _T("subx d+")); break;
|
|
||||||
case 0xe5: my_stprintf_s(buffer, buffer_len, _T("subx h+")); break;
|
|
||||||
case 0xe6: my_stprintf_s(buffer, buffer_len, _T("subx d-")); break;
|
|
||||||
case 0xe7: my_stprintf_s(buffer, buffer_len, _T("subx h-")); break;
|
|
||||||
case 0xe9: my_stprintf_s(buffer, buffer_len, _T("neax b")); break;
|
|
||||||
case 0xea: my_stprintf_s(buffer, buffer_len, _T("neax d")); break;
|
|
||||||
case 0xeb: my_stprintf_s(buffer, buffer_len, _T("neax h")); break;
|
|
||||||
case 0xec: my_stprintf_s(buffer, buffer_len, _T("neax d+")); break;
|
|
||||||
case 0xed: my_stprintf_s(buffer, buffer_len, _T("neax h+")); break;
|
|
||||||
case 0xee: my_stprintf_s(buffer, buffer_len, _T("neax d-")); break;
|
|
||||||
case 0xef: my_stprintf_s(buffer, buffer_len, _T("neax h-")); break;
|
|
||||||
case 0xf1: my_stprintf_s(buffer, buffer_len, _T("sbbx b")); break;
|
|
||||||
case 0xf2: my_stprintf_s(buffer, buffer_len, _T("sbbx d")); break;
|
|
||||||
case 0xf3: my_stprintf_s(buffer, buffer_len, _T("sbbx h")); break;
|
|
||||||
case 0xf4: my_stprintf_s(buffer, buffer_len, _T("sbbx d+")); break;
|
|
||||||
case 0xf5: my_stprintf_s(buffer, buffer_len, _T("sbbx h+")); break;
|
|
||||||
case 0xf6: my_stprintf_s(buffer, buffer_len, _T("sbbx d-")); break;
|
|
||||||
case 0xf7: my_stprintf_s(buffer, buffer_len, _T("sbbx h-")); break;
|
|
||||||
case 0xf9: my_stprintf_s(buffer, buffer_len, _T("eqax b")); break;
|
|
||||||
case 0xfa: my_stprintf_s(buffer, buffer_len, _T("eqax d")); break;
|
|
||||||
case 0xfb: my_stprintf_s(buffer, buffer_len, _T("eqax h")); break;
|
|
||||||
case 0xfc: my_stprintf_s(buffer, buffer_len, _T("eqax d+")); break;
|
|
||||||
case 0xfd: my_stprintf_s(buffer, buffer_len, _T("eqax h+")); break;
|
|
||||||
case 0xfe: my_stprintf_s(buffer, buffer_len, _T("eqax d-")); break;
|
|
||||||
case 0xff: my_stprintf_s(buffer, buffer_len, _T("eqax h-")); break;
|
|
||||||
]]--
|
|
||||||
|
Loading…
Reference in New Issue
Block a user