mirror of
https://github.com/holub/mame
synced 2025-04-19 23:12:11 +03:00
apple/apple2gs.cpp: implement the LANGSEL soft switch (#13052)
This commit is contained in:
parent
c6599996ac
commit
4d7a586ba6
@ -49,6 +49,25 @@ Generated by SLIST 0.2.1
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="a2diag31">
|
||||
<description>Apple II Diagnostic Disk (version 3.1)(800K 3.5")</description>
|
||||
<year>1991</year>
|
||||
<publisher>Apple Computer</publisher>
|
||||
<info name="usage" value="Requires an Apple IIgs, IIc+, //c, //e with a compatible drive controller card." />
|
||||
<sharedfeat name="compatibility" value="A2E,A2EE,A2C,A2GS" />
|
||||
<!-- This disk contains 4 versions of the diagnostic tools:
|
||||
Apple IIgs Diagnostic, V3.1
|
||||
Apple IIc Plus Diagnostic, V2.0
|
||||
Apple IIc Diagnostic, V3.0
|
||||
Apple IIe Diagnostic, V3.0
|
||||
-->
|
||||
<part name="flop1" interface="floppy_3_5">
|
||||
<dataarea name="flop" size="819200">
|
||||
<rom name="apple ii diagnostic v3_1.po" size="819200" crc="50d3243d" sha1="23881d0096d428f2ea8568c854dc25f6b66ff051" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="apwrks12">
|
||||
<description>AppleWorks (Version 1.2, USA)</description>
|
||||
<year>1983</year>
|
||||
|
@ -1591,6 +1591,9 @@ u8 apple2gs_state::c000_r(offs_t offset)
|
||||
case 0x29: // NEWVIDEO
|
||||
return m_video->get_newvideo();
|
||||
|
||||
case 0x2b: // LANGSEL
|
||||
return m_video->get_GS_langsel();
|
||||
|
||||
case 0x2d: // SLOTROMSEL
|
||||
return m_slotromsel;
|
||||
|
||||
@ -1946,6 +1949,10 @@ void apple2gs_state::c000_w(offs_t offset, u8 data)
|
||||
m_video->set_newvideo(data);
|
||||
break;
|
||||
|
||||
case 0x2b: // LANGSEL
|
||||
m_video->set_GS_langsel(data);
|
||||
break;
|
||||
|
||||
case 0x2d: // SLOTROMSEL
|
||||
m_slotromsel = data;
|
||||
break;
|
||||
@ -3931,8 +3938,8 @@ ROM_START(apple2gs)
|
||||
ROM_REGION(0x1000, "adbmicro", 0)
|
||||
ROM_LOAD( "341s0632-2.bin", 0x000000, 0x001000, CRC(e1c11fb0) SHA1(141d18c36a617ab9dce668445440d34354be0672) )
|
||||
|
||||
ROM_REGION(0x1000,"gfx1",0)
|
||||
ROM_LOAD ( "apple2gs.chr", 0x0000, 0x1000, CRC(91e53cd8) SHA1(34e2443e2ef960a36c047a09ed5a93f471797f89)) /* need label/part number */
|
||||
ROM_REGION(0x4000,"gfx1",0)
|
||||
ROM_LOAD ( "megaii.chr", 0x0000, 0x4000, BAD_DUMP CRC(ef0bfc11) SHA1(c068f3d02d442a8a38121d42318e9a962ee8913e)) /* need label/part number */
|
||||
|
||||
ROM_REGION(0x80000,"maincpu",0)
|
||||
// 341-0728 is the MASK rom version while 341-0737 is the EPROM version - SAME data.
|
||||
@ -3946,8 +3953,8 @@ ROM_START(apple2gsr3p)
|
||||
ROM_REGION(0x1000, "adbmicro", 0)
|
||||
ROM_LOAD( "341s0632-2.bin", 0x000000, 0x001000, CRC(e1c11fb0) SHA1(141d18c36a617ab9dce668445440d34354be0672) )
|
||||
|
||||
ROM_REGION(0x1000,"gfx1",0)
|
||||
ROM_LOAD ( "apple2gs.chr", 0x0000, 0x1000, CRC(91e53cd8) SHA1(34e2443e2ef960a36c047a09ed5a93f471797f89)) /* need label/part number */
|
||||
ROM_REGION(0x4000,"gfx1",0)
|
||||
ROM_LOAD ( "megaii.chr", 0x0000, 0x4000, BAD_DUMP CRC(ef0bfc11) SHA1(c068f3d02d442a8a38121d42318e9a962ee8913e)) /* need label/part number */
|
||||
|
||||
ROM_REGION(0x80000,"maincpu",0)
|
||||
ROM_LOAD("341-0728", 0x00000, 0x20000, CRC(8d410067) SHA1(c0f4704233ead14cb8e1e8a68fbd7063c56afd27) ) /* 341-0728: IIgs ROM03 prototype FC-FD - 28 pin MASK rom */
|
||||
@ -3958,8 +3965,8 @@ ROM_START(apple2gsr1)
|
||||
ROM_REGION(0xc00, "adbmicro", 0)
|
||||
ROM_LOAD( "341s0345.bin", 0x000000, 0x000c00, CRC(48cd5779) SHA1(97e421f5247c00a0ca34cd08b6209df573101480) )
|
||||
|
||||
ROM_REGION(0x1000,"gfx1",0)
|
||||
ROM_LOAD ( "apple2gs.chr", 0x0000, 0x1000, CRC(91e53cd8) SHA1(34e2443e2ef960a36c047a09ed5a93f471797f89)) /* need label/part number */
|
||||
ROM_REGION(0x4000,"gfx1",0)
|
||||
ROM_LOAD ( "megaii.chr", 0x0000, 0x4000, BAD_DUMP CRC(ef0bfc11) SHA1(c068f3d02d442a8a38121d42318e9a962ee8913e)) /* need label/part number */
|
||||
|
||||
ROM_REGION(0x80000,"maincpu",0)
|
||||
ROM_LOAD("342-0077-b", 0x20000, 0x20000, CRC(42f124b0) SHA1(e4fc7560b69d062cb2da5b1ffbe11cd1ca03cc37)) /* 342-0077-B: IIgs ROM01 */
|
||||
@ -3969,8 +3976,8 @@ ROM_START(apple2gsr0)
|
||||
ROM_REGION(0xc00, "adbmicro", 0)
|
||||
ROM_LOAD( "341s0345.bin", 0x000000, 0x000c00, CRC(48cd5779) SHA1(97e421f5247c00a0ca34cd08b6209df573101480) )
|
||||
|
||||
ROM_REGION(0x1000,"gfx1",0)
|
||||
ROM_LOAD ( "apple2gs.chr", 0x0000, 0x1000, CRC(91e53cd8) SHA1(34e2443e2ef960a36c047a09ed5a93f471797f89))
|
||||
ROM_REGION(0x4000,"gfx1",0)
|
||||
ROM_LOAD ( "megaii.chr", 0x0000, 0x4000, BAD_DUMP CRC(ef0bfc11) SHA1(c068f3d02d442a8a38121d42318e9a962ee8913e)) /* need label/part number */
|
||||
|
||||
ROM_REGION(0x80000,"maincpu",0)
|
||||
ROM_LOAD("342-0077-a", 0x20000, 0x20000, CRC(dfbdd97b) SHA1(ff0c245dd0732ec4413a934fd80efc2defd8a8e3) ) /* 342-0077-A: IIgs ROM00 */
|
||||
@ -3980,8 +3987,8 @@ ROM_START(apple2gsr0p) // 6/19/1986 Cortland prototype
|
||||
ROM_REGION(0xc00, "adbmicro", 0)
|
||||
ROM_LOAD( "341s0345.bin", 0x000000, 0x000c00, CRC(48cd5779) SHA1(97e421f5247c00a0ca34cd08b6209df573101480) )
|
||||
|
||||
ROM_REGION(0x1000,"gfx1",0)
|
||||
ROM_LOAD ( "apple2gs.chr", 0x0000, 0x1000, CRC(91e53cd8) SHA1(34e2443e2ef960a36c047a09ed5a93f471797f89))
|
||||
ROM_REGION(0x4000,"gfx1",0)
|
||||
ROM_LOAD ( "megaii.chr", 0x0000, 0x4000, BAD_DUMP CRC(ef0bfc11) SHA1(c068f3d02d442a8a38121d42318e9a962ee8913e)) /* need label/part number */
|
||||
|
||||
ROM_REGION(0x80000,"maincpu",0)
|
||||
ROM_LOAD( "rombf.bin", 0x020000, 0x020000, CRC(ab04fedf) SHA1(977589a17553956d583a21020080a39dd396df5c) )
|
||||
@ -3991,8 +3998,8 @@ ROM_START(apple2gsr0p2) // 3/10/1986 Cortland prototype, boots as "Apple //'ing
|
||||
ROM_REGION(0xc00, "adbmicro", 0)
|
||||
ROM_LOAD( "341s0345.bin", 0x000000, 0x000c00, CRC(48cd5779) SHA1(97e421f5247c00a0ca34cd08b6209df573101480) )
|
||||
|
||||
ROM_REGION(0x1000,"gfx1",0)
|
||||
ROM_LOAD ( "apple2gs.chr", 0x0000, 0x1000, CRC(91e53cd8) SHA1(34e2443e2ef960a36c047a09ed5a93f471797f89))
|
||||
ROM_REGION(0x4000,"gfx1",0)
|
||||
ROM_LOAD ( "megaii.chr", 0x0000, 0x4000, BAD_DUMP CRC(ef0bfc11) SHA1(c068f3d02d442a8a38121d42318e9a962ee8913e)) /* need label/part number */
|
||||
|
||||
ROM_REGION(0x80000,"maincpu",0)
|
||||
ROM_LOAD( "apple iigs alpha rom 2.0 19860310.bin", 0x020000, 0x020000, CRC(a47d275f) SHA1(c5836adcfc8be69c7351b84afa94c814e8d92b81) )
|
||||
@ -4003,8 +4010,8 @@ ROM_START(apple2gsmt)
|
||||
ROM_REGION(0x1000, "adbmicro", 0)
|
||||
ROM_LOAD( "341s0632-2.bin", 0x000000, 0x001000, CRC(e1c11fb0) SHA1(141d18c36a617ab9dce668445440d34354be0672) )
|
||||
|
||||
ROM_REGION(0x1000, "gfx1", 0)
|
||||
ROM_LOAD ( "apple2gs.chr", 0x0000, 0x1000, CRC(91e53cd8) SHA1(34e2443e2ef960a36c047a09ed5a93f471797f89))
|
||||
ROM_REGION(0x4000, "gfx1", 0)
|
||||
ROM_LOAD ( "megaii.chr", 0x0000, 0x4000, BAD_DUMP CRC(ef0bfc11) SHA1(c068f3d02d442a8a38121d42318e9a962ee8913e)) /* need label/part number */
|
||||
|
||||
ROM_REGION(0x80000, "maincpu", 0)
|
||||
// The Mark Twain ROM is 512K, with address bit 16 inverted (same as ROM 3).
|
||||
|
@ -76,6 +76,7 @@ void a2_video_device::device_start()
|
||||
save_item(NAME(m_GSbg));
|
||||
save_item(NAME(m_GSborder));
|
||||
save_item(NAME(m_newvideo));
|
||||
save_item(NAME(m_GS_langsel));
|
||||
save_item(NAME(m_monochrome));
|
||||
save_item(NAME(m_rgbmode));
|
||||
save_item(NAME(m_shr_palette));
|
||||
@ -387,10 +388,6 @@ unsigned a2_video_device::get_text_character(uint32_t code, int row)
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (Model == model::IIGS)
|
||||
{
|
||||
code |= 0x100;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((code >= 0x60) && (code <= 0x7f))
|
||||
@ -403,6 +400,10 @@ unsigned a2_video_device::get_text_character(uint32_t code, int row)
|
||||
{
|
||||
code |= get_iie_langsw() * 0x100;
|
||||
}
|
||||
else if (Model == model::IIGS)
|
||||
{
|
||||
code |= get_GS_language() * 0x100;
|
||||
}
|
||||
}
|
||||
else // original II and II Plus
|
||||
{
|
||||
|
@ -55,6 +55,11 @@ public:
|
||||
void set_GS_border(u8 border) { m_GSborder = border; }
|
||||
const u8 get_newvideo() { return m_newvideo; }
|
||||
void set_newvideo(u8 newvideo) { m_newvideo = newvideo; }
|
||||
const u8 get_GS_langsel() { return m_GS_langsel; }
|
||||
const u8 get_GS_language() { return (m_GS_langsel >> 5) & 0x07; }
|
||||
const bool is_pal_video_mode() { return (m_GS_langsel >> 4) & 0x01; }
|
||||
const bool get_language_switch(){ return (m_GS_langsel >> 3) & 0x01; }
|
||||
void set_GS_langsel(u8 langsel) { m_GS_langsel = langsel; }
|
||||
void set_SHR_color(u8 color, u32 rgb) { m_shr_palette[color] = rgb; }
|
||||
void set_GS_border_color(u8 color, u32 rgb) { m_GSborder_colors[color] = rgb; }
|
||||
|
||||
@ -123,7 +128,7 @@ private:
|
||||
bool m_an2 = false;
|
||||
bool m_80store = false;
|
||||
bool m_monohgr = false;
|
||||
u8 m_GSfg = 0, m_GSbg = 0, m_GSborder = 0, m_newvideo = 0, m_monochrome = 0, m_rgbmode = 0;
|
||||
u8 m_GSfg = 0, m_GSbg = 0, m_GSborder = 0, m_newvideo = 0, m_GS_langsel = 0, m_monochrome = 0, m_rgbmode = 0;
|
||||
u8 m_iie_langsw = 0; // language switch/modification on IIe/IIc/IIc+ and clones
|
||||
optional_ioport m_vidconfig;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user