diff options
Diffstat (limited to 'src/mame/apple/lisa.cpp')
| -rw-r--r-- | src/mame/apple/lisa.cpp | 81 |
1 files changed, 40 insertions, 41 deletions
diff --git a/src/mame/apple/lisa.cpp b/src/mame/apple/lisa.cpp index 537608dc6e2..fe59127cb80 100644 --- a/src/mame/apple/lisa.cpp +++ b/src/mame/apple/lisa.cpp @@ -28,36 +28,36 @@ void lisa_state::lisa_map(address_map &map) { - map(0x000000, 0xffffff).rw(FUNC(lisa_state::lisa_r), FUNC(lisa_state::lisa_w)); /* no fixed map, we use an MMU */ + map(0x000000, 0xffffff).rw(FUNC(lisa_state::lisa_r), FUNC(lisa_state::lisa_w)); // no fixed map, we use an MMU } void lisa_state::lisa_fdc_map(address_map &map) { map.global_mask(0x1fff); // only 8k of address space - map(0x0000, 0x03ff).ram().share("fdc_ram"); /* RAM (shared with 68000) */ - map(0x0400, 0x07ff).rw(FUNC(lisa_state::lisa_fdc_io_r), FUNC(lisa_state::lisa_fdc_io_w)); /* disk controller (IWM and TTL logic) */ + map(0x0000, 0x03ff).ram().share("fdc_ram"); // RAM (shared with 68000) + map(0x0400, 0x07ff).rw(FUNC(lisa_state::lisa_fdc_io_r), FUNC(lisa_state::lisa_fdc_io_w)); // disk controller (IWM and TTL logic) map(0x0800, 0x0fff).noprw(); - map(0x1000, 0x1fff).rom().region("fdccpu", 0); /* ROM */ + map(0x1000, 0x1fff).rom().region("fdccpu", 0); // ROM } void lisa_state::lisa210_fdc_map(address_map &map) { map.global_mask(0x1fff); // only 8k of address space - map(0x0000, 0x03ff).ram().share("fdc_ram"); /* RAM (shared with 68000) */ - map(0x0400, 0x07ff).noprw(); /* nothing, or RAM wrap-around ??? */ - map(0x0800, 0x0bff).rw(FUNC(lisa_state::lisa_fdc_io_r), FUNC(lisa_state::lisa_fdc_io_w)); /* disk controller (IWM and TTL logic) */ - map(0x0c00, 0x0fff).noprw(); /* nothing, or IO port wrap-around ??? */ - map(0x1000, 0x1fff).rom().region("fdccpu", 0); /* ROM */ + map(0x0000, 0x03ff).ram().share("fdc_ram"); // RAM (shared with 68000) + map(0x0400, 0x07ff).noprw(); // nothing, or RAM wrap-around ??? + map(0x0800, 0x0bff).rw(FUNC(lisa_state::lisa_fdc_io_r), FUNC(lisa_state::lisa_fdc_io_w)); // disk controller (IWM and TTL logic) + map(0x0c00, 0x0fff).noprw(); // nothing, or IO port wrap-around ??? + map(0x1000, 0x1fff).rom().region("fdccpu", 0); // ROM } /*************************************************************************** MACHINE DRIVER ***************************************************************************/ -/* Lisa1 and Lisa 2 machine */ +// Lisa1 and Lisa 2 machine void lisa_state::lisa(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware M68000(config, m_maincpu, 20.37504_MHz_XTAL / 4); // CPUCK is nominally 5 MHz m_maincpu->set_addrmap(AS_PROGRAM, &lisa_state::lisa_map); m_maincpu->set_vblank_int("screen", FUNC(lisa_state::lisa_interrupt)); @@ -72,7 +72,7 @@ void lisa_state::lisa(machine_config &config) kbcop.read_si().set_constant(0); kbcop.read_g().set_constant(15); - M6504(config, m_fdc_cpu, 2000000); /* 16.000 MHz / 8 in when DIS asserted, 16.000 MHz / 9 otherwise (?) */ + M6504(config, m_fdc_cpu, 2000000); // 16.000 MHz / 8 in when DIS asserted, 16.000 MHz / 9 otherwise (?) m_fdc_cpu->set_addrmap(AS_PROGRAM, &lisa_state::lisa_fdc_map); config.set_maximum_quantum(attotime::from_hz(60)); @@ -95,16 +95,16 @@ void lisa_state::lisa(machine_config &config) PALETTE(config, m_palette, palette_device::MONOCHROME); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); m_speaker->add_route(ALL_OUTPUTS, "mono", 1.00); - /* nvram */ + // NVRAM NVRAM(config, m_nvram); m_nvram->set_custom_handler(FUNC(lisa_state::nvram_init)); - /* devices */ + // devices IWM(config, m_fdc, 8_MHz_XTAL); // m_iwm->phases_cb().set(FUNC(mac128_state::phases_w)); // m_iwm->devsel_cb().set(FUNC(mac128_state::devsel_w)); @@ -112,10 +112,10 @@ void lisa_state::lisa(machine_config &config) applefdintf_device::add_35(config, m_floppy[0]); applefdintf_device::add_35(config, m_floppy[1]); - /* software lists */ + // software lists SOFTWARE_LIST(config, "disk_list").set_original("lisa"); - /* via */ + // via MOS6522(config, m_via0, 20.37504_MHz_XTAL / 40); // CPU E clock (nominally 500 kHz) m_via0->writepa_handler().set(FUNC(lisa_state::COPS_via_out_a)); m_via0->writepb_handler().set(FUNC(lisa_state::COPS_via_out_b)); @@ -133,7 +133,7 @@ void lisa_state::lisa210(machine_config &config) lisa(config); m_fdc_cpu->set_addrmap(AS_PROGRAM, &lisa_state::lisa210_fdc_map); - /* via */ + // via m_via0->set_clock(1250000); m_via1->set_clock(1250000); } @@ -151,13 +151,13 @@ Small note about natural keyboard support: currently, - "Enter" (different from Return) is mapped to 'F2' */ static INPUT_PORTS_START( lisa ) - PORT_START("MOUSE_X") /* Mouse - X AXIS */ + PORT_START("MOUSE_X") // Mouse - X AXIS PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(0) PORT_PLAYER(1) - PORT_START("MOUSE_Y") /* Mouse - Y AXIS */ + PORT_START("MOUSE_Y") // Mouse - Y AXIS PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(0) PORT_PLAYER(1) - /* pseudo-input ports with keyboard layout (based on pictures) */ + // pseudo-input ports with keyboard layout (based on pictures) PORT_START("LINE0") PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_UNUSED) PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("Mouse Button") @@ -191,10 +191,10 @@ static INPUT_PORTS_START( lisa ) PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+') PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|') // this one would be 2nd row, 3rd key from 'P' #if 1 - /* US layout */ + // US layout PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_UNUSED) #else - /* European layout */ + // European layout PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("~ `") PORT_CODE(KEYCODE_BACKSLASH2) /* 2008-05 FP: Differences in European Layout (based on a couple of pictures found in the web): - at KEYCODE_ESC, "` ~" is replaced by "? #" @@ -274,20 +274,20 @@ INPUT_PORTS_END /* Note we're missing a whole bunch of lisa bootrom revisions; based on http://www.cs.dartmouth.edu/~woz/bootrom.pdf : ?A?(10/12/82) ?B?(11/19/82) ?C?(1/28/83) D(5/12/83) 3B(9/8/83) E(10/20/83) F(12/21/83) G(2/8/84) and H(2/24/84) are known to exist. Earlier prototypes existed as well. Only F and H are dumped. */ /* Based on http://www.cs.dartmouth.edu/~woz/bootrom.pdf and other information, at least the following systems existed: - * Lisa: two 890K twiggy drives, old MB (slow 500khz-clock parallel port via), old i/o board w/io40 disk rom, supports profile hdd, all bootrom revs (practically speaking, it only appeared with bootroms A, B, C, D, E or F) - * Lisa2 (aka Lisa2/5): one 400K SSDD drive, old MB (slow 500khz-clock parallel port via), old i/o board w/ioa8 disk rom, supports profile hdd, bootrom revs "3B", E, F, G, H + * Lisa: two 890K twiggy drives, old MB (slow 500khz-clock parallel port via), old I/O board w/io40 disk ROM, supports profile HDD, all bootrom revs (practically speaking, it only appeared with bootroms A, B, C, D, E or F) + * Lisa2 (aka Lisa2/5): one 400K SSDD drive, old MB (slow 500khz-clock parallel port via), old I/O board w/ioa8 disk ROM, supports profile HDD, bootrom revs "3B", E, F, G, H * Lisa2/10: one 400K SSDD drive, new MB (fast 1.25MHz-clock parallel port via), new i/o board w/ioa8 disk rom, internal widget 10mb drive (no profile hdd ports), bootrom revs F, G, H - * MacXL: one 400K SSDD drive, new MB (fast 1.25MHz-clock parallel port via), new i/o board w/io88 disk rom, internal widget 10mb drive (no profile hdd ports), bootrom rev 3A, different screen aspect, no serial number in video state rom so lisa office would not run + * MacXL: one 400K SSDD drive, new MB (fast 1.25MHz-clock parallel port via), new I/O board w/io88 disk rom, internal widget 10mb drive (no profile hdd ports), bootrom rev 3A, different screen aspect, no serial number in video state rom so lisa office would not run * Sun-remanufactured MacXL: one 800K DSDD drive, new MB (fast 1.25MHz-clock parallel port via), sun-made custom disk rom (3 revisions exist), internal custom 10mb,20mb, or 40mb drive (?no profile hdd ports?), bootrom rev 3A, different screen aspect, no serial number in video state rom so lisa apps would not run */ - /* the old i/o board has a battery pack on it which often leaks and destroys the board, and has a socket for an amd 2915 math co-procesor; the new i/o board lacks the battery pack and the socket for the coprocessor, and integrates some of the function of the old twiggy-to-400k drive convertor board (which all lisa2/5s had) on it, requiring a mod to be done to the old convertor if used with a new i/o board.*/ + /* the old I/O board has a battery pack on it which often leaks and destroys the board, and has a socket for an amd 2915 math co-procesor; the new I/O board lacks the battery pack and the socket for the coprocessor, and integrates some of the function of the old twiggy-to-400k drive convertor board (which all lisa2/5s had) on it, requiring a mod to be done to the old convertor if used with a new I/O board.*/ /* Twiggy disk format notes: twiggy disks seem to have wide '48tpi' heads, but cram 62.5tpi on the media by closely spacing the tracks! Twiggy media is DSHD-grade (needing strong magnetic field to set due to high data rate, see http://www.folklore.org/StoryView.py?project=Macintosh&story=Hide_Under_This_Desk.txt). The twiggy format is *PROBABLY* GCR encoding similar to apple2 and mac800k. The disks are 5.25" disks with TWO holes for the drive heads on both sides of the media, and the write protect notch in an unusual place (the index hole is in its normal position, though). By using variable motor speed similar to the later apple 3.5" disks, double sided disks, and tight track spacing, 871,424 bytes are stored per disk. see http://www.brouhaha.com/~eric/retrocomputing/lisa/twiggy.html The drives were notoriously unreliable and were replaced by a single SSDD Sony-made varialble speed 400k drive in the lisa2, which was also used on the original macintosh. */ /* which systems used the 341-0193-A parallel interface card rom? */ -ROM_START( lisa ) /* with twiggy drives, io40 i/o rom; technically any of the bootroms will work on this. */ - ROM_REGION16_BE(0x204000,"maincpu",0) /* 68k rom and ram */ +ROM_START( lisa ) // with twiggy drives, io40 I/O ROM; technically any of the bootroms will work on this. + ROM_REGION16_BE(0x204000,"maincpu",0) // 68k ROM and RAM ROM_DEFAULT_BIOS( "revh" ) ROM_SYSTEM_BIOS( 0, "revh", "LISA Bootrom Rev H (2/24/84)") @@ -341,8 +341,8 @@ ROM_START( lisa ) /* with twiggy drives, io40 i/o rom; technically any of the bo ROM_LOAD("vidstate.rom", 0x00, 0x100, CRC(75904783) SHA1(3b0023bd90f2ca1be0b099160a566b044856885d)) ROM_END -ROM_START( lisa2 ) /* internal apple codename was 'pepsi'; has one SSDD 400K drive, ioa8 i/o rom */ - ROM_REGION16_BE(0x204000,"maincpu",0) /* 68k rom and ram */ +ROM_START( lisa2 ) // internal Apple codename was 'pepsi'; has one SSDD 400K drive, ioa8 I/O ROM + ROM_REGION16_BE(0x204000,"maincpu",0) // 68k ROM and RAM ROM_DEFAULT_BIOS( "revh" ) ROM_SYSTEM_BIOS( 0, "revh", "LISA Bootrom Rev H (2/24/84)") @@ -383,8 +383,8 @@ ROM_START( lisa2 ) /* internal apple codename was 'pepsi'; has one SSDD 400K dri ROM_LOAD("vidstate.rom", 0x00, 0x100, CRC(75904783) SHA1(3b0023bd90f2ca1be0b099160a566b044856885d)) ROM_END -ROM_START( lisa210 ) /* newer motherboard and i/o board; has io88 i/o rom, built in widget hdd */ - ROM_REGION16_BE(0x204000,"maincpu", 0) /* 68k rom and ram */ +ROM_START( lisa210 ) // newer motherboard and I/O board; has io88 I/O ROM, built in widget HDD + ROM_REGION16_BE(0x204000,"maincpu", 0) // 68k ROM and RAM ROM_DEFAULT_BIOS( "revh" ) ROM_SYSTEM_BIOS(0, "revh", "LISA Bootrom Rev H (2/24/84)") ROMX_LOAD("341-0175-h", 0x000000, 0x2000, CRC(adfd4516) SHA1(97a89ce1218b8aa38f69f92f6f363f435c887914), ROM_SKIP(1) | ROM_BIOS(0)) // 341-0175-H LISA Bootrom Rev H (2/24/84) (High) @@ -414,7 +414,7 @@ ROM_START( lisa210 ) /* newer motherboard and i/o board; has io88 i/o rom, built #endif ROM_REGION(0x4000,"widget", 0) // Widget HDD controller - ROM_LOAD("341-0288-a", 0x0000, 0x800, CRC(a26ef1c6) SHA1(5aaeb6ff7f7d4f7ce7c70402f75e82533635dda4)) // 341-0288-A z8 MCU piggyback ROM + ROM_LOAD("341-0288-a", 0x0000, 0x0800, CRC(a26ef1c6) SHA1(5aaeb6ff7f7d4f7ce7c70402f75e82533635dda4)) // 341-0288-A z8 MCU piggyback ROM ROM_LOAD("341-0289-d", 0x2000, 0x2000, CRC(25e86e95) SHA1(72a346c2074d2256adde491b930023ebdcb5f51a)) // 341-0289-D external rom on widget board ROM_REGION(0x100,"gfx1", 0) // video ROM (includes S/N) @@ -422,9 +422,9 @@ ROM_START( lisa210 ) /* newer motherboard and i/o board; has io88 i/o rom, built ROM_END ROM_START( macxl ) - ROM_REGION16_BE(0x204000,"maincpu", 0) /* 68k rom and ram */ - ROM_LOAD16_BYTE("341-0347-a", 0x000000, 0x2000, CRC(80add605) SHA1(82215688b778d8c712a8186235f7981e3dc4dd7f)) // 341-0347-A Mac XL '3A' Bootrom Hi (boot3a.hi) - ROM_LOAD16_BYTE("341-0346-a", 0x000001, 0x2000, CRC(edf5222f) SHA1(b0388ee8dbbc51a2d628473dc29b65ce913fcd76)) // 341-0346-A Mac XL '3A' Bootrom Lo (boot3a.lo) + ROM_REGION16_BE(0x204000,"maincpu", 0) // 68k ROM and RAM + ROM_LOAD16_BYTE("341-0347-a.u13d", 0x0000, 0x2000, CRC(80add605) SHA1(82215688b778d8c712a8186235f7981e3dc4dd7f)) // 341-0347-A Mac XL '3A' Bootrom Hi (boot3a.hi) + ROM_LOAD16_BYTE("341-0346-a.u14d", 0x0001, 0x2000, CRC(edf5222f) SHA1(b0388ee8dbbc51a2d628473dc29b65ce913fcd76)) // 341-0346-A Mac XL '3A' Bootrom Lo (boot3a.lo) ROM_REGION( 0x400, "iocop", 0 ) ROM_LOAD("341-0064a.u9f", 0x000, 0x400, CRC(e6849910) SHA1(d46e67df75c9e3e773d20542fb9d5b1d2ac0fb9b)) @@ -441,13 +441,12 @@ ROM_START( macxl ) // Note: there are two earlier/alternate versions of this ROM as well which are dumped #endif - ROM_REGION(0x100,"gfx1", 0) // video ROM (includes S/N) ; no dump known, although Lisa ROM works fine at our level of emulation - ROM_LOAD("vidstatem.rom", 0x00, 0x100, BAD_DUMP CRC(75904783) SHA1(3b0023bd90f2ca1be0b099160a566b044856885d)) + ROM_REGION(0x100,"gfx1", 0) // video ROM (includes S/N) + ROM_LOAD("341-0348a_mb7118e.u6c", 0x00, 0x100, CRC(778fc5d9) SHA1(ec2533a6bd9e75d02fa69754fb82c7c28f0366ab)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */ +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME COMP( 1983, lisa, 0, 0, lisa, lisa, lisa_state, init_lisa2, "Apple Computer", "Lisa", MACHINE_NOT_WORKING ) COMP( 1984, lisa2, 0, 0, lisa, lisa, lisa_state, init_lisa2, "Apple Computer", "Lisa2", MACHINE_NOT_WORKING ) COMP( 1984, lisa210, lisa2, 0, lisa210, lisa, lisa_state, init_lisa210, "Apple Computer", "Lisa2/10", MACHINE_NOT_WORKING ) COMP( 1985, macxl, lisa2, 0, macxl, lisa, lisa_state, init_mac_xl, "Apple Computer", "Macintosh XL", /*MACHINE_NOT_WORKING*/0 ) - |
