From 153fa4c4f88bfc3bc6abd48700d9481b1d90321c Mon Sep 17 00:00:00 2001 From: Robbbert Date: Thu, 2 Aug 2018 23:00:40 +1000 Subject: (nw) xor100 : notes --- src/mame/drivers/pulsar.cpp | 2 +- src/mame/drivers/super6.cpp | 2 +- src/mame/drivers/xor100.cpp | 101 +++++++++++++++++--------------------------- src/mame/includes/xor100.h | 2 - 4 files changed, 41 insertions(+), 66 deletions(-) diff --git a/src/mame/drivers/pulsar.cpp b/src/mame/drivers/pulsar.cpp index a6929df412e..65b3dcf6a41 100644 --- a/src/mame/drivers/pulsar.cpp +++ b/src/mame/drivers/pulsar.cpp @@ -17,7 +17,7 @@ The terminal must be set for 9600 baud, 7 bits, even parity, 1 stop bit. ToDo: - Fix floppy. It needs to WAIT the cpu whenever port 0xD3 is read, wait - for either DRQ ir INTRQ to assert, then release the cpu and then do the + for either DRQ or INTRQ to assert, then release the cpu and then do the actual port read. Our Z80 cannot do that. - Fix FDC so MAME doesn't crash when a certain disk is inserted. diff --git a/src/mame/drivers/super6.cpp b/src/mame/drivers/super6.cpp index 8fa0153a9c3..96baf94c3de 100644 --- a/src/mame/drivers/super6.cpp +++ b/src/mame/drivers/super6.cpp @@ -7,7 +7,7 @@ ToDo: - peripheral interfaces - Fix floppy. It needs to WAIT the cpu whenever port 0x14 is read, wait - for either DRQ ir INTRQ to assert, then release the cpu and then do the + for either DRQ or INTRQ to assert, then release the cpu and then do the actual port read. Our Z80 cannot do that. The schematic isn't clear, but it seems the 2 halves of U16 (as shown) have a common element, so that activity on one side can affect what happens on diff --git a/src/mame/drivers/xor100.cpp b/src/mame/drivers/xor100.cpp index 0a3ab3dea9a..66da909f1bd 100644 --- a/src/mame/drivers/xor100.cpp +++ b/src/mame/drivers/xor100.cpp @@ -2,43 +2,45 @@ // copyright-holders:Curt Coder /**************************************************************************************************** - XOR S-100-12 +XOR S-100-12 - XOR Data Science was apparently a 1982 reincorporation of a Huntington Beach-based - company previously known as Delta Products. At least some of the S-100 boards used - in XOR's systems were originally developed and documented under the former company - name. +XOR Data Science was apparently a 1982 reincorporation of a Huntington Beach-based +company previously known as Delta Products. At least some of the S-100 boards used +in XOR's systems were originally developed and documented under the former company +name. ***************************************************************************************************** - All input must be in upper case. - Summary of Monitor commands: - - D xxxx yyyy = dump memory to screen - F xxxx yyyy zz = fill memory from xxxx to yyyy-1 with zz - G xxxx = execute program at xxxx - H xxxx yyyy aa bb... = Search memory for a string of bytes - L xxxx = edit memory (. to exit) - M xxxx yyyy zzzz = Move (copy) memory - V xxxx = Ascii dump of memory to the screen (cr to continue, space to exit) - X n = Select a bank (0 works, others freeze) - - Note some of the commands are a bit buggy, eg F doesn't fill the last byte +All input must be in upper case. +Summary of Monitor commands: + +D xxxx yyyy = dump memory to screen +F xxxx yyyy zz = fill memory from xxxx to yyyy-1 with zz +G xxxx = execute program at xxxx +H xxxx yyyy aa bb... = Search memory for a string of bytes +L xxxx = edit memory (. to exit) +M xxxx yyyy zzzz = Move (copy) memory +R = Read cassette (not in all bios versions) +V xxxx = Ascii dump of memory to the screen (cr to continue, space to exit) +W = Write cassette (not in all bios versions) +X n = Select a bank (0 works, others freeze) +^C = Boot from floppy + +Note some of the commands are a bit buggy, eg F doesn't fill the last byte + + +TODO: +- Fix floppy. It needs to WAIT the cpu whenever port 0xFC is read, wait + for either DRQ or INTRQ to assert, then release the cpu and then do the + actual port read. Our Z80 cannot do that. +- The only available disks crash MAME when loaded. +- honor jumper settings +- CTC signal header +- serial printer +- cassette (no information, assumed to be on another card) *****************************************************************************************************/ -/* - - TODO: - - - cannot boot from floppy (at prompt press ^C, wait, it says 'Drive not ready') - - honor jumper settings - - CTC signal header - - serial printer - - cassette? (no mention of it in the manuals) - -*/ - #include "emu.h" #include "includes/xor100.h" @@ -157,16 +159,6 @@ READ8_MEMBER( xor100_state::prom_disable_r ) return 0xff; } -READ8_MEMBER( xor100_state::fdc_r ) -{ - return m_fdc->gen_r(offset) ^ 0xff; -} - -WRITE8_MEMBER( xor100_state::fdc_w ) -{ - m_fdc->gen_w(offset, data ^ 0xff); -} - READ8_MEMBER( xor100_state::fdc_wait_r ) { /* @@ -188,12 +180,11 @@ READ8_MEMBER( xor100_state::fdc_wait_r ) { if (!m_fdc_irq && !m_fdc_drq) { - fatalerror("Z80 WAIT not supported by MAME core\n"); m_maincpu->set_input_line(Z80_INPUT_LINE_BOGUSWAIT, ASSERT_LINE); } } - return !m_fdc_irq << 7; + return m_fdc_irq ? 0x7f : 0xff; } WRITE8_MEMBER( xor100_state::fdc_dcont_w ) @@ -276,7 +267,9 @@ void xor100_state::xor100_io(address_map &map) map(0x0a, 0x0a).r(FUNC(xor100_state::prom_disable_r)); map(0x0b, 0x0b).portr("DSW0").w(COM5016_TAG, FUNC(com8116_device::stt_str_w)); map(0x0c, 0x0f).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); - map(0xf8, 0xfb).rw(FUNC(xor100_state::fdc_r), FUNC(xor100_state::fdc_w)); + map(0xf8, 0xfb).lrw8("fdc", + [this](address_space &space, offs_t offset, u8 mem_mask) { return m_fdc->read(space, offset, mem_mask) ^ 0xff; }, + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_fdc->write(space, offset, data ^ 0xff, mem_mask); }); map(0xfc, 0xfc).rw(FUNC(xor100_state::fdc_wait_r), FUNC(xor100_state::fdc_dcont_w)); map(0xfd, 0xfd).w(FUNC(xor100_state::fdc_dsel_w)); } @@ -429,10 +422,7 @@ void xor100_state::fdc_intrq_w(bool state) m_ctc->trg0(state); if (state) - { - fatalerror("Z80 WAIT not supported by MAME core\n"); - m_maincpu->set_input_line(Z80_INPUT_LINE_BOGUSWAIT, ASSERT_LINE); - } + m_maincpu->set_input_line(Z80_INPUT_LINE_WAIT, CLEAR_LINE); } void xor100_state::fdc_drq_w(bool state) @@ -440,22 +430,10 @@ void xor100_state::fdc_drq_w(bool state) m_fdc_drq = state; if (state) - { - fatalerror("Z80 WAIT not supported by MAME core\n"); - m_maincpu->set_input_line(Z80_INPUT_LINE_BOGUSWAIT, ASSERT_LINE); - } + m_maincpu->set_input_line(Z80_INPUT_LINE_WAIT, CLEAR_LINE); } -static DEVICE_INPUT_DEFAULTS_START( terminal ) - DEVICE_INPUT_DEFAULTS( "RS232_TXBAUD", 0xff, RS232_BAUD_9600 ) - DEVICE_INPUT_DEFAULTS( "RS232_RXBAUD", 0xff, RS232_BAUD_9600 ) - DEVICE_INPUT_DEFAULTS( "RS232_STARTBITS", 0xff, RS232_STARTBITS_1 ) - DEVICE_INPUT_DEFAULTS( "RS232_DATABITS", 0xff, RS232_DATABITS_8 ) - DEVICE_INPUT_DEFAULTS( "RS232_PARITY", 0xff, RS232_PARITY_NONE ) - DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 ) -DEVICE_INPUT_DEFAULTS_END - static void xor100_s100_cards(device_slot_interface &device) { } @@ -526,7 +504,6 @@ MACHINE_CONFIG_START(xor100_state::xor100) MCFG_RS232_RXD_HANDLER(WRITELINE(I8251_B_TAG, i8251_device, write_rxd)) MCFG_RS232_DSR_HANDLER(WRITELINE(I8251_B_TAG, i8251_device, write_dsr)) MCFG_RS232_CTS_HANDLER(WRITELINE(I8251_B_TAG, i8251_device, write_cts)) - MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", terminal) com8116_device &brg(COM8116(config, COM5016_TAG, 5.0688_MHz_XTAL)); brg.fr_handler().set(m_uart_a, FUNC(i8251_device::write_txc)); @@ -589,4 +566,4 @@ ROM_END /* System Drivers */ // YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS -COMP( 1980, xor100, 0, 0, xor100, xor100, xor100_state, empty_init, "XOR Data Science", "XOR S-100-12", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1980, xor100, 0, 0, xor100, xor100, xor100_state, empty_init, "XOR Data Science", "XOR S-100-12", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/includes/xor100.h b/src/mame/includes/xor100.h index f3bb7b1ab13..c41718eae0d 100644 --- a/src/mame/includes/xor100.h +++ b/src/mame/includes/xor100.h @@ -54,8 +54,6 @@ private: DECLARE_WRITE8_MEMBER( mmu_w ); DECLARE_WRITE8_MEMBER( prom_toggle_w ); DECLARE_READ8_MEMBER( prom_disable_r ); - DECLARE_READ8_MEMBER( fdc_r ); - DECLARE_WRITE8_MEMBER( fdc_w ); DECLARE_READ8_MEMBER( fdc_wait_r ); DECLARE_WRITE8_MEMBER( fdc_dcont_w ); DECLARE_WRITE8_MEMBER( fdc_dsel_w ); -- cgit v1.2.3