mirror of
https://github.com/FDOS/kernel.git
synced 2025-07-14 09:24:27 +02:00
commit
2835dfe920
@ -155,6 +155,14 @@ COUNT UmbState BSS_INIT(0);
|
|||||||
STATIC BYTE szLine[256] BSS_INIT({0});
|
STATIC BYTE szLine[256] BSS_INIT({0});
|
||||||
STATIC BYTE szBuf[256] BSS_INIT({0});
|
STATIC BYTE szBuf[256] BSS_INIT({0});
|
||||||
|
|
||||||
|
#define MAX_CHAINS 5
|
||||||
|
struct CfgFile {
|
||||||
|
COUNT nFileDesc;
|
||||||
|
COUNT nCfgLine;
|
||||||
|
} cfgFile[MAX_CHAINS];
|
||||||
|
COUNT nCurChain = 0;
|
||||||
|
COUNT nFileDesc;
|
||||||
|
|
||||||
BYTE singleStep BSS_INIT(FALSE); /* F8 processing */
|
BYTE singleStep BSS_INIT(FALSE); /* F8 processing */
|
||||||
BYTE SkipAllConfig BSS_INIT(FALSE); /* F5 processing */
|
BYTE SkipAllConfig BSS_INIT(FALSE); /* F5 processing */
|
||||||
BYTE askThisSingleCommand BSS_INIT(FALSE); /* ?device= device?= */
|
BYTE askThisSingleCommand BSS_INIT(FALSE); /* ?device= device?= */
|
||||||
@ -188,6 +196,7 @@ STATIC VOID InitPgm(BYTE * pLine);
|
|||||||
STATIC VOID InitPgmHigh(BYTE * pLine);
|
STATIC VOID InitPgmHigh(BYTE * pLine);
|
||||||
STATIC VOID CmdInstall(BYTE * pLine);
|
STATIC VOID CmdInstall(BYTE * pLine);
|
||||||
STATIC VOID CmdInstallHigh(BYTE * pLine);
|
STATIC VOID CmdInstallHigh(BYTE * pLine);
|
||||||
|
STATIC VOID CmdChain(BYTE * pLine);
|
||||||
STATIC VOID CmdSet(BYTE * pLine);
|
STATIC VOID CmdSet(BYTE * pLine);
|
||||||
|
|
||||||
|
|
||||||
@ -294,6 +303,7 @@ STATIC struct table commands[] = {
|
|||||||
{"DEVICEHIGH", 2, DeviceHigh},
|
{"DEVICEHIGH", 2, DeviceHigh},
|
||||||
{"INSTALL", 2, CmdInstall},
|
{"INSTALL", 2, CmdInstall},
|
||||||
{"INSTALLHIGH", 2, CmdInstallHigh},
|
{"INSTALLHIGH", 2, CmdInstallHigh},
|
||||||
|
{"CHAIN", 2, CmdChain},
|
||||||
{"SET", 2, CmdSet},
|
{"SET", 2, CmdSet},
|
||||||
|
|
||||||
/* default action */
|
/* default action */
|
||||||
@ -791,7 +801,6 @@ copy_char:
|
|||||||
|
|
||||||
VOID DoConfig(int nPass)
|
VOID DoConfig(int nPass)
|
||||||
{
|
{
|
||||||
COUNT nFileDesc;
|
|
||||||
BYTE *pLine;
|
BYTE *pLine;
|
||||||
BOOL bEof = FALSE;
|
BOOL bEof = FALSE;
|
||||||
|
|
||||||
@ -913,6 +922,15 @@ VOID DoConfig(int nPass)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (bEof && nCurChain) {
|
||||||
|
struct CfgFile *cfg = &cfgFile[--nCurChain];
|
||||||
|
close(nFileDesc);
|
||||||
|
bEof = FALSE;
|
||||||
|
nFileDesc = cfg->nFileDesc;
|
||||||
|
nCfgLine = cfg->nCfgLine;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
DebugPrintf(("CONFIG=[%s]\n", szLine));
|
DebugPrintf(("CONFIG=[%s]\n", szLine));
|
||||||
|
|
||||||
/* Skip leading white space and get verb. */
|
/* Skip leading white space and get verb. */
|
||||||
@ -1025,6 +1043,7 @@ UWORD GetBiosKey(int timeout)
|
|||||||
STATIC BOOL SkipLine(char *pLine)
|
STATIC BOOL SkipLine(char *pLine)
|
||||||
{
|
{
|
||||||
short key;
|
short key;
|
||||||
|
COUNT i;
|
||||||
|
|
||||||
if (InitKernelConfig.SkipConfigSeconds >= 0)
|
if (InitKernelConfig.SkipConfigSeconds >= 0)
|
||||||
{
|
{
|
||||||
@ -1067,6 +1086,8 @@ STATIC BOOL SkipLine(char *pLine)
|
|||||||
if (!askThisSingleCommand && !singleStep)
|
if (!askThisSingleCommand && !singleStep)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
for (i = 0; i < nCurChain; i++)
|
||||||
|
printf(" ");
|
||||||
printf("%s[Y,N]?", pLine);
|
printf("%s[Y,N]?", pLine);
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
@ -2584,6 +2605,26 @@ STATIC VOID CmdInstallHigh(BYTE * pLine)
|
|||||||
{
|
{
|
||||||
_CmdInstall(pLine,0x80); /* load high, if possible */
|
_CmdInstall(pLine,0x80); /* load high, if possible */
|
||||||
}
|
}
|
||||||
|
STATIC VOID CmdChain(BYTE * pLine)
|
||||||
|
{
|
||||||
|
struct CfgFile *cfg;
|
||||||
|
int fd;
|
||||||
|
|
||||||
|
InstallPrintf(("CHAIN: %s\n", pLine));
|
||||||
|
if (nCurChain >= MAX_CHAINS) {
|
||||||
|
CfgFailure(pLine);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ((fd = open(pLine, 0)) < 0) {
|
||||||
|
CfgFailure(pLine);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cfg = &cfgFile[nCurChain++];
|
||||||
|
cfg->nFileDesc = nFileDesc;
|
||||||
|
cfg->nCfgLine = nCfgLine;
|
||||||
|
nFileDesc = fd;
|
||||||
|
nCfgLine = 0;
|
||||||
|
}
|
||||||
|
|
||||||
STATIC VOID InstallExec(struct instCmds *icmd)
|
STATIC VOID InstallExec(struct instCmds *icmd)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user