TITLE 'IEAVMODE - MODESET SERVICE ROUTINE' 00051002 IEAVMODE START 00052002 * /* START OF SPECIFICATIONS **** 00053002 * 00056002 *01* MODULE-NAME = IEAVMODE 00059002 * 00062002 *02* CSECT-NAME = IEAVMODE 00065002 * 00068002 *01* DESCRIPTIVE-NAME = MODESET SERVICE ROUTINE 00071002 * 00074002 *01* COPYRIGHT = NONE 00077002 * 00080002 *01* STATUS = 0 00083002 * 00086002 *01* FUNCTION = ANY OF THE FOLLOWING: 00089002 * 1. CHANGE THE KEY IN THE RB OLD PSW TO ZERO 00092002 * OR THE KEY VALUE IN THE CURRENT TCB. 00095002 * 2. CHANGE THE STATE IN THE RB OLD PSW TO 00100002 * PROBLEM OR SUPERVISOR. 00102002 * 00104002 *02* OPERATION = SEE METHOD OF OPERATION DIAGRAM. 00106002 * 00108002 *01* NOTES 00110002 * 00112002 *02* DEPENDENCIES = THIS MODULE DOES NOT CONTAIN 00114002 * HARDWARE DEPENDENCIES. MODULE RECEIVES 00116002 * CONTROL WITH LOCAL LOCK HELD. 00117002 * 00118002 *03* CHARACTER-CODE-DEPENDENCIES = THIS MODULE IS NOT 00120002 * CHARACTER CODE 00122002 * DEPENDENT. 00124002 * 00126002 *02* RESTRICTIONS = NONE 00128002 * 00130002 *02* REGISTER-CONVENTIONS = REFER TO 'REGISTER EQUATES' 00132002 * PORTION OF THIS MODULE. 00150002 * 00152002 *02* PATCH-LABEL = NONE WITHIN THIS MODULE. THE COMMON 00154002 * NUCLEUS MAINTENANCE AREA SHOULD BE 00156002 * USED (IEAPATCH). 00158002 * 00160002 *01* MODULE-TYPE = MODULE 00162002 * 00164002 *02* PROCESSOR = ASSEMBLER 00166002 * 00168002 *02* MODULE-SIZE = APPROXIMATELY 200 BYTES. 00170002 * 00172002 *02* ATTRIBUTES = RESIDENT, REFRESHABLE, KEY ZERO, 00174002 * SUPERVISOR MODE, ENABLE, 00176002 * LOCALLY LOCKED, TYPE 1 SVC 00178002 * 00180002 *01* ENTRY-POINT = IGC107 00182002 * 00184002 *02* LINKAGE = VIA SVC INTERRUPT HANDLER (TYPE 1 SVC) 00186002 * 00188002 *02* INPUT = REGISTER 00190002 * 0 - IRRELEVANT 00192002 * 1 - PARAMETER LIST 00194002 * 2 - IRRELEVANT 00196002 * 3 - ADDRESS OF CVT (NOT USED) 00200002 * 4 - ADDRESS OF CURRENT TCB 00203002 * 5 - ADDRESS OF CURRENT RB 00206002 * 6 - ENTRY POINT ADDRESS 00209002 * 7 - ADDRESS OF CURRENT ASCB 00212002 * 8-13 - IRRELEVANT 00215002 * 14 - RETURN ADDRESS 00218002 * 15 - IRRELEVANT 00221002 * 00224002 * PARAMETER LIST (CONTENTS OF REGISTER 1) 00227002 * BITS 0-25 = RESERVED (MUST BE ZERO) 00230002 * BITS 26-27 = 00 - NO ACTION 00233002 * 01 - INVALID 00236002 * 10 - PLACE TCB KEY IN RBOPSW 00250002 * 11 - SET RBOPSW KEY TO ZERO 00251002 * BITS 28-29 = 00 - NO ACTION 00252002 * 01 - TURN ON STATE BIT (PROB) IN 00253002 * RBOPSW 00254002 * 10 - INVALID 00255002 * 11 - TURN OFF STATE BIT (SUPR) IN 00256002 * RBOPSW 00257002 * BITS 30-31 = RESERVED (MUST BE ZERO) 00258002 * 00259002 *02* OUTPUT = REFER TO OUTPUT OF EXIT-NORMAL AND 00260002 * EXIT-ERROR 00261002 * 00262002 *02* REGISTER-SAVED = NONE (SAVED BY SVC INTERRUPT HANDLER) 00263002 * 00264002 *02* REGISTER-USAGE = REFER TO 'REGISTER EQUATES' 00265002 * PORTION OF THIS MODULE. 00266002 * 00267002 *02* REGISTERS-RESTORED = NONE (RESTORED AT EXIT TIME) 00268002 * 00269002 *01* EXIT-NORMAL = DONE (MAINLINE EXIT) 00270002 * 00271002 *02* CONDITIONS = FUNCTION COMPLETE, RETURN TO CALLER 00272002 * VIA BRANCHING TO ADDRESS CONTAINED 00273002 * IN REGISTER 14 AT ENTRY 00274002 * 00275002 *02* OUTPUT = REGISTERS 00276002 * 0-1 - UNPREDICTABLE 00277002 * 2-13 - SAME AS ENTRY 00278002 * (RESTORED WHEN REDISPATCHED) 00279002 * 14 - UNPREDICTABLE 00280002 * 15 - ZERO (SUCCESSFUL INDICATION 00281002 * FOR COMPATABILITY) 00282002 * DATA 00283002 * 00284002 * RBOPSW - KEY AND STATE MODIFIED AS REQUESTED 00284502 *02* RETURN-CODES = NONE 00285002 * 00286002 *01* EXIT-ERROR = ERRTN 00287002 * 00288002 *02* CONDITIONS = ABEND CALLER, INVALID INPUT DETECTED. 00289002 * 00300002 *02* OUTPUT = REGISTERS 00301002 * 0 - ABEND FLAGS 00302002 * 1 - ABEND CODE 00303002 * 2 - INPUT PARAMETER LIST 00304002 * 3-15 - IRRELEVANT 00305002 * 00306002 * 00307002 *02* RETURN-CODES = NONE 00308002 * 00309002 *01* EXTERNAL-REFERENCES 00310002 * 00311002 *02* ROUTINES = ABEND 00312002 * 00313002 *02* DATA-AREAS = LOCAL WORK/SAVE AREA - SERIALIZED VIA 00314002 * LOCAL LOCK 00315002 * 00316002 *02* CONTROL-BLOCKS = ASCB R 00317002 * ASXB R 00318002 * RB R,W 00319002 * TCB R 00320002 * WSAVT R 00321002 * 00322002 *01* TABLES = LOCAL SAVE AREA - SEE DSECT (STORAGE) 00323002 * COMMENTARY FOR DESCRIPTION 00324002 * 00325002 *01* MACROS = ABEND 00326002 * MODID 00327002 * 00328002 *02* SERIALIZATION = RESOURCES ENQUEUED - NONE 00329002 * LOCKS - LOCAL LOCK HELD WHEN ENTERED AND 00330002 * NEVER RELEASED 00331002 * 00332002 *01* CHANGE-ACTIVITY = THIS MODULE HAS BEEN COMPLETELY 00350002 * REWRITTEN FOR VS2 RELEASE 2 (AS THE 00352002 * RESULT OF PTM #VS04244), WHICH ELIMINATED 00354002 * MOST OF THE PREVIOUS MODESET FUNCTION. 00356002 * 00358002 *01* MESSAGES = NONE 00360002 * 00362002 *01* ABEND-CODES = 16B - INVALID INPUT PARAMETERS 00364002 * 00366002 **** END OF SPECIFICATIONS ***/ 00368002 * A-000000-999999 @YM04244 00370002 EJECT 00372002 ENTRY IGC107 00376002 IGC107 EQU IEAVMODE ENTRY NAME 00378002 BALR R6BASE,R0 ESTABLISH BASE REGISTER 00380002 USING *,R6BASE DITTO 00382002 USING TCB,R4TCB ESTABLISH TCB ADDRESSABILITY 00384002 USING RBBASIC,R5RB ESTABLISH RB ADDRESSABILITY 00400002 USING ASCB,R7ASCB ESTABLISH ASCB ADDRESSABILITY 00450002 MODID IDENTIFY MODULE 00550002 LTR R2PLIST,R1PLIST Q. NULL PARAMETER LIST 00600002 BZ ERRTN A. YES. INVALID INPUT 00650002 SPACE 2 00670002 L R8WK,RSVDBITS PREPARE TO TEST RESERVED BITS 00700002 NR R8WK,R1PLIST Q. RESERVED BITS SPECIFIED 00750002 BNZ ERRTN A. YES. INVALID INPUT 00800002 INPUTOK EQU * LOCATE WORK AREA 00850002 L R8WK,ASCBASXB ADDRESS ASXB 00900002 L R8WK,ASXBSPSA-ASXB(R8WK) ADDRESS WSA VECTOR TABLE 00950002 L R3SAVE,WSALCWSA-WSAL(R8WK) ADDRESS LOCAL WORK/SAVE AREA 01000002 USING STORAGE,R3SAVE WORK AREA ADDRESSABILITY 01050002 IC R8WK,RBOPSW+ONE GET PSW KEY AND MODE DATA 01100002 ST R1PLIST,PARMLIST SAVE INPUT PARAMETER LIST 01150002 STC R8WK,WORKBYTE SAVE PSW KEY AND MODE DATA 01200002 SPACE 2 01220002 TM KEYNMODE,MODEFLGS Q. MODE CHANGE REQUESTED 01250002 BZ CHECKKEY A. NO. SKIP IT 01300002 BO SMODE A. YES AND SUPR MODE REQUESTED 01350002 TM KEYNMODE,MODEBAD Q. INVALID MODE REQUEST 01400002 BO ERRTN A. YES. INVALID INPUT 01450002 PMODE EQU * A. NO. VALID PROBLEM MODE REQUEST 01500002 OI WORKBYTE,PROBMODE CHANGE TO PROBLEM MODE 01550002 B CHECKKEY MODE PROCESSING COMPLETE 01600002 SMODE EQU * SUPERVISOR MODE REQUESTED 01650002 NI WORKBYTE,SUPRMODE CHANGE TO SUPERVISOR MODE 01700002 SPACE 2 01720002 CHECKKEY EQU * KEY PROCESSING 01750002 TM KEYNMODE,KEYFLGS Q. KEY CHANGE REQUESTED 01800002 BZ DONE A. NO. SKIP IT. 01850002 BO ZEROKEY A. YES AND ZERO KEY REQUESTED 01900002 TM KEYNMODE,KEYBAD Q. INVALID KEY REQUEST 01950002 BO ERRTN A. YES. INVALID INPUT 01970002 NZEROKEY EQU * A. NO. VALID TCB KEY REQUEST 02000002 MVI TEMPKEY,CLRBITS ONLY KEY BITS OF TCB BYTE WANTED 02050002 NC TEMPKEY,TCBPKF ONLY KEY BITS WILL BE ON 02100002 NI WORKBYTE,CLEARKEY ZERO CURRENT KEY BITS 02150002 OC WORKBYTE(ONE),TEMPKEY TURN ON TCB KEY BITS 02200002 B DONE THAT'S ALL FOLKS 02250002 ZEROKEY EQU * ZERO KEY REQUESTED 02300002 NI WORKBYTE,CLEARKEY ZERO KEY BITS 02350002 SPACE 2 02370002 DONE EQU * NORMAL EXIT 02400002 IC R8WK,WORKBYTE GET NEW PSW KEY AND MODE DATA 02450002 STC R8WK,RBOPSW+ONE PUT NEW KEY AND MODE DATA INTO X02500002 RB OLD PSW 02550002 SR R15RC,R15RC SUCCESSFUL INDICATOR - COMPATABILITY 02570002 BR R14RTURN RETURN 02600002 SPACE 3 02650002 ERRTN EQU * INVALID INPUT - ABEND 02700002 ABEND X'16B',DUMP,,SYSTEM DUMP IT 02750002 EJECT 02800002 * REGISTER EQUATES 02850002 R0 EQU 0 USED FOR ESTABLISHING ADDRESSABILITY 02900002 R1PLIST EQU 1 CONTAINS INPUT PARAMETER LIST 02950002 R2PLIST EQU 2 COPY OF INPUT PARAMETER LIST 03000002 R3SAVE EQU 3 POINTS TO LOCAL MODESET WORK AREA 03050002 R4TCB EQU 4 POINTS TO CURRENT TCB 03194402 R5RB EQU 5 POINTS TO CURRENT RB 03203802 R6BASE EQU 6 BASE (ENTRY POINT ADDRESS) 03250802 R7ASCB EQU 7 POINTS TO CURRENT ASCB 03309602 R8WK EQU 8 WORK REGISTER 03369602 R14RTURN EQU 14 RETURN ADDRESS 03419602 R15RC EQU 15 CONTAINS SUCCESSFUL RETURN CODE 03439602 SPACE 2 03459602 * CONSTANTS 03509602 DS 0F INSURE FULL WORK BOUNDARY 03551602 RSVDBITS DC X'FFFFFFC3' RESERVED BITS OF PARAMETER LIST 03619602 ONE EQU 1 CONSTANT OF 1 03659602 SPACE 2 03709602 * MASKS 03759602 MODEFLGS EQU X'0C' MODE FLAGS 03819602 KEYFLGS EQU X'30' KEY FLAGS 03869602 PROBMODE EQU X'01' SET PROBLEM MODE 03919602 SUPRMODE EQU X'FE' SET SUPERVISOR MODE 03959602 CLRBITS EQU X'F0' ZERO NON-KEY BITS 03979602 CLEARKEY EQU X'0F' CLEARS KEY BITS 04018002 KEYBAD EQU X'10' DETERMINE VALIDITY OF KEY REQUEST 04068002 MODEBAD EQU X'08' DETERMINE VALIDITY OF MODE REQUEST 04118002 SPACE 2 04168002 STORAGE DSECT MAPS WORK AREA 04218002 PARMLIST DS F SAVE AREA FOR PARAMETER LIST 04318002 KEYNMODE EQU PARMLIST+3 KEY AND MODE FLAGS OF PARM LIST 04418002 WORKBYTE DS B NEW KEY AND MODE DATA 04518002 TEMPKEY DS B USED WHEN OBTAINING KEY FROM TCB 04618002 EJECT 04625002 IHAASCB 04632002 EJECT 04639002 IHAASXB 04646002 EJECT 04653002 IKJRB 04674002 EJECT 04681002 IKJTCB 04688002 EJECT 04695002 IHAWSAVT 04702002 END IEAVMODE 04718002