New Version of DAT [ COMMUNICATOR 3000/XL XL Rel. 1.2 (PR A.21.00) ] MPE/iX Communicators
COMMUNICATOR 3000/XL XL Rel. 1.2 (PR A.21.00)
New Version of DAT
by Mark Fulgham, Commercial Systems Division
This article describes the new and enhanced features of DAT (version
A.04.01) and how to utilize them.
NOTE These enhancements have been included in DATPROG. Currently DEBUG
does not have any of the enhancements. DEBUG will include these
enhancements in a subsequent release of MPE XL.
Macro/Variable Table Sizing
On OS release of 1.0 and earlier, both the macro and global variable
limits were limited to 511 and 311 respectively.
DAT/DEBUG now supports user sizing of the macro and variable tables by
means of new ENV variables. The top end limits to macros and global
variables have been increased to 1009 and local variables are up to 501.
An example of how to configure the desired sizing is shown below:
ENV MACROS [ x LE. #1009] Set maximum number of macros
ENV VARS [ x LE. #1009] Set maximum number of variable
ENV VARS_LOC [ x LE. #501] Set maximum number of local variables
*(remember macro parms are handled as locals)*
These new ENV variables are defined in a new ENV Group called LIMITS and
they must be set (changed from defaults) before the first user variable
or macro has been declared. Once the environment variable has been set
it cannot be changed for the duration of the process.
It is recommend that your DATINIT file be used to set table sizes. This
will insure your desired configuration. The following DATINIT lines will
work with both new and old versions of DAT:
ignore quiet;
{ env macros #1009;
env vars #1009;
env vars_loc #501
}
The absolute maximum system limits for macro and variable tables are:
MACROS_LIMIT = #1999 Maximum size of MACROS
VARS_LIMIT = #3000 Maximum size of combined VARS and VAR_LOC
These limits should be sufficient for array of macros that DAT supports.
All defined ENV limits can be displayed by entering:
ENVL @ LIMITS Display all current limits
New STORE/RESTORE Commands
DAT supports new STORE/RESTORE commands. These commands provide a very
quick way to load and store macros and or variables. On previous
versions it took a significant amount of time to load system macros.
This enhanced version takes approximately 2 seconds to load all the OS
macros. The syntax takes the following form:
STORE MACROS [filename] or STORE VARIABLES [filename]
RESTORE MACROS [filename] or RESTORE VARIABLES [filename]
MACROS Specifies that macros are to be stored/restored.
VARIABLES Specifies that variables are to be stored/restored.
(These keywords can be abbreviated as MAC or VAR)
filename The file where the macros or variables are to be stored
The :STORE command saves the currently defined macros or variables to the
specified file. A new binary file is created to hold either the macros
or variables. If "filename" already exists, an error will occur.
The :RESTORE command is used to restore saved macros or variables. Any
currently defined macros or variables are automatically lost, and
replaced entirely by the contents of the restored file. Note: The
limits (ENV MACROS or ENV VARS and ENV VARS_LOC) which were in effect
when the file was STOREd will be re-established when the file is
RESTOREd.
EXAMPLE:
store macros savemac /* save all currently defined macros
macd @ /* delete all macros
restore macros savemac /* restore saved macros
Dump Data Compression
The new version of DAT supports compressed dumps. When the :GETDUMP
command is used to read in a dump tape, a single dump file xxxxxMEM is
created on disc, left in its original compressed format that was
originally stored on tape. This results in a substantial disc space
savings (of approximately 35%-45% of the dump size).
NOTE Previous versions of DAT created multiple files for each dump.
This version creates only sone file.
New Datstats File
DAT now collects dump access statistics and can append stats records to a
file called DATSTATS. DAT attempts to create/append to the DATSTATS file
in the PUB group. The file has variable sized, human readable ASCII
records.
A new ENV variable enables/disables creating/appending of the stats
record(s) to the DATSTATS file:
ENV POST_STATS_FILE TRUE
The following example shows the contents of a typical DATSTATS file:
**********
STATS_VERSION_ID: A.00.00
DATE_TIME: TUE, SEP 13, 1988, 2:57 PM
USER_ID: FRED,CM.CMDEBUG
DUMP_NAME: DUMPC.DUMP.CMDEBUG
OBJ_CLASS: 0, 1, 2, 3, 8, 9, 11, 15, 16, 17, 38, 48, 75, 78, 89, 250, 327
**********
STATS_VERSION_ID: A.00.00
DATE_TIME: TUE, SEP 13, 1988, 6:29 PM
USER_ID: PAT.CMDEBUG
DUMP_NAME: D7058.DUMP.CMDEBUG
DUMP_COMPRESSION: 31
OBJ_CLASS: 0, 1, 2, 3, 6, 8, 11, 12, 15, 16, 21, 26, 27, 28, 29,
OBJ_CLASS: 31, 33, 35, 37, 42, 43, 44, 45, 48, 49, 50, 51, 52, 58,
OBJ_CLASS: 61, 63, 64, 65, 70, 72, 77, 87, 89, 90, 99, 104, 105,
OBJ_CLASS: 109, 250, 413
Object Class Monitoring
The OBJ_CLASS is a list of object classes that were accessed by the user
during dump analysis. This information is used to provide information on
which objects and how many times they were accessed during the analysis.
The list of object class numbers can be posted to the new DATSTATS file
(see above).
Should the user wish to enable or disable monitoring of object class
stats, a new ENV variable was created. This ENV variables syntax looks
like:
ENV GET_VSOBJ_STATS TRUE /* enable statistics
New DAT Functions
DAT supports a new dynamic procedure/function calls:
NMCALL Dynamically calls a specified procedure passing up to
four parameters. (Privileged function)
DAT supports a new HASH function:
HASH Hashes a virtual address to return the real offset which
can be added to TR1 to get the hash table entry.
DAT supports a new function for MAP command:
MAPINDEX Returns the MAP index number of a filename, which was
previously opened by the MAP command.
DAT supports a new XL command:
XL Utilizes symbol information in a local library/program
file.
The Indirection Operator
The indirection operator (square brackets) has been enhanced to support a
new (optional) prefix notation for virtual, real, and secondary
addresses.
It is now also possible to extract 1 byte, 2 bytes, 4 bytes, or 8 bytes
at a specified address.
Default Alignment / Return Type
[ [prefix] [VIRT] virtaddr ] 4 byte (S32) 4 bytes
[ [prefix] REAL realaddr ] 4 byte (S32) 4 bytes
[ [prefix] SEC ldev.offset ] 4 byte (S32) 4 bytes
where [prefix] can be any one of the following:
BYTE byte aligned (U16) 1 byte
U16 2 byte aligned (U16) 2 bytes
S16 2 byte aligned (S16) 2 bytes
LPTR 4 byte aligned (LPTR) 8 bytes
Miscellaneous Enhancements
The VARL command now displays variables sorted alphabetically.
The LOCL commands now displays local variables along with their macro
locality.
The CM TR (stack trace command) supports control-Y.
The DPTREE command supports control-Y.
USE CLOSE ALL or USE CLOSE @ will close all currently opened USE files.
The MAP command now supports an optional virtual byte offset to be
specified:
MAP myfile OFF c00003c0
1 MYFILE.GRP.ACCT 1000.c00003c0 Bytes = 2340
MPE/iX Communicators