ASMB,R,L,C HED HELLO 91741-16014 * (C) HEWLETT-PACKARD CO. NAM HELLO,7 91741-16014 REV 1913 781114 SPC 1 ****************************************************************** * * (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 THE HEWLETT-PACKARD COMPANY. * ****************************************************************** SPC 1 ENT HELLO,BYE EXT D$RQB,#LU3K,.ENTR,#RSAX,#TBRN,RNRQ EXT D$INI,D$STW,D3KMS,D$ZRO,D$WDC EXT D$SMP,D$LOG,LUTRU SPC 3 **************************** HELLO ***************************** * * * SOURCE: 91741-18014 * * * * BINARY: 91741-16014 * * * * PROGRAMMER: JIM HARTSELL * * * * SEPTEMBER 29, 1975 * * * *----------------------------------------------------------------* * * * MODIFIED BY DMT BEGINNING NOVEMBER 14, 1978 * * * ****************************************************************** SPC 2 B EQU 1 SUP SKP * SUBROUTINE HELLO MUST BE CALLED BY A USER PROGRAM BEFORE * ANY MASTER COMMUNICATION FUNCTIONS WITH AN HP3000, SUCH AS * RFA AND PTOP. THIS SUBROUTINE ESTABLISHES COMMUNICATION * AND CREATES A REMOTE SESSION MAIN PROCESS ON THE HP3000 WHICH * ACTS AS A LOGICAL EXTENSION TO THE LOCAL PROCESS. * * SUBROUTINE BYE IS CALLED TO TERMINATE COMMUNICATION WITH * A REMOTE HP3000 AND TO RELEASE THE SESSION MAIN PROCESS NUMBER. * * CALLING SEQUENCES: * * JSB HELLO JSB BYE * DEF *+7 DEF *+5 * DEF ERRCD <<<<<<<<< ERROR CODE >>>>>>>>>> DEF ERRCD * DEF LDEV <<<<<<< LU OF AN HP3000 >>>>>>> DEF LDEV * DEF LSTDV <<<<<< LU OF LOG DEVICE >>>>>>> DEF LSTDV * DEF SMPNM <<< RETURNED PROCESS NUMBER >>> DEF SMPNM * DEF LOGB << ADDRESS OF LOGON MESSAGE . * DEF LOGBL < LENGTH OF LOGON MSG IN BYTES . * . . * . . * . . * LOGB ASC 8,HELLO USER.ACCT * * RETURNED ERRCD: 0 = NO ERROR. * 1 = HELLO FAILURE (SMPNM = 0) OR LINK DOWN. * 2 = RESERVED FOR EXCLUSIVE ACCESS. * 4 = INVALID LU. * 5 = TIMEOUT. * 6 = ILLEGAL (REJECTED) REQUEST. * 7 = "RES" TABLE ACCESS ERROR. * 8 = IMPOSSIBLE ERROR. * SKP * HELLO NOP ENTRY FOR "HELLO". LDA HELLO LDB B20 STREAM = 20 OCTAL. JMP PASAD * BYE NOP ENTRY FOR "BYE". LDA BYE LDB B21 STREAM = 21 OCTAL. * PASAD STA RETRN SET UP RETURN ADDRESS. STB STREM SAVE STREAM TYPE. CLA STA PRAMS CLEAR OLD PARAM ADDRESSES. STA PRAMS+1 STA PRAMS+2 STA PRAMS+3 STA PRAMS+4 STA PRAMS+5 JMP ENTER * PRAMS NOP ERROR CODE. NOP LOGICAL UNIT OF HP3000. NOP LU OF LOG DEVICE. NOP RETURNED PROCESS NUMBER. NOP ADDR OF LOGON MESSAGE. NOP LENGTH OF LOGON MESSAGE (BYTES). * RETRN NOP ENTER JSB .ENTR GET PARAM ADDRESSES. DPRAM DEF PRAMS * LDA DPRAM CHECK FOR MISSING PARAMETERS. STA TEMP LDA STREM LDB N6 6 PARAMS FOR HELLO, CPA B21 OR LDB N4 4 PARAMS FOR BYE. PLOOP LDA TEMP,I SZA,RSS JMP ILL ERROR - MISSING PARAM. ISZ TEMP INB,SZB JMP PLOOP * * VERIFY VALID HP3000 LOGICAL UNIT. * LDA B4 PRESET THE ERROR CODE. LDB #LU3K CPB PRAMS+1,I RSS JMP NGOOD INVALID LU. * * CHECK IF USER FOLLOWED A "HELLO" WITH ANOTHER "HELLO", * AND IF SO, PERFORM "BYE" PROCESSING FOR PREVIOUS "HELLO". * LDA STREM IS THIS A "HELLO"? CPA B21 JMP GTLOG NO. * LDA D$SMP GET CURRENT PROCESS NUMBER. SZA,RSS HAS IT ALREADY BEEN ESTABLISHED? JMP GTLOG NO. * JSB #RSAX YES. DO "BYE" PROCESSING FOR DEF *+3 PREVIOUS "HELLO": DEF D10 REMOVE OLD ENTRY FROM THE PNL. DEF D$SMP PROCESS NUMBER. * GTLOG LDA PRAMS+2,I GET LU OF LOG DEVICE. SZA,RSS CLA,INA ZERO: SET DEFAULT = LU 1. STA D$LOG SAVE LOG LU. * * BEGIN CONSTRUCTION OF REQUEST BUFFER WITH * THE 8-WORD FIXED FORMAT FOR REMOTE HELLO OR BYE. * LDA DPRAM POINT TO ADDR OF FIRST PARAM. JSB D$INI INITIALIZE BUFFER STUFFERS. * LDA B6 STORE MESSAGE CLASS = 6. JSB D$STW CLA CLEAR COMPUTER ID. JSB D$STW LDA STREM STORE STREAM TYPE. JSB D$STW LDA N4 CLEAR SUB-STREAM, PROCESS #'S. JSB D$ZRO CLA,INA LDB STREM HELLO OR BYE? CPB B20 BYE: BYTE COUNT WILL BE 3. LDA PRAMS+5,I HELLO: USE SUPPLIED BYTE COUNT. SZA,RSS JMP NOLEN ZERO LENGTH: ILLEGAL REQUEST. ADA N2 ADJUST FOR D$STW. JSB D$STW STORE MESSAGE BYTE COUNT. JMP MOVE NOLEN CLA,INA JMP NGOOD ILL LDA B6 JMP NGOOD TBLER LDA B7 JMP NGOOD * * MOVE ASCII MESSAGE TO REQUEST BUFFER. * MOVE LDA STREM HELLO OR BYE? CPA B20 JMP MVMSG HELLO. * LDA "BY" BYE. MOVE ASCII "BYE". JSB D$STW LDA "E" JSB D$STW BYTE COUNT NOW = 3. LDA PRAMS+3,I FORCE USER'S PROCESS # FOR D3KMS. STA D$SMP JMP STCNT * MVMSG LDB PRAMS+5,I NUMBER OF BYTES. INB ROUND UP. CLE,ERB MAKE WORDS. STB TEMP LDA PRAMS+4 SOURCE ADDRESS. LDB D$RQB ADB D8 DESTINATION ADDRESS. MVW TEMP MOVE THE MESSAGE. * STCNT JSB D$WDC STORE WORD LENGTH OF REQUEST. * * SEND REQUEST TO THE 3000 BY WRITING TO QUEX'S CLASS. * JSB D3KMS SHIP THE REQUEST BUFFER TO QUEX. DEF *+2 DEF BIT15 NO-ABORT BIT SET IN CONWD. JMP ERRTN ERROR RETURN. * CLA CLEAR ERROR CODE. STA PRAMS,I LDA STREM HELLO OR BYE? CPA B21 JMP BYEX BYE: CLEAN UP. * LDB D$RQB HELLO: GET PROCESS NUMBER ADB B4 FROM REPLY BUFFER. LDA B,I ALF,ALF AND B377 STA D$SMP STORE FOR MASTER REQUESTS. STA PRAMS+3,I PASS BACK TO CALLER. STA B CLA,INA SZB,RSS JMP NGOOD HELLO FAILURE. * * BUILD PROCESS NUMBER LIST ENTRY IN "RES". * JSB LUTRU GET "REAL" LOG LU. DEF *+3 DEF D$LOG DEF REALU * JSB RNRQ WAIT FOR AVAILABILITY OF LIST-ENTRY SPACE. DEF *+4 DEF LGW LOCK GLOBAL RN/WAIT/NO ABORT. DEF #TBRN TABLE-ACCESS RN. DEF TEMP DUMMY. JMP TBLER ** RTE ERROR. * JSB #RSAX ADD PROCESS # LIST ENTRY. DEF *+5 DEF D8 DEF REALU LOGGING LU. DEF XEQT IDSEG ADDR OF USER. DEF D$SMP PROCESS NUMBER. * SSB ANY ERRORS? JMP TBLER YES. * * SEND "DSLINE" COMMAND TO HP3000 AFTER "HELLO". * LDA DSLBF MOVE REQUEST TO D3KMS BUFFER. LDB D$RQB MVW D12 * JSB D3KMS SEND "DSLINE" TO HP3000, DEF *+2 AND WAIT FOR REPLY. DEF BIT15 NO ABORT. JMP ERRTN ERROR RETURN. * JMP RETRN,I RETURN TO USER. * * BYE: REMOVE AN ENTRY FROM THE PROCESS # LIST IN "RES". * BYEX JSB #RSAX DEF *+3 DEF D10 REMOVE AN ENTRY. DEF D$SMP PROCESS NUMBER. * CLA CLEAR STA D$SMP PROCESS NUMBER. JMP RETRN,I RETURN TO USER. * ERRTN CPA "DS" RSS JMP IMPOS IMPOSSIBLE ERROR. * LDA B GET NUMERIC PORTION OF "DSXX". CPA "00" JMP IMPOS IMPOSSIBLE IF ZERO. AND B7 ISOLATE LAST DIGIT. * NGOOD LDB PRAMS MAKE SURE ERROR PARAM SZB WAS SPECIFIED. STA PRAMS,I RETURN ERROR CODE. JMP RETRN,I RETURN TO CALLER. * IMPOS LDA D8 JMP NGOOD SKP * * CONSTANTS AND WORKING STORAGE. * B4 OCT 4 B6 OCT 6 B7 OCT 7 B20 OCT 20 B21 OCT 21 BIT15 OCT 100000 B377 OCT 377 D8 DEC 8 D10 DEC 10 D12 DEC 12 N2 DEC -2 N4 DEC -4 N6 DEC -6 XEQT EQU 1717B LGW OCT 40002 STREM NOP "BY" ASC 1,BY "E" ASC 1,E "DS" ASC 1,DS "00" ASC 1,00 TEMP NOP REALU NOP * DSLBF DEF *+1 OCT 006003 "DSLINE" REQUEST BUFFER. OCT 0 OCT 22 OCT 0,0,0,0 OCT 10 ASC 2,RFA OCT 27 OCT 0 * END