DSC TITLE 'DMMDSC (IPCS) VM/370 - RELEASE 6' 00001000
* 00002000
* MODULE NAME: 00003000
* DUMPSCAN 00004000
* 00005000
* FUNCTION: 00006000
* PROVIDE A METHOD OF EXAMINING THE CMS FORMAT 00007000
* CP DUMPS CREATED BY VMFDUMP. 00008000
* 00009000
* ATTRIBUTES: 00010000
* REUSABLE 00011000
* NON-REENTRANT 00012000
* 00013000
* ENTRY POINTS: 00014000
* DUMPSCAN 00015000
* INPUT READ IN AREA 00016000
* 00017000
* ENTRY CONDITIONS: 00018000
* NONE 00019000
* 00020000
* EXIT CONDITIONS: 00021000
* RETURN CODE IN R15 00022000
* 0 - USER 'HX', 'QUIT' OR END. 00023000
* 8 - ERROR PROCESSING THE DUMP 00024000
* 00025000
* CALLS TO OTHER ROUTINES: 00026000
* DMMFEX FULL SCREEN WRITE FROM DUMP 00027000
* DMMFED DISPLAY AREAS OF THE DUMP 00028000
* DMMLOC LOCATE STRING REQUEST 00029000
* DMMSCR FOR SCROLL FUNCTION 00030000
* DMMREG TO DISPLAY REGISTERS 00031000
* DMMVMB TO DISPLAY VMBLOKS 00032000
* DMMMOD TO FIND MODULES AND RESOLVE ADDRESSES 00033000
* DMMTRC DISPLAY TRACE TABLE ENTRIES 00034000
* DMMLOC TO FIND STRINGS IN 'LOCATE STRING FROM TO' 00035000
* EXTERNAL REFERENCES: 00036000
* SCRNAREA DISPLAY AREA 00037000
* HEXAD LAST DISPLAYED ADDRESS IN HEX 00038000
* 00039000
* TABLES/WORKAREAS: 00040000
* PLIST THE TOKENIZED INPUT TO PASS TO SUBROUTINES 00041000
* 00042000
* REGISTER USAGE: 00043000
* R15 ADDRESSES OF EXTERNAL ROUTINES 00044000
* R14 RETURNS FROM EXTERNAL ROUTINES 00045000
* R13 SAVE AREA ADDRESS 00046000
* R12,R11 BASES @V4075A2 00047000
* R10 INTERNAL LINK @V4075A2 00048000
* R9-R2 WORK REGISTERS 00049000
* R2 PASSES ADDRESS OF PLIST TO SUBROUTINES 00050000
* 00051000
* NOTES: 00052000
* 00053000
* OPERATION: 00054000
* DUMPSCAN IS MOST EFFECTIVE ON A GRAPHICS TYPE 00055000
* TERMINAL. HOWEVER IT DOES TEST TERMINAL TYPE AND 00056000
* PROVIDES A SLIGHTLY REDUCED FUNCTION TO A 2741. 00057000
* USER IS FIRST OFFERED ASSISTANCE. THEN HE IS ASKED 00058000
* FOR THE DUMP IDENTIFICATION. THIS IS CHECKED FOR 00059000
* VALIDITY, AND FSSTATE ISSUED AGAINST THE DUMP. 00060000
* IF ALL IS WELL '*** READY ***' PROMPTS USER TO 00061000
* ENTER HIS COMMAND. THE COMMAND IS INTERROGATED, 00062000
* VALIDITY CHECKED AND TOKENIZED INTO THE PLIST. 00063000
* CONTROL IS PASSED TO THE APPROPRIATE SUBROUTINE, 00064000
* ALONG WITH THE PLIST ADDRESS IF REQUIRED. 00065000
* ON RETURN, THE RETURN CODE IS CHECKED. 00066000
* 0 OR 4 CAUSE A RETURN TO THE READY MESSAGE, 00067000
* 8 CAUSES RETURN TO CMS. 00068000
* 00069000
* ERROR MESSAGES: 00070000
* DMMDSC719I - ERROR IN FSSTATE 00071000
* 00072000
* * * * * * * *------- -------- -------- -------- ------* 00073000
EJECT 00074000
DMMDSC CSECT @VA04250 00075000
ENTRY TYPEFLAG TYPE OF TERMINAL @VA04250 00076000
ENTRY CONSOLE ADDRESS OF VIRT CONSOLE @VA04250 00077000
ENTRY CMDINFO HEADER LINE @VA04250 00078000
ENTRY DUMPFSCB FSCB OF DUMP @VA04250 00079000
ENTRY STRINGAD SEARCH ARGUMENT FOR LOCATE @V4075A2 00080000
ENTRY STRINGLN LENGTH OF ARG @V4075A2 00081000
ENTRY INPUT READ IN AREA @VA04250 00082000
ENTRY SHARECON COMMON CONSTANTS @V4075A2 00083000
ENTRY INLENGTH LENGTH OF INPUT LINE @VA04250 00084000
ENTRY PRINTONE ONE-SHOT PRINT FLAG @V4075A2 00085000
ENTRY PRINTSW @V4075A2 00086000
EXTRN DMMDIR SCREEN WRITE @VA04250 00087000
EXTRN DMMFED DISPLAY @VA04250 00088000
EXTRN DMMFEX DISPLAY HEXLOC @VA04250 00089000
EXTRN DMMGET FETCH DUMP TO CORE @VA04250 00090000
EXTRN DMMHEX UNTRANSLATE @VA04250 00091000
EXTRN DMMINT TRANSLATE @VA04250 00092000
EXTRN DMMIOB VIO/RIO @VA04250 00093000
EXTRN DMMLOC LOCATE @VA04250 00094000
EXTRN DMMMAP ADD MAP TO DUMP @V4075A2 00095000
EXTRN DMMMOD MODULE/ADDRESS SEARCH @VA04250 00096000
EXTRN DMMREG REGISTERS @VA04250 00097000
EXTRN DMMSCR SCROLL @VA04250 00098000
EXTRN DMMTRC TRACE @VA04250 00099000
EXTRN DMMVMB VMBLOK @VA04250 00100000
EXTRN SCRNAREA DISPLAY AREA @VA04250 00101000
EXTRN HEXAD LAST ADDRESS DISPLAYED @VA04250 00102000
EXTRN ISW ITEM TABLE READ @VA04250 00103000
EXTRN MAPREDSW LOAD MAP READ @VA04250 00104000
EXTRN RECORDNO LAST RECORD READ @VA04250 00105000
EXTRN PREBUFAD ADDRESS OF LOC BUFFER @V4075A2 00106000
EXTRN BOUND INCREMENT PARM @V4075A2 00107000
STM R14,R12,SAVEDISP(R13) SAVE CALLERS REGS @VA04250 00108000
LR R12,R15 ADDRESSABILITY @VA04250 00109000
LA R11,1 SET UP SECOND BASE REG @V4075A2 00110000
SLL R11,12 SET TO 4096 @V4075A2 00111000
AR R11,R12 AND ADD THIS BASE @V4075A2 00112000
USING DMMDSC,R12,R11 BASE REG ASSIGNMENTS @V4075A2 00113000
ST R13,SAVEBACK CALLERS SAVE AREA @VA04250 00114000
B EYECATCH BYPASS EYECATCHER @VA04250 00115000
DS 0D ALIGN @VA04250 00116000
DC CL8'DMMDSC' EYECATCHER @VA04250 00117000
RELLEV DC C'REL4LEV0' RELEASE AND LEVEL @V4075A1 00118000
EYECATCH LA R13,SAVEAREA DSC SAVEAREA @VA04250 00119000
XC RETCODE,RETCODE CLEAR RETURN CODE @VA04250 00120000
* * * * * * * *------- -------- -------- -------- ------* 00121000
* * * * * * * * FIND OUT IF THE TERMINAL IS A GRAPHIC 00122000
* * * * * * * * DEVICE OR A TYPEWRITER TYPE. 00123000
* * * * * * * *------- -------- -------- -------- ------* 00124000
LA R6,NULL SET UP TO TEST TERM TYPE @VA04250 00125000
BCTR R6,R0 FILL IT WITH 'FF' @VA04250 00126000
DC X'83670024' CONS DIAGNOSE @VA04250 00127000
ST R6,CONSOLE ADDRESS OF VIRTUAL CONSOLE @VA04250 00128000
ST R8,TYPESAVE SAVE REAL DEVICE TYPE @VA04250 00129000
TM TYPESAVE,CLASTERM IS IT A 2741 TYPE @VA04250 00130000
BNO GETDUMP NO - ASSUME GRAPHIC DEVICE @VA04250 00131000
TM TYPEREM,HIBYTEST IS IT A DISPLAY TEMINNAL? @VA09785 00132150
BNZ SETYPER NO-SET 2741 @VA09785 00132300
TM TYPEREM,LOBYTEST INSURE 3275,3276,3277 OR 3278 @VA09785 00132450
BNZ GETDUMP IT IS A DISPLAY TERMINAL--BRANCH @VA09785 00132600
SETYPER EQU * @VA09785 00132750
MVI TYPEFLAG,TYPER NOT 3270 - SET TYPEWRITER FLAG @VA04250 00134000
EJECT 00135000
* * * * * * * *------- -------- -------- -------- ------* 00136000
* * * * * * * * NOW START COMMUNICATION 00137000
* * * * * * * * FIND OUT IF HE NEEDS HELP 00138000
* * * * * * * *------- -------- -------- -------- ------* 00139000
GETDUMP BAL R10,CLEAR CLEAR SCREEN @VA04250 00140000
MVI PAGESW,PAGE1 RESET TO TYPE INFORMATION PAGE1 HRC001DM 00141990
REREAD DS 0H HRC001DM 00142980
LA R10,DUMPFSCB GET ADDRESS OF ANY OPEN DUMPFSCB HRC001DM 00143970
FSCLOSE FSCB=(R10) AND CLOSE IT HRC001DM 00144960
ENTER DS 0H HRC001DM 00145950
LA R8,EMSG7011 ADDRESS HRC001DM 00146940
LA R9,L'EMSG7011 AND LENGTH HRC001DM 00147930
BAL R10,WRTERM WRITE FIRST MESSAGE HRC001DM 00148920
LA R8,EMSG7012 ADDRESS HRC001DM 00149910
LA R9,L'EMSG7012 AND LENGTH HRC001DM 00150900
BAL R10,WRTERM WRITE FIRST MESSAGE HRC001DM 00151890
LA R8,EMSG7013 ADDRESS HRC001DM 00152880
LA R9,L'EMSG7013 AND LENGTH HRC001DM 00153870
BAL R10,WRTERM WRITE FIRST MESSAGE HRC001DM 00154860
LA R8,EMSG7014 ADDRESS HRC001DM 00155850
LA R9,L'EMSG7014 AND LENGTH HRC001DM 00156840
BAL R10,WRTERM WRITE FIRST MESSAGE HRC001DM 00157830
LA R8,INPUT ADDRESS @VA04250 00161000
BAL R10,RDTERM READ IT IN @VA04250 00162000
LTR R0,R0 NULL LINE?? @VA04250 00163000
BZ ENTER DONT LET HIM AWAY WITH THAT HRC001DM 00164490
LR R2,R0 GET INLINE LENGTH @VA04250 00165000
BAL R10,INCHECK CHECK 'HX' @V4075A2 00166000
BAL R10,TOKEN TOKENIZE INPUT LINE @V4075A2 00167000
* * * * * * * *------- -------- -------- -------- ------* 00168000
* * * * * * * * NOW SLOT THE NUMBER ONTO THE END OF THE 00169000
* * * * * * * * DUMP 'PRB' NAME, AND GET THE MODE. 00170000
* * * * * * * *------- -------- -------- -------- ------* 00171000
LA R2,L'PLIST1-THREEBYT MAX ALLOWED BYTES OF INPUT @VA04250 00172000
LA R3,PLIST+VDEND END OF VALID DATA IN PLIST @VA04250 00173000
LA R4,DUMPFSCB+FNEND END OF FILE NAME IN PLIST @VA04250 00174000
MVC DUMPFSCB+FSCBDNUM(L'ZEROS),ZEROS SET DUMP NO. 0 @VA04250 00175000
COMP CLI 0(R3),BLANK BLANK? @VA04250 00176000
BE BUMPER YES - NO MOVE @VA04250 00177000
MVC 0(CHARLEN,R4),0(R3) MOVE A CHARACTER @VA04250 00178000
BCTR R4,R0 AND FSCB PTR @VA04250 00179000
BUMPER BCTR R3,R0 DECREMENT PLIST PTR @VA04250 00180000
BCT R2,COMP AND TRY AGAIN @VA04250 00181000
CLC PLIST2,FENCE END OF LIST - NO MODE? @VA04250 00182000
BE STATE GO SEE IF THERE REALLY IS A DUM @VA04250 00183000
MVC DUMPFSCB+FM(CHARLEN),PLIST2 PLUG THE MODE @VA04250 00184000
* * * * * * * *------- -------- -------- -------- ------* 00185000
* * * * * * * * NOW SEE IF THE DUMP EXISTS 00186000
* * * * * * * *------- -------- -------- -------- ------* 00187000
STATE FSSTATE FSCB=DUMPFSCB,ERROR=STATERR @VA04250 00188000
L R2,ISWADD ITEM TABLE SW @VA04250 00189000
MVI 0(R2),NOTRED TURN IT OFF FOR THE NEW DUMP @VA04250 00190000
L R2,MAPRSADD LOAD MAP READ @VA04250 00191000
MVI 0(R2),NOTRED TURN IT OFF TOO @VA04250 00192000
L R2,RECNOADD ADDRESS OF LAST RECORD READ @VA04250 00193000
LA R3,NULL SET UP TO SET IT TO 'FF' @VA04250 00194000
BCTR R3,R0 SET TO FFFFFFFFF @VA04250 00195000
ST R3,0(R2) PLUG IN LAST REC READ @VA04250 00196000
L R2,HEXADADD ADDRESS OF SCROLL ADDRESS @VA04250 00197000
ST R3,0(R2) SET TO FOXES - NEW DUMP @VA04250 00198000
* * * * * * * *------- -------- -------- -------- ------* 00199000
* * * * * * * * WRITE THE READY MESSAGE 00200000
* * * * * * * *------- -------- -------- -------- ------* 00201000
REREADY CLI TYPEFLAG,TYPER TYPER? @VA04250 00202000
BNE GRAPHITE NO - SCREEN @VA04250 00203000
LA R8,SHORTRDY ADDRESS @VA04250 00204000
LA R9,L'SHORTRDY AND LENGTH @VA04250 00205000
BAL R10,WRTERM WRITE '*R' _ SHORT READY - 2741 @VA04250 00206000
B READY GO READ IN LINE @VA04250 00207000
GRAPHITE LA R8,READYMSG ADDRESS @VA04250 00208000
LA R9,L'READYMSG AND LENGTH @VA04250 00209000
BAL R10,WRTERM WRITE '*** READY ***' TO SCREEN @VA04250 00210000
B READY GO TO READ IN @VA04250 00211000
EJECT 00212000
* * * * * * * *------- -------- -------- -------- ------* 00213000
* * * * * * * THIS SECTION READS THE LINE ENTERED 00214000
* * * * * * * AT THE CONSOLE, AND PASSES CONTROL 00215000
* * * * * * * TO THE APPROPRIATE ROUTINE. 00216000
* * * * * * * *-----------------------------------------* 00217000
READY MVC INSAVE,BLANKOUT CLEAR SAVE AREA @VA04830 00218000
MVC INSAVE,INPUT SAVE LAST INPUT LINE @VA04250 00219000
MVC OLDINLEN,INLENGTH SAVE LAST INPUT LENGTH @VA04250 00220000
CLI PRINTONE,TURNOFF PRINT ON FOR A ONE-SHOT DEAL? @V4075A2 00221000
BE READIN NO - DONT CHANGE ANYTHING @V4075A2 00222000
MVI PRINTONE,TURNOFF YES - TURN OFF ONE SHOT FLAG @V4075A2 00223000
MVI PRINTSW,TURNOFF AND TURN PRINT OFF @V4075A2 00224000
READIN LA R8,INPUT ADDRESS OF BUFFER @V4075A2 00225000
BAL R10,RDTERM READ IT @VA04250 00226000
LTR R10,R0 GET INPUT LENGTH FOR 'HUH?' @VA04250 00227000
BZ REUSE CHECK IF 'REUSE' IS VALID @VA04250 00228000
LR R2,R10 GET INPUT LENGTH FOR TOKEN @VA04250 00229000
ST R2,INLENGTH SAVE INPUT LENGTH @VA04250 00230000
REINCHK BAL R10,INCHECK 'HX' ? @V4075A2 00231000
BAL R10,AMPTRUNK AMP NAME OVER 8 CHARS ?? @V4075A2 00232000
BAL R10,TOKEN TOKENIZE INPUT @V4075A2 00233000
PLISTSCN CLC PLIST(CHARLEN),VMBLOK VMBLOK? @V4075A2 00234000
BE VCHECK CHECK FOR ABBREVIATIONS @VA04250 00235000
CLC PLIST(THREEBYT),DMK DMKXXX @VA04250 00236000
BE GOMOD MOD SEARCH SET UP @VA04250 00237000
CLC PLIST(THREEBYT),HDK HDKXXX HRC001DM 00237300
BE GOMOD MOD SEARCH SET UP HRC001DM 00237600
CLC PLIST(CHARLEN),SCROLL SCROLL REQUEST? @VA04250 00238000
BE SCHECK ABBREV CHECK @VA04250 00239000
CLC PLIST(CHARLEN),REGS ALL REGS? @VA04250 00240000
BE RCHECK ABBREV CHECK @VA04250 00241000
CLC PLIST(TWOBYTES),G G REGS? @VA04250 00242000
BE GOREGS GEN REGS @VA04250 00243000
CLC PLIST(TWOBYTES),C C REGS? @VA04250 00244000
BE GOREGS CTL REGS @VA04250 00245000
CLC PLIST(CHARLEN),DISPLAY DISPLAY TYPE? @VA04250 00246000
BE DCHECK ABBREVIATION CHECK @VA04250 00247000
CLC PLIST(CHARLEN),TRACE TRACE REQUEST? @VA04250 00248000
BE TCHECK CHECK ABBREVIATIONS @VA04250 00249000
CLC PLIST(CHARLEN),LOCATE LOCATE? @VA04250 00250000
BE LCHECK GO CHECK @VA04250 00251000
CLC PLIST(L'QUERY),QUERY IS IT A QUESTION MARK? @VA04250 00252000
BE POSTIN GO SHOW INPUT LINE @VA04250 00253000
CLC PLIST(SEVENBYT),INVALID INVALID INPUT SIGNAL @VA04250 00254000
BE INQUIRY GO CHANGE 'HUH' CHARACTER @VA04250 00255000
CLC PLIST(CHARLEN),PRINT PRINT? @V4075A2 00256000
BE PCHECK GO TEST OUT THE COMMAND @V4075A2 00257000
CLC PLIST(CHARLEN),AMPERSAN &? @V4075A2 00258000
BE AMPCHECK GO HANDLE &NAME REQUEST @V4075A2 00259000
CLC PLIST,MAP NUC MAP REQUEST? @V4075A2 00260000
BE MAPCHECK YES - GO SET UP TO ADD MAP @V4075A2 00261000
CLC PLIST(CHARLEN),M MREGS ? @V4075A2 00262000
BE APCHECK GO TEST AP REGS REQUEST. @V4075A2 00263000
CLC PLIST(CHARLEN),A AREGS ? @V4075A2 00264000
BE APCHECK CHECK AP REGS REQUEST @V4075A2 00265000
* * * * * * * * ------- -------- -------- ------- * 00266000
* * * * * * * * THE INPUT WAS NOT RECOGNIZED. 00267000
* * * * * * * * SHOW THE USER HIS INPUT LINE 00268000
* * * * * * * * AND LET HIM RETRY 00269000
* * * * * * * * ------- -------- -------- ------- * 00270000
NOTKNOWN BAL R10,CLEAR CLEAR SCREEN @VA04250 00271000
LA R8,HUH ADDRESS OF '???...' CHARACTER @VA04250 00272000
LA R9,L'HUH AND LENGTH @VA04250 00273000
A R9,INLENGTH ADD THE LENGTH OF THE INPUT LINE @V4075A2 00274000
BAL R10,WRTERM DID NOT RECOGNIZE THE INPUT @VA04250 00275000
B REREADY GO BACK TO READ @VA04250 00276000
EJECT 00277000
* * * * * * * *------- -------- -------- -------- ------* 00278000
* * * * * * * * THESE HANDLE THE ROUTING TO THE VARIOUS 00279000
* * * * * * * * SUBROUTINES, AND THEIR RETURN. 00280000
* * * * * * * * EACH ROUTINE, WHERE APPROPRIATE, 00281000
* * * * * * * * CHECKS FOR VALID ABBREVIATIONS OF THE 00282000
* * * * * * * * SUBCOMMANDS. 00283000
* * * * * * * *------- -------- -------- -------- ------* 00284000
* * * * * * * * CHECK 'VIO' THEN GIVE VMBLOK A TRY 00285000
* * * * * * * * ------- -------- -------- ------- * 00286000
VCHECK CLC PLIST+ONE(L'NOPARM),NOPARM IS THIS JUST 'V' ? @VA04250 00287000
BE GOVMB TREAT IT AS A VMB REQUEST @VA04250 00288000
LA R2,PLIST+L'VIOBLOK-ONE COUNT LETTERS IN PLIST @VA04250 00289000
LA R3,VIOBLOK+L'VIOBLOK-ONE MATCH WITH THE TARGET @VA04250 00290000
LA R4,L'VIOBLOK-ONE COUNT TRIES DOWN TO 'VX' @VA04250 00291000
BAL R10,PCOMP GO TO PLIST CHECK ROUTINE @VA04250 00292000
B VMBCHECK NOT VIO - TRY VMB @VA04250 00293000
BAL R10,NULLCHK4 CHECK NO FOURTH TERM @VA04250 00294000
B GOIOB HIT ON VIO - GO TO IOB @VA04250 00295000
VMBCHECK LA R2,PLIST+L'VMBLOK-ONE PLIST ENTRY LENGTH @VA04250 00296000
LA R3,VMBLOK+L'VMBLOK-ONE MATCH VMBLOK @VA04250 00297000
LA R4,L'VMBLOK TRY ALL LETTERS @VA04250 00298000
BAL R10,PCOMP GO TO CHECK ROUTINE @VA04250 00299000
B NOTKNOWN NO LUCK @VA04250 00300000
* * * * * * * * ------- -------- -------- ------- * 00301000
* * * * * * * * VMBLOK SETUP 00302000
* * * * * * * * ------- -------- -------- ------- * 00303000
GOVMB BAL R10,CLEAR TOP OF SCREEN @VA04250 00304000
BAL R10,NULLCHK2 CHECK NO SECOND PARM @VA04250 00305000
L R15,VMBADD 'VMB' ADDRESS @VA04250 00306000
BALR R14,R15 GO @VA04250 00307000
LTR R15,R15 HOW WAS IT? @VA04250 00308000
BZ REREADY REAL GOOD @VA04250 00309000
B CODECHEK THAT BAD HUH? @VA04250 00310000
* * * * * * * * ------- -------- -------- ------- * 00311000
* * * * * * * * SCROLL VALIDITY CHECKING 00312000
* * * * * * * * ------- -------- -------- ------- * 00313000
SCHECK LA R2,PLIST+L'SCROLL COUNT LETTERS IN PLIST @VA04250 00314000
LA R3,SCROLL+L'SCROLL MATCH IN TARGET @VA04250 00315000
LA R4,L'SCROLL NUMBER OF TRIES @VA04250 00316000
BAL R10,PCOMP PLIST CHECKOUT @VA04250 00317000
B NOTKNOWN NO LUCK @VA04250 00318000
* * * * * * * * ------- -------- -------- ------- * 00319000
* * * * * * * * SET UP FOR SCROLL 00320000
* * * * * * * * ------- -------- -------- ------- * 00321000
GOSCROLL BAL R10,NULLCHK2 CHECK NO SECOND PARM @VA04250 00322000
LA R2,PLIST INPUT TO PASS TO SCROLL @VA04250 00323000
L R15,SCRADD SCROLL ROUTINE @VA04250 00324000
BALR R14,R15 GO SCROLL IT @VA04250 00325000
LTR R15,R15 OK ? @VA04250 00326000
BNZ CODECHEK WHAT WAS THE RET CODE @VA04250 00327000
B READY READ NEXT LINE @VA04250 00328000
* * * * * * * *------- -------- -------- -------- ------* 00329000
* * * * * * * * CHECK OUT 'RIOBLOK' 00330000
* * * * * * * * ------- -------- -------- ------- * 00331000
RCHECK CLC PLIST+ONE(L'NOPARM),NOPARM IS THIS JUST AN 'R'? @VA04250 00332000
BE GOREGS TREAT IT AS A REG REQUEST @VA04250 00333000
LA R2,PLIST+L'RIOBLOK-ONE 'RIO ' @VA04250 00334000
LA R3,RIOBLOK+L'RIOBLOK-ONE TARGET @VA04250 00335000
LA R4,L'RIOBLOK-ONE TRY DOWN TO 'RI' @VA04250 00336000
BAL R10,PCOMP CHECK PLIST @VA04250 00337000
B REGCHECK NOT RIO - TRY REGS @VA04250 00338000
BAL R10,NULLCHK3 CHECK NO THIRD PARM @VA04250 00339000
B GOIOB RIO REQUEST @VA04250 00340000
************************************************************ @V4075A2 00341000
* CHECK FOR MREGS OR AREGS REQUEST @V4075A2 00342000
************************************************************ @V4075A2 00343000
APCHECK LA R2,PLIST+L'XREGS-ONE COUNT PLIST ENTRY @V4075A2 00344000
LA R3,XREGS+L'XREGS-ONE COUNT TARGET @V4075A2 00345000
LA R4,L'XREGS-1 COUNT TIMES TO TRY @V4075A2 00346000
BAL R10,PCOMP CHECK ALL ABBREVIATIONS @V4075A2 00347000
B NOTKNOWN BAD RETURN @V4075A2 00348000
BAL R10,NULLCHK2 CHECK FOR NO SECOND TERM @V4075A2 00349000
B GOREGS OK - PASS IT TO DMMREG @V4075A2 00350000
* * * * * * * * ------- -------- -------- ------- * 00351000
* * * * * * * * NOT 'RIO' - NOW CHECK 'REGS' 00352000
* * * * * * * * ------- -------- -------- ------- * 00353000
REGCHECK LA R2,PLIST+L'REGS-ONE COUNT PLIST ENTRY @VA04250 00354000
LA R3,REGS+L'REGS-ONE COUNT IN TARGET @VA04250 00355000
LA R4,L'REGS COUNT TRIES @VA04250 00356000
BAL R10,PCOMP CHECK IT AGAINST TARGET @VA04250 00357000
B NOTKNOWN NOLUCK @VA04250 00358000
GOREGS BAL R10,NULLCHK2 CHECK NO SECOND PARM @VA04250 00359000
LA R2,PLIST GET THE COMMAND @VA04250 00360000
L R15,REGADD AND THE ADDRESS @VA04250 00361000
BALR R14,R15 AND GO REG IT @VA04250 00362000
LTR R15,R15 TEST RETCODE @VA04250 00363000
BNZ CODECHEK HOW BAD? @VA04250 00364000
B REREADY GO WRITE READY. @VA04250 00365000
***************************************************************@V4075A2 00366000
* &NAME ALLOWS USER TO EQUATE A GIVEN NAME TO A @V4075A2 00367000
* GIVEN SUBCOMMAND. '&' ONLY REQUESTS A LISTING @V4075A2 00368000
* OF ASSIGNED NAMES. CHECK THIS FIRST. @V4075A2 00369000
* ENTRIES, OF THE FORM '&NAME A B C' WHERE &NAME @V4075A2 00370000
* IS A USER SUPPLIED NAME, AND 'A B C' IS A SUBCOMMAND @V4075A2 00371000
* ARE STORED IN 'AMPTABLE', AS A STRING OF 8 BYTE @V4075A2 00372000
* TOKENS. NEW ENTRIES ARE ADDED TO THE END. IF @V4075A2 00373000
* THIS IS A REPLACE THE OLD ENTRY IS FIRST REMOVED, @V4075A2 00374000
* AND THE GAS EXTRACTED. @V4075A2 00375000
***************************************************************@V4075A2 00376000
AMPCHECK CLC AMPERSAN,PLIST IS THIS A LONE AMPERSAND ? @V4075A2 00377000
BE SHOWTAB YES - GO DISPLAY THE TABLE @V4075A2 00378000
***************************************************************@V4075A2 00379000
* AN &NAME SUBCOMMAND MAY NOT CONTAIN @V4075A2 00380000
* AN &NAME TERM NOR A PRINT SUBCOMMAND. @V4075A2 00381000
***************************************************************@V4075A2 00382000
CLC PLIST2(CHARLEN),PRINT IS THIS TO BE A PRINT? @V4075A2 00383000
BE ILLEGAMP YES - DONT ALLOW IT @V4075A2 00384000
LA R3,PLIST2 POINT TO NEXT TERM @V4075A2 00385000
TERM2CHK CLC FENCE,0(R3) ARE THERE MORE TERMS ? @V4075A2 00386000
BE TSEARCH NO MORE TERMS - GO SCAN TABLE @V4075A2 00387000
CLC 0(CHARLEN,R3),AMPERSAN IS THERE A SECOND AMPER ?@V4075A2 00388000
BE ILLEGAMP YES - GO ISSUE WARNING @V4075A2 00389000
LA R3,L'PLIST(R3) CHECK NEXT TERM @V4075A2 00390000
B TERM2CHK AND TRY THE NEXT @V4075A2 00391000
***************************************************************@V4075A2 00392000
* SEARCH THE NAMETABLE FOR THE &NAME, @V4075A2 00393000
* THE END OF THE ENTRIES, OR THE END OF THE TABLE @V4075A2 00394000
***************************************************************@V4075A2 00395000
TSEARCH LA R3,AMPTABLE POINT TO THE &NAME TABLE @V4075A2 00396000
ENDCHECK CLC FENCE,0(R3) END OF TABLE-SPACE? @V4075A2 00397000
BE OFFEND YES - NOT IN TAB. CHECK 2ND TERM @V4075A2 00398000
CLC BLANKS,0(R3) END OF ENTRIES @V4075A2 00399000
BE NOTINTAB NOT IN TABLE - ADD IT @V4075A2 00400000
CLC PLIST,0(R3) NAME WE'RE SEEKING ? @V4075A2 00401000
BE FOUNDAMP YES - NAME IS IN TABLE @V4075A2 00402000
LA R3,L'AMPTABLE(R3) NOT YET - TRY NEXT ENTRY @V4075A2 00403000
B ENDCHECK ROUND AGAIN @V4075A2 00404000
OFFEND CLC PLIST2,FENCE NO SECOND TERM - IE CALLING ? @V4075A2 00405000
BE NOTKNOWN YES - SO IT WAS NOT FOUND @V4075A2 00406000
B FULLMSG NO - ADDING, BUT NO ROOM IN TAB. @V4075A2 00407000
***************************************************************@V4075A2 00408000
* ADD THIS NAME TO THE END OF THE TABLE @V4075A2 00409000
* R3 POINTS TO THE AMPTABLE SLOT @V4075A2 00410000
***************************************************************@V4075A2 00411000
NOTINTAB CLC PLIST2,FENCE INVALID CALL TO TABLE? @V4075A2 00412000
BE NOTKNOWN YES SEND IT BACK @V4075A2 00413000
LA R2,PLIST NO - ADD IT - POINT TO INPUT @V4075A2 00414000
ST R3,NEWSTART SAVE THE START INCASE NO ROOM @V4075A2 00415000
NEXTTERM MVC 0(L'AMPTABLE,R3),0(R2) MOVE THE PLIST ENTRY TO THE TABLE 00416000
LA R2,L'PLIST(R2) NEXT PLIST ENTRY @V4075A2 00417000
CLC FENCE,0(R2) IS IT THE END OF THE PLIST? @V4075A2 00418000
BE AMPEND YES - &NAME IS ADDED - EXIT @V4075A2 00419000
LA R3,L'AMPTABLE(R3) NEXT SLOT IN &NAME TABLE @V4075A2 00420000
CLC FENCE,0(R3) ARE WE OFF THE END OF THE TABLE? @V4075A2 00421000
BNE NEXTTERM NOT YET - TRY AGAIN @V4075A2 00422000
***************************************************************@V4075A2 00423000
* IF WE FILLED UP THE TABLE, WE MAY HAVE A PART @V4075A2 00424000
* OF AN ENTRY IN THE TABLE. THIS REMOVES IT @V4075A2 00425000
***************************************************************@V4075A2 00426000
L R3,NEWSTART FILLED UP, CLEAR OUT PART ENTRY @V4075A2 00427000
ST R3,NEXTSLOT THIS IS THE NEW NEXT SLOT @V4075A2 00428000
FENCEYET CLC FENCE,0(R3) BACK TO END OF TABLE @V4075A2 00429000
BE FULLMSG YES - GO SEND NOROOM MSG @V4075A2 00430000
MVC 0(L'AMPTABLE,R3),BLANKS CLEAR OUT AN ENTRY @V4075A2 00431000
LA R3,L'AMPTABLE(R3) BUMP TO NEXT SLOT @V4075A2 00432000
B FENCEYET AND TRY THE NEXT @V4075A2 00433000
***************************************************************@V4075A2 00434000
* AN &TERM WAS FOUND LURKING IN THE SUBCOMMAND. @V4075A2 00435000
* SEND A MESSAGE TO THE USER, WARNING HIM @V4075A2 00436000
***************************************************************@V4075A2 00437000
ILLEGAMP LA R8,ILLAMPMS GET THE TWO AMPERS MESSAGE @V4075A2 00438000
LA R9,TAMSGLEN AND ITS LENGTH @V4075A2 00439000
BAL R10,WRTERM AND WRITE IT @V4075A2 00440000
B AMPEND GO TO GET OUT @V4075A2 00441000
***************************************************************@V4075A2 00442000
* HERE AS A RESULT OF AN '&' REQUEST WE DISPLAY @V4075A2 00443000
* THE CURRENT TABLE ENTRIES @V4075A2 00444000
***************************************************************@V4075A2 00445000
SHOWTAB MVI AMPBUFF,BLANK SET TO CLEAR @V4075A2 00446000
MVC AMPBUFF+1(L'AMPBUFF-1),AMPBUFF BUFFER TO BLANKS @V4075A2 00447000
LA R2,AMPTABLE START OF TABLE @V4075A2 00448000
LA R3,AMPBUFF START OF BUFFER @V4075A2 00449000
TABLEMOV MVC 0(L'AMPTABLE,R3),0(R2) MOVE TERM INTO THE BUFFER@V4075A2 00450000
LA R2,L'AMPTABLE(R2) BUMP INPUT POINTER @V4075A2 00451000
LA R3,L'AMPTABLE+1(R3) AND O/P PTR (MAY BE 8 BY)@V4075A2 00452000
CLC BLANKS,0(R2) END OF ENTRIES ? @V4075A2 00453000
BE WRTABEND YES - MARK END OF TABLE @V4075A2 00454000
CLC FENCE,0(R2) END OF TABLE ? @V4075A2 00455000
BE WRTABEND SAME DEAL @V4075A2 00456000
CLC 0(CHARLEN,R2),AMPERSAN OR IS IT THE NEXT ENTRY @V4075A2 00457000
BE WRTABLE WRITE IT BUT DONT FLAG END @V4075A2 00458000
B TABLEMOV STILL WITHIN ENTRY - BACK AROUND @V4075A2 00459000
***************************************************************@V4075A2 00460000
* NOW THE LINE IS IN PLACE. RUN THROUGH IT @V4075A2 00461000
* AND STRIP OUT THE BLANKS, THEN WRITE IT. @V4075A2 00462000
***************************************************************@V4075A2 00463000
WRTABEND MVI TABENDSW,TURNON SET END OF ENTRIES @V4075A2 00464000
WRTABLE XC OUTLINE,OUTLINE CLEAR THE OUTPUT AREA @V4075A2 00465000
MVI ZBSWITCH,TURNOFF SET SWITCH OFF @V4075A2 00466000
LA R4,AMPBUFF INPUT PTR @V4075A2 00467000
LA R5,OUTLINE OUTPUT POINTER @V4075A2 00468000
LA R6,L'AMPBUFF COUNT BYTES @V4075A2 00469000
ZBTEST CLI 0(R4),BLANK IS IT A BLANK? @V4075A2 00470000
BE ZBCHECK IF SO, IS IT THE FIRST? @V4075A2 00471000
CLI 0(R4),HEXZERO OR A HEX '00'? @V4075A2 00472000
BE ZBCHECK FIRST? @V4075A2 00473000
MVI ZBSWITCH,TURNOFF NEITHER - SET SWITCH OFF @V4075A2 00474000
MOVEBYTE MVC 0(ONE,R5),0(R4) MOVE A BYTE TO OUTPUT @V4075A2 00475000
LA R5,ONE(R5) BUMP OUTPUT PTR @V4075A2 00476000
BUMPIN LA R4,ONE(R4) BUMP INPUT PTR @V4075A2 00477000
BCT R6,ZBTEST TRY NEXT CHAR @V4075A2 00478000
B WRITESET ALL DONE - SET UP WRITE @V4075A2 00479000
ZBCHECK CLI ZBSWITCH,TURNON IS THIS NOT THE FIRST ZERO? @V4075A2 00480000
BE BUMPIN YES - SKIP IT @V4075A2 00481000
MVI ZBSWITCH,TURNON NO - SET IT ON @V4075A2 00482000
B MOVEBYTE BUT MOVE IT ANYWAY @V4075A2 00483000
***************************************************************@V4075A2 00484000
* NOW ALL BYTES ARE MOVED. R5 POINTS @V4075A2 00485000
* TO THE LAST CHAR IN THE COMPRESSED LINE @V4075A2 00486000
* FIND ITS LENGTH, AND THEN WRITE IT. @V4075A2 00487000
***************************************************************@V4075A2 00488000
WRITESET LA R6,OUTLINE-ONE START OF LINE @V4075A2 00489000
SR R5,R6 LENGTH OF LINE @V4075A2 00490000
LR R9,R5 PUT IT IN R9 @V4075A2 00491000
LA R8,OUTLINE START OF LINE @V4075A2 00492000
BAL R10,WRTERM GO WRITE IT @V4075A2 00493000
***************************************************************@V4075A2 00494000
* SEE IF WE HAVE WRITTEN ALL THE LINES @V4075A2 00495000
* OR IF WE HAVE MORE TO GO. @V4075A2 00496000
***************************************************************@V4075A2 00497000
CLI TABENDSW,TURNON DID WE REACH LAST ENTRY ? @V4075A2 00498000
BE ENDSWOFF YES - GO WRAP UP @V4075A2 00499000
LA R3,AMPBUFF START OF OUTPUT BUFFER @V4075A2 00500000
MVI AMPBUFF,BLANK AND CLEAR IT @V4075A2 00501000
MVC AMPBUFF+1(L'AMPBUFF-1),AMPBUFF @V4075A2 00502000
B TABLEMOV AND GO DO THE NEXT ONE @V4075A2 00503000
ENDSWOFF MVI TABENDSW,TURNOFF YES - RESET THE SWITCH. @V4075A2 00504000
B AMPEND AND EXIT @V4075A2 00505000
***************************************************************@V4075A2 00506000
* WE FOUND THE NAME IN THE TABLE. @V4075A2 00507000
* IF THERE IS A SECOND PARM ON THE INPUT, @V4075A2 00508000
* REMOVE THE OLD ENTRY AND CLOSE UP THE TABLE. @V4075A2 00509000
* THEN ADD THE NEW ENTRY TO THE END. @V4075A2 00510000
* IF THERE IS NO SECOND PARM IN THE INPUT, @V4075A2 00511000
* FETCH THE EXISTING ENTRY AND SUBMIT IT. @V4075A2 00512000
***************************************************************@V4075A2 00513000
FOUNDAMP CLC PLIST2,FENCE IS THERE NO SECOND TERM ? @V4075A2 00514000
BE SUBMIT RIGHT - GO SEND IN THE SUBCOMMAND@V4075A2 00515000
***************************************************************@V4075A2 00516000
* THERE IS A PARM. 'PERFORM TABLE MAINTENANCE' @V4075A2 00517000
***************************************************************@V4075A2 00518000
ST R3,NEXTSLOT TRUE IF WE REPLACE LAST ENTRY @V4075A2 00519000
LA R2,L'AMPTABLE(R3) NEXT SLOT IN TABLE @V4075A2 00520000
NEXTNAME CLC 0(CHARLEN,R2),AMPERSAN SCAN FOR NEXT '&' @V4075A2 00521000
BE CLOSEUP FOUND IT - GO CLOSE GAP @V4075A2 00522000
CLC BLANKS,0(R2) THEN IS IT BLANKS ? @V4075A2 00523000
BE LASTENTR YES - THIS WAS THE LAST ENTRY @V4075A2 00524000
CLC FENCE,0(R2) END OF TABLE AREA ? @V4075A2 00525000
BE LASTENTR LAST IN SPACE @V4075A2 00526000
LA R2,L'AMPTABLE(R2) NONE OF THE ABOVE @V4075A2 00527000
B NEXTNAME TRY NEXT TERM @V4075A2 00528000
***************************************************************@V4075A2 00529000
* THIS BLANKS OUT THE ENTRY IF IT WAS THE LAST ONE @V4075A2 00530000
***************************************************************@V4075A2 00531000
LASTENTR MVC 0(L'AMPTABLE,R3),BLANKS CLEAR OUT THE ENTRY @V4075A2 00532000
LA R3,L'AMPTABLE(R3) POINT TO NEXT TERM @V4075A2 00533000
CLC BLANKS,0(R3) TABLE EMPTY ? @V4075A2 00534000
BE ADDNEXT YES - GO PLUG IT IN @V4075A2 00535000
CLC FENCE,0(R3) OR END OF TABLE SPACE ? @V4075A2 00536000
BE ADDNEXT EITHER WAY, GO PLUG IN THE NEW ON@V4075A2 00537000
B LASTENTR NO - GO CLEAR MORE @V4075A2 00538000
***************************************************************@V4075A2 00539000
* NOW CLOSE UP TO COVER THE OLD NAME @V4075A2 00540000
* R2 POINTS TO NEXT VALID NAME, R3 TO THE OLD NAME. @V4075A2 00541000
***************************************************************@V4075A2 00542000
CLOSEUP MVC 0(L'AMPTABLE,R3),0(R2) MOVE ENTRY LEFT IN TABLE @V4075A2 00543000
LA R2,L'AMPTABLE(R2) BUMP INPUT PTR @V4075A2 00544000
LA R3,L'AMPTABLE(R3) AND OUT PTR @V4075A2 00545000
CLC FENCE,0(R2) OUT OF SPACE ? @V4075A2 00546000
BE LAPCHECK GO CHECK ENDING CONDITION @V4075A2 00547000
CLC BLANKS,0(R2) OR ALL DONE ? @V4075A2 00548000
BE LAPCHECK CHECK ENDING @V4075A2 00549000
B CLOSEUP NOT YET - ROUND AGAIN @V4075A2 00550000
***************************************************************@V4075A2 00551000
* NOW CHECK THAT THE WHOLE ENTRY WAS CLEARED @V4075A2 00552000
***************************************************************@V4075A2 00553000
LAPCHECK ST R3,NEXTSLOT SAVE THE POINTER TO NEXT SLOT @V4075A2 00554000
LAPLOOP CLC BLANKS,0(R3) HAS IT BEEN CLEARED ? @V4075A2 00555000
BE ADDNEXT YES - GO ADD NEW ENTRY @V4075A2 00556000
CLC FENCE,0(R3) OR IS IT END OF TABLE ? @V4075A2 00557000
BE ADDNEXT YES - GO ADD THE NEW ENTRY @V4075A2 00558000
MVC 0(L'AMPTABLE,R3),BLANKS NO - DO IT NOW @V4075A2 00559000
LA R3,L'AMPTABLE(R3) LOOK AT THE NEXT. @V4075A2 00560000
B LAPLOOP AND ROUND AGAIN @V4075A2 00561000
***************************************************************@V4075A2 00562000
* THE LIST IS NOW CONDENSED. ADD THE NEW @V4075A2 00563000
* ENTRY ONTO THE END, GETTING THE STARTING @V4075A2 00564000
* ADDRESS FROM 'NEXTSLOT' @V4075A2 00565000
************************************************************* @V4075A2 00566000
ADDNEXT LA R2,PLIST POINT TO NEW ENTRY @V4075A2 00567000
L R3,NEXTSLOT POINT TO NEXTSLOT @V4075A2 00568000
NEXTOKEN MVC 0(L'AMPTABLE,R3),0(R2) MOVE IN THE TOKEN @V4075A2 00569000
LA R2,L'AMPTABLE(R2) BUMP INPUT @V4075A2 00570000
LA R3,L'AMPTABLE(R3) AND OUTPUT @V4075A2 00571000
CLC FENCE,0(R2) END OF INPUT FROM PLIST? @V4075A2 00572000
BE AMPEND YES ALL MOVED @V4075A2 00573000
CLC FENCE,0(R3) END OF TABLE SPACE ? @V4075A2 00574000
BE NOROOM RIGHT - GO SEND MESSAGE @V4075A2 00575000
B NEXTOKEN NO - GO GET NEXT @V4075A2 00576000
***************************************************************@V4075A2 00577000
* CLEAR OUT THE PARTIAL ENTRY AND @V4075A2 00578000
* WRITE THE 'NO ROOM AT THE TABLE' MESSAGE @V4075A2 00579000
***************************************************************@V4075A2 00580000
NOROOM L R3,NEXTSLOT POINT TO FIRST TRUE SPACE @V4075A2 00581000
CLEARTAB MVC 0(L'AMPTABLE,R3),BLANKS CLEAR A SLOT @V4075A2 00582000
LA R3,L'AMPTABLE(R3) POINT TO NEXT TO CLEAR @V4075A2 00583000
CLC BLANKS,0(R3) IS IT ALREADY BLANK ? @V4075A2 00584000
BE FULLMSG YES - DONE - GO TO MSG @V4075A2 00585000
CLC FENCE,0(R3) OR END OF TABLE? @V4075A2 00586000
BNE CLEARTAB NO - GO DO NEXT @V4075A2 00587000
FULLMSG LA R8,TABFULMS GET THE ADDRESS OF THE MSG @V4075A2 00588000
LA R9,TFMSGLEN AND THE LENGTH @V4075A2 00589000
BAL R10,WRTERM AND GO WRITE IT @V4075A2 00590000
B AMPEND AND GET OUT @V4075A2 00591000
***************************************************************@V4075A2 00592000
* GET THE SUBCOMMAND FROM THE TABLE AND @V4075A2 00593000
* SEND IT TO BE PROCESSED. @V4075A2 00594000
***************************************************************@V4075A2 00595000
SUBMIT MVC INSAVE,BLANKOUT CLEAR SAVE AREA @V4075A2 00596000
MVC INSAVE,INPUT SAVE INPUT LINE @V4075A2 00597000
MVC OLDINLEN,INLENGTH AND LENGTH @V4075A2 00598000
LA R4,L'AMPTABLE(R3) R4 NOW START OF SUBC. @V4075A2 00599000
LA R3,INPUT WHERE TO PUT IT @V4075A2 00600000
LA R2,NULL SET COUNTER @V4075A2 00601000
AMPTOPLS MVC 0(L'AMPTABLE,R3),0(R4) MOVE IN A TOKEN @V4075A2 00602000
LA R4,L'AMPTABLE(R4) BUMP INPUT @V4075A2 00603000
LA R3,L'AMPTABLE+1(R3) AND OUTPUT @V4075A2 00604000
LA R2,L'AMPTABLE+1(R2) COUNT THE BYTES MOVED IN @V4075A2 00605000
CLC 0(CHARLEN,R4),AMPERSAN START OF NEXT ENTRY ? @V4075A2 00606000
BE COUNTIT YES - GO SAVE LENGTH @V4075A2 00607000
CLC BLANKS,0(R4) OR END OF TABLE? @V4075A2 00608000
BE COUNTIT YES - GO SAVE LENGTH @V4075A2 00609000
CLC FENCE,0(R4) OR END OF TABLE SPACE ? @V4075A2 00610000
BE COUNTIT YES - GO SAVE LENGTH @V4075A2 00611000
B AMPTOPLS NONE OF ABOVE - MOVE IN TOKEN @V4075A2 00612000
COUNTIT ST R2,INLENGTH SAVE THE INPUT LENGTH @V4075A2 00613000
B REINCHK ALL DONE - GO TOKENIZE @V4075A2 00614000
************************************************************ @V4075A2 00615000
* THE LENGTH OF AN ''&NAME'' MUST NOT EXCEED @V4075A2 00616000
* EIGHT BYTES - CHECK FOR THIS. @V4075A2 00617000
************************************************************ @V4075A2 00618000
AMPTRUNK LA R3,INPUT START OF INPUT @V4075A2 00619000
BCHK CLI 0(R3),BLANK SCAN FOR START OF DATA @V4075A2 00620000
BNE AMP THEN IS IT AN AMPERSAND? @V4075A2 00621000
LA R3,1(R3) LOOK FOR NEXT @V4075A2 00622000
B BCHK AND TRY IT @V4075A2 00623000
AMP CLC 0(CHARLEN,R3),AMPERSAN IS IT AN &NAME DEAL? @V4075A2 00624000
BNE NOTRUNK NO - NO CHECK NEEDED @V4075A2 00625000
LA R4,L'PLIST CHECK FOR TOTAL 8 BYTES @V4075A2 00626000
AMPTRK LA R3,1(R3) BUMP TO NAME @V4075A2 00627000
CLI 0(R3),BLANK OFF THE END ? @V4075A2 00628000
BE NOTRUNK YES - LENGTH IS OK @V4075A2 00629000
BCT R4,AMPTRK NOT YET - GO COUNT MORE @V4075A2 00630000
B NOTKNOWN &NAME IS TOO LONG - DUMP IT @V4075A2 00631000
NOTRUNK BR R10 RETURN @V4075A2 00632000
***************************************************************@V4075A2 00633000
* ENDING ROUTINE @V4075A2 00634000
***************************************************************@V4075A2 00635000
AMPEND B REREADY BACK TO WORK @V4075A2 00636000
************************************************************ @V4075A2 00637000
* SAVE THE SECOND PARM ON THIS LINE, AS IT IS THE @V4075A2 00638000
* SEARCH ARGUMENT FOR THE LOCATE COMMAND, AND CANNOT @V4075A2 00639000
* BE TOKENIZED. @V4075A2 00640000
************************************************************ @V4075A2 00641000
SAVSTRNG LA R3,INPUT START OF INPUT LINE @V4075A2 00642000
L R4,INLENGTH AND ITS LENGTH @V4075A2 00643000
STRINGSC CLI 0(R3),BLANK SCAN LEADING BLANKS @V4075A2 00644000
BNE LOCATEP1 NO - INTO FIRST PARM (L) @V4075A2 00645000
LA R3,1(R3) NEXT INPUT BYTE @V4075A2 00646000
BCT R4,STRINGSC GO SCAN LINE @V4075A2 00647000
B NOTKNOWN FELL OFF THE END ????? @V4075A2 00648000
LOCATEP1 CLI 0(R3),BLANK SCAN P1 TILL YOU FIND THE BLANK @V4075A2 00649000
BE LOCATES1 NOW GO LOOK FOR SECOND PARM @V4075A2 00650000
LA R3,1(R3) NEXT BYTE @V4075A2 00651000
BCT R4,LOCATEP1 IF NOT TOO FAR @V4075A2 00652000
B NOTKNOWN END OF LINE @V4075A2 00653000
LOCATES1 CLI 0(R3),BLANK SCAN THIS SPACE FOR SECOND PARM @V4075A2 00654000
BNE LOCSTRNG GOT IT - GO MOVE IT @V4075A2 00655000
LA R3,1(R3) NO - TRY NEXT @V4075A2 00656000
BCT R4,LOCATES1 TRY AGAIN @V4075A2 00657000
B NOTKNOWN OFF THE END @V4075A2 00658000
************************************************************ @V4075A2 00659000
* NOW R3 POINTS TO THE FIRST BYTE OF THE LOCATE SEARCH @V4075A2 00660000
* ARGUMENT. FIND THE LENGTH OF THE BALANCE OF THE INPUT @V4075A2 00661000
* AND MOVE IT TO STRINGAD WHERE DMMLOC CAN FIND IT @V4075A2 00662000
************************************************************ @V4075A2 00663000
LOCSTRNG LA R4,INPUT POINT TO START OF INPUT LINE @V4075A2 00664000
A R4,INLENGTH NOW POINT TO END OF INPUT @V4075A2 00665000
SR R4,R3 R2 NOW HAS LENGTH OF TERMS 2 - 5 @V4075A2 00666000
BM FIXUP NOTHING CAN GO WRONG...GO WRONG..@V4075A2 00667000
C R4,MAXSTRNG GO WRONG... GO WRONG... @V4075A2 00668000
BH FIXUP BUT IF IT DOES... @V4075A2 00669000
SAVESTLN ST R4,STRINGLN SAVE IT FOR DMMLOC @V4075A2 00670000
BCTR R4,R0 SET UP LENGTH FOR EX @V4075A2 00671000
MVI STRINGAD,BLANK SET UP TO CLEAR STRING @V4075A2 00672000
MVC STRINGAD+1(L'STRINGAD-1),STRINGAD CLR TO BLANKS @V4075A2 00673000
EX R4,STRMOVE MOVE THE STRING @V4075A2 00674000
BR R10 RETURN TO GO TO DMMLOC @V4075A2 00675000
FIXUP L R4,MAXSTRNG SET ARBITRARY MAX OF 148 @V4075A2 00676000
B SAVESTLN AND GO SAVE IT @V4075A2 00677000
STRMOVE MVC STRINGAD(0),0(R3) MOVE THE STRING @V4075A2 00678000
* * * * * * * * ------- -------- -------- ------- * 00679000
* * * * * * * * DISPLAY COMMAND 00680000
* * * * * * * * ------- -------- -------- ------- * 00681000
DCHECK CLI PLIST2,PC % WITH NO ADDRESS? @VA04250 00682000
BE NOTKNOWN YES - SEND IT BACK @VA04250 00683000
LA R2,PLIST+L'DISPLAY-ONE END OF PLIST ENTRY @VA04250 00684000
LA R3,DISPLAY+L'DISPLAY-ONE END OF TARGET @VA04250 00685000
LA R4,L'DISPLAY COUNT @VA04250 00686000
BAL R10,PCOMP GO CHECK IT @VA04250 00687000
B NOTKNOWN NO LUCK @VA04250 00688000
GOFED BAL R10,ADLENGTH CHECK FOR ONLY SIX ADD DIGITS @VA04250 00689000
BAL R10,NULLCHK4 CHECK NO FOURTH TERM @VA04250 00690000
CLC PLIST3,FENCE IS THERE NO LENGTH TERM? @VA04250 00691000
BE GOFEX YES - TREAT IT AS AN 'X' @VA04250 00692000
LA R2,PLIST PLIST ADDRESS @VA04250 00693000
L R15,FEDADD DUMP @VA04250 00694000
BALR R14,R15 GO @VA04250 00695000
LTR R15,R15 TEST @VA04250 00696000
BNZ CODECHEK HOW BAD @VA04250 00697000
L R3,HEXADADD DISPLAY ADDRESS IN HEX @VA04250 00698000
ST R2,0(R3) PLUG LAST ADDRESS FROM DUMP @VA04250 00699000
B REREADY GET NEXT @VA04250 00700000
* * * * * * * * ------- -------- -------- ------- * 00701000
* * * * * * * * TRACE REQUEST 00702000
* * * * * * * * ------- -------- -------- ------- * 00703000
TCHECK LA R2,PLIST+L'TRACE-ONE PLIST FOR TRACE @VA04250 00704000
LA R3,TRACE+L'TRACE-ONE TARGET @VA04250 00705000
LA R4,L'TRACE COUNT TRIES @VA04250 00706000
BAL R10,PCOMP PLIST CHECKOUT @VA04250 00707000
B NOTKNOWN NO LUCK @VA04250 00708000
* * * * * * * * ------- -------- -------- ------- * 00709000
* * * * * * * * TRACE SET UP 00710000
* * * * * * * * ------- -------- -------- ------- * 00711000
GOTRACE LA R2,PLIST PLIST @VA04250 00712000
BAL R10,NULLCHK3 CHECK NO THIRD PARM @VA04250 00713000
L R15,TRACEADD ADDRESS @VA04250 00714000
BALR R14,R15 GO @VA04250 00715000
LTR R15,R15 RETCODE ZERO? @VA04250 00716000
BNZ CODECHEK WELL HOW BAD WAS IT @VA04250 00717000
L R3,HEXADADD LAST ADDRESS DISPLAYED @VA04250 00718000
LA R2,0(R2) INDICATE DUMP NOT LAST COMMAND @VA04250 00719000
S R2,SCBKUP CALC CURRENT LINE PTR FOR SCROLL @VA04250 00720000
ST R2,0(R3) PLUG LAST ADDRESS FOR SCROLL @VA04250 00721000
B REREADY GET NEXT CMD @VA04250 00722000
************************************************************ @V4075A2 00723000
* USER HAS CALLED MAP TO ADD A NUC MAP TO THE END OF THE DUMP. @V4075A2 00724000
* THIS GETS SPACE FOR MAP'S BUFFER, THEN READS THE DUMP @V4075A2 00725000
* TO SEE THAT THERE IS NOT ALREADY A MAP ON THE END. @V4075A2 00726000
* IT THEN FILLS IN SHARECON WITH THE DATA MAP WILL NEED, @V4075A2 00727000
* THE DUMP NUMBER AND THE ADDRESS OF DMKCPEND. @V4075A2 00728000
* IN R1 IT THEN PASSES TO DMMMAP A POINTER TO THE @V4075A2 00729000
* ADDRESS OF 20K BUFFER FOR MAP TO HOLD THE CONDENSED 00730000
* LOAD MAP. ON RETURN IT FREES THE STORAGE AND, IF THE @V4075A2 00731000
* RETURN IS OK, IT TELLS THE USER. @V4075A2 00732000
************************************************************ @V4075A2 00733000
MAPCHECK DMSFREE DWORDS=2560,ERR=FREEERR GET 20K FOR BUFFERS @VA08369 00734000
ST R1,GOTTENAD SAVE THE POINTER @V4075A2 00735000
LR R2,R1 GET IT IN A WORK REG @V4075A2 00736000
************************************************************ @V4075A2 00737000
* NOW READ THE DUMP INFORMATION RECORD TO FIND @V4075A2 00738000
* HOW MANY RECORDS IN THE ORIGINAL DUMP. @V4075A2 00739000
************************************************************ @V4075A2 00740000
LA R3,DUMPFSCB FSCB FOR READ @V4075A2 00741000
FSREAD FSCB=(R3),BUFFER=(R2),ERROR=RDERR,RECNO=2 @V4075A2 00742000
USING DMPINREC,R2 LAY DUMPINREC OVER THE RECORD @V4075A2 00743000
LA R2,DMPPGMAP+ITEMTAB INCREMENT TO THE PAGE DATA @V4075A2 00744000
DROP R2 AND RETURN R2 @V4075A2 00745000
************************************************************ @V4075A2 00746000
* NOW SCAN THE ITEM TABLE FOR THE 'FFFF' INDICATING THE @V4075A2 00747000
* END OF THE ORIGINAL DUMP ENTRIES. @V4075A2 00748000
************************************************************ @V4075A2 00749000
LA R5,NULL SET COUNTER TO 0 @V4075A2 00750000
L R4,MAXCOUNT SET FOR TOP LIMIT TO TRIES @V4075A2 00751000
EOTABLE CLC EOTFOX,0(R2) END OF THE TABLE @V4075A2 00752000
BE READCHK SURE - GO CHECK FOR DUMP @V4075A2 00753000
LA R2,TWO(R2) NO - BUMP THE TABLE POINTER @V4075A2 00754000
LA R5,ONE(R5) AND BUMP THE COUNTER @V4075A2 00755000
BCT R4,EOTABLE AND TRY ANOTHER @V4075A2 00756000
LA R8,ITBLMSG WARN ABOUT BAD ITEM TABLE @V4075A2 00757000
LA R9,L'ITBLMSG AND LENGTH @V4075A2 00758000
BAL R10,WRTERM AND GO SEND IT @V4075A2 00759000
************************************************************ @V4075A2 00760000
* NOW READ PAST THE END OF THE ORIGINAL DUMP. IF THERE IS @V4075A2 00761000
* NO NUC MAP, WE SHOULD GET A READ ERROR. @V4075A2 00762000
************************************************************ @V4075A2 00763000
READCHK L R4,GOTTENAD ADDRESS FOR READ BUFFER @V4075A2 00764000
LA R5,DUMMIES(R5) EXTRA RECS AT START OF DUMP @V4075A2 00765000
FSREAD FSCB=(R3),BUFFER=(R4),RECNO=(R5) @V4075A2 00766000
LR R2,R15 SAVE THE RETURN CODE @V4075A2 00767000
C R2,EOF EOF? - NORMAL - NO MAP @V4075A2 00768000
BE OKNOMAP YES - GO SET UP TO GO TO MAP @V4075A2 00769000
C R2,NOERR IS THERE A MAP THERE? @V4075A2 00770000
BE TWOMAPS YES - GO WARN USER @V4075A2 00771000
B RDERR MUST BE SOME OTHER ERR @V4075A2 00772000
************************************************************ @V4075A2 00773000
* WRITE THE ERROR MSG "MAP ALREADY PRESENT" @V4075A2 00774000
************************************************************ @V4075A2 00775000
TWOMAPS LA R8,TWOMAPMS MAP ALREADY PRESENT MSG @V4075A2 00776000
LA R9,L'TWOMAPMS AND LENGTH @V4075A2 00777000
BAL R10,WRTERM AND GO WRITE IT @V4075A2 00778000
B REREADY AND BACK TO WORK @V4075A2 00779000
************************************************************ @V4075A2 00780000
* NOW SET UP THE VALUES DMMMAP EXPECTS TO FIND IN SHARECON. @V4075A2 00781000
* FIRST THE DUMPNUMBER, FROM THE DUMPFSCB, @V4075A2 00782000
* THEN THE ADDRESS OF DMKCPEND FROM THE SYMBOL TABLE. @V4075A2 00783000
************************************************************ @V4075A2 00784000
OKNOMAP MVC DUMPNUM,DUMPFSCB+L'DUMPNUM PLUG THIS DUMP NUM @V4075A2 00785000
************************************************************ @V4075A2 00786000
* NOW FIND ADDRESS OF DMKCPEND FOR MAP TO CHECK AGAINST @V4075A2 00787000
* THE LOAD LOAD MAP VALUE FOR CPEND. READ IN THE SYMBOL @V4075A2 00788000
* TABLE AND SCAN FOR CPEND @V4075A2 00789000
************************************************************ @V4075A2 00790000
FSREAD FSCB=(R3),BUFFER=(R4),RECNO=1,ERROR=RDERR @V4075A2 00791000
ENDYET CLC CPEND,0(R4) IS THIS DMKCPEND? @V4075A2 00792000
BE GOTEND YES - GO SAVE ADDRESS @V4075A2 00793000
LA R4,TABENT(R4) NO - BUMP TO NEXT SYM TAB ENTRY @V4075A2 00794000
B ENDYET AND TRY IT @V4075A2 00795000
GOTEND L R4,EIGHT(R4) GO TO ADDRESS PART OF ENTRY @V4075A2 00796000
ST R4,REALEND AND SAVE IT @V4075A2 00797000
************************************************************ @V4075A2 00798000
* THE DUMP MUST BE ON THE "A" DISK, CHECK THIS IN FSCB. @V4075A2 00799000
* THE FSCB MAY SAY "A" DISK BUT THE DUMP MAY REALLY BE @V4075A2 00800000
* ON A READ EXTENSION OF THE "A" DISK ( B/A ). @V4075A2 00801000
* CHECK THE FILE STATUS BLOCK TO SEE WHETHER WE HAVE @V4075A2 00802000
* THIS CASE. IF NOT, CLOSE THE FILE AND PASS THE @V4075A2 00803000
* ADDRESS OF THE 12K BUFFER TO DMMMAP. @V4075A2 00804000
* OTHERWISE WARN THE USER TO PUT THE DUMP ON THE "A" DISK. @V4075A2 00805000
************************************************************ @V4075A2 00806000
CLC ADISK,DUMPFSCB+FM IS THE DUMP ON THE A DISK? @V4075A2 00807000
BNE NOWRITE NO - GO WARN USER @V4075A2 00808000
FSSTATE FSCB=DUMPFSCB THEN IS IT B/A ? GET THE @V4075A2 00809000
LR R2,R1 FILE STATUS TABLE. @V4075A2 00810000
LTR R15,R15 IF NO FILE - NO STATUS TABLE @V4075A2 00811000
BNZ STATERR MUSTA LOST THE DUMP SOMEHOW @V4075A2 00812000
USING FSTSECT,R2 NOW CHECK THE FILE STATUS FLAG@V4075A2 00813000
MVC STATFLAG,FSTFB FOR A X'C0' - READ EXTENSION @V4075A2 00814000
NI STATFLAG,HIHALF EXAMINE HI HALF BYTE ONLY @V4075A2 00815000
CLI STATFLAG,FSTFRWX READ EXTENSION OF R/W DISK? @V4075A2 00816000
BE NOWRITE YES - GO TELL USER @V4075A2 00817000
DROP R2 DROP @V4075A2 00818000
FSCLOSE FSCB=DUMPFSCB SO MAP CAN WRITE THE NUC MAP @V4075A2 00819000
LA R1,GOTTENAD POINTER TO BUFFER ADDRESS @V4075A2 00820000
L R15,MAPADD ADDRESS OF DMMMAP @V4075A2 00821000
BALR R14,R15 AND GO @V4075A2 00822000
ST R15,MAPRET SAVE THE RETURN @V4075A2 00823000
L R1,GOTTENAD SET UP TO RETURN CORE @V4075A2 00824000
DMSFRET DWORDS=2560,LOC=(1),ERR=FREEERR @VA08369 00825000
LA R2,DUMPFSCB AGAIN CLOSE THE FILE @V4075A2 00826000
FSCLOSE FSCB=(R2) SO DUMPSCAN CAN READ IT @V4075A2 00827000
L R2,MAPRET GET THE RETURN FROM MAP @V4075A2 00828000
LTR R2,R2 HOW WAS IT @V4075A2 00829000
BNZ REREADY BAD @V4075A2 00830000
LA R8,MAPONMSG GOOD - TELL USER @V4075A2 00831000
LA R9,L'MAPONMSG AND LENGTH @V4075A2 00832000
BAL R10,WRTERM AND WRITE IT @V4075A2 00833000
B REREADY AND BACK TO THE BARRELL @V4075A2 00834000
********************************************************** @V4075A2 00835000
* EITHER THE DUMP IS NOT ON THE A DISK, OR IT IS ON @V4075A2 00836000
* A DISK WHICH IS A READ EXTENSION OF THE A DISK. @V4075A2 00837000
* IN THIS CASE, DMMMAP WOULD WRITE THE NUC MAP AS @V4075A2 00838000
* A SEPARATE FILE. DISALLOW THIS AND WARN THE USER. @V4075A2 00839000
********************************************************** @V4075A2 00840000
NOWRITE LA R8,DPNOTAMS DUMP NOT ON A DISK @V4075A2 00841000
LA R9,L'DPNOTAMS AND LENGTH @V4075A2 00842000
BAL R10,WRTERM AND WRITE IT @V4075A2 00843000
B REREADY BACK TO WORK @V4075A2 00844000
************************************************************ @V4075A2 00845000
* READ ERROR HANDLER @V4075A2 00846000
************************************************************ @V4075A2 00847000
RDERR LR R2,R15 SAVE THE RETURN @V4075A2 00848000
LINEDIT TEXT='DMMDSC100S ERROR ''...'' READING FILE ''........X00849000
............''',DOT=NO,RENT=NO,SUB=(DEC,(2),CHAR8A,DUMPFX00850000
SCB+8) WRITE THE READ ERROR MSG @V4075A2 00851000
B REREADY AND RETURN @V4075A2 00852000
************************************************************ @V4075A2 00853000
* FREE - FRET ERROR HANDLER @V4075A2 00854000
************************************************************ @V4075A2 00855000
FREEERR LR R2,R15 SAVE THE ERROR @V4075A2 00856000
LINEDIT TEXT='ERROR ''...'' IN DMSFREE OR DMSFRET, SEE SYSTEM X00857000
PROGRAMMERS GUIDE',DOT=NO,SUB=(DEC,(2)) WRITE ERROR 00858000
B REREADY AND RETURN @V4075A2 00859000
* * * * * * * *------- -------- -------- -------- -------* 00860000
* * * * * * * * LOCATE REQUEST 00861000
* * * * * * * * ------- -------- -------- ------- * 00862000
LCHECK LA R2,PLIST+L'LOCATE-ONE PLIST FOR LOCATE @VA04250 00863000
LA R3,LOCATE+L'LOCATE-ONE TARGET @VA04250 00864000
LA R4,L'LOCATE COUNT TRIES @VA04250 00865000
BAL R10,PCOMP PLIST CHECKOUT @VA04250 00866000
B NOTKNOWN NO LUCK @VA04250 00867000
* * * * * * * * ------- -------- -------- ------- * 00868000
* * * * * * * * TRACE SET UP 00869000
* * * * * * * * ------- -------- -------- ------- * 00870000
GOLOCATE LA R2,PLIST PLIST @VA04250 00871000
BAL R10,NULLCHK6 GO TEST FOR RIGHT NO. PARMS @V4075A2 00872000
MVC PLIST+FR(TWOBYTES),BLANKS TRUNC 'FROM' TO 6 BY @VA04250 00873000
MVC PLIST+TO(TWOBYTES),BLANKS TRUNC 'TO' TO 6 BYTES @VA04250 00874000
BAL R10,SAVSTRNG GO SAVE THE SEARCH ARGUMENT @V4075A2 00875000
***************************************************************@V4075A2 00876000
* IF THIS IS A ONE-SHOT PRINT WITH NO SUBCOMMAND @V4075A2 00877000
* RESTORE THE LATEST GENERATED 'FROM' ADDRESS @V4075A2 00878000
* INTO THE PLIST IF IT IS NOT BLANKS - IE A NEW @V4075A2 00879000
* ADDRESS HAS NOT BEEN DEVELOPED @V4075A2 00880000
***************************************************************@V4075A2 00881000
CLI PRINTONE,NOSUBC IS THIS 1-SHOT-PRT-W-NO-SUBCMD ?@V4075A2 00882000
BNE FROMOK NO - THE FROM ADDRESS IS GOOD @V4075A2 00883000
CLC NEWFREBC,BLANKS IS THERE A VALID NEW ADDRESS ? @V4075A2 00884000
BE FROMOK NO - USE THE OLD ONE @V4075A2 00885000
MVC PLIST3,NEWFREBC YES - GET SAVED NEW-EBCD-ADDR @V4075A2 00886000
MVC NEWFREBC,BLANKS AND CLEAR IT @V4075A2 00887000
FROMOK L R15,LOCADD ADDRESS OF LOCATE SUBROUTINE @V4075A2 00888000
BALR R14,R15 GO @VA04250 00889000
LTR R15,R15 RETCODE ZERO? @VA04250 00890000
BNZ CODECHEK WELL HOW BAD WAS IT @VA04250 00891000
B READY GET NEXT CMD @VA04250 00892000
***************************************************************@V4075A2 00893000
* CHECK THE 'PRINT' COMMAND FOR VALID OPERANDS, @V4075A2 00894000
* ONLY ONE OPERAND, AND CORRECT FORMAT - 'PRINT ON, @V4075A2 00895000
* OFF,CLOSE, ,?,SUBCOMMAND' @V4075A2 00896000
***************************************************************@V4075A2 00897000
PCHECK CLC PLIST1,PRT ALLOW THE 'PRT' ABBREV. @V4075A2 00898000
BE CHECKTWO GO TEST SECOND TERM @V4075A2 00899000
***************************************************************@V4075A2 00900000
* NOW CHECK FOR TRUNCATIONS @V4075A2 00901000
***************************************************************@V4075A2 00902000
LA R2,PLIST+L'PRINT-ONE PLIST ENTRY @V4075A2 00903000
LA R3,PRINT+L'PRINT-ONE TARGET ENTRY @V4075A2 00904000
LA R4,L'PRINT BYTES TO TRY @V4075A2 00905000
BAL R10,PCOMP GO TO TRUNCATION CHECK ROUTINE @V4075A2 00906000
B NOTKNOWN NOT PRINT - SEND IT BACK @V4075A2 00907000
***************************************************************@V4075A2 00908000
* NOW CHECK THE SECOND PARM FOR 'ON, OF, OFF, C(LOSE' @V4075A2 00909000
* '?' OR NO PARM. @V4075A2 00910000
***************************************************************@V4075A2 00911000
CHECKTWO CLC PLIST2,ON TURN PRINT ON? @V4075A2 00912000
BE PRINTON YES @V4075A2 00913000
CLC PLIST2,OFF OFF? @V4075A2 00914000
BE PRINTOFF @V4075A2 00915000
CLC PLIST2,OF OF? @V4075A2 00916000
BE PRINTOFF GO TURN IT OFF @V4075A2 00917000
***************************************************************@V4075A2 00918000
* CHECK FOR A '?' OR A NULL PARM @V4075A2 00919000
***************************************************************@V4075A2 00920000
QCHECK CLC PLIST2(L'QUERY),QUERY IS THIS '?' @V4075A2 00921000
BE SHOWPRSW YES - GO DISPLAY PRT SW STATUS @V4075A2 00922000
FENCECHK CLC PLIST2,FENCE IS THERE A SECOND PARM ? @V4075A2 00923000
BE RESUBCOM NO GO RESUBMIT THE LAST SUBC. @V4075A2 00924000
***************************************************************@V4075A2 00925000
* NOW CHECK FOR 'CLOSE' OR ITS TRUNCATION @V4075A2 00926000
***************************************************************@V4075A2 00927000
LA R2,PLIST2+L'CLOSE-ONE PLIST OFFERING @V4075A2 00928000
LA R3,CLOSE+L'CLOSE-ONE AND THE TARGET @V4075A2 00929000
LA R4,L'CLOSE AND THE NUMBER OF BYTES @V4075A2 00930000
BAL R10,PCOMP GO TEST TRUNCATIONS @V4075A2 00931000
B PPCHECK NOT CLOSE - MAY BE 'PRINT PRINT' @V4075A2 00932000
***************************************************************@V4075A2 00933000
* MUST BE A CLOSE - CLOSE THE PRT THEN GO INTO @V4075A2 00934000
* THE 'TURN PRINT OFF' SEQUENCE. @V4075A2 00935000
***************************************************************@V4075A2 00936000
BAL R10,CLOSEPRT @V4075A2 00937000
B REREADY RETURN @V4075A2 00938000
PRINTOFF MVI PRINTSW,TURNOFF TURN IT OFF @V4075A2 00939000
B REREADY GO WRITE THE READY MSG @V4075A2 00940000
PRINTON MVI PRINTSW,TURNON SET IT ON @V4075A2 00941000
B REREADY GO READY MSG @V4075A2 00942000
SHOWPRSW CLI PRINTSW,TURNON IS PRINT ON ? @V4075A2 00943000
BE SHOWON YES - GO SHOW STATUS @V4075A2 00944000
LA R8,PRINTOFM NO ITS 'OFF' - WRITE 'OFF' MSG @V4075A2 00945000
LA R9,L'PRINTOFM AND THE LENGTH @V4075A2 00946000
BAL R10,WRTERM AND GO WRITE IT. @V4075A2 00947000
B REREADY AND GO BACK @V4075A2 00948000
SHOWON LA R8,PRINTONM GET 'PRINT ON' MSG @V4075A2 00949000
LA R9,L'PRINTONM AND ITS LENGTH @V4075A2 00950000
BAL R10,WRTERM AND WRITE IT @V4075A2 00951000
B REREADY AND RETURN @V4075A2 00952000
***************************************************************@V4075A2 00953000
* IT WAS NOT A 'CLOSE' COMMAND - TREAT IT @V4075A2 00954000
* AS A SUBCOMMAND. MOVE THE SUBCOMMAND PORTION @V4075A2 00955000
* INTO THE INPUT LINE, COUNT THE BYTES, AND @V4075A2 00956000
* PASS IT AS A NEW INPUT LINE. @V4075A2 00957000
* IF PRINT IS ON - COOL - IF NOT - TURN IT ON @V4075A2 00958000
* FOR 1 PASS AND INDICATE A SUBC. WAS ENTERED @V4075A2 00959000
***************************************************************@V4075A2 00960000
PPCHECK CLC PLIST2(ONE),PRINT 'PRINT PRINT' IS INVALID @V4075A2 00961000
BE NOTKNOWN GO SEND IT BACK TO USER @V4075A2 00962000
SUBCOM CLI PRINTSW,TURNON IS PRINT ON ? @V4075A2 00963000
BE PLISTMOV YES - OK - GO MOVE THE PLIST @V4075A2 00964000
MVI PRINTSW,TURNON NO - SO TURN IT ON FOR 1 SHOT @V4075A2 00965000
MVI PRINTONE,SUBCOMM SET THE ONE-SHOT-W-SUBC. FLAG @V4075A2 00966000
PLISTMOV MVC INSAVE,BLANKOUT CLEAR INPUT SAVE @V4075A2 00967000
MVC INSAVE,INPUT SAVE OLD INPUT LINE @V4075A2 00968000
MVC OLDINLEN,INLENGTH AND LENGTH @V4075A2 00969000
MVC INPUT,BLANKOUT CLEAR THE INPUT LINE @V4075A2 00970000
LA R2,NULL CLEAR COUNTER @V4075A2 00971000
LA R3,PLIST2 POINT TO SUB IN PLIST @V4075A2 00972000
LA R4,INPUT AND INPUT LINE TOMOVE IT TO @V4075A2 00973000
MOVEDWD MVC 0(L'PLIST1,R4),0(R3) AND MOVE A DOUBLE WORD @V4075A2 00974000
LA R2,L'PLIST+1(R2) COUNT 9 BYTES @V4075A2 00975000
LA R3,L'PLIST1(R3) AND THE FROM POINTER @V4075A2 00976000
LA R4,L'PLIST1+1(R4) BUMP THE 'TO' POINTER @V4075A2 00977000
CLC FENCE,0(R3) END OF PLIST ? @V4075A2 00978000
BE COUNTIN IF SO GO SET LENGTH @V4075A2 00979000
B MOVEDWD ELSE GET THE NEXT @V4075A2 00980000
COUNTIN ST R2,INLENGTH SAVE THE NEW LENGTH @V4075A2 00981000
B REINCHK PASS IT OFF AS I/P LINE @V4075A2 00982000
***************************************************************@V4075A2 00983000
* NO SECOND PARM WAS FOUND - RESUBMIT THE PREVIOUS @V4075A2 00984000
* COMMAND, TURNING PRINT ON AND OFF IF APPROPRIATE. @V4075A2 00985000
***************************************************************@V4075A2 00986000
RESUBCOM CLI PRINTSW,TURNON IS PRINT ON ? @V4075A2 00987000
BE RESUB YES LEAVE IT ON @V4075A2 00988000
MVI PRINTSW,TURNON NO - TURN IT ON FOR THIS SUBC. @V4075A2 00989000
MVI PRINTONE,NOSUBC SET FLAG TO TURN IT OFF AFTER. @V4075A2 00990000
RESUB MVC INPUT,BLANKOUT CLEAR THE INPUT LINE AND @V4075A2 00991000
MVC INPUT,INSAVE RESTORE THE SAVED PREVIOUS SUBC. @V4075A2 00992000
MVC INLENGTH,OLDINLEN AND ITS INPUT LENGTH, AND @V4075A2 00993000
L R2,INLENGTH SET UP R2 FOR TOKENIZER. @V4075A2 00994000
B REINCHK AND SEND IT OUT AS A COMMAND. @V4075A2 00995000
* * * * * * * *------- -------- -------- -------- -------* 00996000
* * * * * * * * MOD SET UP 00997000
* * * * * * * * ------- -------- -------- ------- * 00998000
GOMOD CLC DMKQ,INPUT IS IT AN ADDRESS LOCATE? @VA04250 00999000
BE GOMOD1 NO - CHECK FOR A NULL PARM HRC001DM 01000190
CLC HDKQ,INPUT IS IT AN ADDRESS LOCATE? HRC001DM 01000380
BNE GONULLCK NO - CHECK FOR A NULL PARM HRC001DM 01000570
GOMOD1 EQU * HRC001DM 01000760
BAL R10,NULLCHK3 YES - CHECK NO THIRD PARM @VA04250 01001000
BAL R10,ADLENGTH NOW - CHECK ADDRESS LENGTH @VA04250 01002000
B LOADPLST AND SET UP PLIST @VA04250 01003000
GONULLCK BAL R10,NULLCHK2 CHECK FOR NO EXTRA PARM @VA04250 01004000
LOADPLST LA R2,PLIST PLIST ADDRESS TO PASS TO MOD @VA04250 01005000
L R15,MODADD MOD ADDRESS @VA04250 01006000
BALR R14,R15 GO @VA04250 01007000
LTR R15,R15 TEST @VA04250 01008000
BZ READY OK - @VA04250 01009000
B CODECHEK NO - HOW BAD? @VA04250 01010000
* * * * * * * * ------- -------- -------- ------- * 01011000
* * * * * * * * IOBLOK FUNCTION 01012000
* * * * * * * * ------- -------- -------- ------- * 01013000
GOIOB BAL R10,CLEAR CLEAR TO TOP OF SCREEN @VA04250 01014000
CLI PLIST+CUUBLANK,BLANK MUST BE MAX 3 'CUU' CHARS @VA04250 01015000
BNE NOTKNOWN MORE THAN THREE - WARN HIM @VA04250 01016000
L R15,IOBADD OK - GO TO IOBLOK ROUTINE @VA04250 01017000
LA R2,PLIST PLIST FOR IOB @VA04250 01018000
BALR R14,R15 LINK @VA04250 01019000
LTR R15,R15 TEST RETURN CODE @VA04250 01020000
BZ REREADY GO AGAIN @VA04250 01021000
B CODECHEK FIND OUT HOW BAD @VA04250 01022000
* * * * * * * * ------- -------- -------- ------- * 01023000
* * * * * * * * DISPLAY HEXLOC - NO LENGTH 01024000
* * * * * * * * IMPLIES A FULL SCREEN WRITE 01025000
* * * * * * * * ------- -------- -------- ------- * 01026000
GOFEX LA R2,PLIST PASS PARM LIST @VA04250 01027000
L R15,FEXADD EXAMINE ADDRESS @VA04250 01028000
BALR R14,R15 GO @VA04250 01029000
LTR R15,R15 RET CODE OK? @VA04250 01030000
BZ READY YES - CONTINUE @VA04250 01031000
B CODECHEK GO TEST THE RET CODE @VA04250 01032000
* * * * * * * * ------- -------- -------- ------- * 01033000
* * * * * * * * COMMON BAL TO INTERPRET 01034000
* * * * * * * * ------- -------- -------- ------- * 01035000
GOINT L R15,INTADD ADDRESS OF TRANS ROUTINE @VA04250 01036000
BALR R14,R15 LINK @VA04250 01037000
LTR R15,R15 BAD? @VA04250 01038000
BNZ CODECHEK HOW BAD? @VA04250 01039000
BR R10 RETURN @VA04250 01040000
* * * * * * * * ------- -------- -------- ------- * 01041000
* * * * * * * * COMMON WRTERM 01042000
* * * * * * * * ------- -------- -------- ------- * 01043000
WRTERM ST R8,PARMLIS1 SAVE MSG TEXT PTR IN PARM LIST @V4075A2 01044000
ST R9,PARMLIS2 AND TEXT LENGTH @V4075A2 01045000
LA R1,PARMLIS1 POINTER TO PASS @V4075A2 01046000
L R15,FEDLNADD ADDRESS OF DMMFEDLN - LINE WRITER@V4075A2 01047000
BALR R14,R15 GO WRITE THE LINE @V4075A2 01048000
BR R10 AND RETURN @V4075A2 01049000
PARMLIS1 DS F PARM1 @V4075A2 01050000
PARMLIS2 DS F PARM2 @V4075A2 01051000
FEDLNADD DC V(DMMFEDLN) LINE WRITER ROUTINE @V4075A2 01052000
* * * * * * * * ------- -------- -------- ------- * 01053000
* * * * * * * * CHECK SUBROUTINE RETURN CODES 01054000
* * * * * * * * ------- -------- -------- ------- * 01055000
CODECHEK C R15,CODE4 CAN WE GO ON @VA04250 01056000
BE REREADY YES @VA04250 01057000
ST R15,RETCODE PASS RETURN @VA04250 01058000
B RETURNER GET OUT - DONT CLEAR SCREEN @VA04250 01059000
* * * * * * * * ------- -------- -------- ------- * 01060000
* * * * * * * * COMMON RDTERM 01061000
* * * * * * * * ------- -------- -------- ------- * 01062000
RDTERM RDTERM (R8) COMMON READ FROM CONSOLE @VA04250 01063000
BR R10 RETURN @VA04250 01064000
* * * * * * * * ------- -------- -------- ------- * 01065000
* * * * * * * * THE PLAN IS TO COMPARE THE RIGHTMOST LETTERS 01066000
* * * * * * * * OF THE PLIST AND THE TARGET WORD, THEN MOVE 01067000
* * * * * * * * THE COMPARE ONE BYTE LEFT UNTIL EITHER 01068000
* * * * * * * * WE COUNT THEM ALL, IN WHICH CASE THEY 01069000
* * * * * * * * MATCH ENTIRELY, OR THERE IS A 'NO-MATCH'. 01070000
* * * * * * * * IF THEY DO NOT MATCH, BUT THE PLIST IS A 01071000
* * * * * * * * BLANK, CONTINUE THE SEARCH. IF NOT - ABORT. 01072000
* * * * * * * * ------- -------- -------- ------- * 01073000
PCOMP CLC 0(CHARLEN,R2),0(R3) COMPARE RIGHTMOST BYTES @VA04250 01074000
BE PCOUNT GOOD - TRY NEXT @VA04250 01075000
B PBLANKCK NO - BUT ITS OK IF ITS A BLANK @VA04250 01076000
PCOUNT BCTR R2,R0 BACK UP PLIST POINTER @VA04250 01077000
BCTR R3,R0 BACK UP TARGET POINTER @VA04250 01078000
BCT R4,PCOMP TRY ANOTHER @VA04250 01079000
B GOODRET(R10) ALL GOOD - TAKE THE GOOD EXIT @VA04250 01080000
PBLANKCK CLI 0(R2),BLANK WAS IT A BLANK @VA04250 01081000
BE PCOUNT YES - OK @VA04250 01082000
CLI 0(R2),U WAS IT A 'U' - AS IN SCROLLU? @VA04250 01083000
BE SCRCHECK IT WAS A 'U' _ WAS IT A SCROLL? @VA04250 01084000
BR R10 NO - BAD MATCH - RETURN @VA04250 01085000
SCRCHECK CLI PLIST,S DOES PLIST HAVE AN 'S'? @VA04250 01086000
BE PCOUNT YES IT DOES - LET IT CONTINUE @VA04250 01087000
BR R10 NO - BAD RETURN @VA04250 01088000
* * * * * * * *------- -------- -------- -------- ------* 01089000
* * * * * * * * NOW THE INPUT LINE MUST BE TOKENIZED 01090000
* * * * * * * * PASS THE INPUT LINE LENGTH IN R2 01091000
* * * * * * * *------- -------- -------- -------- ------* 01092000
TOKEN LA R3,INPUT INPUT LINE ADDRESS @VA04250 01093000
LA R4,PLIST TOKENIZED OUTPUT @VA04250 01094000
LA R5,L'PLIST1 COUNT 8 BYTES @VA04250 01095000
LA R6,PLIST7 SET PLIST LIMIT @VA04250 01096000
SIGSCAN CLI 0(R3),BLANK SCAN INPUT FOR NON-BLANK @V4075A2 01097000
BE CHARSRCH STILL BLANK - KEEP ON. @VA04250 01098000
MOVE8 MVC 0(L'PLIST1,R4),0(R3) GOT A CHAR, MOVE 8 IN @VA04250 01099000
BUMPA LA R3,ONE(R3) BUMP INPUT @VA04250 01100000
BCT R2,OVER8 END OF INPUT? @VA04250 01101000
B OUT YES - WRAP IT UP. @VA04250 01102000
OVER8 BCT R5,BLANKA NO - OVER 8 BYTES? @VA04250 01103000
B BLANKB TRY NEXT CHARACTER @VA04250 01104000
BUMPB LA R3,ONE(R3) BUMP INPUT @VA04250 01105000
BCT R2,BLANKB END OF INPUT ? @VA04250 01106000
B OUT WRAP UP. @VA04250 01107000
BLANKB TM 0(R3),DELIM DELIMITER @VA04250 01108000
BNZ BUMPB NO - GET NEXT CHAR @VA04250 01109000
BUMPC LA R3,ONE(R3) UP IT AGAIN @VA04250 01110000
BCT R2,BLANKC END OF INPUT ? @VA04250 01111000
B OUT YES QUIT @VA04250 01112000
BLANKC TM 0(R3),DELIM DELIMITER IN INPUT ? @VA04250 01113000
BZ BUMPC YES - KEEP LOOKING @VA04250 01114000
SRL R4,3 ROUND PLIST PTR DOWN TO @VA04250 01115000
SLL R4,3 PREVIOUS D'WORD, AND @VA04250 01116000
AH R4,X8 ADD 8, FOR NEXT PLIST SLOT @VA04250 01117000
CR R4,R6 END OF PLIST? @VA04250 01118000
BNL FENCER YES - CHOP IT OFF @VA04250 01119000
LA R5,L'PLIST1 RESET BYTE COUNTER @VA04250 01120000
B MOVE8 GO TAKE ANOTHER TOKE @VA04250 01121000
CHARSRCH LA R3,ONE(R3) SCAN FOR FIRST CHAR ON INLINE @VA04250 01122000
BCT R2,SIGSCAN TRY NEXT IF NOT END OF LINE @V4075A2 01123000
B FENCER THIS LINE WAS ALL BLANKS @VA04250 01124000
BLANKA TM 0(R3),DELIM INPUT CHAR A DELIMITER (4X) @VA04250 01125000
BNZ BUMPA NO - KEEP LOOKING @VA04250 01126000
LA R7,L'PLIST1 SET UP TO CLEAR PLIST ENTRY @VA04250 01127000
SR R7,R5 COUNT VALID BYTES TO BE LEFT @VA04250 01128000
AR R4,R7 AND ADD TO R4 @VA04250 01129000
MVC 0(SEVENBYT,R4),BLANKS BLANK IT OUT @VA04250 01130000
B BUMPC SCAN TO END OF BLANKS @VA04250 01131000
OUT SRL R4,3 POINT TO NEXT PLIST SLOT @VA04250 01132000
SLL R4,3 @VA04250 01133000
AH R4,X8 BUMP BY EIGHT @VA04250 01134000
FENCER MVC 0(L'FENCE,R4),FENCE FENCE IT IN @VA04250 01135000
BR R10 RETURN @V4075A2 01136000
* * * * * * * * ------- -------- -------- ------- * 01137000
* * * * * * * * THIS TRANSLATES THE ERROR CODE IN R15, 01138000
* * * * * * * * AND PLUGS IT INTO THE TEXT OF THE ERROR 01139000
* * * * * * * * MESSAGE, ALONG WITH THE FILE ID 01140000
* * * * * * * *------- -------- -------- -------- ------* 01141000
STATERR XC DEPACK(L'DEPACK+L'DECODE),DEPACK CLEAR WORKAREA @VA04250 01142000
LR R6,R15 SAVE R15 ACROSS WRTERM @VA04250 01143000
C R6,NOFILE WAS IT A 'FILE NOT FOUND' ? @VA04250 01144000
BNE NOMSG IF NOT - BYPASS 'DUMP NOT FOUND' @VA04250 01145000
LA R8,NOFILMSG ADDRESS OF MESSAGE @VA04250 01146000
LA R9,L'NOFILMSG AND LENGTH @VA04250 01147000
BAL R10,WRTERM WRITE 'DUMP NOT FOUND' @VA04250 01148000
NOMSG CVD R6,DECODE GET RET CODE IN DECIMAL @VA04250 01149000
UNPK DEPACK+FIV(L'DEPACK-FIV),DECODE+SIX(L'DECODE-SIX) 01150000
OI DEPACK+SEV,NUMZONE FIX UP SIGN TO PRINT @VA04250 01151000
MVC ERRMSGCD,DEPACK+FIV PLUG ERROR CODEINTO MSG @VA04250 01152000
MVC ERRMSGFN,DUMPFSCB+FN PLUG FILE NAME @VA04250 01153000
MVC ERRMSGFT,DUMPFSCB+FT AND TYPE @VA04250 01154000
MVC ERRMSGM,DUMPFSCB+FM AND MODE @VA04250 01155000
LA R8,ERMSG719 ADDRESS @VA04250 01156000
LA R9,E719L AND LENGTH @VA04250 01157000
BAL R10,WRTERM WRITE 'DUMP NOT FOUND' @VA04250 01158000
B REREAD GET ANOTHER DUMP - DONT CLEAR HRC001DM 01159490
* * * * * * * *------- -------- -------- -------- ------* 01160000
* * * * * * * * THIS CHECKS THE INPUT LINE FOR 01161000
* * * * * * * * HELP OR EXIT REQUESTS 01162000
* * * * * * * *------- -------- -------- -------- ------* 01163000
INCHECK CLC HELP,INPUT HELP? @VA04250 01164000
BE REINFO YES - GO SHOW HELP PAGE @VA04250 01165000
CLC HX,INPUT HALT EX. @VA04250 01166000
BE RETURN SHUT DOWN @VA04250 01167000
CLC QUIT,INPUT QUIT @VA04250 01168000
BE RETURN SHUT DOWN @VA04250 01169000
CLC END,INPUT END @VA04250 01170000
BE RETURN SHUT DOWN @VA04250 01171000
BR R10 RETURN @V4075A2 01172000
* * * * * * * *------- -------- -------- -------- ------* 01173000
* * * * * * * * THIS DISPLAYS THE 'HELP' INFORMATION' 01174000
* * * * * * * *------- -------- -------- -------- ------* 01175000
REINFO CLI TYPEFLAG,TYPER TYPEWRITER? @VA04250 01176000
BNE SCRNHELP NO - GO SCREEN 'HELP' MSG @VA04250 01177000
L R8,INFOADD1 ADDRESS OF START OF 'HELP' PAGE @VA04250 01178000
LA R4,LINECNT SET UP LINE COUNT - 43 LINES @VA04250 01179000
LA R9,LINELEN LENGTH - 80 BYTES @VA04250 01180000
NEXTLINE BAL R10,WRTERM WRITE A LINE OF 'HELP' PAGE @VA04250 01181000
LA R8,LINELEN(R8) POINT TO NEXT LINE @VA04250 01182000
BCT R4,NEXTLINE KEEP GOING @VA04250 01183000
B ENTER GO BACK @VA04250 01184000
* * * * * * * * ------- -------- -------- ------- * 01185000
* * * * * * * * THIS WRITES THE HELP PAGE ON 01186000
* * * * * * * * A 3270 SCREEN 01187000
* * * * * * * * ------- -------- -------- ------- * 01188000
SCRNHELP L R4,CONSOLE VIRT CONS ADDRESS @VA04250 01189000
CLI PAGESW,PAGE1 WHICH PAGE NEXT? @VA04250 01190000
BE WRITE1 GO WRITE PAGE1 @VA04250 01191000
MVI PAGESW,PAGE1 RESET SWITCH @VA04250 01192000
L R3,INFOADD2 GET SET TO WRITE PAGE2 @VA04250 01193000
B CCWSETUP GO PLUG ADDRESSES IN DIAGNOSE @VA04250 01194000
WRITE1 MVI PAGESW,PAGE2 SETUP FOR PAGE 2 @VA04250 01195000
L R3,INFOADD1 WRITE PAGE1 @VA04250 01196000
CCWSETUP ST R3,CCWA PLUG ADDRESS IN CCWA @VA04250 01197000
ST R3,CCWB AND CCWB @VA04250 01198000
LA R3,CCWA CCW ADDRESS @VA04250 01199000
MVI CCWA,CMDCODE RESTORE COMMAND CODE IN A @VA04250 01200000
MVI CCWB,CMDCODE AND B @VA04250 01201000
MVI CCWA+FIV,ERASE 'ERASE' CONTROL BYTE @VA04250 01202000
ST R3,PARMLIS1 SAVE MSG TEXT PTR IN PARM LIST @V4075A2 01203000
ST R4,PARMLIS2 AND TEXT LENGTH @V4075A2 01204000
LA R1,PARMLIS1 POINTER TO PASS @V4075A2 01205000
L R15,DIRLNADD ADDRESS OF DMMDIRLN SCREEN WRITER@V4075A2 01206000
BALR R14,R15 GO WRITE THE SCREEN @V4075A2 01207000
B HELPINCK AND RETURN @V4075A2 01208000
DIRLNADD DC V(DMMDIRLN) SCREEN WRITER ROUTINE @V4075A2 01209000
HELPINCK BAL R10,RDTERM GO READ REPLY TO THE HELP PROMPT @V4075A2 01210000
BAL R10,INCHECK SEE IF HE WANTS OUT, OR MORE HELP@V4075A2 01211000
MVI PAGESW,PAGE1 RESET TO PAGE 1 @V4075A2 01212000
CLI DUMPFSCB+FNEND,NULLDUMP SEE IF DUMP NUMB YET @V4075A2 01213000
BE GETDUMP NO - GO GET IT HRC001DM 01214490
BAL R10,CLEAR TOP OF THE SCREEN @V4075A2 01215000
B REREADY YES - CONTINUE @V4075A2 01216000
* * * * * * * * ------- -------- -------- ------- * 01217000
* * * * * * * * SET DIFFERENT ???????? CHAR 01218000
* * * * * * * * ------- -------- -------- ------- * 01219000
INQUIRY MVC HUH,PLIST2 MOVE IN 'HUH?' CHAR @VA04250 01220000
B REREADY READY MSG @VA04250 01221000
* * * * * * * * ------- -------- -------- ------- * 01222000
* * * * * * * * DISPLAY LAST COMMAND 01223000
* * * * * * * * ------- -------- -------- ------- * 01224000
POSTIN BAL R10,NULLCHK2 CHECK FOR NO SECOND TERM @VA04250 01225000
LA R8,INSAVE ADDRESS AND @VA04250 01226000
L R9,OLDINLEN LENGTH OF OLD INPUT LINE @VA04250 01227000
BAL R10,WRTERM WRITE THE OLD INPUT LINE @VA04250 01228000
B REREADY ROUND AGAIN @VA04250 01229000
* * * * * * * * ------- -------- -------- ------- * 01230000
* * * * * * * * THIS CLEARS THE 3270 SCREEN AND ALLOWS 01231000
* * * * * * * * THE NEXT OPERATION TO BE POSITIONED 01232000
* * * * * * * * AT THE TOP THEREOF. 01233000
* * * * * * * *------- -------- -------- -------- ------* 01234000
CLEAR STM R7,R9,SAVCLR SAVE REGS @VA04250 01235000
***************************************************************@V4075A2 01236000
* DONT CLEAR THE SCREEN IF THIS IS A 1-SHOT-NO-SUBC @V4075A2 01237000
***************************************************************@V4075A2 01238000
CLI PRINTONE,NOSUBC IS THIS A RESUBMIT ? @V4075A2 01239000
BE ALLCLEAR YES - DONT CLEAR SCREEN @V4075A2 01240000
L R8,SCRNADD GET THE ADDRESS OF THE SCREEN @VA04250 01241000
ST R8,CCWC PLUG ADDRESS IN CCW @VA04250 01242000
LA R8,CCWC CCW ADD @VA04250 01243000
L R9,CONSOLE VIRT CONS ADDRESS @VA04250 01244000
MVI CCWC,CMDCODE RESTORE CMD CODE @VA04250 01245000
MVI CCWC+FIV,ERASE SET ERASE BYTE @VA04250 01246000
DIAG WAITT WAIT FOR TERMINAL TO QUIESCE @VA04250 01247000
DC X'83890058' DIAGNOSE @VA04250 01248000
ALLCLEAR LM R7,R9,SAVCLR RESTORE REGS @VA04250 01249000
BR R10 RETURN @VA04250 01250000
* * * * * * * * ------- -------- -------- ------- * 01251000
* * * * * * * * THIS CHECKS THAT THOSE COMMANDS 01252000
* * * * * * * * WHICH SHOULD HAVE NO OPERANDS 01253000
* * * * * * * * DO IN FACT HAVE NONE - EXCEPT 01254000
* * * * * * * * THE 'U' AFTER SCROLL 01255000
* * * * * * * * ------- -------- -------- ------- * 01256000
NULLCHK2 CLC FENCE,PLIST2 IS THERE A SECOND PARM? @VA04250 01257000
BER R10 OK - RETURN @VA04250 01258000
CLI PLIST2,U YES - IS IT A 'U' @VA04250 01259000
BER R10 OK - RETURN @VA04250 01260000
B NOTKNOWN NO - INVALID - TOSS IT OUT @VA04250 01261000
* * * * * * * * ------- -------- -------- ------- * 01262000
* * * * * * * * THIS CHECKS THAT THOSE COMMANDS 01263000
* * * * * * * * WHICH SHOULD HAVE ONLY TWO TERMS 01264000
* * * * * * * * DO IN FACT HAVE NO MORE. 01265000
* * * * * * * * 'T' MAY HAVE 1 OR 2 TERMS. SEE NEXT COMMENTS 01266000
* * * * * * * * ------- -------- -------- ------- * 01267000
NULLCHK3 CLC FENCE,PLIST3 IS THERE A THIRD PARM? @VA04250 01268000
BER R10 NO - OK TO RETURN @VA04250 01269000
CLC FENCE,PLIST2 P3 COULD BE TRASH. FENCE HERE? @VA04250 01270000
BER R10 GOOD GUESS - OK TO GO ON @VA04250 01271000
B NOTKNOWN YES - THROW IT BACK @VA04250 01272000
* * * * * * * * ------- -------- -------- ------- * 01273000
* * * * * * * * THIS CHECKS THAT THOSE COMMANDS 01274000
* * * * * * * * WHICH SHOULD HAVE ONLY THREE TERMS 01275000
* * * * * * * * DO IN FACT HAVE NO MORE. 01276000
* * * * * * * * 'D' AND 'VIO' MAY HAVE 2 OR 3 TERMS. 01277000
* * * * * * * * IN THIS CASE THE FIRST TEST WILL NOT 01278000
* * * * * * * * FIND THE X'FF..' IT EXPECTS. 01279000
* * * * * * * * ------- -------- -------- ------- * 01280000
NULLCHK4 CLC FENCE,PLIST4 IS THERE A FOURTH PARM? @VA04250 01281000
BER R10 NO - OK TO RETURN @VA04250 01282000
CLC FENCE,PLIST3 P4 COULD BE TRASH. FENCE IN P3? @VA04250 01283000
BER R10 SURE - OK TO RETURN @VA04250 01284000
B NOTKNOWN YES - THROW IT BACK @VA04250 01285000
* * * * * * * * ------- -------- -------- ------- * 01286000
* * * * * * * * THIS CHECKS THAT THOSE COMMANDS 01287000
* * * * * * * * WHICH SHOULD HAVE ONLY FOUR TERMS 01288000
* * * * * * * * DO IN FACT HAVE NO MORE. 01289000
* * * * * * * * ------- -------- -------- ------- * 01290000
NULLCHK5 CLC FENCE,PLIST5 IS THERE A FIFTH PARM? @VA04250 01291000
BER R10 NO - OK TO RETURN @VA04250 01292000
B NOTKNOWN YES - THROW IT BACK @VA04250 01293000
* * * * * * * * ------- -------- -------- ------- * @V4075A2 01294000
* * * * * * * * THIS CHECKS THAT THE LOCATE COMMAND @V4075A2 01295000
* * * * * * * * WHICH SHOULD HAVE ONLY FOUR OR FIVE @V4075A2 01296000
* * * * * * * * PARMS DOES IN FACT HAVE NO MORE. @V4075A2 01297000
* * * * * * * * IN THIS CASE THE FIRST TEST MAY NOT @V4075A2 01298000
* * * * * * * * FIND THE X'FF..' IT EXPECTS. @V4075A2 01299000
* * * * * * * * ------- -------- -------- ------- * @V4075A2 01300000
NULLCHK6 CLC FENCE,PLIST6 IS THERE A SIXTH PARM? @V4075A2 01301000
BER R10 NO - OK TO RETURN @V4075A2 01302000
CLC FENCE,PLIST5 P6 COULD BE TRASH. FENCE IN P5? @V4075A2 01303000
BER R10 SURE - OK TO RETURN @V4075A2 01304000
B NOTKNOWN YES - THROW IT BACK @V4075A2 01305000
* * * * * * * * ------- -------- -------- ------- * 01306000
* * * * * * * * FOR THE ROUTINES DMMFED AND DMMFEX, 01307000
* * * * * * * * THIS CHECKS THAT ONLY SIX BYTES 01308000
* * * * * * * * OF ADDRESS ARE PASSED, UNLESS 01309000
* * * * * * * * THE EXTRA BYTES ARE LEADING ZEROS. 01310000
* * * * * * * * ------- -------- -------- ------- * 01311000
ADLENGTH LA R2,PLIST2 POINT TO LEFT CHAR OF ADDRESS @VA04250 01312000
LA R3,PLIST3 LIMIT FOR SEARCH @VA04250 01313000
LA R4,NULL ADDRESS BYTE COUNTER @VA04250 01314000
CLI 0(R2),T IS IT A 'T' @VA04250 01315000
BNE PCENT GO CHECK PERCENT @VA04250 01316000
CHEKNEXT LA R2,ONE(R2) NEXT CHARACTER @VA04250 01317000
CR R2,R3 OFF THE END? @VA04250 01318000
BNL CHECK7 YES - CHECK THE COUNT @VA04250 01319000
PCENT CLI 0(R2),PC IS THIS A '%' @VA04250 01320000
BE CONCAT YES -GO MAKE CONCAT CHECK @VA04250 01321000
CLI 0(R2),BLANK THEN IS IT A BLANK? @VA04250 01322000
BE CHECK7 YES LAST OF THE BIG TIME CHARS @VA04250 01323000
LA R4,ONE(R4) NO - BUMP COUNT @VA04250 01324000
B CHEKNEXT GO TRY THE NEXT CHAR @VA04250 01325000
CONCAT LA R2,ONE(R2) BUMP POINTER @VA04250 01326000
CR R2,R3 OFF THE END @VA04250 01327000
BNL ADLEND YES - OK - RETURN @VA04250 01328000
CLI 0(R2),BLANK THEN IS IT A BLANK? @VA04250 01329000
BNE NOTKNOWN NO - BAD - QUIT @VA04250 01330000
B ADLEND YES - THAS OK - RETURN @VA04250 01331000
* * * * * * * * ------- -------- -------- ------- * 01332000
* * * * * * * * NOW WE HAVE COUNTED THE ADDRESS BYTES 01333000
* * * * * * * * ------- -------- -------- ------- * 01334000
CHECK7 C R4,SEVEN COMPARE TO '7' @VA04250 01335000
BL ADLEND LOW - GOOD - RETURN @VA04250 01336000
BH CHECK8 GO TEST THE EIGHT BYTES @VA04250 01337000
LA R2,PLIST2 POINT TO START OF ADDRESS AGAIN @VA04250 01338000
CLI 0(R2),T IS IT A 'T' ? @VA04250 01339000
BNE ZEROCHEK NO - GO ZERO @VA04250 01340000
LA R2,ONE(R2) LOOK AT SECOND CHAR @VA04250 01341000
ZEROCHEK CLI 0(R2),ZERO THEN IT BETTER BE A ZERO @VA04250 01342000
BE ADLEND YES - OK - RETURN @VA04250 01343000
B NOTKNOWN NO - DONT LIKE IT @VA04250 01344000
CHECK8 LA R2,PLIST2 LOOK AT THE 1ST CHAR YET AGAIN @VA04250 01345000
CLI 0(R2),ZERO BE A ZERO @VA04250 01346000
BNE NOTKNOWN NOPE - OUT @VA04250 01347000
LA R2,ONE(R2) NEXT @VA04250 01348000
CLI 0(R2),ZERO ZERO ? @VA04250 01349000
BNE NOTKNOWN NO - BAD LUCK @VA04250 01350000
ADLEND BR R10 MADE IT THROUGH - RETURN @VA04250 01351000
* * * * * * * * ------- -------- -------- ------- * 01352000
* * * * * * * * THIS CHECKS THE LAST COMMAND. 01353000
* * * * * * * * IF IT IS LOCATE OR SCROLL IT MAY BE 01354000
* * * * * * * * REUSED IE. SCROLL AGAIN, ORCONTINUE 01355000
* * * * * * * * THE LOCATE FOR ANOTHER HIT. 01356000
* * * * * * * * ------- -------- -------- ------- * 01357000
REUSE CLC PLIST(CHARLEN),LOCATE LOCATE? @VA04250 01358000
BE RELOCATE YES SET IT UP @VA04250 01359000
CLC PLIST(CHARLEN),SCROLL SCROLL? @VA04250 01360000
BE RESCROLL SET IT UP @VA04250 01361000
B REREADY NEITHER - ROUND AGAIN @VA04250 01362000
* * * * * * * * ------- -------- -------- ------- * 01363000
* * * * * * * * FIRST THE LOCATE 01364000
* * * * * * * * ------- -------- -------- ------- * 01365000
* @V4075A2 01366000
* IN A RELOCATE THE NEW 'FROM' ADDRESS IS ROUNDED @V4075A2 01367000
* TO A QUAD-WORD BOUNDARY. IF THE USER HAD SPECIFIED @V4075A2 01368000
* OTHER THAN THIS FOR A PARTICULAR SEARCH, IT WOULD BE @V4075A2 01369000
* LOST ON THE SECOND AND SUBSEQUENT 'REUSE' OPERATIONS. @V4075A2 01370000
* THIS PICKS UP THAT PART OF THE OLD 'FROM' ADDRESS @V4075A2 01371000
* WHICH IS BELOW 16, AND ADDS IT INTO THE NEW 'FROM'. @V4075A2 01372000
************************************************************** @V4075A2 01373000
RELOCATE LA R4,PLIST3 GET THE EXISTING 'FROM' @V4075A2 01374000
L R15,HEXADD ADDRESS OF TRANSLATE @V4075A2 01375000
BALR R14,R15 GO TRANSLATE @V4075A2 01376000
LTR R15,R15 HOW BAD WAS IT @V4075A2 01377000
BNZ CODECHEK IT WAS SOOO BAD.... @V4075A2 01378000
SLL R5,28 STRIP OFF ALL OVER 1 HALF BYTE @V4075A2 01379000
SRL R5,28 AND RESTORE THE CORRECT VALUE @V4075A2 01380000
L R2,HEXADADD ADDR OF THE LAST DISPLAY ADDRESS @V4075A2 01381000
L R2,0(R2) GET THE ADDRESS @VA04250 01382000
L R3,BOUNDADD GET THE POINTER TO THE INCREMENT @V4075A2 01383000
L R3,0(R3) AND GET THE INCREMENT @V4075A2 01384000
SRL R3,ONE RESTORE TO BYTES FROM H'WORDS @V4075A2 01385000
C R3,SIXTEEN IS THE INC GREATER THAN ONE LINE @V4075A2 01386000
BH ADDBOUND YES - USE THE BOUND PARAMETER @V4075A2 01387000
L R3,SIXTEEN NO - USE ONE LINE @V4075A2 01388000
ADDBOUND AR R2,R3 ADD TO THE 'FROM' ADDRESS @V4075A2 01389000
AR R2,R5 AND ADD ORIG LINE DISPLACEMENT @V4075A2 01390000
ST R2,NEWFROM STORE IT @VA04250 01391000
LA R3,XADDL LENGTH OF ADDRESS TO TRANSLATE @VA04250 01392000
LA R4,NEWFROM+ONE ADDRESS FOR TRANSLATE @VA04250 01393000
BAL R10,GOINT GO TRANSLATE @VA04250 01394000
MVC PLIST3,BLANKS SET PLIST TO BLANKS @VA04250 01395000
MVC PLIST3(SIXBYTES),0(R5) PLUG NEW ADDRESS @VA04250 01396000
***************************************************************@V4075A2 01397000
* IF 'PRINT ' FOLLOWS A REUSE OF LOCATE, THE ORIGINAL @V4075A2 01398000
* 'FROM' ADDRESS FROM THE INPUT LINE IS USED @V4075A2 01399000
* AND DOES NOT REFLECT THE LATEST 'FROM'. THIS SAVES @V4075A2 01400000
* THE FROM ADDRESS TO REFLECT THE LATEST UPDATE @V4075A2 01401000
***************************************************************@V4075A2 01402000
MVC NEWFREBC,PLIST3 SAVE THE UPDATED FROM ADDR @V4075A2 01403000
MVC INLENGTH,OLDINLEN FAKE UP INPUT LENGTH @VA04250 01404000
MVC INPUT,INSAVE AND INPUT LINE @VA04250 01405000
B GOLOCATE GO BACK TO LOCATE @VA04250 01406000
* * * * * * * * ------- -------- -------- ------- * 01407000
* * * * * * * * REUSE THE SCROLL 01408000
* * * * * * * * ------- -------- -------- ------- * 01409000
RESCROLL MVC INPUT,INSAVE REPLACE THE LAST INPUT LINE @VA04250 01410000
MVC INLENGTH,OLDINLEN AND LENGTH @VA04250 01411000
B GOSCROLL FOR CONSISTENCY - AND CONTINUE @VA04250 01412000
***************************************************************@V4075A2 01413000
* THIS CLOSES THE PRINTER @V4075A2 01414000
***************************************************************@V4075A2 01415000
CLOSEPRT LA R2,CLOSER @V4075A2 01416000
LA R3,L'CLOSER @V4075A2 01417000
DC X'83230008' CALL CP TO CLOSE PRINT FILE @V4075A2 01418000
BR R10 RETURN @V4075A2 01419000
* * * * * * * * ------- -------- -------- ------- * 01420000
* * * * * * * * RETURN 01421000
* * * * * * * * ------- -------- -------- ------- * 01422000
RETURN BAL R10,CLEAR CLEAR SCREEN FOR TERM MESSAGE @VA04250 01423000
BAL R10,CLOSEPRT GO SHUT DOWN PRINTER @V4075A2 01424000
LA R10,DUMPFSCB GET READY TO @VA04250 01425000
FSCLOSE FSCB=(R10) CLOSE THE DUMP FILE @VA04250 01426000
L R2,PBADDADD ADDRESS OF LOC BUFFER ADDRESS @V4075A2 01427000
L R2,0(R2) GET THE BUFFER ADDRESS @V4075A2 01428000
LTR R2,R2 ANY ADDRESS ? @V4075A2 01429000
BZ RETURNER NO - GET RIGHT OUT @V4075A2 01430000
LR R1,R2 YES - SET UP TO RETURN STORAGE @V4075A2 01431000
DMSFRET DWORDS=(1030),LOC=(1),ERR=FREEERR @V4075A2 01432000
RETURNER L R13,SAVEBACK CALLERS SAVE PTR @VA04250 01433000
MVC SAVREG15(L'RETCODE,R13),RETCODE RC FOR PICK UP @VA04250 01434000
LM R14,R12,SAVEDISP(R13) CALLERS REGS @VA04250 01435000
BR R14 RETURN @VA04250 01436000
* * * * * * * * ------- -------- -------- ------- * 01437000
* * * * * * * * CONSTANTS 01438000
* * * * * * * * ------- -------- -------- ------- * 01439000
CLOSER DC C'CLOSE PRT' @V4075A2 01440000
CODE4 DC F'4' ACCEPTABLE RETURN @VA04250 01441000
CODE8 DC F'8' NON DITTO @VA04250 01442000
SIXTEEN DC F'16' BUMP 'FROM' FOR 'RELOCATE' @VA04250 01443000
HUH DC CL16'????????' 'DONT RECOGNISE INPUT' @VA04250 01444000
INPUT DS CL150 READ FROM CONSOLE @VA04250 01445000
INSAVE DS CL150 INPUT SAVE AREA @VA04250 01446000
CMDINFO DC 80C' ' HEADER FOR SCREEN DISPLAY @VA04250 01447000
NOPARM DC XL15'40404040404040FFFFFFFFFFFFFFFF' ONLY 1CHAR @VA04250 01448000
PLIST DS 8D THE FAMOUS PARAMETER LIST @VA04250 01449000
ORG PLIST @VA04250 01450000
PLIST1 DS D FIRST PLIST PARAMETER @VA04250 01451000
PLIST2 DS D SECOND @VA04250 01452000
PLIST3 DS D THIRD @VA04250 01453000
PLIST4 DS D FOURTH @VA04250 01454000
PLIST5 DS D FIFTH @VA04250 01455000
PLIST6 DS D SIXTH @VA04250 01456000
PLIST7 DS D SEVENTH @VA04250 01457000
PLIST8 DS D EIGHTH @VA04250 01458000
* * * * * * * * ------- -------- -------- ------- * 01459000
* * * * * * * * SAVEAREA 01460000
* * * * * * * * ------- -------- -------- ------- * 01461000
SAVEAREA DS 0F THIS PROGRAM'S SAVE AREA @VA04250 01462000
SAVEUSR DS F USER WORD @VA04250 01463000
SAVEFWD DS F FORWARD POINTER @VA04250 01464000
SAVEBACK DS F BACKWARD POINTER @VA04250 01465000
SAVER14 DS F SAVE AREA FOR CALLER'S R14 @VA04250 01466000
SAVER15 DS F SAVE AREA FOR CALLER'S R15 @VA04250 01467000
SAVER0 DS F SAVE AREA FOR CALLER'S R0 @VA04250 01468000
SAVER1 DS F SAVE AREA FOR CALLER'S R1 @VA04250 01469000
SAVER2 DS F SAVE AREA FOR CALLER'S R2 @VA04250 01470000
SAVER3 DS F SAVE AREA FOR CALLER'S R3 @VA04250 01471000
SAVER4 DS F SAVE AREA FOR CALLER'S R4 @VA04250 01472000
SAVER5 DS F SAVE AREA FOR CALLER'S R5 @VA04250 01473000
SAVER6 DS F SAVE AREA FOR CALLER'S R6 @VA04250 01474000
SAVER7 DS F SAVE AREA FOR CALLER'S R7 @VA04250 01475000
SAVER8 DS F SAVE AREA FOR CALLER'S R8 @VA04250 01476000
SAVER9 DS F SAVE AREA FOR CALLER'S R9 @VA04250 01477000
SAVER10 DS F SAVE AREA FOR CALLER'S R10 @VA04250 01478000
SAVER11 DS F SAVE AREA FOR CALLER'S R11 @VA04250 01479000
SAVER12 DS F SAVE AREA FOR CALLER'S R12 @VA04250 01480000
INLENGTH DS F LENGTH OF LINE READ IN @VA04250 01481000
OLDINLEN DS F LENGTH OF PREVIOUS LINE @VA04250 01482000
NEWFROM DS F UPDATED 'FROM' FOR 'RELOCATE' @VA04250 01483000
NEWFREBC DC CL8' ' EBC FORM OF ABOVE @V4075A2 01484000
RETCODE DS F RETURN CODE @VA04250 01485000
CONSOLE DS F ADDRESS OF VIRTUAL CONS @VA04250 01486000
BLANKS DC CL8' ' BLANKS @VA04250 01487000
FENCE DC XL8'FFFFFFFFFFFFFFFF' END OF PLIST @VA04250 01488000
X8 DC H'8' PLIST INCREMENT @VA04250 01489000
TYPEFLAG DC X'00' TYPE OF TERMINAL @VA04250 01490000
QUERY DC XL2'6F40' '? ' FOR RESTATE INPUT @VA04250 01491000
PRINTSW DC X'00' PRINT SWITCH @V4075A2 01492000
***************************************************************@V4075A2 01493000
* ONE-SHOT PRINT SW IS X'00' IF NOT IN A ONE SHOT @V4075A2 01494000
* PRINT SITUATION, SUCH AS PRINT ON, OR PRINT OFF AND @V4075A2 01495000
* NOT A PRINT COMMAND. IT IS X'0F' IF ONE-SHOT PRINT @V4075A2 01496000
* WITH DISPLAY SUPPRESSED, SUCH AS 'PRINT' AFTER @V4075A2 01497000
* A SUBCOMMAND - D 1234, @V4075A2 01498000
* AND X'FF' IF ONE SHOT WITH DISPLAY, SUCH AS @V4075A2 01499000
* PRINT D 1234. @V4075A2 01500000
***************************************************************@V4075A2 01501000
PRINTONE DC X'00' ONE SHOT PRINT SWITCH. @V4075A2 01502000
* * * * * * * * ------- -------- -------- ------- * 01503000
TYPESAVE DS 0F RESULTS OF CONSOLE DIAGNOSE @VA04250 01504000
DS 1C DEV TYPE BYTE 1 @VA04250 01505000
TYPEREM DS 1C DEV TYPE BYTE 2 @VA04250 01506000
DS H UNUSED DEV TYPE BYTES @VA04250 01507000
* * * * * * * * ------- -------- -------- ------- * 01508000
SEVEN DC F'7' COUNT OF ADDRESS BYTES @VA04250 01509000
NOFILE DC F'28' FILE NOT FOUND RETCODE @VA04250 01510000
PAGESW DC X'01' PAGE SWITCH @VA04250 01511000
DUMPFSCB FSCB 'PRB0000X DUMP * ',BSIZE=4096 HRC001DM 01512490
NULL EQU X'00' TO ZERO A REG @VA04250 01513000
TYPER EQU X'FF' TYPEWRITER TYPE DEVICE @VA04250 01514000
HIBYTEST EQU X'F0' TEST FOR 3270 TYPE DISPLAY @VA09785 01514400
LOBYTEST EQU X'0F' TERMINALS @VA09785 01514800
NUMZONE EQU X'F0' ZONE FOR A NUMEROC CHARACTER @VA04250 01515000
CMDCODE EQU X'19' COMMAND CODE IN DIAGNOSE CCW @VA04250 01516000
ERASE EQU X'FF' ERASE CONTROL BYTE IN CCW @VA04250 01517000
BLANK EQU X'40' SIGNIFICANT CHARACTER COMPARE @VA04250 01518000
DELIM EQU X'B0' DELIMITER TEST - '4X' @VA04250 01519000
REC2 EQU X'02' RECORD #2 @VA04250 01520000
S EQU X'E2' S FOR SCROLL @VA04250 01521000
T EQU X'E3' LEADING 'T' @VA04250 01522000
U EQU X'E4' U FOR SCROLL 'U' @VA04250 01523000
NULLDUMP EQU X'E7' DUMP NOT INDICATED YET @V4075A2 01524000
PC EQU X'6C' PERCENT @VA04250 01525000
ZERO EQU X'F0' ZERO @VA04250 01526000
PAGE1 EQU X'01' PAGE1 SW @VA04250 01527000
PAGE2 EQU X'02' PAGE2 SW @VA04250 01528000
NOTRED EQU X'00' NOT READ STATUS @VA04250 01529000
CHARLEN EQU X'01' LENGTH OF ONE BYTE INPUT TEST @VA04250 01530000
TWOBYTES EQU X'02' TWO @VA04250 01531000
THREEBYT EQU X'03' THREE @VA04250 01532000
SIXBYTES EQU X'06' SIX @VA04250 01533000
SEVENBYT EQU X'07' SEVEN @VA04250 01534000
ONE EQU 1 COUNTER BUMPER @VA04250 01535000
XADDL EQU 3 LENGTH OF HEX ADDRESS @VA04250 01536000
VDEND EQU 4 END OF VALID INPUT @VA04250 01537000
GOODRET EQU 4 DISP TO GOOD RETURN ADDRESS @VA04250 01538000
FIV EQU 5 UNPACK DISP @VA04250 01539000
SIX EQU 6 UNPACK DISP @VA04250 01540000
SEV EQU 7 UNPACK DISP @VA04250 01541000
FN EQU 8 FILE NAME IN FSCB @VA04250 01542000
FSCBDNUM EQU 11 DUMP NUMBER @VA04250 01543000
CUUBLANK EQU 11 END OF 'CUU' IN PLIST @VA04250 01544000
SAVEDISP EQU 12 DISP. OF REGS IN SAVEAREA @VA04250 01545000
FNEND EQU 15 END OF FILE NAME @VA04250 01546000
FT EQU 16 FILE TYPE @VA04250 01547000
SAVREG15 EQU 16 DISP FOR REG15 IN SAVAREA @VA04250 01548000
FR EQU 22 FROM DISP. @VA04250 01549000
FM EQU 24 FILE MODE IN FSCB @VA04250 01550000
TO EQU 30 'TO' DISP @VA04250 01551000
LINECNT EQU 43 NUMBER OF LINES @VA04250 01552000
TRYDIAG EQU 50 NUMBER OF RETRIES FOR DIAGNOSE @VA04250 01553000
LINELEN EQU 80 LENGTH OF LINE @VA04250 01554000
***************************************************************@V4075A2 01555000
* CONSTANTS FOR PRINT @V4075A2 01556000
***************************************************************@V4075A2 01557000
OF DC CL8'OF' @V4075A2 01558000
OFF DC CL8'OFF' PRINT OFF PARM @V4075A2 01559000
ON DC CL8'ON' PRINT ON @V4075A2 01560000
PRT DC CL8'PRT' PRT ABBREV FOR PRINT @V4075A2 01561000
CLOSE DC CL6'CLOSE' CLOSE PARM OF PRINT SUBC. @V4075A2 01562000
PRINT DC CL6'PRINT' PRINT SUBCOMMAND @V4075A2 01563000
PRINTONM DC C'PRINT IS ON' POS. REPLY TO PRINT ? @V4075A2 01564000
PRINTOFM DC C'PRINT IS OFF' NEG REPLY TO PRINT ? @V4075A2 01565000
TURNON EQU X'FF' SWITCH ON VALUE @V4075A2 01566000
TURNOFF EQU X'00' SWITCH OFF VALUE @V4075A2 01567000
SUBCOMM EQU X'FF' ONE-SHOT PRINT W DISPLAY @V4075A2 01568000
NOSUBC EQU X'0F' ONE-SHOT PRINT - NO DISPLAY. @V4075A2 01569000
* * * * * * * *------- -------- -------- -------- ------* 01570000
* * * * * * * * CONSTANTS FOR RDERR 01571000
* * * * * * * *------- -------- -------- -------- ------* 01572000
DEPACK DS D UNPACKED RETCODE @VA04250 01573000
DECODE DS D DECIMAL RETCODE @VA04250 01574000
ERMSG719 DC C'DMMDSC719I ERROR ''' TEXT OF ERROR MESSAGE @VA04423 01575000
ERRMSGCD DC CL3' ' * @VA04250 01576000
ERRMSGT2 DC C''' IN FSSTATE. FILE ''' * @VA04250 01577000
ERRMSGFN DC CL8' ' * @VA04250 01578000
ERRMSFIL DC CL2' ' FILLER @VA04250 01579000
ERRMSGFT DC CL6' ' * @VA04250 01580000
ERRMSGF2 DC CL1' ' FILLER @VA04250 01581000
ERRMSGM DC CL2' ' * @VA04250 01582000
ERRMSGHK DC CL1'''' TRAILING HICKEY @VA04250 01583000
E719L EQU *-ERMSG719 * @VA04250 01584000
* * * * * * * * ------- -------- -------- ------- * 01585000
* * * * * * * * OTHER MESSAGES 01586000
* * * * * * * * ------- -------- -------- ------- * 01587000
EMSG7011 DC C'DMMDSC701R Please enter one of the following operands:*01588190
' HRC001DM 01588380
EMSG7012 DC C' NNNNN < MODE > - To view PRBNNNNN from CMS *01588570
DISK ''MODE''' HRC001DM 01588760
EMSG7013 DC C' HELP - To request HELP informatio*01588950
n' HRC001DM 01589140
EMSG7014 DC C' END, QUIT, HX - To EXIT' HRC001DM 01589330
SHORTRDY DC C'*R' SHORT READY MSG @VA04250 01590000
READYMSG DC C'*** READY ***' REGULAR READY @VA04250 01591000
NOFILMSG DC C'DUMP NOT FOUND - CHECK NUMBER AND MODE' @VA04250 01592000
* * * * * * * *------- -------- -------- -------- ------* 01593000
* * * * * * * * CONSTANTS FOR INPUT CHECK ROUTINE * 01594000
* * * * * * * *------- -------- -------- -------- ------* 01595000
RIOBLOK DC CL8'RIOBLOK' REAL DEVICE TRACKING @VA04250 01596000
VIOBLOK DC CL8'VIOBLOK' VIRTUAL DEVICE TRACKING @VA04250 01597000
VMBLOK DC CL7'VMBLOK' SUMMARY OF USERIDS & STATUS @VA04250 01598000
SCROLL DC CL7'SCROLL' SCROLL @VA04250 01599000
LOCATE DC CL7'LOCATE' LOCATE A STRING @VA04250 01600000
TRACE DC CL6'TRACE' 'N' TRACE TABLE ENTRIES @VA04250 01601000
DISPLAY DC CL8'DISPLAY' DISPLAY REQUEST @VA04250 01602000
REGS DC CL5'REGS' CONTROL AND GENERAL REG REQUEST @VA04250 01603000
G DC CL2'G' GENERAL REG REQ. @VA04250 01604000
C DC CL2'C' CONTROL REG REQUEST @VA04250 01605000
XREGS DC CL6'XREGS' AREGS OR MREGS @V4075A2 01606000
A DC C'A' APREGS @V4075A2 01607000
M DC C'M' MREGS @V4075A2 01608000
EXAMINE DC CL2'X' ONE FULL SCREEN OF THE DUMP @VA04250 01609000
DMK DC CL3'DMK' MODULE OR ENTRY SEARCH @VA04250 01610000
HDK DC CL3'HDK' MODULE OR ENTRY SEARCH HRC001DM 01610500
DMKQ DC CL4'DMK?' ADDRESS LOCATE REQUEST @VA04250 01611000
HDKQ DC CL4'HDK?' ADDRESS LOCATE REQUEST HRC001DM 01611500
IREC DC CL2'I' DUMP INFORMATION RECORD (REC2) @VA04250 01612000
INVALID DC CL7'INVALID' SET 'UNRECOGNISABLE INPUT' FLAG @VA04250 01613000
ZEROS DC CL5'00000' TO RESET FSCB FILENAME @VA04250 01614000
* * * * * * * * ------- -------- -------- ------- * 01615000
* * * * * * * * CONSTANTS FOR INCHECK 01616000
* * * * * * * * ------- -------- -------- ------- * 01617000
HELP DC CL5'HELP' REQUEST FOR COMMAND SUMMARY @VA04250 01618000
HX DC CL3'HX' HALT EXECUTION @VA04250 01619000
QUIT DC CL5'QUIT' SAME @VA04250 01620000
END DC CL4'END' END @VA04250 01621000
BLANKOUT DC CL150' ' BLANKS TO CLEAR OUTPUT AREA @VA04830 01622000
* * * * * * * * ------- -------- -------- ------- * 01623000
* * * * * * * * CCWS FOR 'HELP' 01624000
* * * * * * * * ------- -------- -------- ------- * 01625000
CCWA CCW X'19',INFO1,X'60',1760 ERASE @VA04250 01626000
CCWB CCW X'19',INFO1,X'20',1760 WRITE @VA04250 01627000
* * * * * * * *------- -------- -------- -------- ------* 01628000
* * * * * * * * ADCONS 01629000
* * * * * * * *------- -------- -------- -------- ------* 01630000
DS 0F @VA04250 01631000
FEXADD DC AL4(DMMFEX) ADDRESS OF EXAMINE FETCH @VA04250 01632000
VMBADD DC AL4(DMMVMB) VMBLOK ROUTINE @VA04250 01633000
MODADD DC AL4(DMMMOD) MODULE NAME ROUTINE @VA04250 01634000
SCRADD DC AL4(DMMSCR) SCROLLER @VA04250 01635000
REGADD DC AL4(DMMREG) REGISTER DISPLAY @VA04250 01636000
FEDADD DC AL4(DMMFED) DUMP COMMAND @VA04250 01637000
TRACEADD DC AL4(DMMTRC) TRACE TABLE ROUTINE @VA04250 01638000
IOBADD DC AL4(DMMIOB) REAL AND VIRTUAL IOBLOCKS @VA04250 01639000
LOCADD DC AL4(DMMLOC) LOCATE @VA04250 01640000
INTADD DC AL4(DMMINT) TRANSLATE @VA04250 01641000
PBADDADD DC AL4(PREBUFAD) ADDRESS OF LOC BUFFER ADDRESS @V4075A2 01642000
BOUNDADD DC AL4(BOUND) ADDRESS OF INCREMENT @V4075A2 01643000
HEXADD DC AL4(DMMHEX) EBC-TO-BINARY TRANSLATE @V4075A2 01644000
INFOADD1 DC AL4(INFO1) 'HELP' PAGE1 @VA04250 01645000
INFOADD2 DC AL4(INFO2) 'HELP' PAGE2 @VA04250 01646000
HEXADADD DC AL4(HEXAD) DISPLAY ADDRESS IN HEX @VA04250 01647000
ISWADD DC AL4(ISW) ITEM TABLE READ SW @VA04250 01648000
MAPRSADD DC AL4(MAPREDSW) LOAD MAP READ @VA04250 01649000
RECNOADD DC AL4(RECORDNO) LAST RECORD READ @VA04250 01650000
SCBKUP DC F'176' VALUE TO BACKUP FOR TRACE @VA04250 01651000
************************************************************ @V4075A2 01652000
* CONSTANTS FOR DMMMAP @V4075A2 01653000
************************************************************ @V4075A2 01654000
MAXCOUNT DC F'1792' MAX TRIES IN ITEM TABLE @V4075A2 01655000
EOTFOX DC X'FFFF' END OF ITEM TABLE FLAG @V4075A2 01656000
EOF DC F'12' END OF FILE RET CODE @V4075A2 01657000
NOERR DC F'0' NO ERROR RETURN @V4075A2 01658000
CPEND DC CL8'DMKCPEND' END OF RES NUCLEUS @V4075A2 01659000
MAPRET DS F SAVE FOR MAP RET CODE @V4075A2 01660000
GOTTENAD DS F SAVE FOR DMSFREE GOTTEN ADDRESS @V4075A2 01661000
MAP DC CL8'MAP' MAP SUBCOMMAND @V4075A2 01662000
MAPADD DC AL4(DMMMAP) ADDRESS OF MAPPING ROUTINE @V4075A2 01663000
ADISK DC CL2'A1' A DISK FILE MODE IDENT @V4075A2 01664000
ITBLMSG DC C'DMMDSC705E ERROR IN ITEM TABLE' @V4075A2 01665000
MAPONMSG DC C'THE MAP HAS BEEN ADDED TO THE DUMP' @V4075A2 01666000
TWOMAPMS DC C'DMMDSC720I LOAD MAP ALREADY PRESENT' @V4075A2 01667000
DPNOTAMS DC C'DMMDSC723I THE DUMP IS NOT ON THE A-DISK' @V4075A2 01668000
STATFLAG DS C FILE STATUS FLAG BYTE @V4075A2 01669000
* * * * DO NOT SEPARATE THE FOLLOWING STATEMENTS * * * * * * **@V4075A2 01670000
SHARECON DS 0F SHARED CONSTANT AREA *@V4075A2 01671000
ORG SHARECON+1 DISP *@V4075A2 01672000
DUMPNUM DS CL8 NUMBER OF THE DUMP BEING READ *@V4075A2 01673000
ORG SHARECON+X'20' DISP *@V4075A2 01674000
REALEND DS F ADDR DMKCPEND FROM SYMBOL TABLE *@V4075A2 01675000
ORG SHARECON+X'424' DISP *@V4075A2 01676000
TEXT5 DS CL80 MSG TEXT AREA *@V4075A2 01677000
TEXT7 DS CL80 MSG TEXT AREA *@V4075A2 01678000
* * * * DO NOT SEPARATE THE ABOVE STATEMENTS * * * * * * * * **@V4075A2 01679000
TWO EQU 2 LENGTH OF ITEMTAB ENTRY @V4075A2 01680000
DUMMIES EQU 5 COUNT THE EXTRA RECS IN THE DUMP @V4075A2 01681000
EIGHT EQU 8 DISP TO ADDRESS @V4075A2 01682000
TABENT EQU 12 LENGTH OF A SYM TAB ENTRY @V4075A2 01683000
ITEMTAB EQU 56 DISP TO ITEM TAB IN DMPPGMAP @V4075A2 01684000
HIHALF EQU X'F0' MASK TO STRIP OFF LO HALF BYTE @V4075A2 01685000
* * * * * * * * ------- -------- -------- ------- * 01686000
* * * * * * * * CONSTANTS FOR CLEAR 01687000
* * * * * * * * ------- -------- -------- ------- * 01688000
CCWC CCW X'19',X'0',X'20',1760 @VA04250 01689000
SAVCLR DS 3F SAVE FOR CLEAR SUBR. @VA04250 01690000
SCRNADD DC AL4(SCRNAREA) DISPLAY AREA @VA04250 01691000
***************************************************************@V4075A2 01692000
* CONSTANTS FOR &NAME SECTION @V4075A2 01693000
***************************************************************@V4075A2 01694000
* DO NOT SEPARATE THE FOLLOWING STATEMENTS * * * * * * * * * **@V4075A2 01695000
ILLAMPMS DC C'DMMDSC722I INVALID ENTRY INTO ' TEXT1 * *@V4075A2 01696000
DC X'50' AMPERSAND * *@V4075A2 01697000
DC C'NAME TABLE' TEXT2 * *@V4075A2 01698000
TAMSGLEN EQU *-ILLAMPMS LENGTH OF ABOVE MSG * *@V4075A2 01699000
TABFULMS DC C'DMMDSC721I THE ' * *@V4075A2 01700000
DC X'50' AMPERSAND * *@V4075A2 01701000
DC C'NAME TABLE IS FULL' * *@V4075A2 01702000
TFMSGLEN EQU *-TABFULMS LENGTH * *@V4075A2 01703000
* DO NOT SEPARATE THE ABOVE STATEMENTS * * * * * * * * * * * **@V4075A2 01704000
AMPERSAN DC XL8'5040404040404040' AMPERSAND - BLANKS @V4075A2 01705000
TABENDSW DC X'00' END OF TABLE FOUND @V4075A2 01706000
ZBSWITCH DC X'00' BLANK CHECKING @V4075A2 01707000
DS 0F @V4075A2 01708000
NEXTSLOT DC AL4(AMPTABLE) WHERE TO START ADDING NEW TERM @V4075A2 01709000
NEWSTART DS F START OF A PARTIAL ENTRY @V4075A2 01710000
AMPBUFF DC CL60' ' BUFFER FOR &NAME LINES @V4075A2 01711000
OUTLINE DC CL80' ' WRTERM BUFFER @V4075A2 01712000
DS 0D ALIGN ON SLOT BOUNDARY. @V4075A2 01713000
AMPTABLE DC 32CL8' ' NAME TABLE - 32 SLOTS @V4075A2 01714000
***************************************************************@V4075A2 01715000
* AT THIS WRITING YOU MAY INCREASE THE SIZE OF THE TABLE @V4075A2 01716000
* TO 70 ENTRIES BEFORE YOU RUN OUT OF THIS BASE REGISTER. @V4075A2 01717000
***************************************************************@V4075A2 01718000
AMPTBEND DC XL8'FFFFFFFFFFFFFFFF' END OF AMPTABLE @V4075A2 01719000
HEXZERO EQU X'00' TEST IN BLANK EXTRACT RTN @V4075A2 01720000
STRINGLN DS F LENGTH OF STRING @V4075A2 01721000
STRINGAD DC CL150' ' LOCATE SEARCH ARG @V4075A2 01722000
MAXSTRNG DC F'148' MAX ALLOWED INPUT @V4075A2 01723000
PATCH DC 50F'0' PATCH AREA @VA04250 01724000
LTORG @VA04250 01725000
* * * * * * * * ------- -------- -------- ------- * 01726000
* * * * * * * * HELP PAGE 01727000
* * * * * * * * THE FOLLOWING IS THE TEXT OF THE 01728000
* * * * * * * * PAGES DISPLAYED TO THE USER ON 01729000
* * * * * * * * TYPING 'HELP'. 01730000
* * * * * * * * ------- -------- -------- ------- * 01731000
INFO1 DC CL40' DUMPSCAN - EXAMINE THE SYSTEM ABEND' @V4075A2 01732000
DC CL40' DUMPS PRODUCED BY THE VMFDUMP COMMAND.' @V4075A2 01733000
DC CL40' ' @VA04250 01734000
DC CL40' ' @VA04250 01735000
DC CL40'REPLY TO MESSAGE: ' HRC001DM 01736790
DC CL40' ' HRC001DM 01737580
DC CL40' DMMDSC701I ENTER DUMP NUMBER AND MODE ' HRC001DM 01738370
DC CL40'- FOR ''PRB00027 DUMP C'' ENTER ''27 C''' HRC001DM 01739160
DC CL40'SUBCOMMANDS: ' @VA04250 01740000
DC CL40' ' @VA04250 01741000
DC CL40' DISPLAY HEXLOC DISPLAYS X''' @VA04250 01742000
DC CL40'130'' BYTES OF THE DUMP (3270 ONLY) ' @VA04250 01743000
DC CL40' DISPLAY HEXLOC(%) XXX DISPLAYS ''X' @VA04250 01744000
DC CL40'XX'' HEX BYTES FROM LOCATION HEXLOC(%) ' @VA04250 01745000
DC CL40' TRACE NNN DISPLAYS TH' @VA04250 01746000
DC CL40'E PREVIOUS NNN TRACE ENTRIES ' @VA04250 01747000
DC CL40' SCROLL(U) SCROLL DOWN' @VA04250 01748000
DC CL40' (OR UP) ONE SCREEN OF DATA (3270 ONLY) ' @VA04250 01749000
DC CL40' C, G, REGS, (A,M)REGS C, G SHOW R' @V4075A2 01750000
DC CL40'EGS, (A,M)REGS SHOW CLOCKS AND PSWS ALSO' @V4075A2 01751000
DC CL40' DMKXXXYY/HDKXXXYY DISPLAYS TH' HRC001DM 01752490
DC CL40'E MODULE OR THE ENTRY ' @VA04250 01753000
DC CL40' DMK?/HDK? HEXLOC IDENTIFIES ' HRC001DM 01754490
DC CL40'THE MODULE CONTAINING THE ADDRESS ' @VA04250 01755000
DC CL40' MAP ADDS A NUCL' @V4075A2 01756000
DC CL40'EUS LOAD MAP TO THE DUMP BEING EXAMINED.' @V4075A2 01757000
DC CL40' PRINT (ON,OFF, ,CLOSE,?,SUBCOMMAND ' @V4075A2 01758000
DC CL40'CONTROLS PRINTING OF DISPLAYED DATA ' @V4075A2 01759000
DC XL5'4040404050' AMPERSAND @V4075A2 01760000
DC CL35'NAME (NAME BUILDS AND ' @V4075A2 01761000
DC CL40'CALLS A TABLE OF HIGH-USE SUB-COMMANDS.' @V4075A2 01762000
DC CL40' VMBLOK LISTS USER ' @VA04250 01763000
DC CL40'VMBLOKS AND STATUS ' @VA04250 01764000
DC CL40' RIOBLOK CUU DISPLAYS TH' @VA04250 01765000
DC CL40'E RCH, RCU, AND RDEV BLOCKS ' @VA04250 01766000
DC CL40' VIOBLOK CUU USER DISPLAYS TH' @VA04250 01767000
DC CL40'E VCH, VCU, AND VDEV BLOCKS FOR USER ' @VA04250 01768000
DC CL40' LOCATE STRING FROM TO (I SEEKS THE S' @V4075A2 01769000
DC CL40'TRING FROM ''FROM'' TO ''TO'' IN STEPS ''I''.' 01770000
DC CL40' HELP REDISPLAYS ' @VA04250 01771000
DC CL40'THIS PAGE.' @V4075A2 01772000
DC CL40' HX, QUIT, OR END WILL END TH' @VA04250 01773000
DC CL40'E SESSION ' @VA04250 01774000
DC CL40' TYPE HELP FOR MORE DETAIL, OR HIT EN' @VA04250 01775000
DC CL40'TER.' @VA04250 01776000
* * * * * * * * ------- -------- -------- ------- * 01777000
* * * * * * * * THIS IS PAGE 2 - MORE DETAIL ON COMMANDS 01778000
* * * * * * * * ------- -------- -------- ------- * 01779000
INFO2 DC CL40' DUMPSCAN _ P' @VA04250 01780000
DC CL40'AGE 2 ' @VA04250 01781000
DC CL40' ALL INPUT IS TOKENIZED. ANY STRINGS ' @VA04250 01782000
DC CL40'OVER 8 BYTES (EXCEPT IN LOCATE) WILL BE ' @VA04250 01783000
DC CL40' TRUNCATED UNLESS THERE IS A DELIMITE' @VA04250 01784000
DC CL40'R IN THE STRING. DELIMITERS ARE BLANKS ' @VA04250 01785000
DC CL40' AND PERIODS. TO BE COMPATIBLE WITH C' @V4075A2 01786000
DC CL40'P, DISPLAY ACCEPTS THE LEADING ''T''. SO' @V4075A2 01787000
DC CL40' YOU MAY ENTER:- DISPLAY 1234 56 OR' @V4075A2 01788000
DC CL40' D 1234.56 OR D T1234 56 OR D T1234.56' @V4075A2 01789000
DC CL40' ALL COMMANDS MAY BE TRUNCATED. LEA' @VA04250 01790000
DC CL40'DING ZEROS ARE NOT NEEDED IN ADDRESSES. ' @VA04250 01791000
DC CL40' THE USERID IN THE VIOBLOK COMMAND WI' @VA04250 01792000
DC CL40'LL DEFAULT TO THE LAST USERID ENTERED, ' @VA04250 01793000
DC CL40' OR TO OPERATOR, IF ONE HAS NOT BEEN ' @VA04250 01794000
DC CL40'USED. MOST ROUTINES DISPLAY THE COMMAND ' @VA04250 01795000
DC CL40' AT THE TOP OF THE DISPLAY, BUT SOME ' @VA04250 01796000
DC CL40'LONG DISPLAYS, SUCH AS TRACE OR DISPLAY ' @VA04250 01797000
DC CL40' WILL GO TO ANOTHER PAGE. THE LAST CO' @VA04250 01798000
DC CL40'MMAND MAY BE RECALLED BY TYPING ?. ' @VA04250 01799000
DC CL40' ENTERING A CP MODULE NAME - DMKXXX/H' HRC001DM 01800590
DC CL40'DKXXX - CAUSES A LOAD MAP ON THE END OF ' HRC001DM 01801180
DC CL40' THE CMS DUMP TO BE SEARCHED. IF T' @VA04250 01802000
DC CL40'HE MODULE NAME IS FOUND, ITS VIRTUAL ' @VA04250 01803000
DC CL40' AND REAL ADDRESSES ARE FOUND, AND TH' @VA04250 01804000
DC CL40'E REAL ADDRESS AND DATA ARE DISPLAYED. ' @VA04250 01805000
DC CL40' THE SAME IS DONE FOR AN ENTRY POINT ' @VA04250 01806000
DC CL40'- DMMXXXYY - AND IF THE EXACT ENTRY IS ' @VA04250 01807000
DC CL40' NOT FOUND THE ROUTINE LOOKS FOR THE ' @VA04250 01808000
DC CL40'PARENT MODULE NAME - DMMXXX - DISPLAYING' @VA04250 01809000
DC CL40' THAT IF POSSIBLE. DMK? FINDS THE MOD' @VA04250 01810000
DC CL40'ULE BELOW HEXLOC, AND ON THE SAME PAGE. ' @VA04250 01811000
DC CL40' IF THE DUMP HAS NO LOAD MAP, YOU MAY' @V4075A2 01812000
DC CL40' ADD IT NOW BY USING THE MAP SUBCOMMAND.' @V4075A2 01813000
DC CL40' LOCATE SEARCHES FOR THE GIVEN STRING' @VA04250 01814000
DC CL40' - UP TO 16 HEX DIGITS, NO SPACES. ' @VA04250 01815000
DC CL40' LOCATE AND SCROLL HAVE A "REUSE" FUN' @VA04250 01816000
DC CL40'CTION. A NULL LINE CAUSES THE PREVIOUS ' @VA04250 01817000
DC CL40' COMMAND TO BE REISSUED, UPDATED TO T' @VA04250 01818000
DC CL40'HE CURRENT ADDRESS. ' @VA04250 01819000
DC CL40' ' @VA04250 01820000
DC CL40' ' @VA04250 01821000
DC CL40' TYPE "HELP" TO GET BACK T' @VA04250 01822000
DC CL40'O PAGE1, OR HIT ENTER TO CONTINUE. ' @VA04250 01823000
REGEQU @VA04250 01824000
COPY DEVTYPES DEVICE TYPE MASKS @VA04250 01825000
COPY DMPBLOKS DUMPINREC @V4075A2 01826000
FSTB FILE STATUS TABLE @V4075A2 01827000
END 01828000