src/mess/machine/mbc55x.c
| r10311 | r10312 | |
| 69 | 69 | READ8_HANDLER(ppi8255_r) |
| 70 | 70 | { |
| 71 | 71 | device_t *ppi8255 = space->machine->device(PPI8255_TAG); |
| 72 | | |
| 72 | |
| 73 | 73 | switch(offset) |
| 74 | 74 | { |
| 75 | 75 | case 0 : return i8255a_r(ppi8255,0); break; |
| r10311 | r10312 | |
| 83 | 83 | WRITE8_HANDLER(ppi8255_w) |
| 84 | 84 | { |
| 85 | 85 | device_t *ppi8255 = space->machine->device(PPI8255_TAG); |
| 86 | | |
| 86 | |
| 87 | 87 | switch(offset) |
| 88 | 88 | { |
| 89 | 89 | case 0 : i8255a_w(ppi8255,0,data); break; |
| r10311 | r10312 | |
| 119 | 119 | WRITE8_DEVICE_HANDLER(mbc55x_ppi_portc_w) |
| 120 | 120 | { |
| 121 | 121 | device_t *wd17xx = device->machine->device(FDC_TAG); |
| 122 | | |
| 122 | |
| 123 | 123 | wd17xx_set_drive(wd17xx,(data & 0x03)); |
| 124 | 124 | wd17xx_set_side(wd17xx,((data & 0x04) >> 2)); |
| 125 | 125 | } |
| r10311 | r10312 | |
| 168 | 168 | static IRQ_CALLBACK(mbc55x_irq_callback) |
| 169 | 169 | { |
| 170 | 170 | device_t *pic8259 = device->machine->device(PIC8259_TAG); |
| 171 | | |
| 171 | |
| 172 | 172 | return pic8259_acknowledge( pic8259 ); |
| 173 | 173 | } |
| 174 | 174 | |
| r10311 | r10312 | |
| 178 | 178 | { |
| 179 | 179 | { |
| 180 | 180 | { |
| 181 | | PIT_C0_CLOCK, |
| 181 | PIT_C0_CLOCK, |
| 182 | 182 | DEVCB_NULL, |
| 183 | 183 | DEVCB_DEVICE_LINE(PIC8259_TAG, pic8259_ir0_w) |
| 184 | 184 | }, |
| 185 | 185 | { |
| 186 | | PIT_C1_CLOCK, |
| 186 | PIT_C1_CLOCK, |
| 187 | 187 | DEVCB_NULL, |
| 188 | 188 | DEVCB_DEVICE_LINE(PIC8259_TAG, pic8259_ir1_w) |
| 189 | 189 | }, |
| 190 | 190 | { |
| 191 | | PIT_C2_CLOCK, |
| 191 | PIT_C2_CLOCK, |
| 192 | 192 | DEVCB_NULL, |
| 193 | 193 | DEVCB_NULL |
| 194 | 194 | } |
| r10311 | r10312 | |
| 198 | 198 | READ8_HANDLER(pit8253_r) |
| 199 | 199 | { |
| 200 | 200 | device_t *pit8253 = space->machine->device(PIT8253_TAG); |
| 201 | | |
| 201 | |
| 202 | 202 | switch(offset) |
| 203 | 203 | { |
| 204 | 204 | case 0 : return pit8253_r(pit8253,0); break; |
| r10311 | r10312 | |
| 212 | 212 | WRITE8_HANDLER(pit8253_w) |
| 213 | 213 | { |
| 214 | 214 | device_t *pit8253 = space->machine->device(PIT8253_TAG); |
| 215 | | |
| 215 | |
| 216 | 216 | switch(offset) |
| 217 | 217 | { |
| 218 | 218 | case 0 : pit8253_w(pit8253,0,data); break; |
| r10311 | r10312 | |
| 227 | 227 | READ8_HANDLER(vram_page_r) |
| 228 | 228 | { |
| 229 | 229 | mbc55x_state *state = space->machine->driver_data<mbc55x_state>(); |
| 230 | | |
| 230 | |
| 231 | 231 | return state->vram_page; |
| 232 | 232 | } |
| 233 | 233 | |
| r10311 | r10312 | |
| 243 | 243 | READ8_HANDLER(mbc55x_disk_r) |
| 244 | 244 | { |
| 245 | 245 | device_t *wd17xx = space->machine->device(FDC_TAG); |
| 246 | | |
| 246 | |
| 247 | 247 | switch(offset) |
| 248 | 248 | { |
| 249 | 249 | case 0 : return wd17xx_status_r(wd17xx,0); break; |
| r10311 | r10312 | |
| 257 | 257 | WRITE8_HANDLER(mbc55x_disk_w) |
| 258 | 258 | { |
| 259 | 259 | device_t *wd17xx = space->machine->device(FDC_TAG); |
| 260 | | |
| 260 | |
| 261 | 261 | switch(offset) |
| 262 | 262 | { |
| 263 | 263 | case 0 : wd17xx_command_w(wd17xx,0,data); break; |
| r10311 | r10312 | |
| 278 | 278 | /* msm8251 serial */ |
| 279 | 279 | |
| 280 | 280 | const msm8251_interface mbc55x_msm8251a_interface = |
| 281 | | { |
| 281 | { |
| 282 | 282 | DEVCB_NULL, |
| 283 | 283 | DEVCB_NULL, |
| 284 | 284 | DEVCB_NULL, |
| r10311 | r10312 | |
| 321 | 321 | static void set_ram_size(running_machine *machine) |
| 322 | 322 | { |
| 323 | 323 | 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)); |
| 326 | 326 | int nobanks = ramsize / RAM_BANK_SIZE; |
| 327 | 327 | char bank[10]; |
| 328 | | int bankno; |
| 328 | int bankno; |
| 329 | 329 | UINT8 *ram = &ram_get_ptr(machine->device(RAM_TAG))[0]; |
| 330 | | UINT8 *map_base; |
| 330 | UINT8 *map_base; |
| 331 | 331 | int bank_base; |
| 332 | | |
| 333 | | |
| 332 | |
| 333 | |
| 334 | 334 | logerror("Ramsize is %d bytes\n",ramsize); |
| 335 | 335 | logerror("RAM_BANK_SIZE=%d, nobanks=%d\n",RAM_BANK_SIZE,nobanks); |
| 336 | | |
| 336 | |
| 337 | 337 | // Main memory mapping |
| 338 | | |
| 338 | |
| 339 | 339 | for(bankno=0; bankno<RAM_BANK_COUNT; bankno++) |
| 340 | 340 | { |
| 341 | 341 | sprintf(bank,"bank%x",bankno); |
| 342 | 342 | bank_base=bankno*RAM_BANK_SIZE; |
| 343 | 343 | map_base=&ram[bank_base]; |
| 344 | | |
| 344 | |
| 345 | 345 | if(bankno<nobanks) |
| 346 | 346 | { |
| 347 | 347 | memory_set_bankptr(machine, bank, map_base); |
| r10311 | r10312 | |
| 354 | 354 | logerror("Mapping bank %d at %05X to NOP\n",bankno,bank_base); |
| 355 | 355 | } |
| 356 | 356 | } |
| 357 | | |
| 357 | |
| 358 | 358 | // Graphics red and blue plane memory mapping, green is in main memory |
| 359 | 359 | memory_set_bankptr(machine, RED_PLANE_TAG, &state->video_mem[RED_PLANE_OFFSET]); |
| 360 | 360 | memory_install_readwrite_bank(space, RED_PLANE_MEMBASE, RED_PLANE_MEMBASE+(COLOUR_PLANE_SIZE-1), 0, 0, RED_PLANE_TAG); |
| r10311 | r10312 | |
| 374 | 374 | /* init cpu */ |
| 375 | 375 | // mbc55x_cpu_init(machine); |
| 376 | 376 | |
| 377 | | |
| 378 | 377 | /* setup debug commands */ |
| 379 | 378 | if (machine->debug_flags & DEBUG_FLAG_ENABLED) |
| 380 | 379 | { |
| 381 | 380 | debug_console_register_command(machine, "mbc55x_debug", CMDFLAG_NONE, 0, 0, 1, mbc55x_debug); |
| 382 | | |
| 381 | |
| 383 | 382 | /* set up the instruction hook */ |
| 384 | 383 | machine->device(MAINCPU_TAG)->debug()->set_instruction_hook(instruction_hook); |
| 385 | 384 | } |
| r10311 | r10312 | |
| 391 | 390 | static void mbc55x_debug(running_machine *machine, int ref, int params, const char *param[]) |
| 392 | 391 | { |
| 393 | 392 | 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 | } |
| 403 | 402 | } |
| 404 | 403 | |
| 405 | 404 | /*----------------------------------------------- |
| r10311 | r10312 | |
| 409 | 408 | static int instruction_hook(device_t &device, offs_t curpc) |
| 410 | 409 | { |
| 411 | 410 | 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; |
| 414 | 413 | |
| 415 | | addr_ptr = (UINT8*)space->get_read_ptr(curpc); |
| 414 | addr_ptr = (UINT8*)space->get_read_ptr(curpc); |
| 416 | 415 | |
| 417 | 416 | if ((addr_ptr !=NULL) && (addr_ptr[0]==0xCD)) |
| 418 | 417 | { |
| 419 | 418 | // logerror("int %02X called\n",addr_ptr[1]); |
| 420 | | |
| 419 | |
| 421 | 420 | if(DEBUG_SET(DECODE_DOS21) && (addr_ptr[1]==0x21)) |
| 422 | | decode_dos21(&device,curpc); |
| 421 | decode_dos21(&device,curpc); |
| 423 | 422 | } |
| 424 | 423 | |
| 425 | | return 0; |
| 424 | return 0; |
| 426 | 425 | } |
| 427 | 426 | |
| 428 | 427 | static void decode_dos21(device_t *device,offs_t pc) |
| 429 | 428 | { |
| 430 | | device_t *cpu = device->machine->device(MAINCPU_TAG); |
| 429 | device_t *cpu = device->machine->device(MAINCPU_TAG); |
| 431 | 430 | |
| 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); |
| 435 | 434 | 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); |
| 437 | 436 | UINT16 ds = cpu_get_reg(cpu,I8086_DS); |
| 438 | 437 | UINT16 es = cpu_get_reg(cpu,I8086_ES); |
| 439 | 438 | 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); |
| 443 | 442 | UINT16 bp = cpu_get_reg(cpu,I8086_BP); |
| 444 | 443 | |
| 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); |
| 447 | 446 | logerror("AX=%04X, BX=%04X, CX=%04X, DX=%04X\n",ax,bx,cx,dx); |
| 448 | 447 | logerror("CS=%04X, DS=%04X, ES=%04X, SS=%04X\n",cs,ds,es,ss); |
| 449 | 448 | logerror("SI=%04X, DI=%04X, BP=%04X\n",si,di,bp); |
| 450 | | logerror("=======================================================================\n"); |
| 451 | | |
| 449 | logerror("=======================================================================\n"); |
| 450 | |
| 452 | 451 | if((ax & 0xff00)==0x0900) |
| 453 | 452 | debugger_break(device->machine); |
| 454 | 453 | } |
src/mess/video/mbc55x.c
| r10311 | r10312 | |
| 107 | 107 | static void video_debug(running_machine *machine, int ref, int params, const char *param[]) |
| 108 | 108 | { |
| 109 | 109 | 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 | } |
| 119 | 119 | } |
| 120 | 120 | |
| 121 | 121 | static MC6845_UPDATE_ROW( vid_update_row ) |
| 122 | 122 | { |
| 123 | 123 | mbc55x_state *state = device->machine->driver_data<mbc55x_state>(); |
| 124 | | |
| 124 | |
| 125 | 125 | UINT8 *ram = &ram_get_ptr(device->machine->device(RAM_TAG))[0]; |
| 126 | 126 | UINT8 *red = &state->video_mem[RED_PLANE_OFFSET]; |
| 127 | 127 | UINT8 *blue = &state->video_mem[BLUE_PLANE_OFFSET]; |
| 128 | 128 | UINT8 *green; |
| 129 | | int offset; |
| 129 | int offset; |
| 130 | 130 | UINT8 rpx,gpx,bpx; |
| 131 | 131 | UINT8 rb,gb,bb; |
| 132 | | |
| 133 | | int x_pos; |
| 134 | | int pixelno; |
| 132 | |
| 133 | int x_pos; |
| 134 | int pixelno; |
| 135 | 135 | UINT8 bitno; |
| 136 | 136 | UINT8 shifts; |
| 137 | 137 | UINT8 colour; |
| 138 | | |
| 138 | |
| 139 | 139 | switch(state->vram_page) |
| 140 | 140 | { |
| 141 | 141 | case 4 : green=&ram[0x08000]; break; |
| r10311 | r10312 | |
| 145 | 145 | default : |
| 146 | 146 | green=&ram[0x0C000]; |
| 147 | 147 | } |
| 148 | | |
| 148 | |
| 149 | 149 | if(DEBUG_SET(DEBUG_LINES)) |
| 150 | 150 | logerror("MC6845_UPDATE_ROW: ma=%d, ra=%d, y=%d, x_count=%d\n",ma,ra,y,x_count); |
| 151 | | |
| 151 | |
| 152 | 152 | offset=(ra) + ((y/4)*(x_count*4)); |
| 153 | | |
| 153 | |
| 154 | 154 | if(DEBUG_SET(DEBUG_LINES)) |
| 155 | 155 | logerror("offset=%05X\n",offset); |
| 156 | | |
| 156 | |
| 157 | 157 | for(x_pos=0; x_pos<x_count; x_pos++) |
| 158 | 158 | { |
| 159 | 159 | rpx=red[offset+(x_pos*4)]; |
| 160 | 160 | gpx=green[offset+(x_pos*4)]; |
| 161 | 161 | bpx=blue[offset+(x_pos*4)]; |
| 162 | | |
| 162 | |
| 163 | 163 | bitno=0x80; |
| 164 | 164 | shifts=7; |
| 165 | | |
| 165 | |
| 166 | 166 | for(pixelno=0; pixelno<8; pixelno++) |
| 167 | 167 | { |
| 168 | | |
| 169 | 168 | rb=(rpx & bitno) >> shifts; |
| 170 | 169 | gb=(gpx & bitno) >> shifts; |
| 171 | 170 | bb=(bpx & bitno) >> shifts; |
| 172 | | |
| 171 | |
| 173 | 172 | colour=(rb<<2) | (gb<<1) | (bb<<0); |
| 174 | | |
| 173 | |
| 175 | 174 | *BITMAP_ADDR16(bitmap, y, (x_pos*8)+pixelno)=colour; |
| 176 | 175 | //logerror("set pixel (%d,%d)=%d\n",y, ((x_pos*8)+pixelno),colour); |
| 177 | 176 | bitno=bitno>>1; |
| r10311 | r10312 | |
| 192 | 191 | READ8_HANDLER( mbc55x_video_io_r) |
| 193 | 192 | { |
| 194 | 193 | device_t *mc6845 = space->machine->device(VID_MC6845_NAME); |
| 195 | | |
| 194 | |
| 196 | 195 | switch(offset & 0x03) |
| 197 | 196 | { |
| 198 | 197 | case 0 : return mc6845_status_r(mc6845, 0); break; |
| r10311 | r10312 | |
| 205 | 204 | WRITE8_HANDLER( mbc55x_video_io_w ) |
| 206 | 205 | { |
| 207 | 206 | device_t *mc6845 = space->machine->device(VID_MC6845_NAME); |
| 208 | | |
| 207 | |
| 209 | 208 | switch(offset & 0x03) |
| 210 | 209 | { |
| 211 | 210 | case 0 : mc6845_address_w(mc6845,0,data); |
| r10311 | r10312 | |
| 216 | 215 | VIDEO_START( mbc55x ) |
| 217 | 216 | { |
| 218 | 217 | mbc55x_state *state = machine->driver_data<mbc55x_state>(); |
| 219 | | state->debug_video=0; |
| 218 | state->debug_video=0; |
| 220 | 219 | |
| 221 | | logerror("VIDEO_START\n"); |
| 220 | logerror("VIDEO_START\n"); |
| 222 | 221 | |
| 223 | 222 | if (machine->debug_flags & DEBUG_FLAG_ENABLED) |
| 224 | 223 | { |
| 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 | } |
| 227 | 226 | } |
| 228 | 227 | |
| 229 | 228 | VIDEO_RESET( mbc55x ) |
| 230 | 229 | { |
| 231 | 230 | 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)); |
| 234 | 233 | |
| 235 | | logerror("Video reset\n"); |
| 234 | logerror("Video reset\n"); |
| 236 | 235 | } |
| 237 | 236 | |
| 238 | 237 | VIDEO_EOF( mbc55x ) |
| 239 | 238 | { |
| 240 | | |
| 241 | | // logerror("VIDEO_EOF( mbc55x )\n"); |
| 239 | // logerror("VIDEO_EOF( mbc55x )\n"); |
| 242 | 240 | } |
| 243 | 241 | |
| 244 | 242 | VIDEO_UPDATE( mbc55x ) |
| r10311 | r10312 | |
| 248 | 246 | |
| 249 | 247 | #if 0 |
| 250 | 248 | 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(); |
| 253 | 251 | |
| 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 | } |
| 258 | 256 | #endif |
| 259 | | return 0; |
| 257 | return 0; |
| 260 | 258 | } |
| 261 | 259 | |
src/mess/drivers/mbc55x.c
| r10311 | r10312 | |
| 27 | 27 | /*normal brightness */ |
| 28 | 28 | { 0x00,0x00,0x00 }, /* black */ |
| 29 | 29 | { 0x00,0x00,0x80 }, /* blue */ |
| 30 | | { 0x00,0x80,0x00 }, /* green */ |
| 31 | | { 0x00,0x80,0x80 }, /* cyan */ |
| 30 | { 0x00,0x80,0x00 }, /* green */ |
| 31 | { 0x00,0x80,0x80 }, /* cyan */ |
| 32 | 32 | { 0x80,0x00,0x00 }, /* red */ |
| 33 | | { 0x80,0x00,0x80 }, /* magenta */ |
| 33 | { 0x80,0x00,0x80 }, /* magenta */ |
| 34 | 34 | { 0x80,0x80,0x00 }, /* yellow */ |
| 35 | 35 | { 0x80,0x80,0x80 }, /* light grey */ |
| 36 | 36 | }; |
| r10311 | r10312 | |
| 48 | 48 | }; |
| 49 | 49 | |
| 50 | 50 | static 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) |
| 66 | 66 | AM_RANGE( 0xF0000, 0xF3FFF ) AM_RAMBANK(RED_PLANE_TAG) |
| 67 | 67 | AM_RANGE( 0xF4000, 0xF7FFF ) AM_RAMBANK(BLUE_PLANE_TAG) |
| 68 | 68 | 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) |
| 70 | 70 | ADDRESS_MAP_END |
| 71 | 71 | |
| 72 | 72 | static ADDRESS_MAP_START(mbc55x_io, ADDRESS_SPACE_IO, 8) |
| 73 | 73 | 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) |
| 75 | 75 | AM_RANGE( 0X0010, 0X0010) AM_READWRITE( vram_page_r, vram_page_w) |
| 76 | 76 | AM_RANGE( 0x0018, 0x001F) AM_READWRITE( ppi8255_r, ppi8255_w) |
| 77 | 77 | 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) |
| 79 | 79 | AM_RANGE( 0x0038, 0x003B) AM_READWRITE( mbc55x_kb_usart_r, mbc55x_kb_usart_w) |
| 80 | 80 | ADDRESS_MAP_END |
| 81 | 81 | |
| 82 | 82 | static INPUT_PORTS_START( mbc55x ) |
| 83 | 83 | PORT_START("KEY0") /* Key row 0 scancodes 00..07 */ |
| 84 | 84 | //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) |
| 86 | 86 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ESC") PORT_CODE(KEYCODE_ESC) PORT_CHAR(0x1B) |
| 87 | 87 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHAR('1') |
| 88 | 88 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHAR('2') |
| 89 | 89 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CHAR('3') |
| 90 | 90 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4') |
| 91 | 91 | 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') |
| 93 | 93 | |
| 94 | 94 | PORT_START("KEY1") /* Key row 1 scancodes 08..0F */ |
| 95 | 95 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHAR('7') |
| r10311 | r10312 | |
| 99 | 99 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("-") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') |
| 100 | 100 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("=") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') |
| 101 | 101 | 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) |
| 103 | 103 | |
| 104 | 104 | PORT_START("KEY2") /* Key row 2 scancodes 10..17 */ |
| 105 | 105 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('Q') |
| r10311 | r10312 | |
| 109 | 109 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('T') |
| 110 | 110 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('Y') |
| 111 | 111 | 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') |
| 113 | 113 | |
| 114 | 114 | PORT_START("KEY3") /* Key row 3 scancodes 18..1F */ |
| 115 | 115 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('O') |
| r10311 | r10312 | |
| 119 | 119 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ENTER") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(0x0D) |
| 120 | 120 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CTRL") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) // Ether control |
| 121 | 121 | 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') |
| 123 | 123 | |
| 124 | 124 | PORT_START("KEY4") /* Key row 4 scancodes 20..27 */ |
| 125 | 125 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('D') |
| r10311 | r10312 | |
| 129 | 129 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('J') |
| 130 | 130 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('K') |
| 131 | 131 | 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(';') |
| 133 | 133 | |
| 134 | 134 | 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('#') |
| 136 | 136 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("BACKSLASH") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') |
| 137 | 137 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("LSHIFT") PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) |
| 138 | 138 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TILDE") PORT_CODE(KEYCODE_TILDE) PORT_CHAR('`') |
| r10311 | r10312 | |
| 141 | 141 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('C') |
| 142 | 142 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('V') |
| 143 | 143 | |
| 144 | | |
| 145 | 144 | 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') |
| 148 | 147 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('M') |
| 149 | 148 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') |
| 150 | 149 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(".") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') |
| r10311 | r10312 | |
| 153 | 152 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PRSCR") PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR('*') |
| 154 | 153 | |
| 155 | 154 | 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(' ') |
| 158 | 157 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CAPS") PORT_CODE(KEYCODE_CAPSLOCK) |
| 159 | 158 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F1") PORT_CODE(KEYCODE_F1) |
| 160 | 159 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F2") PORT_CODE(KEYCODE_F2) |
| r10311 | r10312 | |
| 162 | 161 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F4") PORT_CODE(KEYCODE_F4) |
| 163 | 162 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F5") PORT_CODE(KEYCODE_F5) |
| 164 | 163 | |
| 165 | | |
| 166 | | PORT_START("KEY8") /* Key row 8 scancodes 40..47 */ |
| 164 | PORT_START("KEY8") /* Key row 8 scancodes 40..47 */ |
| 167 | 165 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F6") PORT_CODE(KEYCODE_F6) |
| 168 | 166 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F7") PORT_CODE(KEYCODE_F7) |
| 169 | 167 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F8") PORT_CODE(KEYCODE_F8) |
| r10311 | r10312 | |
| 171 | 169 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F10") PORT_CODE(KEYCODE_F10) |
| 172 | 170 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("NUMLK") PORT_CODE(KEYCODE_NUMLOCK) |
| 173 | 171 | 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') |
| 175 | 173 | |
| 176 | 174 | PORT_START("KEY9") /* Key row 9 scancodes 48..4F */ |
| 177 | 175 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP8") PORT_CODE(KEYCODE_8_PAD) //PORT_CHAR('8') |
| r10311 | r10312 | |
| 181 | 179 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP5") PORT_CODE(KEYCODE_5_PAD) //PORT_CHAR('5') |
| 182 | 180 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP6") PORT_CODE(KEYCODE_6_PAD) //PORT_CHAR('6') |
| 183 | 181 | 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') |
| 185 | 183 | |
| 186 | 184 | PORT_START("KEY10") /* Key row 10 scancodes 50..57 */ |
| 187 | 185 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP2") PORT_CODE(KEYCODE_2_PAD) //PORT_CHAR('2') |
| r10311 | r10312 | |
| 192 | 190 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED) |
| 193 | 191 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED) |
| 194 | 192 | 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') |
| 196 | 194 | //PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("KP6") PORT_CODE(KEYCODE_6_PAD) PORT_CHAR('6') |
| 197 | 195 | //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') |
| 199 | 197 | INPUT_PORTS_END |
| 200 | 198 | |
| 201 | 199 | |
| r10311 | r10312 | |
| 206 | 204 | logerror("initializing palette\n"); |
| 207 | 205 | |
| 208 | 206 | for ( colourno = 0; colourno < SCREEN_NO_COLOURS; colourno++ ) |
| 209 | | { |
| 207 | { |
| 210 | 208 | palette_set_color_rgb(machine, colourno, mbc55x_palette[colourno][RED], mbc55x_palette[colourno][GREEN], mbc55x_palette[colourno][BLUE]); |
| 211 | 209 | } |
| 212 | 210 | } |
| 213 | 211 | |
| 214 | 212 | |
| 215 | 213 | static 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 */ |
| 221 | 215 | |
| 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) |
| 223 | 219 | |
| 224 | | MCFG_MACHINE_RESET(mbc55x) |
| 220 | MCFG_MACHINE_START( mbc55x ) |
| 225 | 221 | |
| 222 | MCFG_MACHINE_RESET(mbc55x) |
| 223 | |
| 226 | 224 | MCFG_PIT8253_ADD( PIT8253_TAG, mbc55x_pit8253_config ) |
| 227 | 225 | MCFG_PIC8259_ADD( PIC8259_TAG, mbc55x_pic8259_config ) |
| 228 | 226 | MCFG_I8255A_ADD( PPI8255_TAG, mbc55x_ppi8255_interface ) |
| 229 | 227 | |
| 230 | | /* video hardware */ |
| 231 | | MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) |
| 228 | /* video hardware */ |
| 229 | MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) |
| 232 | 230 | MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) |
| 233 | 231 | MCFG_SCREEN_RAW_PARAMS(XTAL_14_31818MHz,896,0,300,262,0,200) |
| 234 | 232 | |
| 235 | | MCFG_PALETTE_LENGTH(SCREEN_NO_COLOURS * 3) |
| 233 | MCFG_PALETTE_LENGTH(SCREEN_NO_COLOURS * 3) |
| 236 | 234 | MCFG_PALETTE_INIT( mbc55x ) |
| 237 | 235 | |
| 238 | 236 | MCFG_MC6845_ADD(VID_MC6845_NAME, MC6845, XTAL_14_31818MHz/8, mb55x_mc6845_intf) |
| 239 | 237 | |
| 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) |
| 242 | 240 | |
| 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) |
| 247 | 245 | |
| 248 | | /* Backing storage */ |
| 246 | /* Backing storage */ |
| 249 | 247 | MCFG_WD1793_ADD(FDC_TAG, mbc55x_wd17xx_interface ) |
| 250 | 248 | MCFG_FLOPPY_4_DRIVES_ADD(mbc55x_floppy_config) |
| 251 | 249 | |
| 252 | | MCFG_RAM_ADD(RAM_TAG) |
| 250 | MCFG_RAM_ADD(RAM_TAG) |
| 253 | 251 | MCFG_RAM_DEFAULT_SIZE("128K") |
| 254 | 252 | MCFG_RAM_EXTRA_OPTIONS("128K,192K,256K,320K,384K,448K,512K,576K,640K") |
| 255 | 253 | |
| 256 | | /* Peripheral chips */ |
| 257 | | |
| 254 | /* Peripheral chips */ |
| 255 | |
| 258 | 256 | MCFG_MSM8251_ADD(MSM8251A_TAG,mbc55x_msm8251a_interface); |
| 259 | | |
| 257 | |
| 260 | 258 | /* sound hardware */ |
| 261 | 259 | MCFG_SPEAKER_STANDARD_MONO(MONO_TAG) |
| 262 | 260 | MCFG_SOUND_ADD(SPEAKER_TAG, SPEAKER_SOUND, 0) |
| r10311 | r10312 | |
| 265 | 263 | |
| 266 | 264 | |
| 267 | 265 | ROM_START( mbc55x ) |
| 268 | | ROM_REGION( 0x4000, MAINCPU_TAG, 0 ) |
| 266 | ROM_REGION( 0x4000, MAINCPU_TAG, 0 ) |
| 269 | 267 | |
| 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) ) |
| 272 | 270 | ROM_END |
| 273 | 271 | |
| 274 | 272 | |