Eric and I have been working a few hours on a patch to correct the
ask-user-to-execute-config.sys-line algorythm.
essentially (config.c, line 806 I think):
/* !device= never ask / device?= always ask / device= ask if singleStep */
/* ! does override singleStep but not ?, so !device?= will ask... */
if (! ( (singleStep !DontAskThisSingleCommand) ||
(askThisSingleCommand) ) )
return FALSE; /* do not skip, and do not ask either */
Eric also made some more changes. See below for the complete DIFF against 2035
Next steps *I* would like to take (still a non-programmer!) are:
-don't auto-add 0 as a menu-item
-set menudefault to lowest menu-item ('0' currently)
-don't show menu unless at least 2 different menu-items are available.
Bernd
http://www.coli.uni-sb.de/~eric/dos-config-patch.zip
--- config.old Tue May 25 01:02:46 2004
+++ config.cSun Jun 13 00:23:56 2004
@@ -549,7 +549,7 @@
umb_base_seg = umb_max = umb_start = umb_seg;
UMB_top = umb_size;
-/* there can be more UMB's !
+/* there can be more UMBs !
this happens, if memory mapped devces are in between
like UMB memory c800..c8ff, d8ff..efff with device at d000..d7ff
However some of the xxxHIGH commands still only work with
@@ -801,14 +801,15 @@
/* 123?device=EMM386.EXE NOEMS */
if ( MenuLine != 0
(MenuLine (1 MenuSelected)) == 0)
-return TRUE;
-
- if (DontAskThisSingleCommand) /* !files=30 */
-return FALSE;
+return TRUE; /* skip the line */
- if (!askThisSingleCommand !singleStep)
-return FALSE;
+ /* !device= never ask / device?= always ask / device= ask if singleStep */
+ /* ! does override singleStep but not ?, so !device?= will ask... */
+ if (! ( (singleStep !DontAskThisSingleCommand) ||
+ (askThisSingleCommand) ) )
+return FALSE; /* do not skip, and do not ask either */
+ /* if ( (s.s. d.a.t.s.c) || (a.t.s.c) ) then ASK THE USER */
printf(%s[Y,N]?, pLine);
for (;;)
@@ -902,6 +903,7 @@
/* Get the argument */
if (GetNumArg(pLine, nBuffers))
Config.cfgBuffers = nBuffers;
+ /* Second argument (0..8 buffers for read-ahead) not supported yet. */
}
/**
@@ -1004,7 +1006,10 @@
}
/*
-UmbState of confidence, 1 is sure, 2 maybe, 4 unknown and 0 no way.
+UmbState of confidence, 1 is sure, 2 maybe, 0 no way.
+Transitions: 0 - 0/2 depending on DOS=UMB, try init (2 - 1)
+after each driver load, as it could have been the UMB driver.
+If UMB really found, state 1 is reached and MCBs are adjusted.
*/
STATIC VOID Dosmem(BYTE * pLine)
@@ -1205,7 +1210,7 @@
#endif
if (!LoadCountryInfoHardCoded(filename, ctryCode, codePage))
-return;
+return; /* error message already displayed by LoadCountry... */
error:
CfgFailure(pLine);
@@ -1293,17 +1298,24 @@
STATIC VOID DeviceHigh(BYTE * pLine)
{
- if (UmbState == 1)
+ if (UmbState == 1) /* UMB already initialized? */
{
if (LoadDevice(pLine, MK_FP(umb_start + UMB_top, 0), TRUE) == DE_NOMEM)
{
- printf(Not enough free memory in UMB's: loading low\n);
+ printf(Not enough free memory in UMBs: loading low\n);
LoadDevice(pLine, lpTop, FALSE);
}
}
else
{
-printf(UMB's unavailable!\n);
+if (!umb_base_seg) /* only warn once */
+{
+ printf(UMBs unavailable!\n);
+ umb_base_seg = 0x; /* first 0, non-0 after umb_init success */
+}
+/* if UmbState is 2: still waiting for the UMB driver, after it is */
+/* found, UmbState will be 1 and umb_base_seg will be initialized. */
+/* UmbState 0 means that we do not want UMBs at all, DOS=NOUMB case. */
LoadDevice(pLine, lpTop, FALSE);
}
}
---
This SF.Net email is sponsored by the new InstallShield X.
From Windows to Linux, servers to mobile, InstallShield X is the
one installation-authoring solution that does it all. Learn more and
evaluate today! http://www.installshield.com/Dev2Dev/0504
___
Freedos-kernel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freedos-kernel