*%/* 00750002 * /* MACCOMP Y-1 SC1CL/PZD81 */ 00800002 * /* MACSTAT Y-1 72273/DCR20593 */ 00900002 * /* MACSTAT Y-3 77277/OZ26071 @ZA26071*/ 00920003 * /* 00950002 MACRO 01100002 &NAME MODESET &KEY=,&MODE=,&ENABLE=,&SYSMASK=,®=,&MF=, X01400002 &EXTKEY=,&SAVEKEY=,&KEYADDR=,&WORKREG=,&RELATED= 01600002 * /* MACDATE Y-3 77277 @ZA26071*/ 01800003 * /* 01850002 LCLA &COUNT,&SAVE1,&SAVE2,&PSWKEY 02100002 .* THE FOLLOWING ARE THE LOCAL SET SYMBOLS FOR THE 4 BYTE PARM LIST 02800000 LCLB &B0,&B1,&B2,&B3,&B4,&B5,&B6,&B7 03500000 LCLB &B8,&B9,&B10,&B11,&B12,&B13,&B14,&B15 04200000 LCLB &B16,&B17,&B18,&B19,&B20,&B21,&B22,&B23 04900000 LCLB &B24,&B25,&B26,&B27,&B28,&B29,&B30,&B31 05600002 AIF ((T'&KEY EQ 'O') AND (T'&MODE EQ 'O') AND (T'&ENABLE EQ 'X06300000 O') AND (T'&SYSMASK EQ 'O') AND (T'&MF EQ 'O') AND (T'&RX07000000 EG EQ 'O')).PCK 07700002 AGO .PCK1 07800002 .PCK AIF ((T'&EXTKEY EQ 'O') AND (T'&SAVEKEY EQ 'O') AND X07900004 (T'&KEYADDR EQ 'O') AND (T'&WORKREG EQ 'O')).ERROR9 07950004 .* @ZA00463 07960004 .* TEST FOR PROTECTION KEY PARAMETERS 08000002 .PCK1 AIF ((T'&EXTKEY NE 'O') OR (T'&SAVEKEY NE 'O') OR X08100002 (T'&KEYADDR NE 'O') OR (T'&WORKREG NE 'O')).PROT 08200002 AIF (T'® NE 'O').ERROR1 REG SPECIFIED YM4244 09100002 AIF ((T'&MF NE 'O') AND ('&MF' NE 'L')).MF 09800000 AIF (T'&KEY EQ 'O').MDE KEY NOT SPECIFIED 10500000 AIF (('&KEY' NE 'ZERO') AND ('&KEY' NE 'NZERO')).ERROR2 11200000 &B26 SETB 1 11900000 &B27 SETB ('&KEY' EQ 'ZERO') SET 0 KEY IF ZERO SPECIFIED 12600000 .MDE ANOP 13300000 AIF (T'&MODE EQ 'O').ENAB MODE NOT SPECIFIED 14000000 AIF (('&MODE' NE 'PROB') AND ('&MODE' NE 'SUP')).ERROR3 14700000 &B29 SETB 1 15400000 &B28 SETB ('&MODE' EQ 'SUP') INDICATE SUPV STATE IF SUP SPEC 16100000 .ENAB ANOP 16800000 AIF (T'&ENABLE EQ 'O').SMSK ENABLE OPERAND NOT SPECIFIED 17500000 AGO .ERROR10 18200002 .SMSK ANOP 20300000 AIF (T'&SYSMASK EQ 'O').MF SYSMASK NOT SPECIFIED 21000000 AGO .ERROR5 YM4244 21700002 .MF ANOP 50400000 AIF (T'&MF NE 'O').CK2 WAS MF OMITTED? 51100000 CNOP 0,4 51800000 &NAME BAL 1,*+8 52500000 AGO .DC 53200000 .CK2 ANOP 53900000 AIF ('&MF' NE 'L').CK3 WAS MF=L SPECIFIED? 54600000 &NAME DS 0F 55300000 .DC ANOP 56000000 DC B'&B0&B1&B2&B3&B4&B5&B6&B7&B8&B9&B10&B11&B12&B13&B14&B15X56700000 &B16&B17&B18&B19&B20&B21&B22&B23&B24&B25&B26&B27&B28&B29X57400000 &B30&B31' 58100000 AIF (T'&MF EQ 'O').LD 58800000 MEXIT 59500000 .LD ANOP 60200000 L 1,0(0,1) YM1995 60900002 AGO .SVC 61600000 .CK3 ANOP 62300000 AIF ('&MF(1)' EQ 'E').CK4 63000000 AGO .ERROR6 63700000 .CK4 ANOP 64400000 AIF ((T'&KEY NE 'O') OR (T'&MODE NE 'O') OR (T'&ENABLE NE 'O'X65100000 ) OR (T'&SYSMASK NE 'O') OR (T'® NE 'O')).ERROR8 65800000 .CK6 AIF ('&MF(2)' NE '(1)').CK5 66500000 &NAME L 1,0(1,0) YM1995 67200002 AGO .SVC 67900000 .CK5 ANOP 68600000 AIF ('&MF(2)'(1,1) EQ '(').ERROR7 69300000 AIF (T'&MF(2) EQ 'N').ERROR7 70000000 &NAME L 1,&MF(2) 70700000 .SVC ANOP 77700000 SVC 107 78400000 MEXIT 79100000 .* TEST THAT THE PROTECTION KEY PARAMETERS ARE MUTUALLY EXCLUSIVE 79107002 .* FROM OTHER MODESET PARAMETERS 79114002 .PROT AIF ((T'&KEY NE 'O') OR (T'&MODE NE 'O') OR X79121002 (T'&ENABLE NE 'O') OR (T'&SYSMASK NE 'O') OR X79128002 (T'® NE 'O') OR (T'&MF NE 'O')).ERROR11 79135002 .EXTKEY ANOP 79163002 .* TEST IF EXTKEY PARAMETER SPECIFIED AND VALID 79170002 AIF (T'&EXTKEY EQ 'O').KEYAD TEST IF EXTKEY OMITTED 79177002 AIF (T'&KEYADDR NE 'O').ERROR15 ERROR IF KEYADDR ALSO 79180002 AIF ('&EXTKEY' EQ 'SCHED').SCHED SCHEDULER KEY 79184002 AIF (('&EXTKEY' EQ 'HASP') OR ('&EXTKEY' EQ 'JES')).JES 79187002 .* JES KEY 79189002 AIF ('&EXTKEY' EQ 'RSM').RSM RSM KEY 79191002 AIF ('&EXTKEY' EQ 'VSM').VSM VSM KEY 79198002 AIF ('&EXTKEY' EQ 'SRM').SRM SRM KEY 79205002 AIF ('&EXTKEY' EQ 'SUPR').SUPR SUPREVISOR KEY 79212002 AIF ('&EXTKEY' EQ 'DATAMGT').DTMGT DATA MGT KEY 79219002 AIF ('&EXTKEY' EQ 'TCAM').TCAM TCAM KEY 79226002 AIF ('&EXTKEY' EQ 'VTAM').VTAM VTAM KEY 79233002 AIF (('&EXTKEY' EQ 'TCB') OR ('&EXTKEY' EQ 'RBT1') OR X79233702 ('&EXTKEY' EQ 'RBT234')).EXTKEY0 79234402 AIF ('&EXTKEY' EQ 'ZERO').ZEROK 79234802 AGO .ERROR16 79235102 .EXTKEY0 AIF (T'&WORKREG EQ 'O').ERROR14 79235802 AIF ((&WORKREG LT 0) OR (&WORKREG GT 15)).ERROR12 79236502 AIF (T'&SAVEKEY EQ 'O').EXTKEY1 79237202 AIF ('&SAVEKEY' EQ '(2)').EXTKEY2 79237302 AIF (&WORKREG EQ 2).WKREG2 SKIP REG SAVING IF REG2 @ZA26071 79237403 &NAME LR &WORKREG,2 SAVE REGISTER 2 79238203 IPK 0(0) SAVE CURRENT PSW KEY 79239003 STC 2,&SAVEKEY 79239803 LR 2,&WORKREG RESTORE REGISTER 2 79240603 AGO .EXTKEY1 79241403 .WKREG2 ANOP @ZA26071 79242203 &NAME IPK 0(0) SAVE CURRENT PSW KEY @ZA26071 79243003 STC 2,&SAVEKEY @ZA26071 79243803 AGO .EXTKEY1 @ZA26071 79244603 .EXTKEY2 ANOP 79246802 &NAME IPK 0(0) SAVE CURRENT PSW KEY 79256002 .EXTKEY1 ANOP 79274002 AIF ('&EXTKEY' EQ 'TCB').TCB KEY FROM TCB 79283002 AIF ('&EXTKEY' EQ 'RBT1').RBT1 KEY FROM SVRB 79292002 AIF ('&EXTKEY' EQ 'RBT234').RBT234 KEY FROM CALLERS RB 79301002 .* SYMBOLIC VALUES 79310002 .SCHED ANOP 79317002 &PSWKEY SETA X'10' SCHEDULER KEY IS 1 79324002 AGO .SETKEY 79331002 .JES ANOP 79332002 &PSWKEY SETA X'10' JES KEY IS 1 79333002 AGO .SETKEY 79334002 .RSM ANOP 79338002 &PSWKEY SETA 0 RSM KEY IS 0 79345002 AGO .SETKEY 79352002 .VSM ANOP 79359002 &PSWKEY SETA 0 VSM KEY IS 0 79366002 AGO .SETKEY 79373002 .SRM ANOP 79380002 &PSWKEY SETA 0 SYSTEM RESOURCE MANAGER KEY IS 0 79387002 AGO .SETKEY 79394002 .SUPR ANOP 79401002 &PSWKEY SETA 0 SUPERVISOR KEY IS 0 79408002 AGO .SETKEY 79415002 .DTMGT ANOP 79422002 &PSWKEY SETA X'50' DATA MGT KEY IS 5 79429002 AGO .SETKEY 79436002 .TCAM ANOP 79443002 &PSWKEY SETA X'60' TCAM KEY IS 6 79450002 AGO .SETKEY 79457002 .VTAM ANOP 79464002 &PSWKEY SETA X'60' VTAM KEY IS 6 79471002 AGO .SETKEY 79478002 .ZEROK ANOP 79480002 &PSWKEY SETA 0 79482002 AGO .SETKEY 79484002 .* GET KEY FROM TCB 79485002 .TCB ANOP 79492002 AIF (T'&SAVEKEY NE 'O').TCB1 79499002 &NAME IC &WORKREG,TCBPKF GET KEY FROM TCB 79505002 AGO .TCB2 79511002 .TCB1 ANOP 79517002 IC &WORKREG,TCBPKF GET KEY FROM TCB 79523002 .TCB2 ANOP 79529002 SPKA 0(&WORKREG) SET PSW KEY 79535002 MEXIT 79541002 .* GET KEY FROM SVRB 79548002 .RBT1 ANOP 79555002 AIF (T'&SAVEKEY NE 'O').RBT11 79562002 &NAME L &WORKREG,TCBRBP RB POINTER FROM TCB 79568002 AGO .RBT12 79574002 .RBT11 ANOP 79580002 L &WORKREG,TCBRBP RB POINTER FROM TCB 79586002 .RBT12 ANOP 79592002 IC &WORKREG,RBOPSW+1-RBBASIC(,&WORKREG) KEY FROM RB OPSW 79598002 SPKA 0(&WORKREG) SET PSW KEY 79604002 MEXIT 79611002 .* GET KEY FROM CALLERS RB 79618002 .RBT234 ANOP 79625002 AIF (T'&SAVEKEY NE 'O').RBT2341 79632002 &NAME L &WORKREG,TCBRBP RB POINTER FROM TCB 79638002 AGO .RBT2342 79644002 .RBT2341 ANOP 79650002 L &WORKREG,TCBRBP RB POINTER FROM TCB 79656002 .RBT2342 ANOP 79662002 L &WORKREG,RBLINK-RBBASIC(,&WORKREG) NEXT RB ADDRESS 79668002 IC &WORKREG,RBOPSW+1-RBBASIC(,&WORKREG) KEY FROM RB OPSW 79674002 SPKA 0(&WORKREG) SET PSW KEY 79680002 MEXIT 79688002 .* GENERATE SPKA INSTRUCTION 79695002 .SETKEY ANOP 79702002 AIF (T'&SAVEKEY NE 'O').SETKEYA 79709002 &NAME SPKA &PSWKEY.(0) SET PSW KEY 79716002 MEXIT 79723002 .SETKEYA ANOP 79730002 AIF ('&SAVEKEY' EQ '(2)').SETKEYD 79730702 AIF (T'&WORKREG EQ 'O').ERROR14 TEST FOR WORKREG OPERAND 79731402 AIF ((&WORKREG LT 0) OR (&WORKREG GT 15)).ERROR12 VALID CHK 79732102 AIF (&WORKREG EQ 2).SETKEYB TEST IF REG 2 TO BE SAVED 79732802 &NAME LR &WORKREG,2 SAVE REGISTER 2 79733502 IPK 0(0) SAVE CURRENT PSW KEY 79734202 AGO .SETKEYC 79734902 .SETKEYB ANOP 79735602 &NAME IPK 0(0) SAVE CURRENT PSW KEY 79737002 .SETKEYC ANOP 79740002 SPKA &PSWKEY.(0) SET PSW KEY 79744002 STC 2,&SAVEKEY 79751002 AIF (&WORKREG EQ 2).EXIT 79753002 LR 2,&WORKREG RESTORE REGISTER 2 79755002 MEXIT 79758002 .SETKEYD ANOP 79765002 &NAME IPK 0(0) SAVE CURRENT PSW KEY 79765102 SPKA &PSWKEY.(0) SET PSW KEY 79765202 MEXIT 79765302 .KEYAD ANOP 79765402 AIF (T'&KEYADDR EQ 'O').NKEYAD TEST IF KEYADDR OMITTED 79765502 AIF ('&KEYADDR' EQ '(2)').KEYAD10 79765602 AIF (T'&WORKREG EQ 'O').ERROR14 TEST FOR WORKREG OPERAND 79765702 AIF ((&WORKREG LT 0) OR (&WORKREG GT 15)).ERROR12 VALID CHK 79765802 AIF (T'&SAVEKEY EQ 'O').KEYAD4 79765902 AIF ('&SAVEKEY' EQ '(2)').KEYAD6 79766002 AIF (&WORKREG EQ 2).KEYAD1 TEST IF REG 2 TO BE SAVED 79766102 &NAME LR &WORKREG,2 SAVE REGISTER 2 79766202 IPK 0(0) SAVE CURRENT PSW KEY 79766302 AGO .KEYAD3 79766402 .KEYAD1 ANOP 79766502 &NAME IPK 0(0) SAVE CURRENT PSW KEY 79766602 .KEYAD3 ANOP 79766702 STC 2,&SAVEKEY 79766802 AIF (&WORKREG EQ 2).KEYAD2 79766902 LR 2,&WORKREG RESTORE REGISTER 2 79767002 .KEYAD2 ANOP 79767102 IC &WORKREG,&KEYADDR GET KEY FROM SAVE LOCATION 79767202 AGO .KEYAD5 79767302 .KEYAD4 ANOP 79767402 &NAME IC &WORKREG,&KEYADDR GET KEY FROM SAVE LOCATION 79767502 .KEYAD5 ANOP 79767602 SPKA 0(&WORKREG) SET PSW KEY 79767702 MEXIT 79767802 .KEYAD6 ANOP 79767902 &NAME IPK 0(0) SAVE CURRENT PSW KEY 79768002 AGO .KEYAD2 79768102 .KEYAD10 AIF (T'&SAVEKEY EQ 'O').KEYAD11 79768202 AIF ('&SAVEKEY' EQ '(2)').ERROR18 79768302 AIF (T'&WORKREG EQ 'O').ERROR14 79768402 AIF (&WORKREG EQ 2).ERROR18 79768502 &NAME LR &WORKREG,2 SAVE REGISTER 2 79768602 IPK 0(0) SAVE CURRENT PSW KEY 79768702 STC 2,&SAVEKEY 79768802 LR 2,&WORKREG RESTORE REGISTER 2 79768902 SPKA 0(2) SET PSW KEY 79769002 MEXIT 79769102 .KEYAD11 ANOP 79769202 &NAME SPKA 0(2) SET PSW KEY 79769302 MEXIT 79769402 .NKEYAD ANOP 79769502 AIF (T'&SAVEKEY EQ 'O').ERROR13 WORKREG ONLY OPERAND 79769602 AIF ('&SAVEKEY' EQ '(2)').NKEYAD4 79769702 AIF (T'&WORKREG EQ 'O').ERROR14 TEST FOR WORKREG OPERAND 79769802 AIF ((&WORKREG LT 0) OR (&WORKREG GT 15)).ERROR12 VALID CHK 79769902 AIF (&WORKREG EQ 2).NKEYAD2 TEST IF REG 2 TO BE SAVED 79770002 &NAME LR &WORKREG,2 SAVE REGISTER 2 79770102 IPK 0(0) SAVE CURRENT PSW KEY 79770202 AGO .NKEYAD3 79770302 .NKEYAD2 ANOP 79770402 &NAME IPK 0(0) SAVE CURRENT PSW KEY 79772002 .NKEYAD3 ANOP 79775002 STC 2,&SAVEKEY 79779002 AIF (&WORKREG EQ 2).EXIT 79779702 LR 2,&WORKREG RESTORE REGISTER 2 79780402 MEXIT 79781102 .NKEYAD4 ANOP 79781802 &NAME IPK 0(0) SAVE CURRENT PSW KEY 79782502 MEXIT 79783202 .EXIT ANOP 79783902 MEXIT 79784602 MEXIT 79786002 .ERROR1 ANOP 79800000 MNOTE 12,'REG FUNCTION NO LONGER SUPPORTED' YM4244 80500002 MEXIT 81200000 .ERROR2 ANOP 81900000 MNOTE 12,'INVALID KEY OPERAND SPECIFIED' 82600000 MEXIT 83300000 .ERROR3 ANOP 84000000 MNOTE 12,'INVALID MODE OPERAND SPECIFIED' 84700000 MEXIT 85400000 .ERROR5 ANOP 88200000 MNOTE 12,'SYSMASK FUNCTION NO LONGER SUPPORTED' YM4244 88900002 MEXIT 89600000 .ERROR6 ANOP 90300000 MNOTE 12,'INVALID MF OPERAND' 91000000 MEXIT 91700000 .ERROR7 ANOP 92400000 MNOTE 12,'INVALID REGISTER SPECIFICATION' 93100000 MEXIT 93800000 .ERROR8 ANOP 94500000 MNOTE 12,'MF=E SPECIFIED WITH OTHER OPERANDS' 95200000 AGO .CK6 95900000 .ERROR9 ANOP 96600000 MNOTE 12,'NO OPERANDS SPECIFIED' 97300000 MEXIT 97400002 .ERROR10 ANOP 97500002 MNOTE 12,'ENABLE FUNCTION HAS BEEN REPLACED BY SETLOCK MACRO' 97600002 MEXIT 97700002 .ERROR11 ANOP 97800002 MNOTE 12,'PSW KEY OPERANDS SPECIFIED WITH OTHER OPERANDS' 97900002 MEXIT 97904002 .ERROR12 ANOP 97908002 MNOTE 12,'INVALID WORKREG PARAMETER' 97912002 MEXIT 97916002 .ERROR13 ANOP 97920002 MNOTE 12,'WORKREG SPECIFIED ALONE' 97924002 MEXIT 97928002 .ERROR14 ANOP 97932002 MNOTE 12,'WORKREG OPERAND MISSING' 97936002 MEXIT 97940002 .ERROR15 ANOP 97944002 MNOTE 12,'EXTKEY AND KEYADDR MUST BE MUTUALLY EXCLUSIVE' 97948002 MEXIT 97952002 .ERROR16 ANOP 97956002 MNOTE 12,'INVALID EXTKEY OPERAND' 97960002 MEXIT 97964002 .ERROR18 ANOP 97980002 MNOTE 12,'REGISTER 2 USAGE CONFLICT' 97984002 MEND 98000000 * */ 98050002 * MODESET: 98100002 */********************************************************************/ 98150002 */* PL/S VERSION OF MODESET MACRO. WHEN ISSUED CAUSES A SUPERVISOR */ 98200002 */* ROUTINE TO ALTER THE SVC OLD PSW SO THAT THE DESIRED PSW WILL BE */ 98250002 */* LOADED WHEN MODESET RETURNS TO THE USER. */ 98300002 */********************************************************************/ 98350002 * MACRO 98400002 * KEYS(KEY, /* KEY(NZERO OR ZERO) */ 98450002 * MODE, /* MODE(PROB OR SUP) */ 98500002 * SYSMASK, /* SYSMASK(RELOC,YES OR NO) */ 98550002 * /* SYSMASK(IO,YES OR NO) */ 98600002 * /* SYSMASK(EXT,YES OR NO) */ 98650002 * MF, /* MF(L OR E,LIST NAME) */ 98700002 * REG, /* REG(VBL NAME) */ 98750002 * RTCD, /* RTCD(VBL NAME)-SVC RETURN CODE */ 98800002 * EXTKEY, /* EXTKEY(SCHED OR RSM OR VSM OR */ 98850002 * /* OPTIMZER OR SUPR OR */ 98900002 * /* DATAMGT OR TCAM OR ATCAM*/ 98950002 * /* OR HASP OR TCB OR RBT1 OR 99000002 * RBT234 */ 99050002 * KEYADDR, /* KEY CONTAINED IN A 1 BYTE LOC. 99100002 * WITHIN ROUTINES WORK STORAGE */ 99150002 * WORKREG, /* REGISTER INTO WHICH CONTENTS OF 99200002 * REGISTER 2 ARE SAVED */ 99250002 * SAVEKEY); /* SAVEKEY(VBL NAME) */ 99300002 * ANS('?'||MACLABEL||'MODESETP '||MACLIST||MACKEYS||';'); 99350002 *%END; 99400002