-@ default jump tables\r
-\r
-m_read8_def_table:\r
- .long m_read8_rom0 @ 0x000000 - 0x07FFFF\r
- .long m_read8_rom1 @ 0x080000 - 0x0FFFFF\r
- .long m_read8_rom2 @ 0x100000 - 0x17FFFF\r
- .long m_read8_rom3 @ 0x180000 - 0x1FFFFF\r
- .long m_read8_rom4 @ 0x200000 - 0x27FFFF\r
- .long m_read8_rom5 @ 0x280000 - 0x2FFFFF\r
- .long m_read8_rom6 @ 0x300000 - 0x37FFFF\r
- .long m_read8_rom7 @ 0x380000 - 0x3FFFFF\r
- .long m_read8_rom8 @ 0x400000 - 0x47FFFF - for all those large ROM hacks\r
- .long m_read8_rom9 @ 0x480000 - 0x4FFFFF\r
- .long m_read8_romA @ 0x500000 - 0x57FFFF\r
- .long m_read8_romB @ 0x580000 - 0x5FFFFF\r
- .long m_read8_romC @ 0x600000 - 0x67FFFF\r
- .long m_read8_romD @ 0x680000 - 0x6FFFFF\r
- .long m_read8_romE @ 0x700000 - 0x77FFFF\r
- .long m_read8_romF @ 0x780000 - 0x7FFFFF\r
- .long m_read8_rom10 @ 0x800000 - 0x87FFFF\r
- .long m_read8_rom11 @ 0x880000 - 0x8FFFFF\r
- .long m_read8_rom12 @ 0x900000 - 0x97FFFF\r
- .long m_read8_rom13 @ 0x980000 - 0x9FFFFF\r
- .long m_read8_misc @ 0xA00000 - 0xA7FFFF\r
- .long m_read_null @ 0xA80000 - 0xAFFFFF\r
- .long m_read_null @ 0xB00000 - 0xB7FFFF\r
- .long m_read_null @ 0xB80000 - 0xBFFFFF\r
- .long m_read8_vdp @ 0xC00000 - 0xC7FFFF\r
- .long m_read8_vdp @ 0xC80000 - 0xCFFFFF\r
- .long m_read8_vdp @ 0xD00000 - 0xD7FFFF\r
- .long m_read8_vdp @ 0xD80000 - 0xDFFFFF\r
- .long m_read8_ram @ 0xE00000 - 0xE7FFFF\r
- .long m_read8_ram @ 0xE80000 - 0xEFFFFF\r
- .long m_read8_ram @ 0xF00000 - 0xF7FFFF\r
- .long m_read8_ram @ 0xF80000 - 0xFFFFFF\r
-\r
-m_read16_def_table:\r
- .long m_read16_rom0 @ 0x000000 - 0x07FFFF\r
- .long m_read16_rom1 @ 0x080000 - 0x0FFFFF\r
- .long m_read16_rom2 @ 0x100000 - 0x17FFFF\r
- .long m_read16_rom3 @ 0x180000 - 0x1FFFFF\r
- .long m_read16_rom4 @ 0x200000 - 0x27FFFF\r
- .long m_read16_rom5 @ 0x280000 - 0x2FFFFF\r
- .long m_read16_rom6 @ 0x300000 - 0x37FFFF\r
- .long m_read16_rom7 @ 0x380000 - 0x3FFFFF\r
- .long m_read16_rom8 @ 0x400000 - 0x47FFFF\r
- .long m_read16_rom9 @ 0x480000 - 0x4FFFFF\r
- .long m_read16_romA @ 0x500000 - 0x57FFFF\r
- .long m_read16_romB @ 0x580000 - 0x5FFFFF\r
- .long m_read16_romC @ 0x600000 - 0x67FFFF\r
- .long m_read16_romD @ 0x680000 - 0x6FFFFF\r
- .long m_read16_romE @ 0x700000 - 0x77FFFF\r
- .long m_read16_romF @ 0x780000 - 0x7FFFFF\r
- .long m_read16_rom10 @ 0x800000 - 0x87FFFF\r
- .long m_read16_rom11 @ 0x880000 - 0x8FFFFF\r
- .long m_read16_rom12 @ 0x900000 - 0x97FFFF\r
- .long m_read16_rom13 @ 0x980000 - 0x9FFFFF\r
- .long m_read16_misc @ 0xA00000 - 0xA7FFFF\r
- .long m_read_null @ 0xA80000 - 0xAFFFFF\r
- .long m_read_null @ 0xB00000 - 0xB7FFFF\r
- .long m_read_null @ 0xB80000 - 0xBFFFFF\r
- .long m_read16_vdp @ 0xC00000 - 0xC7FFFF\r
- .long m_read16_vdp @ 0xC80000 - 0xCFFFFF\r
- .long m_read16_vdp @ 0xD00000 - 0xD7FFFF\r
- .long m_read16_vdp @ 0xD80000 - 0xDFFFFF\r
- .long m_read16_ram @ 0xE00000 - 0xE7FFFF\r
- .long m_read16_ram @ 0xE80000 - 0xEFFFFF\r
- .long m_read16_ram @ 0xF00000 - 0xF7FFFF\r
- .long m_read16_ram @ 0xF80000 - 0xFFFFFF\r
-\r
-m_read32_def_table:\r
- .long m_read32_rom0 @ 0x000000 - 0x07FFFF\r
- .long m_read32_rom1 @ 0x080000 - 0x0FFFFF\r
- .long m_read32_rom2 @ 0x100000 - 0x17FFFF\r
- .long m_read32_rom3 @ 0x180000 - 0x1FFFFF\r
- .long m_read32_rom4 @ 0x200000 - 0x27FFFF\r
- .long m_read32_rom5 @ 0x280000 - 0x2FFFFF\r
- .long m_read32_rom6 @ 0x300000 - 0x37FFFF\r
- .long m_read32_rom7 @ 0x380000 - 0x3FFFFF\r
- .long m_read32_rom8 @ 0x400000 - 0x47FFFF\r
- .long m_read32_rom9 @ 0x480000 - 0x4FFFFF\r
- .long m_read32_romA @ 0x500000 - 0x57FFFF\r
- .long m_read32_romB @ 0x580000 - 0x5FFFFF\r
- .long m_read32_romC @ 0x600000 - 0x67FFFF\r
- .long m_read32_romD @ 0x680000 - 0x6FFFFF\r
- .long m_read32_romE @ 0x700000 - 0x77FFFF\r
- .long m_read32_romF @ 0x780000 - 0x7FFFFF\r
- .long m_read32_rom10 @ 0x800000 - 0x87FFFF\r
- .long m_read32_rom11 @ 0x880000 - 0x8FFFFF\r
- .long m_read32_rom12 @ 0x900000 - 0x97FFFF\r
- .long m_read32_rom13 @ 0x980000 - 0x9FFFFF\r
- .long m_read32_misc @ 0xA00000 - 0xA7FFFF\r
- .long m_read_null @ 0xA80000 - 0xAFFFFF\r
- .long m_read_null @ 0xB00000 - 0xB7FFFF\r
- .long m_read_null @ 0xB80000 - 0xBFFFFF\r
- .long m_read32_vdp @ 0xC00000 - 0xC7FFFF\r
- .long m_read32_vdp @ 0xC80000 - 0xCFFFFF\r
- .long m_read32_vdp @ 0xD00000 - 0xD7FFFF\r
- .long m_read32_vdp @ 0xD80000 - 0xDFFFFF\r
- .long m_read32_ram @ 0xE00000 - 0xE7FFFF\r
- .long m_read32_ram @ 0xE80000 - 0xEFFFFF\r
- .long m_read32_ram @ 0xF00000 - 0xF7FFFF\r
- .long m_read32_ram @ 0xF80000 - 0xFFFFFF\r
-\r
-\r
-@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r
-\r
-.bss\r
-.align 4\r
-@.section .bss, "brw"\r
-@.data\r
-\r
-@ used tables\r
-m_read8_table:\r
- .skip 32*4\r
-\r
-m_read16_table:\r
- .skip 32*4\r
-\r
-m_read32_table:\r
- .skip 32*4\r
-\r
-\r
-@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r
-\r
-.text\r
-.align 4\r
-\r
-.global PicoMemReset\r
-.global PicoRead8\r
-.global PicoRead16\r
-.global PicoRead32\r
-.global PicoWrite8\r
-.global PicoWriteRomHW_SSF2\r
-.global m_m68k_read8_misc\r
-.global m_m68k_write8_misc\r
-\r
-\r
-PicoMemReset:\r
- ldr r12,=(Pico+0x22204)\r
- ldr r12,[r12] @ romsize\r
- add r12,r12,#0x80000\r
- sub r12,r12,#1\r
- mov r12,r12,lsr #19\r
-\r
- ldr r0, =m_read8_table\r
- ldr r1, =m_read8_def_table\r
- mov r2, #32\r
-1:\r
- ldr r3, [r1], #4\r
- str r3, [r0], #4\r
- subs r2, r2, #1\r
- bne 1b\r
-\r
- ldr r0, =m_read16_table\r
- ldr r1, =m_read16_def_table\r
- mov r2, #32\r
-1:\r
- subs r2, r2, #1\r
- ldr r3, [r1], #4\r
- str r3, [r0], #4\r
- bne 1b\r
-\r
- ldr r0, =m_read32_table\r
- ldr r1, =m_read32_def_table\r
- mov r2, #32\r
-1:\r
- subs r2, r2, #1\r
- ldr r3, [r1], #4\r
- str r3, [r0], #4\r
- bne 1b\r
-\r
- @ update memhandlers according to ROM size\r
- ldr r1, =m_read8_above_rom\r
- ldr r0, =m_read8_table\r
- mov r2, #20\r
-1:\r
- sub r2, r2, #1\r
- cmp r2, r12\r
- blt 2f\r
- cmp r2, #4\r
- beq 1b @ do not touch the SRAM area\r
- str r1, [r0, r2, lsl #2]\r
- b 1b\r
-2:\r
- ldr r1, =m_read16_above_rom\r
- ldr r0, =m_read16_table\r
- mov r2, #20\r
-1:\r
- sub r2, r2, #1\r
- cmp r2, r12\r
- blt 2f\r
- cmp r2, #4\r
- beq 1b\r
- str r1, [r0, r2, lsl #2]\r
- b 1b\r
-2:\r
- ldr r1, =m_read32_above_rom\r
- ldr r0, =m_read32_table\r
- mov r2, #20\r
-1:\r
- sub r2, r2, #1\r
- cmp r2, r12\r
- blt 2f\r
- cmp r2, #4\r
- beq 1b\r
- str r1, [r0, r2, lsl #2]\r
- b 1b\r
-2:\r
- bx lr\r
-\r
-.pool\r
-\r
-@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r
-\r
-PicoRead8: @ u32 a\r
- ldr r2, =m_read8_table\r
- bic r0, r0, #0xff000000\r
- and r1, r0, #0x00f80000\r
- ldr pc, [r2, r1, lsr #17]\r
-\r
-PicoRead16: @ u32 a\r
- ldr r2, =m_read16_table\r
- bic r0, r0, #0xff000000\r
- and r1, r0, #0x00f80000\r
- ldr pc, [r2, r1, lsr #17]\r