2015-16. If you always boot OS/2 EComStation to a command line, you may find that the system sometimes hangs when you start PMShell. The problem occurs if:
The hang can be avoided by removing the MMFix line from \config.sys; or by running '\Snap\GAOption VBE on' to turn off Snap video acceleration; or by switching to a different video driver such as Panorama. But then you may sometimes experience the looping startup sound bug.
If you use one of the above fixes that permit looping sound to occur, you can squash the looping sound bug by disabling Desktop sound effects entirely. OS/2 Warp 3 included DINSTSND.CMD and INSTSND.CMD in \MMOS2\install to toggle system sounds. My ECS lacks these but these simplified versions work:
/* DINSTSND.CMD */
Call RxFuncAdd 'mciRxDeinstMMSound','MMSND','mciRxDeInstMMSound'
rc=mciRxDeInstMMSound()
if rc=1 then say 'Now reboot.'; else say 'Error:' rc'.'
exit rc
/* INSTSND.CMD */
drive=translate(left(arg(1),1))
if drive <A | drive >Z then signal error
Call RxFuncAdd 'mciRxInstMMSound','MMSND','mciRxInstMMSound'
rc=mciRxInstMMSound(drive)
if rc=0 then say 'Now reboot.'; else say 'Error:' rc'.'
exit rc
error:
say; say 'You must specify the MMOS2 drive.'
exit 0
Another workaround that keeps sound effects is to delay the start of the MMFix. Of course, there can be no assurance that the method described here will work for you.
run=C:\Rube-Goldberg\BOS2Rexx.EXE
run=C:\OS2\CMD.EXE /q /c "C:\Rube-Goldberg\Fix-MMFix.CMD >nul"
All this does is detach the script and let it check every two seconds to see if the PMShell is starting yet. If it is, the script launches MMFix.EXE and then terminates. Effectively, this is a patch for a patch, or a system hanging by a thread.
/* Fix-MMFix.CMD: Run MMFix Just In Time */
/*
Copyright walt.gregg.juneau.ak.us 2016.
License: apache.org/licenses/LICENSE-2.0.
No warranty, express or implied.
If booting to the command line so MMFix fails, adjust \config.sys lines.
Rem out MMFix.EXE and run MMFix.EXE and this Fix-MMFix.CMD lines thusly:
Rem run=C:\MMOS2\MMFix.EXE
run=C:\Rube-Goldberg\BOS2Rexx.EXE (from BootOS2.zip on hobbes.nmsu.edu);
run=C:\OS2\CMD.EXE /q /c "C:\Rube-Goldberg\Fix-MMFix.CMD >nul"
*/
call RxFuncAdd 'SysIni','RexxUtil','SysIni'
call RxFuncAdd 'SysSleep','RexxUtil','SysSleep'
'@echo off'
x=time('r')
do forever
x=SysIni('USER', 'ALL:', 'stem.')
if x\= 'ERROR:' then leave
call SysSleep 2
end
/* Shell starting, run MMFix just in time */
'detach C:\MMOS2\MMFix.EXE 2>nul'
exit 0