Version 0 - Release 0
Test Control System (TCS) is a debugging tool modeled after the original DBC product written by Dave Cole. As a mainframe software developer once I discovered DBC many years back I quit using TSO TEST. DBC was far more powerful and user friendly than TEST. DBC evolved into the XDC product line still marketed by Dave Cole.
As I was developing code for FSI I was constantly frustrated by using TSO TEST to debug my code. As a result I began to think I needed to develop a DBC-like debugger for MVS 3.8. One day I was having lunch with a couple of friends still in the software business and the subject of XDC came up as we were talking. As we discussed XDC I stated that I thought I would write a simple version for MVS 3.8 to make my own life easier. I then began to design how a debugger would operate and then began to develop code. This is the result.
First, let me say that TCS is not based on any DBC code but it does operate much like the way I remember DBC operating. Dave Cole is still the King of Debuggers and a great man.
At this point in time TCS is really a "Proof Of Concept" . The code was developed so I could learn how a debugger for MVS 3.8 should be written. I hope to go back and rewrite it soon (now that I at least think I know how much of it should be done). Until then, I find it of use and personally like it better than TSO TEST.
At this time I am releasing the run-time load module. If I clean up the source I will probably make it available later.
Standard Disclaimer
TCS is a part-time fun project that I started working on as a result of developing FSI.
There is a lot of room for enhancement and improvement if you would like to help take this project forward. When I get more spare time I may try to improve upon what I have here.
This is by far not the best code I have ever written in my life as as stated above is really just a "Proof Of Concept" at this time. If you try it and help problems, suggestions or complaints (or if you find it interesting or useful) please feel free to drop me an email note.
Currently TCS can only be used under TSO as it uses TGET and TPUT for all I/O.
Establish the TCS environment by doing the following:
LOAD EP=TCS
LR R10,r0
ESTAE (R10)
This will cause the TCS module to be loaded into storage and an ESTAE recovery environment to
be established. When an ABEND occurs, the TCS module will receive control.
A "Hard Coded" Breakpoint can be assembled into the source code using the following:
DC X'00DEAD00'
When this instruction is executed, an program interrupt will be generated causing a SOC1 type ABEND. TCS will recognize this as a hard-coded breakpoint.
The following commands are recognized by TCS. Since this is a proof of concept, the operands are all positional. This means the command must start in the first column and the operand, if any, must follow a single space after the command. If multiple spaces are present between the command and the operand, the operand will be ignored.
| Command | Parameters | |
| L | PSW | List the contents of the Program Status Word |
| L | REGS | List the contents of all 16 General Purpose Registers |
| D | addr [lines] | Display the contents of virtual storage at addr The optional lines parameter specifies how many lines of storage to dump. The default number of lines is 4, the maximum number of lines is 16. |
| AT | addr | Set a breakpoint at addr |
| OFF | addr | Remove a breakpoint at addr |
| Z | addr=value | Modify the contents of virtual storage at addr changing it to value |
| Z | reg=value | Modify General Purpose Register reg changing its contents to value |
| GO | [addr] | Resume execution at next instruction or if addr is specified, at the specified address. |
| END | Terminate execution of the program being debugged. |
Operands specified in brackets [ ] are optinoal.
reg is a register specification in the form Rn or nR (for example 4R or R13).
addr is an address specification. It can begin with the value of the PSW, a Register or a Virtual Address. It may further be modified by offsets (+ or -) and an indirect specification ( % ). Examples are:
12R% The address contained in Register 12
R13%+4%
09EAC0
10%+4%
value specifies either a hex value or a character value:
Z R3=04
Z 8R%+1A='NEW TEXT VALUE'
Installing TCS
The TCS load module is supplied in IEBCOPY unload format. The block size is 19069. It should probably be installed in a LINKLIST data set. I would suggest using SYS2.LINKLIB. It can also be included in a STEPLIB dataset contained in your TSO LOGON PROC.
Sample JCL to install
//TCSINSTL JOB (5222),'TCS INSTALL',CLASS=A,MSGCLASS=A
//COPY EXEC PGM=IEBCOPY
//SYSPRINT DD SYSOUT=*
//TAPE DD DSN=TCS.V0R0M0.LOAD,DISP=(OLD,KEEP),
// UNIT=TAPE,VOL=SER=TCS000
//LIB DD DISP=SHR,DSN=SYS2.LINKLIB
//SYSIN DD *
C I=TAPE,O=LIB
/*
//
| tcs000.aws | tcs000.het |
| tcs000.aws.zip | tcs000.het.zip |
Problems or Questions
Please contact me at tommy@tommysprinkle.com
Thanks, -Tommy