trunk/src/mess/machine/ti99/gromport.c
| r21306 | r21307 | |
| 963 | 963 | m_ram_ptr = memregion(GKRACKER_NVRAM_TAG)->base(); |
| 964 | 964 | m_grom_ptr = memregion(GKRACKER_ROM_TAG)->base(); |
| 965 | 965 | m_cartridge = NULL; |
| 966 | | m_grom_address = 0; // for the GROM emulation |
| 967 | 966 | for (int i=1; i < 6; i++) m_gk_switch[i] = 0; |
| 968 | 967 | m_gromport = static_cast<gromport_device*>(owner()); |
| 969 | 968 | } |
| r21306 | r21307 | |
| 975 | 974 | m_gk_switch[3] = ioport(GKSWITCH3_TAG)->read(); |
| 976 | 975 | m_gk_switch[4] = ioport(GKSWITCH4_TAG)->read(); |
| 977 | 976 | m_gk_switch[5] = ioport(GKSWITCH5_TAG)->read(); |
| 977 | m_grom_address = 0; // for the GROM emulation |
| 978 | m_ram_page = 0; |
| 979 | m_waddr_LSB = false; |
| 978 | 980 | } |
| 979 | 981 | |
| 980 | 982 | static MACHINE_CONFIG_FRAGMENT( gkracker_slot ) |
| r21306 | r21307 | |
| 1097 | 1099 | memory_region *regr; |
| 1098 | 1100 | memory_region *regr2; |
| 1099 | 1101 | |
| 1102 | // Initialize some values. |
| 1103 | m_pcb->m_rom_page = 0; |
| 1104 | m_pcb->m_rom_ptr = NULL; |
| 1105 | m_pcb->m_rom2_ptr = NULL; |
| 1106 | m_pcb->m_ram_size = 0; |
| 1107 | m_pcb->m_ram_ptr = NULL; |
| 1108 | m_pcb->m_ram_page = 0; |
| 1109 | |
| 1110 | for (int i=0; i < 5; i++) m_pcb->m_grom[i] = NULL; |
| 1111 | |
| 1100 | 1112 | m_pcb->m_grom_size = m_softlist? get_software_region_length("grom_socket") : m_rpk->get_resource_length("grom_socket"); |
| 1101 | 1113 | if (VERBOSE>6) LOG("gromport: grom_socket.size=0x%04x\n", m_pcb->m_grom_size); |
| 1102 | 1114 | |
| r21306 | r21307 | |
| 1106 | 1118 | grom_ptr = m_softlist? get_software_region("grom_socket") : (UINT8*)m_rpk->get_contents_of_socket("grom_socket"); |
| 1107 | 1119 | memcpy(regg->base(), grom_ptr, m_pcb->m_grom_size); |
| 1108 | 1120 | m_pcb->m_grom_ptr = regg->base(); // for gromemu |
| 1121 | m_pcb->m_grom_address = 0; // for gromemu |
| 1109 | 1122 | |
| 1110 | 1123 | // Find the GROMs and keep their pointers |
| 1111 | 1124 | m_pcb->set_grom_pointer(0, subdevice(GROM3_TAG)); |
| r21306 | r21307 | |
| 1122 | 1135 | regr = memregion(CARTROM_TAG); |
| 1123 | 1136 | m_pcb->m_rom_ptr = m_softlist? get_software_region("rom_socket") : (UINT8*)m_rpk->get_contents_of_socket("rom_socket"); |
| 1124 | 1137 | memcpy(regr->base(), m_pcb->m_rom_ptr, m_pcb->m_rom_size); |
| 1138 | // Set both pointers to the same region for now |
| 1139 | m_pcb->m_rom_ptr = m_pcb->m_rom2_ptr = regr->base(); |
| 1125 | 1140 | } |
| 1126 | 1141 | |
| 1127 | 1142 | rom2_length = m_softlist? get_software_region_length("rom2_socket") : m_rpk->get_resource_length("rom2_socket"); |
| r21306 | r21307 | |
| 1131 | 1146 | regr2 = memregion(CARTROM2_TAG); |
| 1132 | 1147 | m_pcb->m_rom2_ptr = m_softlist? get_software_region("rom2_socket") : (UINT8*)m_rpk->get_contents_of_socket("rom2_socket"); |
| 1133 | 1148 | memcpy(regr2->base(), m_pcb->m_rom2_ptr, rom2_length); |
| 1149 | m_pcb->m_rom2_ptr = regr2->base(); |
| 1134 | 1150 | } |
| 1135 | 1151 | |
| 1136 | 1152 | // NVRAM cartridges are not supported by softlists (we need to find a way to load the nvram contents first) |
trunk/src/mess/machine/ti99/gromport.h
| r21306 | r21307 | |
| 191 | 191 | int m_active_slot; |
| 192 | 192 | int m_fixed_slot; |
| 193 | 193 | int m_next_free_slot; |
| 194 | | int m_numcart; |
| 195 | 194 | ti99_cartridge_device* m_cartridge[NUMBER_OF_CARTRIDGE_SLOTS]; |
| 196 | 195 | |
| 197 | 196 | void set_slot(int slotnumber); |
| r21306 | r21307 | |
| 276 | 275 | UINT8* m_rom_ptr; |
| 277 | 276 | UINT8* m_rom2_ptr; |
| 278 | 277 | UINT8* m_ram_ptr; |
| 279 | | UINT8* m_grom_ptr; // for gromemu |
| 280 | | |
| 278 | int m_rom_page; // for some cartridge types |
| 279 | UINT8* m_grom_ptr; // for gromemu |
| 280 | int m_grom_address; // for gromemu |
| 281 | int m_ram_page; // for super |
| 281 | 282 | private: |
| 282 | 283 | }; |
| 283 | 284 | |
| r21306 | r21307 | |
| 297 | 298 | ~ti99_paged_cartridge() { }; |
| 298 | 299 | DECLARE_READ8Z_MEMBER(readz); |
| 299 | 300 | DECLARE_WRITE8_MEMBER(write); |
| 300 | | |
| 301 | | private: |
| 302 | | int m_rom_page; |
| 303 | 301 | }; |
| 304 | 302 | |
| 305 | 303 | /********************** Mini Memory ***********************************/ |
| r21306 | r21307 | |
| 322 | 320 | DECLARE_WRITE8_MEMBER(write); |
| 323 | 321 | void crureadz(offs_t offset, UINT8 *value); |
| 324 | 322 | void cruwrite(offs_t offset, UINT8 data); |
| 325 | | |
| 326 | | private: |
| 327 | | int m_ram_page; |
| 328 | 323 | }; |
| 329 | 324 | |
| 330 | 325 | /************************* MBX ***************************************/ |
| r21306 | r21307 | |
| 335 | 330 | ~ti99_mbx_cartridge() { }; |
| 336 | 331 | DECLARE_READ8Z_MEMBER(readz); |
| 337 | 332 | DECLARE_WRITE8_MEMBER(write); |
| 338 | | private: |
| 339 | | int m_rom_page; |
| 340 | 333 | }; |
| 341 | 334 | |
| 342 | 335 | /********************** Paged 379i ************************************/ |
| r21306 | r21307 | |
| 349 | 342 | DECLARE_WRITE8_MEMBER(write); |
| 350 | 343 | private: |
| 351 | 344 | int get_paged379i_bank(int rompage); |
| 352 | | int m_rom_page; |
| 353 | 345 | }; |
| 354 | 346 | |
| 355 | 347 | /********************** Paged CRU ************************************/ |
| r21306 | r21307 | |
| 362 | 354 | DECLARE_WRITE8_MEMBER(write); |
| 363 | 355 | void crureadz(offs_t offset, UINT8 *value); |
| 364 | 356 | void cruwrite(offs_t offset, UINT8 data); |
| 365 | | private: |
| 366 | | int m_rom_page; |
| 367 | 357 | }; |
| 368 | 358 | |
| 369 | 359 | /********************** GROM emulation cartridge ************************************/ |
| r21306 | r21307 | |
| 371 | 361 | class ti99_gromemu_cartridge : public ti99_cartridge_pcb |
| 372 | 362 | { |
| 373 | 363 | public: |
| 364 | ti99_gromemu_cartridge() { m_grom_address = 0; } |
| 374 | 365 | ~ti99_gromemu_cartridge() { }; |
| 375 | 366 | DECLARE_READ8Z_MEMBER(readz); |
| 376 | 367 | DECLARE_WRITE8_MEMBER(write); |
| 377 | 368 | DECLARE_READ8Z_MEMBER(gromemureadz); |
| 378 | 369 | DECLARE_WRITE8_MEMBER(gromemuwrite); |
| 379 | 370 | private: |
| 380 | | int m_rom_page; |
| 381 | | int m_grom_address; |
| 382 | 371 | bool m_waddr_LSB; |
| 383 | 372 | }; |
| 384 | 373 | |