trunk/hash/a800.xml
| r31908 | r31909 | |
| 3528 | 3528 | </software> |
| 3529 | 3529 | |
| 3530 | 3530 | <software name="microcal" supported="no"> |
| 3531 | | <description>Microcalc XE v2.2 (Mexico)</description> |
| 3531 | <description>Microcalc XE v2.2 (Mex)</description> |
| 3532 | 3532 | <year>19??</year> |
| 3533 | 3533 | <publisher>Grupo SITSA</publisher> |
| 3534 | 3534 | <part name="cart" interface="a8bit_cart"> |
| r31908 | r31909 | |
| 5197 | 5197 | <publisher>COVIDEA</publisher> |
| 5198 | 5198 | <info name="usage" value="Modem required (and a working Chemical Bank service, obviously inactive for decades)" /> |
| 5199 | 5199 | <part name="cart" interface="a8bit_cart"> |
| 5200 | | <feature name="slot" value="N/A" /> |
| 5200 | <feature name="slot" value="a800_16k" /> |
| 5201 | 5201 | <dataarea name="rom" size="16384"> |
| 5202 | 5202 | <rom name="target electronic banking.rom" size="16384" crc="60c2a5ae" sha1="3c4976c118a9aefba8f8895e9b8c818dbc641371" offset="0" /> |
| 5203 | 5203 | </dataarea> |
| r31908 | r31909 | |
| 5225 | 5225 | <info name="serial" value="CXL4016" /> |
| 5226 | 5226 | <sharedfeat name="compatibility" value="OSb"/> |
| 5227 | 5227 | <part name="cart" interface="a8bit_cart"> |
| 5228 | | <feature name="slot" value="N/A" /> |
| 5228 | <feature name="slot" value="a800_tlink2" /> |
| 5229 | 5229 | <dataarea name="rom" size="8192"> |
| 5230 | 5230 | <rom name="telelink 2.rom" size="8192" crc="f0163f90" sha1="15d1dc9591b7306453087c94746ba1622e46d0ad" offset="0" /> <!-- Verified --> |
| 5231 | 5231 | </dataarea> |
trunk/src/mess/drivers/atari400.c
| r31908 | r31909 | |
| 269 | 269 | DECLARE_READ8_MEMBER(atari_pia_pa_r); |
| 270 | 270 | DECLARE_READ8_MEMBER(atari_pia_pb_r); |
| 271 | 271 | |
| 272 | DECLARE_READ8_MEMBER(read_d5xx); // at least one cart type can enable/disable roms when reading |
| 272 | 273 | DECLARE_WRITE8_MEMBER(disable_cart); |
| 273 | 274 | |
| 274 | 275 | DECLARE_READ8_MEMBER(a600xl_low_r); |
| r31908 | r31909 | |
| 1727 | 1728 | } |
| 1728 | 1729 | } |
| 1729 | 1730 | |
| 1731 | READ8_MEMBER(a400_state::read_d5xx) |
| 1732 | { |
| 1733 | disable_cart(space, offset, 0); |
| 1734 | return 0xff; |
| 1735 | } |
| 1736 | |
| 1730 | 1737 | WRITE8_MEMBER(a400_state::disable_cart) |
| 1731 | 1738 | { |
| 1732 | 1739 | switch (m_cartslot->get_cart_type()) |
| 1733 | 1740 | { |
| 1734 | 1741 | case A800_PHOENIX: |
| 1742 | case A800_BLIZZARD: |
| 1735 | 1743 | if (!m_cart_disabled) |
| 1736 | 1744 | { |
| 1737 | 1745 | m_cart_disabled = 1; |
| r31908 | r31909 | |
| 1767 | 1775 | } |
| 1768 | 1776 | } |
| 1769 | 1777 | break; |
| 1778 | case A800_TURBO64: |
| 1779 | case A800_TURBO128: |
| 1780 | if (offset & 0x10 && !m_cart_disabled) |
| 1781 | { |
| 1782 | m_cart_disabled = 1; |
| 1783 | setup_ram(2, m_ram->size()); |
| 1784 | } |
| 1785 | else if (!(offset & 0x10)) |
| 1786 | { |
| 1787 | if (m_cart_disabled) |
| 1788 | { |
| 1789 | m_cart_disabled = 0; |
| 1790 | m_maincpu->space(AS_PROGRAM).install_read_handler(0xa000, 0xbfff, read8_delegate(FUNC(a800_cart_slot_device::read_80xx),(a800_cart_slot_device*)m_cartslot)); |
| 1791 | m_maincpu->space(AS_PROGRAM).unmap_write(0xa000, 0xbfff); |
| 1792 | } |
| 1793 | |
| 1794 | if ((offset & 0x0f) != m_last_offs) |
| 1795 | { |
| 1796 | // we enter here only if we are writing to a different offset than last time |
| 1797 | m_last_offs = offset & 0x0f; |
| 1798 | m_cartslot->write_d5xx(space, offset & 0x0f, data); |
| 1799 | } |
| 1800 | } |
| 1801 | break; |
| 1770 | 1802 | case A800_SPARTADOS: |
| 1771 | 1803 | // writes with offset & 8 are also used to enable/disable the subcart, so they go through! |
| 1772 | 1804 | m_cartslot->write_d5xx(space, offset, data); |
| 1773 | 1805 | break; |
| 1774 | 1806 | case A800_OSSM091: |
| 1807 | case A800_OSS8K: |
| 1775 | 1808 | if ((offset & 0x9) == 0x08) |
| 1776 | 1809 | setup_ram(2, m_ram->size()); |
| 1777 | 1810 | else |
| r31908 | r31909 | |
| 1781 | 1814 | m_cartslot->write_d5xx(space, offset, data); |
| 1782 | 1815 | } |
| 1783 | 1816 | break; |
| 1817 | case A800_MICROCALC: |
| 1818 | m_cart_disabled = (m_cart_disabled + 1) % 5; |
| 1819 | if (m_cart_disabled == 4) |
| 1820 | setup_ram(2, m_ram->size()); |
| 1821 | else |
| 1822 | { |
| 1823 | m_maincpu->space(AS_PROGRAM).install_read_handler(0xa000, 0xbfff, read8_delegate(FUNC(a800_cart_slot_device::read_80xx),(a800_cart_slot_device*)m_cartslot)); |
| 1824 | m_maincpu->space(AS_PROGRAM).unmap_write(0xa000, 0xbfff); |
| 1825 | m_cartslot->write_d5xx(space, offset, m_cart_disabled); |
| 1826 | } |
| 1827 | break; |
| 1784 | 1828 | default: |
| 1785 | 1829 | break; |
| 1786 | 1830 | } |
| r31908 | r31909 | |
| 1818 | 1862 | case A800_OSS034M: |
| 1819 | 1863 | case A800_OSS043M: |
| 1820 | 1864 | case A800_OSSM091: |
| 1865 | case A800_OSS8K: |
| 1866 | case A800_TURBO64: |
| 1867 | case A800_TURBO128: |
| 1821 | 1868 | m_maincpu->space(AS_PROGRAM).install_read_handler(0xa000, 0xbfff, read8_delegate(FUNC(a800_cart_slot_device::read_80xx),(a800_cart_slot_device*)m_cartslot)); |
| 1822 | 1869 | m_maincpu->space(AS_PROGRAM).unmap_write(0xa000, 0xbfff); |
| 1823 | 1870 | m_maincpu->space(AS_PROGRAM).install_write_handler(0xd500, 0xd5ff, write8_delegate(FUNC(a400_state::disable_cart), this)); |
| 1824 | 1871 | break; |
| 1872 | case A800_MICROCALC: |
| 1873 | // this can also disable ROM when reading in 0xd500-0xd5ff |
| 1874 | m_maincpu->space(AS_PROGRAM).install_read_handler(0xa000, 0xbfff, read8_delegate(FUNC(a800_cart_slot_device::read_80xx),(a800_cart_slot_device*)m_cartslot)); |
| 1875 | m_maincpu->space(AS_PROGRAM).unmap_write(0xa000, 0xbfff); |
| 1876 | m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xd500, 0xd5ff, read8_delegate(FUNC(a400_state::read_d5xx), this), write8_delegate(FUNC(a400_state::disable_cart), this)); |
| 1877 | break; |
| 1825 | 1878 | case A800_EXPRESS: |
| 1826 | 1879 | m_maincpu->space(AS_PROGRAM).install_read_handler(0xa000, 0xbfff, read8_delegate(FUNC(a800_cart_slot_device::read_80xx),(a800_cart_slot_device*)m_cartslot)); |
| 1827 | 1880 | m_maincpu->space(AS_PROGRAM).unmap_write(0xa000, 0xbfff); |
| r31908 | r31909 | |
| 1842 | 1895 | m_maincpu->space(AS_PROGRAM).unmap_write(0xa000, 0xbfff); |
| 1843 | 1896 | m_maincpu->space(AS_PROGRAM).install_write_handler(0xd5e0, 0xd5ef, write8_delegate(FUNC(a400_state::disable_cart), this)); |
| 1844 | 1897 | break; |
| 1898 | case A800_TELELINK2: |
| 1899 | m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xbfff, read8_delegate(FUNC(a800_cart_slot_device::read_80xx),(a800_cart_slot_device*)m_cartslot)); |
| 1900 | m_maincpu->space(AS_PROGRAM).install_write_handler(0x9000, 0x90ff, write8_delegate(FUNC(a800_cart_slot_device::write_80xx),(a800_cart_slot_device*)m_cartslot)); |
| 1901 | m_maincpu->space(AS_PROGRAM).unmap_write(0xa000, 0xbfff); |
| 1902 | m_maincpu->space(AS_PROGRAM).install_read_handler(0xd501, 0xd501, read8_delegate(FUNC(a800_cart_slot_device::read_d5xx),(a800_cart_slot_device*)m_cartslot)); |
| 1903 | m_maincpu->space(AS_PROGRAM).install_write_handler(0xd502, 0xd502, write8_delegate(FUNC(a800_cart_slot_device::write_d5xx),(a800_cart_slot_device*)m_cartslot)); |
| 1904 | break; |
| 1905 | case A800_BLIZZARD: |
| 1906 | m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xbfff, read8_delegate(FUNC(a800_cart_slot_device::read_80xx),(a800_cart_slot_device*)m_cartslot)); |
| 1907 | m_maincpu->space(AS_PROGRAM).unmap_write(0x8000, 0xbfff); |
| 1908 | m_maincpu->space(AS_PROGRAM).install_write_handler(0xd500, 0xd5ff, write8_delegate(FUNC(a400_state::disable_cart), this)); |
| 1909 | break; |
| 1845 | 1910 | case A800_XEGS: |
| 1846 | 1911 | m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xbfff, read8_delegate(FUNC(a800_cart_slot_device::read_80xx),(a800_cart_slot_device*)m_cartslot)); |
| 1847 | 1912 | m_maincpu->space(AS_PROGRAM).unmap_write(0x8000, 0xbfff); |
trunk/src/emu/bus/a800/rom.c
| r31908 | r31909 | |
| 20 | 20 | const device_type A800_ROM_BBSB = &device_creator<a800_rom_bbsb_device>; |
| 21 | 21 | const device_type A800_ROM_WILLIAMS = &device_creator<a800_rom_williams_device>; |
| 22 | 22 | const device_type A800_ROM_EXPRESS = &device_creator<a800_rom_express_device>; |
| 23 | const device_type A800_ROM_TURBO = &device_creator<a800_rom_turbo_device>; |
| 24 | const device_type A800_ROM_TELELINK2 = &device_creator<a800_rom_telelink2_device>; |
| 25 | const device_type A800_ROM_MICROCALC = &device_creator<a800_rom_microcalc_device>; |
| 23 | 26 | const device_type XEGS_ROM = &device_creator<xegs_rom_device>; |
| 24 | 27 | const device_type A5200_ROM_2CHIPS = &device_creator<a5200_rom_2chips_device>; |
| 25 | 28 | const device_type A5200_ROM_BBSB = &device_creator<a5200_rom_bbsb_device>; |
| r31908 | r31909 | |
| 63 | 66 | } |
| 64 | 67 | |
| 65 | 68 | |
| 69 | a800_rom_turbo_device::a800_rom_turbo_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 70 | : a800_rom_device(mconfig, A800_ROM_TURBO, "Atari 800 64K ROM Carts Turbosoft", tag, owner, clock, "a800_turbo", __FILE__) |
| 71 | { |
| 72 | } |
| 73 | |
| 74 | |
| 75 | a800_rom_telelink2_device::a800_rom_telelink2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 76 | : a800_rom_device(mconfig, A800_ROM_TELELINK2, "Atari 800 64K ROM Cart Telelink II", tag, owner, clock, "a800_tlink2", __FILE__) |
| 77 | { |
| 78 | } |
| 79 | |
| 80 | |
| 81 | a800_rom_microcalc_device::a800_rom_microcalc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 82 | : a800_rom_device(mconfig, A800_ROM_MICROCALC, "Atari 800 64K ROM Cart SITSA MicroCalc", tag, owner, clock, "a800_sitsa", __FILE__) |
| 83 | { |
| 84 | } |
| 85 | |
| 86 | |
| 66 | 87 | a5200_rom_2chips_device::a5200_rom_2chips_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 67 | 88 | : a800_rom_device(mconfig, A5200_ROM_2CHIPS, "Atari 5200 ROM Cart 16K in 2 Chips", tag, owner, clock, "a5200_16k2c", __FILE__) |
| 68 | 89 | { |
| r31908 | r31909 | |
| 131 | 152 | } |
| 132 | 153 | |
| 133 | 154 | |
| 155 | void a800_rom_turbo_device::device_start() |
| 156 | { |
| 157 | save_item(NAME(m_bank)); |
| 158 | } |
| 159 | |
| 160 | void a800_rom_turbo_device::device_reset() |
| 161 | { |
| 162 | m_bank = 0; |
| 163 | } |
| 164 | |
| 165 | |
| 166 | void a800_rom_microcalc_device::device_start() |
| 167 | { |
| 168 | save_item(NAME(m_bank)); |
| 169 | } |
| 170 | |
| 171 | void a800_rom_microcalc_device::device_reset() |
| 172 | { |
| 173 | m_bank = 0; |
| 174 | } |
| 175 | |
| 176 | |
| 134 | 177 | void a5200_rom_bbsb_device::device_start() |
| 135 | 178 | { |
| 136 | 179 | save_item(NAME(m_banks)); |
| r31908 | r31909 | |
| 265 | 308 | } |
| 266 | 309 | |
| 267 | 310 | |
| 311 | /*------------------------------------------------- |
| 312 | |
| 313 | Turbosoft 64K / 128K |
| 314 | |
| 315 | |
| 316 | -------------------------------------------------*/ |
| 317 | |
| 318 | READ8_MEMBER(a800_rom_turbo_device::read_80xx) |
| 319 | { |
| 320 | return m_rom[(offset & 0x1fff) + (m_bank * 0x2000)]; |
| 321 | } |
| 322 | |
| 323 | WRITE8_MEMBER(a800_rom_turbo_device::write_d5xx) |
| 324 | { |
| 325 | m_bank = offset & m_bank_mask; |
| 326 | } |
| 327 | |
| 328 | |
| 329 | /*------------------------------------------------- |
| 330 | |
| 331 | Telelink II |
| 332 | |
| 333 | |
| 334 | -------------------------------------------------*/ |
| 335 | |
| 336 | READ8_MEMBER(a800_rom_telelink2_device::read_80xx) |
| 337 | { |
| 338 | if (offset >= 0x2000) |
| 339 | return m_rom[offset & 0x1fff]; |
| 340 | if (offset >= 0x1000 && offset < 0x1100) |
| 341 | return m_nvram[offset & 0xff]; |
| 342 | |
| 343 | return 0xff; |
| 344 | } |
| 345 | |
| 346 | WRITE8_MEMBER(a800_rom_telelink2_device::write_80xx) |
| 347 | { |
| 348 | m_nvram[offset & 0xff] = data | 0xf0; // low 4bits only |
| 349 | } |
| 350 | |
| 351 | READ8_MEMBER(a800_rom_telelink2_device::read_d5xx) |
| 352 | { |
| 353 | // this should affect NVRAM enable / save |
| 354 | return 0xff; |
| 355 | } |
| 356 | |
| 357 | WRITE8_MEMBER(a800_rom_telelink2_device::write_d5xx) |
| 358 | { |
| 359 | // this should affect NVRAM enable / save |
| 360 | } |
| 361 | |
| 362 | |
| 363 | |
| 364 | /*------------------------------------------------- |
| 365 | |
| 366 | SITSA Microcalc |
| 367 | |
| 368 | |
| 369 | -------------------------------------------------*/ |
| 370 | |
| 371 | READ8_MEMBER(a800_rom_microcalc_device::read_80xx) |
| 372 | { |
| 373 | return m_rom[(offset & 0x1fff) + (m_bank * 0x2000)]; |
| 374 | } |
| 375 | |
| 376 | WRITE8_MEMBER(a800_rom_microcalc_device::write_d5xx) |
| 377 | { |
| 378 | m_bank = data; |
| 379 | } |
| 380 | |
| 381 | |
| 382 | |
| 268 | 383 | // Atari 5200 |
| 269 | 384 | |
| 270 | 385 | |
trunk/src/emu/bus/a800/rom.h
| r31908 | r31909 | |
| 82 | 82 | }; |
| 83 | 83 | |
| 84 | 84 | |
| 85 | // ======================> a800_rom_blizzard_device |
| 86 | |
| 87 | class a800_rom_blizzard_device : public a800_rom_device |
| 88 | { |
| 89 | public: |
| 90 | // construction/destruction |
| 91 | a800_rom_blizzard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 92 | |
| 93 | // device-level overrides |
| 94 | virtual void device_start(); |
| 95 | virtual void device_reset(); |
| 96 | |
| 97 | virtual DECLARE_READ8_MEMBER(read_80xx); |
| 98 | }; |
| 99 | |
| 100 | |
| 101 | // ======================> a800_rom_turbo_device |
| 102 | |
| 103 | class a800_rom_turbo_device : public a800_rom_device |
| 104 | { |
| 105 | public: |
| 106 | // construction/destruction |
| 107 | a800_rom_turbo_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 108 | |
| 109 | // device-level overrides |
| 110 | virtual void device_start(); |
| 111 | virtual void device_reset(); |
| 112 | |
| 113 | virtual DECLARE_READ8_MEMBER(read_80xx); |
| 114 | virtual DECLARE_WRITE8_MEMBER(write_d5xx); |
| 115 | |
| 116 | protected: |
| 117 | int m_bank; |
| 118 | }; |
| 119 | |
| 120 | |
| 121 | // ======================> a800_rom_telelink2_device |
| 122 | |
| 123 | class a800_rom_telelink2_device : public a800_rom_device |
| 124 | { |
| 125 | public: |
| 126 | // construction/destruction |
| 127 | a800_rom_telelink2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 128 | |
| 129 | virtual DECLARE_READ8_MEMBER(read_80xx); |
| 130 | virtual DECLARE_WRITE8_MEMBER(write_80xx); |
| 131 | virtual DECLARE_READ8_MEMBER(read_d5xx); |
| 132 | virtual DECLARE_WRITE8_MEMBER(write_d5xx); |
| 133 | }; |
| 134 | |
| 135 | |
| 136 | // ======================> a800_rom_microcalc_device |
| 137 | |
| 138 | class a800_rom_microcalc_device : public a800_rom_device |
| 139 | { |
| 140 | public: |
| 141 | // construction/destruction |
| 142 | a800_rom_microcalc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 143 | |
| 144 | // device-level overrides |
| 145 | virtual void device_start(); |
| 146 | virtual void device_reset(); |
| 147 | |
| 148 | virtual DECLARE_READ8_MEMBER(read_80xx); |
| 149 | virtual DECLARE_WRITE8_MEMBER(write_d5xx); |
| 150 | |
| 151 | protected: |
| 152 | int m_bank; |
| 153 | }; |
| 154 | |
| 155 | |
| 85 | 156 | // ======================> xegs_rom_device |
| 86 | 157 | |
| 87 | 158 | class xegs_rom_device : public a800_rom_device |
| r31908 | r31909 | |
| 140 | 211 | extern const device_type A800_ROM_BBSB; |
| 141 | 212 | extern const device_type A800_ROM_WILLIAMS; |
| 142 | 213 | extern const device_type A800_ROM_EXPRESS; |
| 214 | extern const device_type A800_ROM_TURBO; |
| 215 | extern const device_type A800_ROM_TELELINK2; |
| 216 | extern const device_type A800_ROM_MICROCALC; |
| 143 | 217 | extern const device_type XEGS_ROM; |
| 144 | 218 | extern const device_type A5200_ROM_2CHIPS; |
| 145 | 219 | extern const device_type A5200_ROM_BBSB; |
trunk/src/emu/bus/a800/oss.c
| r31908 | r31909 | |
| 13 | 13 | // constructor |
| 14 | 14 | //------------------------------------------------- |
| 15 | 15 | |
| 16 | const device_type A800_ROM_OSS8K = &device_creator<a800_rom_oss8k_device>; |
| 16 | 17 | const device_type A800_ROM_OSS34 = &device_creator<a800_rom_oss34_device>; |
| 17 | 18 | const device_type A800_ROM_OSS43 = &device_creator<a800_rom_oss43_device>; |
| 18 | 19 | const device_type A800_ROM_OSS91 = &device_creator<a800_rom_oss91_device>; |
| 19 | 20 | |
| 20 | 21 | |
| 22 | a800_rom_oss8k_device::a800_rom_oss8k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 23 | : a800_rom_device(mconfig, A800_ROM_OSS8K, "Atari 800 ROM Carts OSS 8K", tag, owner, clock, "a800_oss8k", __FILE__) |
| 24 | { |
| 25 | } |
| 26 | |
| 27 | |
| 21 | 28 | a800_rom_oss34_device::a800_rom_oss34_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 22 | 29 | : a800_rom_device(mconfig, A800_ROM_OSS34, "Atari 800 ROM Carts OSS-034M", tag, owner, clock, "a800_034m", __FILE__) |
| 23 | 30 | { |
| r31908 | r31909 | |
| 37 | 44 | |
| 38 | 45 | |
| 39 | 46 | |
| 47 | void a800_rom_oss8k_device::device_start() |
| 48 | { |
| 49 | save_item(NAME(m_bank)); |
| 50 | } |
| 51 | |
| 52 | void a800_rom_oss8k_device::device_reset() |
| 53 | { |
| 54 | m_bank = 0; |
| 55 | } |
| 56 | |
| 57 | |
| 40 | 58 | void a800_rom_oss34_device::device_start() |
| 41 | 59 | { |
| 42 | 60 | save_item(NAME(m_bank)); |
| r31908 | r31909 | |
| 76 | 94 | |
| 77 | 95 | /*------------------------------------------------- |
| 78 | 96 | |
| 97 | OSS 8K |
| 98 | |
| 99 | This is used by The Writer's Tool only. |
| 100 | |
| 101 | -------------------------------------------------*/ |
| 102 | |
| 103 | READ8_MEMBER(a800_rom_oss8k_device::read_80xx) |
| 104 | { |
| 105 | if (offset >= 0x1000) |
| 106 | return m_rom[offset & 0xfff]; |
| 107 | else |
| 108 | return m_rom[(offset & 0xfff) + (m_bank * 0x1000)]; |
| 109 | } |
| 110 | |
| 111 | WRITE8_MEMBER(a800_rom_oss8k_device::write_d5xx) |
| 112 | { |
| 113 | switch (offset & 0x09) |
| 114 | { |
| 115 | case 0: |
| 116 | case 1: |
| 117 | m_bank = 1; |
| 118 | break; |
| 119 | case 9: |
| 120 | m_bank = 0; |
| 121 | break; |
| 122 | default: |
| 123 | break; |
| 124 | } |
| 125 | } |
| 126 | |
| 127 | |
| 128 | /*------------------------------------------------- |
| 129 | |
| 79 | 130 | OSS 034M |
| 80 | 131 | |
| 81 | 132 | This apparently comes from a dump with the wrong bank order... |
trunk/src/emu/bus/a800/a800_carts.h
| r31908 | r31909 | |
| 14 | 14 | SLOT_INTERFACE_INTERNAL("a800_16k", A800_ROM) |
| 15 | 15 | SLOT_INTERFACE_INTERNAL("a800_phoenix", A800_ROM) // not really emulated at this stage |
| 16 | 16 | SLOT_INTERFACE_INTERNAL("a800_bbsb", A800_ROM_BBSB) |
| 17 | SLOT_INTERFACE_INTERNAL("a800_oss8k", A800_ROM_OSS8K) |
| 17 | 18 | SLOT_INTERFACE_INTERNAL("a800_oss034m", A800_ROM_OSS34) |
| 18 | 19 | SLOT_INTERFACE_INTERNAL("a800_oss043m", A800_ROM_OSS43) |
| 19 | 20 | SLOT_INTERFACE_INTERNAL("a800_ossm091", A800_ROM_OSS91) |
| r31908 | r31909 | |
| 21 | 22 | SLOT_INTERFACE_INTERNAL("a800_diamond", A800_ROM_EXPRESS) |
| 22 | 23 | SLOT_INTERFACE_INTERNAL("a800_express", A800_ROM_EXPRESS) |
| 23 | 24 | SLOT_INTERFACE_INTERNAL("a800_sparta", A800_ROM_SPARTADOS) // this is a passthru cart with unemulated (atm) subslot |
| 25 | SLOT_INTERFACE_INTERNAL("a800_blizzard", A800_ROM) |
| 26 | SLOT_INTERFACE_INTERNAL("a800_turbo64", A800_ROM_TURBO) |
| 27 | SLOT_INTERFACE_INTERNAL("a800_turbo128", A800_ROM_TURBO) |
| 28 | SLOT_INTERFACE_INTERNAL("a800_tlink2", A800_ROM_TELELINK2) |
| 29 | SLOT_INTERFACE_INTERNAL("a800_sitsa", A800_ROM_MICROCALC) |
| 30 | SLOT_INTERFACE_INTERNAL("a800_corina", A800_ROM) // NOT SUPPORTED YET! |
| 24 | 31 | SLOT_INTERFACE_INTERNAL("xegs", XEGS_ROM) |
| 25 | 32 | SLOT_INTERFACE_END |
| 26 | 33 | |
trunk/src/emu/bus/a800/a800_slot.c
| r31908 | r31909 | |
| 192 | 192 | { A800_OSS034M, "a800_oss034m" }, |
| 193 | 193 | { A800_OSS043M, "a800_oss043m" }, |
| 194 | 194 | { A800_OSSM091, "a800_ossm091" }, |
| 195 | { A800_OSS8K, "a800_oss8k" }, |
| 195 | 196 | { A800_PHOENIX, "a800_phoenix" }, |
| 196 | 197 | { A800_XEGS, "xegs" }, |
| 197 | 198 | { A800_BBSB, "a800_bbsb" }, |
| r31908 | r31909 | |
| 199 | 200 | { A800_WILLIAMS, "a800_williams" }, |
| 200 | 201 | { A800_EXPRESS, "a800_express" }, |
| 201 | 202 | { A800_SPARTADOS, "a800_sparta" }, |
| 203 | { A800_TURBO64, "a800_turbo64" }, |
| 204 | { A800_TURBO128, "a800_turbo128" }, |
| 205 | { A800_BLIZZARD, "a800_blizzard" }, |
| 206 | { A800_TELELINK2, "a800_tlink2" }, |
| 207 | { A800_MICROCALC, "a800_sitsa" }, |
| 208 | { A800_CORINA, "a800_corina" }, |
| 202 | 209 | { A800_8K_RIGHT, "a800_8k_right" }, |
| 203 | 210 | { A5200_4K, "a5200" }, |
| 204 | 211 | { A5200_8K, "a5200" }, |
| r31908 | r31909 | |
| 282 | 289 | ROM = m_cart->get_rom_base(); |
| 283 | 290 | fread(ROM, len); |
| 284 | 291 | } |
| 292 | if (m_type == A800_TELELINK2) |
| 293 | m_cart->nvram_alloc(0x100); |
| 294 | |
| 285 | 295 | printf("%s loaded cartridge '%s' size %dK\n", machine().system().name, filename(), len/1024); |
| 286 | 296 | } |
| 287 | 297 | return IMAGE_INIT_PASS; |
| r31908 | r31909 | |
| 357 | 367 | case 39: |
| 358 | 368 | type = A800_PHOENIX; |
| 359 | 369 | break; |
| 360 | | // Atari 5200 CART files |
| 370 | case 40: |
| 371 | type = A800_BLIZZARD; |
| 372 | break; |
| 373 | case 44: |
| 374 | type = A800_OSS8K; |
| 375 | break; |
| 376 | case 50: |
| 377 | type = A800_TURBO64; |
| 378 | break; |
| 379 | case 51: |
| 380 | type = A800_TURBO128; |
| 381 | break; |
| 382 | case 52: |
| 383 | type = A800_MICROCALC; |
| 384 | break; |
| 385 | // Atari 5200 CART files |
| 361 | 386 | case 4: |
| 362 | 387 | type = A5200_32K; |
| 363 | 388 | break; |