nubus/8lc.cpp: Add support for the RasterOps 8LC card for the original Macintosh LC. [R. Belmont]

* This card provides unaccelerated 1024x768 video, which isn't the greatest idea on a 68020.

video/tms34061.h: Added accessors to get the horizontal and vertical visible resolution and totals. [R. Belmont]

nubus/cards.cpp, apple/maclc.cpp: Support a list of cards for only the original Macintosh LC. [R. Belmont]
This commit is contained in:
arbee 2023-10-11 22:45:07 -04:00
parent ae5e13e023
commit 095da87df0
5 changed files with 22 additions and 3 deletions

View File

@ -3030,6 +3030,8 @@ if (BUSES["NUBUS"]~=null) then
MAME_DIR .. "src/devices/bus/nubus/nubus_image.h",
MAME_DIR .. "src/devices/bus/nubus/nubus_wsportrait.cpp",
MAME_DIR .. "src/devices/bus/nubus/nubus_wsportrait.h",
MAME_DIR .. "src/devices/bus/nubus/8lc.cpp",
MAME_DIR .. "src/devices/bus/nubus/8lc.h",
MAME_DIR .. "src/devices/bus/nubus/bootbug.cpp",
MAME_DIR .. "src/devices/bus/nubus/bootbug.h",
MAME_DIR .. "src/devices/bus/nubus/quadralink.cpp",

View File

@ -2,13 +2,14 @@
// copyright-holders:R. Belmont
/***************************************************************************
NuBus, SE/30 PDS, and LC PDS slot cards
NuBus, SE/30 PDS, and LC slot cards
***************************************************************************/
#include "emu.h"
#include "cards.h"
#include "8lc.h"
#include "bootbug.h"
#include "laserview.h"
#include "nubus_48gc.h"
@ -65,6 +66,13 @@ void mac_pdslc_cards(device_slot_interface &device)
device.option_add("macconilc", PDSLC_MACCONILC); // Asante MacCON i LC Ethernet card
}
// cards for the LC PDS slot that only work in the original LC
void mac_pdslc_orig_cards(device_slot_interface &device)
{
device.option_add("macconilc", PDSLC_MACCONILC); // Asante MacCON i LC Ethernet card
device.option_add("ro8lc", PDSLC_COLORVUE8LC); // RasterOps ColorVue 8LC
}
// IIsi can take either one SE/30 PDS or one NuBus card
void mac_iisi_cards(device_slot_interface &device)
{

View File

@ -14,6 +14,7 @@
void mac_nubus_cards(device_slot_interface &device) ATTR_COLD;
void mac_pds030_cards(device_slot_interface &device) ATTR_COLD;
void mac_pdslc_cards(device_slot_interface &device) ATTR_COLD;
void mac_pdslc_orig_cards(device_slot_interface &device) ATTR_COLD;
void mac_iisi_cards(device_slot_interface &device) ATTR_COLD;
#endif // MAME_BUS_NUBUS_CARDS_H

View File

@ -52,6 +52,10 @@ public:
u8 const &vram(unsigned row) const { return m_display.vram[row << m_rowshift]; }
u16 xyoffset() const { return m_display.regs[TMS34061_XYOFFSET]; }
u16 xyaddress() const { return m_display.regs[TMS34061_XYADDRESS]; }
u16 hvisible() const { return (m_display.regs[TMS34061_HORENDBLNK] - m_display.regs[TMS34061_HORSTARTBLNK]) << 2; }
u16 vvisible() const { return (m_display.regs[TMS34061_VERENDBLNK] - m_display.regs[TMS34061_VERSTARTBLNK]); }
u16 htotal() const { return m_display.regs[TMS34061_HORTOTAL]; }
u16 vtotal() const { return m_display.regs[TMS34061_VERTOTAL]; }
// TODO: encapsulate this properly
tms34061_display m_display;

View File

@ -366,7 +366,6 @@ void maclc_state::maclc_base(machine_config &config)
// V8 supports interrupts for slots $C, $D, and $E, but the LC, LC II, and Color Classic
// only hook the slot $E IRQ up to the PDS slot.
nubus.out_irqe_callback().set(m_v8, FUNC(v8_device::slot_irq_w<0x20>));
NUBUS_SLOT(config, "lcpds", "pds", mac_pdslc_cards, nullptr);
MACADB(config, m_macadb, C15M);
@ -396,6 +395,8 @@ void maclc_state::maclc(machine_config &config)
{
maclc_base(config);
NUBUS_SLOT(config, "lcpds", "pds", mac_pdslc_orig_cards, nullptr);
m_ram->set_default_size("2M");
m_ram->set_extra_options("4M,6M,10M");
m_v8->set_baseram_is_4M(false);
@ -405,6 +406,8 @@ void maclc_state::maclc2(machine_config &config)
{
maclc_base(config);
NUBUS_SLOT(config, "lcpds", "pds", mac_pdslc_cards, nullptr);
M68030(config.replace(), m_maincpu, C15M);
m_maincpu->set_addrmap(AS_PROGRAM, &maclc_state::maclc_map);
m_maincpu->set_dasm_override(std::function(&mac68k_dasm_override), "mac68k_dasm_override");
@ -445,6 +448,8 @@ void maclc_state::maccclas(machine_config &config)
m_v8->pb5_callback().set(m_cuda, FUNC(cuda_device::set_tip));
m_v8->cb2_callback().set(m_cuda, FUNC(cuda_device::set_via_data));
NUBUS_SLOT(config, "lcpds", "pds", mac_pdslc_cards, nullptr);
m_ram->set_default_size("4M");
m_ram->set_extra_options("6M,8M,10M");
m_v8->set_baseram_is_4M(true);
@ -470,7 +475,6 @@ void maclc_state::macclas2(machine_config &config)
m_v8->cb2_callback().set(m_egret, FUNC(egret_device::set_via_data));
// Classic II doesn't have an LC PDS slot (and its ROM has the Slot Manager disabled)
config.device_remove("lcpds");
config.device_remove("pds");
m_ram->set_default_size("4M");