UI01 TITLE '''IEDQUI'' - USER INTERFACE ROUTINE' 00500020 IEDQUI CSECT 01000020 *A895000 A49201 01200010 *********************************************************************** 01500020 * * 02000020 *STATUS -- CHANGE LEVEL 0 * 02500020 * * 03000020 *FUNCTION -- USER INTERFACE IS THE COMMON ROUTINE THROUGH WHICH ALL * 03500020 * MESSAGE HANDLER MACRO EXPANSIONS LINK TO FIRST-LEVEL MESSAGE * 04000020 * HANDLER ROUTINES. IT SAVES THE USER'S REGISTERS, INITIALIZES * 04500020 * REGISTER CONTENTS TO COMMONLY NEEDED VALUES, ACCESSES THE * 05000020 * ADDRESS OF THE ROUTINE TO BE LINKED TO AND EXITS TO IT. USER * 05500020 * INTERFACE IS ALSO USED BY CERTAIN FIRST-LEVEL MESSAGE HANDLER * 06000020 * ROUTINES TO PROVIDE INITIALIZATION AND LINKAGE TO LOWER LEVEL * 06500020 * MESSAGE HANDLER ROUTINES. IT ALSO USED AS THE RETURN INTER- S22025 06800010 * FACE WHEN USING THE PLUS FOUR ENTRY. IT RESTORES THE USER'S S22025 07100010 * REGISTERS 2 THROUGH 12 AND 14 FROM THE SAVE AREA POINTED TO S22025 07400010 * BY REGISTER 13 AND EXITS ON REGISTER 14. THIS MODULE PROVIDES * 07700010 * INDEPENDENT REGISTER PROTECTION BETWEEN MESSAGE HANDLER LEVELS. * 08000020 * * 08500020 * REGISTERS 2 THROUGH 12 AND 14 ARE SAVED IN THE SAVE AREA * 09000020 * POINTED TO BY REGISTER 13. * 09500020 * * 10000020 * THE ADDRESS OF THE ADDRESS VECTOR TABLE (AVT) IS ACCESSED FROM * 10500020 * THE COMMUNICATION VECTOR TABLE (CVT). THE ADDRESS OF THE * 11000020 * CURRENT BUFFER IS ACCESSED FROM THE AVT (AVTADBUF). THE ADDRESS * 11500020 * OF THE LCB IS ACCESSED FROM THE BUFFER PREFIX (PRFLCB). THE * 12000020 * ADDRESS OF THE CURRENT SCB IS ACCESSED FROM THE LCB (LCBSCBA). * 12500020 * * 13000020 * REGISTER 0 IS SET TO A VALUE OF ONE TO INDICATE INITIAL (NON- * 13500020 * MULTIPLE BUFFER HEADER) ENTRY. * 14000020 * * 14500020 * THE ADDRESS OF THE MESSAGE HANDLER VCON TABLE IS ACCESSED FROM * 15000020 * THE AVT (AVTMSGS). THE INDEX TO THE ADDRESS OF THE ROUTINE TO * 15500020 * BE ENTERED IS ACCESSED FROM THE FIRST BYTE OF THE PARAMETER * 16000020 * LIST, INDEX-BYTE FLAGS ARE CLEARED, AND THE INDEX IS ADDED TO * 16500020 * THE MESSAGE HANDLER VCON TABLE ADDRESS. THE ADDRESS OF THE * 17000020 * ROUTINE TO BE ENTERED IS ACCESSED FROM THE RESULTING LOCATION * 17500020 * INTO REGISTER 12. USER INTERFACE THEN EXITS ON REGISTER 12, * 18000020 * WHICH BECOMES THE BASE FOR THE ROUTINE BEING ENTERED. * 18500020 * * 19000020 *ENTRY POINTS -- * 19500020 * * 19600010 * PLUS 0 ENTRY: S22025 19700010 * * 19800010 * 'IEDQUI' TO SAVE REGISTERS, INITIALIZE REGISTERS AND EXIT * 20000020 * TO THE ROUTINE SELECTED. CALLING SEQUENCE FROM THE MESSAGE * 20500020 * HANDLER MACRO EXPANSION OR FROM THE FIRST-LEVEL MESSAGE * 21000020 * HANDLER ROUTINE IS: * 21500020 * * 22000020 * BAL 1,*+(PARAMETER LIST LENGTH) SET ADDR OF PARAM LIST * 22500020 * * 23000020 * ******************************** * 23500020 * * VCON * PARAM * * * 24000020 * * TABLE * LIST * * PARAMETER LIST * 24500020 * * INDEX * LNGTH * * (GENERATED BY MH * 25000020 * ***************** PARAMETER * MACRO OR BUILT * 25500020 * * * BY MH ROUTINE) * 26000020 * * INFORMATION * * 26500020 * * * * 27000020 * * * 27500020 * * * 28000020 * * 28500020 * L 15,IEDUI GET USER INTERFACE ADDRESS * 29000020 * BALR 14,15 EXIT TO USER INTERFACE * 29500020 * * 30000020 * PLUS 4 ENTRY: S22025 30050010 * * 30100010 * 'IEDQUI+4' TO RESTORE THE CALLER'S REGISTERS AND RETURN S22025 30150010 * TO THE CALLER. CALLING SEQUENCE IS: S22025 30200010 * S22025 30250010 * L R12,AVTUI GET USER INTERFACE ROUT S22025 30300010 * B FOUR(R12) EXIT TO RETURN TO CALLER S22025 30350010 * S22025 30400010 *INPUT -- * 30500020 * PLUS 0 ENTRY: S22025 30600010 * S22025 30700010 * REGISTER 1 - THE ADDRESS OF A PARAMETER LIST WHOSE FIRST BYTE * 31000020 * CONTAINS THE MH VCON TABLE INDEX TO THE ROUTINE TO BE ENTERED. * 31500020 * * 32000020 * REGISTER 13 - THE ADDRESS OF THE CALLER'S REGISTER SAVE AREA. * 32500020 * * 33000020 * S22025 33080010 * PLUS 4 ENTRY: S22025 33160010 * S22025 33240010 * REGISTER 13 -- THE ADDRESS OF THE CALLING ROUTINES SAVE AREA.S22025 33320010 * S22025 33400010 *OUTPUT -- * 33500020 * S22025 33600010 * PLUS 0 ENTRY: S22025 33700010 * S22025 33800010 * REGISTER 0 - ENTRY CODE, VALUE OF ONE. * 34000020 * * 34500020 * REGISTER 1 - PARAMETER LIST ADDRESS. * 35000020 * * 35500020 * REGISTER 3 - THE ADDRESS OF THE SCB. * 36000020 * * 36500020 * REGISTER 4 - THE ADDRESS OF THE LCB. * 37000020 * * 37500020 * REGISTER 6 - THE ADDRESS OF THE CURRENT BUFFER. * 38000020 * * 38500020 * REGISTER 9 - THE ADDRESS OF THE AVT. * 39000020 * * 39500020 * REGISTER 12 - THE ENTRY POINT ADDRESS AND BASE REGISTER FOR * 40000020 * THE ROUTINE TO BE ENTERED. * 40500020 * * 41000020 * REGISTER 13 - THE ADDRESS OF THE CALLING ROUTINE'S SAVE AREA. * 41500020 * * 42000020 * REGISTER 14 - RETURN ADDRESS TO THE CALLING ROUTINE. * 42500020 * * 43000020 * PLUS 4 ENTRY: S22025 43100010 * S22025 43200010 * REGISTERS 2 THROUGH 12 AND 14 -- RESTORED TO VALUES AT ENTRY S22025 43300010 * FROM MESSAGE HANDLER OR FROM FIRST-LEVEL MH ROUTINES. S22025 43400010 *EXTERNAL REFERENCES -- * 43500020 * AVT - ADDRESS VECTOR TABLE. * 44000020 * * 44500020 * CVT - COMMUNICATION VECTOR TABLE. * 45000020 * * 45500020 * BUFFER TO BE PROCESSED. * 46000020 * * 46500020 * LCB - LINE CONTROL BLOCK. * 47000020 * * 47500020 * SCB - STATION CONTROL BLOCK FOR THE CURRENT STATION. * 48000020 * * 48500020 * MESSAGE HANDLER VCON TABLE (AVTMSGS). * 49000020 * * 49500020 *EXITS, NORMAL -- S22025 49800010 * PLUS 0 ENTRY: EXIT IS MADE TO THE ROUTINE SPECIFIED. S22025 50100010 * REGISTER 0 CONTAINS AN ENTRY CODE OF ONE. REGISTERS 1, 3, 4, * 50500020 * 6 AND 9 ARE INITIALIZED TO COMMONLY NEEDED VALUES. REGISTER 12 * 51000020 * CONTAINS THE ADDRESS OF THE ROUTINE BEING ENTERED. THE SAVE * 51500020 * AREA POINTED TO BY REGISTER 13 CONTAINS THE CALLER'S REGISTERS * 52000020 * 2 THROUGH 12 AND 14. * 52500020 * * 53000020 * PLUS 4 ENTRY: REGISTERS 2 THROUGH 12 AND 14 CONTAIN THE S22025 53100010 * VALUES RESTORED FROM THE SAVE AREA POINTED TO BY THE S22025 53200010 * BACKWARD POINTER LOCATED AT FOUR PASSED THE ADDRESS IN R13. S22025 53300010 * * 53400010 *EXITS, ERROR -- N/A. * 53500020 * * 54000020 *TABLES/WORK AREAS -- N/A. * 54500020 * * 55000020 *ATTRIBUTES -- REENTRANT, REFRESHABLE, ENABLED, RESIDENT, * 55500020 * PROBLEM PROGRAM MODE. * 56000020 * * 56500020 *NOTES -- THE OPERATION OF THIS MODULE DOES NOT DEPEND UPON AN * 57000020 * INTERNAL REPRESENTATION OF THE EXTERNAL CHARACTER SET. * 57500020 * * 58000020 *********************************************************************** 58500020 EJECT 58700010 SPACE 59000020 ********* REGISTER EQUATES ********* 59500020 SPACE 60000020 R0 EQU 0 WORK REGISTER 60500020 SPACE 61000020 R1 EQU 1 PARAMETER LIST ADDRESS 61500020 SPACE 62000020 R2 EQU 2 WORK REGISTER 62500020 SPACE 63000020 RSCB EQU 3 CURRENT SCB ADDRESS 63500020 SPACE 64000020 RLCB EQU 4 LCB ADDRESS 64500020 SPACE 65000020 RSCAN EQU 5 SCAN POINTER ADDRESS 65500020 SPACE 66000020 RPREFIX EQU 6 BUFFER ADDRESS 66500020 SPACE 67000020 RAVT EQU 9 AVT ADDRESS 67500020 SPACE 68000020 R12 EQU 12 BASE & BRANCH ADDRESS 68500020 SPACE 69000020 R13 EQU 13 SAVE AREA ADDRESS 69500020 SPACE 70000020 R14 EQU 14 MH RETURN ADDRESS 70500020 SPACE 71000020 R15 EQU 15 LINK ADDRESS 71500020 SPACE 72000020 ********* OTHER EQUATES ********* 72500020 SPACE 73000020 ANDLOW EQU X'FC' MASK TO CLEAR INDEX FLAGS 73500020 SPACE 74000020 ONE EQU 1 NON-MBH ENTRY CODE 74500020 SPACE 75000020 CVTOFF EQU 16 ADDRESS OF THE CVT 75500020 SPACE 75600020 EJECT 76000020 USING IEDQUI01,R15 76500020 SPACE 76700020 IEDQUI01 EQU * S22025 76780010 B ENTER BRANCH TO SAVE REGISTER S22025 76860010 IEDQUI02 EQU * +4 ENTRY FOR RETURN S22025 76940010 L R13,4(R13) ADDR OF PREV SAVE AREA S22025 77020010 L R14,12(R13) LOAD RETRUN ADDRESS S22025 77100010 LM R2,R12,28(R13) REST PREV REG CONTENTS S22025 77180010 MVI 12(R13),X'FF' SET BYTE S22025 77260010 BR R14 RETURN TO CALLER S22025 77340010 IEDQUI IEDHJN , MODULE ID S22025 77440010 ENTER EQU * S22025 77580010 STM R14,R12,12(R13) STORE CALLERS REGISTERS S22025 77660010 L RAVT,CVTOFF GET ADDRESS OF CVT S22025 77740010 L RAVT,AVTCVTPT(,RAVT) FIND POINTER TO AVT S22025 77820010 L RAVT,AVTEZERO(,RAVT) GET ADDRESS OF AVT S22025 77900010 USING IEDQAVTD,RAVT S22025 77980010 LR R12,R13 LOAD CALLERS ADDR IN REG S22025 78060010 LA R13,72(R13) LOAD MY SAVE AREA ADDR S22025 78140010 ST R12,4(R13) CONTENTS OF REG 13 STOREDS22025 78220010 ST R13,8(R12) ST SAVE ADDR S22025 78300010 SPACE 78500020 SPACE 80600020 SPACE 81000020 L RPREFIX,AVTADBUF INITIALIZE BUFFER ADDR 81500020 USING IEDQPRF,RPREFIX 82000020 SPACE 83500020 L RLCB,PRFLCB-1 INITIALIZE LCB ADDR 84000020 USING IEDQLCB,RLCB 84500020 SPACE 85000020 L RSCB,LCBSCBA-1 GET ADDRESS OF SCB 85500020 SPACE 86000020 ROUTADDR EQU * 86500020 L R12,AVTMSGS-1 GET ADDR OF VCON TABLE 87000020 IC R15,AVTEZERO(,R1) GET INDEX TO ROUTINE ADDR 87500020 LA R0,ANDLOW SET UP MASK 88000020 *** NON-ZERO VALUE IN REGISTER 0 INDICATES ENTRY FROM IEDQUI *** 88500020 NR R15,R0 CLEAR INDEX FLAGS 89000020 L R12,AVTEZERO(R12,R15) GET ROUTINE ADDR 89500020 SR R15,R15 CLEAR REG 15 A49201 89700010 BR R12 EXIT TO ROUTINE 90000020 EJECT 90500020 ********* DSECTS ********* 91000020 SPACE 2 91500020 TAVTD 92000020 EJECT 92500020 TPRFD 93000020 EJECT 93500020 TLCBD 94000020 END 94500020