ASMB,Q,C * NAME: FG.LU * SOURCE: 92067-18179 * RELOC: 92067-16125 * PGMR: G.A.A. * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. 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. * * *************************************************************** * NAM FG.LU,8 92067-16125 REV.1903 780926 ENT FG.LU EXT $SMVE SCB MOVE ROUTINE EXT .ENTP GUESS EXT $LIBR,$LIBX * * THE FG.LU (FUDGE LU) ROUTINE MODIFIES THE VARIABLE * PART OF THE USERS SST TO IMPLEMENT THE SL (OR LU) * COMMAND. * * CALLING SEQUENCE: * * ERR=FG.LU(SESLU,SYSLU,L3,BUF) * * WHERE: ERR IS THE RETURNED ERROR CODE =0 IMPLIES * NO ERROR - ELSE A STANDARD FMGR ERROR * SESLU IS THE SESSION LU TO SET UP OR MODIFY * SYSLU IS THE SYSTEM LU THAT IS TO BE CONNECTED * TO . IF IS ASCII "- " * THEN SESLU IS REMOVED FROM THE VARIABLE PART * OF THE SST. * IF LU IS ALREADY PRESENT AS A SYSTEM * LU IN THE USERS SST THE NEW CONNECTION IS MADE * IF IS ALREADY PRESENT IN THE VARIABLE * PART OF THE USERS SST THAT ENTRY IS CHANGED * (OR DELETED IF "- "). * L3 IF IS NOT PRESENT IN THE USERS SST * THEN MUST =0 OR A CAPABILITY FAULT WILL BE * DETECTED AND AN ERROR RETURNED. IF =0 * THE NEW CONNECTION WILL BE MADE. * BUF IS A 90 (OR SO) WORD BUFFER WHICH THE ROUTINE * USES TO HOLD THE SST WHILE STUDYING IT. * THIS ELIMINATES THE NEED FOR A LOCAL BUFFER IN * THIS ROUTINE. * * SESLU NOP SYSLU NOP L3 NOP BUF NOP FG.LU NOP JSB $LIBR ROUTINE DOES NOT WANT TO BE INTERRUPTED NOP JSB .ENTP DEF SESLU FETCH THE PARAMETERS * CCA GET THE LU'S INTO WORKABLE FORM STA NGFLG SET THE NOT "- " FLAG ADA SESLU,I TABEL ENTRIES ARE -1 AND B377 KEEP ONLY 8 BITS STA SESLU SAVE THE RESULT STA B PUT IN B FOR TEST LDA NOSWT CAN NOT SWITCH LU 1 SZB,RSS IF TRYING THEN JMP EXIT EXIT WITH ERROR * LDA XEQT SET UP TO GET THE SESSION WORD ADA D32 FROM THE ID XLA A,I JUST IN CASE STA SID SAVE FOR THE CALL TO $SMVE JSB $SMVE MOVE IN THE SST DEF *+6 DEF D1 DEF SID DEF D0 ZERO OFSET FROM FRONT DEF BUF,I USE USERS BUFFER DEF D90 READ IN 90 WORDS * * FIRST WE CLASIFY SYSLU AS EITHER "- " OR IN THE SST OR NOT. * LDA BUF SET UP A POINTER STA SSTA LDA A,I GET THE LENGTH OF THE SST STA COUNT SET THE COUNTER LDA SYSLU,I GET THE DESIRED SYSLU CPA MINUS IS IT "- " JMP FGNEG YES GO SET THE FLAG TO SHOW IT IS SO. * ADA N1 NO ADJUST TO -1 NOTATION AND B377 SAVE THE RESULT ALF,ALF ROTATE TO THE HIGH HALF OF THE WORD STA SYSLU AND SAVE FOR LATER LDB L3,I GET THE CAPABILITY FLAG SZB IF HE HAS CABILITY IN ANY CASE OR CPA C377 IF HE IS SETTING A BIT BUCKET JMP FGFND LET HIM DO IT * FGSSH ISZ SSTA ELSE SEARCH FOR THE TARGET LU LDA SSTA,I IN HIS SST ALREADY AND C377 ISOLATE CPA SYSLU THIS IT? JMP FGFND YES ALL IS OK * ISZ COUNT NOPE ANY MORE TO TRY?? JMP FGSSH YES TRY THE NEXT ONE * LDA CAPER OH NO HE DID A NO NO SLAP HIS JMP EXIT HAND * B377 OCT 377 NOSWT DEC 42 D32 DEC 32 CAPER DEC 46 CAPABILITY ERROR D1 DEC 1 D0 NOP D90 DEC 90 SID NOP SSTA NOP COUNT NOP MINUS ASC 1,- N1 DEC -1 C377 OCT 177400 COMPLEMENT OF 377 TADD NOP * * WE ARE FREE TO DO WHAT NEEDS TO BE DONE SO NOW CHECK THE * USERS SIDE IN THE TEMP AREA FOR A PRIOR DEF OF THIS LU. * WE ASSUME THAT ANY IMPLICATIONS SUCH AS LOSS OF A SPOOL LU * OR AN EXISTING ENTRY OF THE SAME TYPE ARE ALREADY TAKEN * CARE OF. (CAN'T FIX HERE ANYWAY BECAUSE WE ARE PRIVILEDGED * AND PRIVILEDGED FOLKS DON'T DO ANY MORE THAN THEY WANT TO.) * FGNEG ISZ NGFLG THE "- " FLAG IS SET NGFLG OCT -1 SET TO -1 ON ENTRY * FGFND CLA SET UP TO STA TADD SCAN THE VARIABLE SST STA L3 DON'T NEED PERMISSION ANY MORE LDB BUF GET THE BUFFER ADDRESS TO B FGUSH INB STEP TO THE FIRST ENTRY LDA B,I GET IT AND B377 AND ISOLATE THE SESSION SIDE CPA B377 IF EMPTY STB L3 SAVE AS A POSSIBLE PLACE FOR THE NEW SWITCH CPA SESLU ENTRY ALREADY IN THE TABLE? STB TADD YES SAVE THE ADDRESS - WE WILL OVER WRITE SZA THIS THE END OF THE VARIABLE PART? JMP FGUSH NO CONTINUE THE SEARCH * LDA NOTHR GET THE NOT FOUND ERROR CODE LDB NGFLG IF THE NEGATIVE FLAG IS SET ADB TADD AND THE ENTRY NOT FOUND SZB,RSS THEN JMP EXIT WHINE ABOUT IT * LDA SSTFU GET THE SST FULL ERROR LDB TADD CHECK IF WE EITHER FOUND SZB,RSS AN OLD ONE OR LDB L3 AN EMPTY ONE SZB,RSS WELL? JMP EXIT SO SORRY NO ROOM NOW * * OK LETS DO IT B= ADDRESS TO MODIFY, FIGURE NEXT ENTRY * -1 IF "- " OPTION * ISZ NGFLG IF "- " FLAG SET WE DON'T SKIP CCA,RSS -1 FOR "- " OPTION LDA SESLU ELSE SET UP THE DESIRED SWITCH IOR SYSLU STA B,I SET THE NEW ENTRY STB BUFAD SET UP TO WRITE BACK ONE SST WORD CMB,INB COMPUTE THE OFFSET ADB BUF CMB,INB SET IT POSITIVE FOR THE CALL STB OFF AND SET IT JSB $SMVE SEND THE WORD BACK TO THE SST DEF *+6 DEF D2 THIS IS A WRITE DEF SID DEF OFF BUFAD NOP DEF D1 ONE WORD CLA WOW! AN OK EXIT EXIT JSB $LIBX EXIT DEF FG.LU * SSTFU DEC 66 SST FULL ERROR NOTHR DEC 2068 LU NOT FOUND (68) +2000 (NOT A SEVERER ERROR) D2 DEC 2 OFF NOP A EQU 0 B EQU 1 XEQT EQU 1717B END