Support IIe aux slot: empty or with 80-col(1KiB) card (#1341, PR #1351)

Add new command line switch: -aux <empty|std80|ext80|rw3>
Add 6502/65C02 x normal/debugger alt read support for CPU emulation (#1353).
Fix bug in MemReadFloatingBus() reading from mem[] - no good, if MF_AUXREAD is set.
Support odd 80-col text video mode when aux slot is empty:
. add a new videoMode flag for VF_80COL_AUX_EMPTY.
Correctly support 80COL & DHIRES soft-switches when aux slot is empty or with std80 card.
Support VidHD's SHR with -aux <empty|std80>.
Save-state: support aux slot empty or with std80 card.
This commit is contained in:
TomCh
2024-12-30 21:39:16 +00:00
committed by GitHub
parent a2b03483ee
commit 16b2cf329e
17 changed files with 591 additions and 135 deletions

View File

@@ -178,76 +178,84 @@ bool ProcessCmdLine(LPSTR lpCmdLine)
lpCmdLine = GetCurrArg(lpNextArg);
lpNextArg = GetNextArg(lpNextArg);
if (strcmp(lpCmdLine, "empty") == 0)
{
g_cmdLine.bSlotEmpty[slot] = true;
if (strcmp(lpCmdLine, "diskii") == 0)
}
else if (strcmp(lpCmdLine, "diskii") == 0)
{
g_cmdLine.slotInsert[slot] = CT_Disk2;
if (strcmp(lpCmdLine, "diskii13") == 0)
}
else if (strcmp(lpCmdLine, "diskii13") == 0)
{
g_cmdLine.slotInsert[slot] = CT_Disk2;
g_cmdLine.slotInfo[slot].isDiskII13 = true;
}
if (strcmp(lpCmdLine, "hdc") == 0)
else if (strcmp(lpCmdLine, "hdc") == 0)
{
g_cmdLine.slotInsert[slot] = CT_GenericHDD;
}
if (strcmp(lpCmdLine, "hdc-sp") == 0)
else if (strcmp(lpCmdLine, "hdc-sp") == 0)
{
g_cmdLine.slotInsert[slot] = CT_GenericHDD;
g_cmdLine.slotInfo[slot].useHdcFirmwareMode = HdcSmartPort;
}
if (strcmp(lpCmdLine, "hdc-bm2") == 0)
else if (strcmp(lpCmdLine, "hdc-bm2") == 0)
{
g_cmdLine.slotInsert[slot] = CT_GenericHDD;
g_cmdLine.slotInfo[slot].useHdcFirmwareMode = HdcBlockMode2Devices;
}
if (strcmp(lpCmdLine, "hdc-bm4") == 0)
else if (strcmp(lpCmdLine, "hdc-bm4") == 0)
{
g_cmdLine.slotInsert[slot] = CT_GenericHDD;
g_cmdLine.slotInfo[slot].useHdcFirmwareMode = HdcBlockMode4Devices;
}
if (strcmp(lpCmdLine, "saturn") == 0 || strcmp(lpCmdLine, "saturn128") == 0) // Support Saturn128 card in slot 1-7 too (GH#1279)
else if (strcmp(lpCmdLine, "saturn") == 0 || strcmp(lpCmdLine, "saturn128") == 0) // Support Saturn128 card in slot 1-7 too (GH#1279)
{
g_cmdLine.slotInsert[slot] = CT_Saturn128K;
}
if (strcmp(lpCmdLine, "megaaudio") == 0)
else if (strcmp(lpCmdLine, "megaaudio") == 0)
{
g_cmdLine.slotInsert[slot] = CT_MegaAudio;
g_cmdLine.supportExtraMBCardTypes = true;
}
if (strcmp(lpCmdLine, "sdmusic") == 0)
else if (strcmp(lpCmdLine, "sdmusic") == 0)
{
g_cmdLine.slotInsert[slot] = CT_SDMusic;
g_cmdLine.supportExtraMBCardTypes = true;
}
if (strcmp(lpCmdLine, "6522a-bad") == 0)
else if (strcmp(lpCmdLine, "6522a-bad") == 0)
{
g_cmdLine.slotInfo[slot].useBad6522A = true;
}
if (strcmp(lpCmdLine, "6522b-bad") == 0)
else if (strcmp(lpCmdLine, "6522b-bad") == 0)
{
g_cmdLine.slotInfo[slot].useBad6522B = true;
}
if (strcmp(lpCmdLine, "parallel") == 0)
else if (strcmp(lpCmdLine, "parallel") == 0)
{
if (slot == SLOT1)
g_cmdLine.slotInsert[slot] = CT_GenericPrinter;
else
LogFileOutput("Parallel Printer card currently only supported in slot 1\n");
}
if (strcmp(lpCmdLine, "ssc") == 0)
else if (strcmp(lpCmdLine, "ssc") == 0)
{
if (slot == SLOT2)
g_cmdLine.slotInsert[slot] = CT_SSC;
else
LogFileOutput("SSC currently only supported in slot 2\n");
}
if (strcmp(lpCmdLine, "vidhd") == 0)
else if (strcmp(lpCmdLine, "vidhd") == 0)
{
if (slot == SLOT3)
g_cmdLine.slotInsert[slot] = CT_VidHD;
else
LogFileOutput("VidHD currently only supported in slot 3\n");
}
else
{
LogFileOutput("Unsupported slot-%d card: %s\n", slot, lpCmdLine);
}
}
else if (lpCmdLine[3] == 'd' && (lpCmdLine[4] == '1' || lpCmdLine[4] == '2')) // -s[1..7]d[1|2] <dsk-image>
{
@@ -289,6 +297,31 @@ bool ProcessCmdLine(LPSTR lpCmdLine)
LogFileOutput("Unsupported arg: %s\n", lpCmdLine);
}
}
else if (strcmp(lpCmdLine, "-aux") == 0)
{
lpCmdLine = GetCurrArg(lpNextArg);
lpNextArg = GetNextArg(lpNextArg);
if (strcmp(lpCmdLine, "empty") == 0)
{
g_cmdLine.auxSlotEmpty = true;
}
else if (strcmp(lpCmdLine, "std80") == 0)
{
g_cmdLine.auxSlotInsert = CT_80Col;
}
else if (strcmp(lpCmdLine, "ext80") == 0)
{
g_cmdLine.auxSlotInsert = CT_Extended80Col;
}
else if (strcmp(lpCmdLine, "rw3") == 0)
{
g_cmdLine.auxSlotInsert = CT_RamWorksIII;
}
else
{
LogFileOutput("Unsupported aux slot card: %s\n", lpCmdLine);
}
}
else if (strcmp(lpCmdLine, "-harddisknumblocks") == 0) // number of blocks to report for ProDOS
{
lpCmdLine = GetCurrArg(lpNextArg);