.global DrZ80Run\r
.global DrZ80Ver\r
\r
- .equiv INTERRUPT_MODE, 0 ;@0 = Use internal int handler, 1 = Use Mames int handler\r
- .equiv FAST_Z80SP, 1 ;@0 = Use mem functions for stack pointer, 1 = Use direct mem pointer\r
- .equiv UPDATE_CONTEXT, 0\r
- .equiv DRZ80_FOR_PICODRIVE, 1\r
+ .equiv INTERRUPT_MODE, 0 ;@0 = Use internal int handler, 1 = Use Mames int handler\r
+ .equiv FAST_Z80SP, 1 ;@0 = Use mem functions for stack pointer, 1 = Use direct mem pointer\r
+ .equiv UPDATE_CONTEXT, 0\r
+ .equiv DRZ80_FOR_PICODRIVE, 1\r
\r
.if INTERRUPT_MODE\r
- .extern Interrupt\r
+ .extern Interrupt\r
.endif\r
\r
.if DRZ80_FOR_PICODRIVE\r
- .extern YM2612Read_\r
- .extern YM2612Read_940\r
+.include "port_config.s"\r
+ .extern YM2612Read_\r
+.if EXTERNAL_YM2612\r
+ .extern YM2612Read_940\r
+.endif\r
.extern PicoRead8\r
.extern Pico\r
.extern z80_write\r
.text\r
\r
.if DRZ80_FOR_PICODRIVE\r
-.include "port_config.s"\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
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
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
;@ 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
;@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