OS2 World Community Forum

OS/2, eCS & ArcaOS - Technical => Programming => Topic started by: Dave Yeo on April 13, 2019, 09:10:52 pm

Title: Mozturbo help
Post by: Dave Yeo on April 13, 2019, 09:10:52 pm
Looking for volunteers to help with mozturbo.
Icons would be nice.
Be nice to have a Rexx script that runs highmem to mark the Mozilla DLLs high and add the turbo program to the startup folder.
Title: Re: Mozturbo help
Post by: David Graser on April 14, 2019, 05:09:38 am
Dave,

I am playing around with ideas.  Attached are a couple PNGs and one icon.  8 bit detailed icons are challenging.
Title: Re: Mozturbo help
Post by: Dave Yeo on April 14, 2019, 06:44:08 am
They look good. Not sure which one I like better. The bottom one would be easier to adapt to the other apps with a common look.
These don't have to be 8 bits, though I guess that could change. Firefox has the icon embedded and needs lxliting as it and the DLLs are huge (10x).
Currently I was just thinking of shipping the icons with the binaries, so ffturbo.exe and ffturbo.ico though perhaps icons for "ffturbo -l" and ffturbo -u" (load and unload) would be good for the most common type of install where "ffturbo -l" would be in the startup folder and the -u version somewhere else as "ffturbo -u" would likely only be used when upgrading.
Title: Re: Mozturbo help
Post by: xynixme on April 14, 2019, 02:25:11 pm
0. A disadvantage of starting with 80x80 icons may be that scaling down to even 40x40 becomes too hard, if you have a choice.

Be nice to have a Rexx script that runs highmem to mark the Mozilla DLLs high and add the turbo program to the startup folder.
Willing, but it could be a component of a WPI package which fully agrees with your recommended settings (a.o. LIBPATHSTRICT). I do recommend an own installer.

1. Can you ship the *TURBO.EXE with your builds? To avoid "Please enter the full path of FIREFOX.EXE and its XUL.DLL".

2. What's the HIGHMEM command? I know the ABOVE512-one. Other candidates may be supported too, as long as the command is provided.

3. Which DLLs always? Which DLLs optionally (but recommended)?

4. PM UI (drop HIGHMEM.EXE or ABOVE512.EXE, if not found in PATH) or CLI (Please enter the full path of HIGHMEM.EXE or ABOVE512.EXE, or press ENTER to search for it in all directories).

5. Which default setting of the *TURBO.EXEs?

6. I'll insert a sample file, which assumes the -t parameter of the turbo, assumes the use of ABOVE512.EXE and its -c parameter, and is only aware of one DLL in its "database": XUL.DLL. No SysFileTree error checking (out of memory: rc=2). Not fully verified, but the syntax is checked by the Object Rexx interpreter. The root directory is not fully supported, albeit I'm expecting e.g. a subdirectory anyway.

Code: [Select]
/* InsTurbo.CMD */

CALL RxFuncAdd 'SysCreateObject','RexxUtil','SysCreateObject'
CALL RxFuncAdd 'SysDriveInfo','RexxUtil','SysDriveInfo'
CALL RxFuncAdd 'SysDriveMap','RexxUtil','SysDriveMap'
CALL RxFuncAdd 'SysFileTree','RexxUtil','SysFileTree'
CALL RxFuncAdd 'SysSearchPath','RexxUtil','SysSearchPath'

/* Find Mozilla product in the current directory */

SAY
product=''
IF Stream('MOZILLA.EXE','C','QUERY EXISTS')<>'' THEN product='Mozilla'
IF Stream('THUNDERBIRD.EXE','C','QUERY EXISTS')<>'' THEN product='TB'
IF Stream('FIREFOX.EXE','C','QUERY EXISTS')<>'' THEN product='FF'
IF Stream('SEAMONKEY.EXE','C','QUERY EXISTS')<>'' THEN product='SM'
IF product='' THEN DO
   SAY 'Error, cannot find any main Mozilla executable in the current directory:'
   SAY '      ' Directory()
   SAY
   CALL CharOut '','Press <ENTER>... '
   PULL .
   EXIT
END
SAY 'Product found:' product
IF product='Mozilla' THEN product='MOZ'

/* Find the matching TURBO.EXE in the same current directory */

turbo=product||'TURBO.EXE'
IF Stream(turbo,'C','QUERY EXISTS')='' THEN DO
   SAY 'Error, cannot find' turbo 'in the current directory:' Directory()
   SAY
   CALL CharOut '','Press <ENTER>... '
   PULL .
   EXIT
END
SAY turbo 'found.'

/* If the Mozilla product isn't the legacy browser, then try to find XUL.DLL */

dll.0=1
dll.1='XUL.DLL'
IF Length(product)>2 THEN dll.0=0
DO i=1 TO dll.0
   IF Stream(dll.i,'C','QUERY EXISTS')='' THEN DO
      SAY 'Error, cannot find' dll.i 'in the current directory:' Directory()
      SAY
      CALL CharOut '','Press <ENTER>... '
      PULL .
      EXIT
   END
   SAY dll.i 'found.'
   SAY
   SAY 'Do you want to use memory above 512 MiB for' dll.i '(default, recommended),'
   CALL CharOut '','which does not require having more than 512 MiB of RAM installed (Y/n)? '
   PULL answer
   loadhigh=0
   answer.i=Strip(answer)
   IF answer.i='' THEN answer.i='Y'
   IF answer.i='Y' THEN loadhigh=1

END i

/* Try to find ABOVE512.EXE, if the answer was (Y)es */

IF loadhigh=1 THEN DO
   file='ABOVE512.EXE'
   high=Stream(file,'C','QUERY EXISTS')
   IF high='' THEN high=SysSearchPath('PATH',file)
   IF high='' THEN DO
      SAY
      SAY 'Enter the full path to' file||', or press nothing but <ENTER> to try to'
      CALL CharOut '','find it: '
      PARSE PULL high
      IF Strip(high)<>'' THEN DO
         IF Right(high,1)<>'\' THEN high=high||'\'
         high=high||file
         IF Stream(high,'C','QUERY EXISTS')='' THEN DO
            SAY
            SAY 'Error: cannot find file' high
            SAY
            CALL CharOut '','Press <ENTER>... '
            PULL .
            EXIT
         END
      END
   END
   IF Strip(high)='' THEN DO   
      SAY
      SAY file 'not found in current directory nor PATH. Searching... '
      drives=SysDriveMap('A:')
      IF drives='' THEN DO
         SAY
         SAY 'Error: no drives found.'
         SAY
         CALL CharOut '','Press <ENTER>... '
         PULL .
         EXIT
      END
      drive.0=Words(drives)
      DO i=1 TO drive.0
         okay.i=0
         IF SysDriveInfo(Word(drives,i))<>'' THEN okay.i=1
      END i
      DO i=1 TO drive.0
         IF okay.i=0 THEN ITERATE i
         IF high='' THEN DO
            SAY 'Scanning drive' Word(drives,i)
            pattern=Word(drives,i)||'\'||file
            CALL SysFileTree pattern,'hit.','FOS'
            IF hit.0>0 THEN DO
               high=hit.1
               SAY
               SAY 'Found:' high
            END
         END
      END i
   END
   SAY
   IF high='' THEN DO
      SAY
      SAY 'Error:' file 'not found.'
      SAY
      CALL CharOut '','Press <ENTER>... '
      PULL .
      EXIT
   END
   DO i=1 TO dll.0
      IF answer.i='Y' THEN '@'||high dll.i '-c'
   END i
END

SAY
here=Translate(Directory())
name=''
IF product='FF' THEN name='Firefox'
IF product='MOZ' THEN name='Mozilla'
IF product='SM' THEN name='SeaMonkey'
IF product='TB' THEN name='Thunderbird'

name=Strip(name 'Turbo')
SAY
IF SysCreateObject('WPProgram',name,'<WP_START>','EXENAME=CMD.EXE;PARAMETERS=/c detach' here||'\'||turbo '-t;STARTUPDIR='||here||';MINIMIZED=YES;SET LIBPATHSTRICT=T;SET BEGINLIBPATH='||here||';OBJECTID=<TURBO_'||product||'>','R') THEN DO
   SAY 'WPS program object created in startup folder.'
   SAY
   CALL CharOut '','Press <ENTER>... '
   PULL .
   EXIT
END
   
SAY 'Error: cannot create WPS program object in startup folder.'
SAY
CALL CharOut '','Press <ENTER>... '
PULL .

EXIT
Title: Re: Mozturbo help
Post by: xynixme on April 14, 2019, 02:43:57 pm
BTW, the Rexx script doesn't use any of David Graser's excellent icons.

Insert a WPS setup string like "ICONFILE=P:\ATH\ICONS\MY_NEW_FF.ICO;", if that file exists, to assign a classic icon to the created WPS program object.

And searching for ABOVE512.EXE can be removed from the Rexx file, if that's overdoing it. All it does it avoiding a typing user, whom has to remember a full path to a rarely used executable. I've checked if your utility is in a ArcaOS system path by using your earlier AOS file structure dump, but apparently - and thanks Goodness - such an utility isn't an OS component.
Title: Re: Mozturbo help
Post by: David Graser on April 14, 2019, 04:03:22 pm
I have some new 8 bit icons and some new 80x80 PNGs.  The icons are based on the PNGS.  WIFI doesn't work at work, so will have to wait until I get off work today. 
Title: Re: Mozturbo help
Post by: David Graser on April 14, 2019, 11:38:33 pm
Some to chose.
Title: Re: Mozturbo help
Post by: Dave Yeo on April 15, 2019, 02:27:57 am
0. A disadvantage of starting with 80x80 icons may be that scaling down to even 40x40 becomes too hard, if you have a choice.

Be nice to have a Rexx script that runs highmem to mark the Mozilla DLLs high and add the turbo program to the startup folder.
Willing, but it could be a component of a WPI package which fully agrees with your recommended settings (a.o. LIBPATHSTRICT). I do recommend an own installer.

I was thinking of the user just unzipping the package in the program directory and running the script as even getting users to mark the DLLs high can be a nightmare according to reports.
BTW, LIBPATHSTRICT and BEGINLIBPATH are no longer required for the mozapps as of 45.9. It's done by the program. Same with run! not being  needed.
Quote
1. Can you ship the *TURBO.EXE with your builds? To avoid "Please enter the full path of FIREFOX.EXE and its XUL.DLL".

I'm thinking on it. If the turbo program is run from the mozapp's program directory, entering the path is unneeded.

Quote
2. What's the HIGHMEM command? I know the ABOVE512-one. Other candidates may be supported too, as long as the command is provided.

It's been floating around, might have originated from the OS4 guys, I don't know but they host it. It is also available as an RPM and there should be a corresponding zip.

Quote
3. Which DLLs always? Which DLLs optionally (but recommended)?
Quote

All of them, including in components(SM) or browser\components(FF) but not in add ons.
Code: [Select]
highmem -c *dll works well. There are readonly DLLs in SM and TB, I wouldn't worry too much about them though they could be marked  as read/write. I'm not sure why they're marked readonly when packaged, installing doesn't mark them.

Quote
4. PM UI (drop HIGHMEM.EXE or ABOVE512.EXE, if not found in PATH) or CLI (Please enter the full path of HIGHMEM.EXE or ABOVE512.EXE, or press ENTER to search for it in all directories).

5. Which default setting of the *TURBO.EXEs?
Quote
turbo.exe -l and turbo.exe -u to load and unload. The -l should be in the startup folder. Some users may find it simpler to reboot after updating rather then mess with stopping and restarting turbo.exe but the choice should be there. Perhaps the network desktop folder would be a good place to install to, with a shadow in the startup folder.

Quote
6. I'll insert a sample file, which assumes the -t parameter of the turbo, assumes the use of ABOVE512.EXE and its -c parameter, and is only aware of one DLL in its "database": XUL.DLL. No SysFileTree error checking (out of memory: rc=2). Not fully verified, but the syntax is checked by the Object Rexx interpreter. The root directory is not fully supported, albeit I'm expecting e.g. a subdirectory anyway.

Code: [Select]
/* InsTurbo.CMD */

CALL RxFuncAdd 'SysCreateObject','RexxUtil','SysCreateObject'
CALL RxFuncAdd 'SysDriveInfo','RexxUtil','SysDriveInfo'
CALL RxFuncAdd 'SysDriveMap','RexxUtil','SysDriveMap'
CALL RxFuncAdd 'SysFileTree','RexxUtil','SysFileTree'
CALL RxFuncAdd 'SysSearchPath','RexxUtil','SysSearchPath'

/* Find Mozilla product in the current directory */

SAY
product=''
IF Stream('MOZILLA.EXE','C','QUERY EXISTS')<>'' THEN product='Mozilla'
IF Stream('THUNDERBIRD.EXE','C','QUERY EXISTS')<>'' THEN product='TB'
IF Stream('FIREFOX.EXE','C','QUERY EXISTS')<>'' THEN product='FF'
IF Stream('SEAMONKEY.EXE','C','QUERY EXISTS')<>'' THEN product='SM'
IF product='' THEN DO
   SAY 'Error, cannot find any main Mozilla executable in the current directory:'
   SAY '      ' Directory()
   SAY
   CALL CharOut '','Press <ENTER>... '
   PULL .
   EXIT
END
SAY 'Product found:' product
IF product='Mozilla' THEN product='MOZ'

/* Find the matching TURBO.EXE in the same current directory */

turbo=product||'TURBO.EXE'
IF Stream(turbo,'C','QUERY EXISTS')='' THEN DO
   SAY 'Error, cannot find' turbo 'in the current directory:' Directory()
   SAY
   CALL CharOut '','Press <ENTER>... '
   PULL .
   EXIT
END
SAY turbo 'found.'

/* If the Mozilla product isn't the legacy browser, then try to find XUL.DLL */

dll.0=1
dll.1='XUL.DLL'
IF Length(product)>2 THEN dll.0=0
DO i=1 TO dll.0
   IF Stream(dll.i,'C','QUERY EXISTS')='' THEN DO
      SAY 'Error, cannot find' dll.i 'in the current directory:' Directory()
      SAY
      CALL CharOut '','Press <ENTER>... '
      PULL .
      EXIT
   END
   SAY dll.i 'found.'
   SAY
   SAY 'Do you want to use memory above 512 MiB for' dll.i '(default, recommended),'
   CALL CharOut '','which does not require having more than 512 MiB of RAM installed (Y/n)? '
   PULL answer
   loadhigh=0
   answer.i=Strip(answer)
   IF answer.i='' THEN answer.i='Y'
   IF answer.i='Y' THEN loadhigh=1

END i

/* Try to find ABOVE512.EXE, if the answer was (Y)es */

IF loadhigh=1 THEN DO
   file='ABOVE512.EXE'
   high=Stream(file,'C','QUERY EXISTS')
   IF high='' THEN high=SysSearchPath('PATH',file)
   IF high='' THEN DO
      SAY
      SAY 'Enter the full path to' file||', or press nothing but <ENTER> to try to'
      CALL CharOut '','find it: '
      PARSE PULL high
      IF Strip(high)<>'' THEN DO
         IF Right(high,1)<>'\' THEN high=high||'\'
         high=high||file
         IF Stream(high,'C','QUERY EXISTS')='' THEN DO
            SAY
            SAY 'Error: cannot find file' high
            SAY
            CALL CharOut '','Press <ENTER>... '
            PULL .
            EXIT
         END
      END
   END
   IF Strip(high)='' THEN DO   
      SAY
      SAY file 'not found in current directory nor PATH. Searching... '
      drives=SysDriveMap('A:')
      IF drives='' THEN DO
         SAY
         SAY 'Error: no drives found.'
         SAY
         CALL CharOut '','Press <ENTER>... '
         PULL .
         EXIT
      END
      drive.0=Words(drives)
      DO i=1 TO drive.0
         okay.i=0
         IF SysDriveInfo(Word(drives,i))<>'' THEN okay.i=1
      END i
      DO i=1 TO drive.0
         IF okay.i=0 THEN ITERATE i
         IF high='' THEN DO
            SAY 'Scanning drive' Word(drives,i)
            pattern=Word(drives,i)||'\'||file
            CALL SysFileTree pattern,'hit.','FOS'
            IF hit.0>0 THEN DO
               high=hit.1
               SAY
               SAY 'Found:' high
            END
         END
      END i
   END
   SAY
   IF high='' THEN DO
      SAY
      SAY 'Error:' file 'not found.'
      SAY
      CALL CharOut '','Press <ENTER>... '
      PULL .
      EXIT
   END
   DO i=1 TO dll.0
      IF answer.i='Y' THEN '@'||high dll.i '-c'
   END i
END

SAY
here=Translate(Directory())
name=''
IF product='FF' THEN name='Firefox'
IF product='MOZ' THEN name='Mozilla'
IF product='SM' THEN name='SeaMonkey'
IF product='TB' THEN name='Thunderbird'

name=Strip(name 'Turbo')
SAY
IF SysCreateObject('WPProgram',name,'<WP_START>','EXENAME=CMD.EXE;PARAMETERS=/c detach' here||'\'||turbo '-t;STARTUPDIR='||here||';MINIMIZED=YES;SET LIBPATHSTRICT=T;SET BEGINLIBPATH='||here||';OBJECTID=<TURBO_'||product||'>','R') THEN DO
   SAY 'WPS program object created in startup folder.'
   SAY
   CALL CharOut '','Press <ENTER>... '
   PULL .
   EXIT
END
   
SAY 'Error: cannot create WPS program object in startup folder.'
SAY
CALL CharOut '','Press <ENTER>... '
PULL .

EXIT

I'll look at the code later, thanks.
Title: Re: Mozturbo help
Post by: Dave Yeo on April 15, 2019, 02:29:21 am
Some to chose.

Nice, almost need a poll to choose :)
Thanks.
Title: Re: Mozturbo help
Post by: David Graser on April 15, 2019, 02:54:08 am
Dave

Concerning the nightly.  I did two new icons based on the official Firefox icons.  The difference is the globe is dark grey to stand for night.  I have attached a pic and the icon and PNG.  Icon done in 8 bits.
Title: Re: Mozturbo help
Post by: xynixme on April 15, 2019, 06:31:05 pm
Quote
I was thinking of the user just unzipping the package in the program directory and running the script as even getting users to mark the DLLs high can be a nightmare according to reports.

BTW, LIBPATHSTRICT and BEGINLIBPATH are no longer required for the mozapps as of 45.9.

If the turbo program is run from the mozapp's program directory, entering the path is unneeded.

All of them, including in components(SM) or browser\components(FF) but not in add ons.

turbo.exe -l and turbo.exe -u to load and unload. The -l should be in the startup folder.

Perhaps the network desktop folder would be a good place to install to, with a shadow in the startup folder.
FWIW: I do repackage your FF/SM distributions, with XUL.DLL marked high. Those ZIP files are back-upped, instead of the installed files. One of the extra packages to be installed is the *TURBO.ZIP, in the same directory as the program. No conflicting file names, including the documentation. Other packages are langpacks, noscript 5.1.9, and so on. The only side-effect of loading explicitly recommended DLLs high may be that Object Rexx seems to be running out of (shared) memory sooner.

Then you can delete both matching SET statements, which with a ";" as the final character. I'm still using it, just to be sure and for consistency. Recently I've been looking for non-unique DLL names, and then this is a hit.

eCS installed its (outdated) MOZTURBO.EXE in the Mozilla program directory, which is the easiest solution indeed. The Rexx install script uses this concept too, for example to recognize the Mozilla product, but that can be changed.

Support for more DLLs and/or DLLs in subdirectories tested or added. Please check if the list is complete (dll.X=Y.DLL-lines).

Replace all of my ABOVE512.EXEs by HIGHMEN.EXE, and reverse the order of the arguments.

I've used -t, but you can replace that (PARAMETERS-setting of the SysCreateObject-line).

I'll create objects at the desktop, and (without asking) a shadow in the <WP_START> folder. You can replace <WP_DESKTOP> by the matching network folders object-ID.

I'll apply (most of) the changes above to the Rexx code below.

Patches/restrictions:

Removed SET LIBPATSTRICT=T
Removed SET BEGINLIBPATH=...
Standard *TURBO.EXE parameter is now -l, instead of -t
Location of the WPProgram object is <WP_DESKTOP> instead of <WP_START>
Create second, -u <WP_DESKTOP> WPProgram object (program settings untested)
Create a shadow of the -l object in <WP_START> folder
Only XUL.DLL is supported for all of Dave's builds. Other DLLs, compiled by Dave, only if it's FF or SM (I don't have a TB copy).
To replace ABOVE512.EXE by HIGHMEM.EXE, change the text ABOVE512.EXE to HIGHMEM.EXE twice (comment, variable)
And to replace ABOVE512.EXE by HIGHMEM.EXE, change the text "high dll.i '-c'" to "high '-c' dll.i"
Killed bug: loadhigh=0 was in loop
Unchanged: no "ICONFILE=[full path of icon file];" in WPS setup strings of SysCreateObject().
Requirements: Classic Rexx or Object Rexx interpreter, REXXUTIL.DLL, ABOVE512.EXE (until changed to HIGHMEM.EXE).

Test log:

[R:\MEUK\firefox]unzip d:\database\software\firefox\ff*
Archive:  d:/database/software/firefox/ffturbo-v0.5.zip
replace CHANGES? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
  inflating: CHANGES
  inflating: ffturbo.exe
  inflating: LICENSE
  inflating: readme

[R:\MEUK\firefox]insturbo.cmd

Product found: FF
FFTURBO.EXE found.
XUL.DLL found.

Do you want to use memory above 512 MiB for XUL.DLL (default, recommended),
which does not require having more than 512 MiB of RAM installed (Y/n)? y
LGPLLIBS.DLL found.

Do you want to use memory above 512 MiB for LGPLLIBS.DLL (default, recommended),

which does not require having more than 512 MiB of RAM installed (Y/n)? n
MOZSQLT3.DLL found.

Do you want to use memory above 512 MiB for MOZSQLT3.DLL (default, recommended),

which does not require having more than 512 MiB of RAM installed (Y/n)? y
browser\components\BRWSRCMP.DLL found.

Do you want to use memory above 512 MiB for browser\components\BRWSRCMP.DLL (def
ault, recommended),
which does not require having more than 512 MiB of RAM installed (Y/n)? n
gmp-clearkey\0.1\CLEARKEY.DLL found.

Do you want to use memory above 512 MiB for gmp-clearkey\0.1\CLEARKEY.DLL (defau
lt, recommended),
which does not require having more than 512 MiB of RAM installed (Y/n)? n

Enter the full path to ABOVE512.EXE, or press nothing but <ENTER> to try to
find it:

ABOVE512.EXE not found in current directory nor PATH. Searching...
Scanning drive C:
Scanning drive D:

Found: D:\Utilities\Above512\ABOVE512.exe

module : XUL.DLL
 object 0 : base 0x00010000, size 0x036e3e20, flags 0x00012005
  readable, !writeable, executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, himem
 object 1 : base 0x03700000, size 0x0009b5f0, flags 0x00002003
  readable, writeable, !executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem
 object 2 : base 0x00000000, size 0x00002324, flags 0x00002039
  readable, !writeable, !executable, resource, discardable, shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem
module : MOZSQLT3.DLL
 object 0 : base 0x00010000, size 0x000a7110, flags 0x00012005
  readable, !writeable, executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, himem
 object 1 : base 0x000c0000, size 0x00001bf0, flags 0x00002003
  readable, writeable, !executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem


Object created: Firefox Turbo
Object created: Firefox Turbo (unload)
WPS shadow object of Firefox Turbo created in the startup folder.

Press <ENTER>...
Code: [Select]
/* InsTurbo.CMD */

CALL RxFuncAdd 'SysCreateObject','RexxUtil','SysCreateObject'
CALL RxFuncAdd 'SysDriveInfo','RexxUtil','SysDriveInfo'
CALL RxFuncAdd 'SysDriveMap','RexxUtil','SysDriveMap'
CALL RxFuncAdd 'SysFileTree','RexxUtil','SysFileTree'
CALL RxFuncAdd 'SysSearchPath','RexxUtil','SysSearchPath'

/* Find Mozilla product in the current directory */

SAY
product=''
IF Stream('MOZILLA.EXE','C','QUERY EXISTS')<>'' THEN product='Mozilla'
IF Stream('THUNDERBIRD.EXE','C','QUERY EXISTS')<>'' THEN product='TB'
IF Stream('FIREFOX.EXE','C','QUERY EXISTS')<>'' THEN product='FF'
IF Stream('SEAMONKEY.EXE','C','QUERY EXISTS')<>'' THEN product='SM'
IF product='' THEN DO
   SAY 'Error, cannot find any main Mozilla executable in the current directory:'
   SAY '      ' Directory()
   SAY
   CALL CharOut '','Press <ENTER>... '
   PULL .
   EXIT
END
SAY 'Product found:' product
IF product='Mozilla' THEN product='MOZ'

/* Find the matching TURBO.EXE in the same current directory */

turbo=product||'TURBO.EXE'
IF Stream(turbo,'C','QUERY EXISTS')='' THEN DO
   SAY 'Error, cannot find' turbo 'in the current directory:' Directory()
   SAY
   CALL CharOut '','Press <ENTER>... '
   PULL .
   EXIT
END
SAY turbo 'found.'

/* If the Mozilla product isn't the legacy browser, then try to find XUL.DLL */

dll.0=1
dll.1='XUL.DLL'
dll.2='LGPLLIBS.DLL'
dll.3='MOZSQLT3.DLL'
IF product='FF' THEN DO
   dll.0=5
   dll.4='browser\components\BRWSRCMP.DLL'
   dll.5='gmp-clearkey\0.1\CLEARKEY.DLL'
END
IF product='SM' THEN DO
   dll.0=7
   dll.4='LDAP60.DLL'
   dll.5='LDIF60.DLL'
   dll.6='PRLDAP60.DLL'
   dll.7='components\SUITE.DLL'
END

IF Length(product)>2 THEN dll.0=0
loadhigh=0
DO i=1 TO dll.0
   IF Stream(dll.i,'C','QUERY EXISTS')='' THEN DO
      SAY 'Error, cannot find' dll.i 'in the current directory:' Directory()
      SAY
      CALL CharOut '','Press <ENTER>... '
      PULL .
      EXIT
   END
   SAY dll.i 'found.'
   SAY
   SAY 'Do you want to use memory above 512 MiB for' dll.i '(default, recommended),'
   CALL CharOut '','which does not require having more than 512 MiB of RAM installed (Y/n)? '
   PULL answer
   answer.i=Strip(answer)
   IF answer.i='' THEN answer.i='Y'
   IF answer.i='Y' THEN loadhigh=1

END i

/* Try to find ABOVE512.EXE, if the answer was (Y)es */

IF loadhigh=1 THEN DO
   file='ABOVE512.EXE'
   high=Stream(file,'C','QUERY EXISTS')
   IF high='' THEN high=SysSearchPath('PATH',file)
   IF high='' THEN DO
      SAY
      SAY 'Enter the full path to' file||', or press nothing but <ENTER> to try to'
      CALL CharOut '','find it: '
      PARSE PULL high
      IF Strip(high)<>'' THEN DO
         IF Right(high,1)<>'\' THEN high=high||'\'
         high=high||file
         IF Stream(high,'C','QUERY EXISTS')='' THEN DO
            SAY
            SAY 'Error: cannot find file' high
            SAY
            CALL CharOut '','Press <ENTER>... '
            PULL .
            EXIT
         END
      END
   END
   IF Strip(high)='' THEN DO   
      SAY
      SAY file 'not found in current directory nor PATH. Searching... '
      drives=SysDriveMap('A:')
      IF drives='' THEN DO
         SAY
         SAY 'Error: no drives found.'
         SAY
         CALL CharOut '','Press <ENTER>... '
         PULL .
         EXIT
      END
      drive.0=Words(drives)
      DO i=1 TO drive.0
         okay.i=0
         IF SysDriveInfo(Word(drives,i))<>'' THEN okay.i=1
      END i
      DO i=1 TO drive.0
         IF okay.i=0 THEN ITERATE i
         IF high='' THEN DO
            SAY 'Scanning drive' Word(drives,i)
            pattern=Word(drives,i)||'\'||file
            CALL SysFileTree pattern,'hit.','FOS'
            IF hit.0>0 THEN DO
               high=hit.1
               SAY
               SAY 'Found:' high
            END
         END
      END i
   END
   SAY
   IF high='' THEN DO
      SAY
      SAY 'Error:' file 'not found.'
      SAY
      CALL CharOut '','Press <ENTER>... '
      PULL .
      EXIT
   END
   DO i=1 TO dll.0
      IF answer.i='Y' THEN '@'||high dll.i '-c'
   END i
END

SAY
here=Translate(Directory())
name=''
IF product='FF' THEN name='Firefox'
IF product='MOZ' THEN name='Mozilla'
IF product='SM' THEN name='SeaMonkey'
IF product='TB' THEN name='Thunderbird'

name=Strip(name 'Turbo')
SAY
IF SysCreateObject('WPProgram',name,'<WP_DESKTOP>','EXENAME=CMD.EXE;PARAMETERS=/c detach' here||'\'||turbo '-l;STARTUPDIR='||here||';MINIMIZED=YES;OBJECTID=<TURBO_'||product||'>','R') THEN DO
   SAY 'Object created:' name
   IF SysCreateObject('WPProgram',name '(unload)','<WP_DESKTOP>','EXENAME='||here||'\'||turbo||';PARAMETERS=-u;STARTUPDIR='||here||';MINIMIZED=YES;OBJECTID=<TURBO_'||product||'_UNLOAD>','R') THEN DO
      SAY 'Object created:' name '(unload)'
      IF SysCreateShadow('<TURBO_'||product||'>','<WP_START>') THEN DO
         SAY'WPS shadow object of' name 'created in the startup folder.'
         SAY
         CALL CharOut '','Press <ENTER>... '
         PULL .
         EXIT
      END
   END
END
   
SAY 'Error: cannot create all 3 WPS objects.'
SAY
CALL CharOut '','Press <ENTER>... '
PULL .

EXIT

No need for credits. This is nothing compared to your efforts in Death Valley, and it isn't supported. And please cancel that silly beauty contest poll. I'll concede, so David's the winner... ;-)
Title: Re: Mozturbo help
Post by: xynixme on April 15, 2019, 06:43:51 pm
Concerning the nightly.  I did two new icons based on the official Firefox icons.  The difference is the globe is dark grey to stand for night.  I have attached a pic and the icon and PNG.  Icon done in 8 bits.
If there's a final winner, can we then please have a matching (eCS-style) folder icon too?

At least 40x40 and 20x20. It doesn't have to look that good/detailed. Some orange and dark blue blur in the usual bottom left corner will do. I've created folder icons with just the blue planet, but that's not worth publishing, doesn't look as good as your orange ones, and does look like other default folder icons with some globe.
Title: Re: Mozturbo help
Post by: Dave Yeo on April 17, 2019, 06:31:29 am
Hi André, this works pretty well, though having to accept every DLL to mark high seems tiring, especially if we add more DLLs, which may happen as it may be easier to update in tree NSS.
BTW, Thunderbird uses the same DLLs as SM excepting suite.dll
Thanks
Title: Re: Mozturbo help
Post by: xynixme on April 17, 2019, 11:34:40 am
having to accept every DLL to mark high seems tiring, especially if we add more DLLs, which may happen as it may be easier to update in tree NSS.

BTW, Thunderbird uses the same DLLs as SM excepting suite.dll
Sorted, the number of prompts was the result of (a) only XUL.DLL included and (b) code supporting more than one DLL later.

Now SUITE.DLL is the last DLL if the product is SM or TB, and the number of items is one less if the product is TB.

Other main changes and comments:

Reduction of the excessive number of possible requirements by one, due to included but untested support for HIGHMEM.EXE too. The penalty for lazy users is that looking for their high mem utility may take about twice as long.

Educational full collection of RxFuncAdds replaced by SysLoadFuncs.

I've excluded an option to use -t instead of -l, for one because I'm not the one supporting the subject of a *TURBO.EXE.

Fully untested with Mozilla (classic), SM and TB. In the case of Mozilla we could check if the right MOZTURBO.EXE is installed. Yours, which seems to avoid the SYS2070s I haven't seen since yours is in use.

The Rexx code still assumes that the *TURBO.EXEs can be found in the directory of the matching product's EXE.

Products are hard-coded everywhere. If e.g. the fire fox, one of the bear-cat animals, becomes BEARCAT.EXE, then one may consider C'ish #defines instead of the hard-coded FFs, Firefoxes and FIREFOX.EXEs.

Icon still excluded. Embed icons (for FF.TURBO.EXE, MOZTURBO.EXE, SMTURBO.EXE and TBTURBO.EXE), or assign an icon by inserting a WPS setup string like "ICONFILE=chrome\icons\default\smturbo.ico" for a SMTURBO.EXE icon.

ABOVE512.EXE is the default. It will be found first. The number of scans per drive can be reduced to one, and the number of drives can be reduced to one, but that's hardly worth the efforts. Using such a Rexx script should be a rare event, and the user has the option to type the full path, if HIGHMEM.EXE isn't installed in a PATH directory by RPM anyway (I'm not that sure if HIGHMEM.EXE qualifies for a PATH directory of all users anyway).

And finally, not being a goal: a Rexx installer could also install the product's objects (SM, FF Safe Mode, TB Send Mail, ...), but I guess it's quite likely that the product itself is already installed by e.g. the OS or by the user.

Code: [Select]
inflating: CHANGES
inflating: ffturbo.exe
inflating: LICENSE
inflating: readme

[R:\MEUK\firefox]insturbo

Product found: FF
FFTURBO.EXE found.

Do you want to use memory above 512 MiB for DLLs (default, recommended),
which doesn't require having more than 512 MiB of RAM installed (Y/n)? nope


Object created: Firefox Turbo
Object created: Firefox Turbo (unload)
WPS shadow object of Firefox Turbo created in the startup folder.

Press <ENTER>...

Code: [Select]
Product found: FF
FFTURBO.EXE found.

Do you want to use memory above 512 MiB for DLLs (default, recommended),
which doesn't require having more than 512 MiB of RAM installed (Y/n)? yeah

All expected DLLs found.

Please enter the full path to ABOVE512.EXE or HIGHMEM.EXE, or press nothing
but <ENTER> to try to find it:

ABOVE512.EXE or HIGHMEM.EXE not found in current directory nor PATH.
Searching...
Scanning drive C:
Scanning drive D:

Found: D:\Utilities\Above512\ABOVE512.exe
module : XUL.DLL
 object 0 : base 0x00010000, size 0x036e3e20, flags 0x00012005
  readable, !writeable, executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, himem
 object 1 : base 0x03700000, size 0x0009b5f0, flags 0x00002003
  readable, writeable, !executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem
 object 2 : base 0x00000000, size 0x00002324, flags 0x00002039
  readable, !writeable, !executable, resource, discardable, shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem
module : LGPLLIBS.DLL
 object 0 : base 0x00010000, size 0x00069c80, flags 0x00002005
  readable, !writeable, executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem
   modified,
    readable, !writeable, executable, !resource, !discardable, !shared,
    !preload, !invalid, swappable, !16:16 alias, !conforming,
    32bit, !IOPL, himem
 object 1 : base 0x00080000, size 0x00017e10, flags 0x00002003
  readable, writeable, !executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem
module : MOZSQLT3.DLL
 object 0 : base 0x00010000, size 0x000a7110, flags 0x00002005
  readable, !writeable, executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem
   modified,
    readable, !writeable, executable, !resource, !discardable, !shared,
    !preload, !invalid, swappable, !16:16 alias, !conforming,
    32bit, !IOPL, himem
 object 1 : base 0x000c0000, size 0x00001bf0, flags 0x00002003
  readable, writeable, !executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem
module : browser\components\BRWSRCMP.DLL
 object 0 : base 0x00010000, size 0x00076990, flags 0x00002005
  readable, !writeable, executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem
   modified,
    readable, !writeable, executable, !resource, !discardable, !shared,
    !preload, !invalid, swappable, !16:16 alias, !conforming,
    32bit, !IOPL, himem
 object 1 : base 0x00090000, size 0x00017f50, flags 0x00002003
  readable, writeable, !executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem
module : gmp-clearkey\0.1\CLEARKEY.DLL
 object 0 : base 0x00010000, size 0x00061f50, flags 0x00002005
  readable, !writeable, executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem
   modified,
    readable, !writeable, executable, !resource, !discardable, !shared,
    !preload, !invalid, swappable, !16:16 alias, !conforming,
    32bit, !IOPL, himem
 object 1 : base 0x00080000, size 0x00017d10, flags 0x00002003
  readable, writeable, !executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem

Object created: Firefox Turbo
Object created: Firefox Turbo (unload)
WPS shadow object of Firefox Turbo created in the startup folder.

Press <ENTER>...

Code: [Select]
/* InsTurbo.CMD */

CALL RxFuncAdd 'SysLoadFuncs','RexxUtil','SysLoadFuncs'
CALL SysLoadFuncs

/* Find Mozilla product in the current directory */

SAY
product=''
IF Stream('MOZILLA.EXE','C','QUERY EXISTS')<>'' THEN product='Mozilla'
IF Stream('THUNDERBIRD.EXE','C','QUERY EXISTS')<>'' THEN product='TB'
IF Stream('FIREFOX.EXE','C','QUERY EXISTS')<>'' THEN product='FF'
IF Stream('SEAMONKEY.EXE','C','QUERY EXISTS')<>'' THEN product='SM'
IF product='' THEN DO
   SAY 'Error, cannot find any main Mozilla executable in the current directory:'
   SAY '      ' Directory()
   SAY
   CALL CharOut '','Press <ENTER>... '
   PULL .
   EXIT
END
SAY 'Product found:' product
IF product='Mozilla' THEN product='MOZ'

/* Find the matching TURBO.EXE in the same current directory */

turbo=product||'TURBO.EXE'
IF Stream(turbo,'C','QUERY EXISTS')='' THEN DO
   SAY 'Error, cannot find' turbo 'in the current directory:' Directory()
   SAY
   CALL CharOut '','Press <ENTER>... '
   PULL .
   EXIT
END
SAY turbo 'found.'

/* Load DLLs high, if the product is not the legacy Mozilla? */

loadhigh=0
IF Length(product)=2 THEN DO
   SAY
   SAY 'Do you want to use memory above 512 MiB for DLLs (default, recommended),'
   CALL CharOut '',"which doesn't require having more than 512 MiB of RAM installed (Y/n)? "
   PULL answer
   answer=Strip(answer)
   IF answer='' THEN answer='Y'
   IF Left(answer,1)='Y' THEN loadhigh=1
   SAY
END

/* Load high */

IF loadhigh=1 THEN DO
   dll.0=1
   dll.1='XUL.DLL'
   dll.2='LGPLLIBS.DLL'
   dll.3='MOZSQLT3.DLL'
   IF product='FF' THEN DO
      dll.0=5
      dll.4='browser\components\BRWSRCMP.DLL'
      dll.5='gmp-clearkey\0.1\CLEARKEY.DLL'
   END
   IF product='SM' | product='TB' THEN DO
      dll.0=7
      dll.4='LDAP60.DLL'
      dll.5='LDIF60.DLL'
      dll.6='PRLDAP60.DLL'
      dll.7='components\SUITE.DLL'
      IF product='TB' THEN dll.0=6
   END
   DO i=1 TO dll.0
      IF Stream(dll.i,'C','QUERY EXISTS')='' THEN DO
         SAY
         SAY 'Error: cannot find' dll.i
         SAY
         CALL CharOut '','Press <ENTER>... '
         PULL .
         EXIT
      END
   END i   
   
   SAY 'All expected DLLs found.'
   SAY

   /* Try to find ABOVE512.EXE or HIGHMEM.EXE, if the answer was (Y)es */

   file='ABOVE512.EXE'
   high=Stream(file,'C','QUERY EXISTS')
   IF high='' THEN high=Stream('HIGHMEM.EXE','C','QUERY EXISTS')
   IF high='' THEN high=SysSearchPath('PATH',file)
   IF high='' THEN high=SysSearchPath('PATH','HIGHMEM.EXE')
   IF high='' THEN DO
      SAY 'Please enter the full path to' file 'or HIGHMEM.EXE, or press nothing'
      CALL CharOut '','but <ENTER> to try to find it: '
      PARSE PULL high
      SAY
      IF Strip(high)<>'' THEN DO
         IF Right(high,1)<>'\' THEN high=high||'\'
         high=high||file
         IF Stream(high,'C','QUERY EXISTS')='' THEN DO
            SAY 'Error: cannot find file' high
            SAY
            CALL CharOut '','Press <ENTER>... '
            PULL .
            EXIT
         END
      END
   END
   IF Strip(high)='' THEN DO   
      SAY file 'or HIGHMEM.EXE not found in current directory nor PATH.'
      SAY 'Searching...'
      drives=SysDriveMap('A:')
      IF drives='' THEN DO
         SAY
         SAY 'Error: no drives found.'
         SAY
         CALL CharOut '','Press <ENTER>... '
         PULL .
         EXIT
      END
      drive.0=Words(drives)
      DO i=1 TO drive.0
         okay.i=0
         IF SysDriveInfo(Word(drives,i))<>'' THEN okay.i=1
      END i
      DO i=1 TO drive.0
         IF okay.i=0 THEN ITERATE i
         IF high='' THEN DO
            SAY 'Scanning drive' Word(drives,i)
            pattern1=Word(drives,i)||'\'||file
            pattern2=Word(drives,i)||'\HIGHMEM.EXE'
            CALL SysFileTree pattern1,'hit.','FOS'
            IF hit.0=0 THEN CALL SysFileTree pattern2,'hit.','FOS'
            IF hit.0>0 THEN DO
               high=hit.1
               SAY
               SAY 'Found:' high
            END
         END
      END i
   END
   IF high='' THEN DO
      SAY
      SAY 'Error:' file 'nor HIGHMEM.EXE found.'
      SAY
      CALL CharOut '','Press <ENTER>... '
      PULL .
      EXIT
   END
   DO i=1 TO dll.0
      arguments=dll.i '-c'
      IF Translate(FileSpec('N',high))='HIGHMEM.EXE' THEN arguments='-c' dll.i
      '@'||high arguments
   END i
END

here=Translate(Directory())
name=''
IF product='FF' THEN name='Firefox'
IF product='MOZ' THEN name='Mozilla'
IF product='SM' THEN name='SeaMonkey'
IF product='TB' THEN name='Thunderbird'

name=Strip(name 'Turbo')
SAY
IF SysCreateObject('WPProgram',name,'<WP_DESKTOP>','EXENAME=CMD.EXE;PARAMETERS=/c detach' here||'\'||turbo '-l;STARTUPDIR='||here||';MINIMIZED=YES;OBJECTID=<TURBO_'||product||'>','R') THEN DO
   SAY 'Object created:' name
   IF SysCreateObject('WPProgram',name '(unload)','<WP_DESKTOP>','EXENAME='||here||'\'||turbo||';PARAMETERS=-u;STARTUPDIR='||here||';MINIMIZED=YES;OBJECTID=<TURBO_'||product||'_UNLOAD>','R') THEN DO
      SAY 'Object created:' name '(unload)'
      IF SysCreateShadow('<TURBO_'||product||'>','<WP_START>') THEN DO
         SAY'WPS shadow object of' name 'created in the startup folder.'
         SAY
         CALL CharOut '','Press <ENTER>... '
         PULL .
         EXIT
      END
   END
END
   
SAY 'Error: cannot create all 3 WPS objects.'
SAY
CALL CharOut '','Press <ENTER>... '
PULL .

EXIT
Title: Re: Mozturbo help
Post by: Dave Yeo on April 20, 2019, 07:50:50 am
Sorry for not testing sooner, basically testing new builds.
This one worked very well, found highmem.exe quickly, didn't ask too many questions.
Not sure about doing the install for the app, probably easier to leave it for the users though I guess the choice wouldn't hurt.
Might have to expand the DLL list, currently playing around with installing NSPR and NSS as I've been updating the certs, which brings up the problem of readonly files. I used make install to install which left the NSPR DLLs set to readonly. If doing make package, IIRC, the NSPR DLLs and the LDAP DLLs are left readonly.
Thanks
Title: Re: Mozturbo help
Post by: xynixme on April 20, 2019, 01:19:58 pm
Not sure about doing the install for the app, probably easier to leave it for the users though I guess the choice wouldn't hurt.

Might have to expand the DLL list, currently playing around with installing NSPR and NSS as I've been updating the certs, which brings up the problem of readonly files. I used make install to install which left the NSPR DLLs set to readonly. If doing make package, IIRC, the NSPR DLLs and the LDAP DLLs are left readonly.
Lster I'll insert a few line to create some (unverified) FF/SM/TB objects too. Without folder icons and other artwork. Installing is easy, and you can delete that section of code easily. Basicly the question and a few SysCreateObject-lines per product. We're already in the right directory, and the right Mozilla product was already detected for the *TURBO.EXE.

Without NSPR and NSS in my (test) install directory tree of just your repackaged Mozilla products, I had to execute ATTRIB -R *60* to cover all readonly DLLs (FTTOMH LDAP60, LDIF60 & PRLDAP60). But readonly should't no problem. With the DIR-command of Rexx, SysFileTree, you can query and set file attributes.

I'll actually use a more clear list of DLLs near the beginning of the Rexx code, without having to decrease or increase some counters if you'd append NSPR and NSS.

I'll also insert code to mark all qualifying readonly DLLs as non-readonly during the ABOVE512/HIGMEM phase, if a DLL is readonly. With ABOVE512 it's possible to (try to) unlock DLLs too, but I didn't use that parameter.

FWIW, if someone want to insert parts of some final Rexx installer inside a WarpIN Rexx install package, then of course that won't be disallowed by me. This is not a competing install script, albeit I'm often using a Rexx install script instead of a huge install package.

FWIW/2: since the apparently working HIGMEM support requirements are an usual IBM-compliant (Classic or Object) Rexx interpreter, the usual  REXXUTIL.DLL, and ABOVE512 or HIGHMEM.
Title: Re: Mozturbo help
Post by: xynixme on April 20, 2019, 03:51:46 pm
Done. The list of DLLs now are sentences of Rexx' words. An avoidable disadvantage is that embedded spaces in relative DLL file names no longer are supported. So you can install TB as "C:\Internet Apps\thunderbird\thunderbird.exe", but you cannot use the full file spec "C:\Internet Apps\thunderbird\original dlls\NSS.DLL". Because, according to Rexx, "original" and "dlls\NSS.DLL" are 2 words (and 2 files), due to the blank character. This problem doesn't exist at the moment.

If one has no clue what the number of Rexx words of "original dlls\nss.dll" is: REXXTRY.CMD SAY Words('original dlls\nss.dll')
The output for INSTURBO.CMD must be 1. One Rexx "word" (per one DLL file). As stated above: the problem doesn't exist now.

Untested: installing SM (and TB?) uses icon files distributed via the original ZIP file.

Fully untested: Mozilla, because typically the OS will install that legacy browser and the only update should be the new, recommended MOZTURBO.EXE. No DLLs loaded high, no MOZILLA.EXE objects created.

Main changes were announced earlier. New DLLs can be appended as words in the section of line numbers 30-40 (generic, FF, SM and TB, SM only). Read-only file attribute unset and set for all qualifying read-only DLLs, albeit without error checking (a.o. SysFileTree not running out of memory, no fatal error message when restoring read-only failed). And (default = no) creating a folder and objects inside that folder. The Turbo objects can be created there too.

BTW, if RPM or whatever installs HIGHMEM.EXE in a PATH directory, then it's quite likely that it will be found quite fast indeed. The search order is first ABOVE512.EXE (just because I've got that) and next HIGHMEM.EXE. If the user doesn't type the full path, then the slowest time will be having no ABOVE512.EXE and having a Z:\ZZZZZ\Microsoft Cloud\Huge Network drive\Family\The wife\Tools\HIGHMEM.EXE file.

Possible tests, excluding user-I/O:

Check the relative DLL file names (not changed).

Check if the icons are right for SM/TB (as used in INSTURBO.CMD's FILESPEC=xxx\yyy.ico).

Copy (MOZILLA.EXE,) MOZTURBO.EXE and INSTURBO.CMD to x:\TEST. This should only create the 3 turbo-related objects.

Unzip FF/SM/TB in x:\TEST, copy xxTURBO.EXE and INSTURBO.CMD to the 3 main directories. Optionally mark or unmark DLLs as read-only, and execute the 3 INSTURBO.CMDs.

Basic FF test, starting with installing a FFTURBO.ZIP package in the main FF directory and making sure that some DLL's are(n't) marked as read-only:

Check if the command "THUNDERBIRD.EXE -mail" makes sense. If not, change its "CALL SysCreateObject ..." to "IF product='SM' THEN CALL SysCreateObect ...".

Code: [Select]
  inflating: CHANGES
  inflating: ffturbo.exe
  inflating: LICENSE
  inflating: readme

[R:\meuk\firefox]attrib +r mozsqlt3.dll

[R:\meuk\firefox]attrib +r xul.dll

[R:\meuk\firefox]attrib -r lgpllibs.dll

[R:\meuk\firefox]insturbo.cmd

Product found: FF
FFTURBO.EXE found.

Do you want to use memory above 512 MiB for DLLs (default, recommended),
which doesn't require having more than 512 MiB of RAM installed (Y/n)?

All expected DLLs found.

Please enter the full path to ABOVE512.EXE or HIGHMEM.EXE, or press nothing
but <ENTER> to try to find it:

ABOVE512.EXE or HIGHMEM.EXE not found in current directory nor PATH.
Searching...
Scanning drive C:
Scanning drive D:

Found: D:\Utilities\Above512\ABOVE512.exe
DLL unmarked as a read-only file.
module : XUL.DLL
 object 0 : base 0x00010000, size 0x036e3e20, flags 0x00012005
  readable, !writeable, executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, himem
 object 1 : base 0x03700000, size 0x0009b5f0, flags 0x00002003
  readable, writeable, !executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem
 object 2 : base 0x00000000, size 0x00002324, flags 0x00002039
  readable, !writeable, !executable, resource, discardable, shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem
DLL marked as a read-only file again.
module : LGPLLIBS.DLL
 object 0 : base 0x00010000, size 0x00069c80, flags 0x00012005
  readable, !writeable, executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, himem
 object 1 : base 0x00080000, size 0x00017e10, flags 0x00002003
  readable, writeable, !executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem
DLL unmarked as a read-only file.
module : MOZSQLT3.DLL
 object 0 : base 0x00010000, size 0x000a7110, flags 0x00012005
  readable, !writeable, executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, himem
 object 1 : base 0x000c0000, size 0x00001bf0, flags 0x00002003
  readable, writeable, !executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem
DLL marked as a read-only file again.
module : browser\components\BRWSRCMP.DLL
 object 0 : base 0x00010000, size 0x00076990, flags 0x00012005
  readable, !writeable, executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, himem
 object 1 : base 0x00090000, size 0x00017f50, flags 0x00002003
  readable, writeable, !executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem
module : gmp-clearkey\0.1\CLEARKEY.DLL
 object 0 : base 0x00010000, size 0x00061f50, flags 0x00012005
  readable, !writeable, executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, himem
 object 1 : base 0x00080000, size 0x00017d10, flags 0x00002003
  readable, writeable, !executable, !resource, !discardable, !shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem

Object created: Firefox Turbo
Object created: Firefox Turbo (unload)
WPS shadow object of Firefox Turbo created in the startup folder.

Do you want to try to create WPS objects for Firefox (y/N)? y

Folder Firefox created.

Press <ENTER>...

Code: [Select]
/* InsTurbo.CMD */

CALL RxFuncAdd 'SysLoadFuncs','RexxUtil','SysLoadFuncs'
CALL SysLoadFuncs

/* Find Mozilla product in the current directory */

SAY
product=''
IF Stream('MOZILLA.EXE','C','QUERY EXISTS')<>'' THEN product='Mozilla'
IF Stream('THUNDERBIRD.EXE','C','QUERY EXISTS')<>'' THEN product='TB'
IF Stream('FIREFOX.EXE','C','QUERY EXISTS')<>'' THEN product='FF'
IF Stream('SEAMONKEY.EXE','C','QUERY EXISTS')<>'' THEN product='SM'
IF product='' THEN DO
   SAY 'Error, cannot find any main Mozilla executable in the current directory:'
   SAY '      ' Directory()
   SAY
   CALL CharOut '','Press <ENTER>... '
   PULL .
   EXIT
END
SAY 'Product found:' product
IF product='Mozilla' THEN product='MOZ'

/* Compile a list of DLLs, with one space between relative full DLL file specs */

dlls=''
IF Length(product)=2 THEN DO
   
   /* DLLs shared by all non-legacy products */
   dlls='XUL.DLL LGPLLIBS.DLL MOZSQLT3.DLL'
   
   /* Additional DLLs exclusive for FF only */
   IF product='FF' THEN dlls=dlls 'browser\components\BRWSRCMP.DLL gmp-clearkey\0.1\CLEARKEY.DLL'
   
   /* Additional DLLs exclusive for both SM and TB */
   IF product='SM' | product='TB' THEN dlls=dlls 'LDAP60.DLL LDIF60.DLL PRLDAP60.DLL'
   
   /* Additional DLLs exclusive for SM only */
   IF product='SM' THEN dlls=dlls 'components\SUITE.DLL'

END

dll.0=Words(dlls)
DO i=1 TO dll.0
   dll.i=Word(dlls,i)
END i

/* Find the matching TURBO.EXE in the same current directory */

turbo=product||'TURBO.EXE'
IF Stream(turbo,'C','QUERY EXISTS')='' THEN DO
   SAY 'Error, cannot find' turbo 'in the current directory:' Directory()
   SAY
   CALL CharOut '','Press <ENTER>... '
   PULL .
   EXIT
END
SAY turbo 'found.'

/* Load DLLs high, if the product is not the legacy Mozilla? */

loadhigh=0
IF Length(product)=2 THEN DO
   SAY
   SAY 'Do you want to use memory above 512 MiB for DLLs (default, recommended),'
   CALL CharOut '',"which doesn't require having more than 512 MiB of RAM installed (Y/n)? "
   PULL answer
   answer=Strip(answer)
   IF answer='' THEN answer='Y'
   IF Left(answer,1)='Y' THEN loadhigh=1
   SAY
END

/* Load high */

IF loadhigh=1 THEN DO
   DO i=1 TO dll.0
      IF Stream(dll.i,'C','QUERY EXISTS')='' THEN DO
         SAY
         SAY 'Error: cannot find' dll.i
         SAY
         CALL CharOut '','Press <ENTER>... '
         PULL .
         EXIT
      END
   END i   
   
   SAY 'All expected DLLs found.'
   SAY

   /* Try to find ABOVE512.EXE or HIGHMEM.EXE, if the answer was (Y)es */

   file='ABOVE512.EXE'
   high=Stream(file,'C','QUERY EXISTS')
   IF high='' THEN high=Stream('HIGHMEM.EXE','C','QUERY EXISTS')
   IF high='' THEN high=SysSearchPath('PATH',file)
   IF high='' THEN high=SysSearchPath('PATH','HIGHMEM.EXE')
   IF high='' THEN DO
      SAY 'Please enter the full path to' file 'or HIGHMEM.EXE, or press nothing'
      CALL CharOut '','but <ENTER> to try to find it: '
      PARSE PULL high
      SAY
      IF Strip(high)<>'' THEN DO
         IF Right(high,1)<>'\' THEN high=high||'\'
         high=high||file
         IF Stream(high,'C','QUERY EXISTS')='' THEN DO
            SAY 'Error: cannot find file' high
            SAY
            CALL CharOut '','Press <ENTER>... '
            PULL .
            EXIT
         END
      END
   END
   IF Strip(high)='' THEN DO   
      SAY file 'or HIGHMEM.EXE not found in current directory nor PATH.'
      SAY 'Searching...'
      drives=SysDriveMap('A:')
      IF drives='' THEN DO
         SAY
         SAY 'Error: no drives found.'
         SAY
         CALL CharOut '','Press <ENTER>... '
         PULL .
         EXIT
      END
      drive.0=Words(drives)
      DO i=1 TO drive.0
         okay.i=0
         IF SysDriveInfo(Word(drives,i))<>'' THEN okay.i=1
      END i
      DO i=1 TO drive.0
         IF okay.i=0 THEN ITERATE i
         IF high='' THEN DO
            SAY 'Scanning drive' Word(drives,i)
            pattern1=Word(drives,i)||'\'||file
            pattern2=Word(drives,i)||'\HIGHMEM.EXE'
            CALL SysFileTree pattern1,'hit.','FOS'
            IF hit.0=0 THEN CALL SysFileTree pattern2,'hit.','FOS'
            IF hit.0>0 THEN DO
               high=hit.1
               SAY
               SAY 'Found:' high
            END
         END
      END i
   END
   IF high='' THEN DO
      SAY
      SAY 'Error:' file 'nor HIGHMEM.EXE found.'
      SAY
      CALL CharOut '','Press <ENTER>... '
      PULL .
      EXIT
   END
   DO i=1 TO dll.0
      /* Is the DLL read-only? */
      restore=0
      CALL SysFileTree dll.i,'readonly.','F','***+*'
      /* If so, then (try to) toggle the setting */
      IF readonly.0=1 THEN DO
         restore=1
         CALL SysFileTree dll.i,'readonly.','F',,'***-*'
         CALL SysFileTree dll.i,'readonly.','F','***-*'
         IF readonly.0>0 THEN SAY dll 'unmarked as a read-only file.'
      END
      arguments=dll.i '-c'
      IF Translate(FileSpec('N',high))='HIGHMEM.EXE' THEN arguments='-c' dll.i
      '@'||high arguments
      /* (Try to) restore the read-only setting, if possibly changed */
      IF restore=1 THEN DO
         CALL SysFileTree dll.i,'readonly.','F',,'***+*'
         CALL SysFileTree dll.i,'readonly.','F','***+*'
         IF readonly.0>0 THEN SAY dll 'marked as a read-only file again.'
      END
   END i
END

here=Translate(Directory())
name=''
IF product='FF' THEN name='Firefox'
IF product='MOZ' THEN name='Mozilla'
IF product='SM' THEN name='SeaMonkey'
IF product='TB' THEN name='Thunderbird'

name2=name 'Turbo'
SAY
IF SysCreateObject('WPProgram',name2,'<WP_DESKTOP>','EXENAME=CMD.EXE;PARAMETERS=/c detach' here||'\'||turbo '-l;STARTUPDIR='||here||';MINIMIZED=YES;OBJECTID=<TURBO_'||product||'>','R') THEN DO
   SAY 'Object created:' name2
   IF SysCreateObject('WPProgram',name2 '(unload)','<WP_DESKTOP>','EXENAME='||here||'\'||turbo||';PARAMETERS=-u;STARTUPDIR='||here||';MINIMIZED=YES;OBJECTID=<TURBO_'||product||'_UNLOAD>','R') THEN DO
      SAY 'Object created:' name2 '(unload)'
      IF SysCreateShadow('<TURBO_'||product||'>','<WP_START>') THEN DO
         SAY'WPS shadow object of' name2 'created in the startup folder.'
         SAY
         answer='N'
         IF Length(product)=2 THEN DO
            CALL CharOut '','Do you want to try to create WPS objects for' name||' (y/N)? '
            PULL answer
            answer=Strip(answer)
         END
         IF answer='' THEN answer='N'
         IF Left(answer,1)='Y' THEN DO
            SAY
            folderid='<'||product||'_FOLDER>'
            IF SysCreateObject('WPFolder',name,'<WP_DESKTOP>','OBJECTID='||folderid,'R') THEN DO       
               SAY 'Folder' name 'created.'
               IF product='FF' THEN exename=here||'\'||'FIREFOX.EXE'
               IF product='SM' THEN exename=here||'\'||'SEAMONKEY.EXE'
               IF product='TB' THEN exename=here||'\'||'THUNDERBIRD.EXE'
               CALL SysCreateObject 'WPProgram',name 'Profile Manager',folderid,'EXENAME='||exename||';PARAMETERS=-ProfileManager;STARTUPDIR='||here
               CALL SysCreateObject 'WPProgram',name 'Read Me',folderid,'EXENAME=E.EXE;PARAMETERS='||here||'README.OS2;STARTUPDIR='||here
               CALL SysCreateObject 'WPProgram',name 'Safe Mode',folderid,'EXENAME='||exename||';PARAMETERS=-safe-mode;STARTUPDIR='||here
               IF product='SM' | product='TB' THEN DO
                  CALL SysCreateObject 'WPProgram',name 'Composer',folderid,'EXENAME='||exename||';PARAMETERS=-edit;STARTUPDIR='||here,';ICONFILE='||here||'\chrome\icons\default\editorWindow.ico'
                  CALL SysCreateObject 'WPProgram',name 'Mail',folderid,'EXENAME='||exename||';PARAMETERS=-mail;STARTUPDIR='||here,';ICONFILE='||here||'\chrome\icons\default\messengerWindow.ico'
                  CALL SysCreateObject 'WPProgram',name 'News',folderid,'EXENAME='||exename||';PARAMETERS=-news;STARTUPDIR='||here,';ICONFILE='||here||'\chrome\icons\default\messengerWindow.ico'
                  CALL SysCreateObject 'WPProgram',name 'Send Mail',folderid,'EXENAME='||exename||';PARAMETERS=-compose mailto:[mailto:];STARTUPDIR='||here,';ICONFILE='||here||'\chrome\icons\default\msgcomposeWindow.ico'
               END
               /* Main EXE last, so it's selected by default when the folder is opened in icon view */
               CALL SysCreateObject 'WPProgram',name,folderid,'EXENAME='||exename||';STARTUPDIR='||here
            END
            SAY
         END         
         CALL CharOut '','Press <ENTER>... '
         PULL .
         EXIT
      END
   END
END
   
SAY 'Error: cannot create all 3 WPS objects.'
SAY
CALL CharOut '','Press <ENTER>... '
PULL .

EXIT
Title: Re: Mozturbo help
Post by: Dave Yeo on April 21, 2019, 04:13:21 am
Preliminary testing shows this version as a keeper with a few minor changes such as the programs to include the version so as not to conflict with earlier installed versions, eg firefox-45.9.
I tested by adding the nss and nspr DLLs and they got their attributes changed correctly and changed back.
Next, I'll try on a new install and see how installing the mozapps goes and some of your other tests.
How hard would it be to add setting Firefox or SeaMonkey as the default browser, Thunderbird as the default email client? Same with associations?
Title: Re: Mozturbo help
Post by: xynixme on April 21, 2019, 11:36:31 am
FWIW: the code to find ABOVE512.EXE or HIGHMEM.EXE can be optimized by asking what your weapon of choice is, by scanning a drive once and use that "DIR Z:\*.EXE /S" output to find the file, and/or by selecting a drive. As stated earlier, an alternative is to use the PATH (not sure if those tools are path-worthy) or to type the full path.
a few minor changes such as the programs to include the version so as not to conflict with earlier installed versions, eg firefox-45.9.

some of your other tests.

How hard would it be to add setting Firefox or SeaMonkey as the default browser, Thunderbird as the default email client? Same with associations?
There are several ways to check versions, if we may exclude downgrades. Check file dates/times, and compare those timestamps with a hard-coded "database" of known versions. Read e.g. the README.OS2 of FF, and find the highest "number" with 2 dots. Read e.g. an identification string of LGPLLIBS.DLL or MOZSQLT3.DLL, and append the version number to WPS object IDs and WPS object names. CHANGES.OS2 seems to be a good candidate, if you're maintaining that. Then a restricted number of lines has to be read, which also reduces the memory footprint of Rexx.

Without rereading the code myself, you could also give the script a try in an empty directory. And a system without high mem tools (i.e. just replace the text HIGMMEM by FOOBAR in the code, if you have no executable FOOBAR file).

Associations are quite easy, if the script installs the WPS objects too. Apperently, with a Dutch OS, I can insert "ASSOCTYPE=HTML,tekst/html;ASSOCFILTER=*.htm,*.html;" in the WPS setup string. AFAIK changing the order requires editing an INI file. Rexx has got SysIni().

There may different types of default browsers. Here *.HTML is linked to Netscape (type 1) for fast local browsing, and IIRC changing the default browser (type 2) didn't fully change all browser settings of WPUrl objects (type 3). In a nutshell Rexx has access to OS/2 INI files, and it should be possible to import RegEdit2-settings.

If "type 2" is equal to "type 3", then I may be remembering not being able to change all settings of WPUrl objects. That's probably the reason why Mozilla still is my default browser. Not being able to set a DEFAULTWORKINGDIR to (NULL). I'm using the SM suite instead of TB, so I don't know about mailer settings.

WPTOOLS.DLL would be required to query settings of WPS objects.

Please keep in mind that associating *.HTML with FF by default may introduce 3 questions: do you want to associate *.HTML files, do you want to associate *HTML files too, and do you want this to be(come) the first association. And you may want to undo a change. To avoid that an Internet Exploder decides it's your default, and there's no tool to undo that decision.

With my typical setup, which isn't anything to go by, Netscape is a default browser for local files and SM should be a default browser for WPUrl objects (Mozilla is, due to not being able to change all settings).

It's also possible to split Rexx files, just like there's also a MozSounds.cmd file too. As such you don't need HIGHMEM.EXE to change associations later.

BTW, can you go to an ArcaOS prompt near you and type "PMREXX.EXE REXXTRY"? Next type "SAY Address()". It's output is either CMD (old bug) or PMREXX (bug fixed). If a fixed PMREXX is GA, then a PMREXX.EXE which returns PMREXX may make a dual-mode app possible (use SAY if the environment is CMD.EXE, or "WinMessageBox" if the environment is a hidden PM Rexx window).

The commands "HELP WPSREF WPPROGRAM" and "HELP WPSREF WPURL" show WPS settings which are available while creating or updating a WPS object. ASSOCFILTER, ASSOCTYPE, BROWSER, DEFAULTBROWSER, and so on.

So the question first is: what do you want to set/change where? Some settings are easy, some aren't, some are hard, and some are impossible. An answer may be: associate the installed FF browser with *.HTML. Is this a new association in the OS/2 INI file, then make it the default one (unless the section PMWP_ASSOC_CHECKSUM would make that too hard, if that would be involved).

If someone wants to play with WPS setup strings, here is the code to create WPProgram and WPUrl test objects (with known object IDs):

Code: [Select]
/**/
CALL RxFuncAdd 'SysCreateObject','RexxUtil','SysCreateObject'
CALL SysCreateObject 'WPUrl','WPUrl settings'||D2C(10)||'test object','<WP_DESKTOP>','URL=https://www.os2world.com;OBJECTID=<WPURL_SETTEST>','R'
CALL SysCreateObject 'WPProgram','WPProgram settings'||D2C(10)||'test object','<WP_DESKTOP>','EXENAME=E.EXE;OBJECTID=<WPPROGRAM_SETTEST>','R'
EXIT

And here's the Rexx code to play with WPS setup strings of the objcts with a known object-ID. Perhaps back-up the WPS and record existing settings before changing WPUrl defaults (the sample code doesn't):

Code: [Select]
/**/
CALL RxFuncAdd 'SysSetObjectData','RexxUtil','SysSetObjectData'
IF SysSetObjectData('<WPURL_SETTEST>','BROWSER=FOO.BAR') THEN SAY 'WPUrl-setting touched successfully'.
IF SysSetObjectData('<WPPROGRAM_SETTEST>','PARAMETERS=crash test dummy;STARTUPDIR=F:\OO.BAR') THEN SAY 'WPProgram-setting touched successfully'.
EXIT

Oh, and FTR: the assumed version of ABOVE512 is http://hobbes.nmsu.edu/download/pub/os2/dev/util/above512_001b.zip (http://hobbes.nmsu.edu/download/pub/os2/dev/util/above512_001b.zip). version 001a isn't tested.
Title: Re: Mozturbo help
Post by: xynixme on April 21, 2019, 06:03:28 pm
FTR/2: I've deleted my sample copy of InsTurbo.CMD each time, for one because the code can (and perhaps should) be changed. If the database of this website would have crashed, then my data source could be lost. I have no back-up copy.
Title: Re: Mozturbo help
Post by: xynixme on April 22, 2019, 04:06:13 pm
0. Retorical: there's no i686-build for SM SUa1 (yet).

1. According to EDM/2 (http://www.edm2.com/index.php/WPUrl), using WPUrl to set the DEFAULTBROWSER may introduce OS/2 Warp 4+ as an implied requirement.

2. Perhaps a default browser shouldn't somehow require LIBPATHSTRICT=T. Multiple browsers don't require LIBPATHSTRICT=T anymore (a.o. Links 2.19, without possibly conflicting own DLLs since a recent linking change).

3. I may post or upload a more generic (PM?) app to (try to) change the default WPUrl-objects browser later. Without support for default arguments, like Netscape's, because I'm not sure (yet) if that setting can be changed to (NULL) again.
Title: Re: Mozturbo help
Post by: xynixme on April 22, 2019, 05:19:28 pm
Code: [Select]
[R:\MEUK]SetDefaultWPUrlBrowser.CMD

 1 - Dooble
 2 - Firefox
 3 - Lightweight2
 4 - Links
 5 - Mozilla
 6 - Netscape
 7 - Qbrows
 8 - QtWeb
 9 - QupZilla
10 - SeaMonkey
11 - Surfer

Please enter the number of a (new) default WPUrl browser? 10

Please enter the drive and directory of SEAMONKEY.EXE? e:\internet\seamonkey


Previous default browser setting: D:\PROGRAMS\Mozilla\Mozilla.exe
Previous working directory      : D:\PROGRAMS\Mozilla

New default browser setting: E:\INTERNET\SEAMONKEY\SEAMONKEY.EXE
New working directory      : E:\INTERNET\SEAMONKEY

Press <ENTER>...

Code: [Select]
/* SetDefaultWPUrlBrowser.CMD, sample to change default WPUrl browser and working directory (by using SysIni) */

CALL RxFuncAdd 'SysIni','RexxUtil','SysIni'

'@MODE 80,25'
SAY

/* Help, or browser's entered or dropped executable? */

PARSE ARG exe
exe=Strip(exe)
IF Left(exe,1)='-' | Left(exe,1)='/' THEN DO
   SAY
   SAY 'Set default WPUrl browser. This requires OS/2 Warp 4, eCS or ArcaOS, and'
   SAY "a browser which doesn't require the setting LIBPATHSTRICT=T."
   SAY
   SAY "Usage: SetDefaultWPUrlBrowser.CMD [full file path of browser's executable]"
   SAY
   SAY 'Drop or enter the main executable of a browser, execute this in the main'
   SAY 'directory of a (supported) browser, or select a (supported) browser from'
   SAY 'a list.'
   SAY
   CALL CharOut '','Press <ENTER>... '
   PULL .
   EXIT
END
/* Support for CLI long file name */
IF Left(exe,1)='"' THEN PARSE VAR exe '"' exe '"' .
   
IF exe<>'' THEN exe=Stream(exe,'C','QUERY EXISTS')

/* List of upto 23 browsers (single Rexx-word EXEs minus the extension .EXE) */

IF exe='' THEN DO
   browsers='Dooble Firefox Lightweight2 Links Mozilla Netscape Qbrows QtWeb QupZilla SeaMonkey Surfer'

   /* Create table of browsers, find 1st match to avoid dialog (if possible) */

   browser.0=Words(browsers)
   IF browser.0<1 | browser.0>23 THEN DO
      SAY
      SAY 'Error: valid number of supported browsers is 1-23, found' browser.0
      SAY
      CALL CharOut '','Press <ENTER>... '
      PULL .
      EXIT
   END
   DO i=1 TO browser.0
      browser.i=Word(browsers,i)
      IF exe='' THEN exe=Stream(browser.i||'.EXE','C','QUERY EXISTS')
   END i

   /* No match found in current directory? */

   IF exe='' THEN DO
      DO i=1 TO browser.0
         SAY Format(i,2) '-' browser.i
      END i
      SAY
      CALL CharOut '','Please enter the number of a (new) default WPUrl browser? '
      PULL choice
      SAY
      choice=Strip(Translate(choice))     
      IF choice='' THEN EXIT
      IF Pos('E',choice,1)>0 THEN EXIT
      IF DataType(choice,'W')=0 THEN EXIT
      IF choice<1 | choice>browser.0 THEN EXIT
      browser.choice=Translate(browser.choice)||'.EXE'
      CALL CharOut '','Please enter the drive and directory of' browser.choice||'? '
      PULL where
      SAY
      IF Right(where,1)<>'\' THEN where=where||'\'
      exe=where||browser.choice
   END
END

IF Stream(exe,'C','QUERY EXISTS')='' THEN DO
   SAY
   SAY "Error: file" exe "doesn't exist"
   SAY
   CALL CharOut '','Press <ENTER>... '
   PULL .
   EXIT
END

SAY
old1=SysIni('USER','WPURLDEFAULTSETTINGS','DefaultBrowserExe')
old2=SysIni('USER','WPURLDEFAULTSETTINGS','DefaultWorkingDir')
IF old1='ERROR:' | Length(old1)<1 | old2='ERROR:' | Length(old2)<3 THEN DO
   SAY 'Error: cannot query current default settings of WPUrl objects'
   SAY
   CALL CharOut '','Press <ENTER>... '
   PULL .
   EXIT
END
SAY 'Previous default browser setting:' old1
SAY 'Previous working directory      :' old2
SAY

PARSE VALUE Reverse(exe) WITH . '\' where
where=Reverse(where)
new1=SysIni('USER','WPURLDEFAULTSETTINGS','DefaultBrowserExe',exe||D2C(0))
new2=SysIni('USER','WPURLDEFAULTSETTINGS','DefaultWorkingDir',where||D2C(0))
IF new1='ERROR:' | new2='ERROR:' THEN DO
   SAY 'Warning: cannot set all new default settings of WPUrl objects'
   SAY
   CALL CharOut '','Press <ENTER>... '
   PULL .
   SAY
   EXIT
END

old1=SysIni('USER','WPURLDEFAULTSETTINGS','DefaultBrowserExe')
old2=SysIni('USER','WPURLDEFAULTSETTINGS','DefaultWorkingDir')
IF old1='ERROR:' | old2='ERROR:' THEN DO
   SAY 'Error: cannot query updated default settings of WPUrl objects'
   SAY
   CALL CharOut '','Press <ENTER>... '
   PULL .
   EXIT
END
SAY 'New default browser setting:' old1
SAY 'New working directory      :' old2
SAY
CALL CharOut '','Press <ENTER>... '
PULL .

EXIT
Title: Re: Mozturbo help
Post by: xynixme on April 22, 2019, 07:00:15 pm
And a sample Rexx script to update ALL existing WPUrl objects in a single WPS Folder (/ subdirectory). Obviously an user could have intentionally entered any value, so this can destroy a setup. Change the parameter FO of SysFileTree to FOS to include subdirectories.

The app assumes that FIREFOX.EXE, MOZILLA.EXE or SEAMONKEY.EXE is installed in the current directory, and uses this EXE and its directory as the new setting for a single WPUrl object.

Presumably it doesn't support a MOZILLA.EXE in a root directory (easy fix, but an unlikely install of that legacy browser).

Code: [Select]
[R:\MEUK\FIREFOX]updatewpurl

Usage: UpdateWPUrl.CMD [base directory, e.g. C:\HOME\DESKTOP\TestFolder]

[R:\MEUK\FIREFOX]updatewpurl d:\home\desktop
1 files found.
Adjusted: d:\home\desktop\WPUrlTestObject

Code: [Select]
/* UpdateWPUrl.CMD - Updates existing WPUrl objects in single WPS folder/directory */

CALL RxFuncAdd 'SysLoadFuncs','RexxUtil','SysLoadFuncs'
CALL SysLoadFuncs

PARSE ARG base
base=Strip(base)
IF Left(base,1)='"' THEN PARSE VAR base '"' base '"' .
IF base='' THEN DO
   SAY
   SAY 'Usage: UpdateWPUrl.CMD [base directory, e.g. C:\HOME\DESKTOP\TestFolder]'
   EXIT
END

here=Directory()
browser=Stream(here||'\FIREFOX.EXE','C','QUERY EXISTS')
IF browser='' THEN browser=Stream(here||'\SEAMONKEY.EXE','C','QUERY EXISTS')
IF browser='' THEN browser=Stream(here||'\MOZILLA.EXE','C','QUERY EXISTS')
IF browser='' THEN DO
   SAY
   SAY 'Error: FIREFOX.EXE, MOZILLA.EXE nor SEAMONKEY.EXE found in' here
   EXIT
END

IF Right(base,1)<>'\' THEN base=base||'\'
base=base||'*'
CALL SysFileTree base,'object.','FO'
IF object.0=0 THEN EXIT
SAY object.0 'files found.'
flag=1

DO i=1 TO object.0
   IF SysGetEA(object.i,'.TYPE','typeinfo')=0 THEN DO
      PARSE VAR typeinfo 1 . 11 type
      IF type=='UniformResourceLocator' THEN DO
         IF SysSetObjectData(object.i,'BROWSER='||browser||';WORKINGDIR='||here) THEN SAY 'Adjusted:' object.i
      END
   END
END i

EXIT
Title: Re: Mozturbo help
Post by: Dave Yeo on April 23, 2019, 03:44:37 am
0. Retorical: there's no i686-build for SM SUa1 (yet).

Sorry, once I get this debug build I've been fighting to finish, I'll build you one. I think I might use a frame rate of 30 instead of 60 as well for performance. I experimented a bit with it and didn't notice any harmful affects and it should work better on lower end hardware.
Title: Re: Mozturbo help
Post by: xynixme on April 23, 2019, 12:32:39 pm
Your seamonkey-2.42.9esr_r3_s.en-US.os2.zip works fine with (all) eCS hardware with enough physical RAM.

If browsing about:blank is a disaster due to browser component changes now, then you could skip SM i686. I do have FF i686 installed, but I tend to only use that when performance doesn't matter. Install and seldomly use a XPI file which doesn't support SM, for example. All recent FFs were very slow, compared to the SM r3_s release and previous releases.

I can confirm that a reasonable general performance is more important for a i686 build than a cOOl FPS rate. For "modern" videos I may have to use W10-hardware anyway, and even that's frequently too slow for e.g. unavoidable video ads.

Limited disk space is one of the main reasons why I don't consider saving a second optimized copy for newer eCS hardware, despite of the fact that I may own at least one eCS Pentium-M CPU.

---

Back on-topic is the same (lack of) speed a reason why I didn't really take a look at both setting a new WPUrl default browser and changing existing BROWSER settings if the old BROWSER setting was the previous default browser. One may intentionally use any legacy browser when it would take minutes to launch FF to browse a local HTML file.

Setting a new default browser can be restricted to a specific family of products, you don't always have to support QtWeb as s theoretically competing browser, but then it may require a PM UI with many "checkboxes" to confirm changing the BROWSER setting of each existing WPUrl object. And a select all-button, and a reverse selection-button, and so on.

It could also look like the 3rd tab of WPProgram's settings, with a "Add" and "Remove" button. Left: don't touch. Right: update. It won't be as "easy" as Windows' "Do you want to use Firefox as the default browser for everything?". We've got an OO choice, which e.g. I've used (*.HTML Netscape, WPUrl Mozilla (http(s):m file:) or Netscape (file:, regular browsing mainly SM or FF). But with such a PM app I'll have to look at about 170 WPUrl objects. Excluding the ones with a non-default BROWSER setting, but including file: ones installed by installers of programs. I may be tempted to select "Don't change anything" when a long list pops up, for one because most/all OS/2-related web sites won't require a modern browser. I'll probably just change the default browser for new WPUrl objects, if I would create new WPUrl objects quite frequently.
Title: Re: Mozturbo help
Post by: xynixme on May 07, 2019, 03:26:04 pm
1. Can all of ...

nspr4.dll
nspr4k.dll
nss3.dll
nss3k.dll
nssckbi.dll
nssckbik.dll
nssdbm3.dll
nssdbm3k.dll
nssuti3k.dll
nssutil3.dll

... be appended to the safe list of DLLs to mark as 'load high'?


2. Since PKILL.EXE somehow appears to be an OS component since eCS 2.x EN/DE or ArcaOS, and PKILL.EXE is available as an infomal update for e.g. eCS 1.x, but PMREXX.EXE may still be broken since Warp 3 FP0 because Address() doesn't return PMREXX as its environment anymore, this is a simple way to write a PM app. With disadvantages. It may be far too simple, and e.g. VX-REXX is a superior choice. Nevertheless, FWIW:

Code: [Select]
/* Execute this Rexx script with PMREXX.EXE (PMREXX REXXAPP.CMD) !!!!!!!!!!!!!!!!!!!!! */

answer=RxMessageBox('Text','Title','YESNOCANCEL','QUESTION')
SAY 'Answer:' answer
SAY
SAY 'Press <ENTER>...'
PULL .

/* Suicide is painless */
'@PKILL.EXE PMREXX.EXE'

EXIT
/* Or perhaps '@EXIT', if a window remains open */

Possible when the questions will be restricted to yes/no-questions only ("Do you want to ..."), without other dialogs halfway. It's not as good as it used to be:

Code: [Select]
/* Dual mode Rexx app (pseudo-code for OS/2 Warp 3 FP0) */
IF Address='PMREXX' THEN CALL RxMessageBox 'Select OK to exit','PM mode','OK' ELSE DO
   CALL CharOut '','Text mode. Press <ENTER> to exit... '
   PULL .
END

EXIT
/* Or perhaps '@EXIT', if a PM or VIO window remains open with OS/2 Warp FP0 */
Title: Re: Mozturbo help
Post by: Dave Yeo on May 08, 2019, 04:37:29 am
1. Can all of ...

nspr4.dll
nspr4k.dll
nss3.dll
nss3k.dll
nssckbi.dll
nssckbik.dll
nssdbm3.dll
nssdbm3k.dll
nssuti3k.dll
nssutil3.dll

... be appended to the safe list of DLLs to mark as 'load high'?

I believe so. The *k.dll ones are legacy and aren't used by current builds. I'm marking all high using your last InsTurbo.cmd with the above, minus the *k.dll ones, added to the script. Do need to adjust the error handling so if a DLL is not present, the script just mentions it instead of dying.

Quote
2. Since PKILL.EXE somehow appears to be an OS component since eCS 2.x EN/DE or ArcaOS, and PKILL.EXE is available as an infomal update for e.g. eCS 1.x, but PMREXX.EXE may still be broken since Warp 3 FP0 because Address() doesn't return PMREXX as its environment anymore, this is a simple way to write a PM app. With disadvantages. It may be far too simple, and e.g. VX-REXX is a superior choice. Nevertheless, FWIW:

Code: [Select]
/* Execute this Rexx script with PMREXX.EXE (PMREXX REXXAPP.CMD) !!!!!!!!!!!!!!!!!!!!! */

answer=RxMessageBox('Text','Title','YESNOCANCEL','QUESTION')
SAY 'Answer:' answer
SAY
SAY 'Press <ENTER>...'
PULL .

/* Suicide is painless */
'@PKILL.EXE PMREXX.EXE'

EXIT
/* Or perhaps '@EXIT', if a window remains open */

Possible when the questions will be restricted to yes/no-questions only ("Do you want to ..."), without other dialogs halfway. It's not as good as it used to be:

Code: [Select]
/* Dual mode Rexx app (pseudo-code for OS/2 Warp 3 FP0) */
IF Address='PMREXX' THEN CALL RxMessageBox 'Select OK to exit','PM mode','OK' ELSE DO
   CALL CharOut '','Text mode. Press <ENTER> to exit... '
   PULL .
END

EXIT
/* Or perhaps '@EXIT', if a PM or VIO window remains open with OS/2 Warp FP0 */

I think for now it is simpler to just stay with the cmd line version.
Thanks
Title: Re: Mozturbo help
Post by: xynixme on May 08, 2019, 01:42:08 pm
Thank you. After checks I'll delete the NS*K.DLL files and will mark the safe other NS*.DLL ones as load-high too.
Do need to adjust the error handling so if a DLL is not present, the script just mentions it instead of dying.
In different sample code, probably to be inserted in an early phase, before doing anything with DLLs files.

Code: [Select]
/* Untested */

/* Already covered by SysLoadFuncs call in earlier sample code */
CALL RxFuncAdd 'SysBootDrive','RexxUtil','SysBootdrive'

/* Boot drive to find x:\CONFIG.SYS in production, and the number of test DLLs */

bootdrive=SysBootDrive()
dll.0=11

/* List of test "DLLs" */

dll.1='FOO.BAR'
dll.2='FOO.DLL'
dll.3=bootdrive||'\CONFIG.SYS'
dll.4=bootdrive||'\sys\apps\AMOUSE\AMou001.dll'
dll.5=bootdrive||'\OS2\APPS\tilehk.dll'
dll.6='tilehk.dll'
dll.7='XUL.DLL'
dll.8='clearkey.dll'
dll.9='gmp-clearkey\0.1\clearkey.dll'
dll.10='nspr4.dll'
dll.11='CONFIG.SYS'

/* LIBPATH section only required for the optional LIBPATH section */
dircounter=0
source=bootdrive||'\CONFIG.SYS'
DO WHILE Lines(source)>0
   line=Strip(LineIn(source))
   IF Left(Translate(line),8)='LIBPATH=' THEN DO
      PARSE VAR line 1 . 9 line
      begin=Strip(Value('BEGINLIBPATH',,'ENVIRONMENT'))
      IF Right(begin,1)<>';' THEN begin=begin||';'
      IF begin<>';' THEN line=begin||line
      DO WHILE line<>''
         dircounter=dircounter+1
         PARSE VAR line dir.dircounter ';' line
         IF Right(dir.dircounter,1)<>'\' THEN dir.dircounter=dir.dircounter||'\'
      END
   END
END
CALL LineOut source
dir.0=dircounter
/* End of LIBPATH parsing section */

/* Fatal error counter */
errors=0

/* Loop */
DO i=1 TO dll.0
   /* Does the file exist? */
   SAY 'DLL test file' Format(i,2)||':' dll.i
   IF Stream(dll.i,'C','QUERY EXISTS')='' THEN DO
      SAY 'DLL file' dll.i 'not found with starting point' Directory()
      errors=errors+1

      /* Optional section, LIBPATH check */
      /* Undo added error because of the following retry */
      errors=errors-1
      DO j=1 TO dir.0
         retry=Stream(dir.j||FileSpec('N',dll.i),'C','QUERY EXISTS')
         IF retry<>'' THEN DO
            SAY "Don't worry, hopefully you meant" retry
            dll.i=dir.j||FileSpec('N',dll.i)
            j=dir.0
         END
      END j   
      IF retry='' THEN DO
         SAY 'nor in a LIBPATH directory.'
         errors=errors+1
      END
      /* End of optional LIBPATH section */
   
   END
   SAY
END i

IF errors>0 THEN DO
   CALL Charout '',errors 'fatal DLL file error(s). Please press <ENTER> to exit... '
   PULL .
   EXIT
END

SAY 'All expected files found, somewhere.'

EXIT

Output sample with eCS 1.2 in FIREFOX.EXE's directory (product irrelevant, earlier fully functional sample code already uses the real right list of DLLs per product, no "SET BEGINLIBPATH=..." in use:

Code: [Select]
DLL test file  1: FOO.BAR
DLL file FOO.BAR not found with starting point D:\interweb\firefox
nor in a LIBPATH directory.

DLL test file  2: FOO.DLL
DLL file FOO.DLL not found with starting point D:\interweb\firefox
nor in a LIBPATH directory.

DLL test file  3: C:\CONFIG.SYS

DLL test file  4: C:\sys\apps\AMOUSE\AMou001.dll
DLL file C:\sys\apps\AMOUSE\AMou001.dll not found with starting point D:\interweb\firefox
nor in a LIBPATH directory.

DLL test file  5: C:\OS2\APPS\tilehk.dll

DLL test file  6: tilehk.dll
DLL file tilehk.dll not found with starting point D:\interweb\firefox
nor in a LIBPATH directory.

DLL test file  7: XUL.DLL

DLL test file  8: clearkey.dll
DLL file clearkey.dll not found with starting point D:\interweb\firefox
nor in a LIBPATH directory.

DLL test file  9: gmp-clearkey\0.1\clearkey.dll

DLL test file 10: nspr4.dll
DLL file nspr4.dll not found with starting point D:\interweb\firefox
Don't worry, hopefully you meant D:\interweb\Bin\nspr4.dll

DLL test file 11: CONFIG.SYS
DLL file CONFIG.SYS not found with starting point D:\interweb\firefox
Don't worry, hopefully you meant C:\CONFIG.SYS

5 fatal DLL file error(s). Please press <ENTER> to exit...

Post your last version (a.o. including NS*.DLLs) and the code to be inserted (which may exclude the LIBPATH retry), if you want someone else to insert the stand-alone sample code above. Mainly coming down to checking variable names and using the real DLL file name array.

The (BEGIN)LIBPATH won't work with SysSearchPath, because SysSearchPath requires (SET=...) environment variables. The PATH is, but the LIBPATH isn't. I've inserted that complicating (BEGIN)LIBPATH checking code to account for setups with NS*.DLLs outside of e.g. a distributed "old" FF 45.9 package. The log file section of DLL test file 10 shows this construction may actually work.
Title: Re: Mozturbo help
Post by: xynixme on May 08, 2019, 02:38:53 pm
Additionally setting a default browser is not related to a specific product. But the author of a specific product can, of course, promote the own product. My generic app uses SysIni. An alternative solution could be to SysCreateObject a WPUrl object with SET DEFAULT=... settings in e.g. the folder "<WP_NOWHERE>", and to (try to) SysDestroyObject that WPUrl object immediately.

Or you can create a WPUrl object which refers to a file or the homepage of the product, open the settings, and tell the user to go to the Browser tab and use the button to set a default browser there.

In the case of InsTurbo.CMD I'd recommend SysIni. It has found the main EXE and its directory, which is all you need as long as the browser doesn't require LIBPATHSTRICT=T and SET BEGINLIBPATH=... anymore.

A quick & dirty test or my memory failed. ISTR I created a WPUrl test object (no ".EXE." in its EAs), changed the default browser via SysIni, but the created test object still was opened with the previous default browser.

A PM app would be useful if you want an user has OLDBROWSER.EXE in EAs of existing WPUrl object. Then you can present a list of changes (do you want to change the intentionally set OLDBROWSER.EXE of "ecomstation.com" to e.g. Firefox?).

My default-browser selector does use the fact that the name of the product, like SeaMonkey, always matches the name of the EXE (SEAMONKEY.EXE).
Title: Re: Mozturbo help
Post by: Dave Yeo on May 09, 2019, 05:19:27 am
This is the version I'm testing, works fine if all DLLs are present. Be nice if it also worked with older builds without NSS and NSPR DLLs present.
Not too worried right now about program objects for the browser etc, just making marking the DLLs to load high and putting the turbo programs on desktop/startup folder.
Thanks
Title: Re: Mozturbo help
Post by: xynixme on May 09, 2019, 11:23:01 am
This is the version I'm testing
Modified accordingly. SysBootDrive() may require a newer version of Rexx. Probably not a real problem. I'm assuming SysBootDrive() is available, without RxFuncQuery()'ing it. Nor am I using older, alternative classic Rexx code to try to find the boot drive (required for CONFIG.SYS' LIBPATH line).

Some changes: list of DLL file names uppercased (so I can again see what you've added in lowercase later), Strip() surrounding lists of DLL file names to make sure its format remains "NAME<blank>NAME<blank>" if e.g. one of the list is empty, error checking w.r.t. SysFileTree(), no more other created objects, existence of DLLs checked in the usual order of the current directory (including relative paths of e.g. CLEARKEY.DLL), BEGINLIBPATH and LIBPATH, and a check if the number of DLLs is more than 0.

I did not add code to change the default browser settings of WPUrl objects (in OS2.INI or via WPS setup strings), because AFAICT the default browser doesn't support a possible BEGINLIBPATH setting of older versions of FF or SM, while InsTurbo.CMD does, but InsTurbo.CMD doesn't check the file date nor version of FF/SM.

The sample file checking Rexx code was more verbose than the inserted code.

Code: [Select]
/* InsTurbo.CMD */

CALL RxFuncAdd 'SysLoadFuncs','RexxUtil','SysLoadFuncs'
CALL SysLoadFuncs

/* Find Mozilla product in the current directory */

SAY
product=''
IF Stream('MOZILLA.EXE','C','QUERY EXISTS')<>'' THEN product='Mozilla'
IF Stream('THUNDERBIRD.EXE','C','QUERY EXISTS')<>'' THEN product='TB'
IF Stream('FIREFOX.EXE','C','QUERY EXISTS')<>'' THEN product='FF'
IF Stream('SEAMONKEY.EXE','C','QUERY EXISTS')<>'' THEN product='SM'
here=Translate(Directory())
IF product='' THEN DO
   SAY 'Error, cannot find any main Mozilla executable in the current directory:'
   SAY '      ' here
   SAY
   CALL CharOut '','Press <ENTER>... '
   PULL .
   EXIT
END
SAY 'Product found:' product
IF product='Mozilla' THEN product='MOZ'

/* Compile a list of DLLs, with one space between relative full DLL file specs */

dlls=''
IF Length(product)=2 THEN DO
   
   /* DLLs shared by all non-legacy products */
   dlls=Strip('XUL.DLL LGPLLIBS.DLL MOZSQLT3.DLL FREEBL3.DLL NSPR4.DLL NSS3.DLL NSSCKBI.DLL NSSDBM3.DLL NSSUTIL3.DLL PLC4.DLL PLDS4.DLL SMIME3.DLL SOFTOKN3.DLL SSL3.DLL')
   
   /* Additional DLLs exclusive for FF only */
   IF product='FF' THEN dlls=Strip(dlls 'browser\components\BRWSRCMP.DLL gmp-clearkey\0.1\CLEARKEY.DLL')
   
   /* Additional DLLs exclusive for both SM and TB */
   IF product='SM' | product='TB' THEN dlls=Strip(dlls 'LDAP60.DLL LDIF60.DLL PRLDAP60.DLL')
   
   /* Additional DLLs exclusive for SM only */
   IF product='SM' THEN dlls=Strip(dlls 'components\SUITE.DLL')

END

dll.0=Words(dlls)
DO i=1 TO dll.0
   dll.i=Word(dlls,i)
END i

/* Find the matching TURBO.EXE in the same current directory */

turbo=product||'TURBO.EXE'
IF Stream(turbo,'C','QUERY EXISTS')='' THEN DO
   SAY 'Error, cannot find' turbo 'in the current directory:' here
   SAY
   CALL CharOut '','Press <ENTER>... '
   PULL .
   EXIT
END
SAY turbo 'found.'

/* Load DLLs high, if the product is not the legacy Mozilla? */

IF dll.0>0 THEN DO
   loadhigh=0
   IF Length(product)=2 THEN DO
      SAY
      SAY 'Do you want to use memory above 512 MiB for DLLs (default, recommended),'
      CALL CharOut '',"which doesn't require having more than 512 MiB of RAM installed (Y/n)? "
      PULL answer
      answer=Strip(answer)
      IF answer='' THEN answer='Y'
      IF Left(answer,1)='Y' THEN loadhigh=1
      SAY
   END

   /* Load DLLs high? Then first check if all expected DLLs can be found */

   IF loadhigh=1 THEN DO
      dircounter=0
      source=SysBootDrive()||'\CONFIG.SYS'
      DO WHILE Lines(source)>0
         line=Strip(LineIn(source))
         IF Left(Translate(line),8)='LIBPATH=' THEN DO
            PARSE VAR line 1 . 9 line
            begin=Strip(Value('BEGINLIBPATH',,'ENVIRONMENT'))
            IF Right(begin,1)<>';' THEN begin=begin||';'
            IF begin<>';' THEN line=begin||line
            DO WHILE line<>''
               dircounter=dircounter+1
               PARSE VAR line dir.dircounter ';' line
               dir.dircounter=Strip(dir.dircounter)
               IF Right(dir.dircounter,1)<>'\' THEN dir.dircounter=dir.dircounter||'\'
            END
         END
      END
      CALL LineOut source
      dir.0=dircounter

      errors=0
      DO i=1 TO dll.0
         /* DLL file in current directory? */
         
         IF Stream(dll.i,'C','QUERY EXISTS')='' THEN DO
           
            /* Otherwise DLL file in LIBPATH directory? */
           
            DO j=1 TO dir.0
               retry=Stream(dir.j||FileSpec('N',dll.i),'C','QUERY EXISTS')
               IF retry<>'' THEN DO
                  dll.i=dir.j||FileSpec('N',dll.i)
                  j=dir.0
               END
            END j   
            IF retry='' THEN DO
               SAY 'Error: required DLL file' dll.i 'not found in' here 'nor LIBPATH'
               errors=errors+1
            END
         END
      END i
      IF errors>0 THEN DO
         SAY
         CALL Charout '',errors 'fatal DLL file error(s). Press <ENTER>... '
         PULL .
         EXIT
      END
   END
   SAY 'All expected DLLs found.'
   SAY
END

/* Load high */

IF loadhigh=1 THEN DO
   
   /* Try to find ABOVE512.EXE or HIGHMEM.EXE, if the answer was (Y)es */

   file='ABOVE512.EXE'
   high=Stream(file,'C','QUERY EXISTS')
   IF high='' THEN high=Stream('HIGHMEM.EXE','C','QUERY EXISTS')
   IF high='' THEN high=SysSearchPath('PATH',file)
   IF high='' THEN high=SysSearchPath('PATH','HIGHMEM.EXE')
   IF high='' THEN DO
      SAY 'Please enter the full path to' file 'or HIGHMEM.EXE, or press nothing'
      CALL CharOut '','but <ENTER> to try to find it: '
      PARSE PULL high
      SAY
      IF Strip(high)<>'' THEN DO
         IF Right(high,1)<>'\' THEN high=high||'\'
         high=high||file
         IF Stream(high,'C','QUERY EXISTS')='' THEN DO
            SAY 'Error: cannot find file' high
            SAY
            CALL CharOut '','Press <ENTER>... '
            PULL .
            EXIT
         END
      END
   END
   IF Strip(high)='' THEN DO   
      SAY file 'or HIGHMEM.EXE not found in current directory nor PATH.'
      SAY 'Searching...'
      drives=SysDriveMap('A:')
      IF drives='' THEN DO
         SAY
         SAY 'Error: no drives found.'
         SAY
         CALL CharOut '','Press <ENTER>... '
         PULL .
         EXIT
      END
      drive.0=Words(drives)
      DO i=1 TO drive.0
         okay.i=0
         IF SysDriveInfo(Word(drives,i))<>'' THEN okay.i=1
      END i
      DO i=1 TO drive.0
         IF okay.i=0 THEN ITERATE i
         IF high='' THEN DO
            SAY 'Scanning drive' Word(drives,i)
            pattern1=Word(drives,i)||'\'||file
            pattern2=Word(drives,i)||'\HIGHMEM.EXE'
            IF SysFileTree(pattern1,'hit.','FOS')=2 THEN DO
               SAY
               SAY 'Error: not enough available memory to query a list of files.'
               SAY
               CALL CharOut '','Press <ENTER>... '
               PULL .
               EXIT
            END
            IF hit.0=0 THEN DO
               IF SysFileTree(pattern2,'hit.','FOS')=2 THEN DO
                  SAY
                  SAY 'Error: not enough available memory to query a list of files.'
                  SAY
                  CALL CharOut '','Press <ENTER>... '
                  PULL .
                  EXIT
               END
            END
            IF hit.0>0 THEN DO
               high=hit.1
               SAY
               SAY 'Found:' high
            END
         END
      END i
   END
   IF high='' THEN DO
      SAY
      SAY 'Error:' file 'nor HIGHMEM.EXE found.'
      SAY
      CALL CharOut '','Press <ENTER>... '
      PULL .
      EXIT
   END
   DO i=1 TO dll.0
     
      /* Is the DLL read-only? */
     
      restore=0
      IF SysFileTree(dll.i,'readonly.','F','***+*')=2 THEN DO
         SAY
         SAY 'Error: not enough available memory to query a list of files.'
         SAY
         CALL CharOut '','Press <ENTER>... '
         PULL .
         EXIT
      END
     
      /* If so, then (try to) toggle the setting */
     
      IF readonly.0=1 THEN DO
         restore=1
         IF SysFileTree(dll.i,'readonly.','F',,'***-*')=2 THEN DO
            SAY
            SAY 'Error: not enough available memory to query a list of files.'
            SAY
            CALL CharOut '','Press <ENTER>... '
            PULL .
            EXIT
         END
         IF SysFileTree(dll.i,'readonly.','F','***-*')=2 THEN DO
            SAY
            SAY 'Error: not enough available memory to query a list of files.'
            SAY
            CALL CharOut '','Press <ENTER>... '
            PULL .
            EXIT
         END
         IF readonly.0>0 THEN SAY dll 'unmarked as a read-only file.'
      END
      arguments=dll.i '-c'
      IF Translate(FileSpec('N',high))='HIGHMEM.EXE' THEN arguments='-c' dll.i
      '@'||high arguments
     
      /* (Try to) restore the read-only setting, if possibly changed */
     
      IF restore=1 THEN DO
         IF SysFileTree(dll.i,'readonly.','F',,'***+*')=2 THEN DO
            SAY
            SAY 'Error: not enough available memory to query a list of files.'
            SAY
            CALL CharOut '','Press <ENTER>... '
            PULL .
            EXIT
         END
         IF SysFileTree(dll.i,'readonly.','F','***+*')=2 THEN DO
            SAY
            SAY 'Error: not enough available memory to query a list of files.'
            SAY
            CALL CharOut '','Press <ENTER>... '
            PULL .
            EXIT
         END
         IF readonly.0>0 THEN SAY dll 'marked as a read-only file again.'
      END
   END i
END

name=''
IF product='FF' THEN name='Firefox'
IF product='MOZ' THEN name='Mozilla'
IF product='SM' THEN name='SeaMonkey'
IF product='TB' THEN name='Thunderbird'

name=name 'Turbo'
SAY
IF SysCreateObject('WPProgram',name,'<WP_DESKTOP>','EXENAME=CMD.EXE;PARAMETERS=/c detach' here||'\'||turbo '-l;STARTUPDIR='||here||';MINIMIZED=YES;OBJECTID=<TURBO_'||product||'>','R') THEN DO
   SAY 'Object created:' name
   IF SysCreateObject('WPProgram',name '(unload)','<WP_DESKTOP>','EXENAME='||here||'\'||turbo||';PARAMETERS=-u;STARTUPDIR='||here||';MINIMIZED=YES;OBJECTID=<TURBO_'||product||'_UNLOAD>','R') THEN DO
      SAY 'Object created:' name '(unload)'
      IF SysCreateShadow('<TURBO_'||product||'>','<WP_START>') THEN DO
         SAY'WPS shadow object of' name 'created in the startup folder.'
         SAY
         CALL CharOut '','Press <ENTER>... '
         PULL .
         EXIT
      END
   END
END
   
SAY 'Error: cannot create all 3 WPS objects.'
SAY
CALL CharOut '','Press <ENTER>... '
PULL .

EXIT

Syntax-checked by the Object Rexx interpreter. Possible tests are moving e.g. XUL.DLL to a LIBPATH directory, adding some irrelevant existing LIBPATH DLL, a BEGINLIBPATH DLL and a file which doesn't exist to the list of DLL files. Then the expected result is one fatal error. If it's MOZTURBO.EXE, then DLLs shouldn't be checked.

In theory the *TURBO.EXE can be searched for too, but e.g. installing the full FFTURBO.ZIP package in the directory of FIREFOX.EXE does make sense too if FFTURBO.EXE isn't distributed as a FF component. OTOH it's not that complicated to give the PATH a try if *TURBO.EXE cannot be found in the current directory.
Title: Re: Mozturbo help
Post by: xynixme on May 10, 2019, 06:58:31 pm
Possible bug found on paper, while playing with a VX-REXX version:

Old section, when ABOVE512.EXE nor HIGHMEM.EXE can be found in the current directory nor PATH.

Code: [Select]
IF Strip(high)<>'' THEN DO
   IF Right(high,1)<>'\' THEN high=high||'\'
   high=high||file
   IF Stream(high,'C','QUERY EXISTS')='' THEN DO
      SAY 'Error: cannot find file' high
      SAY
      CALL CharOut '','Press <ENTER>... '
      PULL .
      EXIT
   END
END

New, untested:

Code: [Select]
IF Strip(high)<>'' THEN DO
   IF Right(high,1)<>'\' THEN high=high||'\'
   orghigh=high
   high=high||file
   IF Stream(high,'C','QUERY EXISTS')='' THEN DO
      high=orghigh||'HIGHMEM.EXE'
      IF Stream(high,'C','QUERY EXISTS')='' THEN DO
         SAY 'Error: cannot find file' high
         SAY
         CALL CharOut '','Press <ENTER>... '
         PULL .
         EXIT
      END
   END
END

The old version looks for ABOVE512.EXE, which may not work when the user typed the full directory spec "C:\NON-PATH\HIGHMEM" instead of the full directory spec "C:\NON-PATH\ABOVE512". In the existing version both ABOVE512.EXE and HIGHMEM.EXE should be fully supported, even when an user decided that HIGHMEM.EXE isn't worth being saved in a PATH directory.
Title: Re: Mozturbo help
Post by: xynixme on May 11, 2019, 07:56:20 pm
Adjusted new code, still untested:

Code: [Select]
IF Strip(high)<>'' THEN DO
   IF Right(high,1)<>'\' THEN high=high||'\'
   orghigh=high
   high=high||file
   IF Stream(high,'C','QUERY EXISTS')='' THEN DO
      IF Stream(orghigh||'HIGHMEM.EXE','C','QUERY EXISTS')='' THEN DO
         SAY 'Error: cannot find ABOVE512 nor HIGHMEM.EXE in the directory' orghigh
         SAY
         CALL CharOut '','Press <ENTER>... '
         PULL .
         EXIT
      END
   END
END
Title: Re: Mozturbo help
Post by: xynixme on May 12, 2019, 02:39:26 am
PM sample, based on about the same single classic Rexx code for the whole family. More flexibility may be an advantage of the UI, like an user of SM not having to have nor having to fully install FFTURBO.EXE, if the user just wants to mark the rarely used FF-specific DLL files as loadable above 512 MiB too.

Without overdoing it, like showing a list of WPUrl objects with a different browser setting to change that setting of selectable existing WPUrl objects.

MOZILLA.EXE is the system's current default browser, which explains why the MOZTURBO.EXE installer has a greyed-out option to change the default browser from (some) MOZILLA.EXE to (some) MOZILLA.EXE.

A minor visual change is that HIGHMEM.EXE is always selected. The user can only select or unselect ABOVE512.EXE, to safe time when InsTurbo has to find an ABOVE512.EXE which the user doesn't have at all. If you've got both, then ABOVE512.EXE still has the priority, while HIGHMEM.EXE perhaps is a more likely default.

Dunno what happens when the PM app is busy changing DLLs and the user closes any of the windows, but the same level of uncertainty applies to closing an InsTurbo.CMD window.

Not included as a sample image: ABOVE512.EXE is verbose, and will open a VX-REXX "log window".

Title: Re: Mozturbo help
Post by: Dave Yeo on May 12, 2019, 06:05:27 am
I like it.
Sorry for not having time/energy to deal with this lately, I need to finish updating the readme's and such and pay more attention to mozturbo, but currently work and other stuff is interfering.
Thanks for the help.
Title: Re: Mozturbo help
Post by: xynixme on May 12, 2019, 01:43:37 pm
I like it.
Then I'll actually complete it. One of the missing items is an icon (*.ICO, all classic sizes) for a InsTurbo.EXE, for one because I don't want to grab Graser's turbo image an put that on top of some boring public domain installer icon.

The concept is unchanged, one InsTurbo.EXE for all members of the Mozilla family. Most of the extra "work" is related to managing the UI correctly to guide the user, like disabling "load high"-settings when the product is the legacy MOZILLA.EXE. And possibly to changing some of the RexxUtil calls to matching VX-REXX alternatives.

The only extra requirement is the usual VROBJ.DLL, which is shipped with e.g. eCS 1.x. To maintain and build it Watcom VX-REXX is required, and optionally PACKVXRX (lxLite for VX-REXX apps). The same DLL lists still can be found in a single Rexx source file, albeit with the VX-REXX IDE you'd probably edit nothing but the section "Init".

No attached sample source code and EXE yet, because it's unfinished.
Title: Re: Mozturbo help
Post by: Neil Waldhauer on May 12, 2019, 04:37:32 pm
For automated install users, it's nice to provide a command line version of install that expects no user feedback in any form. Usually this is trivial for the developer to do.
Title: Re: Mozturbo help
Post by: David Graser on May 12, 2019, 04:56:04 pm
I like it.
Then I'll actually complete it. One of the missing items is an icon (*.ICO, all classic sizes) for a InsTurbo.EXE, for one because I don't want to grab Graser's turbo image an put that on top of some boring public domain installer icon.

The concept is unchanged, one InsTurbo.EXE for all members of the Mozilla family. Most of the extra "work" is related to managing the UI correctly to guide the user, like disabling "load high"-settings when the product is the legacy MOZILLA.EXE. And possibly to changing some of the RexxUtil calls to matching VX-REXX alternatives.

The only extra requirement is the usual VROBJ.DLL, which is shipped with e.g. eCS 1.x. To maintain and build it Watcom VX-REXX is required, and optionally PACKVXRX (lxLite for VX-REXX apps). The same DLL lists still can be found in a single Rexx source file, albeit with the VX-REXX IDE you'd probably edit nothing but the section "Init".

No attached sample source code and EXE yet, because it's unfinished.

I created a generic turbo.ico and a PNG that can be included with the install.  The same icon could be used for instTurbo.exe and the Turbo.exe.  Done in 8 bit since Dave mentioned problems in earlier posts about problems with the 24 bit icons and Mozilla.

Went ahead and made a separate install turbo icon.
Title: Re: Mozturbo help
Post by: xynixme on May 13, 2019, 12:20:41 am
Yes, that turbo-image. Brilliant; thanks. It's now an embedded resource, so a.o. no more default icon in the top left corner of the window of the PM executable. I'll include the PNG version in a "fully functional sample version ZIP file", which still is "under construction".
Title: Re: Mozturbo help
Post by: xynixme on May 13, 2019, 12:50:30 am
Oh, and I'll assign the Turbo.ICO file to WPS Turbo objects created by the installer (WPS setup string: ICONFILE=...), unless Dave links an own icon resource to the *TURBO.EXEs. I can imagine he won't, if recompiling that C source code preferably remains as simple as possible.
Title: Re: Mozturbo help
Post by: Dave Yeo on May 13, 2019, 02:55:20 am
Yes, no plans to add any resources.
Neil has a good point about automated installs.
Title: Re: Mozturbo help
Post by: xynixme on May 13, 2019, 11:02:14 am
One more *.ICO file (and matching *.PNG file) required then: for the "unload" object. I'd propose a turbo unit without a flame and with the small red arrow pointing to 0, or a turbo unit with e.g. a red cross, off-switch or some stop-sign.
Title: Re: Mozturbo help
Post by: David Graser on May 13, 2019, 12:21:51 pm
One more *.ICO file (and matching *.PNG file) required then: for the "unload" object. I'd propose a turbo unit without a flame and with the small red arrow pointing to 0, or a turbo unit with e.g. a red cross, off-switch or some stop-sign.
Title: Re: Mozturbo help
Post by: xynixme on May 13, 2019, 12:26:38 pm
For automated install users, it's nice to provide a command line version of install that expects no user feedback in any form. Usually this is trivial for the developer to do.
Not fully possible, because I have no way to assign nor test 80x08 icons, and the installer requires a third-party utility.

An alternative, which I'm using, for a BEEP and return code 7 is to optionally repackage FF/SM/TB with DLLs marked as > 512 MiB and with a matching *TURBO.EXE, to distribute other qualifying LIBPATH DLLs marked as > 512 MiB, and to create the 3 WPS programs objects with an own SysCreateObject() install script in folders of your own choice.

Presumably the install works, so e.g. checking DLLs shouldn't have an added value.

A recent change is that more DLLs (NSS/NSPR) were added to a list of "approved" DLLs. Such an event may be less trivial, compared to shipping a more generic update of files (e.g. a CMD batch file which just successfully marks NSPR4.DLL as > 512 MiB). Actually my next "internal FixPak" includes doing just that, without updating the whole packages.

It could introduce an own standard EA too, to avoid that an automated installers marks the same DLL twice. If all DLLs are already marked, themn an automated installer shouldn't beep when HIGHMEM.EXE is missing.

Finally members of the product family (FF/Mozilla/SM/TB) itself have no guaranteed automated installer. I could order a virtual system with eCS 1.2 NL, which typically will only include Mozilla with an outdated MOZTURBO.EXE (i.e. not Dave's) which may produce SYS2070s. So even then you may have to update MOZTURBO.EXE afterwards.

There is no need to advocate an automated install option as such, trivial or not, and in general it's worth being kept in mind, but I'm not sure what the added value is when an alternative is to distribute fully updated DLL files and to create 3 WPS objects by yourself (excluding the installer/uninstaller). For a single install the installer has an added value, due to checks, taking care of read-only settings, marking DLLs, and so on.

Indeed changing the default WPUrl browser settings via changing OS2.INI does touch the system, but even then it may be better to write an own script which sets those probably fixed settings (fixed per browser) in an early phase of a full install. Because it may not be the only "fix".

Nevertheless I can change a generic default browser selector to include support for arguments, so that becomes an automated installer. If so, with or without showing an error message (file not found, directory not found)?

In this case I'm not sure what the added value is. You'll have full control when you ship DLLs already marked as > 512 MiB, which almost reduces the added value of the installer to a common WPS object creator. Which has to be executed in the right environment. With an own alternative you can even move the *TURBO.EXE files to an own directory, without Dave's (implied) defaults (like the *TURBO.EXE in the main directory of the Mozilla product, and no support for the turbo's directory parameter). Point taken, but are you sure that an automated install option has an added value compared to the alternative? In this case you can distribute repackaged marked files, and you may have to append 2 SysCreateObject()-lines, 1 SysCreateShadow()-line and 2 SysIni()-lines to an own Rexx install script.

I'm not using automated installers that frequently myself, but I cannot recall any glorified WPINSTALL.CMD which requires a third-party product (ABOVE512.EXE or HIGHMEM.EXE) anyway, but only during the install.The installer could try to find ABOVE512.EXE or HIGHMEM.EXE, which may take a long while when a customer has 26 drives including a few slow, TiB-sized ones. If you ship patched DLLs, then you can always skip this too. Then it's always just a glorified WPINSTALL.CMD.

In the case of a single user with a limited number of old or new installs the added value is more clear. Once you got it right, it's quite easy to copy and reproduce such a working and verified install.
Title: Re: Mozturbo help
Post by: xynixme on May 13, 2019, 12:31:58 pm
Wow, that's fast! [insert your own turbo-joke here]... I've got all generic Turbo icon files I need now.
Title: Re: Mozturbo help
Post by: xynixme on May 13, 2019, 12:59:48 pm
FTR, regarding a .TYPE EA for marked DLLs: presumably both utilities, ABOVE512.EXE and HIGHMEM.EXE are open sourced. I'm not going to do it because of a.o. RPM being involved, but the programming community could introduce a standard LOADHIGH file .TYPE EA so other apps can detect that a DLL is marked by such an utility, without having to read the DLL file. And the DLL file with such an EA may possibly be linked to the tool with a undo-parameter (ASSOCTYPE-setting of its WPProgram object), and the icon of that utility.

Code: [Select]
/* Virtual, sample code to set intentionally ugly LoadDLLinMemoryAbove512MiBAllowed .TYPE EA for FOO.DLL */
CALL RxFuncAdd 'SysPutEA','RexxUtil','SysPutEA'

type='LoadDLLinMemoryAbove512MiBAllowed'
ea='DFFF00000100FDFF'x||D2C(Length(type))||'00'x||type

CALL SysPutEA 'FOO.DLL', '.TYPE', ea

EXIT

If both tools would set (and unset) the same .TYPE EA, then it will become a de facto standard for DLLs with a new mark. There is no need to mark the same DLL twice, and in case of possible new problems in the future a new app can warn that an earlier marked DLL can cause problems, without having to read bits of DLL files.

FWIW, but e.g. InsTurbo.EXE can skip the utility checks and changes when all DLLs, including read-only DLLs, are already marked.
Title: Re: Mozturbo help
Post by: David Graser on May 13, 2019, 01:07:33 pm
Wow, that's fast! [insert your own turbo-joke here]... I've got all generic Turbo icon files I need now.

Here is another unload possible icon.
Title: Re: Mozturbo help
Post by: xynixme on May 13, 2019, 01:15:44 pm
Here is another unload possible icon.
I'll use this creative one, because differences are even more clear. If there will be documentation written by me, then I'll credit you unless you don't want that.
Title: Re: Mozturbo help
Post by: David Graser on May 13, 2019, 01:26:40 pm
Here is another unload possible icon.
I'll use this creative one, because differences are even more clear. If there will be documentation written by me, then I'll credit you unless you don't want that.

Andre, do what you want. It does not matter to me if I get credit or not.  I appreciate the effort you have put in to make the browser experience better.
Title: Re: Mozturbo help
Post by: xynixme on May 13, 2019, 02:02:51 pm
Probably no credits then. I'm not even going to credit myself, because what I'm doing is nothing compared to having to deal with a wife not being able to use the phone until yet another 50+ MiB 1200/75 bps modem upload is finished. :-)

It'll be "fully functional, donated sample code".

e.g. InsTurbo.EXE can skip the utility checks and changes when all DLLs, including read-only DLLs, are already marked.
FWIW: setting such an EA could be restricted to the -c parameter of both utilities only. I guess it won't be perfect, but then "load high" was set correctly at least once...

And I've considered an uninstall option too, if VROBJ.DLL's relevant function works as expected (with REXXUTIL.DLL you may have to try to copy the object to <WP_NOWHERE> to confirm the source object exists), but all an uninstall will do is deleting the 2 WPS objects (and an implied deletion of the <WP_START> WPShadow object) per installed product. Uninstalling won't, for example, unmark the DLLs because a previous load high-setting is unrecorded and/or unknown.
Title: Re: Mozturbo help
Post by: xynixme on May 14, 2019, 05:29:02 pm
1. The load-high (BEGIN-)LIBPATH functionality for NSS/NSPR support can be used for other DLLs too, like HUNSPEL0.DLL. Perhaps even better, AFAICT: if there's no HUNSPEL0.DLL, then don't try to load "required" HUNSPEL0.DLL functions. As stated earlier, I must have this DLL file installed, but I don't have to install any dictionaries. In my case the memory-world would be a better place without a HUNSPEL0.DLL.

2. I'll always save INSTURBO80.PNG, TURBO*.ICO and TURBO*80.PNG icon files in the same CHROME\ICONS\DEFAULT subdirectory as SM (and maybe TB), even when the product is Mozilla or Firefox. A clean main directory-policy, and no introduction of a second directory with icon files an user can use. The *.ICO files are used but none of the icon files is a requirement, so an user can decide to only install InsTurbo.EXE.

3. I'll print a warning when the size of MOZTURBO.EXE is 2371 bytes, i.e. (probably) IBM's and (probably) not yours. All MOZTURBO.EXEs don't support the turbo functionality, so to me prevention of SYS2070s is the only main difference.

4. It, or a sneak preview, may be ready before Warpstock Europe. ;) So far my concept keynote speech for someone is "A Turbo objects installer, a DLL high-loader and a default browser changer... Turbo objects! Load DLLs high! Are you getting it? These are not three separate apps. This is one app. And we are calling it InsTurbo. Here it is." :)
Title: Re: Mozturbo help
Post by: Eugene Tucker on May 16, 2019, 03:02:19 pm
Hey on my laptop insturbo.cmd came back with a missing dll called freebl3.dll does anyone know what Yum package has that particular Dll? It worked perfectly fine on my desktop.
Title: Re: Mozturbo help
Post by: Pete on May 16, 2019, 05:24:34 pm
Hi Eugene

If you start ANPM and then click Find, select file and enter the filename you can quickly identify the package required.

In this case it seems to be in nss-softokn-feebl which I see should be available from netlabs-rel.


Regards

Pete
Title: Re: Mozturbo help
Post by: Dave Yeo on May 16, 2019, 05:47:00 pm
It'll be included with the next release. I've reverted to the intree NSS and NSPR to allow updating the certificates and pins for security purposes.
Title: Re: Mozturbo help
Post by: xynixme on May 16, 2019, 07:21:23 pm
0. Albeit there' s no need to move the NSS/NSPR DLLs to the tree of the Mozilla product w.r.t. InsTurbo, as long as it's installed in a CONFIG.SYS LIBPATH directory. If your install doesn't need it, then you can also copy any file to a missing DLL ("DIR > missing.DLL") if ABOVE512.EXE or HIGHMEM.EXE will just report an error ("Not a valid LX DLL") and continue. If your FF/SM/TB doesn't require a DLL, then you don't have to install it to please nothing but InsTurbo.

1. Perhaps a missing DLL also means a version of FF/SM/TB which is too old to be a default browser, because BEGINLIBPATH (not supported by WPUrl) is an implied recommended requirement then? If so, then the error text could be changed to e.g. "DLL(s) not found, or FF/SM/TB is too old (because apparently it doesn't require a newer DLL)".

2. Can a missing DLL become a warning instead of an error? I guess this depends on what you want to support. As such I have no problem with the fact that InsTurbo checks the setup, with a DLL-related error instead of a DLL-related warning. That was and is the current approach.

3. I've attached a first sample file, for any MOZILLA.EXE (and, optionally, MOZTURBO.EXE) only. My copy of Mozilla has a chrome\icons\default directory too, but in the case of FF the files can be moved to the directory of FF too. The file INSTURBO.ERR is a reserved file name, which may be deleted by INSTURBO.EXE. VROBJ.DLL is an usual, obvious requirement.

Unzip it in an empty directory, and execute INSTURBO.EXE

If there's any reported missing *.EXE file, then execute e.g. "DIR > MOZILLA.EXE" or "DIR > MOZTURBO.EXE" at the prompt and try again. Or copy a real *.EXE file. The *.EXE files just have to exist. ABOVE512.EXE or HIGHMEM.EXE aren't involved (no MOZILLA.EXE DLLs compiled and supported by Dave Yeo).

It may create the 3 WPS objects (2 at desktop, 1 in startup folder), and it may change OS2.INI even when the current WPUrl defaults are (a different) MOZILLA.EXE and/or working directory. If you don't want OS2.INI changes, then don't answer "Yes" during the confirmation of that setting.

When done, delete the 3 WPS objects, all files in the former empty directory (RM * -R), and restore the previous OS2.INI WPUrl default settings. By restoring OS2.INI, or by executing MOZTURBO.EXE in the directory of the old MOZILLA.EXE default browser.

There's no need to perform a full test, but of course any possible issue can be reported.
Title: Re: Mozturbo help
Post by: David Graser on May 16, 2019, 10:35:18 pm
I noticed there is an updated above512

https://ecsoft2.org/above512
Title: Re: Mozturbo help
Post by: xynixme on May 16, 2019, 10:48:35 pm
Only released because of IEEE 1541 (https://en.wikipedia.org/wiki/IEEE_1541-2002) (KiB, MiB). As such an upgrade is not required. Changes since v0.01b (http://hobbes.nmsu.edu/download/pub/os2/dev/util/above512_001b.zip) shouldn't be relevant.
Title: Re: Mozturbo help
Post by: xynixme on May 17, 2019, 01:28:23 am
no plans to add any resources.
FTR, this is a programming subforum: if a beginner wants to add an existing GLOBE.ICO file as an icon resource to some quickly ported text-mode HELLOWORLD.EXE for Unix without an embedded OS/2 icon, then that may be as easy as typing:

Code: [Select]
ECHO ICON 1 GLOBE.ICO > HELLOWORLD.RC
RC HELLOWORLD.RC HELLOWORLD.EXE

Distributed source files will be slightly more complicated. No longer just the simplest HELLOWORLD.C file, but also a few extra files (*.ICO, *.RC, and optionally a *.MAK or a *.CMD file to build the EXE and to delete the *.OBJ and *.RES file).
Title: Re: Mozturbo help
Post by: xynixme on May 17, 2019, 10:11:03 am
1. Due to an earlier RFC of Senior Management a missing DLL still is an error instead of a warning.

2. Dave, it's possible to replace the third-party > 512 MiB text-mode utilities by (yet) a(nother) DLL, if you don't mind having to include a InsTurbo.DLL file. Then the level of control and UI will improve, because now the user will have to check (duh!) the output. It's also easier to unlock DLLs and strictly use -c only, by using 1 known first-party utility instead of any of 2 third-party utilities. Processing may take a little bit longer, if you want to make sure that only -c is in use. Now it just executes e.g. "HIGHMEM.EXE -c XUL.DLL", and assumes that it'll work and that it's the right setting. A hit & hope strategy, which should typically work.

Do you want a (ABOVE512-based) Rexx DLL instead of using HIGHMEM.EXE or ABOVE512.EXE? If so, then a rather small, required InsTurbo.DLL file would appear in the main directory of the earlier MOZILLA.EXE preview, but the output dialog will no longer look like the attached "Please README.1ST and click here to accept the Terms & Conditions"-image.
Title: Re: Mozturbo help
Post by: xynixme on May 30, 2019, 08:34:18 pm
Code: [Select]
/* OLD */
      arguments=dll.i '-c'
      IF Translate(FileSpec('N',high))='HIGHMEM.EXE' THEN arguments='-c' dll.i
      '@'||high arguments

Oops. A simplification during developments, and an usual Rexx code improvement related to supporting spaces in JFS/HPFS paths (of 8.3 DLL file names):

Code: [Select]
/* NEW (unverified) */

      '@"'||high||'" -c "'||dll.i||'"'

Above512 supports the same order of arguments, so there no longer is a need to reverse the order of the arguments.

Rexx doesn't understand the line with CMD.EXE's @, which will be send to the shell then. E.g. @"C:\MY TEST DIR\High Mem\HIGHMEM.EXE" "M:\Y TEST DIR\thunderbird\XUL.DLL" instead of @C:\MY TEST DIR\High Mem\HIGHMEM.EXE M:\Y TEST DIR\thunderbird\XUL.DLL
Title: Re: Mozturbo help
Post by: xynixme on June 01, 2019, 03:10:56 pm
Unrelated, but possibly relevant for users: "FFTURBO.EXE -u" to unload DLLs first may cause a TRAP. UNLOCKing individual DLLs works (not tested with ABOVE512.EXE's unlock parameter).
Title: Re: Mozturbo help
Post by: Dave Yeo on June 01, 2019, 05:09:06 pm
Unrelated, but possibly relevant for users: "FFTURBO.EXE -u" to unload DLLs first may cause a TRAP. UNLOCKing individual DLLs works (not tested with ABOVE512.EXE's unlock parameter).

If the DLLs were loaded high, this is likely a kernel issue.
Title: Re: Mozturbo help
Post by: xynixme on June 05, 2019, 01:53:18 pm
Quote from: Dave Yeo
Due to this there is also a new release of mozturbo

Also some icons, thanks to David Graser. The icons have to be associated manually for now.
0. Does TB have that chrome\icons\default subdirectory with icon files too (FF doesn't)?

1. In v0.7 there's no MOZTURBO.EXE. The installer supports the whole family.

2. In v0.7 there's no MOZTURBO.ICO.

3. It may be worth considering a MozTurbo product release per package (FF/MOZ/SM/TB). Each with shared files, like the README and the installer. To avoid unneeded EXE and ICO files, and to not introduce a chrome/icons/default subdirectory for FF. The installer does support both directories as a home of its icon files, and I guess an existing chrome/icons/default subdirectory is a good place for a xxTURBO.ICO file and a xTURBO_unloadl.ICO file.

4. The color of the turbo has changed. Then I'll also need a MOZTURBO.ICO (same as #2), and perhaps 4 icons in a crate for the "xxTURBO -u" unload objects.

5. The new color of the v0.7 turbo ("gold") no longer matches the color of the Turbo installer icon ("silver").

6. The installer can support a Turbo icon per product, when all of those files are available. Typically I've got 2 turbo's in use, so an icon per product in the folder <WP_START) does make some sense. To change this, I need that MOZTURBO.ICO.

7. MozTurbo v0.7 doesn't include the PNG version of the distributed ICO files.

The attached image shows the new "color problem", introduced by the distributed v0.7 icons.
Title: Re: Mozturbo help
Post by: David Graser on June 06, 2019, 12:08:02 am
Quote from: Dave Yeo
Due to this there is also a new release of mozturbo

Also some icons, thanks to David Graser. The icons have to be associated manually for now.
0. Does TB have that chrome\icons\default subdirectory with icon files too (FF doesn't)?

1. In v0.7 there's no MOZTURBO.EXE. The installer supports the whole family.

2. In v0.7 there's no MOZTURBO.ICO.

3. It may be worth considering a MozTurbo product release per package (FF/MOZ/SM/TB). Each with shared files, like the README and the installer. To avoid unneeded EXE and ICO files, and to not introduce a chrome/icons/default subdirectory for FF. The installer does support both directories as a home of its icon files, and I guess an existing chrome/icons/default subdirectory is a good place for a xxTURBO.ICO file and a xTURBO_unloadl.ICO file.

4. The color of the turbo has changed. Then I'll also need a MOZTURBO.ICO (same as #2), and perhaps 4 icons in a crate for the "xxTURBO -u" unload objects.

5. The new color of the v0.7 turbo ("gold") no longer matches the color of the Turbo installer icon ("silver").

6. The installer can support a Turbo icon per product, when all of those files are available. Typically I've got 2 turbo's in use, so an icon per product in the folder <WP_START) does make some sense. To change this, I need that MOZTURBO.ICO.

7. MozTurbo v0.7 doesn't include the PNG version of the distributed ICO files.

The attached image shows the new "color problem", introduced by the distributed v0.7 icons.

some new pngs
Title: Re: Mozturbo help
Post by: Dave Yeo on June 06, 2019, 04:06:16 am
Quote from: Dave Yeo
Due to this there is also a new release of mozturbo

Also some icons, thanks to David Graser. The icons have to be associated manually for now.
0. Does TB have that chrome\icons\default subdirectory with icon files too (FF doesn't)?

Yes, it does.

Quote
1. In v0.7 there's no MOZTURBO.EXE. The installer supports the whole family.

2. In v0.7 there's no MOZTURBO.ICO.

Don't have the source for mozturbo.exe in my tree and which mozturbo? I have about half a dozen here :) I don't think many are using mozilla.exe of any version and likewise for Seamonkey v1.x. Anyone who is already has the mozturbo.exe for which ever version they're using.
I should update the documentation to reflect that it is supported though.
I lost track of the icons spread across different threads and didn't notice it. Could add it for next release.

Quote
3. It may be worth considering a MozTurbo product release per package (FF/MOZ/SM/TB). Each with shared files, like the README and the installer. To avoid unneeded EXE and ICO files, and to not introduce a chrome/icons/default subdirectory for FF. The installer does support both directories as a home of its icon files, and I guess an existing chrome/icons/default subdirectory is a good place for a xxTURBO.ICO file and a xTURBO_unloadl.ICO file.

It's a consideration that needs thought. I figure most people already have at least a couple of moz apps installed.

Quote
4. The color of the turbo has changed. Then I'll also need a MOZTURBO.ICO (same as #2), and perhaps 4 icons in a crate for the "xxTURBO -u" unload objects.

5. The new color of the v0.7 turbo ("gold") no longer matches the color of the Turbo installer icon ("silver").

Once again, I think I lost track of which icons I downloaded, sorry.

Quote
6. The installer can support a Turbo icon per product, when all of those files are available. Typically I've got 2 turbo's in use, so an icon per product in the folder <WP_START) does make some sense. To change this, I need that MOZTURBO.ICO.

I'll see about finding the icons and perhaps adding an icon package or a version 0.8

Quote
7. MozTurbo v0.7 doesn't include the PNG version of the distributed ICO files.

I'll add a PNG package starting with David's pngs that he just posted.

Quote
The attached image shows the new "color problem", introduced by the distributed v0.7 icons.

:( Need to find the right icons.
Title: Re: Mozturbo help
Post by: David Graser on June 06, 2019, 04:10:37 am
Dave,

I am working on some new OS/2 icons for those PNGs.

Mozturbo - Is it a turbo with a mozilla icon?  Is that is what is needed?
Title: Re: Mozturbo help
Post by: Dave Yeo on June 06, 2019, 05:52:08 am
Dave,

I am working on some new OS/2 icons for those PNGs.

Mozturbo - Is it a turbo with a mozilla icon?  Is that is what is needed?

I believe that is what André is talking about.
Thanks
Title: Re: Mozturbo help
Post by: David Graser on June 06, 2019, 07:02:01 am
Dave,

I am working on some new OS/2 icons for those PNGs.

Mozturbo - Is it a turbo with a mozilla icon?  Is that is what is needed?

I believe that is what André is talking about.
Thanks

PNGs
Title: Re: Mozturbo help
Post by: xynixme on June 12, 2019, 03:56:41 pm
1. The UI of the PM version, unlike the CMD file, now supports entering any base directory of the third-party utility, e.g.

Code: [Select]
D:
D:\
D:\TOOLS
D:\TOOLS\NON-PATH\
D:\TOOLS\NON-PATH\ABOVE512
D:\TOOLS\NON-PATH\MEM\HIGHMEM\

So the user doesn't always have to type the full directory path anymore, in case the user decided to type the path. Of course the longer the typed path, the faster any qualifying utility will be found. Other methods are searching or selecting the utility.

2. If the color of the metal changes to silver again (fine with me, easier for me and probably easier for David) compared with the v0.7 turbo distribution, then I'll look at the full collection of new icons later. The installer supports all TURBO.EXEs compiled by Dave indeed, so MOZTURBO.EXE for Mozilla belongs to the family too. His MOZTURBO.EXE solves a SYS2070 error. The main difference is that loading DLLs high is not supported then, but users still can install that turbo and/or change a default WPUrl setting to set or restore Mozilla as the default WPUrl browser.

For me the only minor change is a turbo icon/PNG per product (MOZ/FF/SM/TB) and a turbo unload icon/PNG per product, instead of a generic icon.

3. The *TURBO.ICO of the *TURBO.EXEs can be an embedded resource (MAKEFILE, RC.EXE-line), but I still assume Dave won't do that.

4. D&D. If the user should be able to drop ABOVE512.EXE or HIGHMEM.EXE, then I need a 40x40'ish OS/2 bitmap artwork for the drop zone, with a maximum of 256 colors. Not much larger. This is NOT a request, but if creative juices come up with a really great design then I'm willing to use it. I guess it should be clear that it's a drop zone. The attached "under construction" artwork roughly shows the area and context. "Search..." the utility, or drop it. I suggest to NOT support drag & drop, unless a design is really, really great. The user can drop any file object, so a design may be as generic as a file magnet or file whirlpool. Please do NOT design anything unless those juices come up with a really, really great design, because supporting D&D is overdoing it a little bit. So this really is NOT a request. I'm just willing to conceed if a design is a winner, which clearly indicates there's a drop zone.
Title: Re: Mozturbo help
Post by: xynixme on June 12, 2019, 04:59:38 pm
I'll attach a full sample distribution file for Mozilla only (distribution per product), with the latest silver icon status per product (i.e. just the Mozilla browser, in this case).

MOZILLA.EXE and all text files are bogus, and I had to rename Dave Yeo's file LICENSE to LICENSE.TXT because there already is a LICENSE file in my original x:\PROGRAMS\MOZILLA directory.

Normally the user has to unzip this sample package in the directory of MOZILLA.EXE, but for a sneak preview you can unzip it in an empty directory.

Using any PNG file is optional. Users may delete those PNG files. If the user doesn't want the .\chrome\icons\default\*TURBO*.ICO files in that Mozilla directory, then the user can move those *TURBO*.ICO files to the directory of MOZILLA.EXE. A clean main directory-policy, or a clean chrome\icons\default directory-policy.

Do not use this sneak preview package, with the latest icons by David Graser, for anything else. It's not retested, and it's incomplete. In theory it should work for Mozilla (no DLLs loaded high, no turbo fuctionality).

In the end it can be distributed as a single package, probably with too many icon files (for each product) and Firefox has no icons subdirectory. This sample is a virtual distribution per product, i.e. Mozilla.

The only icons change was replacing the generic turbo (un)load icons by - in this case - Mozilla turbo (un)load icons. I will not change the CMD file accordingly.
Title: Re: Mozturbo help
Post by: xynixme on June 12, 2019, 06:16:53 pm
FTR I'll attach the full latest collection of renamed (silver) artwork in actual use, without having looked at EAs, and so on. A few of the file names are identical to the ones in the v0.7 distribution. From my point of view the collection is complete.
Title: Re: Mozturbo help
Post by: xynixme on June 12, 2019, 06:37:24 pm
Don't have the source for mozturbo.exe in my tree and which mozturbo? I have about half a dozen here :) I don't think many are using mozilla.exe of any version and likewise for Seamonkey v1.x. Anyone who is already has the mozturbo.exe for which ever version they're using.

Mozilla with an outdated, but by default unused, MOZTURBO.EXE, is probably the default browser for many users of eCS. I, for one, am using whatever the default is, with NETSCAPE.EXE being the single downgraded explicit exception. For local HTML files.

I'll attach the one without SYS2070, including source. Not sure if you distributed it this way, or that I did append the source file to the package. It is a member of the family, and there's probably no reason to not promote its MOZTUBO.EXE.

But ... InsTurbo.EXE will a show a warning when its MOZTURBO.EXE has a known size of 2371 bytes. A warning, because the user can upgrade MOZTURBO.EXE afterwards, and the old MOZTURBO.EXE will probably work often. Often, but not always (SYS2070s).

For InsTurbo it's a member of the family. The installer could support all known browsers, but restrictions are (A) being a member of the Mozilla family of products and (B) the availability of a version of *TURBO.EXE compiled by you.

I guess a main use of its support may be the standardized ability to downgrade to a MOZILLA.EXE browser, and it does promote the use of *TURBO.EXEs in general. Hence the earlier choice to not exclude the old MOZILLA.EXE. Excluding it later isn't that hard, because it intentionally is the only product abbreviation with a length of 3 characters.
Title: Re: Mozturbo help
Post by: xynixme on June 12, 2019, 06:55:32 pm
It's a consideration that needs thought. I figure most people already have at least a couple of moz apps installed.

I'll add a PNG package starting with David's pngs that he just posted.
Quite likely indeed. Here 3 installed per system (Mozilla, FF and SM), with 2 modern turbo's with settings which make the most sense. Or least non-sense. MOZTURBO.EXE always is one of the TURBOs. I still have to look at a few possible optimizations or changes.

I've compiled a package in actual by InsTurbo.EXE righ now, which includes your v0.7 file names FFTURBO.ICO, SMTURBO.ICO and TBTURBO.ICO. And matching *80.PNG file names.

I've decided to use the existing subdirectory with icons, which only FF doesn't have then, but as stated earlier the *.ICO files can be moved to the directory of teh main EXE too. For InsTurbo.EXE the PNG files play no role, so those files can be saved anywhere.

So far the goal remains that the user can unzip a Turbo package in the main directory, with a single InsTurbo.EXE. So far the only possible conflict is an existing LICENSE in MOZILLA.EXE's directory, and FF doesn't have that .\chrome directory structure with icons. No big deals at all. Each distribution method has a disadvantage.
Title: Re: Mozturbo help
Post by: xynixme on June 14, 2019, 12:53:23 pm
Automated installers, because a v0.8 of InsTurbo.EXE should be released soon (via Dave Yeo):

InsTurbo.EXE doesn't supports all DLLs which should be save to load high. HUNSPEL0.DLL, for example. So you will have to mark and repackage DLLs anyway, and mark those DLLs again after a third-party upgrade via another installer.

The user/customer/buyer has to execute InsTurbo.EXE after each unautomated upgrade of the Mozilla product, to mark the DLLs of the product again. This may require installing a common WPProgram object for InsTurbo.EXE.

For managed systems the manager can execute the installer once, per sale or per upgrade of the Mozilla product, and distribute a repackaged Mozilla product (with e.g. marked DLLs and a MozTurbo package). This matches the distribution method of a marked HUNSPEL0.DLL and other third-party DLLs, which should be okay to mark. The WPProgram objects and WPUrl settings aren't anything special, i.e. no hidden tricks, so SysIni() for WPUrl objects and SysCreateObject()/SysCreateShadow() can be used in any other own simple Rexx install script.

Missing Mozilla DLLs are reported (as an error, as requested), so even closed source it's possible to find out which DLLs will be marked.

In general it's good to keep an automated install in mind. In this case there's probably no or little added value. An upgrade of any of the non-legacy Mozilla product would require an automated install too, to mark the distributed DLLs as high again.

New is that a missing SysBootDrive() function should come down to not scanning the LIBPATH line in CONFIG.SYS for DLLs. If needed, one can distribute an ancient version of REXXUTIL.DLL  Then don't move required, shared Mozilla DLLs to the LIBPATH. I could insert old Rexx code to find the boot drive anyway, but I assume an outdated REXXUTIL.DLL and other system DLLs can always be upgraded, regardless of the language of the OS. It's recommended to not move DLLs in the base directory of the Mozilla product to the LIBPATH when the managed system has an old version of REXXUTIL.DLL. A test, for users of an old version of OS/2 (probably older than the Y2K FixPak and/or modern APIs):

Code: [Select]
/* BootTest.CMD, for the oldest versions of OS/2 with an installed Mozilla browser (not tested) */

CALL RxFuncAdd 'SysLoadFuncs','RexxUtil','SysLoadFuncs'
CALL SysLoadFuncs

/* All REXXUTIL.DLL functions for Rexx loaded; next test if SysBootDrive() is one of those functions */

IF RxFuncQuery('SysBootDrive')=1 THEN DO
   SAY 'Please do not move Mozilla DLLs to the LIBPATH, or perhaps upgrade components of your system first.'
   EXIT
END

SAY 'SysBootDrive() is available, as expected. The boot drive is:' SysBootDrive()

EXIT

Please note that DLLs loadable above 512 MiB require a rather modern kernel too, so a missing SysBootDrive() function is not that likely. Typically REXXUTIL.DLL will have to be downgraded, which is extremely unlikely at the moment. InsTurbo.EXE supports that, but then you shouldn't move Mozilla DLLs to a LIBPATH directory.

I have no solution for non-high DLLs installed/upgraded by other installers later, like HUNSPEL0.DLL and other large DLL files, or an upgrade of the Mozilla product. That could require a ".LOADHIGH" EA, and Mozilla products checking the DLLs and matching EAs.
Title: Re: Mozturbo help
Post by: Neil Waldhauer on June 14, 2019, 03:31:39 pm
Only a few automated installers fail to support automated installation. Is it really that hard?

I'm finding that the Bitwise Firefox build is quite a bit more stable here. I'm guessing that depends on what web pages we visit. For the pages I visit, Bitwise Firefox lasts about 10x longer than Nightly. Neither one lasts very long.

Title: Re: Mozturbo help
Post by: Dave Yeo on June 16, 2019, 06:31:57 am
@André, sorry for not being responsive, busy with other stuff, I'll revisit this soon I hope.

@Neil, Was it the SUa1 release you had problems with? It had a bad bug that is fixed in SUa2. The original Pentium M also seems quite stable.
Title: Re: Mozturbo help
Post by: Neil Waldhauer on June 16, 2019, 03:32:04 pm
@Neil, Was it the SUa1 release you had problems with? It had a bad bug that is fixed in SUa2. The original Pentium M also seems quite stable.

Checking back, yes it was. I'll try SUa2. I don't judge stability quickly, and I doubt any report that does.

(Edit: I've tried it for a few days now, and SUa2 works better for me than GA2 from Bitwise.)
Title: Re: Mozturbo help
Post by: xynixme on June 17, 2019, 12:30:39 am
being responsive
Don't hurry. I've sent a support file, and I'll send a "final" test version later today. You may have to check your spam filter.

The test version doesn't execute ABOVE512.EXE or HIGHMEM.EXE with the -c parameter, so ABOVE512.EXE just displays the current settings of the DLLs without changing anything. Objects and WPUrl settings can and will be changed.

I still have to "fully" test it, You don't have to, but it's possible. I'll suggest several distributions; InsTurbo.EXE is always the same.
Title: Re: Mozturbo help
Post by: xynixme on June 17, 2019, 01:36:18 am
@Dave: your e-mail "service" provider deleted my final *.PIZ test release, and so did I. I'll perform the tests, and just upload the distributions I prefer later.
Title: Re: Mozturbo help
Post by: David Graser on June 17, 2019, 01:55:00 am
@Dave: your e-mail "service" provider deleted my final *.PIZ test release, and so did I. I'll perform the tests, and just upload the distributions I prefer later.

You also have to be careful.  A lot of email is now routed to the SPAM folder whether you wanted it to do so or not.  I have gotten into the habit of checking my SPAM folder before I delete its contents.  I don't know how may times now that email I had been expecting had been routed to my SPAM folder.
Title: Re: Mozturbo help
Post by: Dave Yeo on June 17, 2019, 02:54:00 am
@André, not in your sent folder? Googles bad at bouncing attachments. Alternative is daveryeo at telus net though I no longer have access to its spam folder nor can I change a size limit I put on it some time back and forget what the limit is, couple of MBs IIRC.
@David, yes I make it a habit to check the spam folder every few days. There's people who use less trusted servers such as Yahoo that always get routed to spam.
Title: Re: Mozturbo help
Post by: xynixme on June 20, 2019, 10:43:14 am
I've uploaded recompiled test and sample distributions for Dave Yeo @ tripod.com, for a next MozTurbo release. The main difference is related to where the - optional - artwork is saved (1 generic InsTurbo.PNG file, and 4 load/unload ICO/PNG files per product).

Basicly it's an improved InsTurbo.CMD with David Graser's artworks and a PM UI, which matches the RFCs and requested specs here, and supports the whole latest Turbo family of Mozilla products.

If AVOVE512.EXE nor HIGHMEM.EXE were found in a PATH directory, then the PM UI is used to offer more ways to find it (search, select, type a part of' the full path).

Automated install: N/A. Distribute patched and repackaged files, and all users may have to remark DLLs as high after an upgrade of the Mozilla product.

Of course the matching VX-REXX source code was provided as well. I've saved a copy here too.
Title: Re: Mozturbo help
Post by: xynixme on June 20, 2019, 12:03:44 pm
Copy "here" = @ home. Not @ os2world.com; it's a test release.

BTW, if users want to see the list of supported DLLs, then after a release they can copy InsTurbo.EXE and the required executable of the Mozilla product (FF/SM/TB only) to an empty directory. Or e.g. "DIR > SEAMONKEY.EXE". Then InsTurbo will show an error message with all supported and required DLLs (compiled by Dave Yeo; no third-party DLLs included at the moment) which can be marked as "load high".

If someone wants to port InsTurbo.EXE (VX-REXX) to a WarpIN Rexx script later, then of course that's fine with me. Releasing the source code is not a requirement of me, but even a remake wouldn't be that hard. InsTurbo.EXE doesn't do anything special or complicated.
Title: Re: Mozturbo help
Post by: xynixme on June 21, 2019, 08:50:09 am
Alternative is someone at somewhere net though I no longer have access to its spam folder
I'll use this for a.o. a cosmetic EXE update today.
Title: Re: Mozturbo help
Post by: xynixme on June 23, 2019, 01:00:32 pm
Is it possible, by using third-party C code, to detect that the user may have forgotten to unload the turbo? A possible warning. If so, how, and it has to be quite easy because it would just be an alternative for R'ing the Turbo Unload-section of TFM.

The starting point is that the third-party C code knows that the Mozilla product isn't the legacy browser, and that the product may be FF/SM/TB with a matching and existing xxTURBO.EXE file.

A possible warning, displayed once or twice, because e.g. a SUITE.DLL of a different SEAMONKEY.EXE and/or a different SMTURBO.EXE may be loaded, and the detection doesn't have to be perfect then. Probably a rare event, but Neil could be using a FIREFOX.EXE and a FFTURBO.EXE, while he's preparing a Firefox distribution package, for customers or users, in another directory. So it could be too simple too query a module name, assume it's exaclty the same specific Firefox module file, and display an error message instead of a warning.
Title: Re: Mozturbo help
Post by: xynixme on June 29, 2019, 01:26:10 pm
And an unsupported, untested Rexx file to allow relevant third-party DLLs to use memory above 512 MiB, if available. You may want to execute this after each relevant upgrade, like the recently released HUNSPEL0.DLL update.

Extract both packages in the same directory, and execute OtherDLLs.CMD.

At the moment involved third-party DLLs are HUNSPEL0.DLL, ICUDT.DLL, ICUIN.DLL, ICUUC.DLL and LIBVPX4.DLL. This list of other DLLs can be edited by the user. (Near) line 15 of OtherDLLs.CMD. Please user lower-cased file names, to make visible what was edited. The Rexx code is based on the latest InsTurbo.EXE release.

The Rexx DLL doesn't assume the use of FF/SM/TB hardware, so in theory you can use any OS/2 hardware to compile new OS DLL packages with marked files.

Code: [Select]
/* Load other DLLs high (unsupported) */

CALL RxFuncAdd 'Above512','Above512','Above512'
CALL RxFuncAdd 'SysFileDelete','RexxUtil','SysFileDelete'
CALL RxFuncAdd 'SysFileTree','RexxUtil','SysFileTree'

/* Delete the distributed, useless file RX512MIB.OBJ of Above512 v0.01d */

SAY
IF Stream('RX512MIB.OBJ','C','QUERY EXISTS')<>'' THEN CALL SysFileDelete 'RX512MIB.OBJ'

/* Compile a list of third-party DLLs, with one space between full DLL file specs  */
/* Please insert new DLL file names in lower-case, to make updates clearly visible */

dlls='HUNSPEL0.DLL ICUDT.DLL ICUIN.DLL ICUUC.DLL LIBVPX4.DLL'

/* Convert the DLL file names sentence to a stem or compound variable */

dlls=Strip(dlls)
dll.0=Words(dlls)
DO i=1 TO dll.0
   dll.i=Strip(Word(dlls,i))
END i

/* Load DLLs high, if the product is not the legacy Mozilla? */

IF dll.0>0 THEN DO
   dircounter=0
   source=''

   /* Support for LIBPATH DLLs requires a REXXUTIL.DLL with SysBootDrive() support (to avoid older methods to try to find CONFIG.SYS) */
   /* The file CONFIG.SYS is used for the LIBPATH (not BEGINLIBPATH), so the LIBPATH in use may be different */

   IF RxFuncQuery('SysBootDrive')=0 THEN DO
     source=SysBootDrive()||'\CONFIG.SYS'
      DO WHILE Lines(source)>0
         line=Strip(LineIn(source))
         IF Left(Translate(line),8)='LIBPATH=' THEN DO
            PARSE VAR line 1 . 9 line
            begin=Strip(Value('BEGINLIBPATH',,'ENVIRONMENT'))
            IF Right(begin,1)<>';' THEN begin=begin||';'
            IF begin<>';' THEN line=begin||line
            DO WHILE line<>''
               dircounter=dircounter+1
               PARSE VAR line dir.dircounter ';' line
               dir.dircounter=Strip(dir.dircounter)
               IF Right(dir.dircounter,1)<>'\' THEN dir.dircounter=dir.dircounter||'\'
            END
         END
      END
      CALL LineOut source
   END
   dir.0=dircounter
   IF source='' THEN DO
      SAY 'Error: no LIBPATH support due to old REXXUTIL.DLL without SysBootDrive() function.'
      SAY
      CALL CharOut '','Press <ENTER>... '
      PULL .
      EXIT
   END

   /* Check the list of DLLs */

   errors=0
   DO i=1 TO dll.0

      /* DLL file in current directory? */
         
      IF Stream(dll.i,'C','QUERY EXISTS')='' THEN DO
           
         /* Otherwise DLL file in LIBPATH directory? */

         retry=''
         IF source<>'' THEN DO           
            DO j=1 TO dir.0
               retry=Stream(dir.j||FileSpec('N',dll.i),'C','QUERY EXISTS')
               IF retry<>'' THEN DO
                  dll.i=dir.j||FileSpec('N',dll.i)
                  j=dir.0
               END
            END j
         END   
         IF retry='' THEN DO
            errors=errors+1
            error.errors=dll.i
         END
      END
   END i

   /* By request, any missing DLL is a fatal error instead of a warning */

   IF errors>0 THEN DO
      SAY 'Error, DLL file(s) not found:'
      SAY
      DO i=1 TO errors
         SAY Translate(error.i)
      END i
      SAY
      CALL CharOut '','Press <ENTER>... '
      PULL .
      EXIT
   END
END

/* Above512.DLL's possible errors */

error.1='no module name specified.'
error.2='no valid options specified.'
error.3='cannot open module.'
error.4='cannot read module.'
error.5='not a LX format 32-bit module.'
error.6='cannot modify module.'
error.7='cannot restore date/time attributes.'

/* Process all DLLs */

DO i=1 TO dll.0
   SAY 'Processing file' FileSpec('N',dll.i)||'...'
   SAY
     
   /* Is the DLL read-only? */
     
   restore=0
   IF SysFileTree(dll.i,'readonly.','F','***+*')=2 THEN DO
      SAY 'Error: not enough available free memory to query a list of files.'
      SAY
      CALL CharOut '','Press <ENTER>... '
      PULL .
      EXIT
   END     

   IF readonly.0=1 THEN DO

      /* If so, then (try to) toggle the setting */

      restore=1
      IF SysFileTree(dll.i,'readonly.','F',,'***-*')=2 THEN DO
         SAY 'Error: not enough available free memory to query a list of files.'
         SAY
         CALL CharOut '','Press <ENTER>... '
         PULL .
         EXIT
      END

      /* Verify new setting */

      IF SysFileTree(dll.i,'readonly.','F','***-*')=2 THEN DO
         SAY 'Error: not enough available free memory to query a list of files.'
         SAY
         CALL CharOut '','Press <ENTER>... '
         PULL .
         EXIT
      END
      IF readonly.0=1 THEN DO
         SAY dll.i 'unmarked as a read-only file.'
         SAY
      END
   END

   /* Call the utility */

   retcode=Above512(dll.i,'-u','-!')
   IF retcode>0 THEN DO
      SAY 'Error:' error.retcode
      SAY
      CALL CharOut '','Press <ENTER>... '
      PULL .
      EXIT
   END
   retcode=Above512(dll.i,'-c')
   IF retcode>0 THEN DO
      SAY 'Error:' error.retcode
      SAY
      CALL CharOut '','Press <ENTER>... '
      PULL .
      EXIT
   END
     
   /* (Try to) restore the read-only setting, if possibly changed */
     
   IF restore=1 THEN DO
      IF SysFileTree(dll.i,'readonly.','F',,'***+*')=2 THEN DO
         SAY 'Error: not enough available free memory to query a list of files.'
         SAY
         CALL CharOut '','Press <ENTER>... '
         PULL .
         EXIT
      END

      /* Verify the restored read-only setting */

      IF SysFileTree(dll.i,'readonly.','F','***+*')=2 THEN DO
         SAY 'Error: not enough available free memory to query a list of files.'
         SAY
         CALL CharOut '','Press <ENTER>... '
         PULL .
         EXIT
      END
      IF readonly.0=1 THEN DO
         SAY
         SAY dll.i 'marked as a read-only file again.'
      END
   END
END i
SAY 'Done.'
SAY
CALL CharOut '','Press <ENTER>... '
PULL .

EXIT
Title: Re: Mozturbo help
Post by: xynixme on June 29, 2019, 01:33:18 pm
Output sample of OtherDLLs.CMD. Albeit it tries to unlock DLLs first, and should reset faulty settings, you may want to unload FFTURBO.EXE, SMTURBO.EXE and/or TBTURBO.EXE first.

Code: [Select]
[C:\Non-Path Tools\Above512]OTHERDLLS.CMD

Processing file HUNSPEL0.DLL...

Processing file ICUDT.DLL...

Processing file ICUIN.DLL...

Processing file ICUUC.DLL...

Processing file LIBVPX4.DLL...

Done.

Press <ENTER>...

OtherDLLs.CMD is not related to, nor supported by, the (authors of the) Mozilla family of products, InsTurbo, MozTurbo nor third-party DLLs required by the Mozilla products.
Title: Re: Mozturbo help
Post by: xynixme on August 02, 2019, 08:36:02 am
Working on a DLL-based, dual mode version, but only if that won't affect the PM UI too much. The DLL will be optional, to not introduce yet another required Mozilla-related DLL.

Advantages are less output to be verified by an user, theoretical access to all OS APIs (e.g. is xxTURBO.EXE unloaded?) and a better level of control, for example by first resetting markings and trying to unlock a DLL. OtherDLLs.ZIP @ Hobbes already uses such a DLL, but without a PM UI. If the DLL cannot be loaded, then third-party tools HIGHMEM.EXE or ABOVE512.EXE will remain a requirement to mark DLLs.

If it works, then I'll send an updated test release of InsTurbo.EXE to Dave soon.
Title: Re: Mozturbo help
Post by: xynixme on August 04, 2019, 07:28:32 am
If it works, then I'll send an updated test release of InsTurbo.EXE to Dave soon.

Done.

FTR I'll attach the currently proposed full collection of Graser's works of art, moved to a single directory. *.ICO and *.PNG files.
Title: Re: Mozturbo help
Post by: xynixme on August 23, 2019, 09:11:48 am
Perhaps the network desktop folder would be a good place to install to
Possible, instead of the <WP_DESKTOP> and an user's choice. Is that the <WP_CONNECTIONSFOLDER>? An unusual or unexpected folder can be opened, to make clear where some of the objects were created.

Other possibilities: optionally append upto 5 (unselectable) other DLLs, like HUNSPEL0.DLL and ICUDT.DLL, to the list of DLLs (menu options). Unmark all modules (menu option). List all required Mozilla modules (menu option) for CLI freaks. Append the Rexx utility to the list of required DLLs. Detect if the Mozilla app is still running (how?), if that's about as simple as detecting that the turbo is still loaded. Detect that other turbo's are still running too (may share DLL files). Change browser settings of existing WPUrl-objects (conditionally). Open the startup folder, to make even more clear where a shadow of the object was created.

I'll send a "final", DLL-based generation, which is now actually tested with all :P products (excluding actually applying changes), to Dave Yeo. It kills a few possible, rare bugs. And it has a simplified UI because it no longer requires any of the third-party memory utilities, so the user no longer has to check the "text-mode" output window of the third-party memory utility too:
Title: Re: Mozturbo help
Post by: David Graser on August 24, 2019, 06:10:30 am
I was wondering if we are going to have this mozturbo (Falkoturbo) capability with the new FalKon browser or will we even need it?
Title: Re: Mozturbo help
Post by: xynixme on August 24, 2019, 06:42:39 am
And I'm wondering how, where, why and by what a standard e-mail program is set? According to BS_Info.exe my eCS 1.2 install has no such setting.
Title: Re: Mozturbo help
Post by: Dave Yeo on August 24, 2019, 07:18:24 am
@David, likely the QT libs will need marking high and a QTturbo program alongside. Mozturbo can be easily converted to QTturbo, change the name, semaphore and list of DLLs.

@André, Under HINI_USER_PROFILE\WPURLDEFAULTSETTINGS (as reported by reged) DefaultMailExe which points to Thunderbird.exe here. Also default "DefaultMailParameters"="-compose" and there's "DefaultMailWorkingDir".
BTW, my Telus account is down so if you sent anything in the last week...
Title: Re: Mozturbo help
Post by: xynixme on August 24, 2019, 01:49:26 pm
Under HINI_USER_PROFILE\WPURLDEFAULTSETTINGS (as reported by reged) DefaultMailExe which points to Thunderbird.exe here. Also default "DefaultMailParameters"="-compose" and there's "DefaultMailWorkingDir".
 
BTW, my Telus account is down so if you sent anything in the last week...
Interesting. Can exactly the same settings be found in OS2.INI, each with a trailing 00'x character? I assumed it was some IBM IAK artifact, because I don't have it set. While the default Mozilla is a DefaultBrowserExe of my eCS, so I've got that setting.

I did, but it does look the default e-mail client setting is an OS2.INI setting. Now I'll first change the code again, to deal with your original request to be able to set this too (Mozilla/SM/TB only, as usual). With support for mixed settings, like SM as the DefaultBrowserExe and TB as the DefaultMailExe. If there's something to change, a new mail executable and/or a new mail working directory, then I'll set "-compose" as a constant value.
Title: Re: Mozturbo help
Post by: Gregg Young on August 24, 2019, 10:54:13 pm
ArcaOS has a program for this. In Computer->System Setup->Network->TCP/IP is a program called Default Internet Applications which can be used to set all the default internet related apps. It sets web browser to Firefox and Thunderbird for email if you do a default ArcaOS install. It sets them to SeaMonkey if you install that while installing ArcaOS. They aren't set at all if you don't install any of these when you install ArcaOS.
Title: Re: Mozturbo help
Post by: xynixme on August 25, 2019, 01:11:56 pm
ArcaOS has a program for this. In Computer->System Setup->Network->TCP/IP is a program called Default Internet Applications which can be used to set all the default internet related apps.

It sets web browser to Firefox and Thunderbird for email if you do a default ArcaOS install. It sets them to SeaMonkey if you install that while installing ArcaOS. They aren't set at all if you don't install any of these when you install ArcaOS.

Thanks. eCS only sets the browser when Mozilla is installed. Just curious: when will those mail settings actually be used by ArcaOS? mailto:-links in e.g. NewView or PDF files, or a WPUrl which starts with mailto:?

The now unfinished app should support all valid Mozilla-combinations with a turbo, including updates (e.g. a modern SM for e-mails, but a downgrade to a different, older SM for faster browsing). If the user enables any of those checkboxes, then the user has to confirm the new settings, which will be applied later. An unverified sample is included below. It installs a turbo and isn't an OS2.INI manager, so in case of the legacy Mozilla browser with an old or new MOZTIURBO.EXE there's only one turbo-related option. There's no support for marking legacy DLL files to allow using memory above 512 MiB. The current, different default browser is set by an eCS install, so that can be changed. If so, then the user first has to confirm the selection. The Apply-button will actually apply all settings, so answering "Yes" won't change the settings yet. So an actual change of the system's setting has to be enabled (if possible and required), confirmed and applied.
Title: Re: Mozturbo help
Post by: Doug Bissett on August 25, 2019, 08:15:57 pm
Quote
Just curious: when will those mail settings actually be used by ArcaOS?

While ArcaOS has a tool to set those settings, ArcaOS does not use them (eCS also had a tool, and the tool actually existed before eCS did, and very few things actually use them). Applications are supposed to use them (not OS/2), but most do not. In PMMail, the, soon to be renamed Migration tool (will be PMMail Utility), will set the proper stuff for PMMail (within the limits of what the settings will allow), but even PMMail doesn't actually use those settings for anything, and it doesn't matter if they are set, or not, unless you also use the available PMMDiags package (for extra logging). Then, it is used to find the location of PMMail (forcing the user to do the setting, if they want to use the package).

The bottom line is, that few, if any, apps actually use that stuff, so there has been little incentive for anybody to bother.
Title: Re: Mozturbo help
Post by: Pete on August 26, 2019, 01:21:36 am
Hi All

If an app I write offers a browser or email link then the app will rummage through the os2.ini file to locate the default browser/email client. Obviously if the user has not set the default browser/email client then the link does not work - and I usually remember to code a popup message as to why clicking the link failed :-)

So tools like Configure Internet Applications are very useful, easier to use than an ini file editor - but only if the user runs the tool and enters the necessary data.


Regards

Pete
Title: Re: Mozturbo help
Post by: xynixme on August 26, 2019, 11:02:59 am
PMMail doesn't actually use those settings for anything, and it doesn't matter if they are set, or not, unless you also use the available PMMDiags package (for extra logging). Then, it is used to find the location of PMMail (forcing the user to do the setting, if they want to use the package).

The bottom line is, that few, if any, apps actually use that stuff, so there has been little incentive for anybody to bother.

Why the "if any", when you report that PMMDiags "actually uses that stuff"!? I don't know why PMMail on its own would ever "actually use those settings for anything" anyway, unless such an app would be some extension of PMMail.

A bothered developer or bothered users, a rather clear choice. Presumably you cannot control the number of "apps actually using that stuff" of remaining users of PMMail, and unfortunately the install procedure of an OS sets a different default e-mail client. So the competition, pleased users, integration of an informal and unannounced new OS standard, the simplicity, and e.g. a possibility to synchronize known inboxes can be some incentives for quite a few developers.

BTW: of course anyone has the full freedom to write a fully open default e-mail client installer, a more aggressive installer for a single product, or perhaps even an uninstaller to delete an alleged useless setting. I won't write an open one, for example because I had to pay for my copy of PMMail, it's not as easy as setting a default browser, and e.g. MAILTO.EXE and YARN.EXE are e-mail solutions which may be hard to integrate.

Either way the on-topic installer won't enable a change by default. So the user has to enable, confirm and apply it intentionally. A specific warning could be possible, but apparently users of PMMDiags had to set it earlier. They should be able to recognize their own explicit setting, which will be displayed. In theory PMMail, or a new QT 5-based browser, can be included as an adopted member of the Mozilla family too, but it's not a fully open installer. For one due to its links with the MozTurbo-solutions.

As such the setting does affect the code significantly, but I'll include it because IIRC it was one of the original requests and other apps can and will use such a new "OS" setting. Yet another component of ArcaOS available as an "informal upgrade" for OS/2 and eCS: a default e-mail client setting.
Title: Re: Mozturbo help
Post by: Doug Bissett on August 27, 2019, 01:03:01 am
Quote
Why the "if any", when you report that PMMDiags "actually uses that stuff"!? I don't know why PMMail on its own would ever "actually use those settings for anything" anyway, unless such an app would be some extension of PMMail.

PMMDiags uses it because it was the easiest way to find where the user installed PMMail. It was also a way to get people to actually set the defaults, but very few people use PMMDiags, so it probably doesn't matter anyway. PMMail could use it to find out which browser to use, but it hasn't been programmed to do that, it is still a setting in the PMMail program (mostly because there is no way to ensure that the default browser, or the user, would do the proper browser setting).

The basic flaw with using the WPURL settings, with PMMail, is that it can only point to one account, when Mailto is clicked in the browser. PMMail could override that, and offer the user a selection from the configured accounts, but somebody would need to do the programming. I expect that other e-mail programs would have the same restriction, unless they are programmed to handle it. There has been no demand to do it, and programmers are hard to find.

There are other WPURL settings, for other programs too (FTP, News, IRC). I don't know of any program that actually uses them, and since it is unique to OS/2, programs from other operating systems don't know about it. In most cases, there is really no reason to even consider using those settings, so they are rarely actually used.

Quote
unfortunately the install procedure of an OS sets a different default e-mail client.

In fact, the OS installer does not, and should not, set any of those things. The program that the setting points to should advertise itself by setting them. PMMail will do that, when it is installed, but the user has the choice, so it doesn't always happen. ArcaOS has included a tool so that a user can do the settings, without having to directly edit an INI file. There was an older program (REXX), that did the same thing.

Note that Firefox, Thunderbird, and Seamonkey do set them (apparently), when they are installed (perhaps only when they are set to be the default program). PMMail gives the user the option, but it IS a user option, it is not required, or done by default. If people think it would be a good idea to just do it, I can arrange that (in future versions of PMMail). Just let me know, but that would be a problem, if the user wants to use more than one e-mail program.

Quote
it's not as easy as setting a default browser, and e.g. MAILTO.EXE and YARN.EXE are e-mail solutions which may be hard to integrate.

If they work, in a way that can be integrated, you can change the settings to use them. The main "problem" is that the implementation of the WPURL stuff is totally inadequate for the way that most users would want to use it. This stuff is NOT officially a part of OS/2. AFAIR, it was added by a user (Chuck McInnes, I believe) many years ago. It was mostly ignored, although the idea does have merit.