summaryrefslogtreecommitdiff
path: root/runtime.S
diff options
context:
space:
mode:
authorMike Pavone <pavone@retrodev.com>2012-12-31 11:26:57 -0800
committerMike Pavone <pavone@retrodev.com>2012-12-31 11:26:57 -0800
commit418dd74e406d2cd3134e5ecb175d4ae8b46e70e1 (patch)
tree5a9f3b06b73a8fb431707226be2853f557966709 /runtime.S
parent8dc3c22d3d0a2f34cd6321365761df66e32847f3 (diff)
Fix VDP reads
Diffstat (limited to 'runtime.S')
-rw-r--r--runtime.S13
1 files changed, 10 insertions, 3 deletions
diff --git a/runtime.S b/runtime.S
index a383130..33d67a5 100644
--- a/runtime.S
+++ b/runtime.S
@@ -215,15 +215,22 @@ try_fifo_write:
/* bail out if fifo is full */
je fifo_fallback
/* populate FIFO entry */
- mov %cx, 4(%rbx) /* value */
- movb $0, 6(%rbx) /* partial */
+ mov %cx, 6(%rbx) /* value */
+ mov 16(%rdx), %cx
+ mov %cx, 4(%rbx) /* address */
+ mov 18(%rdx), %cl
+ mov %cl, 8(%rbx) /* cd */
+ movb $0, 9(%rbx) /* partial */
mov %eax, %ecx
shl $3, %ecx /* multiply by 68K cycle by 7 to get MCLK cycle */
sub %eax, %ecx
mov %ecx, (%rbx) /* cycle */
/* update fifo_cur and store back in 68K context */
- add $8, %rbx
+ add $12, %rbx
mov %rbx, (%rdx)
+ /* update address register */
+ movzbw 35(%rdx), %bx
+ add %bx, 16(%rdx)
/* clear pending flag */
andb $0xEF, 19(%rdx)
pop %rbx