home *** CD-ROM | disk | FTP | other *** search
- Documentation of the archive GEMB1V11.ARC
-
- Contained files:
- 1) GEMBOOT.PRG the GEM booter V1.11
- 2) GEMBOOT.INF GEMBOOT parameter file example
- 3) COMMAND.TOS a PD command shell
- 4) DESKENV.TTP environment string setter for DESKTOP
- 5) GEMFRL.TOS prints status of GEMDOS internal system memory free lists
- 6) GEMBOOT.DOC (this file)
-
- ##############################################
- # Copyright (c) of GEMBOOT.PRG, DESKENV.TTP #
- # GEMFRL.TOS #
- # #
- # by Konrad A. Hahn #
- # Karlstr.19 #
- # D-6109 Muehltal #
- # W.-Germany #
- # #
- # Permission of charge free copy and usage #
- # only for noncommercial users #
- ##############################################
-
- GEMBOOT.PRG V1.11
- ------------------
- GEMBOOT serves as a plaster for the old TOS problem: "the 40 folder limit".
- The so called "40 folder limit" is a two fold TOS bug.
- The system crashes are caused by GEMDOS being "out of system memory".
- GEMDOS has a limited system memory area of 3000 words used for memory
- descriptors, media descriptors, directory cache blocks, etc.
- Each cached directory needs 66 words of the system memory.
- Together with the system blocks added by AHDI.PRG this gives you a total
- capacity of 85 folders on your non-GEMBOOT-enhanced system (including
- floppies).
-
- Even if you hold your system below this limit you will get into trouble.
- Tracing GEMDOS internal data I found most system memory overflows being
- forced by multiple duplicates of directory cache blocks.
- Obviously GEMDOS sometimes forgets to set a special flag in the parent
- directory cache block, which should indicate that subdirectories have
- been cached.
- Thus next time GEMDOS needs a file located in this directory it creates
- another set of subdirectory cache blocks.
- This happens on and on until the flag gets set (or until system crash).
- So the system memory gets totally trashed with useless duplicates and
- is overflowed finally.
- Since hard disks have fixed media you never get rid of these duplicates.
- With floppy drives you have a chance because all assigned directory cache
- blocks are released after a media change.
-
- GEMBOOT protects the system by linking fresh cache blocks to the system
- and scanning all hard disk directories with Fsfirst()-Fsnext().
- Thus GEMDOS is forced to build up a complete, errorfree directory cache tree.
- The cache blocks created by this procedure have their "flags" set and
- prevent GEMDOS from generating duplicates.
-
- The number of cache blocks initially allocated and linked to the system free
- lists is determined by the variable FOLDERS.
- Besides this GEMBOOT may add chunks of fresh cache blocks to the system
- during the directory scan. This "incremental add" happens each time GEMBOOT
- detects the cache block free list being empty.
- The size of the cache block chunks is determined by the variable FOLDERINC.
- Since the memory for each chunk is allocated seperately it costs additional
- system memory for the memory descriptors.
- The minimum free cache space reserved for new folders is determined by the
- variable FOLDERRES.
-
- Furthermore GEMBOOT provides a 256 character environment buffer for DESKTOP,
- which may be modified by the program DESKENV.TTP.
- Last not least it has a build in startup batch feature which uses a standard
- command shell without creating a "memory hole" in front of resident programs.
- A ramdisk installation program can be supplied with params within our startup
- batch procedure.
-
- Note:
- After the login phase GEMBOOT lists the number of directories found and the
- free cache space left. The latter count only depends on the number of system
- blocks in the free list. The left unpartitioned system memory is not counted.
- Thus you may have more space for hard disk folders, but it is better to spare
- this memory for memory descriptors and floppy disk folders.
-
- ############### Installation and customization ##################
-
- Put GEMBOOT.PRG and GEMBOOT.INF in the AUTO directory of your boot disk.
- If you are using the DESKTOP environment buffer (ENVBUFSIZE > 0) be sure
- that GEMBOOT is the last file in the AUTO exec sequence because DESKTOP
- is booted without leaving GEMBOOT.
- GEMBOOT.INF contains variable assignment lines of the form
- <variable>=<value><crlf>
- and may be modified to serve your needs.
-
- Following variables are local to GEMBOOT V1.11:
- Name Range Default Meaning
- -------------------------------------------------------------------------
- FOLDERS 1 : 1000 150 dir. cache blocks added to system
- FOLDERINC 0 : 100 20 chunk size of incremental add
- FOLDERRES 0 : 100 10 minimum free cache space reserved
- MEMBLOCKS 0 : 5000 0 mem. descriptors added to system
- BATCHSELECT OFF : ON ON manual batch file selection
- BATCHFILE \AUTO\*.BAT batch file search pattern
- BATCHSHELL \COMMAND.TOS batch shell
- SHELLSIZE 0 : MAXMEM $82F8 shell load size (in bytes)
- ENVBUFSIZE 0 : 4096 256 DESKTOP env. buffer size (in bytes)
- SYSMEMFRL 0 : $FFFFFF $56FA addr. of GEMDOS free list ptr array
-
- Assignments to variables different to the above are treated as DESKTOP
- environment variable definitions and are included in the DESKTOP environment
- string.
- The default 256 character environment string buffer provided for DESKTOP is
- initiated to "PATH=;X:\" (X = boot drive).
- Resizing the env. buffer by "ENVBUFSIZE=..." does also initialize the buffer
- to the above string. Thus your DESKTOP environment definitions must follow
- the "ENVBUFSIZE=..." assignment to survive the resizing.
- "ENVBUFSIZE=0" disables the DESKTOP environment buffer option and leads to
- a normal DESKTOP startup.
-
- Be aware that each directory cache block costs 132 bytes, and each memory
- descriptor 18 bytes of your TPA.
- The allocated system blocks and the env. string buffer reside at the top
- of the TPA.
-
- For the startup batch feature put COMMAND.TOS (included in the archive) into
- the root directory of your boot drive.
- You can direct GEMBOOT to use a different shell by the assignments
- "BATCHSHELL=<file spec.>" and "SHELLSIZE=<load size in bytes>"
- The used shell must be able to accept a batch file parameter.
- With the program GEMMEM you can find out the load size of your shell.
- The batch shell will be loaded at the top of the TPA, so programs staying
- resident may be executed without creating a "memory hole".
- At boot time GEMBOOT is looking for a batch file using the value string of
- variable BATCHFILE as a search pattern.
- If the value is the zero-string (BATCHFILE=<crlf>) the boot batch feature
- is disabled.
- With BATCHSELECT=OFF the first file found will be used without asking.
- With BATCHSELECT=ON up to 9 files found will be listed and you may select
- one to be executed by the shell.
-
- Dependences:
- GEMBOOT uses the system variable exec_os to find the GEM startup procedure.
- GEMBOOT uses a GEMDOS internal pointer array at SYSMEMFRL to find the system
- memory free lists.
-
-
- DESKENV.TTP
- -----------
- DESKENV prints or modifies the contents of the DESKTOP environment string
- buffer provided by GEMBOOT with.
- DESKENV can't be used if the DESKTOP environment buffer option was switched
- off by "ENVBUFSIZE=0".
-
- EBNF-Syntax:
- DESKENV [ (<variable>'='<value> | <variable>) {' ' (...)} ]
-
- brackets:
- '' for terminals, <> for nonterminals, () for grouping with | as alternative
- separator, [] for options (0 or 1), {} for repetitions (0 or more)
-
- If called without parameter the current environment variable assignments
- will be printed.
- Called with an assignment string as parameter (name string followed by
- 'equal' and a value string) DESKENV modifies or adds the variable definition
- to the environment string.
- Called with an environment variable name without following 'equal' removes
- the variable definition from the environment string.
-
- Examples:
- "DESKENV LIBPATH=\USR\LIB\" sets the variable LIBPATH to value \USR\LIB\.
- "DESKENV LIBPATH" removes the variable LIBPATH.
-
- If the value string contains white-space characters the assignment must be
- quoted.
- Example:
- DESKENV 'HEADER=***** Keep hands off !!! *****'
-
- Note:
- DESKTOP internally sets the first character of the PATH variable to ';'.
- Thus the first character of your PATH value should be ';'
- (i.e. DESKENV PATH=;<path1>;<path2>;...) to leave the following path string
- intact.
-
-
- GEMFRL.TOS
- ----------
- This program finds the GEMDOS internal system memory free lists and prints
- the current status.
- If the address of the located pointer array is different to $56FA the
- GEMBOOT variable SYSMEMFRL must be set to the found address value.
- GEMDOS uses type-1 blocks for memory descriptors and type-4 blocks for
- directory caching.
-
-
- COMMAND.TOS
- -----------
- A PD command shell used by GEMBOOT.
- May be used for other purposes too.
- Enter '?' for a command list.
-