File TLK.PA (PAL assembler source file)

Directory of image this file is from
This file as a plain text file

/DECNET/8 V1A TLK 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.
/
/
/
/	J.R., S.R.  - MAY, 1976
/JR	15-SEP-76	ADDED PDP11 COMPATIBILITY
/JR	11-JAN-77	ADDED NSP CYCLE2 COMPATIBILITY
/
/ DECNET/8 RELEASE VERSION 1
/ DECNET/8 PATCH LEVEL A
/ APRIL 8, 1977
/
	VERSION=1
	PATCH="A
/
/	TLK ERROR DEFINES

	NXTERR=22	/NON-EXISTENT TERMINAL
	NRBERR=21	/NO RECEIVE BUFFER
	STXERR=20	/SYNTAX ERROR
	RCVERR=24	/RECEIVE ERROR
	RTEERR=25	/REMOTE TERMINAL ERROR

/	TLK CHARACTER DEFINES

	QUOCHR="'
	COLCHR=":
	UNDCHR="_

/	TLK TASK DEFINES

	INIWT=RUNWT
	TASK=TLK

	IFNDEF TLKLOC <TLKLOC=200>
	IFNDEF TLKFLD <TLKFLD=30>
	IFNDEF TLKCHN <TLKCHN=1>

	CUR=TLKFLD
	CHANNL=TLKCHN
	CCB=TLKLOC+1000

	FIELD CUR%10

*TLKLOC VERSION /VERSION PATCH /AND PATCH IN CORE /MAIN TLK PROCESSING LOOP /WAIT FOR A REQUEST TO RUN LOOP, CLA CLL CDF CUR CAL /SUSPEND OURSELVES SUSPND /'TILL WE MEET AGAIN START, CAL SENDW TTY PROMPT /SEND A PROMPT AND GET A LINE OF INPUT TAD DEFNOD /ASSUME DEFAULT NODE NAME DCA I (NODNAM TAD DEFNOD+1 DCA I (NODNAM+1 TAD DEFNOD+2 DCA I (NODNAM+2 DCA DSTTTY /0 IS DEFAULT TTY NAME (NUMBER) TAD I (CMDBUF SPA SNA /IS LINE EMPTY? JMP NULINE /YES CLA /NO JMS I (PARSE /PARSE OFF THE INPUT LINE DCA ENDCOD TAD I (LINPTR CIA TAD (LINBUF SNA JMP FIN /IGNORE IF NOTHING TO SEND DCA I (LINSIZ /ELSE, STORE SIZE IN TRANSMIT MESSAGE CAL SENDW NSP /SEND A CONNECT INIT CIMSG JMS I (CHKSTA /CHECK OUT STATUS CAL /THEN SEND MESSAGE SENDW NSP TRMSG JMS I (CHKSTA /CHECK OUT STATUS CAL SENDW NSP DIMSG /DISCONNECT FIN, TAD ENDCOD NULINE, SNA CLA JMP START /CR MEANS KEEP TLK RUNNING JMP LOOP /$ MEANS GO AWAY
CIMSG, ZBLOCK 3 0 CONINI CHANNL NODNAM DSTNAM DSTTTY /PDP11 OPTIONAL DATA CNFOPT DSTTTY, 0 0 SRCTTY, 0 0 DIALOG, 0 -1 CNFOPT, 0 CONCOD, ZBLOCK 10 TRMSG, ZBLOCK 3 0 TRNSMT CHANNL CDF CUR LINBUF LINSIZ, 0 DEFNOD, TEXT /LOCAL/ NODNAM, ZBLOCK 3 DSTNAM, 0 TEXT /TLK/ ZBLOCK 4 0;0 ENDCOD, 0 PAGE
/ STATUS CHECK ROUTINE /MUST IMMEDIATELY FOLLOW NSP SYSTEM CALL CHKSTA, 0 AC7776 /BACK UP TO MESSAGE POINTER TAD CHKSTA /GET PTR TO PTR TO MESSAGE DCA STATPT TAD I STATPT /GET PTR TO MESSAGE TAD (3 /GET PTR TO ITS STATUS WORD DCA STATPT TAD I STATPT /GET STATUS AND (77 SNA JMP I CHKSTA /0 MEANS GOOD; RETURN TAD (-CRJST /SEE IF CONNECT REJECT SZA CLA JMP NOTCRJ /NO, JUST PRINT ERROR MESSAGE TAD I (CCBOPL /ANY OPTIONAL DATA? SNA CLA JMP NOTCRJ /NO, JUST PRINT ERROR MSG TAD I (CCBOPT+1 /ELSE REPORT TLK REASON SKP NOTCRJ, TAD I STATPT /PICK UP ERROR CODE AND (77 JMS ERRPRT /PRINT IT, DISCONNECT, THEN EXIT JMP I (FIN /RESTART PROGRAM STATPT, 0
/ROUTINE TO LOOK UP ERROR CODE AND PRINT AMESSAGE /FORCES A DISCONNECT AND EXITS ERRPRT, 0 /ERROR CODE IN AC SNA TAD (CONRSN /INTERRUPT MSG IS PROTOCOL ERROR DCA ERRCOD TAD (ERRTAB DCA ERRPTR ESRCH, TAD I ERRPTR ISZ ERRPTR DCA EMSLOC TAD I ERRPTR ISZ ERRPTR SZA /AT END OF TABLE? TAD ERRCOD /NO, COMPARE AGAINST ERROR CODE SZA CLA JMP ESRCH /NOT A MATCH, KEEP LOOKING CAL SENDW TTY ERRMSG JMS I (SCOL /SCAN TO END OF LINE TAD I (CCBSTA SNA CLA JMP I ERRPRT /QUICK EXIT IF ALREADY DISCONNECTED CAL SENDW NSP DSCMSG /OTHERWISE, DISCONNECT JMP I ERRPRT /RETURN
/TABLE TO EQUATE MESSAGES WITH ERROR CODES ERRTAB, MSG2; -DABST MSG3; -DRJST MSG4; -ILLST MSG5; -NODST MSG6; -ERRST MSG7; -LDNST MSG8; -NRBERR MSG9; -CONRSN MSG11; -CRJST MSG12; -STXERR MSG14; -NXTERR MSG99; 0
ERRCOD, 0 ERRPTR, 0 ERRMSG, ZBLOCK 3 IND 0 EMSLOC, 0 DSCMSG, ZBLOCK 3 0 DISCON CHANNL 0 SXERR, CLA TAD (STXERR JMS ERRPRT JMP I (FIN PAGE
/ROUTINE TO PARSE A TLK COMMAND LINE OF THE FORM / / NODNAM_DEV:'MESSAGE <CR> / / NODNAM_ IS OPTIONAL, DEFAULT IS OUR NODE NAME / DEVICE: IS USUALLY OF FORM TTN OR TTYN AND IS OPTIONAL PARSE, 0 TAD (QUOCHR-COLCHR DCA COLCOD /INITIALIZE PARSER FLAGS TAD (COLCHR-UNDCHR /NO COLON OR UNDERSCORE YET DCA UNDCOD TAD (CMDBUF-1 /SET POINTERS UP DCA CHPTR TAD CHPTR DCA CHPTR2 /CHPTR2 POINTS TO BEGIN OF FIELD PARSLP, ISZ CHPTR /PRE-INCREMENT POINTER TAD I CHPTR /GET CHARACTER (SCAN FOR DELIMITER) SPA SNA JMP I (SXERR /UNEXPECTED END-OF-LINE TAD (-QUOCHR SNA JMP GOTQUO /GOT A QUOTE TAD COLCOD SNA JMP GOTCOL /GOT A COLON TAD UNDCOD SZA CLA JMP PARSLP /NONE OF THE ABOVE, KEEP LOOKING FOR A DELIM /GOT AN UNDERSCORE GOTUND, DCA UNDCOD /FLAG UNDERSCORE SEEN DCA I (NODNAM /CLEAR NODE NAME BUFFER DCA I (NODNAM+1 DCA I (NODNAM+2 TAD (-UNDCHR DCA DELIM TAD (NODNAM /SET POINTER DCA NODNMP AC7775 /ALLOW 3 WORDS MAX DCA NODNMC NODNML, JMS GETCH /GET A CHAR CLL RTL /SHIFT LEFT RTL RTL DCA I NODNMP /STORE LEFT HALF JMS GETCH /GET A CHAR TAD I NODNMP /ADD TO L.H. DCA I NODNMP /STORE ISZ NODNMP ISZ NODNMC JMP NODNML /ITERATE JMS GETCH /FLOW PAST EXCESS CHARACTERS CLA JMP .-2
GOTCOL, DCA UNDCOD /FLAG NO BACK-ARROWS ALLOWED DCA COLCOD /FLAG NO COLONS ALLOWED TAD (-COLCHR DCA DELIM /HANDLE DEVICE NAME, IGNORE LETTERS, PARSE OFF OCTAL NUMBER COLNLP, DCA I (DSTTTY /CLEAR TTY N COLNL1, JMS GETCH /GET A CHARACTER TAD (-70 CLL TAD (10 DCA N SNL JMP COLNL1 /IGNORE NON-DIGITS TAD I (DSTTTY /SHIFT PREVIOUS NUMBER AND (7000 SZA CLA JMP I (SXERR /NUMBER TOO BIG TAD I (DSTTTY CLL RAL RTL TAD N JMP COLNLP /ITERATE N, 0
GETCH, 0 ISZ CHPTR2 TAD I CHPTR2 TAD DELIM SNA CLA JMP CHK TAD I CHPTR2 AND (77 JMP I GETCH CHK, TAD I (DSTTTY AND (7400 SZA CLA JMP I (SXERR /NUMBER TOO BIG JMP PARSLP /OTHERWISE SUCCESSFUL EXIT DELIM, 0 /EITHER -UNDCHR OR -COLCHR
/ HANDLE APOSTROPHE /GET TEXT TO SEND GOTQUO, TAD (LINBUF DCA LINPTR GOTLUP, ISZ CHPTR TAD I CHPTR SPA SNA JMP I PARSE /RETURN IF EOL DCA I LINPTR ISZ LINPTR JMP GOTLUP CHPTR, 0 CHPTR2, 0 COLCOD, 0 UNDCOD, 0 NODNMP, 0 NODNMC, 0 LINPTR, 0
SCOL, 0 CLA /SCAN TO END OF LINE TAD I CHPTR ISZ CHPTR SMA SZA JMP SCOL+1 DCA I (ENDCOD JMP I SCOL PAGE
CCB=. *CCB+120 / TLK AST ROUTINE /SHOULD BE ENTERED ON A DISCONNECT /OTHERWISE IT'S AN ERROR USRAST, TAD CCBRSN /WHY THE AST? AND (77 TAD (-CONRSN SNA /WAS IT A CONNECT? JMP REJCON /YES, REJECT IT TAD (CONRSN-DISRSN SNA CLA /WAS IT A DISCONNECT? JMP CNFDIS /YES, CONFIRM DISCONNECT ERREP, TAD CCBRSN /REPORT THE ERROR JMS I (ERRPRT JMP CCBRTN /RETURN REJCON, CAL /REJECT BOGUS CONNECT SENDW NSP DIMSG JMP ERREP CNFDIS, TAD (LOOP /MOVE MAINLINE BACK TO BEGIN DCA I (CCBPC JMP I (CCBRTN /RETURN FROM AST
DIMSG, ZBLOCK 3 0 DISCON CHANNL 0 PROMPT, ZBLOCK 3 NOCRLF+120 CMDBUF TEXT /TLK>/ PAGE
CMDBUF, LINBUF, ZBLOCK 120
MSG2, TEXT /TLK> REMOTE TALK ABORTED/ MSG3, TEXT /TLK> CAN'T CONNECT TO REMOTE TLK/ MSG4, TEXT /TLK> PROGRAMMING ERROR/ MSG5, TEXT /TLK> UNKNOWN NODE NAME/ MSG6, TEXT /TLK> NSP ERROR/ MSG7, TEXT /TLK> LINE DOWN/ MSG8, TEXT /TLK> MESSAGE TOO LONG/ MSG9, TEXT /TLK> PROTOCOL ERROR/ MSG11, TEXT /TLK> CONNECT REJECTED BY REMOTE TLK/ MSG12, TEXT /TLK> SYNTAX ERROR/ MSG14, TEXT /TLK> NON-EXISTENT TERMINAL/ MSG99, TEXT /TLK> SYSTEM ERROR/ *CCB+12 0 /OBJECT TYPE=0 TEXT /TLK/ ZBLOCK 4 1;3 PAGE



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search