Previous 15994 Revisions Next

r4516 Sunday 19th April, 2009 at 07:22:01 UTC by Robbbert
[KAYPRO] WIP - renamed to kaypro.c, split into machine and video
[src/mess]mess.mak
[src/mess/drivers]kaypro.c*
[src/mess/includes]kaypro.h*
[src/mess/machine]kaypro.c*
[src/mess/video]kaypro.c*

src/mess/video/kaypro.c
r0r4516
1 
2#include "driver.h"
3 
4 
5/***********************************************************
6 
7   Video
8 
9************************************************************/
10 
11PALETTE_INIT( kaypro )
12{
13   palette_set_color(machine,0,RGB_BLACK); /* black */
14   palette_set_color(machine,1,MAKE_RGB(0, 220, 0)); /* green */   
15}
16 
17VIDEO_UPDATE( kayproii )
18{
19/* The display consists of 80 columns and 24 rows. Each row is allocated 128 bytes of ram,
20   but only the first 80 are used. The total video ram therefore is 0x0c00 bytes.
21   There is one video attribute: bit 7 causes blinking. The first half of the
22   character generator is blank, with the visible characters in the 2nd half.
23   During the "off" period of blanking, the first half is used. Only 5 pixels are
24   connected from the rom to the shift register, the remaining pixels are held high.
25   A high pixel is black and a low pixel is green. */
26 
27   static UINT8 framecnt=0;
28   UINT8 y,ra,chr,gfx;
29   UINT16 sy=0,ma=0,x;
30   UINT8 *FNT = memory_region(screen->machine, "gfx1");
31 
32   framecnt++;
33 
34   for (y = 0; y < 24; y++)
35   {
36      for (ra = 0; ra < 10; ra++)
37      {
38         UINT16  *p = BITMAP_ADDR16(bitmap, sy++, 0);
39 
40         for (x = ma; x < ma + 80; x++)
41         {
42            if (ra < 8)
43            {
44               chr = videoram[x]^0x80;
45 
46               /* Take care of flashing characters */
47               if ((chr < 0x80) && (framecnt & 0x08))
48                  chr |= 0x80;
49 
50               /* get pattern of pixels for that character scanline */
51               gfx = FNT[(chr<<3) | ra ];
52            }
53            else
54               gfx = 0xff;
55 
56            /* Display a scanline of a character (7 pixels) */
57            *p = 0; p++;
58            *p = ( gfx & 0x10 ) ? 0 : 1; p++;
59            *p = ( gfx & 0x08 ) ? 0 : 1; p++;
60            *p = ( gfx & 0x04 ) ? 0 : 1; p++;
61            *p = ( gfx & 0x02 ) ? 0 : 1; p++;
62            *p = ( gfx & 0x01 ) ? 0 : 1; p++;
63            *p = 0; p++;
64         }
65      }
66      ma+=128;
67   }
68   return 0;
69}
70 
71VIDEO_UPDATE( omni2 )
72{
73   static UINT8 framecnt=0;
74   UINT8 y,ra,chr,gfx;
75   UINT16 sy=0,ma=0,x;
76   UINT8 *FNT = memory_region(screen->machine, "gfx1");
77 
78   framecnt++;
79 
80   for (y = 0; y < 24; y++)
81   {
82      for (ra = 0; ra < 10; ra++)
83      {
84         UINT16  *p = BITMAP_ADDR16(bitmap, sy++, 0);
85 
86         for (x = ma; x < ma + 80; x++)
87         {
88            if (ra < 8)
89            {
90               chr = videoram[x];
91 
92               /* Take care of flashing characters */
93               if ((chr > 0x7f) && (framecnt & 0x08))
94                  chr |= 0x80;
95 
96               /* get pattern of pixels for that character scanline */
97               gfx = FNT[(chr<<3) | ra ];
98            }
99            else
100               gfx = 0xff;
101 
102            /* Display a scanline of a character (7 pixels) */
103            *p = ( gfx & 0x40 ) ? 0 : 1; p++;
104            *p = ( gfx & 0x20 ) ? 0 : 1; p++;
105            *p = ( gfx & 0x10 ) ? 0 : 1; p++;
106            *p = ( gfx & 0x08 ) ? 0 : 1; p++;
107            *p = ( gfx & 0x04 ) ? 0 : 1; p++;
108            *p = ( gfx & 0x02 ) ? 0 : 1; p++;
109            *p = ( gfx & 0x01 ) ? 0 : 1; p++;
110         }
111      }
112      ma+=128;
113   }
114   return 0;
115}
116 
117READ8_HANDLER( kaypro_videoram_r )
118{
119   return videoram[offset];
120}
121 
122WRITE8_HANDLER( kaypro_videoram_w )
123{
124   videoram[offset] = data;
125}
src/mess/includes/kaypro.h
r0r4516
1/* machine.c */
2 
3extern const z80pio_interface kaypro2_pio_g_intf;
4extern const z80pio_interface kaypro2_pio_s_intf;
5extern const z80sio_interface kaypro2_sio_intf;
6extern const wd17xx_interface kaypro2_wd1793_interface;
7 
8READ8_DEVICE_HANDLER( kaypro2_pio_r );
9READ8_DEVICE_HANDLER( kaypro2_sio_r );
10 
11WRITE8_DEVICE_HANDLER( kaypro2_pio_w );
12WRITE8_HANDLER( kaypro2_baud_a_w );
13WRITE8_HANDLER( kaypro2_baud_b_w );
14WRITE8_DEVICE_HANDLER( kaypro2_sio_w );
15 
16void kaypro2_floppy_getinfo(const mess_device_class *devclass, UINT32 state, union devinfo *info);
17MACHINE_RESET( kayproii );
18 
19 
20/* video.c */
21 
22PALETTE_INIT( kaypro );
23VIDEO_UPDATE( kayproii );
24VIDEO_UPDATE( omni2 );
25READ8_HANDLER( kaypro_videoram_r );
26WRITE8_HANDLER( kaypro_videoram_w );
src/mess/machine/kaypro.c
r0r4516
1 
2#include "driver.h"
3#include "cpu/z80/z80.h"
4#include "machine/z80pio.h"
5#include "machine/z80sio.h"
6#include "cpu/z80/z80daisy.h"
7#include "machine/ctronics.h"
8#include "machine/kay_kbd.h"
9#include "machine/wd17xx.h"
10#include "devices/basicdsk.h"
11#include "includes/kaypro.h"
12 
13 
14static const device_config *kaypro2_z80pio_g;
15static const device_config *kaypro2_z80pio_s;
16static const device_config *kaypro2_z80sio;
17static const device_config *kaypro2_printer;
18static const device_config *kaypro2_fdc;
19 
20 
21 
22/***********************************************************
23 
24   PIO
25 
26   It seems there must have been a bulk-purchase
27   special on pios - port B is unused on both of them
28 
29************************************************************/
30 
31static WRITE8_DEVICE_HANDLER( kaypro2_interrupt )
32{
33   cpu_set_input_line(device->machine->cpu[0], 0, data);
34}
35 
36static READ8_DEVICE_HANDLER( pio_system_r )
37{
38/*   d3 Centronics ready flag */
39 
40   return ~centronics_busy_r(kaypro2_printer) << 3;
41}
42 
43static WRITE8_DEVICE_HANDLER( pio_system_w )
44{
45/*   d7 bank select
46   d6 disk drive motors - not emulated
47   d5 double-density enable
48   d4 Centronics strobe
49   d1 drive B
50   d0 drive A */
51 
52   /* get address space */
53   const address_space *mem = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
54 
55   if (data & 0x80)
56   {
57      memory_install_readwrite8_handler (mem, 0x0000, 0x3fff, 0, 0, SMH_UNMAP, SMH_UNMAP);
58      memory_install_read8_handler (mem, 0x0000, 0x0fff, 0, 0, SMH_BANK1);
59      memory_set_bankptr(mem->machine, 1, memory_region(mem->machine, "maincpu"));
60      memory_install_readwrite8_handler (mem, 0x3000, 0x3fff, 0, 0, kaypro_videoram_r, kaypro_videoram_w);
61   }
62   else
63   {
64      memory_install_readwrite8_handler (mem, 0x0000, 0x3fff, 0, 0, SMH_UNMAP, SMH_UNMAP);
65       memory_install_readwrite8_handler (mem, 0x0000, 0x3fff, 0, 0, SMH_BANK2, SMH_BANK3);
66      memory_set_bankptr(mem->machine, 2, memory_region(mem->machine, "rambank"));
67      memory_set_bankptr(mem->machine, 3, memory_region(mem->machine, "rambank"));
68   }
69 
70   wd17xx_set_density(kaypro2_fdc, (data & 0x20) ? 1 : 0);
71 
72   centronics_strobe_w(kaypro2_printer, BIT(data, 4));
73 
74   if (data & 1)
75      wd17xx_set_drive(kaypro2_fdc, 0);
76   else
77   if (data & 2)
78      wd17xx_set_drive(kaypro2_fdc, 1);
79 
80   if (data & 3)
81      wd17xx_set_side(kaypro2_fdc, 0);   /* only has 1 side */
82}
83 
84const z80pio_interface kaypro2_pio_g_intf =
85{
86   DEVCB_HANDLER(kaypro2_interrupt),
87   DEVCB_NULL,
88   DEVCB_NULL,
89   DEVCB_DEVICE_HANDLER("centronics", centronics_data_w),
90   DEVCB_NULL,
91   DEVCB_NULL,         /* portA ready active callback */
92   DEVCB_NULL         /* portB ready active callback */
93};
94 
95const z80pio_interface kaypro2_pio_s_intf =
96{
97   DEVCB_HANDLER(kaypro2_interrupt),
98   DEVCB_HANDLER(pio_system_r),   /* read printer status */
99   DEVCB_NULL,
100   DEVCB_HANDLER(pio_system_w),   /* activate various internal devices */
101   DEVCB_NULL,
102   DEVCB_NULL,         /* portA ready active callback */
103   DEVCB_NULL         /* portB ready active callback */
104};
105 
106READ8_DEVICE_HANDLER( kaypro2_pio_r )
107{
108   if (!offset)
109      return z80pio_d_r(device, 0);
110   else
111   if (offset == 1)
112      return z80pio_c_r(device, 0);
113   else
114   if (offset == 2)
115      return z80pio_d_r(device, 1);
116   else
117      return z80pio_c_r(device, 1);
118}
119 
120WRITE8_DEVICE_HANDLER( kaypro2_pio_w )
121{
122   if (!offset)
123      z80pio_d_w(device, 0, data);
124   else
125   if (offset == 1)
126      z80pio_c_w(device, 0, data);
127   else
128   if (offset == 2)
129      z80pio_d_w(device, 1, data);
130   else
131      z80pio_c_w(device, 1, data);
132}
133 
134 
135/***********************************************************
136 
137   SIO
138   Baud rate setup commented out until MAME includes
139   the feature.
140 
141************************************************************/
142 
143/* Set baud rate. bits 0..3 Rx and Tx are tied together. Baud Rate Generator is a AY-5-8116, SMC8116, etc.
144   00h    50   
145   11h    75   
146   22h    110   
147   33h    134.5   
148   44h    150   
149   55h    300   
150   66h    600   
151   77h    1200   
152   88h    1800   
153   99h    2000   
154   AAh    2400   
155   BBh    3600   
156   CCh    4800   
157   DDh    7200   
158   EEh    9600   
159   FFh    19200 */
160 
161static const int baud_clock[]={ 800, 1200, 1760, 2152, 2400, 4800, 9600, 19200, 28800, 32000, 38400, 57600, 76800, 115200, 153600, 307200 };
162 
163WRITE8_HANDLER( kaypro2_baud_a_w )   /* channel A - RS232C */
164{
165   data &= 0x0f;
166 
167//   z80sio_set_rx_clock( kaypro2_z80sio, baud_clock[data], 0);
168//   z80sio_set_tx_clock( kaypro2_z80sio, baud_clock[data], 0);
169}
170 
171WRITE8_HANDLER( kaypro2_baud_b_w )   /* Channel B - Keyboard */
172{
173/* Only speed used is 300 baud */
174 
175   data &= 0x0f;
176 
177//   z80sio_set_rx_clock( kaypro2_z80sio, baud_clock[data], 1);
178//   z80sio_set_tx_clock( kaypro2_z80sio, baud_clock[data], 1);
179}
180 
181/* when sio devcb'ed like pio is, change to use pio's int handler */
182static void kaypro2_int_sio(const device_config *device, int state)
183{
184   cpu_set_input_line(device->machine->cpu[0], 0, state);
185}
186 
187const z80sio_interface kaypro2_sio_intf =
188{
189   kaypro2_int_sio,   /* interrupt handler */
190   0,         /* DTR changed handler */
191   0,         /* RTS changed handler */
192   0,         /* BREAK changed handler */
193   0,         /* transmit handler - which channel is this for? */
194   0         /* receive handler - which channel is this for? */
195};
196 
197static const z80_daisy_chain kaypro2_daisy_chain[] =
198{
199/* Which order are these supposed to be in? assumed highest priority at the top */
200   { "z80sio" },      /* sio */
201   { "z80pio_s" },      /* System pio */
202   { "z80pio_g" },      /* General purpose pio */
203   { NULL }
204};
205 
206READ8_DEVICE_HANDLER( kaypro2_sio_r )
207{
208   if (!offset)
209      return z80sio_d_r(device, 0);
210   else
211   if (offset == 1)
212//      return z80sio_d_r(device, 1);
213      return kay_kbd_d_r();
214   else
215   if (offset == 2)
216      return z80sio_c_r(device, 0);
217   else
218//      return z80sio_c_r(device, 1);
219      return kay_kbd_c_r();
220}
221 
222WRITE8_DEVICE_HANDLER( kaypro2_sio_w )
223{
224   if (!offset)
225      z80sio_d_w(device, 0, data);
226   else
227   if (offset == 1)
228//      z80sio_d_w(device, 1, data);
229      kay_kbd_d_w(device->machine, data);
230   else
231   if (offset == 2)
232      z80sio_c_w(device, 0, data);
233   else
234      z80sio_c_w(device, 1, data);
235}
236 
237 
238/***********************************************************
239 
240   Floppy DIsk
241 
242   If there is no diskette in the drive, the cpu will
243   HALT, until the fdc does a NMI. NMI is deactivated
244   otherwise.
245 
246************************************************************/
247 
248static WD17XX_CALLBACK( kaypro2_fdc_callback )
249{
250   switch (state)
251   {
252      case WD17XX_DRQ_CLR:
253      case WD17XX_IRQ_CLR:
254         cpu_set_input_line(device->machine->cpu[0], INPUT_LINE_NMI, 0);
255         break;
256      case WD17XX_DRQ_SET:
257      case WD17XX_IRQ_SET:
258         if (cpu_get_reg(device->machine->cpu[0], Z80_HALT))
259            cpu_set_input_line(device->machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
260         break;
261   }
262}
263 
264const wd17xx_interface kaypro2_wd1793_interface = { kaypro2_fdc_callback, NULL };
265 
266/* I have no idea how to set up floppies - these ones have 40 tracks, 40 sectors, 128 bytes per track, single sided */
267 
268void kaypro2_floppy_getinfo(const mess_device_class *devclass, UINT32 state, union devinfo *info)
269{
270   /* floppy */
271   switch(state)
272   {
273      /* --- the following bits of info are returned as 64-bit signed integers --- */
274      case MESS_DEVINFO_INT_COUNT:         info->i = 2; break;
275 
276      /* --- the following bits of info are returned as pointers to data or functions --- */
277//      case MESS_DEVINFO_PTR_LOAD:         info->load = DEVICE_IMAGE_LOAD_NAME(kaypro2_floppy); break;
278 
279      /* --- the following bits of info are returned as NULL-terminated strings --- */
280      case MESS_DEVINFO_STR_FILE_EXTENSIONS:      strcpy(info->s = device_temp_str(), "dsk"); break;
281 
282      default:               legacybasicdsk_device_getinfo(devclass, state, info); break;
283   }
284}
285 
286 
287/***********************************************************
288 
289   Machine
290 
291************************************************************/
292 
293MACHINE_RESET( kayproii )
294{
295   kaypro2_z80pio_g = devtag_get_device(machine, "z80pio_g");
296   kaypro2_z80pio_s = devtag_get_device(machine, "z80pio_s");
297   kaypro2_z80sio = devtag_get_device(machine, "z80sio");
298   kaypro2_printer = devtag_get_device(machine, "centronics");
299   kaypro2_fdc = devtag_get_device(machine, "wd1793");
300   pio_system_w(kaypro2_z80pio_s, 0, 0x80);
301   MACHINE_RESET_CALL(kay_kbd);
302}
303 
src/mess/mess.mak
r4515r4516
598598   $(MESS_DRIVERS)/apexc.o
599599
600600$(MESSOBJ)/kaypro.a:   \
601   $(MESS_DRIVERS)/kaypro2.o   \
601   $(MESS_DRIVERS)/kaypro.o   \
602   $(MESS_MACHINE)/kaypro.o   \
603   $(MESS_VIDEO)/kaypro.o   \
602604   $(MESS_MACHINE)/kay_kbd.o    \
603605
604606$(MESSOBJ)/sinclair.a: \
src/mess/drivers/kaypro.c
r0r4516
1/*************************************************************************************************
2 
3 
4   Kaypro 2/83 computer - the very first Kaypro II - 2 full size floppy drives.
5   Each disk was single sided, and could hold 191k. The computer had 2x pio
6   and 1x sio. One of the sio ports communicated with the keyboard with a coiled
7   telephone cord, complete with modular plug on each end. The keyboard carries
8   its own Intel 8748 processor and is an intelligent device.
9 
10   There are 2 major problems preventing this driver from working
11 
12   - MESS is not capable of conducting realtime serial communications between devices
13 
14   - MAME's z80sio implementation is lacking important deatures:
15   -- cannot change baud rate on the fly
16   -- cannot specify different rates for each channel
17   -- cannot specify different rates for Receive and Transmit
18   -- the callback doesn't appear to support channel B ??
19 
20 
21   Things that need doing:
22   - Floppy disks (I have no knowledge of how to set these up)
23 
24 
25**************************************************************************************************/
26 
27 
28#include "driver.h"
29#include "cpu/z80/z80.h"
30#include "machine/z80pio.h"
31#include "machine/z80sio.h"
32#include "machine/ctronics.h"
33#include "machine/kay_kbd.h"
34#include "machine/wd17xx.h"
35#include "sound/beep.h"
36#include "includes/kaypro.h"
37 
38 
39 
40/***********************************************************
41 
42   Address Maps
43 
44************************************************************/
45 
46static ADDRESS_MAP_START( kaypro2_map, ADDRESS_SPACE_PROGRAM, 8 )
47   AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("maincpu", 0x0000)
48   AM_RANGE(0x3000, 0x3fff) AM_RAM AM_REGION("maincpu", 0x3000) AM_BASE(&videoram) AM_SIZE(&videoram_size)
49   AM_RANGE(0x4000, 0xffff) AM_RAM AM_REGION("rambank", 0x4000)
50ADDRESS_MAP_END
51 
52static ADDRESS_MAP_START( kaypro2_io, ADDRESS_SPACE_IO, 8 )
53   ADDRESS_MAP_GLOBAL_MASK(0xff)
54   ADDRESS_MAP_UNMAP_HIGH
55   AM_RANGE(0x00, 0x03) AM_WRITE(kaypro2_baud_a_w)
56   AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("z80sio", kaypro2_sio_r, kaypro2_sio_w)
57   AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("z80pio_g", kaypro2_pio_r, kaypro2_pio_w)
58   AM_RANGE(0x0c, 0x0f) AM_WRITE(kaypro2_baud_b_w)
59   AM_RANGE(0x10, 0x10) AM_DEVREADWRITE("wd1793", wd17xx_status_r, wd17xx_command_w)
60   AM_RANGE(0x11, 0x11) AM_DEVREADWRITE("wd1793", wd17xx_track_r, wd17xx_track_w)
61   AM_RANGE(0x12, 0x12) AM_DEVREADWRITE("wd1793", wd17xx_sector_r, wd17xx_sector_w)
62   AM_RANGE(0x13, 0x13) AM_DEVREADWRITE("wd1793", wd17xx_data_r, wd17xx_data_w)
63   AM_RANGE(0x1c, 0x1f) AM_DEVREADWRITE("z80pio_s", kaypro2_pio_r, kaypro2_pio_w)
64ADDRESS_MAP_END
65 
66 
67 
68/***********************************************************
69 
70   Machine Driver
71 
72************************************************************/
73 
74static MACHINE_DRIVER_START( kayproii )
75   /* basic machine hardware */
76   MDRV_CPU_ADD("maincpu", Z80, 2500000)   /* 2.5 MHz */
77   MDRV_CPU_PROGRAM_MAP(kaypro2_map, 0)
78   MDRV_CPU_IO_MAP(kaypro2_io, 0)
79   MDRV_CPU_VBLANK_INT("screen", kay_kbd_interrupt)   /* this doesn't actually exist, it is to run the keyboard */
80 
81   MDRV_MACHINE_RESET( kayproii )
82 
83   /* video hardware */
84   MDRV_SCREEN_ADD("screen", RASTER)
85   MDRV_SCREEN_REFRESH_RATE(60)
86   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
87   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
88   MDRV_SCREEN_SIZE(80*7, 24*10)
89   MDRV_SCREEN_VISIBLE_AREA(0,80*7-1,0,24*10-1)
90   MDRV_PALETTE_LENGTH(2)
91   MDRV_PALETTE_INIT(kaypro)
92 
93   MDRV_VIDEO_UPDATE( kayproii )
94 
95   /* sound hardware */
96   MDRV_SPEAKER_STANDARD_MONO("mono")
97   MDRV_SOUND_ADD("beep", BEEP, 0)
98   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
99 
100   /* devices */
101   MDRV_WD179X_ADD("wd1793", kaypro2_wd1793_interface )
102   MDRV_CENTRONICS_ADD("centronics", standard_centronics)
103   MDRV_Z80PIO_ADD( "z80pio_g", kaypro2_pio_g_intf )
104   MDRV_Z80PIO_ADD( "z80pio_s", kaypro2_pio_s_intf )
105   MDRV_Z80SIO_ADD( "z80sio", 4800, kaypro2_sio_intf )   /* start at 300 baud */
106MACHINE_DRIVER_END
107 
108static MACHINE_DRIVER_START( omni2 )
109   MDRV_IMPORT_FROM( kayproii )
110   MDRV_VIDEO_UPDATE( omni2 )
111MACHINE_DRIVER_END
112 
113 
114/***********************************************************
115 
116   Game driver
117 
118************************************************************/
119 
120/* The roms need to be renamed to their part numbers (81-xxx) when known */
121 
122ROM_START(kayproii)
123   /* The board could take a 2716 or 2732 */
124   ROM_REGION(0x4000, "maincpu",0)
125   ROM_LOAD("81-149.u47",   0x0000, 0x0800, CRC(28264bc1) SHA1(a12afb11a538fc0217e569bc29633d5270dfa51b) )
126 
127   ROM_REGION(0x10000, "rambank",0)
128   ROM_FILL( 0, 0x10000, 0xff)
129 
130   ROM_REGION(0x0800, "gfx1",0)
131   ROM_LOAD("81-146.u43",   0x0000, 0x0800, CRC(4cc7d206) SHA1(5cb880083b94bd8220aac1f87d537db7cfeb9013) )
132ROM_END
133 
134ROM_START(kaypro4)
135   ROM_REGION(0x4000, "maincpu",0)
136   ROM_LOAD("81-232.u47",   0x0000, 0x1000, CRC(4918fb91) SHA1(cd9f45cc3546bcaad7254b92c5d501c40e2ef0b2) )
137 
138   ROM_REGION(0x10000, "rambank",0)
139   ROM_FILL( 0, 0x10000, 0xff)
140 
141   ROM_REGION(0x0800, "gfx1",0)
142   ROM_LOAD("81-146.u43",   0x0000, 0x0800, CRC(4cc7d206) SHA1(5cb880083b94bd8220aac1f87d537db7cfeb9013) )
143ROM_END
144 
145ROM_START(omni2)
146   ROM_REGION(0x4000, "maincpu",0)
147   ROM_LOAD("omni2.u47",    0x0000, 0x1000, CRC(2883f9e0) SHA1(d98c784e62853582d298bf7ca84c75872847ac9b) )
148 
149   ROM_REGION(0x10000, "rambank",0)
150   ROM_FILL( 0, 0x10000, 0xff)
151 
152   ROM_REGION(0x0800, "gfx1",0)
153   ROM_LOAD("omni2.u43",    0x0000, 0x0800, CRC(049b3381) SHA1(46f1d4f038747ba9048b075dc617361be088f82a) )
154ROM_END
155 
156ROM_START(kaypro2x)
157   ROM_REGION(0x4000, "maincpu",0)
158   ROM_LOAD("81-292.u34",   0x0000, 0x2000, CRC(5eb69aec) SHA1(525f955ca002976e2e30ac7ee37e4a54f279fe96) )
159 
160   ROM_REGION(0x10000, "rambank",0)
161   ROM_FILL( 0, 0x10000, 0xff)
162 
163   ROM_REGION(0x1000, "gfx1",0)
164   ROM_LOAD("81-817.u9",    0x0000, 0x1000, CRC(5f72da5b) SHA1(8a597000cce1a7e184abfb7bebcb564c6bf24fb7) )
165ROM_END
166 
167ROM_START(kaypro10)
168   ROM_REGION(0x4000, "maincpu",0)
169   ROM_LOAD("81-302.u42",   0x0000, 0x1000, CRC(3f9bee20) SHA1(b29114a199e70afe46511119b77a662e97b093a0) )
170 
171   ROM_REGION(0x10000, "rambank",0)
172   ROM_FILL( 0, 0x10000, 0xff)
173 
174   ROM_REGION(0x1000, "gfx1",0)
175   ROM_LOAD("81-817.u31",   0x0000, 0x1000, CRC(5f72da5b) SHA1(8a597000cce1a7e184abfb7bebcb564c6bf24fb7) )
176ROM_END
177 
178 
179static SYSTEM_CONFIG_START(kaypro2)
180   CONFIG_DEVICE(kaypro2_floppy_getinfo)
181SYSTEM_CONFIG_END
182 
183/*    YEAR  NAME      PARENT    COMPAT  MACHINE     INPUT    INIT      CONFIG       COMPANY  FULLNAME */
184COMP( 1983, kayproii, 0,        0,      kayproii, kay_kbd, 0,        kaypro2,     "Non Linear Systems",  "Kaypro II - 2/83" , GAME_NOT_WORKING )
185COMP( 198?, kaypro4,  kayproii, 0,      kayproii, kay_kbd, 0,        kaypro2,     "Non Linear Systems",  "Kaypro 4 - 4/83" , GAME_NOT_WORKING )
186COMP( 198?, omni2,    kayproii, 0,      omni2,    kay_kbd, 0,        kaypro2,     "Non Linear Systems",  "Omni II" , GAME_NOT_WORKING )
187COMP( 1984, kaypro2x, 0,        0,      kayproii, kay_kbd, 0,        kaypro2,     "Non Linear Systems",  "Kaypro 2x" , GAME_NOT_WORKING )
188COMP( 198?, kaypro10, 0,        0,      kayproii, kay_kbd, 0,        kaypro2,     "Non Linear Systems",  "Kaypro 10" , GAME_NOT_WORKING )

Previous 15994 Revisions Next


© 1998-2018 The MESS Team