ibm:vm370-lib:cms:dmsssk.assemble_src
Table of Contents
DMSSSK Source
References
- Fixes Applied : 0
- This Source Date : Tuesday, December 12, 1978
- Last Fix ID : [Unmodified]
Source Listing
- DMSSSK.ASSEMBLE.txt
- SSK TITLE 'DMSSSK (CMS) VM/370 - RELEASE 6' 00001000
- *. 00002000
- * MODULE NAME - 00003000
- * 00004000
- * DMSSSK 00005000
- * 00006000
- * FUNCTION - 00007000
- * 00008000
- * SET STORAGE PROTECT KEYS FOR A SPECIFIED SAVED SYSTEM 00009000
- * 00010000
- * ATTRIBUTES - 00011000
- * 00012000
- * DISK RESIDENT, EXECUTES IN THE TRANSIENT AREA 00013000
- * 00014000
- * ENTRY POINTS - 00015000
- * 00016000
- * DMSSSK 00017000
- * 00018000
- * ENTRY CONDITIONS - 00019000
- * 00020000
- * GPR 1 CONTAINS THE ADDRESS OF A PARAMETER LIST 00021000
- * CONTAINING THE FOLLOWING: 00022000
- * SETKEY - CL8'SETKEY' 00023000
- * KEY - STORAGE KEY (DEC 0 - 15) 00024000
- * NAME - SAVED SYSTEM NAME 00025000
- * STADR - START ADDRESS IN HEX (OPTIONAL) 00026000
- * X'FF' - FENCE 00027000
- * 00028000
- * EXIT CONDITIONS - 00029000
- * NORMAL 00030000
- * GPR 15 = 0 EXECUTION SUCCESSFUL 00031000
- * 00032000
- * ERROR 00033000
- * MESSAGES 00034000
- * DMSSSK070E INVALID PARAMETER ... GPR15=24 00035000
- * DMSSSK362E INVALID STORAGE PROTECT KEY ... GPR15=24 00036000
- * DMSSSK363E INVALID STARTING ADDRESS ... GPR15=24 00037000
- * DMSSSK364E VM STORAGE SIZE ERROR GPR15=24 00038000
- * DMSSSK365E SYSTEM NAME NOT SPECIFIED GPR15=24 00039000
- * DMSSSK400S SYSTEM ... DOES NOT EXIST GPR15=44 00040000
- * DMSSSK410S CP ERROR INDICATION ... GPR15=174 OR 171 00041000
- * 00042000
- * CALLS TO OTHER ROUTINES - 00043000
- * 00044000
- * DMSERR 00045000
- * 00046000
- * EXTERNAL REFERENCES - 00047000
- * 00048000
- * NONE 00049000
- * 00050000
- * TABLES / WORKAREAS - 00051000
- * 00052000
- * NONE 00053000
- * 00054000
- * REGISTER USAGE - 00055000
- * 00056000
- * NONE 00057000
- * 00058000
- * NOTES - 00059000
- * 00060000
- * NONE 00061000
- * 00062000
- * OPERATION - 00063000
- * 00064000
- * THIS MODULE WILL SET STORAGE PROTECT KEYS FOR A 00065000
- * BLOCK OF STORAGE OCCUPIED BY A SAVED SYSTEM. THE 00066000
- * STARTING ADDRESS MAY BE SPECIFIED BY THE CALLER AS 00067000
- * LONG AS IT FALLS WITHIN THE RANGE OF THE SYSTEM 00068000
- * LOAD EXTENTS. 00069000
- * 00070000
- * DMSSSK VALIDATES THE KEY ENTRY IN THE PARAMETER LIST 00071000
- * BY ENSURING THAT IT IS A ONE OR TWO DIGIT NUMBER 00072000
- * BETWEEN 0 AND 15. 00073000
- * 00074000
- * A FINDSYS IS THEN DONE FOR THE NAME PROVIDED WHICH 00075000
- * PROVIDES THE LOAD RANGE OF THE SAVED SYSTEM. 00076000
- * 00077000
- * IF AN ADDRESS HAS BEEN INCLUDED IN THE PARAMETER 00078000
- * LIST, IT IS CHECKED TO ENSURE THAT IT FALLS WITHIN 00079000
- * THE LOAD RANGE OF THE SAVED SYSTEM. 00080000
- * THE COMPLETE RANGE OF THE SAVED SYSTEM MUST ALSO 00081000
- * FALL WITHIN THE V.M. STORAGE SIZE. 00082000
- * 00083000
- * AN SSK INSTRUCTION IS THEN DONE FOR EACH 2048 BYTE 00084000
- * BLOCK IN THE RANGE SPECIFIED. 00085000
- *. 00086000
- EJECT 00087000
- DMSSSK CSECT @V305614 00088000
- SPACE 1 00089000
- USING *,R12 @V305614 00090000
- USING NUCON,R0 @V305614 00091000
- LR R12,R15 TRANSFER BASE @V305614 00092000
- LR R2,R1 GET NEW PLIST POINTER @V305614 00093000
- LA R2,8(,R2) POINT TO THE KEY ENTRY @V305614 00094000
- SPACE 1 00095000
- SR R3,R3 INITIALIZE KEY COUNT @V305614 00096000
- CLI 1(R2),X'40' ONE DIGIT KEY ? @V305614 00097000
- BNE TWODIG NO, BR @V305614 00098000
- CLI 0(R2),X'F9' MUST BE 9 OR LESS @V305614 00099000
- BH KEYERR ELSE ERROR @V305614 00100000
- B ONEDIG SKIP MAX CHECK @V305614 00101000
- SPACE 1 00102000
- TWODIG CLC 0(3,R2),MAXKEY CHECK FOR MAXIMUM POSSIBLE KEY @V305614 00103000
- BH KEYERR BR, IF INVALID KEY @V305614 00104000
- ONEDIG CLI 0(R2),X'F0' CAN'T BE LESS THAN 0 @V305614 00105000
- BL KEYERR ERROR IF SO @V305614 00106000
- SPACE 1 00107000
- CLI 1(R2),X'40' 2 DIGIT KEY ? @V305614 00108000
- BE KEYCVB NO, GO CONVERT TO BINARY @V305614 00109000
- CLI 1(R2),X'F0' THIS ONE HAS TO BE 0 TO 5 @V305614 00110000
- BL KEYERR ERROR IF NOT @V305614 00111000
- SPACE 1 00112000
- CLI 2(R2),X'40' 3RD CHARACTER MUST BE BLANK @V305614 00113000
- BNE KEYERR ELSE ERROR @V305614 00114000
- LA R3,1 INDICATE 2 DIGIT KEY @V305614 00115000
- SPACE 1 00116000
- KEYCVB LA R3,112(,R3) SET PACK L1 TO 7 @V305614 00117000
- EX R3,PACKEY PACK STORAGE KEY @V305614 00118000
- CVB R3,DECKEY GET BINARY STORAGE KEY @V305614 00119000
- SLL R3,4 MOVE KEY TO RIGHT PLACE FOR SSK @V305614 00120000
- SPACE 1 00121000
- LA R2,8(,R2) BUMP SCAN POINTER @V305614 00122000
- CLI 0(R2),X'FF' NAME PARAMETER SHOULD BE THERE @V305614 00123000
- BE NAMERR BR, IF NOT @V305614 00124000
- MVC SEGNAME(8),0(R2) GET PLIST SEGMENT NAME @V305614 00125000
- LA R4,SEGNAME POINT TO IT @V305614 00126000
- LA R5,12 INDICATE FINDSYS @V305614 00127000
- DC X'83450064' FINDSYS @V305614 00128000
- BC 2,FINDERR BR, IF UNSUCCESSFUL @V305614 00129000
- SPACE 1 00130000
- LA R2,8(,R2) BUMP SCAN POINTER @V305614 00131000
- CLI 0(R2),X'FF' WAS THAT ALL ? @V305614 00132000
- BE READY YES, TIME TO EXECUTE @V305614 00133000
- SR R6,R6 CLEAR THE ADDRESS BYTE REG @V305614 00134000
- SR R8,R8 AND THE RESULT REGISTER @V305614 00135000
- LR R9,R2 LOAD UP BYTE POINTER @V305614 00136000
- SPACE 1 00137000
- LOOP CLI 0(R9),X'40' IS THIS THE END ? @V305614 00138000
- BE ADRDONE YES, BR @V305614 00139000
- CLI 0(R9),X'FF' SHOULDN'T HAPPEN, BUT.. @V305614 00140000
- BE ADRDONE GO THROUGH THE MOTIONS @V305614 00141000
- SPACE 1 00142000
- IC R6,0(,R9) TAKE THE BYTE.. @V305614 00143000
- CLI 0(R9),C'0' COULD IT BE 'A'-'F' ? @V305614 00144000
- BL AFCHK YES, BR @V305614 00145000
- CLI 0(R9),C'9' IS IT > 9 ? @V305614 00146000
- BH ADRERR ERROR IF SO @V305614 00147000
- SPACE 1 00148000
- SH R6,CLR1 ..STRIP THE 'F'.. @V305614 00149000
- LOOP1 SLL R8,4 ..MAKE ROOM FOR THE DIGIT.. @V305614 00150000
- AR R8,R6 ..AND INSERT IT.. @V305614 00151000
- LA R9,1(,R9) POINT TO THE NEXT ONE @V305614 00152000
- B LOOP AND DO IT AGAIN @V305614 00153000
- SPACE 1 00154000
- AFCHK CLI 0(R9),C'A' HAS TO BE @V305614 00155000
- BL ADRERR IN 'A' TO 'F' @V305614 00156000
- CLI 0(R9),C'F' RANGE @V305614 00157000
- BH ADRERR ELSE ERROR @V305614 00158000
- SPACE 1 00159000
- SH R6,CLR2 'TRANSLATE' TO HEX @V305614 00160000
- B LOOP1 AND CONTINUE @V305614 00161000
- SPACE 1 00162000
- ADRDONE LA R6,1 MAKE SURE THE ADDRESS IS @V305614 00163000
- SLL R6,24 VALID @V305614 00164000
- CR R8,R6 CAN'T BE GREATER THAN 6 DIGITS @V305614 00165000
- BNL ADRERR ..... @V305614 00166000
- SPACE 1 00167000
- CR R8,R4 MUST NOT BE < FINDSYS START ADR @V305614 00168000
- BL ADRERR NOR @V305614 00169000
- CR R8,R5 GREATER THAN FINDSYS END ADR @V305614 00170000
- BH ADRERR ..... @V305614 00171000
- LR R4,R8 TRANSFER IF OK @V305614 00172000
- SPACE 1 00173000
- LA R2,8(,R2) BUMP SCAN POINTER @V305614 00174000
- CLI 0(R2),X'FF' NO MORE PARAMETERS @V305614 00175000
- BNE INVPARM ALLOWED @V305614 00176000
- SPACE 1 00177000
- READY EQU * @V305614 00178000
- C R5,VMSIZE MAKE SURE WE DON'T ISSUE SSK'S @V305614 00179000
- BH SIZERR OUTSIDE VIRTUAL STORAGE @V305614 00180000
- N R4,SSKSET STRIP BITS @V305614 00181000
- N R5,SSKSET NOT USED @V305614 00182000
- LA R6,2048 LOAD UP ADR INCREMENTER @V305614 00183000
- SPACE 1 00184000
- SSKLOOP CR R4,R5 PAST THE ENDING ADDRESS ? @V305614 00185000
- BH SSKDONE YES, BRANCH @VA05503 00186000
- SSK R3,R4 SET STORAGE KEY @V305614 00187000
- AR R4,R6 INCREMENT TARGET ADDRESS @V305614 00188000
- B SSKLOOP AND DO IT AGAIN @V305614 00189000
- SPACE 1 00190000
- SSKDONE SR R15,R15 SET ZERO RETURN CODE @V305614 00191000
- BR R14 AND RETURN TO CALLER @V305614 00192000
- SPACE 1 00193000
- KEYERR EQU * @V305614 00194000
- DMSERR NUM=362,LET=E,SUB=(CHARA,(R2)),TEXT='INVALID STORAGE PRX00195000
- OTECT KEY ''........''' @V305614 00196000
- LA R15,24 SET RETURN CODE 24 @V305614 00197000
- BR R14 AND RETURN TO CALLER @V305614 00198000
- SPACE 1 00199000
- FINDERR EQU * @V305614 00200000
- C R5,NONE NONEXISTENT SYSTEM ? @V305614 00201000
- BNE CPERR NO, BR @V305614 00202000
- DMSERR NUM=400,LET=S,SUB=(CHARA,(R2)),TEXT='SYSTEM ''........'X00203000
- ' DOES NOT EXIST' @V305614 00204000
- LR R15,R5 SHIFT RETURN CODE REGISTER @VM03156 00205000
- BR R14 RETURN TO CALLER @V305614 00206000
- SPACE 1 00207000
- CPERR DMSERR NUM=410,LET=S,SUB=(DEC,(R5)),TEXT='CONTROL PROGRAM ERROX00208000
- R INDICATION ''......''' @V305614 00209000
- LR R15,R5 SHIFT RETURN CODE REGISTERS @VM03156 00210000
- BR R14 RETURN TO CALLER @V305614 00211000
- SPACE 1 00212000
- ADRERR EQU * @V305614 00213000
- DMSERR NUM=363,LET=E,SUB=(CHARA,(R2)),TEXT='INVALID STARTING AX00214000
- DDRESS ''........''' @V305614 00215000
- LA R15,24 SET RETURN CODE 24 @V305614 00216000
- BR R14 AND RETURN TO CALLER @V305614 00217000
- SPACE 1 00218000
- INVPARM EQU * @V305614 00219000
- DMSERR NUM=070,LET=E,SUB=(CHARA,(R2)),TEXT='INVALID PARAMETER *00220000
- ''........''' @V305614 00221000
- LA R15,24 SET RETURN CODE 24 @V305614 00222000
- BR R14 AND RETURN TO CALLER @V305614 00223000
- SPACE 1 00224000
- SIZERR EQU * @V305614 00225000
- DMSERR NUM=364,LET=E,SUB=(HEX,(R4),HEX,(R5)),TEXT='V.M. STORAGX00226000
- E NOT LARGE ENOUGH TO CONTAIN SYSTEM LOADING AT ...... TX00227000
- O ......',RENT=NO @V305614 00228000
- LA R15,24 SET RETURN CODE 24 @V305614 00229000
- BR R14 AND RETURN TO CALLER @V305614 00230000
- SPACE 1 00231000
- NAMERR EQU * @V305614 00232000
- DMSERR NUM=365,LET=E,TEXT='SYSTEM NAME NOT SPECIFIED' @V305614 00233000
- LA R15,24 SET RETURN CODE 24 @V305614 00234000
- BR R14 AND RETURN TO CALLER @V305614 00235000
- SPACE 1 00236000
- PACKEY PACK DECKEY(*-*),0(*-*,R2) @V305614 00237000
- SPACE 1 00238000
- MAXKEY DC X'F1F540' MAXIMUM POSSIBLE KEY @V305614 00239000
- CLR1 DC H'240' =X'00F0' @V305614 00240000
- CLR2 DC H'183' =H'00B7' @V305614 00241000
- DECKEY DS 1D DECIMAL KEY CONVERSION AREA @V305614 00242000
- SEGNAME DS 1D SAVED SEGMENT NAME @V305614 00243000
- DS 0F @V305614 00244000
- SSKSET DC X'00FFF800' @V305614 00245000
- NONE DC F'44' CP RETURN FOR NONEXISTENT SYSTEM @V305614 00246000
- NUCON @V305614 00247000
- REGEQU @V305614 00248000
- END 00249000
ibm/vm370-lib/cms/dmsssk.assemble_src.txt ยท Last modified: 2023/08/06 13:35 by Site Administrator