On this page: Main Content. Fix allowing looping sound. Fix disabling desktop sound. Fix delaying MMFix.

Fix PMShell Startup Hang

January 2016. 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:

  1. Your \config.sys file uses 'ProtShell=C:\OS2\CMD.EXE /k [C:\Rube-Goldberg\Init.CMD]' (where the script is optional) instead of the customary 'ProtShell=C:\OS2\PMShell.EXE'; and
  2. Your \config.sys file contains the line 'run=C:\MMOS2\MMFix.EXE'; and
  3. You are using the Snap graphics accelerated video driver; and
  4. You wait more than a minute after boot before manually typing 'PMShell'.

Fix allowing looping sound

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.

Fix disabling desktop sound

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

Fix delaying MMFix

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 actually work for you.

  1. You'll need to have BOS2REXX.EXE from BootOS2.ZIP (available at Hobbes.NMSU.EDU). Place in a convenient directory (e.g. \Rube-Goldberg).
  2. You'll need to create Fix-MMFix.CMD (copied from below) into the same directory.
  3. You'll need to include these lines in your \config.sys (BOS2Rexx must come first):
    run=C:\Rube-Goldberg\BOS2Rexx.EXE
    run=C:\OS2\CMD.EXE /q /c "C:\Rube-Goldberg\Fix-MMFix.CMD >nul"

All we do is detach the script, let it check every two seconds to see if the PMShell is starting yet, and if it is, have it launch MMFix.EXE and then terminate. A patch for a patch. A system hanging by a thread?


/* Fix-MMFix.CMD: Run MMFix Just In Time */
/*
Copr. walt.gregg.juneau.ak.us 2016.
License: apache.org/licenses/LICENSE-2.0.
Absolutely no warranty, express or implied.
If booting to 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


, Fix PMShell Startup Hang (Jan. 2016) (available at ). © W. Gregg 2016; CreativeCommons.org /licenses /by-nc-sa/4.0.

 No Privacy