ASMB,R,Q,C HED OPERM 91750-16143 REV 2013 * (C) HEWLETT-PACKARD CO. 1980 NAM OPERM,19,30 91750-16143 REV.2013 800227 MEF SPC 1 ****************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * ****************************************************************** SPC 1 ENT OPERM EXT MESSS,#SLAV,#GET,#RSAX EXT #NODE,#RPB,#ATCH,DTACH RQB EQU #RPB SUP * * NAME: OPERM * SOURCE: 91750-18143 * RELOC: 91750-16143 * PGMR: JIM HARTSELL, ET AL * * MODIFIED BY JDH FOR DS REQUEST EQUATED OFFSETS 790220 * MODIFIED BY GAB FOR 91750 PRODUCT 790604 * MODIFIED BY JDH FOR REMOTE SESSION 790822 * * OPERM IS THE DS/1000 SLAVE MONITOR WHICH RECEIVES OPERATOR REQUESTS * INITIATED BY A REMOTE CPU. THIS MONITOR OPERATES ON STREAM 7. * SKP * GLBLK-START * ****************************************************************** * * * G L O B A L B L O C K REV XXXX 790531 * * * * GLOBAL OFFSETS INTO DS/1000 MESSAGE BUFFERS, USED BY: * * * * REMAT, RFMST, DEXEC, DMESS, FLOAD, POPEN, #MAST * * GET, #SLAV, RQCNV, RPCNV, GRPM, LSTEN, PTOPM * * EXECM, EXECW, OPERM, RFAM1, RFAM2, DLIST, DLIS3 * * * ****************************************************************** * ***!!!!! THE FIRST 7 WORDS (#STR THRU #ENO) MUST BE FIXED !!!!!*** #STR EQU 0 STREAM WORD. #SEQ EQU #STR+1 SEQUENCE NUMBER. #SRC EQU #SEQ+1 SOURCE NODE #. #DST EQU #SRC+1 DEST. NODE #. #EC1 EQU #DST+1 REPLY ECOD1. #EC2 EQU #EC1+1 REPLY ECOD2. #ENO EQU #EC2+1 NUMBER OF NODE REPORTING ERROR. * #ECQ EQU #ENO+1 ERROR CODE QUALIFIER (BITS 4 TO 7) #LVL EQU #ECQ MESSAGE FORMAT LEVEL (BITS 0 TO 3) #MAS EQU #LVL+1 MA "SEND" SEQ. # #MAR EQU #MAS+1 MA "RECV" SEQ. # #MAC EQU #MAR+1 MA "CANCEL" FLAGS #HCT EQU #MAC+1 HOP COUNT #SID EQU #HCT+1 SESSION ID WORD * #EHD EQU #SID LAST ITEM OF HEADER #MHD EQU #EHD+1 MINIMUM HEADER SIZE #REQ EQU #MHD START OF REQUEST SPECIFIC AREA #REP EQU #MHD START OF REPLY SPECIFIC AREA * #MXR EQU #MHD+24 <<< MAXIMUM DS REQ/REPLY BUFFER SIZE >>> #LSZ EQU 2 <<< SIZE OF LOCAL APPENDAGE AREA >>> * ****************************************************************** * * GLBLK-END SKP * OPBLK-START * ****************************************************************** * * * O P R E Q B L O C K REV XXXX 790531 * * * * OFFSETS INTO DS/1000 OPREQ MESSAGE BUFFERS, USED BY: * * * * DMESS, OPERM, RQCNV, RPCNV * * * ****************************************************************** * * OFFSETS INTO OPREQ REQUEST AND REPLY BUFFERS. * #CML EQU #REQ COMMAND LENGTH. #CMS EQU #CML+1 COMMAND STRING. #LGC EQU #CMS+1 LOGON REQUEST CODE #LNL EQU #LGC+1 LENGTH OF USER NAME #LUN EQU #LNL+1 LOGON USER NAME * #RLN EQU #REP REPLY LENGTH. #MSG EQU #RLN+1 REPLY MESSAGE. * * MAXIMUM SIZE OF OPREQ REQUEST/REPLY BUFFER. * #OLW EQU #CMS+23 M A X I M U M S I Z E ! ! ! * * OPBLK-END SKP OPERM LDA B,I GET INPUT PARAMETER STA CLSN SAVE CLASS NUMBER JSB DTACH DETACH IN CASE DINIT DEF *+1 WAS RUN UNDER SESSION * OPER1 JSB #GET WAIT FOR REQUEST. DEF *+6 DEF CLSN CLASS # DEF RQB REQUEST BUFFER DEF C#OLW MAX LENGTH DEF TEMP NO DATA. DEF B0 JMP OPER1 IGNORE ERROR * CLA CLEAR ERROR LOCATIONS. CLB DST RQB+#EC1 LDA #NODE INITIALIZE FOR LOCAL NODE #. STA RQB+#ENO LDA C#MHD INITIALIZE LEN PARAM. STA LEN * LDA RQB+#CML GET LENGTH SZA,RSS IF ZERO...SEND BACK ZERO TO THEM JMP DONE * CPA B2 IF COMMAND = "XX" RSS JMP GTSES LDA RQB+#CMS I.E. LOGON/OFF TO NON-SESSION NODE, CPA "XX" RSS JMP GTSES LDA RQB+#LGC (EXCEPT SPECIAL UPLIN LOG-OFF) CPA N1 JMP RLEAS (IN WHICH CASE IGNORE REQUEST) SZA,RSS IF LOG-OFF, REPLY WITH DEST SID = 0, JMP DONE ELSE LDA "04" JMP RSERR REPLY WITH "S.M. NOT INSTALLED". * RLEAS JSB #RSAX RELEASE TCB FOR IGNORED DEF *+4 NO-REPLY UPLIN DEF B7 LOG-OFF REQUEST. DEF RQB+#SEQ DEF RQB+#STR * JMP OPER1 GO WAIT FOR ANOTHER REQUEST. * GTSES LDA RQB+#SID GET SESSION ID WORD FROM REQ. AND B377 ISOLATE DEST. SESSION ID (IF ANY). STA TEMP SAVE SESSION ID FOR CALL * JSB #ATCH ATTACH TO THE SESSION CONTROL BLOCK. DEF *+2 (IF ANY) DEF TEMP * INA,SZA CHECK STATUS. JMP XCUTE SUCCESSFUL ATTACH. * LDA "01" "SCB NOT FOUND". RSERR STA RQB+#EC2 STORE ERROR TYPE. LDA "RS" STA RQB+#EC1 LDA RQB+#ENO SET "ASCII" BIT. IOR BIT15 STA RQB+#ENO CLA JMP DONE GO SEND REPLY FOR ERROR. * XCUTE JSB MESSS CALL SYSTEM MSG PROCESSOR WITH MESSAGE DEF *+3 DEF RQB+#CMS THE REPLY WILL COME IN THE SAME AREA DEF RQB+#CML * CMA,INA MAKE SYSTEM REPLY LENGTH POSITIVE BYTES CLE,ERA MAKE THIS POSITIVE WORDS SEZ INA DONE STA RQB+#RLN SAVE LENGTH IN WORDS INTO REPLY ADA L#MSG ADD STD LENGTH OF PARMB & LENGTH WORD STA LEN SAVE AS REPLY LENGTH * JSB DTACH DETACH FROM POSSIBLE SESSION CNTRL BLK DEF *+1 * LDA RQB+#STR GET STREAM TYPE IOR BIT14 SET IN FOR REPLY STA RQB+#STR SAVE AS REPLY STREAM * JSB #SLAV SEND REPLY DEF *+4 DEF LEN DEF B0 DEF B0 NOP IGNORE THE ERROR RETURN * JMP OPER1 WAIT FOR ANOTHER REQUEST * B EQU 1 B0 OCT 0 B2 OCT 2 B7 OCT 7 N1 DEC -1 B377 OCT 377 BIT14 OCT 40000 BIT15 OCT 100000 "01" ASC 1,01 "04" ASC 1,04 "RS" ASC 1,RS "XX" ASC 1,XX TEMP NOP CLSN NOP C#OLW ABS #OLW C#MHD ABS #MHD L#MSG ABS #MSG LEN NOP * END OPERM