ibm:vm370-lib:cp:dmktrd.assemble_src
Table of Contents
DMKTRD Source
References
- Fixes Applied : 2
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [HRC013DK]
Source Listing
- DMKTRD.ASSEMBLE.txt
- TRD TITLE 'DMKTRD (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 VALIDATE SEQUENCING OF SOURCE 00002000
- *. 00003000
- * MODULE NAME - 00004000
- * 00005000
- * DMKTRD 00006000
- * 00007000
- * FUNCTION - 00008000
- * 00009000
- * TO PROVIDE A VIRTUAL MACHINE WITH THE FACILITY TO TRACE 00010000
- * I/O INSTRUCTIONS WITH OUTPUT ON THE PRINTER, TERMINAL, 00011000
- * OR BOTH. 00014000
- * 00015000
- * ATTRIBUTES - 00016000
- * 00017000
- * REENTRANT, PAGEABLE, CALLED VIA SVC 00018000
- * 00019000
- * ENTRY POINTS - 00020000
- * 00021000
- * DMKTRDSI - PROCESS AN I/O OPERATION (SIO, TIO, HIO, TCH) 00026000
- * 00027000
- * DMKTRDWT - SERIALIZATION ENTRY FOR I/O AND CCW TRACING 00028000
- * 00033000
- * ENTRY CONDITIONS - 00034000
- * 00035000
- * FOR ALL ENTRY POINTS: 00036000
- * 00037000
- * GPR 11 = ADDRESS OF VIRTUAL MACHINE VMBLOK 00038000
- * GPR 12 = ENTRY POINT ADDRESSABILITY 00039000
- * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00040000
- * 00041000
- * FOR DMKTRDSI (SIO,TIO,HIO,TCH) ENTRY POINT: 00071000
- * 00072000
- * GPR 1 = VIRTUAL DEVICE ADDRESS 00073000
- * GPR 8 = ADDRESS OF VDEVBLOK 00074000
- * GPR 10 = ADDRESS OF IOBLOK (FOR 'SIO' WITH CC = 0) 00075000
- * 'VMINST' FIELD (IN VMBLOK) HOLDS THE INSTRUCTION 00076000
- * 00077000
- * 00078000
- * FOR DMKTRDWT ENTRY POINTS: 00079000
- * 00080000
- * (NO SPECIAL REGISTER REQUIREMENTS OTHER THAN GPR11-13) 00081000
- * 00082000
- * EXIT CONDITIONS - 00095000
- * 00096000
- * APPROPRIATE OUTPUT MESSAGES HAVE BEEN GIVEN ON THE USER'S 00102000
- * TERMINAL AND/OR VIRTUAL PRINTER; THE USER'S 00103000
- * VIRTUAL MACHINE IS IN THE SAME RUNNABLE (OR NON-RUNNABLE) 00106000
- * STATE AS IT WOULD BE IF TRACING WERE NOT IN EFFECT. 00107000
- EJECT 00108000
- * CALLS TO OTHER ROUTINES - 00109000
- * 00110000
- * DMKQCNWT - WRITE A MESSAGE TO USER TERMINAL 00111000
- * DMKVSPRT - WRITE A MESSAGE ON PRINTER 00112000
- * DMKCVTBH - CONVERT BINARY FIELDS TO HEXADECIMAL 00113000
- * DMKSCNRD - TO GET REAL DEVICE ADDRESS IN CCU FORM 00114000
- * DMKSCNVU - TO GET VIRTUAL DEVICE BLOCKS 00115000
- * DMKSCNVN - TO GET MNEMONIC NAME OF VIRTUAL DEVICE (E.G. DASD) 00116000
- * DMKSCNRN - TO GET MNEMONIC NAME OF REAL DEVICE 00117000
- * DMKDSPCH - TO DISPATCH USER 00118000
- * DMKNEMOP - TO GET MNEMONIC EQUIVALENT OF A 370 OP CODE 00119000
- * DMKFREE - TO GET FREE STORAGE FOR TRACE CONTROL BLOCK 00120000
- * DMKFRET - TO RETURN TRACE CONTROL BLOCK TO FREE STORAGE 00121000
- * DMKCFMBK - TO INITIATE A READ FROM A TERMINAL 00122000
- * DMKPTRAN - TO BRING A USER PAGE INTO MEMORY WHEN NEEDED 00123000
- * DMKCCWSB - TO OBTAIN SEEK ARGS FOR CCW TRACING 00128000
- * DMKVATRN - TO PERFORM VIRTUAL ADDRESS TRANSLATION AS NEEDED 00131000
- * DMKPSASP - TO CHECK FOR STORAGE PROTECTION 00132000
- * 00133000
- * EXTERNAL REFERENCES - 00134000
- * 00135000
- * NONE 00136000
- * 00137000
- * TABLES / WORK AREAS - 00138000
- * 00139000
- * TRACE CONTROL BLOCK 00140000
- * 00141000
- * REGISTER USAGE - 00142000
- * 00143000
- * GPR 9 = ADDRESS OF TRACE CONTROL BLOCK 00144000
- * GPR 10 = ADDRESS OF IOBLOK (WHERE APPLICABLE) 00145000
- * GPR 12 - BASE REGISTER 00146000
- * GPR 13 - ADDRESS OF STANDARD SAVE AREA 00147000
- * 00148000
- * OTHER REGISTERS = WORK REGISTERS 00149000
- EJECT 00150000
- * NOTES - 00151000
- * 00152000
- * SEE "RESTRICTIONS" (PRECEDING "ERROR MESSAGES") 00153000
- * 00154000
- * VARIOUS TRACE OPTIONS CAN BE SET CUMULATIVELY BY ISSUING 00155000
- * SUCCESSIVE TRACE COMMANDS; FOR EXAMPLE TO HAVE BRANCH 00156000
- * TRACING ON THE TERMINAL (WITH RUN ON) AND FULL INSTRUCTION 00157000
- * TRACING ON THE PRINTER THE FOLLOWING COULD BE ISSUED 00158000
- * (ASSUMING THE USER IS IN CP MODE): 00159000
- * 00160000
- * TRACE BRANCH TERMINAL RUN 00161000
- * TRACE INSTRUCT PRINTER 00162000
- * BEGIN (OR SIMILAR CP COMMAND) 00163000
- * 00164000
- * FOR FULL INSTRUCTION OR BRANCH TRACING, ANY INSTRUCTION 00165000
- * WHICH MODIFIES THE NEXT BYTE IN STORAGE (FOLLOWING THE 00166000
- * INSTRUCTION) WILL CAUSE ERRONEOUS RESULTS, USUALLY 00167000
- * RESULTING IN TRACING BEING TERMINATED UNTIL AN INTERRUPT 00168000
- * OCCURS. 00169000
- * 00170000
- * SIMILARLY, AN INSTRUCTION WHICH EXAMINES EITHER (OR BOTH) 00171000
- * OF THE NEXT TWO BYTES FOLLOWING THE INSTRUCTION (WHEN 00172000
- * RUNNING WITH FULL INSTRUCTION OR BRANCH TRACING) WILL 00173000
- * OBTAIN ERRONEOUS DATA. 00174000
- * 00175000
- * AN INSTRUCTION WHICH EXECUTES THE NEXT INSTRUCTION IN 00176000
- * SEQUENCE, ON THE OTHER HAND, WILL BE HANDLED SATISFACTORILY, 00177000
- * EXCEPT THAT ONLY THE FIRST EXECUTION OF THE INSTRUCTION WILL 00178000
- * WILL BE TRACED. (IF NO TRANSFER OCCURS, THE 'EX' DROPS THRU, 00179000
- * AND THE INSTRUCTION IS DONE AGAIN IN LINE, IT WILL NOT 00180000
- * BE TRACED THE SECOND TIME. TRACING WILL THEN RESUME WITH 00181000
- * THE NEXT INSTRUCTION FOLLOWING THE EXECUTED INSTRUCTION.) 00182000
- * 00183000
- * WHEN SEVERAL TRACE OPTIONS ARE IN EFFECT, THE SAME 00184000
- * INSTRUCTION CAN APPEAR IN THE TRACE OUTPUT MORE THAN 00185000
- * ONCE. FOR EXAMPLE, IF FULL INSTRUCTION TRACING WERE 00186000
- * IN EFFECT, A START I/O (SIO) INSTRUCTION WOULD BE TRACED 00187000
- * BEFORE IT IS EXECUTED; SUBSEQUENTLY, WHEN THE SIO HAS 00188000
- * BEEN HANDLED BY CP, AND THE CONDITION CODE IS READY 00189000
- * TO BE REFLECTED TO THE USER, THE SIO WOULD BE TRACED 00190000
- * AGAIN WITH THE USUAL PERTINENT INFORMATION GIVEN FOR 00191000
- * THE TRACING OF I/O OPERATIONS (SEE RESPONSES). 00192000
- EJECT 00193000
- * OPERATION - 00194000
- * 00195000
- * NOTE: DMKTRACE - INITIALIZE, MODIFY, OR TERMINATE THE TRACE 00196000
- * FUNCTION - IS LOCATED IN "DMKTRA" (A SEPARATE MODULE). 00197000
- * 00198000
- * DMKTRDSI - PROCESS AN I/O OPERATION (SIO, TIO, HIO, TCH) 00229000
- * 00230000
- * A TRACE OUTPUT LINE IS CONSTRUCTED CONTAINING THE 00231000
- * PERTINENT INFORMATION FOR A SIO, TIO, HIO, TCH AT THE POINT 00232000
- * AT WHICH THE CONDITION-CODE IS ABOUT TO BE REFLECTED TO THE 00233000
- * USER; THE OUTPUT LINE IS THEN PRESENTED TO THE USER IN THE 00234000
- * USUAL WAY, EXCEPT THAT IF 'CCW' WAS SPECIFIED, AND A 00235000
- * SUCCESSFUL SIO WAS TRACED, THE VIRTUAL MACHINE DOES NOT 00236000
- * PAUSE AS USUAL EVEN IF NORUN WAS SPECIFIED, BUT ALLOWS THE 00237000
- * CCW TRACING TO BE DONE AS SOON AS PRACTICAL. 00238000
- * 00239000
- * IF A SUCCESSFUL SIO HAS BEEN TRACED AND CCWS ARE ALSO 00240000
- * SPECIFIED, THEN A STRING OF OUTPUT LINES IS GIVEN SHOWING THE 00241000
- * VIRTUAL AND REAL CCWS; NO PAUSE IS MADE UNTIL ALL LINES ARE 00242000
- * GIVEN; ADDITIONAL LINES ARE GIVEN IF IDA WAS SET FOR 00243000
- * THE REAL CCWS (AND VIRTUAL CCWS), OR IF SEEK ARGUMENTS ARE 00244000
- * PRESENT. THE VIRTUAL INFORMATION IS GIVEN FIRST, THE REAL 00245000
- * INFORMATION ON THE RIGHT SIDE OF THE PRINTOUTS. 00246000
- * 00285000
- * NOTE: WHEN PRINTING TRACE OUTPUT LINES, IF A SEVERE ERROR 00286000
- * (R2 = 8 - FOR SPOOLING SPACE FULL) IS RETURNED BY DMKVSPRT, 00287000
- * THEN A FORCED 'TRACE END' IS TRIGGERED TO TERMINATE TRACING. 00288000
- EJECT 00289000
- * RESPONSES - 00290000
- * 00291000
- * TERMINAL RESPONSES FOR VARIOUS TRACING SITUATIONS: 00292000
- * (SEE KEYS BELOW) 00293000
- * 00294000
- * 1. I/O INSTRUCTION - SIO/SIOF, TIO, HIO/HDV, OR TCH: 00295000
- * 00296000
- * A. TCH: 00297000
- * 00298000
- * I/O VVVVVV TCH 240XXXXX TYPE VADD CC N 00299000
- * 00300000
- * B. TIO OR HIO/HDV: 00301000
- * 00302000
- * I/O VVVVVV MNEM 240XXXXX TYPE VADD CC N TYPE RADD CSW XXXX 00303000
- * 00304000
- * C. SIO/SIOF: 00305000
- * 00306000
- * I/O VVVVVV MNEM 240XXXXX TYPE VADD CC N TYPE RADD CSW XXXX CAW VV..VV 00307000
- * 00308000
- * 2. CCW ("IDAL" OR "SEEK" LINES INCLUDED ONLY IF APPLICABLE): 00308050
- * 00308100
- * CCW VVVVVV XXXXXXXX XXXXXXXX RRRRRR YYYYYYYY YYYYYYYY 00308150
- * " IDAL VVVVVVVV VVVVVVVV IDAL 00RRRRRR 00RRRRRR 00308200
- * " SEEK XXXXXXXX XXXXXX SEEK YYYYYYYY YYYY 00308250
- * 00308300
- * VVVVVV = VIRTUAL ADDRESS 00308350
- * RRRRRR = REAL ADDRESS 00308400
- * XXXXXXXX = VIRTUAL INSTRUCTION, COMMAND, ETC. 00308450
- * YYYYYYYY = REAL INSTRUCTION, COMMAND, ETC. 00308500
- * ERROR MESSAGES - 00382000
- * 00383000
- * NONE 00384000
- *. 00385000
- SPACE 2 00386000
- * REVISED "RELOC" MACRO - USES HALFWORDS (TO SAVE SPACE): 00387000
- MACRO 00388000
- &NAME RELOC 00389000
- ENTRY &NAME 00390000
- &NAME DS 0H 00391000
- USING *,R12 00392000
- ENTER 00393000
- SH R12,=AL2(&NAME-&SYSECT) 00394000
- USING &SYSECT,R12 00395000
- MEND 00396000
- EJECT 00397000
- COPY OPTIONS 00398000
- COPY LOCAL 00399000
- EJECT 00400000
- DMKTRD CSECT LOADER CONTROL 00401000
- SPACE 00402000
- DC CL8'DMKTRD' MODULE IDENTIFIER 00403000
- SPACE 00404000
- USING PSA,R0 00405000
- USING TREXT,R9 00406000
- USING VMBLOK,R11 00407000
- USING DMKTRD,R12 00408000
- USING SAVEAREA,R13 00409000
- * 00410000
- EXTRN DMKCVTBH 00411000
- EXTRN DMKSYSRM @VA03162 00412000
- EXTRN DMKSCNRD,DMKSCNVU,DMKSCNVN,DMKSCNRN 00413000
- EXTRN DMKVSPRT 00414000
- EXTRN DMKCFMBK 00416000
- EXTRN DMKNEMOP 00417000
- EXTRN DMKLOCKQ,DMKLOCKD @V200820 00419000
- EXTRN DMKPTRUL @V408246 00419100
- EXTRN DMKCCWSB 00420000
- EXTRN DMKSTKCP @VA07421 00420100
- EXTRN DMKVATRN 00421000
- * 00423000
- * 00426000
- SPACE 00455000
- DMKTRDSI RELOC PROCESS A SIO/TIO/TCH/HIO 00456000
- BAL R14,TRAINIT CALL INITIALIZER SUBROUTINE 00457000
- MVC TRLNSIO(3),PFXIO PUT IN PREFIX FOR SIO ETC. 00458000
- LH R0,VMINST 1ST 2 BYTES OF SIO (ETC.) INTO R0 00459000
- LA R1,TRLNSIO5 POINT TO WHERE TO PUT SIO MNEMONIC 00460000
- CALL DMKNEMOP GET 'SIO' 'SIOF' 'TIO' 'HIO' 'HDV' 'TCH' 00461000
- LA R5,VMTRSIO SIGNAL IN R5 - DMKTRDSI ENTRY 00462000
- L R1,VMPSW+4 VIRTUAL MACHINE PSW ADDRESS FIELD 00463000
- SL R1,F4 LESS 4 GIVES ADDRESS OF INSTRUCTION 00464000
- TRAJOIN2 STC R5,SAVEWRK1+2 STORE INPUT FLAG BITS 00478000
- SR R15,R15 SET TO ZERO @VA07715 00479100
- IC R15,TREXCTL1 GET CONTROL FLAG @VA07715 00479200
- NR R5,R15 DOES IT MATCH CONTROL FLAG @VA07715 00479300
- BNZ TRAJOIN3 IF YES WE HAVE NO PROBLEMS. 00480000
- MVC SAVEWRK1+3(1),TREXCTL2 IF NOT, THEN SET BRANCH AND/OR 00481000
- NI SAVEWRK1+3,(TREXBRAN+TREXINST) INSTRUCT CONTROL BITS 00482000
- TRAJOIN3 CALL DMKCVTBH OLD PSW ADDRESS TO HEX PLEASE 00483000
- STH R0,TRLNINT1 STORE 6-BYTE HEX ADDRESS 00484000
- STCM R1,B'1111',TRLNINT1+2 @VA07715 00485100
- B TRA120 HANDLE SIO/TIO/HIO/TCH @V4M0240 00486000
- EJECT 00487000
- TRA90 BAL R3,TROUSUB NOW GIVE THE OUTPUT MESSAGE 00555000
- * 00556000
- TRA92 DS 0H HERE WHEN WE'RE "ALL FINISHED" 00557000
- ICM R15,B'0011',TREXTERM PICK UP THE TERMINAL FLAGS @V408246 00558100
- BZ TRA94 NOPE, AIM FOR EXIT W/O STOP. @VA00782 00560000
- LH R15,TREXRUNF PICK UP STOP/RUN FLAG BITS 00561000
- N R15,SAVEWRK1 SHOULD WE STOP OR KEEP RUNNING ? 00562000
- BZ TRA96 IF "NORUN", GO CALL DMKCFMBK "BREAK" RTN 00563000
- TRA94 CLI SAVEWRK8+3,00 FOR "RUN", ANY ERRORS FROM DMKQCNWT ? 00564000
- BE TRA97 IF NOT (NO ATTN HIT BY USER), GO EXIT. 00565000
- * 00566000
- * TRIGGER A STOP AFTER TRACING THIS EVENT, EITHER BECAUSE 'RUN' FLAG 00567000
- * IS NOT SET, OR BECAUSE THE USER HIT ATTENTION DURING TERMINAL OUTPUT: 00568000
- TRA96 CLI SAVEWRK2,X'83' IS IT A DIAG ?? 00569000
- BNE TRA961 NO, OK 00570000
- CLC SAVEWRK2+2(2),F8+2 IS DIAG CONSOLE FUNCTION 00571000
- BE TRA97 YES, DONT CALL DMKCFMBK, DIAG WILL DO IT 00572000
- TRA961 CALL DMKCFMBK ENTER CONSOLE FUNCTION MODE 00573000
- OI SAVEWRK7,VMCFWAIT REMEMBER THAT DMKCFMBK SET VMCFWAIT 00574000
- TRA97 EQU * UNLOCK USER'S TREXT BLOCK @V200820 00575000
- ST R9,TRALOCK+4 SETUP LOCK "NAME" @V200820 00576000
- LA R1,TRALOCK POINT TO IT FOR DMKLOC @V200820 00577000
- CALL DMKLOCKD UNLOCK - TRACING FINISHED @V200820 00578000
- TRAEXIT DS 0H RESTORE VMRSTAT FLAGBITS (AS NEEDED) BEFORE EXIT: 00580000
- OI SAVEWRK7,255-(VMEXWAIT+VMCFWAIT) PRESERVE ALL OTHER BITS 00581000
- NC VMRSTAT(1),SAVEWRK7 RESTORE VMEXWAIT|VMCFWAIT AS NEEDED 00582000
- TRAEXITR LCTL C1,C1,VMSEG BE SURE CONTROL REG 1 IS CORRECTLY SET, 00583000
- TM SAVEWRK8,SETCC SET COND CODE 0 OR NONZERO 00584000
- EXIT AND REALLY EXIT. 00585000
- EJECT 00611000
- TRA120 DS 0H HANDLE SIO/TIO/HIO/TCH CASES: 00612000
- MVC TRLNSIO2(3),CLDEV DEFAULT DEVICE-NAME TO 'DEV' 00613000
- L R1,VMINST GET 4-BYTE INSTRUCTION 00614000
- CALL DMKCVTBH BINARY TO HEX, 00615000
- STCM R0,B'1111',TRLNSIO4 STORE IN MESSAGE @VA07715 00616100
- STCM R1,B'1111',TRLNSIO4+4 STORE IN MSG @VA07715 00616200
- L R1,SAVER1 CALLER'S R1 HOLDS THE VIRTUAL DEVICE ADDR 00617000
- CALL DMKCVTBH INTO HEX HE SHALL GO 00618000
- ST R1,TRLNSIO3 AND STORE IN MESSAGE 00619000
- L R1,SAVER1 PICK UP THAT VIRTUAL DEVICE ADDRESS AGAIN 00620000
- CALL DMKSCNVU DO WE HAVE A VIRTUAL DEVICE BLOCK ? 00621000
- BNZ TRA122 NOPE - DON'T TRY TO GET NAME, THEN. 00622000
- CALL DMKSCNVN YES - GET VIRTUAL DEVICE NAME (E.G. DASD) 00623000
- STCM R1,B'1111',TRLNSIO2 STORE IN MESSAGE @VA07715 00624100
- TRA122 MVC TRLNSIOB(2),CLCC NOW SET 'CC' IN MESSAGE 00625000
- IC R3,VMPSW+4 GET CC ETC. FOR "VANILLA" MACHINE 00626000
- TM VMESTAT,VMEXTCM EXTENDED CONTROL MODE NOW ? 00627000
- BZ TRA124 NOPE - SIMPLE. 00628000
- IC R3,VMPSW+2 GET CC FOR EXTENDED CONTROL MODE MACHINE 00629000
- TRA124 SRL R3,4 4 PLACES TO THE RIGHT, GENTLEMEN 00630000
- LTR R10,R10 DO WE HAVE AN IOBLOK FROM THE CALLER ? 00631000
- BZ TRA125 NOPE - USE R3 AS WE HAVE IT FROM VMPSW 00632000
- USING IOBLOK,R10 00633000
- IC R3,IOBSTAT YES - GET CONDITION-CODE FROM IOBLOK 00634000
- TRA125 N R3,F3 ISOLATE LOW-ORDER 2-BITS OF COND CODE 00636000
- LR R1,R3 PLACE IN R1 (REMEMBERING IT IN R3) 00637000
- AL R1,F240 + X'F0' = FAST BINARY-TO-DEC FOR 1 DIGIT 00638000
- STC R1,TRLNSIOC STORE IN OUTPUT MESSAGE 00639000
- CL R3,F3 CONDITION CODE 3 ? 00640000
- BE TRA90 IF YES THAT'S THE END. 00641000
- CLI VMINST,X'9F' OR A 'TCH' ? 00642000
- BE TRA90 IF YES WE'RE ALSO THRU. 00643000
- USING VDEVBLOK,R8 R8 STILL HOLDS A (VDEVBLOK) FROM CALLER 00644000
- * CHECK FOR POSSIBLE SIMULATED OR SPOOLED DEVICES 00645000
- TM VDEVTYPC,CLASTERM+CLASURI+CLASURO+CLASGRAF @VM01006 00646000
- BZ TRA126 NO .. 00647000
- TM VDEVSTAT,VDEVDED CONTINUE ONLY IF DEDICATED .. 00648000
- BZ TRA90 MUST BE SPOOLED OR SIMULATED 00649000
- TRA126 EQU * 00650000
- MVC SAVEWRK7+1(1),VDEVTYPC SAVE THE DEVICE CLASS 00651000
- CLI VDEVTYPC,CLASSPEC CHANNEL TO CHANNEL ADAPTER ? 00652000
- BNE TRA126C NO -- NORMAL DEVICE 00653000
- LA R4,TRLNSIOD CSW START IF VIRTUAL CTCA 00654000
- TM VDEVSTAT,VDEVDED IS THE CTCA DEDICATED ? 00655000
- BZ TRA126B NO -- LEAVE OUT REAL DEVICE DATA 00656000
- TRA126C EQU * 00657000
- L R8,VDEVREAL POINT TO REAL DEVICE BLOCK 00658000
- DROP R8 (R8 POINTS TO REAL DEVICE BLOCK NOW) 00659000
- LTR R10,R10 DID WE GET AN IOB WITH THIS ONE? @V407438 00659250
- BZ TRD126C2 NOPE, THEN GET FIRST PATH CCU @V407438 00659500
- LH R1,IOBRADD YA, GET CCU (PATH) THAT IOS USED @V407438 00659750
- B TRD126C3 AND CONTINUE @V407438 00660000
- SPACE 00660250
- TRD126C2 CALL DMKSCNRD GET FIRST PATH CCU @V407438 00660500
- TRD126C3 CALL DMKCVTBH CONVERT ADDR TO PRINTABLE HEX @V407438 00660750
- DROP R10 NO MORE IOB @V407438 00661000
- STCM R1,B'1111',TRLNSIOE STORE IN OUTPUT MSG @VA07715 00662100
- CALL DMKSCNRN GET REAL NAME OF DEVICE 00663000
- ST R1,TRLNSIOD STORE IN MESSAGE 00664000
- LA R4,TRLNSIOF R4 = WHERE TO PUT CAW IF CC = 0 FOR SIO 00665000
- TRA126B EQU * 00666000
- CL R3,F1 CHECK CONDITION CODE 00667000
- BL TRA127 IF CC=0, GO CHECK IF WAS AN SIO ETC. 00668000
- BH TRA90 IF CC > 1, THERE'S NO CSW TO HANDLE 00669000
- MVC 0(3,R4),CLCSW FOR CC = 1 SHOW THE CSW 00670000
- USING IOBLOK,R10 00671000
- LA R2,IOBCSW+4 LET R2 POINT TO IOBCSW+4 (IF ANY) 00672000
- DROP R10 00673000
- LTR R10,R10 DOES AN IOBLOK EXIST ? 00674000
- BNZ TRA126A YES - R2 ALL SET, CONVERT TO HEX 00675000
- LA R1,CSW+4 NO - GET CSW+4/5 FROM USER'S PAGE 0 00676000
- BAL R14,TRANBRNG ... 00677000
- TRA126A LH R1,0(,R2) GET ACTUAL CSW+4/5 (FROM THE RIGHT PLACE) 00678000
- CALL DMKCVTBH BINARY TO HEX PLEASE 00679000
- ST R1,TRLNSIOG-TRLNSIOF(,R4) STORE IN MESSAGE 00680000
- LA R4,TRLNSIO9-TRLNSIOF(,R4) R4 = WHERE TO PUT CAW NOW 00681000
- * 00682000
- TRA127 CLI VMINST,X'9C' IF CC = 0 OR 1, WAS IT AN SIO ? 00683000
- BNE TRA90 IF NOT, GIVE MESSAGE AND EXIT. 00684000
- MVC 0(3,R4),CLCAW FILL IN 'CAW', 00685000
- TRA127A LA R1,CAW FOR 'SIO' (X'9C'), FIND THE USER'S CAW 00686000
- BAL R14,TRANBRNG ... 00687000
- L R1,0(,R2) ... 00688000
- TRA127B CALL DMKCVTBH USER'S CAW BINARY TO HEX 00689000
- STM R0,R1,4(R4) AND STORE IN THE MESSAGE 00690000
- TM TREXCTL2,TREXCCW IF YES, WAS CCW TRACING WANTED ? 00691000
- BZ TRA90 IF NOT JUST GIVE MESSAGE & EXIT. 00692000
- LTR R10,R10 MAKE SURE WE HAVE AN IOBLOK 00693000
- BNP TRA90 IF NOT, FORGET IT - CAN'T TRACE CCWS. 00694000
- BAL R3,TROUSUB SIO, CC=0 OR 1, CCW TRACING - GIVE SIO 00695000
- * OUTPUT LINE, AND CONTINUE ... 00696000
- EJECT 00697000
- * GIVE TRACE OUTPUT FOR A CCW STRING: 00698000
- MVI SAVEWRK1+2,0 SHUT OFF SIO TO AVOID TROUSUB @VA00782 00699000
- * CONFUSING IMPLIED OPTIONS ABOUT 00700000
- * OUTPUT DEVICES. 00701000
- MVI SAVEWRK1+3,TREXCCW INDICATE TRACING CCWS 00702000
- USING IOBLOK,R10 00703000
- L R10,IOBCAW GET POINTER TO FIRST REAL CCW STRING 00704000
- DROP R10 (THRU WITH IOBLOK) 00705000
- SL R10,F16 BACK UP TO POINT TO BEG OF FIRST RCWTASK 00706000
- * 'SL' HANDLES HIGH-ORDER BYTE (IF ANY) IN IOBCAW 00707000
- * 00708000
- TRA129 BAL R14,BLANKBUF BLANK-FILL THE OUTPUT BUFFER, THEN ... 00709000
- USING RCWTASK,R10 R10 REFERENCES RCWTASK 00710000
- L R4,RCWVCAW R4 = ADDRESS OF VIRTUAL CCWS 00711000
- LH R5,RCWVCNT R5 = COUNT OF VIRTUAL CCWS 00712000
- LA R6,RCWCCW R6 = ADDRESS OF REAL CCWS 00713000
- LH R7,RCWRCNT R7 = COUNT OF REAL CCWS 00714000
- B TRA133 START WITH 1ST VIRTUAL AND REAL CCWS 00715000
- * 00716000
- * NOTE - SAVEWRK2-3 WILL HOLD THE VIRTUAL CCW 00717000
- * SAVEWRK4-5 WILL HOLD THE REAL CCW 00718000
- * 00719000
- TRA132 DS 0H LOOP TO OBTAIN & PRINT VIRTUAL & REAL CCWS: 00720000
- TM SAVEWRK4+5,RCWGEN WAS PREVIOUS REAL CCW CP-GENERATED ? 00721000
- BO TRA135 IF YES, DON'T TOUCH THIS VIRTUAL CCW. 00722000
- TRA133 MVC SAVEWRK2(8),ZEROES CLEAR VIRTUAL CCW (UNTIL WE GET IT) 00723000
- LTR R5,R5 ARE THERE ANY VIRTUAL CCWS LEFT ? 00724000
- BNP TRA135 NOPE - DON'T GET ANY NONEXISTENT ONES 00725000
- MVC TRLNCCW,PFXCCW HEADING 00726000
- LR R1,R4 GET ADDRESS OF VIRTUAL CCW, 00727000
- CALL DMKCVTBH BINARY TO HEX 00728000
- STH R0,TRLNCCW1 STORE IN OUTPUT MESSAGE (6 BYTES) 00729000
- STCM R1,B'1111',TRLNCCW1+2 @VA07715 00730100
- LR R1,R4 ADDRESS OF VIRTUAL CCW 00731000
- BAL R14,TRANBRNG GET THE CCW FROM SOMEWHERE IN USER CORE 00732000
- BNZ TRA134 IF BAD ADDRESS LEAVE IT OUT 00733000
- LM R1,R2,0(R2) GET THE VIRTUAL CCW IN R1-R2, 00734000
- STM R1,R2,SAVEWRK2 AND SAVE FOR GENERAL USE 00735000
- CALL DMKCVTBH 1ST HALF BINARY TO HEX 00736000
- STCM R0,B'1111',TRLNCCW2 STORE INTO OUTOUT MSG @VA07715 00737100
- STCM R1,B'1111',TRLNCCW2+4 STORE INTO OUTPUT MSG @VA07715 00737200
- LR R1,R2 NOW 2ND HALF BINARY TO HEX 00738000
- CALL DMKCVTBH ... 00739000
- STM R0,R1,TRLNCCW3 AND STORE 00740000
- TRA134 LA R4,8(,R4) ADVANCE TO NEXT VIRTUAL CCW FOR NEXT TIME 00741000
- BCT R5,TRA136 DECREMENT COUNT AND GO 00742000
- B TRA136 GET THE REAL CCW. 00743000
- * 00744000
- TRA135 MVI TRLNCCW+1,PFXDITTO INDICATE CONTINUATION OF PREVIOUS CCW 00745000
- * 00746000
- TRA136 LR R1,R6 ADDRESS OF REAL CCW 00747000
- CALL DMKCVTBH BINARY TO HEX 00748000
- STH R0,TRLNCCW4 STORE 00749000
- ST R1,TRLNCCW4+2 ... 00750000
- LM R1,R2,0(R6) GET THE REAL CCW IN R1-R2, 00751000
- STM R1,R2,SAVEWRK4 AND SAVE FOR GENERAL USE 00752000
- CALL DMKCVTBH 1ST HALF BINARY TO HEX 00753000
- STCM R0,B'1111',TRLNCCW5 STORE IN OUTPUT MSG @VA07715 00754100
- STCM R1,B'1111',TRLNCCW5+4 STORE INTO MSG @VA07715 00754200
- LR R1,R2 2ND HALF BINARY TO HEX 00755000
- CALL DMKCVTBH ... 00756000
- STCM R0,B'1111',TRLNCCW6 STORE INTO OUTPUT MSG @VA07715 00757100
- STCM R1,B'1111',TRLNCCW6+4 STORE INTO MESSAGE @VA07715 00757200
- BAL R3,TROUSUB OUTPUT THE FINISHED LINE 00758000
- BAL R14,BLANKBUF AND RE-INITIALIZE THE MESSAGE BUFFER 00759000
- L R3,SAVEWRK4 PICK UP ADDR @VA05047 00760000
- LA R3,0(,R3) CLEAR FIRST BYTE @VA05047 00760300
- L R14,=A(DMKSYSRM) GET ADDR OF REAL MACHINE SIZE @VA05047 00760600
- L R14,0(,R14) REAL MACHINE SIZE @VA05047 00760900
- CLR R3,R14 VALID ADDRESS? @VA05047 00761200
- BNL TRA138 NO--IGNORE IDA CHECK @VA05047 00761500
- TM SAVEWRK4+4,IDA REAL IDA SET IN REAL CCW ? 00762000
- BO TRA140 IF YES SHOW REAL IDAL (& VIRTUAL, IF ANY) 00763000
- TM SAVEWRK7+1,CLASDASD DASD CLASS ? 00764000
- BO TRA150 IF YES CHECK FOR SOME KIND OF SEEK 00765000
- TRA138 LA R6,8(,R6) ADVANCE TO NEXT REAL CCW (IF ANY) 00766000
- BCT R7,TRA132 ITERATE THRU THE RCWTASK. 00767000
- ICM R10,B'1111',RCWPNT GET POINTER TO NEXT RCWTASK @V408246 00768100
- BZ TRA139 IF 0, WE'RE ALL DONE (ALMOST) @VA00782 00770000
- MVC TRLNCCW,PFXBREAK FOR R10 NONZERO (ANOTHER RCWTASK THERE) 00771000
- BAL R3,TROUSUB SHOW A BREAK IN THE CCW STRINGS 00772000
- B TRA129 BLANK BUFFER & START THE NEXT RCWTASK. 00773000
- SPACE 00774000
- TRA139 MVI SAVEWRK1+2,VMTRSIO TELL RUN DETERMINATOR WE'VE @VA00782 00775000
- * DONE AN SIO DURING THIS LAP 00776000
- B TRA92 AND GO DO IT. @VA00782 00777000
- EJECT 00778000
- TRA140 DS 0H IDA WAS SET IN THE REAL CCW: 00779000
- TM SAVEWRK4,X'08' WAS THE COMMAND A TIC ? 00780000
- BZ TRA140C NOPE - CONTINUE. 00781000
- TM SAVEWRK4,X'07' MAYBE - CHECK FURTHER 00782000
- BZ TRA138 IF = TIC, FORGET THE IDA BIT. 00783000
- TRA140C EQU * CONTINUE: 00784000
- L R3,FFS R3 NEGATIVE MEANS NO VIRTUAL IDAL 00785000
- L R8,SAVEWRK4 GET ADDRESS OF REAL IDAL IN R8 00786000
- TM SAVEWRK2+4,IDA WAS VIRTUAL IDA SET ? 00787000
- BZ TRA141 IF NOT, USE REAL CCW FOR COUNT 00788000
- CLC SAVEWRK2(1),SAVEWRK4 VIRTUAL IDA SET - SAME OP CODE ? 00789000
- BNE TRA141 IF NOT, IGNORE VIRTUAL IDAL. 00790000
- CLC SAVEWRK2+6(2),SAVEWRK4+6 AND SAME BYTE-COUNT 00791000
- BNE TRA141 DON'T TRUST IT IF NOT THE SAME. 00792000
- L R1,SAVEWRK2 GET ADDRESS OF VIRTUAL IDAL 00793000
- BAL R14,TRANBRNG GET REAL ADDRESS 00794000
- BNZ TRA141 IF NO GOOD IGNORE IT. 00795000
- LA R3,0(,R1) IF OK, LET R3 POINT TO VIRTUAL IDAL 00796000
- L R14,0(,R2) GET FIRST IDAW IN VIRTUAL IDAL 00797000
- CL R14,VMSTOR IS ADDRESS IN USER'S STORAGE @V304635 00798000
- BL TRA142 IF YES, CONSIDER OK FOR DETERMINING COUNT 00799000
- * 00800000
- TRA141 L R14,0(,R8) USE FIRST IDAW IN REAL IDAL TO GET COUNT 00801000
- * 00802000
- TRA142 SLR R15,R15 GET THE BYTE-COUNT 00803000
- ICM R15,3,SAVEWRK4+6 ... 00804000
- BCTR R15,0 LESS 1 FOR HANDY USE 00805000
- IC R0,SAVEWRK4 GET THE OP-CODE 00806000
- N R0,F15 ISOLATE LOW-ORDER 4 BITS 00807000
- CLM R0,1,LOW12 IS IT '12' = X'0C' = READ BACKWARD ? 00808000
- BNE TRA144 NOT THIS TIME. 00809000
- LR R0,R15 BYTE-COUNT INTO R0, 00810000
- LR R15,R14 LET R15 = STARTING-ADDRESS OF RD/BACKWARD 00811000
- SR R14,R0 AND R14 = ENDING-ADDRESS (LAST BYTE READ) 00812000
- B TRA145 NOW COMPUTE HOW MANY IDAWS THERE WILL BE 00813000
- * 00814000
- TRA144 AR R15,R14 R15 = ENDING ADDRESS (FWD DIRECTION CCW) 00815000
- * 00816000
- TRA145 STH R7,SAVEWRK7+2 REMEMBER R7 REAL-CCW-COUNT 00817000
- N R14,X2048BND ISOLATE STARTING & ENDING ADDRESSES 00818000
- N R15,X2048BND TO 2048-BYTE BOUNDARIES 00819000
- SLR R15,R14 GET END ADDRESS MINUS STARTING ADDRESS 00820000
- LA R15,0(,R15) ALLOW STORAGE WRAP-AROUND, PREVENT 00821000
- * PROGRAM CHECK IF R14 > R15 ... 00822000
- SRL R15,11 SHIFTED RIGHT 11 = NO. OF CROSSOVERS 00823000
- LA R7,1(,R15) PLUS ONE = NUMBER OF IDAWS THERE MUST BE. 00824000
- * (WHEW - BUT WE'VE GOT THE NEEDED NUMBER.) 00825000
- * LOOP TO PRINT REAL (AND VIRTUAL, IF ANY) IDALS: 00826000
- * R3 = VIRTUAL ADDRESS OF FIRST VIRTUAL IDAW 00827000
- * R7 = COUNT OF IDAWS THERE MUST BE 00828000
- * R8 = REAL ADDRESS OF FIRST REAL IDAW 00829000
- * R4-R6 AS IN USE BY MAIN CCW-PRINTING ROUTINE 00830000
- * R7 FROM MAIN CCW-PRINTING ROUTINE SAVED IN SAVEWRK7+2 00831000
- * 00832000
- TRA146 MVI TRLNIDAL+1,PFXIDAL IDAL PREFIX INTO OUTPUT MESSAGE 00833000
- LTR R1,R3 ANY VIRTUAL IDAL AT ALL ? 00834000
- BM TRA147 IF R3 NEGATIVE, FORGET IT 00835000
- BAL R14,TRANBRNG GET REAL ADDRESS OF VIRTUAL IDAW 00836000
- BNZ TRA147 IF ADDRESSING ERROR, FORGET IT. 00837000
- L R1,0(,R2) OK, PICK UP THE IDAW 00838000
- CALL DMKCVTBH BINARY TO HEX PLEASE 00839000
- STCM R0,B'1111',TRLNIDA2 STORE INTO OUTOUT MSG @VA07715 00840100
- STCM R1,B'1111',TRLNIDA2+4 STORE INTO OUTPUT MSG @VA07715 00840200
- MVC TRLNIDA1,=CL4'IDAL' AND STORE IDENTIFIER IN MESSAGE 00841000
- LA R3,4(,R3) ADVANCE TO NEXT VIRTUAL IDAW (IF ANY) 00842000
- CL R7,F1 ANY IDAWS LEFT ? 00843000
- BNH TRA147 NOPE - JUST THE ONE WE JUST DID. 00844000
- LR R1,R3 SOME LEFT - GET THE NEXT ONE 00845000
- BAL R14,TRANBRNG ... 00846000
- BNZ TRA147 IF ADDRESSING ERROR, FORGET IT. 00847000
- L R1,0(,R2) OK, PICK UP THE IDAW 00848000
- CALL DMKCVTBH BINARY TO HEX 00849000
- STM R0,R1,TRLNIDA3 STORE IN MESSAGE 00850000
- LA R3,4(,R3) ADVANCE TO NEXT VIRTUAL IDAW 00851000
- * 00852000
- TRA147 MVC TRLNIDA4,=CL4'IDAL' IDENTIFIER TO MESSAGE 00853000
- L R1,0(,R8) FIRST REAL IDAW INTO R1, 00854000
- CALL DMKCVTBH BINARY TO HEX 00855000
- STCM R0,B'1111',TRLNIDA5 STORE IN OUTPUT MSG @VA07715 00856100
- STCM R1,B'1111',TRLNIDA5+4 STORE INTO MSG @VA07715 00856200
- CL R7,F1 ANY IDAWS LEFT ? 00857000
- BNH TRA148 NOPE - JUST THE ONE WE JUST DID. 00858000
- L R1,4(,R8) PICK UP NEXT IDAW 00859000
- CALL DMKCVTBH BINARY TO HEX 00860000
- STCM R0,B'1111',TRLNIDA6 STORE INTO OUTPUT MSG @VA07715 00861100
- STCM R1,B'1111',TRLNIDA6+4 STORE INTO MESSAGE @VA07715 00861200
- TRA148 LA R8,8(,R8) SET FOR NEXT PAIR OF IDAWS (IF ANY) 00862000
- ST R3,SAVEWRK6 REMEMBER R3, 00863000
- BAL R3,TROUSUB OUTPUT THE FINISHED LINE 00864000
- BAL R14,BLANKBUF AND REINITIALIZE THE MESSAGE BUFFER 00865000
- L R3,SAVEWRK6 RESTORE R3 00866000
- S R7,F2 TWO LESS IDAWS TO DO 00867000
- BP TRA146 IF > 0, STILL SOME LEFT TO DO. 00868000
- LH R7,SAVEWRK7+2 ALL DONE, RESTORE R7 00869000
- B TRA138 WHEN FINISHED, ADVANCE TO NEXT CCW. 00870000
- EJECT 00871000
- TRA150 DS 0H DASD CLASS, LOOK FOR SOME KIND OF SEEK: 00872000
- CLI SAVEWRK4,X'07' SEEK ? 00873000
- BE TRA151 YES 00874000
- CLI SAVEWRK4,X'0B' SEEK CYLINDER ? 00875000
- BE TRA151 YES 00876000
- CLI SAVEWRK4,X'1B' SEEK HEAD ? 00877000
- BNE TRA138 NO - FORGET IT. 00878000
- TRA151 L R8,SAVEWRK4 PICK UP ADDRESS @VA03162 00879000
- LA R8,0(,R8) CLEAR UNWANTED BITS @VA03162 00880000
- L R14,=A(DMKSYSRM) GET REAL MACHINE @VA03162 00881000
- L R14,0(,R14) SIZE @VA03162 00882000
- CLR R8,R14 VALID ADDRESS @VA03162 00883000
- BNL TRA138 NO..SKIP SEEK ARGUMENTS @VA03162 00884000
- MVI TRLNSEEK+1,PFXSEEK @VA03162 00885000
- MVC TRLNSK4,=CL4'SEEK' SET UP NAMES @VA03162 00886000
- L R1,0(,R8) FIRST 4 BYTES INTO R1, 00887000
- CALL DMKCVTBH BINARY TO HEX PLEASE, 00888000
- STCM R0,B'1111',TRLNSK5 STORE INTO OUTOUT MSG @VA07715 00889100
- STCM R1,B'1111',TRLNSK5+4 STORE INTO OUTPUT MSG @VA07715 00889200
- LH R1,4(,R8) NEXT 2 BYTES INTO R1, 00890000
- CALL DMKCVTBH BINARY TO HEX 00891000
- STCM R1,B'1111',TRLNSK6 STORE INTO MSG @VA07715 00892100
- CLC SAVEWRK2(1),SAVEWRK4 VIRTUAL COMMAND THE SAME ? 00893000
- BNE TRA159 IF NOT, IGNORE IT. 00894000
- LA R0,6 R0=6 MEANS 7 BYTES WANTED 00895000
- LA R1,SAVEWRK2 LET R1 POINT AT USER'S CCW 00896000
- LA R2,TRLNSK2 AND R2 POINTS TO 8-BYTE SCRATCH-AREA 00897000
- CALL DMKCCWSB LET DMKCCWSB FIND THE SEEK ARGS 00898000
- BNZ TRA159 IF CC NONZERO, FORGET IT (DATA NO GOOD) 00899000
- ICM R1,B'1111',TRLNSK2 PICK UP SEEK ARGUMENTS @VA07715 00900100
- ICM R2,B'1111',TRLNSK2+4 PICK UP ARGUMENTS FOR SEEK @VA07715 00900200
- CALL DMKCVTBH THE FIRST 4 BYTES BINARY TO HEX 00901000
- STCM R0,B'1111',TRLNSK2 STORE INTO OUTPUT MSG @VA07715 00902100
- STCM R1,B'1111',TRLNSK2+4 STORE INTO MESSAGE @VA07715 00902200
- LR R1,R2 NOW THE REST 00903000
- CALL DMKCVTBH BINARY TO HEX 00904000
- ST R0,TRLNSK3 STORE THE REMAINING CHARS 00905000
- STCM R1,12,TRLNSK3+4 (TOTAL OF 7 PRINTABLE CHARACTERS) 00906000
- MVC TRLNSK1,=CL4'SEEK' SIGNAL VIRTUAL SEEK GIVEN 00907000
- TRA159 BAL R3,TROUSUB OUTPUT THE FINISHED LINE, 00908000
- BAL R14,BLANKBUF REINITIALIZE THE MESSAGE BUFFER 00909000
- B TRA138 WHEN FINISHED, ADVANCE TO NEXT CCW. 00910000
- SPACE 00911000
- DROP R10 (THRU WITH RCWTASK) 00912000
- EJECT 00914000
- SPACE 3 00915000
- DMKTRDWT RELOC , SERIALIZATION FOR I/O TRACING @VA07229 00916000
- TM VMTRCTL,VMTRSIO SIO TRACING? @VA07421 00916100
- BZ NOIOSTK NO, DON'T WORRY @VA07421 00916150
- LA R0,CPEXSIZE GET A CPEXBLOK @VA07421 00916200
- CALL DMKFREE @VA07421 00916250
- USING CPEXBLOK,R1 TELL THE ASSEMBLER WHERE IT IS @VA07421 00916300
- LA R15,NOIOSTK INSERT RETURN ADDRESS @VA07421 00916350
- STM R15,R14,CPEXADD AND FILL IN THE BLOK @VA07421 00916400
- CALL DMKSTKCP NOW STACK IT @VA07421 00916450
- GOTO DMKDSPCH AND WAIT TO RETURN BELOW @VA07421 00916500
- DROP R1 ASSEMBLER DONE WITH CPEXBLOK @VA07421 00916550
- NOIOSTK EQU * @VA07421 00916600
- BAL R14,TRAINIT ENQUEUE FOR TRACING ACTIVITY @VA07229 00917000
- B TRA97 GO UNLOCK AGAIN AND EXIT @VA07229 00918000
- EJECT 00919000
- * TRAINIT = SUBROUTINE TO INITIALIZE VARIOUS STUFF AT ENTRY: 00953000
- * R14 = RETURN REGISTER 00954000
- * 00955000
- TRAINIT MVC SAVEWRK7(1),VMRSTAT SAVE VMRSTAT FLAG STATUS AT ENTRY 00956000
- OI VMRSTAT,VMEXWAIT+VMCFWAIT ENSURE THAT USER IS NOT RUN 00957000
- ICM R9,B'1111',VMTREXT POINT TO TRACE EXT BLOCK @V408246 00958100
- BZ TRAEXIT IF NOT, GO AWAY QUIETLY. 00960000
- SLR R15,R15 CLEAR SAVEWRK1 FLAG 00961000
- ST R15,SAVEWRK1 ... 00962000
- ST R15,SAVEWRK8 AND SAVEWRK8 FLAGS & "ERROR CODE" 00963000
- ST R9,TRALOCK+4 SETUP LOCK "NAME" @V200820 00964000
- LA R1,TRALOCK POINT TO IT FOR DMKLOC @V200820 00965000
- LR R9,R14 SAVE INTERNAL RETURN ADDRESS @V200820 00966000
- CALL DMKLOCKQ ENQUEUE FOR TRACING @V200820 00967000
- TM VMTRCTL,255-VMTRPER STILL TRACING? PER001 00968000
- BE TRAEXIT NO -- EXIT QUIETLY @V200820 00969000
- LR R14,R9 RESTORE RETURN REGISTER @V200820 00970000
- L R9,VMTREXT GR9 = VIRTUAL MACHINE TRACE BLOCK@V200820 00971000
- NI TREXFLAG,255-TREXNDSP RESET DSP INTERLOCK @VA04044 00971500
- LM R0,R1,SAVER0 RESTORE REGS @VM08544 00972000
- BLANKBUF MVC TREXBUFF(8),BLANKS BLANK THE OUTPUT BUFFER 00973000
- MVC TREXBUFF+8(72),TREXBUFF ... 00974000
- BR R14 AND RETURN. 00975000
- SPACE 2 00976000
- EJECT 00991000
- * SUBROUTINE TO PUT BACK ANY INSTRUCTIONS WHICH WERE ALTERED: 00992000
- * R3 = RETURN REGISTER 00993000
- PUTBACK L R0,FFS X'FFFFFFFF' INTO R0 00994000
- ST R0,TREXANSI STORE IN TREXANSI (UNTIL SET OTHERWISE) 00995000
- L R1,TREXIN1 GET ADDRESS OF 1ST REPLACED INSTRUCTION 00996000
- CLR R1,R0 ANYTHING THERE TO PUT BACK ? 00997000
- BE PUTBACK2 NO. 00998000
- ST R0,TREXIN1 SET ADDR AT TREXIN1 BACK TO X'FFFFFFFF' 00999000
- BAL R14,TRANPTBK GET REAL ADDRESS OF 1ST INSTRUCTION 01000000
- BNZ PUTBACK2 IF CAN'T GET IT, GIVE UP (SADLY). 01001000
- LH R15,TREXSVC1 GET FIRST TWO BYTES OF REAL INSTRUCTION 01002000
- CLI 0(R2),X'0A' IS THE SVC STILL THERE ? 01003000
- BNE PUTBACK1 IF NOT LEAVE FIRST BYTE ALONE 01004000
- STCM R15,2,0(R2) OK - PUT BACK FIRST BYTE OF REAL INSTR 01005000
- PUTBACK1 CLI 1(R2),X'B1' IS THE "B1" STILL THERE ? 01006000
- BNE PUTBACK2 IF NOT LEAVE THE SECOND BYTE ALONE 01007000
- STC R15,1(,R2) OK, PUT BACK 2ND BYTE OF INSTR 01008000
- * 01009000
- PUTBACK2 L R1,TREXIN2 GET ADDRESS OF 2ND REPLACED INSTRUCTION 01010000
- CLR R1,R0 ANYTHING THERE TO PUT BACK ? 01011000
- BCR 8,R3 <BE> NO - EXIT. 01012000
- ST R0,TREXIN2 SET ADDR AT TREXIN2 BACK TO X'FFFFFFFF' 01013000
- BAL R14,TRANPTBK GET REAL ADDRESS OF 2ND INSTRUCTION 01014000
- BCR 7,R3 <BNZ> IF CAN'T GET IT, GIVE UP (SADLY). 01015000
- CLC 0(2,R2),HSVCB2 IS THE SVC B2 STILL THERE ? 01016000
- BCR 7,R3 <BNE> NO (STRANGE) - LEAVE WELL ENOUGH ALONE. 01017000
- MVC 0(2,R2),TREXSVC2 PUT BACK 1ST 2 BYTES OF REAL INSTR 01018000
- BR R3 AND EXIT. 01019000
- EJECT 01020000
- * SUBROUTINE TO OUTPUT A TRACE LINE ON THE PRINTER AND/OR TERMINAL 01502000
- * R3 = RETURN REGISTER 01503000
- * TREXBUFF IS FILLED IN TO APPROPRIATE DATA 01504000
- * SAVEWRK1 ANDED WITH TREXPRNT SIGNALS OUTPUT ON PRINTER 01505000
- * SAVEWRK1 ANDED WITH TREXTERM SIGNALS OUTPUT ON TERMINAL 01506000
- * SAVEWRK8+2=HIGHEST ERROR-CODE "SO FAR" FROM DMKQCNWT/DMKDSPCH 01507000
- * I.E. 04 = SINGLE ATTENTION HIT BY USER 01508000
- * 08 = MORE THAN ONE ATTENTION HIT BY USER 01509000
- * 12 = USER'S TERMINAL HAS BEEN TURNED OFF 01510000
- * SAVEWRK9 = USED TO SAVE/RESTORE RETURN-REGISTER 01511000
- * R2 IS USED FOR SCRATCH (NOT PRESERVED) 01512000
- SPACE 01513000
- TROUSUB DS 0H OUTPUT LINE ON PRINTER AND/OR TERMINAL: 01514000
- LA R0,80 LENGTH = 80 BYTES 01515000
- LA R1,TREXBUFF ADDRESS = TREXBUFF 01516000
- SLR R2,R2 R2=0 FOR USE BY DMKVSPRT & DMKQCNWT 01517000
- LH R15,TREXPRNT GET PRINTER FLAG-BITS 01518000
- N R15,SAVEWRK1 OUTPUT ON PRINTER FOR THIS ONE ? 01519000
- BZ TROUSUB4 NOPE - MUST BE JUST THE TERMINAL. 01520000
- LH R0,TREXLCNT GET CURRENT LINE COUNT @V408246 01521100
- LTR R0,R0 NEED PAGE EJECT? @V408246 01521200
- BP TROUSUB2 NOPE - RESTORE R0 = 80 & PRINT. 01523000
- CALL DMKVSPRT YES - GIVE A PAGE EJECT (R0 = 0) 01524000
- TROUSUB2 LA R0,80 NOW RESTORE R0 = 80, 01525000
- CALL DMKVSPRT AND PRINT THE OUTPUT LINE 01526000
- CL R2,F8 *** SEVERE ERROR FROM DMKVSPRT ? *** 01527000
- BE TRAEND1 *** YES - FORCE A TRACE END. *** 01528000
- LH R14,TREXLCNT GET THE CURRENT LINE COUNT, 01529000
- LA R14,1(,R14) ADD ONE, 01530000
- CL R14,F60 CHECK AGAINST 60 LINES PER PAGE 01531000
- BL TROUSUB3 IF < 60 WE'RE OK 01532000
- SLR R14,R14 RESET TO 0 WHEN WE HIT 60 01533000
- TROUSUB3 STH R14,TREXLCNT STORE UPDATED LINE COUNT 01534000
- LH R15,TREXTERM GET TERMINAL FLAG-BITS 01535000
- N R15,SAVEWRK1 OUTPUT ALSO ON TERMINAL ? 01536000
- BCR 8,R3 <BZ> NOPE - EXIT FORTHWITH. 01537000
- TROUSUB4 DS 0H OUTPUT WILL <ALSO> BE ON THE TERMINAL: 01538000
- CLI SAVEWRK8+3,04 HAS MORE THAN ONE ATTENTION BEEN HIT ? 01539000
- BCR 2,R3 <BH> YES - EXIT (DON'T TYPE THE LINE) 01540000
- * (DMKQCNWT WILL REMOVE TRAILING BLANKS FROM COUNT) 01541000
- TROUSUB6 DS 0H NOW READY TO CALL DMKQCNWT: 01542000
- SLR R2,R2 R2=0 FOR PARM=0 FOR DMKQCNWT, AND ... 01543000
- CALL DMKQCNWT WRITE MESSAGE TO TERMINAL 01544000
- * 01545000
- TM VMTRCTL,255-VMTRPER STILL HAVE TRACE IN EFFECT? PER001 01546000
- BE TRAEXIT NO, GET OUT 01547000
- CH R2,SAVEWRK8+2 CHECK ERROR-CODE AGAINST "HIGHEST SO FAR" 01548000
- BCR 13,R3 <BNH> EXIT IF NO NEW ERROR RETURN CODE 01549000
- STH R2,SAVEWRK8+2 STORE NEW VALUE OF RETURN CODE 01550000
- BR R3 AND EXIT TO CALLER. 01551000
- SPACE 3 01552000
- * NECESSARY TO TERMINATE TRACING: 01559000
- TRAEND1 BAL R3,PUTBACK PUT BACK ANY INSTRUCTIONS WE ALTERED 01560000
- ST R9,TRALOCK+4 SETUP LOCK "NAME" @V200820 01561000
- LA R1,TRALOCK POINT TO THE NAME FIELD @V200820 01562000
- TRAEND2 EQU * DEQUEUE ALL PENDING REQUESTS @V200820 01563000
- CALL DMKLOCKD DEQUEUE THE TRACING LOCK @V200820 01564000
- BZ TRAEND2 CONTINUE UNTIL NOT LOCKED @V200820 01565000
- LA R0,TREXSIZE SIZE OF TREX BLOCK 01566000
- LR R1,R9 AND ITS ADDRESS 01567000
- SLR R15,R15 BEFORE CALLING DMKFRET, 01568000
- ST R15,VMTREXT CLEAR "VMTREXT" AND 01569000
- NI VMTRCTL,VMTRPER CLEAR TRACING PER001 01570000
- CALL DMKFRET GIVE IT BACK TO FREE STORAGE 01571000
- TM VMRSTAT,VMLOGOFF IN LOGOFF PROCESS ? @V200820 01572000
- BO TRAEXIT YES - SKIP THE MESSAGE @V200820 01573000
- MSG 'TRACE ENDED' 'TRACE ENDED' MESSAGE TO THE USER 01574000
- CALL DMKQCNWT,PARM=NORET ... 01575000
- B TRAEXIT AND GO EXIT. 01576000
- EJECT 01577000
- * SUBROUTINES TO PERFORM A "TRANS - BRING/DEFER" OR 01578000
- * A CALL TO DMKVATRN (IF NECESSARY) TO GET A REAL EQUIVALENT (IF 01579000
- * FEASIBLE) OF A VIRTUAL ADDRESS: 01580000
- * 01581000
- * AT ENTRY: 01582000
- * R1 = VIRTUAL ADDRESS TO BE TRANSLATED 01583000
- * R14 = RETURN REGISTER 01584000
- * 01585000
- * AT EXIT: 01586000
- * R1 = VIRTUAL ADDRESS 01587000
- * R2 = REAL ADDRESS 01588000
- * CONDITION-CODE SET FROM LRA, DMKPTRLK, OR DMKPTRAN 01589000
- * (CC = 0 IF VIRTUAL ADDRESS WAS LEGITIMATE, AND PAGE IS 01590000
- * IN CORE, OR HAS BEEN BROUGHT INTO CORE WITHOUT ERROR) 01591000
- * 01592000
- * ENTER AT "TRANVIRT" TO PERFORM VIRTUAL/VIRTUAL "TRANS", 01593000
- * OR AT "TRANBRNG" FOR SIMPLE ("VANILLA") TRANSLATIONS 01594000
- * (E.G. USER'S PAGE 0 STUFF, ETC.) 01595000
- SPACE 01596000
- TRANVIRT TM VMESTAT,VMEXTCM IN EC-MODE NOW ? 01597000
- BZ TRANBRNG NO - IT'S "VANILLA" - THAT'S EASY. 01598000
- TM VMPSW+1,EXTMODE STAYING IN EC-MODE? @VA04044 01598300
- BZ TRANBRNG NOPE - USE OUR CREG 1 @VA04044 01598600
- TM VMPSW,TRANMODE IN EC-MODE, IN TRANSLATE MODE ALSO ? 01599000
- BO TRANVAT YES - THAT'S A WORTHY CHALLENGE. 01600000
- * 01601000
- TRANBRNG LCTL C1,C1,VMSEG VANILLA - GET SEGMENT TABLE ORIGIN 01602000
- LRA R2,0(,R1) ATTEMPT TO GET REAL ADDRESS 01603000
- BCR 8,R14 EXIT FORTHWITH IF THE PAGE WAS IN 01604000
- LA R2,(BRING+DEFER) IF NOT, SET "BRING/DEFER" OPTIONS 01605000
- L R15,APTRAN SET R15 TO CALL "DMKPTRAN" 01606000
- TRANCALL ST R14,SAVEWRK9 SAVE R14 = RETURN-REGISTER, 01607000
- CALL 15 ATTEMPT TO BRING IN THE PAGE 01608000
- L R14,SAVEWRK9 RESTORE R14 RETURN REGISTER, 01609000
- BR R14 RETURN TO CALLER WITH CC FROM DMKPTRAN. 01610000
- EJECT 01611000
- * ENTER AT "TRANPTBK" TO INVOKE "TRANBRNG" OR "TRANVAT" 01612000
- * DEPENDING ON WHETHER "TRANBRNG" OR "TRANVAT" WAS 01613000
- * INVOKED TO REPLACE THE USER INSTRUCTION 01614000
- * (THIS BEING REMEMBERED IN "TREXVAT" FLAGBIT IN "TREXFLAG") 01615000
- SPACE 01616000
- TRANPTBK TM TREXFLAG,TREXVAT DID WE SET IT VIA "TRANVAT" ? 01617000
- BZ TRANBRNG NO - INVOKE "TRANBRNG". 01618000
- * YES - CONTINUE ... 01619000
- SPACE 01620000
- * IN EC-MODE & TRANSLATE MODE ALSO: 01621000
- TRANVAT L R15,VMECEXT GET THE USER'S CONTROL REGISTERS 01622000
- USING ECBLOK,R15 01623000
- TM VMESTAT,VMINVPAG TABLES VALID? @VM08636 01624000
- BNZ INTERLD PTR AT WORK... @VM01060 01625000
- PTBKLRA EQU * @VM08636 01626000
- LCTL C0,C1,EXTSHCR0 POINT TO THE SHADOW TABLES 01627000
- DROP R15 01628000
- LRA R2,0(,R1) MAKE THE ATTEMPT FIRST 01629000
- LCTL C0,C0,CPCREG0 RESTORE STAND C-REGS BEFORE 01630000
- LCTL C1,C1,VMSEG WE GO ANYPLACE 01631000
- BCR 8,R14 IF "LRA" SUCCEEDED, RETURN TO CALLER. 01632000
- INTERLD EQU * @VM08636 01633000
- L R15,=A(INTERVAT) SET R15 TO CALL INTERFACE TO DMKVATRN 01634000
- B TRANCALL GO SAVE R14 AND DO THE CALL. 01635000
- SPACE 2 01636000
- * INTERFACE ROUTINE TO CALL DMKVATRN: 01637000
- USING INTERVAT,R12 FOR THIS INTERFACE ROUTINE ONLY. 01638000
- INTERVAT ENTER ENTER HERE (SEE "TRANCALL" ABOVE) 01639000
- LR R3,R1 SET R3 AS NEEDED FOR DMKVAT 01640000
- CALL DMKVATRN ATTEMPT TO GET THE NEEDED ADDRESS 01641000
- LTR R0,R0 SET CC FROM RETURN INDICATOR FROM DMKVAT 01642000
- ST R2,SAVER2 RETURN R2 TO CALLER (IN CASE GOOD) 01643000
- EXIT RETURN TO DMKTRD (WITH COND CODE SET). 01644000
- SPACE 01645000
- USING DMKTRD,R12 RESTORE STANDARD ADDRESSABILITY. 01646000
- EJECT 01647000
- * CONSTANTS: 01648000
- HSVCB2 DC X'0AB2' SVC B2 INSTRUCTION @V4M0240 01649100
- DS 0F FULL-WORD ALIGNED CONSTANTS: 01650000
- CLDEV DC CL3'DEV' 'DEV' 01652000
- LOW12 DC AL1(12) LOW-ORDER 12 = X'0C' = READ-BACKWARD 01653000
- TRALOCK DC C'TREX',A(*-*) LOCK "NAME" FOR TRACING @V200820 01654000
- SPACE 01655000
- * MISCELLANEOUS FLAGBITS DEFINED IN FIRST BYTE OF SAVEWRK8: 01656000
- SETCC EQU X'80' MUST SET CONDITION-CODE NONZERO AT EXIT 01657000
- SPACE 01660000
- * NOTE: BYTE AT SAVEWRK8+1 IS AVAILABLE FOR FLAG IF NEEDED 01661000
- * HALFWORD AT SAVEWRK8+2 IS USED FOR ERROR RETURNS FROM DMKQCNWT 01662000
- SPACE 2 01663000
- LTORG 01667000
- EJECT 01668000
- * CONSTANTS (CONTINUED): 01669000
- * 01670000
- CLCAW DC C'CAW' 01671000
- CLIO DC C'I/O' 01673000
- CLCCW DC C'CCW' 01676000
- CLCC EQU CLCCW 'CC' 01677000
- CLCSW DC C'CSW' 01678000
- * 01679000
- * PREFIXES FOR THE VARIOUS RESPONSES: 01680000
- * (THESE MAY READILY BE REVISED PER INSTALLATION REQUIREMENTS) 01681000
- SPACE 01682000
- PFXIO EQU CLIO I/O INSTR (SIO/SIOF, TIO, HIO/HDV, TCH) 01685000
- PFXCCW EQU CLCCW CCW 01686000
- PFXBREAK DC CL3'---' TO INDICATE A BREAK IN CCW CHAINS 01687000
- PFXDITTO EQU C'"' INDICATES CONTINUATION OF ABOVE LINES 01688000
- PFXIDAL EQU C'"' IDAL 01689000
- PFXSEEK EQU C'"' SEEK 01690000
- PFXBRNCH DC CL3'==>' TO SHOW WE ARE AT A NEW LOCATION 01691000
- *PFXINST DC CL3' ' INSTRUCTION TRACING 01693000
- EJECT 01695000
- COPY VMBLOK 01696000
- VMTRALL EQU VMTRINT+VMTRSIO+VMTRBRIN FOR TRACE 'ALL' 01697000
- COPY TREXT 01698000
- ORG TREXBUFF OUTPUT LINE FOR TCH/TIO/HIO/SIO: 01699000
- SPACE 01700000
- TRLNSIO DC CL3'I/O' PREFIX FOR I/O INSTR (SET FROM PFXIO) 01701000
- DC C' ' 01702000
- TRLNSIO1 DS XL6'00' VIRT ADDR OF I/O INSTR (= TRLNINT1) 01703000
- DC C' ' 01704000
- TRLNSIO5 DS CL5' ' MNEMONIC OF IO INSTRUCTION 01705000
- DC C' ' 01706000
- TRLNSIO4 DS XL8'00' SIO, TIO, HIO, OR TCH INSTRUCTION (HEX) 01707000
- DC CL2' ' 01708000
- TRLNSIO2 DS CL4'DEV' MNEMONIC "NAME" OF VIRTUAL DEVICE 01709000
- DC C' ' 01710000
- TRLNSIO3 DS XL4'00' VADD (HEX) 01711000
- DC CL2' ' 01712000
- TRLNSIOB DC CL2'CC' CC 01713000
- DC C' ' 01714000
- TRLNSIOC DS AL1(0) CC NUMBER 01715000
- DC CL2' ' 01716000
- TRLNSIOD DS CL4'DEV ' REAL TYPE 01717000
- DC C' ' 01718000
- TRLNSIOE DS XL4'00' RADD (HEX) 01719000
- DC CL2' ' 01720000
- TRLNSIOF DC CL3'CSW' CSW 01721000
- DC C' ' 01722000
- TRLNSIOG DS XL4'00' CSW+4/CSW+5 BYTES 01723000
- DC CL2' ' 01724000
- TRLNSIO9 DC CL3'CAW' CAW (FOR SIO ONLY, CC = 0 OR 1) 01725000
- DC C' ' (FOR SIO ONLY, CC = 0 OR 1) 01726000
- DS XL8'00' VIRTUAL CAW (FOR SIO ONLY, CC = 0 OR 1) 01727000
- EJECT 01728000
- ORG TREXBUFF OUTPUT LINE FOR CCW: 01729000
- SPACE 01730000
- TRLNCCW DC CL3'CCW' PREFIX 01731000
- DC C' ' 01732000
- TRLNCCW1 DS XL6'00' VIRTUAL ADDRESS OF CCW 01733000
- DC C' ' 01734000
- TRLNCCW2 DS XL8'00' VIRTUAL CCW 1ST HALF 01735000
- DC C' ' 01736000
- TRLNCCW3 DS XL8'00' VIRTUAL CCW 2ND HALF 01737000
- DC CL2' ' 01738000
- TRLNCCW4 DS XL6'00' REAL ADDRESS OF CCW 01739000
- DC C' ' 01740000
- TRLNCCW5 DS XL8'00' REAL CCW 1ST HALF 01741000
- DC C' ' 01742000
- TRLNCCW6 DS XL8'00' REAL CCW 2ND HALF 01743000
- SPACE 01744000
- ORG TREXBUFF OUTPUT LINE FOR "IDAL" LINE OF CCW: 01745000
- TRLNIDAL DC CL3' " ' PREFIX (IF ANY) 01746000
- DC CL2' ' 01747000
- TRLNIDA1 DC CL4'IDAL' VIRTUAL IDAL 01748000
- DC CL2' ' 01749000
- TRLNIDA2 DS XL8'00' FIRST VIRTUAL IDAW 01750000
- DC C' ' 01751000
- TRLNIDA3 DS XL8'00' SECOND VIRTUAL IDAW 01752000
- DC CL3' ' 01753000
- TRLNIDA4 DC CL4'IDAL' REAL IDAL 01754000
- DC CL2' ' 01755000
- TRLNIDA5 DS XL8'00' FIRST REAL IDAW 01756000
- DC C' ' 01757000
- TRLNIDA6 DS XL8'00' SECOND REAL IDAW 01758000
- SPACE 01759000
- ORG TREXBUFF OUTPUT LINE FOR "SEEK" LINE OF CCW: 01760000
- TRLNSEEK DC CL3' " ' PREFIX (IF ANY) 01761000
- DC CL2' ' 01762000
- TRLNSK1 DC CL4'SEEK' VIRTUAL SEEK 01763000
- DC CL2' ' 01764000
- TRLNSK2 DS XL8'00' VIRTUAL SEEK ARG (1ST 4 BYTES) 01765000
- DC C' ' 01766000
- TRLNSK3 DS XL6'00' VIRTUAL SEEK ARG ETC. (NEXT 3 BYTES) 01767000
- DC CL5' ' 01768000
- TRLNSK4 DC CL4'SEEK' REAL SEEK 01769000
- DC CL2' ' 01770000
- TRLNSK5 DS XL8'00' REAL SEEK ARG (1ST 4 BYTES) 01771000
- DC C' ' 01772000
- TRLNSK6 DS XL4'00' REAL SEEK ARG (LAST 2 BYTES) 01773000
- EJECT 01774000
- ORG TREXBUFF OUTPUT LINE FOR INTERRUPT TRACING: 01775000
- SPACE 01776000
- TRLNINT DC CL3' ' PREFIX (IF ANY) 01777000
- DC C' ' 01778000
- TRLNINT1 DS XL6'00' VIRTUAL ADDRESS OF INSTRUCTION 01779000
- DC C' ' 01780000
- TRLNINT2 DS CL4' ' TYPE (SVC, PROG, EXT, OR I/O) 01781000
- DC CL2' ' 01782000
- TRLNINT3 DS XL4'00' INTERRUPT CODE OR VIRTUAL DEVICE ADDRESS 01783000
- DC C' ' 01784000
- TRLNINT4 DS C'==>' PFXARROW GOES IN HERE 01785000
- DC C' ' 01786000
- TRLNINT5 DS XL6'00' VIRTUAL TRANSFER-TO ADDRESS (FROM NEW PSW) 01787000
- DC CL2' ' 01788000
- TRLNINT6 DC CL3'CSW' CSW (FOR I/O INTERRUPTS ONLY) 01789000
- DC C' ' 01790000
- TRLNINT7 DS XL4'00' CSW+4/CSW+5 BYTES ONLY 01791000
- SPACE 1 01792000
- ORG TRLNINT2 RE-DEFINITION FOR INSTRUCTION TRACING 01793000
- TRLNINS2 DS CL5' ' MNEMONIC OF INSTRUCTION 01794000
- DC C' ' 01795000
- TRLNINS3 DS XL4'00' FIRST TWO BYTES OF INSTRUCTION 01796000
- TRLNINS4 DS XL4'00' NEXT TWO BYTES OF INSTRUCTION (IF ANY) 01797000
- TRLNINS5 DS XL4'00' LAST TWO BYTES OF INSTRUCTION (IF ANY) 01798000
- DC C' ' 01799000
- TRLNINS6 DS XL6'00' VIRTUAL XFER-TO-ADDRESS OR PSW (IF ANY) 01800000
- SPACE 2 01801000
- ORG TRLNINS5+1 RE-DEFINITION FOR EXECUTED INSTRUCTIONS 01802000
- * 01803000
- * NOTE: KEEP TRLNINS8 UP TO TRLNINS9 AT SAME RELATIVE DISPLACEMENTS 01804000
- * AS TRLNINT1 AND TRLNINS2 TO TRLNINS6 01805000
- * (BECAUSE FILLED IN BY INDEXED CODE). 01806000
- * 01807000
- TRLNINS7 DS XL2'00' LOW-ORDER BYTE OF EX "R1" REGISTER (IF ANY) 01808000
- * (OR SSM-BYTE FOR SSM, STNSM, OR STOSM) 01809000
- DC CL2' ' 01810000
- TRLNINS8 DS XL6'00' VIRTUAL ADDRESS OF EXECUTED INSTRUCTION 01811000
- DC C' ' 01812000
- TRLNINSM DS CL5' ' MNEMONIC OF EXECUTED INSTRUCTION 01813000
- DC C' ' 01814000
- DS XL12'00' TWO TO SIX BYTES OF EXECUTED INSTRUCTION 01815000
- DC C' ' 01816000
- TRLNINS9 DS XL6'00' TRANSFER-TO ADDRESS FOR EXECUTED BRANCH 01817000
- * 01818000
- DS XL11'00' WORST CASE (SPACE-WISE) = EXECUTED LPSW 01819000
- WORSCASE EQU *-TRLNINT LENGTH OF OUTPUT LINE FOR WORST CASE. 01820000
- SPACE 01821000
- TRLNBUMP EQU TRLNINS8-TRLNINT1 DISP. OF TRLNINS8 MSG FROM TRLNINT1 01822000
- EJECT 01823000
- ORG TREXBUFF OUTPUT LINE FOR CSW: 01824000
- SPACE 01825000
- TRLNCSW DC CL3'CSW' PREFIX 01826000
- DC C' ' 01827000
- TRLNCSWV DC C'V' 'V' 01828000
- DC C' ' 01829000
- TRLNCSW1 DS XL4'00' VADD 01830000
- DC C' ' 01831000
- TRLNCSW2 DS XL8'00' VIRTUAL CSW (1ST HALF) 01832000
- DC C' ' 01833000
- TRLNCSW3 DS XL8'00' VIRTUAL CSW (2ND HALF) 01834000
- DC CL2' ' 01835000
- TRLNCSWR DC C'R' 'R' 01836000
- DC C' ' 01837000
- TRLNCSW4 DS XL4'00' RADD 01838000
- DC C' ' 01839000
- TRLNCSW5 DS XL8'00' REAL CSW (1ST HALF) 01840000
- DC C' ' 01841000
- TRLNCSW6 DS XL8'00' REAL CSW (2ND HALF) 01842000
- EJECT 01843000
- PSA 01844000
- COPY SAVE 01845000
- COPY CORE @V304735 01846000
- COPY EQU 01847000
- COPY IOBLOKS 01848000
- COPY VBLOKS 01849000
- COPY DEVTYPES 01850000
- END DMKTRD 01851000
ibm/vm370-lib/cp/dmktrd.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator