Previous 15994 Revisions Next

r9796 Monday 20th December, 2010 at 19:13:48 UTC by Curt Coder
[OB68K1A] Added terminal, promoted to working.
[docs]messnew.txt
[src/emu/machine]6850acia.c 6850acia.h
[src/mess]mess.mak
[src/mess/drivers]ob68k1a.c
[src/mess/includes]ob68k1a.h*

src/emu/machine/6850acia.c
r9795r9796
1515    MACROS
1616***************************************************************************/
1717
18#define LOG 0
19
1820#define CR1_0   0x03
1921#define CR4_2   0x1C
2022#define CR6_5   0x60
r9795r9796
217219
218220WRITE8_DEVICE_HANDLER_TRAMPOLINE(acia6850, acia6850_ctrl_w )
219221{
220   int wordsel;
221   int divide;
222   if (LOG) logerror("MC6850 '%s' Control: %02x\n", tag(), data);
222223
223224   // Counter Divide Select Bits
224225
225   divide = data & CR1_0;
226   int divide = data & CR1_0;
226227
227228   if (divide == 3)
228229   {
r9795r9796
237238
238239   // Word Select Bits
239240
240   wordsel = (data & CR4_2) >> 2;
241   int wordsel = (data & CR4_2) >> 2;
241242
242243   m_bits = ACIA6850_WORD[wordsel][0];
243244   m_parity = (parity_type)ACIA6850_WORD[wordsel][1];
r9795r9796
338339
339340WRITE8_DEVICE_HANDLER_TRAMPOLINE(acia6850, acia6850_data_w)
340341{
342   if (LOG) logerror("MC6850 '%s' Data: %02x\n", tag(), data);
343
341344   if (!m_reset)
342345   {
343346      m_tdr = data;
r9795r9796
424427            {
425428               // transmit character
426429
427               //logerror("ACIA6850 #%u: TX DATA %x\n", which, m_tdr);
428               //logerror("ACIA6850 #%u: TX START BIT\n", which);
430               if (LOG) logerror("MC6850 '%s': TX DATA %x\n", tag(), m_tdr);
431               if (LOG) logerror("MC6850 '%s': TX START BIT\n", tag());
429432
430433               TXD(0);
431434
r9795r9796
440443      case DATA:
441444      {
442445         int val = m_tx_shift & 1;
443         //logerror("ACIA6850 #%u: TX DATA BIT %x\n", which, val);
446         if (LOG) logerror("MC6850 '%s': TX DATA BIT %x\n", tag(), val);
444447
445448         TXD(val);
446449         m_tx_parity ^= val;
r9795r9796
455458      }
456459      case PARITY:
457460      {
461         int parity = 0;
462
458463         if (m_parity == EVEN)
459464         {
460            TXD((m_tx_parity & 1) ? 1 : 0);
465            parity = (m_tx_parity & 1) ? 1 : 0;
461466         }
462467         else
463468         {
464            TXD((m_tx_parity & 1) ? 0 : 1);
469            parity = (m_tx_parity & 1) ? 0 : 1;
465470         }
466471
467         //logerror("ACIA6850 #%u: TX PARITY BIT %x\n", which, *m_tx_pin);
472         TXD(parity);
473
474         if (LOG) logerror("MC6850 '%s': TX PARITY BIT %x\n", tag(), parity);
468475         m_tx_state = STOP;
469476         break;
470477      }
471478      case STOP:
472479      {
473         //logerror("ACIA6850 #%u: TX STOP BIT\n", which);
480         if (LOG) logerror("MC6850 '%s': TX STOP BIT\n", tag());
474481         TXD(1);
475482
476483         if (m_stopbits == 1)
r9795r9796
486493      }
487494      case STOP2:
488495      {
489         //logerror("ACIA6850 #%u: TX STOP BIT\n", which);
496         if (LOG) logerror("MC6850 '%s': TX STOP BIT\n", tag());
490497         TXD(1);
491498         m_tx_state = START;
492499         m_status |= ACIA6850_STATUS_TDRE;
r9795r9796
571578         {
572579            if (rxd == 0)
573580            {
574               //logerror("ACIA6850 #%u: RX START BIT\n", which);
581               if (LOG) logerror("MC6850 '%s': RX START BIT\n", tag());
575582               m_rx_shift = 0;
576583               m_rx_parity = 0;
577584               m_rx_bits = m_bits;
r9795r9796
581588         }
582589         case DATA:
583590         {
584            //logerror("ACIA6850 #%u: RX DATA BIT %x\n", which, rxd);
591            if (LOG) logerror("MC6850 '%s': RX DATA BIT %x\n", tag(), rxd);
585592            m_rx_shift |= rxd ? 0x80 : 0;
586593            m_rx_parity ^= rxd;
587594
r9795r9796
603610         }
604611         case PARITY:
605612         {
606            //logerror("ACIA6850 #%u: RX PARITY BIT %x\n", which, rxd);
613            if (LOG) logerror("MC6850 '%s': RX PARITY BIT %x\n", tag(), rxd);
607614            m_rx_parity ^= rxd;
608615
609616            if (m_parity == EVEN)
r9795r9796
628635         {
629636            if (rxd == 1)
630637            {
631               //logerror("ACIA6850 #%u: RX STOP BIT\n", which);
638               if (LOG) logerror("MC6850 '%s': RX STOP BIT\n", tag());
632639               if (m_stopbits == 1)
633640               {
634641                  m_status &= ~ACIA6850_STATUS_FE;
635642
636643                  if (!(m_status & ACIA6850_STATUS_RDRF))
637644                  {
638                     //logerror("ACIA6850 #%u: RX DATA %x\n", which, m_rx_shift);
645                     if (LOG) logerror("MC6850 '%s': RX DATA %x\n", tag(), m_rx_shift);
639646                     m_rdr = m_rx_shift;
640647                     m_status |= ACIA6850_STATUS_RDRF;
641648                     check_interrupts();
r9795r9796
659666         {
660667            if (rxd == 1)
661668            {
662               //logerror("ACIA6850 #%u: RX STOP BIT\n", which);
669               if (LOG) logerror("MC6850 '%s': RX STOP BIT\n", tag());
663670               m_status &= ~ACIA6850_STATUS_FE;
664671
665672               if (!(m_status & ACIA6850_STATUS_RDRF))
666673               {
667                  //logerror("ACIA6850 #%u: RX DATA %x\n", which, m_rx_shift);
674                  if (LOG) logerror("MC6850 '%s': RX DATA %x\n", tag(), m_rx_shift);
668675                  m_rdr = m_rx_shift;
669676                  m_status |= ACIA6850_STATUS_RDRF;
670677                  check_interrupts();
r9795r9796
780787{
781788   downcast<acia6850_device*>(device)->set_tx_clock(clock);
782789}
790
791
792/*-------------------------------------------------
793    receive_data - receive data byte
794-------------------------------------------------*/
795
796void acia6850_device::receive_data(UINT8 data)
797{
798   m_rdr = data;
799   m_status |= ACIA6850_STATUS_RDRF;
800   check_interrupts();
801}
802
803
804/*-------------------------------------------------
805    acia6850_receive_data - Receive data byte
806-------------------------------------------------*/
807
808void acia6850_receive_data(running_device *device, UINT8 data)
809{
810   downcast<acia6850_device*>(device)->receive_data(data);
811}
src/emu/machine/6850acia.h
r9795r9796
116116   void set_rx_clock(int clock);
117117   void set_tx_clock(int clock);
118118
119   void receive_data(UINT8 data);
120
119121protected:
120122    // device-level overrides
121123    virtual void device_start();
r9795r9796
223225void acia6850_set_rx_clock(running_device *device, int clock) ATTR_NONNULL(1);
224226void acia6850_set_tx_clock(running_device *device, int clock) ATTR_NONNULL(1);
225227
228void acia6850_receive_data(running_device *device, UINT8 data) ATTR_NONNULL(1);
229
226230WRITE8_DEVICE_HANDLER( acia6850_ctrl_w );
227231READ8_DEVICE_HANDLER( acia6850_stat_r );
228232WRITE8_DEVICE_HANDLER( acia6850_data_w );
src/mess/includes/ob68k1a.h
r0r9796
1#pragma once
2
3#ifndef __OB68K1A__
4#define __OB68K1A__
5
6#define MC68000L10_TAG   "u50"
7#define MC6821_0_TAG   "u32"
8#define MC6821_1_TAG   "u33"
9#define MC6840_TAG      "u35"
10#define MC6850_0_TAG   "u34"
11#define MC6850_1_TAG   "u26"
12#define COM8116_TAG      "u56"
13#define TERMINAL_TAG   "terminal"
14
15class ob68k1a_state : public driver_device
16{
17public:
18   ob68k1a_state(running_machine &machine, const driver_device_config_base &config)
19      : driver_device(machine, config),
20        m_maincpu(*this, MC68000L10_TAG),
21        m_dbrg(*this, COM8116_TAG),
22        m_acia0(*this, MC6850_0_TAG),
23        m_pia0(*this, MC6821_0_TAG),
24        m_pia1(*this, MC6821_1_TAG),
25        m_terminal(*this, TERMINAL_TAG),
26        m_ram(*this, "messram")
27   { }
28
29   required_device<cpu_device> m_maincpu;
30   required_device<running_device> m_dbrg;
31   required_device<running_device> m_acia0;
32   required_device<running_device> m_pia0;
33   required_device<running_device> m_pia1;
34   required_device<running_device> m_terminal;
35   required_device<running_device> m_ram;
36
37   virtual void machine_start();
38   virtual void machine_reset();
39
40   DECLARE_WRITE8_MEMBER( com8116_w );
41   DECLARE_WRITE8_MEMBER( acia0_data_w );
42   DECLARE_READ8_MEMBER( pia_r );
43   DECLARE_WRITE8_MEMBER( pia_w );
44};
45
46#endif
src/mess/mess.mak
r9795r9796
348348   $(MESSOBJ)/nokia.a \
349349   $(MESSOBJ)/novag.a \
350350   $(MESSOBJ)/olivetti.a \
351   $(MESSOBJ)/omnibyte.a \
351352   $(MESSOBJ)/orion.a \
352353   $(MESSOBJ)/osborne.a \
353354   $(MESSOBJ)/osi.a \
r9795r9796
12041205$(MESSOBJ)/olivetti.a:         \
12051206   $(MESS_DRIVERS)/m20.o      \
12061207
1208$(MESSOBJ)/omnibyte.a:         \
1209   $(MESS_DRIVERS)/msbc1.o      \
1210   $(MESS_DRIVERS)/ob68k1a.o   \
1211
12071212$(MESSOBJ)/orion.a:            \
12081213   $(MESS_DRIVERS)/orion.o      \
12091214   $(MESS_MACHINE)/orion.o      \
r9795r9796
17191724   $(MESS_DRIVERS)/mmd1.o      \
17201725   $(MESS_DRIVERS)/mod8.o      \
17211726   $(MESS_DRIVERS)/multi8.o   \
1722   $(MESS_DRIVERS)/msbc1.o      \
17231727   $(MESS_DRIVERS)/mycom.o      \
17241728   $(MESS_DRIVERS)/nanos.o      \
17251729   $(MESS_DRIVERS)/next.o      \
1726   $(MESS_DRIVERS)/ob68k1a.o   \
17271730   $(MESS_DRIVERS)/p112.o      \
17281731   $(MESS_DRIVERS)/p8k.o      \
17291732   $(MESS_DRIVERS)/pegasus.o   \
src/mess/drivers/ob68k1a.c
r9795r9796
1/***************************************************************************
2   
3        Omnibyte OB68K1A
1/*
42
5        09/11/2010 Skeleton driver.
3Omnibyte OB68K1A
64
7****************************************************************************/
5PCB Layout
6----------
87
8REV-B
9
10|-----------------------------------------------------------|
11|   555      CN3      CN4         CN5     8116   SW5      10MHz   |
12|                              5.0688MHz         |
13|               PIA         PIA                     |
14|         ACIA                     ROM1   ROM0   |
15|               ACIA      PTM         ROM3   ROM2   |
16|         SW1                        ROM5   ROM4   |
17|                  CPU                           |
18|         SW2                     4164 4164 4164 4164 |
19|                              4164 4164 4164 4164   |
20|         SW3                     4164 4164 4164 4164 |
21|                           555   4164 4164 4164 4164 |
22|         SW4                           8409      |
23|-|-------------CN1----------------|----|-------CN2-------|-|
24  |--------------------------------|   |-----------------|
25
26Notes:
27    Relevant IC's shown.
28
29    CPU      - Motorola MC68000L10
30   PIA      - Motorola MC6821P
31   ACIA   - Motorola MC6850P
32   PTM      - Motorola MC6840P
33   8116   - SMC COM8116
34   8409   - National Semiconductor DP8409N DRAM Controller
35   4164   - Fujitsu MB8264A-12 64Kx1 RAM
36   555      - NE555N
37   SW1      - RAM address DIP8
38   SW2      - I/O address DIP8
39   SW3      - ROM address DIP8
40   SW4      - external RAM access address DIP8
41   SW5      - push button
42   CN1      - 2x43 PCB edge, IEEE 796 (Multibus)
43   CN2      - 2x30 PCB edge, IEEE 796 (Multibus)
44   CN3      - 2x25 header, ACIA 0
45   CN4      - 2x25 header, ACIA 1
46   CN5      - 2x50 header, PIA
47
48*/
49
50/*
51
52   TODO:
53
54   - COM8116 dividers are wrong
55   - interrupts
56   - configuration switches
57   - PIA odd/even byte access
58   
59*/
60
61#define ADDRESS_MAP_MODERN
62
963#include "emu.h"
1064#include "cpu/m68000/m68000.h"
65#include "devices/messram.h"
66#include "machine/6821pia.h"
67#include "machine/6840ptm.h"
68#include "machine/6850acia.h"
69#include "machine/com8116.h"
70#include "machine/terminal.h"
71#include "includes/ob68k1a.h"
1172
1273
13class ob68k1a_state : public driver_device
74
75//**************************************************************************
76//   READ/WRITE HANDLERS
77//**************************************************************************
78
79//-------------------------------------------------
80//  com8116_w - baud rate selection
81//-------------------------------------------------
82
83WRITE8_MEMBER( ob68k1a_state::com8116_w )
1484{
15public:
16   ob68k1a_state(running_machine &machine, const driver_device_config_base &config)
17      : driver_device(machine, config) { }
85   com8116_stt_w(m_dbrg, 0, data & 0x0f);
86//   com8116_str_w(m_dbrg, 0, data >> 4); // HACK for terminal
87}
1888
19   UINT16* ram;
20};
2189
90//-------------------------------------------------
91//  acia0_data_w - trampoline for terminal
92//-------------------------------------------------
2293
94WRITE8_MEMBER( ob68k1a_state::acia0_data_w )
95{
96   acia6850_data_w(m_acia0, 0, data);
97   terminal_write(m_terminal, 0, data); // HACK for terminal
98}
2399
24static ADDRESS_MAP_START(ob68k1a_mem, ADDRESS_SPACE_PROGRAM, 16)
100
101//-------------------------------------------------
102//  pia_r - trampoline for PIA odd/even access
103//-------------------------------------------------
104
105READ8_MEMBER( ob68k1a_state::pia_r )
106{
107   return pia6821_r(offset ? m_pia1 : m_pia0, 0);
108}
109
110
111//-------------------------------------------------
112//  pia_w - trampoline for PIA odd/even access
113//-------------------------------------------------
114
115WRITE8_MEMBER( ob68k1a_state::pia_w )
116{
117   pia6821_w(offset ? m_pia1 : m_pia0, 0, data);
118}
119
120
121
122//**************************************************************************
123//   ADDRESS MAPS
124//**************************************************************************
125
126//-------------------------------------------------
127//  ADDRESS_MAP( ob68k1a_mem )
128//-------------------------------------------------
129
130static ADDRESS_MAP_START( ob68k1a_mem, ADDRESS_SPACE_PROGRAM, 16, ob68k1a_state )
25131   ADDRESS_MAP_UNMAP_HIGH
26   AM_RANGE(0x00000000, 0x00007fff) AM_RAM AM_BASE_MEMBER(ob68k1a_state, ram) // 32 KB RAM up to 128K
27   AM_RANGE(0x00fe0000, 0x00feffff) AM_ROM AM_REGION("user1",0)   
132   AM_RANGE(0x000000, 0x01ffff) AM_RAM
133   AM_RANGE(0xfe0000, 0xfeffff) AM_ROM AM_REGION(MC68000L10_TAG, 0)
134   AM_RANGE(0xffff00, 0xffff01) AM_DEVREADWRITE8_LEGACY(MC6850_0_TAG, acia6850_stat_r, acia6850_ctrl_w, 0x00ff)
135   AM_RANGE(0xffff02, 0xffff03) AM_DEVREAD8_LEGACY(MC6850_0_TAG, acia6850_data_r, 0x00ff) AM_WRITE8(acia0_data_w, 0x00ff)
136   AM_RANGE(0xffff10, 0xffff11) AM_WRITE8(com8116_w, 0xff00)
137   AM_RANGE(0xffff20, 0xffff21) AM_DEVREADWRITE8_LEGACY(MC6850_1_TAG, acia6850_stat_r, acia6850_ctrl_w, 0x00ff)
138   AM_RANGE(0xffff22, 0xffff23) AM_DEVREADWRITE8_LEGACY(MC6850_1_TAG, acia6850_data_r, acia6850_data_w, 0x00ff)
139//   AM_RANGE(0xffff40, 0xffff47) AM_DEVREADWRITE8_LEGACY(MC6821_0_TAG, pia6821_r, pia6821_w, 0x00ff)
140//   AM_RANGE(0xffff40, 0xffff47) AM_DEVREADWRITE8_LEGACY(MC6821_1_TAG, pia6821_r, pia6821_w, 0xff00)
141   AM_RANGE(0xffff40, 0xffff47) AM_READWRITE8(pia_r, pia_w, 0xffff)
142   AM_RANGE(0xffff60, 0xffff6f) AM_DEVREADWRITE8_LEGACY(MC6840_TAG, ptm6840_read, ptm6840_write, 0x00ff)
28143ADDRESS_MAP_END
29144
30/* Input ports */
145
146
147//**************************************************************************
148//   INPUT PORTS
149//**************************************************************************
150
151//-------------------------------------------------
152//  INPUT_PORTS( ob68k1a )
153//-------------------------------------------------
154
31155INPUT_PORTS_START( ob68k1a )
156   PORT_INCLUDE(generic_terminal)
32157INPUT_PORTS_END
33158
34159
35static MACHINE_RESET(ob68k1a)
160
161//**************************************************************************
162//   DEVICE CONFIGURATION
163//**************************************************************************
164
165//-------------------------------------------------
166//  pia6821_interface pia0_intf
167//-------------------------------------------------
168
169static const pia6821_interface pia0_intf =
36170{
37   ob68k1a_state *state = machine->driver_data<ob68k1a_state>();   
38   UINT8* user1 = memory_region(machine, "user1");
171   DEVCB_NULL,
172   DEVCB_NULL,
173   DEVCB_NULL,
174   DEVCB_NULL,
175   DEVCB_NULL,
176   DEVCB_NULL,
177   DEVCB_NULL,
178   DEVCB_NULL,
179   DEVCB_NULL,
180   DEVCB_NULL,
181   DEVCB_NULL,
182   DEVCB_NULL
183};
39184
40   memcpy((UINT8*)state->ram,user1,0x8000);
41185
42   machine->device("maincpu")->reset();
186//-------------------------------------------------
187//  pia6821_interface pia1_intf
188//-------------------------------------------------
189
190static const pia6821_interface pia1_intf =
191{
192   DEVCB_NULL,
193   DEVCB_NULL,
194   DEVCB_NULL,
195   DEVCB_NULL,
196   DEVCB_NULL,
197   DEVCB_NULL,
198   DEVCB_NULL,
199   DEVCB_NULL,
200   DEVCB_NULL,
201   DEVCB_NULL,
202   DEVCB_NULL,
203   DEVCB_NULL
204};
205
206
207//-------------------------------------------------
208//  ptm6840_interface ptm_intf
209//-------------------------------------------------
210
211static const ptm6840_interface ptm_intf =
212{
213   XTAL_10MHz/10,
214   { 0, 0, 0 },
215   { DEVCB_NULL,
216     DEVCB_NULL,
217     DEVCB_NULL },
218   DEVCB_NULL
219};
220
221
222//-------------------------------------------------
223//  ACIA6850_INTERFACE( acia0_intf )
224//-------------------------------------------------
225
226static ACIA6850_INTERFACE( acia0_intf )
227{
228   9600*16, // HACK for terminal
229   9600*16, // HACK for terminal
230   DEVCB_LINE_VCC,
231   DEVCB_NULL,
232   DEVCB_LINE_GND, // HACK for terminal
233   DEVCB_NULL,
234   DEVCB_LINE_GND, // HACK for terminal
235   DEVCB_NULL
236};
237
238
239//-------------------------------------------------
240//  ACIA6850_INTERFACE( acia1_intf )
241//-------------------------------------------------
242
243static ACIA6850_INTERFACE( acia1_intf )
244{
245   0,
246   0,
247   DEVCB_LINE_VCC,
248   DEVCB_NULL,
249   DEVCB_NULL,
250   DEVCB_NULL,
251   DEVCB_NULL,
252   DEVCB_NULL,
253};
254
255
256//-------------------------------------------------
257//  COM8116_INTERFACE( dbrg_intf )
258//-------------------------------------------------
259
260static WRITE_LINE_DEVICE_HANDLER( rx_tx_w )
261{
262   acia6850_rx_clock_in(device);
263   acia6850_tx_clock_in(device);
43264}
44265
45static VIDEO_START( ob68k1a )
266static COM8116_INTERFACE( dbrg_intf )
46267{
268   DEVCB_NULL,      /* fX/4 output */
269   DEVCB_DEVICE_LINE(MC6850_0_TAG, rx_tx_w),
270   DEVCB_DEVICE_LINE(MC6850_1_TAG, rx_tx_w),
271   { 101376, 67584, 46080, 37686, 33792, 16896, 8448, 4224, 2816, 2534, 2112, 1408, 1056, 704, 528, 264 },         /* receiver divisor ROM */
272   { 101376, 67584, 46080, 37686, 33792, 16896, 8448, 4224, 2816, 2534, 2112, 1408, 1056, 704, 528, 264 },         /* transmitter divisor ROM */
273};
274
275
276//-------------------------------------------------
277//  GENERIC_TERMINAL_INTERFACE( terminal_intf )
278//-------------------------------------------------
279
280static WRITE8_DEVICE_HANDLER( terminal_put )
281{
282   acia6850_receive_data(device, data);
47283}
48284
49static VIDEO_UPDATE( ob68k1a )
285static GENERIC_TERMINAL_INTERFACE( terminal_intf )
50286{
51    return 0;
287   DEVCB_DEVICE_HANDLER(MC6850_0_TAG, terminal_put)
288};
289
290
291
292//**************************************************************************
293//   MACHINE INITIALIZATION
294//**************************************************************************
295
296//-------------------------------------------------
297//  MACHINE_START( ob68k1a )
298//-------------------------------------------------
299
300void ob68k1a_state::machine_start()
301{
302   address_space *program = cpu_get_address_space(m_maincpu, ADDRESS_SPACE_PROGRAM);
303
304   // configure RAM
305   switch (messram_get_size(m_ram))
306   {
307   case 32*1024:
308      memory_unmap_readwrite(program, 0x008000, 0x01ffff, 0, 0);
309      break;
310   }
52311}
53312
313
314//-------------------------------------------------
315//  MACHINE_RESET( ob68k1a )
316//-------------------------------------------------
317
318void ob68k1a_state::machine_reset()
319{
320   // initialize COM8116
321//   com8116_stt_w(m_dbrg, 0, 0x01);
322//   com8116_str_w(m_dbrg, 0, 0x01);
323
324   // set reset vector
325   void *ram = cpu_get_address_space(m_maincpu, ADDRESS_SPACE_PROGRAM)->get_write_ptr(0);
326   UINT8 *rom = memory_region(machine, MC68000L10_TAG);
327
328   memcpy(ram, rom, 8);
329
330   machine->firstcpu->reset();
331}
332
333
334
335//**************************************************************************
336//   MACHINE CONFIGURATION
337//**************************************************************************
338
339//-------------------------------------------------
340//  MACHINE_CONFIG( ob68k1a )
341//-------------------------------------------------
342
54343static MACHINE_CONFIG_START( ob68k1a, ob68k1a_state )
55    /* basic machine hardware */
56    MDRV_CPU_ADD("maincpu",M68000, XTAL_10MHz)
344    // basic machine hardware
345    MDRV_CPU_ADD(MC68000L10_TAG, M68000, XTAL_10MHz)
57346    MDRV_CPU_PROGRAM_MAP(ob68k1a_mem)
58347   
59    MDRV_MACHINE_RESET(ob68k1a)
348    // video hardware
349   MDRV_FRAGMENT_ADD( generic_terminal )
350
351   // devices
352   MDRV_PIA6821_ADD(MC6821_0_TAG, pia0_intf)
353   MDRV_PIA6821_ADD(MC6821_1_TAG, pia1_intf)
354   MDRV_PTM6840_ADD(MC6840_TAG, ptm_intf)
355   MDRV_ACIA6850_ADD(MC6850_0_TAG, acia0_intf)
356   MDRV_ACIA6850_ADD(MC6850_1_TAG, acia1_intf)
357   MDRV_COM8116_ADD(COM8116_TAG, XTAL_5_0688MHz, dbrg_intf)
358   MDRV_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
60359   
61    /* video hardware */
62    MDRV_SCREEN_ADD("screen", RASTER)
63    MDRV_SCREEN_REFRESH_RATE(50)
64    MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
65    MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
66    MDRV_SCREEN_SIZE(640, 480)
67    MDRV_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
68    MDRV_PALETTE_LENGTH(2)
69    MDRV_PALETTE_INIT(black_and_white)
70
71    MDRV_VIDEO_START(ob68k1a)
72    MDRV_VIDEO_UPDATE(ob68k1a)
360   // internal ram
361   MDRV_RAM_ADD("messram")
362   MDRV_RAM_DEFAULT_SIZE("32K")
363   MDRV_RAM_EXTRA_OPTIONS("128K")
73364MACHINE_CONFIG_END
74365
75/* ROM definition */
366
367
368//**************************************************************************
369//   ROMS
370//**************************************************************************
371
372//-------------------------------------------------
373//  ROM( ob68k1a )
374//-------------------------------------------------
375
76376ROM_START( ob68k1a )
77    ROM_REGION( 0x10000, "user1", ROMREGION_ERASEFF )
78   ROM_LOAD16_BYTE( "macsbug.u60",    0x0001, 0x2000, CRC(7c8905ff) SHA1(eba6c70f6b5b40d60e2885c2bd33dd93ec2aae48))
79   ROM_LOAD16_BYTE( "macsbug.u61",    0x0000, 0x2000, CRC(b5069252) SHA1(b310465d8ece944bd694cc9726d03fed0f4b2c0f))
80   ROM_LOAD16_BYTE( "idris_boot.u62", 0x4001, 0x2000, CRC(091e900e) SHA1(ea0c9f3ad5179eab2e743459c8afb707c059f0e2))
81   ROM_LOAD16_BYTE( "idris_boot.u63", 0x4000, 0x2000, CRC(a132259f) SHA1(34216bf1d22ff0f0af29699a1e4e0e57631f775d))
377    ROM_REGION16_BE( 0x10000, MC68000L10_TAG, 0 )
378   ROM_LOAD16_BYTE( "macsbug.u60",    0x0000, 0x2000, CRC(7c8905ff) SHA1(eba6c70f6b5b40d60e2885c2bd33dd93ec2aae48) )
379   ROM_LOAD16_BYTE( "macsbug.u61",    0x0001, 0x2000, CRC(b5069252) SHA1(b310465d8ece944bd694cc9726d03fed0f4b2c0f) )
380   ROM_LOAD16_BYTE( "idris_boot.u62", 0x4000, 0x2000, CRC(091e900e) SHA1(ea0c9f3ad5179eab2e743459c8afb707c059f0e2) )
381   ROM_LOAD16_BYTE( "idris_boot.u63", 0x4001, 0x2000, CRC(a132259f) SHA1(34216bf1d22ff0f0af29699a1e4e0e57631f775d) )
382
383   ROM_REGION( 0x100, "plds", 0 )
384   ROM_LOAD( "1.0.u18", 0x000, 0x100, NO_DUMP ) // PAL16L8
385   ROM_LOAD( "2.5.u20", 0x000, 0x100, NO_DUMP ) // PAL16L8
386   ROM_LOAD( "3.2.u21", 0x000, 0x100, NO_DUMP ) // PAL16R4
387   ROM_LOAD( "4.3.u49", 0x000, 0x100, NO_DUMP ) // PAL16R4
388   ROM_LOAD( "5.1.u51", 0x000, 0x100, NO_DUMP ) // PAL16L8
389   ROM_LOAD( "6.2.u55", 0x000, 0x100, NO_DUMP ) // PAL16L8
82390ROM_END
83391
84/* Driver */
85392
86/*    YEAR  NAME    PARENT  COMPAT   MACHINE    INPUT    INIT    COMPANY   FULLNAME       FLAGS */
87COMP( 1982, ob68k1a,  0,       0,    ob68k1a,    ob68k1a,     0,  "Omnibyte",   "OB68K1A",      GAME_NOT_WORKING | GAME_NO_SOUND_HW)
88393
394//**************************************************************************
395//   SYSTEM DRIVERS
396//**************************************************************************
397
398//    YEAR  NAME    PARENT  COMPAT   MACHINE    INPUT    INIT    COMPANY   FULLNAME       FLAGS
399COMP( 1982, ob68k1a,  0,       0,    ob68k1a,    ob68k1a,     0,  "Omnibyte",   "OB68K1A",      GAME_NO_SOUND_HW)
docs/messnew.txt
r9795r9796
2323---------------------------------------
2424- Ausbaufaehiger Mikrocomputer mit dem U 880 [Curt Coder]
2525- Heathkit ET3400 [Robbbert]
26- Omnibyte OB68K1A [Curt Coder]
2627
2728
2829

Previous 15994 Revisions Next


© 1998-2018 The MESS Team