From 294df74861b33e1b8b575338514f9bea407c51db Mon Sep 17 00:00:00 2001 From: Fonic Date: Fri, 17 Jul 2020 13:40:54 +0200 Subject: [PATCH] Initital commit --- CONFIG/AUTOEXEC.BAT | 41 +++ CONFIG/CONFIG.SYS | 43 +++ CONFIG/MSDOS.SYS | 35 ++ INSTALL.BAT | 67 ++++ README.md | 20 ++ TOOLS/CTMOUSE.EXE | Bin 0 -> 4848 bytes TOOLS/CTMOUSE.TXT | 285 ++++++++++++++++ TOOLS/DOSIDLE.EXE | Bin 0 -> 10868 bytes TOOLS/DOSIDLE.TXT | 784 ++++++++++++++++++++++++++++++++++++++++++++ TOOLS/FDAPM.COM | Bin 0 -> 7434 bytes TOOLS/IDLEDPMS.COM | Bin 0 -> 1022 bytes TOOLS/MSDOSSYS.BAT | 4 + TOOLS/POWEROFF.BAT | 1 + TOOLS/REBOOT.COM | Bin 0 -> 16 bytes TOOLS/RESTART.COM | Bin 0 -> 16 bytes TOOLS/SHSUCDX.COM | Bin 0 -> 7873 bytes TOOLS/SHSUCDX.TXT | 306 +++++++++++++++++ TOOLS/SHUTDOWN.COM | Bin 0 -> 894 bytes TOOLS/VIDECDD1.SYS | Bin 0 -> 11188 bytes TOOLS/VIDECDD2.SYS | Bin 0 -> 11188 bytes 20 files changed, 1586 insertions(+) create mode 100755 CONFIG/AUTOEXEC.BAT create mode 100755 CONFIG/CONFIG.SYS create mode 100755 CONFIG/MSDOS.SYS create mode 100755 INSTALL.BAT create mode 100644 README.md create mode 100755 TOOLS/CTMOUSE.EXE create mode 100755 TOOLS/CTMOUSE.TXT create mode 100755 TOOLS/DOSIDLE.EXE create mode 100755 TOOLS/DOSIDLE.TXT create mode 100755 TOOLS/FDAPM.COM create mode 100755 TOOLS/IDLEDPMS.COM create mode 100755 TOOLS/MSDOSSYS.BAT create mode 100755 TOOLS/POWEROFF.BAT create mode 100755 TOOLS/REBOOT.COM create mode 100755 TOOLS/RESTART.COM create mode 100755 TOOLS/SHSUCDX.COM create mode 100755 TOOLS/SHSUCDX.TXT create mode 100755 TOOLS/SHUTDOWN.COM create mode 100755 TOOLS/VIDECDD1.SYS create mode 100755 TOOLS/VIDECDD2.SYS diff --git a/CONFIG/AUTOEXEC.BAT b/CONFIG/AUTOEXEC.BAT new file mode 100755 index 0000000..cd658f7 --- /dev/null +++ b/CONFIG/AUTOEXEC.BAT @@ -0,0 +1,41 @@ +@ECHO OFF + +REM Configuration options +SET PATH=%PATH%;C:\TOOLS +SET CODEPAGE=850 +SET KEYBOARD=us +REM SET FDAPM=APMDOS +SET FDAPM=ADV:REG + +:COMMON +REM DOSIDLE does not seem to work, disabled for now, using FDAPM.COM instead +REM LH C:\TOOLS\DOSIDLE.EXE +LH C:\TOOLS\FDAPM.COM %FDAPM% >NUL +LH MODE.COM con codepage prepare=((%CODEPAGE%) C:\WINDOWS\COMMAND\EGA.CPI) >NUL +LH MODE.COM con codepage select=%CODEPAGE% >NUL +LH KEYB.COM %KEYBOARD%,,C:\WINDOWS\COMMAND\KEYBOARD.SYS >NUL +LH C:\WINDOWS\COMMAND\DOSKEY.COM >NUL +REM CTMOUSE will automatically load itself high +C:\TOOLS\CTMOUSE.EXE >NUL +GOTO %CONFIG% + +:WINDOWS +CLS +WIN.COM +GOTO EXIT + +:DOS +GOTO EXIT + +:DOSCD +REM Using SHSUCDX.COM instead which has a much smaller memory footprint, +REM leaving this here for future reference +REM C:\WINDOWS\COMMAND\MSCDEX.EXE /D:MSCD001 +REM LH C:\WINDOWS\COMMAND\MSCDEX.EXE /D:MSCD001 +REM SHSUCDX.COM will automatically load itself high, using LH will even +REM prevent that! +REM LH C:\TOOLS\SHSUCDX.COM /D:MSCD001 +C:\TOOLS\SHSUCDX.COM /D:MSCD001 >NUL +GOTO EXIT + +:EXIT diff --git a/CONFIG/CONFIG.SYS b/CONFIG/CONFIG.SYS new file mode 100755 index 0000000..4b6293b --- /dev/null +++ b/CONFIG/CONFIG.SYS @@ -0,0 +1,43 @@ +[MENU] +MENUITEM=WINDOWS,Windows 98 SE +MENUITEM=DOS,MS-DOS 7.1 +MENUITEM=DOSCD,MS-DOS 7.1 (CD-ROM) +REM MENUCOLOR=7,1 +MENUDEFAULT=WINDOWS,5 + +[COMMON] +DEVICE=C:\WINDOWS\HIMEM.SYS +DEVICE=C:\WINDOWS\EMM386.EXE NOEMS +DOS=HIGH,UMB +FILES=30 +BUFFERS=20 +STACKS=9,256 +LASTDRIVE=Z +DEVICEHIGH=C:\WINDOWS\COMMAND\DISPLAY.SYS con=(ega,,1) +REM Does not seem to work when loading high, thus loading low instead +REM NOTE: 'DoubleBuffer=1' in MSDOS.SYS does the same thing as DEVICE=... +REM here; It's better to load all drivers here in one single place, +REM thus we set 'DoubleBuffer=0' in MSDOS.SYS +REM DEVICEHIGH=C:\WINDOWS\DBLBUFF.SYS +DEVICE=C:\WINDOWS\DBLBUFF.SYS +COUNTRY=049,850,C:\WINDOWS\COMMAND\COUNTRY.SYS +REM Moved to AUTOEXEC.BAT instead, can silence output there using >NUL +REM INSTALLHIGH=C:\WINDOWS\COMMAND\MODE.COM con cp prepare=((850) C:\WINDOWS\COMMAND\EGA.CPI) +REM INSTALLHIGH=C:\WINDOWS\COMMAND\MODE.COM con cp select=850 +REM INSTALLHIGH=C:\WINDOWS\COMMAND\KEYB.COM gr,,C:\WINDOWS\COMMAND\KEYBOARD.SYS + +[WINDOWS] + +[DOS] + +[DOSCD] +REM Using VIDECDD.SYS instead which has a much smaller memory footprint, +REM leaving this here for future reference +REM Can't load high as there won't be enough upper memory for the rest +REM (codepage + keyboard layout will fail) +REM DEVICEHIGH=C:\WINDOWS\COMMAND\EBD\OAKCDROM.SYS /D:MSCD001 +REM DEVICE=C:\WINDOWS\COMMAND\EBD\OAKCDROM.SYS /D:MSCD001 +REM Normal version v2.14 +DEVICEHIGH=C:\TOOLS\VIDECDD1.SYS /D:MSCD001 +REM Patched version version v2.14a +REM DEVICEHIGH=C:\TOOLS\VIDECDD2.SYS /D:MSCD001 diff --git a/CONFIG/MSDOS.SYS b/CONFIG/MSDOS.SYS new file mode 100755 index 0000000..6d656cf --- /dev/null +++ b/CONFIG/MSDOS.SYS @@ -0,0 +1,35 @@ +[Paths] +WinDir=C:\WINDOWS +WinBootDir=C:\WINDOWS +HostWinBootDrv=C + +[Options] +BootMulti=1 +BootGUI=0 +Logo=0 +DoubleBuffer=0 +AutoScan=1 +WinVer=4.10.2222 +; +;The following lines are required for compatibility with other programs. +;Do not remove them (MSDOS.SYS needs to be >1024 bytes). +;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxa +;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxb +;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxc +;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxd +;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxe +;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxf +;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxg +;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxh +;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi +;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxj +;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxk +;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxl +;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxm +;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxn +;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxo +;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxp +;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxq +;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr +;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxs + diff --git a/INSTALL.BAT b/INSTALL.BAT new file mode 100755 index 0000000..3f214c2 --- /dev/null +++ b/INSTALL.BAT @@ -0,0 +1,67 @@ +@ECHO OFF + +REM ----------------------------------------------------------------------- +REM - +REM Created by Fonic (https://github.com/fonic) - +REM Date: 07/17/20 - +REM - +REM ----------------------------------------------------------------------- + +REM +REM Configuration (omit trailing backslashes) +REM +SET CONFIG_DST=C: +SET TOOLS_DST=C:\TOOLS + +REM +REM Safety checks +REM +IF NOT EXIST .\INSTALL.BAT GOTO CHKFAIL +IF NOT EXIST .\CONFIG\NUL GOTO CHKFAIL +IF NOT EXIST .\TOOLS\NUL GOTO CHKFAIL +GOTO CHKPASS +:CHKFAIL +ECHO. +ECHO This script needs to be called from within the directory it is +ECHO stored in. Please change the current working directory using CD. +ECHO Aborting. +ECHO. +GOTO END +:CHKPASS + +REM +REM Backup existing configuration +REM +ECHO Backing up existing configuration... +IF EXIST %CONFIG_DST%\AUTOEXEC.BAT COPY /Y %CONFIG_DST%\AUTOEXEC.BAT %CONFIG_DST%\AUTOEXEC.BAK >NUL +IF EXIST %CONFIG_DST%\CONFIG.SYS COPY /Y %CONFIG_DST%\CONFIG.SYS %CONFIG_DST%\CONFIG.BAK >NUL +IF NOT EXIST %CONFIG_DST%\MSDOS.SYS GOTO SKPBAK1 +ATTRIB -S -H -R %CONFIG_DST%\MSDOS.SYS >NUL +COPY /Y %CONFIG_DST%\MSDOS.SYS %CONFIG_DST%\MSDOS.BAK >NUL +:SKPBAK1 + +REM +REM Install new configuration +REM +ECHO Installing new configuration... +COPY /Y CONFIG\AUTOEXEC.BAT %CONFIG_DST%\ >NUL +COPY /Y CONFIG\CONFIG.SYS %CONFIG_DST%\ >NUL +COPY /Y CONFIG\MSDOS.SYS %CONFIG_DST%\ >NUL +ATTRIB +S +H +R %CONFIG_DST%\MSDOS.SYS >NUL + +REM +REM Backup existing tools +REM +ECHO Backing up existing tools... +IF NOT EXIST %TOOLS_DST%\NUL GOTO SKPBAK2 +DELTREE /Y %TOOLS_DST%.BAK >NUL +MOVE %TOOLS_DST% %TOOLS_DST%.BAK >NUL +:SKPBAK2 + +REM +REM Install new tools +REM +ECHO Installing new tools... +XCOPY /S /Y TOOLS %TOOLS_DST%\ >NUL + +:END diff --git a/README.md b/README.md new file mode 100644 index 0000000..ad08993 --- /dev/null +++ b/README.md @@ -0,0 +1,20 @@ +# Windows 98 SE DOS Mode +Configuration and tools for Windows 98 SE DOS Mode. Created as an extension of the setup described by user [Nevets](https://www.youtube.com/channel/UC1TcLr9bclCxgpZ6kxj5Mpg) on YouTube (see [video 1](https://www.youtube.com/watch?v=HOXqgALpn9A), [video 2](https://www.youtube.com/watch?v=zWMJ3T8c2Us)). + +## Features + +- Start menu offering options to boot *Windows 98 SE*, *DOS Mode* and *DOS Mode with CD-ROM drivers* +- Very memory-efficient mouse and CD-ROM drivers +- CPU idle drivers +- Script to conveniently edit *MSDOS.SYS* +- Utilities to restart and shutdown system + +## Download +Refer to the [releases](https://github.com/fonic/windows-98-se-dos-mode/releases) section for downloads links. + +## Installation +1. Either extract the downloaded ZIP archive or mount the downloaded ISO using VirtualBox +2. Change to the folder containing `INSTALL.BAT` (e.g. `CD D:\` if ISO was mounted as drive D) +3. Run `INSTALL.BAT` + +Your existing configuration and tools will be backed up to `.BAK` files/folders. diff --git a/TOOLS/CTMOUSE.EXE b/TOOLS/CTMOUSE.EXE new file mode 100755 index 0000000000000000000000000000000000000000..77bd79bd451f35d2f12126812947063f7b9b669e GIT binary patch literal 4848 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 J5a_Jp{{SlAbWZ>P literal 0 HcmV?d00001 diff --git a/TOOLS/CTMOUSE.TXT b/TOOLS/CTMOUSE.TXT new file mode 100755 index 0000000..871ebf5 --- /dev/null +++ b/TOOLS/CTMOUSE.TXT @@ -0,0 +1,285 @@ +CuteMouse driver v1.9. Copyright (c) 1997-2002 Nagy Daniel +Release date: 2002/10/01 + + +License: +-------- + +CuteMouse is released under the terms of the GNU Public License (GPL). For +further information please read the file COPYING. + + +Description: +------------ + +CuteMouse is a mouse driver which supports many protocols of serial and +PS/2 mice. It can search for a serial mouse at all COM ports or only at +a specified port. + +An important CuteMouse feature is its small memory footprint: the resident +part (TSR) occupies less than 3.5K. CuteMouse can also install itself in +upper memory, when available, without requiring external utilities such +as the DOS 'lh' (loadhigh) command. + +CuteMouse supports cursor drawing in all standard graphics and text modes +with any screen size. These are automatically detected whenever the video +mode or the screen size is changed or reset functions are called. + +You can subscribe to the CuteMouse discussion group at the official +homepage http://cutemouse.sourceforge.net or by sending an empty +email to . + +CuteMouse is part of the FreeDOS project at http://www.freedos.org + + +Details: +-------- + +CTMOUSE supports standard Mouse Systems, Microsoft and Logitech serial and +PS/2 protocols. By default, when searching for a connected mouse, the PS/2 +port is checked first, then all COM ports are scanned. + +Option /S, whose syntax is described in the help screen, disables PS/2 +support and can specify the COM port to be checked for a mouse connection +and its IRQ line; option /P disables serial protocols. If option /S is +present in the command line, but PS/2 support is also required, then +option /P must also be present. + +If a COM port number is not specified with the /S option, then CTMOUSE +searches all COM ports. If an IRQ line is not specified with the /S +option, then the default IRQ line value is IRQ4 for COM1/3 and IRQ3 +for COM2/4. In the future IRQ autodetection will be added. + +Option /V reverses default search order, causing CTMOUSE to look for a +serial mouse before checking for the PS/2 device. This can be useful, for +example, on notebooks which have a built-in PS/2 pointing device to enable +use of a serial mouse, when attached. Using option /Y (see below) may also +be required along with /V. Note: option /V enables both serial and PS/2 +protocols, so using options /P and /S without arguments along with /V +in the command line is meaningless. + +For serial mice, CTMOUSE searches all COM ports (or at the port specified +by option /S) for an attached mouse with Microsoft or Logitech protocol. +If no such mouse is found then CTMOUSE installs at the first existing +(or specified) COM port in Mouse Systems mode, whether a mouse is there +or not. (This is because the Mouse Systems protocol defines no detection +sequence). Option /Y in the command line disables Mouse Systems protocol +support and prevents driver installation if no mouse with Microsoft or +Logitech protocol is found. Note: option /Y forces serial mouse search, +but, unlike option /S, doesn't disable PS/2 support. + +Both PS/2 and plain Microsoft protocols assume a two button mouse but +option /3 in the command line can be used to enable the middle button +if one is present. + +WARNING: when the middle button of a plain Microsoft mouse is enabled, +pressing left or right button along with the middle button can cause +"middle button state triggering" - i.e. when the middle button is pressed +the driver thinks it is released and vice-versa. This is a peculiarity of +the Microsoft protocol and can't be changed. If button triggering occurs +simply press the left or right button along with the middle button once +again to clear the problem. + +CTMOUSE supports 9 fixed resolution levels and auto resolution. Resolution +defines how the mouse movements are added to the cursor position. Small +mouse movements at any resolution produce the same cursor movement; this +allows precise cursor positioning on the screen. Larger mouse movements +are multiplied by resolution level to produce the cursor movement; this +allows rapid cursor movement across the screen without big efforts. + +With auto resolution the faster the mouse is moved, the greater multiplier +is used, giving the cursor a nonlinear acceleration. Option /R, whose +syntax is described in the help screen, allows the preferred resolution +level to be specified for each direction. + +If installing from low memory, CTMOUSE attempts to move itself into upper +memory (UMB) if there is a suitable free UMB block and option /W is not +used. With option /W any external utility can be used to install CTMOUSE +at a specific location. Subsequent CTMOUSE runs simply reset the resident +part to the new command line options, unless the mouse is not found or +option /B or /N is used. + +When installing, CTMOUSE ignores and hides any present mouse services +unless option /B is used. Option /U in command line can be used to +unload the resident part of CTMOUSE unless driver interrupts have been +intercepted by another program. After successful unloading, CTMOUSE +restores mouse services that were present at installation time. + +Option /B in the command line cancels CTMOUSE execution if any (including +CTMOUSE itself) mouse services are already present. With option /B CTMOUSE +will not install itself above loaded mouse drivers and will not reset the +resident part to new command line options. + +In contrast, option /N forces the loading of a new TSR even if CTMOUSE is +already loaded - without this option CTMOUSE will only reset the loaded +resident part. In cases where mouse services are provided by any other +driver or are not present at all, CTMOUSE loads a new TSR even without +option /N - see table below: + +options no services other driver CTMOUSE loaded +------- ----------- ------------ -------------- +/B load CTMOUSE do nothing do nothing + load CTMOUSE load CTMOUSE update resident part +/N load CTMOUSE load CTMOUSE load new CTMOUSE + +Option /N is useful for batch files, which load CTMOUSE before some +actions and unload it after. + +For each event CTMOUSE returns an appropriate exit code which can be used +in "if errorlevel" statements in batch files: + + 0 PS/2, Microsoft or Logitech mouse found and CTMOUSE installed; + Unload successful; + /? option used. + 1 CTMOUSE installed in Mouse Systems mode; + Unload failed because CTMOUSE was not loaded. + 2 Resident part switched to PS/2, Microsoft or Logitech mode; + Unload failed because driver interrupts were intercepted. + 3 Resident part switched to Mouse Systems mode. + 4 Mouse services already present (returned for option /B only). + 5 Mouse not found; + Invalid option used. + +Together with options /B and /N, this enables creation of complex and +intelligent batch files. For example, the following batch file can be +used to run a program that requires mouse services to be present: + + ctmouse/n/y>nul + if errorlevel 5 echo Mouse not found! + if errorlevel 5 goto end + %1 %2 %3 %4 %5 %6 %7 %8 %9 + ctmouse/u>nul + :end + +In the previous example, CTMOUSE is loaded before and unloaded +afterwards regardless of whether or not mouse services are already present +(e.g., another mouse driver was loaded). This may not be suitable if every +free byte of memory is important or if CTMOUSE does not support a mouse +that is currently in use. In the following example, CTMOUSE will be +loaded and unloaded only if no mouse services are present: + + if "%1"=="@" goto driverloaded + ctmouse/b/y>nul + if errorlevel 5 echo Mouse not found! + if errorlevel 5 goto end + if errorlevel 2 goto run + + call %0 @ %1 %2 %3 %4 %5 %6 %7 %8 %9 + ctmouse/u>nul + goto end + + :driverloaded + shift + :run + %1 %2 %3 %4 %5 %6 %7 %8 %9 + :end + +Option /B can also be used to manually specify a mouse search sequence. +In the following example, CTMOUSE is installed by the first command that +finds a mouse and the following commands won't affect the resident part: + + ctmouse/b/s4/y>nul + ctmouse/b/p/y>nul + ctmouse/b/s2/y>nul + +Use the /? command line option to obtain a help screen with all option +descriptions. + +The CuteMouse package also includes a utility to detect COM ports +(COMTEST) and a serial protocol analyzer (PROTOCOL). PROTOCOL shows how +mice work and what they send to the computer for each action. PROTOCOL can +even decipher information sent by PnP mice. All output goes through DOS +functions and can be redirected to a file for subsequent analysis or +sending to someone else. + + +Compiling: +---------- + +To assemble the English version of the driver use TASM (or any compatible +assembler) and any linker that can produce a COM file from OBJ files: + + copy ctm-en.msg ctmouse.msg + tasm /m @asmlib.cfg ctmouse.asm + tlink /t /x ctmouse.obj,ctmouse.exe + com2exe -s512 ctmouse.exe ctmouse.exe + +To assemble the serial protocol analyzer: + + tasm /m @..\asmlib.cfg protocol.asm + tlink /t /x protocol.obj + +To compile or delete temporary files, the MAKE utility also can be used +(see makefile). + + +Known problems: +--------------- + +Symptom: if the mouse is moved when Works 2.0 for DOS or Word 5.5 for DOS + are redrawing a screen in graphics mode then some parts of screen + are corrupted. +Cause: these programs don't hide the mouse cursor while drawing on the + screen and/or don't use the EGA RIL API when changing video + adapter registers. +Solution: correct the code of these programs; don't move the mouse while + the screen is being redrawn; future versions of CTMOUSE will + probably read the VGA adapter registers directly. + +Symptom: under Windows 3.1 after a mouse reset (INT 33/0000), the graphics + mouse cursor is shifted by one pixel right/down. +Cause: Windows traps INT 33 calls and for the reset function additionally + calls the text and graphics cursor define functions with [-1,-1] + hot spot. +Solution: use 'PUSHF/CALL FAR' sequence instead of 'INT' instruction to + call INT 33 handler; there probably are some Windows APIs, which + can be used in CTMOUSE to interact with Windows directly. + +Symptom: sometimes, under Windows 3.1, the graphics cursor has a black box + shape. This may also happen after switching between windows. +Cause: probably due to a Windows bug when Windows incorrectly redefines + the cursor after video mode changes or switching between windows. +Solution: restart the graphics application or switch back and forth + between windows again; there probably are some Windows APIs, + which can be used in CTMOUSE to interact with Windows directly. + +Symptom: unlike Microsoft Mouse driver 8.2, the mouse doesn't work in + a windowed DOS box of Windows 3.1 with CTMOUSE installed. +Cause: the Microsoft Mouse driver most probably uses an unpublished API to + interact with Windows. +Solution: currently unknown. + +Symptom: CTMOUSE fails to detect PS/2 mice under Windows 9x/ME. +Cause: Windows seems unwilling to let a DOS application have access to the + PS/2 device services. +Solution: currently unknown. + + +Credits: +-------- + +(Some names are mentioned in HISTORY). + +Ralf Brown : author of Interrupt List (a great collection + of system specific information). +Joergen Ibsen / Jibz : author of aPACK (an excellent + executable packing program); advice about managing executables. + +Arkady V.Belousov : bugfixes, optimizations and features. +Alain Mouette : many ideas and message files. +Jason Burgon : bugfixes, features, advice + about interrupts handling consistency. +Matthias Paul : many ideas and + advice about interfacing with OS. +Robert Riebisch : mode 13h bugfix. +Fernando Papa Budzyn: automatic loadhigh capability. +Martin : optimizations. +Paul Schubert: much faster PS/2 code. +All who helped with ideas and code. + + +Contacts: +--------- + +mailto:nagyd@users.sourceforge.net +http://cutemouse.sourceforge.net diff --git a/TOOLS/DOSIDLE.EXE b/TOOLS/DOSIDLE.EXE new file mode 100755 index 0000000000000000000000000000000000000000..588cef51f0711df0ce621bfbbbf0ad1e782fa316 GIT binary patch literal 10868 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 Fe*(QXSMvY> literal 0 HcmV?d00001 diff --git a/TOOLS/DOSIDLE.TXT b/TOOLS/DOSIDLE.TXT new file mode 100755 index 0000000..415acc7 --- /dev/null +++ b/TOOLS/DOSIDLE.TXT @@ -0,0 +1,784 @@ + +====================================================================+ + | Info and updates: http://www.vogons.org/viewtopic.php?f=24&t=43384 | + +====================================================================+ + + + + + DOSidle: FULL Documentation + --------------------------------- + Written by Marton Balog + Version 2.51 [Build 0102] + + + + + Copyright (C) by Marton Balog, 1998. + Updates 2015 by I. Tsenov & M. Kennedy + All rights reserved. + + + + + + + TABLE OF CONTENTS +========================= + + 1 - DESCRIPTION. + 1.1 - What is DOSidle? + 1.2 - DOSidle highlights. + 1.3 - Usage. + 1.4 - Installation. + + 2 - DOSidle FEATURES. + 2.1 - DOSidle features. + 2.2 - Command-line options. + + 3 - PROCESSORS. + 3.1 - CPU detection. + 3.2 - CPU features. + 3.3 - CPU optimization. + + 4 - HISTORY. + 4.1 - DOSidle V2.51 + 4.2 - DOSidle V2.50 + 4.3 - DOSidle V2.10 + 4.4 - DOSidle V2.00 + 4.5 - DOSidle V1.32 [Beta] + + 5 - MISCELLANEOUS. + 5.1 - Frequently Asked Questions. + 5.2 - Final words. + 5.3 - Legal and Disclaimer. + + + +------------------------------------------------------------------------------ +1 - DESCRIPTION. +====================== + + +1.1 - What is DOSidle? +---------------------- + + CPUidle for DOS (nicknamed DOSidle) is an MS-DOS based program that will +take advantage of the integrated power saving features of the microprocessor +and create an idle cycle in order to LOWER CPU TEMPERATURE CONSIDERABLY! + + DOSidle will also detect and enable integrated fine tuning features of +the processor to enhance the cache policy, enable 32-bit memory access where +possible, unlock some bus cycles, and more, so as to ACHIEVE HIGHER PROCESSOR +EXECUTION SPEED! + + The above are achieved by programming the microprocessor at register +level, accessing special internal configuration registers of the CPU. These +registers can be set up for very efficient power saving and execution speed. +This should be done by the BIOS of the computer, but unfortunately, most BIOS +vendors do a poor job in optimizing CPUs. Therefore, an external program +like DOSidle CAN actually cause a big change. + DOSidle will also put the CPU in suspend mode when it is in an "idle" +state. Waiting for user input via the keyboard/mouse is a typical idle +situation and this is true about 95% of the time. + In suspend mode, the CPU consumes A LOT LESS power than it normally would. +What is more, the processor returns from suspend mode automatically, by +hardware, thus the whole switch to and from suspend mode does not have an +impact on performance. + Placing the processor in suspend mode is achieved by eighter executing +the HLT machine instruction or by calling the APM BIOS of the system. Of +course, accessing the APM BIOS is only possible when it exists... + Again, this whole thing is TOTALLY HARMLESS as it executes instructions +that any other software can and does! + + + +------------------------------------------------------------------------------ +1.2 - DOSidle highlights. +------------------------- + + - Automatically detects processors from Cyrix, IBM, SGS Thomson, Intel, + AMD, IDT, UMC and NexGen. + + - Optimizes and automatically enables special power saving features of + the Pentium, Pentium-MMX, Pentium II, 5x86, 6x86, 6x86L, 6x86MX, K5, + K6-MMX, K6-3D, K6-Plus, WinChip C6, WinChip C6-Plus. + + For a complete list of supported processors, please refer to section 3 + of this document. + + - 100% ASSEMBLY coded, therefore program should be both fast and small + (the resident part of DOSidle is less than 3K). + + - Supports the Advanced Power Management specification V1.00 and above. + + - Powerful and flexible command-line interface allowing control of many + features of DOSidle, including more aggressive cooling routines, + self-debugging routines and more... + + - Can be suspended and activated any time after installation for maximum + compatibility with other software. + + - Works with a wide range of program's and thus it cools the CPU reliably. + This results in a more stable system and it expands CPU lifetime. + + - It's A MUST HAVE for overclockers! Stop thinking big fans, huge heat + sinks and Peltiers, just think DOSidle! ;-) + + + * To find out more about the differences between V2.10 and V2.00, please + read the History section (and then the whole file :-). + + + +------------------------------------------------------------------------------ +1.3 - Usage. +------------ + + DOSidle is a memory resident (TSR, for short) program, which needs to be +started only once, each time you restart your computer. Therefore, starting +DOSidle from AUTOEXEC.BAT is the preferred and recommended method. This has +the following advantages: + + - It is done automatically, so you won't ever have to bother with it once + you installed DOSidle. + + - Upon startup, only a limited number of drivers are installed (I am + mainly talking about protected mode drivers) and DOSidle has better + access to the CPU registers. + + DOSidle is designed to operate under MS-DOS. Since Windows95 appeared, +the term "DOS" became a bit confusing. I will try to make this more clear now. +Basically, Windows95/98 uses MS-DOS pretty much the same way Windows 3.1 did. +The difference is that Windows95/98 starts up automatically, hiding the good +old MS-DOS interface from the user. But if you examine your C:\ directory you +will find that Windows95/98 also has its AUTOEXEC.BAT and CONFIG.SYS, in fact, +the whole MS-DOS kernel exists (often referred to as MS-DOS 7.00) and loads +BEFORE Windows95/98 does. + So the term "DOS" can be used whenever the following situations are in +effect: + + - MS-DOS 6.22 and earlier. + Even if you have Windows 3.1 installed over it. + + - MS-DOS 7.00 and later. + This is the DOS that Windows95/98 is built upon. It loads automatically + before Windows does and it is there the whole time Windows runs! + + You can exclusively enter into this MS-DOS mode by eighter opening an + MS-DOS Box from Windows95/98 or by restarting your computer in MS-DOS + mode from the Start menu. + + DOSidle should be used in all of the above cases. Since Windows95/98 sits +on top of MS-DOS 7.00 (or later), it is NOT ENOUGH to use Andreas Goetz's +CpuIdle (unless you never-ever open an MS-DOS Box or restart in MS-DOS mode)! + DOSidle will NOT conflict with CpuIdle, so if you have CpuIdle loaded in +Windows95/98 and open an MS-DOS Box with DOSidle loaded, you are doing +exactly what you should do!! + +NOTE: DOSidle will perform best under Real-mode CPU operation, or in other + words, when no Memory Manager (such as EMM386) is active. But V86-mode + (with EMM386) should be about as good... + + + +------------------------------------------------------------------------------ +1.4 - Installation. +------------------- + +Setup: Unzip the DOSIDLE.ZIP package into a directory of your choice. Place + a line in the AUTOEXEC.BAT file that will load DOSidle with the + switches you prefer and reboot your computer. + + If you have multiple Operating Systems installed (Windows 3.1, + Windows95/98, Windows NT, MS-DOS), then make sure the above line is + placed in ALL AUTOEXEC files. + + If you are not exactly sure what the paragraph above means, please + read on... + + +Step 1: Unzip the DOSIDLE.ZIP package into a directory you prefer. In the + later examples, I will assume you have chosen the C:\DOSIDLE + directory. + +Step 2: If you know DOSidle well and/or decided to use it regularly, please + go to Step 4. + + If you are completely new to DOSidle and haven't read this document + then I strongly suggest doing so. Once you are finished, come back + here. + +Step 3: You are new to DOSidle. Experiment with it. You can install DOSidle + anytime by typing "DOSidle" at the DOS command prompt (even in a + Windows MS-DOS Box). + + NOTE: If you try to load DOSidle from a Windows95/98 DOS Box, then + Windows95/98 displays a warning message saying that DOSidle may not + run well, unless in MS-DOS mode. Answer NO to the question and you + are done. + +Step 4: You have decided to use DOSidle regularly. DOSidle should be loaded + from your AUTOEXEC.BAT, this way, you won't have to bother with it + each time you restart your computer. + + Windows95/98 has it's own AUTOEXEC.BAT file. Also, MS-DOS 6.22 (and + earlier) has it's AUTOEXEC.BAT. If you have BOTH of these Operating + Systems installed, then you will need to include a line in both of + the AUTOEXEC.BAT files that will load DOSidle + (later example: C:\DOSIDLE\DOSIDLE). + +Step 5: If you are using some sort of a boot manager (like System Commander), + I assume you know how to find and edit your AUTOEXEC.BAT file(s) - + please go to Step 7. + + If you are unsure about these files, I would suggest the following + steps: + +Step 6: Locate the AUTOEXEC.BAT file(s). They should reside in the root + directory of drive C. That is C:\ + + Look for the following files: AUTOEXEC.BAT, AUTOEXEC.DOS, + AUTOEXEC.W40, AUTOEXEC.W41 If you find any of these files, just + include a line somewhere at the end like this (Optionally specifying + command-line parameters. They are described in detail in the next + section.): + + C:\DOSIDLE\DOSIDLE + + NOTE: If you have a mouse, place the above line AFTER the mouse + driver. Otherwise, DOSIDLE won't be able to detect your mouse driver + and hook to its API, which will cause problems with the programs that + use the mouse. + +Step 7: Restart your computer, and voila: + DOSidle is resident now. You can check it to make sure using the + "mem /c /p" command at the DOS prompt. If you find DOSidle in the + list of resident drivers, it's installed! + + + +------------------------------------------------------------------------------ +2 - DOSidle FEATURES. +=========================== + + +2.1 - DOSidle features. +----------------------- + +Cooling methods: +---------------- + + DOSidle supports two ways of processor power management (later referred +to as cooling methods): through the HLT instruction or through APM BIOS calls. + + The HLT method means executing the HLT opcode each time DOSidle detects +that the system is idle. Since most processor enter suspend mode after a HLT +is executed, this method is very useful for power management. + + The APM BIOS calls method means invoking the "CPU idle" APM call each +time the system is detected idle. It is then up to the APM BIOS vendor how +efficient this call will be. + + + +Cooling strategies: +------------------- + + Both power management methods can use three "strategies" to achieve +cooling: Strong Force mode, Normal Force mode and No Force mode. + + Strong Force mode is the most aggressive method, which can cause some +incompatibilities, but it is also by far the most efficient method. Running +in this mode, DOSidle intercepts more system calls as "idle", and it issues +multiple power saving calls (HLT or APM BIOS calls) from each idle cycle. + + Normal Force mode behaves pretty much the same way as Strong Force mode, +except that only 1 power saving call will be executed from each idle cycle, +so the cooling ratio is 1:1. + + No Force mode disabled forcing of power saving calls, only the most +obvious system functions (like Read Key or similar) will be intercepted and +treated as idle. The cooling ratio is the worst, but this mode should be very +compatible. Anyway, I am definately against using this strategy. + + + +CPU optimization: +----------------- + + DOSidle will optimize the Central Processing Unit of the system if it is +requested. To find out more about optimizations, please read the Processors +section. + + + +Command-line: +------------- + + DOSidle is configured from the command-line. All characteristics of +DOSidle can be controlled this way. To find out more about the command-line +switches, please read the next section. + + + +------------------------------------------------------------------------------ +2.2 - Command-line options. +--------------------------- + + DOSidle supports various command-line switches that control how the +program behaves. All switches are case-insensitive (so "-cpu" = "-Cpu") and +they are as follows: + +Switches: +--------- + +-H, -?: +Displays a help message about command-line options, as well as some examples. + +-U: +Uninstalls DOSidle (removes it from memory). +Of course, this is only possible, if it has been installed already. If not, +DOSidle will fail with an error message. Also, if some other program altered +the interrupt vectors that DOSidle uses it won't be able to uninstall. + +NOTE: The changing of critical interrupt vectors is a problem for any + memory resident program that wants to uninstall. Therefore, the + higher number of programs you use after DOSidle has been loaded, the + higher the chances that DOSidle won't be able to uninstall (else the + system would crash). In this case, use the -Off switch. + +-Off: +Suspends DOSidle. +Use this switch if DOSidle conflicts with a certain application you are using. +All features of DOSidle will be turned off as well as the program itself, but +it will remain installed (in memory). Then when you finish using that +application you can reactivate DOSidle with the -On switch. + +-On: +Reactivates DOSidle after it has been suspended with the -Off switch. +Read the paragraph above to find out why this is useful. + +-Cpu: +Detects and optimizes the processor in the system. +Currently, processors from Cyrix/IBM/SGS Thomson are optimized, but AMD, IDT +and Intel processors will be supported in the near future as well. Please +read the CPU Optimization section for more information. + +-Hlt: +Selects cooling method: HLT instructions. +This switch causes DOSidle to execute HLT instructions every time it detects +that the system is idle. Since most processors have a "Suspend on HLT" +feature, this instruction places them in suspend mode, thus saving energy and +achieving very good cooling. +This switch is enabled by default. + +-Apm: +Selects cooling method: APM V1.00+ BIOS calls. +This switch makes DOSidle use the Advanced Power Management (APM) BIOS in the +system for cooling. That is, APM calls (to put the CPU in suspend mode) will +be executed every time DOSidle detects that the system is idle. This yields +to superb cooling. + +NOTE: DOSidle will automatically switch to HLT cooling method (-Hlt) if the + APM BIOS is somehow inaccessible (disabled or disengaged). It will + not turn on power management, that should be done by the user from + the system setup. + +-Fm2: +Selects cooling strategy: Strong Force mode. +This switch makes DOSidle perform the most aggressive cooling strategy, which +means better cooling ratio (several HLTs / APM calls will be made from each +idle cycle). On the other hand, this might cause some incompatibilities, but +it is highly unlikely. +This switch is enabled by default and I definately recommend using it! + +-Fm1: +Selects cooling strategy: Normal Force mode. +This switch makes DOSidle use the cooling strategy that was introduced in +DOSidle V1.32 [Beta]. The cooling ratio is 1:1, which means that exactly one +HLT instruction / APM call will be made from each idle cycle. This means +worse cooling than Strong Force mode (above paragraph), but should be more +compatible. +This switch is disabled by default, and it should only be enabled if Strong +Force mode is causing strange behaviour. + +-Fm0: +Selects cooling strategy: No Force mode. +This switch disables any type of HLT / APM call forcing from idle cycles and +therefore performance is very little. On the other hand, No Force mode should +be compatible with every program. +For the sake of performance, do not select this strategy for cooling!! Only +use this switch if everything else fails. + +-Tm: +Enables Test Mode. REMOVED! +The -Tm switch is removed from DOSidle V2.10 and later! It was used to +display information about the cooling ratio and the number of HLTs / APM calls +executed, mainly for Beta testers. + + + +Examples: +--------- + +DOSidle +Installs and activates DOSidle. Selects HLT cooling method with Strong Force +mode (-Fm2) strategy. This means that the following switches are enabled by +default: -On, -Hlt, -Fm2. + + +DOSidle -cpu +Installs and activates DOSidle. Selects HLT cooling method with Strong Force +mode strategy. Optimizes the CPU of the system. +I recommend loading DOSidle this way! + + +DOSidle -cpu -apm -fm1 +Installs and activates DOSidle. Selects APM BIOS calls cooling method with +Normal Force mode strategy. Optimizes the CPU of the system. + + +DOSidle -off +Suspends DOSidle temporarily, until you type: DOSidle -on + + + +------------------------------------------------------------------------------ +3 - PROCESSORS. +===================== + +3.1 - CPU detection. +-------------------- + + DOSidle automatically detects the CPU in the system and enables special +power saving features of the processor. Please note that even if DOSidle +misidentifies your CPU, it will run at full cooling performance, only CPU +optimization will not function. The following CPUs are detected and +supported by DOSidle: + +Intel: +- i486DX at 25/33 Mhz, i486DX at 50 Mhz. +- i486 SX / SX2 / SL / DX2 / DX2-WB / DX4 / DX4-WB. +- Pentium A-Step, Pentium, Pentium OverDrive, Pentium-MMX, + Pentium Pro A-Step, Pentium Pro, Pentium II. + + +AMD: +- Am486 DX2 / DX2-WB / DX4 / DX4-WB. +- Am5x86, Am5x86-WB. +- AMD K5-SS/A, AMD K5, AMD K6-MMX, AMD K6-3D, AMD K6-Plus. + +All future AMD processors will be detected due to AMD's support for the +Extended CPUID instruction. + + +Cyrix: +- Cx486S A-Step. +- Cx486 SLC / DLC / SLC2 / DLC2 / SRx / DRx / SRx2 / DRx2 / SRu / DRu / SRu2 + Cx486 DRu2 / S / S2 / Se / S2e / DX / DX2 / DX4. +- Cx5x86, Cx6x86, Cx6x86L, Cx6x86MX. +- Cx MediaGX, Cx GXm. + +All future Cyrix processors will be detected due to Cyrix's support for the +Extended CPUID instruction. + + +NexGen: +- Nx586, Nx586 & Nx587, Nx686. + + +IBM: +- IBM 5x86, IBM 6x86, IBM 6x86L, IBM 6x86MX. + + +IDT: +- IDT WinChip C6, IDT WinChip C6-Plus. + + +UMC: +- UMC U5D, UMC U5S. + + +Thomson: +- SGS Thomson 6x86, SGS Thomson 6x86L. + + + +------------------------------------------------------------------------------ +3.2 - CPU features. +------------------- + + Many CPUs support special power saving functions. Taking advantage of +these integrated features is critical in efficient CPU power management. +DOSidle can and does enable the following features on certain CPUs: + +Suspend on HLT: +- AMD K5-SS/A, AMD K5, AMD K6-MMX, AMD K6-3D, AMD K6-Plus. +- IBM 5x86, IBM 6x86, IBM 6x86L, IBM 6x86MX. +- Cx5x86, Cx6x86, Cx6x86L, Cx6x86MX. +- SGS Thomson 6x86, SGS Thomson 6x86L. + +Auto HLT: +- Intel Pentium, Pentium-MMX. +- IDT WinChip C6, IDT WinChip C6-Plus. + +Low Power on Auto HLT: +- Pentium-MMX. + + + +------------------------------------------------------------------------------ +3.3 - CPU optimization. +----------------------- + + With V2.00+, CPU detecting and optimizing features have been added to +DOSidle. DOSidle will now automatically detect to CPU in the system and +optionally (if you select it with the -cpu switch) optimize it. + CPU optimization may cause some system instabilities, only experiment +with it once you are sure that everything else is stable. If something goes +wrong afterwards, you can be sure that the CPU optimization is the cause. + + The following CPUs are optimized: + +CPUs from Cyrix +--------------- +Cyrix 5x86 - Suspend on HLT, CPUID. +Cyrix 6x86 - Suspend on HLT, CPUID, Weak Locking, Write Allocate. +Cyrix 6x86L - Suspend on HLT, CPUID, Weak Locking, Write Allocate. +Cyrix 6x86MX - Suspend on HLT, CPUID, Weak Locking, Write Allocate. + + + +------------------------------------------------------------------------------ +4 - HISTORY. +================== + +DOSidle V2.51 +------------- + + - Fixed a bug in INT 2Fh handler that can lead to problems/instability + when using APM for power management. Note that this bug was present since + at least DODidle V2.10. + +DOSidle V2.50 +------------- + + - Added hooking to the mouse driver API (INT 33h), which solves the problems + with the mouse in many programs that use the mouse "interrupt" interface + (for example Borland C++ 3.1, PQ Magic 3.0, MS-DOS EDIT and many other). + + - Removed the unused code, which reduced the resident code size by a few + hundred bytes. + +DOSidle V2.10 +------------- + + - Added -Apm command-line switch to enable special APM features for + DOSidle to implement even better cooling than in DOSidle V2.00!! + + - Added automatic Intel Pentium, Pentium-MMX and IDT WinChip C6 "Auto HLT" + feature enable for Protected-mode (special thanks to Martin Malik)!! + + - Added automatic Intel Pentium-MMX "Low Power on Auto HLT" feature + enable for Protected-mode (special thanks to Martin Malik)!! + + - Removed the -Tm switch (as in DOSidle V2.00 and earlier), which was not + needed by general users, to shrink program size!! + + - Fixed a little bug in DOSidle V2.00 that was causing performance drop- + down under MS-DOS V7.00+, when Windows95/98 was not loaded (when the + system was restarted in MS-DOS mode from Windows95/98)!! + + - More bugfixes, as usual. + + + +DOSidle V2.00 +------------- + + - Recoded and optimized the WHOLE kernel for better performance, more + features and easy future development (this is actually much more + important than it sounds)!! + + - Added more powerful cooling routines to GREATLY ENHANCE performance!! + Using the -Fm2, -Fm1, -Fm0 command-line switches you can now control + DOSidle's cooling strategy directly!! + + - Added -On, -Off command-line switches to Activate and Suspend DOSidle + at any time for a while, without removing it from memory!! + + - Added -Cpu command-line switch to Optimize the CPU!! + + - Added automatic CPU, Operating System and Protected Mode detection!! + + - Added automatic Cyrix/IBM/SGS Thomson 5x86, 6x86, 6x86L and 6x86MX + "Suspend on HLT" feature enable!! + + - Added automatic Intel Pentium, Pentium-MMX and IDT WinChip C6 "Auto HLT" + feature enable (Real-mode only)!! + + - Added automatic Intel Pentium-MMX "Low Power on Auto HLT" feature + enable (Real-mode only)!! + + - Changed the command-line switch character from "/" to "-"!! + + - Fixed Modem and Mouse slowdown problem with DOSidle V1.32 [Beta]!! + + - Fixed at least five other bugs found in DOSidle V1.32 [Beta]!! + + + +DOSidle V1.32 [Beta] +-------------------- + + - First release of the DOSidle kernel, together with CpuIdle V2.40. + + - Added some cooling routines to the basic ones. + + - Added /TM switch for Test Mode, so DOSidle can display information + about program performance. + + - Added /NF switch to disable Force Mode for compatibility with software + that might not work correctly with the new cooling routines. + + + +DOSidle V1.10 +------------- + + - The first usable version of DOSidle, which was never released. I have + coded it together with Andreas Goetz. Thanks Andi! + + + +------------------------------------------------------------------------------ +5 - MISCELLANEOUS. +======================== + +5.1 - Frequently Asked Questions. +--------------------------------- + +Q: So what the heck is this program?? + +A: DOSidle is a program that will take advantage of the power management + features of your microprocessor so as to reduce heat buildup. + Windows95/98 and MS-DOS does not support these features, therefore a lot + of heat is generated unnecessarily when the system is idle (waiting for + user input). + Several measurements indicate that DOSidle can even cause a 16 C degrees + (29 F degrees) temperature drop. Many good heatsinks and fans would envy + this :) + + + +Q: I already have CpuIdle from Andreas Goetz, why would I want to use DOSidle? + +A: Simple. CpuIdle does a superb job in cooling the system under Windows95/98. + On the other hand, DOSidle does a great job (hopefully) in cooling the + system under MS-DOS 6.22 and earlier, MS-DOS 7.00 and later (Windows95/98 + MS-DOS) AND in a Window95/98 MS-DOS Box. + Since users of Windows95/98 generally use MS-DOS in one of the above ways, + DOSidle is needed to reduce heat just as CpuIdle does in pure Windows95/98. + + + +Q: I know CpuIdle quite well and I have observed that it can cause a + temperature drop of 20 C degrees. How come DOSidle sometimes achieves + better, but sometimes worse performance? + +A: MS-DOS is a lot different story from Windows95/98. Whereas the Windows + operating system handles idle threads quite naturally (and thus it's easier + to know when the system is idle), MS-DOS is a place of total chaos. There + is NO standard way of user I/O, therefore DOSidle must make a lot of + assumptions. These assumptions are sometimes correct and the cooling is + highly efficient, but sometimes wrong and cooling performance drops. + And of course, if a program manages its I/O in a quirky behaviour, DOSidle + is tricked and it won't be able to cool effectively. Believe me, DOSidle + does EVERYTHING that is possible under MS-DOS! + + + +Q: Will DOSidle slow my system in some way? + +A: No, no and NO! It definately shouldn't. If you notice program slowdown + that is caused by DOSidle, please report it to me immediately! + + + +Q: Can DOSidle damage my CPU? + +A: NO!! + + + +Q: Can I have the assembly source code of DOSidle? + +A: If you pay for it... maybe. Otherwise no. + + + +------------------------------------------------------------------------------ +5.2 - Final words. +------------------ + + If anybody knows how to execute CPL0 (Ring 0) instructions under DPMI 0.9 +or DPMI 1.0, please let me know right away!! Also, I would greatly appreciate +any feedback regarding DOSidle: notes, ideas, comments, bugs or any E-mail +for any reason. Your opinion is the most important to me, but I will never +know it unless I hear (or read) it :). + +I would like to thank Andi (Andreas Goetz) for his help and support, Martin +Malik (author of HWiNFO) for his source code, and Zsuzsi (Zsuzsa Petro) for +her patience in first place. + +Many thanks go to the Beta testers of DOSidle as well. They are: +- David Szots +- Vito DeFilippo +- and finally, Andi and myself... + + +Enjoy, +Marton Balog + +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +Address: Zsolt Fejedelem u.6 + Budapest, 1029 + Hungary, Europe. + +E-Mail: dosidle@usa.net + + + +------------------------------------------------------------------------------ +5.3 - Legal and Disclaimer. +--------------------------- + + This software can be used freely without any obligations to the author in +non-commercial enviroments. For use of commercial purposes, you have to +contact the author, Marton Balog, and receive explicit permission. Commercial +purposes include CD-ROMs with bundled free software as well as integration +of this software into other programs. + + + + THIS SOFTWARE PACKAGE (DOSIDLE.ZIP) INCLUDING ALL ACCOMPANYING FILES ARE +DISTRIBUTED "AS IS", WITHOUT ANY WARRANTIES, EIGHTER EXPRESSED OR IMPLIED. +THE AUTHOR (MARTON BALOG) DOES NOT TAKE ANY RESPONSIBILITIES FOR POSSIBLE +DAMAGES OR FUNCTIONALITY AND CAN NOT BE HELD LIABLE FOR ANY DAMAGE CAUSED +DIRECTLY OR INDIRECTLY BY THIS SOFTWARE. + USE EVERYTHING AT YOUR OWN RISK! + + ALL TRADMARKS MENTIONED IN THIS DOCUMENTATION ARE PROPERTIES OF THEIR +RESPECTIVE OWNERS. + + + + + + + + + +=========================+ + | E-Mail: dosidle@usa.net | + +=========================+ diff --git a/TOOLS/FDAPM.COM b/TOOLS/FDAPM.COM new file mode 100755 index 0000000000000000000000000000000000000000..613f08d162fecf18a0a8533024e94d5368059de6 GIT binary patch literal 7434 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 diff --git a/TOOLS/REBOOT.COM b/TOOLS/REBOOT.COM new file mode 100755 index 0000000000000000000000000000000000000000..4cc50a968eb5bb328301bd6916f68716743cd208 GIT binary patch literal 16 Ycmdntz|eQ&IGYE9iO{PL{~10206Go_g8%>k literal 0 HcmV?d00001 diff --git a/TOOLS/RESTART.COM b/TOOLS/RESTART.COM new file mode 100755 index 0000000000000000000000000000000000000000..4cc50a968eb5bb328301bd6916f68716743cd208 GIT binary patch literal 16 Ycmdntz|eQ&IGYE9iO{PL{~10206Go_g8%>k literal 0 HcmV?d00001 diff --git a/TOOLS/SHSUCDX.COM b/TOOLS/SHSUCDX.COM new file mode 100755 index 0000000000000000000000000000000000000000..253ad517e8b938585f3977f9234a9e5aa580902b GIT binary patch literal 7873 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 literal 0 HcmV?d00001 diff --git a/TOOLS/SHSUCDX.TXT b/TOOLS/SHSUCDX.TXT new file mode 100755 index 0000000..69462fd --- /dev/null +++ b/TOOLS/SHSUCDX.TXT @@ -0,0 +1,306 @@ + + SHSUCDX + + Copyright 2005 Jason Hood + + Freeware. Version 3.02 + + Derived from v1.4b by John McCoy + + + =========== + Description + =========== + + SHSUCDX is an unloadable CD-ROM redirector substitute for MSCDEX. It + supports up to 10 drives. Each drive is single-sector buffered and the + last 10 directory entries are cached. Each unit from each driver can be + assigned a specific drive letter. + + + ===== + Usage + ===== + + Run SHSUCDX with the name of one or more CD-ROM device drivers. If the + drivers are valid, SHSUCDX will install a drive letter for each unit on + each driver. + + ------- + Options + ------- + + /D driver and drive manipulation + /L drive letter + /C memory usage + /V memory statistics or option information + /~ tilde usage + /R read-only attribute usage + /U unload + /Q quiet + + /D - Driver + + This option is used to specify the name of the device driver. It can + also indicate which unit(s) should be assigned and to what letter. The + complete syntax is: + + /D[:][?|*]driver[,[letter][,[unit][,[max]]]] + + DRIVER is the name of the device driver installed to control the CD-ROM + drive. Prefixing the driver with '?' will silently ignore it if it does + not exist (or is not actually a CD-ROM); prefixing with '*' will also + ignore it, but a drive will be reserved (see below). + + LETTER is the first drive letter to assign to the units on this driver. + The default is the first available letter. Note: the drive letters + assigned to subsequent units will always be higher than those assigned + to previous units. + + UNIT is the first unit on this driver to be assigned a drive. Unit 0 is + the default. + + MAX is the maximum number of units on this driver to be assigned drives. + The default is all units (or all remaining units, if UNIT is given). + + /D - Drive manipulation + + At install time, /D can also be used to reserve space for additional + drives. Use a single digit to indicate how many drives should be + reserved (eg: /D1). (If you should happen to have a device driver name + with a single digit, use the '?' prefix.) After installation, the same + option will remove the drive(s) that were last assigned. It is possible + to specify both forms of /D, in which case the current drive(s) will be + removed, then the new drive(s) added. + + /L - Letter + + This option is an alternative to the LETTER component of /D, which it + must follow (ie: /D:driver /L:letter). It can also be used to return + the number of drives installed (/L:0, will return 255 if not installed) + and the letter of each assigned drive (/L:1, /L:2, etc., with A: = 1 and + 255 if the drive is not assigned). + + /C - Memory usage + + By default, SHSUCDX will load itself into high memory, if available, or + into low memory if it is already high. This option will prevent that. + + /V - Memory statistics + + When this option is used at installation, a summary of memory usage will + be displayed. This summary includes: + + Static code and variables + Dynamic data for each drive and paragraph rounding + Total overall memory usage + + /V - Information + + When used with /?, or after installation, this option displays the + compile- and run-time options of SHSUCDX. This information includes: + + 8086/386 the minimum processor required + CD root form TRUENAME will return \\D.\A.\ instead of D:\ + High Sierra the original format for the CD file system + Joliet the Windows format for long names + image on CD enables access to an image which is itself on a CD + + /~ - Tilde usage + + The ISO standard allows for CDs to have names up to 31 characters and + Joliet can have names up to 64 characters. When this is reduced to 8.3 + for DOS it may lead to duplicated entries. This option will remove the + duplication by appending a tilded number after the name (similar to what + Windows does). By default, tildes are off. This option is also avail- + able after installation. By itself it will toggle the status (ie. if + tildes are currently on, /~ will turn them off and vice versa). Tildes + can be explicitly turned on or off by adding a '+' or '-' sign (ie: /~+ + will turn tildes on, irrespective of the current state). + + /R - Read-only attribute usage + + By default, files on the CD are given the read-only attribute. Should + you wish to remove this attribute, this option will do so. As with /~, + it can be used after installation and it accepts '+' and '-'. + + /U - Unload + + Unhook the interrupt, free the memory and mark the drive(s) as invalid. + + /Q - Quiet + + Prevent display of the sign-on banner (the copyright notice). /Q+ will + only display the drive assignments (when used after install '-' will in- + dicate a removed drive and '+' an added drive). /QQ will display noth- + ing at all. + + + ========== + SMARTDrive + ========== + + SMARTDrive caches MSCDEX by modifying MSCDEX' memory, so it is not + directly capable of caching SHSUCDX. However, the supplied SMARTER + program (see README.TXT) can patch SMARTDrive, enabling it to modify + SHSUCDX in the same way. Due to the method employed, if /D is used to + remove a drive, then later to install it again, it will no longer be + cached. If a drive is created from an image file, SMARTDrive should be + instructed not to cache it, since the image itself will be cached + (unless, of course, the image is located on a network). Note: upgrading + from SHSUCDX v2 will require re-running SMARTER. + + + ====== + DOSLFN + ====== + + This version of SHSUCDX will only work with DOSLFN 0.40a or later. Att- + empting to use an earlier version of DOSLFN may render the entire CD or + some files inaccessible. + + + =============== + Critical Errors + =============== + + A critical error is only generated on the initial access to the CD. If + a read error occurs, the calling function will fail with error 15 (drive + not ready). If an image is located on a CD, and that CD is removed, do + NOT abort, but fail and then abort (the first error is for the CD, the + second is for the image). + + + =========================== + Additional CD-ROM Functions + =========================== + + SHSUCDX has an additional installation check: + + Int 2F + AX = 1100 + BX = BABE + Return: + BX = BABE if SHSUCDX v3 not installed, otherwise: + BL = compile-time flags + BH = release number + ES:DI -> drive table + CX = number of drives + DX = size of each entry + + Compile-time flags: + Bit 0 = 0 if 386, 1 if 8086 + 1 = 1 if CD root form (\\D.\A.\) + 2 = 1 if High Sierra is supported + 3 = 1 if Joliet is supported + 4 = 1 if image on CD is supported + + There are also functions to control the tilde and read-only state: + + Int 2F + AX = 150F + CL = -1 + CH = 0: Get current tilde state in AX (0 off, -1 on) + 1: Set current tilde state from BX (0 off, anything else on) + 2: Get read-only attribute in AX (0 = off, 1 = on) + 3: Set read-only attribute from BX (0 off, anything else on) + + Carry will be cleared (MSCDEX will set carry). + + Finally, there is a function to convert a CD directory name to an FCB: + + Int 2F + AX = 150F + CL = -2 + ES:SI -> pointer to directory entry + ES:DI -> 11-byte buffer for FCB name + DX = alias number (0 for none) + + The alias number is the number of the directory entry within the sector, + plus 64 times the sector number (both zero based). For example, the + third entry in the third sector of a directory would have an alias num- + ber of 130 (2 + 2 * 64). + + + ========= + Exit Code + ========= + + 0 Uninstalled, help, option set + 1-32 Drive number of first installed drive (A=1) + 246 Invalid or unknown option + 247 Unable to uninstall + 248 Not enough memory + 249 No drives assigned (ie. not installed) + 250 No drive letters available + 251 Unit on driver does not exist + 252 Invalid or non-existant driver + 253 Already installed + 254 Unsupported version of DOS + 255 386 required + + + ======== + Examples + ======== + + SHSUCDX /D:SHSU-CDH + + SHSUCDX finds the first available drive letter and assigns it to device + unit 0 of the driver SHSU-CDH. If there is a second and/or third CD + drive they are assigned to the next available letters in sequence. + Drive letters in use are skipped. The first CD supported by a driver is + device unit 0 regardless of its SCSI address. + + SHSUCDX /D:IDE-CD,F /D:?USB-CD,U /D:*SHSU-CDH,W /L:0 + + Assign drive F to the IDE-CD driver, or abort if it is not loaded. If + the USB-CD driver is loaded, assign it to drive U; else do nothing. If + the SHSU-CDH driver is loaded, assign it to drive W; else reserve space + for it, so it can be loaded later. SHSUCDX will return the number of + drives assigned (or 252 if aborted). + + SHSUCDX /L:0 + + If SHSUCDX is not installed, it will return 255; otherwise the number of + assigned drives (which can be 0). In either case, nothing is displayed. + + SHSUCDX /D:CD001,,1,1 /D:CD001,,4,1 + + SHSUCDX assigns the first available drive letter to device unit 1 of the + driver CD001 and the next letter to unit 4. This allows access to non- + contiguous drive units without having to support un-needed units. + + + ======= + History + ======= + + Legend: + added, - bug-fixed, * changed. + + v3.02 - 5 May, 2005: + + set drive number in device driver's header (needed by I_Cache) + + Int2F/AX=1500 will return AL=FF (needed by XCD in DESQview/X) + + SMARTDrive install check will return a release number in BH + + /Q+ to only display drive assignments + * if loaded high, relocate low (/C will then keep high) + - /? wouldn't work if a different version was installed + * removed default driver (/D:drives by itself can now install) + * modified the installer, binary is now a lot smaller + * more NASM macros + + v3.01 - 5 March, 2005: + - Joliet support for non-English users (use ISO if no DOSLFN 0.40a) + * removed DR-DOS INSTALL support, use INSTALLLAST (or define DOSMOVES) + + ignore unsupported MSCDEX options (/E/K/S/M) + + /L enhanced to return drives assigned, drive numbers + - 386 check was using near conditional jumps + - preserve AH in redirector install check + * display error if /C used after install + + v3.00 - 30 November, 2004: + * clean slate. + + + ======================== + Jason Hood, 5 May, 2005. diff --git a/TOOLS/SHUTDOWN.COM b/TOOLS/SHUTDOWN.COM new file mode 100755 index 0000000000000000000000000000000000000000..e3d862c879fb55ce46fbe50043de874d6f238555 GIT binary patch literal 894 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