mirror of
https://github.com/holub/mame
synced 2025-05-29 09:03:08 +03:00
wicat: Small improvements because more ambitious ones tend to break things (nw)
- Better guesses at character width and screen raw parameters - Add reverse-video cursor - Double pixels for characters
This commit is contained in:
parent
15cc455e15
commit
4bf360c30c
@ -761,26 +761,24 @@ WRITE_LINE_MEMBER(wicat_state::crtc_cb)
|
||||
|
||||
I8275_DRAW_CHARACTER_MEMBER(wicat_state::wicat_display_pixels)
|
||||
{
|
||||
uint8_t romdata = m_chargen->base()[(charcode << 4) | linecount];
|
||||
uint8_t romdata = vsp ? 0 : m_chargen->base()[(charcode << 4) | linecount];
|
||||
const pen_t *pen = m_palette->pens();
|
||||
|
||||
for (int i = 0; i < 8; i++)
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
int color = (romdata >> (7-i)) & 0x01;
|
||||
|
||||
if(vsp)
|
||||
color = 0;
|
||||
int color = ((romdata & 0xc0) != 0) ^ rvv;
|
||||
|
||||
bitmap.pix32(y, x + i) = pen[color];
|
||||
romdata <<= 1;
|
||||
}
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(wicat_state::wicat)
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(8'000'000))
|
||||
MCFG_DEVICE_ADD("maincpu", M68000, 8_MHz_XTAL)
|
||||
MCFG_DEVICE_PROGRAM_MAP(wicat_mem)
|
||||
|
||||
MCFG_DEVICE_ADD("via", VIA6522, XTAL(8'000'000))
|
||||
MCFG_DEVICE_ADD("via", VIA6522, 8_MHz_XTAL)
|
||||
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, wicat_state, via_a_w))
|
||||
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, wicat_state, via_b_w))
|
||||
MCFG_VIA6522_IRQ_HANDLER(INPUTLINE("maincpu", M68K_IRQ_1))
|
||||
@ -790,41 +788,41 @@ MACHINE_CONFIG_START(wicat_state::wicat)
|
||||
MCFG_MM58274C_DAY1(1) // monday
|
||||
|
||||
// internal terminal
|
||||
MCFG_DEVICE_ADD("uart0", MC2661, XTAL(5'068'800)) // connected to terminal board
|
||||
MCFG_DEVICE_ADD("uart0", MC2661, 5.0688_MHz_XTAL) // connected to terminal board
|
||||
MCFG_MC2661_TXD_HANDLER(WRITELINE("videouart0", mc2661_device, rx_w))
|
||||
MCFG_MC2661_RXRDY_HANDLER(INPUTLINE("maincpu", M68K_IRQ_2))
|
||||
MCFG_MC2661_RTS_HANDLER(WRITELINE("videouart0", mc2661_device, cts_w))
|
||||
MCFG_MC2661_DTR_HANDLER(WRITELINE("videouart0", mc2661_device, dsr_w))
|
||||
|
||||
// RS232C ports (x5)
|
||||
MCFG_DEVICE_ADD("uart1", MC2661, XTAL(5'068'800))
|
||||
MCFG_DEVICE_ADD("uart1", MC2661, 5.0688_MHz_XTAL)
|
||||
MCFG_MC2661_TXD_HANDLER(WRITELINE("serial1", rs232_port_device, write_txd))
|
||||
MCFG_MC2661_RXRDY_HANDLER(INPUTLINE("maincpu", M68K_IRQ_2))
|
||||
MCFG_MC2661_RTS_HANDLER(WRITELINE("serial1", rs232_port_device, write_rts))
|
||||
MCFG_MC2661_DTR_HANDLER(WRITELINE("serial1", rs232_port_device, write_dtr))
|
||||
MCFG_MC2661_TXEMT_DSCHG_HANDLER(INPUTLINE("maincpu", M68K_IRQ_2))
|
||||
|
||||
MCFG_DEVICE_ADD("uart2", MC2661, XTAL(5'068'800))
|
||||
MCFG_DEVICE_ADD("uart2", MC2661, 5.0688_MHz_XTAL)
|
||||
MCFG_MC2661_TXD_HANDLER(WRITELINE("serial2", rs232_port_device, write_txd))
|
||||
MCFG_MC2661_RXRDY_HANDLER(INPUTLINE("maincpu", M68K_IRQ_2))
|
||||
MCFG_MC2661_RTS_HANDLER(WRITELINE("serial2", rs232_port_device, write_rts))
|
||||
MCFG_MC2661_DTR_HANDLER(WRITELINE("serial2", rs232_port_device, write_dtr))
|
||||
|
||||
MCFG_DEVICE_ADD("uart3", MC2661, XTAL(5'068'800))
|
||||
MCFG_DEVICE_ADD("uart3", MC2661, 5.0688_MHz_XTAL)
|
||||
MCFG_MC2661_TXD_HANDLER(WRITELINE("serial3", rs232_port_device, write_txd))
|
||||
MCFG_MC2661_RXRDY_HANDLER(INPUTLINE("maincpu", M68K_IRQ_2))
|
||||
MCFG_MC2661_RTS_HANDLER(WRITELINE("serial3", rs232_port_device, write_rts))
|
||||
MCFG_MC2661_DTR_HANDLER(WRITELINE("serial3", rs232_port_device, write_dtr))
|
||||
MCFG_MC2661_TXEMT_DSCHG_HANDLER(INPUTLINE("maincpu", M68K_IRQ_2))
|
||||
|
||||
MCFG_DEVICE_ADD("uart4", MC2661, XTAL(5'068'800))
|
||||
MCFG_DEVICE_ADD("uart4", MC2661, 5.0688_MHz_XTAL)
|
||||
MCFG_MC2661_TXD_HANDLER(WRITELINE("serial4", rs232_port_device, write_txd))
|
||||
MCFG_MC2661_RXRDY_HANDLER(INPUTLINE("maincpu", M68K_IRQ_2))
|
||||
MCFG_MC2661_RTS_HANDLER(WRITELINE("serial4", rs232_port_device, write_rts))
|
||||
MCFG_MC2661_DTR_HANDLER(WRITELINE("serial4", rs232_port_device, write_dtr))
|
||||
MCFG_MC2661_TXEMT_DSCHG_HANDLER(INPUTLINE("maincpu", M68K_IRQ_2))
|
||||
|
||||
MCFG_DEVICE_ADD("uart5", MC2661, XTAL(5'068'800))
|
||||
MCFG_DEVICE_ADD("uart5", MC2661, 5.0688_MHz_XTAL)
|
||||
MCFG_MC2661_TXD_HANDLER(WRITELINE("serial5", rs232_port_device, write_txd))
|
||||
MCFG_MC2661_RXRDY_HANDLER(INPUTLINE("maincpu", M68K_IRQ_2))
|
||||
MCFG_MC2661_RTS_HANDLER(WRITELINE("serial5", rs232_port_device, write_rts))
|
||||
@ -832,7 +830,7 @@ MACHINE_CONFIG_START(wicat_state::wicat)
|
||||
MCFG_MC2661_TXEMT_DSCHG_HANDLER(INPUTLINE("maincpu", M68K_IRQ_2))
|
||||
|
||||
// modem
|
||||
MCFG_DEVICE_ADD("uart6", MC2661, XTAL(5'068'800)) // connected to modem port
|
||||
MCFG_DEVICE_ADD("uart6", MC2661, 5.0688_MHz_XTAL) // connected to modem port
|
||||
MCFG_MC2661_RXRDY_HANDLER(INPUTLINE("maincpu", M68K_IRQ_2))
|
||||
MCFG_MC2661_TXEMT_DSCHG_HANDLER(INPUTLINE("maincpu", M68K_IRQ_2))
|
||||
|
||||
@ -877,11 +875,11 @@ MACHINE_CONFIG_START(wicat_state::wicat)
|
||||
MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(OUTPUT("led6")) MCFG_DEVCB_INVERT
|
||||
|
||||
/* video hardware */
|
||||
MCFG_DEVICE_ADD("videocpu",Z8002,XTAL(8'000'000)/2) // AMD AMZ8002DC
|
||||
MCFG_DEVICE_ADD("videocpu", Z8002, 8_MHz_XTAL/2) // AMD AMZ8002DC
|
||||
MCFG_DEVICE_PROGRAM_MAP(wicat_video_mem)
|
||||
MCFG_DEVICE_IO_MAP(wicat_video_io)
|
||||
|
||||
MCFG_DEVICE_ADD("videodma", AM9517A, XTAL(8'000'000)) // clock is a bit of guess
|
||||
MCFG_DEVICE_ADD("videodma", AM9517A, 8_MHz_XTAL) // clock is a bit of guess
|
||||
MCFG_AM9517A_OUT_HREQ_CB(WRITELINE(*this, wicat_state, dma_hrq_w))
|
||||
MCFG_AM9517A_OUT_EOP_CB(WRITELINE(*this, wicat_state, dma_nmi_cb))
|
||||
MCFG_AM9517A_IN_MEMR_CB(READ8(*this, wicat_state, vram_r))
|
||||
@ -891,13 +889,13 @@ MACHINE_CONFIG_START(wicat_state::wicat)
|
||||
MCFG_IM6402_DR_CALLBACK(WRITELINE(*this, wicat_state, kb_data_ready))
|
||||
|
||||
// terminal (2x INS2651, 1x IM6042 - one of these is for the keyboard, another communicates with the main board, the third is unknown)
|
||||
MCFG_DEVICE_ADD("videouart0", MC2661, XTAL(5'068'800)) // the INS2651 looks similar enough to the MC2661...
|
||||
MCFG_DEVICE_ADD("videouart0", MC2661, 5.0688_MHz_XTAL) // the INS2651 looks similar enough to the MC2661...
|
||||
MCFG_MC2661_TXD_HANDLER(WRITELINE("uart0", mc2661_device, rx_w))
|
||||
MCFG_MC2661_RXRDY_HANDLER(INPUTLINE("videocpu", INPUT_LINE_IRQ0))
|
||||
MCFG_MC2661_RTS_HANDLER(WRITELINE("uart0", mc2661_device, cts_w))
|
||||
MCFG_MC2661_DTR_HANDLER(WRITELINE("uart0", mc2661_device, dsr_w))
|
||||
|
||||
MCFG_DEVICE_ADD("videouart1", MC2661, XTAL(5'068'800))
|
||||
MCFG_DEVICE_ADD("videouart1", MC2661, 5.0688_MHz_XTAL)
|
||||
MCFG_MC2661_RXC(19200)
|
||||
MCFG_MC2661_TXC(19200)
|
||||
MCFG_MC2661_RXRDY_HANDLER(INPUTLINE("videocpu", INPUT_LINE_IRQ0))
|
||||
@ -905,15 +903,13 @@ MACHINE_CONFIG_START(wicat_state::wicat)
|
||||
MCFG_X2210_ADD("vsram") // XD2210
|
||||
|
||||
MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
|
||||
MCFG_SCREEN_SIZE(720,300)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0,720-1,0,300-1)
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
MCFG_SCREEN_RAW_PARAMS(19.6608_MHz_XTAL, 1020, 0, 800, 324, 0, 300)
|
||||
MCFG_SCREEN_UPDATE_DEVICE("video",i8275_device,screen_update)
|
||||
|
||||
MCFG_PALETTE_ADD_MONOCHROME("palette")
|
||||
|
||||
MCFG_DEVICE_ADD("video", I8275, XTAL(19'660'800)/8)
|
||||
MCFG_I8275_CHARACTER_WIDTH(9)
|
||||
MCFG_DEVICE_ADD("video", I8275, 19.6608_MHz_XTAL/10)
|
||||
MCFG_I8275_CHARACTER_WIDTH(10)
|
||||
MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(wicat_state, wicat_display_pixels)
|
||||
MCFG_I8275_DRQ_CALLBACK(WRITELINE("videodma",am9517a_device, dreq0_w))
|
||||
MCFG_I8275_IRQ_CALLBACK(WRITELINE(*this, wicat_state,crtc_cb))
|
||||
@ -922,10 +918,10 @@ MACHINE_CONFIG_START(wicat_state::wicat)
|
||||
MCFG_DEFAULT_LAYOUT(layout_wicat)
|
||||
|
||||
/* Winchester Disk Controller (WD1000 + FD1795) */
|
||||
MCFG_DEVICE_ADD("wd1kcpu",N8X300,XTAL(8'000'000))
|
||||
MCFG_DEVICE_ADD("wd1kcpu", N8X300, 8_MHz_XTAL)
|
||||
MCFG_DEVICE_PROGRAM_MAP(wicat_wd1000_mem)
|
||||
MCFG_DEVICE_IO_MAP(wicat_wd1000_io)
|
||||
MCFG_FD1795_ADD("fdc",XTAL(8'000'000))
|
||||
MCFG_FD1795_ADD("fdc", 8_MHz_XTAL)
|
||||
MCFG_FLOPPY_DRIVE_ADD("fdc:0", wicat_floppies, "525qd", floppy_image_device::default_floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_SOUND(true)
|
||||
MCFG_FLOPPY_DRIVE_ADD("fdc:1", wicat_floppies, nullptr, floppy_image_device::default_floppy_formats)
|
||||
|
Loading…
Reference in New Issue
Block a user