Previous 15994 Revisions Next

r4697 Wednesday 13th May, 2009 at 18:13:16 UTC by Curt Coder
[KYOCERA] Cleanup.
[src/mess/drivers]kyocera.c
[src/mess/includes]kyocera.h
[src/mess/video]kyocera.c

src/mess/video/kyocera.c
r4696r4697
33#include "video/hd44102.h"
44#include "video/hd61830.h"
55
6void kyo85_set_lcd_bank(running_machine *machine, UINT16 data)
7{
8   kyocera_state *state = machine->driver_data;
9
10   state->lcd_cs2 = data;
11}
12
136READ8_HANDLER( kyo85_lcd_status_r )
147{
158   kyocera_state *state = space->machine->driver_data;
r4696r4697
1912
2013   for (i = 0; i < 10; i++)
2114   {
22      if (BIT(state->lcd_cs2, i))
15      if (state->lcd_cs2[i])
2316      {
2417         data |= hd44102_status_r(state->hd44102[i], 0);
2518      }
r4696r4697
3629
3730   for (i = 0; i < 10; i++)
3831   {
39      if (BIT(state->lcd_cs2, i))
32      if (state->lcd_cs2[i])
4033      {
4134         data |= hd44102_data_r(state->hd44102[i], 0);
4235      }
r4696r4697
5245
5346   for (i = 0; i < 10; i++)
5447   {
55      if (BIT(state->lcd_cs2, i))
48      if (state->lcd_cs2[i])
5649      {
5750         hd44102_control_w(state->hd44102[i], 0, data);
5851      }
r4696r4697
6659   
6760   for (i = 0; i < 10; i++)
6861   {
69      if (BIT(state->lcd_cs2, i))
62      if (state->lcd_cs2[i])
7063      {
7164         hd44102_data_w(state->hd44102[i], 0, data);
7265      }
r4696r4697
9689   state->hd44102[9] = devtag_get_device(machine, "m10");
9790
9891   /* register for state saving */
99   state_save_register_global(machine, state->lcd_cs2);
92   state_save_register_global_array(machine, state->lcd_cs2);
10093}
10194
10295static VIDEO_UPDATE( kyo85 )
src/mess/includes/kyocera.h
r4696r4697
1818   /* clock state */
1919   int upd1990a_data;      /* RTC data output */
2020
21   /* keyboard state */
22   UINT16 keylatch;
23
2124   /* video state */
22   UINT16 lcd_cs2;         /* LCD driver chip select */
25   int lcd_cs2[10];      /* LCD driver chip select */
2326
2427   const device_config *hd44102[10];
2528   const device_config *upd1990a;
r4696r4697
4548
4649/* ---------- defined in video/kyocera.c ---------- */
4750
48void kyo85_set_lcd_bank(running_machine *machine, UINT16 data);
49
5051READ8_HANDLER( kyo85_lcd_status_r );
5152READ8_HANDLER( kyo85_lcd_data_r );
5253WRITE8_HANDLER( kyo85_lcd_command_w );
src/mess/drivers/kyocera.c
r4696r4697
1616     - Tandy Model 200 (diff video & rtc)
1717   
1818   To Do:
19     - Basically everything:
20      * inputs (keyboards are different)
21      * sound
22      * optional ROM & RAM
23      * additional hardware
24      * Tandy Model 200 support (video emulation completely different, but also
25        memory map & IO have to be adapted)
26      * clean up driver and split machine part
27      * TCM5089 sound for trsm200
28
2919     - Find dumps of systems which could easily be added:
3020      * Olivetti M10 US (diff BIOS than the European version, it might be the alt BIOS)
3121      * NEC PC-8201 (original Japanese version of PC-8201A)
r4696r4697
3626
3727******************************************************************************************/
3828
39/* Core includes */
29/*
30
31   TODO:
32
33   - pc8201 halts after boot
34   - soft power on/off
35   - discrete sound
36   - RS232/modem select
37   - IM6042 UART
38   - trsm200 TCM5089 sound
39   - trsm200 RTC alarm
40
41*/
42
4043#include "driver.h"
4144#include "includes/kyocera.h"
4245#include "cpu/i8085/i8085.h"
46#include "devices/cartslot.h"
4347#include "devices/cassette.h"
4448#include "machine/ctronics.h"
4549#include "machine/upd1990a.h"
r4696r4697
4751#include "machine/rp5c01a.h"
4852#include "video/hd61830.h"
4953
50static UINT8 port_a, port_b;
51static UINT8 io_E8, io_A1, io_90, io_D0;
52
5354static const device_config *cassette_device_image(running_machine *machine)
5455{
5556   return devtag_get_device(machine, "cassette");
r4696r4697
122123   pc8201_bankswitch(space->machine, data);
123124}
124125
125// 0x90 PC-8201 only
126static WRITE8_HANDLER( pc8201_io90_write )
126static WRITE8_HANDLER( pc8201_90_w )
127127{
128   const device_config *rtc = devtag_get_device(space->machine, UPD1990A_TAG);
129
130   upd1990a_stb_w(rtc, BIT(data, 5));
128   /*
131129     
130      bit      signal      description
132131
133   /* printer */
134//   if ((data & 0x20) != (io_90 & 0x20))
135//      WRITE port_a;
132      0     
133      1     
134      2
135      3
136      4
137      5      STB         RTC strobe
138      6
139      7
136140
137   io_90 = data;      // io_90 & 0xc0 is read in 0xa0!
141   */
142
143   kyocera_state *state = space->machine->driver_data;
144
145   upd1990a_stb_w(state->upd1990a, BIT(data, 5));
138146}
139147
140// 0xA0
141static WRITE8_HANDLER( modem_control_port_write )
148static WRITE8_HANDLER( pc8201_e0_w )
142149{
150   /*
151     
152      bit      signal      description
153
154      0     
155      1     
156      2
157      3
158      4
159      5     
160      6
161      7
162
163   */
164
165//   kyocera_state *state = space->machine->driver_data;
143166}
144167
145// 0xC0->0xCF
146// serial write byet
168static WRITE8_HANDLER( im6402_ctrl_w )
169{
170   /*
147171
148// 0xC0->0xCE T200 only
149// serial write byte
172      bit      signal      description
150173
151// 0xD0... all systems but T200 - set serial
152            /*
153            Bits:
154               0 - Stop Bits (1-1.5, 0-2)
155               1 - Parity (1-even, 0-odd)
156               2 - Parity Enable (1-no parity, 0-parity enabled)
157               3 - Data length (00-5 bits, 10-6 bits, 01-7 bits, 11-8
158               bits)
159               4 - Data length (see bit 3) */
174      0      SBS         stop bit select
175      1      EPE         even parity enable
176      2      PI         parity inhibit
177      3      CLS1      character length select bit 1
178      4      CLS2      character length select bit 2
179      5     
180      6     
181      7     
160182
183   */
184/*
185   kyocera_state *state = space->machine->driver_data;
161186
162// 0xE0... all systems but T200
163         /*
164         Bits:
165             0 - ROM select (0-Standard ROM, 1-Option ROM)
166             1 - STROBE (not) signal to printer
167             2 - STROBE for Clock chip (1990)
168             3 - Remote plug control signal */
169static WRITE8_HANDLER( ioE8_write )
187   im6402_sbs_w(state->im6402, BIT(data, 0));
188   im6402_epe_w(state->im6402, BIT(data, 0));
189   im6402_pi_w(state->im6402, BIT(data, 0));
190   im6402_cls1_w(state->im6402, BIT(data, 0));
191   im6402_cls2_w(state->im6402, BIT(data, 0));
192*/
193}
194
195static READ8_HANDLER( im6402_status_r )
170196{
171   const device_config *rtc = devtag_get_device(space->machine, UPD1990A_TAG);
197   /*
172198
173   upd1990a_stb_w(rtc, BIT(data, 2));
199      bit      signal      description
174200
175   /* printer */
176//   if ((data & 0x02) != (io_E8 & 0x02))
177//      WRITE port_a;
201      0      CD         carrier detect
202      1      OE         overrun error
203      2      FE         framing error
204      3      PE         parity error
205      4      TBRE      transmit buffer register empty
206      5      RP         
207      6      +5V         
208      7      _LPS      low power sensor
178209
179   io_E8 = data;
180}
210   */
211/*
212   kyocera_state *state = space->machine->driver_data;
181213
214   UINT8 data = 0;
182215
183static WRITE8_HANDLER( unk_write )
184{
185   logerror("pc8201 IO port w: %04x %02x\n", offset, data);
186}
216   int cd = im6402_cd_r(state->im6402);
217   int oe = im6402_oe_r(state->im6402);
218   int fe = im6402_fe_r(state->im6402);
219   int pe = im6402_pe_r(state->im6402);
220   int tbre = im6402_tbre_r(state->im6402);
187221
222   data = (tbre << 4) | (pe << 3) | (fe << 2) | (oe << 1) | cd;
188223
189/*  READ HANDLERS  */
224   return data;
225*/
190226
191// 0x82
192static READ8_HANDLER( io82_read )
193{
194   return 0xa2;   /* FIXME */
227   return 0xf0;
195228}
196229
197// 0xA0 all systems but PC8201
198// Modem control port
199static READ8_HANDLER( modem_control_port_read )
230static WRITE8_HANDLER( modem_w )
200231{
201   return 0;   // FIXME
232   /*
233
234      bit      signal      description
235
236      0               telephone line signal selection relay output     
237      1      EN         MC14412 enable output
238      2     
239      3     
240      4     
241      5     
242      6     
243      7     
244
245   */
202246}
203247
204// 0xC0->0xCF all systems but T200
205// serial read byte
248static WRITE8_HANDLER( e0_w )
249{
250   /*
206251
207// 0xC0->0xCE T200 only
208// serial read byte
252      bit      signal      description
209253
210// 0xCF T200 only
211// serial flag
254      0      _STROM      ROM selection (0=standard, 1=option)
255      1      _STROBE      printer strobe output
256      2      STB         RTC strobe output
257      3      _REMOTE      cassette motor
258      4     
259      5     
260      6     
261      7     
212262
213            /*
214            Bits:
215               0 - Data on telephone line (used to detect carrier)
216               1 - Overrun error from UART
217               2 - Framing error from UART
218               3 - Parity error from UART
219               4 - Transmit buffer empty from UART
220               5 - Ring line on modem connector
221               6 - Not used
222               7 - Low Power signal from power supply (LPS not) */
263   */
223264
265   kyocera_state *state = space->machine->driver_data;
224266
225// 0xD8?!?!
226static READ8_HANDLER( uart_read )
227{
228   return 0xff;   /* FIXME */
267   /* ROM bank selection */
268   memory_set_bank(space->machine, 1, BIT(data, 0));
269
270   /* printer strobe */
271   centronics_strobe_w(state->centronics, BIT(data, 1));
272
273   /* RTC strobe */
274   upd1990a_stb_w(state->upd1990a, BIT(data, 2));
275
276   /* cassette motor */
277   cassette_change_state(cassette_device_image(space->machine), BIT(data, 3) ? CASSETTE_MOTOR_DISABLED : CASSETTE_MOTOR_ENABLED, CASSETTE_MASK_MOTOR);
229278}
230279
231// 0xE0...
232static READ8_HANDLER( keyboard_read )
280static UINT8 read_keyboard(running_machine *machine, UINT16 keylatch)
233281{
234   UINT8 data = 0xff, col;
235   UINT16 strobe = (port_b << 8) | port_a;
236   static const char *const keynames[] = { "KEY0", "KEY1", "KEY2", "KEY3", "KEY4",   "KEY5", "KEY6", "KEY7", "KEY8" };
282   UINT8 data = 0xff;
237283
238   for (col = 0; col < 9; col++)
239   {
240      if ((strobe & (1 << col)) == 0)
241         data &= input_port_read(space->machine, keynames[col]);
242   }
284   if (!BIT(keylatch, 0)) data &= input_port_read(machine, "KEY0");
285   if (!BIT(keylatch, 1)) data &= input_port_read(machine, "KEY1");
286   if (!BIT(keylatch, 2)) data &= input_port_read(machine, "KEY2");
287   if (!BIT(keylatch, 3)) data &= input_port_read(machine, "KEY3");
288   if (!BIT(keylatch, 4)) data &= input_port_read(machine, "KEY4");
289   if (!BIT(keylatch, 5)) data &= input_port_read(machine, "KEY5");
290   if (!BIT(keylatch, 6)) data &= input_port_read(machine, "KEY6");
291   if (!BIT(keylatch, 7)) data &= input_port_read(machine, "KEY7");
292   if (!BIT(keylatch, 8)) data &= input_port_read(machine, "KEY8");
243293
244   logerror("CALL to %d and RETURN %d\n", offset, data);
245294   return data;
246295}
247296
248static READ8_HANDLER( unk_read )
297static READ8_HANDLER( keyboard_r )
249298{
250   logerror("pc8201 IO port r: %04x\n", offset);
251   return 0;
299   kyocera_state *state = space->machine->driver_data;
300
301   return read_keyboard(space->machine, state->keylatch);
252302}
253303
254304static READ8_HANDLER( trsm200_bank_r )
r4696r4697
296346{
297347   trsm200_state *state = space->machine->driver_data;
298348
299   UINT8 data = 0xff;
300
301   if (!BIT(state->keylatch, 0)) data &= input_port_read(space->machine, "KEY0");
302   if (!BIT(state->keylatch, 1)) data &= input_port_read(space->machine, "KEY1");
303   if (!BIT(state->keylatch, 2)) data &= input_port_read(space->machine, "KEY2");
304   if (!BIT(state->keylatch, 3)) data &= input_port_read(space->machine, "KEY3");
305   if (!BIT(state->keylatch, 4)) data &= input_port_read(space->machine, "KEY4");
306   if (!BIT(state->keylatch, 5)) data &= input_port_read(space->machine, "KEY5");
307   if (!BIT(state->keylatch, 6)) data &= input_port_read(space->machine, "KEY6");
308   if (!BIT(state->keylatch, 7)) data &= input_port_read(space->machine, "KEY7");
309   if (!BIT(state->keylatch, 8)) data &= input_port_read(space->machine, "KEY8");
310
311   return data;
349   return read_keyboard(space->machine, state->keylatch);
312350}
313351
314352static WRITE8_HANDLER( trsm200_stbk_w )
r4696r4697
330368
331369   trsm200_state *state = space->machine->driver_data;
332370
371   /* printer strobe */
333372   centronics_strobe_w(state->centronics, BIT(data, 0));
334373
374   /* cassette motor */
335375   cassette_change_state(cassette_device_image(space->machine), BIT(data, 1) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR);
336376}
337377
378/* Memory Maps */
379
338380static ADDRESS_MAP_START( kyo85_mem, ADDRESS_SPACE_PROGRAM, 8 )
381   ADDRESS_MAP_UNMAP_HIGH
339382   AM_RANGE(0x0000, 0x7fff) AM_ROMBANK(1)
340383   AM_RANGE(0x8000, 0xffff) AM_RAMBANK(2)
341384ADDRESS_MAP_END
342385
343386static ADDRESS_MAP_START( pc8201_mem, ADDRESS_SPACE_PROGRAM, 8 )
387   ADDRESS_MAP_UNMAP_HIGH
344388   AM_RANGE(0x0000, 0x7fff) AM_RAMBANK(1)
345389   AM_RANGE(0x8000, 0xffff) AM_RAMBANK(2)
346390ADDRESS_MAP_END
347391
348392static ADDRESS_MAP_START( trsm200_mem, ADDRESS_SPACE_PROGRAM, 8 )
393   ADDRESS_MAP_UNMAP_HIGH
349394   AM_RANGE(0x0000, 0x7fff) AM_ROMBANK(1)
350395   AM_RANGE(0x8000, 0x9fff) AM_ROM
351396   AM_RANGE(0xa000, 0xffff) AM_RAMBANK(2)
352397ADDRESS_MAP_END
353398
354399static ADDRESS_MAP_START( kyo85_io, ADDRESS_SPACE_IO, 8 )
355   AM_RANGE(0x00, 0x81) AM_READWRITE( unk_read, unk_write )
356   AM_RANGE(0x82, 0x82) AM_READ( io82_read )
357   AM_RANGE(0x83, 0x9f) AM_READWRITE( unk_read, unk_write )
358   AM_RANGE(0xa0, 0xa0) AM_READWRITE( modem_control_port_read, modem_control_port_write )
359   AM_RANGE(0xb0, 0xb7) AM_MIRROR(0x08) AM_DEVREADWRITE( PIO8155_TAG, pio8155_r, pio8155_w )
360   AM_RANGE(0xd8, 0xd8) AM_READ( uart_read )
361   AM_RANGE(0xe0, 0xe8) AM_READ( keyboard_read )
362   AM_RANGE(0xe0, 0xe8) AM_READWRITE( keyboard_read, ioE8_write )
363   AM_RANGE(0xfe, 0xfe) AM_READWRITE( kyo85_lcd_status_r, kyo85_lcd_command_w )
364   AM_RANGE(0xff, 0xff) AM_READWRITE( kyo85_lcd_data_r, kyo85_lcd_data_w )
400   ADDRESS_MAP_UNMAP_HIGH
401//   AM_RANGE(0x70, 0x70) AM_MIRROR(0x0f) optional RAM unit
402//   AM_RANGE(0x80, 0x80) AM_MIRROR(0x0f) optional I/O controller unit
403//   AM_RANGE(0x90, 0x90) AM_MIRROR(0x0f) optional answering telephone unit
404   AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0f) AM_WRITE(modem_w)
405   AM_RANGE(0xb0, 0xb7) AM_MIRROR(0x08) AM_DEVREADWRITE(PIO8155_TAG, pio8155_r, pio8155_w)
406//   AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x0f) AM_DEVREADWRITE(IM6402_TAG, im6402_data_r, im6402_data_w)
407   AM_RANGE(0xd0, 0xd0) AM_MIRROR(0x0f) AM_READWRITE(im6402_status_r, im6402_ctrl_w)
408   AM_RANGE(0xe0, 0xe0) AM_MIRROR(0x0f) AM_READWRITE(keyboard_r, e0_w)
409   AM_RANGE(0xf0, 0xf0) AM_MIRROR(0x0e) AM_READWRITE(kyo85_lcd_status_r, kyo85_lcd_command_w)
410   AM_RANGE(0xf1, 0xf1) AM_MIRROR(0x0e) AM_READWRITE(kyo85_lcd_data_r, kyo85_lcd_data_w)
365411ADDRESS_MAP_END
366412
367413static ADDRESS_MAP_START( pc8201_io, ADDRESS_SPACE_IO, 8 )
368   AM_RANGE(0x82, 0x82) AM_READ( io82_read )
369   AM_RANGE(0x90, 0x90) AM_WRITE( pc8201_io90_write )
370/*   AM_RANGE(0xa0, 0xa0) AM_READWRITE( pc8201_ioa0_read, modem_control_port_write )
371   AM_RANGE(0xa1, 0xa1) AM_READWRITE( pc8201_bank_read, pc8201_bank_write )*/
414   ADDRESS_MAP_UNMAP_HIGH
415//   AM_RANGE(0x70, 0x70) AM_MIRROR(0x0f) optional RAM unit
416//   AM_RANGE(0x80, 0x80) AM_MIRROR(0x0f) optional I/O controller unit
417   AM_RANGE(0x90, 0x90) AM_WRITE(pc8201_90_w)
372418   AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0f) AM_READWRITE(pc8201_bank_r, pc8201_bank_w)
373419   AM_RANGE(0xb0, 0xb7) AM_MIRROR(0x08) AM_DEVREADWRITE( PIO8155_TAG, pio8155_r, pio8155_w )
374   AM_RANGE(0xd8, 0xd8) AM_READ( uart_read )
375   AM_RANGE(0xe0, 0xe8) AM_READ( keyboard_read )
376//   AM_RANGE(0xe0, 0xe8) AM_READWRITE( keyboard_read, ioE8_write )
377   AM_RANGE(0xfe, 0xfe) AM_READWRITE( kyo85_lcd_status_r, kyo85_lcd_command_w )
378   AM_RANGE(0xff, 0xff) AM_READWRITE( kyo85_lcd_data_r, kyo85_lcd_data_w )
420//   AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x0f) AM_DEVREADWRITE(IM6402_TAG, im6402_data_r, im6402_data_w)
421   AM_RANGE(0xd0, 0xd0) AM_MIRROR(0x0f) AM_READWRITE(im6402_status_r, im6402_ctrl_w)
422   AM_RANGE(0xe0, 0xe0) AM_MIRROR(0x0f) AM_READWRITE(keyboard_r, pc8201_e0_w)
423   AM_RANGE(0xf0, 0xf0) AM_MIRROR(0x0e) AM_READWRITE(kyo85_lcd_status_r, kyo85_lcd_command_w)
424   AM_RANGE(0xf1, 0xf1) AM_MIRROR(0x0e) AM_READWRITE(kyo85_lcd_data_r, kyo85_lcd_data_w)
379425ADDRESS_MAP_END
380426
381427static ADDRESS_MAP_START( trsm200_io, ADDRESS_SPACE_IO, 8 )
382   AM_RANGE(0x82, 0x82) AM_READ(io82_read)
428   ADDRESS_MAP_UNMAP_HIGH
383429   AM_RANGE(0x90, 0x9f) AM_DEVREADWRITE(RP5C01A_TAG, rp5c01a_r, rp5c01a_w)
384430//   AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0f) AM_DEVWRITE(TCM5089_TAG, tcm5089_w)
385431   AM_RANGE(0xb0, 0xb7) AM_MIRROR(0x08) AM_DEVREADWRITE(PIO8155_TAG, pio8155_r, pio8155_w)
386432//   AM_RANGE(0xc0, 0xc1) AM_MIRROR(0x0e) AM_DEVREADWRITE(UART8251_TAG, uart8251_r, uart8251_w)
387   AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x0f) AM_READ( uart_read ) // HACK
388433   AM_RANGE(0xd0, 0xd0) AM_MIRROR(0x0f) AM_READWRITE(trsm200_bank_r, trsm200_bank_w)
389434   AM_RANGE(0xe0, 0xe0) AM_MIRROR(0x0f) AM_READWRITE(trsm200_stbk_r, trsm200_stbk_w)
390435   AM_RANGE(0xf0, 0xf0) AM_MIRROR(0x0e) AM_DEVREADWRITE(HD61830_TAG, hd61830_data_r, hd61830_data_w)
391436   AM_RANGE(0xf1, 0xf1) AM_MIRROR(0x0e) AM_DEVREADWRITE(HD61830_TAG, hd61830_status_r, hd61830_control_w)
392437ADDRESS_MAP_END
393438
394/**************************************************************************
439/* Input Ports */
395440
396   Keyboard
397
398***************************************************************************/
399
400/*
401
402"Model 100" - must be changed for pc8201 and others
403Data
404(@ E0)   7 | L  A  I  ?  *  -> Ent f8   Brk
405   6 | M  S  U  >  & <-  Prt f7
406   5 | N  D  Y  <  ^  Up Lbl f6   Cap
407   4 | B  F  T  "  % Dwn Pst f5   Num
408   3 | V  G  R  :  $    Esc f4   Cde
409   2 | C  H  E  ]  #  -  Tab f3   Gph
410   1 | X  J  W  P  @  )  Del f2   Ctl
411   0 | Z  K  Q  O  !  (  Spc f1   Sft
412--------------------------------------------------
413Strobe      0  1  2  3  4  5  6  7  |  0  Strobe
414(from                |     (from B2)
415 B1)
416*/
417441static INPUT_PORTS_START( kyo85 )
418442   PORT_START("KEY0")
419443   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
r4696r4697
476500   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(')
477501
478502   PORT_START("KEY6")
479   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
480   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("PRT")   // ?
481   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("LBL")   // ?
482   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("PST") PORT_CODE(KEYCODE_INSERT)   // ?
503   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ENTER") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
504   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("PRINT") PORT_CODE(KEYCODE_F11) PORT_CHAR(UCHAR_MAMEKEY(F11))
505   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("LABEL") PORT_CODE(KEYCODE_F10) PORT_CHAR(UCHAR_MAMEKEY(F10))
506   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("PASTE") PORT_CODE(KEYCODE_F9) PORT_CHAR(UCHAR_MAMEKEY(F9))
483507   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ESC") PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC))
484   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("TAB") PORT_CODE(KEYCODE_TAB) PORT_CHAR('\t')
485   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("DEL BS") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
508   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x92|") PORT_CODE(KEYCODE_TAB) PORT_CHAR('\t')
509   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("DEL BKSP") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
486510   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("SPACE") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
487511
488512   PORT_START("KEY7")
r4696r4697
496520   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1))
497521
498522   PORT_START("KEY8")
499   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("BRK")   // ?
500   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CAP") PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
501   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("NUM")
502   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CDE")   // ?
503   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("GPH") PORT_CODE(KEYCODE_LALT)
504   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CTL") PORT_CODE(KEYCODE_LCONTROL)
505   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("SFT") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
523   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("PAUSE BREAK") PORT_CODE(KEYCODE_F12) PORT_CHAR(UCHAR_MAMEKEY(F12))
524   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
525   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CAPS LOCK") PORT_CODE(KEYCODE_CAPSLOCK)
526   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("NUM") PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_MAMEKEY(RALT))
527   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CODE") PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_MAMEKEY(RALT))
528   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("GRAPH") PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT))
529   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CTRL") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL))
530   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("SHIFT") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
506531INPUT_PORTS_END
507532
508533static INPUT_PORTS_START( pc8201a )
r4696r4697
533558   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
534559
535560   PORT_MODIFY("KEY6")
536   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER)
537561   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ESC") PORT_CODE(KEYCODE_ESC)
538   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("TAB") PORT_CODE(KEYCODE_TAB)
539   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("RIGHT") PORT_CODE(KEYCODE_RIGHT)
540   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("LEFT") PORT_CODE(KEYCODE_LEFT)
541   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("DOWN") PORT_CODE(KEYCODE_DOWN)
542   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UP") PORT_CODE(KEYCODE_UP)
543   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("DEL") PORT_CODE(KEYCODE_BACKSPACE)
544
545   PORT_MODIFY("KEY7")
546   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F8") PORT_CODE(KEYCODE_F8)
547   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F7") PORT_CODE(KEYCODE_F7)
548   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F6") PORT_CODE(KEYCODE_F6)
549   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F5") PORT_CODE(KEYCODE_F5)
550   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F4") PORT_CODE(KEYCODE_F4)
551   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F3") PORT_CODE(KEYCODE_F3)
552   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F2") PORT_CODE(KEYCODE_F2)
553   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F1") PORT_CODE(KEYCODE_F1)
554
555   PORT_MODIFY("KEY8")
556   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("BRK")
557   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CAP") PORT_CODE(KEYCODE_CAPSLOCK)
558   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("NUM")
559   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CDE")
560   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("GPH") PORT_CODE(KEYCODE_LALT)
561   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CTL") PORT_CODE(KEYCODE_LCONTROL)
562   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("SFT") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
562   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x92|") PORT_CODE(KEYCODE_TAB)
563   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x92") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
564   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x90") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
565   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x93") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
566   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x91") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
567   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("DEL BKSP") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
563568INPUT_PORTS_END
564569
565570static INPUT_PORTS_START( olivm10 )
r4696r4697
654659   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("LABEL") PORT_CODE(KEYCODE_F10) PORT_CHAR(UCHAR_MAMEKEY(F10))
655660INPUT_PORTS_END
656661
657static INPUT_PORTS_START( trsm200 )
658   PORT_START("KEY0")
659   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
660   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
661   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
662   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
663   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
664   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
665   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
666   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
662/* uPD1990A Interface */
667663
668   PORT_START("KEY1")
669   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
670   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
671   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
672   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
673   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
674   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
675   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
676   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
677
678   PORT_START("KEY2")
679   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
680   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
681   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
682   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
683   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
684   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
685   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
686   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
687
688   PORT_START("KEY3")
689   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
690   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
691   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
692   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('"')
693   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':')
694   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR(']')
695   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
696   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
697
698   PORT_START("KEY4")
699   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('*')
700   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&')
701   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('^')
702   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
703   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
704   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
705   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@')
706   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
707
708   PORT_START("KEY5")
709   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x93") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
710   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x91") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
711   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x92") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
712   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x90") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
713   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('+') PORT_CHAR('=')
714   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_')
715   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')')
716   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(')
717
718   PORT_START("KEY6")
719   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ENTER") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
720   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("PRINT") PORT_CODE(KEYCODE_F12) PORT_CHAR(UCHAR_MAMEKEY(F12))
721   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("LABEL") PORT_CODE(KEYCODE_F11) PORT_CHAR(UCHAR_MAMEKEY(F11))
722   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("PASTE") PORT_CODE(KEYCODE_F9) PORT_CHAR(UCHAR_MAMEKEY(F9))
723   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ESC") PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC))
724   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x92|") PORT_CODE(KEYCODE_TAB) PORT_CHAR('\t')
725   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("DEL BKSP") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
726   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("SPACE") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
727
728   PORT_START("KEY7")
729   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F8") PORT_CODE(KEYCODE_F8) PORT_CHAR(UCHAR_MAMEKEY(F8))
730   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F7") PORT_CODE(KEYCODE_F7) PORT_CHAR(UCHAR_MAMEKEY(F7))
731   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F6") PORT_CODE(KEYCODE_F6) PORT_CHAR(UCHAR_MAMEKEY(F6))
732   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F5") PORT_CODE(KEYCODE_F5) PORT_CHAR(UCHAR_MAMEKEY(F5))
733   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F4") PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F4))
734   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F3") PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F3))
735   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F2") PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
736   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F1") PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1))
737
738   PORT_START("KEY8")
739   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("PAUSE BREAK") PORT_CODE(KEYCODE_F9) PORT_CHAR(UCHAR_MAMEKEY(F9))
740   //PORT_BIT_UNUSED( 0x40 )
741   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CAPS LOCK") PORT_CODE(KEYCODE_CAPSLOCK)
742   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("NUM") PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_MAMEKEY(RCONTROL))
743   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CODE") PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_MAMEKEY(RALT))
744   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("GRAPH") PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT))
745   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CTRL") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL))
746   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("SHIFT") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
747INPUT_PORTS_END
748
749
750static MACHINE_START( kyo85 )
751{
752   const address_space *program = cputag_get_address_space(machine, I8085_TAG, ADDRESS_SPACE_PROGRAM);
753   const device_config *rtc = devtag_get_device(machine, UPD1990A_TAG);
754
755   upd1990a_cs_w(rtc, 1);
756   upd1990a_oe_w(rtc, 1);
757
758   /* configure ROM banking */
759   memory_install_readwrite8_handler(program, 0x0000, 0x7fff, 0, 0, SMH_BANK(1), SMH_UNMAP);
760   memory_configure_bank(machine, 1, 0, 1, memory_region(machine, I8085_TAG), 0);
761   memory_configure_bank(machine, 1, 1, 1, memory_region(machine, "option"), 0);
762   memory_set_bank(machine, 1, 0);
763
764   /* configure RAM banking */
765   switch (mess_ram_size)
766   {
767   case 16 * 1024:
768      memory_install_readwrite8_handler(program, 0x8000, 0xbfff, 0, 0, SMH_UNMAP, SMH_UNMAP);
769      memory_install_readwrite8_handler(program, 0xc000, 0xffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
770      break;
771
772   case 32 * 1024:
773      memory_install_readwrite8_handler(program, 0x8000, 0xffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
774      break;
775   }
776
777   memory_configure_bank(machine, 2, 0, 1, mess_ram, 0);
778   memory_set_bank(machine, 2, 0);
779}
780
781static MACHINE_RESET( kyo85 )
782{
783   port_a = 0;
784   port_b = 0;
785   io_E8 = 0;
786   io_D0 = 0;
787   io_A1 = 0;
788   io_90 = 0;
789}
790
791static MACHINE_START( pc8201 )
792{
793   kyocera_state *state = machine->driver_data;
794
795   /* configure ROM banking */
796   memory_configure_bank(machine, 1, 0, 1, memory_region(machine, I8085_TAG), 0);
797   memory_configure_bank(machine, 1, 1, 1, memory_region(machine, "ext"), 0);
798   memory_configure_bank(machine, 1, 2, 2, mess_ram + 0x4000, 0x8000);
799   memory_set_bank(machine, 1, 0);
800
801   /* configure RAM banking */
802   memory_configure_bank(machine, 2, 0, 1, mess_ram, 0);
803   memory_configure_bank(machine, 2, 2, 2, mess_ram + 0x4000, 0x8000);
804   memory_set_bank(machine, 2, 0);
805
806   pc8201_bankswitch(machine, 0);
807
808   /* find devices */
809   state->centronics = devtag_get_device(machine, "centronics");
810
811   /* register for state saving */
812}
813
814static MACHINE_START( trsm100 )
815{
816   const address_space *program = cputag_get_address_space(machine, I8085_TAG, ADDRESS_SPACE_PROGRAM);
817   const device_config *rtc = devtag_get_device(machine, UPD1990A_TAG);
818
819   upd1990a_cs_w(rtc, 1);
820   upd1990a_oe_w(rtc, 1);
821
822   /* configure ROM banking */
823   memory_install_readwrite8_handler(program, 0x0000, 0x7fff, 0, 0, SMH_BANK(1), SMH_UNMAP);
824   memory_configure_bank(machine, 1, 0, 1, memory_region(machine, I8085_TAG), 0);
825   memory_configure_bank(machine, 1, 1, 1, memory_region(machine, "option"), 0);
826   memory_set_bank(machine, 1, 0);
827
828   /* configure RAM banking */
829   switch (mess_ram_size)
830   {
831   case 8 * 1024:
832      memory_install_readwrite8_handler(program, 0x8000, 0xcfff, 0, 0, SMH_UNMAP, SMH_UNMAP);
833      memory_install_readwrite8_handler(program, 0xe000, 0xffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
834      break;
835
836   case 16 * 1024:
837      memory_install_readwrite8_handler(program, 0x8000, 0xbfff, 0, 0, SMH_UNMAP, SMH_UNMAP);
838      memory_install_readwrite8_handler(program, 0xc000, 0xffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
839      break;
840
841   case 24 * 1024:
842      memory_install_readwrite8_handler(program, 0x8000, 0x9fff, 0, 0, SMH_UNMAP, SMH_UNMAP);
843      memory_install_readwrite8_handler(program, 0xa000, 0xffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
844      break;
845
846   case 32 * 1024:
847      memory_install_readwrite8_handler(program, 0x8000, 0xffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
848      break;
849   }
850
851   memory_configure_bank(machine, 2, 0, 1, mess_ram, 0);
852   memory_set_bank(machine, 2, 0);
853}
854
855static MACHINE_START( trsm200 )
856{
857   trsm200_state *state = machine->driver_data;
858
859   /* configure ROM banking */
860   memory_configure_bank(machine, 1, 0, 1, memory_region(machine, I8085_TAG), 0);
861   memory_configure_bank(machine, 1, 1, 1, memory_region(machine, I8085_TAG) + 0x10000, 0);
862   memory_configure_bank(machine, 1, 2, 1, memory_region(machine, "option"), 0);
863   memory_set_bank(machine, 1, 0);
864
865   /* configure RAM banking */
866   memory_configure_bank(machine, 2, 0, 3, mess_ram, 0x6000);
867   memory_set_bank(machine, 2, 0);
868
869   /* find devices */
870   state->centronics = devtag_get_device(machine, "centronics");
871
872   /* register for state saving */
873}
874
875664static WRITE_LINE_DEVICE_HANDLER( kyocera_upd1990a_data_w )
876665{
877666   kyocera_state *driver_state = device->machine->driver_data;
r4696r4697
885674   DEVCB_CPU_INPUT_LINE(I8085_TAG, I8085_RST75_LINE)
886675};
887676
677/* RP5C01A Interface */
678
679static RP5C01A_INTERFACE( trsm200_rp5c01a_intf )
680{
681   DEVCB_NULL                        /* alarm */
682};
683
684/* 8155 Interface */
685
888686static READ8_DEVICE_HANDLER( kyocera_8155_port_c_r )
889687{
890688   /*
r4696r4697
905703   UINT8 data = 0;
906704
907705   data |= state->upd1990a_data;
908//   data |= centronics_not_busy_r(centronics) << 1;
909//   data |= centronics_busy_r(centronics) << 2;
706   data |= centronics_not_busy_r(state->centronics) << 1;
707   data |= centronics_busy_r(state->centronics) << 2;
910708
911709   return data;
912710}
913711
914712static WRITE8_DEVICE_HANDLER( kyocera_8155_port_a_w )
915713{
916   const device_config *rtc = devtag_get_device(device->machine, UPD1990A_TAG);
714   /*
917715
918   port_a = data;
919   kyo85_set_lcd_bank( device->machine, port_a | ((port_b & 3) << 8) );
716      bit      description
920717
921         /*
922         The first 5 bits of this port is used to control the 1990 real time clock chip. 
923         The configuration of these five bits are:
924         Bit:
925             0 -  C0
926             1 -  C1
927             2 -  C2
928             3 -  Clock
929             4 -  Serial data into clock chip */
718      0      LCD chip select 0, key scan 0, RTC C0
719      1      LCD chip select 1, key scan 1, RTC C1
720      2      LCD chip select 2, key scan 2, RTC C2
721      3      LCD chip select 3, key scan 3, RTC CLK
722      4      LCD chip select 4, key scan 4, RTC DATA IN
723      5      LCD chip select 5, key scan 5
724      6      LCD chip select 6, key scan 6
725      7      LCD chip select 7, key scan 7
930726
931   upd1990a_c0_w(rtc, BIT(data, 0));
932   upd1990a_c1_w(rtc, BIT(data, 1));
933   upd1990a_c2_w(rtc, BIT(data, 2));
934   upd1990a_clk_w(rtc, BIT(data, 3));
935   upd1990a_data_w(rtc, BIT(data, 4));
727   */
728
729   kyocera_state *state = device->machine->driver_data;
730
731   /* keyboard */
732   state->keylatch = (state->keylatch & 0x100) | data;
733
734   /* LCD */
735   state->lcd_cs2[0] = BIT(data, 0);
736   state->lcd_cs2[1] = BIT(data, 1);
737   state->lcd_cs2[2] = BIT(data, 2);
738   state->lcd_cs2[3] = BIT(data, 3);
739   state->lcd_cs2[4] = BIT(data, 4);
740   state->lcd_cs2[5] = BIT(data, 5);
741   state->lcd_cs2[6] = BIT(data, 6);
742   state->lcd_cs2[7] = BIT(data, 7);
743
744   /* RTC */
745   upd1990a_c0_w(state->upd1990a, BIT(data, 0));
746   upd1990a_c1_w(state->upd1990a, BIT(data, 1));
747   upd1990a_c2_w(state->upd1990a, BIT(data, 2));
748   upd1990a_clk_w(state->upd1990a, BIT(data, 3));
749   upd1990a_data_w(state->upd1990a, BIT(data, 4));
936750}
937751
938752static WRITE8_DEVICE_HANDLER( kyocera_8155_port_b_w )
939753{
940         /*
941         Bit:
942             0 - Column 9 select line for keyboard.  This line is
943            also used for the CS-28 line of the LCD.
944             1 - CS 29 line of LCD
945             2 - Beep toggle (1-Data from bit 5, 0-Data from 8155
946            timer)
947             3 - Serial toggle (1-Modem, 0-RS232)
948             4 - Software on/off switch for computer
949             5 - Data to beeper if bit 2 set.  Set if bit 2 low.
950             6 - DTR (not) line for RS232
951             7 - RTS (not) line for RS232 */
952   port_b = data;
953   kyo85_set_lcd_bank( device->machine, port_a | ((port_b & 3) << 8) );
754   /*
755
756      bit      signal      description
757
758      0               LCD chip select 8, key scan 8
759      1               LCD chip select 9
760      2               beeper data input select (0=data from 8155 TO, 1=data from PB5)
761      3      _RS232      modem select (0=RS232, 1=modem)
762      4      PCS         soft power off
763      5               beeper data output
764      6      _DTR      RS232 data terminal ready output
765      7      _RTS      RS232 request to send output
766
767   */
768
769   kyocera_state *state = device->machine->driver_data;
770
771   /* keyboard */
772   state->keylatch = (BIT(data, 0) << 8) | (state->keylatch & 0xff);
773
774   /* LCD */
775   state->lcd_cs2[8] = BIT(data, 0);
776   state->lcd_cs2[9] = BIT(data, 1);
954777}
955778
956779static PIO8155_INTERFACE( kyocera_8155_intf )
r4696r4697
1046869   DEVCB_NULL                        /* timer output */
1047870};
1048871
1049static RP5C01A_INTERFACE( trsm200_rp5c01a_intf )
872/* Machine Drivers */
873
874static MACHINE_START( kyo85 )
1050875{
1051   DEVCB_NULL                        /* alarm */
1052};
876   kyocera_state *state = machine->driver_data;
1053877
1054static TIMER_DEVICE_CALLBACK( trsm200_tp_tick )
878   const address_space *program = cputag_get_address_space(machine, I8085_TAG, ADDRESS_SPACE_PROGRAM);
879
880   /* find devices */
881   state->upd1990a = devtag_get_device(machine, UPD1990A_TAG);
882   state->centronics = devtag_get_device(machine, "centronics");
883
884   /* initialize RTC */
885   upd1990a_cs_w(state->upd1990a, 1);
886   upd1990a_oe_w(state->upd1990a, 1);
887
888   /* configure ROM banking */
889   memory_install_readwrite8_handler(program, 0x0000, 0x7fff, 0, 0, SMH_BANK(1), SMH_UNMAP);
890   memory_configure_bank(machine, 1, 0, 1, memory_region(machine, I8085_TAG), 0);
891   memory_configure_bank(machine, 1, 1, 1, memory_region(machine, "option"), 0);
892   memory_set_bank(machine, 1, 0);
893
894   /* configure RAM banking */
895   switch (mess_ram_size)
896   {
897   case 16 * 1024:
898      memory_install_readwrite8_handler(program, 0x8000, 0xbfff, 0, 0, SMH_UNMAP, SMH_UNMAP);
899      memory_install_readwrite8_handler(program, 0xc000, 0xffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
900      break;
901
902   case 32 * 1024:
903      memory_install_readwrite8_handler(program, 0x8000, 0xffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
904      break;
905   }
906
907   memory_configure_bank(machine, 2, 0, 1, mess_ram, 0);
908   memory_set_bank(machine, 2, 0);
909
910   /* register for state saving */
911}
912
913static MACHINE_START( pc8201 )
1055914{
1056   trsm200_state *state = timer->machine->driver_data;
915   kyocera_state *state = machine->driver_data;
1057916
1058   cputag_set_input_line(timer->machine, I8085_TAG, I8085_RST75_LINE, state->tp);
917   /* find devices */
918   state->upd1990a = devtag_get_device(machine, UPD1990A_TAG);
919   state->centronics = devtag_get_device(machine, "centronics");
1059920
1060   state->tp = !state->tp;
921   /* initialize RTC */
922   upd1990a_cs_w(state->upd1990a, 1);
923   upd1990a_oe_w(state->upd1990a, 1);
924
925   /* configure ROM banking */
926   memory_configure_bank(machine, 1, 0, 1, memory_region(machine, I8085_TAG), 0);
927   memory_configure_bank(machine, 1, 1, 1, memory_region(machine, "ext"), 0);
928   memory_configure_bank(machine, 1, 2, 2, mess_ram + 0x4000, 0x8000);
929   memory_set_bank(machine, 1, 0);
930
931   /* configure RAM banking */
932   memory_configure_bank(machine, 2, 0, 1, mess_ram, 0);
933   memory_configure_bank(machine, 2, 2, 2, mess_ram + 0x4000, 0x8000);
934   memory_set_bank(machine, 2, 0);
935
936   pc8201_bankswitch(machine, 0);
937
938   /* register for state saving */
1061939}
1062940
941static MACHINE_START( trsm100 )
942{
943   kyocera_state *state = machine->driver_data;
944
945   const address_space *program = cputag_get_address_space(machine, I8085_TAG, ADDRESS_SPACE_PROGRAM);
946   
947   /* find devices */
948   state->upd1990a = devtag_get_device(machine, UPD1990A_TAG);
949   state->centronics = devtag_get_device(machine, "centronics");
950
951   /* initialize RTC */
952   upd1990a_cs_w(state->upd1990a, 1);
953   upd1990a_oe_w(state->upd1990a, 1);
954
955   /* configure ROM banking */
956   memory_install_readwrite8_handler(program, 0x0000, 0x7fff, 0, 0, SMH_BANK(1), SMH_UNMAP);
957   memory_configure_bank(machine, 1, 0, 1, memory_region(machine, I8085_TAG), 0);
958   memory_configure_bank(machine, 1, 1, 1, memory_region(machine, "option"), 0);
959   memory_set_bank(machine, 1, 0);
960
961   /* configure RAM banking */
962   switch (mess_ram_size)
963   {
964   case 8 * 1024:
965      memory_install_readwrite8_handler(program, 0x8000, 0xcfff, 0, 0, SMH_UNMAP, SMH_UNMAP);
966      memory_install_readwrite8_handler(program, 0xe000, 0xffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
967      break;
968
969   case 16 * 1024:
970      memory_install_readwrite8_handler(program, 0x8000, 0xbfff, 0, 0, SMH_UNMAP, SMH_UNMAP);
971      memory_install_readwrite8_handler(program, 0xc000, 0xffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
972      break;
973
974   case 24 * 1024:
975      memory_install_readwrite8_handler(program, 0x8000, 0x9fff, 0, 0, SMH_UNMAP, SMH_UNMAP);
976      memory_install_readwrite8_handler(program, 0xa000, 0xffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
977      break;
978
979   case 32 * 1024:
980      memory_install_readwrite8_handler(program, 0x8000, 0xffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
981      break;
982   }
983
984   memory_configure_bank(machine, 2, 0, 1, mess_ram, 0);
985   memory_set_bank(machine, 2, 0);
986
987   /* register for state saving */
988}
989
990static MACHINE_START( trsm200 )
991{
992   trsm200_state *state = machine->driver_data;
993
994   /* find devices */
995   state->centronics = devtag_get_device(machine, "centronics");
996
997   /* configure ROM banking */
998   memory_configure_bank(machine, 1, 0, 1, memory_region(machine, I8085_TAG), 0);
999   memory_configure_bank(machine, 1, 1, 1, memory_region(machine, I8085_TAG) + 0x10000, 0);
1000   memory_configure_bank(machine, 1, 2, 1, memory_region(machine, "option"), 0);
1001   memory_set_bank(machine, 1, 0);
1002
1003   /* configure RAM banking */
1004   memory_configure_bank(machine, 2, 0, 3, mess_ram, 0x6000);
1005   memory_set_bank(machine, 2, 0);
1006
1007   /* register for state saving */
1008}
1009
10631010static const cassette_config kyocera_cassette_config =
10641011{
10651012   cassette_default_formats,
r4696r4697
10851032   kyocera_sid_r         /* SID changed callback (8085A only) */
10861033};
10871034
1035static TIMER_DEVICE_CALLBACK( trsm200_tp_tick )
1036{
1037   trsm200_state *state = timer->machine->driver_data;
1038
1039   cputag_set_input_line(timer->machine, I8085_TAG, I8085_RST75_LINE, state->tp);
1040
1041   state->tp = !state->tp;
1042}
1043
10881044static MACHINE_DRIVER_START( kyo85 )
10891045   MDRV_DRIVER_DATA(kyocera_state)
10901046
r4696r4697
10951051   MDRV_CPU_CONFIG(kyocera_i8085_config)
10961052
10971053   MDRV_MACHINE_START( kyo85 )
1098   MDRV_MACHINE_RESET( kyo85 )
10991054
11001055   /* video hardware */
11011056   MDRV_IMPORT_FROM(kyo85_video)
r4696r4697
11141069
11151070   /* cassette */
11161071   MDRV_CASSETTE_ADD("cassette", kyocera_cassette_config)
1072
1073   /* option ROM cartridge */
1074   MDRV_CARTSLOT_ADD("cart")
1075   MDRV_CARTSLOT_EXTENSION_LIST("rom,bin")
1076   MDRV_CARTSLOT_NOT_MANDATORY
11171077MACHINE_DRIVER_END
11181078
11191079static MACHINE_DRIVER_START( pc8201 )
r4696r4697
11441104
11451105   /* cassette */
11461106   MDRV_CASSETTE_ADD("cassette", kyocera_cassette_config)
1107
1108   /* option ROM cartridge */
1109   MDRV_CARTSLOT_ADD("cart")
1110   MDRV_CARTSLOT_EXTENSION_LIST("rom,bin")
1111   MDRV_CARTSLOT_NOT_MANDATORY
11471112MACHINE_DRIVER_END
11481113
11491114static MACHINE_DRIVER_START( trsm100 )
r4696r4697
11851150
11861151   /* cassette */
11871152   MDRV_CASSETTE_ADD("cassette", kyocera_cassette_config)
1153
1154   /* option ROM cartridge */
1155   MDRV_CARTSLOT_ADD("cart")
1156   MDRV_CARTSLOT_EXTENSION_LIST("rom,bin")
1157   MDRV_CARTSLOT_NOT_MANDATORY
11881158MACHINE_DRIVER_END
11891159
11901160/* ROMs */
r4696r4697
11931163   ROM_REGION( 0x8000, I8085_TAG, 0 )
11941164   ROM_LOAD( "kc85rom.bin", 0x0000, 0x8000, CRC(8a9ddd6b) SHA1(9d18cb525580c9e071e23bc3c472380aa46356c0) )
11951165
1196   ROM_REGION( 0x8000, "option", ROMREGION_ERASE00 )
1166   ROM_REGION( 0x8000, "option", ROMREGION_ERASEFF )
1167   ROM_CART_LOAD("cart", 0x0000, 0x8000, ROM_NOMIRROR | ROM_OPTIONAL)
11971168ROM_END
11981169
11991170ROM_START( pc8201 )
12001171   ROM_REGION( 0x10000, I8085_TAG, 0 )
12011172   ROM_LOAD( "pc8201rom.bin", 0x0000, 0x8000, BAD_DUMP CRC(4c534662) SHA1(758fefbba251513e7f9d86f7e9016ad8817188d8) ) /* Y2K hacked */
12021173
1203   ROM_REGION( 0x8000, "ext", ROMREGION_ERASE00 )
1174   ROM_REGION( 0x8000, "ext", ROMREGION_ERASEFF )
1175   ROM_CART_LOAD("cart", 0x0000, 0x8000, ROM_NOMIRROR | ROM_OPTIONAL)
12041176ROM_END
12051177
12061178ROM_START( trsm100 )
12071179   ROM_REGION( 0x8000, I8085_TAG, 0 )
12081180   ROM_LOAD( "m100rom.bin",  0x0000, 0x8000, CRC(730a3611) SHA1(094dbc4ac5a4ea5cdf51a1ac581a40a9622bb25d) )
12091181
1210   ROM_REGION( 0x8000, "option", ROMREGION_ERASE00 )
1182   ROM_REGION( 0x8000, "option", ROMREGION_ERASEFF )
1183   ROM_CART_LOAD("cart", 0x0000, 0x8000, ROM_NOMIRROR | ROM_OPTIONAL)
12111184ROM_END
12121185
12131186ROM_START( olivm10 )
12141187   ROM_REGION( 0x8010, I8085_TAG, 0 )
12151188   ROM_LOAD( "m10rom.bin", 0x0000, 0x8010, CRC(0be02b58) SHA1(56f2087a658efd0323663d15afcd4f5f27c68664) )
12161189
1217   ROM_REGION( 0x8000, "option", ROMREGION_ERASE00 )
1190   ROM_REGION( 0x8000, "option", ROMREGION_ERASEFF )
1191   ROM_CART_LOAD("cart", 0x0000, 0x8000, ROM_NOMIRROR | ROM_OPTIONAL)
12181192ROM_END
12191193
12201194ROM_START( trsm102 )
12211195   ROM_REGION( 0x8000, I8085_TAG, 0 )
12221196   ROM_LOAD( "m102rom.bin", 0x0000, 0x8000, BAD_DUMP CRC(0e4ff73a) SHA1(d91f4f412fb78c131ccd710e8158642de47355e2) ) /* Y2K hacked */
12231197
1224   ROM_REGION( 0x8000, "option", ROMREGION_ERASE00 )
1198   ROM_REGION( 0x8000, "option", ROMREGION_ERASEFF )
1199   ROM_CART_LOAD("cart", 0x0000, 0x8000, ROM_NOMIRROR | ROM_OPTIONAL)
12251200ROM_END
12261201
12271202ROM_START( trsm200 )
r4696r4697
12291204   ROM_LOAD( "t200rom.bin", 0x0000, 0xa000, BAD_DUMP CRC(e3358b38) SHA1(35d4e6a5fb8fc584419f57ec12b423f6021c0991) ) /* Y2K hacked */
12301205   ROM_CONTINUE(         0x10000, 0x8000 )
12311206
1232   ROM_REGION( 0x8000, "option", ROMREGION_ERASE00 )
1207   ROM_REGION( 0x8000, "option", ROMREGION_ERASEFF )
1208   ROM_CART_LOAD("cart", 0x0000, 0x8000, ROM_NOMIRROR | ROM_OPTIONAL)
12331209ROM_END
12341210
12351211/* System Configurations */
r4696r4697
12701246COMP( 1983, olivm10,  0,       0,      kyo85,      olivm10, 0,        kyo85,      "Olivetti",           "M10",       GAME_IMPERFECT_SOUND )
12711247COMP( 1983, pc8201,   0,       0,      pc8201,     pc8201a, 0,        pc8201,     "NEC",                "PC-8201A", GAME_NOT_WORKING )
12721248COMP( 1983, trsm100,  0,       0,      trsm100,    kyo85,   0,        trsm100,    "Tandy Radio Shack",  "TRS-80 Model 100", GAME_IMPERFECT_SOUND )
1273COMP( 1984, trsm200,  0,       0,      trsm200,    trsm200, 0,        trsm200,    "Tandy Radio Shack",  "TRS-80 Model 200", GAME_IMPERFECT_SOUND )
1249COMP( 1984, trsm200,  0,       0,      trsm200,    kyo85,  0,        trsm200,    "Tandy Radio Shack",  "TRS-80 Model 200", GAME_IMPERFECT_SOUND )
12741250COMP( 1986, trsm102,  0,       0,      trsm100,    kyo85,   0,        trsm102,    "Tandy Radio Shack",  "TRS-80 Model 102", GAME_IMPERFECT_SOUND )

Previous 15994 Revisions Next


© 1998-2018 The MESS Team