ibm:vm370-lib:cp:dmkcsb.assemble_src
Table of Contents
DMKCSB Source
References
- Fixes Applied : 2
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [R11542DK]
Source Listing
- DMKCSB.ASSEMBLE.txt
- CSB TITLE 'DMKCSB (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 VALIDATE SEQUENCING OF INPUT @V386298 00002000
- *. 00003000
- * MODULE NAME - 00004000
- * 00005000
- * DMKCSB 00006000
- * 00007000
- * FUNCTION - 00008000
- * 00009000
- * DMKCSB CONTAINS THE SPOOLING COMMANDS USED TO CONTROL THE REAL 00010000
- * SPOOLING UNIT RECORD DEVICES ATTACHED TO THE SYSTEM. THE FUNC- 00011000
- * TION OF EACH COMMAND IS DESCRIBED SEPARATELY 00012000
- * 00013000
- * ATTRIBUTES - 00014000
- * 00015000
- * REENTRANT, PAGEABLE, CALLED VIA SVC 00016000
- * 00017000
- * ENTRY POINTS - 00018000
- * 00019000
- * DMKCSBLD - LOAD REAL UCS OR FCB BUFFER 00020000
- * 00021000
- * NORMAL - 00022000
- * GPR2 = 0 00023000
- * SOME COMMANDS WRITE A VERIFYING MESSAGE TO THE OPERA- 00024000
- * TOR; THESE MESSAGES ARE DESCRIBED WITH THE COMMANDS 00025000
- * THAT ISSUE THEM 00026000
- * 00027000
- * ERROR - 00028000
- * GPR2 = CONTAINS THE BINARY ERROR MESSAGE NUMBER 00029000
- * - EITHER AN OPTION IS ILLEGAL, OR SOME CONDITION 00030000
- * EXISTS THAT MAKES IT IMPOSSIBLE TO EXECUTE THE COMMAND 00031000
- * A MESSAGE IS PRINTED TO DESCRIBE THE ERROR; THE ERROR 00032000
- * MESSAGES THAT MAY OCCUR ARE LISTED WITH EACH COMMAND 00033000
- * 00034000
- * CALLS TO OTHER ROUTINES - 00035000
- * 00036000
- * DMKSCNRU - TO LOCATE THE RDEVBLOK FOR A SPOOLING DEVICE 00037000
- * DMKSCNFD - TO SCAN THE COMMAND LINE BUFFER FOR OPTIONS 00038000
- * BUFFER LOAD IMAGES 00039000
- * DMKPTRUL - TO UNLOCK THE BUFFER PAGE 00040000
- * DMKIOSQR - TO INITIATE THE I/O FOR BUFFER LOADING 00041000
- * DMKDSPCH - EXIT VIA GOTO TO WAIT FOR INTERRUPT FROM I/O 00042000
- * DMKSCNVU - LOCATE VIRTUAL DEVICE BLOCKS 00043000
- * DMKFREE - TO OBTAIN FREE STORAGE FOR MESSAGE BUFFERS AND 00044000
- * IOBLOKS 00045000
- * DMKFRET - TO RETURN USED BLOKS TO FREE STORAGE 00046000
- * DMKQCNWT - TO WRITE ERROR AND VERIFICATION MESSAGES 00047000
- * DMKCVTHB - TO CONVERT HEX OPTIONS TO BINARY ADDRESSES 00048000
- * DMKCVTDB - TO CONVERT DECIMAL TO BINARY 00049000
- * DMKERMSG - TO WRITE ERROR MESSAGES 00050000
- * 00051000
- * EXTERNAL REFERENCES - 00052000
- * 00053000
- * DMKFCBLD - VIRTUAL ADDRESS OF FCB LOAD DATA 00054000
- * DMKUCSLD - VIRTUAL ADDRESS OF UCS LOAD DATA (1403) 00055000
- * DMKUCBLD - VIRTUAL ADDRESS OF UCS LOAD DATA (3211) 00056000
- * DMKUCCLD - VIRTUAL ADDRESS OF UCS LOAD DATA (3203) 00057000
- * 00058000
- * TABLES / WORKAREAS - 00059000
- * 00060000
- * SAVEWRK2 - VIRTUAL ADDRESS OF UCB OR FCB MODULE 00061000
- * 00062000
- * REGISTER USAGE - 00063000
- * 00064000
- * ALL SUBROUTINES IN THE MODULE CONFORM GENERALLY TO THIS USAGE 00065000
- * ANY INDIVIDUAL DIFFERENCES OR EXTENSIONS ARE LISTED WITH THE 00066000
- * COMMAND DESCRIPTION 00067000
- * 00068000
- * GPR0 = OPTION LENGTH - RETURNED FROM DMKSCNFD 00069000
- * GPR1 = OPTION ADDRESS - RETURNED FROM DMKSCNFD 00070000
- * GPR2 = SCRATCH 00071000
- * GPR3 = LENGTH FIELD FOR EXECUTED MVC'S AND TRT'S 00072000
- * GPR4 = INTERNAL SUBROUTINE LINKAGE 00073000
- * GPR6 = SCRATCH 00074000
- * GPR7 = SCRATCH 00075000
- * GPR8 = RDEVBLOK BASE 00076000
- * GPR9 = RSPLCTL BASE 00077000
- * GPR10 = IOBLOK BASE 00078000
- * GPR11 = VMBLOK BASE FOR SYSVMBK 00079000
- * GPR12 = DMKCSB BASE 00080000
- * GPR13 = SAVEAREA BASE 00081000
- * GPR14 = EXTERNAL LINKAGE 00082000
- * GPR15 = EXTERNAL LINKAGE 00083000
- * 00084000
- * NOTES - NONE 00085000
- * 00086000
- * OPERATION - 00087000
- * 00088000
- * ALL COMMAND PROCESSORS ARE ENTERED VIA A CALL FROM DMKCFM; THE 00089000
- * THE FUNCTION, FORMAT AND OPERATION OF EACH COMMAND ARE DESCRI- 00090000
- * BED IN THE FOLLOWING SECTIONS 00091000
- *. 00092000
- EJECT 00093000
- COPY OPTIONS @V386298 00094000
- COPY LOCAL OPTIONS @V386298 00095000
- SPACE 3 00096000
- DMKCSB CSECT @V386298 00097000
- SPACE 3 00098000
- EXTRN DMKCVTHB,DMKSCNVU,DMKSCNRU,DMKUCCLD @V386298 00099000
- EXTRN DMKIOSQR,DMKPTRUL @V386298 00100000
- EXTRN DMKSCNFD,DMKUCSLD,DMKFCBLD,DMKUCBLD @V386298 00101000
- EXTRN DMKCVTDB,DMKERMSG @V386298 00102000
- SPACE 3 00103000
- USING PSA,R0 @V386298 00104000
- USING VMBLOK,R11 @V386298 00105000
- USING SAVEAREA,R13 @V386298 00106000
- EJECT 00107000
- *. 00108000
- * SUBROUTINE NAME - 00109000
- * 00110000
- * DMKCSBLD 00111000
- * 00112000
- * FUNCTION - 00113000
- * 00114000
- * TO LOAD THE UCS BUFFER ON A 1403, 3211, OR 3203, OR TO 00115000
- * LOAD THE FCB ON A 3211 OR A 3203 00116000
- * 00117000
- * COMMAND LINE FORMAT - 00118000
- * 00119000
- * +---------+-----------------------------+ 00120000
- * | LOADBUF | RADDR UCS NAME <FOLD> <VER> | 00121000
- * | LOADBUF | RADDR FCB NAME <INDEX <NN>> | 00122000
- * +---------+-----------------------------+ 00123000
- * 00124000
- * FOLD VER INDEX 00125000
- * F V I 00126000
- * 00127000
- * OPERATION - 00128000
- * 00129000
- * 1. BAL TO GETDEVIC TO LOCATE RDEVBLOK FOR PRINTER TO BE LOADED 00130000
- * 2. VERIFY THAT THE SPECIFIED DEVICE IS A NON-DEDICATED PRIN- 00131000
- * TER THAT HAS BEEN DRAINED AND IS NO LONGER BUSY 00132000
- * 3. CALL SCNFD TO LOCATE THE FCB OR UCS OPTION 00133000
- * 4. IF UCS IS SPECIFIED, VERIFY THAT THE SPECIFIED PRINTER HAS 00134000
- * THE APPROPRIATE FEATURE CODE 00135000
- * 5. IF FCB IS SPECIFIED, VERIFY THAT THE SPECIFIED PRINTER 00136000
- * IS A 3211 OR 3203 00137000
- * 6. POINT TO THE TABLE OF VALID BUFFER LOAD NAMES 00138000
- * 7. CALL DMKSCNFD TO LOCATE THE NAME OF THE BUFFER TO BE LOADED 00139000
- * AND LOCATE THE NAME IN THE APPROPRIATE TABLE 00140000
- * 8. LOAD THE VIRTUAL ADDRESS OF THE BUFFER AND CALL DMKPTRAN 00141000
- * VIA THE TRANS MACRO TO BRING IT INTO REAL MEMORY 00142000
- * 9. CALL DMKSCNFD TO LOCATE THE OPTIONS FOR THS LOAD 00143000
- * 10. LOAD THE APPROPRIATE BUFFER BY CONSTRUCTING AN IOBLOK 00144000
- * AND A CHANNEL PROGRAM AND CALLING DMKIOSQR 00145000
- * 11. IF THE REQUEST IS FOR A UCS LOAD WITH VER, VERIFY THE LOAD 00146000
- * BY PRINTING THE CONTENTS OF THE BUFFER ON THE PRINTER 00147000
- * 12. IF THE REQUEST IS FOR A FCB LOAD AND INDEX 00148000
- * IS SPECIFIED, LOAD THE FCB BUFFER WITH THE INDEX VALUE 00149000
- * 13. EXIT 00150000
- * 00151000
- * RESPONSE - 00152000
- * 00153000
- * NONE 00154000
- * 00155000
- * ERROR MESSAGES - 00156000
- * 00157000
- * DMKCSB003E INVALID OPTION - (OPTION) 00158000
- * DMKCSB006E INVALID DEVICE TYPE - (ADDR) 00159000
- * DMKCSB013E CONFLICTING OPTION - (OPTION) 00160000
- * DMKCSB021E RADDR MISSING OR INVALID 00161000
- * DMKCSB026E OPERAND MISSING OR INVALID 00162000
- * DMKCSB031E BUFFER MISSING OR INVALID 00163000
- * DMKCSB036E INDEX MISSING OR INVALID 00164000
- * DMKCSB040E DEV (ADDR) DOES NOT EXIST 00165000
- * DMKCSB043E BUFFER (NAME) DOES NOT EXIST 00166000
- * DMKCSB046E (TYPE) (RADDR) OFFLINE 00167000
- * DMKCSB140E (TYPE) (RADDR) ATTACHED TO (USERID) 00168000
- * DMKCSB142E (TYPE) (RADDR) NOT DRAINED 00169000
- * DMKCSB148E (TYPE) (RADDR) BUFFER (NAME) FAILED 00170000
- *. 00171000
- ID DC CL8'DMKCSB' MODULE NAME @V386298 00172000
- SPACE 00173000
- DMKCSBLD RELOC @V386298 00174000
- SPACE 00175000
- BAL R4,CLEAR CLEAR SAVEWRK1,2-9 @V386298 00176000
- SPACE 00177000
- * SAVEWRK1 FLAG BYTE 00178000
- * X'80' - UCS COMMAND 00179000
- * X'40' - FOLD OPTION 00180000
- * X'20' - VERIFY OPTION 00181000
- * X'10' - INDEX OPTION 00182000
- * X'08' - INDEX VALUE PRESENT 00183000
- * X'04' - FCB ADDRESS ONE 00184000
- * SAVEWRK1+1(1) - INDEX VALUE 00185000
- * SAVEWRK2 - DEVICE ADDRESS 00186000
- * SAVEWRK3 - VIRTUAL ADDRESS 00187000
- * SAVEWRK4 _ REAL PAGE ADDRESS OF BUFFER 00188000
- SPACE 00189000
- BAL R4,GETDEVIC LOCATE REAL DEVICE BLOK @V386298 00190000
- USING RDEVBLOK,R8 @V386298 00191000
- ST R1,SAVEWRK2 SAVE DEVICE ADDRESS @V386298 00192000
- TM RDEVTYPE,TYPPRT IS IT A PRINTER DEVICE ?? @V386298 00193000
- BZ MSG006E NO-- INVALID ADDRESS @V386298 00194000
- TM RDEVTYPE,TYP3211 IS IT A 3203/3211 PRINTER?? @V386298 00195000
- BO CKDRAIN YES @V386298 00196000
- TM RDEVFTR,FTRUCS UCS ?? @V386298 00197000
- BZ MSG006E NO-- INVALID ADDRESS @V386298 00198000
- CKDRAIN TM RDEVFLAG,RDEVDRAN IS THE PRINTER DRAINED ?? @V386298 00199000
- BZ MSG142E NO -- @V386298 00200000
- ICM R15,B'1111',RDEVSPL IS DEVICE ACTIVE ?? @V386298 00201000
- BNZ MSG142E YES -- DEVICE NOT DRAINED @V386298 00202000
- SPACE 2 00203000
- * CHECK NEXT ENTRY IN COMMAND LINE 00204000
- CALL DMKSCNFD @V386298 00205000
- BNZ MSG026E FCB OR UCS MISSING @V386298 00206000
- LR R14,R0 COUNT @V386298 00207000
- BCTR R14,0 -1 @V386298 00208000
- C R0,F3 COUNT OF 3 FOR FCB OR UCS ??@V386298 00209000
- BNE MSG003E NO INVALID OPTION @V386298 00210000
- EX R14,CLCFCB FCB ?? @V386298 00211000
- BE FCBTYPE YES-NOW CHEK FOR 3211/3203 @V386298 00212000
- OI SAVEWRK1,X'80' INDICATE UCS @V386298 00213000
- EX R14,CLCUCS UCS ?? @V386298 00214000
- BE BLOCKS YES - @V386298 00215000
- EX R14,CLCUCC UCC? @VA11542 00215200
- BE BLOCKS YES @VA11542 00215400
- B MSG003E INVALID OPTION @V386298 00216000
- SPACE 00217000
- FCBTYPE EQU * @V386298 00218000
- TM RDEVTYPE,TYP3211 IS IT A 3203/3211 PRINTER?? @V386298 00219000
- BNO MSG006E INVALID ADDRESS @V386298 00220000
- SPACE 00221000
- BLOCKS EQU * @V386298 00222000
- * BUILD IOBLOK 00223000
- SPACE 00224000
- USING IOBLOK,R10 @V386298 00225000
- LA R0,XIOBSIZE SIZE OF IOBLOK AND EXTENSION@V386298 00226000
- CALL DMKFREE GET STORAGE @V386298 00227000
- LR R10,R1 ADDRESSABILITY IOBLOK @V386298 00228000
- XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR IOBLOK @V386298 00229000
- ST R10,IOBLINK IOBLOK POINTS TO ITSELF @V386298 00230000
- * (= ORIGINAL COPY) 00231000
- SPACE 00232000
- * SET UP IOBLOK 00233000
- SPACE 00234000
- MVC IOBRADD,SAVEWRK2+2 MOVE IN REAL DEVICE ADDRESS @V386298 00235000
- LA R0,UCSCCWS POINT TO CHANNEL PROGRAM @V386298 00236000
- ST R0,IOBCAW AND SAVE IT @V386298 00237000
- ST R11,IOBUSER LOAD ADDRESS OF USER VMBLOK @V386298 00238000
- SPACE 00239000
- TM SAVEWRK1,X'80' UCS ?? @V386298 00240000
- BO UCSTYPE YES - @V386298 00241000
- MVC UCSCCWS(48),FCBCCW MOVE FCB CCWS TO UCS WORK @V386298 00242000
- * BLOK 00243000
- L R1,=A(DMKFCBLD) ADDRESS OF FCB LOAD BUFFER @V386298 00244000
- B TRANS GET BUFFER @V386298 00245000
- SPACE 00246000
- * PROCESS UCS 00247000
- SPACE 00248000
- UCSTYPE CLI RDEVTYPE,TYP3211 3211 PRINTER ?? @V386298 00249000
- BE MVC3211 YES GO MOVE CCWS @V386298 00250000
- CLI RDEVTYPE,TYP3203 IS IT A 3203 PRINTER?? @V386298 00251000
- BE MVC3203 YES GO MOVE CCWS @V386298 00252000
- MVC UCSCCWS,CCW1403 MOVE 1403 CCW TO UCSBLOK @V386298 00253000
- L R1,=A(DMKUCSLD) ADDRESS OF 1403 LOAD BUFFER @V386298 00254000
- B TRANS @V386298 00255000
- SPACE 00256000
- MVC3203 MVC UCSCCWS,CCW3203 MOVE 3203 CCWS TO UCSBLOK @V386298 00257000
- L R1,=A(DMKUCCLD) ADDR OF 3203 UCS LOAD BUFR @V386298 00258000
- B TRANS BOUNDARY CHECKING @V386298 00259000
- SPACE 1 00260000
- MVC3211 MVC UCSCCWS,CCW3211 MOVE 3211 CCWS TO UCSBLOK @V386298 00261000
- L R1,=A(DMKUCBLD) ADDRESS OF 3211 UCS LOAD BUF@V386298 00262000
- SPACE 00263000
- TRANS EQU * HERE FOR BOTH UCS AND FCB @V386298 00264000
- L R15,ASYSVM POINT TO SYSTEM VMBLOK,AND @V386298 00265000
- LCTL C1,C1,VMSEG-VMBLOK(R15) GET CORRECT SEGMENT TABL@V386298 00266000
- DC 0H'0',X'B1',AL.4(2,0),S(0(1)) LRA INSTRUCTION@V386298 00267000
- BC 7,NOTRES PAGE NOT RESIDENT,GO GET IT @V386298 00268000
- BAL R14,PAGERES CHECK IF PAGE IS CP RESIDENT@V386298 00269000
- BL MODRES YES -- MODULE RESIDENT @V386298 00270000
- NOTRES LA R2,(BRING+DEFER+LOCK+SYSTEM) SET UP PARM REG @V386298 00271000
- L R15,APTRAN ADDRESS OF TRANS ROUTINE @V386298 00272000
- SVC 8 @V386298 00273000
- SPACE 00274000
- USING UCSHDR,R2 @V386298 00275000
- MODRES ST R2,SAVEWRK4 SAVE REAL PAGE ADDRESS @V386298 00276000
- SPACE 00277000
- CALL DMKSCNFD GET NAME @V386298 00278000
- BNZ MSG031 NONE FOUND @V386298 00279000
- LR R6,R0 SAVE COUNT @V386298 00280000
- BCTR R6,R0 -1 FOR MOVE @V386298 00281000
- C R6,F3 LARGER THAN 4 ?? @V386298 00282000
- BH MSG031 YES - ERROR MSG031E @V386298 00283000
- EX R6,MVCNAME MOVE NAME TO SAVEWRK8 @V386298 00284000
- OC SAVEWRK8(4),BLANKS MAKE UPPER CASE @V386298 00285000
- CNTOK CLC HDRNAME(04),ZEROES LAST UCS LOAD HEADER @V386298 00286000
- BE MSG043 YES - ERROR MSG043E @V386298 00287000
- SPACE 00288000
- COMPARE CLC SAVEWRK8(4),HDRNAME IS THIS THE CORRECT LOAD ?? @V386298 00289000
- BE EQUAL YES @V386298 00290000
- AH R2,HDRNEXT POINT TO NEXT HEADER @V386298 00291000
- B CNTOK COMPARE NAME TO THIS HEADER @V386298 00292000
- SPACE 00293000
- EQUAL TM SAVEWRK1,X'80' IS THIS FCB TYPE ?? @V386298 00294000
- BO FOLDVER NO -- UCS TEST FOR FOLD @V386298 00295000
- LH R0,BUFLEN GET BUFFER LENGTH @V386298 00296000
- STH R0,FCBLOAD+6 STORE LENGTH IN CCW CNT FLD @V386298 00297000
- SPACE 00298000
- FOLDVER EQU * @V386298 00299000
- CALL DMKSCNFD SCAN FOR FOLD OR VERIFY @V386298 00300000
- * BE FOLD OR VER 00301000
- BNZ ADJADD NONE - @V386298 00302000
- LR R14,R0 COUNT @V386298 00303000
- BCTR R14,0 -1 @V386298 00304000
- TM SAVEWRK1,X'80' UCS OPTION ?? @V386298 00305000
- BZ INDEX NO -- FCB OPTION @V386298 00306000
- EX R14,CLCFOLD FOLD ?? @V386298 00307000
- BNE VER NO TEST VERIFY @V386298 00308000
- TM SAVEWRK1,X'40' FOLD OPTION SET ?? @V386298 00309000
- BO MSG013 YES -- CONFLICTING OPTION @V386298 00310000
- OI SAVEWRK1,X'40' SET FOLD OPTION PRESENT @V386298 00311000
- CLI UCSBBLOK,X'73' THIS COMMAND CODE WILL @V386298 00312000
- * PERFORM A BLOCK DATA CHECK 00313000
- * ON EITHER A 3203 OR A 3211 00314000
- BNE FOLD1403 NO @V386298 00315000
- MVI UCSBFOLD,X'43' CHANGE NO-FOLD TO FOLDING @V386298 00316000
- * FOR 3203/3211 PRINTERS 00317000
- B FOLDVER CHECK FOR VER ON CMD LINE @V386298 00318000
- SPACE 00319000
- FOLD1403 MVI UCSLOAD,X'F3' CHANGE NO-FOLD TO FOLDING @V386298 00320000
- B FOLDVER @V386298 00321000
- SPACE 00322000
- INDEX EX R14,CLCINDEX INDEX OPTION ?? @V386298 00323000
- BNE MSG003 NO -- ERROR INVALID OPTION @V386298 00324000
- CLI RDEVTYPE,TYP3203 @V386298 00325000
- BE MSG003 YES--NO INDEX OTION @V386298 00326000
- XI SAVEWRK1,X'10' INDEX OPTION PROCESSED ? @V386298 00327000
- BZ MSG003 YES-- INVALID OPTION @V386298 00328000
- CALL DMKSCNFD GET INDEX VALUE @V386298 00329000
- BNZ ADJADD NONE -- USE DEFAULT @V386298 00330000
- C R0,F2 LENGTH OF INDEX > 2 @V386298 00331000
- BH MSG036 YES - INVALID INDEX @V386298 00332000
- CALL DMKCVTDB CONVERT TO BINARY @V386298 00333000
- BNZ MSG036 INVALID INDEX @V386298 00334000
- C R1,=F'31' VALUE GREATER THAN 31 ? @V386298 00335000
- BH MSG036 YES -- @V386298 00336000
- C R1,F1 VALUE LESS THAN ONE ? @V386298 00337000
- BL MSG036 YES -- INVALID INDEX VALUE @V386298 00338000
- STC R1,SAVEWRK1+1 SAVE INDEX VALUE @V386298 00339000
- OI SAVEWRK1+1,128 SET INDEX FLAG @V386298 00340000
- OI SAVEWRK1,X'08' INDICATE INDEX VALUE PRESENT@V386298 00341000
- B FOLDVER CHECK FOR NEXT OPTION @V386298 00342000
- SPACE 00343000
- VER EX R14,CLCVER VERIFY ?? @V386298 00344000
- BNE MSG003 NO - INVALID OPTION @V386298 00345000
- SPACE 00346000
- SPACE 00347000
- * GET VERIFY CCWS UCS LOAD BUFFER IF ANY 00348000
- SPACE 00349000
- VEROK TM SAVEWRK1,X'20' VERIFY OPTION SET @V386298 00350000
- BO MSG013 YES -- CONFLICTING OPTION @V386298 00351000
- OI SAVEWRK1,X'20' SET VERIFY OPTION PRESENT @V386298 00352000
- OI UCSCCWS+36,CC TURN ON COMMAND CHAINING @VA07899 00352500
- LH R5,CCWLEN GET LENGTH OF CCWS @V386298 00353000
- LTR R5,R5 CCWS PRESENT @V386298 00354000
- BZ FOLDVER NO--GO CK FOLD IN CASE VER @V386298 00355000
- * WAS FIRST 00356000
- LH R1,CCWDISP GET DISP FOR VERIFY CCWS @V386298 00357000
- ALR R1,R2 POINT TO VERIFY CCWS @V386298 00358000
- CH R5,=H'96' CHECK FOR 12 MAX CCWS @V386298 00359000
- BH FOLDVER OVER MAX FORGET USE DEFAULT @V386298 00360000
- MVC UCSBVER+24(56),SENSECCW OVERLAY DEFAULT CCWS @V386298 00361000
- BCTR R5,R0 -1 SET UP FOR MOVE @V386298 00362000
- EX R5,VERCCW MOVE VER CCW TO UCSBLOK @V386298 00363000
- B FOLDVER CK FOLD IN CASE ORDER WAS @V386298 00364000
- * VER FOLD 00365000
- SPACE 00366000
- ADJADD EQU * ADJUST CCW DATA ADDRESS TO REAL ADDRESS @V386298 00367000
- LA R5,17 LOOP COUNTER (NUMBER OF CCWS@V386298 00368000
- LA R15,HDRSIZE(,R2) ADDRESS OF FIRST DATA BYTE @V386298 00369000
- * UCS) 00370000
- LA R1,UCSCCWS POINT TO CCW LIST @V386298 00371000
- ADJLOOP L R0,0(R1) LOAD CCW @V386298 00372000
- ALR R0,R15 UPDATE DATA ADDR TO ACTUAL @V386298 00373000
- ST R0,0(R1) STORE BACK IN CCW @V386298 00374000
- LA R1,8(R1) POINT TO NEXT CCW @V386298 00375000
- BCT R5,ADJLOOP PROCESS ALL CCW @V386298 00376000
- TM SAVEWRK1,X'20' VERIFY ?? @V386298 00377000
- BZ CKINDEX NO -- CHECK FOR INDEX OPTION@V386298 00378000
- MVC UCSBNAME(8),CCWNAME MOVE IN PRINT NAME CCW @V386298 00379000
- STCM R2,B'0111',UCSBNAME+1 STORE ADDR OF BUFFER NAME @V386298 00380000
- CKINDEX TM SAVEWRK1,X'10' INDEX OPTION REQUESTED ? @V386298 00381000
- BZ CKFCB NO -- CHECK FOR FCB OPTION @V386298 00382000
- SR R1,R1 GET INDEX VALUE @V386298 00383000
- IC R1,SAVEWRK1+1 .. @V386298 00384000
- TM SAVEWRK1,X'08' INDEX VALUE PRESENT ?? @V386298 00385000
- BO *+8 YES - @V386298 00386000
- IC R1,FCBPNDEX GET DEFAULT INDEX FROM DMKFCB@V386298 00387000
- LTR R1,R1 INDEX VALUE PRESENT ? @V386298 00388000
- BZ MSG036 NO -- INDEX MISSING @V386298 00389000
- STC R1,FCBTNDEX SET UP NEW INDEX VALUE @V386298 00390000
- LM R14,R15,FCBLOAD GET FCB LOAD CCW @V386298 00391000
- BCTR R14,0 ADJUST ADDR TO PICK UP INDEX@V386298 00392000
- AL R15,F1 ADD ONE TO CCW COUNT @V386298 00393000
- STM R14,R15,FCBLOAD AND RETURN TO IOB @V386298 00394000
- CKFCB TM SAVEWRK1,X'80' FCB ?? @V386298 00395000
- BO QUERIO NO -- BRANCH @V386298 00396000
- LA R1,FCB07 ADDRESS OF 07 CCW @V386298 00397000
- ST R1,IOBCAW AND STORE IN IOB @V386298 00398000
- LA R1,FCBADD DATA FIELD ADDRESS @V386298 00399000
- STCM R1,B'0111',FCB06+1 AND STORE IN 06 CCW @V386298 00400000
- QUERIO LA R1,UCSIRA GET RETURN ADDRESS @V386298 00401000
- ST R1,IOBIRA AND SAVE IN IOBLOK @V386298 00402000
- ST R8,IOBMISC2 SAVE RDEVBLOK ADDR @V386298 00403000
- STM R12,R13,UCSREGS SAVE REGISTERS R12 AND R13 @V386298 00404000
- CALL DMKIOSQR AND GO DO SIO @V386298 00405000
- CSBDSP GOTO DMKDSPCH WAIT FOR INTERRUPT @V386298 00406000
- SPACE 3 00407000
- UCSIRA EQU * HERE WHEN THE LOAD IS COMPLETE @V386298 00408000
- SPACE 00409000
- USING *,R12 @V386298 00410000
- LR R1,R10 MUST CHECK FOR COPY IOBLOK @V386298 00411000
- L R10,IOBLINK LOAD ADDRESS OF ORIGINAL @V386298 00412000
- L R8,IOBMISC2 RESTORE RDEVBLOK ADDR @V386298 00413000
- LM R12,R13,UCSREGS RESTORE REGISTERS @V386298 00414000
- USING DMKCSB,R12 @V386298 00415000
- CR R1,R10 COPY IOBLOK PRESENT ? @V386298 00416000
- BE UCSSTAT NO - TEST STATUS @V386298 00417000
- OI IOBSTAT,IOBFATAL INDICATE FATAL ERROR @V386298 00418000
- LA R0,IOBSIZE SIZE OF COPIED IOBLOK @V386298 00419000
- CALL DMKFRET RETURN STORAGE @V386298 00420000
- B CSBDSP WAIT FOR DEVICE END INTERRUPT @V386298 00421000
- UCSSTAT NI IOBFLAG,X'FF'-IOBRSTRT RESET RESTART FLAG @V386298 00422000
- TM IOBSTAT,IOBFATAL FATAL ERROR LOADING BUFFER ?@V386298 00423000
- BO MSG148 YES - MSG DMKCSB148E @V386298 00424000
- TSTUE TM IOBCSW+4,UE UNIT EXCEPION (CH12) @V386298 00425000
- BO UCSUE YES -- @V386298 00426000
- TM SAVEWRK1,X'80' FCB COMMAND ? @V386298 00427000
- BO LOADEND NO -- UCS COMPLETE @V386298 00428000
- TM SAVEWRK1,X'04' FCB IMAGE LOADED ? @V386298 00429000
- BO LOADEND YES -- @V386298 00430000
- LA R1,FCB0B ADDRESS OF SPACE COMMAND @V386298 00431000
- ST R1,IOBCAW CHAINED TO 07 AND 06 @V386298 00432000
- CLI FCBADD,X'40' FCB REGISTER ADDRESS AT 01 @V386298 00433000
- BNE QUERIO NO -- SPACE AND TRY AGAIN @V386298 00434000
- OI SAVEWRK1,X'04' INDICATE FCB ADDRESS 01 @V386298 00435000
- LA R1,FCBLOAD ADDRESS OF FCB LOAD CCWS @V386298 00436000
- ST R1,IOBCAW SET UP IOBCAW @V386298 00437000
- B QUERIO AND LOAD FCB BUFFER @V386298 00438000
- LOADEND BAL R3,FRETIOB FRET IOB AND UNLOCK BUFFER @V386298 00439000
- B CSBMSG NORMAL EXIT FROM THIS ROUTINE @V386298 00440000
- SPACE 00441000
- UCSUE L R3,IOBCSW ADDRESS OF NEXT CCW @V386298 00442000
- LA R3,0(R3) CLEAR HIGH BYTE @V386298 00443000
- ST R3,IOBCAW AND STORE IN IOB @V386298 00444000
- B QUERIO CONTINUE @V386298 00445000
- SPACE 00446000
- FRETIOB STM R0,R1,SAVEWRK2 SAVE COUNT AND ADDRESS OF @V386298 00447000
- * INVALID OPTION IF ANY 00448000
- LR R1,R10 FREE THE IOBLOK @V386298 00449000
- LA R0,XIOBSIZE SIZE OF XIOBBLOK IN DOUBLE @V386298 00450000
- * WORDS 00451000
- CALL DMKFRET @V386298 00452000
- SPACE 00453000
- L R2,SAVEWRK4 GET REAL ADDRESS @V386298 00454000
- BAL R14,PAGERES CHECK IF PAGE IS RESIDENT @V386298 00455000
- BL FRETRET YES -- DO NOT UNLOCK @V386298 00456000
- CALL DMKPTRUL UNLOCK THE BUFFER PAGE @V386298 00457000
- FRETRET LM R0,R1,SAVEWRK2 RESTORE OPTION CNT AND ADDR @V386298 00458000
- BR R3 @V386298 00459000
- SPACE 3 00460000
- VERCCW MVC UCSBVER(0),0(R1) EXECUTED- MOVE VER CCWS TO @V386298 00461000
- * UCSBLOK 00462000
- EJECT 00463000
- *. 00464000
- * SUBROUTINE NAME - 00465000
- * DMKCSBVL 00466000
- * 00467000
- * FUNCTION - 00468000
- * 00469000
- * TO LOAD A VIRTUAL 3211 OR 3203 FORMS CONTROL BUFFER 00470000
- * FROM DMKFCB MODULE. 00471000
- * 00472000
- * COMMAND LINE FORMAT - 00473000
- * 00474000
- * +----------+-----------------------------+ 00475000
- * | LOADVFCB | VADDR FCB NAME <INDEX <NN>> | 00476000
- * | LOADVFCB | F I | 00477000
- * +----------+-----------------------------+ 00478000
- * 00479000
- * ATTRIBUTES - 00480000
- * 00481000
- * REENTRAN, PAGEABLE, CALLED VIA SVC 00482000
- * 00483000
- * ENTRY POINT - 00484000
- * 00485000
- * DMKCSBVL 00486000
- * 00487000
- * ENTRY CONDITIONS - 00488000
- * 00489000
- * GPR9 = ADDRESS OF COMMAND BUFFER 00490000
- * GPR11 = ADDRES OF USER'S VMBLOK 00491000
- * GPR12 = ADDRESS OF ENTRY POINT 00492000
- * GPR13 = ADDRESS OF STANDARD SAVE AREA 00493000
- * 00494000
- * EXIT CONDITIONS - 00495000
- * 00496000
- * NORMAL - 00497000
- * 00498000
- * GPR2 = 0 00499000
- * 00500000
- * ERROR - 00501000
- * 00502000
- * GPR2 = BINARY VALUE OF THE ERROR MESSAGE NUMBER 00503000
- * 00504000
- * TABLE / WORK ARES - 00505000
- * 00506000
- * 00507000
- * REGISTER USAGE - 00508000
- * 00509000
- * GPR3 = LINE VALUE 00510000
- * GPR4 = VFCBBLOK BASE 00511000
- * GPR5 = LENGTH 00512000
- * GPR9 = ADDRESS OF COMMAND BUFFER 00513000
- * GPR11 = ADDRESS OF USERS VMBLOK 00514000
- * GPR12 = BASE REGISTER 00515000
- * GPR13 = ADDRESS OF STANDARD SAVE AREA 00516000
- * 00517000
- * NOTES - 00518000
- * 00519000
- * EXAMPLE - 00520000
- * 00521000
- * LOADVFCB 00E FCB FCB1 00522000
- * 00523000
- * THE FOLLOWING IMAGE IS INCLUDED IN THE DMKFCB MODULE. 00524000
- * 00525000
- * NAME - FCB1 LENGTH 66 LINES - 6 LINES PER INCH 00526000
- * 00527000
- * LINE-CHANNEL,.. 1-1,3-2,5-3,7-4,9-5,11-6,13-7,15-8,19-10, 00528000
- * 21-11,23-12,64-9 00529000
- * 00530000
- * OPERATION - 00531000
- * 00532000
- * 1. CALL DMKSCNFD TO LOCATE VADDR: IF NONE, 00533000
- * EXIT GIVING MSG022E. 00534000
- * CALL DMKCVTHB TO CONVERT THE ADDRESS TO BINARY: 00535000
- * IF INVALID, EXIT GIVING MSG022E. 00536000
- * 2. CALL DMKSCNVU TO LOCATE VIRTUAL DEVICE BLOK: 00537000
- * IF NONE, EXIT GIVING MSG040E. IF NOT, 3211 OR 3203 00538000
- * PRINTER: EXIT GIVING MSG006E. 00539000
- * 3. IF VIRTUAL FORMS CONTROL BUFFER AVAILABLE: GO TO STEP 4. 00540000
- * CALL DMKFREE TO GET STORAGE FOR VIRTUAL FORMS CONTROL 00541000
- * BUFFER (VFCBBLOK) AND STORE ADDRESS IN VDEVFCBK 00542000
- * 4. CLEAR VIRTUAL FORMS CONTROL BUFFER TO BINARY ZEROES 00543000
- * 5. CALL DMKSCNFD TO LOCATE KEYWORD 'FCB': IF NONE, 00544000
- * EXIT GIVING MSG026E. 00545000
- * 6. CALL DMKSCNFD TO LOCATE NAME: IF NONE OR INVALID, 00546000
- * EXIT GIVING MSG031E. 00547000
- * 7. SEARCH THE BUFFER LOAD LIST FOR THE REQUESTED 00548000
- * BUFFER: IF NOT FOUND, EXIT GIVING MSG043E. 00549000
- * 8. CALL DMKSCNFD TO LOCATE INDEX OPTION; IF NONE, 00550000
- * GO TO STEP 10. IF INVALID EXIT GIVING MSG003E. 00551000
- * 9. CALL DMKSCNFD TO LOCATE INDEX VALUE; IF NONE, GO TO 00552000
- * STEP 10. IF INVALID, EXIT GIVING MSG036E. 00553000
- * 10. MOVE THE REQUESTED BUFFER TO VFCBBLOK, INCLUDING 00554000
- * THE INDEX VALUE IF SPECIFIED. 00555000
- * 00556000
- * RESPONSE - 00557000
- * 00558000
- * NONE 00559000
- * 00560000
- * ERROR MESSAGES - 00561000
- * 00562000
- * DMKCSB006E INVALID DEVICE TYPE - (ADDR) 00563000
- * DMKCSB022E VADDR MISSING OR INVALID 00564000
- * DMKCSB026E OPERAND MISSING OR INVALID 00565000
- * DMKCSB031E BUFFER MISSING OR INVALID 00566000
- * DMKCSB036E INDEX MISSING OR INVALID 00567000
- * DMKCSB040E DEV (ADDR) DOES NOT EXIST 00568000
- * DMKCSB043E BUFFER (NAME) DOES NOT EXIST 00569000
- * 00570000
- *. 00571000
- EJECT 00572000
- DMKCSBVL RELOC @V386298 00573000
- USING VFCBBLOK,R4 @V386298 00574000
- USING VDEVBLOK,R8 @V386298 00575000
- USING BUFFER,R9 @V386298 00576000
- USING UCSHDR,R5 @V386298 00577000
- SPACE 00578000
- BAL R4,CLEAR CLEAR SAVEWRK1, 2-9 @V386298 00579000
- CALL DMKSCNFD LACATE VADDR @V386298 00580000
- BNZ MSG022E MISSING VADDR @V386298 00581000
- SPACE 00582000
- C R0,F3 LENGTH GREATER THAN 3 ?? @V386298 00583000
- BH MSG022E YES -- INVALID DEVICE ADDR @V386298 00584000
- LR R14,R0 GET LENGTH @V386298 00585000
- BCTR R14,0 -1 @V386298 00586000
- EX R14,MVCADDR MOVE ADDRESS TO SAVEWRK8-9 @V386298 00587000
- CALL DMKCVTHB CONVERT ADDRESS TO BINARY @V386298 00588000
- BNZ MSG022E BAD ADDRESS @V386298 00589000
- SPACE 00590000
- CALL DMKSCNVU LOCATE VDEVBLOK @V386298 00591000
- BNZ MSG040E NONEXISTENT UNIT @V386298 00592000
- SPACE 00593000
- TM VDEVTYPE,TYP3211 IS IT A 3203/3211 PRINTER?? @V386298 00594000
- BNO MSG006E NO - MSG MSGCSB006E @V386298 00595000
- TM VDEVSTAT,VDEVDED VIRT DEV ATTACHED TO REAL @V386298 00596000
- * DEV?? 00597000
- BO MSG006E YES -- INVALID DEVICE TYPE @V386298 00598000
- SPACE 00599000
- ICM R4,B'1111',VDEVFCBK VFCBBLOK PRESENT ? @V386298 00600000
- BNZ INITFCB YES - CLEAR BLOK @V386298 00601000
- BNZ INITFCB YES - INITIAL @V386298 00602000
- LA R0,VFCBSIZE GET SIZE OF BLOK @V386298 00603000
- CALL DMKFREE GET STORAGE @V386298 00604000
- LR R4,R1 LOAD BASE FOR VFCBBLOK @V386298 00605000
- ST R4,VDEVFCBK SAVE ADDRESS @V386298 00606000
- SPACE 00607000
- INITFCB XC VFCBBLOK(VFCBSIZE*8),VFCBBLOK CLEAR BLOK @V386298 00608000
- MVI VFCBCNT+1,X'01' SET COUNT TO LINE 01 @V386298 00609000
- FCBSCAN CALL DMKSCNFD LOCATE KEYWORD FCB @V386298 00610000
- BNZ MSG026E KEYWORD FCB MISSING @V386298 00611000
- LR R14,R0 GET LENGTH @V386298 00612000
- BCTR R14,0 -1 @V386298 00613000
- EX R14,CLCFCB OPTION EQUAL FCB ?? @V386298 00614000
- BNE MSG003E INVALID OPTION @V386298 00615000
- SPACE 00616000
- CALL DMKSCNFD LOCATE BUFFER NAME @V386298 00617000
- BNZ MSG031E NAME MISSING @V386298 00618000
- C R0,F4 NAME LONGER THAN 4 BYTES ?? @V386298 00619000
- BH MSG031E NAME INVALID @V386298 00620000
- SPACE 00621000
- LR R14,R0 SAVE COUNT @V386298 00622000
- BCTR R14,0 -1 FOR MOVE @V386298 00623000
- EX R14,MVCNAME MOVE NAME TO SAVEWRK8 @V386298 00624000
- OC SAVEWRK8(4),BLANKS MAKE UPPER CASE @V386298 00625000
- SPACE 00626000
- L R1,=A(DMKFCBLD) ADDRESS OF BUFFER LOADS @V386298 00627000
- L R15,ASYSVM POINT TO SYSTEM VMBLOK, AND @V386298 00628000
- LCTL C1,C1,VMSEG-VMBLOK(R15) GET CORRECT SEGMENT TABL@V386298 00629000
- DC 0H'0',X'B1',AL.4(2,0),S(0(1)) LRA INSTRUCTION@V386298 00630000
- BC 7,NOTRES1 PAGE NOT RESIDENT, GO GET IT@V386298 00631000
- BAL R14,PAGERES CHECK IF PAGE IS CP RESIDENT@V386298 00632000
- BL FCBRES YES -- MODULE RESIDENT @V386298 00633000
- NOTRES1 LA R2,(BRING+DEFER+LOCK+SYSTEM) SET UP PARM REG @V386298 00634000
- L R15,APTRAN ADDRESS OF TRANS ROUTINE @V386298 00635000
- SVC 8 @V386298 00636000
- FCBRES LR R5,R2 SET UP WORK REGISTER @V386298 00637000
- FCBLOOP CLC SAVEWRK8(4),HDRNAME IS THIS THE RIGHT LOAD @V386298 00638000
- BE EQNAME YES - @V386298 00639000
- CLC HDRNAME(4),ZEROES LAST HEADER ?? @V386298 00640000
- BNE FCBNEXT NO -- @V386298 00641000
- LA R3,MSG043E SET RETURN FOR ERROR MESSAGE@V386298 00642000
- FCBERR STM R0,R1,SAVEWRK6 SAVE COUNT AND ADDRESS @V386298 00643000
- BAL R14,PAGERES CHECK IF PAGE IS RESIDENT @V386298 00644000
- BL FCBRET YES -- RESIDENT - DO NOT @V386298 00645000
- CALL DMKPTRUL UNLOCK BUFFER PAGE @V386298 00646000
- FCBRET LM R0,R1,SAVEWRK6 RESTORE COUNT AND ADDRESS @V386298 00647000
- BR R3 EXIT GIVING ERROR MSG @V386298 00648000
- SPACE 00649000
- FCBNEXT AH R5,HDRNEXT ADD DISP TO NEXT HEADER @V386298 00650000
- B FCBLOOP KEEP LOOKING @V386298 00651000
- SPACE 00652000
- EQNAME LH R3,BUFLEN GET LENGTH OF DATA @V386298 00653000
- BCTR R3,0 -1 FOR MOVE @V386298 00654000
- EX R3,FCBDATA MOVE BUFFER DATA TO VDEVFCBK@V386298 00655000
- CALL DMKSCNFD ANY MORE OPTIONS ? @V386298 00656000
- BNZ FCBEXIT NO -- CONT @V386298 00657000
- LR R14,R0 OPTION COUNT @V386298 00658000
- BCTR R14,0 -1 @V386298 00659000
- LA R3,MSG003E SET ERROR MSG RETURN @V386298 00660000
- EX R14,CLCINDEX INDEX OPTION ?? @V386298 00661000
- BNE FCBERR NO -- ERROR DMKCSB003E @V386298 00662000
- CLI VDEVTYPE,TYP3203 IS IT A 3203 PRINTER?? @V386298 00663000
- BE FCBERR YES--INDEX OPTION INVALID @V386298 00664000
- CALL DMKSCNFD LOCATE INDEX VALUE @V386298 00665000
- LA R3,MSG036E SET UP ERROR RETURN @V386298 00666000
- BZ INDEXCVT SOMETHING PRESENT @V386298 00667000
- CLI FCBPNDEX,X'00' DEFAULT VALUE PRESENT ? @V386298 00668000
- BE FCBERR NO -- @V386298 00669000
- MVC VFCBNDEX(1),FCBPNDEX MOVE IN DEFAULT VALUE @V386298 00670000
- B FCBEXIT @V386298 00671000
- SPACE 00672000
- INDEXCVT C R0,F2 VALUE LENGTH GREATER THAN 2 @V386298 00673000
- BH FCBERR YES -- @V386298 00674000
- CALL DMKCVTDB CONVERT TO BINARY @V386298 00675000
- BNZ FCBERR INVALID INDEX VALUE @V386298 00676000
- C R1,=F'31' GREATER THAN 31 ? @V386298 00677000
- BH FCBERR YES -- DMKCSB036E @V386298 00678000
- LTR R1,R1 LESS THAN 1 ? @V386298 00679000
- BZ FCBERR YES -- DMKCSB036E @V386298 00680000
- STC R1,VFCBNDEX STORE FOR VIRTUAL DEVICE @V386298 00681000
- LA R3,MSG003E ERROR RETURN @V386298 00682000
- CALL DMKSCNFD LOCATE NEXT OPTION @V386298 00683000
- BZ FCBERR INVALID OPTION @V386298 00684000
- FCBEXIT BAL R14,PAGERES CHECK IF PAGE IS RESIDENT @V386298 00685000
- BL CSBEXIT YES -- DO NOT UNLOCK @V386298 00686000
- CALL DMKPTRUL UNLOCK BUFFER @V386298 00687000
- B CSBEXIT ALL DONE EXIT @V386298 00688000
- SPACE 00689000
- * 00690000
- FCBDATA MVC VFCBLOAD(0),HDRSIZE(R5) MOVE DATA TO VDEVFCBK @V386298 00691000
- MVCNAME MVC SAVEWRK8(0),0(R1) MOVE NAME FROM SCAN LINE @V386298 00692000
- SPACE 00693000
- EJECT 00694000
- *. 00695000
- * OPERATION OF GETDEVIC SUBROUTINE - 00696000
- * 00697000
- * 1. CALL DMKSCNFD TO LOCATE THE DEVICE ADDRESS FIELD 00698000
- * 2. IF NO OPTION IS FOUND: EXIT GIVING MSG021E. 00699000
- * 3. CONVERT THE ADDRESS TO BINARY 00700000
- * 4. IF THE CONVERSION FAILS, EXIT GIVING MSG021E. 00701000
- * 5. CALL DMKSCNRU TO LOCATE THE DEVICE BLOK FOR THE SPECIFIED 00702000
- * UNIT; IF NOT FOUND, EXIT GIVING MSG040E. 00703000
- * 6. OTHERWISE, RETURN TO CALLER WITH GPR8 = RDEVBLOK 00704000
- *. 00705000
- SPACE 00706000
- USING RDEVBLOK,R8 @V386298 00707000
- GETDEVIC EQU * HERE TO LOCATE THE DEVICE SPECIFIED IN CMD @V386298 00708000
- CALL DMKSCNFD LOCATE NEXT OPTION @V386298 00709000
- BNZ MSG021E DEVICE ADDRESS IS MISSING @V386298 00710000
- SPACE 00711000
- GETDVIC2 C R0,F3 LENGTH GREATER THAN 3 ?? @V386298 00712000
- BH MSG021E YES -- INVALID RADDRESS @V386298 00713000
- LR R14,R0 GET LENGTH @V386298 00714000
- BCTR R14,0 -1 @V386298 00715000
- EX R14,MVCADDR MOVE ADDRESS TO SAVEWRK7 @V386298 00716000
- CALL DMKCVTHB CONVERT TO BINARY @V386298 00717000
- BNZ MSG021E INVALID HEX CHAR IN ADDR N4386298 00718000
- CALL DMKSCNRU @V386298 00719000
- BNZ MSG040E COULDN'T FIND A DEVICE AT @V386298 00720000
- * THAT ADDRESS 00721000
- L R14,ARIORD POINT TO LIST OF SYS READERS@V386298 00722000
- MVC SAVEWRK6(3),=C'RDR' SET FOR ERROR MSG @V386298 00723000
- TM RDEVTYPC,CLASURI READER TYPE ?? @V386298 00724000
- BO VALDEV VALIDATE DEVICE FOR SPOOLING@V386298 00725000
- L R14,ARIOPR POINT TO LIST OF SYS PRINTER@V386298 00726000
- MVC SAVEWRK6(3),=C'PRT' PRINTER TYPE ?? @V386298 00727000
- TM RDEVTYPE,TYPPRT PRINTER ?? @V386298 00728000
- BO VALDEV VALIDATE DEVICE FOR SPOOLING@V386298 00729000
- L R14,ARIOPU POINT TO LIST OF SYS PUNCHES@V386298 00730000
- MVC SAVEWRK6(3),=C'PUN' SET FOR PUNCH @V386298 00731000
- SPACE 00732000
- VALDEV ICM R15,B'1111',0(R14) GET NUMBER OF DEVICES @V386298 00733000
- BZ MSG006E NO DEVICES - INVALID TYPE @V386298 00734000
- GETDEVLP LA R14,4(R14) UPDATE TO NEXT ENTRY @V386298 00735000
- CH R1,2(R14) IS THIS DEVICE ON LIST ?? @V386298 00736000
- BE DEVAVAIL YES -- CHECK FOR DEVICE @V386298 00737000
- * AVAILABILITY 00738000
- BCT R15,GETDEVLP TRY NEXT ENTRY @V386298 00739000
- B MSG006E -- INVALID DEVICE TYPE @V386298 00740000
- SPACE 00741000
- DEVAVAIL TM SAVEWRK1+2,X'02' START OR DRAIN COMMAND ? @V386298 00742000
- BCR 1,R4 YES - BRANCH (RETURN) @V386298 00743000
- TM RDEVTYPC,CLASURO UNIT RECORD OUTPUT TYPE ? @V386298 00744000
- BZ MSG006E NO - INVALID ADDRESS @V386298 00745000
- TSTSTAT TM RDEVSTAT,RDEVDED IS THE DEVICE DEDICATED ? @V386298 00746000
- BO MSG140E YES -- ERROR @V386298 00747000
- TM RDEVSTAT,RDEVDISA IS THE DEVICE OFFLINE ? @V386298 00748000
- BO MSG046E YES -- ERROR @V386298 00749000
- BR R4 RETURN TO CALLER @V386298 00750000
- SPACE 00751000
- MVCADDR MVC SAVEWRK7(0),0(R1) MOVE NAME TO SAVEWRK7 @V386298 00752000
- SPACE 3 00753000
- CLEAR XC SAVEWRK2(32),SAVEWRK2 CLEAR WORK AREA @V386298 00754000
- XC SAVEWRK1(4),SAVEWRK1 @V386298 00755000
- BR R4 RETURN @V386298 00756000
- SPACE 3 00757000
- PAGERES LR R15,R2 LOAD ADDROF PAGE TO TEST INTO R15@V386298 00758000
- N R15,=A(X'FFF000') REMOVE DISPLACEMENT VALUE @V386298 00759000
- SRL R15,8 DIVIDE ADDRESS BY 256 @V386298 00760000
- AL R15,ACORETBL GET ADDRESS OF CORE-TABLE ENTRY @V386298 00761000
- L R15,0(,R15) PICK UP FORWARD POINTER @V386298 00762000
- CL R15,=C'*CP*' IF EQUAL PAGE IS RESIDENT @V386298 00763000
- BE *+10 YES - PAGE RESIDENT @V386298 00764000
- TM *+1,X'FF' FORCE CC=3 - PAGE NOT RESIDENT @V386298 00765000
- BR R14 RETURN @V386298 00766000
- TM *,X'FF' FORCE CC=1 - PAGE RESIDENT @V386298 00767000
- BR R14 RETURN @V386298 00768000
- EJECT 00769000
- ****************************************************** 00770000
- * 00771000
- * ERROR EXITS FROM DMKCSB 00772000
- * 00773000
- ****************************************************** 00774000
- SPACE 3 00775000
- MSG003 BAL R3,FRETIOB FRET IOBLOK AND UNLOCK BUFFER @V386298 00776000
- MSG003E EQU * HERE IF OPTION IS INVALID @V386298 00777000
- LA R2,003 ERROR MSG DMKCSB003E @V386298 00778000
- B EXIT8 @V386298 00779000
- SPACE 00780000
- MSG006E EQU * HERE IF INVALID DEVICE TYPE @V386298 00781000
- LA R2,006 ERROR MSG DMKCSB006E @V386298 00782000
- B EXIT1 @V386298 00783000
- SPACE 00784000
- MSG013 BAL R3,FRETIOB FRET IOBLOK AND UNLOCK BUFFER @V386298 00785000
- MSG013E EQU * HERE IF CONFLICTING OPTIONS @V386298 00786000
- LA R2,013 ERROR MSG DMKCSB013E @V386298 00787000
- B EXIT8 .. @V386298 00788000
- SPACE 00789000
- MSG021E EQU * HERE IF RADDR MISSING OR INVALID @V386298 00790000
- LA R2,021 ERROR MSG DMKCSB021E @V386298 00791000
- B EXIT8R1 @V386298 00792000
- SPACE 00793000
- MSG022E EQU * HERE IF VIRTUAL ADDRESS IS MISSING @V386298 00794000
- * OR INVALID 00795000
- LA R2,022 ERR MSG DMKCSB022E @V386298 00796000
- B EXIT8R1 EXIT @V386298 00797000
- SPACE 00798000
- MSG026E EQU * HERE OF OPERAND IS MISSING OR @V386298 00799000
- * OR INVALID 00800000
- LA R2,026 ERROR MSG DMKCSB026E @V386298 00801000
- B EXIT8R1 EXIT @V386298 00802000
- SPACE 00803000
- MSG028E EQU * HERE IF CLASS IS MISSING OR INVALID @V386298 00804000
- LA R2,028 ERROR MSG DMKCSB028E @V386298 00805000
- B EXIT8R1 EXIT @V386298 00806000
- SPACE 00807000
- MSG030E EQU * HERE IF COPIES MISSING OR INVALID @V386298 00808000
- LA R2,030 ERROR MSG DMKCSB030E @V386298 00809000
- B EXIT8R1 EXIT @V386298 00810000
- SPACE 00811000
- MSG031 BAL R3,FRETIOB FRET IOBLOK AND UNLOCK BUFFER @V386298 00812000
- MSG031E EQU * HERE IF BUFFER IS MISSING OR IVALID @V386298 00813000
- LA R2,031 ERROR MSG DMKCSB031E @V386298 00814000
- B EXIT8R1 @V386298 00815000
- SPACE 00816000
- MSG036 BAL R3,FRETIOB FRET IOBLOK AND UNLOCK BUFFER @V386298 00817000
- MSG036E EQU * HERE IF INDEX IN MISSING OR INVALID @V386298 00818000
- LA R2,036 ERROR MSG DMKCSB036E @V386298 00819000
- B EXIT8R1 EXIT @V386298 00820000
- SPACE 2 00821000
- MSG040E EQU * HERE IF DEVICE ADDRESS DOES NOT EXIST @V386298 00822000
- LA R2,040 ERROR MSG DMKCSB040E @V386298 00823000
- B EXIT1 SET UP MESSAGE @V386298 00824000
- SPACE 00825000
- MSG043 BAL R3,FRETIOB FRET IOBLOK AND UNLOCK BUFFER @V386298 00826000
- MSG043E EQU * HERE IF BUFFER DOES NOT EXIST @V386298 00827000
- LA R0,4 LENGTH OF NAME @V386298 00828000
- LA R1,SAVEWRK8 ADDRESS OF NAME @V386298 00829000
- LA R2,043 ERROR MSG DMKCSB043E @V386298 00830000
- B EXIT8 @V386298 00831000
- SPACE 00832000
- MSG046E EQU * HERE IF DEVICE IS OFFLINE @V386298 00833000
- LA R2,046 ERROR MSG DMKCSB046E @V386298 00834000
- B EXIT2 SET GPR0 AND GPR1 @V386298 00835000
- SPACE 00836000
- MSG140E EQU * HERE IF DEVICE IS ATTACHED TO USER @V386298 00837000
- L R14,RDEVUSER ADDRESS OF USER VMBLOK @V386298 00838000
- MVC SAVEWRK8(8),VMUSER-VMBLOK(R14) GET USER ID @V386298 00839000
- LA R0,16 LENGTH OF DATA FOR ERROR MSG@V386298 00840000
- LA R1,SAVEWRK6 ADDRESS OF DATA @V386298 00841000
- LA R2,140 ERROR MSG DMKCSB140E @V386298 00842000
- B EXIT8 EXIT @V386298 00843000
- SPACE 00844000
- MSG141E EQU * HERE IF DEVICE NOT ACTIVE @V386298 00845000
- LA R2,141 ERROR MSG DMKCSB141E @V386298 00846000
- B EXIT2 SET UP GPR0 AND GPR1 @V386298 00847000
- SPACE 00848000
- MSG142E EQU * HERE IF DEVICE IS NOT DRAINED @V386298 00849000
- LA R2,142 ERROR MSG DMKCSB142E @V386298 00850000
- B EXIT2 SET UP GPR0 AND GPR1 @V386298 00851000
- SPACE 00852000
- MSG148 BAL R3,FRETIOB FRET IOBLOK AND UNLOCK BUFFER @V386298 00853000
- MSG148E EQU * HERE IF BUFFER LOAD FAILED @V386298 00854000
- LA R0,12 LENGTH OF ERROR MSG DATA @V386298 00855000
- LA R1,SAVEWRK6 ADDRESS OF DATA @V386298 00856000
- LA R2,148 ERROR MSG DMKCSB148E @V386298 00857000
- B EXIT8 .. @V386298 00858000
- SPACE 00859000
- EXIT1 LA R0,3 LENGTH OF REAL ADDRESS @V386298 00860000
- LA R1,SAVEWRK7 ADDRESS OF REAL ADDRESS @V386298 00861000
- B EXIT8 EXIT @V386298 00862000
- SPACE 00863000
- EXIT2 LA R0,8 LENGTH OF TYPE AND REAL ADDR@V386298 00864000
- LA R1,SAVEWRK6 ADDRESS OF DATA @V386298 00865000
- B EXIT8 EXIT @V386298 00866000
- SPACE 3 00867000
- CLCFCB CLC 0(0,R1),=C'FCB ' @V386298 00868000
- CLCUCS CLC 0(0,R1),=C'UCS ' @V386298 00869000
- CLCUCC CLC 0(0,R1),=C'UCC ' @VA11542 00869500
- CLCFOLD CLC 0(0,R1),=C'FOLD ' @V386298 00870000
- CLCVER CLC 0(0,R1),=C'VER ' @V386298 00871000
- CLCINDEX CLC 0(0,R1),=C'INDEX ' @V386298 00872000
- EJECT 00873000
- SPACE 3 00874000
- *********************************** 00875000
- * 00876000
- * FINAL EXIT BACK TO DMKCFM OR DMKERM 00877000
- * 00878000
- *********************************** 00879000
- SPACE 3 00880000
- DS 0H @V386298 00881000
- SPACE 2 00882000
- EXIT8R1 SR R1,R1 NO DATA IN R0 AND R1 @V386298 00883000
- SR R0,R0 NO DATA IN RO BUT DATA IN R1@V386298 00884000
- EXIT8 ICM R0,B'1110',ID+3 LOAD MODULE ID (CSB) @V386298 00885000
- CALL DMKERMSG GO TO ERROR MSG MODULE @V386298 00886000
- * 00887000
- * DMKERMSG WILL EXIT TO DMKCFM VIA SVC 16 00888000
- * 00889000
- SPACE 2 00890000
- CSBMSG EQU * HERE TO PRINT COMMAND COMPLETED MESSAGE @V386298 00891000
- LA R0,16 MSG LENGTH @V386298 00892000
- LA R1,CMDMSG ADDRESS OF MSG @V386298 00893000
- CALL DMKQCNWT,PARM=NORET @V386298 00894000
- SPACE 2 00895000
- CSBEXIT EQU * HERE TO EXIT @V386298 00896000
- EXIT @V386298 00897000
- EJECT 00898000
- EJECT 00899000
- *********************************** 00900000
- * 00901000
- * MESSAGES AND CONSTANTS 00902000
- * 00903000
- *********************************** 00904000
- SPACE 2 00905000
- CCWNAME CCW 9,0,CC+SILI,4 PRINT BUFFER NAME ON VERIFY @V386298 00906000
- SPACE 2 00907000
- CCW1403 CCW X'EB',0,CC,1 UCS GATE @V386298 00908000
- CCW X'73',0,CC,1 BLOCK DATA CHECKS @V386298 00909000
- CCW X'FB',0,CC,240 LOAD UCS BUFFER, NO FOLD @V386298 00910000
- CCW X'04',0,SKIP+SILI+CC,1 DUMMY SENSE FILLER CCW @V386298 00911000
- CCW X'04',0,SKIP+SILI,1 DUMMY SENSE FILLER CCW @V386298 00912000
- CCW 9,0,CC+SILI,60 VERIFY PRINT 1ST CCW @V386298 00913000
- CCW 9,60,CC+SILI,60 VERIFY PRINT 2ND CCW @V386298 00914000
- CCW 9,120,CC+SILI,60 VERIFY PRINT 3RD CCW @V386298 00915000
- CCW 25,180,CC+SILI,60 VERIFY PRINT 4TH CCW AND @V386298 00916000
- * 3 SPACES 00917000
- SENSECCW EQU * @V386298 00918000
- CCW 4,0,SKIP+SILI+CC,1 DUMMY SENSE FILLER CCW @V386298 00919000
- CCW 4,0,SKIP+SILI+CC,1 DUMMY SENSE FILLER CCW @V386298 00920000
- CCW 4,0,SKIP+SILI+CC,1 DUMMY SENSE FILLER CCW @V386298 00921000
- CCW 4,0,SKIP+SILI+CC,1 DUMMY SENSE FILLER CCW @V386298 00922000
- CCW 4,0,SKIP+SILI+CC,1 DUMMY SENSE FILLER CCW @V386298 00923000
- CCW 4,0,SKIP+SILI+CC,1 DUMMY SENSE FILLER CCW @V386298 00924000
- CCW 4,0,SKIP+SILI+CC,1 DUMMY SENSE FILLER CCW @V386298 00925000
- CCW X'1B',0,CC,1 SPACE 3 SO THAT OPERATOR @V386298 00926000
- * CAN SEE 00927000
- CCW X'04',0,SKIP+SILI,1 FORCE CONCURRENT CE+DE @V386298 00928000
- SPACE 3 00929000
- FCBCCW CCW X'63',0,CC+SILI,0 LOAD FORM CONTROL COMMAND @V386298 00930000
- CCW 4,0,SKIP+SILI,1 SENSE TO FORCE CONCURRENT @V386298 00931000
- * CE+DE 00932000
- CCW X'0B',0,CC+SILI,1 SPACE CCW @V386298 00933000
- CCW X'07',0,CC+SILI,1 DIAG GATE CCW (3211/3203) @V386298 00934000
- CCW X'06',0,CC+SILI,1 READ FCB REGISTER ADDRESS @V386298 00935000
- CCW X'04',0,SKIP+SILI,1 SENSE TO FORCE CONCURRENT @V386298 00936000
- * CE+DE 00937000
- SPACE 3 00938000
- *********************************************************************** 00938100
- * THE NEXT 3 CCWS HAVE THE SILI BIT ON SO THE PROCESSING OF IMMEDIATE * 00938200
- * COMMANDS BY 3203 MODEL 5 WILL OCCUR. IT WILL NOT AFFECT MOD 4 PROC.* 00938300
- *********************************************************************** 00938400
- CCW3203 CCW X'73',0,CC+SILI,1 BLOCK DATA CHECKS @V60A6B6 00939000
- CCW X'23',0,CC+SILI,1 UNFOLD CMD '43' FOLD CMD @V60A6B6 00940000
- CCW X'FB',0,CC+SILI,304 LOAD UCS BUFFER @V60A6B6 00941000
- CCW X'04',0,SKIP+SILI+CC,1 DUMMY SENSE FILLER CCW @V386298 00942000
- CCW X'04',0,SKIP+SILI,1 DUMMY SENSE FILLER CCW @V386298 00943000
- CCW 9,0,CC+SILI,60 VERIFY PRINT FIRST CCW @V386298 00944000
- CCW 9,60,CC+SILI,60 VERIFY PRINT SECOND CCW @V386298 00945000
- CCW 9,120,CC+SILI,60 VERIFY PRINT THIRD CCW @V386298 00946000
- CCW 25,180,CC+SILI,60 VERIFY PRINT FOURTH CCW AND @V386298 00947000
- * SPACE 3 00948000
- CCW 4,0,CC+SKIP+SILI,1 DUMMY SENSE FILLER CCW @V386298 00949000
- CCW 4,0,CC+SKIP+SILI,1 DUMMY SENSE FILLER CCW @V386298 00950000
- CCW 4,0,CC+SKIP+SILI,1 DUMMY SENSE FILLER CCW @VA05566 00950500
- CCW 4,0,CC+SKIP+SILI,1 DUMMY SENSE FILLER CCW @VA05566 00950600
- CCW 4,0,CC+SKIP+SILI,1 DUMMY SENSE FILLER CCW @VA05566 00950700
- CCW 4,0,CC+SKIP+SILI,1 DUMMY SENSE FILLER CCW @VA05566 00950800
- CCW 4,0,CC+SKIP+SILI,1 DUMMY SENSE FILLER CCW @VA05566 00950900
- *********************************************************************** 00950910
- * THE NEXT CCW HAS THE SILI BIT TURNED ON FOR PROCESSING OF IMMEDIATE * 00950920
- * COMMANDS BY THE 3203 MODEL 5. IT WILL NOT AFFECT MODEL 4 PROCESSING.* 00950930
- *********************************************************************** 00950940
- CCW X'1B',0,CC+SILI,1 SP 3 SO OPERATOR CAN SEE @V60A6B6 00951000
- CCW X'04',0,SKIP+SILI,1 SENSE TO FORCE CONCURRENT @V386298 00952000
- * CE+DE 00953000
- SPACE 3 00954000
- CCW3211 CCW X'73',0,CC,1 BLOCK DATA CHECKS @V386298 00955000
- CCW X'23',0,CC,1 UNFOLD COMMAND '43' FOLD CMD@V386298 00956000
- CCW X'FB',0,CC,512 LOAD UCSB BUFFER @V386298 00957000
- CCW X'04',0,SKIP+SILI+CC,1 DUMMY SENSE FILLER CCW @V386298 00958000
- CCW X'04',0,SKIP+SILI,1 DUMMY SENSE FILLER CCW @V386298 00959000
- CCW 9,0,CC+SILI,48 VERIFY PRINT CCW 1 @V386298 00960000
- CCW 9,48,CC+SILI,48 VERIFY PRINT CCW 2 @V386298 00961000
- CCW 9,96,CC+SILI,48 VERIFY PRINT CCW 3 @V386298 00962000
- CCW 9,144,CC+SILI,48 VERIFY PRINT CCW 4 @V386298 00963000
- CCW 9,192,CC+SILI,48 VERIFY PRINT CCW 5 @V386298 00964000
- CCW 9,240,CC+SILI,48 VERIFY PRINT CCW 6 @V386298 00965000
- CCW 9,288,CC+SILI,48 VERIFY PRINT CCW 7 @V386298 00966000
- CCW 9,336,CC+SILI,48 VERIFY PRINT CCW 8 @V386298 00967000
- CCW 25,384,CC+SILI,48 VER PRINT CCW 9 AND SPACE 3 @V386298 00968000
- CCW 4,0,CC+SKIP+SILI,1 DUMMY SENSE FILLER CCW @V386298 00969000
- CCW 4,0,CC+SKIP+SILI,1 DUMMY SENSE FILLER CCW @V386298 00970000
- CCW X'1B',0,CC,1 SP 3 SO OPERATOR CAN SEE @V386298 00971000
- CCW X'04',0,SKIP+SILI,1 SENSE TO FORCE CONCURRENT @V386298 00972000
- * CE+DE 00973000
- SPACE 3 00974000
- CMDMSG DC C'COMMAND COMPLETE' @V386298 00975000
- EJECT 00976000
- LTORG 00977000
- EJECT 00978000
- PSA @V386298 00979000
- COPY CONBUF @V386298 00980000
- COPY DEVTYPES @V386298 00981000
- COPY EQU @V386298 00982000
- COPY IOBLOKS @V386298 00983000
- COPY IOER @V386298 00984000
- COPY RBLOKS @V386298 00985000
- COPY SAVE @V386298 00986000
- COPY SPOOL @V386298 00987000
- COPY UDIRECT @V386298 00988000
- COPY VBLOKS @V386298 00989000
- COPY VMBLOK @V386298 00990000
- IOBLOK DSECT CONTINUE THE IOBLOK @V386298 00991000
- ORG , MAKE SURE WE'RE AT THE END @V386298 00992000
- *** UCSBLOK - UCS/FCB WORK BLOK 00993000
- * 00994000
- SPACE 00995000
- * USED BY DMKCSBLD 00996000
- SPACE 00997000
- * FOR 3203/3211 PRINTER UCS/FCB 00998000
- SPACE 00999000
- UCSREGS DS 2F SAVE REG AREA @V386298 01000000
- UCSCCWS DS 0XL144 LENGTH ATTRIBUTE FOR MOVE @V386298 01001000
- UCSBBLOK DS 1D BLOCK DATA CHECKS @V386298 01002000
- UCSBFOLD DS 1D FOLD COMMAND @V386298 01003000
- UCSBLOAD DS 1D LOAD UCSB CCW @V386298 01004000
- UCSBNAME DS 1D PRINT BUFFER NAME CCW @V386298 01005000
- UCSBVER DS 12D SPACE FOR 12 VERIFY CCWS @V386298 01006000
- UCSBSPAC DS 1D CCW FOR SPACE 3 @V386298 01007000
- UCSBLAST DS 1D DUMMY SENSE CCW @V386298 01008000
- SPACE 01009000
- XIOBSIZE EQU (*-IOBLOK)/8 SIZE IN DOUBLE WORDS @V386298 01010000
- SPACE 3 01011000
- * FOR 1403 UCS 01012000
- SPACE 01013000
- ORG UCSCCWS @V386298 01014000
- UCSGATE DS 1D UCS GATE CCW @V386298 01015000
- UCSBLOCK DS 1D BLOCK DATA CHECKS CCW @V386298 01016000
- UCSLOAD DS 1D LOAD UCS CCS @V386298 01017000
- SPACE 3 01018000
- * FOR 3203/3211 FCB 01019000
- SPACE 01020000
- ORG UCSCCWS @V386298 01021000
- FCBLOAD DS 1D LOAD FORMS CONTOL COMMAND @V386298 01022000
- FCBLAST DS 1D FCB LAST CCW @V386298 01023000
- FCB0B DS 1D SPACE COMMAND @V386298 01024000
- FCB07 DS 1D DIAG GATE COMMAND @V386298 01025000
- FCB06 DS 1D READ FCB REGISTER ADDRESS @V386298 01026000
- FCB04 DS 1D DUMMY SENSE CCW @V386298 01027000
- FCBADD DS 1X SPACE FOR FCB ADDRESS DATA @V386298 01028000
- SPACE 4 01029000
- EJECT 01030000
- UCSHDR DSECT @V386298 01031000
- SPACE 01032000
- *** UCSHDR - UCS/FCB HEADER BLOCK 01033000
- * 01034000
- * +-------------------+---------+---------+ 01035000
- * | HDRNAME | HDRNEXT | BUFLEN | 01036000
- * +---------+---------+---------+---------+ 01037000
- * | CCWDISP | CCWLEN | 01038000
- * +---------+---------+ 01039000
- * 01040000
- *** UCSHDR - UCS/FCB HEADER BLOCK 01041000
- * 01042000
- * USE BY DMKCSBLD 01043000
- SPACE 01044000
- HDRNAME DS 1F NAME I.D. OF LOAD BUFFER UCS@V386298 01045000
- HDRNEXT DS 1H DISPLACEMENT TO NEXT HEADER @V386298 01046000
- BUFLEN DS 1H LENGTH OF THE LOAD BUFFER @V386298 01047000
- CCWDISP DS 1H DISPLACEMENT TO VERIFY CCWS @V386298 01048000
- CCWLEN DS 1H LENGTH OF THE VERIFY CCWS @V386298 01049000
- ORG CCWLEN @V386298 01050000
- FCBPNDEX DS 1X DEFAULT INDEX VALUE @V386298 01051000
- FCBTNDEX DS 1X NEW INDEX VALUE @V386298 01052000
- ORG 01053000
- * 01054000
- HDRSIZE EQU *-UCSHDR SIZE OF BLOCK IN BYTES @V386298 01055000
- SPACE 4 01056000
- END 01057000
ibm/vm370-lib/cp/dmkcsb.assemble_src.txt ยท Last modified: 2023/08/06 13:36 by Site Administrator