Previous 15994 Revisions Next

r9782 Thursday 16th December, 2010 at 14:33:40 UTC by Curt Coder
[ABC1600] Keyboard WIP.
[docs]messnew.txt
[src/emu/video]mc6845.c mc6845.h
[src/mess/drivers]abc1600.c
[src/mess/includes]abc1600.h
[src/mess/machine]abc99.c abc99.h

src/emu/video/mc6845.c
r9781r9782
3939   TYPE_H46505,
4040   TYPE_HD6845,
4141   TYPE_SY6545_1,
42   TYPE_SY6845E,
4243
4344   NUM_TYPES
4445};
4546
4647/* mode macros */
47
4848#define MODE_TRANSPARENT(d)            (((d)->mode_control & 0x08) != 0)
4949#define MODE_TRANSPARENT_PHI2(d)      (((d)->mode_control & 0x88) == 0x88)
5050/* FIXME: not supported yet */
5151#define MODE_TRANSPARENT_BLANK(d)      (((d)->mode_control & 0x88) == 0x08)
5252#define MODE_UPDATE_STROBE(d)         (((d)->mode_control & 0x40) != 0)
53#define MODE_CURSOR_SKEW(d)            (((d)->mode_control & 0x20) != 0)
54#define MODE_DISPLAY_ENABLE_SKEW(d)      (((d)->mode_control & 0x10) != 0)
55#define MODE_ROW_COLUMN_ADDRESSING(d)   (((d)->mode_control & 0x04) != 0)
5356
54/* capabilities */                                     /* MC6845    MC6845-1    C6545-1    R6545-1    H46505    HD6845    SY6545-1 */
55static const int supports_disp_start_addr_r[NUM_TYPES] = {  TRUE,       TRUE,     FALSE,     FALSE,    FALSE,    FALSE,      FALSE };
56static const int supports_vert_sync_width[NUM_TYPES]   = { FALSE,       TRUE,      TRUE,      TRUE,    FALSE,     TRUE,       TRUE };
57static const int supports_status_reg_d5[NUM_TYPES]     = { FALSE,      FALSE,      TRUE,      TRUE,    FALSE,    FALSE,       TRUE };
58static const int supports_status_reg_d6[NUM_TYPES]     = { FALSE,      FALSE,      TRUE,      TRUE,    FALSE,    FALSE,       TRUE };
57/* capabilities */                                     /* MC6845    MC6845-1    C6545-1    R6545-1    H46505    HD6845    SY6545-1     SY6845E */
58static const int supports_disp_start_addr_r[NUM_TYPES] = {  TRUE,       TRUE,     FALSE,     FALSE,    FALSE,    FALSE,      FALSE,      FALSE };
59static const int supports_vert_sync_width[NUM_TYPES]   = { FALSE,       TRUE,      TRUE,      TRUE,    FALSE,     TRUE,       TRUE,       TRUE };
60static const int supports_status_reg_d5[NUM_TYPES]     = { FALSE,      FALSE,      TRUE,      TRUE,    FALSE,    FALSE,       TRUE,       TRUE };
61static const int supports_status_reg_d6[NUM_TYPES]     = { FALSE,      FALSE,      TRUE,      TRUE,    FALSE,    FALSE,       TRUE,       TRUE };
5962
6063/* FIXME: check other variants */
61static const int supports_status_reg_d7[NUM_TYPES]     = { FALSE,      FALSE,     FALSE,      TRUE,    FALSE,    FALSE,       TRUE };
64static const int supports_status_reg_d7[NUM_TYPES]     = { FALSE,      FALSE,     FALSE,      TRUE,    FALSE,    FALSE,       TRUE,       TRUE };
6265
6366/* FIXME: check other variants */
64static const int supports_transparent[NUM_TYPES]       = { FALSE,      FALSE,     FALSE,      TRUE,    FALSE,    FALSE,       TRUE };
67static const int supports_transparent[NUM_TYPES]       = { FALSE,      FALSE,     FALSE,      TRUE,    FALSE,    FALSE,       TRUE,       TRUE };
6568
6669
6770typedef struct _mc6845_t mc6845_t;
r9781r9782
169172         (device->type() == R6545_1) ||
170173         (device->type() == H46505) ||
171174         (device->type() == HD6845) ||
172         (device->type() == SY6545_1));
175         (device->type() == SY6545_1) ||
176         (device->type() == SY6845E));
173177
174178   return (mc6845_t *)downcast<legacy_device_base *>(device)->token();
175179}
r9781r9782
982986   common_start(device, TYPE_SY6545_1);
983987}
984988
989static DEVICE_START( sy6845e )
990{
991   common_start(device, TYPE_SY6845E);
992}
985993
994
986995static DEVICE_RESET( mc6845 )
987996{
988997   mc6845_t *mc6845 = get_safe_token(device);
r9781r9782
10621071   switch (state)
10631072   {
10641073      /* --- the following bits of info are returned as NULL-terminated strings --- */
1065      case DEVINFO_STR_NAME:                     strcpy(info->s, "Motorla 6845-1");         break;
1074      case DEVINFO_STR_NAME:                     strcpy(info->s, "Motorola 6845-1");         break;
10661075
10671076      /* --- the following bits of info are returned as pointers to data or functions --- */
10681077      case DEVINFO_FCT_START:                     info->start = DEVICE_START_NAME(mc6845_1);   break;
r9781r9782
11471156}
11481157
11491158
1159DEVICE_GET_INFO( sy6845e )
1160{
1161   switch (state)
1162   {
1163      /* --- the following bits of info are returned as NULL-terminated strings --- */
1164      case DEVINFO_STR_NAME:                     strcpy(info->s, "Synertek 6845E");         break;
1165
1166      /* --- the following bits of info are returned as pointers to data or functions --- */
1167      case DEVINFO_FCT_START:                     info->start = DEVICE_START_NAME(sy6845e);   break;
1168
1169      default:                              DEVICE_GET_INFO_CALL(mc6845);            break;
1170   }
1171}
1172
11501173DEFINE_LEGACY_DEVICE(MC6845, mc6845);
11511174DEFINE_LEGACY_DEVICE(MC6845_1, mc6845_1);
11521175DEFINE_LEGACY_DEVICE(R6545_1, r6545_1);
r9781r9782
11541177DEFINE_LEGACY_DEVICE(H46505, h46505);
11551178DEFINE_LEGACY_DEVICE(HD6845, hd6845);
11561179DEFINE_LEGACY_DEVICE(SY6545_1, sy6545_1);
1180DEFINE_LEGACY_DEVICE(SY6845E, sy6845e);
src/emu/video/mc6845.h
r9781r9782
1919DECLARE_LEGACY_DEVICE(H46505, h46505);
2020DECLARE_LEGACY_DEVICE(HD6845, hd6845);
2121DECLARE_LEGACY_DEVICE(SY6545_1, sy6545_1);
22DECLARE_LEGACY_DEVICE(SY6845E, sy6845e);
2223
2324
2425#define MDRV_MC6845_ADD(_tag, _variant, _clock, _config) \
src/mess/machine/abc99.c
r9781r9782
2222Notes:
2323    Relevant IC's shown.
2424
25    CPU0      - STMicro ET8035N-6
26   CPU1      - STMicro ET8035N-6
27   ROM0      - Texas Instruments TMS2516JL-16 "107268-16"
28   ROM1      - STMicro ET2716Q-1 "107268-17"
29   GI         - General Insruments 321239007 "4=7"
30    CN1         - DB15 mouse connector
31    CN1         - 12 pin PCB header
25    CPU0      - STMicro ET8035N-6 8035 CPU
26   CPU1      - STMicro ET8035N-6 8035 CPU
27   ROM0      - Texas Instruments TMS2516JL-16 2Kx8 ROM "107268-16"
28   ROM1      - STMicro ET2716Q-1 2Kx8 ROM "107268-17"
29   GI         - General Instruments 321239007 keyboard chip "4=7"
30    CN1         - DB15 connector, Luxor ABC R8 (3 button mouse)
31    CN2         - 12 pin PCB header, keyboard data cable
32   SW1         - reset switch?
3233
3334*/
3435
36#define ADDRESS_MAP_MODERN
37
3538#include "emu.h"
3639#include "abc99.h"
3740#include "cpu/mcs48/mcs48.h"
r9781r9782
4346//   MACROS / CONSTANTS
4447//**************************************************************************
4548
49#define I8035_Z2_TAG      "z2"
4650#define I8035_Z5_TAG      "z5"
47#define I8035_Z2_TAG      "z2"
4851
4952
5053
r9781r9782
7982//-------------------------------------------------
8083
8184ROM_START( abc99 )
85   ROM_REGION( 0x800, I8035_Z2_TAG, 0 )
86   ROM_LOAD( "107268-17.z3", 0x000, 0x800, CRC(2f60cc35) SHA1(ebc6af9cd0a49a0d01698589370e628eebb6221c) )
87
8288   ROM_REGION( 0x800, I8035_Z5_TAG, 0 )
8389   ROM_LOAD( "107268-16.z6", 0x000, 0x800, CRC(785ec0c6) SHA1(0b261beae20dbc06fdfccc50b19ea48b5b6e22eb) )
8490
85   ROM_REGION( 0x800, I8035_Z2_TAG, 0 )
86   ROM_LOAD( "107268-17.z3", 0x000, 0x800, CRC(2f60cc35) SHA1(ebc6af9cd0a49a0d01698589370e628eebb6221c) )
87
8891   ROM_REGION( 0x1800, "investigate", 0)
8992   ROM_LOAD( "106819-09.bin", 0x0000, 0x1000, CRC(ffe32a71) SHA1(fa2ce8e0216a433f9bbad0bdd6e3dc0b540f03b7) )
9093   ROM_LOAD( "107268-64.bin", 0x1000, 0x0800, CRC(e33683ae) SHA1(0c1d9e320f82df05f4804992ef6f6f6cd20623f3) )
r9781r9782
102105
103106
104107//-------------------------------------------------
105//  ADDRESS_MAP( abc99_z5_mem )
108//  ADDRESS_MAP( abc99_z2_mem )
106109//-------------------------------------------------
107110
108static ADDRESS_MAP_START( abc99_z5_mem, ADDRESS_SPACE_PROGRAM, 8 )
109   AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("abc99:z5", 0)
111static ADDRESS_MAP_START( abc99_z2_mem, ADDRESS_SPACE_PROGRAM, 8, abc99_device )
112   AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("abc99:z2", 0)
110113ADDRESS_MAP_END
111114
112115
113116//-------------------------------------------------
114//  ADDRESS_MAP( abc99_z3_mem )
117//  ADDRESS_MAP( abc99_z2_io )
115118//-------------------------------------------------
116119
117static ADDRESS_MAP_START( abc99_z2_mem, ADDRESS_SPACE_PROGRAM, 8 )
118   AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("abc99:z2", 0)
120static ADDRESS_MAP_START( abc99_z2_io, ADDRESS_SPACE_IO, 8, abc99_device )
121   AM_RANGE(0x30, 0x30) AM_READ_PORT("X0") AM_WRITENOP
122   AM_RANGE(0x31, 0x31) AM_READ_PORT("X1") AM_WRITENOP
123   AM_RANGE(0x32, 0x32) AM_READ_PORT("X2") AM_WRITENOP
124   AM_RANGE(0x33, 0x33) AM_READ_PORT("X3") AM_WRITENOP
125   AM_RANGE(0x34, 0x34) AM_READ_PORT("X4") AM_WRITENOP
126   AM_RANGE(0x35, 0x35) AM_READ_PORT("X5") AM_WRITENOP
127   AM_RANGE(0x36, 0x36) AM_READ_PORT("X6") AM_WRITENOP
128   AM_RANGE(0x37, 0x37) AM_READ_PORT("X7") AM_WRITENOP
129   AM_RANGE(0x38, 0x38) AM_READ_PORT("X8") AM_WRITENOP
130   AM_RANGE(0x39, 0x39) AM_READ_PORT("X9") AM_WRITENOP
131   AM_RANGE(0x3a, 0x3a) AM_READ_PORT("X10") AM_WRITENOP
132   AM_RANGE(0x3b, 0x3b) AM_READ_PORT("X11") AM_WRITENOP
133   AM_RANGE(0x3c, 0x3c) AM_READ_PORT("X12") AM_WRITENOP
134   AM_RANGE(0x3d, 0x3d) AM_READ_PORT("X13") AM_WRITENOP
135   AM_RANGE(0x3e, 0x3e) AM_READ_PORT("X14") AM_WRITENOP
136   AM_RANGE(0x3f, 0x3f) AM_READ_PORT("X15") AM_WRITENOP
137//   AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE(DEVICE_SELF, abc99_device, z2_p1_w)
138//   AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_DEVREAD(DEVICE_SELF, abc99_device, z2_t1_r)
119139ADDRESS_MAP_END
120140
121141
122142//-------------------------------------------------
123//  ADDRESS_MAP( abc99_z5_io )
143//  ADDRESS_MAP( abc99_z5_mem )
124144//-------------------------------------------------
125145
126static ADDRESS_MAP_START( abc99_z5_io, ADDRESS_SPACE_IO, 8 )
146static ADDRESS_MAP_START( abc99_z5_mem, ADDRESS_SPACE_PROGRAM, 8, abc99_device )
147   AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("abc99:z5", 0)
127148ADDRESS_MAP_END
128149
129150
130151//-------------------------------------------------
131//  ADDRESS_MAP( abc99_z3_io )
152//  ADDRESS_MAP( abc99_z5_io )
132153//-------------------------------------------------
133154
134static ADDRESS_MAP_START( abc99_z2_io, ADDRESS_SPACE_IO, 8 )
155static ADDRESS_MAP_START( abc99_z5_io, ADDRESS_SPACE_IO, 8, abc99_device )
156//   AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVREAD(DEVICE_SELF, abc99_device, z5_p1_r)
157//   AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_DEVWRITE(DEVICE_SELF, abc99_device, z5_p2_w)
158//   AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_DEVWRITE(DEVICE_SELF, abc99_device, z5_t0_w)
159//   AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_DEVREAD(DEVICE_SELF, abc99_device, z5_t1_r)
135160ADDRESS_MAP_END
136161
137162
r9781r9782
140165//-------------------------------------------------
141166
142167static MACHINE_CONFIG_FRAGMENT( abc99 )
168   // keyboard CPU
169   MDRV_CPU_ADD(I8035_Z2_TAG, I8035, XTAL_6MHz)
170   MDRV_CPU_PROGRAM_MAP(abc99_z2_mem)
171   MDRV_CPU_IO_MAP(abc99_z2_io)
172
173   // mouse CPU
143174   MDRV_CPU_ADD(I8035_Z5_TAG, I8035, XTAL_6MHz)
144175   MDRV_CPU_PROGRAM_MAP(abc99_z5_mem)
145176   MDRV_CPU_IO_MAP(abc99_z5_io)
146
147   MDRV_CPU_ADD(I8035_Z2_TAG, I8035, XTAL_6MHz)
148   MDRV_CPU_PROGRAM_MAP(abc99_z2_mem)
149   MDRV_CPU_IO_MAP(abc99_z2_io)
150177MACHINE_CONFIG_END
151178
152179
r9781r9782
166193//-------------------------------------------------
167194
168195INPUT_PORTS_START( abc99 )
196   PORT_START("abc99:X0")
197   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
198   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
199   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
200   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
201   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
202   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
203   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
204   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
205
206   PORT_START("abc99:X1")
207   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
208   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
209   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
210   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
211   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
212   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
213   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
214   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
215
216   PORT_START("abc99:X2")
217   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
218   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
219   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
220   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
221   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
222   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
223   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
224   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
225
226   PORT_START("abc99:X3")
227   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
228   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
229   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
230   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
231   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
232   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
233   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
234   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
235
236   PORT_START("abc99:X4")
237   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
238   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
239   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
240   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
241   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
242   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
243   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
244   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
245
246   PORT_START("abc99:X5")
247   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
248   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
249   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
250   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
251   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
252   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
253   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
254   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
255
256   PORT_START("abc99:X6")
257   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
258   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
259   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
260   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
261   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
262   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
263   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
264   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
265
266   PORT_START("abc99:X7")
267   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
268   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
269   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
270   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
271   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
272   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
273   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
274   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
275
276   PORT_START("abc99:X8")
277   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
278   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
279   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
280   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
281   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
282   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
283   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
284   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
285
286   PORT_START("abc99:X9")
287   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
288   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
289   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
290   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
291   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
292   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
293   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
294   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
295
296   PORT_START("abc99:X10")
297   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
298   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
299   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
300   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
301   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
302   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
303   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
304   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
305
306   PORT_START("abc99:X11")
307   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
308   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
309   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
310   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
311   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
312   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
313   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
314   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
315
316   PORT_START("abc99:X12")
317   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
318   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
319   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
320   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
321   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
322   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
323   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
324   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
325
326   PORT_START("abc99:X13")
327   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
328   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
329   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
330   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
331   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
332   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
333   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
334   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
335
336   PORT_START("abc99:X14")
337   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
338   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
339   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
340   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
341   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
342   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
343   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
344   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
345
346   PORT_START("abc99:X15")
347   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
348   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
349   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD )
350   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD )
351   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD )
352   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
353   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
354   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
169355INPUT_PORTS_END
170356
171357
r9781r9782
182368    : device_t(_machine, config),
183369      m_config(config)
184370{
185
186371}
187372
188373
r9781r9782
202387void abc99_device::device_reset()
203388{
204389}
390
391
392//-------------------------------------------------
393//  z2_p1_w -
394//-------------------------------------------------
395
396WRITE8_MEMBER( abc99_device::z2_p1_w )
397{
398}
399
400
401//-------------------------------------------------
402//  z2_t1_r -
403//-------------------------------------------------
404
405READ8_MEMBER( abc99_device::z2_t1_r )
406{
407   return 0;
408}
409
410
411//-------------------------------------------------
412//  z5_p1_r -
413//-------------------------------------------------
414
415READ8_MEMBER( abc99_device::z5_p1_r )
416{
417   return 0;
418}
419
420
421//-------------------------------------------------
422//  z5_p2_w -
423//-------------------------------------------------
424
425WRITE8_MEMBER( abc99_device::z5_p2_w )
426{
427}
428
429
430//-------------------------------------------------
431//  z5_t0_w -
432//-------------------------------------------------
433
434WRITE8_MEMBER( abc99_device::z5_t0_w )
435{
436}
437
438
439//-------------------------------------------------
440//  z5_t1_r -
441//-------------------------------------------------
442
443READ8_MEMBER( abc99_device::z5_t1_r )
444{
445   return 0;
446}
src/mess/machine/abc99.h
r9781r9782
7070    abc99_device(running_machine &_machine, const abc99_device_config &_config);
7171
7272public:
73   DECLARE_WRITE8_MEMBER( z2_p1_w );
74   DECLARE_READ8_MEMBER( z2_t1_r );
75   DECLARE_READ8_MEMBER( z5_p1_r );
76   DECLARE_WRITE8_MEMBER( z5_p2_w );
77   DECLARE_WRITE8_MEMBER( z5_t0_w );
78   DECLARE_READ8_MEMBER( z5_t1_r );
7379
7480protected:
7581    // device-level overrides
src/mess/includes/abc1600.h
r9781r9782
77#define Z8410AB1_0_TAG      "5g"
88#define Z8410AB1_1_TAG      "7g"
99#define Z8410AB1_2_TAG      "8g"
10#define Z8470AB1_TAG      "z80dart"
11#define Z8536B1_TAG         "z8536b1"
12#define SAB1797_02P_TAG      "sab1797"
13#define SY6845EA_TAG      "mc6845"
10#define Z8470AB1_TAG      "17b"
11#define Z8536B1_TAG         "15b"
12#define SAB1797_02P_TAG      "5a"
13#define FDC9229BT_TAG      "7a"
14#define E050_C16PC_TAG      "13b"
15#define SY6845E_TAG         "sy6845e"
1416#define Z8400A_TAG         "z80"
1517#define SCREEN_TAG         "screen"
1618
r9781r9782
2022   abc1600_state(running_machine &machine, const driver_device_config_base &config)
2123      : driver_device(machine, config),
2224        m_maincpu(*this, MC68008P8_TAG),
23        m_crtc(*this, SY6845EA_TAG)
25        m_crtc(*this, SY6845E_TAG)
2426   { }
2527
2628   required_device<cpu_device> m_maincpu;
r9781r9782
2830
2931   virtual void machine_start();
3032
33   virtual void video_start();
3134   virtual bool video_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect);
35
36   // video
37   UINT8 *m_video_ram;
3238};
3339
3440#endif
src/mess/drivers/abc1600.c
r9781r9782
1010
1111   TODO:
1212
13   - MCS-48 PC:01DC - Unimplemented opcode = 75 (ENT0 CLK, enable clock/3 output on T0)
1314   - video
1415   - keyboard
1516   - mouse
r9781r9782
1718   - DMA
1819   - DART
1920   - CIO
21   - RTC
2022   - hard disk (Xebec controller card w/ Z80A, 1K RAM, ROM "104521G", PROM "103911", Xebec 3198-0009, Xebec 3198-0045, 16MHz xtal, 20MHz xtal)
2123   - monitor portrait/landscape mode
2224
r9781r9782
2628
2729#include "emu.h"
2830#include "cpu/m68000/m68000.h"
31#include "cpu/z80/z80.h"
2932#include "devices/flopdrv.h"
3033#include "devices/messram.h"
3134#include "machine/abc99.h"
r9781r9782
4851static ADDRESS_MAP_START( abc1600_mem, ADDRESS_SPACE_PROGRAM, 8, abc1600_state )
4952   AM_RANGE(0x00000, 0x03fff) AM_ROM
5053   AM_RANGE(0x04000, 0x7efff) AM_RAM
51   AM_RANGE(0x7f100, 0x7f100) AM_DEVWRITE_LEGACY(SY6845EA_TAG, mc6845_address_w)
52   AM_RANGE(0x7f101, 0x7f101) AM_DEVREADWRITE_LEGACY(SY6845EA_TAG, mc6845_register_r, mc6845_register_w)
54   AM_RANGE(0x7f100, 0x7f100) AM_DEVWRITE_LEGACY(SY6845E_TAG, mc6845_address_w)
55   AM_RANGE(0x7f101, 0x7f101) AM_DEVREADWRITE_LEGACY(SY6845E_TAG, mc6845_register_r, mc6845_register_w)
5356//   AM_RANGE(0x7f000, 0x7f000) AM_DEVREADWRITE_LEGACY(Z8410AB1_0_TAG, z80dma_r, z80dma_w)
5457//   AM_RANGE(0x7f000, 0x7f000) AM_DEVREADWRITE_LEGACY(Z8410AB1_1_TAG, z80dma_r, z80dma_w)
5558//   AM_RANGE(0x7f000, 0x7f000) AM_DEVREADWRITE_LEGACY(Z8410AB1_2_TAG, z80dma_r, z80dma_w)
5659//   AM_RANGE(0x7f000, 0x7f003) AM_DEVREADWRITE_LEGACY(Z80DART_TAG, z80dart_ba_cd_r, z80dart_ba_cd_w)
5760//   AM_RANGE(0x7f000, 0x7f003) AM_DEVREADWRITE_LEGACY(SAB1797_02P_TAG, wd17xx_r, wd17xx_w)
5861//   AM_RANGE(0x7f000, 0x7f003) AM_DEVREADWRITE(Z8536B1_TAG, z8536_r, z8536_w)
62//   AM_RANGE(0x7f000, 0x7f003) AM_DEVREADWRITE(E050_C16PC_TAG, e050c16pc_r, e050c16pc_w)
5963   AM_RANGE(0x80000, 0xfffff) AM_RAM
6064ADDRESS_MAP_END
6165
6266
67//-------------------------------------------------
68//  ADDRESS_MAP( xebec_mem )
69//-------------------------------------------------
6370
71static ADDRESS_MAP_START( xebec_mem, ADDRESS_SPACE_PROGRAM, 8, abc1600_state )
72   AM_RANGE(0x0000, 0x0fff) AM_ROM
73   AM_RANGE(0x1000, 0x13ff) AM_RAM
74ADDRESS_MAP_END
75
76
77//-------------------------------------------------
78//  ADDRESS_MAP( xebec_io )
79//-------------------------------------------------
80
81static ADDRESS_MAP_START( xebec_io, ADDRESS_SPACE_IO, 8, abc1600_state )
82ADDRESS_MAP_END
83
84
85
6486//**************************************************************************
6587//   INPUT PORTS
6688//**************************************************************************
r9781r9782
80102//**************************************************************************
81103
82104//-------------------------------------------------
83//  MC6845_UPDATE_ROW( abc1600_update_row )
105//  mc6845_interface crtc_intf
84106//-------------------------------------------------
85107
86108static MC6845_UPDATE_ROW( abc1600_update_row )
87109{
88110}
89111
112static MC6845_ON_UPDATE_ADDR_CHANGED( crtc_update )
113{
114}
90115
91//-------------------------------------------------
92//  mc6845_interface crtc_intf
93//-------------------------------------------------
94
95116static const mc6845_interface crtc_intf =
96117{
97118   SCREEN_TAG,
r9781r9782
103124   DEVCB_NULL,
104125   DEVCB_NULL,
105126   DEVCB_NULL,
106   NULL
127   crtc_update
107128};
108129
109130
r9781r9782
111132//  VIDEO_UPDATE( abc1600 )
112133//-------------------------------------------------
113134
135void abc1600_state::video_start()
136{
137   // allocate video RAM
138   m_video_ram = auto_alloc_array(machine, UINT8, 128*1024);
139}
140
141
142//-------------------------------------------------
143//  VIDEO_UPDATE( abc1600 )
144//-------------------------------------------------
145
114146bool abc1600_state::video_update(screen_device &screen, bitmap_t &bitmap, const rectangle &cliprect)
115147{
116148   mc6845_update(m_crtc, &bitmap, &cliprect);
r9781r9782
251283   MDRV_CPU_ADD(MC68008P8_TAG, M68008, XTAL_64MHz/8)
252284   MDRV_CPU_PROGRAM_MAP(abc1600_mem)
253285
286   MDRV_CPU_ADD(Z8400A_TAG, Z80, XTAL_16MHz/4)
287   MDRV_CPU_PROGRAM_MAP(xebec_mem)
288   MDRV_CPU_IO_MAP(xebec_io)
289
254290   // video hardware
255291    MDRV_SCREEN_ADD(SCREEN_TAG, RASTER)
256292    MDRV_SCREEN_REFRESH_RATE(50)
r9781r9782
260296    MDRV_SCREEN_VISIBLE_AREA(0, 1024-1, 0, 768-1)
261297    MDRV_PALETTE_LENGTH(2)
262298    MDRV_PALETTE_INIT(black_and_white)
263   MDRV_MC6845_ADD(SY6845EA_TAG, MC6845, XTAL_64MHz, crtc_intf)
299   MDRV_MC6845_ADD(SY6845E_TAG, SY6845E, XTAL_64MHz, crtc_intf)
264300
265301   // sound hardware
266302
r9781r9782
313349   ROM_LOAD( "1025 6490354-01.6e",  0x618, 0x104, CRC(9bda0468) SHA1(ad373995dcc18532274efad76fa80bd13c23df25) )
314350
315351   ROM_REGION( 0x1000, Z8400A_TAG, 0 ) // Xebec hard disk controller card
316   ROM_LOAD( "104521g", 0x0000, 0x1000, NO_DUMP )
352   ROM_LOAD( "104521g", 0x0800, 0x0800, BAD_DUMP CRC(1b004bdd) SHA1(ad8b14d9f2511826d7e81a11c23077fc02846fe7) ) // missing first half
317353
318354   ROM_REGION( 0x100, "103911", 0 ) // Xebec hard disk controller card
319355   ROM_LOAD( "103911", 0x000, 0x100, NO_DUMP ) // DM74S288N
docs/messnew.txt
r9781r9782
5151
5252- [ABC800C] Added Color version ROMs. [Ola Andersson]
5353
54- [ABC1600] Added ROM dumps. [Ola Andersson]
55
5456- [AMU880] Fixed keyboard. [Curt Coder]
5557
5658- [C64] Added known good dumps software list for cartridges. Not hooked up
r9781r9782
7476
7577- [PC8201] Added a software list for option ROMs. [Curt Coder]
7678
79- [QL] Added software list for cartridges. [Curt Coder]
80
7781- [SMS] Improved Light Phaser emulation and converted it to use timers
7882  that control when the beam will reach the aim area, to run the function
7983  that checks if the pixel displayed is bright enough to activate the

Previous 15994 Revisions Next


© 1998-2018 The MESS Team