summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--m68k_to_x86.c2
-rw-r--r--runtime.S12
-rw-r--r--vdp.c10
3 files changed, 18 insertions, 6 deletions
diff --git a/m68k_to_x86.c b/m68k_to_x86.c
index 7a7a90c..8daa11e 100644
--- a/m68k_to_x86.c
+++ b/m68k_to_x86.c
@@ -50,7 +50,7 @@ uint8_t * cycles(uint8_t * dst, uint32_t num)
uint8_t * check_cycles_int(uint8_t * dst, uint32_t address)
{
- dst = cmp_rr(dst, LIMIT, CYCLES, SZ_D);
+ dst = cmp_rr(dst, CYCLES, LIMIT, SZ_D);
uint8_t * jmp_off = dst+1;
dst = jcc(dst, CC_NC, dst + 7);
dst = mov_ir(dst, address, SCRATCH1, SZ_D);
diff --git a/runtime.S b/runtime.S
index bf7e06d..69b2dc2 100644
--- a/runtime.S
+++ b/runtime.S
@@ -16,6 +16,7 @@ handle_cycle_limit_int:
cmp 88(%rsi), %eax
jb skip_int
push %rcx
+ /* call print_int_dbg */
/* swap USP and SSP if not already in supervisor mode */
bt $5, 5(%rsi)
jc already_supervisor
@@ -50,6 +51,17 @@ already_supervisor:
jmp *%rcx
skip_int:
ret
+
+int_dbg_msg:
+ .asciz "Executing Interrupt!"
+print_int_dbg:
+ call m68k_save_context
+ push %rsi
+ lea int_dbg_msg(%rip), %rdi
+ call puts
+ pop %rsi
+ call m68k_load_context
+ ret
.global get_sr
get_sr:
diff --git a/vdp.c b/vdp.c
index a852830..961968a 100644
--- a/vdp.c
+++ b/vdp.c
@@ -313,7 +313,7 @@ void external_slot(vdp_context * context)
}
break;
case CRAM_WRITE:
- printf("CRAM Write: %X to %X, autoinc: %d\n", start->value, context->address, context->regs[REG_AUTOINC]);
+ //printf("CRAM Write: %X to %X\n", start->value, context->address);
context->cram[(context->address/2) & (CRAM_SIZE-1)] = start->value;
break;
case VSRAM_WRITE:
@@ -1029,7 +1029,7 @@ int vdp_control_port_write(vdp_context * context, uint16_t value)
context->address = (context->address & 0x3FFF) | (value << 14);
context->cd = (context->cd & 0x3) | ((value >> 2) & 0x3C);
context->flags &= ~FLAG_PENDING;
- printf("New Address: %X, New CD: %X\n", context->address, context->cd);
+ //printf("New Address: %X, New CD: %X\n", context->address, context->cd);
if (context->cd & 0x20) {
if((context->regs[REG_DMASRC_H] & 0xC0) != 0x80) {
//DMA copy or 68K -> VDP, transfer starts immediately
@@ -1044,11 +1044,11 @@ int vdp_control_port_write(vdp_context * context, uint16_t value)
//Register write
uint8_t reg = (value >> 8) & 0x1F;
if (reg < VDP_REGS) {
- printf("register %d set to %X\n", reg, value & 0xFF);
+ //printf("register %d set to %X\n", reg, value & 0xFF);
context->regs[reg] = value;
- if (reg == REG_MODE_2) {
+ /*if (reg == REG_MODE_2) {
printf("Display is now %s\n", (context->regs[REG_MODE_2] & DISPLAY_ENABLE) ? "enabled" : "disabled");
- }
+ }*/
}
} else {
context->flags |= FLAG_PENDING;