mirror of
https://github.com/holub/mame
synced 2025-04-24 17:30:55 +03:00
(nw) xor100 : notes
This commit is contained in:
parent
5f484e857e
commit
153fa4c4f8
@ -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.
|
||||
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
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)
|
||||
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
|
||||
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 )
|
||||
|
@ -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 );
|
||||
|
Loading…
Reference in New Issue
Block a user