notaz.gp2x.de
/
picodrive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bugfixes, famec tuning
[picodrive.git]
/
cpu
/
DrZ80
/
drz80.s
diff --git
a/cpu/DrZ80/drz80.s
b/cpu/DrZ80/drz80.s
index
eba8b95
..
5a4801a
100644
(file)
--- a/
cpu/DrZ80/drz80.s
+++ b/
cpu/DrZ80/drz80.s
@@
-111,40
+111,37
@@
DrZ80Ver: .long 0x0001
.if DRZ80_FOR_PICODRIVE
\r
\r
.macro YM2612Read_and_ret8
\r
.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
.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
.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
.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
.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
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
.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
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
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
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
\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
;@ mov r0,#0xFD00
\r
;@ orr r0,r0,r1
\r
;@ b end_loop
\r
+
\r
opcode_DD_NF2:
\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
\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
;@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
\r
\r
\r