ibm:vm370-lib:rscs:dmtpst.assemble_src
Table of Contents
DMTPST Source
References
- Fixes Applied : 0
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [Unmodified]
Source Listing
- DMTPST.ASSEMBLE.txt
- PST TITLE 'DMTPST (RSCS) VM/370 - RELEASE 6' 00001000
- *. 00002000
- * MODULE NAME - 00003000
- * 00004000
- * DMTPST 00005000
- * 00006000
- * FUNCTION - 00007000
- * 00008000
- * THE DMTPST MODULE IS A SERVICE ROUTINE WHICH MAY 00009000
- * BE CALLED FROM ANYWHERE IN THE RSS SYSTEM. DMTPST 00010000
- * IS USED TO SIGNAL THE COMPLETION OF AN EVENT BY 00011000
- * MEANS OF POSTING THE EVENT'S ASSOCIATED SYNCH 00012000
- * LOCK. DMTPST IS ENTIRELY REENTRANT, USES NO MAIN 00013000
- * STORAGE (EXCEPT THE SYNCH LOCK WHICH IS SPECIFIED 00014000
- * TO BE POSTED), AND MAY BE ENTERED WITH PSW 00015000
- * INTERRUPT MASKS ON OR OFF. DMTPST DOES NOT CHANGE 00016000
- * THE STATE OF THE RUNNING PSW IN ANY WAY. 00017000
- * 00018000
- * ATTRIBUTES - 00019000
- * 00020000
- * REENTRANT 00021000
- * 00022000
- * ENTRY POINTS - 00023000
- * 00024000
- * DMTPST - SIGNAL EVENT COMPLETION TO A TASK 00025000
- * 00026000
- * ENTRY CONDITIONS - 00027000
- * GPR0 = ONE BYTE POST CODE 00028000
- * GPR1 = ADDR OF SYNCH LOCK TO BE POSTED 00029000
- * GPR14 = RETURN ADDRESS 00030000
- * 00031000
- * EXIT CONDITIONS - 00032000
- * 00033000
- * NORMAL - 00034000
- * 00035000
- * GPR0 = ADDR OF POSTED SYNCH LOCK 00036000
- * GPR1 = ADDR OF POSTED SYNCH LOCK 00037000
- * 00038000
- * ERROR - 00039000
- * 00040000
- * NONE 00041000
- * 00042000
- EJECT 00043000
- * 00044000
- * CALLS TO OTHER ROUTINES - 00045000
- * 00046000
- * NONE 00047000
- * 00048000
- * EXTERNAL REFERENCES - 00049000
- * 00050000
- * NONE 00051000
- * 00052000
- * TABLES / WORKAREAS - 00053000
- * 00054000
- * TASK ELEMENT (SUPERVISOR QUEUE) 00055000
- * 00056000
- * REGISTER USAGE - 00057000
- * 00058000
- * GPR0 = SCRATCH (SYNCH LOCK ADDR SAVE REG) 00059000
- * GPR1 = SYNCH LOCK ADDR, TASK ELEMENT POINTER 00060000
- * GPR2 = UNUSED 00061000
- * GPR3 = UNUSED 00062000
- * GPR4 = UNUSED 00063000
- * GPR5 = UNUSED 00064000
- * GPR6 = UNUSED 00065000
- * GPR7 = UNUSED 00066000
- * GPR8 = UNUSED 00067000
- * GPR9 = UNUSED 00068000
- * GPR10 = UNUSED 00069000
- * GPR11 = UNUSED 00070000
- * GPR12 = UNUSED 00071000
- * GPR13 = UNUSED 00072000
- * GPR14 = RETURN ADDRESS 00073000
- * GPR15 = UNUSED 00074000
- * 00075000
- * NOTES - 00076000
- * 00077000
- * NONE 00078000
- * 00079000
- * OPERATION - 00080000
- * 00081000
- * 00082000
- * DMTPST POSTS THE SYNCH LOCK SPECIFIED IN THE CALL 00083000
- * BY PLACING THE SPECIFIED ONE-BYTE CODE IN THE HIGH 00084000
- * ORDER BYTE OF THE SYNCH LOCK (AND FORCING THE HIGH 00085000
- * ORDER BIT OF THE SYNCH LOCK TO ONE). IF THE 00086000
- * SPECIFIED SYNCH LOCK HAS BEEN WAITED ON (IF A TASK 00087000
- * ELEMENT ADDRESS HAS BEEN SET IN THE SYNCH LOCK), 00088000
- * THE WAITING TASK'S TASK ELEMENT ADDRESS IS LOADED 00089000
- * FROM THE SYNCH LOCK AND THE "WAITING" BIT IN THE 00090000
- * TASK TABLE IS SET TO ZERO. (THIS MAKES THE TASK 00091000
- * DISPATCHABLE.) THE LOW ORDER THREE BYTES OF THE 00092000
- * SYNCH LOCK ARE SET TO ZERO, AND CONTROL IS 00093000
- * RETURNED DIRECTLY TO THE CALLER BY MEANS OF A 00094000
- * BRANCH (CONTROL IS NOT PASSED TO THE DISPATCHER). 00095000
- * 00096000
- *. 00097000
- EJECT 00098000
- DMTPST CSECT 00099000
- SPACE 00100000
- USING TASKE,R1 GET TASK ELEMENT ADDRESSABILITY 00101000
- STC R0,0(R1) STORE POST CODE IN SYNLOCK TO BE POSTED 00102000
- OI 0(R1),X'80' AND SET HIGH-ORDER BIT TO FORCE NON-ZERO 00103000
- OC 1(3,R1),1(R1) IS THERE A TASK ELEMENT ADDRESS HERE? 00104000
- BCR 8,R14 NOPE - MUST BE AN EARLY POST - ALL DONE 00105000
- L R0,0(R1) REG 0 (SCRATCH REG) = ADDR OF SOME TASK ELEMENT 00106000
- XC 1(3,R1),1(R1) CLEAR TASK ELEMENT ADDRESS FROM THE SYNLOC 00107000
- XR R0,R1 THIS IS A TRICK TO SWAP THE CONTENTS OF TWO REGS, 00108000
- XR R1,R0 WITHOUT USING ANY NON-REGISTER STORAGE 00109000
- XR R0,R1 NEVER THOUGHT I'D NEED TO USE IT 00110000
- NI TASKSTAT,X'FF'-WAITING SET TASK DISPATCHABLE 00111000
- LR R1,R0 RESTORE ADDRESS OF THE SYNLOCK TO REG.1 00112000
- BR R14 AND RETURN TO THE CALLER 00113000
- EJECT 00114000
- COPY TASKE 00115000
- EJECT 00116000
- COPY RSSEQU 00117000
- END 00118000
ibm/vm370-lib/rscs/dmtpst.assemble_src.txt ยท Last modified: 2023/08/06 13:39 by Site Administrator