.text
.align 2
-.global PicoReadM68k8_io
-.global PicoReadM68k16_io
-.global PicoWriteM68k8_io
-.global PicoWriteM68k16_io
+.global PicoRead8_mcd_io
+.global PicoRead16_mcd_io
+.global PicoWrite8_mcd_io
+.global PicoWrite16_mcd_io
.global PicoReadS68k8_pr
.global PicoReadS68k16_pr
.extern m68k_reg_write8
.extern s68k_reg_read16
.extern s68k_reg_write8
-.extern s68k_poll_adclk
.extern s68k_poll_detect
.extern gfx_cd_read
.extern gfx_cd_write16
.extern PicoRead16_io
.extern PicoWrite8_io
.extern PicoWrite16_io
+.extern m68k_comm_check
@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
bx lr
-PicoReadM68k8_io:
+PicoRead8_mcd_io:
and r1, r0, #0xff00
cmp r1, #0x2000 @ a120xx?
bne PicoRead8_io
bx lr
m_m68k_read8_r03:
add r1, r1, #0x110000
+ push {r1, lr}
+ bl m68k_comm_check
+ pop {r1, lr}
ldrb r0, [r1, #3]
- add r1, r1, #0x002200
- ldr r1, [r1, #4]
and r0, r0, #0xc7
- tst r1, #2 @ DMNA pending?
- bxeq lr
- bic r0, r0, #1
- orr r0, r0, #2
bx lr
m_m68k_read8_r04:
add r1, r1, #0x110000
bx lr
m_m68k_read8_hi:
cmp r0, #0x30
- movge r0, #0
- bxeq lr
add r1, r1, #0x110000
- ldrb r0, [r1, r0]
+ movge r0, #0
+ bxge lr
+ add r1, r0
+ push {r1, lr}
+ bl m68k_comm_check
+ pop {r1, lr}
+ ldrb r0, [r1]
bx lr
bx lr
-PicoReadM68k16_io:
+PicoRead16_mcd_io:
and r1, r0, #0xff00
cmp r1, #0x2000 @ a120xx
bne PicoRead16_io
bx lr
m_m68k_read16_r02:
add r1, r1, #0x110000
- ldrb r0, [r1, #2]
+ push {r1, lr}
+ bl m68k_comm_check
+ pop {r1, lr}
ldrb r2, [r1, #3]
- add r1, r1, #0x002200
- ldr r1, [r1, #4]
+ ldrb r0, [r1, #2]
and r2, r2, #0xc7
orr r0, r2, r0, lsl #8
- tst r1, #2 @ DMNA pending?
- bxeq lr
- bic r0, r0, #1
- orr r0, r0, #2
bx lr
m_m68k_read16_r04:
add r1, r1, #0x110000
bx lr
m_m68k_read16_hi:
cmp r0, #0x30
- addlt r1, r1, #0x110000
- ldrlth r1, [r1, r0]
+ add r1, r1, #0x110000
movge r0, #0
bxge lr
- mov r0, r1, lsr #8
- and r1, r1, #0xff
- orr r0, r0, r1, lsl #8
+
+ add r1, r0, r1
+ push {r1, lr}
+ bl m68k_comm_check
+ pop {r0, lr}
+ ldrh r0, [r0]
+ mov r1, r0, lsr #8
+ and r0, r0, #0xff
+ orr r0, r1, r0, lsl #8
bx lr
bx lr
-PicoWriteM68k8_io:
+PicoWrite8_mcd_io:
and r2, r0, #0xff00
cmp r2, #0x2000 @ a120xx?
beq m68k_reg_write8
bx lr
-PicoWriteM68k16_io:
+PicoWrite16_mcd_io:
and r2, r0, #0xff00
cmp r2, #0x2000 @ a120xx?
bne PicoWrite16_io
b m68k_reg_write8
m_m68k_write16_regs_spec: @ special case
- ldr r2, =(Pico+0x22200)
- ldr r3, =s68k_poll_adclk
- mov r0, #0x110000
- ldr r2, [r2]
- add r0, r0, #0x00000e
mov r1, r1, lsr #8
- strb r1, [r2, r0] @ if (a == 0xe) s68k_regs[0x0e] = d >> 8;
- ldr r2, [r3]
- mov r1, #0
- and r2, r2, #0xfe
- cmp r2, #0x0e
- bxne lr
- ldr r0, =PicoCpuCS68k
- str r1, [r0, #0x58] @ push s68k out of stopped state
- str r1, [r3]
- bx lr
+ b m68k_reg_write8
@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@