++USERMOD(ZP60044) REWORK(20260217) /* TEST ENHANCEMENTS */ . ++VER(Z038) FMID(EBB1102) PRE(UZ39644,UZ72237,UY07264,UY29953,UY38623) SUP(ZP60002) /* Problem description: In TSO TEST, a LIST of instructions stops at a bad op code. When listing instructions in TSO TEST, the list stops whenever an invalid op code is encountered. This can reduce the ease-of-use of TSO TEST during debugging. This problem was previously addressed by USERMOD ZP60002. The LIST subcommand of TEST cannot show data in a dump format. The LIST subcommand allows the X operand (the default) to show storage contents in hexadecimal, and the C operand to show storage contents as EBCDIC characters, but cannot show storage contents as both on the same display line. Linkage instruction breakpoints are not always handled correctly. Linkage instructions other than BAL and BALR do not get the linkage address in the operand-1 GPR set correctly. Newer executable instructions are not known by TEST's LIST I. Newer instructions may be enabled by the Hercules 370 Extension Facility, but such instructions cannot be displayed in the correct format under TEST by a LIST I subcommand. Problem conclusion: Module IKJEGLSA is changed so that LIST subcommand processing will display the hexadecimal of each halfword encountered with an invalid opcode as a DC instruction. This can simplify debugging passages of code containing small inline macro expansions. In addition, several displayable characters that became available on post-3277 terminals have been added to the displayable character translate table used when listing storage contents as EBCDIC characters. The preceding was previously delivered as a ZAP by usermod ZP60002. Modules IKJEGLST and IKJEGLSA (LIST subcommand) are changed to support the XC operand of the LIST subcommand to allow the user to request that storage contents be displayed in both hexadecimal and character format on the same display line. Support for the XC operand is compatible with TSO/E. The TEST TSO HELP member is updated to show that XC is a valid operand of the LIST subcommand. Module IKJEGAT (AT subcommand) is changed to set the BALSW bit in BRKELEM structures associated with breakpoints set at not only BAL and BALR instructions, but also at BAS, BASR, BSM and BASSM instructions. This flag indicates to the SVC 97 breakpoint processor that the correct linkage information to reflect the breakpoint address must be constructed and placed in the linkage register before the branch is performed. Existing IKJEGINT (initialization routine) logic places the address of the single-byte and the B2 two-byte op code tables in fields OPCODTAB and TSTOPCD2 respectively in the TEST Command Processor Communication Table structure TCOMTAB where it can be referenced by subcommands such as AT. Module IKJEGCVT (convert routine) has expanded single-byte and B2 and E5 op code tables, and tables for 01, A5, A7, B3, B9, C0, C2, C4, C6, C8, E3, EB, EC AND ED instructions have also been added. The B3 table is placed immediately after the B2 table allowing access via the TSTOPCD2 pointer. Module IKJEGAT (AT subcommand) needs to determine if the data at a breakpoint address contains a valid instruction before setting the breakpoint. IKJEGAT accesses the single-byte and B2 and B3 tables via the pointers in TCOMTAB, and for other first op code byte values refers to its own lists of valid op codes which exclude instructions using relative addressing because existing SVC 97 logic does not process relative addressing breakpoint scenarios correctly. Special conditions: None. Comments: Prycroft Six P/L public domain usermod for MVS 3.8 number 44. The listing of invalid op codes as DC instructions was based on a modification shipped in CBT file 300 and discussed by Alan Field in the August 1990 issue of the NaSPA Technical Support magazine. Rework history: 2026-02-18: Initial release. The following modules and/or macros are affected by this USERMOD: Modules: IKJEGAT IKJEGLST IKJEGCVT IKJEGLSA Macros: TEST */.