diff options
| author | Astrid Smith | 2010-09-06 18:09:29 -0700 |
|---|---|---|
| committer | Astrid Smith | 2010-09-06 18:34:53 -0700 |
| commit | be4e09f43d8dae20e8fff2d0af21f0fc33298954 (patch) | |
| tree | 7c6b04530f67cde5982da7ee8d49411f73283836 /loader.c | |
| parent | 7c4dfba9781829b2825ebbdddca1531079d7adcc (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 'loader.c')
| -rw-r--r-- | loader.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -8,9 +8,11 @@ #include <tigcclib.h> #include "asm_vars.h" +#include "680.h" + HANDLE page_handles[256]; -char infloop[16] = { 0xc3, 0, 0, 0 }; +char infloop[16] = { 0xC3, 0x40, 0, 0, 0, 0 }; void init_load(void); void *deref_page(int); @@ -55,7 +57,8 @@ void init_load(void) mem_page_0 = pages[0]; mem_page_loc_0 = 0; - mem_page_1 = pages[0x1f]; +// mem_page_1 = pages[0x1f]; + mem_page_1 = infloop; mem_page_loc_1 = 0x1f; mem_page_2 = pages[0]; mem_page_loc_2 = 0; |
