Previous 15994 Revisions Next

r11272 Friday 22nd April, 2011 at 04:09:09 UTC by Robbbert
[IPB] Modernised. Added terminal connection. After pressing Space, it will start up and respond to your inputs.
[src/mess/drivers]ipb.c

src/mess/drivers/ipb.c
r11271r11272
44
55        17/12/2009 Skeleton driver.
66
7        22/04/2011 Connected to a terminal, it responds. Modernised.
8
9        When started, you must press Space, then it will start to work.
10
11        ToDo:
12        - Everything!
13
714****************************************************************************/
15#define ADDRESS_MAP_MODERN
816
917#include "emu.h"
1018#include "cpu/i8085/i8085.h"
19#include "machine/terminal.h"
1120
21#define MACHINE_RESET_MEMBER(name) void name::machine_reset()
1222
1323class ipb_state : public driver_device
1424{
1525public:
1626   ipb_state(running_machine &machine, const driver_device_config_base &config)
17      : driver_device(machine, config) { }
27      : driver_device(machine, config),
28   m_maincpu(*this, "maincpu"),
29   m_terminal(*this, TERMINAL_TAG)
30   { }
1831
32   required_device<cpu_device> m_maincpu;
33   required_device<device_t> m_terminal;
34   DECLARE_READ8_MEMBER( ipb_f4_r );
35   DECLARE_READ8_MEMBER( ipb_f5_r );
36   DECLARE_WRITE8_MEMBER( kbd_put );
37   UINT8 *m_ram;
38   UINT8 m_term_data;
39   virtual void machine_reset();
1940};
2041
42READ8_MEMBER( ipb_state::ipb_f4_r )
43{
44   UINT8 ret = m_term_data;
45   m_term_data = 0;
46   return ret;
47}
2148
22static ADDRESS_MAP_START(ipb_mem, AS_PROGRAM, 8)
49// bit 0 high = ok to send to terminal; bit 1 high = key is pressed
50READ8_MEMBER( ipb_state::ipb_f5_r )
51{
52   if (m_term_data)
53      return 3;
54   else
55      return 1;
56}
57
58static ADDRESS_MAP_START(ipb_mem, AS_PROGRAM, 8, ipb_state)
2359   ADDRESS_MAP_UNMAP_HIGH
2460   AM_RANGE(0x0000, 0xdfff) AM_RAM
2561   AM_RANGE(0xe800, 0xefff) AM_ROM
2662   AM_RANGE(0xf800, 0xffff) AM_ROM
2763ADDRESS_MAP_END
2864
29static ADDRESS_MAP_START( ipb_io , AS_IO, 8)
65static ADDRESS_MAP_START( ipb_io, AS_IO, 8, ipb_state)
3066   ADDRESS_MAP_UNMAP_HIGH
67   ADDRESS_MAP_GLOBAL_MASK(0xff)
68   AM_RANGE(0xf4, 0xf4) AM_READ(ipb_f4_r) AM_DEVWRITE_LEGACY(TERMINAL_TAG, terminal_write)
69   AM_RANGE(0xf5, 0xf5) AM_READ(ipb_f5_r)
3170ADDRESS_MAP_END
3271
3372/* Input ports */
r11271r11272
3574INPUT_PORTS_END
3675
3776
38static MACHINE_RESET(ipb)
77MACHINE_RESET_MEMBER(ipb_state)
3978{
40   cpu_set_reg(machine.device("maincpu"), I8085_PC, 0xE800);
79   cpu_set_reg(machine().device("maincpu"), I8085_PC, 0xE800);
4180}
4281
43static VIDEO_START( ipb )
82WRITE8_MEMBER( ipb_state::kbd_put )
4483{
84   m_term_data = data;
4585}
4686
47static SCREEN_UPDATE( ipb )
87static GENERIC_TERMINAL_INTERFACE( terminal_intf )
4888{
49    return 0;
50}
89   DEVCB_DRIVER_MEMBER(ipb_state, kbd_put)
90};
5191
5292static MACHINE_CONFIG_START( ipb, ipb_state )
53    /* basic machine hardware */
54    MCFG_CPU_ADD("maincpu",I8080, XTAL_19_6608MHz / 4)
55    MCFG_CPU_PROGRAM_MAP(ipb_mem)
56    MCFG_CPU_IO_MAP(ipb_io)
93   /* basic machine hardware */
94   MCFG_CPU_ADD("maincpu",I8080, XTAL_19_6608MHz / 4)
95   MCFG_CPU_PROGRAM_MAP(ipb_mem)
96   MCFG_CPU_IO_MAP(ipb_io)
5797
58    MCFG_MACHINE_RESET(ipb)
59
60    /* video hardware */
61    MCFG_SCREEN_ADD("screen", RASTER)
62    MCFG_SCREEN_REFRESH_RATE(50)
63    MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
64    MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
65    MCFG_SCREEN_SIZE(640, 480)
66    MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
67    MCFG_SCREEN_UPDATE(ipb)
68
69    MCFG_PALETTE_LENGTH(2)
70    MCFG_PALETTE_INIT(black_and_white)
71
72    MCFG_VIDEO_START(ipb)
98   /* video hardware */
99   MCFG_FRAGMENT_ADD( generic_terminal )
100   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
73101MACHINE_CONFIG_END
74102
75103
76104/* ROM definition */
77105ROM_START( ipb )
78    ROM_REGION( 0x100000, "maincpu", ROMREGION_ERASEFF )
106   ROM_REGION( 0x100000, "maincpu", ROMREGION_ERASEFF )
79107   ROM_LOAD( "ipb_e8_v1.3.bin", 0xe800, 0x0800, CRC(fc9d4703) SHA1(2ce078e1bcd8b24217830c54bcf04c5d146d1b76))
80108   ROM_LOAD( "ipb_f8_v1.3.bin", 0xf800, 0x0800, CRC(966ba421) SHA1(d6a904c7d992a05ed0f451d7d34c1fc8de9547ee))
81109ROM_END

Previous 15994 Revisions Next


© 1998-2018 The MESS Team