mirror of
https://github.com/AppleWin/AppleWin.git
synced 2025-01-01 12:31:59 +00:00
Added cmd-line options -h1,-h2 for specifying HDDs - #398
This commit is contained in:
parent
d7de4908cd
commit
9be3864f32
@ -12,9 +12,13 @@
|
|||||||
follows:
|
follows:
|
||||||
</p>
|
</p>
|
||||||
-d1 <pathname><br>
|
-d1 <pathname><br>
|
||||||
Start with a disk in drive-1<br><br>
|
Start with a disk in drive-1 (and auto power-on the Apple II)<br><br>
|
||||||
-d2 <pathname><br>
|
-d2 <pathname><br>
|
||||||
Start with a disk in drive-2<br><br>
|
Start with a disk in drive-2<br><br>
|
||||||
|
-h1 <pathname><br>
|
||||||
|
Start with hard disk 1 plugged-in (and auto power-on the Apple II). NB. Hard disk controller card gets enabled.<br><br>
|
||||||
|
-h2 <pathname><br>
|
||||||
|
Start with hard disk 2 plugged-in. NB. Hard disk controller card gets enabled.<br><br>
|
||||||
-f<br>
|
-f<br>
|
||||||
Start in full-screen mode<br><br>
|
Start in full-screen mode<br><br>
|
||||||
-fs-height=<best|nnnn><br>
|
-fs-height=<best|nnnn><br>
|
||||||
|
@ -62,7 +62,7 @@
|
|||||||
<param name="Local" value="ddi-formats.html">
|
<param name="Local" value="ddi-formats.html">
|
||||||
</OBJECT>
|
</OBJECT>
|
||||||
<LI> <OBJECT type="text/sitemap">
|
<LI> <OBJECT type="text/sitemap">
|
||||||
<param name="Name" value="Harddisk Images">
|
<param name="Name" value="Hard Disk Images">
|
||||||
<param name="Local" value="ddi-harddisk.html">
|
<param name="Local" value="ddi-harddisk.html">
|
||||||
</OBJECT>
|
</OBJECT>
|
||||||
</UL>
|
</UL>
|
||||||
|
@ -822,7 +822,9 @@ void RegisterExtensions(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
void AppleWin_RegisterHotKeys(void)
|
|
||||||
|
// NB. On a restart, it's OK to call RegisterHotKey() again since the old g_hFrameWindow has been destroyed
|
||||||
|
static void AppleWin_RegisterHotKeys(void)
|
||||||
{
|
{
|
||||||
BOOL bStatus[3] = {0,0,0};
|
BOOL bStatus[3] = {0,0,0};
|
||||||
|
|
||||||
@ -906,7 +908,7 @@ LPSTR GetNextArg(LPSTR lpCmdLine)
|
|||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
static int DoDiskInsert(const int nDrive, LPCSTR szFileName)
|
static std::string GetFullPath(LPCSTR szFileName)
|
||||||
{
|
{
|
||||||
std::string strPathName;
|
std::string strPathName;
|
||||||
|
|
||||||
@ -920,17 +922,97 @@ static int DoDiskInsert(const int nDrive, LPCSTR szFileName)
|
|||||||
// Rel pathname
|
// Rel pathname
|
||||||
char szCWD[_MAX_PATH] = {0};
|
char szCWD[_MAX_PATH] = {0};
|
||||||
if (!GetCurrentDirectory(sizeof(szCWD), szCWD))
|
if (!GetCurrentDirectory(sizeof(szCWD), szCWD))
|
||||||
return false;
|
return "";
|
||||||
|
|
||||||
strPathName = szCWD;
|
strPathName = szCWD;
|
||||||
strPathName.append("\\");
|
strPathName.append("\\");
|
||||||
strPathName.append(szFileName);
|
strPathName.append(szFileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return strPathName;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool DoDiskInsert(const int nDrive, LPCSTR szFileName)
|
||||||
|
{
|
||||||
|
std::string strPathName = GetFullPath(szFileName);
|
||||||
|
if (strPathName.empty()) return false;
|
||||||
|
|
||||||
ImageError_e Error = DiskInsert(nDrive, strPathName.c_str(), IMAGE_USE_FILES_WRITE_PROTECT_STATUS, IMAGE_DONT_CREATE);
|
ImageError_e Error = DiskInsert(nDrive, strPathName.c_str(), IMAGE_USE_FILES_WRITE_PROTECT_STATUS, IMAGE_DONT_CREATE);
|
||||||
return Error == eIMAGE_ERROR_NONE;
|
return Error == eIMAGE_ERROR_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool DoHardDiskInsert(const int nDrive, LPCSTR szFileName)
|
||||||
|
{
|
||||||
|
std::string strPathName = GetFullPath(szFileName);
|
||||||
|
if (strPathName.empty()) return false;
|
||||||
|
|
||||||
|
BOOL bRes = HD_Insert(nDrive, strPathName.c_str());
|
||||||
|
return bRes ? true : false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void InsertFloppyDisks(LPSTR szImageName_drive[NUM_DRIVES], bool& bBoot)
|
||||||
|
{
|
||||||
|
if (!szImageName_drive[DRIVE_1] && !szImageName_drive[DRIVE_2])
|
||||||
|
return;
|
||||||
|
|
||||||
|
bool bRes = true;
|
||||||
|
|
||||||
|
if (szImageName_drive[DRIVE_1])
|
||||||
|
{
|
||||||
|
bRes = DoDiskInsert(DRIVE_1, szImageName_drive[DRIVE_1]);
|
||||||
|
LogFileOutput("Init: DoDiskInsert(D1), res=%d\n", bRes);
|
||||||
|
FrameRefreshStatus(DRAW_LEDS | DRAW_BUTTON_DRIVES); // floppy activity LEDs and floppy buttons
|
||||||
|
bBoot = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (szImageName_drive[DRIVE_2])
|
||||||
|
{
|
||||||
|
bRes |= DoDiskInsert(DRIVE_2, szImageName_drive[DRIVE_2]);
|
||||||
|
LogFileOutput("Init: DoDiskInsert(D2), res=%d\n", bRes);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!bRes)
|
||||||
|
MessageBox(g_hFrameWindow, "Failed to insert floppy disk(s) - see log file", "Warning", MB_ICONASTERISK | MB_OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void InsertHardDisks(LPSTR szImageName_harddisk[NUM_HARDDISKS], bool& bBoot)
|
||||||
|
{
|
||||||
|
if (!szImageName_harddisk[HARDDISK_1] && !szImageName_harddisk[HARDDISK_2])
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Enable the Harddisk controller card
|
||||||
|
|
||||||
|
HD_SetEnabled(true);
|
||||||
|
|
||||||
|
DWORD dwTmp;
|
||||||
|
if (REGLOAD(TEXT(REGVALUE_HDD_ENABLED), &dwTmp))
|
||||||
|
{
|
||||||
|
if (!dwTmp)
|
||||||
|
REGSAVE(TEXT(REGVALUE_HDD_ENABLED), 1); // Config: HDD Enabled
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
bool bRes = true;
|
||||||
|
|
||||||
|
if (szImageName_harddisk[HARDDISK_1])
|
||||||
|
{
|
||||||
|
bRes = DoHardDiskInsert(HARDDISK_1, szImageName_harddisk[HARDDISK_1]);
|
||||||
|
LogFileOutput("Init: DoHardDiskInsert(HDD1), res=%d\n", bRes);
|
||||||
|
FrameRefreshStatus(DRAW_LEDS); // harddisk activity LED
|
||||||
|
bBoot = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (szImageName_harddisk[HARDDISK_2])
|
||||||
|
{
|
||||||
|
bRes |= DoHardDiskInsert(HARDDISK_2, szImageName_harddisk[HARDDISK_2]);
|
||||||
|
LogFileOutput("Init: DoHardDiskInsert(HDD2), res=%d\n", bRes);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!bRes)
|
||||||
|
MessageBox(g_hFrameWindow, "Failed to insert harddisk(s) - see log file", "Warning", MB_ICONASTERISK | MB_OK);
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
int APIENTRY WinMain(HINSTANCE passinstance, HINSTANCE, LPSTR lpCmdLine, int)
|
int APIENTRY WinMain(HINSTANCE passinstance, HINSTANCE, LPSTR lpCmdLine, int)
|
||||||
@ -940,8 +1022,8 @@ int APIENTRY WinMain(HINSTANCE passinstance, HINSTANCE, LPSTR lpCmdLine, int)
|
|||||||
bool bBoot = false;
|
bool bBoot = false;
|
||||||
bool bChangedDisplayResolution = false;
|
bool bChangedDisplayResolution = false;
|
||||||
UINT bestWidth = 0, bestHeight = 0;
|
UINT bestWidth = 0, bestHeight = 0;
|
||||||
LPSTR szImageName_drive1 = NULL;
|
LPSTR szImageName_drive[NUM_DRIVES] = {NULL,NULL};
|
||||||
LPSTR szImageName_drive2 = NULL;
|
LPSTR szImageName_harddisk[NUM_HARDDISKS] = {NULL,NULL};
|
||||||
LPSTR szSnapshotName = NULL;
|
LPSTR szSnapshotName = NULL;
|
||||||
const std::string strCmdLine(lpCmdLine); // Keep a copy for log ouput
|
const std::string strCmdLine(lpCmdLine); // Keep a copy for log ouput
|
||||||
|
|
||||||
@ -966,13 +1048,25 @@ int APIENTRY WinMain(HINSTANCE passinstance, HINSTANCE, LPSTR lpCmdLine, int)
|
|||||||
{
|
{
|
||||||
lpCmdLine = GetCurrArg(lpNextArg);
|
lpCmdLine = GetCurrArg(lpNextArg);
|
||||||
lpNextArg = GetNextArg(lpNextArg);
|
lpNextArg = GetNextArg(lpNextArg);
|
||||||
szImageName_drive1 = lpCmdLine;
|
szImageName_drive[DRIVE_1] = lpCmdLine;
|
||||||
}
|
}
|
||||||
else if (strcmp(lpCmdLine, "-d2") == 0)
|
else if (strcmp(lpCmdLine, "-d2") == 0)
|
||||||
{
|
{
|
||||||
lpCmdLine = GetCurrArg(lpNextArg);
|
lpCmdLine = GetCurrArg(lpNextArg);
|
||||||
lpNextArg = GetNextArg(lpNextArg);
|
lpNextArg = GetNextArg(lpNextArg);
|
||||||
szImageName_drive2 = lpCmdLine;
|
szImageName_drive[DRIVE_2] = lpCmdLine;
|
||||||
|
}
|
||||||
|
else if (strcmp(lpCmdLine, "-h1") == 0)
|
||||||
|
{
|
||||||
|
lpCmdLine = GetCurrArg(lpNextArg);
|
||||||
|
lpNextArg = GetNextArg(lpNextArg);
|
||||||
|
szImageName_harddisk[HARDDISK_1] = lpCmdLine;
|
||||||
|
}
|
||||||
|
else if (strcmp(lpCmdLine, "-h2") == 0)
|
||||||
|
{
|
||||||
|
lpCmdLine = GetCurrArg(lpNextArg);
|
||||||
|
lpNextArg = GetNextArg(lpNextArg);
|
||||||
|
szImageName_harddisk[HARDDISK_2] = lpCmdLine;
|
||||||
}
|
}
|
||||||
else if (strcmp(lpCmdLine, "-load-state") == 0)
|
else if (strcmp(lpCmdLine, "-load-state") == 0)
|
||||||
{
|
{
|
||||||
@ -1225,20 +1319,6 @@ int APIENTRY WinMain(HINSTANCE passinstance, HINSTANCE, LPSTR lpCmdLine, int)
|
|||||||
DiskInitialize();
|
DiskInitialize();
|
||||||
LogFileOutput("Init: DiskInitialize()\n");
|
LogFileOutput("Init: DiskInitialize()\n");
|
||||||
|
|
||||||
int nError = 0; // TODO: Show error MsgBox if we get a DiskInsert error
|
|
||||||
if (szImageName_drive1)
|
|
||||||
{
|
|
||||||
nError = DoDiskInsert(DRIVE_1, szImageName_drive1);
|
|
||||||
LogFileOutput("Init: DoDiskInsert(D1), res=%d\n", nError);
|
|
||||||
FrameRefreshStatus(DRAW_LEDS | DRAW_BUTTON_DRIVES);
|
|
||||||
bBoot = true;
|
|
||||||
}
|
|
||||||
if (szImageName_drive2)
|
|
||||||
{
|
|
||||||
nError |= DoDiskInsert(DRIVE_2, szImageName_drive2);
|
|
||||||
LogFileOutput("Init: DoDiskInsert(D2), res=%d\n", nError);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
do
|
do
|
||||||
@ -1256,9 +1336,6 @@ int APIENTRY WinMain(HINSTANCE passinstance, HINSTANCE, LPSTR lpCmdLine, int)
|
|||||||
JoyInitialize();
|
JoyInitialize();
|
||||||
LogFileOutput("Main: JoyInitialize()\n");
|
LogFileOutput("Main: JoyInitialize()\n");
|
||||||
|
|
||||||
MemInitialize();
|
|
||||||
LogFileOutput("Main: MemInitialize()\n");
|
|
||||||
|
|
||||||
VideoInitialize(); // g_pFramebufferinfo been created now
|
VideoInitialize(); // g_pFramebufferinfo been created now
|
||||||
LogFileOutput("Main: VideoInitialize()\n");
|
LogFileOutput("Main: VideoInitialize()\n");
|
||||||
|
|
||||||
@ -1266,6 +1343,19 @@ int APIENTRY WinMain(HINSTANCE passinstance, HINSTANCE, LPSTR lpCmdLine, int)
|
|||||||
FrameCreateWindow(); // g_hFrameWindow is now valid
|
FrameCreateWindow(); // g_hFrameWindow is now valid
|
||||||
LogFileOutput("Main: FrameCreateWindow() - post\n");
|
LogFileOutput("Main: FrameCreateWindow() - post\n");
|
||||||
|
|
||||||
|
// Pre: may need g_hFrameWindow for MessageBox errors
|
||||||
|
// Post: may enable HDD, required for MemInitialize()->MemInitializeIO()
|
||||||
|
{
|
||||||
|
InsertFloppyDisks(szImageName_drive, bBoot);
|
||||||
|
szImageName_drive[DRIVE_1] = szImageName_drive[DRIVE_2] = NULL; // Don't insert on a restart
|
||||||
|
|
||||||
|
InsertHardDisks(szImageName_harddisk, bBoot);
|
||||||
|
szImageName_harddisk[HARDDISK_1] = szImageName_harddisk[HARDDISK_2] = NULL; // Don't insert on a restart
|
||||||
|
}
|
||||||
|
|
||||||
|
MemInitialize();
|
||||||
|
LogFileOutput("Main: MemInitialize()\n");
|
||||||
|
|
||||||
char szOldAppleWinVersion[sizeof(VERSIONSTRING)] = {0};
|
char szOldAppleWinVersion[sizeof(VERSIONSTRING)] = {0};
|
||||||
RegLoadString(TEXT(REG_CONFIG), TEXT(REGVALUE_VERSION), 1, szOldAppleWinVersion, sizeof(szOldAppleWinVersion));
|
RegLoadString(TEXT(REG_CONFIG), TEXT(REGVALUE_VERSION), 1, szOldAppleWinVersion, sizeof(szOldAppleWinVersion));
|
||||||
|
|
||||||
|
@ -365,9 +365,7 @@ void HD_Destroy(void)
|
|||||||
g_bSaveDiskImage = true;
|
g_bSaveDiskImage = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// pszImageFilename is qualified with path
|
// Pre: pszImageFilename is qualified with path
|
||||||
// GH#541: global as HD_Insert() is needed by the Qt frontend
|
|
||||||
// - there is no way, other than calling HD_Select() to insert an image.
|
|
||||||
BOOL HD_Insert(const int iDrive, LPCTSTR pszImageFilename)
|
BOOL HD_Insert(const int iDrive, LPCTSTR pszImageFilename)
|
||||||
{
|
{
|
||||||
if (*pszImageFilename == 0x00)
|
if (*pszImageFilename == 0x00)
|
||||||
|
Loading…
Reference in New Issue
Block a user