various bugfixes
[picodrive.git] / cpu / DrZ80 / drz80.s
index eba8b95..5a4801a 100644 (file)
@@ -111,40 +111,37 @@ DrZ80Ver: .long 0x0001
 .if DRZ80_FOR_PICODRIVE\r
 \r
 .macro YM2612Read_and_ret8\r
-       stmfd sp!,{r3,r12,lr}\r
+    stmfd sp!,{r3,r12,lr}\r
 .if EXTERNAL_YM2612\r
     ldr r1,=PicoOpt\r
     ldr r1,[r1]\r
     tst r1,#0x200\r
-    bne 10f\r
-    bl YM2612Read_\r
-       ldmfd sp!,{r3,r12,pc}\r
-10:\r
-    bl YM2612Read_940\r
+    ldrne r2, =YM2612Read_940\r
+    ldreq r2, =YM2612Read_\r
+    mov lr,pc\r
+    bx r2\r
 .else\r
     bl YM2612Read_\r
 .endif\r
-       ldmfd sp!,{r3,r12,pc}\r
+    ldmfd sp!,{r3,r12,pc}\r
 .endm\r
 \r
 .macro YM2612Read_and_ret16\r
-       stmfd sp!,{r3,r12,lr}\r
+    stmfd sp!,{r3,r12,lr}\r
 .if EXTERNAL_YM2612\r
     ldr r0,=PicoOpt\r
     ldr r0,[r0]\r
     tst r0,#0x200\r
-    bne 10f\r
-    bl YM2612Read_\r
-    orr r0,r0,r0,lsl #8\r
-       ldmfd sp!,{r3,r12,pc}\r
-10:\r
-    bl YM2612Read_940\r
+    ldrne r2, =YM2612Read_940\r
+    ldreq r2, =YM2612Read_\r
+    mov lr,pc\r
+    bx r2\r
     orr r0,r0,r0,lsl #8\r
 .else\r
     bl YM2612Read_\r
     orr r0,r0,r0,lsl #8\r
 .endif\r
-       ldmfd sp!,{r3,r12,pc}\r
+    ldmfd sp!,{r3,r12,pc}\r
 .endm\r
 \r
 pico_z80_read8: @ addr\r
@@ -173,7 +170,7 @@ pico_z80_read8: @ addr
     cmp r1,#2              @ YM2612 (0x4000-0x5fff)\r
     bne 0f\r
     and r0,r0,#3\r
-       YM2612Read_and_ret8\r
+    YM2612Read_and_ret8\r
 0:\r
     cmp r0,#0x4000\r
     movge r0,#0xff\r
@@ -1462,7 +1459,6 @@ DoInterrupt:
     bne DoInterrupt_mode1\r
     tst r1,#2\r
     bne DoInterrupt_mode2\r
-    b   DoInterrupt_mode0\r
 \r
 DoInterrupt_mode0:\r
        ;@ get 3 byte vector\r
@@ -6672,11 +6668,14 @@ opcode_DD_NF:
 ;@     mov r0,#0xFD00\r
 ;@     orr r0,r0,r1\r
 ;@     b end_loop\r
+\r
 opcode_DD_NF2:\r
-       mov r0,#0xDD0000\r
-       orr r0,r0,#0xCB00\r
-       orr r0,r0,r1\r
-       b end_loop\r
+       fetch 15\r
+;@ notaz: we don't want to deadlock here\r
+;@     mov r0,#0xDD0000\r
+;@     orr r0,r0,#0xCB00\r
+;@     orr r0,r0,r1\r
+;@     b end_loop\r
 \r
 ;@ADD IX,BC\r
 opcode_DD_09:\r
@@ -8071,8 +8070,8 @@ opcode_ED_BB:
 ;@from the DD location but the address of the IY reg is passed instead\r
 ;@of IX\r
 \r
-end_loop:\r
-     b end_loop\r
+;@end_loop:\r
+;@     b end_loop\r
 \r
 \r
 \r