mirror of https://github.com/g012/l65.git
Added 0x64xx instructions.
This commit is contained in:
parent
a2e44ae24a
commit
08086d222e
24
l7801.lua
24
l7801.lua
|
@ -37,6 +37,7 @@ local Keywords_control = {
|
||||||
local Keywords_data = {
|
local Keywords_data = {
|
||||||
'dc',
|
'dc',
|
||||||
}
|
}
|
||||||
|
|
||||||
local Keywords_7801 = {
|
local Keywords_7801 = {
|
||||||
'aci','adi','adinc','ani','bit0','bit1','bit2','bit3',
|
'aci','adi','adinc','ani','bit0','bit1','bit2','bit3',
|
||||||
'bit4','bit5','bit6','bit7','block','calb','calf','call',
|
'bit4','bit5','bit6','bit7','block','calb','calf','call',
|
||||||
|
@ -50,7 +51,7 @@ local Keywords_7801 = {
|
||||||
'staw','stax','staxd','staxi','stc','stm','sui','suinb',
|
'staw','stax','staxd','staxi','stc','stm','sui','suinb',
|
||||||
'table','xri',
|
'table','xri',
|
||||||
'ana','xra','ora','addnc','gta','subnb','lta','add','adc','sub','nea','sbb','eqa',
|
'ana','xra','ora','addnc','gta','subnb','lta','add','adc','sub','nea','sbb','eqa',
|
||||||
'ona','offa'
|
'ona','offa',
|
||||||
}
|
}
|
||||||
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,
|
||||||
|
@ -119,13 +120,14 @@ local opcode_timer = lookupify{
|
||||||
}
|
}
|
||||||
local opcode_reg_list = {
|
local opcode_reg_list = {
|
||||||
a = lookupify{'aci','adi','adinc','ani','dcr','inr','eqi','gti','lti','mvi','nei','offi','oni','ori','rll','rlr','sbi','sll','slr','sui','suinb','xri'},
|
a = lookupify{'aci','adi','adinc','ani','dcr','inr','eqi','gti','lti','mvi','nei','offi','oni','ori','rll','rlr','sbi','sll','slr','sui','suinb','xri'},
|
||||||
b = lookupify{'dcr','inr','mvi'},
|
b = lookupify{'ani','xri','ori','adinc','gti','suinb','lti','adi','oni','aci','offi','sui','nei','sbi','eqi','dcr','inr','mvi'},
|
||||||
c = lookupify{'dcr','inr','mvi','rll','rlr','sll','slr'},
|
c = lookupify{'ani','xri','ori','adinc','gti','suinb','lti','adi','oni','aci','offi','sui','nei','sbi','eqi','dcr','inr','mvi','rll','rlr','sll','slr'},
|
||||||
d = lookupify{'mvi'},
|
d = lookupify{'ani','xri','ori','adinc','gti','suinb','lti','adi','oni','aci','offi','sui','nei','sbi','eqi','mvi'},
|
||||||
e = lookupify{'mvi'},
|
e = lookupify{'ani','xri','ori','adinc','gti','suinb','lti','adi','oni','aci','offi','sui','nei','sbi','eqi','mvi'},
|
||||||
h = lookupify{'mvi'},
|
h = lookupify{'ani','xri','ori','adinc','gti','suinb','lti','adi','oni','aci','offi','sui','nei','sbi','eqi','mvi'},
|
||||||
l = lookupify{'mvi'},
|
l = lookupify{'ani','xri','ori','adinc','gti','suinb','lti','adi','oni','aci','offi','sui','nei','sbi','eqi','mvi'},
|
||||||
v = lookupify{'inrw','ldaw','dcrw','eqiw','mvi','mviw','staw',
|
v = lookupify{'ani','xri','ori','adinc','gti','suinb','lti','adi','oni','aci','offi','sui','nei','sbi','eqi',
|
||||||
|
'inrw','ldaw','dcrw','eqiw','mvi','mviw','staw',
|
||||||
'bit0','bit1','bit2','bit3','bit4','bit5','bit6','bit7',
|
'bit0','bit1','bit2','bit3','bit4','bit5','bit6','bit7',
|
||||||
},
|
},
|
||||||
bc = lookupify{'ldax','lxi','mvix','pop','push','stax'},
|
bc = lookupify{'ldax','lxi','mvix','pop','push','stax'},
|
||||||
|
@ -133,6 +135,10 @@ local opcode_reg_list = {
|
||||||
hl = lookupify{'dcx','inx','ldax','ldaxd','ldaxi','lxi','mvix','pop','push','stax','staxd','staxi'},
|
hl = lookupify{'dcx','inx','ldax','ldaxd','ldaxi','lxi','mvix','pop','push','stax','staxd','staxi'},
|
||||||
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'},
|
||||||
|
pb = lookupify{'ani','xri','ori','adinc','gti','suinb','lti','adi','oni','aci','offi','sui','nei','sbi','eqi'},
|
||||||
|
pc = lookupify{'ani','xri','ori','adinc','gti','suinb','lti','adi','oni','aci','offi','sui','nei','sbi','eqi'},
|
||||||
|
mk = lookupify{'ani','xri','ori','adinc','gti','suinb','lti','adi','oni','aci','offi','sui','nei','sbi','eqi'},
|
||||||
}
|
}
|
||||||
|
|
||||||
local opcode_reg_reg_list = {
|
local opcode_reg_reg_list = {
|
||||||
|
@ -1583,7 +1589,7 @@ local function ParseLua(src, src_name)
|
||||||
if not Registers_7801[register_name] then
|
if not Registers_7801[register_name] then
|
||||||
return false, GenerateError(register_name .. " is not a valid register")
|
return false, GenerateError(register_name .. " is not a valid register")
|
||||||
end
|
end
|
||||||
if not opcode_reg_list[register_name] and opcode_reg_list[register_name][op] then
|
if (not opcode_reg_list[register_name]) and (not 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
|
||||||
if opcode_regw[op] or opcode_regb[op] then
|
if opcode_regw[op] or opcode_regb[op] then
|
||||||
|
|
|
@ -186,229 +186,409 @@ section{"rom", org=0x8000}
|
||||||
mov tm0,a
|
mov tm0,a
|
||||||
mov tm1,a
|
mov tm1,a
|
||||||
mov s,a
|
mov s,a
|
||||||
ana v,a
|
ana v,a
|
||||||
ana a,a
|
ana a,a
|
||||||
ana b,a
|
ana b,a
|
||||||
ana c,a
|
ana c,a
|
||||||
ana d,a
|
ana d,a
|
||||||
ana e,a
|
ana e,a
|
||||||
ana h,a
|
ana h,a
|
||||||
ana l,a
|
ana l,a
|
||||||
xra v,a
|
xra v,a
|
||||||
xra a,a
|
xra a,a
|
||||||
xra b,a
|
xra b,a
|
||||||
xra c,a
|
xra c,a
|
||||||
xra d,a
|
xra d,a
|
||||||
xra e,a
|
xra e,a
|
||||||
xra h,a
|
xra h,a
|
||||||
xra l,a
|
xra l,a
|
||||||
ora v,a
|
ora v,a
|
||||||
ora a,a
|
ora a,a
|
||||||
ora b,a
|
ora b,a
|
||||||
ora c,a
|
ora c,a
|
||||||
ora d,a
|
ora d,a
|
||||||
ora e,a
|
ora e,a
|
||||||
ora h,a
|
ora h,a
|
||||||
ora l,a
|
ora l,a
|
||||||
addnc v,a
|
addnc v,a
|
||||||
addnc a,a
|
addnc a,a
|
||||||
addnc b,a
|
addnc b,a
|
||||||
addnc c,a
|
addnc c,a
|
||||||
addnc d,a
|
addnc d,a
|
||||||
addnc e,a
|
addnc e,a
|
||||||
addnc h,a
|
addnc h,a
|
||||||
addnc l,a
|
addnc l,a
|
||||||
gta v,a
|
gta v,a
|
||||||
gta a,a
|
gta a,a
|
||||||
gta b,a
|
gta b,a
|
||||||
gta c,a
|
gta c,a
|
||||||
gta d,a
|
gta d,a
|
||||||
gta e,a
|
gta e,a
|
||||||
gta h,a
|
gta h,a
|
||||||
gta l,a
|
gta l,a
|
||||||
subnb v,a
|
subnb v,a
|
||||||
subnb a,a
|
subnb a,a
|
||||||
subnb b,a
|
subnb b,a
|
||||||
subnb c,a
|
subnb c,a
|
||||||
subnb d,a
|
subnb d,a
|
||||||
subnb e,a
|
subnb e,a
|
||||||
subnb h,a
|
subnb h,a
|
||||||
subnb l,a
|
subnb l,a
|
||||||
lta v,a
|
lta v,a
|
||||||
lta a,a
|
lta a,a
|
||||||
lta b,a
|
lta b,a
|
||||||
lta c,a
|
lta c,a
|
||||||
lta d,a
|
lta d,a
|
||||||
lta e,a
|
lta e,a
|
||||||
lta h,a
|
lta h,a
|
||||||
lta l,a
|
lta l,a
|
||||||
add v,a
|
add v,a
|
||||||
add a,a
|
add a,a
|
||||||
add b,a
|
add b,a
|
||||||
add c,a
|
add c,a
|
||||||
add d,a
|
add d,a
|
||||||
add e,a
|
add e,a
|
||||||
add h,a
|
add h,a
|
||||||
add l,a
|
add l,a
|
||||||
adc v,a
|
adc v,a
|
||||||
adc a,a
|
adc a,a
|
||||||
adc b,a
|
adc b,a
|
||||||
adc c,a
|
adc c,a
|
||||||
adc d,a
|
adc d,a
|
||||||
adc e,a
|
adc e,a
|
||||||
adc h,a
|
adc h,a
|
||||||
adc l,a
|
adc l,a
|
||||||
sub v,a
|
sub v,a
|
||||||
sub a,a
|
sub a,a
|
||||||
sub b,a
|
sub b,a
|
||||||
sub c,a
|
sub c,a
|
||||||
sub d,a
|
sub d,a
|
||||||
sub e,a
|
sub e,a
|
||||||
sub h,a
|
sub h,a
|
||||||
sub l,a
|
sub l,a
|
||||||
nea v,a
|
nea v,a
|
||||||
nea a,a
|
nea a,a
|
||||||
nea b,a
|
nea b,a
|
||||||
nea c,a
|
nea c,a
|
||||||
nea d,a
|
nea d,a
|
||||||
nea e,a
|
nea e,a
|
||||||
nea h,a
|
nea h,a
|
||||||
nea l,a
|
nea l,a
|
||||||
sbb v,a
|
sbb v,a
|
||||||
sbb a,a
|
sbb a,a
|
||||||
sbb b,a
|
sbb b,a
|
||||||
sbb c,a
|
sbb c,a
|
||||||
sbb d,a
|
sbb d,a
|
||||||
sbb e,a
|
sbb e,a
|
||||||
sbb h,a
|
sbb h,a
|
||||||
sbb l,a
|
sbb l,a
|
||||||
eqa v,a
|
eqa v,a
|
||||||
eqa a,a
|
eqa a,a
|
||||||
eqa b,a
|
eqa b,a
|
||||||
eqa c,a
|
eqa c,a
|
||||||
eqa d,a
|
eqa d,a
|
||||||
eqa e,a
|
eqa e,a
|
||||||
eqa h,a
|
eqa h,a
|
||||||
eqa l,a
|
eqa l,a
|
||||||
ana a,v
|
ana a,v
|
||||||
ana a,a
|
ana a,a
|
||||||
ana a,b
|
ana a,b
|
||||||
ana a,c
|
ana a,c
|
||||||
ana a,d
|
ana a,d
|
||||||
ana a,e
|
ana a,e
|
||||||
ana a,h
|
ana a,h
|
||||||
ana a,l
|
ana a,l
|
||||||
xra a,v
|
xra a,v
|
||||||
xra a,a
|
xra a,a
|
||||||
xra a,b
|
xra a,b
|
||||||
xra a,c
|
xra a,c
|
||||||
xra a,d
|
xra a,d
|
||||||
xra a,e
|
xra a,e
|
||||||
xra a,h
|
xra a,h
|
||||||
xra a,l
|
xra a,l
|
||||||
ora a,v
|
ora a,v
|
||||||
ora a,a
|
ora a,a
|
||||||
ora a,b
|
ora a,b
|
||||||
ora a,c
|
ora a,c
|
||||||
ora a,d
|
ora a,d
|
||||||
ora a,e
|
ora a,e
|
||||||
ora a,h
|
ora a,h
|
||||||
ora a,l
|
ora a,l
|
||||||
addnc a,v
|
addnc a,v
|
||||||
addnc a,a
|
addnc a,a
|
||||||
addnc a,b
|
addnc a,b
|
||||||
addnc a,c
|
addnc a,c
|
||||||
addnc a,d
|
addnc a,d
|
||||||
addnc a,e
|
addnc a,e
|
||||||
addnc a,h
|
addnc a,h
|
||||||
addnc a,l
|
addnc a,l
|
||||||
gta a,v
|
gta a,v
|
||||||
gta a,a
|
gta a,a
|
||||||
gta a,b
|
gta a,b
|
||||||
gta a,c
|
gta a,c
|
||||||
gta a,d
|
gta a,d
|
||||||
gta a,e
|
gta a,e
|
||||||
gta a,h
|
gta a,h
|
||||||
gta a,l
|
gta a,l
|
||||||
subnb a,v
|
subnb a,v
|
||||||
subnb a,a
|
subnb a,a
|
||||||
subnb a,b
|
subnb a,b
|
||||||
subnb a,c
|
subnb a,c
|
||||||
subnb a,d
|
subnb a,d
|
||||||
subnb a,e
|
subnb a,e
|
||||||
subnb a,h
|
subnb a,h
|
||||||
subnb a,l
|
subnb a,l
|
||||||
lta a,v
|
lta a,v
|
||||||
lta a,a
|
lta a,a
|
||||||
lta a,b
|
lta a,b
|
||||||
lta a,c
|
lta a,c
|
||||||
lta a,d
|
lta a,d
|
||||||
lta a,e
|
lta a,e
|
||||||
lta a,h
|
lta a,h
|
||||||
lta a,l
|
lta a,l
|
||||||
add a,v
|
add a,v
|
||||||
add a,a
|
add a,a
|
||||||
add a,b
|
add a,b
|
||||||
add a,c
|
add a,c
|
||||||
add a,d
|
add a,d
|
||||||
add a,e
|
add a,e
|
||||||
add a,h
|
add a,h
|
||||||
add a,l
|
add a,l
|
||||||
ona a,v
|
ona a,v
|
||||||
ona a,a
|
ona a,a
|
||||||
ona a,b
|
ona a,b
|
||||||
ona a,c
|
ona a,c
|
||||||
ona a,d
|
ona a,d
|
||||||
ona a,e
|
ona a,e
|
||||||
ona a,h
|
ona a,h
|
||||||
ona a,l
|
ona a,l
|
||||||
adc a,v
|
adc a,v
|
||||||
adc a,a
|
adc a,a
|
||||||
adc a,b
|
adc a,b
|
||||||
adc a,c
|
adc a,c
|
||||||
adc a,d
|
adc a,d
|
||||||
adc a,e
|
adc a,e
|
||||||
adc a,h
|
adc a,h
|
||||||
adc a,l
|
adc a,l
|
||||||
offa a,v
|
offa a,v
|
||||||
offa a,a
|
offa a,a
|
||||||
offa a,b
|
offa a,b
|
||||||
offa a,c
|
offa a,c
|
||||||
offa a,d
|
offa a,d
|
||||||
offa a,e
|
offa a,e
|
||||||
offa a,h
|
offa a,h
|
||||||
offa a,l
|
offa a,l
|
||||||
sub a,v
|
sub a,v
|
||||||
sub a,a
|
sub a,a
|
||||||
sub a,b
|
sub a,b
|
||||||
sub a,c
|
sub a,c
|
||||||
sub a,d
|
sub a,d
|
||||||
sub a,e
|
sub a,e
|
||||||
sub a,h
|
sub a,h
|
||||||
sub a,l
|
sub a,l
|
||||||
nea a,v
|
nea a,v
|
||||||
nea a,a
|
nea a,a
|
||||||
nea a,b
|
nea a,b
|
||||||
nea a,c
|
nea a,c
|
||||||
nea a,d
|
nea a,d
|
||||||
nea a,e
|
nea a,e
|
||||||
nea a,h
|
nea a,h
|
||||||
nea a,l
|
nea a,l
|
||||||
sbb a,v
|
sbb a,v
|
||||||
sbb a,a
|
sbb a,a
|
||||||
sbb a,b
|
sbb a,b
|
||||||
sbb a,c
|
sbb a,c
|
||||||
sbb a,d
|
sbb a,d
|
||||||
sbb a,e
|
sbb a,e
|
||||||
sbb a,h
|
sbb a,h
|
||||||
sbb a,l
|
sbb a,l
|
||||||
eqa a,v
|
eqa a,v
|
||||||
eqa a,a
|
eqa a,a
|
||||||
eqa a,b
|
eqa a,b
|
||||||
eqa a,c
|
eqa a,c
|
||||||
eqa a,d
|
eqa a,d
|
||||||
eqa a,e
|
eqa a,e
|
||||||
eqa a,h
|
eqa a,h
|
||||||
eqa a,l
|
eqa a,l
|
||||||
|
ani v,0x00
|
||||||
|
ani a,0x01
|
||||||
|
ani b,0x02
|
||||||
|
ani c,0x03
|
||||||
|
ani d,0x04
|
||||||
|
ani e,0x05
|
||||||
|
ani h,0x06
|
||||||
|
ani l,0x07
|
||||||
|
xri v,0x08
|
||||||
|
xri a,0x09
|
||||||
|
xri b,0x0a
|
||||||
|
xri c,0x0b
|
||||||
|
xri d,0x0c
|
||||||
|
xri e,0x0d
|
||||||
|
xri h,0x0e
|
||||||
|
xri l,0x0f
|
||||||
|
ori v,0x10
|
||||||
|
ori a,0x11
|
||||||
|
ori b,0x12
|
||||||
|
ori c,0x13
|
||||||
|
ori d,0x14
|
||||||
|
ori e,0x15
|
||||||
|
ori h,0x16
|
||||||
|
ori l,0x17
|
||||||
|
adinc v,0x18
|
||||||
|
adinc a,0x19
|
||||||
|
adinc b,0x1a
|
||||||
|
adinc c,0x1b
|
||||||
|
adinc d,0x1c
|
||||||
|
adinc e,0x1d
|
||||||
|
adinc h,0x1e
|
||||||
|
adinc l,0x1f
|
||||||
|
gti v,0x20
|
||||||
|
gti a,0x21
|
||||||
|
gti b,0x22
|
||||||
|
gti c,0x23
|
||||||
|
gti d,0x24
|
||||||
|
gti e,0x25
|
||||||
|
gti h,0x26
|
||||||
|
gti l,0x27
|
||||||
|
suinb v,0x28
|
||||||
|
suinb a,0x29
|
||||||
|
suinb b,0x2a
|
||||||
|
suinb c,0x2b
|
||||||
|
suinb d,0x2c
|
||||||
|
suinb e,0x2d
|
||||||
|
suinb h,0x2e
|
||||||
|
suinb l,0x2f
|
||||||
|
lti v,0x30
|
||||||
|
lti a,0x31
|
||||||
|
lti b,0x32
|
||||||
|
lti c,0x33
|
||||||
|
lti d,0x34
|
||||||
|
lti e,0x35
|
||||||
|
lti h,0x36
|
||||||
|
lti l,0x37
|
||||||
|
adi v,0x38
|
||||||
|
adi a,0x39
|
||||||
|
adi b,0x3a
|
||||||
|
adi c,0x3b
|
||||||
|
adi d,0x3c
|
||||||
|
adi e,0x3d
|
||||||
|
adi h,0x3e
|
||||||
|
adi l,0x4f
|
||||||
|
oni v,0x40
|
||||||
|
oni a,0x41
|
||||||
|
oni b,0x42
|
||||||
|
oni c,0x43
|
||||||
|
oni d,0x44
|
||||||
|
oni e,0x45
|
||||||
|
oni h,0x46
|
||||||
|
oni l,0x47
|
||||||
|
aci v,0x48
|
||||||
|
aci a,0x49
|
||||||
|
aci b,0x4a
|
||||||
|
aci c,0x4b
|
||||||
|
aci d,0x4c
|
||||||
|
aci e,0x4d
|
||||||
|
aci h,0x4e
|
||||||
|
aci l,0x4f
|
||||||
|
offi v,0x50
|
||||||
|
offi a,0x51
|
||||||
|
offi b,0x52
|
||||||
|
offi c,0x53
|
||||||
|
offi d,0x54
|
||||||
|
offi e,0x55
|
||||||
|
offi h,0x56
|
||||||
|
offi l,0x57
|
||||||
|
sui v,0x58
|
||||||
|
sui a,0x59
|
||||||
|
sui b,0x5a
|
||||||
|
sui c,0x5b
|
||||||
|
sui d,0x5c
|
||||||
|
sui e,0x5d
|
||||||
|
sui h,0x5e
|
||||||
|
sui l,0x5f
|
||||||
|
nei v,0x60
|
||||||
|
nei a,0x61
|
||||||
|
nei b,0x62
|
||||||
|
nei c,0x63
|
||||||
|
nei d,0x64
|
||||||
|
nei e,0x65
|
||||||
|
nei h,0x66
|
||||||
|
nei l,0x67
|
||||||
|
sbi v,0x68
|
||||||
|
sbi a,0x69
|
||||||
|
sbi b,0x6a
|
||||||
|
sbi c,0x6b
|
||||||
|
sbi d,0x6c
|
||||||
|
sbi e,0x6d
|
||||||
|
sbi h,0x6e
|
||||||
|
sbi l,0x6f
|
||||||
|
eqi v,0x70
|
||||||
|
eqi a,0x71
|
||||||
|
eqi b,0x72
|
||||||
|
eqi c,0x73
|
||||||
|
eqi d,0x74
|
||||||
|
eqi e,0x75
|
||||||
|
eqi h,0x76
|
||||||
|
eqi l,0x77
|
||||||
|
ani pa,0x78
|
||||||
|
ani pb,0x79
|
||||||
|
ani pc,0x7a
|
||||||
|
ani mk,0x7b
|
||||||
|
xri pa,0x7c
|
||||||
|
xri pb,0x7d
|
||||||
|
xri pc,0x7e
|
||||||
|
xri mk,0x7f
|
||||||
|
ori pa,0x80
|
||||||
|
ori pb,0x81
|
||||||
|
ori pc,0x82
|
||||||
|
ori mk,0x83
|
||||||
|
adinc pa,0x84
|
||||||
|
adinc pb,0x85
|
||||||
|
adinc pc,0x86
|
||||||
|
adinc mk,0x87
|
||||||
|
gti pa,0x88
|
||||||
|
gti pb,0x89
|
||||||
|
gti pc,0x8a
|
||||||
|
gti mk,0x8b
|
||||||
|
suinb pa,0x8c
|
||||||
|
suinb pb,0x8d
|
||||||
|
suinb pc,0x8e
|
||||||
|
suinb mk,0x8f
|
||||||
|
lti pa,0x90
|
||||||
|
lti pb,0x91
|
||||||
|
lti pc,0x92
|
||||||
|
lti mk,0x93
|
||||||
|
adi pa,0x94
|
||||||
|
adi pb,0x95
|
||||||
|
adi pc,0x96
|
||||||
|
adi mk,0x97
|
||||||
|
oni pa,0x98
|
||||||
|
oni pb,0x99
|
||||||
|
oni pc,0x9a
|
||||||
|
oni mk,0x9b
|
||||||
|
aci pa,0x9c
|
||||||
|
aci pb,0x9d
|
||||||
|
aci pc,0x9e
|
||||||
|
aci mk,0x9f
|
||||||
|
offi pa,0xa0
|
||||||
|
offi pb,0xa1
|
||||||
|
offi pc,0xa2
|
||||||
|
offi mk,0xa3
|
||||||
|
sui pa,0xa4
|
||||||
|
sui pb,0xa5
|
||||||
|
sui pc,0xa6
|
||||||
|
sui mk,0xa7
|
||||||
|
nei pa,0xa8
|
||||||
|
nei pb,0xa9
|
||||||
|
nei pc,0xaa
|
||||||
|
nei mk,0xab
|
||||||
|
sbi pa,0xac
|
||||||
|
sbi pb,0xad
|
||||||
|
sbi pc,0xae
|
||||||
|
sbi mk,0xaf
|
||||||
|
eqi pa,0xb0
|
||||||
|
eqi pb,0xb1
|
||||||
|
eqi pc,0xb2
|
||||||
|
eqi mk,0xb3
|
||||||
|
|
||||||
writebin(filename .. '.bin')
|
writebin(filename .. '.bin')
|
||||||
|
|
48
uPD7801.lua
48
uPD7801.lua
|
@ -484,12 +484,58 @@ for i,o in ipairs(op60names) do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
k = 0x08
|
||||||
|
local op64names = { 'ani','xri','ori','adinc','gti','suinb','lti','adi','oni','aci','offi','sui','nei','sbi','eqi' }
|
||||||
|
for i,o in ipairs(op64names) do
|
||||||
|
for j,r in ipairs(register_names) do
|
||||||
|
local name = o .. r
|
||||||
|
if not M[name] then
|
||||||
|
local l = k
|
||||||
|
M[name] = function(late,early)
|
||||||
|
local l65dbg = { info=debug.getinfo(2, 'Sl'), trace=debug.traceback(nil, 1) }
|
||||||
|
local op = { cycles=11 }
|
||||||
|
op.size = function() late,early = M.size_op(late,early) return 3 end
|
||||||
|
op.bin = function() local l65dbg=l65dbg
|
||||||
|
local x = 0x00 + l;
|
||||||
|
local y = 0x00 + M.op_eval_byte(late,early)
|
||||||
|
return { 0x64, x, y }
|
||||||
|
end
|
||||||
|
table.insert(M.section_current.instructions, op)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
k = k + 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
k = 0x88
|
||||||
|
local ex_register_names = {'pa','pb','pc','mk'}
|
||||||
|
for i,o in ipairs(op64names) do
|
||||||
|
for j,r in ipairs(ex_register_names) do
|
||||||
|
local name = o .. r
|
||||||
|
if not M[name] then
|
||||||
|
local l = k
|
||||||
|
M[name] = function(late,early)
|
||||||
|
local l65dbg = { info=debug.getinfo(2, 'Sl'), trace=debug.traceback(nil, 1) }
|
||||||
|
local op = { cycles=11 }
|
||||||
|
op.size = function() late,early = M.size_op(late,early) return 3 end
|
||||||
|
op.bin = function() local l65dbg=l65dbg
|
||||||
|
local x = 0x00 + l;
|
||||||
|
local y = 0x00 + M.op_eval_byte(late,early)
|
||||||
|
return { 0x64, x, y }
|
||||||
|
end
|
||||||
|
table.insert(M.section_current.instructions, op)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
k = k + 1
|
||||||
|
end
|
||||||
|
k = k + 4
|
||||||
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
||||||
--[[ [todo]
|
--[[ [todo]
|
||||||
|
|
||||||
16 bits instructions:
|
16 bits instructions:
|
||||||
0x64xx
|
|
||||||
0x70xx
|
0x70xx
|
||||||
0x74xx
|
0x74xx
|
||||||
]]--
|
]]--
|
||||||
|
|
Loading…
Reference in New Issue