+static void m68k_mem_setup_cd(void);\r
+#endif\r
+\r
+PICO_INTERNAL void PicoMemSetupCD(void)\r
+{\r
+ // additional handlers for common code\r
+ PicoRead16Hook = OtherRead16End;\r
+ PicoWrite8Hook = OtherWrite8End;\r
+\r
+#ifdef EMU_C68K\r
+ // Setup m68k memory callbacks:\r
+ PicoCpuCM68k.checkpc=PicoCheckPcM68k;\r
+ PicoCpuCM68k.fetch8 =PicoCpuCM68k.read8 =PicoReadM68k8;\r
+ PicoCpuCM68k.fetch16=PicoCpuCM68k.read16=PicoReadM68k16;\r
+ PicoCpuCM68k.fetch32=PicoCpuCM68k.read32=PicoReadM68k32;\r
+ PicoCpuCM68k.write8 =PicoWriteM68k8;\r
+ PicoCpuCM68k.write16=PicoWriteM68k16;\r
+ PicoCpuCM68k.write32=PicoWriteM68k32;\r
+ // s68k\r
+ PicoCpuCS68k.checkpc=PicoCheckPcS68k;\r
+ PicoCpuCS68k.fetch8 =PicoCpuCS68k.read8 =PicoReadS68k8;\r
+ PicoCpuCS68k.fetch16=PicoCpuCS68k.read16=PicoReadS68k16;\r
+ PicoCpuCS68k.fetch32=PicoCpuCS68k.read32=PicoReadS68k32;\r
+ PicoCpuCS68k.write8 =PicoWriteS68k8;\r
+ PicoCpuCS68k.write16=PicoWriteS68k16;\r
+ PicoCpuCS68k.write32=PicoWriteS68k32;\r
+#endif\r
+#ifdef EMU_F68K\r
+ // m68k\r
+ PicoCpuFM68k.read_byte =PicoReadM68k8;\r
+ PicoCpuFM68k.read_word =PicoReadM68k16;\r
+ PicoCpuFM68k.read_long =PicoReadM68k32;\r
+ PicoCpuFM68k.write_byte=PicoWriteM68k8;\r
+ PicoCpuFM68k.write_word=PicoWriteM68k16;\r
+ PicoCpuFM68k.write_long=PicoWriteM68k32;\r
+ // s68k\r
+ PicoCpuFS68k.read_byte =PicoReadS68k8;\r
+ PicoCpuFS68k.read_word =PicoReadS68k16;\r
+ PicoCpuFS68k.read_long =PicoReadS68k32;\r
+ PicoCpuFS68k.write_byte=PicoWriteS68k8;\r
+ PicoCpuFS68k.write_word=PicoWriteS68k16;\r
+ PicoCpuFS68k.write_long=PicoWriteS68k32;\r
+\r
+ // setup FAME fetchmap\r
+ {\r
+ int i;\r
+ // M68k\r
+ // by default, point everything to fitst 64k of ROM (BIOS)\r
+ for (i = 0; i < M68K_FETCHBANK1; i++)\r
+ PicoCpuFM68k.Fetch[i] = (unsigned int)Pico.rom - (i<<(24-FAMEC_FETCHBITS));\r
+ // now real ROM (BIOS)\r
+ for (i = 0; i < M68K_FETCHBANK1 && (i<<(24-FAMEC_FETCHBITS)) < Pico.romsize; i++)\r
+ PicoCpuFM68k.Fetch[i] = (unsigned int)Pico.rom;\r
+ // .. and RAM\r
+ for (i = M68K_FETCHBANK1*14/16; i < M68K_FETCHBANK1; i++)\r
+ PicoCpuFM68k.Fetch[i] = (unsigned int)Pico.ram - (i<<(24-FAMEC_FETCHBITS));\r
+ // S68k\r
+ // PRG RAM is default\r
+ for (i = 0; i < M68K_FETCHBANK1; i++)\r
+ PicoCpuFS68k.Fetch[i] = (unsigned int)Pico_mcd->prg_ram - (i<<(24-FAMEC_FETCHBITS));\r
+ // real PRG RAM\r
+ for (i = 0; i < M68K_FETCHBANK1 && (i<<(24-FAMEC_FETCHBITS)) < 0x80000; i++)\r
+ PicoCpuFS68k.Fetch[i] = (unsigned int)Pico_mcd->prg_ram;\r
+ // WORD RAM 2M area\r
+ for (i = M68K_FETCHBANK1*0x08/0x100; i < M68K_FETCHBANK1 && (i<<(24-FAMEC_FETCHBITS)) < 0xc0000; i++)\r
+ PicoCpuFS68k.Fetch[i] = (unsigned int)Pico_mcd->word_ram2M - 0x80000;\r
+ // PicoMemResetCD() will setup word ram for both\r
+ }\r
+#endif\r
+#ifdef EMU_M68K\r
+ m68k_mem_setup_cd();\r
+#endif\r
+\r
+ // m68k_poll_addr = m68k_poll_cnt = 0;\r
+ s68k_poll_adclk = s68k_poll_cnt = 0;\r