programmatically create switch cases for opcodes based on opcode json
The JSON is from https://github.com/ericTheEchidna/65C02-JSON/ and saved me a lot of time from writing the cases for each opcode by hand.
This commit is contained in:
parent
72e29b3d25
commit
207c6903f5
39
converter.py
Normal file
39
converter.py
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
import json
|
||||||
|
|
||||||
|
address_mode_table = {
|
||||||
|
'Implied': 'AM_ACC',
|
||||||
|
'Immediate': 'AM_IMM',
|
||||||
|
'Zero Page': 'AM_ZP',
|
||||||
|
'Zero Page, X': 'AM_ZP_X',
|
||||||
|
'Zero Page, Y': 'AM_ZP_Y',
|
||||||
|
'Absolute': 'AM_ABS',
|
||||||
|
'Absolute, X': 'AM_ABS_X',
|
||||||
|
'Absolute, Y': 'AM_ABS_Y',
|
||||||
|
'Indirect': 'AM_IND',
|
||||||
|
'(Indirect)': 'AM_IND',
|
||||||
|
'(Indirect, X)': 'AM_IND_X',
|
||||||
|
'(Indirect), Y': 'AM_IND_Y',
|
||||||
|
}
|
||||||
|
|
||||||
|
# https://github.com/ericTheEchidna/65C02-JSON/
|
||||||
|
j = json.load(open('opcodes_65c02.json', 'r'))
|
||||||
|
|
||||||
|
#print(j)
|
||||||
|
|
||||||
|
for i in j:
|
||||||
|
#print(i)
|
||||||
|
instruction = str.lower(i["instruction"])
|
||||||
|
for op in i["opcodes"]:
|
||||||
|
address_mode = i["opcodes"][op]["address_mode"]
|
||||||
|
if "Bit " in address_mode:
|
||||||
|
am = 'AM_REL'
|
||||||
|
else:
|
||||||
|
am = address_mode_table[address_mode]
|
||||||
|
|
||||||
|
bytes = i["opcodes"][op]["bytes"]
|
||||||
|
cycles = i["opcodes"][op]["cycles"]
|
||||||
|
|
||||||
|
print(f'''case {op}:
|
||||||
|
{instruction}(opcode_arg({am}));
|
||||||
|
cycles += {cycles};
|
||||||
|
break;''')
|
Loading…
Reference in New Issue
Block a user