Previous 15994 Revisions Next

r2805 Monday 2nd June, 2008 at 17:12:44 UTC by Curt Coder
[NEWBRAIN] Added some LCD code.
[src/mess/drivers]newbrain.c
[src/mess/includes]newbrain.h

src/mess/includes/newbrain.h
r2804r2805
77struct _newbrain_state
88{
99   /* COP420 state */
10   UINT8 cop_bus;            /* data bus */
10   UINT8 cop_bus;         /* data bus */
11   int cop_so;            /* serial out */
12   int cop_tdo;         /* ? */
13   int cop_tdi;         /* ? */
14   int cop_rd;            /* memory read */
15   int cop_wr;            /* memory write */
16   int cop_access;         /* COP access */
1117
18   /* fluorescent display state */
19   int segment_data[16];   /* segment data */
20
1221   /* keyboard state */
1322   int keylatch;         /* keyboard row */
1423   int keydata;         /* keyboard column */
24
25   /* floppy state */
26   int fdc_int;         /* interrupt */
1527};
1628
1729#endif
src/mess/drivers/newbrain.c
r2804r2805
11#include "driver.h"
2#include "deprecat.h"
23#include "cpu/z80/z80daisy.h"
34#include "cpu/cop400/cop400.h"
45#include "machine/nec765.h"
r2804r2805
2526   NEC 765AC @ 4 MHz (418)
2627   MC6850 ACIA (459)
2728   Z80CTC (458)
29   ADC0809 (427)
2830
2931*/
3032
r2804r2805
3638   - main z80 interrupt from COP420
3739   - video
3840   - tape
41   - layout for the 16-segment displays
3942
4043   - floppy disc controller
4144   - CP/M 2.2
r2804r2805
7982   */
8083
8184   // _Z80INT = ((_CLK | _CLKINT) & _COPINT)
85
86   cpunum_set_input_line(machine, 0, INPUT_LINE_IRQ0, BIT(data, 0) ? HOLD_LINE : CLEAR_LINE);
8287}
8388
8489static READ8_HANDLER( newbrain_cop_g_r )
r2804r2805
99104   return (BIT(state->keydata, 3) << 3) | (BIT(state->keydata, 0) << 2) | (BIT(state->keydata, 1) << 1);
100105}
101106
102static READ8_HANDLER( newbrain_cop_d_r )
103{
104   /*
105
106      bit      description
107     
108      D0      inverted to K4
109      D1      TDO
110      D2      inverted to K6
111      D3     
112
113   */
114
115   return 0;
116}
117
118107static WRITE8_HANDLER( newbrain_cop_d_w )
119108{
120109   /*
r2804r2805
135124      state->keylatch = 0;
136125   }
137126
127   state->cop_tdo = BIT(data, 1);
128
138129   if (!BIT(data, 2))
139130   {
140131      char port[4];
r2804r2805
149140      sprintf(port, "D%d", state->keylatch);
150141     
151142      state->keydata = input_port_read(machine, port);
143
144      output_set_digit_value(state->keylatch, state->segment_data[state->keylatch]);
152145   }
153146}
154147
r2804r2805
167160
168161   newbrain_state *state = machine->driver_data;
169162
170   return BIT(state->keydata, 2);
163   return (state->cop_rd << 3) | (state->cop_access << 2) | (state->cop_rd << 1) | BIT(state->keydata, 2);
171164}
172165
173166static WRITE8_HANDLER( newbrain_cop_so_w )
174167{
175168   // connected to K1
169
170   newbrain_state *state = machine->driver_data;
171
172   state->cop_so = data;
176173}
177174
178175static WRITE8_HANDLER( newbrain_cop_sk_w )
179176{
180177   // connected to K2
178
179   newbrain_state *state = machine->driver_data;
180
181   state->segment_data[state->keylatch] >>= 1;
182   state->segment_data[state->keylatch] = (state->cop_so << 15) | (state->segment_data[state->keylatch] & 0x7fff);
181183}
182184
183185static READ8_HANDLER( newbrain_cop_si_r )
184186{
185187   // connected to TDI
186188
187   return 0;
189   newbrain_state *state = machine->driver_data;
190
191   return state->cop_tdi;
188192}
189193
190194#ifdef UNUSED_CODE
r2804r2805
231235   nec765_set_tc_state(BIT(data, 2));
232236}
233237
238static READ8_HANDLER( fdc_io3_r )
239{
240   /*
241
242      bit      description
243
244      0     
245      1     
246      2     
247      3     
248      4     
249      5      FDC INT
250      6      PAGING
251      7      FDC ATT
252
253   */
254
255   newbrain_state *state = machine->driver_data;
256
257   return state->fdc_int << 5;
258}
259
234260static WRITE8_HANDLER( io_w )
235261{
236262   /*
r2804r2805
268294static ADDRESS_MAP_START( newbrain_cop_io_map, ADDRESS_SPACE_IO, 8 )
269295   AM_RANGE(COP400_PORT_L, COP400_PORT_L) AM_READWRITE(newbrain_cop_l_r, newbrain_cop_l_w)
270296   AM_RANGE(COP400_PORT_G, COP400_PORT_G) AM_READWRITE(newbrain_cop_g_r, newbrain_cop_g_w)
271   AM_RANGE(COP400_PORT_D, COP400_PORT_D) AM_READWRITE(newbrain_cop_d_r, newbrain_cop_d_w)
297   AM_RANGE(COP400_PORT_D, COP400_PORT_D) AM_WRITE(newbrain_cop_d_w)
272298   AM_RANGE(COP400_PORT_IN, COP400_PORT_IN) AM_READ(newbrain_cop_in_r)
273299   AM_RANGE(COP400_PORT_SK, COP400_PORT_SK) AM_WRITE(newbrain_cop_sk_w)
274300   AM_RANGE(COP400_PORT_SIO, COP400_PORT_SIO) AM_READWRITE(newbrain_cop_si_r, newbrain_cop_so_w)
r2804r2805
418444
419445static void newbrain_fdc_interrupt(int state)
420446{
447   newbrain_state *driver_state = Machine->driver_data;
448
449   driver_state->fdc_int = state;
421450}
422451
423452static const struct nec765_interface newbrain_nec765_interface =
r2804r2805
426455   NULL
427456};
428457
429MACHINE_START( newbrain )
458static MACHINE_START( newbrain )
430459{
431460   nec765_init(&newbrain_nec765_interface, NEC765A, NEC765_RDY_PIN_NOT_CONNECTED);
432461   acia6850_config(0, &newbrain_acia_intf);
433462}
434463
435MACHINE_RESET( newbrain )
464static MACHINE_RESET( newbrain )
436465{
437466}
438467
r2804r2805
442471   { 0, 0, 0, 0, -1 }
443472};
444473
474static INTERRUPT_GEN( newbrain_interrupt )
475{
476   cpunum_set_input_line(machine, 0, INPUT_LINE_IRQ0, HOLD_LINE);
477}
478
445479/* Machine Drivers */
446480
447481static MACHINE_DRIVER_START( newbrain )
r2804r2805
452486   MDRV_CPU_ADD_TAG("main", Z80, XTAL_16MHz/8)
453487   MDRV_CPU_PROGRAM_MAP(newbrain_map, 0)
454488   MDRV_CPU_IO_MAP(newbrain_io_map, 0)
489   MDRV_CPU_VBLANK_INT("main", newbrain_interrupt)
455490
456491   MDRV_CPU_ADD_TAG("cop", COP420, XTAL_16MHz/8)
457492   MDRV_CPU_PROGRAM_MAP(newbrain_cop_map, 0)
r2804r2805
495530   ROM_SYSTEM_BIOS( 0, "default", "ROM 2.0" )
496531   ROMX_LOAD( "aben20.rom", 0xa000, 0x2000, CRC(3d76d0c8) SHA1(753b4530a518ad832e4b81c4e5430355ba3f62e0), ROM_BIOS(1) )
497532   ROMX_LOAD( "cd20tci.rom", 0xc000, 0x4000, CRC(f65b2350) SHA1(1ada7fbf207809537ec1ffb69808524300622ada), ROM_BIOS(1) )
498
499533   ROM_SYSTEM_BIOS( 1, "rom191", "ROM 1.91" )
500534   ROMX_LOAD( "aben191.rom", 0xa000, 0x2000, CRC(b7be8d89) SHA1(cce8d0ae7aa40245907ea38b7956c62d039d45b7), ROM_BIOS(2) )
501535   ROMX_LOAD( "cd.rom", 0xc000, 0x2000, CRC(6b4d9429) SHA1(ef688be4e75aced61f487c928258c8932a0ae00a), ROM_BIOS(2) )
502536   ROMX_LOAD( "ef1x.rom", 0xe000, 0x2000, CRC(20dd0b49) SHA1(74b517ca223cefb588e9f49e72ff2d4f1627efc6), ROM_BIOS(2) )
503
504537   ROM_SYSTEM_BIOS( 2, "rom19", "ROM 1.9" )
505538   ROMX_LOAD( "aben19.rom", 0xa000, 0x2000, CRC(d0283eb1) SHA1(351d248e69a77fa552c2584049006911fb381ff0), ROM_BIOS(3) )
506539   ROMX_LOAD( "cd.rom", 0xc000, 0x2000, CRC(6b4d9429) SHA1(ef688be4e75aced61f487c928258c8932a0ae00a), ROM_BIOS(3) )
507540   ROMX_LOAD( "ef1x.rom", 0xe000, 0x2000, CRC(20dd0b49) SHA1(74b517ca223cefb588e9f49e72ff2d4f1627efc6), ROM_BIOS(3) )
508
509541   ROM_SYSTEM_BIOS( 3, "rom14", "ROM 1.4" )
510542   ROMX_LOAD( "aben14.rom", 0xa000, 0x2000, CRC(d0283eb1) SHA1(351d248e69a77fa552c2584049006911fb381ff0), ROM_BIOS(4) )
511543   ROMX_LOAD( "cd.rom", 0xc000, 0x2000, CRC(6b4d9429) SHA1(ef688be4e75aced61f487c928258c8932a0ae00a), ROM_BIOS(4) )

Previous 15994 Revisions Next


© 1998-2018 The MESS Team