/DECNET/8 V1A LSN TASK / / / / / / /COPYRIGHT (C) 1976,1977 BY DIGITAL EQUIPMENT CORPORATION / / / / / / / / / / /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. / /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. / /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY /DIGITAL. / / / ADMIRAL COMPANION TO DECNET/8 TLK / S.R. - MAY 1976 /JR 11-JAN-77 ADDED NSP CYCLE2 COMPATIBLILTY / / DECNET/8 RELEASE VERSION 1 / DECNET/8 PATCH LEVEL A / APRIL 8,1977 / VERSION=1 PATCH="A / / THERE MAY BE MULTIPLE LSN TAKS ON A SYSTEM / IF SO, ONE WOULD USE A TLK CONTROL BLOCK (TCB) IFNDEF LSNFLD IFNDEF LSNLOC IFNDEF LSNCHN CUR=LSNFLD CHANNL=LSNCHN INIWT=0 NXTERR=22 /NON-EXISTENT TERMINAL RBUFLN= 160 /SIZE FF RECEIVE BUFFER IFNDEF LSNNUM IFNDEF LSN1 IFZERO LSNNUM-1 IFZERO LSNNUM-2 IFZERO LSNNUM-3 IFZERO LSNNUM-4 IFZERO LSNNUM-5 IFZERO LSNNUM-6 IFZERO LSNNUM-7 / / IF IT IS DESIRED TO BE ABLE TO LISTEN / ON MORE THAN 7 TABLES, THE TABLE ABOVE / CAN BE EASILY EXPANDED. FIELD CUR%10 *LSNLOC VERSION /VERSION PATCH /AND PATCH IN CORE START, AC4000 DCA TTYTSK CAL BLKARG MSGWT /SIT AND WAIT FOR SOMETHING TO HAPPEN TAD TTYTSK SPA CLA JMP START /IGNORE EVERYTHING IF 'TTYTSK' IS STILL NEGATIVE TAD (-RBUFLN+1 /ALLOW GETTING BUFSIZ-1 CHARS OF MESSAGE DCA RLEN CAL /RECEIVE DATA FROM REMOTE TLK SENDW NSP RMSG /RECEIVE TAD RSTA /LOOK AT THE STATUS SZA CLA JMP DISC /DISCONNECT ON SLIGHTEST ERROR TAD RLEN /LOOK AT LENGTH RECEIVED CIA /MAKE POSITIVE TAD (RBUF /GET PTR TO FIRST BYTE AFTER END OF BUFFER DCA RPTR DCA I RPTR /PUT 0 AT END OF BUFFER JMS I (PUTPRE /PRINT PRELIMINARY INFORMATION CAL SENDW /SEND MESSAGE TO CORRECT TERMINAL TTYTSK, 4000 /TTY NUMBER WE'RE SENDING TO TTMSG JMP START /REITERATE DISC, CAL SENDW NSP DMSG JMP START /LOOP FOR MORE DMSG, ZBLOCK 3 0 DISCON CHANNL 0 TTMSG, ZBLOCK 3 NOPACK+IND 0 RBUF /SEND DATA FROM RECEIVE BUFFER RMSG, ZBLOCK 3 RSTA, 0 RCVMSG CHANNL CDF CUR RBUF RLEN, -RBUFLN+1 REJ, ZBLOCK 3 0 CONREJ CHANNL OPT2 /REJECT WITH BAD TTY MESSAGE IN OPT DATA RPTR, 0 CNF, ZBLOCK 3 CNFSTA, 0 CONCNF CHANNL 0 /NO OPTIONAL DATA TTYTAB, 0; TTY 1; TTY 2; TTY IFDEF LPT < 3; LPT> IFDEF TTY2 < 4; TTY2> 4000 TSRCH, 0 TAD (TTYTAB-1 DCA TPTR /SEARCH TTY TABLE FOR THIS NUMBER TLUP, ISZ TPTR TAD I TPTR SPA JMP I TSRCH /A NEGATIVE NUMBER ENDS TABLE ISZ TPTR /POINT TO ASSOCIATED TASK CIA TAD I (TTNUM SZA CLA /HAVE WE FOUND IT? JMP TLUP /NO, KEEP LOOKING TAD I TPTR /YES, GET ASSOCIATED TASK SNA JMP I TSRCH /TASK NON-EXISTENT DCA I (TTYTSK /STORE AWAY ISZ TSRCH JMP I TSRCH TPTR, 0 PAGE RBUF, ZBLOCK RBUFLN /THE CCB FOLLOWS THE BUFFER IMMEDIATLY CCB=. *CCB+12 0 TEXT /TLK/ ZBLOCK 4 1;2 *CCB+130 USRAST, TAD CCBRSN /WHY WERE WE TRAPPED? TAD (-CONRSN SNA CLA JMP CON /A CONNECT REQUEST BAD, CAL SENDW NSP DMSG /DISCONNECT JUST IN CASE / TAD (START / DCA CCBPC /JR TAKE OUT RESTART TO PREVENT DISCARD OF MESSAGES JMP CCBRTN /GO BACK TO 'START' AT MAIN LEVEL CON, DCA TTNUM TAD I (TTYTSK SMA CLA JMP NOTFND /SHOULD NEVER HAPPEN TAD I (CCBOPL /HOW MUCH OPTIONAL DATA DID WE GET? SNA CLA JMP NOTFND /NO OPTIONAL DATA TAD CCBOPT DCA TTNUM /GET TERMINAL NUMBER TAD CCBOPT+2 DCA SRCTTY /GET SOURCE TERMINAL NUMBER JMS I (TSRCH JMP NOTFND CAL SENDW NSP CNF /ACCEPT THE CONNECTION TAD I (CNFSTA SNA CLA JMP CCBRTN JMP BAD NOTFND, CLA TAD TTNUM DCA OPT2+1 /SEND BACK BAD TTY NUMBER CAL SENDW NSP REJ /REJECT THE CONNECTION JMP CCBRTN OPT2, NXTERR;0;-1 TTNUM, 0 SRCTTY, 0 PAGE /PRINT PRELIMINARY INFORMATION OF THE FORM / TLK>NODNAM_TTN: PUTPRE, 0 TAD (PREBUF /SET BUFFER POINTER DCA BUFPTR JMS PUTNAM /GO PUT IN NODE NAME CCBND1 TAD ("_ /PRINT BACKARROW JMS PCH TAD ("T /PRINT TTN JMS PCH TAD ("T JMS PCH TAD I (SRCTTY AND (7 TAD ("0 JMS PCH TAD (": /PRINT COLON JMS PCH DCA I BUFPTR /MARK END OF TEXT TAD I (TTYTSK /COPY TTY TASK NUMBER INLINE DCA TTYTS2 CAL SEND TTYTS2, 4000 PREMSG JMP I PUTPRE /DONE PREMSG, ZBLOCK 3 /SPACE FOR EF AND LINKAGE NOPACK+NOCRLF /FORMAT CONTROL 0 /NO INPUT "T;"L;"K;"> PREBUF, ZBLOCK 20 /THE BUFFER PCH, 0 DCA I BUFPTR ISZ BUFPTR JMP I PCH PUTNAM, 0 TAD I PUTNAM ISZ PUTNAM DCA NAMPTR TAD (-3 DCA NAMCNT NAMLP, TAD I NAMPTR RTR RTR RTR JMS P6CH /PRINT LEFT 6 BITS TAD I NAMPTR JMS P6CH /PRINT RIGNT 6 BITS ISZ NAMPTR ISZ NAMCNT JMP NAMLP /LOOP IF MORE JMP I PUTNAM /FORCE EXIT P6CH, 0 AND (77 SNA JMP I PUTNAM /RETURN OF ENCOUNTER NULLS TAD (240 /EXPAND TO 7BIT AND (77 TAD (240 JMS PCH /SEND IT JMP I P6CH NAMPTR, 0 NAMCNT, 0 BUFPTR, 0 PAGE