summaryrefslogtreecommitdiff
path: root/converter.py
blob: da9d8cd3b2391cbc754721414ccbe40c49aab7c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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;''')