summaryrefslogtreecommitdiff
path: root/opcodes.asm
diff options
context:
space:
mode:
authorDuncan Smith2010-09-06 18:09:29 -0700
committerDuncan Smith2010-09-06 18:34:53 -0700
commit70bc8883020a2da4326439a8308513a7385dc568 (patch)
tree2c00f58ac572825778f8a9af5fcfb2dbc0cf1c97 /opcodes.asm
parentd6c7556b85644c188f82baba6e460f11e27a0454 (diff)
Fixes to actually run code
This is the version to run the first (trivial) infinite loop correctly. I hacked up the loader slightly to replace one of the (nonexistent) pages with a static byte array. z80 code executed: $4000: JP $4000 4000 c3 40 00 4003 This version also draws the opcode executed on the screen, to aid in debugging the emulator: move.b d0,$4c00+32*(128/8) Also, it turns out that I was mixing up the emulated SP (a4) and emulated PC (a6). That has been fixed. Further, it seems that movea defaults to a word operation in a68k. This led to pointer corruption, which has been fixed.
Diffstat (limited to 'opcodes.asm')
-rw-r--r--opcodes.asm13
1 files changed, 7 insertions, 6 deletions
diff --git a/opcodes.asm b/opcodes.asm
index fe5547c..8042296 100644
--- a/opcodes.asm
+++ b/opcodes.asm
@@ -108,7 +108,8 @@ _align SET _align+$20
;; This is run at the end of every instruction routine.
DONE MACRO
clr.w d0 ; 4 cycles / 2 bytes
- move.b (a4)+,d0 ; 8 cycles / 2 bytes
+ move.b (a6)+,d0 ; 8 cycles / 2 bytes
+ move.b d0,$4c00+32*(128/8)
rol.w #5,d0 ;16 cycles / 2 bytes
jmp 0(a5,d0.w) ;14 cycles / 4 bytes
;; overhead: 42 cycles /10 bytes
@@ -602,7 +603,7 @@ emu_op_31:
;; LD SP,immed.w
FETCHWI d1
bsr deref
- movea a0,a4
+ movea.l a0,a4
DONE
START
@@ -1792,7 +1793,7 @@ emu_op_c3: ; S12 T36
;; PC <- immed.w
FETCHWI d1
bsr deref
- movea a0,a6
+ movea.l a0,a6
DONE
START
@@ -1844,7 +1845,7 @@ emu_op_c9:
;; SP <- (SP+2)
POPW d1
bsr deref
- movea a0,a6
+ movea.l a0,a6
DONE
START
@@ -2095,7 +2096,7 @@ emu_op_e9:
;; JP (HL)
FETCHB d6,d1
bsr deref
- movea a0,a6
+ movea.l a0,a6
DONE
START
@@ -2225,7 +2226,7 @@ emu_op_f9:
;; SP <- HL
move.w d6,d1
bsr deref
- movea a0,a4
+ movea.l a0,a4
DONE
START