Previous 15994 Revisions Next

r9747 Tuesday 7th December, 2010 at 08:22:06 UTC by Dirk Best
[3B1] Added map ram and some initial floppy disk code, now fails because of missing DMA
[src/mess/drivers]unixpc.c

src/mess/drivers/unixpc.c
r9746r9747
1414#include "emu.h"
1515#include "cpu/m68000/m68000.h"
1616#include "devices/messram.h"
17#include "machine/wd17xx.h"
18#include "devices/flopdrv.h"
1719#include "unixpc.lh"
1820
1921
r9746r9747
2729   unixpc_state(running_machine &machine, const driver_device_config_base &config)
2830      : driver_device(machine, config),
2931        m_maincpu(*this, "maincpu"),
30        m_ram(*this, "messram")
32        m_ram(*this, "messram"),
33        m_wd2797(*this, "wd2797"),
34        m_floppy(*this, FLOPPY_0)
3135   { }
3236
3337   required_device<cpu_device> m_maincpu;
3438   required_device<running_device> m_ram;
39   required_device<running_device> m_wd2797;
40   required_device<running_device> m_floppy;
3541
3642   virtual bool video_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
3743
3844   virtual void machine_reset();
3945
46   DECLARE_READ16_MEMBER( line_printer_r );
4047   DECLARE_WRITE16_MEMBER( misc_control_w );
48   DECLARE_WRITE16_MEMBER( disk_control_w );
4149   DECLARE_WRITE16_MEMBER( romlmap_w );
4250
51   DECLARE_WRITE_LINE_MEMBER( wd2797_intrq_w );
52   DECLARE_WRITE_LINE_MEMBER( wd2797_drq_w );
53
54   UINT16 *m_mapram;
4355   UINT16 *m_videoram;
4456};
4557
r9746r9747
7284    MISC
7385***************************************************************************/
7486
87READ16_MEMBER( unixpc_state::line_printer_r )
88{
89   UINT16 data = 0;
90
91   data |= 1; // no dial tone detected
92   data |= 1 << 1; // no parity error
93   data |= 0 << 2; // hdc intrq
94   data |= wd17xx_intrq_r(m_wd2797) << 3;
95
96   logerror("line_printer_r: %04x\n", data);
97
98   return data;
99}
100
75101WRITE16_MEMBER( unixpc_state::misc_control_w )
76102{
103   logerror("misc_control_w: %04x\n", data);
104
77105   output_set_value("led_0", !BIT(data,  8));
78106   output_set_value("led_1", !BIT(data,  9));
79107   output_set_value("led_2", !BIT(data, 10));
r9746r9747
82110
83111
84112/***************************************************************************
113    FLOPPY
114***************************************************************************/
115
116WRITE16_MEMBER( unixpc_state::disk_control_w )
117{
118   logerror("disk_control_w: %04x\n", data);
119
120   floppy_mon_w(m_floppy, !BIT(data, 5));
121
122   // bit 6 = floppy selected / not selected
123   wd17xx_set_drive(m_wd2797, 0);
124}
125
126WRITE_LINE_MEMBER( unixpc_state::wd2797_intrq_w )
127{
128   logerror("wd2797_intrq_w: %d\n", state);
129}
130
131WRITE_LINE_MEMBER( unixpc_state::wd2797_drq_w )
132{
133   logerror("wd2797_drq_w: %d\n", state);
134}
135
136
137/***************************************************************************
85138    VIDEO
86139***************************************************************************/
87140
r9746r9747
102155
103156static ADDRESS_MAP_START( unixpc_mem, ADDRESS_SPACE_PROGRAM, 16, unixpc_state )
104157   AM_RANGE(0x000000, 0x3fffff) AM_RAMBANK("bank1")
158   AM_RANGE(0x400000, 0x4007ff) AM_RAM AM_BASE(m_mapram)
105159   AM_RANGE(0x420000, 0x427fff) AM_RAM AM_BASE(m_videoram)
160   AM_RANGE(0x470000, 0x470001) AM_READ(line_printer_r)
106161   AM_RANGE(0x4a0000, 0x4a0001) AM_WRITE(misc_control_w)
162   AM_RANGE(0x4e0000, 0x4e0001) AM_WRITE(disk_control_w)
107163   AM_RANGE(0x800000, 0xbfffff) AM_MIRROR(0x7fc000) AM_ROM AM_REGION("bootrom", 0)
164   AM_RANGE(0xe10000, 0xe10007) AM_DEVREADWRITE8_LEGACY("wd2797", wd17xx_r, wd17xx_w, 0x00ff)
108165   AM_RANGE(0xe43000, 0xe43001) AM_WRITE(romlmap_w)
109166ADDRESS_MAP_END
110167
r9746r9747
121178    MACHINE DRIVERS
122179***************************************************************************/
123180
181static const floppy_config unixpc_floppy_config =
182{
183   DEVCB_NULL,
184   DEVCB_NULL,
185   DEVCB_NULL,
186   DEVCB_NULL,
187   DEVCB_NULL,
188   FLOPPY_STANDARD_5_25_DSDD,
189   FLOPPY_OPTIONS_NAME(default),
190   NULL
191};
192
193static const wd17xx_interface unixpc_wd17xx_intf =
194{
195   DEVCB_NULL,
196   DEVCB_DRIVER_LINE_MEMBER(unixpc_state, wd2797_intrq_w),
197   DEVCB_DRIVER_LINE_MEMBER(unixpc_state, wd2797_drq_w),
198   { FLOPPY_0, NULL, NULL, NULL }
199};
200
124201static MACHINE_CONFIG_START( unixpc, unixpc_state )
125202   // basic machine hardware
126203   MDRV_CPU_ADD("maincpu", M68010, XTAL_10MHz)
r9746r9747
141218   MDRV_RAM_ADD("messram")
142219   MDRV_RAM_DEFAULT_SIZE("1M")
143220   MDRV_RAM_EXTRA_OPTIONS("2M")
221
222   // floppy
223   MDRV_WD2797_ADD("wd2797", unixpc_wd17xx_intf)
224   MDRV_FLOPPY_DRIVE_ADD(FLOPPY_0, unixpc_floppy_config)
144225MACHINE_CONFIG_END
145226
146227

Previous 15994 Revisions Next


© 1998-2018 The MESS Team