ASMB,R,Q,C HED #UPSM 91750-1X038 REV 2013 * (C) HEWLETT-PACKARD CO. 1980 NAM #UPSM,7 91750-1X038 REV.2013 800324 ALL 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 THE HEWLETT-PACKARD COMPANY. * ****************************************************************** SPC 1 ENT #UPSM * EXT XLUEX,$OPSY,$LIBR,$LIBX,#POOL EXT #BREJ,#NRVS,#GRPM,#OTCV,#LEVL,#NODE,#MHCT * SUP * * NAME: #UPSM * SOURCE: 91750-18038 * RELOC: PART OF 91750-12014, -12015 * PGMR: JIM HARTSELL * * SUBROUTINE TO PERFORM REMOTE HP1000 SESSION CLEANUP FOR UPLIN. * * CALLING SEQUENCES: * * TO LOG OFF AN ABANDONED REMOTE HP 1000 SESSION: * * (A) = ADDR OF PNL ENTRY * JSB #UPSM * * * BUMP "IDLE TIME" TIMER ON ALL ACTIVE #POOL ENTRIES: * * CLA * JSB #UPSM SPC 5 *********************************************************************** * * * * * * N O T E ! ! * * * * * * * * * THIS MODULE BUILDS A LEVEL 1 REQUEST AND WRITES IT DIRECTLY * * TO THE DRIVER (ON GRPM'S CLASS VIA XLUEX CALL). * * * *********************************************************************** SKP * GLBLK-START * ****************************************************************** * * * G L O B A L B L O C K REV 2013 791213 * * * * GLOBAL OFFSETS INTO DS/1000 MESSAGE BUFFERS, USED BY: * * * * REMAT, RFMST, DEXEC, DMESS, FLOAD, POPEN, #MAST * * GET, #SLAV, RQCNV, RPCNV, GRPM, DINIT, PTOPM * * EXECM, EXECW, OPERM, RFAM1, RFAM2, DLIST, DLIS3 * * DSTIO, LUMAP, #CMGT, INCNV, OTCNV, RMTIO * * RSM, DLGON, #DISM, #DSSM, #MSSM, #SCSM, #UPSM * ****************************************************************** * ***!!!!! THE ORDER OF THE FIRST 8 WORDS (#STR THRU #LVL) IS * ***!!!!! FIXED BY THE REQUIREMENT THAT THE STREAM, ADDRESSES * ***!!!!! ERROR CODES & LEVEL # ALWAYS BE IN THE SAME PLACE, * ***!!!!! REGARDLESS OF MESSAGE FORMAT. THIS ALSO MAKES * ***!!!!! STORE-AND-FORWARD CODE MUCH SIMPLER. * #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 2013 791119 * * * * OFFSETS INTO DS/1000 OPREQ MESSAGE BUFFERS, USED BY: * * * * DMESS, OPERM, RQCNV, RPCNV * * RSM, DLGON, #MSSM, #UPSM * ****************************************************************** * * 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 A EQU 0 B EQU 1 * #UPSM NOP ENTRY. * SZA,RSS CHECK TYPE OF CALL. JMP CLOCK GO BUMP #POOL TIMERS. * * PERFORM A NON-DLGOF NO-REPLY LOG-OFF OF A REMOTE HP 1000 SESSION * THAT HAS BEEN ABANDONED DUE TO THE MASTER PROGRAM TERMINATING WITHOUT * LOGGING OFF OR BEING PREMATURELY ABORTED. SIMILAR ROUTINE IN #MSSM * AND #DISM, BUT REQUEST IS BUILT FROM PNL ENTRY INFO. * * ON ENTRY, (A) = ADDRESS OF PNL ENTRY * STA B CLA RESET CERTAIN SLOTS. STA LGF+#SEQ STA LGF+#MAR STA LGF+#MAC LDA B7 BUILD STREAM WORD. IOR #BREJ IOR BIT12 SET "LEVEL 1 & ABOVE" BIT. STA LGF+#STR ADB B2 POINT TO 3RD WORD OF PNL ENTRY. JSB LODWD (CROSS) LOAD DEST NODE NUMBER. STA LGF+#DST STORE IN LOG-OFF REQUEST. LDA #NODE STA LGF+#SRC STORE SOURCE NODE # IN REQUEST. CLA,INA STA LGF+#LVL STORE UPGRADE LEVEL # IN REQUEST. LDA N2 STA LGF+#MAS SET TO BYPASS MESSAGE ACCOUNTING. LDA #MHCT STA LGF+#HCT SET HOP COUNT. INB POINT TO 4TH WORD OF PNL ENTRY. JSB LODWD (CROSS) LOAD SOURCE SESSION ID. AND B377 ALF,ALF STA LGF+#SID (DEST SID ZERO.) ADB B2 POINT TO 6TH WORD OF PNL ENTRY. JSB LODWD (CROSS) LOAD DEST. SESSION ID. AND B377 STA LGF+#LNL STORE SESSION ID TO BE LOGGED OFF. * SZA IF NO REMOTE SESSION, CPA D254 JMP #UPSM,I EXIT NOW. LDA B2 STORE COMMAND LENGTH. STA LGF+#CML LDA "XX" STORE "XX" COMMAND. STA LGF+#CMS CCA STORE "NO-REPLY" REQ CODE. STA LGF+#LGC * JSB #NRVS SEARCH NRV (LU RETURNED IN (A)). DEF *+4 DEF LGF+#DST NODE # FOR SEARCH. DEF TEMP DUMMY. DEF UPLVL UPGRADE LEVEL OF DEST. NODE. JMP #UPSM,I ERROR. NODE NOT IN NRV. * IOR BIT15 BYPASS SESSION SST. STA LU SAVE COMMUNICATIONS LINK LU. LDB #GRPM GRPM'S CLASS NUMBER. STB CLASS * LDA #LEVL IS LOCAL UPGRADE LEVEL CMA,INA HIGHER THAN ADA UPLVL THAT OF DEST. NODE? SSA,RSS JMP WRITE NO. NO CONVERSION NEEDED. * LDA #OTCV YES. SEND TO MESSAGE CONVERTER. STA CLASS CLA STA LU * WRITE LDA L#LNL GET LENGTH OF REQUEST. ADA C#LSZ BUMP FOR LOCAL BUFFER. STA LEN CCB ADB @RQB ADB A (B) -> LAST WORD OF REQUEST. LDA B,I IOR BIT8 SET "DS STATUS" BIT. STA B,I * JSB XLUEX DO CLASS WRITE/READ TO DEST. LU. DEF *+8 DEF CLS20 NO ABORT. DEF LU DEST. LU & CONTROL WORD. DEF TEMP NO DATA. DEF B0 @RQB DEF LGF REQUEST BUFFER. DEF LEN REQUEST LENGTH. DEF CLASS I/O CLASS. NOP IGNORE ERROR. * JMP #UPSM,I RETURN. * LGF BSS #LNL+1 "NO-REPLY" LOGOFF REQ BUFFER. BSS 2 "APPENDAGE" AREA. SKP * * LOAD WORD FROM S.A.M., CROSS-LOAD IF DMS SYSTEM. * LODWD NOP LDA $OPSY OPERATING SYSTEM TYPE. RAR,SLA JMP *+3 LDA B,I NON-DMS. JMP LODWD,I XLA B,I DMS. JMP LODWD,I SPC 3 * * SUBROUTINE TO STORE A WORD IN SAM. * STUFF NOP JSB $LIBR GO PRIVILEGED. NOP MOD1 JMP STUF2 NOP HERE IF DMS. XSA B,I STORE IN ALTERNATE MAP. RSS STUF2 STA B,I JSB $LIBX DEF STUFF SKP * * BUMP TIMER ON ALL ACTIVE #POOL ENTRIES. * CLOCK CLA LDB $OPSY SET UP "STUFF" ROUTINE. RBR,SLB SKIP IF NON-DMS. STA MOD1 MODIFY FOR DMS. * LDB #POOL GET ADDR OF SID POOL. SZB,RSS JMP #UPSM,I IGNORE IF ZERO. JSB LODWD STA TEMP SAVE # POOL ENTRIES (NEG.) INB SCAN STB POOLA SAVE POOL ENTRY ADDRESS. JSB LODWD GET WORD 1 OF NEXT ENTRY. SSA,RSS ENTRY IN USE? JMP BUMP NO. GO TO NEXT ONE. * ADB B6 YES. POINT TO TIMER WORD. JSB LODWD GET TIMER WORD. CPA MAX IS IT 32767? JMP BUMP YES. LEAVE IT ALONE. INA NO. ADD 1 (REPRESENTS ABOUT 5 SEC.). JSB STUFF STORE BACK INTO #POOL ENTRY. * BUMP LDB POOLA ADVANCE TO NEXT #POOL ENTRY. ADB POOSZ ISZ TEMP BUMP LOOP COUNT. JMP SCAN LOOP TILL DONE. * JMP #UPSM,I RETURN TO CALLER (UPLIN). SKP * * CONSTANTS AND STORAGE. * B0 OCT 0 B2 OCT 2 B6 OCT 6 B7 OCT 7 BIT8 OCT 400 BIT12 OCT 10000 BIT15 OCT 100000 B377 OCT 377 MAX OCT 77777 D254 DEC 254 N2 DEC -2 CLS20 OCT 100024 "XX" ASC 1,XX POOLA NOP POOSZ DEC 7 SIZE OF #POOL ENTRY. TEMP NOP UPLVL NOP LU NOP OCT 10100 (LU+1) "Z" BIT & "WRITE". CLASS NOP LEN NOP L#LNL ABS #LNL+1 C#LSZ ABS #LSZ * BSS 0 SIZE OF #UPSM. * END