uvmac/setup/SPBLDOPT.c

3947 lines
72 KiB
C
Raw Normal View History

2019-07-22 22:50:34 -04:00
/*
SPBLDOPT.i
Copyright (C) 2007 Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
program SPecific BuiLD OPTions
*/
#include "COREDEFS.h"
2019-07-22 22:50:34 -04:00
/* option: model */
enum {
gbk_mdl_Twig43,
gbk_mdl_Twiggy,
gbk_mdl_128K,
gbk_mdl_512Ke,
gbk_mdl_Plus,
gbk_mdl_SE,
gbk_mdl_SEFDHD,
gbk_mdl_Classic,
gbk_mdl_PB100,
gbk_mdl_II,
gbk_mdl_IIx,
kNumModels
};
LOCALVAR int cur_mdl;
LOCALVAR ui3r olv_mdl;
LOCALPROC ResetModelOption(void)
{
cur_mdl = kListOptionAuto;
olv_mdl = 0;
}
LOCALFUNC char * GetModelName(int i)
{
char *s;
switch (i) {
case gbk_mdl_Twig43:
s = "Twig43";
break;
case gbk_mdl_Twiggy:
s = "Twiggy";
break;
case gbk_mdl_128K:
s = "128K";
break;
case gbk_mdl_512Ke:
s = "512Ke";
break;
case gbk_mdl_Plus:
s = "Plus";
break;
case gbk_mdl_SE:
s = "SE";
break;
case gbk_mdl_SEFDHD:
s = "SEFDHD";
break;
case gbk_mdl_Classic:
s = "Classic";
break;
case gbk_mdl_PB100:
s = "PB100";
break;
case gbk_mdl_II:
s = "II";
break;
case gbk_mdl_IIx:
s = "IIx";
break;
default:
s = "(unknown Model)";
break;
}
return s;
}
LOCALFUNC tMyErr TryAsModelOptionNot(void)
{
return FindNamedOption("-m", kNumModels, GetModelName,
&cur_mdl, &olv_mdl);
}
#define dfo_mdl() gbk_mdl_Plus
LOCALVAR blnr cur_mIIorIIX;
LOCALFUNC tMyErr ChooseModel(void)
{
if (kListOptionAuto == cur_mdl) {
cur_mdl = dfo_mdl();
}
cur_mIIorIIX = (gbk_mdl_II == cur_mdl) || (gbk_mdl_IIx == cur_mdl);
#if 0
if (cur_mIIorIIX) {
if (gbk_cpufam_68k == gbo_cpufam) {
err = ReportParseFailure(
"Mac II emulation is not supported on Macintosh 680x0");
}
}
#endif
return kMyErr_noErr;
}
LOCALPROC WrtOptModelOption(void)
{
WrtOptNamedOption("-m", GetModelName, cur_mdl, dfo_mdl());
}
/* option: horizontal resolution */
LOCALVAR uimr cur_hres;
LOCALVAR ui3r olv_hres;
LOCALPROC ResetHResOption(void)
{
olv_hres = 0;
}
LOCALFUNC tMyErr TryAsHResOptionNot(void)
{
return NumberTryAsOptionNot("-hres",
(long *)&cur_hres, &olv_hres);
}
LOCALFUNC uimr dfo_hres(void)
{
uimr v;
if (cur_mIIorIIX) {
v = 640;
} else if (gbk_mdl_PB100 == cur_mdl) {
v = 640;
} else {
v = 512;
}
return v;
}
LOCALFUNC tMyErr ChooseHRes(void)
{
tMyErr err;
MyPStr t;
MyPStr s;
if (0 == olv_hres) {
cur_hres = dfo_hres();
err = kMyErr_noErr;
} else {
if ((cur_hres & 0x1F) != 0) {
PStrFromCStr(t, "-hres must be a multiple of 32."
" The next lowest multiple is ");
PStrFromUimr(cur_hres & ~ 0x1F, s);
PStrAppend(t, s);
err = ReportParseFailPStr(t);
} else if (cur_hres < 128) {
err = ReportParseFailure("-hres must be >= 128");
} else if (cur_hres >= (uimr)32 * 1024) {
err = ReportParseFailure("-hres must be < 32k");
} else {
err = kMyErr_noErr;
}
}
return err;
}
LOCALPROC WrtOptHResOption(void)
{
WrtOptNumberOption("-hres", cur_hres, dfo_hres());
}
/* option: vertical resolution */
LOCALVAR uimr cur_vres;
LOCALVAR ui3r olv_vres;
LOCALPROC ResetVResOption(void)
{
olv_vres = 0;
}
LOCALFUNC tMyErr TryAsVResOptionNot(void)
{
return NumberTryAsOptionNot("-vres", (long *)&cur_vres, &olv_vres);
}
LOCALFUNC uimr dfo_vres(void)
{
uimr v;
if (cur_mIIorIIX) {
v = 480;
} else if (gbk_mdl_PB100 == cur_mdl) {
v = 400;
} else {
v = 342;
}
return v;
}
LOCALFUNC tMyErr ChooseVRes(void)
{
tMyErr err;
if (0 == olv_vres) {
cur_vres = dfo_vres();
err = kMyErr_noErr;
} else {
if (cur_vres < 128) {
err = ReportParseFailure("-vres must be >= 128");
} else if (cur_vres >= (uimr)32 * 1024) {
err = ReportParseFailure("-vres must be < 32k");
} else {
err = kMyErr_noErr;
}
}
return err;
}
LOCALPROC WrtOptVResOption(void)
{
WrtOptNumberOption("-vres", cur_vres, dfo_vres());
}
/* option: screen depth */
LOCALVAR uimr cur_ScrnDpth;
LOCALVAR ui3r olv_ScrnDpth;
LOCALPROC ResetScrnDpthOption(void)
{
olv_ScrnDpth = 0;
}
LOCALFUNC tMyErr TryAsScrnDpthOptionNot(void)
{
return NumberTryAsOptionNot("-depth",
(long *)&cur_ScrnDpth, &olv_ScrnDpth);
}
LOCALFUNC uimr dfo_ScrnDpth(void)
{
uimr v;
if (cur_mIIorIIX) {
v = 3;
} else {
v = 0;
}
return v;
}
LOCALFUNC tMyErr ChooseScrnDpth(void)
{
tMyErr err;
err = kMyErr_noErr;
if (0 == olv_ScrnDpth) {
cur_ScrnDpth = dfo_ScrnDpth();
} else {
if (cur_mIIorIIX) {
if (cur_ScrnDpth > 5) {
err = ReportParseFailure("-depth must be <= 5");
}
} else {
if (cur_ScrnDpth != 0) {
err = ReportParseFailure(
"-depth must be 0 for this model");
}
}
}
return err;
}
LOCALPROC WrtOptScrnDpth(void)
{
WrtOptNumberOption("-depth", cur_ScrnDpth, dfo_ScrnDpth());
}
/* option: Initial FullScreen */
LOCALVAR blnr WantInitFullScreen;
LOCALVAR ui3r olv_InitFullScreen;
LOCALPROC ResetInitFullScreen(void)
{
WantInitFullScreen = nanblnr;
olv_InitFullScreen = 0;
}
LOCALFUNC tMyErr TryAsInitFullScreenNot(void)
{
return BooleanTryAsOptionNot("-fullscreen",
&WantInitFullScreen, &olv_InitFullScreen);
}
LOCALFUNC blnr dfo_InitFullScreen(void)
{
blnr v;
v = gbk_targfam_wnce == gbo_targfam;
return v;
}
LOCALFUNC tMyErr ChooseInitFullScreen(void)
{
tMyErr err;
err = kMyErr_noErr;
if (nanblnr == WantInitFullScreen) {
WantInitFullScreen = dfo_InitFullScreen();
} else {
if (! WantInitFullScreen) {
if (gbk_targ_wcar == cur_targ) {
err = ReportParseFailure(
"-fullscreen 0 is not supported for -t wcar");
}
}
}
return err;
}
LOCALPROC WrtOptInitFullScreen(void)
{
WrtOptBooleanOption("-fullscreen",
WantInitFullScreen, dfo_InitFullScreen());
}
/* option: Variable FullScreen */
LOCALVAR blnr WantVarFullScreen;
LOCALVAR ui3r olv_VarFullScreen;
LOCALPROC ResetVarFullScreen(void)
{
WantVarFullScreen = nanblnr;
olv_VarFullScreen = 0;
}
LOCALFUNC tMyErr TryAsVarFullScreenNot(void)
{
return BooleanTryAsOptionNot("-var-fullscreen",
&WantVarFullScreen, &olv_VarFullScreen);
}
LOCALFUNC blnr dfo_VarFullScreen(void)
{
blnr v;
if ((gbk_apifam_gtk == gbo_apifam)
|| (gbk_targfam_wnce == gbo_targfam))
{
v = falseblnr;
} else {
v = trueblnr;
}
return v;
}
LOCALFUNC tMyErr ChooseVarFullScreen(void)
{
tMyErr err;
err = kMyErr_noErr;
if (nanblnr == WantVarFullScreen) {
WantVarFullScreen = dfo_VarFullScreen();
} else {
if (WantVarFullScreen) {
if (gbk_targ_wcar == cur_targ) {
err = ReportParseFailure(
"-var-fullscreen is not supported for -t wcar");
}
}
}
return err;
}
LOCALPROC WrtOptVarFullScreen(void)
{
WrtOptBooleanOption("-var-fullscreen",
WantVarFullScreen, dfo_VarFullScreen());
}
/* option: magnification factor */
LOCALVAR uimr cur_MagFctr;
LOCALVAR ui3r olv_MagFctr;
LOCALPROC ResetMagFctrOption(void)
{
olv_MagFctr = 0;
}
LOCALFUNC tMyErr TryAsMagFctrOptionNot(void)
{
return NumberTryAsOptionNot("-mf",
(long *)&cur_MagFctr, &olv_MagFctr);
}
LOCALFUNC uimr dfo_MagFctr(void)
{
uimr v;
if (gbk_apifam_gtk == gbo_apifam) {
/* temporary, until implemented */
v = 1;
} else {
v = 2;
}
return v;
}
LOCALFUNC tMyErr ChooseMagFctr(void)
{
tMyErr err;
err = kMyErr_noErr;
if (0 == olv_MagFctr) {
cur_MagFctr = dfo_MagFctr();
} else {
if (cur_MagFctr < 1) {
err = ReportParseFailure("-mf must be >= 1");
}
}
return err;
}
LOCALPROC WrtOptMagFctrOption(void)
{
WrtOptNumberOption("-mf", cur_MagFctr, dfo_MagFctr());
}
/* option: Initial Magnify */
LOCALVAR blnr WantInitMagnify;
LOCALVAR ui3r olv_InitMagnify;
LOCALPROC ResetInitMagnify(void)
{
WantInitMagnify = nanblnr;
olv_InitMagnify = 0;
}
LOCALFUNC tMyErr TryAsInitMagnifyNot(void)
{
return BooleanTryAsOptionNot("-magnify",
&WantInitMagnify, &olv_InitMagnify);
}
#define dfo_InitMagnify() falseblnr
LOCALFUNC tMyErr ChooseInitMagnify(void)
{
tMyErr err;
err = kMyErr_noErr;
if (nanblnr == WantInitMagnify) {
WantInitMagnify = dfo_InitMagnify();
} else {
if (WantInitMagnify && (cur_MagFctr == 1)) {
err = ReportParseFailure(
"-magnify 1 does not make sense with -mf 1");
}
}
return err;
}
LOCALPROC WrtOptInitMagnify(void)
{
WrtOptBooleanOption("-magnify",
WantInitMagnify, dfo_InitMagnify());
}
/* option: sound */
LOCALVAR blnr MySoundEnabled;
LOCALVAR ui3r olv_SoundEnabled;
LOCALPROC ResetSoundOption(void)
{
MySoundEnabled = nanblnr;
olv_SoundEnabled = 0;
}
LOCALFUNC tMyErr TryAsSoundOptionNot(void)
{
return BooleanTryAsOptionNot("-sound",
&MySoundEnabled, &olv_SoundEnabled);
}
LOCALFUNC blnr dfo_SoundEnabled(void)
{
blnr v;
v = (gbk_apifam_mac == gbo_apifam)
|| (gbk_apifam_osx == gbo_apifam)
|| (gbk_apifam_win == gbo_apifam)
|| (gbk_apifam_sdl == gbo_apifam)
|| (gbk_apifam_sd2 == gbo_apifam)
|| (gbk_apifam_cco == gbo_apifam)
|| ((gbk_apifam_xwn == gbo_apifam)
&& ((gbo_targfam == gbk_targfam_linx)
|| (gbo_targfam == gbk_targfam_fbsd)
|| (gbo_targfam == gbk_targfam_nbsd)));
return v;
}
LOCALFUNC tMyErr ChooseSoundEnabled(void)
{
if (nanblnr == MySoundEnabled) {
MySoundEnabled = dfo_SoundEnabled();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptSoundOption(void)
{
WrtOptBooleanOption("-sound", MySoundEnabled, dfo_SoundEnabled());
}
/* option: sound api */
enum {
gbk_sndapi_none,
gbk_sndapi_alsa,
gbk_sndapi_ddsp,
kNumSndApiLevels
};
LOCALVAR int gbo_sndapi;
LOCALVAR ui3r olv_sndapi;
LOCALPROC ResetSndApiOption(void)
{
gbo_sndapi = kListOptionAuto;
olv_sndapi = 0;
}
LOCALFUNC char * GetSndApiName(int i)
{
char *s;
switch (i) {
case gbk_sndapi_none:
s = "none";
break;
case gbk_sndapi_alsa:
s = "alsa";
break;
case gbk_sndapi_ddsp:
s = "ddsp";
break;
default:
s = "(unknown sound api)";
break;
}
return s;
}
LOCALFUNC tMyErr TryAsSndApiOptionNot(void)
{
return FindNamedOption("-snd-api",
kNumSndApiLevels, GetSndApiName, &gbo_sndapi, &olv_sndapi);
}
LOCALFUNC int dfo_sndapi(void)
{
int v;
if (! MySoundEnabled) {
v = gbk_sndapi_none;
} else if (gbk_apifam_xwn != gbo_apifam) {
v = gbk_sndapi_none;
} else if (gbo_targfam == gbk_targfam_linx) {
v = gbk_sndapi_alsa;
} else {
v = gbk_sndapi_ddsp;
}
return v;
}
LOCALFUNC tMyErr ChooseSndApiOption(void)
{
if (kListOptionAuto == gbo_sndapi) {
gbo_sndapi = dfo_sndapi();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptSndApiOption(void)
{
WrtOptNamedOption("-snd-api", GetSndApiName,
gbo_sndapi, dfo_sndapi());
}
/* option: sound sample size */
LOCALVAR uimr cur_SoundSampSz;
LOCALVAR ui3r olv_SoundSampSz;
LOCALPROC ResetSoundSampSzOption(void)
{
olv_SoundSampSz = 0;
}
LOCALFUNC tMyErr TryAsSoundSampSzOptionNot(void)
{
return NumberTryAsOptionNot("-sss",
(long *)&cur_SoundSampSz, &olv_SoundSampSz);
}
LOCALFUNC uimr dfo_SoundSampSz(void)
{
uimr v;
if (gbk_sndapi_ddsp == gbo_sndapi) {
v = 4;
} else {
v = 3;
}
return v;
}
LOCALFUNC tMyErr ChooseSoundSampSz(void)
{
tMyErr err;
err = kMyErr_noErr;
if (0 == olv_SoundSampSz) {
cur_SoundSampSz = dfo_SoundSampSz();
} else {
if ((cur_SoundSampSz < 3) || (cur_SoundSampSz > 4)) {
err = ReportParseFailure(
"-sss must be 3 or 4");
}
}
return err;
}
LOCALPROC WrtOptSoundSampSzOption(void)
{
WrtOptNumberOption("-sss", cur_SoundSampSz, dfo_SoundSampSz());
}
/* option: number of drives */
LOCALVAR uimr cur_numdrives;
LOCALVAR ui3r olv_numdrives;
LOCALPROC ResetNumDrivesOption(void)
{
olv_numdrives = 0;
}
LOCALFUNC tMyErr TryAsNumDrivesOptionNot(void)
{
return NumberTryAsOptionNot("-drives",
(long *)&cur_numdrives, &olv_numdrives);
}
LOCALFUNC uimr dfo_numdrives(void)
{
uimr v;
if (cur_mdl < gbk_mdl_512Ke) {
v = 2;
} else {
v = 6;
}
return v;
}
LOCALFUNC tMyErr ChooseNumDrives(void)
{
tMyErr err;
err = kMyErr_noErr;
if (0 == olv_numdrives) {
cur_numdrives = dfo_numdrives();
} else {
if ((cur_numdrives <= 0) || (cur_numdrives > 32)) {
err = ReportParseFailure(
"-drives must be a number between 1 and 32");
}
}
return err;
}
LOCALPROC WrtOptNumDrivesOption(void)
{
WrtOptNumberOption("-drives", cur_numdrives, dfo_numdrives());
}
/* option: disk driver - support tags */
LOCALVAR blnr SonySupportTags;
LOCALVAR ui3r olv_SonySupportTags;
LOCALPROC ResetSonySupportTags(void)
{
SonySupportTags = nanblnr;
olv_SonySupportTags = 0;
}
LOCALFUNC tMyErr TryAsSonySupportTagsNot(void)
{
return BooleanTryAsOptionNot("-sony-tag",
&SonySupportTags, &olv_SonySupportTags);
}
#define dfo_SonySupportTags() falseblnr
LOCALFUNC tMyErr ChooseSonySupportTags(void)
{
if (nanblnr == SonySupportTags) {
SonySupportTags = dfo_SonySupportTags();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptSonySupportTags(void)
{
WrtOptBooleanOption("-sony-tag",
SonySupportTags, dfo_SonySupportTags());
}
/* option: disk driver - calculate checksums */
LOCALVAR blnr SonyWantChecksumsUpdated;
LOCALVAR ui3r olv_SonyWantChecksumsUpdated;
LOCALPROC ResetSonyWantChecksumsUpdated(void)
{
SonyWantChecksumsUpdated = nanblnr;
olv_SonyWantChecksumsUpdated = 0;
}
LOCALFUNC tMyErr TryAsSonyWantChecksumsUpdatedNot(void)
{
return BooleanTryAsOptionNot("-sony-sum",
&SonyWantChecksumsUpdated, &olv_SonyWantChecksumsUpdated);
}
#define dfo_SonyWantChecksumsUpdated() falseblnr
LOCALFUNC tMyErr ChooseSonyWantChecksumsUpdated(void)
{
if (nanblnr == SonyWantChecksumsUpdated) {
SonyWantChecksumsUpdated = dfo_SonyWantChecksumsUpdated();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptSonyWantChecksumsUpdated(void)
{
WrtOptBooleanOption("-sony-sum",
SonyWantChecksumsUpdated, dfo_SonyWantChecksumsUpdated());
}
/* option: disk driver - support disk copy 4.2 format */
LOCALVAR blnr SonySupportDC42;
LOCALVAR ui3r olv_SonySupportDC42;
LOCALPROC ResetSonySupportDC42(void)
{
SonySupportDC42 = nanblnr;
olv_SonySupportDC42 = 0;
}
LOCALFUNC tMyErr TryAsSonySupportDC42Not(void)
{
return BooleanTryAsOptionNot("-sony-dc42",
&SonySupportDC42, &olv_SonySupportDC42);
}
#define dfo_SonySupportDC42() trueblnr
LOCALFUNC tMyErr ChooseSonySupportDC42(void)
{
if (nanblnr == SonySupportDC42) {
SonySupportDC42 = dfo_SonySupportDC42();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptSonySupportDC42(void)
{
WrtOptBooleanOption("-sony-dc42",
SonySupportDC42, dfo_SonySupportDC42());
}
/* option: Save Dialog Enable */
LOCALVAR blnr gbo_SaveDialogEnable;
LOCALVAR ui3r olv_SaveDialogEnable;
LOCALPROC ResetSaveDialogEnable(void)
{
gbo_SaveDialogEnable = nanblnr;
olv_SaveDialogEnable = 0;
}
LOCALFUNC tMyErr TryAsSaveDialogEnable(void)
{
return BooleanTryAsOptionNot("-svd",
&gbo_SaveDialogEnable, &olv_SaveDialogEnable);
}
#define dfo_SaveDialogEnable() trueblnr
LOCALFUNC tMyErr ChooseSaveDialogEnable(void)
{
if (nanblnr == gbo_SaveDialogEnable) {
gbo_SaveDialogEnable = dfo_SaveDialogEnable();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptSaveDialogEnable(void)
{
WrtOptBooleanOption("-svd",
gbo_SaveDialogEnable, dfo_SaveDialogEnable());
}
/* option: Insert Ith Disk Image */
LOCALVAR blnr WantInsertIthDisk;
LOCALVAR ui3r olv_InsertIthDisk;
LOCALPROC ResetInsertIthDisk(void)
{
WantInsertIthDisk = nanblnr;
olv_InsertIthDisk = 0;
}
LOCALFUNC tMyErr TryAsInsertIthDisk(void)
{
return BooleanTryAsOptionNot("-iid",
&WantInsertIthDisk, &olv_InsertIthDisk);
}
#define dfo_InsertIthDisk() falseblnr
LOCALFUNC tMyErr ChooseInsertIthDisk(void)
{
if (nanblnr == WantInsertIthDisk) {
WantInsertIthDisk = dfo_InsertIthDisk();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptInsertIthDisk(void)
{
WrtOptBooleanOption("-iid",
WantInsertIthDisk, dfo_InsertIthDisk());
}
/* option: Command Option Swap */
LOCALVAR blnr WantCmndOptSwap;
LOCALVAR ui3r olv_CmndOptSwap;
LOCALPROC ResetCmndOptSwap(void)
{
WantCmndOptSwap = falseblnr;
olv_CmndOptSwap = 0;
}
LOCALFUNC tMyErr TryAsCmndOptSwapNot(void)
{
return FlagTryAsOptionNot("-ccs",
&WantCmndOptSwap, &olv_CmndOptSwap);
}
LOCALFUNC tMyErr ChooseCmndOptSwap(void)
{
return kMyErr_noErr;
}
LOCALPROC WrtOptCmndOptSwap(void)
{
WrtOptFlagOption("-ccs", WantCmndOptSwap);
}
/* option: key mapping */
enum {
gbk_keynam_Control,
gbk_keynam_Command,
gbk_keynam_Option,
gbk_keynam_Shift,
gbk_keynam_CapsLock,
gbk_keynam_Escape,
gbk_keynam_BackSlash,
gbk_keynam_Slash,
gbk_keynam_Grave,
gbk_keynam_Enter,
gbk_keynam_PageUp,
gbk_keynam_PageDown,
gbk_keynam_Home,
gbk_keynam_End,
gbk_keynam_Help,
gbk_keynam_ForwardDel,
gbk_keynam_F1,
gbk_keynam_F2,
gbk_keynam_F3,
gbk_keynam_F4,
gbk_keynam_F5,
kNumKeyNames
};
enum {
gbk_keynam_RControl = kNumKeyNames,
gbk_keynam_RCommand,
gbk_keynam_ROption,
gbk_keynam_RShift,
kNumSrcKeyNames
};
enum {
gbk_keynam_CM = kNumKeyNames,
kNumDstKeyNames
};
LOCALVAR ui3b gbo_keymap[kNumSrcKeyNames];
LOCALVAR ui3r olv_keymap[kNumSrcKeyNames];
LOCALPROC ResetKeyMapOption(void)
{
uimr i;
for (i = 0; i < kNumSrcKeyNames; ++i) {
gbo_keymap[i] = 0xFF;
olv_keymap[i] = 0;
}
}
LOCALFUNC char * GetKeyMapName(int i)
{
char *s;
switch (i) {
case gbk_keynam_Control:
s = "Control";
break;
case gbk_keynam_Command:
s = "Command";
break;
case gbk_keynam_Option:
s = "Option";
break;
case gbk_keynam_Shift:
s = "Shift";
break;
case gbk_keynam_CapsLock:
s = "CapsLock";
break;
case gbk_keynam_Escape:
s = "Escape";
break;
case gbk_keynam_BackSlash:
s = "BackSlash";
break;
case gbk_keynam_Slash:
s = "Slash";
break;
case gbk_keynam_Grave:
s = "Grave";
break;
case gbk_keynam_Enter:
s = "Enter";
break;
case gbk_keynam_PageUp:
s = "PageUp";
break;
case gbk_keynam_PageDown:
s = "PageDown";
break;
case gbk_keynam_Home:
s = "Home";
break;
case gbk_keynam_End:
s = "End";
break;
case gbk_keynam_Help:
s = "Help";
break;
case gbk_keynam_ForwardDel:
s = "ForwardDel";
break;
case gbk_keynam_F1:
s = "F1";
break;
case gbk_keynam_F2:
s = "F2";
break;
case gbk_keynam_F3:
s = "F3";
break;
case gbk_keynam_F4:
s = "F4";
break;
case gbk_keynam_F5:
s = "F5";
break;
default:
s = "(unknown key)";
break;
}
return s;
}
LOCALFUNC char * GetSrcKeyMapName(int i)
{
char *s;
switch (i) {
case gbk_keynam_RControl:
s = "RControl";
break;
case gbk_keynam_RCommand:
s = "RCommand";
break;
case gbk_keynam_ROption:
s = "ROption";
break;
case gbk_keynam_RShift:
s = "RShift";
break;
default:
s = GetKeyMapName(i);
break;
}
return s;
}
LOCALFUNC char * GetDstKeyMapName(int i)
{
char *s;
switch (i) {
case gbk_keynam_CM:
s = "CM";
break;
default:
s = GetKeyMapName(i);
break;
}
return s;
}
LOCALFUNC tMyErr TryAsKeyMapOptionNot(void)
{
tMyErr err;
MyPStr t;
int k;
int j;
if (! CurArgIsCStr_v2("-km")) {
err = kMyErrNoMatch;
} else
if (kMyErr_noErr != (err = AdvanceTheArg())) {
/* fail */
} else
if (The_arg_end) {
PStrFromCStr(t,
"Expecting a src argument for -km when reached end");
err = ReportParseFailPStr(t);
} else
if (! GetCurArgNameIndex(kNumSrcKeyNames, GetSrcKeyMapName, &k)) {
PStrFromCStr(t, "Unknown source value for -km");
err = ReportParseFailPStr(t);
} else
if (olv_keymap[k] == olv_cur) {
PStrFromCStr(t,
"same -km src value has appeared more than once");
err = ReportParseFailPStr(t);
} else
if (kMyErr_noErr != (err = AdvanceTheArg())) {
/* fail */
} else
if (The_arg_end) {
PStrFromCStr(t,
"Expecting a dst argument for -km when reached end");
err = ReportParseFailPStr(t);
} else
if (! GetCurArgNameIndex(kNumDstKeyNames, GetDstKeyMapName, &j)) {
if (CurArgIsCStr_v2("*")) {
olv_keymap[k] = olv_cur;
gbo_keymap[k] = 0xFF;
err = AdvanceTheArg();
} else
{
PStrFromCStr(t, "Unknown dst value for -km");
err = ReportParseFailPStr(t);
}
} else
{
olv_keymap[k] = olv_cur;
gbo_keymap[k] = j;
err = AdvanceTheArg();
}
return err;
}
LOCALPROC dfo_keyset(ui3b *a, uimr i, ui3r v)
{
a[i] = v;
if (0xFF == gbo_keymap[i]) {
gbo_keymap[i] = v;
}
}
LOCALPROC dfo_keymap(ui3b *a)
{
uimr i;
dfo_keyset(a, gbk_keynam_Control,
WantCmndOptSwap ? gbk_keynam_Command : gbk_keynam_CM);
dfo_keyset(a, gbk_keynam_Command,
WantCmndOptSwap ? gbk_keynam_CM : gbk_keynam_Command);
for (i = gbk_keynam_Option; i <= gbk_keynam_ForwardDel; ++i) {
dfo_keyset(a, i, i);
}
dfo_keyset(a, gbk_keynam_F1, gbk_keynam_Option);
dfo_keyset(a, gbk_keynam_F2, gbk_keynam_Command);
for (i = gbk_keynam_F3; i <= gbk_keynam_F5; ++i) {
dfo_keyset(a, i, i);
}
dfo_keyset(a, gbk_keynam_RControl, gbo_keymap[gbk_keynam_Control]);
dfo_keyset(a, gbk_keynam_RCommand, gbo_keymap[gbk_keynam_Command]);
dfo_keyset(a, gbk_keynam_ROption, gbo_keymap[gbk_keynam_Option]);
dfo_keyset(a, gbk_keynam_RShift, gbo_keymap[gbk_keynam_Shift]);
}
LOCALFUNC ui3r KeyMapInverse(uimr v)
{
uimr i;
for (i = 0; i < kNumSrcKeyNames; ++i) {
if (v == gbo_keymap[i]) {
return i;
}
}
return 0xFF;
}
LOCALVAR ui3r ControlModeKey;
LOCALFUNC tMyErr ChooseKeyMap(void)
{
tMyErr err;
ui3b a[kNumSrcKeyNames];
dfo_keymap(a);
ControlModeKey = KeyMapInverse(gbk_keynam_CM);
if (0xFF == ControlModeKey) {
err = ReportParseFailure(
"-km : no key maps to CM");
} else {
err = kMyErr_noErr;
}
return err;
}
LOCALPROC WrtOptKeyMap(void)
{
ui3b a[kNumSrcKeyNames];
uimr i;
dfo_keymap(a);
for (i = 0; i < kNumSrcKeyNames; ++i) {
if (gbo_keymap[i] != a[i]) {
WriteCStrToDestFile(" -km ");
WriteCStrToDestFile(GetSrcKeyMapName(i));
WriteCStrToDestFile(" ");
WriteCStrToDestFile(GetDstKeyMapName(gbo_keymap[i]));
}
}
}
/* option: emulated key toggle mapping */
LOCALVAR int gbo_EKTMap;
LOCALVAR ui3r olv_EKTMap;
LOCALPROC ResetEKTMapOption(void)
{
gbo_EKTMap = kListOptionAuto;
olv_EKTMap = 0;
}
LOCALFUNC tMyErr TryAsEKTMapOptionNot(void)
{
return FindNamedOption("-ekt",
kNumKeyNames, GetKeyMapName, &gbo_EKTMap, &olv_EKTMap);
}
LOCALFUNC int dfo_EKTMap(void)
{
blnr a[kNumKeyNames];
uimr i;
uimr j;
for (i = 0; i < kNumKeyNames; ++i) {
a[i] = falseblnr;
}
for (i = 0; i < kNumSrcKeyNames; ++i) {
j = gbo_keymap[i];
if (j < kNumKeyNames) {
a[j] = trueblnr;
}
}
for (i = 0; i < kNumKeyNames; ++i) {
if (! a[i]) {
return i;
}
}
return gbk_keynam_Control;
}
LOCALFUNC tMyErr ChooseEKTMap(void)
{
if (kListOptionAuto == gbo_EKTMap) {
gbo_EKTMap = dfo_EKTMap();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptEKTMap(void)
{
WrtOptNamedOption("-ekt", GetKeyMapName, gbo_EKTMap, dfo_EKTMap());
}
/* option: Alternate Keyboard Mode */
LOCALVAR blnr WantAltKeysMode;
LOCALVAR ui3r olv_WantAltKeysMode;
LOCALPROC ResetAltKeysMode(void)
{
WantAltKeysMode = falseblnr;
olv_WantAltKeysMode = 0;
}
LOCALFUNC tMyErr TryAsAltKeysModeNot(void)
{
return FlagTryAsOptionNot("-akm",
&WantAltKeysMode, &olv_WantAltKeysMode);
}
LOCALFUNC tMyErr ChooseAltKeysMode(void)
{
return kMyErr_noErr;
}
LOCALPROC WrtOptAltKeysMode(void)
{
WrtOptFlagOption("-akm", WantAltKeysMode);
}
/* option: ItnlKyBdFix */
LOCALVAR blnr ItnlKyBdFix;
LOCALVAR ui3r olv_ItnlKyBdFix;
LOCALPROC ResetItnlKyBdFixOption(void)
{
ItnlKyBdFix = nanblnr;
}
LOCALFUNC tMyErr TryAsItnlKyBdFixNot(void)
{
return BooleanTryAsOptionNot("-ikb",
&ItnlKyBdFix, &olv_ItnlKyBdFix);
}
LOCALFUNC blnr dfo_ItnlKyBdFix(void)
{
blnr v;
v = (gbk_apifam_win == gbo_apifam);
return v;
}
LOCALFUNC tMyErr ChooseItnlKyBdFix(void)
{
tMyErr err = kMyErr_noErr;
if (nanblnr == ItnlKyBdFix) {
ItnlKyBdFix = dfo_ItnlKyBdFix();
} else {
if (ItnlKyBdFix) {
if (gbk_apifam_win != gbo_apifam) {
err = ReportParseFailure("-ikb is only for Windows");
}
}
}
return err;
}
LOCALPROC WrtOptItnlKyBdFix(void)
{
WrtOptBooleanOption("-ikb", ItnlKyBdFix, dfo_ItnlKyBdFix());
}
/* option: LocalTalk emulation */
LOCALVAR blnr WantLocalTalk;
LOCALVAR ui3r olv_LocalTalk;
LOCALPROC ResetLocalTalk(void)
{
WantLocalTalk = falseblnr;
olv_LocalTalk = 0;
}
LOCALFUNC tMyErr TryAsLocalTalkNot(void)
{
return FlagTryAsOptionNot("-lt", &WantLocalTalk, &olv_LocalTalk);
}
LOCALFUNC tMyErr ChooseLocalTalk(void)
{
tMyErr err;
err = kMyErr_noErr;
if (WantLocalTalk) {
if ((gbk_apifam_osx != gbo_apifam)
&& (gbk_apifam_cco != gbo_apifam))
{
err = ReportParseFailure(
"-lt is so far only implemented for OS X");
}
}
return err;
}
LOCALPROC WrtOptLocalTalk(void)
{
WrtOptFlagOption("-lt", WantLocalTalk);
}
/* option: initial speed */
enum {
gbk_speed_AllOut,
gbk_speed_1X,
gbk_speed_2X,
gbk_speed_4X,
gbk_speed_8X,
gbk_speed_16X,
gbk_speed_32X,
kNumSpeeds
};
LOCALVAR int CurInitSpeed;
LOCALVAR ui3r olv_InitSpeed;
LOCALPROC ResetInitSpeedOption(void)
{
CurInitSpeed = kListOptionAuto;
olv_InitSpeed = 0;
}
LOCALFUNC char * GetInitSpeedName(int i)
{
char *s;
switch (i) {
case gbk_speed_AllOut:
s = "a";
break;
case gbk_speed_1X:
s = "z";
break;
case gbk_speed_2X:
s = "1";
break;
case gbk_speed_4X:
s = "2";
break;
case gbk_speed_8X:
s = "3";
break;
case gbk_speed_16X:
s = "4";
break;
case gbk_speed_32X:
s = "5";
break;
default:
s = "(unknown Speed)";
break;
}
return s;
}
LOCALFUNC tMyErr TryAsInitSpeedOptionNot(void)
{
return FindNamedOption("-speed",
kNumSpeeds, GetInitSpeedName, &CurInitSpeed, &olv_InitSpeed);
}
LOCALFUNC int dfo_InitSpeed(void)
{
int v;
if (cur_mIIorIIX) {
v = gbk_speed_4X;
} else {
v = gbk_speed_8X;
}
return v;
}
LOCALFUNC tMyErr ChooseInitSpeed(void)
{
if (kListOptionAuto == CurInitSpeed) {
CurInitSpeed = dfo_InitSpeed();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptInitSpeedOption(void)
{
WrtOptNamedOption("-speed", GetInitSpeedName,
CurInitSpeed, dfo_InitSpeed());
}
/* option: Initial Run In Background */
LOCALVAR blnr WantInitBackground;
LOCALVAR ui3r olv_InitBackground;
LOCALPROC ResetInitBackground(void)
{
WantInitBackground = nanblnr;
olv_InitBackground = 0;
}
LOCALFUNC tMyErr TryAsInitBackgroundNot(void)
{
return BooleanTryAsOptionNot("-bg",
&WantInitBackground, &olv_InitBackground);
}
LOCALFUNC blnr dfo_InitBackground(void)
{
blnr v;
if (WantLocalTalk) {
v = trueblnr;
} else {
v = falseblnr;
}
return v;
}
LOCALFUNC tMyErr ChooseInitBackground(void)
{
if (nanblnr == WantInitBackground) {
WantInitBackground = dfo_InitBackground();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptInitBackground(void)
{
WrtOptBooleanOption("-bg", WantInitBackground,
dfo_InitBackground());
}
/* option: Initial AutoSlow */
LOCALVAR blnr WantInitAutoSlow;
LOCALVAR ui3r olv_InitAutoSlow;
LOCALPROC ResetInitAutoSlow(void)
{
WantInitAutoSlow = nanblnr;
olv_InitAutoSlow = 0;
}
LOCALFUNC tMyErr TryAsInitAutoSlowNot(void)
{
return BooleanTryAsOptionNot("-as",
&WantInitAutoSlow, &olv_InitAutoSlow);
}
LOCALFUNC blnr dfo_InitAutoSlow(void)
{
blnr v;
v = ! cur_mIIorIIX;
return v;
}
LOCALFUNC tMyErr ChooseInitAutoSlow(void)
{
if (nanblnr == WantInitAutoSlow) {
WantInitAutoSlow = dfo_InitAutoSlow();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptInitAutoSlow(void)
{
WrtOptBooleanOption("-as", WantInitAutoSlow, dfo_InitAutoSlow());
}
/* option: Timing Accuracy */
LOCALVAR uimr timingacc;
LOCALVAR ui3r olv_timingacc;
LOCALPROC ResetTimingAccuracyOption(void)
{
olv_timingacc = 0;
}
LOCALFUNC tMyErr TryAsTimingAccuracyOptionNot(void)
{
return NumberTryAsOptionNot("-ta",
(long *)&timingacc, &olv_timingacc);
}
#define dfo_timingacc() 1
LOCALFUNC tMyErr ChooseTimingAccuracy(void)
{
if (0 == olv_timingacc) {
timingacc = dfo_timingacc();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptTimingAccuracy(void)
{
WrtOptNumberOption("-ta", timingacc, dfo_timingacc());
}
/* option: Emulated CPU version */
LOCALVAR uimr em_cpu_vers;
LOCALVAR ui3r olv_em_cpu_vers;
LOCALPROC ResetEmCpuVersOption(void)
{
olv_em_cpu_vers = 0;
}
LOCALFUNC tMyErr TryAsEmCpuVersOptionNot(void)
{
return NumberTryAsOptionNot("-em-cpu",
(long *)&em_cpu_vers, &olv_em_cpu_vers);
}
LOCALFUNC uimr dfo_em_cpu_vers(void)
{
uimr v;
if (cur_mIIorIIX) {
v = 2;
} else {
v = 0;
}
return v;
}
LOCALFUNC tMyErr ChooseEmCpuVers(void)
{
if (0 == olv_em_cpu_vers) {
em_cpu_vers = dfo_em_cpu_vers();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptEmCpuVers(void)
{
WrtOptNumberOption("-em-cpu", em_cpu_vers, dfo_em_cpu_vers());
}
/* option: memory size */
enum {
gbk_msz_128K,
gbk_msz_512K,
gbk_msz_1M,
gbk_msz_2M,
gbk_msz_2_5M,
gbk_msz_4M,
gbk_msz_5M,
gbk_msz_8M,
kNumMemSizs
};
LOCALVAR int cur_msz;
LOCALVAR ui3r olv_msz;
LOCALPROC ResetMemSizOption(void)
{
cur_msz = kListOptionAuto;
olv_msz = 0;
}
LOCALFUNC char * GetMemSizName(int i)
{
char *s;
switch (i) {
case gbk_msz_128K:
s = "128K";
break;
case gbk_msz_512K:
s = "512K";
break;
case gbk_msz_1M:
s = "1M";
break;
case gbk_msz_2M:
s = "2M";
break;
case gbk_msz_2_5M:
s = "2.5M";
break;
case gbk_msz_4M:
s = "4M";
break;
case gbk_msz_5M:
s = "5M";
break;
case gbk_msz_8M:
s = "8M";
break;
default:
s = "(unknown Memory Size)";
break;
}
return s;
}
LOCALFUNC tMyErr TryAsMemSizOptionNot(void)
{
return FindNamedOption("-mem",
kNumMemSizs, GetMemSizName, &cur_msz, &olv_msz);
}
LOCALFUNC int dfo_msz(void)
{
int v;
switch (cur_mdl) {
case gbk_mdl_Twig43:
case gbk_mdl_Twiggy:
case gbk_mdl_128K:
v = gbk_msz_128K;
break;
case gbk_mdl_512Ke:
v = gbk_msz_512K;
break;
case gbk_mdl_II:
case gbk_mdl_IIx:
v = gbk_msz_8M;
break;
case gbk_mdl_Plus:
case gbk_mdl_SE:
case gbk_mdl_SEFDHD:
case gbk_mdl_Classic:
case gbk_mdl_PB100:
default:
v = gbk_msz_4M;
break;
}
if (gbk_targfam_lnds == gbo_targfam) {
if (v > gbk_msz_2M) {
v = gbk_msz_2M;
}
}
return v;
}
LOCALFUNC tMyErr ChooseMemSiz(void)
{
if (kListOptionAuto == cur_msz) {
cur_msz = dfo_msz();
} else {
/* should error check here */
/* no, checked in ChooseMemBankSizes */
}
return kMyErr_noErr;
}
LOCALPROC WrtOptMemSizOption(void)
{
WrtOptNamedOption("-mem", GetMemSizName, cur_msz, dfo_msz());
}
/* memory bank sizes */
LOCALVAR uimr RAMa_Size;
LOCALVAR uimr RAMb_Size;
#define ln2_msz_64K 16
#define ln2_msz_128K 17
#define ln2_msz_256K 18
#define ln2_msz_512K 19
#define ln2_msz_1M 20
#define ln2_msz_2M 21
#define ln2_msz_4M 22
#define ln2_msz_8M 23
LOCALFUNC tMyErr ChooseMemBankSizes(void)
{
tMyErr err;
RAMa_Size = 0;
RAMb_Size = 0;
switch (cur_mdl) {
case gbk_mdl_Twig43:
case gbk_mdl_Twiggy:
case gbk_mdl_128K:
case gbk_mdl_512Ke:
if (cur_msz == gbk_msz_128K) {
RAMa_Size = ln2_msz_128K;
} else
if (cur_msz == gbk_msz_512K) {
RAMa_Size = ln2_msz_512K;
} else
{
/* unsupported */
}
break;
case gbk_mdl_Plus:
case gbk_mdl_SE:
case gbk_mdl_SEFDHD:
case gbk_mdl_Classic:
if (cur_msz == gbk_msz_128K) {
if (gbk_mdl_Plus == cur_mdl) {
RAMa_Size = ln2_msz_128K;
}
} else
if (cur_msz == gbk_msz_512K) {
RAMa_Size = ln2_msz_512K;
} else
if (cur_msz == gbk_msz_1M) {
RAMa_Size = ln2_msz_512K;
RAMb_Size = ln2_msz_512K;
} else
if (cur_msz == gbk_msz_2M) {
RAMa_Size = ln2_msz_2M;
} else
if (cur_msz == gbk_msz_2_5M) {
RAMa_Size = ln2_msz_2M;
RAMb_Size = ln2_msz_512K;
} else
if (cur_msz == gbk_msz_4M) {
RAMa_Size = ln2_msz_2M;
RAMb_Size = ln2_msz_2M;
} else
{
/* unsupported */
}
break;
case gbk_mdl_II:
case gbk_mdl_IIx:
if (cur_msz == gbk_msz_1M) {
RAMa_Size = ln2_msz_1M;
} else
if (cur_msz == gbk_msz_2M) {
RAMa_Size = ln2_msz_1M;
RAMb_Size = ln2_msz_1M;
} else
if (cur_msz == gbk_msz_4M) {
RAMa_Size = ln2_msz_4M;
} else
if (cur_msz == gbk_msz_5M) {
RAMa_Size = ln2_msz_4M;
RAMb_Size = ln2_msz_1M;
} else
if (cur_msz == gbk_msz_8M) {
RAMa_Size = ln2_msz_4M;
RAMb_Size = ln2_msz_4M;
} else
{
/* unsupported */
}
break;
case gbk_mdl_PB100:
if (cur_msz == gbk_msz_4M) {
RAMa_Size = ln2_msz_4M;
} else
{
/* unsupported */
}
default:
/* unsupported */
break;
}
if (0 == RAMa_Size) {
err = ReportParseFailure(
"memory size (-mem) unsupported for this model (-m)");
} else {
err = kMyErr_noErr;
}
return err;
}
/* option: Parameter RAM CaretBlinkTime */
/* usually in 3 (Fast), 8 (Medium), 15 (Slow) */
LOCALVAR uimr cur_CaretBlinkTime;
LOCALVAR ui3r olv_CaretBlinkTime;
LOCALPROC ResetCaretBlinkTimeOption(void)
{
olv_CaretBlinkTime = 0;
}
LOCALFUNC tMyErr TryAsCaretBlinkTimeOptionNot(void)
{
return NumberTryAsOptionNot("-cbt",
(long *)&cur_CaretBlinkTime, &olv_CaretBlinkTime);
}
LOCALFUNC uimr dfo_CaretBlinkTime(void)
{
uimr v;
if (cur_mIIorIIX) {
v = 8;
} else {
v = 3;
}
return v;
}
LOCALFUNC tMyErr ChooseCaretBlinkTime(void)
{
tMyErr err;
err = kMyErr_noErr;
if (0 == olv_CaretBlinkTime) {
cur_CaretBlinkTime = dfo_CaretBlinkTime();
} else {
if ((cur_CaretBlinkTime <= 0) || (cur_CaretBlinkTime > 15)) {
err = ReportParseFailure(
"-cbt must be a number between 1 and 15");
}
}
return err;
}
LOCALPROC WrtOptCaretBlinkTime(void)
{
WrtOptNumberOption("-cbt",
cur_CaretBlinkTime, dfo_CaretBlinkTime());
}
/* option: Parameter RAM DoubleClickTime */
/* usually in 5 (Fast), 8 (Medium), 12 (Slow) */
LOCALVAR uimr cur_DoubleClickTime;
LOCALVAR ui3r olv_DoubleClickTime;
LOCALPROC ResetDoubleClickTimeOption(void)
{
olv_DoubleClickTime = 0;
}
LOCALFUNC tMyErr TryAsDoubleClickTimeOptionNot(void)
{
return NumberTryAsOptionNot("-dct",
(long *)&cur_DoubleClickTime, &olv_DoubleClickTime);
}
LOCALFUNC uimr dfo_DoubleClickTime(void)
{
uimr v;
if (cur_mIIorIIX) {
v = 8;
} else {
v = 5;
}
return v;
}
LOCALFUNC tMyErr ChooseDoubleClickTime(void)
{
tMyErr err;
err = kMyErr_noErr;
if (0 == olv_DoubleClickTime) {
cur_DoubleClickTime = dfo_DoubleClickTime();
} else {
if ((cur_DoubleClickTime <= 0) || (cur_DoubleClickTime > 15)) {
err = ReportParseFailure(
"-dct must be a number between 1 and 15");
}
}
return err;
}
LOCALPROC WrtOptDoubleClickTime(void)
{
WrtOptNumberOption("-dct",
cur_DoubleClickTime, dfo_DoubleClickTime());
}
/* option: Parameter RAM MenuBlink */
/* in 0..3 */
LOCALVAR uimr cur_MenuBlink;
LOCALVAR ui3r olv_MenuBlink;
LOCALPROC ResetMenuBlinkOption(void)
{
olv_MenuBlink = 0;
}
LOCALFUNC tMyErr TryAsMenuBlinkOptionNot(void)
{
return NumberTryAsOptionNot("-mnb",
(long *)&cur_MenuBlink, &olv_MenuBlink);
}
#define dfo_MenuBlink() 3
LOCALFUNC tMyErr ChooseMenuBlink(void)
{
tMyErr err;
err = kMyErr_noErr;
if (0 == olv_MenuBlink) {
cur_MenuBlink = dfo_MenuBlink();
} else {
if (cur_MenuBlink > 3) {
err = ReportParseFailure(
"-mnb must be a number between 0 and 3");
}
}
return err;
}
LOCALPROC WrtOptMenuBlink(void)
{
WrtOptNumberOption("-mnb", cur_MenuBlink, dfo_MenuBlink());
}
/* option: Parameter RAM AutoKeyThresh */
/* usually in 0 (Off), A (Long), 6, 4, 3 (Short) */
LOCALVAR uimr cur_AutoKeyThresh;
LOCALVAR ui3r olv_AutoKeyThresh;
LOCALPROC ResetAutoKeyThreshOption(void)
{
olv_AutoKeyThresh = 0;
}
LOCALFUNC tMyErr TryAsAutoKeyThreshOptionNot(void)
{
return NumberTryAsOptionNot("-kyt",
(long *)&cur_AutoKeyThresh, &olv_AutoKeyThresh);
}
#define dfo_AutoKeyThresh() 6
LOCALFUNC tMyErr ChooseAutoKeyThresh(void)
{
tMyErr err;
err = kMyErr_noErr;
if (0 == olv_AutoKeyThresh) {
cur_AutoKeyThresh = dfo_AutoKeyThresh();
} else {
if (cur_AutoKeyThresh > 15) {
err = ReportParseFailure(
"-kyt must be a number between 0 and 15");
}
}
return err;
}
LOCALPROC WrtOptAutoKeyThresh(void)
{
WrtOptNumberOption("-kyt", cur_AutoKeyThresh, dfo_AutoKeyThresh());
}
/* option: Parameter RAM AutoKeyRate */
/* usually in 0 (Slow), 6, 4, 3, 1 (Fast) */
LOCALVAR uimr cur_AutoKeyRate;
LOCALVAR ui3r olv_AutoKeyRate;
LOCALPROC ResetAutoKeyRateOption(void)
{
olv_AutoKeyRate = 0;
}
LOCALFUNC tMyErr TryAsAutoKeyRateOptionNot(void)
{
return NumberTryAsOptionNot("-kyr",
(long *)&cur_AutoKeyRate, &olv_AutoKeyRate);
}
#define dfo_AutoKeyRate() 3
LOCALFUNC tMyErr ChooseAutoKeyRate(void)
{
tMyErr err;
err = kMyErr_noErr;
if (0 == olv_AutoKeyRate) {
cur_AutoKeyRate = dfo_AutoKeyRate();
} else {
if (cur_AutoKeyRate > 15) {
err = ReportParseFailure(
"-kyr must be a number between 0 and 15");
}
}
return err;
}
LOCALPROC WrtOptAutoKeyRate(void)
{
WrtOptNumberOption("-kyr", cur_AutoKeyRate, dfo_AutoKeyRate());
}
LOCALFUNC tMyErr ChooseHilColPart(char *s, uimr *cur_HilColV,
ui3r olv_HilColV, uimr dfo_HilColV)
{
tMyErr err;
MyPStr t;
err = kMyErr_noErr;
if (0 == olv_HilColV) {
*cur_HilColV = dfo_HilColV;
} else {
if (! cur_mIIorIIX) {
if (0 != *cur_HilColV) {
PStrFromCStr(t, s);
PStrApndCStr(t,
" not allowed for this emulated computer");
err = ReportParseFailPStr(t);
}
} else
if (*cur_HilColV > 65535) {
PStrFromCStr(t, s);
PStrApndCStr(t, " must be a number between 0 and 65535");
err = ReportParseFailPStr(t);
}
}
return err;
}
/* option: Parameter RAM HilColRed */
LOCALVAR uimr cur_HilColRed;
LOCALVAR ui3r olv_HilColRed;
LOCALPROC ResetHilColRedOption(void)
{
olv_HilColRed = 0;
}
LOCALFUNC tMyErr TryAsHilColRedOptionNot(void)
{
return NumberTryAsOptionNot("-hcr",
(long *)&cur_HilColRed, &olv_HilColRed);
}
#define dfo_HilColRed() 0
LOCALFUNC tMyErr ChooseHilColRed(void)
{
return ChooseHilColPart("-hcr", &cur_HilColRed, olv_HilColRed,
dfo_HilColRed());
}
LOCALPROC WrtOptHilColRed(void)
{
WrtOptNumberOption("-hcr", cur_HilColRed, dfo_HilColRed());
}
/* option: Parameter RAM HilColGreen */
LOCALVAR uimr cur_HilColGreen;
LOCALVAR ui3r olv_HilColGreen;
LOCALPROC ResetHilColGreenOption(void)
{
olv_HilColGreen = 0;
}
LOCALFUNC tMyErr TryAsHilColGreenOptionNot(void)
{
return NumberTryAsOptionNot("-hcg",
(long *)&cur_HilColGreen, &olv_HilColGreen);
}
#define dfo_HilColGreen() 0
LOCALFUNC tMyErr ChooseHilColGreen(void)
{
return ChooseHilColPart("-hcg", &cur_HilColGreen, olv_HilColGreen,
dfo_HilColGreen());
}
LOCALPROC WrtOptHilColGreen(void)
{
WrtOptNumberOption("-hcg", cur_HilColGreen, dfo_HilColGreen());
}
/* option: Parameter RAM HilColBlue */
LOCALVAR uimr cur_HilColBlue;
LOCALVAR ui3r olv_HilColBlue;
LOCALPROC ResetHilColBlueOption(void)
{
olv_HilColBlue = 0;
}
LOCALFUNC tMyErr TryAsHilColBlueOptionNot(void)
{
return NumberTryAsOptionNot("-hcb",
(long *)&cur_HilColBlue, &olv_HilColBlue);
}
#define dfo_HilColBlue() 0
LOCALFUNC tMyErr ChooseHilColBlue(void)
{
return ChooseHilColPart("-hcb", &cur_HilColBlue, olv_HilColBlue,
dfo_HilColBlue());
}
LOCALPROC WrtOptHilColBlue(void)
{
WrtOptNumberOption("-hcb", cur_HilColBlue, dfo_HilColBlue());
}
/* option: Automatic Location */
LOCALVAR blnr WantAutoLocation;
LOCALVAR ui3r olv_AutoLocation;
LOCALPROC ResetAutoLocation(void)
{
WantAutoLocation = nanblnr;
olv_AutoLocation = 0;
}
LOCALFUNC tMyErr TryAsAutoLocationNot(void)
{
return BooleanTryAsOptionNot("-alc",
&WantAutoLocation, &olv_AutoLocation);
}
#define dfo_AutoLocation() trueblnr
LOCALFUNC tMyErr ChooseAutoLocation(void)
{
tMyErr err;
err = kMyErr_noErr;
if (nanblnr == WantAutoLocation) {
WantAutoLocation = dfo_AutoLocation();
} else {
if (cur_mdl < gbk_mdl_Plus) {
err = ReportParseFailure(
"-alc not supported for this model (-m)");
}
}
return err;
}
LOCALPROC WrtOptAutoLocation(void)
{
WrtOptBooleanOption("-alc", WantAutoLocation, dfo_AutoLocation());
}
/* option: Location Latitude */
LOCALVAR uimr cur_InitLatitude;
LOCALVAR ui3r olv_InitLatitude;
LOCALPROC ResetInitLatitudeOption(void)
{
olv_InitLatitude = 0;
}
LOCALFUNC tMyErr TryAsInitLatitudeOptionNot(void)
{
return NumberTryAsOptionNot("-lcy",
(long *)&cur_InitLatitude, &olv_InitLatitude);
}
#define dfo_InitLatitude() 0
LOCALFUNC tMyErr ChooseInitLatitude(void)
{
tMyErr err;
err = kMyErr_noErr;
if (0 == olv_InitLatitude) {
cur_InitLatitude = dfo_InitLatitude();
} else {
if (cur_mdl < gbk_mdl_Plus) {
err = ReportParseFailure(
"-lcy not supported for this model (-m)");
}
}
return err;
}
LOCALPROC WrtOptInitLatitude(void)
{
if (! WantAutoLocation) {
WrtOptSimrOption("-lcy", cur_InitLatitude, dfo_InitLatitude());
}
}
/* option: Location Longitude */
LOCALVAR simr cur_InitLongitude;
LOCALVAR ui3r olv_InitLongitude;
LOCALPROC ResetInitLongitudeOption(void)
{
olv_InitLongitude = 0;
}
LOCALFUNC tMyErr TryAsInitLongitudeOptionNot(void)
{
return NumberTryAsOptionNot("-lcx",
&cur_InitLongitude, &olv_InitLongitude);
}
#define dfo_InitLongitude() 0
LOCALFUNC tMyErr ChooseInitLongitude(void)
{
tMyErr err;
err = kMyErr_noErr;
if (0 == olv_InitLongitude) {
cur_InitLongitude = dfo_InitLongitude();
} else {
if (cur_mdl < gbk_mdl_Plus) {
err = ReportParseFailure(
"-lcx not supported for this model (-m)");
}
}
return err;
}
LOCALPROC WrtOptInitLongitude(void)
{
if (! WantAutoLocation) {
WrtOptSimrOption("-lcx", cur_InitLongitude,
dfo_InitLongitude());
}
}
/* option: Automatic Time Zone */
LOCALVAR blnr WantAutoTimeZone;
LOCALVAR ui3r olv_AutoTimeZone;
LOCALPROC ResetAutoTimeZone(void)
{
WantAutoTimeZone = nanblnr;
olv_AutoTimeZone = 0;
}
LOCALFUNC tMyErr TryAsAutoTimeZoneNot(void)
{
return BooleanTryAsOptionNot("-atz",
&WantAutoTimeZone, &olv_AutoTimeZone);
}
#define dfo_AutoTimeZone() trueblnr
LOCALFUNC tMyErr ChooseAutoTimeZone(void)
{
tMyErr err;
err = kMyErr_noErr;
if (nanblnr == WantAutoTimeZone) {
WantAutoTimeZone = dfo_AutoTimeZone();
} else {
if (cur_mdl < gbk_mdl_Plus) {
err = ReportParseFailure(
"-atz not supported for this model (-m)");
}
}
return err;
}
LOCALPROC WrtOptAutoTimeZone(void)
{
WrtOptBooleanOption("-atz", WantAutoTimeZone, dfo_AutoTimeZone());
}
/* option: Daylight Savings Time */
LOCALVAR blnr WantTzDST;
LOCALVAR ui3r olv_TzDST;
LOCALPROC ResetTzDST(void)
{
WantTzDST = nanblnr;
olv_TzDST = 0;
}
LOCALFUNC tMyErr TryAsTzDSTNot(void)
{
return BooleanTryAsOptionNot("-lcd",
&WantTzDST, &olv_TzDST);
}
#define dfo_TzDST() falseblnr
LOCALFUNC tMyErr ChooseTzDST(void)
{
tMyErr err;
err = kMyErr_noErr;
if (nanblnr == WantTzDST) {
WantTzDST = dfo_TzDST();
} else {
if (cur_mdl < gbk_mdl_Plus) {
err = ReportParseFailure(
"-lcd not supported for this model (-m)");
}
}
return err;
}
LOCALPROC WrtOptTzDST(void)
{
if (! WantAutoTimeZone) {
WrtOptBooleanOption("-lcd", WantTzDST, dfo_TzDST());
}
}
/* option: Time Zone Delta Hours */
LOCALVAR simr cur_TzDeltH;
LOCALVAR ui3r olv_TzDeltH;
LOCALPROC ResetTzDeltHOption(void)
{
olv_TzDeltH = 0;
}
LOCALFUNC tMyErr TryAsTzDeltHOptionNot(void)
{
return NumberTryAsOptionNot("-lcz",
&cur_TzDeltH, &olv_TzDeltH);
}
/* option: Time Zone Delta Seconds */
LOCALVAR simr cur_TzDeltS;
LOCALVAR ui3r olv_TzDeltS;
LOCALPROC ResetTzDeltSOption(void)
{
olv_TzDeltS = 0;
}
LOCALFUNC tMyErr TryAsTzDeltSOptionNot(void)
{
return NumberTryAsOptionNot("-lczs",
&cur_TzDeltS, &olv_TzDeltS);
}
#define dfo_TzDeltS() 0
LOCALFUNC tMyErr ChooseTzDeltS(void)
{
tMyErr err;
err = kMyErr_noErr;
if (cur_mdl < gbk_mdl_Plus) {
if ((0 != olv_TzDeltS) || (0 != olv_TzDeltH)) {
err = ReportParseFailure(
"-lczs and -lcz are not supported for this model (-m)");
}
} else if (0 == olv_TzDeltS) {
if (0 == olv_TzDeltH) {
cur_TzDeltS = dfo_TzDeltS();
} else {
cur_TzDeltS = cur_TzDeltH * 3600;
}
} else {
if (0 != olv_TzDeltH) {
err = ReportParseFailure(
"-lczs and -lcz can not both be used");
}
}
return err;
}
LOCALPROC WrtOptTzDeltS(void)
{
if (! WantAutoTimeZone) {
simr t = cur_TzDeltS / 3600;
if (t * 3600 == cur_TzDeltS) {
WrtOptSimrOption("-lcz", t, 0);
} else {
WrtOptSimrOption("-lczs", cur_TzDeltS, dfo_TzDeltS());
}
}
}
/* option: Speaker Volume */
/* usually in 3 (Fast), 8 (Medium), 15 (Slow) */
LOCALVAR uimr cur_SpeakerVol;
LOCALVAR ui3r olv_SpeakerVol;
LOCALPROC ResetSpeakerVolOption(void)
{
olv_SpeakerVol = 0;
}
LOCALFUNC tMyErr TryAsSpeakerVolOptionNot(void)
{
return NumberTryAsOptionNot("-svl",
(long *)&cur_SpeakerVol, &olv_SpeakerVol);
}
LOCALFUNC uimr dfo_SpeakerVol(void)
{
uimr v;
if (MySoundEnabled) {
v = 7;
} else {
v = 0;
}
return v;
}
LOCALFUNC tMyErr ChooseSpeakerVol(void)
{
tMyErr err;
err = kMyErr_noErr;
if (0 == olv_SpeakerVol) {
cur_SpeakerVol = dfo_SpeakerVol();
} else {
if (cur_SpeakerVol >= 8) {
err = ReportParseFailure(
"-svl must be a number between 0 and 7");
}
}
return err;
}
LOCALPROC WrtOptSpeakerVol(void)
{
WrtOptNumberOption("-svl", cur_SpeakerVol, dfo_SpeakerVol());
}
/* option: Minimum Extension */
LOCALVAR blnr WantMinExtn;
LOCALVAR ui3r olv_WantMinExtn;
LOCALPROC ResetWantMinExtn(void)
{
WantMinExtn = falseblnr;
olv_WantMinExtn = 0;
}
LOCALFUNC tMyErr TryAsWantMinExtnNot(void)
{
return FlagTryAsOptionNot("-min-extn",
&WantMinExtn, &olv_WantMinExtn);
}
LOCALFUNC tMyErr ChooseWantMinExtn(void)
{
return kMyErr_noErr;
}
LOCALPROC WrtOptMinExtn(void)
{
WrtOptFlagOption("-min-extn", WantMinExtn);
}
/* option: MouseMotion */
LOCALVAR blnr MyMouseMotion;
LOCALVAR ui3r olv_MouseMotion;
LOCALPROC ResetMouseMotionOption(void)
{
MyMouseMotion = nanblnr;
olv_MouseMotion = 0;
}
LOCALFUNC tMyErr TryAsMouseMotionOptionNot(void)
{
return BooleanTryAsOptionNot("-emm",
&MyMouseMotion, &olv_MouseMotion);
}
LOCALFUNC blnr dfo_MouseMotion(void)
{
blnr v;
v = (gbk_apifam_gtk != gbo_apifam);
return v;
}
LOCALFUNC tMyErr ChooseMouseMotion(void)
{
if (nanblnr == MyMouseMotion) {
MyMouseMotion = dfo_MouseMotion();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptMouseMotion(void)
{
WrtOptBooleanOption("-emm", MyMouseMotion, dfo_MouseMotion());
}
/* option: GrabKeysFullScreen */
LOCALVAR blnr WantGrabKeysFS;
LOCALVAR ui3r olv_GrabKeysFS;
LOCALPROC ResetGrabKeysFS(void)
{
WantGrabKeysFS = nanblnr;
olv_GrabKeysFS = 0;
}
LOCALFUNC tMyErr TryAsGrabKeysFSNot(void)
{
return BooleanTryAsOptionNot("-gkf",
&WantGrabKeysFS, &olv_GrabKeysFS);
}
#define dfo_GrabKeysFS() trueblnr
LOCALFUNC tMyErr ChooseGrabKeysFS(void)
{
if (nanblnr == WantGrabKeysFS) {
WantGrabKeysFS = dfo_GrabKeysFS();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptGrabKeysFS(void)
{
WrtOptBooleanOption("-gkf", WantGrabKeysFS, dfo_GrabKeysFS());
}
/* option: Enable Control Interrupt */
LOCALVAR blnr WantEnblCtrlInt;
LOCALVAR ui3r olv_EnblCtrlInt;
LOCALPROC ResetEnblCtrlInt(void)
{
WantEnblCtrlInt = nanblnr;
olv_EnblCtrlInt = 0;
}
LOCALFUNC tMyErr TryAsEnblCtrlIntNot(void)
{
return BooleanTryAsOptionNot("-eci",
&WantEnblCtrlInt, &olv_EnblCtrlInt);
}
#define dfo_EnblCtrlInt() trueblnr
LOCALFUNC tMyErr ChooseEnblCtrlInt(void)
{
if (nanblnr == WantEnblCtrlInt) {
WantEnblCtrlInt = dfo_EnblCtrlInt();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptEnblCtrlInt(void)
{
WrtOptBooleanOption("-eci", WantEnblCtrlInt, dfo_EnblCtrlInt());
}
/* option: Enable Control Reset */
LOCALVAR blnr WantEnblCtrlRst;
LOCALVAR ui3r olv_EnblCtrlRst;
LOCALPROC ResetEnblCtrlRst(void)
{
WantEnblCtrlRst = nanblnr;
olv_EnblCtrlRst = 0;
}
LOCALFUNC tMyErr TryAsEnblCtrlRstNot(void)
{
return BooleanTryAsOptionNot("-ecr",
&WantEnblCtrlRst, &olv_EnblCtrlRst);
}
#define dfo_EnblCtrlRst() trueblnr
LOCALFUNC tMyErr ChooseEnblCtrlRst(void)
{
if (nanblnr == WantEnblCtrlRst) {
WantEnblCtrlRst = dfo_EnblCtrlRst();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptEnblCtrlRst(void)
{
WrtOptBooleanOption("-ecr", WantEnblCtrlRst, dfo_EnblCtrlRst());
}
/* option: Enable Control K (emulated control toggle) */
LOCALVAR blnr WantEnblCtrlKtg;
LOCALVAR ui3r olv_EnblCtrlKtg;
LOCALPROC ResetEnblCtrlKtg(void)
{
WantEnblCtrlKtg = nanblnr;
olv_EnblCtrlKtg = 0;
}
LOCALFUNC tMyErr TryAsEnblCtrlKtgNot(void)
{
return BooleanTryAsOptionNot("-eck",
&WantEnblCtrlKtg, &olv_EnblCtrlKtg);
}
#define dfo_EnblCtrlKtg() trueblnr
LOCALFUNC tMyErr ChooseEnblCtrlKtg(void)
{
if (nanblnr == WantEnblCtrlKtg) {
WantEnblCtrlKtg = dfo_EnblCtrlKtg();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptEnblCtrlKtg(void)
{
WrtOptBooleanOption("-eck", WantEnblCtrlKtg, dfo_EnblCtrlKtg());
}
/* option: Want Color Image */
LOCALVAR blnr WantColorImage;
LOCALVAR ui3r olv_ColorImage;
LOCALPROC ResetWantColorImage(void)
{
WantColorImage = nanblnr;
olv_ColorImage = 0;
}
LOCALFUNC tMyErr TryAsWantColorImageNot(void)
{
return BooleanTryAsOptionNot("-ci",
&WantColorImage, &olv_ColorImage);
}
LOCALFUNC blnr dfo_ColorImage(void)
{
blnr v;
if (gbk_apifam_xwn == gbo_apifam) {
v = trueblnr;
} else {
/* leave as default */
v = nanblnr;
}
return v;
}
LOCALFUNC tMyErr ChooseWantColorImage(void)
{
tMyErr err;
err = kMyErr_noErr;
if (nanblnr == WantColorImage) {
WantColorImage = dfo_ColorImage();
} else {
if (gbk_apifam_xwn != gbo_apifam) {
err = ReportParseFailure(
"-ci is only for -api xwn");
} else
if ((! WantColorImage) && (cur_ScrnDpth != 0)) {
err = ReportParseFailure(
"-ci 0 requires -depth 0");
} else
{
/* ok */
}
}
return err;
}
LOCALPROC WrtOptColorImage(void)
{
WrtOptBooleanOption("-ci", WantColorImage, dfo_ColorImage());
}
/* option: Alternate Happy Mac Icons */
enum {
gbk_AHM_none,
gbk_AHM_aside,
gbk_AHM_cheese,
gbk_AHM_evil,
gbk_AHM_horror,
gbk_AHM_lady_mac,
gbk_AHM_moustache,
gbk_AHM_nerdy,
gbk_AHM_pirate,
gbk_AHM_sleepy,
gbk_AHM_sly,
gbk_AHM_sunglasses,
gbk_AHM_surprise,
gbk_AHM_tongue,
gbk_AHM_yuck,
gbk_AHM_zombie,
kNumAHMs
};
LOCALVAR int cur_AltHappyMac;
LOCALVAR ui3r olv_AltHappyMac;
LOCALPROC ResetAltHappyMacOption(void)
{
cur_AltHappyMac = kListOptionAuto;
olv_AltHappyMac = 0;
}
LOCALFUNC char * GetAltHappyMacName(int i)
{
char *s;
switch (i) {
case gbk_AHM_none:
s = "none";
break;
case gbk_AHM_aside:
s = "aside";
break;
case gbk_AHM_cheese:
s = "cheese";
break;
case gbk_AHM_evil:
s = "evil";
break;
case gbk_AHM_horror:
s = "horror";
break;
case gbk_AHM_lady_mac:
s = "lady_mac";
break;
case gbk_AHM_moustache:
s = "moustache";
break;
case gbk_AHM_nerdy:
s = "nerdy";
break;
case gbk_AHM_pirate:
s = "pirate";
break;
case gbk_AHM_sleepy:
s = "sleepy";
break;
case gbk_AHM_sly:
s = "sly";
break;
case gbk_AHM_sunglasses:
s = "sunglasses";
break;
case gbk_AHM_surprise:
s = "surprise";
break;
case gbk_AHM_tongue:
s = "tongue";
break;
case gbk_AHM_yuck:
s = "yuck";
break;
case gbk_AHM_zombie:
s = "zombie";
break;
default:
s = "(unknown Alt Happy Mac Icon)";
break;
}
return s;
}
LOCALFUNC tMyErr TryAsAltHappyMacOptionNot(void)
{
return FindNamedOption("-ahm", kNumAHMs, GetAltHappyMacName,
&cur_AltHappyMac, &olv_AltHappyMac);
}
#define dfo_AltHappyMac() gbk_AHM_none
LOCALFUNC tMyErr ChooseAltHappyMac(void)
{
if (kListOptionAuto == cur_AltHappyMac) {
cur_AltHappyMac = dfo_AltHappyMac();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptAltHappyMac(void)
{
WrtOptNamedOption("-ahm", GetAltHappyMacName,
cur_AltHappyMac, dfo_AltHappyMac());
}
/* option: ROM size */
LOCALVAR uimr cur_RomSize;
LOCALVAR ui3r olv_RomSize;
LOCALPROC ResetRomSizeOption(void)
{
olv_RomSize = 0;
}
LOCALFUNC tMyErr TryAsRomSizeOptionNot(void)
{
return NumberTryAsOptionNot("-rsz",
(long *)&cur_RomSize, &olv_RomSize);
}
LOCALFUNC uimr dfo_RomSize(void)
{
uimr v;
switch (cur_mdl) {
case gbk_mdl_Twig43:
case gbk_mdl_Twiggy:
case gbk_mdl_128K:
v = ln2_msz_64K; /* 64 KB */
break;
case gbk_mdl_512Ke:
case gbk_mdl_Plus:
v = ln2_msz_128K; /* 128 KB */
break;
case gbk_mdl_SE:
case gbk_mdl_SEFDHD:
case gbk_mdl_PB100:
case gbk_mdl_II:
case gbk_mdl_IIx:
v = ln2_msz_256K; /* 256 KB */
break;
case gbk_mdl_Classic:
default:
v = ln2_msz_512K; /* 512 KB */
break;
}
return v;
}
LOCALFUNC tMyErr ChooseRomSize(void)
{
tMyErr err;
err = kMyErr_noErr;
if (0 == olv_RomSize) {
cur_RomSize = dfo_RomSize();
} else {
if ((cur_RomSize < 16) || (cur_RomSize > 31)) {
err = ReportParseFailure(
"-rsz must be a number between 16 and 31");
}
}
return err;
}
LOCALPROC WrtOptRomSize(void)
{
WrtOptNumberOption("-rsz", cur_RomSize, dfo_RomSize());
}
/* option: Want Check RomCheck Sum */
LOCALVAR blnr WantCheckRomCheckSum;
LOCALVAR ui3r olv_CheckRomCheckSum;
LOCALPROC ResetCheckRomCheckSum(void)
{
WantCheckRomCheckSum = nanblnr;
olv_CheckRomCheckSum = 0;
}
LOCALFUNC tMyErr TryAsCheckRomCheckSumNot(void)
{
return BooleanTryAsOptionNot("-chr",
&WantCheckRomCheckSum, &olv_CheckRomCheckSum);
}
#define dfo_CheckRomCheckSum() trueblnr
LOCALFUNC tMyErr ChooseCheckRomCheckSum(void)
{
if (nanblnr == WantCheckRomCheckSum) {
WantCheckRomCheckSum = dfo_CheckRomCheckSum();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptCheckRomCheckSum(void)
{
WrtOptBooleanOption("-chr",
WantCheckRomCheckSum, dfo_CheckRomCheckSum());
}
/* option: Want Disable Rom Check */
LOCALVAR blnr WantDisableRomCheck;
LOCALVAR ui3r olv_DisableRomCheck;
LOCALPROC ResetDisableRomCheck(void)
{
WantDisableRomCheck = nanblnr;
olv_DisableRomCheck = 0;
}
LOCALFUNC tMyErr TryAsDisableRomCheckNot(void)
{
return BooleanTryAsOptionNot("-drc",
&WantDisableRomCheck, &olv_DisableRomCheck);
}
#define dfo_DisableRomCheck() trueblnr
LOCALFUNC tMyErr ChooseDisableRomCheck(void)
{
if (nanblnr == WantDisableRomCheck) {
WantDisableRomCheck = dfo_DisableRomCheck();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptDisableRomCheck(void)
{
WrtOptBooleanOption("-drc",
WantDisableRomCheck, dfo_DisableRomCheck());
}
/* option: Want Disable Ram Test */
LOCALVAR blnr WantDisableRamTest;
LOCALVAR ui3r olv_DisableRamTest;
LOCALPROC ResetDisableRamTest(void)
{
WantDisableRamTest = nanblnr;
olv_DisableRamTest = 0;
}
LOCALFUNC tMyErr TryAsDisableRamTestNot(void)
{
return BooleanTryAsOptionNot("-drt",
&WantDisableRamTest, &olv_DisableRamTest);
}
#define dfo_DisableRamTest() trueblnr
LOCALFUNC tMyErr ChooseDisableRamTest(void)
{
if (nanblnr == WantDisableRamTest) {
WantDisableRamTest = dfo_DisableRamTest();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptDisableRamTest(void)
{
WrtOptBooleanOption("-drt",
WantDisableRamTest, dfo_DisableRamTest());
}
/* option: Want Disassembly */
LOCALVAR blnr WantDisasm;
LOCALVAR ui3r olv_WantDisasm;
LOCALPROC ResetWantDisasm(void)
{
WantDisasm = nanblnr;
olv_WantDisasm = 0;
}
LOCALFUNC tMyErr TryAsWantDisasmNot(void)
{
return BooleanTryAsOptionNot("-dis",
&WantDisasm, &olv_WantDisasm);
}
#define dfo_WantDisasm() falseblnr
LOCALFUNC tMyErr ChooseWantDisasm(void)
{
if (nanblnr == WantDisasm) {
WantDisasm = dfo_WantDisasm();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptWantDisasmNot(void)
{
WrtOptBooleanOption("-dis", WantDisasm, dfo_WantDisasm());
}
/* option: dbglog_HAVE */
LOCALVAR blnr DbgLogHAVE;
LOCALVAR ui3r olv_DbgLogHAVE;
LOCALPROC ResetDbgLogHAVE(void)
{
DbgLogHAVE = nanblnr;
olv_DbgLogHAVE = 0;
}
LOCALFUNC tMyErr TryAsDbgLogHAVENot(void)
{
return BooleanTryAsOptionNot("-log", &DbgLogHAVE, &olv_DbgLogHAVE);
}
#define dfo_DbgLogHAVE() WantDisasm
LOCALFUNC tMyErr ChooseDbgLogHAVE(void)
{
if (nanblnr == DbgLogHAVE) {
DbgLogHAVE = dfo_DbgLogHAVE();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptDbgLogHAVE(void)
{
WrtOptBooleanOption("-log", DbgLogHAVE, dfo_DbgLogHAVE());
}
/* option: Abnormal Reports */
LOCALVAR blnr gbo_AbnormalReports;
LOCALVAR ui3r olv_AbnormalReports;
LOCALPROC ResetAbnormalReports(void)
{
gbo_AbnormalReports = nanblnr;
olv_AbnormalReports = 0;
}
LOCALFUNC tMyErr TryAsAbnormalReportsNot(void)
{
return BooleanTryAsOptionNot("-abr", &gbo_AbnormalReports,
&olv_AbnormalReports);
}
#define dfo_AbnormalReports() DbgLogHAVE
LOCALFUNC tMyErr ChooseAbnormalReports(void)
{
if (nanblnr == gbo_AbnormalReports) {
gbo_AbnormalReports = dfo_AbnormalReports();
}
return kMyErr_noErr;
}
LOCALPROC WrtOptAbnormalReports(void)
{
WrtOptBooleanOption("-abr", gbo_AbnormalReports,
dfo_AbnormalReports());
}
/* option: Screen VSync */
LOCALVAR blnr WantScreenVSync;
LOCALVAR ui3r olv_ScreenVSync;
LOCALPROC ResetScreenVSync(void)
{
WantScreenVSync = nanblnr;
olv_ScreenVSync = 0;
}
LOCALFUNC tMyErr TryAsScreenVSyncNot(void)
{
return BooleanTryAsOptionNot("-vsync",
&WantScreenVSync, &olv_ScreenVSync);
}
#define dfo_ScreenVSync() falseblnr
LOCALFUNC tMyErr ChooseScreenVSync(void)
{
tMyErr err;
err = kMyErr_noErr;
if (nanblnr == WantScreenVSync) {
WantScreenVSync = dfo_ScreenVSync();
} else {
if (WantScreenVSync && (gbk_apifam_osx != gbo_apifam)) {
err = ReportParseFailure(
"-vsync is so far only implemented for OS X");
}
}
return err;
}
LOCALPROC WrtOptScreenVSync(void)
{
WrtOptBooleanOption("-vsync", WantScreenVSync, dfo_ScreenVSync());
}
/* option: Graphics Switching */
LOCALVAR blnr WantGraphicsSwitching;
LOCALVAR ui3r olv_GraphicsSwitching;
LOCALPROC ResetGraphicsSwitching(void)
{
WantGraphicsSwitching = nanblnr;
olv_GraphicsSwitching = 0;
}
LOCALFUNC tMyErr TryAsGraphicsSwitchingNot(void)
{
return BooleanTryAsOptionNot("-gse",
&WantGraphicsSwitching, &olv_GraphicsSwitching);
}
#define dfo_GraphicsSwitching() falseblnr
LOCALFUNC tMyErr ChooseGraphicsSwitching(void)
{
tMyErr err;
err = kMyErr_noErr;
if (nanblnr == WantGraphicsSwitching) {
WantGraphicsSwitching = dfo_GraphicsSwitching();
} else {
if (WantGraphicsSwitching && (gbk_apifam_cco != gbo_apifam)) {
err = ReportParseFailure(
"-gse is so far only implemented for cocoa on OS X");
}
}
return err;
}
LOCALPROC WrtOptGraphicsSwitching(void)
{
WrtOptBooleanOption("-gse", WantGraphicsSwitching,
dfo_GraphicsSwitching());
}
/* option: Signing */
LOCALVAR blnr WantSigning;
LOCALVAR ui3r olv_Signing;
LOCALPROC ResetSigning(void)
{
WantSigning = nanblnr;
olv_Signing = 0;
}
LOCALFUNC tMyErr TryAsSigningNot(void)
{
return BooleanTryAsOptionNot("-sgn",
&WantSigning, &olv_Signing);
}
LOCALFUNC blnr dfo_Signing(void)
{
blnr v;
v = (gbk_apifam_cco == gbo_apifam);
return v;
}
LOCALFUNC tMyErr ChooseSigning(void)
{
tMyErr err;
err = kMyErr_noErr;
if (nanblnr == WantSigning) {
WantSigning = dfo_Signing();
} else {
if (WantSigning && (gbk_apifam_cco != gbo_apifam)) {
err = ReportParseFailure(
"-sgn is so far only implemented for cocoa on OS X");
}
}
return err;
}
LOCALPROC WrtOptSigning(void)
{
WrtOptBooleanOption("-sgn", WantSigning,
dfo_Signing());
}
/* option: Sandbox */
LOCALVAR blnr WantSandbox;
LOCALVAR ui3r olv_Sandbox;
LOCALPROC ResetSandbox(void)
{
WantSandbox = nanblnr;
olv_Sandbox = 0;
}
LOCALFUNC tMyErr TryAsSandboxNot(void)
{
return BooleanTryAsOptionNot("-sbx",
&WantSandbox, &olv_Sandbox);
}
#define dfo_Sandbox() falseblnr
LOCALFUNC tMyErr ChooseSandbox(void)
{
tMyErr err;
err = kMyErr_noErr;
if (nanblnr == WantSandbox) {
WantSandbox = dfo_Sandbox();
} else {
if (WantSandbox) {
if (gbk_apifam_cco != gbo_apifam) {
err = ReportParseFailure("-sbx"
" is so far only implemented for cocoa on OS X");
} else
if (! WantSigning) {
err = ReportParseFailure("-sbx"
" requires -sgn 1");
} else
{
/* ok */
}
}
}
return err;
}
LOCALPROC WrtOptSandbox(void)
{
WrtOptBooleanOption("-sbx", WantSandbox,
dfo_Sandbox());
}
/* ------ */
LOCALVAR blnr NeedScrnHack;
LOCALVAR blnr NeedVidMem;
LOCALFUNC tMyErr ChooseScreenOpts(void)
{
tMyErr err;
err = kMyErr_noErr;
if (! cur_mIIorIIX) {
if (cur_hres * cur_vres > (uimr)2 * 1024 * 1024) {
err = ReportParseFailure(
"-hres and -vres multiplied must be < 2M");
}
}
if ((gbk_mdl_PB100 == cur_mdl)
|| cur_mIIorIIX)
{
NeedScrnHack = falseblnr;
NeedVidMem = trueblnr;
} else {
NeedScrnHack = (cur_hres != dfo_hres())
|| (cur_vres != dfo_vres());
NeedVidMem = NeedScrnHack;
}
return err;
}
LOCALVAR blnr EmVidCard;
/* video memory size */
LOCALVAR uimr VidMemSize;
LOCALFUNC tMyErr ChooseVidMemSize(void)
{
tMyErr err;
EmVidCard = cur_mIIorIIX;
VidMemSize = (((cur_hres * cur_vres) << cur_ScrnDpth) + 7) >> 3;
--VidMemSize;
VidMemSize |= (VidMemSize >> 1);
VidMemSize |= (VidMemSize >> 2);
VidMemSize |= (VidMemSize >> 4);
VidMemSize |= (VidMemSize >> 8);
VidMemSize |= (VidMemSize >> 16);
++VidMemSize;
err = kMyErr_noErr;
if (! NeedVidMem) {
VidMemSize = 0;
} else if (EmVidCard) {
if (VidMemSize > 4 * 1024 * 1024) {
err = ReportParseFailure(
"video memory must be <= 4M");
} else if (VidMemSize <= 0x00008000) {
VidMemSize = 0x00008000;
}
} else if (gbk_mdl_PB100 == cur_mdl) {
VidMemSize = 0x00008000;
} else {
/* VidMemSize = 0x00020000; */
if (VidMemSize > 256 * 1024) {
err = ReportParseFailure(
"video memory must be <= 256K");
} else if (VidMemSize <= 0x00004000) {
VidMemSize = 0x00004000;
}
}
return err;
}
/* figure out what hardware to emulate */
LOCALVAR blnr EmClassicKbrd;
LOCALVAR blnr EmADB;
LOCALVAR blnr EmRTC;
LOCALVAR blnr EmPMU;
LOCALVAR blnr EmVIA2;
LOCALVAR blnr EmASC;
LOCALFUNC tMyErr ChooseMiscEmHardware(void)
{
EmClassicKbrd = cur_mdl <= gbk_mdl_Plus;
if (EmClassicKbrd) {
EmADB = falseblnr;
EmRTC = trueblnr;
EmPMU = falseblnr;
} else
if ((cur_mdl <= gbk_mdl_Classic)
|| cur_mIIorIIX)
{
EmADB = trueblnr;
EmRTC = trueblnr;
EmPMU = falseblnr;
} else
{
EmADB = falseblnr;
EmRTC = falseblnr;
EmPMU = trueblnr;
}
EmVIA2 = cur_mIIorIIX;
EmASC = (gbk_mdl_PB100 == cur_mdl) || cur_mIIorIIX;
return kMyErr_noErr;
}
/* total memory size */
#define dbglog_buflnsz 18
#define kLn2SoundBuffers 4 /* kSoundBuffers must be a power of two */
#define kLnOneBuffLen 9
#define dbhBufferSize (((1UL << kLn2SoundBuffers) + 1UL) \
<< (kLnOneBuffLen + cur_SoundSampSz - 3))
#define vMacScreenNumBytes ((((cur_hres * cur_vres) \
<< cur_ScrnDpth) + 7) >> 3)
LOCALVAR uimr TotMemSize;
LOCALFUNC tMyErr ChooseTotMemSize(void)
{
TotMemSize = 0;
if (DbgLogHAVE) {
TotMemSize += (1 << dbglog_buflnsz);
}
/* CntrlDisplayBuff */
TotMemSize += vMacScreenNumBytes;
/* screencomparebuff */
TotMemSize += vMacScreenNumBytes;
if (1 != cur_MagFctr) {
/* ScalingBuff */
TotMemSize += vMacScreenNumBytes * cur_MagFctr * cur_MagFctr;
/* ScalingTabl */
TotMemSize += 256 * cur_MagFctr;
}
if (MySoundEnabled) {
/* TheSoundBuffer */
TotMemSize += dbhBufferSize;
}
TotMemSize += (1 << RAMa_Size);
if (0 != RAMb_Size) {
TotMemSize += (1 << RAMb_Size);
}
if (EmVidCard) {
TotMemSize += 0x000800; /* kVidROM_Size */
}
if (NeedVidMem) {
TotMemSize += VidMemSize;
}
TotMemSize += 512 * 1024UL;
/* for M68KITAB */
return kMyErr_noErr;
}
/* ------ */
LOCALPROC SPResetCommandLineParameters(void)
{
ResetModelOption();
ResetHResOption();
ResetVResOption();
ResetScrnDpthOption();
ResetInitFullScreen();
ResetVarFullScreen();
ResetMagFctrOption();
ResetInitMagnify();
ResetSoundOption();
ResetSndApiOption();
ResetSoundSampSzOption();
ResetNumDrivesOption();
ResetSonySupportTags();
ResetSonyWantChecksumsUpdated();
ResetSonySupportDC42();
ResetSaveDialogEnable();
ResetInsertIthDisk();
ResetCmndOptSwap();
ResetKeyMapOption();
ResetEKTMapOption();
ResetAltKeysMode();
ResetItnlKyBdFixOption();
ResetLocalTalk();
ResetInitSpeedOption();
ResetInitBackground();
ResetInitAutoSlow();
ResetTimingAccuracyOption();
ResetEmCpuVersOption();
ResetMemSizOption();
ResetCaretBlinkTimeOption();
ResetDoubleClickTimeOption();
ResetMenuBlinkOption();
ResetAutoKeyThreshOption();
ResetAutoKeyRateOption();
ResetHilColRedOption();
ResetHilColGreenOption();
ResetHilColBlueOption();
ResetAutoLocation();
ResetInitLatitudeOption();
ResetInitLongitudeOption();
ResetAutoTimeZone();
ResetTzDST();
ResetTzDeltHOption();
ResetTzDeltSOption();
ResetSpeakerVolOption();
ResetWantMinExtn();
ResetMouseMotionOption();
ResetGrabKeysFS();
ResetEnblCtrlInt();
ResetEnblCtrlRst();
ResetEnblCtrlKtg();
ResetWantColorImage();
ResetAltHappyMacOption();
ResetRomSizeOption();
ResetCheckRomCheckSum();
ResetDisableRomCheck();
ResetDisableRamTest();
ResetWantDisasm();
ResetDbgLogHAVE();
ResetAbnormalReports();
ResetScreenVSync();
ResetGraphicsSwitching();
ResetSigning();
ResetSandbox();
}
LOCALFUNC tMyErr TryAsSPOptionNot(void)
{
tMyErr err;
if (kMyErrNoMatch == (err = TryAsModelOptionNot()))
if (kMyErrNoMatch == (err = TryAsHResOptionNot()))
if (kMyErrNoMatch == (err = TryAsVResOptionNot()))
if (kMyErrNoMatch == (err = TryAsScrnDpthOptionNot()))
if (kMyErrNoMatch == (err = TryAsInitFullScreenNot()))
if (kMyErrNoMatch == (err = TryAsVarFullScreenNot()))
if (kMyErrNoMatch == (err = TryAsMagFctrOptionNot()))
if (kMyErrNoMatch == (err = TryAsInitMagnifyNot()))
if (kMyErrNoMatch == (err = TryAsSoundOptionNot()))
if (kMyErrNoMatch == (err = TryAsSndApiOptionNot()))
if (kMyErrNoMatch == (err = TryAsSoundSampSzOptionNot()))
if (kMyErrNoMatch == (err = TryAsNumDrivesOptionNot()))
if (kMyErrNoMatch == (err = TryAsSonySupportTagsNot()))
if (kMyErrNoMatch == (err = TryAsSonyWantChecksumsUpdatedNot()))
if (kMyErrNoMatch == (err = TryAsSonySupportDC42Not()))
if (kMyErrNoMatch == (err = TryAsSaveDialogEnable()))
if (kMyErrNoMatch == (err = TryAsInsertIthDisk()))
if (kMyErrNoMatch == (err = TryAsCmndOptSwapNot()))
if (kMyErrNoMatch == (err = TryAsKeyMapOptionNot()))
if (kMyErrNoMatch == (err = TryAsEKTMapOptionNot()))
if (kMyErrNoMatch == (err = TryAsAltKeysModeNot()))
if (kMyErrNoMatch == (err = TryAsItnlKyBdFixNot()))
if (kMyErrNoMatch == (err = TryAsLocalTalkNot()))
if (kMyErrNoMatch == (err = TryAsInitSpeedOptionNot()))
if (kMyErrNoMatch == (err = TryAsInitBackgroundNot()))
if (kMyErrNoMatch == (err = TryAsInitAutoSlowNot()))
if (kMyErrNoMatch == (err = TryAsTimingAccuracyOptionNot()))
if (kMyErrNoMatch == (err = TryAsEmCpuVersOptionNot()))
if (kMyErrNoMatch == (err = TryAsMemSizOptionNot()))
if (kMyErrNoMatch == (err = TryAsCaretBlinkTimeOptionNot()))
if (kMyErrNoMatch == (err = TryAsDoubleClickTimeOptionNot()))
if (kMyErrNoMatch == (err = TryAsMenuBlinkOptionNot()))
if (kMyErrNoMatch == (err = TryAsAutoKeyThreshOptionNot()))
if (kMyErrNoMatch == (err = TryAsAutoKeyRateOptionNot()))
if (kMyErrNoMatch == (err = TryAsHilColRedOptionNot()))
if (kMyErrNoMatch == (err = TryAsHilColGreenOptionNot()))
if (kMyErrNoMatch == (err = TryAsHilColBlueOptionNot()))
if (kMyErrNoMatch == (err = TryAsAutoLocationNot()))
if (kMyErrNoMatch == (err = TryAsInitLatitudeOptionNot()))
if (kMyErrNoMatch == (err = TryAsInitLongitudeOptionNot()))
if (kMyErrNoMatch == (err = TryAsAutoTimeZoneNot()))
if (kMyErrNoMatch == (err = TryAsTzDSTNot()))
if (kMyErrNoMatch == (err = TryAsTzDeltHOptionNot()))
if (kMyErrNoMatch == (err = TryAsTzDeltSOptionNot()))
if (kMyErrNoMatch == (err = TryAsSpeakerVolOptionNot()))
if (kMyErrNoMatch == (err = TryAsWantMinExtnNot()))
if (kMyErrNoMatch == (err = TryAsMouseMotionOptionNot()))
if (kMyErrNoMatch == (err = TryAsGrabKeysFSNot()))
if (kMyErrNoMatch == (err = TryAsEnblCtrlIntNot()))
if (kMyErrNoMatch == (err = TryAsEnblCtrlRstNot()))
if (kMyErrNoMatch == (err = TryAsEnblCtrlKtgNot()))
if (kMyErrNoMatch == (err = TryAsWantColorImageNot()))
if (kMyErrNoMatch == (err = TryAsAltHappyMacOptionNot()))
if (kMyErrNoMatch == (err = TryAsRomSizeOptionNot()))
if (kMyErrNoMatch == (err = TryAsCheckRomCheckSumNot()))
if (kMyErrNoMatch == (err = TryAsDisableRomCheckNot()))
if (kMyErrNoMatch == (err = TryAsDisableRamTestNot()))
if (kMyErrNoMatch == (err = TryAsWantDisasmNot()))
if (kMyErrNoMatch == (err = TryAsDbgLogHAVENot()))
if (kMyErrNoMatch == (err = TryAsAbnormalReportsNot()))
if (kMyErrNoMatch == (err = TryAsScreenVSyncNot()))
if (kMyErrNoMatch == (err = TryAsGraphicsSwitchingNot()))
if (kMyErrNoMatch == (err = TryAsSigningNot()))
if (kMyErrNoMatch == (err = TryAsSandboxNot()))
{
}
return err;
}
LOCALFUNC tMyErr AutoChooseSPSettings(void)
{
tMyErr err;
if (kMyErr_noErr == (err = ChooseModel()))
if (kMyErr_noErr == (err = ChooseHRes()))
if (kMyErr_noErr == (err = ChooseVRes()))
if (kMyErr_noErr == (err = ChooseScrnDpth()))
if (kMyErr_noErr == (err = ChooseInitFullScreen()))
if (kMyErr_noErr == (err = ChooseVarFullScreen()))
if (kMyErr_noErr == (err = ChooseMagFctr()))
if (kMyErr_noErr == (err = ChooseInitMagnify()))
if (kMyErr_noErr == (err = ChooseSoundEnabled()))
if (kMyErr_noErr == (err = ChooseSndApiOption()))
if (kMyErr_noErr == (err = ChooseSoundSampSz()))
if (kMyErr_noErr == (err = ChooseNumDrives()))
if (kMyErr_noErr == (err = ChooseSonySupportTags()))
if (kMyErr_noErr == (err = ChooseSonyWantChecksumsUpdated()))
if (kMyErr_noErr == (err = ChooseSonySupportDC42()))
if (kMyErr_noErr == (err = ChooseSaveDialogEnable()))
if (kMyErr_noErr == (err = ChooseInsertIthDisk()))
if (kMyErr_noErr == (err = ChooseCmndOptSwap()))
if (kMyErr_noErr == (err = ChooseKeyMap()))
if (kMyErr_noErr == (err = ChooseEKTMap()))
if (kMyErr_noErr == (err = ChooseAltKeysMode()))
if (kMyErr_noErr == (err = ChooseItnlKyBdFix()))
if (kMyErr_noErr == (err = ChooseLocalTalk()))
if (kMyErr_noErr == (err = ChooseInitSpeed()))
if (kMyErr_noErr == (err = ChooseInitBackground()))
if (kMyErr_noErr == (err = ChooseInitAutoSlow()))
if (kMyErr_noErr == (err = ChooseTimingAccuracy()))
if (kMyErr_noErr == (err = ChooseEmCpuVers()))
if (kMyErr_noErr == (err = ChooseMemSiz()))
if (kMyErr_noErr == (err = ChooseMemBankSizes())) /* derived */
if (kMyErr_noErr == (err = ChooseCaretBlinkTime()))
if (kMyErr_noErr == (err = ChooseDoubleClickTime()))
if (kMyErr_noErr == (err = ChooseMenuBlink()))
if (kMyErr_noErr == (err = ChooseAutoKeyThresh()))
if (kMyErr_noErr == (err = ChooseAutoKeyRate()))
if (kMyErr_noErr == (err = ChooseHilColRed()))
if (kMyErr_noErr == (err = ChooseHilColGreen()))
if (kMyErr_noErr == (err = ChooseHilColBlue()))
if (kMyErr_noErr == (err = ChooseAutoLocation()))
if (kMyErr_noErr == (err = ChooseInitLatitude()))
if (kMyErr_noErr == (err = ChooseInitLongitude()))
if (kMyErr_noErr == (err = ChooseAutoTimeZone()))
if (kMyErr_noErr == (err = ChooseTzDST()))
/* if (kMyErr_noErr == (err = ChooseTzDeltH())) */
if (kMyErr_noErr == (err = ChooseTzDeltS()))
if (kMyErr_noErr == (err = ChooseSpeakerVol()))
if (kMyErr_noErr == (err = ChooseWantMinExtn()))
if (kMyErr_noErr == (err = ChooseMouseMotion()))
if (kMyErr_noErr == (err = ChooseGrabKeysFS()))
if (kMyErr_noErr == (err = ChooseEnblCtrlInt()))
if (kMyErr_noErr == (err = ChooseEnblCtrlRst()))
if (kMyErr_noErr == (err = ChooseEnblCtrlKtg()))
if (kMyErr_noErr == (err = ChooseWantColorImage()))
if (kMyErr_noErr == (err = ChooseAltHappyMac()))
if (kMyErr_noErr == (err = ChooseRomSize()))
if (kMyErr_noErr == (err = ChooseCheckRomCheckSum()))
if (kMyErr_noErr == (err = ChooseDisableRomCheck()))
if (kMyErr_noErr == (err = ChooseDisableRamTest()))
if (kMyErr_noErr == (err = ChooseWantDisasm()))
if (kMyErr_noErr == (err = ChooseDbgLogHAVE()))
if (kMyErr_noErr == (err = ChooseAbnormalReports()))
if (kMyErr_noErr == (err = ChooseScreenVSync()))
if (kMyErr_noErr == (err = ChooseGraphicsSwitching()))
if (kMyErr_noErr == (err = ChooseSigning()))
if (kMyErr_noErr == (err = ChooseSandbox()))
if (kMyErr_noErr == (err = ChooseScreenOpts())) /* derived */
if (kMyErr_noErr == (err = ChooseVidMemSize())) /* derived */
if (kMyErr_noErr == (err = ChooseMiscEmHardware())) /* derived */
if (kMyErr_noErr == (err = ChooseTotMemSize())) /* derived */
{
err = kMyErr_noErr;
}
return err;
}
LOCALPROC WrtOptSPSettings(void)
{
WrtOptModelOption();
WrtOptHResOption();
WrtOptVResOption();
WrtOptScrnDpth();
WrtOptInitFullScreen();
WrtOptVarFullScreen();
WrtOptMagFctrOption();
WrtOptInitMagnify();
WrtOptSoundOption();
WrtOptSndApiOption();
WrtOptSoundSampSzOption();
WrtOptNumDrivesOption();
WrtOptSonySupportTags();
WrtOptSonyWantChecksumsUpdated();
WrtOptSonySupportDC42();
WrtOptSaveDialogEnable();
WrtOptInsertIthDisk();
WrtOptCmndOptSwap();
WrtOptKeyMap();
WrtOptEKTMap();
WrtOptAltKeysMode();
WrtOptItnlKyBdFix();
WrtOptLocalTalk();
WrtOptInitSpeedOption();
WrtOptInitBackground();
WrtOptInitAutoSlow();
WrtOptTimingAccuracy();
WrtOptEmCpuVers();
WrtOptMemSizOption();
WrtOptCaretBlinkTime();
WrtOptDoubleClickTime();
WrtOptMenuBlink();
WrtOptAutoKeyThresh();
WrtOptAutoKeyRate();
WrtOptHilColRed();
WrtOptHilColGreen();
WrtOptHilColBlue();
WrtOptAutoLocation();
WrtOptInitLatitude();
WrtOptInitLongitude();
WrtOptAutoTimeZone();
WrtOptTzDST();
/* WrtOptTzDeltH(); */
WrtOptTzDeltS();
WrtOptSpeakerVol();
WrtOptMinExtn();
WrtOptMouseMotion();
WrtOptGrabKeysFS();
WrtOptEnblCtrlInt();
WrtOptEnblCtrlRst();
WrtOptEnblCtrlKtg();
WrtOptColorImage();
WrtOptAltHappyMac();
WrtOptRomSize();
WrtOptCheckRomCheckSum();
WrtOptDisableRomCheck();
WrtOptDisableRamTest();
WrtOptWantDisasmNot();
WrtOptDbgLogHAVE();
WrtOptAbnormalReports();
WrtOptScreenVSync();
WrtOptGraphicsSwitching();
WrtOptSigning();
WrtOptSandbox();
}