Ich denke ich komme nicht weiter, wenn meine Grundannahmen falsch sind. Sprich, mein "6809 Daten Skript"...
Deswegen hab ich nochmal ein neuen Generator dafür angefangen:
https://github.com/jedie/DragonPy/blob/ ... 9_data2.py
Ich hab mal das vorläufige Ergebnis in einer neuen Tabelle "NEW" eingefügt:
https://docs.google.com/spreadsheet/ccc ... URnUTNtSFE
Ziel ist halt sowas zu haben:
Code: Alles auswählen
{'ABX': {'ABX': {'desc': 'X = B+X (Unsigned)',
'operand': '',
'ops': {0x3a: 'INHERENT'},
'read_from_memory': '-',
'write_to_memory': '-'}},
'ADC': {'ADCA': {'desc': 'A = A+M+C',
'operand': 'A',
'ops': {0x89: 'IMMEDIATE',
0x99: 'DIRECT',
0xa9: 'INDEXED',
0xb9: 'EXTENDED'},
'read_from_memory': 'BYTE',
'write_to_memory': '-'},
'ADCB': {'desc': 'B = B+M+C',
'operand': 'B',
'ops': {0xc9: 'IMMEDIATE',
0xd9: 'DIRECT',
0xe9: 'INDEXED',
0xf9: 'EXTENDED'},
'read_from_memory': 'BYTE',
'write_to_memory': '-'}},
'ADD': {'ADDA': {'desc': 'A = A+M',
'operand': 'A',
'ops': {0x8b: 'IMMEDIATE',
0x9b: 'DIRECT',
0xab: 'INDEXED',
0xbb: 'EXTENDED'},
'read_from_memory': 'BYTE',
'write_to_memory': '-'},
'ADDB': {'desc': 'B = B+M',
'operand': 'B',
'ops': {0xcb: 'IMMEDIATE',
0xdb: 'DIRECT',
0xeb: 'INDEXED',
0xfb: 'EXTENDED'},
'read_from_memory': 'BYTE',
'write_to_memory': '-'},
'ADDD': {'desc': 'D = D+M:M+1',
'operand': 'D',
'ops': {0xc3: 'IMMEDIATE_WORD',
0xd3: 'DIRECT',
0xe3: 'INDEXED',
0xf3: 'EXTENDED'},
'read_from_memory': 'WORD',
'write_to_memory': '-'}},
...
Vollstängige Ausgabe:
https://gist.github.com/jedie/7054130
Das Problem ist, wie komme ich an die Information "read from memory" und "write to memory" zum jeweiligen Op-Code ???
Meine aktuelle Lösung ist recht simple. Ich schaue nach "M" (für Memory) in der Beschreibung zu jedem Op-Code hier:
https://github.com/jedie/DragonPy/blob/ ... #L385-L490
Also damit:
Code: Alles auswählen
read_from_memory = "-"
if "=" in desc:
right = desc.split("=")[1]
if "M:M" in right:
read_from_memory = "WORD"
elif "M" in right:
read_from_memory = "BYTE"
write_to_memory = "-"
if desc.startswith("M:M"):
write_to_memory = "WORD"
elif desc.startswith("M ="):
write_to_memory = "BYTE"
Aber ich denke mal so bekomme ich nicht wirklich alles richtig hin...