Previous 15994 Revisions Next

r10312 Sunday 6th February, 2011 at 10:58:56 UTC by Robbbert
[MBC55X] eol:native; removed extraneous spaces.
[src/mess/drivers]mbc55x.c
[src/mess/machine]mbc55x.c
[src/mess/video]mbc55x.c

src/mess/machine/mbc55x.c
r10311r10312
6969READ8_HANDLER(ppi8255_r)
7070{
7171   device_t *ppi8255 = space->machine->device(PPI8255_TAG);
72   
72
7373   switch(offset)
7474   {
7575      case 0    : return i8255a_r(ppi8255,0); break;
r10311r10312
8383WRITE8_HANDLER(ppi8255_w)
8484{
8585   device_t *ppi8255 = space->machine->device(PPI8255_TAG);
86   
86
8787   switch(offset)
8888   {
8989      case 0    : i8255a_w(ppi8255,0,data); break;
r10311r10312
119119WRITE8_DEVICE_HANDLER(mbc55x_ppi_portc_w)
120120{
121121   device_t *wd17xx = device->machine->device(FDC_TAG);
122   
122
123123   wd17xx_set_drive(wd17xx,(data & 0x03));
124124   wd17xx_set_side(wd17xx,((data & 0x04) >> 2));
125125}
r10311r10312
168168static IRQ_CALLBACK(mbc55x_irq_callback)
169169{
170170   device_t *pic8259 = device->machine->device(PIC8259_TAG);
171   
171
172172   return pic8259_acknowledge( pic8259 );
173173}
174174
r10311r10312
178178{
179179   {
180180      {
181         PIT_C0_CLOCK,           
181         PIT_C0_CLOCK,
182182         DEVCB_NULL,
183183         DEVCB_DEVICE_LINE(PIC8259_TAG, pic8259_ir0_w)
184184      },
185185      {
186         PIT_C1_CLOCK,           
186         PIT_C1_CLOCK,
187187         DEVCB_NULL,
188188         DEVCB_DEVICE_LINE(PIC8259_TAG, pic8259_ir1_w)
189189      },
190190      {
191         PIT_C2_CLOCK,           
191         PIT_C2_CLOCK,
192192         DEVCB_NULL,
193193         DEVCB_NULL
194194      }
r10311r10312
198198READ8_HANDLER(pit8253_r)
199199{
200200   device_t *pit8253 = space->machine->device(PIT8253_TAG);
201   
201
202202   switch(offset)
203203   {
204204      case 0    : return pit8253_r(pit8253,0); break;
r10311r10312
212212WRITE8_HANDLER(pit8253_w)
213213{
214214   device_t *pit8253 = space->machine->device(PIT8253_TAG);
215   
215
216216   switch(offset)
217217   {
218218      case 0    : pit8253_w(pit8253,0,data); break;
r10311r10312
227227READ8_HANDLER(vram_page_r)
228228{
229229   mbc55x_state *state   = space->machine->driver_data<mbc55x_state>();
230   
230
231231   return state->vram_page;
232232}
233233
r10311r10312
243243READ8_HANDLER(mbc55x_disk_r)
244244{
245245   device_t *wd17xx = space->machine->device(FDC_TAG);
246   
246
247247   switch(offset)
248248   {
249249      case 0    : return wd17xx_status_r(wd17xx,0);   break;
r10311r10312
257257WRITE8_HANDLER(mbc55x_disk_w)
258258{
259259   device_t *wd17xx = space->machine->device(FDC_TAG);
260   
260
261261   switch(offset)
262262   {
263263      case 0    : wd17xx_command_w(wd17xx,0,data);   break;
r10311r10312
278278/* msm8251 serial */
279279
280280const msm8251_interface mbc55x_msm8251a_interface =
281{   
281{
282282   DEVCB_NULL,
283283   DEVCB_NULL,
284284   DEVCB_NULL,
r10311r10312
321321static void set_ram_size(running_machine *machine)
322322{
323323   mbc55x_state    *state       = machine->driver_data<mbc55x_state>();
324    address_space    *space       = cputag_get_address_space( machine, MAINCPU_TAG, ADDRESS_SPACE_PROGRAM );
325    int          ramsize    = ram_get_size(machine->device(RAM_TAG));
324   address_space    *space       = cputag_get_address_space( machine, MAINCPU_TAG, ADDRESS_SPACE_PROGRAM );
325   int          ramsize    = ram_get_size(machine->device(RAM_TAG));
326326   int          nobanks      = ramsize / RAM_BANK_SIZE;
327327   char          bank[10];
328    int          bankno;
328   int          bankno;
329329   UINT8          *ram       = &ram_get_ptr(machine->device(RAM_TAG))[0];
330    UINT8         *map_base;
330   UINT8         *map_base;
331331   int            bank_base;
332   
333   
332
333
334334   logerror("Ramsize is %d bytes\n",ramsize);
335335   logerror("RAM_BANK_SIZE=%d, nobanks=%d\n",RAM_BANK_SIZE,nobanks);
336   
336
337337   // Main memory mapping
338   
338
339339   for(bankno=0; bankno<RAM_BANK_COUNT; bankno++)
340340   {
341341      sprintf(bank,"bank%x",bankno);
342342      bank_base=bankno*RAM_BANK_SIZE;
343343      map_base=&ram[bank_base];
344     
344
345345      if(bankno<nobanks)
346346      {
347347         memory_set_bankptr(machine, bank, map_base);
r10311r10312
354354         logerror("Mapping bank %d at %05X to NOP\n",bankno,bank_base);
355355      }
356356   }
357   
357
358358   // Graphics red and blue plane memory mapping, green is in main memory
359359   memory_set_bankptr(machine, RED_PLANE_TAG, &state->video_mem[RED_PLANE_OFFSET]);
360360   memory_install_readwrite_bank(space, RED_PLANE_MEMBASE, RED_PLANE_MEMBASE+(COLOUR_PLANE_SIZE-1), 0, 0, RED_PLANE_TAG);
r10311r10312
374374   /* init cpu */
375375//   mbc55x_cpu_init(machine);
376376
377
378377   /* setup debug commands */
379378   if (machine->debug_flags & DEBUG_FLAG_ENABLED)
380379   {
381380      debug_console_register_command(machine, "mbc55x_debug", CMDFLAG_NONE, 0, 0, 1, mbc55x_debug);
382     
381
383382      /* set up the instruction hook */
384383      machine->device(MAINCPU_TAG)->debug()->set_instruction_hook(instruction_hook);
385384   }
r10311r10312
391390static void mbc55x_debug(running_machine *machine, int ref, int params, const char *param[])
392391{
393392   mbc55x_state *state = machine->driver_data<mbc55x_state>();
394    if(params>0)
395    {
396        sscanf(param[0],"%d",&state->debug_machine);
397    }
398    else
399    {
400        debug_console_printf(machine,"Error usage : mbc55x_debug <debuglevel>\n");
401        debug_console_printf(machine,"Current debuglevel=%02X\n",state->debug_machine);
402    }
393   if(params>0)
394   {
395      sscanf(param[0],"%d",&state->debug_machine);
396   }
397   else
398   {
399      debug_console_printf(machine,"Error usage : mbc55x_debug <debuglevel>\n");
400      debug_console_printf(machine,"Current debuglevel=%02X\n",state->debug_machine);
401   }
403402}
404403
405404/*-----------------------------------------------
r10311r10312
409408static int instruction_hook(device_t &device, offs_t curpc)
410409{
411410   mbc55x_state    *state = device.machine->driver_data<mbc55x_state>();
412    address_space    *space = cpu_get_address_space(&device, ADDRESS_SPACE_PROGRAM);
413    UINT8           *addr_ptr;
411   address_space    *space = cpu_get_address_space(&device, ADDRESS_SPACE_PROGRAM);
412   UINT8           *addr_ptr;
414413
415    addr_ptr = (UINT8*)space->get_read_ptr(curpc);
414   addr_ptr = (UINT8*)space->get_read_ptr(curpc);
416415
417416   if ((addr_ptr !=NULL) && (addr_ptr[0]==0xCD))
418417   {
419418//      logerror("int %02X called\n",addr_ptr[1]);
420     
419
421420      if(DEBUG_SET(DECODE_DOS21) && (addr_ptr[1]==0x21))
422            decode_dos21(&device,curpc);
421         decode_dos21(&device,curpc);
423422   }
424423
425    return 0;
424   return 0;
426425}
427426
428427static void decode_dos21(device_t *device,offs_t pc)
429428{
430    device_t *cpu = device->machine->device(MAINCPU_TAG);
429   device_t *cpu = device->machine->device(MAINCPU_TAG);
431430
432    UINT16  ax = cpu_get_reg(cpu,I8086_AX);
433    UINT16  bx = cpu_get_reg(cpu,I8086_BX);
434    UINT16  cx = cpu_get_reg(cpu,I8086_CX);
431   UINT16  ax = cpu_get_reg(cpu,I8086_AX);
432   UINT16  bx = cpu_get_reg(cpu,I8086_BX);
433   UINT16  cx = cpu_get_reg(cpu,I8086_CX);
435434   UINT16  dx = cpu_get_reg(cpu,I8086_DX);
436    UINT16  cs = cpu_get_reg(cpu,I8086_CS);
435   UINT16  cs = cpu_get_reg(cpu,I8086_CS);
437436   UINT16  ds = cpu_get_reg(cpu,I8086_DS);
438437   UINT16  es = cpu_get_reg(cpu,I8086_ES);
439438   UINT16  ss = cpu_get_reg(cpu,I8086_SS);
440   
441    UINT16  si = cpu_get_reg(cpu,I8086_SI);
442    UINT16  di = cpu_get_reg(cpu,I8086_DI);
439
440   UINT16  si = cpu_get_reg(cpu,I8086_SI);
441   UINT16  di = cpu_get_reg(cpu,I8086_DI);
443442   UINT16  bp = cpu_get_reg(cpu,I8086_BP);
444443
445    logerror("=======================================================================\n");
446    logerror("DOS Int 0x21 call at %05X\n",pc);
444   logerror("=======================================================================\n");
445   logerror("DOS Int 0x21 call at %05X\n",pc);
447446   logerror("AX=%04X, BX=%04X, CX=%04X, DX=%04X\n",ax,bx,cx,dx);
448447   logerror("CS=%04X, DS=%04X, ES=%04X, SS=%04X\n",cs,ds,es,ss);
449448   logerror("SI=%04X, DI=%04X, BP=%04X\n",si,di,bp);
450    logerror("=======================================================================\n");
451   
449   logerror("=======================================================================\n");
450
452451   if((ax & 0xff00)==0x0900)
453452      debugger_break(device->machine);
454453}
src/mess/video/mbc55x.c
r10311r10312
107107static void video_debug(running_machine *machine, int ref, int params, const char *param[])
108108{
109109   mbc55x_state *state = machine->driver_data<mbc55x_state>();
110    if(params>0)
111    {
112        sscanf(param[0],"%d",&state->debug_video);
113    }
114    else
115    {
116        debug_console_printf(machine,"Error usage : mbc55x_vid_debug <debuglevel>\n");
117        debug_console_printf(machine,"Current debuglevel=%02X\n",state->debug_video);
118    }
110   if(params>0)
111   {
112      sscanf(param[0],"%d",&state->debug_video);
113   }
114   else
115   {
116      debug_console_printf(machine,"Error usage : mbc55x_vid_debug <debuglevel>\n");
117      debug_console_printf(machine,"Current debuglevel=%02X\n",state->debug_video);
118   }
119119}
120120
121121static MC6845_UPDATE_ROW( vid_update_row )
122122{
123123   mbc55x_state *state = device->machine->driver_data<mbc55x_state>();
124   
124
125125   UINT8   *ram   = &ram_get_ptr(device->machine->device(RAM_TAG))[0];
126126   UINT8   *red   = &state->video_mem[RED_PLANE_OFFSET];
127127   UINT8   *blue   = &state->video_mem[BLUE_PLANE_OFFSET];
128128   UINT8   *green;
129   int      offset;
129   int   offset;
130130   UINT8   rpx,gpx,bpx;
131131   UINT8   rb,gb,bb;
132   
133   int      x_pos;
134   int      pixelno;
132
133   int   x_pos;
134   int   pixelno;
135135   UINT8   bitno;
136136   UINT8   shifts;
137137   UINT8   colour;
138   
138
139139   switch(state->vram_page)
140140   {
141141      case 4   : green=&ram[0x08000]; break;
r10311r10312
145145      default :
146146         green=&ram[0x0C000];
147147   }
148     
148
149149   if(DEBUG_SET(DEBUG_LINES))
150150      logerror("MC6845_UPDATE_ROW: ma=%d, ra=%d, y=%d, x_count=%d\n",ma,ra,y,x_count);
151   
151
152152   offset=(ra) + ((y/4)*(x_count*4));
153   
153
154154   if(DEBUG_SET(DEBUG_LINES))
155155      logerror("offset=%05X\n",offset);
156   
156
157157   for(x_pos=0; x_pos<x_count; x_pos++)
158158   {
159159      rpx=red[offset+(x_pos*4)];
160160      gpx=green[offset+(x_pos*4)];
161161      bpx=blue[offset+(x_pos*4)];
162     
162
163163      bitno=0x80;
164164      shifts=7;
165     
165
166166      for(pixelno=0; pixelno<8; pixelno++)
167167      {
168         
169168         rb=(rpx & bitno) >> shifts;
170169         gb=(gpx & bitno) >> shifts;
171170         bb=(bpx & bitno) >> shifts;
172         
171
173172         colour=(rb<<2) | (gb<<1) | (bb<<0);
174         
173
175174         *BITMAP_ADDR16(bitmap, y, (x_pos*8)+pixelno)=colour;
176175         //logerror("set pixel (%d,%d)=%d\n",y, ((x_pos*8)+pixelno),colour);
177176         bitno=bitno>>1;
r10311r10312
192191READ8_HANDLER( mbc55x_video_io_r)
193192{
194193   device_t *mc6845 = space->machine->device(VID_MC6845_NAME);
195   
194
196195   switch(offset & 0x03)
197196   {
198197      case 0 : return mc6845_status_r(mc6845, 0); break;
r10311r10312
205204WRITE8_HANDLER( mbc55x_video_io_w )
206205{
207206   device_t *mc6845 = space->machine->device(VID_MC6845_NAME);
208   
207
209208   switch(offset & 0x03)
210209   {
211210      case 0 : mc6845_address_w(mc6845,0,data);
r10311r10312
216215VIDEO_START( mbc55x )
217216{
218217   mbc55x_state *state = machine->driver_data<mbc55x_state>();
219    state->debug_video=0;
218   state->debug_video=0;
220219
221    logerror("VIDEO_START\n");
220   logerror("VIDEO_START\n");
222221
223222   if (machine->debug_flags & DEBUG_FLAG_ENABLED)
224223   {
225        debug_console_register_command(machine, "mbc55x_vid_debug", CMDFLAG_NONE, 0, 0, 1, video_debug);
226    }
224      debug_console_register_command(machine, "mbc55x_vid_debug", CMDFLAG_NONE, 0, 0, 1, video_debug);
225   }
227226}
228227
229228VIDEO_RESET( mbc55x )
230229{
231230   mbc55x_state *state = machine->driver_data<mbc55x_state>();
232    // When we reset clear the video registers and video memory.
233    memset(&state->video_mem,0,sizeof(state->video_mem));
231   // When we reset clear the video registers and video memory.
232   memset(&state->video_mem,0,sizeof(state->video_mem));
234233
235    logerror("Video reset\n");
234   logerror("Video reset\n");
236235}
237236
238237VIDEO_EOF( mbc55x )
239238{
240
241//    logerror("VIDEO_EOF( mbc55x )\n");
239//   logerror("VIDEO_EOF( mbc55x )\n");
242240}
243241
244242VIDEO_UPDATE( mbc55x )
r10311r10312
248246
249247#if 0   
250248   mbc55x_state *state = screen->machine->driver_data<mbc55x_state>();
251    int     XCoord;
252    int     YCoord = screen->vpos();
249   int    XCoord;
250   int    YCoord = screen->vpos();
253251
254    for(XCoord=0;XCoord<SCREEN_WIDTH_PIXELS;XCoord++)
255    {
256        *BITMAP_ADDR16(bitmap, YCoord, XCoord)=state->video_mem[XCoord*YCoord];
257    }
252   for(XCoord=0;XCoord<SCREEN_WIDTH_PIXELS;XCoord++)
253   {
254      *BITMAP_ADDR16(bitmap, YCoord, XCoord)=state->video_mem[XCoord*YCoord];
255   }
258256#endif
259    return 0;
257   return 0;
260258}
261259
src/mess/drivers/mbc55x.c
r10311r10312
2727   /*normal brightness */
2828   { 0x00,0x00,0x00 },     /* black */
2929   { 0x00,0x00,0x80 },       /* blue */
30    { 0x00,0x80,0x00 },     /* green */
31    { 0x00,0x80,0x80 },       /* cyan */
30   { 0x00,0x80,0x00 },     /* green */
31   { 0x00,0x80,0x80 },       /* cyan */
3232   { 0x80,0x00,0x00 },       /* red */
33    { 0x80,0x00,0x80 },       /* magenta */
33   { 0x80,0x00,0x80 },       /* magenta */
3434   { 0x80,0x80,0x00 },       /* yellow */
3535   { 0x80,0x80,0x80 },       /* light grey */
3636};
r10311r10312
4848};
4949
5050static ADDRESS_MAP_START(mbc55x_mem, ADDRESS_SPACE_PROGRAM, 8)
51    AM_RANGE( 0x00000, 0x0FFFF ) AM_RAMBANK(RAM_BANK00_TAG)
52    AM_RANGE( 0x10000, 0x1FFFF ) AM_RAMBANK(RAM_BANK01_TAG)
53    AM_RANGE( 0x20000, 0x2FFFF ) AM_RAMBANK(RAM_BANK02_TAG)
54    AM_RANGE( 0x30000, 0x3FFFF ) AM_RAMBANK(RAM_BANK03_TAG)
55    AM_RANGE( 0x40000, 0x4FFFF ) AM_RAMBANK(RAM_BANK04_TAG)
56    AM_RANGE( 0x50000, 0x5FFFF ) AM_RAMBANK(RAM_BANK05_TAG)
57    AM_RANGE( 0x60000, 0x6FFFF ) AM_RAMBANK(RAM_BANK06_TAG)
58    AM_RANGE( 0x70000, 0x7FFFF ) AM_RAMBANK(RAM_BANK07_TAG)
59    AM_RANGE( 0x80000, 0x8FFFF ) AM_RAMBANK(RAM_BANK08_TAG)
60    AM_RANGE( 0x90000, 0x9FFFF ) AM_RAMBANK(RAM_BANK09_TAG)
61    AM_RANGE( 0xA0000, 0xAFFFF ) AM_RAMBANK(RAM_BANK0A_TAG)
62    AM_RANGE( 0xB0000, 0xBFFFF ) AM_RAMBANK(RAM_BANK0B_TAG)
63    AM_RANGE( 0xC0000, 0xCFFFF ) AM_RAMBANK(RAM_BANK0C_TAG)
64    AM_RANGE( 0xD0000, 0xDFFFF ) AM_RAMBANK(RAM_BANK0D_TAG)
65    AM_RANGE( 0xE0000, 0xEFFFF ) AM_RAMBANK(RAM_BANK0E_TAG)
51   AM_RANGE( 0x00000, 0x0FFFF ) AM_RAMBANK(RAM_BANK00_TAG)
52   AM_RANGE( 0x10000, 0x1FFFF ) AM_RAMBANK(RAM_BANK01_TAG)
53   AM_RANGE( 0x20000, 0x2FFFF ) AM_RAMBANK(RAM_BANK02_TAG)
54   AM_RANGE( 0x30000, 0x3FFFF ) AM_RAMBANK(RAM_BANK03_TAG)
55   AM_RANGE( 0x40000, 0x4FFFF ) AM_RAMBANK(RAM_BANK04_TAG)
56   AM_RANGE( 0x50000, 0x5FFFF ) AM_RAMBANK(RAM_BANK05_TAG)
57   AM_RANGE( 0x60000, 0x6FFFF ) AM_RAMBANK(RAM_BANK06_TAG)
58   AM_RANGE( 0x70000, 0x7FFFF ) AM_RAMBANK(RAM_BANK07_TAG)
59   AM_RANGE( 0x80000, 0x8FFFF ) AM_RAMBANK(RAM_BANK08_TAG)
60   AM_RANGE( 0x90000, 0x9FFFF ) AM_RAMBANK(RAM_BANK09_TAG)
61   AM_RANGE( 0xA0000, 0xAFFFF ) AM_RAMBANK(RAM_BANK0A_TAG)
62   AM_RANGE( 0xB0000, 0xBFFFF ) AM_RAMBANK(RAM_BANK0B_TAG)
63   AM_RANGE( 0xC0000, 0xCFFFF ) AM_RAMBANK(RAM_BANK0C_TAG)
64   AM_RANGE( 0xD0000, 0xDFFFF ) AM_RAMBANK(RAM_BANK0D_TAG)
65   AM_RANGE( 0xE0000, 0xEFFFF ) AM_RAMBANK(RAM_BANK0E_TAG)
6666   AM_RANGE( 0xF0000, 0xF3FFF ) AM_RAMBANK(RED_PLANE_TAG)
6767   AM_RANGE( 0xF4000, 0xF7FFF ) AM_RAMBANK(BLUE_PLANE_TAG)
6868   AM_RANGE( 0xF8000, 0xFBFFF ) AM_NOP
69    AM_RANGE( 0xFC000, 0xFFFFF ) AM_ROM AM_WRITENOP AM_REGION(MAINCPU_TAG, 0x0000)
69   AM_RANGE( 0xFC000, 0xFFFFF ) AM_ROM AM_WRITENOP AM_REGION(MAINCPU_TAG, 0x0000)
7070ADDRESS_MAP_END
7171
7272static ADDRESS_MAP_START(mbc55x_io, ADDRESS_SPACE_IO, 8)
7373   AM_RANGE( 0X0000, 0X0003) AM_READWRITE( pic8259_r, pic8259_w)
74    AM_RANGE( 0x0008, 0x000F) AM_READWRITE( mbc55x_disk_r, mbc55x_disk_w)
74   AM_RANGE( 0x0008, 0x000F) AM_READWRITE( mbc55x_disk_r, mbc55x_disk_w)
7575   AM_RANGE( 0X0010, 0X0010) AM_READWRITE( vram_page_r, vram_page_w)
7676   AM_RANGE( 0x0018, 0x001F) AM_READWRITE( ppi8255_r, ppi8255_w)
7777   AM_RANGE( 0X0020, 0X0027) AM_READWRITE( pit8253_r, pit8253_w)
78    AM_RANGE( 0x0030, 0x0033) AM_READWRITE( mbc55x_video_io_r, mbc55x_video_io_w)
78   AM_RANGE( 0x0030, 0x0033) AM_READWRITE( mbc55x_video_io_r, mbc55x_video_io_w)
7979   AM_RANGE( 0x0038, 0x003B) AM_READWRITE( mbc55x_kb_usart_r, mbc55x_kb_usart_w)
8080ADDRESS_MAP_END
8181
8282static INPUT_PORTS_START( mbc55x )
8383   PORT_START("KEY0") /* Key row 0 scancodes 00..07 */
8484   //PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHAR('1')
85    PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
85   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
8686   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ESC")    PORT_CODE(KEYCODE_ESC)          PORT_CHAR(0x1B)
8787   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1")      PORT_CODE(KEYCODE_1)            PORT_CHAR('1')
8888   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2")      PORT_CODE(KEYCODE_2)            PORT_CHAR('2')
8989   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3")      PORT_CODE(KEYCODE_3)            PORT_CHAR('3')
9090   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4")      PORT_CODE(KEYCODE_4)            PORT_CHAR('4')
9191   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5")      PORT_CODE(KEYCODE_5)            PORT_CHAR('5')
92    PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6")      PORT_CODE(KEYCODE_6)            PORT_CHAR('6')
92   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6")      PORT_CODE(KEYCODE_6)            PORT_CHAR('6')
9393
9494   PORT_START("KEY1") /* Key row 1 scancodes 08..0F */
9595   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7")      PORT_CODE(KEYCODE_7)            PORT_CHAR('7')
r10311r10312
9999   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("-")      PORT_CODE(KEYCODE_MINUS)        PORT_CHAR('-')
100100   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("=")      PORT_CODE(KEYCODE_EQUALS)       PORT_CHAR('=')
101101   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("BSPACE") PORT_CODE(KEYCODE_BACKSPACE)    PORT_CHAR(0x08)
102    PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TAB")    PORT_CODE(KEYCODE_TAB)          PORT_CHAR(0x09)
102   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TAB")    PORT_CODE(KEYCODE_TAB)          PORT_CHAR(0x09)
103103
104104   PORT_START("KEY2") /* Key row 2 scancodes 10..17 */
105105   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q")      PORT_CODE(KEYCODE_Q)            PORT_CHAR('Q')
r10311r10312
109109   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("T")      PORT_CODE(KEYCODE_T)            PORT_CHAR('T')
110110   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Y")      PORT_CODE(KEYCODE_Y)            PORT_CHAR('Y')
111111   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("U")      PORT_CODE(KEYCODE_U)            PORT_CHAR('U')
112    PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I")      PORT_CODE(KEYCODE_I)            PORT_CHAR('I')
112   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I")      PORT_CODE(KEYCODE_I)            PORT_CHAR('I')
113113
114114   PORT_START("KEY3") /* Key row 3 scancodes 18..1F */
115115   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O")      PORT_CODE(KEYCODE_O)            PORT_CHAR('O')
r10311r10312
119119   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ENTER")  PORT_CODE(KEYCODE_ENTER)        PORT_CHAR(0x0D)
120120   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CTRL")   PORT_CODE(KEYCODE_LCONTROL)     PORT_CODE(KEYCODE_RCONTROL) // Ether control
121121   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A")      PORT_CODE(KEYCODE_A)            PORT_CHAR('A')
122    PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S")      PORT_CODE(KEYCODE_S)            PORT_CHAR('S')
122   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S")      PORT_CODE(KEYCODE_S)            PORT_CHAR('S')
123123
124124   PORT_START("KEY4") /* Key row 4 scancodes 20..27 */
125125   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D")      PORT_CODE(KEYCODE_D)            PORT_CHAR('D')
r10311r10312
129129   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("J")      PORT_CODE(KEYCODE_J)            PORT_CHAR('J')
130130   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("K")      PORT_CODE(KEYCODE_K)            PORT_CHAR('K')
131131   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("L")      PORT_CODE(KEYCODE_L)            PORT_CHAR('L')
132    PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(";")      PORT_CODE(KEYCODE_COLON)        PORT_CHAR(';')
132   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(";")      PORT_CODE(KEYCODE_COLON)        PORT_CHAR(';')
133133
134134   PORT_START("KEY5") /* Key row 5 scancodes 28..2F */
135    PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("#")      PORT_CODE(KEYCODE_QUOTE)        PORT_CHAR('#')
135   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("#")      PORT_CODE(KEYCODE_QUOTE)        PORT_CHAR('#')
136136   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("BACKSLASH") PORT_CODE(KEYCODE_BACKSLASH)    PORT_CHAR('\\')
137137   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("LSHIFT") PORT_CODE(KEYCODE_LSHIFT)       PORT_CHAR(UCHAR_SHIFT_1)
138138   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TILDE")  PORT_CODE(KEYCODE_TILDE)        PORT_CHAR('`')
r10311r10312
141141   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C")      PORT_CODE(KEYCODE_C)            PORT_CHAR('C')
142142   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("V")      PORT_CODE(KEYCODE_V)            PORT_CHAR('V')
143143
144
145144   PORT_START("KEY6") /* Key row 6 scancodes 30..37 */
146    PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B")      PORT_CODE(KEYCODE_B)            PORT_CHAR('B')
147    PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("N")      PORT_CODE(KEYCODE_N)            PORT_CHAR('N')
145   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B")      PORT_CODE(KEYCODE_B)            PORT_CHAR('B')
146   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("N")      PORT_CODE(KEYCODE_N)            PORT_CHAR('N')
148147   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("M")      PORT_CODE(KEYCODE_M)            PORT_CHAR('M')
149148   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(",")      PORT_CODE(KEYCODE_COMMA)        PORT_CHAR(',')
150149   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(".")      PORT_CODE(KEYCODE_STOP)         PORT_CHAR('.')
r10311r10312
153152   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PRSCR")  PORT_CODE(KEYCODE_ASTERISK)     PORT_CHAR('*')
154153
155154   PORT_START("KEY7") /* Key row 7 scancodes 38..3F */
156    PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ALT")    PORT_CODE(KEYCODE_LALT)         PORT_CODE(KEYCODE_RALT)
157    PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("SPACE")  PORT_CODE(KEYCODE_SPACE)        PORT_CHAR(' ')
155   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ALT")    PORT_CODE(KEYCODE_LALT)         PORT_CODE(KEYCODE_RALT)
156   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("SPACE")  PORT_CODE(KEYCODE_SPACE)        PORT_CHAR(' ')
158157   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CAPS")   PORT_CODE(KEYCODE_CAPSLOCK)
159158   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F1")     PORT_CODE(KEYCODE_F1)
160159   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F2")     PORT_CODE(KEYCODE_F2)
r10311r10312
162161   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F4")     PORT_CODE(KEYCODE_F4)
163162   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F5")     PORT_CODE(KEYCODE_F5)
164163
165
166    PORT_START("KEY8") /* Key row 8 scancodes 40..47 */
164   PORT_START("KEY8") /* Key row 8 scancodes 40..47 */
167165   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F6")     PORT_CODE(KEYCODE_F6)
168166   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F7")     PORT_CODE(KEYCODE_F7)
169167   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F8")     PORT_CODE(KEYCODE_F8)
r10311r10312
171169   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F10")    PORT_CODE(KEYCODE_F10)
172170   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("NUMLK")  PORT_CODE(KEYCODE_NUMLOCK)
173171   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("SCRLK")  PORT_CODE(KEYCODE_SCRLOCK)
174    PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP7")    PORT_CODE(KEYCODE_7_PAD)        PORT_CHAR('7')
172   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP7")    PORT_CODE(KEYCODE_7_PAD)        PORT_CHAR('7')
175173
176174   PORT_START("KEY9") /* Key row 9 scancodes 48..4F */
177175   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP8")    PORT_CODE(KEYCODE_8_PAD)        //PORT_CHAR('8')
r10311r10312
181179   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP5")    PORT_CODE(KEYCODE_5_PAD)        //PORT_CHAR('5')
182180   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP6")    PORT_CODE(KEYCODE_6_PAD)        //PORT_CHAR('6')
183181   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP+")    PORT_CODE(KEYCODE_PLUS_PAD)     //PORT_CHAR('+')
184    PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP1")    PORT_CODE(KEYCODE_1_PAD)        //PORT_CHAR('1')
182   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP1")    PORT_CODE(KEYCODE_1_PAD)        //PORT_CHAR('1')
185183
186184   PORT_START("KEY10") /* Key row 10 scancodes 50..57 */
187185   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP2")    PORT_CODE(KEYCODE_2_PAD)        //PORT_CHAR('2')
r10311r10312
192190   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
193191   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
194192   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
195    //PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP5")    PORT_CODE(KEYCODE_5_PAD)        PORT_CHAR('5')
193   //PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP5")    PORT_CODE(KEYCODE_5_PAD)        PORT_CHAR('5')
196194   //PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP6")    PORT_CODE(KEYCODE_6_PAD)        PORT_CHAR('6')
197195   //PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP+")    PORT_CODE(KEYCODE_PLUS_PAD)     PORT_CHAR('+')
198    //PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP1")    PORT_CODE(KEYCODE_1_PAD)        PORT_CHAR('1')
196   //PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP1")    PORT_CODE(KEYCODE_1_PAD)        PORT_CHAR('1')
199197INPUT_PORTS_END
200198
201199
r10311r10312
206204   logerror("initializing palette\n");
207205
208206   for ( colourno = 0; colourno < SCREEN_NO_COLOURS; colourno++ )
209    {
207   {
210208      palette_set_color_rgb(machine, colourno, mbc55x_palette[colourno][RED], mbc55x_palette[colourno][GREEN], mbc55x_palette[colourno][BLUE]);
211209   }
212210}
213211
214212
215213static MACHINE_CONFIG_START( mbc55x, mbc55x_state )
216    /* basic machine hardware */
217   
218    MCFG_CPU_ADD(MAINCPU_TAG, I8088, 3600000)
219    MCFG_CPU_PROGRAM_MAP(mbc55x_mem)
220    MCFG_CPU_IO_MAP(mbc55x_io)
214   /* basic machine hardware */
221215
222    MCFG_MACHINE_START( mbc55x )
216   MCFG_CPU_ADD(MAINCPU_TAG, I8088, 3600000)
217   MCFG_CPU_PROGRAM_MAP(mbc55x_mem)
218   MCFG_CPU_IO_MAP(mbc55x_io)
223219
224    MCFG_MACHINE_RESET(mbc55x)
220   MCFG_MACHINE_START( mbc55x )
225221
222   MCFG_MACHINE_RESET(mbc55x)
223
226224   MCFG_PIT8253_ADD( PIT8253_TAG, mbc55x_pit8253_config )
227225   MCFG_PIC8259_ADD( PIC8259_TAG, mbc55x_pic8259_config )
228226   MCFG_I8255A_ADD( PPI8255_TAG, mbc55x_ppi8255_interface )
229227
230    /* video hardware */
231    MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
228   /* video hardware */
229   MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
232230   MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
233231   MCFG_SCREEN_RAW_PARAMS(XTAL_14_31818MHz,896,0,300,262,0,200)
234232
235    MCFG_PALETTE_LENGTH(SCREEN_NO_COLOURS * 3)
233   MCFG_PALETTE_LENGTH(SCREEN_NO_COLOURS * 3)
236234   MCFG_PALETTE_INIT( mbc55x )
237235
238236   MCFG_MC6845_ADD(VID_MC6845_NAME, MC6845, XTAL_14_31818MHz/8, mb55x_mc6845_intf)
239237
240//    MCFG_SCREEN_SIZE(650, 260)
241//    MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 249)
238//   MCFG_SCREEN_SIZE(650, 260)
239//   MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 249)
242240
243    MCFG_VIDEO_START(mbc55x)
244    MCFG_VIDEO_UPDATE(mbc55x)
245    MCFG_VIDEO_EOF(mbc55x)
246    MCFG_VIDEO_RESET(mbc55x)
241   MCFG_VIDEO_START(mbc55x)
242   MCFG_VIDEO_UPDATE(mbc55x)
243   MCFG_VIDEO_EOF(mbc55x)
244   MCFG_VIDEO_RESET(mbc55x)
247245
248    /* Backing storage */
246   /* Backing storage */
249247   MCFG_WD1793_ADD(FDC_TAG, mbc55x_wd17xx_interface )
250248   MCFG_FLOPPY_4_DRIVES_ADD(mbc55x_floppy_config)   
251249
252    MCFG_RAM_ADD(RAM_TAG)
250   MCFG_RAM_ADD(RAM_TAG)
253251   MCFG_RAM_DEFAULT_SIZE("128K")
254252   MCFG_RAM_EXTRA_OPTIONS("128K,192K,256K,320K,384K,448K,512K,576K,640K")
255253
256    /* Peripheral chips */
257   
254   /* Peripheral chips */
255
258256   MCFG_MSM8251_ADD(MSM8251A_TAG,mbc55x_msm8251a_interface);
259   
257
260258   /* sound hardware */
261259   MCFG_SPEAKER_STANDARD_MONO(MONO_TAG)
262260   MCFG_SOUND_ADD(SPEAKER_TAG, SPEAKER_SOUND, 0)
r10311r10312
265263
266264
267265ROM_START( mbc55x )
268    ROM_REGION( 0x4000, MAINCPU_TAG, 0 )
266   ROM_REGION( 0x4000, MAINCPU_TAG, 0 )
269267
270    ROM_SYSTEM_BIOS(0, "v120", "mbc55x BIOS v1.20 (1983)")
271    ROMX_LOAD("mbc55x-v120.rom", 0x2000, 0x2000, CRC(b439b4b8) SHA1(6e8df0f3868e3fd0229a5c2720d6c01e46815cab), ROM_BIOS(1)  )
268   ROM_SYSTEM_BIOS(0, "v120", "mbc55x BIOS v1.20 (1983)")
269   ROMX_LOAD("mbc55x-v120.rom", 0x2000, 0x2000, CRC(b439b4b8) SHA1(6e8df0f3868e3fd0229a5c2720d6c01e46815cab), ROM_BIOS(1)  )
272270ROM_END
273271
274272

Previous 15994 Revisions Next


© 1998-2018 The MESS Team