src/mess/drivers/pro80.c
| r12906 | r12907 | |
| 9 | 9 | - Use messram for optional ram |
| 10 | 10 | - Fix Step command (don't works due of missing interrupt emulation) |
| 11 | 11 | |
| 12 | The unit has a PIO, ports 40-43, but it was for expansion only. |
| 13 | |
| 14 | The cassette used 2 bits for input, plus a D flipflop and a 74LS221 oneshot. |
| 15 | |
| 16 | |
| 12 | 17 | ****************************************************************************/ |
| 13 | 18 | |
| 14 | 19 | #define ADDRESS_MAP_MODERN |
| 15 | 20 | |
| 16 | 21 | #include "emu.h" |
| 17 | 22 | #include "cpu/z80/z80.h" |
| 23 | #include "imagedev/cassette.h" |
| 24 | #include "sound/wave.h" |
| 18 | 25 | #include "pro80.lh" |
| 19 | 26 | |
| 20 | 27 | class pro80_state : public driver_device |
| 21 | 28 | { |
| 22 | 29 | public: |
| 23 | 30 | pro80_state(const machine_config &mconfig, device_type type, const char *tag) |
| 24 | | : driver_device(mconfig, type, tag) |
| 31 | : driver_device(mconfig, type, tag), |
| 32 | m_maincpu(*this, "maincpu"), |
| 33 | m_cass(*this, CASSETTE_TAG) |
| 25 | 34 | { } |
| 26 | 35 | |
| 36 | required_device<cpu_device> m_maincpu; |
| 37 | required_device<cassette_image_device> m_cass; |
| 27 | 38 | void machine_reset(); |
| 28 | 39 | |
| 29 | 40 | DECLARE_WRITE8_MEMBER( digit_w ); |
| r12906 | r12907 | |
| 52 | 63 | if (!BIT(m_digit_sel, 3)) output_set_digit_value(3, data); |
| 53 | 64 | if (!BIT(m_digit_sel, 4)) output_set_digit_value(4, data); |
| 54 | 65 | if (!BIT(m_digit_sel, 5)) output_set_digit_value(5, data); |
| 66 | m_cass->output( BIT(data, 6) ? -1.0 : +1.0); |
| 55 | 67 | |
| 56 | 68 | m_digit_sel = 0; |
| 57 | 69 | } |
| r12906 | r12907 | |
| 68 | 80 | if (!BIT(m_digit_sel, 4)) data &= input_port_read(machine(), "LINE4"); |
| 69 | 81 | if (!BIT(m_digit_sel, 5)) data &= input_port_read(machine(), "LINE5"); |
| 70 | 82 | |
| 83 | // cassette-in bits go here - bit 4 = sync bit, bit 5 = data bit |
| 71 | 84 | return data; |
| 72 | 85 | } |
| 73 | 86 | |
| 74 | | static ADDRESS_MAP_START(pro80_mem, AS_PROGRAM, 8, pro80_state) |
| 87 | static ADDRESS_MAP_START( pro80_mem, AS_PROGRAM, 8, pro80_state ) |
| 75 | 88 | ADDRESS_MAP_UNMAP_HIGH |
| 76 | 89 | AM_RANGE(0x0000, 0x03ff) AM_ROM |
| 77 | 90 | AM_RANGE(0x1000, 0x13ff) AM_RAM |
| 78 | 91 | AM_RANGE(0x1400, 0x17ff) AM_RAM // 2nd RAM is optional |
| 79 | 92 | ADDRESS_MAP_END |
| 80 | 93 | |
| 81 | | static ADDRESS_MAP_START( pro80_io , AS_IO, 8, pro80_state) |
| 94 | static ADDRESS_MAP_START( pro80_io, AS_IO, 8, pro80_state ) |
| 82 | 95 | ADDRESS_MAP_UNMAP_HIGH |
| 83 | 96 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 84 | 97 | //AM_RANGE(0x40, 0x43) Z80PIO |
| r12906 | r12907 | |
| 127 | 140 | } |
| 128 | 141 | |
| 129 | 142 | static MACHINE_CONFIG_START( pro80, pro80_state ) |
| 130 | | /* basic machine hardware */ |
| 131 | | MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) |
| 132 | | MCFG_CPU_PROGRAM_MAP(pro80_mem) |
| 133 | | MCFG_CPU_IO_MAP(pro80_io) |
| 143 | /* basic machine hardware */ |
| 144 | MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) |
| 145 | MCFG_CPU_PROGRAM_MAP(pro80_mem) |
| 146 | MCFG_CPU_IO_MAP(pro80_io) |
| 134 | 147 | |
| 135 | | /* video hardware */ |
| 136 | | MCFG_DEFAULT_LAYOUT(layout_pro80) |
| 148 | /* video hardware */ |
| 149 | MCFG_DEFAULT_LAYOUT(layout_pro80) |
| 150 | |
| 151 | /* sound hardware */ |
| 152 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 153 | MCFG_SOUND_WAVE_ADD(WAVE_TAG, CASSETTE_TAG) |
| 154 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 155 | |
| 156 | /* Devices */ |
| 157 | MCFG_CASSETTE_ADD( CASSETTE_TAG, default_cassette_interface ) |
| 137 | 158 | MACHINE_CONFIG_END |
| 138 | 159 | |
| 139 | 160 | /* ROM definition */ |
| 140 | 161 | ROM_START( pro80 ) |
| 141 | | ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) |
| 162 | ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) |
| 142 | 163 | // This rom dump is taken out of manual for this machine |
| 143 | 164 | ROM_LOAD( "pro80.bin", 0x0000, 0x0400, CRC(1bf6e0a5) SHA1(eb45816337e08ed8c30b589fc24960dc98b94db2)) |
| 144 | 165 | ROM_END |
| r12906 | r12907 | |
| 146 | 167 | /* Driver */ |
| 147 | 168 | |
| 148 | 169 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ |
| 149 | | COMP( 1981, pro80, 0, 0, pro80, pro80, 0, "Protec", "Pro-80", GAME_NOT_WORKING | GAME_NO_SOUND) |
| 150 | | |
| 170 | COMP( 1981, pro80, 0, 0, pro80, pro80, 0, "Protec", "Pro-80", GAME_NOT_WORKING | GAME_NO_SOUND) |