misc/neomania: add parallel port device notes

This commit is contained in:
angelosa 2024-03-10 21:46:22 +01:00
parent 86aae26786
commit 224ebc70ab
4 changed files with 40 additions and 35 deletions

View File

@ -31,9 +31,9 @@ it8705f_device::it8705f_device(const machine_config &mconfig, const char *tag, d
, m_space_config("superio_config_regs", ENDIANNESS_LITTLE, 8, 8, 0, address_map_constructor(FUNC(it8705f_device::config_map), this))
, m_lpt(*this, "lpt")
, m_logical_view(*this, "logical_view")
// , m_irq1_callback(*this)
// , m_irq8_callback(*this)
// , m_irq9_callback(*this)
, m_irq1_callback(*this)
, m_irq8_callback(*this)
, m_irq9_callback(*this)
// , m_txd1_callback(*this)
// , m_ndtr1_callback(*this)
// , m_nrts1_callback(*this)
@ -83,7 +83,7 @@ device_memory_interface::space_config_vector it8705f_device::memory_space_config
void it8705f_device::device_add_mconfig(machine_config &config)
{
PC_LPT(config, m_lpt);
// m_lpt->irq_handler().set(FUNC(it8705f_device::irq_parallel_w));
m_lpt->irq_handler().set(FUNC(it8705f_device::irq_parallel_w));
}
@ -175,7 +175,7 @@ void it8705f_device::config_map(address_map &map)
const u8 shift = offset * 8;
m_lpt_address &= 0xff << shift;
m_lpt_address |= data << (shift ^ 8);
LOG("LD3 (LPT): remap %04x ([%d] %02x)\n", m_lpt_address, offset, data);
LOG("LDN3 (LPT): remap %04x ([%d] %02x)\n", m_lpt_address, offset, data);
remap(AS_IO, 0, 0x400);
})
@ -188,7 +188,7 @@ void it8705f_device::config_map(address_map &map)
}),
NAME([this] (offs_t offset, u8 data) {
m_lpt_irq_line = data & 0xf;
LOG("LD3 (LPT): irq routed to %02x\n", m_lpt_irq_line);
LOG("LDN3 (LPT): irq routed to %02x\n", m_lpt_irq_line);
})
);
m_logical_view[3](0x74, 0x74).lrw8(
@ -197,7 +197,7 @@ void it8705f_device::config_map(address_map &map)
}),
NAME([this] (offs_t offset, u8 data) {
m_lpt_drq_line = data & 0x7;
LOG("LD3 (LPT): drq %s (%02x)\n", BIT(m_lpt_drq_line, 2) ? "disabled" : "enabled", data);
LOG("LDN3 (LPT): drq %s (%02x)\n", BIT(m_lpt_drq_line, 2) ? "disabled" : "enabled", data);
})
);
// Environment controller / HW monitor
@ -238,11 +238,10 @@ template <unsigned N> u8 it8705f_device::activate_r(offs_t offset)
template <unsigned N> void it8705f_device::activate_w(offs_t offset, u8 data)
{
m_activate[N] = data & 1;
LOG("LN%d Device %s\n", N, data & 1 ? "enabled" : "disabled");
LOG("LDN%d Device %s\n", N, data & 1 ? "enabled" : "disabled");
remap(AS_IO, 0, 0x400);
}
#if 0
void it8705f_device::request_irq(int irq, int state)
{
switch (irq)
@ -299,5 +298,3 @@ void it8705f_device::irq_parallel_w(int state)
return;
request_irq(m_lpt_irq_line, state ? ASSERT_LINE : CLEAR_LINE);
}
#endif

View File

@ -21,11 +21,9 @@ public:
void remap(int space_id, offs_t start, offs_t end) override;
// auto gp20_reset() { return m_gp20_reset_callback.bind(); }
// auto gp25_gatea20() { return m_gp25_gatea20_callback.bind(); }
// auto irq1() { return m_irq1_callback.bind(); }
// auto irq8() { return m_irq8_callback.bind(); }
// auto irq9() { return m_irq9_callback.bind(); }
auto irq1() { return m_irq1_callback.bind(); }
auto irq8() { return m_irq8_callback.bind(); }
auto irq9() { return m_irq9_callback.bind(); }
// auto txd1() { return m_txd1_callback.bind(); }
// auto ndtr1() { return m_ndtr1_callback.bind(); }
// auto nrts1() { return m_nrts1_callback.bind(); }
@ -46,9 +44,9 @@ private:
required_device<pc_lpt_device> m_lpt;
memory_view m_logical_view;
// devcb_write_line m_irq1_callback;
// devcb_write_line m_irq8_callback;
// devcb_write_line m_irq9_callback;
devcb_write_line m_irq1_callback;
devcb_write_line m_irq8_callback;
devcb_write_line m_irq9_callback;
// devcb_write_line m_txd1_callback;
// devcb_write_line m_ndtr1_callback;
// devcb_write_line m_nrts1_callback;
@ -75,9 +73,9 @@ private:
template <unsigned N> u8 activate_r(offs_t offset);
template <unsigned N> void activate_w(offs_t offset, u8 data);
// void irq_parallel_w(int state);
void irq_parallel_w(int state);
// void request_irq(int irq, int state);
void request_irq(int irq, int state);
};
DECLARE_DEVICE_TYPE(IT8705F, it8705f_device);

View File

@ -1,6 +1,23 @@
// license:BSD-3-Clause
// copyright-holders:
/*
/**************************************************************************************************
TODO:
- SIGABRT in pcipc/pciagp trying to execute ppm.exe,
in shutms11 will draw "Parallel Port Manager v4.0" then fail on device check.
\- "Testing I/O board connection"
bp 100027e2, edit $25dd11 = 0x02 (board identifier?)
\- "Testing I/O board communications"
bp 10002942 (checks acknowledge from control bit 6 @ $37a, for 0xe0-0xe7. Buffers at $25dd48-4f)
Expected ack values: 40 40 00 00 40 00 40 00
bp 10002d57,1,{ebx=8;g} for a quick workaround
\- "Testing I/O board input bits" / "BAD 0 1 2 3 7"
Goes ahead in checking each port r/w, TBD
\- Fails win98 PS/2 PnP afterwards, which isn't supposed to be connected in the first place.
- Extract "Guard.zip" and understand what is for;
===================================================================================================
Neo Mania:
The Portuguese (Vila Nova de Gaia) company "Hyper M.A.R." created this machine on 2002 with 40 games,
and updated it on 2003 increasing the number of games up to 48. There was a latest newer version
@ -21,15 +38,10 @@ C:\Neomania folder contains ppm.exe, which is the driver for the parallel port d
It also contains a password protected "Guard.zip", copy protection?
C:\Windows has driver installs for:
- a Sound Blaster AudioPCI 128
- an ATI All-In-Wonder / All-In-Wonder Pro (with leftover "SYSTEM.I~I" footprint with "display.drv=ATI Rage IIC AGP (Português)").
- an ATI All-In-Wonder / All-In-Wonder Pro (with leftover "SYSTEM.I~I" footprint with
"display.drv=ATI Rage IIC AGP (Português)").
TODO:
- HDD image doesn't boot in neither shutms11 nor pcipc, mangled MBR boot record or geometry params (has -chs 3532,16,38 but WinImage reports back ~20 GB partition?);
- (With manually c&p files in a CHD that works) SIGABRT in pcipc trying to execute ppm.exe, in shutms11 will draw "Parallel Port Manager v4.0" then fail on device check;
- Extract "Guard.zip" and understand what is for;
*/
**************************************************************************************************/
#include "emu.h"
#include "cpu/i386/i386.h"

View File

@ -208,12 +208,10 @@ static void isa_internal_devices(device_slot_interface &device)
void sis630_state::ite_superio_config(device_t *device)
{
// fdc37c93x_device &fdc = *downcast<fdc37c93x_device *>(device);
// it8705f_device &fdc = *downcast<it8705f_device *>(device);
// fdc.set_sysopt_pin(1);
// fdc.gp20_reset().set_inputline(":maincpu", INPUT_LINE_RESET);
// fdc.gp25_gatea20().set_inputline(":maincpu", INPUT_LINE_A20);
// fdc.irq1().set(":pci:07.0", FUNC(i82371sb_isa_device::pc_irq1_w));
// fdc.irq8().set(":pci:07.0", FUNC(i82371sb_isa_device::pc_irq8n_w));
// fdc.irq1().set(":pci:01.0", FUNC(sis950_lpc_device::pc_irq1_w));
// fdc.irq8().set(":pci:01.0", FUNC(sis950_lpc_device::pc_irq8n_w));
// fdc.txd1().set(":serport0", FUNC(rs232_port_device::write_txd));
// fdc.ndtr1().set(":serport0", FUNC(rs232_port_device::write_dtr));
// fdc.nrts1().set(":serport0", FUNC(rs232_port_device::write_rts));