diff --git a/src/mess/drivers/apc.c b/src/mess/drivers/apc.c index 332b606bfdd..1a0ef235f06 100644 --- a/src/mess/drivers/apc.c +++ b/src/mess/drivers/apc.c @@ -5,12 +5,10 @@ preliminary driver by Angelo Salese TODO: - - video emulation - - Floppy device - - keyboard + - video emulation (bitmap part) - Understand interrupt sources - NMI seems valid, dumps a x86 stack to vram? - - Unknown RTC device type; + - Unknown RTC device type (upd1990a?); - What are exactly APU and MPU devices? They sounds scary ... - DMA hook-ups - serial ports @@ -191,7 +189,7 @@ static UPD7220_DRAW_TEXT_LINE( hgdc_draw_text ) for(x=0;xm_video_ram_1[(tile_addr*2+1) & 0x1fff] & 0x00ff; attr = (state->m_video_ram_1[(tile_addr*2 & 0x1fff) | 0x2000] & 0x00ff); -// secret = (attr & 1) ^ 1; - //blink = attr & 2; -// reverse = attr & 4; -// u_line = attr & 8; -// v_line = attr & 0x10; + u_line = attr & 0x01; + o_line = attr & 0x02; + v_line = attr & 0x04; + blink = attr & 0x08; + reverse = attr & 0x10; +// secret= (attr & 1) ^ 1; color = (attr & 0xe0) >> 5; for(yi=0;yim_char_rom[tile*char_size+interlace_on*0x800+yi]); tile_data = (state->m_char_rom[(tile & 0x7f)+((tile & 0x80)<<4)+((yi & 0xf)*0x80)+((yi & 0x10)<<8)]); -// if(reverse) { tile_data^=0xff; } -// if(u_line && yi == 7) { tile_data = 0xff; } -// if(v_line) { tile_data|=8; } + if(reverse) { tile_data^=0xff; } + if(u_line && yi == lr-1) { tile_data = 0xff; } + if(o_line && yi == 0) { tile_data = 0xff; } + if(v_line) { tile_data|=8; } + if(blink && device->machine().primary_screen->frame_number() & 0x10) { tile_data = 0; } // TODO: rate & correct behaviour if(cursor_on && cursor_addr == tile_addr && device->machine().primary_screen->frame_number() & 0x10) tile_data^=0xff; @@ -297,7 +298,7 @@ READ8_MEMBER(apc_state::apc_port_60_r) } else { - printf("Read melody port %02x\n",offset+0x60); + //printf("Read melody port %02x\n",offset+0x60); res = 0x80; } @@ -404,7 +405,10 @@ WRITE8_MEMBER(apc_state::apc_dma_w) static ADDRESS_MAP_START( apc_map, AS_PROGRAM, 16, apc_state ) AM_RANGE(0x00000, 0x9ffff) AM_RAM -// AM_RANGE(0xa0000, 0xaffff) space for an external ROM +// AM_RANGE(0xa0000, 0xa0fff) CMOS +// AM_RANGE(0xc0000, 0xcffff) standard character ROM +// AM_RANGE(0xde000, 0xdffff) AUX character RAM +// AM_RANGE(0xe0000, 0xeffff) Special Character RAM AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("ipl", 0) ADDRESS_MAP_END @@ -743,24 +747,24 @@ static const struct pit8253_config pit8253_config = irq assignment: 8259 master: -ir0 (enabled at POST, unknown purpose) -ir1 -ir2 -ir3 (enabled after CP/M loading, serial?) +ir0 all stop (enabled at POST, unknown purpose) +ir1 Communication +ir2 Option +ir3 Timer (enabled after CP/M loading, serial?) ir4 keyboard (almost trusted, check code at fe64a) -ir5 -ir6 -ir7 +ir5 Option +ir6 Option +ir7 (ODA Printer?) 8259 slave: -ir0 -ir1 -ir2 -ir3 fdd irq? -ir4 -ir5 -ir6 -ir7 +ir0 Option +ir1 Option +ir2 CRT +ir3 FDD +ir4 Option +ir5 Option +ir6 APU +ir7 Option */ WRITE_LINE_MEMBER(apc_state::apc_master_set_int_line) diff --git a/src/mess/video/upd7220.c b/src/mess/video/upd7220.c index c72b88021f4..2f3f9fd0244 100644 --- a/src/mess/video/upd7220.c +++ b/src/mess/video/upd7220.c @@ -1248,13 +1248,13 @@ void upd7220_device::process_fifo() case COMMAND_START: /* start display & end idle mode */ m_de = 1; - if (LOG) logerror("uPD7220 '%s' DE: 1\n", tag()); + //if (LOG) logerror("uPD7220 '%s' DE: 1\n", tag()); break; case COMMAND_BCTRL: /* display blanking control */ m_de = m_cr & 0x01; - if (LOG) logerror("uPD7220 '%s' DE: %u\n", tag(), m_de); + //if (LOG) logerror("uPD7220 '%s' DE: %u\n", tag(), m_de); break; case COMMAND_ZOOM: /* zoom factors specify */ @@ -1275,12 +1275,12 @@ void upd7220_device::process_fifo() m_ead = (upper_addr << 16) | (m_pr[2] << 8) | m_pr[1]; - if (LOG) logerror("uPD7220 '%s' EAD: %06x\n", tag(), m_ead); + //if (LOG) logerror("uPD7220 '%s' EAD: %06x\n", tag(), m_ead); if(m_param_ptr == 4) { m_dad = m_pr[3] >> 4; - if (LOG) logerror("uPD7220 '%s' DAD: %01x\n", tag(), m_dad); + //if (LOG) logerror("uPD7220 '%s' DAD: %01x\n", tag(), m_dad); } } break;