Previous 15994 Revisions Next

r12907 Wednesday 21st September, 2011 at 11:22:52 UTC by Robbbert
PRO80 - added cassette save, and some notes (untested, not sure how to drive this thing).
[src/mess/drivers]pro80.c

src/mess/drivers/pro80.c
r12906r12907
99        - Use messram for optional ram
1010        - Fix Step command (don't works due of missing interrupt emulation)
1111
12The unit has a PIO, ports 40-43, but it was for expansion only.
13
14The cassette used 2 bits for input, plus a D flipflop and a 74LS221 oneshot.
15
16
1217****************************************************************************/
1318
1419#define ADDRESS_MAP_MODERN
1520
1621#include "emu.h"
1722#include "cpu/z80/z80.h"
23#include "imagedev/cassette.h"
24#include "sound/wave.h"
1825#include "pro80.lh"
1926
2027class pro80_state : public driver_device
2128{
2229public:
2330   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)
2534   { }
2635
36   required_device<cpu_device> m_maincpu;
37   required_device<cassette_image_device> m_cass;
2738   void machine_reset();
2839
2940   DECLARE_WRITE8_MEMBER( digit_w );
r12906r12907
5263      if (!BIT(m_digit_sel, 3)) output_set_digit_value(3, data);
5364      if (!BIT(m_digit_sel, 4)) output_set_digit_value(4, data);
5465      if (!BIT(m_digit_sel, 5)) output_set_digit_value(5, data);
66      m_cass->output( BIT(data, 6) ? -1.0 : +1.0);
5567
5668      m_digit_sel = 0;
5769   }
r12906r12907
6880   if (!BIT(m_digit_sel, 4)) data &= input_port_read(machine(), "LINE4");
6981   if (!BIT(m_digit_sel, 5)) data &= input_port_read(machine(), "LINE5");
7082
83   // cassette-in bits go here - bit 4 = sync bit, bit 5 = data bit
7184   return data;
7285}
7386
74static ADDRESS_MAP_START(pro80_mem, AS_PROGRAM, 8, pro80_state)
87static ADDRESS_MAP_START( pro80_mem, AS_PROGRAM, 8, pro80_state )
7588   ADDRESS_MAP_UNMAP_HIGH
7689   AM_RANGE(0x0000, 0x03ff) AM_ROM
7790   AM_RANGE(0x1000, 0x13ff) AM_RAM
7891   AM_RANGE(0x1400, 0x17ff) AM_RAM // 2nd RAM is optional
7992ADDRESS_MAP_END
8093
81static ADDRESS_MAP_START( pro80_io , AS_IO, 8, pro80_state)
94static ADDRESS_MAP_START( pro80_io, AS_IO, 8, pro80_state )
8295   ADDRESS_MAP_UNMAP_HIGH
8396   ADDRESS_MAP_GLOBAL_MASK(0xff)
8497   //AM_RANGE(0x40, 0x43) Z80PIO
r12906r12907
127140}
128141
129142static 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)
134147
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 )
137158MACHINE_CONFIG_END
138159
139160/* ROM definition */
140161ROM_START( pro80 )
141    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
162   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
142163   // This rom dump is taken out of manual for this machine
143164   ROM_LOAD( "pro80.bin", 0x0000, 0x0400, CRC(1bf6e0a5) SHA1(eb45816337e08ed8c30b589fc24960dc98b94db2))
144165ROM_END
r12906r12907
146167/* Driver */
147168
148169/*    YEAR  NAME    PARENT  COMPAT   MACHINE    INPUT    INIT    COMPANY     FULLNAME       FLAGS */
149COMP( 1981, pro80,  0,       0,    pro80,      pro80,    0,     "Protec",   "Pro-80",      GAME_NOT_WORKING | GAME_NO_SOUND)
150
170COMP( 1981, pro80,  0,      0,       pro80,     pro80,   0,      "Protec",   "Pro-80", GAME_NOT_WORKING | GAME_NO_SOUND)

Previous 15994 Revisions Next


© 1998-2018 The MESS Team