Previous 15994 Revisions Next

r13622 Sunday 18th December, 2011 at 23:28:02 UTC by Curt Coder
[APRICOTF] Cleanup. (nw)
[src/mess]mess.lst
[src/mess/drivers]apricot.c apricotf.c
[src/mess/includes]apricotf.h*

src/mess/includes/apricotf.h
r0r13622
1#pragma once
2
3#ifndef __APRICOTF__
4#define __APRICOTF__
5
6#define ADDRESS_MAP_MODERN
7
8#include "emu.h"
9#include "cpu/i86/i86.h"
10#include "cpu/z80/z80daisy.h"
11#include "formats/basicdsk.h"
12#include "imagedev/flopdrv.h"
13#include "machine/ctronics.h"
14#include "machine/wd17xx.h"
15#include "machine/z80ctc.h"
16#include "machine/z80dart.h"
17#include "rendlay.h"
18
19
20
21//**************************************************************************
22//  MACROS / CONSTANTS
23//**************************************************************************
24
25#define SCREEN_TAG      "screen"
26#define I8086_TAG      "10d"
27#define MC6845_TAG      "b12"
28#define Z80CTC_TAG      "13d"
29#define Z80SIO2_TAG      "15d"
30#define WD2797_TAG      "5f"
31#define UPD7507C_TAG   "ic2"
32#define CENTRONICS_TAG   "centronics"
33
34
35
36//**************************************************************************
37//  TYPE DEFINITIONS
38//**************************************************************************
39
40// ======================> f1_state
41
42class f1_state : public driver_device
43{
44public:
45   f1_state(const machine_config &mconfig, device_type type, const char *tag)
46      : driver_device(mconfig, type, tag),
47        m_maincpu(*this, I8086_TAG),
48        m_ctc(*this, Z80CTC_TAG),
49        m_sio(*this, Z80SIO2_TAG),
50        m_fdc(*this, WD2797_TAG),
51        m_floppy0(*this, FLOPPY_0),
52        m_centronics(*this, CENTRONICS_TAG),
53        m_ctc_int(CLEAR_LINE),
54        m_sio_int(CLEAR_LINE)
55   { }
56
57   required_device<cpu_device> m_maincpu;
58   required_device<z80ctc_device> m_ctc;
59   required_device<z80dart_device> m_sio;
60   required_device<device_t> m_fdc;
61   required_device<device_t> m_floppy0;
62   required_device<device_t> m_centronics;
63
64   virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
65   
66   DECLARE_READ16_MEMBER( palette_r );
67   DECLARE_WRITE16_MEMBER( palette_w );
68   DECLARE_WRITE8_MEMBER( system_w );
69   DECLARE_WRITE_LINE_MEMBER( sio_int_w );
70   DECLARE_WRITE_LINE_MEMBER( ctc_int_w );
71   DECLARE_WRITE_LINE_MEMBER( ctc_z1_w );
72   DECLARE_WRITE_LINE_MEMBER( ctc_z2_w );
73   
74   UINT8 read_keyboard();
75   READ8_MEMBER( kb_lo_r );
76   READ8_MEMBER( kb_hi_r );
77   READ8_MEMBER( kb_p6_r );
78   WRITE8_MEMBER( kb_p3_w );
79   WRITE8_MEMBER( kb_y0_w );
80   WRITE8_MEMBER( kb_y4_w );
81   WRITE8_MEMBER( kb_y8_w );
82   WRITE8_MEMBER( kb_yc_w );
83
84   int m_ctc_int;
85   int m_sio_int;
86   
87   UINT16 *m_p_paletteram;
88   UINT16 *m_p_scrollram;
89   int m_40_80;
90   int m_200_256;
91   
92   UINT16 m_kb_y;
93};
94
95class f1p_state : public f1_state
96{
97public:
98   f1p_state(const machine_config &mconfig, device_type type, const char *tag)
99      : f1_state(mconfig, type, tag)
100   { }
101
102   virtual bool screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
103};
104
105#endif
src/mess/mess.lst
r13621r13622
338338// ACT
339339apricot   // 1983 ACT
340340apricotxi   // 1984 ACT
341aprif1
342aprif10
343aprifp
341f1
342f1e
343f2
344f10
345fp
344346
345347// Cambridge Computers
346348z88      //
src/mess/drivers/apricot.c
r13621r13622
339339   DEVCB_NULL,
340340   DEVCB_NULL,
341341   DEVCB_NULL,
342   FLOPPY_STANDARD_5_25_SSDD_40,
342   FLOPPY_STANDARD_3_5_DSDD,
343343   LEGACY_FLOPPY_OPTIONS_NAME(apricot),
344   NULL,
344   "floppy_3_5",
345345   NULL
346346};
347347
src/mess/drivers/apricotf.c
r13621r13622
1111             an idea of what the screen should look like. [Robbbert]
1212
1313****************************************************************************/
14#define ADDRESS_MAP_MODERN
1514
16#include "emu.h"
17#include "cpu/i86/i86.h"
18#include "cpu/z80/z80daisy.h"
19#include "machine/z80ctc.h"
20#include "machine/wd17xx.h"
21#include "imagedev/flopdrv.h"
22#include "formats/basicdsk.h"
15/*
2316
24class act_state : public driver_device
25{
26public:
27   act_state(const machine_config &mconfig, device_type type, const char *tag)
28      : driver_device(mconfig, type, tag),
29   m_maincpu(*this, "maincpu"),
30   m_z80ctc(*this, "ctc"),
31   m_fdc(*this, "fdc")
32   { }
17   TODO:
18   
19   - CTC/SIO interrupt acknowledge
20   - CTC clocks
21   - sound
22   - portable has wrong devices
3323
34   required_device<cpu_device> m_maincpu;
35   required_device<device_t> m_z80ctc;
36   required_device<device_t> m_fdc;
37   DECLARE_READ8_MEMBER(act_fdc_r);
38   DECLARE_WRITE8_MEMBER(act_fdc_w);
39   DECLARE_READ16_MEMBER(act_pal_r);
40   DECLARE_WRITE16_MEMBER(act_pal_w);
41   DECLARE_WRITE8_MEMBER(actf1_sys_w);
42   UINT16 *m_p_paletteram;
43   UINT16 *m_p_videoram;
44   UINT16 *m_p_scrollram;
45   UINT8 *m_p_chargen;
46   UINT8 m_fdrv_num;
47   //bool m_fdc_irq_flag;
48   //bool m_fdc_drq_flag;
49   //bool m_fdc_side;
50   //UINT8 m_fdc_drive;
51};
24*/
5225
53static VIDEO_START( act_f1 )
54{
55   act_state *state = machine.driver_data<act_state>();
56   state->m_p_chargen = machine.region("chargen")->base();
57}
26#include "includes/apricotf.h"
5827
59static SCREEN_UPDATE( act_f1 )
60{
61   act_state *state = screen->machine().driver_data<act_state>();
62   int x,y,i,x_count,pen[2],color;
63   const rectangle &visarea = screen->visible_area();
6428
65   for(y=0; y<256; y++)
66   {
67      x_count = 0;
68      for(x=0; x<640; x+=8)
69      {
70         for (i=0;i<8;i++)
71         {
72            pen[0] = (state->m_p_videoram[state->m_p_scrollram[y]+x_count])>>(7-i) & 1;
73            pen[1] = (state->m_p_videoram[state->m_p_scrollram[y]+x_count])>>(15-i) & 1;
7429
75            color = pen[0]|pen[1]<<1;
30//**************************************************************************
31//  VIDEO
32//**************************************************************************
7633
77            if(((x+i)<=visarea.max_x) && (y<visarea.max_y))
78               *BITMAP_ADDR16(bitmap, y, x+i) = color;
79         }
80
81         x_count++;
82      }
83   }
84
85   return 0;
86}
87
88static SCREEN_UPDATE( act_f1p )
34bool f1_state::screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
8935{
90   act_state *state = screen->machine().driver_data<act_state>();
91   UINT8 y,ra,chr,gfx;
92   UINT16 sy=0,ma=0x400,x;
93
94   for(y = 0; y < 32; y++ )
36   address_space *program = m_maincpu->memory().space(AS_PROGRAM);
37   int lines = m_200_256 ? 200 : 256;
38   
39   for (int y = 0; y < lines; y++)
9540   {
96      for (ra = 0; ra < 8; ra++)
41      offs_t addr = m_p_scrollram[y] << 1;
42     
43      for (int sx = 0; sx < 80; sx++)
9744      {
98         UINT16 *p = BITMAP_ADDR16(bitmap, sy++, 0);
99
100         for (x = ma; x < ma + 80; x++)
45         UINT16 data = program->read_word(addr);
46         
47         if (m_40_80)
10148         {
102            chr = state->m_p_videoram[x];
103            gfx = state->m_p_chargen[(chr<<3) | ra];
104
105            /* Display a scanline of a character */
106            *p++ = BIT(gfx, 7);
107            *p++ = BIT(gfx, 6);
108            *p++ = BIT(gfx, 5);
109            *p++ = BIT(gfx, 4);
110            *p++ = BIT(gfx, 3);
111            *p++ = BIT(gfx, 2);
112            *p++ = BIT(gfx, 1);
113            *p++ = BIT(gfx, 0);
49            for (int x = 0; x < 8; x++)
50            {
51               int color = (BIT(data, 15) << 1) | BIT(data, 7);
52               
53               *BITMAP_ADDR16(&bitmap, y, (sx * 8) + x) = color;
54               
55               data <<= 1;
56            }
11457         }
58         else
59         {
60            for (int x = 0; x < 4; x++)
61            {
62               int color = (BIT(data, 15) << 3) | (BIT(data, 14) << 2) | (BIT(data, 7) << 1) | BIT(data, 6);
63               
64               *BITMAP_ADDR16(&bitmap, y, (sx * 8) + (x * 2)) = color;
65               *BITMAP_ADDR16(&bitmap, y, (sx * 8) + (x * 2) + 1) = color;
66               
67               data <<= 2;
68            }
69         }
70         
71         addr += 2;
11572      }
116      ma+=80;
11773   }
11874
119   return 0;
75   return false;
12076}
12177
122READ8_MEMBER( act_state::act_fdc_r )
78bool f1p_state::screen_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
12379{
124   floppy_mon_w(floppy_get_device(machine(), m_fdrv_num), CLEAR_LINE);
125   floppy_drive_set_ready_state(floppy_get_device(machine(), m_fdrv_num), 1,0);
126
127   return wd17xx_r(m_fdc, offset);
80   return false;
12881}
12982
130WRITE8_MEMBER( act_state::act_fdc_w )
83READ16_MEMBER( f1_state::palette_r )
13184{
132   floppy_mon_w(floppy_get_device(machine(), m_fdrv_num), CLEAR_LINE);
133   floppy_drive_set_ready_state(floppy_get_device(machine(), m_fdrv_num), 1,0);
134
135   wd17xx_w(m_fdc, offset, data);
136}
137
138READ16_MEMBER( act_state::act_pal_r )
139{
14085   return m_p_paletteram[offset];
14186}
14287
143WRITE16_MEMBER( act_state::act_pal_w )
88WRITE16_MEMBER( f1_state::palette_w )
14489{
14590   UINT8 i,r,g,b;
14691   COMBINE_DATA(&m_p_paletteram[offset]);
r13621r13622
156101   }
157102}
158103
159static ADDRESS_MAP_START(act_f1_mem, AS_PROGRAM, 16, act_state)
160   ADDRESS_MAP_UNMAP_HIGH
161   AM_RANGE(0x01e00,0x01fff) AM_RAM AM_BASE(m_p_scrollram)
162   AM_RANGE(0xe0000,0xe001f) AM_READWRITE(act_pal_r,act_pal_w) AM_BASE(m_p_paletteram)
163   AM_RANGE(0x00000,0xeffff) AM_RAM AM_BASE(m_p_videoram)
164   AM_RANGE(0xf0000,0xf7fff) AM_RAM
165   AM_RANGE(0xf8000,0xfffff) AM_ROM
166ADDRESS_MAP_END
167104
168static ADDRESS_MAP_START(act_f1p_mem, AS_PROGRAM, 16, act_state)
169   ADDRESS_MAP_UNMAP_HIGH
170   AM_RANGE(0x00000,0xeffff) AM_RAM AM_BASE(m_p_videoram)
171   AM_RANGE(0xf0000,0xf7fff) AM_RAM
172   AM_RANGE(0xf8000,0xfffff) AM_ROM
173ADDRESS_MAP_END
105static const gfx_layout charset_8x8 =
106{
107   8,8,
108   256,
109   1,
110   { 0 },
111   { 0, 1, 2, 3, 4, 5, 6, 7 },
112   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
113   8*8
114};
174115
175WRITE8_MEMBER( act_state::actf1_sys_w )
116
117static GFXDECODE_START( act_f1 )
118   GFXDECODE_ENTRY( I8086_TAG, 0x0800, charset_8x8, 0, 1 )
119GFXDECODE_END
120
121
122WRITE8_MEMBER( f1_state::system_w )
176123{
177124   switch(offset)
178125   {
179      case 0:
180//          cur_fdrv = ~data & 1;
181//          wd17xx_set_drive(m_fdc, m_fdc_drive);
182         break;
183      case 1:
184//          wd17xx_set_side(m_fdc, data ? 1 : 0);
185         break;
186      case 2:
187//          floppy_drive_set_motor_state(floppy_get_device(machine(), m_fdc_drive), data);
188//          floppy_drive_set_ready_state(floppy_get_device(machine(), m_fdc_drive), data, 0);
189         break;
190      case 3:
191//          data ? 256 : 200 line mode
192//          data ? 50 : 60 Hz
193         break;
194      case 4:
195//          data ? 80 : 40 columns mode
196//          data ? 14 Mhz : 7 Mhz Pixel clock
197         break;
198      case 5:
199//          caps lock LED
200         break;
201      case 6:
202//          stop LED
203         break;
126   case 0: // centronics data port
127      centronics_data_w(m_centronics, 0, data);
128      break;
129   
130   case 1: // drive select
131      wd17xx_set_drive(m_fdc, !BIT(data, 0));
132      break;
133   
134   case 3: // drive head load
135      break;
136   
137   case 5: // drive motor on
138      floppy_mon_w(m_floppy0, !BIT(data, 0));
139      break;
140   
141   case 7: // video lines (1=200, 0=256)
142      m_200_256 = BIT(data, 0);
143      break;
144   
145   case 9: // video columns (1=80, 0=40)
146      m_40_80 = BIT(data, 0);
147      break;
148   
149   case 0x0b: // LED 0 enable
150      break;
151   
152   case 0x0d: // LED 1 enable
153      break;
154   
155   case 0x0f: // centronics strobe output
156      centronics_strobe_w(m_centronics, !BIT(data, 0));
157      break;
204158   }
205159}
206160
207static ADDRESS_MAP_START( act_f1_io, AS_IO, 16, act_state )
161
162
163//**************************************************************************
164//  KEYBOARD
165//**************************************************************************
166
167UINT8 f1_state::read_keyboard()
168{
169   UINT8 data = 0xff;
170   
171   if (!BIT(m_kb_y, 0)) data &= input_port_read(machine(), "Y0");
172   if (!BIT(m_kb_y, 1)) data &= input_port_read(machine(), "Y1");
173   if (!BIT(m_kb_y, 2)) data &= input_port_read(machine(), "Y2");
174   if (!BIT(m_kb_y, 3)) data &= input_port_read(machine(), "Y3");
175   if (!BIT(m_kb_y, 4)) data &= input_port_read(machine(), "Y4");
176   if (!BIT(m_kb_y, 5)) data &= input_port_read(machine(), "Y5");
177   if (!BIT(m_kb_y, 6)) data &= input_port_read(machine(), "Y6");
178   if (!BIT(m_kb_y, 7)) data &= input_port_read(machine(), "Y7");
179   if (!BIT(m_kb_y, 8)) data &= input_port_read(machine(), "Y8");
180   if (!BIT(m_kb_y, 9)) data &= input_port_read(machine(), "Y9");
181   if (!BIT(m_kb_y, 10)) data &= input_port_read(machine(), "YA");
182   if (!BIT(m_kb_y, 11)) data &= input_port_read(machine(), "YB");
183   if (!BIT(m_kb_y, 12)) data &= input_port_read(machine(), "YC");
184   
185   return data;
186}
187
188
189READ8_MEMBER( f1_state::kb_lo_r )
190{
191   return read_keyboard() & 0x0f;
192}
193
194
195READ8_MEMBER( f1_state::kb_hi_r )
196{
197   return read_keyboard() >> 4;
198}
199
200
201READ8_MEMBER( f1_state::kb_p6_r )
202{
203   /*
204   
205      bit      description
206     
207      P60     
208      P61      SHIFT
209      P62      CONTROL
210   
211   */
212
213   UINT8 modifiers = input_port_read(machine(), "MODIFIERS");
214   
215   return modifiers << 1;
216}
217
218
219WRITE8_MEMBER( f1_state::kb_p3_w )
220{
221   // bit 1 controls the IR LEDs
222}
223
224
225WRITE8_MEMBER( f1_state::kb_y0_w )
226{
227   m_kb_y = (m_kb_y & 0xfff0) | (data & 0x0f);
228}
229
230
231WRITE8_MEMBER( f1_state::kb_y4_w )
232{
233   m_kb_y = (m_kb_y & 0xff0f) | ((data & 0x0f) << 4);
234}
235
236
237WRITE8_MEMBER( f1_state::kb_y8_w )
238{
239   m_kb_y = (m_kb_y & 0xf0ff) | ((data & 0x0f) << 8);
240}
241
242
243WRITE8_MEMBER( f1_state::kb_yc_w )
244{
245   m_kb_y = (m_kb_y & 0xf0ff) | ((data & 0x0f) << 12);
246}
247
248
249
250//**************************************************************************
251//  ADDRESS MAPS
252//**************************************************************************
253
254//-------------------------------------------------
255//  ADDRESS_MAP( act_f1_mem )
256//-------------------------------------------------
257
258static ADDRESS_MAP_START( act_f1_mem, AS_PROGRAM, 16, f1_state )
208259   ADDRESS_MAP_UNMAP_HIGH
209   AM_RANGE(0x0000, 0x000f) AM_WRITE8(actf1_sys_w, 0x00ff)
210   AM_RANGE(0x0010, 0x0017) AM_DEVREADWRITE8_LEGACY("ctc",z80ctc_r, z80ctc_w,0x00ff)
211//  AM_RANGE(0x0020, 0x0027) z80 sio (!)
260   AM_RANGE(0x00000, 0x01dff) AM_RAM
261   AM_RANGE(0x01e00, 0x01fff) AM_RAM AM_BASE(m_p_scrollram)
262   AM_RANGE(0x02000, 0x3ffff) AM_RAM
263   AM_RANGE(0xe0000, 0xe001f) AM_READWRITE(palette_r, palette_w) AM_BASE(m_p_paletteram)
264   AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION(I8086_TAG, 0)
265ADDRESS_MAP_END
266
267
268//-------------------------------------------------
269//  ADDRESS_MAP( act_f1p_mem )
270//-------------------------------------------------
271
272static ADDRESS_MAP_START( act_f1p_mem, AS_PROGRAM, 16, f1p_state )
273   ADDRESS_MAP_UNMAP_HIGH
274   AM_RANGE(0x00000, 0xeffff) AM_RAM// AM_BASE(m_p_videoram)
275   AM_RANGE(0xf0000, 0xf7fff) AM_RAM
276   AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION(I8086_TAG, 0)
277ADDRESS_MAP_END
278
279
280//-------------------------------------------------
281//  ADDRESS_MAP( act_f1_io )
282//-------------------------------------------------
283
284static ADDRESS_MAP_START( act_f1_io, AS_IO, 16, f1_state )
285   ADDRESS_MAP_UNMAP_HIGH
286   AM_RANGE(0x0000, 0x000f) AM_WRITE8(system_w, 0xffff)
287   AM_RANGE(0x0010, 0x0017) AM_DEVREADWRITE8_LEGACY(Z80CTC_TAG, z80ctc_r, z80ctc_w, 0x00ff)
288   AM_RANGE(0x0020, 0x0027) AM_DEVREADWRITE8_LEGACY(Z80SIO2_TAG, z80dart_ba_cd_r, z80dart_ba_cd_w, 0x00ff)
212289//  AM_RANGE(0x0030, 0x0031) AM_WRITE8_LEGACY(ctc_ack_w, 0x00ff)
213   AM_RANGE(0x0040, 0x0047) AM_MIRROR(4) AM_READWRITE8(act_fdc_r, act_fdc_w,0x00ff)
290   AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8_LEGACY(WD2797_TAG, wd17xx_r, wd17xx_w, 0x00ff)
214291//  AM_RANGE(0x01e0, 0x01ff) winchester
215292ADDRESS_MAP_END
216293
217/* Input ports */
294
295//-------------------------------------------------
296//  ADDRESS_MAP( kb_io )
297//-------------------------------------------------
298/*
299static ADDRESS_MAP_START( kb_io, AS_IO, 8, f1_state )
300   AM_RANGE(0x00, 0x00) AM_READ(kb_lo_r)
301   AM_RANGE(0x01, 0x01) AM_READ(kb_hi_r)
302   AM_RANGE(0x03, 0x03) AM_WRITE(kb_p3_w)
303   AM_RANGE(0x04, 0x04) AM_WRITE(kb_y0_w)
304   AM_RANGE(0x05, 0x05) AM_WRITE(kb_y4_w)
305   AM_RANGE(0x06, 0x06) AM_READWRITE(kb_p6_r, kb_yc_w)
306   AM_RANGE(0x07, 0x07) AM_WRITE(kb_y8_w)
307ADDRESS_MAP_END
308*/
309
310
311//**************************************************************************
312//  INPUT PORTS
313//**************************************************************************
314
315//-------------------------------------------------
316//  INPUT_PORTS( act )
317//-------------------------------------------------
318
218319static INPUT_PORTS_START( act )
320   PORT_START("Y0")
321   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
322   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
323   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
324   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
325   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
326   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
327   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
328   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
329   
330   PORT_START("Y1")
331   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
332   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
333   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
334   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
335   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
336   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
337   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
338   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
339   
340   PORT_START("Y2")
341   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
342   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
343   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
344   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
345   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
346   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
347   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
348   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
349   
350   PORT_START("Y3")
351   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
352   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
353   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
354   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
355   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
356   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
357   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
358   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
359   
360   PORT_START("Y4")
361   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
362   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
363   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
364   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
365   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
366   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
367   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
368   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
369   
370   PORT_START("Y5")
371   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
372   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
373   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
374   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
375   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
376   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
377   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
378   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
379   
380   PORT_START("Y6")
381   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
382   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
383   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
384   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
385   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
386   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
387   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
388   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
389   
390   PORT_START("Y7")
391   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
392   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
393   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
394   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
395   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
396   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
397   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
398   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
399   
400   PORT_START("Y8")
401   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
402   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
403   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
404   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
405   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
406   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
407   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
408   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
409   
410   PORT_START("Y9")
411   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
412   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
413   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
414   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
415   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
416   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
417   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
418   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
419   
420   PORT_START("YA")
421   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
422   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
423   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
424   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
425   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
426   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
427   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
428   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
429   
430   PORT_START("YB")
431   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
432   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
433   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
434   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
435   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
436   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
437   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
438   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
439   
440   PORT_START("YC")
441   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
442   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
443   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
444   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
445   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
446   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
447   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
448   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
449
450   PORT_START("MODIFIERS")
451   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CTRL") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL))
452   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("SHIFT") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
219453INPUT_PORTS_END
220454
221455
222static MACHINE_RESET(act)
456
457//**************************************************************************
458//  DEVICE CONFIGURATION
459//**************************************************************************
460
461//-------------------------------------------------
462//  Z80DART_INTERFACE( sio_intf )
463//-------------------------------------------------
464
465WRITE_LINE_MEMBER( f1_state::sio_int_w )
223466{
467   m_sio_int = state;
468   
469   m_maincpu->set_input_line(INPUT_LINE_IRQ0, m_ctc_int | m_sio_int);
224470}
225471
226
227static const gfx_layout charset_8x8 =
472static Z80DART_INTERFACE( sio_intf )
228473{
229   8,8,
230   RGN_FRAC(1,1),
231   1,
232   { 0 },
233   { 0, 1, 2, 3, 4, 5, 6, 7 },
234   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
235   8*8
236};
474   0, 0, 0, 0,
237475
238static GFXDECODE_START( act_f1 )
239   GFXDECODE_ENTRY( "chargen", 0x00000, charset_8x8, 0, 1 )
240GFXDECODE_END
476   DEVCB_NULL,
477   DEVCB_NULL,
478   DEVCB_NULL,
479   DEVCB_NULL,
480   DEVCB_NULL,
481   DEVCB_NULL,
241482
242static Z80CTC_INTERFACE( ctc_intf )
243{
244   0,               // timer disables
245   DEVCB_NULL,      // interrupt handler
246   DEVCB_NULL,      // ZC/TO0 callback
247   DEVCB_NULL,      // ZC/TO1 callback
248   DEVCB_NULL,      // ZC/TO2 callback
483   DEVCB_NULL,
484   DEVCB_NULL,
485   DEVCB_NULL,
486   DEVCB_NULL,
487   DEVCB_NULL,
488   DEVCB_NULL,
489
490   DEVCB_DRIVER_LINE_MEMBER(f1_state, sio_int_w)
249491};
250492
251#if 0
252493
253static const z80sio_interface sio_intf =
494//-------------------------------------------------
495//  Z80CTC_INTERFACE( ctc_intf )
496//-------------------------------------------------
497
498WRITE_LINE_MEMBER( f1_state::ctc_int_w )
254499{
255   0,               /* interrupt handler */
256   0,               /* DTR changed handler */
257   0,               /* RTS changed handler */
258   0,               /* BREAK changed handler */
259   0,               /* transmit handler */
260   0               /* receive handler */
261};
262#endif
500   m_ctc_int = state;
501   
502   m_maincpu->set_input_line(INPUT_LINE_IRQ0, m_ctc_int | m_sio_int);
503}
263504
264#if 0
265static const z80_daisy_config x1_daisy[] =
505WRITE_LINE_MEMBER( f1_state::ctc_z1_w )
266506{
267   { "ctc" },
268   { NULL }
269};
270#endif
507   z80dart_rxcb_w(m_sio, state);
508   z80dart_txcb_w(m_sio, state);
509}
271510
272static INTERRUPT_GEN( act_f1_irq )
511WRITE_LINE_MEMBER( f1_state::ctc_z2_w )
273512{
274   //if(device->machine().input().code_pressed(KEYCODE_C))
275   //  device_set_input_line_and_vector(device,0,HOLD_LINE,0x60);
513   z80dart_txca_w(m_sio, state);
276514}
277515
516static Z80CTC_INTERFACE( ctc_intf )
517{
518   0,               // timer disables
519   DEVCB_DRIVER_LINE_MEMBER(f1_state, ctc_int_w),      // interrupt handler
520   DEVCB_NULL,      // ZC/TO0 callback
521   DEVCB_DRIVER_LINE_MEMBER(f1_state, ctc_z1_w),   // ZC/TO1 callback
522   DEVCB_DRIVER_LINE_MEMBER(f1_state, ctc_z2_w),   // ZC/TO2 callback
523};
524
525
526//-------------------------------------------------
527//  wd17xx_interface fdc_intf
528//-------------------------------------------------
529
278530static LEGACY_FLOPPY_OPTIONS_START( act )
279531   LEGACY_FLOPPY_OPTION( img2hd, "dsk", "2HD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
280532      HEADS([2])
r13621r13622
291543   DEVCB_NULL,
292544   DEVCB_NULL,
293545   DEVCB_NULL,
294   FLOPPY_STANDARD_5_25_DSHD,
546   FLOPPY_STANDARD_3_5_DSDD, // Sony OA-D32W
295547   LEGACY_FLOPPY_OPTIONS_NAME(act),
296   NULL,
548   "floppy_3_5",
297549   NULL
298550};
299551
300static MACHINE_CONFIG_START( act_f1, act_state )
552static const wd17xx_interface fdc_intf =
553{
554   DEVCB_NULL,
555   DEVCB_CPU_INPUT_LINE(I8086_TAG, INPUT_LINE_NMI),
556   DEVCB_CPU_INPUT_LINE(I8086_TAG, INPUT_LINE_TEST), // TODO inverted?
557   { FLOPPY_0, NULL, NULL, NULL }
558};
301559
560
561//-------------------------------------------------
562//  centronics_interface centronics_intf
563//-------------------------------------------------
564
565static const centronics_interface centronics_intf =
566{
567   0,
568   DEVCB_NULL,
569   DEVCB_DEVICE_LINE(Z80SIO2_TAG, z80dart_ctsa_w),
570   DEVCB_NULL
571};
572
573
574
575//**************************************************************************
576//  MACHINE DRIVERS
577//**************************************************************************
578
579//-------------------------------------------------
580//  MACHINE_CONFIG( act_f1 )
581//-------------------------------------------------
582
583static MACHINE_CONFIG_START( act_f1, f1_state )
302584   /* basic machine hardware */
303   MCFG_CPU_ADD("maincpu", I8086, 4670000)
585   MCFG_CPU_ADD(I8086_TAG, I8086, XTAL_14MHz/4)
304586   MCFG_CPU_PROGRAM_MAP(act_f1_mem)
305587   MCFG_CPU_IO_MAP(act_f1_io)
306   MCFG_CPU_VBLANK_INT("screen",act_f1_irq )
307//  MCFG_CPU_CONFIG(x1_daisy)
308588
309   MCFG_MACHINE_RESET(act)
310
311589   /* video hardware */
312   MCFG_SCREEN_ADD("screen", RASTER)
590   MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
313591   MCFG_SCREEN_REFRESH_RATE(50)
314592   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
315593   MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
316594   MCFG_SCREEN_SIZE(640, 256)
317595   MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 256-1)
318   MCFG_VIDEO_START(act_f1)
319   MCFG_SCREEN_UPDATE(act_f1)
320596   MCFG_PALETTE_LENGTH(16)
321//  MCFG_PALETTE_INIT(black_and_white)
322597   MCFG_GFXDECODE(act_f1)
323598
324599   /* Devices */
325   MCFG_Z80CTC_ADD( "ctc", 4670000 , ctc_intf )
326   MCFG_WD2793_ADD( "fdc", default_wd17xx_interface_2_drives )
600   MCFG_Z80DART_ADD(Z80SIO2_TAG, 2500000, sio_intf)
601   MCFG_Z80CTC_ADD(Z80CTC_TAG, 2500000, ctc_intf)
602   MCFG_WD2797_ADD(WD2797_TAG, fdc_intf)
327603   MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(act_floppy_interface)
604   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_intf)
328605MACHINE_CONFIG_END
329606
330static MACHINE_CONFIG_DERIVED( act_f1p, act_f1 )
331   MCFG_CPU_MODIFY("maincpu")
607
608//-------------------------------------------------
609//  MACHINE_CONFIG( act_f1p )
610//-------------------------------------------------
611
612static MACHINE_CONFIG_START( act_f1p, f1p_state )
613   /* basic machine hardware */
614   MCFG_CPU_ADD(I8086_TAG, I8086, XTAL_15MHz/3)
332615   MCFG_CPU_PROGRAM_MAP(act_f1p_mem)
333   MCFG_SCREEN_MODIFY("screen")
334   MCFG_SCREEN_UPDATE(act_f1p)
616   MCFG_CPU_IO_MAP(act_f1_io)
617/*
618   MCFG_CPU_ADD(UPD7507C_TAG, UPD7507, XTAL_32_768kHz)
619   MCFG_CPU_IO_MAP(kb_io)
620*/
621   /* video hardware */
622   MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
623   MCFG_SCREEN_REFRESH_RATE(50)
624   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
625   MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
626   MCFG_SCREEN_SIZE(640, 256)
627   MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 256-1)
628   MCFG_PALETTE_LENGTH(2)
335629   MCFG_PALETTE_INIT(black_and_white)
630   MCFG_GFXDECODE(act_f1)
631   MCFG_DEFAULT_LAYOUT( layout_lcd )
632
633   /* Devices */
634   MCFG_Z80DART_ADD(Z80SIO2_TAG, 2500000, sio_intf)
635   MCFG_Z80CTC_ADD(Z80CTC_TAG, 2500000, ctc_intf)
636   MCFG_WD2797_ADD(WD2797_TAG, fdc_intf)
637   MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(act_floppy_interface)
638   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_intf)
336639MACHINE_CONFIG_END
337640
338/* ROM definition */
339ROM_START( aprif1 )
340   ROM_REGION( 0x100000, "maincpu", ROMREGION_ERASEFF )
341   ROM_LOAD16_BYTE( "lo_f1_1.6.8f",  0xf8000, 0x4000, CRC(be018be2) SHA1(80b97f5b2111daf112c69b3f58d1541a4ba69da0) )   // Labelled F1 - LO Vr. 1.6
342   ROM_LOAD16_BYTE( "hi_f1_1.6.10f", 0xf8001, 0x4000, CRC(bbba77e2) SHA1(e62bed409eb3198f4848f85fccd171cd0745c7c0) )   // Labelled F1 - HI Vr. 1.6
343641
344   ROM_REGION( 0x00800, "chargen", ROMREGION_ERASEFF )
345   ROM_COPY( "maincpu", 0xf8800, 0x00000, 0x00800 )
642
643//**************************************************************************
644//  ROMS
645//**************************************************************************
646
647//-------------------------------------------------
648//  ROM( f1 )
649//-------------------------------------------------
650
651ROM_START( f1 )
652   ROM_REGION( 0x8000, I8086_TAG, 0 )
653   ROM_LOAD16_BYTE( "lo_f1_1.6.8f",  0x0000, 0x4000, CRC(be018be2) SHA1(80b97f5b2111daf112c69b3f58d1541a4ba69da0) )   // Labelled F1 - LO Vr. 1.6
654   ROM_LOAD16_BYTE( "hi_f1_1.6.10f", 0x0001, 0x4000, CRC(bbba77e2) SHA1(e62bed409eb3198f4848f85fccd171cd0745c7c0) )   // Labelled F1 - HI Vr. 1.6
655
656   ROM_REGION( 0x800, UPD7507C_TAG, 0 )
657   ROM_LOAD( "keyboard controller upd7507c.ic2", 0x000, 0x800, NO_DUMP )
346658ROM_END
347659
348ROM_START( aprif10 )
349   ROM_REGION( 0x100000, "maincpu", ROMREGION_ERASEFF )
350   ROM_LOAD16_BYTE( "lo_f10_3.1.1.8f",  0xf8000, 0x4000, CRC(bfd46ada) SHA1(0a36ef379fa9af7af9744b40c167ce6e12093485) )   // Labelled LO-FRange Vr3.1.1
351   ROM_LOAD16_BYTE( "hi_f10_3.1.1.10f", 0xf8001, 0x4000, CRC(67ad5b3a) SHA1(a5ececb87476a30167cf2a4eb35c03aeb6766601) )   // Labelled HI-FRange Vr3.1.1
660#define rom_f1e rom_f1
661#define rom_f2 rom_f1
352662
353   ROM_REGION( 0x00800, "chargen", ROMREGION_ERASEFF )
354   ROM_COPY( "maincpu", 0xf8800, 0x00000, 0x00800 )
663
664//-------------------------------------------------
665//  ROM( f10 )
666//-------------------------------------------------
667
668ROM_START( f10 )
669   ROM_REGION( 0x8000, I8086_TAG, 0 )
670   ROM_LOAD16_BYTE( "lo_f10_3.1.1.8f",  0x0000, 0x4000, CRC(bfd46ada) SHA1(0a36ef379fa9af7af9744b40c167ce6e12093485) )   // Labelled LO-FRange Vr3.1.1
671   ROM_LOAD16_BYTE( "hi_f10_3.1.1.10f", 0x0001, 0x4000, CRC(67ad5b3a) SHA1(a5ececb87476a30167cf2a4eb35c03aeb6766601) )   // Labelled HI-FRange Vr3.1.1
672
673   ROM_REGION( 0x800, UPD7507C_TAG, 0 )
674   ROM_LOAD( "keyboard controller upd7507c.ic2", 0x000, 0x800, NO_DUMP )
355675ROM_END
356676
357ROM_START( aprifp )
358   ROM_REGION( 0x100000, "maincpu", ROMREGION_ERASEFF )
359   ROM_LOAD16_BYTE( "lo_fp_3.1.ic20", 0xf8000, 0x4000, CRC(0572add2) SHA1(c7ab0e5ced477802e37f9232b5673f276b8f5623) )   // Labelled 11212721 F97E PORT LO VR 3.1
360   ROM_LOAD16_BYTE( "hi_fp_3.1.ic9",  0xf8001, 0x4000, CRC(3903674b) SHA1(8418682dcc0c52416d7d851760fea44a3cf2f914) )   // Labelled 11212721 BD2D PORT HI VR 3.1
361677
362   ROM_REGION( 0x00800, "chargen", ROMREGION_ERASEFF )
363   ROM_COPY( "maincpu", 0xf8500, 0x00000, 0x00800 )
678//-------------------------------------------------
679//  ROM( fp )
680//-------------------------------------------------
681
682ROM_START( fp )
683   ROM_REGION( 0x8000, I8086_TAG, 0 )
684   ROM_LOAD16_BYTE( "lo_fp_3.1.ic20", 0x0000, 0x4000, CRC(0572add2) SHA1(c7ab0e5ced477802e37f9232b5673f276b8f5623) )   // Labelled 11212721 F97E PORT LO VR 3.1
685   ROM_LOAD16_BYTE( "hi_fp_3.1.ic9",  0x0001, 0x4000, CRC(3903674b) SHA1(8418682dcc0c52416d7d851760fea44a3cf2f914) )   // Labelled 11212721 BD2D PORT HI VR 3.1
686
687   ROM_REGION( 0x1000, "hd63b01v1", 0 )
688   ROM_LOAD( "voice interface hd63b01v01.ic29", 0x0000, 0x1000, NO_DUMP )
689
690   ROM_REGION( 0x800, UPD7507C_TAG, 0 )
691   ROM_LOAD( "keyboard controller upd7507c.ic2", 0x000, 0x800, NO_DUMP )
364692ROM_END
365693
366/* Driver */
367694
368/*    YEAR  NAME       PARENT  COMPAT  MACHINE    INPUT   INIT   COMPANY  FULLNAME                 FLAGS */
369COMP( 1984, aprif1,    0,      0,      act_f1,    act,    0,     "ACT",   "Apricot F1",            GAME_NOT_WORKING | GAME_NO_SOUND )
370COMP( 1985, aprif10,   0,      0,      act_f1,    act,    0,     "ACT",   "Apricot F10",           GAME_NOT_WORKING | GAME_NO_SOUND )
371COMP( 1984, aprifp,    0,      0,      act_f1p,   act,    0,     "ACT",   "Apricot Portable / FP", GAME_NOT_WORKING | GAME_NO_SOUND )
695
696//**************************************************************************
697//  SYSTEM DRIVERS
698//**************************************************************************
699
700//    YEAR  NAME        PARENT      COMPAT  MACHINE     INPUT   INIT     COMPANY             FULLNAME        FLAGS
701COMP( 1984, f1,    0,      0,      act_f1,    act,    0,     "ACT",   "Apricot F1",            GAME_NOT_WORKING | GAME_NO_SOUND )
702COMP( 1984, f1e,   f1,     0,      act_f1,    act,    0,     "ACT",   "Apricot F1e",           GAME_NOT_WORKING | GAME_NO_SOUND )
703COMP( 1984, f2,    f1,     0,      act_f1,    act,    0,     "ACT",   "Apricot F2",            GAME_NOT_WORKING | GAME_NO_SOUND )
704COMP( 1985, f10,   f1,     0,      act_f1,    act,    0,     "ACT",   "Apricot F10",           GAME_NOT_WORKING | GAME_NO_SOUND )
705COMP( 1984, fp,    0,      0,      act_f1p,   act,    0,     "ACT",   "Apricot Portable / FP", GAME_NOT_WORKING | GAME_NO_SOUND )

Previous 15994 Revisions Next


© 1998-2018 The MESS Team