void DoSTAIfCan(HDesign& hd) { if (hd.CanDoTiming()) { WRITELINE(""); ALERT("Running STA:"); STA(hd); FindCriticalPaths(hd); PrintTimingReport(hd, hd.cfg.ValueOf("CriticalPaths.countLogReportCriticalPaths", 0)); hd.Plotter->PlotMostCriticalPaths(hd, hd.cfg.ValueOf("CriticalPaths.countPlotCriticalPaths", 0)); } }
void ReportCountNetsWithTypes(HDesign& design) { WRITELINE(""); WRITELINE("Reporting: count nets with type : all, skipped, buffered, removed, Active\n"); WRITELINE(" Nets count all = %d", design.Nets.Count()); WRITELINE(" Nets with active type = %d", design.Nets.Count(NetKind_Active)); WRITELINE(" Nets with skipped type = %d", design.Nets.Count(NetKind_Skipped)); WRITELINE(" Nets with buffered type = %d", design.Nets.Count(NetKind_Buffered)); WRITELINE(" Nets with removed type = %d", design.Nets.Count(NetKind_Removed)); }
void ReportTEPNames(HDesign& design) { if (!design.TimingPoints.IsInitialized()) return; ALERT("REPORTING LIST OF TIMING END POINTS:\n"); HTimingPoint endPointsEnd = design.TimingPoints.LastInternalPoint(); for (HTimingPointWrapper ep = design[design.TimingPoints.TopologicalOrderRoot()]; ep.GoPrevious() != endPointsEnd; ) { WRITELINE("\tTEP: %s", GetCellPinName(design, ep).c_str()); } }
void TimingHelper::PrintNetPinsDetails(HNet net, BufferInfo& binf) { WRITELINE("Net: %s", hd.GetString<HNet::Name>(net).c_str()); AdaptiveRoute(hd, net); CalculateNetDelays<LayersModel_Lumped, SignalModel_Universal>(hd, net); NetInfo ni = NetInfo::Create(hd, net, binf); if (ni.Rd() == 0.0) { WRITELINE("DriverResistance: %.10f", binf.Rb()); WRITELINE("BufferDelay : %.10f", binf.Tb()); } else { WRITELINE("DriverResistance: %.10f", ni.Rd()); } WRITELINE("CellName PinName X Y ObservedC PathDelay"); for(HNet::PinsEnumeratorW pin = hd.Get<HNet::Pins, HNet::PinsEnumeratorW>(net); pin.MoveNext(); ) { HSteinerPointWrapper st = hd[hd.SteinerPoints[pin]]; WRITELINE("%s %s %10.2f %10.2f %12.10f %12.10f", hd.GetString<HCell::Name>(pin.Cell()).c_str(), pin.Name().c_str(), pin.X(), pin.Y(), st.ObservedC(), st.PathDelay()); } }
bool DoRandomPlacementIfRequired(HDesign& hd, const char* cfgOptName) { if (hd.cfg.ValueOf(cfgOptName, false)) { RandomPlacement(hd); WRITELINE(""); if (hd.CanDoTiming()) ALERT("STA after random placement:"); STA(hd); return true; } return false; }
bool DoDetailedPlacementIfRequired(HDPGrid& grid, const char* cfgOptName) { if (grid.Design().cfg.ValueOf(cfgOptName, false)) { DetailedPlacement(grid); WRITELINE(""); if (grid.Design().CanDoTiming()) ALERT("STA after detailed placement:"); STA(grid.Design()); return true; } return false; }
bool DoGlobalPlacementIfRequired(HDesign& hd, const char* cfgOptName) { if (hd.cfg.ValueOf(cfgOptName, false)) { GlobalPlacement(hd, hd.cfg.ValueOf("params.objective")); WRITELINE(""); if (hd.CanDoTiming()) ALERT("STA after global placement:"); STA(hd); return true; } return false; }
OsStatus_t ArchDumpThreadContext( _In_ Context_t *Context) { // Dump general registers WRITELINE("EAX: 0x%" PRIxIN ", EBX 0x%" PRIxIN ", ECX 0x%" PRIxIN ", EDX 0x%" PRIxIN "", Context->Eax, Context->Ebx, Context->Ecx, Context->Edx); // Dump stack registers WRITELINE("ESP 0x%" PRIxIN " (UserESP 0x%" PRIxIN "), EBP 0x%" PRIxIN ", Flags 0x%" PRIxIN "", Context->Esp, Context->UserEsp, Context->Ebp, Context->Eflags); // Dump copy registers WRITELINE("ESI 0x%" PRIxIN ", EDI 0x%" PRIxIN "", Context->Esi, Context->Edi); // Dump segments WRITELINE("CS 0x%" PRIxIN ", DS 0x%" PRIxIN ", GS 0x%" PRIxIN ", ES 0x%" PRIxIN ", FS 0x%" PRIxIN "", Context->Cs, Context->Ds, Context->Gs, Context->Es, Context->Fs); // Dump IRQ information WRITELINE("IRQ 0x%" PRIxIN ", ErrorCode 0x%" PRIxIN ", UserSS 0x%" PRIxIN "", Context->Irq, Context->ErrorCode, Context->UserSs); return OsSuccess; }
bool DoLegalizationIfRequired(HDPGrid& grid, const char* cfgOptName) { if (grid.Design().cfg.ValueOf(cfgOptName, false)) { Legalization(grid); WRITELINE(""); if (grid.Design().CanDoTiming()) { //ALERT("No wire STA:"); //NoWireDelaySTA(grid.Design()); ALERT("STA after legalization:"); STA(grid.Design()); } return true; } return false; }
bool DoLRTimingDrivenPlacementIfRequired(HDesign& hd, const char* cfgOptName) { if (hd.cfg.ValueOf(cfgOptName, false)) { GlobalPlacement(hd, "LR"); WRITELINE(""); if (hd.CanDoTiming()) { //ALERT("No wire STA:"); //NoWireDelaySTA(hd); ALERT("STA after LR placement:"); STA(hd); } return true; } return false; }
MCFG_SCREEN_PALETTE("palette") MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_exprraid) MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", "proms", 256) /* sound hardware */ SPEAKER(config, "mono").front_center(); MCFG_GENERIC_LATCH_8_ADD("soundlatch") MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("slave", INPUT_LINE_NMI)) MCFG_DEVICE_ADD("ym1", YM2203, XTAL(12'000'000) / 8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MCFG_DEVICE_ADD("ym2", YM3526, XTAL(12'000'000) / 4) MCFG_YM3526_IRQ_HANDLER(WRITELINE(*this, exprraid_state, irqhandler)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END MACHINE_CONFIG_START(exprraid_state::exprboot) exprraid(config); MCFG_DEVICE_REPLACE("maincpu", M6502, 1500000) /* 1.5 MHz ??? */ MCFG_DEVICE_PROGRAM_MAP(master_map) MACHINE_CONFIG_END /*************************************************************************** Game driver(s)
m_maincpu->set_addrmap(AS_PROGRAM, &zorba_state::zorba_mem); m_maincpu->set_addrmap(AS_IO, &zorba_state::zorba_io); /* video hardware */ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green()) MCFG_SCREEN_REFRESH_RATE(50) MCFG_SCREEN_UPDATE_DEVICE("crtc", i8275_device, screen_update) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_zorba) MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT(m_palette) /* sound hardware */ SPEAKER(config, "mono").front_center(); BEEP(config, m_beep, 800).add_route(ALL_OUTPUTS, "mono", 1.00); // should be horizontal frequency / 16, so depends on CRTC parameters MCFG_INPUT_MERGER_ANY_HIGH("irq0") MCFG_INPUT_MERGER_OUTPUT_HANDLER(WRITELINE(*this, zorba_state, irq_w<0>)) MCFG_INPUT_MERGER_ANY_HIGH("irq1") MCFG_INPUT_MERGER_OUTPUT_HANDLER(WRITELINE(*this, zorba_state, irq_w<1>)) MCFG_INPUT_MERGER_ANY_HIGH("irq2") MCFG_INPUT_MERGER_OUTPUT_HANDLER(WRITELINE(*this, zorba_state, irq_w<2>)) /* devices */ Z80DMA(config, m_dma, 24_MHz_XTAL / 6); // busack on cpu connects to bai pin m_dma->out_busreq_callback().set(FUNC(zorba_state::busreq_w)); //connects to busreq on cpu m_dma->out_int_callback().set("irq0", FUNC(input_merger_device::in_w<0>)); //ba0 - not connected m_dma->in_mreq_callback().set(FUNC(zorba_state::memory_read_byte)); m_dma->out_mreq_callback().set(FUNC(zorba_state::memory_write_byte)); m_dma->in_iorq_callback().set(FUNC(zorba_state::io_read_byte)); m_dma->out_iorq_callback().set(FUNC(zorba_state::io_write_byte));
MCFG_PALETTE_INIT_OWNER(pk8020_state, pk8020) MCFG_I8255_ADD( "ppi8255_1", pk8020_ppi8255_interface_1 ) MCFG_I8255_ADD( "ppi8255_2", pk8020_ppi8255_interface_2 ) MCFG_I8255_ADD( "ppi8255_3", pk8020_ppi8255_interface_3 ) MCFG_DEVICE_ADD("pit8253", PIT8253, 0) MCFG_PIT8253_CLK0(XTAL_20MHz / 10) MCFG_PIT8253_OUT0_HANDLER(WRITELINE(pk8020_state,pk8020_pit_out0)) MCFG_PIT8253_CLK1(XTAL_20MHz / 10) MCFG_PIT8253_OUT1_HANDLER(WRITELINE(pk8020_state,pk8020_pit_out1)) MCFG_PIT8253_CLK2((XTAL_20MHz / 8) / 164) MCFG_PIT8253_OUT2_HANDLER(DEVWRITELINE("pic8259", pic8259_device, ir5_w)) MCFG_PIC8259_ADD( "pic8259", WRITELINE(pk8020_state,pk8020_pic_set_int_line), VCC, NULL ) MCFG_DEVICE_ADD( "rs232", I8251, 0) MCFG_DEVICE_ADD( "lan", I8251, 0) MCFG_FD1793_ADD( "wd1793", pk8020_wd17xx_interface ) /* audio hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette") MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_CASSETTE_ADD( "cassette", pk8020_cassette_interface ) MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(pk8020_floppy_interface)
ROMX_LOAD("dfs v2.26,1986,acorn.bin", 0x0000, 0x4000, CRC(5ae33e94) SHA1(cf2ebc422a8d24ec6f1a0320520c38a0e704109a), ROM_BIOS(5)) // Advanced Computer Products ROM_SYSTEM_BIOS(5, "acp108", "Advanced 1770 DFS 1.08") ROMX_LOAD("advanced 1770 dfs 1.08,acp.rom", 0x0000, 0x4000, CRC(eb0eaa34) SHA1(d16ba3c8ed5e5ab6af62aad13a8e567b1c3639c2), ROM_BIOS(6)) ROM_SYSTEM_BIOS(6, "acp200", "Advanced 1770 DFS 2.00") ROMX_LOAD("advanced 1770 dfs 2.00,acp.rom", 0x0000, 0x4000, CRC(65c0d170) SHA1(6907806e2b5b904a6f2041c11f8ccbd298d63ab9), ROM_BIOS(7)) ROM_END //------------------------------------------------- // device_add_mconfig - add device configuration //------------------------------------------------- MACHINE_CONFIG_START(bbc_acorn8271_device::device_add_mconfig) MCFG_DEVICE_ADD("i8271", I8271, 0) MCFG_I8271_IRQ_CALLBACK(WRITELINE(*this, bbc_acorn8271_device, fdc_intrq_w)) MCFG_I8271_HDL_CALLBACK(WRITELINE(*this, bbc_acorn8271_device, motor_w)) MCFG_I8271_OPT_CALLBACK(WRITELINE(*this, bbc_acorn8271_device, side_w)) MCFG_FLOPPY_DRIVE_ADD("i8271:0", bbc_floppies_525, "525qd", bbc_acorn8271_device::floppy_formats) MCFG_FLOPPY_DRIVE_SOUND(true) MCFG_FLOPPY_DRIVE_ADD("i8271:1", bbc_floppies_525, "525qd", bbc_acorn8271_device::floppy_formats) MCFG_FLOPPY_DRIVE_SOUND(true) MACHINE_CONFIG_END MACHINE_CONFIG_START(bbc_acorn1770_device::device_add_mconfig) MCFG_WD1770_ADD("wd1770", XTAL(16'000'000) / 2) MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(*this, bbc_acorn1770_device, fdc_intrq_w)) MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(*this, bbc_acorn1770_device, fdc_drq_w)) MCFG_FLOPPY_DRIVE_ADD("wd1770:0", bbc_floppies_525, "525qd", bbc_acorn8271_device::floppy_formats) MCFG_FLOPPY_DRIVE_SOUND(true) MCFG_FLOPPY_DRIVE_ADD("wd1770:1", bbc_floppies_525, "525qd", bbc_acorn8271_device::floppy_formats)
MCFG_CPU_IO_MAP(ibmpcjr_io) MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb) /* On the PC Jr the input for clock 1 seems to be selectable based on bit 4(/5?) written to output port A0h. This is not supported yet. */ MCFG_DEVICE_ADD("pit8253", PIT8253, 0) MCFG_PIT8253_CLK0(XTAL_14_31818MHz/12) MCFG_PIT8253_OUT0_HANDLER(DEVWRITELINE("pic8259", pic8259_device, ir0_w)) MCFG_PIT8253_CLK1(XTAL_14_31818MHz/12) MCFG_PIT8253_CLK2(XTAL_14_31818MHz/12) MCFG_PIT8253_OUT2_HANDLER(WRITELINE(pcjr_state, out2_changed)) MCFG_PIC8259_ADD( "pic8259", WRITELINE(pcjr_state, pic8259_set_int_line), VCC, NULL ) MCFG_DEVICE_ADD("ppi8255", I8255, 0) MCFG_I8255_IN_PORTA_CB(CONSTANT(0xff)) MCFG_I8255_OUT_PORTB_CB(WRITE8(pcjr_state, pcjr_ppi_portb_w)) MCFG_I8255_IN_PORTC_CB(READ8(pcjr_state, pcjr_ppi_portc_r)) MCFG_DEVICE_ADD( "ins8250", INS8250, XTAL_1_8432MHz ) MCFG_INS8250_OUT_TX_CB(DEVWRITELINE("serport", rs232_port_device, write_txd)) MCFG_INS8250_OUT_DTR_CB(DEVWRITELINE("serport", rs232_port_device, write_dtr)) MCFG_INS8250_OUT_RTS_CB(DEVWRITELINE("serport", rs232_port_device, write_rts)) MCFG_INS8250_OUT_INT_CB(DEVWRITELINE("pic8259", pic8259_device, ir3_w)) MCFG_RS232_PORT_ADD( "serport", pcjr_com, nullptr ) MCFG_RS232_RXD_HANDLER(DEVWRITELINE("ins8250", ins8250_uart_device, rx_w)) MCFG_RS232_DCD_HANDLER(DEVWRITELINE("ins8250", ins8250_uart_device, dcd_w))
/* MCFG_DEVICE_ADD(AM2910_TAG, AM2910, XTAL(17'360'000)) MCFG_DEVICE_PROGRAM_MAP(omti10_mem)*/ /* video hardware */ cgc7900_video(config); /* sound hardware */ SPEAKER(config, "mono").front_center(); AY8910(config, AY8910_TAG, XTAL(28'480'000)/16).add_route(ALL_OUTPUTS, "mono", 0.25); /* devices */ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0)); keyboard.set_keyboard_callback(FUNC(cgc7900_state::kbd_put)); MCFG_DEVICE_ADD(MM58167_TAG, MM58167, XTAL(32'768)) MCFG_MM58167_IRQ_CALLBACK(WRITELINE(*this, cgc7900_state, irq<0x0>)) com8116_device &k1135a(COM8116(config, K1135A_TAG, XTAL(5'068'800))); k1135a.fr_handler().set(m_i8251_0, FUNC(i8251_device::write_txc)); k1135a.fr_handler().append(m_i8251_0, FUNC(i8251_device::write_rxc)); k1135a.ft_handler().set(m_i8251_1, FUNC(i8251_device::write_txc)); k1135a.ft_handler().append(m_i8251_1, FUNC(i8251_device::write_rxc)); I8251(config, m_i8251_0, 0); m_i8251_0->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); m_i8251_0->dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); m_i8251_0->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); m_i8251_0->rxrdy_handler().set(FUNC(cgc7900_state::irq<0xf>)); m_i8251_0->txrdy_handler().set(FUNC(cgc7900_state::irq<0x3>)); rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "null_modem"));
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_fromance) MCFG_PALETTE_ADD("palette", 1024) VSYSTEM_GGA(config, m_gga, 14318181 / 2); // clock not verified m_gga->write_cb().set(FUNC(fromance_state::fromance_gga_data_w)); MCFG_VIDEO_START_OVERRIDE(fromance_state,nekkyoku) /* sound hardware */ SPEAKER(config, "mono").front_center(); AY8910(config, "aysnd", 12000000/6).add_route(ALL_OUTPUTS, "mono", 0.15); // type not verified MCFG_DEVICE_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(*this, fromance_state, fromance_adpcm_int)) /* IRQ handler */ MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END MACHINE_CONFIG_START(fromance_state::idolmj) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000) / 2) /* 6.00 Mhz ? */ MCFG_DEVICE_PROGRAM_MAP(fromance_main_map) MCFG_DEVICE_VBLANK_INT_DRIVER("screen", fromance_state, irq0_line_hold) MCFG_DEVICE_ADD("sub", Z80, XTAL(12'000'000) / 2) /* 6.00 Mhz ? */ MCFG_DEVICE_PROGRAM_MAP(fromance_sub_map) MCFG_DEVICE_IO_MAP(idolmj_sub_io_map)
/* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8086, 8000000) MCFG_CPU_PROGRAM_MAP(multi16_map) MCFG_CPU_IO_MAP(multi16_io) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ MCFG_SCREEN_SIZE(640, 200) MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1) MCFG_SCREEN_UPDATE_DRIVER(multi16_state, screen_update_multi16) MCFG_PALETTE_LENGTH(8) /* Devices */ MCFG_MC6845_ADD("crtc", H46505, 16000000/5, mc6845_intf) /* unknown clock, hand tuned to get ~60 fps */ MCFG_PIC8259_ADD( "pic8259", WRITELINE(multi16_state, multi16_set_int_line), GND, NULL ) MACHINE_CONFIG_END /* ROM definition */ ROM_START( multi16 ) ROM_REGION( 0x4000, "ipl", ROMREGION_ERASEFF ) ROM_LOAD( "ipl.rom", 0x0000, 0x4000, CRC(5beb5e94) SHA1(d3b9dc9a08995a0f26af9671893417e795370306)) ROM_END /* Driver */ /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ COMP( 1986, multi16, 0, 0, multi16, multi16, driver_device, 0, "Mitsubishi", "Multi 16", GAME_NOT_WORKING | GAME_NO_SOUND)
/* basic machine hardware */ MCFG_DEVICE_ADD("maincpu",Z80,MASTER_CLOCK/2) //!!! TC0091LVC !!! MCFG_DEVICE_PROGRAM_MAP(dfruit_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", dfruit_state, dfruit_irq_scanline, "screen", 0, 1) //MCFG_MACHINE_START_OVERRIDE(dfruit_state,4enraya) //MCFG_MACHINE_RESET_OVERRIDE(dfruit_state,4enraya) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(dfruit_state, screen_update) MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, dfruit_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dfruit ) MCFG_PALETTE_ADD("palette", 0x100) TC0091LVC(config, m_vdp, 0); m_vdp->set_gfxdecode_tag("gfxdecode"); i8255_device &ppi(I8255A(config, "ppi8255_0")); ppi.in_pa_callback().set_ioport("IN0"); ppi.in_pb_callback().set_ioport("IN1"); ppi.in_pc_callback().set_ioport("IN2"); /* sound hardware */ SPEAKER(config, "mono").front_center();
MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_UPDATE_DRIVER(beathead_state, screen_update) MCFG_SCREEN_SIZE(42*8, 262) MCFG_SCREEN_VISIBLE_AREA(0*8, 42*8-1, 0*8, 30*8-1) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 32768) MCFG_PALETTE_FORMAT(IRRRRRGGGGGBBBBB) MCFG_PALETTE_MEMBITS(16) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_ATARI_JSA_III_ADD("jsa", WRITELINE(atarigen_state, sound_int_write_line)) MCFG_ATARI_JSA_TEST_PORT("IN2", 6) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END /************************************* * * ROM definition(s) * *************************************/ ROM_START( beathead ) ROM_REGION( 0x10000, "jsa:cpu", 0 ) /* 64k for 6502 code */ ROM_LOAD( "bhsnd.bin", 0x00000, 0x10000, CRC(dfd33f02) SHA1(479a4838c89691d5a4654a4cd84b6433a9e86109) )
void BufferingAndReport(HDesign& design) { { ConfigContext ctx(design.cfg.OpenContext("Buffering")); BufferInfo buf = BufferInfo::Create(design); //VanGinneken vg(design); WRITELINE("Buffering Parameters:"); WRITELINE("Rb: %.20f kOhm", buf.Rb()); WRITELINE("Cb: %.20f pF", buf.Cb()); WRITELINE("Tb: %.20f ns", buf.Tb()); WRITELINE("r: %.20f kOhm/nm", design.RoutingLayers.Physics.RPerDist); WRITELINE("c: %.20f pf/nm", design.RoutingLayers.Physics.LinearC); WRITELINE("Lbuf: %.20f", buf.Lbuf()); WRITELINE("Dbuf: %.20f", buf.Dbuf()); int buffers = 0; int vgbuffers = 0; string h1 = "fanout ", b1 = "%6d "; string h2 = "vgbufs ", b2 = "%6d "; string h3 = "kopt ", b3 = "%4d "; string h4 = "koptd ", b4 = "%5.3f "; string h5 = " knaked ", b5 = "%9.5f "; string h6 = " T(kopt) ", b6 = "%10.8f "; string h7 = " T(koptd) ", b7 = "%10.8f "; string hh = " vgSlack ", bb = "%10.8f "; string h8 = " T(0) ", b8 = "%10.8f "; string h9 = " maxSlack ", b9 = "%10.8f "; string f1 = " HPWL ", c1 = "%10.2f "; string f2 = " WL ", c2 = "%10.2f "; string f3 = " Rd ", c3 = "%10.8f "; string f4 = " Cs ", c4 = "%10.8f "; string f5 = "OO ", c5 = "%2d "; string f6 = "OM ", c6 = "%2d "; string f7 = "OE ", c7 = "%2d "; string ff = " Name", cc = "%10s"; string header = h1 + h2 + h3 + h4 + h5 + h6 + h7 + h8 + hh + h9 + f1 + f2 + f3 + f4 + f5 + f6 + f7 + ff; string bodyer = b1 + b2 + b3 + b4 + b5 + b6 + b7 + b8 + bb + b9 + c1 + c2 + c4 + c4 + c5 + c6 + c7 + cc; WRITELINE(header.c_str()); for(HNets::ActiveNetsEnumeratorW net = design.Nets.GetActiveNetsEnumeratorW(); net.MoveNext(); ) { NetInfo n = NetInfo::Create(design, net, buf); buffers += n.KoptInt(); //vg.__DriverResistance = n.Rd(); int vgbufs = 0;//vg.InsertBuffers(net); vgbuffers += vgbufs; double bufferedDelay = TimingHelper(design).GetBufferedNetMaxDelay(net, n, buf); WRITELINE(bodyer.c_str() , n.Fanout() //h1 , vgbufs //h2 , n.KoptInt() //h3 , n.Kopt() //h4 , n.KoptNaked() //h5 , n.KoptDelay() //h6 , n.OptimalDelay() //h7 , n.OttenDelay() //h8 , bufferedDelay //hh , n.MaxRealDelay() //h9 , n.HPWL() //f1 , n.WL() //f2 , n.Rd() //f3 , n.Cs() //f4 , n.IsOttenApplicable() //f5 , n.IsModifiedOttenApplicable() //f6 , n.IsOttenApplicableExact() //f7 , n.Name().c_str() //ff ); //if ((n.IsOttenApplicable() || n.IsModifiedOttenApplicable())) //{ //WRITELINE("%3d %3d %.5f %.5f %.5f %.5f %.5f %.5f %d %.5f %d", //n.Fanout(), n.KoptInt(), n.Kopt(), //n.KoptDelay(), n.OptimalDelay(), n.OttenDelay(), n.MaxRealDelay(), n.L(), n.IsOttenApplicable(), n.X2opt(), nets); //} } WRITELINE("Inserted %d buffers", buffers); WRITELINE("VanGinneken Inserted %d buffers", vgbuffers); } }
DEVCB_NULL }; //------------------------------------------------- // MACHINE_DRIVER( c1570 ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( c1570 ) MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_16MHz/16) MCFG_CPU_PROGRAM_MAP(c1571_mem) MCFG_QUANTUM_PERFECT_CPU(M6502_TAG) MCFG_VIA6522_ADD(M6522_0_TAG, XTAL_16MHz/16, via0_intf) MCFG_VIA6522_ADD(M6522_1_TAG, XTAL_16MHz/16, via1_intf) MCFG_MOS6526_ADD(M6526_TAG, XTAL_16MHz/16, 0, WRITELINE(c1571_device, cia_irq_w)) MCFG_MOS6526_SERIAL_CALLBACKS(WRITELINE(c1571_device, cia_cnt_w), WRITELINE(c1571_device, cia_sp_w)) MCFG_MOS6526_PORT_B_CALLBACKS(READ8(c1571_device, cia_pb_r), WRITE8(c1571_device, cia_pb_w), WRITELINE(c1571_device, cia_pc_w)) MCFG_WD1770x_ADD(WD1770_TAG, XTAL_16MHz/2) MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1570_floppy_interface) //MCFG_FLOPPY_DRIVE_ADD(WD1770_TAG":0", c1570_floppies, "525ssdd", 0, c1571_device::floppy_formats) MCFG_64H156_ADD(C64H156_TAG, XTAL_16MHz, ga_intf) MACHINE_CONFIG_END //------------------------------------------------- // machine_config_additions - device-specific // machine configurations //-------------------------------------------------
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(wd7600_device, dma1_dack3_w)) MCFG_DEVICE_ADD("dma2", AM9517A, 0) MCFG_I8237_OUT_HREQ_CB(WRITELINE(wd7600_device, dma2_hreq_w)) MCFG_I8237_IN_MEMR_CB(READ8(wd7600_device, dma_read_word)) MCFG_I8237_OUT_MEMW_CB(WRITE8(wd7600_device, dma_write_word)) MCFG_I8237_IN_IOR_1_CB(READ8(wd7600_device, dma2_ior1_r)) MCFG_I8237_IN_IOR_2_CB(READ8(wd7600_device, dma2_ior2_r)) MCFG_I8237_IN_IOR_3_CB(READ8(wd7600_device, dma2_ior3_r)) MCFG_I8237_OUT_IOW_1_CB(WRITE8(wd7600_device, dma2_iow1_w)) MCFG_I8237_OUT_IOW_2_CB(WRITE8(wd7600_device, dma2_iow2_w)) MCFG_I8237_OUT_IOW_3_CB(WRITE8(wd7600_device, dma2_iow3_w)) MCFG_I8237_OUT_DACK_0_CB(WRITELINE(wd7600_device, dma2_dack0_w)) MCFG_I8237_OUT_DACK_1_CB(WRITELINE(wd7600_device, dma2_dack1_w)) MCFG_I8237_OUT_DACK_2_CB(WRITELINE(wd7600_device, dma2_dack2_w)) MCFG_I8237_OUT_DACK_3_CB(WRITELINE(wd7600_device, dma2_dack3_w)) MCFG_PIC8259_ADD("intc1", WRITELINE(wd7600_device, pic1_int_w), VCC, READ8(wd7600_device, pic1_slave_ack_r)) MCFG_PIC8259_ADD("intc2", DEVWRITELINE("intc1", pic8259_device, ir2_w), GND, NULL) MCFG_DEVICE_ADD("ctc", PIT8254, 0) MCFG_PIT8253_CLK0(XTAL_14_31818MHz / 12) MCFG_PIT8253_OUT0_HANDLER(DEVWRITELINE("intc1", pic8259_device, ir0_w)) MCFG_PIT8253_CLK1(XTAL_14_31818MHz / 12) MCFG_PIT8253_OUT1_HANDLER(WRITELINE(wd7600_device, ctc_out1_w)) MCFG_PIT8253_CLK2(XTAL_14_31818MHz / 12) MCFG_PIT8253_OUT2_HANDLER(WRITELINE(wd7600_device, ctc_out2_w)) MCFG_DS12885_ADD("rtc") MCFG_MC146818_IRQ_HANDLER(WRITELINE(wd7600_device, rtc_irq_w)) MCFG_MC146818_CENTURY_INDEX(0x32) MACHINE_CONFIG_END
//************************************************************************** // MACHINE FRAGMENTS //************************************************************************** // Fully populated JSA-I, not used by anyone MACHINE_CONFIG_FRAGMENT( jsa_i_config ) // basic machine hardware MCFG_CPU_ADD("cpu", M6502, JSA_MASTER_CLOCK/2) MCFG_CPU_PROGRAM_MAP(atarijsa1_map) MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, (double)JSA_MASTER_CLOCK/4/16/16/14) // sound hardware MCFG_ATARI_SOUND_COMM_ADD("soundcomm", "cpu", WRITELINE(atari_jsa_base_device, main_int_write_line)) MCFG_YM2151_ADD("ym2151", JSA_MASTER_CLOCK) MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("soundcomm", atari_sound_comm_device, ym2151_irq_gen)) MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(atari_jsa_base_device, ym2151_port_w)) MCFG_MIXER_ROUTE(0, DEVICE_SELF_OWNER, 0.60, 0) MCFG_MIXER_ROUTE(1, DEVICE_SELF_OWNER, 0.60, 1) MCFG_POKEY_ADD("pokey", JSA_MASTER_CLOCK/2) MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.40, 0) MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.40, 1) MCFG_SOUND_ADD("tms", TMS5220C, JSA_MASTER_CLOCK*2/11) // potentially JSA_MASTER_CLOCK/9 as well MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 1.0, 0) MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 1.0, 1) MACHINE_CONFIG_END
MCFG_DEVICE_IO_MAP(tim100_io) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_UPDATE_DEVICE("crtc", i8276_device, screen_update) MCFG_SCREEN_REFRESH_RATE(50) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ MCFG_SCREEN_SIZE(600, 352) MCFG_SCREEN_VISIBLE_AREA(0, 40*12-1, 0, 16*16-1) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tim100 ) MCFG_DEVICE_ADD("crtc", I8276, XTAL(4'915'200)) MCFG_I8275_CHARACTER_WIDTH(12) MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(tim100_state, crtc_display_pixels) MCFG_I8275_DRQ_CALLBACK(WRITELINE(*this, tim100_state, drq_w)) MCFG_I8275_IRQ_CALLBACK(WRITELINE(*this, tim100_state, irq_w)) MCFG_VIDEO_SET_SCREEN("screen") MCFG_PALETTE_ADD("palette", 3) i8251_device &uart_u17(I8251(config, "uart_u17", 0)); uart_u17.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); uart_u17.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); uart_u17.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "keyboard")); rs232.rxd_handler().set("uart_u17", FUNC(i8251_device::write_rxd)); rs232.dsr_handler().set("uart_u17", FUNC(i8251_device::write_dsr)); rs232.cts_handler().set("uart_u17", FUNC(i8251_device::write_cts)); rs232.set_option_device_input_defaults("keyboard", DEVICE_INPUT_DEFAULTS_NAME(tim100));
MC146818(config, m_rtc, XTAL(32'768)); m_rtc->irq().set("ioga", FUNC(dec_ioga_device::rtc_irq_w)); m_rtc->set_binary(true); SCC85C30(config, m_scc0, XTAL(14'745'600)/2); m_scc0->out_int_callback().set("ioga", FUNC(dec_ioga_device::scc0_irq_w)); m_scc0->out_txda_callback().set("rs232a", FUNC(rs232_port_device::write_txd)); m_scc0->out_txdb_callback().set("rs232b", FUNC(rs232_port_device::write_txd)); SCC85C30(config, m_scc1, XTAL(14'745'600)/2); m_scc1->out_int_callback().set("ioga", FUNC(dec_ioga_device::scc1_irq_w)); m_scc1->out_txdb_callback().set("lk201", FUNC(lk201_device::rx_w)); MCFG_DEVICE_ADD("lk201", LK201, 0) MCFG_LK201_TX_HANDLER(WRITELINE("scc1", z80scc_device, rxb_w)) rs232_port_device &rs232a(RS232_PORT(config, "rs232a", default_rs232_devices, nullptr)); rs232a.rxd_handler().set(m_scc0, FUNC(z80scc_device::rxa_w)); rs232a.dcd_handler().set(m_scc0, FUNC(z80scc_device::dcda_w)); rs232a.cts_handler().set(m_scc0, FUNC(z80scc_device::ctsa_w)); rs232_port_device &rs232b(RS232_PORT(config, "rs232b", default_rs232_devices, nullptr)); rs232b.rxd_handler().set(m_scc0, FUNC(z80scc_device::rxb_w)); rs232b.dcd_handler().set(m_scc0, FUNC(z80scc_device::dcdb_w)); rs232b.cts_handler().set(m_scc0, FUNC(z80scc_device::ctsb_w)); MCFG_NSCSI_BUS_ADD("scsibus") MCFG_NSCSI_ADD("scsibus:0", dec_scsi_devices, "harddisk", false) MCFG_NSCSI_ADD("scsibus:1", dec_scsi_devices, "cdrom", false) MCFG_NSCSI_ADD("scsibus:2", dec_scsi_devices, nullptr, false)
MCFG_CPU_PROGRAM_MAP(extra_map) MCFG_MACHINE_START_OVERRIDE(thunderj_state,thunderj) MCFG_MACHINE_RESET_OVERRIDE(thunderj_state,thunderj) MCFG_ATARI_EEPROM_2816_ADD("eeprom") /* perfect synchronization due to shared RAM */ MCFG_QUANTUM_PERFECT_CPU("maincpu") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_GFXDECODE(thunderj) MCFG_PALETTE_LENGTH(2048) MCFG_ATARI_VAD_ADD("vad", "screen", WRITELINE(atarigen_state, scanline_int_write_line)) MCFG_ATARI_VAD_PLAYFIELD(thunderj_state, get_playfield_tile_info) MCFG_ATARI_VAD_PLAYFIELD2(thunderj_state, get_playfield2_tile_info) MCFG_ATARI_VAD_ALPHA(thunderj_state, get_alpha_tile_info) MCFG_ATARI_VAD_MOB(thunderj_state::s_mob_config) MCFG_SCREEN_ADD("screen", RASTER) /* note: these parameters are from published specs, not derived */ /* the board uses a VAD chip to generate video signals */ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240) MCFG_SCREEN_UPDATE_DRIVER(thunderj_state, screen_update_thunderj) MCFG_VIDEO_START_OVERRIDE(thunderj_state,thunderj) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_PALETTE_ADD_MONOCHROME("palette") /* sound hardware */ SPEAKER(config, "mono").front_center(); MCFG_DEVICE_ADD("beeper", BEEP, 950) /* piezo-device needs to be measured */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) /* devices */ MCFG_QUICKLOAD_ADD("quickload", kaypro_state, kaypro, "com,cpm", 3) kaypro_10_keyboard_device &kbd(KAYPRO_10_KEYBOARD(config, "kbd")); kbd.rxd_cb().set("sio", FUNC(z80sio_device::rxb_w)); kbd.rxd_cb().append("sio", FUNC(z80sio_device::syncb_w)); MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, kaypro_state, write_centronics_busy)) MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") rs232_port_device &serial(RS232_PORT(config, "serial", default_rs232_devices, nullptr)); serial.rxd_handler().set("sio", FUNC(z80sio_device::rxa_w)); serial.rxd_handler().append("sio", FUNC(z80sio_device::synca_w)); // TODO: confirm this is connected serial.cts_handler().set("sio", FUNC(z80sio_device::ctsa_w)); serial.dcd_handler().set("sio", FUNC(z80sio_device::dcda_w)); com8116_device &brg(COM8116(config, "brg", XTAL(5'068'800))); // WD1943, SMC8116 brg.ft_handler().set("sio", FUNC(z80sio_device::rxca_w)); brg.ft_handler().append("sio", FUNC(z80sio_device::txca_w)); brg.fr_handler().set("sio", FUNC(z80sio_device::rxtxcb_w)); Z80PIO(config, m_pio_g, 20_MHz_XTAL / 8);
static MACHINE_CONFIG_START( relief, relief_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2) MCFG_CPU_PROGRAM_MAP(main_map) MCFG_MACHINE_RESET_OVERRIDE(relief_state,relief) MCFG_ATARI_EEPROM_2816_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_GFXDECODE(relief) MCFG_PALETTE_LENGTH(2048) MCFG_ATARI_VAD_ADD("vad", "screen", WRITELINE(atarigen_state, scanline_int_write_line)) MCFG_ATARI_VAD_PLAYFIELD(relief_state, get_playfield_tile_info) MCFG_ATARI_VAD_PLAYFIELD2(relief_state, get_playfield2_tile_info) MCFG_ATARI_VAD_MOB(relief_state::s_mob_config) MCFG_SCREEN_ADD("screen", RASTER) /* note: these parameters are from published specs, not derived */ /* the board uses a VAD chip to generate video signals */ MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240) MCFG_SCREEN_UPDATE_DRIVER(relief_state, screen_update_relief) MCFG_VIDEO_START_OVERRIDE(relief_state,relief) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono")
ROM_REGION(0x4000, "dfs_rom", 0) ROM_DEFAULT_BIOS("ddos346") ROM_SYSTEM_BIOS(0, "ddos345", "Opus DDOS 3.45") ROMX_LOAD("opus-ddos345.rom", 0x0000, 0x4000, CRC(c0163b95) SHA1(1c5a68e08abbb7ffe663151c59088f750d2287a9), ROM_BIOS(1)) ROM_SYSTEM_BIOS(1, "ddos346", "Opus DDOS 3.46") ROMX_LOAD("opus-ddos346.rom", 0x0000, 0x4000, CRC(bf9c35cf) SHA1(a1ad3e9acbd15400e7da1e50bc6673835cde1fe7), ROM_BIOS(2)) ROM_END //------------------------------------------------- // device_add_mconfig - add device configuration //------------------------------------------------- MACHINE_CONFIG_START(bbc_opus8272_device::device_add_mconfig) MCFG_I8272A_ADD("i8272", true) MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, bbc_opus8272_device, fdc_intrq_w)) MCFG_FLOPPY_DRIVE_ADD("i8272:0", bbc_floppies_525, "525qd", bbc_opusfdc_device::floppy_formats) MCFG_FLOPPY_DRIVE_SOUND(true) MCFG_FLOPPY_DRIVE_ADD("i8272:1", bbc_floppies_525, "525qd", bbc_opusfdc_device::floppy_formats) MCFG_FLOPPY_DRIVE_SOUND(true) MACHINE_CONFIG_END MACHINE_CONFIG_START(bbc_opus2791_device::device_add_mconfig) MCFG_WD2791_ADD("fdc", XTAL(16'000'000) / 16) MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(*this, bbc_opusfdc_device, fdc_drq_w)) MCFG_WD_FDC_HLD_CALLBACK(WRITELINE(*this, bbc_opusfdc_device, motor_w)) MCFG_FLOPPY_DRIVE_ADD("fdc:0", bbc_floppies_525, "525qd", bbc_opusfdc_device::floppy_formats) MCFG_FLOPPY_DRIVE_SOUND(true) MCFG_FLOPPY_DRIVE_ADD("fdc:1", bbc_floppies_525, "525qd", bbc_opusfdc_device::floppy_formats) MCFG_FLOPPY_DRIVE_SOUND(true) MACHINE_CONFIG_END