// license:BSD-3-Clause // copyright-holders:Curt Coder /*************************************************************************** PROF-180X 07/07/2009 Skeleton driver. ****************************************************************************/ /* TODO: - HD64180 CPU (DMA, MMU, SIO, etc) (Z80180 like) - memory banking - keyboard - floppy - floppy motor off timer - floppy index callback - RTC */ #include "emu.h" #include "cpu/z80/z80.h" #include "machine/ram.h" #include "bus/centronics/ctronics.h" #include "machine/upd765.h" #include "includes/prof180x.h" UINT32 prof180x_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { return 0; } READ8_MEMBER( prof180x_state::read ) { UINT8 data = 0; if (offset < 0x40000) { } else { } /* switch ((m_mm1 << 1) | m_mm0) { case 0: // bank0_r = EPROM, bank0_w = RAM, bank1 = RAM break; case 1: // bank0_r = RAM, bank0_w = RAM, bank1 = RAM break; case 2: // bank0_r = UNMAP, bank0_w = UNMAP, bank1 = RAM break; case 3: // bank0_r = RAM, bank0_w = RAM, bank1 = UNMAP break; } */ return data; } WRITE8_MEMBER( prof180x_state::write ) { if (offset < 0x40000) { } else { } } void prof180x_state::ls259_w(int flag, int value) { switch (flag) { case 0: // C0 m_c0 = value; break; case 1: // C1 m_c1 = value; break; case 2: // C2 m_c2 = value; break; case 3: // MINI break; case 4: // MM0 m_mm0 = value; break; case 5: // RTC break; case 6: // PEPS break; case 7: // MM1 m_mm1 = value; break; } } WRITE8_MEMBER( prof180x_state::flr_w ) { /* bit description 0 VAL 1 FLG0 2 FLG1 3 FLG2 4 5 6 7 */ int val = BIT(data, 0); int flg = (data >> 1) & 0x07; ls259_w(flg, val); } READ8_MEMBER( prof180x_state::status0_r ) { /* bit description 0 BUSY 1 2 3 4 B-E 5 IDX 6 7 MOT */ return 0; } READ8_MEMBER( prof180x_state::status1_r ) { /* bit description 0 FREE 1 2 3 4 J18 5 J19 6 7 TDO */ return 0; } READ8_MEMBER( prof180x_state::status_r ) { return BIT(offset, 8) ? status1_r(space, offset) : status0_r(space, offset); } /* Address Maps */ static ADDRESS_MAP_START( prof180x_mem, AS_PROGRAM, 8, prof180x_state ) AM_RANGE(0x00000, 0x7ffff) AM_READWRITE(read, write) ADDRESS_MAP_END static ADDRESS_MAP_START( prof180x_io , AS_IO, 8, prof180x_state ) AM_RANGE(0x08, 0x08) AM_MIRROR(0xff00) AM_WRITE(flr_w) AM_RANGE(0x09, 0x09) AM_MASK(0xff00) AM_READ(status_r) AM_RANGE(0x0a, 0x0a) AM_MIRROR(0xff00) AM_DEVREADWRITE(FDC9268_TAG, upd765a_device, mdma_r, mdma_w) AM_RANGE(0x0b, 0x0b) AM_MIRROR(0xff00) AM_DEVWRITE("cent_data_out", output_latch_device, write) AM_RANGE(0x0c, 0x0d) AM_MIRROR(0xff00) AM_DEVICE(FDC9268_TAG, upd765a_device, map) ADDRESS_MAP_END /* Input ports */ static INPUT_PORTS_START( prof180x ) INPUT_PORTS_END /* Video */ static SLOT_INTERFACE_START( prof180x_floppies ) SLOT_INTERFACE( "35dd", FLOPPY_35_DD ) SLOT_INTERFACE_END /* static RTC8583_INTERFACE( rtc_intf ) { DEVCB_CPU_INPUT_LINE(HD64180_TAG, INPUT_LINE_INT2) }; */ void prof180x_state::machine_start() { // register for state saving save_item(NAME(m_c0)); save_item(NAME(m_c1)); save_item(NAME(m_c2)); save_item(NAME(m_mm0)); save_item(NAME(m_mm1)); } void prof180x_state::machine_reset() { for (int i = 0; i < 8; i++) { ls259_w(i, 0); } } static MACHINE_CONFIG_START( prof180x, prof180x_state ) /* basic machine hardware */ MCFG_CPU_ADD(HD64180_TAG, Z80, XTAL_9_216MHz) MCFG_CPU_PROGRAM_MAP(prof180x_mem) MCFG_CPU_IO_MAP(prof180x_io) /* video hardware */ MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) MCFG_SCREEN_UPDATE_DRIVER(prof180x_state, screen_update) MCFG_SCREEN_REFRESH_RATE(50) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ MCFG_SCREEN_SIZE(640, 480) MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1) /* devices */ MCFG_UPD765A_ADD(FDC9268_TAG, false, true) MCFG_FLOPPY_DRIVE_ADD(FDC9268_TAG ":0", prof180x_floppies, "35dd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(FDC9268_TAG ":1", prof180x_floppies, "35dd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(FDC9268_TAG ":2", prof180x_floppies, "35dd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(FDC9268_TAG ":3", prof180x_floppies, "35dd", floppy_image_device::default_floppy_formats) //MCFG_RTC8583_ADD(MK3835_TAG, rtc_intf) MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) /* internal ram */ MCFG_RAM_ADD(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("128K") MCFG_RAM_EXTRA_OPTIONS("256K,512K") /* software lists */ MCFG_SOFTWARE_LIST_ADD("flop_list", "prof180") MACHINE_CONFIG_END /* ROM definition */ ROM_START( prof180x ) ROM_REGION( 0x10000, HD64180_TAG, 0 ) ROM_SYSTEM_BIOS( 0, "pmon13", "pmon v1.3" ) ROMX_LOAD( "pmon1_3.z16", 0x00000, 0x04000, CRC(32986688) SHA1(a6229d7e66ef699722ca3d41179fe3f1b75185d4), ROM_BIOS(1) ) ROM_SYSTEM_BIOS( 1, "pmon14", "pmon v1.4" ) ROMX_LOAD( "pmon1_4.z16", 0x00000, 0x04000, CRC(ed03f49f) SHA1(e016f9e0b89ab64c6203e2e46501d0b09f74ee9b), ROM_BIOS(2) ) ROM_SYSTEM_BIOS( 2, "pmon15", "pmon v1.5" ) ROMX_LOAD( "pmon1_5.z16", 0x00000, 0x04000, CRC(f43d185c) SHA1(a7a219b3d48c74602b3116cfcd34e44d6e7bc423), ROM_BIOS(3) ) ROM_SYSTEM_BIOS( 3, "pmon", "pmon" ) ROMX_LOAD( "pmon.z16", 0x00000, 0x04000, CRC(4f3732d7) SHA1(7dc27262db4e0c8f109470253b9364a216909f2c), ROM_BIOS(4) ) ROM_SYSTEM_BIOS( 4, "eboot1", "eboot1" ) ROMX_LOAD( "eboot1.z16", 0x00000, 0x08000, CRC(7a164b3c) SHA1(69367804b5cbc0633e3d7bbbcc256c2c8c9e7aca), ROM_BIOS(5) ) ROM_SYSTEM_BIOS( 5, "eboot2", "eboot2" ) ROMX_LOAD( "eboot2.z16", 0x00000, 0x08000, CRC(0c2d4301) SHA1(f1a4f457e287b19e14d8ccdbc0383f183d8a3efe), ROM_BIOS(6) ) ROM_SYSTEM_BIOS( 6, "epmon1", "epmon1" ) ROMX_LOAD( "epmon1.z16", 0x00000, 0x10000, CRC(27aabfb4) SHA1(41adf038c474596dbf7d387a1a7f33ed86aa7869), ROM_BIOS(7) ) ROM_SYSTEM_BIOS( 7, "epmon2", "epmon2" ) ROMX_LOAD( "epmon2.z16", 0x00000, 0x10000, CRC(3b8a7b59) SHA1(33741f0725e3eaa21c6881c712579b3c1fd30607), ROM_BIOS(8) ) ROM_SYSTEM_BIOS( 8, "epmon3", "epmon3" ) ROMX_LOAD( "epmon3.z16", 0x00000, 0x10000, CRC(51313af1) SHA1(60c293171a1c7cb9a5ff6d681e61894f44fddbd1), ROM_BIOS(9) ) ROM_REGION( 0x157, "plds", 0 ) ROM_LOAD( "pal14l8.z10", 0x000, 0x157, NO_DUMP ) ROM_END ROM_START( prof181x ) ROM_REGION( 0x10000, HD64180_TAG, 0 ) ROM_SYSTEM_BIOS( 0, "pmon13", "pmon v1.3" ) ROMX_LOAD( "pmon1_3.u13", 0x00000, 0x04000, CRC(32986688) SHA1(a6229d7e66ef699722ca3d41179fe3f1b75185d4), ROM_BIOS(1) ) ROM_SYSTEM_BIOS( 1, "pmon14", "pmon v1.4" ) ROMX_LOAD( "pmon1_4.u13", 0x00000, 0x04000, CRC(ed03f49f) SHA1(e016f9e0b89ab64c6203e2e46501d0b09f74ee9b), ROM_BIOS(2) ) ROM_SYSTEM_BIOS( 2, "pmon15", "pmon v1.5" ) ROMX_LOAD( "pmon1_5.u13", 0x00000, 0x04000, CRC(f43d185c) SHA1(a7a219b3d48c74602b3116cfcd34e44d6e7bc423), ROM_BIOS(3) ) ROM_SYSTEM_BIOS( 3, "pmon", "pmon" ) ROMX_LOAD( "pmon.u13", 0x00000, 0x04000, CRC(4f3732d7) SHA1(7dc27262db4e0c8f109470253b9364a216909f2c), ROM_BIOS(4) ) ROM_SYSTEM_BIOS( 4, "eboot1", "eboot1" ) ROMX_LOAD( "eboot1.u13", 0x00000, 0x08000, CRC(7a164b3c) SHA1(69367804b5cbc0633e3d7bbbcc256c2c8c9e7aca), ROM_BIOS(5) ) ROM_SYSTEM_BIOS( 5, "eboot2", "eboot2" ) ROMX_LOAD( "eboot2.u13", 0x00000, 0x08000, CRC(0c2d4301) SHA1(f1a4f457e287b19e14d8ccdbc0383f183d8a3efe), ROM_BIOS(6) ) ROM_SYSTEM_BIOS( 6, "epmon1", "epmon1" ) ROMX_LOAD( "epmon1.u13", 0x00000, 0x10000, CRC(27aabfb4) SHA1(41adf038c474596dbf7d387a1a7f33ed86aa7869), ROM_BIOS(7) ) ROM_SYSTEM_BIOS( 7, "epmon2", "epmon2" ) ROMX_LOAD( "epmon2.u13", 0x00000, 0x10000, CRC(3b8a7b59) SHA1(33741f0725e3eaa21c6881c712579b3c1fd30607), ROM_BIOS(8) ) ROM_SYSTEM_BIOS( 8, "epmon3", "epmon3" ) ROMX_LOAD( "epmon3.u13", 0x00000, 0x10000, CRC(51313af1) SHA1(60c293171a1c7cb9a5ff6d681e61894f44fddbd1), ROM_BIOS(9) ) ROM_REGION( 0x157, "plds", 0 ) // converted from JED files ROM_LOAD( "pal20v8.u14", 0x000, 0x157, CRC(46da52b0) SHA1(c11362223c0d5c57c6ef970e66d674b89d8e7784) ) ROM_LOAD( "pal20v8.u15", 0x000, 0x157, CRC(19fef936) SHA1(579ad23ee3c0b1c64c584383f9c8085c6ce3d094) ) ROM_LOAD( "pal20v8.u19", 0x000, 0x157, CRC(69348c3b) SHA1(6eb8432660eb9b639a95b1973a54dab8b99f10ef) ) ROM_LOAD( "pal20v8.u21", 0x000, 0x157, CRC(6df4e281) SHA1(602fa4637cd9356acc31b2adfb3a084fd5a0bfcb) ) ROM_END /* Driver */ /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ COMP( 1986, prof180x, 0, 0, prof180x, prof180x, driver_device, 0, "Conitec Datensysteme", "PROF-180X", GAME_NOT_WORKING | GAME_NO_SOUND ) COMP( 1992, prof181x, prof180x,0, prof180x, prof180x, driver_device, 0, "Conitec Datensysteme", "PROF-181X", GAME_NOT_WORKING | GAME_NO_SOUND )