Split disassembly part of decode_65c02.py into instr_65c02.py via text file
authorNick Downing <nick@ndcode.org>
Sat, 30 Jul 2022 02:08:49 +0000 (12:08 +1000)
committerNick Downing <nick@ndcode.org>
Sat, 30 Jul 2022 08:46:19 +0000 (18:46 +1000)
decode_65c02.py
instr_65c02.py [new file with mode: 0755]
instr_65c02.txt [new file with mode: 0644]

index bdc6157..a17babc 100755 (executable)
@@ -1,13 +1,7 @@
 #!/usr/bin/env python3
 
-import py65.devices.mpu65c02
-import py65.disassembler
 import sys
 
-mem = [0, 0x12, 0x34]
-mpu = py65.devices.mpu65c02.MPU(mem, 0)
-disassembler = py65.disassembler.Disassembler(mpu)
-
 rvalue_opcodes = {
   'adc',
   'and',
@@ -52,16 +46,16 @@ lvalue_modes = {
   'a': 'CPU_65C02_EA_A',
 }
 
+line = sys.stdin.readline().strip()
+assert line == 'opcodes'
+
 print('void cpu_65c02_execute(struct cpu_65c02 *self) {')
 print('  switch (cpu_65c02_fetch_byte(self)) {')
 for i in range(0x100):
+  line = sys.stdin.readline().strip()
+
   print(f'  case 0x{i:02x}:')
-  if i == 0x64: # cope with py65 disassembler bug
-    n, instr = 2, 'stz $12'
-  else:
-    mem[0] = i
-    _, instr = disassembler.instruction_at(0)
-  instr = instr.lower().split()
+  instr = line.lower().split()
   if instr[0] == '???':
     instr[0] = 'ill' # illegal opcode
   if len(instr) >= 2:
@@ -76,5 +70,9 @@ for i in range(0x100):
     )
   )
   print('    break;')
+
+line = sys.stdin.readline().strip()
+assert len(line) == 0
+
 print('  }')
 print('}')
diff --git a/instr_65c02.py b/instr_65c02.py
new file mode 100755 (executable)
index 0000000..15d3d80
--- /dev/null
@@ -0,0 +1,18 @@
+#!/usr/bin/env python3
+
+import py65.devices.mpu65c02
+import py65.disassembler
+
+mem = [0, 0x12, 0x34]
+mpu = py65.devices.mpu65c02.MPU(mem, 0)
+disassembler = py65.disassembler.Disassembler(mpu)
+
+print('opcodes')
+for i in range(0x100):
+  if i == 0x64: # cope with py65 disassembler bug
+    instr = 'stz $12'
+  else:
+    mem[0] = i
+    _, instr = disassembler.instruction_at(0)
+  print(instr)
+print()
diff --git a/instr_65c02.txt b/instr_65c02.txt
new file mode 100644 (file)
index 0000000..98e3461
--- /dev/null
@@ -0,0 +1,258 @@
+opcodes
+BRK
+ORA ($12,X)
+???
+???
+TSB $12
+ORA $12
+ASL $12
+RMB0 $12
+PHP
+ORA #$12
+ASL A
+???
+TSB $3412
+ORA $3412
+ASL $3412
+???
+BPL $0014
+ORA ($12),Y
+ORA ($12)
+???
+TRB $12
+ORA $12,X
+ASL $12,X
+RMB1 $12
+CLC
+ORA $3412,Y
+INC A
+???
+TRB $3412
+ORA $3412,X
+ASL $3412,X
+???
+JSR $3412
+AND ($12,X)
+???
+???
+BIT $12
+AND $12
+ROL $12
+RMB2 $12
+PLP
+AND #$12
+ROL A
+???
+BIT $3412
+AND $3412
+ROL $3412
+???
+BMI $0014
+AND ($12),Y
+AND ($12)
+???
+BIT $12,X
+AND $12,X
+ROL $12,X
+RMB3 $12
+SEC
+AND $3412,Y
+DEC A
+???
+BIT $3412,X
+AND $3412,X
+ROL $3412,X
+???
+RTI
+EOR ($12,X)
+???
+???
+???
+EOR $12
+LSR $12
+RMB4 $12
+PHA
+EOR #$12
+LSR A
+???
+JMP $3412
+EOR $3412
+LSR $3412
+???
+BVC $0014
+EOR ($12),Y
+EOR ($12)
+???
+???
+EOR $12,X
+LSR $12,X
+RMB5 $12
+CLI
+EOR $3412,Y
+PHY
+???
+???
+EOR $3412,X
+LSR $3412,X
+???
+RTS
+ADC ($12,X)
+???
+???
+stz $12
+ADC $12
+ROR $12
+RMB6 $12
+PLA
+ADC #$12
+ROR A
+???
+JMP ($3412)
+ADC $3412
+ROR $3412
+???
+BVS $0014
+ADC ($12),Y
+ADC ($12)
+???
+STZ $12,X
+ADC $12,X
+ROR $12,X
+RMB7 $12
+SEI
+ADC $3412,Y
+PLY
+???
+JMP ($3412,X)
+ADC $3412,X
+ROR $3412,X
+???
+BRA $0014
+STA ($12,X)
+???
+???
+STY $12
+STA $12
+STX $12
+SMB0 $12
+DEY
+BIT #$12
+TXA
+???
+STY $3412
+STA $3412
+STX $3412
+???
+BCC $0014
+STA ($12),Y
+STA ($12)
+???
+STY $12,X
+STA $12,X
+STX $12,Y
+SMB1 $12
+TYA
+STA $3412,Y
+TXS
+???
+STZ $3412
+STA $3412,X
+STZ $3412,X
+???
+LDY #$12
+LDA ($12,X)
+LDX #$12
+???
+LDY $12
+LDA $12
+LDX $12
+SMB2 $12
+TAY
+LDA #$12
+TAX
+???
+LDY $3412
+LDA $3412
+LDX $3412
+???
+BCS $0014
+LDA ($12),Y
+LDA ($12)
+???
+LDY $12,X
+LDA $12,X
+LDX $12,Y
+SMB3 $12
+CLV
+LDA $3412,Y
+TSX
+???
+LDY $3412,X
+LDA $3412,X
+LDX $3412,Y
+???
+CPY #$12
+CMP ($12,X)
+???
+???
+CPY $12
+CMP $12
+DEC $12
+SMB4 $12
+INY
+CMP #$12
+DEX
+WAI
+CPY $3412
+CMP $3412
+DEC $3412
+???
+BNE $0014
+CMP ($12),Y
+CMP ($12)
+???
+???
+CMP $12,X
+DEC $12,X
+SMB5 $12
+CLD
+CMP $3412,Y
+PHX
+???
+???
+CMP $3412,X
+DEC $3412,X
+???
+CPX #$12
+SBC ($12,X)
+???
+???
+CPX $12
+SBC $12
+INC $12
+SMB6 $12
+INX
+SBC #$12
+NOP
+???
+CPX $3412
+SBC $3412
+INC $3412
+???
+BEQ $0014
+SBC ($12),Y
+SBC ($12)
+???
+???
+SBC $12,X
+INC $12,X
+SMB7 $12
+SED
+SBC $3412,Y
+PLX
+???
+???
+SBC $3412,X
+INC $3412,X
+???
+