trunk/src/mess/drivers/applix.c
| r22643 | r22644 | |
| 18 | 18 | - Keyboard is a standard pc keyboard |
| 19 | 19 | - Sound is stereo dac-sound, plus an analog output. Details unknown. |
| 20 | 20 | |
| 21 | | This system uses a number of unemulated opcodes (A0xx). Our M68000 core |
| 22 | | mishandles this scenario, doing a random jump to nearby code. This |
| 23 | | continues, filling up the stack, and eventually causes a total freeze. |
| 24 | | |
| 25 | 21 | ****************************************************************************/ |
| 26 | 22 | |
| 27 | 23 | #include "emu.h" |
| r22643 | r22644 | |
| 38 | 34 | m_maincpu(*this, "maincpu"), |
| 39 | 35 | m_crtc(*this, "crtc"), |
| 40 | 36 | m_via(*this, "via6522"), |
| 41 | | m_base(*this, "base"){ } |
| 37 | m_base(*this, "base"), |
| 38 | m_expansion(*this, "expansion"){ } |
| 42 | 39 | |
| 43 | 40 | DECLARE_READ16_MEMBER(applix_inputs_r); |
| 44 | 41 | DECLARE_WRITE16_MEMBER(applix_index_w); |
| r22643 | r22644 | |
| 65 | 62 | required_device<mc6845_device> m_crtc; |
| 66 | 63 | required_device<via6522_device> m_via; |
| 67 | 64 | required_shared_ptr<UINT16> m_base; |
| 65 | required_shared_ptr<UINT16> m_expansion; |
| 68 | 66 | }; |
| 69 | 67 | |
| 70 | 68 | // dac-latch seems to be: |
| r22643 | r22644 | |
| 145 | 143 | static ADDRESS_MAP_START(applix_mem, AS_PROGRAM, 16, applix_state) |
| 146 | 144 | ADDRESS_MAP_UNMAP_HIGH |
| 147 | 145 | ADDRESS_MAP_GLOBAL_MASK(0xffffff) |
| 148 | | AM_RANGE(0x000000, 0x07ffff) AM_RAM AM_SHARE("base") |
| 149 | | AM_RANGE(0x080000, 0x47ffff) AM_NOP //AM_RAM // expansion |
| 150 | | AM_RANGE(0x500000, 0x5fffff) AM_ROM |
| 146 | AM_RANGE(0x000000, 0x3fffff) AM_RAM AM_SHARE("expansion") // Expansion |
| 147 | AM_RANGE(0x400000, 0x47ffff) AM_RAM AM_MIRROR(0x80000) AM_SHARE("base") // Main ram |
| 148 | AM_RANGE(0x500000, 0x51ffff) AM_ROM AM_REGION("maincpu", 0) |
| 151 | 149 | AM_RANGE(0x600000, 0x60007f) AM_WRITE(palette_w) |
| 152 | 150 | AM_RANGE(0x600080, 0x6000ff) AM_WRITE(dac_latch_w) |
| 153 | 151 | AM_RANGE(0x600100, 0x60017f) AM_WRITE(video_latch_w) //video latch (=border colour, high nybble; video base, low nybble) (odd) |
| r22643 | r22644 | |
| 189 | 187 | |
| 190 | 188 | void applix_state::machine_reset() |
| 191 | 189 | { |
| 192 | | UINT8* RAM = memregion("maincpu")->base(); |
| 193 | | memcpy(m_base, RAM+0x500000, 16); |
| 190 | UINT8* ROM = memregion("maincpu")->base(); |
| 191 | memcpy(m_expansion, ROM, 8); |
| 194 | 192 | m_maincpu->reset(); |
| 195 | 193 | } |
| 196 | 194 | |
| r22643 | r22644 | |
| 325 | 323 | |
| 326 | 324 | /* ROM definition */ |
| 327 | 325 | ROM_START( applix ) |
| 328 | | ROM_REGION(0x1000000, "maincpu", 0) |
| 329 | | ROM_LOAD16_BYTE( "1616oshv.044", 0x500000, 0x10000, CRC(4a1a90d3) SHA1(4df504bbf6fc5dad76c29e9657bfa556500420a6) ) |
| 330 | | ROM_LOAD16_BYTE( "1616oslv.044", 0x500001, 0x10000, CRC(ef619994) SHA1(ff16fe9e2c99a1ffc855baf89278a97a2a2e881a) ) |
| 326 | ROM_REGION(0x20000, "maincpu", 0) |
| 327 | ROM_LOAD16_BYTE( "1616oshv.044", 0x00000, 0x10000, CRC(4a1a90d3) SHA1(4df504bbf6fc5dad76c29e9657bfa556500420a6) ) |
| 328 | ROM_LOAD16_BYTE( "1616oslv.044", 0x00001, 0x10000, CRC(ef619994) SHA1(ff16fe9e2c99a1ffc855baf89278a97a2a2e881a) ) |
| 331 | 329 | |
| 332 | 330 | ROM_REGION(0x50000, "user1", 0) |
| 333 | 331 | ROM_LOAD16_BYTE( "1616oshv.045", 0x00000, 0x10000, CRC(9dfb3224) SHA1(5223833a357f90b147f25826c01713269fc1945f) ) |