X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=pico%2Fcd%2Fmemory_arm.s;h=3e6f9db6bd88be9d327e16ffbb35c670e51387fd;hb=fa8fb7544593a0ed43f3354cc5f41150464b55bf;hp=598bcd7d65bb35f0216dd112ede1f6c1e72097ca;hpb=bc3c13d3291c1f7093f89d086b7082169f3c6077;p=picodrive.git diff --git a/pico/cd/memory_arm.s b/pico/cd/memory_arm.s index 598bcd7..3e6f9db 100644 --- a/pico/cd/memory_arm.s +++ b/pico/cd/memory_arm.s @@ -11,10 +11,10 @@ .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 @@ -53,7 +53,6 @@ .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 @@ -62,6 +61,7 @@ .extern PicoRead16_io .extern PicoWrite8_io .extern PicoWrite16_io +.extern m68k_comm_check @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ -134,7 +134,7 @@ PicoReadM68k8_cell1: @ 0x220000 - 0x23ffff, cell arranged bx lr -PicoReadM68k8_io: +PicoRead8_mcd_io: and r1, r0, #0xff00 cmp r1, #0x2000 @ a120xx? bne PicoRead8_io @@ -176,14 +176,11 @@ m_m68k_read8_r02: 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 @@ -216,14 +213,15 @@ m_m68k_read8_r0d: mov r0, r0, lsr #16 bx lr m_m68k_read8_hi: - push {r0,r1,lr} - bl m68k_comm_check - pop {r0,r1,lr} 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 @@ -246,7 +244,7 @@ PicoReadM68k16_cell1: @ 0x220000 - 0x23ffff, cell arranged bx lr -PicoReadM68k16_io: +PicoRead16_mcd_io: and r1, r0, #0xff00 cmp r1, #0x2000 @ a120xx bne PicoRead16_io @@ -275,16 +273,13 @@ m_m68k_read16_r00: 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 @@ -305,13 +300,18 @@ m_m68k_read16_r0c: 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 @@ -335,7 +335,7 @@ PicoWriteM68k8_cell1: @ 0x220000 - 0x23ffff, cell arranged bx lr -PicoWriteM68k8_io: +PicoWrite8_mcd_io: and r2, r0, #0xff00 cmp r2, #0x2000 @ a120xx? beq m68k_reg_write8 @@ -362,7 +362,7 @@ PicoWriteM68k16_cell1: @ 0x220000 - 0x23ffff, cell arranged bx lr -PicoWriteM68k16_io: +PicoWrite16_mcd_io: and r2, r0, #0xff00 cmp r2, #0x2000 @ a120xx? bne PicoWrite16_io @@ -380,22 +380,8 @@ m_m68k_write16_regs: 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 @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@