Trailing-Edge - PDP-10 Archives - steco_19840320_1er_E35 - 10,5676/teco/macros/help.tco
There is 1 other file named help.tco in the archive. Click here to see a list.
!; TECO ON-LINE HELP SYSTEM -- Last Revised: March, 1979 !
!; Author: Clive B. Dawson  -- Univ. of Texas at Austin !
!; Editor: James C. Simpson -- National Security Agency !
!; This TECO macro does keyword searches in TECHLP.TXT !

	[a[b[c[d[e[f[g[h[i[j[k[z	!;Save Q-registers!
	EOUj 				!;Save current EO level!
	0UK				!; Assume not video mode !
	0EO	EO-4+1"G		!; Check if we might have video mode !
		EVMODE$Uk		!; Save current state of display !
		EVOFF$'			!; And turn off the display !
	0EO				!; Set EO level to not complain about args !
	^AHelp is on the way!^A :13,1^T :10,1^T  !;For the impatient...!
	ETUh 1ET			!;Save ET, set to literal typeout!
	^XUi 0^X			!;Save ^X, set to either case!
	HXa .Ub HK			!;Save buffer, pointer, and clear it!
	13I$ 10I$ HXf HK		!;Put crlf in Qf for typeout!
	EPted:techlp.txt$ [*]g		!;Get help text and save it in Qg!
	Gg ZUz				!;Put it in buffer and save length!

	EIted:getnam.tec$		!;Get user's name!
	G0 :.,QzS^N $"U QzJ'		!;Put in buffer, backup to non-blank!
	^AHi, ^A Qz,.T Qz,ZK		!;Type and delete user's name!
	^A...Type HELP<esc> for basic help.^A Qf= !;and rest of the greeting!

!PRMPT!	:11^T$ 0ET			!;Clear Control-O, set normal typeout!
	Qf= ^A-^A			!;Type the prompt!
	QzJ				!;Go to end of text!
!GETCH!	^TUc				!;Get a character!
	Qc-^o10 "E Qz-."E OPRMPT$ ' ^A ^A :^o10,1^T -D OGETCH$ ' !;^H!
	Qc-^o177"E Qz-."E OPRMPT$ ' .-1,.T          -D OGETCH$ ' !;<DEL>!
	Qc-^o25 "E ^A^U^A Qz,.K			       OPRMPT$ ' !;^U!
	Qc-^O022"E Qf= ^A-^A  Qz,.T		       OGETCH$ ' !;^R!
!GETC1!	Qc-^O037"G QcI$ OGETCH$'	!;If not a control char, put in buffer!
	Qc-^O015"L      OFIXIT$'	!;^@ thru ^L are normal control chars!
	Qc-^O015"E ^T$  OGOTIT$'	!;<CR> ends the string (eat LF)!
	Qc-^O033"E      OGOTIT$'	!;<ESC> ends the string!
					!;Rest are normal control chars!

!FIXIT!	^O136I$ Qc+^O100I$		!;Insert control chars in arrow format!
	OGETCH$				!;Go get next character!

!GOTIT!	Qf=				!;Got the string, echo a crlf!
	Qz-."E OEND$'			!;If null string, quit!
	Qc-^O033"E QzJ I^R^R^R^A$ ZJ'	!;If <ESC> delimiter, insert a ^A!
	Qz,ZX* Qz,ZK			!;Save and delete search string!
	J 0Ue				!;Go to the top and flag no match yet!
	1ET				!;Set literal typeout!
!SERCH!	:S^G*$"U OFAIL$'		!;Search for string!
	1A-3"E .,ZT OPRMPT$'		!;If followed by ^C, type rest of text!
	1A-4"E .Ud 			!;If followed by ^D, type up to a ^C!
	       :S^R^C$"U ZJ' L
	       Qd,.T OPRMPT$
	:-S^R^E$"U 0L' .Ud 		!;Search back to ^E!
	1A-2"E L OSERCH$'		!;Ignore match if ^B at start of line!
	:S^R^B$"U' L Qd,.T 1Ue		!;Type up to ^B, and set flag!
	OSERCH$				!;Keep searching!

!FAIL!	Qe"N OPRMPT$'			!;If a match was found, ok!
	^ASorry.  I can't find help for ^A !;Tell user we found nothing!
	Q*= Qf= OPRMPT$			!;And start again!

!END!	HK Ga QbJ QhET Qi^X QjEO	!;Restore buffer, pointer, flags!
	Qk"N	EVON$'			!; If video was on, turn it back on !
	]z]k]j]i]h]g]f]e]d]c]b]a	!;Restore Q-regs!
	0U* EC				!;Clear Q* and reduce core!