home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GEMini Atari
/
GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso
/
files
/
diskutil
/
gemboot
/
gemboot.doc
< prev
next >
Wrap
Text File
|
1987-07-26
|
9KB
|
197 lines
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.