diff zruntime.S @ 252:63b9a500a00b

Implement retranslating code when written to. Possibly broken, need to fix some other bugs before a proper test.
author Mike Pavone <pavone@retrodev.com>
date Mon, 29 Apr 2013 21:46:48 -0700
parents d94e6cd5a8a5
children 3b34deba4ca0
line wrap: on
line diff
--- a/zruntime.S	Mon Apr 29 01:14:24 2013 -0700
+++ b/zruntime.S	Mon Apr 29 21:46:48 2013 -0700
@@ -99,6 +99,15 @@
 z80_write_ram:
 	and $0x1FFF, %r13
 	mov %r14b, (%r11, %r13)
+	mov %r13d, %r14d
+	shr $7, %r14d
+	bt %r14d, 152(%rsi)
+	jnc not_code
+	call z80_save_context
+	mov %r13d, %edi
+	call z80_handle_code_write
+	mov %rax, %rsi
+not_code:
 	ret
 z80_write_bank:
 	and $0x7FFF, %r13
@@ -167,6 +176,17 @@
 	call z_inccycles
 	call z80_write_byte_noinc
 	ret
+	
+	.global z80_retrans_stub
+z80_retrans_stub:
+	call z80_save_context
+	mov %r13d, %edi
+	push %rsi
+	call z80_retranslate_inst
+	pop %rsi
+	mov %rax, %r13
+	call z80_load_context
+	jmp *%r13
 
 	.global z80_native_addr
 z80_native_addr: