perm filename TELNET.DIF[S,NET] blob sn#696048 filedate 1983-01-12 generic text, type T, neo UTF8
  1) TELNET.MID[S,NET] and 2) TELNET.MID[NET,MRC]	1-12-83 15:14	pages 2,2

**** File 1) TELNET.MID[S,NET]/2P/15L
1)	IFNDEF FTALTN,FTALTN==0			; try alternate host addresses
1)	IFNDEF FTF2,FTF2==0			; assemble for F2, perhaps
1)	IF1,[
**** File 2) TELNET.MID[NET,MRC]/2P/16L
2)	IF1,[
***************


**** File 1) TELNET.MID[S,NET]/2P/28L
1)	  IFN FTDPYP&1,[
1)	  PRINTX/DM simulator version!
1)	/
1)	  ];IFN FTDPYP&1
1)	  IFN FTDPYP&2,[
1)	  PRINTX/ANSI simulator version!
1)	/
1)	  ];IFN FTDPYP&2
1)	 ];IFN FTDPYP
**** File 2) TELNET.MID[NET,MRC]/2P/26L
2)	  PRINTX/DM simulator version!
2)	/
2)	 ];IFN FTDPYP
***************


**** File 1) TELNET.MID[S,NET]/3P/46L
1)	MRKCHR==-1				; read mark bytes as characters
1)	.INSRT NETWRK
1)	; This should have been exported by NETWRK
1)	NW%SU==:44	;SUnet
1)	NW$BYT==:331100	;Byte pointer to network number
1)	; Include magic display routines
1)	IFN FTDPYP,.INSRT DISPLY[1,MRC]
1)	;CORBEG FSPBLK INPFLN INPEXT INPPPN OUTFLN OUTEXT OUTPPN TTINTP NTINTP NTOINP CLSINP ISLURP NTBFOP NETCMP INPFLP SLOWFP OUTFLP CHARMP NPROTP CRONLY INSDLP CRP GETXPP GETYPP XPOS LSTESC ESCMOD ARGC ARGV ARGMAX RCBINP TRBINP ECHOP SUPGAP MORTLP DSIBF DSOBF TTOBFR TTOCTR TTOPTR COREND PDL IDLTIM HSTBEG HSPBUF HNMBUF HSTEND DEBUGP MONCMP OTNCMP DPYP DMDPYP NOEDTP ESCHAR SMRBLK
1)	SUBTTL Data area
**** File 2) TELNET.MID[NET,MRC]/3P/47L
2)	.INSRT NETWRK[NET,MRC]
2)	; Include magic display routines
2)	IFN FTDPYP,.INSRT DISPLY[1,MRC]
2)	;CORBEG FSPBLK INPFLN INPEXT INPPPN OUTFLN OUTEXT OUTPPN TTINTP NTINTP NTOINP CLSINP ISLURP NTBFOP NETCMP INPFLP SLOWFP OUTFLP CHARMP NPROTP INSDLP CRP QUOTEP GETXPP GETYPP XPOS RCBINP TRBINP ECHOP SUPGAP MORTLP DSIBF DSOBF TTOBFR TTOCTR TTOPTR COREND PDL IDLTIM HSTBEG HSPBUF HNMBUF HSTEND DEBUGP MONCMP OTNCMP DPYP DMDPYP NOEDTP ESCHAR
2)	SUBTTL Data area
***************


**** File 1) TELNET.MID[S,NET]/4P/28L
1)	CRONLY:	BLOCK 1				; -1 → suppress LF's for Pup Telnet
1)	IFE FTDPYP,TRANSP: BLOCK 1		; -1 → transparent mode
**** File 2) TELNET.MID[NET,MRC]/4P/28L
2)	IFE FTDPYP,TRANSP: BLOCK 1		; -1 → transparent mode
***************


**** File 1) TELNET.MID[S,NET]/4P/33L
1)	GETXPP:	BLOCK 1				; -1 → get X position
**** File 2) TELNET.MID[NET,MRC]/4P/32L
2)	QUOTEP:	BLOCK 1				; -1 → control character quoting
2)	GETXPP:	BLOCK 1				; -1 → get X position
***************


**** File 1) TELNET.MID[S,NET]/4P/36L
1)	IFE FTDPYP&2,QUOTEP:	BLOCK 1		; -1 → control character quoting
1)	.ELSE [
1)	LSTESC:	BLOCK 1				; last escape character seen
1)	ESCMOD:	BLOCK 1				; < 0 → escape processing.
1)	ARGC:	BLOCK 1				; Number of arguments seen - 1
1)	ARGV:	BLOCK 10			; Arguments to ESC [ ...
1)	ARGMAX==.-ARGV
1)	];IFN FTDPYP&2
1)	];IFN FTDPYP
**** File 2) TELNET.MID[NET,MRC]/4P/36L
2)	];IFN FTDPYP
***************


**** File 1) TELNET.MID[S,NET]/4P/67L
1)	; Tables for multiple addresses
1)	IFN FTALTN,[
1)	HNUMTB:	BLOCK 5				; table of possible host addresses
1)	HNUMSZ==.-HNUMTB
1)	HPRITB:	BLOCK HNUMSZ			; priority to use given networks
1)	];IFN FTALTN
1)	COREND==.-1
**** File 2) TELNET.MID[NET,MRC]/4P/58L
2)	COREND==.-1
***************


**** File 1) TELNET.MID[S,NET]/4P/92L
1)	SMRBLK:	25				; send Mark (this ought to be in NETWRK)
1)		0				; status word
1)		6				; Timing Mark Reply
1)	;Table of networks and their priority to use
1)	;This table is HOST DEPENDENT
1)	IFN FTALTN,[
1)	IFN FTF2,[
1)		printx You probably would to change NETTAB and NETPRI
1)	];IFN FTF2
1)	;Table of known networks
1)	NETTAB:	NW%ARP
1)		NW%SU
1)	NNETS==.-NETTAB
1)	;Table of corresponding priorities
1)	NETPRI:	11		;NW%ARP		;Slightly higher than Ethernet because of
1)						;better TELNET protocol
1)		10		;NW%SU
1)	];IFN FTALTN
1)	;TPLTAB TPLMIN WDOTAB WDOMAX EXOPL RNDYLZ
**** File 2) TELNET.MID[NET,MRC]/5P/1L
2)	;TPLTAB TPLMIN WDOTAB WDOMAX EXOPL RNDYLZ
***************


**** File 1) TELNET.MID[S,NET]/9P/33L
1)		SETZM ICPSKT
1)	; Now preprocess the host name
**** File 2) TELNET.MID[NET,MRC]/9P/33L
2)		SKIPE OTNCMP
2)		 SKIPA X,[OPRSKT]
2)		  MOVEI X,NPRSKT
2)		MOVEM X,ICPSKT
2)	; Now preprocess the host name
***************


**** File 1) TELNET.MID[S,NET]/10P/37L
1)		CAIN X,"#			; XEROX style number
1)		 JRST [	SKIPLE A
1)			CAILE A,377
1)			 JRST HSTLUZ
1)			PUSH P,A
1)			ILDB X,Y		; check numericness
1)			CAIL X,"0
1)			 CAILE X,"9
1)			  JRST HSTLUZ
1)			PUSHJ P,SWINIR
1)			POP P,B			; B←network, A←host
1)			SKIPLE A
1)			CAILE A,377
1)			 JRST HSTLUZ
1)			LSH B,8.
1)			ADDI B,(A)
1)			MOVEI A,NW%SU		; set network type
1)			DPB A,[NW$BYT,,B]
1)			JUMPE X,GOTHS2		; if end of string, we're done
1)			CAIE X,"#
1)			 JRST GOTHS2
1)			ILDB X,Y		; skip over #, check for number
1)			JUMPE X,GOTHS2		; trailing # should be there!
1)			CAIL X,"0		; scan socket number
1)			 CAILE X,"9
1)			  JRST HSTLUZ
1)			PUSH P,B
1)			PUSHJ P,SWINIR
1)			POP P,B
1)			JUMPL A,SKTLUZ
1)			MOVEM A,ICPSKT
1)			JUMPE X,GOTHS2		; make sure this is last thing!
1)			JRST SKTLUZ]
1)		SKIPL A				; octal has priority over decimal
**** File 2) TELNET.MID[NET,MRC]/10P/37L
2)		SKIPL A				; octal has priority over decimal
***************


**** File 1) TELNET.MID[S,NET]/10P/74L
1)		JUMPLE B,SKTLUZ
1)		MOVEM B,ICPSKT
**** File 2) TELNET.MID[NET,MRC]/10P/41L
2)		JUMPLE B,[	OUTSTR [ASCIZ/Illegal socket number
2)	/]
2)				CLRBFI
2)				JRST TOPLEV]
2)		MOVEM B,ICPSKT
***************


**** File 1) TELNET.MID[S,NET]/10P/84L
1)	SKTLUZ:	OUTSTR [ASCIZ/Illegal socket number
1)	/]
1)		CLRBFI
1)		JRST TOPLEV
1)	;HSTSPC GOTHSN GOTHS1 GOTHS2 HSTLUZ ALPHST
1)	; Host specification
**** File 2) TELNET.MID[NET,MRC]/11P/1L
2)	;HSTSPC GOTHSN GOTHS1 HSTLUZ ALPHST
2)	; Host specification
***************


**** File 1) TELNET.MID[S,NET]/11P/18L
1)	GOTHS2:	JUMPLE B,[	OUTSTR [ASCIZ/Illegal host number
1)	/]
**** File 2) TELNET.MID[NET,MRC]/11P/18L
2)		JUMPLE B,[	OUTSTR [ASCIZ/Illegal host number
2)	/]
***************


**** File 1) TELNET.MID[S,NET]/11P/23L
1)	;;;	JUMPE X,GOICP			; end of spec
1)		JUMPE X,CHKHNM			; end of spec, check host type
1)	HSTLUZ:	OUTSTR [ASCIZ/Illegal character in host number
**** File 2) TELNET.MID[NET,MRC]/11P/23L
2)		JUMPE X,GOICP			; end of spec
2)	HSTLUZ:	OUTSTR [ASCIZ/Illegal character in host number
***************


**** File 1) TELNET.MID[S,NET]/12P/22L
1)	IFE FTALTN,[
1)		MOVEM HOST
1)	];IFE FTALTN
1)	IFN FTALTN,[
1)		MOVSI X,-HNUMSZ
1)	HNUMLP:	MOVEM HNUMTB(X)			; Save a network address
1)		PUSHJ P,HSTNXA			; Get next host address
1)		 JRST HNUMEN			;   No more addresses
1)		AOBJN X,HNUMLP			; Go back for more addresses
1)	HNUMEN:	SETZM HNUMTB(X)			; Mark end of table
1)	];IFN FTALTN
1)	GOTHDB:	LDB X,[NW$BYT,,HOST]		; check network type
1)		CAIE X,NW%SU			; IF ethernet, use "old" as default
1)		SKIPE OTNCMP
1)		 SKIPA X,[OPRSKT]
1)		  MOVEI X,NPRSKT
1)		SKIPN ICPSKT			; use only as default
1)		 MOVEM X,ICPSKT
1)	IFE FTDPYP,[
**** File 2) TELNET.MID[NET,MRC]/12P/22L
2)		MOVEM HOST
2)	GOTHDB:
2)	IFE FTDPYP,[
***************


**** File 1) TELNET.MID[S,NET]/12P/53L
1)	IFN FTALTN,[
1)		MOVSI X,-HNUMSZ			;Scan host number table
1)	HPRILP:	SKIPN 1,HNUMTB(X)		;Get host number or end mark
1)		 JRST HPRIL2
1)		LDB [NW$BYT,,1]			;Get network number from host number
1)		MOVSI 1,-NETTSZ			;Search networks we know about
1)		CAME NETTAB(1)			;Is this a network we know about?
1)		  AOBJN 1,.-1			;  No, forget it
1)		MOVE NETPRI(1)			;Get priority for using this net
1)	HPRIL1:	MOVEM HPRITB(X)			;Save for sorting by priority
1)		AOBJN X,HPRILP			;Repeat for each host address
1)	HPRIL2:	HRROM X,HPRITB(X)		;Large negative priority for last
1)	HPRIL3:	MOVSI X,-HNUMSZ			;Do one iteration of bubble sort
1)		SETO 1,				;Presume in order
1)	HPRIL4:	MOVE HPRITB(X)			;Get first entry
1)		CAML HPRITB+1(X)		;Is next entry higher priority
1)		 JRST HPRIL5			;  No
1)		MOVE 1,HNUMTB(X)		;Use two ACs for side effect of setting
1)						;AC 1 ≠ -1
1)		EXCH HPRITB+1(X)		;Swap entries
1)		EXCH 1,HNUMTB+1(X)
1)		MOVEM HPRITB(X)
1)		MOVEM 1,HNUMTB(X)
1)	HPRIL5:	AOBJN X,HPRIL4			;Repeat for each table entry
1)		AOJN 1,HPRIL3			;Start again if at least one swap
1)	];IFN FTALTN
1)	;GOICP NOTPRT GOICP0 GOICP1
**** File 2) TELNET.MID[NET,MRC]/13P/1L
2)	;GOICP NOTPRT GOICP0 GOICP1
***************


**** File 1) TELNET.MID[S,NET]/13P/13L
1)		MOVEI 1				; get type of connection
1)		PNAME 0,
1)		  SETZ 0,
1)		MOVSS 0
1)		SKIPN NPROTP			; old protocol PUP connection?
1)		CAIE 'PUP
1)		 JRST NOTPUP			;  not PUP or else new protocol
1)		SETOM CRONLY			;  yes, sigh...
1)		SETOM ECHOP
1)	NOTPUP:
1)	IFN FTDPYP,[
**** File 2) TELNET.MID[NET,MRC]/13P/13L
2)	IFN FTDPYP,[
***************


**** File 1) TELNET.MID[S,NET]/14P/34L
1)				PUSHJ P,OUTSIX		;matching '['
1)				OUTSTR [ASCIZ/].
**** File 2) TELNET.MID[NET,MRC]/14P/34L
2)				PUSHJ P,OUTSIX
2)				OUTSTR [ASCIZ/].
***************


**** File 1) TELNET.MID[S,NET]/14P/60L
1)		 MOVEI 33						;{
1)		CAIN 176			; }
**** File 2) TELNET.MID[NET,MRC]/14P/60L
2)		 MOVEI 33
2)		CAIN 176			; }
***************


**** File 1) TELNET.MID[S,NET]/16P/59L
1)		SKIPN NPROTP			; but not in old protocol.
1)		  SKIPA
1)		 JRST TTISR3
**** File 2) TELNET.MID[NET,MRC]/16P/59L
2)		 JRST TTISR3
***************


**** File 1) TELNET.MID[S,NET]/16P/76L
1)	];IFE FTDPYP
**** File 2) TELNET.MID[NET,MRC]/16P/74L
2)	TTISR9:
2)	];IFE FTDPYP
***************


**** File 1) TELNET.MID[S,NET]/16P/79L
1)		 JRST TTISR9
1)		PUSH P, ? PUSHJ P,DCHOUT ? PUSHJ P,SCNUPD ? POP P,
1)	];IFN FTDPYP
1)	TTISR9:	SKIPN CRONLY			; only sending CR's without LF's
1)	TTISR3:	 PUSHJ P,NETOCH
**** File 2) TELNET.MID[NET,MRC]/16P/78L
2)		 JRST TTISR1
2)		PUSH P, ? PUSHJ P,DCHOUT ? PUSHJ P,SCNUPD ? POP P,
2)	];IFN FTDPYP
2)	TTISR3:	PUSHJ P,NETOCH
***************


**** File 1) TELNET.MID[S,NET]/17P/41L
1)		 TRNN 600			; command?
1)		  JRST NTISR4			; new protocol or not a command
1)		CAIE 200			; old TELNET DM
1)		CAIN 401			; pup TELNET DM
1)		 AOS NTOINP
**** File 2) TELNET.MID[NET,MRC]/17P/41L
2)		 TRNN 200			; command?
2)		  JRST NTISR4			; new protocol or not a command
2)		CAIN 200
2)		 AOS NTOINP
***************


**** File 1) TELNET.MID[S,NET]/17P/50L
1)		CAIN 405			; pup TELNET timing mark?
1)		 JRST NTISR8			;  yes, send stupid reply
1)	;Don't look at IAC for PARC's Ethernet TELNET.  If it's in this mode, it
1)	;isn't going to know this, and it's a probably a VAX EMACS trying to be
1)	;'10 EMACS and mistakenly echoing a word-delete command (e.g. Meta-Delete).
1)		SKIPN CRONLY			;Don't even try new protocol if CRONLY
1)		CAIE IAC
**** File 2) TELNET.MID[NET,MRC]/17P/49L
2)		CAIE IAC
***************


**** File 1) TELNET.MID[S,NET]/18P/1L
1)	;NTISR1 NTIS1A NTISR6 NTISR5 NTISR3 NTISR7 NTISR8
1)	; Hack character for output
**** File 2) TELNET.MID[NET,MRC]/18P/1L
2)	;NTISR1 NTIS1A NTISR6 NTISR5 NTISR3
2)	; Hack character for output
***************


**** File 1) TELNET.MID[S,NET]/18P/59L
1)		 JRST NTISR7
1)		SOSG DSOBF+2
**** File 2) TELNET.MID[NET,MRC]/18P/59L
2)		 JRST NTISER
2)		SOSG DSOBF+2
***************


**** File 1) TELNET.MID[S,NET]/18P/63L
1)	NTISR7:
1)	;;; This should be needed, but isn't???
1)	;;;	SKIPE CRONLY			; do we need to supply a LF
1)	;;;	CAIE ↑M				; after a CR?
1)		 JRST NTISER			;  no
1)	IFE FTDPYP,[
1)		SKIPE TRANSP			; watch out for transparent mode!
1)		 JRST NTISER
1)	];IFE FTDPYP
1)		MOVEI ↑J			; fake a LF
1)		JRST NTISR1
1)	;Send timing mark reply for old style PUP (sigh...)
1)	NTISR8:	MTAPE 1,SMRBLK		; yes, send Timing Mark Reply
1)		 JFCL			; ignore error, interrupt code should see it
1)		JRST NTISER
**** File 2) TELNET.MID[NET,MRC]/18P/63L
2)		JRST NTISER
***************


**** File 1) TELNET.MID[S,NET]/22P/1L
1)	;DCHOUT DCHCKY DCHSND DCHPRT CPOPJ
1)	SUBTTL Datamedia simulator
1)	IFN FTDPYP,[		;Whole page
1)	DCHOUT:	ANDI 177			; flush buckies
**** File 2) TELNET.MID[NET,MRC]/22P/1L
2)	;DCHOUT DCHCKY DCHSND CPOPJ
2)	SUBTTL Datamedia simulator
2)	IFN FTDPYP,[
2)	DCHOUT:	ANDI 177			; flush buckies
***************


**** File 1) TELNET.MID[S,NET]/22P/33L
1)	IFN FTDPYP&2,[
1)		AOSG ESCMOD			; processing escape sequence?
1)		  JRST ESCONT			;   yes, parse the fool thing
1)	];IFN FTDPYP&2
1)	IFE FTDPYP&2,[
1)		AOSE QUOTEP
1)	];IFE FTDPYP&2
1)		 CAIL <" >			; if a printing character,
1)	DCHPRT:	  JRST [CAIN 32
1)			 MOVEI 33		; sad but necessary conversion
**** File 2) TELNET.MID[NET,MRC]/22P/32L
2)		AOSE QUOTEP
2)		 CAIL <" >			; if a printing character,
2)		  JRST [CAIN 32
2)			 MOVEI 33		; sad but necessary conversion
***************


**** File 1) TELNET.MID[S,NET]/22P/53L
1)	];IFN FTDPYP
1)	;DMCTAB
1)	IFN FTDPYP,[	;Whole page
1)	DMCTAB:	CAI				; ↑@ no-op
**** File 2) TELNET.MID[NET,MRC]/23P/1L
2)	;DMCTAB
2)	DMCTAB:	CAI				; ↑@ no-op
***************


**** File 1) TELNET.MID[S,NET]/23P/40L
1)		JRST GOTESC			; ↑[ quote next character or ANSI ESC
1)		JRST [	SKIPN INSDLP
**** File 2) TELNET.MID[NET,MRC]/23P/38L
2)		SETOM QUOTEP			; ↑[ quote next character
2)		JRST [	SKIPN INSDLP
***************


**** File 1) TELNET.MID[S,NET]/23P/47L
1)	GOTESC:
1)	IFN FTDPYP&2,[
1)		SETOM ESCMOD			; Perhaps quote next character
1)		SETZM ARGC			; No arguments yet
1)		SETZM ARGV
1)	];IFN FTDPYP&2
1)	IFE FTDPYP&2,[
1)		SETOM QUOTEP			; quote next character
1)	];IFE FTDPYP&2
1)		POPJ P,
1)	];IFN FTDPYP
1)	;ESCONT ESCL1 ESCL2 BADESC
1)		SUBTTL ANSI "Standard" display (+ some VT-100 stuff)
1)	IFN FTDPYP&2,[
1)	ESCONT:	SKIPN 1,ARGV			;We'll need this sooner or later...
1)		  MOVEI 1,1
1)		EXCH 1				;Argument in 0, character in 1
1)		MOVEM 1,LSTESC			;Remember for iteration and debugging
1)		CAIL 1,"@			;Is this one we have a table for?
1)		CAILE 1,"P
1)		 JRST ESCL2
1)		SETZM ESCMOD			;Leave this mode.
1)	ESCL1:	XCT ESCTB1-"@(1)		;Routine does POPJ if done.
1)		SOSG ARGV			;More to do?
1)		 POPJ P,			; No, done
1)		MOVE 1,LSTESC			;Restore character
1)		JRST ESCL1			;Try for more.
1)	ESCL2:	CAIN 1,"[			;New standard?		(Matching "])
1)		 JRST [	HRROM 1,ESCMOD		;  Yes, special treatment (make large
1)			POPJ P,]		;    neg. number, value not critical)
1)		CAIN 1,";			;Separator?
1)		 JRST [	SKIPL ESCMOD		;Better be in long mode
1)			  JRST BADESC		;  Sorry, Charlie
1)			AOS 1,ARGC
1)			CAIL 1,ARGMAX		;Watch for overflow
1)			 SOS ARGC		;  Keep it dirty but honest
1)			SETZM ARGV(1)		;Default assumption
1)			POPJ P,]
1)		CAIL 1,"0
1)		CAILE 1,"9
1)		 JRST BADESC
1)		SKIPGE ESCMOD			;Long form?
1)		 JRST [	MOVEI -"0(1)		; Yes, accumulate argument(s)
1)			MOVE 1,ARGC
1)			EXCH ARGV(1)
1)			IMULI 12		;Decimal?!!
1)			ADDM ARGV(1)
1)			POPJ P,]
1)		SETZM ESCMOD			;Leave this mode.
1)	;	XCT ESCTB2-"0(1)
1)	;	POPJ P,
1)		jrst badesc
1)	;Here we have a bad escape sequence.  Put this stuff on the page printer if
1)	;in debug mode
1)	BADESC:	SETZM ESCMOD			;Leave this mode.
1)		SKIPN DEBUGP			;Looking at lossage?
1)		 POPJ P,			;  No, just ignore.
1)		OUTSTR [ASCIZ/Bad <ESC>/]
1)		SKIPGE ESCMOD
1)		 OUTSTR [ASCIZ/[.../]		;] for balance
1)		OUTCHR 1
1)		OUTSTR [ASCIZ/ /]
1)		POPJ P,
1)	];IFN FTDPYP&2
1)	;ESCTB1
1)	;Tables for ANSI mode
1)	IFN FTDPYP&2,[	;Whole page
1)	;These things JRST when they don't wanted to be repeated by ARGV
1)	ESCTB1:	JRST INSCHR			;@  ICH	Insert Character
1)		PUSHJ P,LINSRV			;A  CUU	Cursor Up
1)		PUSHJ P,LINEFD			;B  CUD	Cursor Down
1)		PUSHJ P,CSRAOS			;C  CUF	Cursor Forward
1)		PUSHJ P,CSRSOS			;D  CUB	Cursor Backward
1)		PUSHJ P,[PUSHJ P,CARRET		;E  CNL	Cursor Next Line
1)			 MOVNI 1,"E-"B
1)			 ADDB 1,LSTESC
1)			 PUSHJ P,LINEFD
1)			 POPJ P,]
1)		PUSHJ P,[PUSHJ P,CARRET		;F  CPL	Cursor Previous Line
1)			 MOVNI 1,"F-"C
1)			 ADDB 1,LSTESC
1)			 PUSHJ P,LINSRV
1)			 POPJ P,]
1)		PUSHJ P,[PUSHJ P,CARRET		;G  CHA	Cursor Horizonal Absolute
1)			 MOVNI 1,"G-"C
1)			 ADDB 1,LSTESC
1)			 POPJ P,]
1)		JRST [	 SKIPE 0		;H  CUP	Cursor Position
1)			  SUBI 0,1
1)			 SKIPE ARGC
1)			  HRL ARGV+1
1)			 TLNE 0,-1
1)			  SUB 0,[1,,0]
1)			 JRST CSRPOS]
1)		PUSHJ P,CSRTAB			;I  CHT	Cursor Horizonal Tabulation
1)		JRST CLREOF			;J  ED	Erase in Display
1)		JRST CLREOL			;K  EL	Erase in Line
1)		JRST INSLIN			;L  IL	Insert Line
1)		JRST DELLIN			;M  DL	Delete Line
1)		JRST BADESC			;N  EF	Erase in Field
1)		JRST BADESC			;O  EA	Erase in Area
1)		JRST DELCHR			;P  DCH	Delete Character
1)	];IFN FTDPYP&2
1)	;CMCDSP
**** File 2) TELNET.MID[NET,MRC]/23P/45L
2)	];IFN FTDPYP
2)	;CMCDSP
***************


**** File 1) TELNET.MID[S,NET]/29P/24L
1)		  JRST [SKIPE CRONLY		; old protocol or in the mode already
1)			 SETOM TRBINP		;   in PARC Ethernet TELNET, 200 bit
1)						;   isn't used for commands, so is safe.
1)			POPJ P,]
1)		SETOM TRBINP			; diddle the EDIT key
**** File 2) TELNET.MID[NET,MRC]/27P/24L
2)		  POPJ P,			; old protocol or in the mode already
2)		SETOM TRBINP			; diddle the EDIT key
***************


**** File 1) TELNET.MID[S,NET]/33P/6L
1)		 JRST [	OUTSTR [ASCIZ/No DDT./]
1)			EXIT 1,
1)			POPJ P,]		; no DDT!
**** File 2) TELNET.MID[NET,MRC]/31P/6L
2)		 JRST [	EXIT 1,
2)			POPJ P,]		; no DDT!
***************


**** File 1) TELNET.MID[S,NET]/33P/15L
1)		PUSHJ P,[POP P,JOBOPC		; enter DDT
1)			 JRST @JOBDDT]
1)		PTJOBX [0 ? 3]
**** File 2) TELNET.MID[NET,MRC]/31P/14L
2)		PUSHJ P,@JOBDDT			; enter DDT
2)		PTJOBX [0 ? 3]
***************


**** File 1) TELNET.MID[S,NET]/33P/33L
1)	For more information, see the Monitor Command Manual, online
1)	as MONCOM.BH[S,DOC].
1)	/
**** File 2) TELNET.MID[NET,MRC]/31P/31L
2)	For more information, read TELNET.MRC[UP,DOC].
2)	/
***************