Thinkage UW Tools Package
The UW Tools Package is a collection of dozens of software
tools for the GCOS8 operating system.
The package contains a number of utility
programs designed to increase productivity at every stage of
software preparation: coding, debugging, testing, and
The B Programming Language
B has proved itself time and again as one of the most
versatile languages for writing system software under GCOS-8.
It supports all modern program logic structures:
IF-THEN-ELSE, WHILE loops, SWITCH statements, and so on.
Its operators allow programmers to perform all the normal
integer, floating point, and character operations, as well
as low-level actions like bit shifting, ANDing, and ORing.
Because B is a stack-oriented language, recursion is
B comes complete with a reference manual, a tutorial
guide, and on-line descriptions of all library functions.
The B compiler and B programs can be prepared to run under
either batch or TSS.
The B Run-Time Library
One of the most important features of B is the library
of utility functions that comes as part of the package.
These functions perform such operations as
- formatted I/O, supporting all GCOS8 Media codes
- string manipulation
- invoking system calls
- sorting data
- dynamic memory allocation
The BOFF Debugger
BOFF is a symbolic debugger designed to help debug any
program running under GCOS8.
It is particularly useful with
programs written in B, since the B compiler produces debug
tables that BOFF can use to obtain information about the
program and its variables (source line numbers, local
variable names, etc.).
BOFF can be used in several modes.
- To examine post-mortem dumps of aborted programs.
- To "babysit" a program as it runs.
- To patch locations in load modules (or any other kind
- To profile a program's execution.
- To act as an expression evaluator, printing out the
results of expressions in a variety of formats (octal,
decimal, hex, BCD, ASCII, etc.).
BOFF lets you perform the following actions for debugging:
- print out any memory location in a variety of
formats (octal, decimal, floating point, BCD,
ASCII, GMAP instruction, etc.)
- change the values of memory location (patching)
- set breakpoints at absolute memory locations, at
beginnings of functions, and at function return
- call program functions while stopped at a
- create BOFF variables for use during a BOFF session
- obtain function tracebacks
- save and restore core images
- display register and variable values
The EXPLAIN Subsystem
The EXPLAIN subsystem is a facility for providing on-line
documentation on a variety of topics.
The documentation for the B package is all available through EXPLAIN.
As part of the standard installation procedure, this material
is stored under the catalog LIBRARY/EXPL where the EXPLAIN
command may locate it at a user's request.
Sites may add their own material to LIBRARY/EXPL or modify the standard
explanations to suit individual needs.
The FRED Text Editor
FRED is a line editor descended from the QED editor.
It allows all the usual interactive editing operations:
creating, deleting, modifying and saving text, global
substitutions, and the like.
In addition, it can be used to
write sophisticated text manipulation programs.
library of stored FRED programs includes programs to play
tic-tac-toe, to convert RUNOFF source into source for our TF
text formatter, to generate and run an EXEC file to copy a
catalog, and so on.
Some of the features that distinguish FRED from other editors are:
- The ability to "undo" up to 10 lines of commands, if
you make a mistake or change your mind.
- Multiple buffers (workspaces) to let you work on more
than one file at once, or move text about from one
location in a file to another.
- The ability to "capture" output from a FRED or TSS
command, and place that output in a buffer for editing.
- A sophisticated pattern matcher, allowing you to locate
strings and perform various manipulations on them.
- Simple commands for upper or lower casing text.
- Control structures, including loops and GOTOs.
- The ability to put comments in FRED programs.
FRED comes complete with a reference manual, a tutorial for
beginners, and a more advanced guide to writing FRED
There is also a small library of utility programs.
FRED operates in TSS or batch.
The Secure Command Loader
The UW Tools package brings with it a new command
loader designed for more security than the stock command loader.
This loader also lets the UW Tools package provide
many services that would not be available under the normal
None of these services constitute violations of security,
but users have been denied these
conveniences because the stock command loader could not
provide the services without providing opportunity for true
Modified ACCESS Command
A modified version of ACCESS is distributed with the
package in order to support some of the features of the
Secure Command Loader.
This ACCESS has other important enhancements:
- The command line syntax has been simplified to make
typing easier (for example, arguments may be separated
by spaces instead of commas).
- The interface has been improved to make ACCESS easier
to use in command files and in calls from other programs.
The improvements make the *ACC interface
- There is a "verify" option so that the user gets a
positive feedback about the action just performed.
- There is a full set of online explain files for the
Utilities in the UW Tools Package
Below we summarize the arsenal of utilities that come
with the UW Tools package.
- A command to print a user's resources and limits.
This is basically an improved SMCL command that
prints change dates and handles UMC's on removeables or volume sets.
- A program for submitting GMAP assembly jobs from TSS.
- A better AFT command that can list the contents of the AFT, including
full names of permanent files.
- A block mode file compare utility.
- A simple macro preprocessor for B programs.
- A versatile utility for sorting files according to multiple keys.
- A disassembler for object decks.
- A better TEMP command that can be easily used by command files
and other programs.
- A program for converting B source code into GMAP assembly code.
- A TSS command that tells what FMS bucket contains a given userid.
- A TSS command that will return the current of all batch jobs
submitted by a specified user.
- A command that lists the "characteristics" of one or more files or catalogs:
general permissions, specific permissions, current size, maximum size,
creation date, change date and time, number of accesses, disk location,
label on tape of most recent back-up, and whether a file is random or
- A command to copy a file or entire catalog along with permissions
and other FMS attributes.
- A utility for copying any kind of file.
- A program that temporarily suspends a CRUN session and runs
- A program that determines the differences between two text files.
- A program for examining the status of DRUNs.
- A utility that echoes its arguments to the terminal or an output file.
- A way of repeatedly executing commands while obtaining parameters
for the commands from an input file.
- A command that evaluates arithmetic, logical, and string expressions.
- A facility similar to CRUN for conditionally executing a file of TSS commands.
- A command that is capable of obtaining on-line documentation
and listing it in a convenient readable form.
- A TSS command for invoking the Fortran~77 compiler.
- A program for dumping the contents of files in readable formats.
- A utility for listing the names of all the files under a given catalog;
the command can also list just the files that have a certain characteristic,
e.g. all files that have been changed since a particular date.
- A program that returns fuller explanations of derail status codes.
- A program for invoking the Fortran 66 compiler.
- A program loader for programs in B, C, or Pascal.
- A command to grow a file.
- A command that executes a list of TSS commands, depending on the result
of a logical expression.
- A program for columnating input and optionally writing the result to
the line printer.
- A program to produce a "key word in context" list.
- A command for listing the contents of almost any kind of
file (e.g. text files, freeze files, qstar files, mailboxes, and others).
- A command that gives a concise listing of the contents of a catalog.
- A utility to determine the length and type of a file.
This is similar to the stock LENGTH command,
but recognizes many more file formats.
- A command to invoke GELOAD as a DRL TASK job.
- A utility that scans one or more text files and prints out windows around
lines that contain a particular string of characters.
- An editor for libraries of load modules.
- A command for putting all the alphabetic characters of an ASCII
file into lower case.
- A utility for printing the contents of text files in a fully-readable format.
- A command for obtaining information about OM object module libraries.
- A command for editing OM object module libraries.
- A command for editing a random object (GELOAD) library.
RANE works in both batch and TSS.
- A command to change the AFT name of a file.
- A command for editing RU (run-unit) libraries.
- A command to set the working catalog with checks for common errors
such as missing passwords and non-existent pathnames.
- A command to shrink the physical size of a file down to the file size
that is actually being used.
- A command that will print the contents of temporary or
permanent files on the line printer.
- A command for editing source libraries (COBOL74 copy libraries).
- A program for stripping trailing blanks and sequence number fields from
- A utility for switching the position of programs on the CALLSS stack.
- A utility to set and display both program switch words.
- A command to display the last few lines of a file.
- A command that prints the current date and time of day.
It can also be used to time the execution of other commands.
- A batch utility to write system insert/edit tapes from Q* files.
- A command to process time zone definitions that can then be
incorporated into B programs.
- A command that will examine an object library to determine which of the
routines in the library reference a particular SYMDEF.
- A command to remove duplicate lines from a file.
- A command that converts a text file into upper case.
- A utility to count characters, words and lines in a file.
- A command that can be used to determine the name of someone who has
currently busied a particular file.
- A command to display the current userid, system name, and working catalog.
- A command that will execute a set of one or more TSS
commands upon each file in a given catalog.
- A program that generates language parsers -- a simple source format allows
users to specify a language and what actions should be taken when language
constructs are recognized.
The output of YAY is either B or C source code that can then be compiled
to obtain the actual parser.