ibm:vm370-lib:cp:dmktcs.assemble_src
Table of Contents
DMKTCS Source
References
- Fixes Applied : 10
- This Source Date : Thursday, December 14, 1978
- Last Fix ID : [HRC106DK]
Source Listing
- DMKTCS.ASSEMBLE.txt
- TCS TITLE 'DMKTCS (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 VALIDATE INPUT SERIALIZATION 00002000
- *. 00003000
- * 00004000
- * MODULE NAME - 00005000
- * 00006000
- * DMKTCS 00007000
- * 00008000
- * FUNCTION - 00009000
- * 00010000
- * TO SET UP A 3800 PRINTER PRIOR TO ACTUALLY PRINTING A 00011000
- * SPOOL FILE ON IT. SETUP INCLUDES LOADING THE FCB, 00012000
- * TRANSLATE TABLE, GRAPHIC CHARACTER MODIFICATIONS, 00013000
- * FORMS OVERLAY SEQUENCE CONTROL, WRITABLE CHARACTER 00014000
- * GENERATION MODULES,COPY MODIFICATION, AND COPY NUMBER OF 1. 00015000
- * 00016000
- * ATTRIBUTES - 00017000
- * 00018000
- * REENTRANT, PAGEABLE, CALLED VIA SVC 00019000
- * 00020000
- * ENTRY POINTS - 00021000
- * 00022000
- * DMKTCSET - SET UP THE 3800 PRIOR TO PRINTING THE FILE 00023000
- * DMKTCSSP - SET UP THE 3800 PRIOR TO PRINTING THE SEPARATOR 00024000
- * DMKTCSCO - SET UP THE ONLY THE FORMS OVERLAY SEQUENCE CTL 00025000
- * 00026000
- * ENTRY CONDITIONS - 00027000
- * 00028000
- * FOR DMKTCSET AND DMKTCSSP - 00029000
- * 00030000
- * GPR7 = ADDRESS OF SFBLOK FOR FILE BEING PRINTED 00031000
- * GPR8 = ADDRESS OF RDEVBLOK FOR 3800 PRINTER 00032000
- * GPR9 = ADDRESS OF RSPLCTL CONTROL BLOCK FOR PRINTER 00033000
- * GPR10 = ADDRESS OF IOBLOK FOR PRINTER I/O 00034000
- * GPR12 = ADDRESS OF RELEVANT ENTRY POINT 00035000
- * GPR13 = ADDRESS OF STANDARD SAVEAREA 00036000
- * 00037000
- * FOR DMKTCSCO - 00038000
- * 00039000
- * GENERAL REGISTERS ARE THE SAME AS ABOVE. 00040000
- * 00041000
- * EXIT CONDITIONS - 00042000
- * 00043000
- * FOR DMKTCSSP AND DMKTCSET - 00044000
- * COND CODE = ZERO - SETUP COMPLETED 00045000
- * COND CODE = NON-ZERO - SETUP DIDN'T COMPLETE 00046000
- * IF IOBFATAL SET, REASON IS HARDWARE ERROR 00047000
- * OTHERWISE, BAD LOAD MODULE IS THE CAUSE 00048000
- * 00049000
- * FOR DMKTCSCO - 00050000
- * COND CODE = NON-ZERO - MO MORE COPIES TO DO 00051000
- * COND CODE = ZERO - SFBLOK IS SET UP FOR NEXT COPY 00052000
- * 00053000
- * CALLS TO OTHER ROUTINES - 00054000
- * 00055000
- * DMKIOSQR - TO ISSUE START I/O TO REAL 3800 00056000
- * DMKPGTVG - GET PAGE OF SYSTEM VIRTUAL STORAGE 00057000
- * DMKPGTVR - RELEASE PAGE OF SYSTEM VIRTUAL STORAGE 00058000
- * DMKRPAGT - READ IN PAGE OF 3800 IMAGE LIBRARY 00059000
- * DMKFREE - OBTAIN FREE STORAGE FOR CCWS 00060000
- * DMKFRET - RETURN FREE STORAGE TO THE POOL 00061000
- * DMKSCNVS - FIND RDEVBLOK FOR IMAGE LIBRARY DASD VOL 00062000
- * DMKERMSG - ISSUE ERROR MESSAGES 00063000
- * DMKSCNAU - SEE IF USER IS LOGGED ON 00064000
- * DMKCVTBH - CONVERT STUFF FOR MESSAGES 00065000
- * DMKSCNRD - GET DEVICE ADDRESS IN PRINTABLE CUU FORM 00066000
- * 00067000
- * TABLES / WORKAREAS - 00068000
- * 00069000
- * 00070000
- * DMKQNTBL - TABLE OF 3800 NAMED SYSTEMS 00071000
- * 00072000
- * SAVEWRK1 - FLAG INDICATING ENTRY AT DMKTCSCO 00073000
- * X'80' - ENTERED AT DMKTCSCO 00074000
- * X'40' - 'CLEAR PRINTER' HAS BEEN ISSUED 00075000
- * X'20' - FCB WAS CALCULATED FROM 6, 8, OR 12 00076000
- * X'10' - ENTERED AT DMKTCSSP 00077000
- * SAVEWRK1+1 - FLAG FOR SETTING COND CODE UPON EXITING 00078000
- * SAVEWRK2 - ADDRESS OF HOLDING AREA 00079000
- * SAVEWRK3 - VIRTUAL ADDRESS IN SYSTEM SPACE OF PAGE GOTTEN 00080000
- * FOR READING IN THE NAMED SYSTEM PARTS 00081000
- * SAVEWRK4, SAVEWRK5 - 8-CHARACTER NAME OF THE MODULE 00082000
- * TO BE LOADED BY SUBROUTINE MEMLOAD 00083000
- * SAVEWRK6 - STARTING CCPD (IN MEMLOAD SUBROUTINE) 00084000
- * SAVEWRK7 - CURRENT CCPD (IN MEMLOAD SUBROUTINE) 00085000
- * SAVEWRK8 - RESIDUAL MEMBER BYTE COUNT TO MOVE (MEMLOAD) 00086000
- * 00087000
- * REGISTER USAGE - 00088000
- * 00089000
- * GPR0 = 00090000
- * GPR1 = 00091000
- * GPR2 = ADDRESS OF SPLINK AND LOCKED BUFFERS 00092000
- * GPR3 = INTERNAL SUBROUTINE RETURN ADDRESS REGISTER 00093000
- * GPR4 = 00094000
- * GPR5 = ADDRESS OF HOLDING AREA 00095000
- * GPR6 = SCRATCH AND RSPXBLOK ADDRESSIBILITY 00096000
- * GPR7 = ADDRESS OF SFBLOK OF FILE BEING PRINTED 00097000
- * GPR8 = ADDR OF RDEVBLOK FOR 3800 PRINTER 00098000
- * GPR9 = ADDR OF RSPLCTL WORK AREA 00099000
- * GPR10 = ADDR OF IOBLOK FOR PRINTER I/O 00100000
- * GPR11 = 00101000
- * GPR12 = DMKTCS MODULE BASE 00102000
- * GPR13 = ADDRESS OF STANDARD SAVE AREA 00103000
- * GPR14 = BALR RETURN ADDRESS AND SCRATCH REGISTER 00104000
- * GPR15 = BALR BRANCH ADDRESS AND SCRATCH REGISTER 00105000
- * 00106000
- * NOTES - 00107000
- * 00108000
- * 1. IT IS ASSUMED THAT, UPON ENTRY AT ANY ONE OF THE ABOVE 00109000
- * ENTRY POINTS, THERE ARE TWO SPOOL FILE BUFFERS ALREADY 00110000
- * LOCKED IN REAL STORAGE. THIS SHOULD HAVE BEEN DONE IN 00111000
- * DMKRSP. 00112000
- * 00113000
- * 2. BECAUSE OF THE 2-PAGE MAXIMUM AND THE FACT THAT THE 00114000
- * MODULE HAS 8 BYTES OF CONTROL INFORMATION AT ITS START, 00115000
- * THE MAXIMUM AMOUNT OF LOAD DATA ABLE TO BE PROCESSED 00116000
- * BY THIS ROUTINE IS 8192-8 OR 8184 BYTES. THIS 00117000
- * RESTRICTION IS ONLY MEANINGFUL FOR COPY MODIFICATION 00118000
- * SINCE THE 3800 HARDWARE ALLOWS 8192 BYTES FOR A 00119000
- * COPY MODIFICATION. 00120000
- * 00121000
- * OPERATION - 00122000
- * 00123000
- * 1. DMKTCSET 00124000
- * CALL DMKFREE TO OBTAIN A WORKAREA FOR HOLDING THE 00125000
- * INFORMATION WHICH WILL BE REQUIRED FOR THE 3800 SETUP. 00126000
- * CALL DMKPGTVG, DMKRPAGT TO GET THE FIRST DASD BUFFER. 00127000
- * TRANSFER ALL INFORMATION REQUIRED INTO THE WORKAREA 00128000
- * AND RELEASE THE PAGE JUST OBTAINED. THEN GO TO STEP 4. 00129000
- * IF ENTERED FROM DMKTCSCO, UPDATE THE SFBCOPY AND 00130000
- * SFBSTCPY FIELDS AND GO TO STEP 8. 00131000
- * 00132000
- * 2. DMKTCSSP 00133000
- * OBTAIN A WORKAREA VIA DMKFREE AND INITIALIZE IT FOR 00134000
- * THE SEPARATOR PAGE WITH INFORMATION IN THE 00135000
- * 3800 PRINTER RDEVBLOK AND OTHER DEFAULT INFORMATION. 00136000
- * THEN, CONTINUE WITH STEP 4. 00137000
- * 00138000
- * 3. DMKTCSCO 00139000
- * INDICATE THIS ENTRY AND GO TO STEP 1. 00140000
- * 00141000
- * 4. IF ENTRY WAS VIA DMKTCSET AND IF THE CHARS REQUESTED 00142000
- * IS THE SAME AS THAT ALREADY LOADED AS INDICATED IN 00143000
- * THE RSPXCHR FIELD, THEN THERE IS NO NEED TO RELOAD THE 00144000
- * NEW CHARACTER ARRANGEMENT TABLE. OTHERWISE, 00145000
- * CALL INTERNAL SUBROUTINE MEMLOAD TO LOAD THE REQUESTED 00146000
- * CHARACTER ARRANGEMENT TABLE INTO THE LOCKED BUFFER. 00147000
- * SET UP TO LOAD THE REQUIRED WCGMS INTO EMPTY POSITIONS. 00148000
- * IF A WCGM IS ALREADY LOADED AND UNMODIFIED, THERE IS NO 00149000
- * NEED TO LOAD IT AGAIN. 00150000
- * ALTER THE TRANSLATE TABLE IN STORAGE TO REFLECT CHANGED 00151000
- * POSITIONS OF THE THE WCGMS AND ISSUE THE FOLLOWING 00152000
- * CCWS TO THE 3800 PRINTER: LOAD WCGM, SELECT TRANSLATE 00153000
- * TABLE 0, LOAD TRANSLATE TABLE, DUMMY SENSE. 00154000
- * IF A LOAD CHECK OCCURS DUE TO INVALID LOAD DATA, 00155000
- * ISSUE ERROR MESSAGE DMKTCS241E TO BOTH THE OWNER OF 00156000
- * THE FILE AND THE OPERATOR AND RETURN WITH IOBFATAL SET. 00157000
- * IF SUCCESSFUL, UPDATE THE CURRENT CONTENTS OF THE WCGMS. 00158000
- * 00159000
- * 5. IF ANY GRAPHIC MODIFICATIONS WERE INDICATED, INVALIDATE 00160000
- * THE RDEVCRWC FIELDS USED BY THIS TABLE AND CALL MEMLOAD TO 00161000
- * LOAD EACH GRAPHIC MODIFICATION AND ISSUE A LOAD GRAPHIC 00162000
- * MODIFICATION TO THE 3800 FOR EACH ONE. 00163000
- * LOAD CHECKS CAUSE DMKTCS241E TO BE ISSUED AND RETURN WITH 00164000
- * IOBFATAL SET. 00165000
- * 00166000
- * 6. IF NO COPY MODIFICATION WAS SPECIFIED, SET UP A NULL 00167000
- * COPY MODIFICATION AND LOAD IT VIA THE 'LOAD COPY 00168000
- * MODIFICATION' CCW. ELSE CALL MEMLOAD TO LOAD IT IN 00169000
- * AND THEN LOAD IT INTO THE 3800 VIA THE 'LOAD COPY 00170000
- * MODIFICATION' CCW. LOAD CHECKS CAUSE DMKTCS241E TO BE 00171000
- * ISSUED AND RETURN MADE TO THE CALLER WITH IOBFATAL SET. 00172000
- * IF THE COPY MODIFICATION TO BE LOADED IS THE SAME AS THAT 00173000
- * ALREADY IN (RSPXCMOD), NO NEED TO LOAD IT IN AGAIN. 00174000
- * 00175000
- * 7. IF THE FCB IS THE SAME AS THAT ALREADY LOADED (RSPXFCB), 00176000
- * THERE IS NO NEED TO RELOAD IT. IF NOT, AND IT IS NOT 00177000
- * 6, 8, OR 12, CALL MEMLOAD TO LOAD IT AND THEN ISSUE A 00178000
- * 'LOAD FCB' CCW TO GET IT INTO THE 3800. ANY ERRORS 00179000
- * CAUSE DMKTCS241E TO BE ISSUED, EXCEPT FOR AN FCB-FORMS 00180000
- * MISMATCH WHICH CAUSES DMKTCS240E TO BE ISSUED. 00181000
- * IF THE FCB IS 6, 8, OR 12, THEN, USING THE CURRENT PAGE 00182000
- * LENGTH (RDEVCURP), CONSTRUCT AN FCB. IF THIS RESULTS IN 00183000
- * A FCB-FORMS MISMATCH, TRY WITH DIFFERENT PAGE LENGTHS 00184000
- * UNTIL SUCCESSFUL. STORE THE NEWLY DISCOVERED PAGE 00185000
- * LENGTH IN RDEVCURP. 00186000
- * 00187000
- * 8. ISSUE THE 'LOAD COPY NUMBER' CCW FOR COPY MODIFICATION 00188000
- * CONTROL INFORMATION, AND THE 'LOAD FORMS OVERLAY 00189000
- * SEQUENCE CONTROL' CCW TO CONTROL THE FLASHING STATUS 00190000
- * AND NUMBER OF COPIES TO BE PRINTED FOR THE 3800. 00191000
- * 00192000
- * 9. IF ENTERED VIA DMKTCSCO AND THERE ARE MORE COPIES TO 00193000
- * BE PRINTED, ISSUE THE 'END OF TRANSMISSION' CCW. IF 00194000
- * NO MORE COPIES REMAIN, ISSUE THE 'MARK FORMS' CCW. 00195000
- * ALSO, UPDATE SFBCOPY AND SFBSTCPY. 00196000
- * 00197000
- * 10. RETURN TO CALLER 00198000
- * 00199000
- * RESPONSE - 00200000
- * 00201000
- * NONE 00202000
- * 00203000
- * ERROR MESSAGES - 00204000
- * 00205000
- * DMKTCS240E PRT (CUU), FCB-FORMS MISMATCH, FILEID (SPLID) 00206000
- * DMKTCS241E PRT (CUU), INVALID LOAD MODULE (NAME) SPECIFIED, 00207000
- * FILE (SPLID) (HELD|PURGED) 00208000
- * 00209000
- *. 00210000
- EJECT 00211000
- COPY OPTIONS 00212000
- COPY LOCAL OPTIONS 00213000
- EJECT 00214000
- DMKTCS CSECT LOADER CONTROL ONLY @V60B9BA 00215000
- EXTRN DMKPGTVG @V60B9BA 00216000
- EXTRN DMKPGTVR @V60B9BA 00217000
- EXTRN DMKRPAGT @V60B9BA 00218000
- EXTRN DMKIOSQR @V60B9BA 00219000
- EXTRN DMKERMSG @V60B9BA 00220000
- EXTRN DMKSCNVS @V60B9BA 00221000
- EXTRN DMKQNTBL @V60B9BA 00222000
- EXTRN DMKSCNAU @V60B9BA 00223000
- EXTRN DMKCVTBH @V60B9BA 00224000
- EXTRN DMKCVTBD @VMI0013 00225000
- EXTRN DMKSCNRD @V60B9BA 00226000
- SPACE 3 00227000
- USING PSA,R0 @V60B9BA 00228000
- USING SFBLOK,R7 @V60B9BA 00229000
- USING RSPLCTL,R9 @V60B9BA 00230000
- USING SPLINK,R2 @V60B9BA 00231000
- USING IOBLOK,R10 @V60B9BA 00232000
- USING RDEVBLOK,R8 @V60B9BA 00233000
- USING VMBLOK,R11 @V60B9BA 00234000
- USING SAVEAREA,R13 @V60B9BA 00235000
- SPACE 3 00236000
- DC CL8'DMKTCS' MODULE NAME @V60B9BA 00237000
- SPACE 3 00238000
- DMKTCSET RELOC , @V60B9BA 00239000
- XC SAVEWRK1,SAVEWRK1 CLEAR OUT OUR WORK AREAS @V60B9BA 00240000
- XC SAVEWRK2(32),SAVEWRK2 .... @V60B9BA 00241000
- TCSET LA R0,HLDSIZE SIZE OF HOLDING AREA @V60B9BA 00242000
- CALL DMKFREE GET THE STORAGE @V60B9BA 00243000
- LR R5,R1 ADDRESSIBILITY @V60B9BA 00244000
- USING HLDAREA,R5 ... @V60B9BA 00245000
- ST R5,SAVEWRK2 SAVE ITS ADDRESS @V60B9BA 00246000
- XC HLDAREA(HLDSIZE*8),HLDAREA CLEAR IT @V60B9BA 00247000
- L R1,RSPVPAGE GET FIRST LOCKED BUFFER @V60B9BA 00248000
- L R0,SFBSTART FIRST DASD BUFFER @V60B9BA 00249000
- TCSET2 CALL DMKRPAGT,PARM=(BRING+SYSTEM+LOCK) BRING IT IN @VA09394 00250050
- BNZ EXITF0 PAGING ERROR @VA12900 00250075
- CLC SPPREPAG,ZEROES IS IT REALLY THE FIRST? @VA09394 00250100
- BE TCSET3 XFER IF SO @VA09394 00250150
- L R0,SPNXTPAG POINT TO NEXT DASD BUFFER @VA09394 00250200
- C R0,SFBSTART IS THIS WHERE WE STARTED? @VA09394 00250250
- BE EXITFF XFER IF SO - ERROR @VA09394 00250300
- B TCSET2 TRY NEXT PAGE @VA09394 00250350
- TCSET3 ST R0,RSPDPAGE SAVE THE DASD ADDRESS @VA09394 00251100
- ST R2,RSPRPAGE SAVE ITS REAL ADDRESS TOO @V60B9BA 00252000
- CLI SPCHAR,X'00' NOT SPECIFIED? @V60B9BA 00253000
- BE DFLTCHAR SET DEFAULT IF SO @V60B9BA 00254000
- MVC HLDCHARS,SPCHAR SAVE THE CHAR ARR TABLE @V60B9BA 00255000
- B GOTCHAR FINISHED WITH CHAR @V60B9BA 00256000
- DFLTCHAR MVC HLDCHARS,RDEVXSEP USE THE DEFAULT @V60B9BA 00257000
- GOTCHAR CLI SPCMOD,X'00' NOT SPECIFIED? @V60B9BA 00258000
- BE GOTMDFY XFER IF SO @V60B9BA 00259000
- MVC HLDMDFY,SPCMOD SAVE THE COPY MODIFICATION @V60B9BA 00260000
- GOTMDFY CLI SPFCB,X'00' NEVER SPECIFIED ? @V60B9BA 00261000
- BE DFLTFCB XFER IF SO @V60B9BA 00262000
- MVC HLDFCB,SPFCB SAVE THE SPECIFIED FCB @V60B9BA 00263000
- B GOTFCB XFER @V60B9BA 00264000
- DFLTFCB MVC HLDFCB,=C'6 ' ASSUME 6 LPI FCB @V60B9BA 00265000
- CLI RDEVFSEP,6 IS IT ? @V60B9BA 00266000
- BE GOTFCB XFER IF SO @V60B9BA 00267000
- MVI HLDFCB,C'8' ASSUME 8 LPI FCB @V60B9BA 00268000
- CLI RDEVFSEP,8 IS IT ? @V60B9BA 00269000
- BE GOTFCB XFER IF SO @V60B9BA 00270000
- MVC HLDFCB(2),=C'12' IT MUST BE 12 LPI @V60B9BA 00271000
- GOTFCB MVC HLDSTCPY,SFBSTCPY SAVE STARTING COPY NUMBER @V60B9BA 00272000
- MVC HLDFLSHC,SPFLSHC SAVE THE FLASH COUNT @V60B9BA 00273000
- MVC HLDCPY,SFBCOPY+1 TOTAL NUMBER OF COPIES @V60B9BA 00274000
- MVC HLDFLAG,SPFLAG1 SAVE THE COPY FLAG @V60B9BA 00275000
- SR R0,R0 DUMMY DASD ADDRESS @V60B9BA 00276000
- CALL DMKRPAGT,PARM=SYSTEM GIVE BACK THE DASD PAGE @V60B9BA 00277000
- TRANS 2,1,OPT=(BRING,DEFER,SYSTEM,LOCK) LOCK IT @V60B9BA 00278000
- ST R0,RSPDPAGE ZERO THE DASD ADDRESS @V60B9BA 00279000
- ST R2,RSPRPAGE SAVE ITS LOCKED REAL ADDR @V60B9BA 00280000
- TM SAVEWRK1,X'80' ENTERED AT DMKTCSCO ? @V60B9BA 00281000
- BZ TCSCOMN JOIN COMMON CODE IF NOT @V60B9BA 00282000
- TM HLDFLAG,SPCOPYFG JUST ONE TRANSMISSION ? @V60B9BA 00283000
- BO MARKFORM XFER IF SO @V60B9BA 00284000
- CLC SFBCOPY,=H'1' FINAL COPY PRINTED ? @V60B9BA 00285000
- BE MARKFORM XFER IF SO @V60B9BA 00286000
- LH R1,SFBCOPY DECREMENT THE COPIES @V60B9BA 00287000
- BCTR R1,0 ... LEFT TO PRINT @V60B9BA 00288000
- STH R1,SFBCOPY ... AND SAVE IT @V60B9BA 00289000
- STC R1,HLDCPY SAVE IT HERE ALSO @V60B9BA 00290000
- SR R1,R1 NOW INCREMENT THE @V60B9BA 00291000
- IC R1,SFBSTCPY ... STARTING COPY NUMBER @V60B9BA 00292000
- LA R1,1(,R1) ... AND SAVE IT @V60B9BA 00293000
- STC R1,SFBSTCPY ... IN THE SFBLOK @V60B9BA 00294000
- STC R1,HLDSTCPY SAVE IT HERE ALSO @V60B9BA 00295000
- SPACE 00296000
- * ISSUE THE 'END OF TRANSMISSION' CCW 00297000
- SPACE 00298000
- LA R1,EOTCCW GET ITS ADDRESS @V60B9BA 00299000
- ST R1,IOBCAW ADDRESS OF CCW STRING @V60B9BA 00300000
- LA R1,EOTRTN RETURN ADDRESS @V60B9BA 00301000
- ST R1,IOBIRA WHERE WE COME BACK @V60B9BA 00302000
- ST R13,IOBMISC SAVE REGISTER 13 @V60B9BA 00303000
- B TCSSIO DO THE I/O AND WAIT FOR IT @V60B9BA 00304000
- SPACE 2 00305000
- EOTRTN EQU * HERE ON INTERRUPT FROM EOT @V60B9BA 00306000
- USING *,R12 TEMPORARY ADDRESSIBILITY @V60B9BA 00307000
- S R12,=A(EOTRTN-DMKTCS) GET OLD VALUE @V60B9BA 00308000
- USING DMKTCS,R12 NEW ADDRESSIBILITY @V60B9BA 00309000
- L R13,IOBMISC RESTORE SAVE AREA ADDRESS @V60B9BA 00310000
- LM R0,R11,SAVEREGS RESTORE REGISTERS @V60B9BA 00311000
- L R5,SAVEWRK2 ADDRESS OF HOLDING AREA @V60B9BA 00312000
- TM IOBSTAT,IOBFATAL FATAL I/O ERROR ? @V60B9BA 00313000
- BO EXITFF EXIT WITH CC=NON-ZERO IF SO @V60B9BA 00314000
- ST R5,IOBMISC2 CLEAR OUT 'TCS ' @V60B9BA 00315000
- B LDFOSC SET UP FOR NEXT COPY @V60B9BA 00316000
- SPACE 5 00317000
- MARKFORM DS 0H @VA11550 00317200
- LA R1,MKFMCCW LOAD THE 'MARK FORM' CCWS @VA11550 00317400
- TM RDEVFLAG,RDEVDRAN ARE WE DRAINING?? @VA11550 00317600
- BZ REGMKFM NO, JUST 'MARK FORM' @VA11550 00317800
- MVC HLDCCW1,CLRCCW YES, MUST ALSO CLEAR PRINT. @VA11550 00318000
- MVC HLDCCW2(32),MKFMCCW THEN THE MARK FORMS SEQUENCE@VA11550 00318200
- LA R1,HLDCCW1 POINT TO THE CLEAR PRINT CCW @VA11550 00318400
- REGMKFM DS 0H @VA11550 00318600
- ST R1,IOBCAW SAVE IT IN THE IOB @V60B9BA 00319000
- LA R1,MKFMRTN INTERRUPT RETURN POINT @V60B9BA 00320000
- ST R1,IOBIRA SAVE IT @V60B9BA 00321000
- ST R13,IOBMISC SAVE REGISTER 13 @V60B9BA 00322000
- B TCSSIO START THE I/O OPERATION @V60B9BA 00323000
- SPACE 2 00324000
- MKFMRTN EQU * HERE IN INT FROM MARK FORM @V60B9BA 00325000
- USING *,R12 TEMPORARY ADDRESSIBILITY @V60B9BA 00326000
- S R12,=A(MKFMRTN-DMKTCS) GET OLD VALUE @V60B9BA 00327000
- USING DMKTCS,R12 NEW ADDRESSIBILITY @V60B9BA 00328000
- L R13,IOBMISC RESTORE SAVE AREA ADDRESS @V60B9BA 00329000
- LM R0,R11,SAVEREGS RESTORE REGISTERS @V60B9BA 00330000
- ST R12,IOBMISC2 CLEAR OUT 'TCS ' @V60B9BA 00331000
- B EXITFF EXIT CC = NON-ZERO @V60B9BA 00332000
- * (NO MORE COPIES TO DO) @V60B9BA 00333000
- SPACE 5 00334000
- DMKTCSSP RELOC , ENTRY FROM DKMMKSEP @V60B9BA 00335000
- XC SAVEWRK1,SAVEWRK1 CLEAR OUT OUR WORK AREAS @V60B9BA 00336000
- XC SAVEWRK2(32),SAVEWRK2 .... @V60B9BA 00337000
- LA R0,HLDSIZE SIZE OF HOLDING AREA @V60B9BA 00338000
- CALL DMKFREE GET THE STORAGE @V60B9BA 00339000
- LR R5,R1 ADDRESSIBILITY @V60B9BA 00340000
- ST R5,SAVEWRK2 SAVE IT FOR LATER @V60B9BA 00341000
- XC HLDAREA(8*HLDSIZE),HLDAREA CLEAR IT @V60B9BA 00342000
- OI SAVEWRK1,X'10' SET ENTERED AT TCSSP FLAG @V60B9BA 00343000
- MVC HLDCHARS,RDEVXSEP CHAR ARR TABLE @V60B9BA 00344000
- MVC HLDFCB,=C'6 ' ASSUME 6 LPI @V60B9BA 00345000
- CLI RDEVFSEP,6 IS THAT IT ? @V60B9BA 00346000
- BE GOTFCB2 XFER IF SO @V60B9BA 00347000
- MVI HLDFCB,C'8' TRY 8 LPI @V60B9BA 00348000
- CLI RDEVFSEP,8 IS IT THAT ? @V60B9BA 00349000
- BE GOTFCB2 XFER IF SO @V60B9BA 00350000
- MVC HLDFCB(2),=C'12' IT MUST BE 12 LPI @V60B9BA 00351000
- GOTFCB2 MVI HLDSTCPY,1 ASSUME STARTING COPY OF 1 @V60B9BA 00352000
- MVI HLDFLSHC,0 NO FLASHING ON SEP PAGE @V60B9BA 00353000
- MVI HLDCPY,1 ASSUME 1 COPY @V60B9BA 00354000
- B TCSCOMN JOIN COMMON CODE @V60B9BA 00355000
- SPACE 5 00356000
- DMKTCSCO RELOC , ENTRY FOR MULTIPLE COPIES @V60B9BA 00357000
- XC SAVEWRK1,SAVEWRK1 CLEAR OUT OUR WORK AREAS @V60B9BA 00358000
- XC SAVEWRK2(32),SAVEWRK2 ... @V60B9BA 00359000
- OI SAVEWRK1,X'80' INDICATE DMKTCSCO ENTRY @V60B9BA 00360000
- B TCSET SET UP THE HOLDING AREA @V60B9BA 00361000
- EJECT 00362000
- TCSCOMN EQU * COMMON CODE @V60B9BA 00363000
- CALL DMKPGTVG GET A PAGE OF VIRT SPACE @V60B9BA 00364000
- ST R1,SAVEWRK3 SAVE ITS VIRTUAL ADDRESS @V60B9BA 00365000
- L R6,RDEVEXTN GET ADDR OF RSPXBLOK @V60B9BA 00366000
- USING RSPXBLOK,R6 ADDRESSIBILITY @V60B9BA 00367000
- CLC HLDCHARS,RSPXCHR IS WHAT WE WANT ALREADY IN? @V60B9BA 00368000
- BE LDMDFY YES, TRY COPY MODIFICATION @V60B9BA 00369000
- SPACE 00370000
- * WE MUST NOW LOAD THE CHARACTER ARRANGEMENT TABLE SPECIFIED 00371000
- * AND ANY GRAPHIC MODIFICATIONS ASSOCIATED WITH IT. 00372000
- SPACE 00373000
- MVC SAVEWRK4,=C'XTB1' IT'S A CHAR ARR TABLE @V60B9BA 00374000
- MVC SAVEWRK5,HLDCHARS THIS IS ITS NAME @V60B9BA 00375000
- BAL R3,MEMLOAD LOAD IT INTO THE LOCKED BFRS@V60B9BA 00376000
- BNZ MSG241E ERROR - BAD MODULE LOAD @V60B9BA 00377000
- L R2,RSPRPAGE GET ADDRESS OF BUFFER @V60B9BA 00378000
- L R5,SAVEWRK2 ADDR OF HOLDING AREA @V60B9BA 00379000
- L R6,RDEVEXTN ADDR OF RSPXBLOK @V60B9BA 00380000
- USING CATSECT,R2 ADDRESSIBILITY @V60B9BA 00381000
- TM RDEVFTR,FTR4WCGM IS THE FEATURE INSTALLED? @V60B9BA 00382000
- BO GOT4 XFER IF SO V60B9BA 00383000
- CLI CATWCGM+4,X'00' ARE WE USING MORE THAN 2 ? @V60B9BA 00384000
- BNE MSG241E XFER IF SO @V60B9BA 00385000
- GOT4 MVC HLDGCM1(16),CATGRAF SAVE THE GRAPHIC MODS @V60B9BA 00386000
- MVC CATFINAL(1),CATWCGM SET UP THE WCGMS SPECIFIED @V60B9BA 00387000
- MVC CATFINAL+1(1),CATWCGM+2 ... IN THE CAT FOR A @V60B9BA 00388000
- MVC CATFINAL+2(1),CATWCGM+4 ... LOAD WCGM CCW @V60B9BA 00389000
- MVC CATFINAL+3(1),CATWCGM+6 ... @V60B9BA 00390000
- MVC HLDCCW1,CLRCCW CLEAR PRINTER CCW @V60B9BA 00391000
- LM R0,R1,LDWCGCCW LOAD WCGM CCW @V60B9BA 00392000
- ALR R0,R2 RELOCATE DATA ADDRESS @V60B9BA 00393000
- STM R0,R1,HLDCCW2 OUR SECOND CCW @V60B9BA 00394000
- MVC HLDCCW3,SELTTCCW SELECT TRANSLATE TABLE 0 @V60B9BA 00395000
- LM R0,R1,LTTCCW LOAD TRANSLATE TABLE CCW @V60B9BA 00396000
- ALR R0,R2 RELOCATE DATA ADDRESS @V60B9BA 00397000
- STM R0,R1,HLDCCW4 OUR FOURTH CCW @V60B9BA 00398000
- MVC HLDCCW5,LOADSNS DUMMY SENSE CCW @V60B9BA 00399000
- LA R1,HLDCCW1 OUR FIRST CCW @V60B9BA 00400000
- ST R1,IOBCAW PUT IT IN THE IOBLOCK @V60B9BA 00401000
- LA R1,CATRTN THE INTERRUPT RETURN ADDR @V60B9BA 00402000
- ST R1,IOBIRA SAVE IT IN THE IOBLOK @V60B9BA 00403000
- ST R13,IOBMISC SAVE REGISTER 13 @V60B9BA 00404000
- B TCSSIO DO THE START I/O @V60B9BA 00405000
- SPACE 00406000
- CATRTN EQU * HERE AFTER TRANS TBL I/O @V60B9BA 00407000
- USING *,R12 TEMPORARY ADDRESSIBILITY @V60B9BA 00408000
- S R12,=A(CATRTN-DMKTCS) @V60B9BA 00409000
- USING DMKTCS,R12 NEW ADDRESSIBILITY @V60B9BA 00410000
- LR R1,R10 CHECK FOR COPY IOBLOK @V60B9BA 00411000
- L R10,IOBLINK LOAD ADDRESS OF ORIGINAL @V60B9BA 00412000
- CR R1,R10 COPY IOBLOK PRESENT? @V60B9BA 00413000
- BE OK1 XFER IF NOT @V60B9BA 00414000
- OI IOBSTAT,IOBFATAL INDICATE FATAL ERROR @V60B9BA 00415000
- LA R0,IOBSIZE LOAD SIZE OF IOBLOK @V60B9BA 00416000
- CALL DMKFRET RETURN STORAGE @V60B9BA 00417000
- B TCSDSP WAIT FOR DEVICE END @V60B9BA 00418000
- OK1 L R13,IOBMISC RESTORE REGISTER 13 @V60B9BA 00419000
- LM R0,R11,SAVEREGS RESTORE ENTRY REGISTERS @V60B9BA 00420000
- L R5,SAVEWRK2 ADDR OF HOLDING AREA @V60B9BA 00421000
- L R6,RDEVEXTN RSPXBLOK ADDRESSIBILITY @V60B9BA 00422000
- TM IOBSTAT,IOBFATAL FATAL I/O ERROR ? @V60B9BA 00423000
- BO EXITFF ERROR EXIT IF SO @V60B9BA 00424000
- CLC IOBMISC2(2),=C'LD' DID A LOAD CHECK OCCUR ? @V60B9BA 00425000
- BE MSG241E XFER IF SO @V60B9BA 00426000
- ST R5,IOBMISC2 GET RID OF 'TCS ' @V60B9BA 00427000
- MVC RSPXCRWC(4),CATFINAL NEW WCGM VALUES @V60B9BA 00428000
- MVC RSPXCHR,HLDCHARS NEW CAT IN THE 3800 @V60B9BA 00429000
- OI SAVEWRK1,X'40' SET CLR PRT ISSUED FLAG @V60B9BA 00430000
- SPACE 00431000
- * NOW WE MUST LOAD THE GRAPHIC MODIFICATIONS 00432000
- * ASSOCIATED WITH THIS CHARACTER ARRANGEMENT TABLE 00433000
- * THE TRANSLATE TABLE HAS BEEN SET UP ALREADY AND THE 00434000
- * 'CLEAR PRINTER' CCW HAS BEEN ISSUED. 00435000
- SPACE 00436000
- LDGRMOD SR R1,R1 INDEX INTO GRAPHIC MODS @V60B9BA 00437000
- MVC SAVEWRK4,=C'GRAF' FIRST 4 CHARS OF MEMBER @V60B9BA 00438000
- LDGLOOP ST R1,SAVEWRK9 SAVE IT ACROSS MEMLOAD @V60B9BA 00439000
- LA R3,HLDGCM1(R1) GCM NAME @V60B9BA 00440000
- CLI 0(R3),C' ' ARE WE DONE ? @V60B9BA 00441000
- BE LDMDFY XFER IF SO @V60B9BA 00442000
- MVC SAVEWRK5,0(R3) MOVE IN THE GCM NAME @V60B9BA 00443000
- BAL R3,MEMLOAD LOAD IT INTO THE BUFFERS @V60B9BA 00444000
- BNZ MSG241E ERROR RETURN IF BAD LOAD @V60B9BA 00445000
- L R5,SAVEWRK2 ADDRESS OF HOLDING AREA @V60B9BA 00446000
- L R2,RSPRPAGE SET UP FOR IDAL ADDRESSING @V60B9BA 00447000
- LA R2,8(R2) FIRST BYTE OF GRAPH MOD @V60B9BA 00448000
- ST R2,HLDCCW5 PLACE TO PUT FIRST IDAW @V60B9BA 00449000
- LA R2,2040(R2) NEXT 2048 BYTE BLOCK @V60B9BA 00450000
- ST R2,HLDCCW5+4 2ND IDAW @V60B9BA 00451000
- L R2,RSPRPAG2 NEXT BUFFER @V60B9BA 00452000
- ST R2,HLDCCW6 3RD IDAW @V60B9BA 00453000
- LA R2,2048(R2) SECOND BLOCK IN BUFFER @V60B9BA 00454000
- ST R2,HLDCCW6+4 4TH IDAW @V60B9BA 00455000
- L R2,RSPRPAGE POINT TO 1ST PAGE AGAIN @V60B9BA 00456000
- LA R0,HLDCCW5 POINT TO IDAW LIST @V60B9BA 00457000
- ICM R0,B'1000',LGMCCW LOAD GRAPHIC MOD CCW @V60B9BA 00458000
- LH R1,6(R2) LENGTH OF THE GRAPHIC MOD @V60B9BA 00459000
- ICM R1,B'1100',LGMCCW+4 PUT IN THE CCW FLAGS @V60B9BA 00460000
- STM R0,R1,HLDCCW1 FIRST CCW @V60B9BA 00461000
- MVC HLDCCW2,LOADSNS DUMMY SENSE CCW @V60B9BA 00462000
- LA R1,HLDCCW1 OUR FIRST CCW @V60B9BA 00463000
- ST R1,IOBCAW PUT IT IN THE IOBLOCK @V60B9BA 00464000
- LA R1,LGMRTN THE INTERRUPT RETURN ADDR @V60B9BA 00465000
- ST R1,IOBIRA SAVE IT IN THE IOBLOK @V60B9BA 00466000
- ST R13,IOBMISC SAVE REGISTER 13 @V60B9BA 00467000
- B TCSSIO DO THE START I/O @V60B9BA 00468000
- SPACE 00469000
- LGMRTN EQU * HERE AFTER GRAPH MOD I/O @V60B9BA 00470000
- USING *,R12 TEMPORARY ADDRESSIBILITY @V60B9BA 00471000
- S R12,=A(LGMRTN-DMKTCS) @V60B9BA 00472000
- USING DMKTCS,R12 NEW ADDRESSIBILITY @V60B9BA 00473000
- LR R1,R10 CHECK FOR COPY IOBLOK @V60B9BA 00474000
- L R10,IOBLINK LOAD ADDRESS OF ORIGINAL @V60B9BA 00475000
- CR R1,R10 COPY IOBLOK PRESENT? @V60B9BA 00476000
- BE OK2 XFER IF NOT @V60B9BA 00477000
- OI IOBSTAT,IOBFATAL INDICATE FATAL ERROR @V60B9BA 00478000
- LA R0,IOBSIZE LOAD SIZE OF IOBLOK @V60B9BA 00479000
- CALL DMKFRET RETURN STORAGE @V60B9BA 00480000
- B TCSDSP WAIT FOR DEVICE END @V60B9BA 00481000
- OK2 L R13,IOBMISC RESTORE REGISTER 13 @V60B9BA 00482000
- LM R0,R11,SAVEREGS RESTORE ENTRY REGISTERS @V60B9BA 00483000
- L R5,SAVEWRK2 ADDR OF HOLDING AREA @V60B9BA 00484000
- TM IOBSTAT,IOBFATAL FATAL I/O ERROR ? @V60B9BA 00485000
- BO EXITFF ERROR EXIT IF SO @V60B9BA 00486000
- CLC IOBMISC2(2),=C'LD' DID A LOAD CHECK OCCUR ? @V60B9BA 00487000
- BE MSG241E XFER IF SO @V60B9BA 00488000
- ST R5,IOBMISC2 GET RID OF 'TCS ' @V60B9BA 00489000
- L R1,SAVEWRK9 RESTORE GRAPHIC MOD INDEX @V60B9BA 00490000
- LA R1,4(R1) POINT TO NEXT ONE @V60B9BA 00491000
- CH R1,=H'16' FINISHED LAST ONE ? @V60B9BA 00492000
- BE LDMDFY XFER IF SO @V60B9BA 00493000
- B LDGLOOP DO NEXT GRAPHIC MOD @V60B9BA 00494000
- SPACE 2 00495000
- * NOW DO THE COPY MODIFICATION LOAD 00496000
- SPACE 00497000
- LDMDFY L R6,RDEVEXTN POINT TO RSPXBLOK @V60B9BA 00498000
- CLC HLDMDFY,RSPXCMOD IS IT ALREADY THERE ? @V60B9BA 00499000
- * (INCLUDING NULL CMOD) @V60B9BA 00500000
- BE LDFCB IF SO, GO ON TO THE FCB @V60B9BA 00501000
- MVC SAVEWRK4,=C'MOD1' FIRST 4 CHARACTERS @V60B9BA 00502000
- L R2,RSPRPAGE FIRST BUFFER @V60B9BA 00503000
- MVC 0(L'NULLMOD,R2),NULLMOD MOVE IN A NULL CMOD @V60B9BA 00504000
- CLI HLDMDFY,0 NULL CMOD SPCECIFIED ? @V60B9BA 00505000
- BE LOADIT GO LOAD IT INTO THE 3800 @V60B9BA 00506000
- MVC SAVEWRK5,HLDMDFY MOVE IN THE CMOD NAME @V60B9BA 00507000
- BAL R3,MEMLOAD LOAD IT INTO THE BUFFERS @V60B9BA 00508000
- BNZ MSG241E ERROR RETURN FOR BAD LOAD @V60B9BA 00509000
- LOADIT L R2,RSPRPAGE SET UP FOR IDAL ADDRESSING @V60B9BA 00510000
- L R5,SAVEWRK2 ADDR OF HOLDING AREA @V60B9BA 00511000
- L R6,RDEVEXTN RSPXBLOK ADDRESSIBILITY @V60B9BA 00512000
- LA R2,8(R2) FIRST BYTE OF COPY MOD @V60B9BA 00513000
- ST R2,HLDCCW5 PLACE TO PUT FIRST IDAW @V60B9BA 00514000
- LA R2,2040(R2) NEXT 2048 BYTE BLOCK @V60B9BA 00515000
- ST R2,HLDCCW5+4 2ND IDAW @V60B9BA 00516000
- L R2,RSPRPAG2 NEXT BUFFER @V60B9BA 00517000
- ST R2,HLDCCW6 3RD IDAW @V60B9BA 00518000
- LA R2,2048(R2) SECOND BLOCK IN BUFFER @V60B9BA 00519000
- ST R2,HLDCCW6+4 4TH IDAW @V60B9BA 00520000
- L R2,RSPRPAGE POINT TO 1ST PAGE AGAIN @V60B9BA 00521000
- MVC HLDCCW1,CLRCCW SET UP CLEAR PRINTER CCW @V60B9BA 00522000
- LA R0,HLDCCW5 POINT TO IDAW LIST @V60B9BA 00523000
- ICM R0,B'1000',LCMCCW LOAD COPY MOD CCW @V60B9BA 00524000
- LH R1,6(R2) LENGTH OF THE COPY MOD @V60B9BA 00525000
- ICM R1,B'1100',LCMCCW+4 PUT IN THE CCW FLAGS @V60B9BA 00526000
- STM R0,R1,HLDCCW2 SECOND CCW @V60B9BA 00527000
- MVC HLDCCW3,LOADSNS DUMMY SENSE CCW @V60B9BA 00528000
- LA R1,HLDCCW1 OUR FIRST CCW @V60B9BA 00529000
- TM SAVEWRK1,X'40' CLEAR PRINTER ISSUED? @V60B9BA 00530000
- BZ *+8 XFER IF NOT @V60B9BA 00531000
- LA R1,HLDCCW2 BYPASS CLEAR PRINTER CCW @V60B9BA 00532000
- OI SAVEWRK1,X'40' CLEAR PRINTER NOW IS DONE @V60B9BA 00533000
- ST R1,IOBCAW PUT IT IN THE IOBLOCK @V60B9BA 00534000
- LA R1,LCMRTN THE INTERRUPT RETURN ADDR @V60B9BA 00535000
- ST R1,IOBIRA SAVE IT IN THE IOBLOK @V60B9BA 00536000
- ST R13,IOBMISC SAVE REGISTER 13 @V60B9BA 00537000
- B TCSSIO DO THE START I/O @V60B9BA 00538000
- SPACE 00539000
- LCMRTN EQU * HERE AFTER COPY MOD I/O @V60B9BA 00540000
- USING *,R12 TEMPORARY ADDRESSIBILITY @V60B9BA 00541000
- S R12,=A(LCMRTN-DMKTCS) @V60B9BA 00542000
- USING DMKTCS,R12 NEW ADDRESSIBILITY @V60B9BA 00543000
- LR R1,R10 CHECK FOR COPY IOBLOK @V60B9BA 00544000
- L R10,IOBLINK LOAD ADDRESS OF ORIGINAL @V60B9BA 00545000
- CR R1,R10 COPY IOBLOK PRESENT? @V60B9BA 00546000
- BE OK3 XFER IF NOT @V60B9BA 00547000
- OI IOBSTAT,IOBFATAL INDICATE FATAL ERROR @V60B9BA 00548000
- LA R0,IOBSIZE LOAD SIZE OF IOBLOK @V60B9BA 00549000
- CALL DMKFRET RETURN STORAGE @V60B9BA 00550000
- B TCSDSP WAIT FOR DEVICE END @V60B9BA 00551000
- OK3 L R13,IOBMISC RESTORE REGISTER 13 @V60B9BA 00552000
- LM R0,R11,SAVEREGS RESTORE ENTRY REGISTERS @V60B9BA 00553000
- L R5,SAVEWRK2 ADDR OF HOLDING AREA @V60B9BA 00554000
- TM IOBSTAT,IOBFATAL FATAL I/O ERROR ? @V60B9BA 00555000
- BO EXITFF ERROR EXIT IF SO @V60B9BA 00556000
- CLC IOBMISC2(2),=C'LD' DID A LOAD CHECK OCCUR ? @V60B9BA 00557000
- BE MSG241E XFER IF SO @V60B9BA 00558000
- ST R5,IOBMISC2 GET RID OF 'TCS ' @V60B9BA 00559000
- L R6,RDEVEXTN RSPXBLOK ADDRESSIBILITY @V60B9BA 00560000
- MVC RSPXCMOD,HLDMDFY NEW CMOD IN THE 3800 @V60B9BA 00561000
- SPACE 2 00562000
- * NOW WE LOAD THE FCB 00563000
- SPACE 00564000
- LDFCB MVC SAVEWRK4,=C'FCB3' FIRST FOUR CHARACTERS @V60B9BA 00565000
- MVC SAVEWRK5,HLDFCB THE FCB NAME @V60B9BA 00566000
- L R2,RSPRPAGE BUFFER POINTER @V60B9BA 00567000
- LA R1,6/2 ASSUME FCB WAS '6 ' @V60B9BA 00568000
- CLC HLDFCB,=C'6 ' WAS IT ? @V60B9BA 00569000
- BE CALCFCB XFER IF SO @V60B9BA 00570000
- LA R1,8/2 ASSUME FCB WAS '8 ' @V60B9BA 00571000
- CLC HLDFCB,=C'8 ' WAS IT ? @V60B9BA 00572000
- BE CALCFCB XFER IF SO @V60B9BA 00573000
- LA R1,12/2 ASSUME FCB WAS '12 ' @V60B9BA 00574000
- CLC HLDFCB,=C'12 ' WAS IT ? @V60B9BA 00575000
- BE CALCFCB XFER IF SO @V60B9BA 00576000
- CLC RSPXFCB,HLDFCB IS IT ALREADY IN ? @V60B9BA 00577000
- BE LDFOSC XFER IF SO - DONE @V60B9BA 00578000
- BAL R3,MEMLOAD LOAD IN THE FCB @V60B9BA 00579000
- BNZ MSG241E ERROR RETURN IF BAD LOAD @V60B9BA 00580000
- L R2,RSPRPAGE BUFFER POINTER @VA09314 00580100
- L R5,SAVEWRK2 ADDR OF HOLDING AREA @VA09314 00580200
- L R6,RDEVEXTN RSPXBLOK ADDRESSIBILITY @VA09314 00580300
- LH R1,6(R2) GET LENGTH INTO R1 @VA09314 00581100
- B FCBIO IT'S IN STORAGE- LOAD IT @V60B9BA 00582000
- SPACE 00583000
- CALCFCB EQU * HERE TO CALCULATE THE PROPER FCB 00584000
- OI SAVEWRK1,X'20' FCB IS CALCULATED @V60B9BA 00585000
- LR R4,R1 NUMBER OF HALF-INCHES @V60B9BA 00586000
- S R4,F3 SUBTRACT 3 TO GET FCB BYTE @V60B9BA 00587000
- SLL R4,4 PUT IT IN POSITION FOR FCB @V60B9BA 00588000
- STC R4,8(R2) PUT IT IN THE BUFFER AND @V60B9BA 00589000
- MVC 9(143,R2),8(R2) .. PROPOGATE TO MAX LENGTH @V60B9BA 00590000
- ST R1,SAVEWRK7 SAVE THE LPI/2 @V60B9BA 00591000
- LA R4,8(R2,R1) PLACE TO PUT CHANNEL 1 CODE @V60B9BA 00592000
- OI 0(R4),X'01' PUT IN SKIP TO CH 1 @V60B9BA 00593000
- SR R3,R3 INITIALIZE THE REGISTER @V60B9BA 00594000
- IC R3,RDEVCURP USER CURRENT PAPER SIZE 1ST @V60B9BA 00595000
- LA R4,12 NUMBER OF LINE SIZES TO TRY @V60B9BA 00596000
- B FCB2 WE ARE SET UP FIRST TIME @V60B9BA 00597000
- FCBLOOP SR R3,R3 INITIALIZE THE REGISTER @V60B9BA 00598000
- IC R3,LINESIZE-1(R4) GET A PAPER SIZE IN @V60B9BA 00599000
- FCB2 STC R3,SAVEWRK9 SAVE PAPER LENGTH FOR LATER @V60B9BA 00600000
- SR R0,R0 INITIALIZE FOR MULTIPLY @V60B9BA 00601000
- L R1,SAVEWRK7 LPI/2 INTO R1 @V60B9BA 00602000
- MR R0,R3 MULT BY NUMBER OF HALF-INS @V60B9BA 00603000
- FCBIO L R0,LDFCBCCW FIRST PART OF LOAD FCB CCW @V60B9BA 00604000
- ALR R0,R2 RELOCATE ADDRESS @V60B9BA 00605000
- O R1,LDFCBCCW+4 LENGTH + FLAGS @V60B9BA 00606000
- STM R0,R1,HLDCCW2 SECOND CCW @V60B9BA 00607000
- MVC HLDCCW3,LOADSNS DUMMY SENSE CCW @V60B9BA 00608000
- MVC HLDCCW1,CLRCCW CLEAR PRINT CCW @V60B9BA 00609000
- LA R1,HLDCCW1 OUR FIRST CCW @V60B9BA 00610000
- TM SAVEWRK1,X'40' HAS CLR PRT BEEN ISSUED? @V60B9BA 00611000
- BZ *+8 XFER IF NOT @V60B9BA 00612000
- LA R1,HLDCCW2 BYPASS THE CLR PRT @V60B9BA 00613000
- OI SAVEWRK1,X'40' IT NOW HAS BEEN ISSUED @V60B9BA 00614000
- ST R1,IOBCAW PUT IT IN THE IOBLOCK @V60B9BA 00615000
- LA R1,FCBRTN THE INTERRUPT RETURN ADDR @V60B9BA 00616000
- ST R1,IOBIRA SAVE IT IN THE IOBLOK @V60B9BA 00617000
- ST R13,IOBMISC SAVE REGISTER 13 @V60B9BA 00618000
- ST R4,SAVEWRK8 SAVE THE PAPER LENGTH INDEX @V60B9BA 00619000
- B TCSSIO DO THE START I/O @V60B9BA 00620000
- SPACE 00621000
- FCBRTN EQU * HERE AFTER LOAD FCB I/O @V60B9BA 00622000
- USING *,R12 TEMPORARY ADDRESSIBILITY @V60B9BA 00623000
- S R12,=A(FCBRTN-DMKTCS) @V60B9BA 00624000
- USING DMKTCS,R12 NEW ADDRESSIBILITY @V60B9BA 00625000
- LR R1,R10 CHECK FOR COPY IOBLOK @V60B9BA 00626000
- L R10,IOBLINK LOAD ADDRESS OF ORIGINAL @V60B9BA 00627000
- CR R1,R10 COPY IOBLOK PRESENT? @V60B9BA 00628000
- BE OK4 XFER IF NOT @V60B9BA 00629000
- OI IOBSTAT,IOBFATAL INDICATE FATAL ERROR @V60B9BA 00630000
- LA R0,IOBSIZE LOAD SIZE OF IOBLOK @V60B9BA 00631000
- CALL DMKFRET RETURN STORAGE @V60B9BA 00632000
- B TCSDSP WAIT FOR DEVICE END @V60B9BA 00633000
- OK4 L R13,IOBMISC RESTORE REGISTER 13 @V60B9BA 00634000
- LM R0,R11,SAVEREGS RESTORE ENTRY REGISTERS @V60B9BA 00635000
- L R5,SAVEWRK2 ADDR OF HOLDING AREA @V60B9BA 00636000
- L R4,SAVEWRK8 RESTORE THE PAPER LGTH INDEX@V60B9BA 00637000
- TM IOBSTAT,IOBFATAL FATAL I/O ERROR ? @V60B9BA 00638000
- BO EXITFF ERROR EXIT IF SO @V60B9BA 00639000
- CLC IOBMISC2(2),=C'LD' DID A LOAD CHECK OCCUR ? @V60B9BA 00640000
- BNE FCBDONE NO- THE FCB HAS BEEN LOADED @V60B9BA 00641000
- TM IOBMISC2+2,X'08' WAS IT FCB LENGTH CHECK? @V60B9BA 00642000
- BZ MSG241E NO-SO BAD MODULE LOAD @V60B9BA 00643000
- TM SAVEWRK1,X'20' FCB CALCULATED ? @V60B9BA 00644000
- BZ MSG240E NO- FORMS-FCB MISMATCH @V60B9BA 00645000
- BCT R4,FCBLOOP TRY NEXT PAPER LENGTH @V60B9BA 00646000
- B MSG241E RAN OUT OF PAPER LENGTHS @V60B9BA 00647000
- FCBDONE ST R5,IOBMISC2 GET RID OF 'TCS ' @V60B9BA 00648000
- L R6,RDEVEXTN RSPXBLOK ADDRESSIBILITY @V60B9BA 00649000
- MVC RSPXFCB,HLDFCB NEW FCB LOADED @V60B9BA 00650000
- TM SAVEWRK1,X'20' FCB CALCULATED ? @V60B9BA 00651000
- BZ LDFOSC XFER IF NOT @V60B9BA 00652000
- MVC RDEVCURP,SAVEWRK9 GET CURRENT PAPER LENGTH @V60B9BA 00653000
- SPACE 2 00654000
- LDFOSC LA R0,HLDSTCPY GET STARTING COPY NUMBER @V60B9BA 00655000
- O R0,LDCPYCCW SET UP THE LOAD CPY NO. CCW @V60B9BA 00656000
- L R1,LDCPYCCW+4 THE SECOND HALF @V60B9BA 00657000
- STM R0,R1,HLDCCW2 FIRST IS LD COPY NUM CCW @V60B9BA 00658000
- MVC HLDCCW1,CLRCCW MIGHT NEED A CLR PRT @V60B9BA 00659000
- TM HLDFLAG,SPCOPYFG 1 TRANSMISSION ? @V60B9BA 00660000
- BZ TWOBYTES XFER IF NOT @V60B9BA 00661000
- CLI HLDFLSHC,0 ZERO FLASH COUNT ? @V60B9BA 00662000
- BE TWOBYTES XFER IF SO @V60B9BA 00663000
- CLC HLDFLSHC,HLDCPY ALL COPIES FLASHED ? @V60B9BA 00664000
- BNL TWOBYTES XFER IF SO @V60B9BA 00665000
- SPACE 00666000
- L R1,=X'00FF0000' INITIALIZED FOSC @V60B9BA 00667000
- ICM R1,B'1000',HLDFLSHC NUMBER TO BE FLASHED @V60B9BA 00668000
- ICM R1,B'0010',HLDCPY TOTAL NUMBER OF COPIES @V60B9BA 00669000
- SR R0,R0 MUST SUBTRACT THE FIRST @V60B9BA 00670000
- IC R0,HLDFLSHC .. PART TO GET THE SECOND @V60B9BA 00671000
- SLL R0,8 GET IT IN POSITION @V60B9BA 00672000
- SLR R1,R0 GET THE FINAL FOSC @V60B9BA 00673000
- ST R1,SAVEWRK9 PLACE TO PUT IT @V60B9BA 00674000
- LA R1,4 NUMBER OF BYTES FOR THE CCW @V60B9BA 00675000
- B FOSCIO DO THE 3800 I/O @V60B9BA 00676000
- SPACE 00677000
- TWOBYTES TM HLDFLAG,SPCOPYFG 1 TRANSMISSION ? @V60B9BA 00678000
- BZ MULTXM XFER IF NOT @V60B9BA 00679000
- SR R0,R0 GET AN INITIALIZED FOSC @V60B9BA 00680000
- CLI HLDFLSHC,0 ZERO FLASH COUNT ? @V60B9BA 00681000
- BE *+8 XFER IF SO @V60B9BA 00682000
- ICM R0,B'0100',=X'FF' SPECIFY FLAHSING @V60B9BA 00683000
- ICM R0,B'1000',HLDCPY TOTAL COPIES TO PRINT @V60B9BA 00684000
- ST R0,SAVEWRK9 PLACE TO PUT IT @V60B9BA 00685000
- LA R1,2 NUMBER OF BYTES IN FOSC @V60B9BA 00686000
- B FOSCIO GO DO THE I/O @V60B9BA 00687000
- MULTXM MVI SAVEWRK9,X'01' ONE COPY TO PRINT NOW @V60B9BA 00688000
- MVI SAVEWRK9+1,0 ASSUME NO FLASHING @V60B9BA 00689000
- CLC HLDSTCPY,HLDFLSHC SHOULD WE FLASH THIS ONE? @V60B9BA 00690000
- BH *+8 XFER IF NOT @V60B9BA 00691000
- MVI SAVEWRK9+1,X'FF' SPECIFY FLASHING @V60B9BA 00692000
- LA R1,2 TWO BYTES IN THE FOSC @V60B9BA 00693000
- SPACE 00694000
- FOSCIO LA R0,SAVEWRK9 WHERE THE FOSC IS @V60B9BA 00695000
- ICM R0,B'1000',LFOSCCCW THE FOSC CCW @V60B9BA 00696000
- ICM R1,B'1100',LFOSCCCW+4 THE FLAGS @V60B9BA 00697000
- STM R0,R1,HLDCCW3 SECOND CCW @V60B9BA 00698000
- MVC HLDCCW4,BLKDATCK SET BLK DATA CK LATCH @VA09294 00699100
- MVC HLDCCW5,LOADSNS DUMMY SENSE @VA09294 00699200
- LA R1,HLDCCW1 OUR FIRST CCW @V60B9BA 00700000
- TM SAVEWRK1,X'40' HAS 'CLR PRT' BEEN ISSUED? @V60B9BA 00701000
- BZ *+8 XFER IF NOT @V60B9BA 00702000
- LA R1,HLDCCW2 BYPASS THE CLR PRT @V60B9BA 00703000
- OI SAVEWRK1,X'40' IT NOW HAS BEEN ISSUED @V60B9BA 00704000
- ST R1,IOBCAW PUT IT IN THE IOBLOCK @V60B9BA 00705000
- LA R1,FOSCRTN THE INTERRUPT RETURN ADDR @V60B9BA 00706000
- ST R1,IOBIRA SAVE IT IN THE IOBLOK @V60B9BA 00707000
- ST R13,IOBMISC SAVE REGISTER 13 @V60B9BA 00708000
- B TCSSIO DO THE START I/O @V60B9BA 00709000
- SPACE 00710000
- FOSCRTN EQU * HERE AFTER LOAD FOSC I/O @V60B9BA 00711000
- USING *,R12 TEMPORARY ADDRESSIBILITY @V60B9BA 00712000
- S R12,=A(FOSCRTN-DMKTCS) @V60B9BA 00713000
- USING DMKTCS,R12 NEW ADDRESSIBILITY @V60B9BA 00714000
- LR R1,R10 CHECK FOR COPY IOBLOK @V60B9BA 00715000
- L R10,IOBLINK LOAD ADDRESS OF ORIGINAL @V60B9BA 00716000
- CR R1,R10 COPY IOBLOK PRESENT? @V60B9BA 00717000
- BE OK5 XFER IF NOT @V60B9BA 00718000
- OI IOBSTAT,IOBFATAL INDICATE FATAL ERROR @V60B9BA 00719000
- LA R0,IOBSIZE LOAD SIZE OF IOBLOK @V60B9BA 00720000
- CALL DMKFRET RETURN STORAGE @V60B9BA 00721000
- B TCSDSP WAIT FOR DEVICE END @V60B9BA 00722000
- OK5 L R13,IOBMISC RESTORE REGISTER 13 @V60B9BA 00723000
- LM R0,R11,SAVEREGS RESTORE ENTRY REGISTERS @V60B9BA 00724000
- L R5,SAVEWRK2 ADDR OF HOLDING AREA @V60B9BA 00725000
- TM IOBSTAT,IOBFATAL FATAL I/O ERROR ? @V60B9BA 00726000
- BO EXITFF ERROR EXIT IF SO @V60B9BA 00727000
- CLC IOBMISC2(2),=C'LD' DID A LOAD CHECK OCCUR ? @V60B9BA 00728000
- BNE FOSCOK XFER IF NOT @V60B9BA 00729000
- OI IOBSTAT,IOBFATAL SET FATAL I/O ERROR @V60B9BA 00730000
- B EXITFF AND EXIT @V60B9BA 00731000
- FOSCOK ST R5,IOBMISC2 GET RID OF 'TCS ' @V60B9BA 00732000
- B EXIT0 AND LEAVE @V60B9BA 00733000
- SPACE 6 00734000
- TCSSIO MVC IOBMISC2(4),=C'TCS ' INDICATE SETUP ENTRY @V60B9BA 00735000
- NI IOBFLAG,X'FF'-IOBRSTRT CLEAR THE RESTART FLAG @V60B9BA 00736000
- CALL DMKIOSQR ISSUE THE START I/O @V60B9BA 00737000
- TCSDSP GOTO DMKDSPCH WAIT FOR THE INTERRUPT @V60B9BA 00738000
- SPACE 5 00739000
- EXITF0 DS 0H @VA12900 00739200
- MVI SAVEWRK1+1,X'F0' SET CC=4 - PAGING ERROR @VA12900 00739400
- B EXIT GO TO COMMON EXIT ROUTINE @VA12900 00739600
- SPACE 2 00739800
- EXITFF MVI SAVEWRK1+1,X'FF' NON-ZERO CONDITION CODE @V60B9BA 00740000
- B EXIT GO TO COMMON EXIT @V60B9BA 00741000
- SPACE 00742000
- EXIT0 EQU * ITS ZERO CONDITION CODE @V60B9BA 00743000
- EXIT L R1,SAVEWRK3 WAS THERE A SYS VIRT PAGE? @V60B9BA 00744000
- LTR R1,R1 WELL ? @V60B9BA 00745000
- BZ EXITA XFER IF NOT @V60B9BA 00746000
- SR R0,R0 DUMMY DASD ADDRESS @V60B9BA 00747000
- CALL DMKRPAGT,AFFINITY,PARM=SYSTEM RELEASE IT @V60B9BA 00748000
- CALL DMKPGTVR GIVE IT BACK @V60B9BA 00749000
- EXITA LA R0,HLDSIZE LET'S GIVE BACK THE @V60B9BA 00750000
- L R1,SAVEWRK2 HOLDING AREA WE GOT @V60B9BA 00751000
- CALL DMKFRET GO DO IT @V60B9BA 00752000
- EXITB TM SAVEWRK1+1,X'FF' SET THE CONDITION CODE @V60B9BA 00753000
- EXIT 00754000
- SPACE 5 00755000
- MSG240E LA R2,240 FCB-FORMS MISMATCH CODE @V60B9BA 00756000
- LA R5,15 MESSAGE DATA LENGTH @V60B9BA 00757000
- B MSGCOMN JOIN COMMON CODE @V60B9BA 00758000
- SPACE 00759000
- MSG241E LA R2,241 INVALID LOAD MODULE @V60B9BA 00760000
- LA R5,20 LENGTH OF DATA @V60B9BA 00761000
- SPACE 00762000
- MSGCOMN L R4,RSPRPAGE ADDR OF DATA AREA @V60B9BA 00763000
- MVI 3(R4),0 DELIMITER BEFOR 2ND FIELD @V60B9BA 00764000
- LA R4,4(R4) NEXT MESSAGE FIELD @V60B9BA 00765000
- CH R2,=H'240' MSG ID 240 ? @V60B9BA 00766000
- BE SKIPMOD XFER IF SO @V60B9BA 00767000
- MVC 0(4,R4),SAVEWRK5 MODULE NAME @V60B9BA 00768000
- MVI 4(R4),0 DELIMITER @V60B9BA 00769000
- LA R4,5(R4) NEXT MESSAGE FIELD @V60B9BA 00770000
- SKIPMOD LH R1,SFBFILID GET SPOOL FILE ID @V60B9BA 00771000
- CALL DMKCVTBD CONVERT TO DECIMAL @VMI0013 00772000
- STCM R1,B'1111',0(R4) SPOOLID @V60B9BA 00773000
- MVI 4(R4),0 DELIMITER @V60B9BA 00774000
- LA R4,5(R4) NEXT FIELD @V60B9BA 00775000
- MVC 0(6,R4),BLANKS BLANK THE FIELD @V60B9BA 00776000
- TM SAVEWRK1,X'10' ENTERED AT DMKTCSSP? @V60B9BA 00777000
- BO MSGCONT XFER IF SO @V60B9BA 00778000
- MVC 0(6,R4),=C'HELD ' FILE STATUS @V60B9BA 00779000
- TM RDEVSTA2,RDEVPURG IS IT PURGE ? @V60B9BA 00780000
- BZ MSGCONT XFER IF NOT @V60B9BA 00781000
- MVC 0(6,R4),=C'PURGED' MOVE THAT @V60B9BA 00782000
- SPACE 00783000
- MSGCONT L R4,RSPRPAGE BEGINNING OF DATA AREA @V60B9BA 00784000
- CALL DMKSCNRD GET 3800 ADDR IN CUU FORM @V60B9BA 00785000
- CALL DMKCVTBH CONVERT TO PRINTABLE HEX @V60B9BA 00786000
- STCM R1,B'0111',0(R4) DATA AREA @V60B9BA 00787000
- LA R0,8 USERID LENGTH @V60B9BA 00788000
- LA R1,SFBUSER USERID ADDRESS @V60B9BA 00789000
- CALL DMKSCNAU GET THE VMBLOK @V60B9BA 00790000
- BALR R6,0 SAVE CONDITION CODE @V60B9BA 00791000
- SWTCHVM SWITCH TO USER'S VMBLOK @VMI0081 00792000
- LR R0,R5 MESSAGE LENGTH @V60B9BA 00793000
- ICM R0,B'1110',DMKTCS+3 MODULE ID @V60B9BA 00794000
- LR R1,R4 ADDRESS OF DATA @V60B9BA 00795000
- ICM R2,B'1100',=X'B0C5' OP + ALARM + RETURN @V60B9BA 00796000
- CALL DMKERMSG SEND MESSAGE TO OPERATOR @V60B9BA 00797000
- SPM R6 RESTORE CONDITION CODE @V60B9BA 00798000
- BNZ EREXIT HE'S NOT LOGGED ON @V60B9BA 00799000
- ICM R2,B'1000',=X'90' ALARM + RETURN @V60B9BA 00800000
- CALL DMKERMSG SEND USER THE MESSAGE @V60B9BA 00801000
- SPACE 00802000
- EREXIT L R1,SAVEWRK3 THE SYSTEM VIRTUAL PAGE @V60B9BA 00803000
- CALL DMKPGTVR GIVE IT BACK @V60B9BA 00804000
- LA R0,HLDSIZE RETURN THE HOLDING AREA @V60B9BA 00805000
- L R1,SAVEWRK2 ITS ADDRESS @V60B9BA 00806000
- CALL DMKFRET RETURN IT @V60B9BA 00807000
- MVI SAVEWRK1+1,X'FF' SET NON-ZERO COND. CODE @VA09268 00808100
- L R1,SAVER11 VMBLOK OF CALLER @VMI0081 00809000
- SWTCHVM SWITCH TO CALLER'S VMBLOK @VMI0081 00810000
- B EXITB RETURN TO CALLER @VA09268 00811100
- EJECT 00812000
- *. 00813000
- * THIS SUBROUTINE READS MEMBERS OF THE IMAGE LIBRARY SPECIFIED 00814000
- * IN RDEVIMAG INTO THE LOCKED BUFFERS INDICATED IN THE 00815000
- * RSPLCTL CONTROL BLOCK. THE DIRECTORY AND DATA ARE INITIALLY 00816000
- * MOVED TO THE BUFFERS POINTED TO BY SAVEWRK3 AND THEN MOVED. 00817000
- * ON ENTRY, THE MEMBER TO LOAD IS CONTAINED IN SAVEWRK4 & SAVEWRK5. 00818000
- * THE DATA IS MOVED IN 4 SECTIONS: A, B, C, AND D. 00819000
- * SINCE ITS MAXIMUM IS 8192 BYTES, IT CAN SPAN 3 PAGES 00820000
- * IN THE IMAGE LIBRARY, WITH SECTION A IN THE FIRST PAGE, 00821000
- * SECTIONS B & C IN THE SECOND PAGE, AND SECTION D IN THE 00822000
- * THIRD PAGE. THE RESULT CAN SPAN 2 PAGES WITH 00823000
- * SECTIONS A AND B LANDING IN THE FIRST PAGE AND 00824000
- * SECTIONS C AND D LANDING IN THE SECOND PAGE. 00825000
- *. 00826000
- SPACE 00827000
- MEMLOAD L R1,=A(DMKQNTBL) GET IMAGE LIBRARY ANCHOR @V60B9BA 00828000
- LTR R1,R1 ANY SYSTEMS DEFINED ? @V60B9BA 00829000
- BZ MEMERROR ERROR RETURN IF NOT @V60B9BA 00830000
- TRANS 2,1,OPT=(BRING,DEFER,SYSTEM) BRING NPRTBL IN @V60B9BA 00831000
- USING NPRTBL,R2 ADDRESSIBILITY @V60B9BA 00832000
- MEMLD1 CLC NPRNAME,RDEVIMAG IS THIS THE IMAGE LIBRARY? @V60B9BA 00833000
- BE MEMLD2 XFER IF SO @V60B9BA 00834000
- AL R2,NPRPNT NEXT ENTRY @V60B9BA 00835000
- CLC NPRPNT,ZEROES DUMMY LAST ENTRY ? @V60B9BA 00836000
- BNE MEMLD1 TRY AGAIN IF NOT @V60B9BA 00837000
- MEMERROR TM *,X'FF' NON-ZERO CONDITION CODE @V60B9BA 00838000
- BR R3 RETURN TO CALLER @V60B9BA 00839000
- MEMLD2 LA R0,6 LENGTH OF VOLSER @V60B9BA 00840000
- LA R1,NPRVOL ADDRESS OF VOLSER @V60B9BA 00841000
- CALL DMKSCNVS FIND THE RDEVBLOK @V60B9BA 00842000
- BNZR R3 ERROR RETURN IF NOT FOUND @V60B9BA 00843000
- TM RDEVFLAG-RDEVBLOK(R1),RDEVOWN CP-OWNED ? @V60B9BA 00844000
- BZ MEMERROR ERROR IF NOT @V60B9BA 00845000
- LA R6,32 PAGES/CYL FOR 2314 @V60B9BA 00846000
- TM RDEVTYPE-RDEVBLOK(R1),TYP2314 2314? @V60B9BA 00847000
- BO MEMLD3 XFER IF SO @V60B9BA 00848000
- LA R6,120 PAGES/CYL FOR 3350 @V60B9BA 00849000
- CLI RDEVTYPE-RDEVBLOK(R1),TYP3350 IS IT 3350? @V60B9BA 00850000
- BE MEMLD3 XFER IF SO @V60B9BA 00851000
- LA R6,96 Pages/cyl for 3375 HRC106DK 00851100
- CLI RDEVTYPE-RDEVBLOK(R1),TYP3375 Is it 3375? HRC106DK 00851200
- BE MEMLD3 Xfer if so HRC106DK 00851300
- LA R6,150 Pages/cyl for 3380 HRC106DK 00851400
- CLI RDEVTYPE-RDEVBLOK(R1),TYP3380 Is it 3380? HRC106DK 00851500
- BE MEMLD3 Xfer if so HRC106DK 00851600
- LA R6,57 PAGES/CYL FOR 3330 @V60B9BA 00852000
- TM RDEVTYPE-RDEVBLOK(R1),TYP3330 IS IT A 3330? @V60B9BA 00853000
- BO MEMLD3 XFER IF SO @V60B9BA 00854000
- LA R6,24 IT MUST BE A 3340 OR 2305 @V60B9BA 00855000
- MEMLD3 SLL R6,8 GET IT INTO POSITION @V60B9BA 00856000
- MVC SAVEWRK6,NPRSTART GET STARTING CCPD @V60B9BA 00857000
- MVC SAVEWRK6+3(1),RDEVCODE+1-RDEVBLOK(R1) INDEX @V60B9BA 00858000
- L R1,SAVEWRK3 VIRT ADDRESS OF SYSTEM PAGE @V60B9BA 00859000
- L R0,SAVEWRK6 STARTING DASD CCPD @V60B9BA 00860000
- ST R0,SAVEWRK7 CURRENT CCPD @V60B9BA 00861000
- CALL DMKRPAGT,PARM=SYSTEM+BRING BRING IT IN @V60B9BA 00862000
- BNZR R3 RETURN, PAGING ERROR @V60B9BA 00863000
- DROP R2 NOT NEEDED FOR NPRTBL @V60B9BA 00864000
- USING PDEBLOK,R2 ADDRESSES DIRECTORY ENTRIES @V60B9BA 00865000
- CLC PDEIMAG,RDEVIMAG IS IT THE RIGHT IMAG LIB ? @V60B9BA 00866000
- BNER R3 ERROR RETURN IF NOT @V60B9BA 00867000
- L R0,PDENUM NUMBER OF MEMBERS @V60B9BA 00868000
- LA R2,PDESIZE(R2) FIRST REAL MEMBER @V60B9BA 00869000
- MEMLD3A LA R4,PDESIZE INCREMENT FOR BXLE @V60B9BA 00870000
- LR R5,R2 SET UP THE @V60B9BA 00871000
- O R5,F4095 .. COMPARAND TO END OF PAGE @V60B9BA 00872000
- MEMLD4 CLC PDENAME,SAVEWRK4 IS THIS THE MEMBER TO LOAD? @V60B9BA 00873000
- BE MEMLD7 XFER IF SO @V60B9BA 00874000
- BCT R0,MEMLD5 TRY NEXT MEMBER @V60B9BA 00875000
- B MEMERROR COULDN'T FIND THE MEMBER @V60B9BA 00876000
- MEMLD5 BXLE R2,R4,MEMLD4 POINT TO NEXT ENTRY @V60B9BA 00877000
- SPACE 00878000
- * MUST GET NEXT DIRECTORY PAGE 00879000
- SPACE 00880000
- LR R4,R0 SAVE RESIDUAL MEMBER COUNT @V60B9BA 00881000
- L R0,SAVEWRK7 CURRENT CCPD @V60B9BA 00882000
- AL R0,F256 BUMP TO NEXT PAGE @V60B9BA 00883000
- LR R1,R0 TO R1 FOR WORK @V60B9BA 00884000
- N R1,=X'0000FF00' ISOLATE PAGE NUMBER @V60B9BA 00885000
- CR R1,R6 REACHED MAXIMUM ? @V60B9BA 00886000
- BNH MEMLD6 XFER IF NOT @V60B9BA 00887000
- AL R0,=X'00010000' NEXT CYLINDER @V60B9BA 00888000
- ICM R0,B'0010',F1+3 POINT TO PAGE 1 @V60B9BA 00889000
- MEMLD6 ST R0,SAVEWRK7 SAVE CURRENT CCPD @V60B9BA 00890000
- L R1,SAVEWRK3 VIRTUAL ADDR OF SYSTEM PAGE @V60B9BA 00891000
- CALL DMKRPAGT,PARM=BRING+SYSTEM BRING IT IN @V60B9BA 00892000
- BNZR R3 PAGING ERROR - RETURN @V60B9BA 00893000
- LR R0,R4 RESTORE RESIDUAL MEMB CNT @V60B9BA 00894000
- B MEMLD3A CONTINUE THE SEARCH @V60B9BA 00895000
- SPACE 00896000
- * WE FOUND THE DIRECTORY ENTRY 00897000
- SPACE 00898000
- MEMLD7 L R4,PDEDISP GET RBA OF MEMBER @V60B9BA 00899000
- SRDL R4,12 DIVIDE BY 4096 @V60B9BA 00900000
- SRL R5,20 REMAINDER IN R5 @V60B9BA 00901000
- SLL R4,8 GET PAGE DISP INTO POSITION @V60B9BA 00902000
- CLC PDELGTH,=F'8192' GREATER THAN MAXIMUM ? @V60B9BA 00903000
- BHR R3 ERROR RETURN IF SO @V60B9BA 00904000
- MVC SAVEWRK8,PDELGTH SAVE LENGTH LOCALLY @V60B9BA 00905000
- DROP R2 NO LONGER NEEDED FOR DRCTRY @V60B9BA 00906000
- SR R0,R0 WE NOW GET THE DISPLACEMENT @V60B9BA 00907000
- SR R1,R1 GET PAGE NUMBER OF @VA10748 00908100
- ICM R1,B'0010',SAVEWRK6+2 IMAGELIB START @VA10748 00908200
- S R1,F256 CONVERT TO OFFSET FROM CYL START @VA10748 00908300
- MVI SAVEWRK6+2,X'01' BACKUP IMAGELIB TO CYL START @VA10748 00908400
- ALR R1,R4 PLUS PAGE DISPLACEMENT @VA10748 00908500
- DR R0,R6 DIVIDE BY PAG/CYL @V60B9BA 00909000
- SLL R1,16 GET NUM OF CYLS IN POSITION @V60B9BA 00910000
- ALR R0,R1 ADD CYLS TO REMAINDER @V60B9BA 00911000
- AL R0,SAVEWRK6 ADD START TO DISP @V60B9BA 00912000
- ST R0,SAVEWRK7 SAVE IT FOR LATER @V60B9BA 00913000
- L R4,RSPRPAGE TARGET ADDR FOR 1ST SECTION @V60B9BA 00914000
- L R1,SAVEWRK3 VIRT SYSTEM PAGE @V60B9BA 00915000
- CALL DMKRPAGT,PARM=BRING+SYSTEM BRING IT IN @V60B9BA 00916000
- BNZR R3 PAGING ERROR - RETURN @V60B9BA 00917000
- LR R1,R2 HOLD REAL ADDR FOR WORK @V60B9BA 00918000
- ALR R2,R5 ADD DISP TO GET START @V60B9BA 00919000
- CLC 0(4,R2),SAVEWRK5 NAMES MATCH ? @V60B9BA 00920000
- BNER R3 ERROR RETURN IF NOT @V60B9BA 00921000
- AL R1,F4096 GET LENGTH OF FIRST SECTION @V60B9BA 00922000
- SLR R1,R2 ... OF THE MEMBER TO MOVE @V60B9BA 00923000
- L R0,RSPRPAGE TARGET ADDRESS (SECT 1) @V60B9BA 00924000
- LR R4,R2 SOURCE ADDRESS (SECT 1) @V60B9BA 00925000
- LR R5,R1 SOURCE LENGTH @V60B9BA 00926000
- LR R2,R1 SAVE THE MVCL LENGTH @V60B9BA 00927000
- MVCL R0,R4 DO THE MOVE FOR SECT 1 @V60B9BA 00928000
- C R2,SAVEWRK8 HAVE WE FINISHED? @V60B9BA 00929000
- BNL MEMEXIT XFER IF SO @V60B9BA 00930000
- SPACE 00931000
- * SET UP TO MOVE THE SECOND SECTION 00932000
- SPACE 00933000
- S R2,SAVEWRK8 NEGATIVE OF REMAINING COUNT @V60B9BA 00934000
- LCR R2,R2 MAKE IT POSITIVE @V60B9BA 00935000
- ST R2,SAVEWRK8 SAVE IT @V60B9BA 00936000
- LR R4,R0 SAVE THE NEW TARGET ADDRESS @V60B9BA 00937000
- L R0,SAVEWRK7 CURRENT CCPD @V60B9BA 00938000
- AL R0,F256 BUMP TO NEXT PAGE @V60B9BA 00939000
- LR R1,R0 TO R1 FOR WORK @V60B9BA 00940000
- N R1,=X'0000FF00' ISOLATE PAGE NUMBER @V60B9BA 00941000
- CR R1,R6 REACHED MAX ? @V60B9BA 00942000
- BNH MEMLD11 XFER IF NOT @V60B9BA 00943000
- AL R0,=X'00010000' BUMP TO NEXT CYLINDER @V60B9BA 00944000
- ICM R0,B'0010',F1+3 PAGE 1 @V60B9BA 00945000
- MEMLD11 ST R0,SAVEWRK7 SAVE CURRENT CCPD @V60B9BA 00946000
- L R1,SAVEWRK3 VIRTUAL ADDR OF SYSTEM PAGE @V60B9BA 00947000
- CALL DMKRPAGT,PARM=BRING+SYSTEM BRING IT IN @V60B9BA 00948000
- BNZR R3 PAGING ERROR - RETURN @V60B9BA 00949000
- LA R1,4095(R4) GET COUNT FOR SECTION 2 @V60B9BA 00950000
- N R1,XPAGNUM ROUND DOWN TO A PAGE @V60B9BA 00951000
- SLR R1,R4 GET BYTE COUNT @V60B9BA 00952000
- LR R0,R4 TARGET ADDRESS @V60B9BA 00953000
- LR R5,R1 SOURCE LENGTH @V60B9BA 00954000
- LR R4,R2 SOURCE ADDRESS @V60B9BA 00955000
- LR R2,R1 SAVE MOVE LENGTH @V60B9BA 00956000
- MVCL R0,R4 DO THE MOVE FOR SECTION 2 @V60B9BA 00957000
- C R2,SAVEWRK8 HAVE WE FINISHED ? @V60B9BA 00958000
- BNL MEMEXIT RETURN IF SO @V60B9BA 00959000
- SPACE 00960000
- * SET UP TO MOVE THE THIRD SECTION 00961000
- SPACE 00962000
- S R2,SAVEWRK8 GET NEGATIVE OF BYTES LEFT @V60B9BA 00963000
- LCR R2,R2 MAKE IT POSITIVE @V60B9BA 00964000
- ST R2,SAVEWRK8 SAVE IT FOR LATER @V60B9BA 00965000
- LR R1,R4 GET NEXT ADDRESS @VA09470 00966050
- AL R1,F4096 CALC MOVE LENGTH @VA09470 00966100
- N R1,XPAGNUM ... FOR SECTION 3 @V60B9BA 00967000
- SLR R1,R4 THIS IS THE SOURCE LENGTH @V60B9BA 00968000
- LR R5,R1 SOURCE LGHTH (ADDR SET UP) @V60B9BA 00969000
- L R0,RSPRPAG2 TARGET FOR SECTION 3 @V60B9BA 00970000
- LR R2,R1 SAVE THE MOVE LENGTH @V60B9BA 00971000
- MVCL R0,R4 MOVE DATA FOR SECTION 3 @V60B9BA 00972000
- C R2,SAVEWRK8 FINISHED ? @V60B9BA 00973000
- BNL MEMEXIT XFER IF SO @V60B9BA 00974000
- SPACE 00975000
- * THIS IS A LONG MEMEBER. MOVE THE LAST SECTION 00976000
- SPACE 00977000
- S R2,SAVEWRK8 FINAL BYTE COUNT TO @V60B9BA 00978000
- LCR R2,R2 .. MOVE IS NOW CALCULATED @V60B9BA 00979000
- ST R2,SAVEWRK8 .. AND SAVED @V60B9BA 00980000
- LR R4,R0 NEW TARGET ADDRESS @V60B9BA 00981000
- L R0,SAVEWRK7 CURRENT CCPD @V60B9BA 00982000
- AL R0,F256 BUMP TO NEXT PAGE @V60B9BA 00983000
- LR R1,R0 TO R1 FOR WORK @V60B9BA 00984000
- N R1,=X'0000FF00' ISOLATE PAGE NUMBER @V60B9BA 00985000
- CR R1,R6 REACHED MAXIMUM ? @V60B9BA 00986000
- BNH MEMLD12 XFER IF NOT @V60B9BA 00987000
- AL R0,=X'00010000' BUMP TO NEXT CYLINDER @V60B9BA 00988000
- ICM R0,B'0010',F1+3 PAGE 1 @V60B9BA 00989000
- MEMLD12 ST R0,SAVEWRK7 SAVE CURRENT CCPD @V60B9BA 00990000
- L R1,SAVEWRK3 VIRTUAL ADDR OF SYSTEM PAGE @V60B9BA 00991000
- CALL DMKRPAGT,PARM=BRING+SYSTEM BRING IT IN @V60B9BA 00992000
- BNZR R3 PAGING ERROR - RETURN @V60B9BA 00993000
- L R1,SAVEWRK8 TARGET LENGTH @V60B9BA 00994000
- LR R5,R1 SOURCE LENGTH @V60B9BA 00995000
- LR R0,R4 TARGET ADDRESS @V60B9BA 00996000
- LR R4,R2 SOURCE ADDRESS @V60B9BA 00997000
- MVCL R0,R4 MOVE DATA FOR FINAL SECTION @V60B9BA 00998000
- MEMEXIT TM *,0 SET ZERO CONDITION CODE @V60B9BA 00999000
- BR R3 AND RETURN @V60B9BA 01000000
- EJECT 01001000
- * CONSTANT DATA AREA 01002000
- SPACE 01003000
- EOTCCW CCW X'07',*-*,CC+SILI,1 END OF TRANSMISSION @V60B9BA 01004000
- LOADSNS CCW X'04',*-*,SILI+SKIP,1 DUMMY SENSE CCW @V60B9BA 01005000
- SPACE 01006000
- MKFMCCW CCW X'8B',*-*,CC+SILI,1 SKIP TO CHANNEL 1 @V60B9BA 01007000
- CCW X'17',*-*,CC+SILI,1 MARK FORM CCW @V60B9BA 01008000
- CCW X'8B',*-*,CC+SILI,1 SKIP TO CHANNEL 1 @V60B9BA 01009000
- CCW X'04',*-*,SILI+SKIP,1 DUMMY SENSE @V60B9BA 01010000
- SPACE 01011000
- CLRCCW CCW X'87',*-*,CC+SILI,1 CLEAR PRINTER CCW @V60B9BA 01012000
- LDWCGCCW CCW X'53',CATFINAL-CATSECT,CC+SILI,4 LOAD WCGM CCW @V60B9BA 01013000
- SELTTCCW CCW X'47',*-*,CC+SILI,1 SELECT TRANS TABLE 0 @V60B9BA 01014000
- LTTCCW CCW X'83',CATTABLE-CATSECT,CC+SILI,256 LOAD TR TAB @V60B9BA 01015000
- LGMCCW CCW X'25',*-*,CC+SILI+IDA,0 LOAD GRAPHIC MOD @V60B9BA 01016000
- LCMCCW CCW X'35',*-*,CC+SILI+IDA,0 LOAD COPY MOD @V60B9BA 01017000
- LDFCBCCW CCW X'63',8,CC+SILI,0 LOAD FCB CCS @V60B9BA 01018000
- LDCPYCCW CCW X'23',*-*,CC+SILI,1 LOAD COPY NUMBER @V60B9BA 01019000
- LFOSCCCW CCW X'43',*-*,CC+SILI,0 LOAD FOSC CCW @V60B9BA 01020000
- BLKDATCK CCW X'73',*-*,CC+SILI,1 BLOCK DATA CHECK @VA09294 01020100
- SPACE 01021000
- NULLMOD DC X'404040400000000700010001010140' NULL COPY MOD @V60B9BA 01022000
- SPACE 2 01023000
- * INCHES FORMS TYPE 01024000
- LINESIZE DC AL1(6) 3 ISO @V60B9BA 01025000
- DC AL1(7) 3 & HALF COMMON USE (USA, CANADA) @V60B9BA 01026000
- DC AL1(8) 4 ISO @V60B9BA 01027000
- DC AL1(11) 5 & HALF COMMON USE (USA, CANADA) @V60B9BA 01028000
- DC AL1(12) 6 ISO @V60B9BA 01029000
- DC AL1(14) 7 COMMON USE (USA, CANADA) @V60B9BA 01030000
- DC AL1(16) 8 ISO @V60B9BA 01031000
- DC AL1(17) 8 & HALF COMMON USE (USA, CANADA) @V60B9BA 01032000
- DC AL1(20) 10 ISO @V60B9BA 01033000
- DC AL1(22) 11 COMMON USE (USA, CANADA) @V60B9BA 01034000
- DC AL1(24) 12 ISO @V60B9BA 01035000
- SPACE 4 01036000
- HLDAREA DSECT 01037000
- HLDCHARS DS CL4 CHAR ARR TBL TO LOAD @V60B9BA 01038000
- HLDGCM1 DS CL4 GRAPHIC MOD 1 @V60B9BA 01039000
- HLDGCM2 DS CL4 GRAPHIC MOD 2 @V60B9BA 01040000
- HLDGCM3 DS CL4 GRAPHIC MOD 3 @V60B9BA 01041000
- HLDGCM4 DS CL4 GRAPHIC MOD 4 @V60B9BA 01042000
- HLDMDFY DS CL4 COPY MODIFICATION @V60B9BA 01043000
- HLDFCB DS CL4 FCB NAME @V60B9BA 01044000
- HLDSTCPY DS 1X STARTING COPY NUMBER @V60B9BA 01045000
- HLDFLSHC DS 1X FLASH COUNT @V60B9BA 01046000
- HLDCPY DS 1X NUMBER OF COPIES TO PRINT @V60B9BA 01047000
- HLDFLAG DS 1X COPY OF SPFLAG1 @V60B9BA 01048000
- HLDCCW1 DS 1D 3800 SETUP CCW NUMBER 1 @V60B9BA 01049000
- HLDCCW2 DS 1D 3800 SETUP CCW NUMBER 2 @V60B9BA 01050000
- HLDCCW3 DS 1D 3800 SETUP CCW NUMBER 3 @V60B9BA 01051000
- HLDCCW4 DS 1D 3800 SETUP CCW NUMBER 4 @V60B9BA 01052000
- HLDCCW5 DS 1D 3800 SETUP CCW NUMBER 5 @V60B9BA 01053000
- HLDCCW6 DS 1D 3800 SETUP CCW NUMBER 6 @V60B9BA 01054000
- HLDCCW7 DS 1D 3800 SETUP CCW NUMBER 7 @V60B9BA 01055000
- HLDCCW8 DS 1D 3800 SETUP CCW NUMBER 8 @V60B9BA 01056000
- HLDSIZE EQU (*-HLDAREA)/8 SIZE IN DOUBLEWORDS @V60B9BA 01057000
- SPACE 4 01058000
- PDEBLOK DSECT , IMAGELIB DIRECTORY ENTRY @V60B9BA 01059000
- PDENAME DS CL8 MEMBER NAME @V60B9BA 01060000
- PDEDISP DS 1F RBA OF START OF MEMBER @V60B9BA 01061000
- PDELGTH DS 1F LENGTH OF MEMBER IN BYTES @V60B9BA 01062000
- ORG PDENAME FIRST DUMMY ENTRY @V60B9BA 01063000
- PDEIMAG DS CL8 NAMED SYSTEM NAME @V60B9BA 01064000
- PDEDIRLN DS 1F LENGTH OF DIRECTORY IN BYTES@V60B9BA 01065000
- PDENUM DS 1F NUMBER OF MEMBERS @V60B9BA 01066000
- PDESIZE EQU *-PDEBLOK SIZE OF ENTRY IN BYTES @V60B9BA 01067000
- SPACE 3 01068000
- CATSECT DSECT , CHARACTER ARRANGEMENT TABLE @V60B9BA 01069000
- CATNAME DS CL4 NAME OF THIS CAT @V60B9BA 01070000
- DS XL2 RESERVED @V60B9BA 01071000
- CATLEN DS 1H LENGTH IN BYTES OF REMAINDER@V60B9BA 01072000
- CATTABLE DS XL256 TRANSLATE TABLE @V60B9BA 01073000
- CATWCGM DS 4XL2 WCGM'S AND THEIR POSITIONS @V60B9BA 01074000
- CATGRAF DS 4CL4 NAMES OF THE GRAPHIC MODS @V60B9BA 01075000
- CATSIZE EQU *-CATSECT LENGTH OF MODULE IN BYTES @V60B9BA 01076000
- DS 0D WORK AREA IN BUFFER @V60B9BA 01077000
- CATFINAL DS 4X FINAL DATA FOR LOAD WCGM @V60B9BA 01078000
- SPACE 3 01079000
- COPY VMBLOK @V60B9BA 01080000
- COPY SAVE @V60B9BA 01081000
- COPY SPOOL @V60B9BA 01082000
- COPY RBLOKS @V60B9BA 01083000
- COPY IOBLOKS @V60B9BA 01084000
- COPY NPRTBL @V60B9BA 01085000
- COPY EQU @V60B9BA 01086000
- COPY DEVTYPES @V60B9BA 01087000
- PSA , @V60B9BA 01088000
- END 01089000
ibm/vm370-lib/cp/dmktcs.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator