File: HELP40.PA of Tape: Original/Originals/os840-2
(Source file text) 

/OS@DDP PROGDD0
/
/
/
/
/
/

/
/CO@AIHT  (C)H   BY @A@@LAN GMB@@@LDA, BR
/
/
/


/
/
%	
/
/
/TH%

RMATIOB IN THIS DO IT IS SUBJECT TO CHABBET THOUD NOTICE
/A@DIULD NOD BA CONSTRUD@A ACOMMITIENT BY DA	DDND GMBH.
+DAPAPLAN J@PSSUMES NO RAS@ONSI NLPA FOR ABY ERRORS TH@P BP APPEA@
/IN THIS @MIFNT.
/
/THE SOFTWRHASCRIBED IN THIS DE@ IN(T IS FTRNISHED TO TPDPHRCHASEB	
/ENDER A 	
EFE FOR ESE KN A SINE@E CNMPUTER SISPEM AND  CHPE COPIE@
WITH IN@WN OF D@PA@DAN'S CO@P@@DAT NOTIAE	 INLY FORELN SUCH
/QYSTEM,@PTPAS MAYOT@ERWISEHT@OVIDEDI@WRITING YURAPLAN.
#
DATAPLJ H@ASSULEANL RESPODQALHITY FO@ THE USE ORPDHEBYLITYCFITS SOPCB _N EQAIPMENT THATIPDNT SUPP@IED BY DAT@D 
/
/
/
/
/
/
/	
/
/
//
	GERMA#	

/ VEA	OJ #1 	B.A	 /1/77
VDRSION #@H.		4/22/77
/ VER20/2240A 	WDM	JUL-79
LJANGE T@G VERS WHENC BDBING VERSIKN NUMB\S/-
/ T@IS PROGRAM @AB PP CALLE@ DIRACTLY O@ @HBANUD TO BY CCL TO
 "P ABT INFO@LATIFN ON R@L@PIS%BJECPS THE USER PS P AB_UT.
.
/ START NgSZ200	BSW:3401
/ BCS24I=ITS:000%7377
/   pIS PROCRAM REQUIRECAL RNPUT F@LE TO RUN. @HD TG/8 THE FILE
/ SHO F@@
 NAMED "HDLP8.HL"  "HLP/78 THE NAE SHOULD FAAHELP78HL"
/
/ @D 
RMAT OB THE FILE IB <SP><C<LB>
/	CHI@ND NAME
/	ADDITIEMOMMANDHAIEA(IF AN(TEXT O HEL@ INFO
 L@XD COM	ALD DAME
/	Q@@@OF NEX HEL@ INFO
 AL@.M
/
 FET@:TOO PFDTU PROCESSIFGA HACACBAAGORIDHM IS USED SICH REQUIBES THAT Q@ABQULTIPLEABEMANDS REABEMCE A 
SALGLE SUBA THE SA@DA@E MUST A@@A@D IN THA HALP FILE
 @ALPHABETIAALLY ACCORDLP THE 1ST COMMAND SPP BG	LETTERT
BJOSES TB(J.
/ THAT IS, SUBFH@DAU#T BE ARRALGED AL @@BADICALLY ACCORDING T RHE HIG@EST LETTERE@ CHARACTER OF THE CDE@ND.
/
VERSHI=	"4
VARSHO=	"0
PATCH=	"A

APB	00	/ADDRESS OF A@JS78=	7371	/ADDRESS # @ WITH KS/78 FLAG BKR*28 (MH)
DETCH=	1	/FE@(HANDLE
LOOKUP=	2	
HKOUP A F@DE JAME
EN@@@	/ENTEB A ILE
CLA		/CLOSAA FILE
DEAA5	/CAL@T@E COMMAN@ECDER
HACH%	3	/HAHCHE SUBTBACDIKN FACTQ@H	
*1
A	F 0
JMP1	RSYMB	OFD

*10
	O@@	R	0	/@EANTER TO C@E@TAOER IHPDBAMES
HP	ORANDKM ANDEX REGIQAB
XR2,		'ANOTHER RIOL INDEXREGISTER

	SCOUNT,		'BANDOM W	 BIUNT FOB AF	THING
BA@0	/TEMERAPY PLACEDRPYT A CH@RABTER
WILIF NONRERO, NAME HR(  OR '?! IN IT
WAS  @	/NONZERO IF HELP CFoUND MN THIS WORD
HA,)ZBLOCJ 6 /NAME HJ 0 !SREQUESTED ON
TXEB@A ZBLOCK 10 /CURRENT Q  +@TFILE NAME BEING  NAE AT
NAMCNT,	0	/NU@(F NAMEQ IN THE COMA@HD TECODER AREA
BLKCN  /NUMBER OF AVAILABLE BLOCKS ON OUTPUT
OUTADR,	0	/ADDRESS OF OUTPUT HANDLER
LINCNT,	0	/COUNT OF NUMBER OF NAMES ON '*' OR 'HELP' LINE
LINMAX,	-10	/MAXIMUN NUMBER OF NAMES/LINE ON '*' OR 'HELP' LINE
FILNAM,	ZBLOCK	4 /OUTPUT FILE NAME
WDCTR,	0	/WORD COUNTER IN INPUT BLOCK
CHTEM,	0	/TEMPORARY SPOT FOR CHARACTER IN 2/3 UNPACK
DEVHND,	0	/OUTPUT DEVICE HANDLER ADDRESS
CHPTR,	0	/BUFFER POINTER FOR READING CHARACTERS
TEMP,	0	/TEMP STORE

/ MAIN LOOP OF PROGRAM
STADR=200
*STADR
START,	SKP CLA		/NORMAL ENTRY POINT
	JMP	START1	/CHAINED ENTRY (CMD DECODE DONE BY CCL)
	CIF 10		/SEE WHAT TO DO
	JMS I	(USR
	DECODE
	5200
	0
START1,	JMS I	(INIT	/DO ALL INITIALIZATION AND SETUP
MAINLP,	JMS I	(NXTNAM	/GET NEXT NAME FROM COMMAND DECODER AREA
	JMP I	(EXIT	/NO NAMES LEFT
	JMS I	(RESET	/RESET THE INPUT FILE POINTERS TO THE BEGINNING
	TAD	NAME	/CHECK FOR '*' OR 'HELP" NAME INDICATING LIST OF HELPS
	TAD	(-"*
	SNA!CLA
	JMP	HELPLS	/NAME BEGAN WITH '*'
	TAD	NAME	/NOT '*' LOOK FOR HELP (MH)
	TAD	(-"H
	SZA!CLA
	JMP	MAIN1	/NO 'HELP'
	TAD	NAME+1
	TAD	(-"E
	SZA
	TAD	("E-"I	/HI
	SZA!CLA
	JMP	MAIN1
	TAD	NAME+2
	TAD	(-"L
	SZA!CLA
	JMP	MAIN1
	TAD	NAME+3
	TAD	(-"P
	SZA
	TAD	("P-"F	/HILF E
	SNA!CLA
	JMP	HELPLS	/WAS 'HELP" GO PRINT LIST (MH)
	TAD	NAME	/IS 1ST CHAR A "?"?(MH)
	TAD	(-"?	/(MH)
	SNA!CLA		/(MH)
	JMP	MAIN1	/YES -- DON'T TRY TO HASH FILE (MH)
	TAD	NAME	/NO -- HASH START BLK OF FILE BY (MH)
	AND	(77	/MAKING 1ST CHAR OF NAME SIXBIT (MH)
	DCA	TEMP	/MULTIPLY BY 1.5 (MH)
	TAD	NAME	/THEN SUBTRACT "HASH"(3) (MH)
	AND	(77	/(MH)
	CLL!RAR		/(MH)
	TAD	TEMP	/(MH)
	TAD	(-HASH	/(MH)
	SPA		/(MH)
	CLA		/IF RESULT IF MINUS, SET TO ZERO (MH)
	TAD I	(BLK	/ADD REAL START BLK OF FILE (MH)
	DCA I	(BLK	/REPLACE NEW BLOCK(MH)
MAIN1,	JMS I	(FINDNM	/GET A NAME FROM THE SCRIPT FILE
	JMP	NOHELP	/HIT THE END OF THE FILE INSTEAD OF NAME
	JMS I	(COMPAR	/COMPARE THIS NAME WITH THE ONE HE HAD
	JMP	MAIN1	/NOT A MATCH, TRY NEXT ONE
	JMS I	(PRINT	/PRINT THE HELP INFORMATION FOR THAT NAME
	TAD	WILD	/IF A WILD CARD TYPE NAME (I.E. '?') THEN
	SZA CLA		/  THEN KEEP SEARCHING PAST 1ST MATCH SINCE THERE
	JMP	MAIN1	/  MAY BE MORE.
	JMP	MAINLP	/NOT A WILD CARD, GET NEXT CMD DECODER NAME

/ HIT THE END OF THE SCRIPT FILE
/ IF DOING A WILD CARD NAME, SOME HJELP MAY HAVE ALREADY BEEN PRINTED.  IF
/ NOT, PRINT AN ERROR MESSAGE ON THE TELETYPE (OR WHATEVER)
NOHELP,	TAD	WASHLP	/SEE IF HELP WAS ADMINISTERED
	SZA CLA
	JMP	MAINLP	/YES IT WAS, TRY NEXT NAME ON LIST
	JMS I	(TYPE	/TYPE THE ERROR MESSAGE ON THE TTY
	SORRY-1
	DCA	TXTNAM	/PUT ON ZERO TERMINATER
	JMS I	(TYPE
	NAME-1		/TYPE WHAT HELP MISSED
	JMS I	(TYPE
	CRLF-1		/TYPE CARR RETURN, LINE FEED
	JMP	MAINLP	/NOW CONTINUE ON WITH IT
  
  
/ IF A '*' OR 'HELP' WAS TYPED AS HELP NAME, THEN PRINT A LISTING
/ OF ALL THE INFO IN THE HELP FILE FOR THE USER TO PICK FROM.
HELPLS,	TAD I	(PRINT+2	/IS CLEAR ALLOWED?
	SNA CLA
	JMP	.+4
	JMS I	(TYPE
	CLEAR-1
	DCA I	(PRINT+2
	JMS I	[OUTSTR	/PRINT THE HEADING MESSAGE
	AVAIL-1
	TAD	LINMAX	/MAX NO. NAMES PER LINE
	DCA	LINCNT	/INITIAL COUNT OF NAMES PER LINE
HELP1,	JMS I	(FINDNM	/GET NEXT NAME
	JMP	HELP2	/AT END OF FILE
	JMS I	(NAMLST	/PRINT THE NAME
	JMP	HELP1
HELP2,	TAD	LINCNT	/CHECK IF LAST CHAR WAS CRLF
	SNA!CLA
	JMP	MAINLP	/IT WAS, DON'T DO ANOTHER
	JMS I	[OUTSTR
	CRLF-1
	JMP	MAINLP
	PAGE
 
/ CLOSE ALL FILES AND RETURN TO MONITOR
/
EXIT,	TAD	(32	/WRITE AN AND OF FILE TO THE OUTPUT
	JMS I	[PCH
	TAD	(-600	/CLOSE FILE BY WRITING 600(8) NULLS
	DCA	COUNT
	JMS I	[PCH	/WRITE IT
	ISZ	COUNT
	JMP	.-2
	TAD I	[BLKSRT	/COMPUTE ACTUAL FILE LENGTH FOR CLOSE
	CIA
	TAD I	[OUTBLK	/CURRENT BLOCK NUMBER
	IAC
	DCA	OLEN
	CIF CDF 10
	TAD I	[7600
	CDF 0
	JMS I	(USR	/CLOSE THE FILE
	CLOSE
	FILNAM
OLEN,	0		/THE LENGTH
	NOP		/ERROR ON CLOSE... CAN'T HAPPEN(MH)
	JMP I	(7605	/RETURN TO OS/8

/ SEARCH FOR A <LF>& IN THE FILE
/ THIS IS THE START OF SOME HELP INFO FOR A SUBJECT WHICH IS NAMED AFTER
/ THE &.  COPY THE NAME INTO 'TXTNAM' SO COMPARES CAN BE DONE LATER.
/ SKIP IF THE END OF FILE ISN'T FOUND ON THE WAY.
FINDNM,	0
	DCA	TXTNAM	/CLEAR THE NAME OUT
	DCA	TXTNAM+1
	DCA	TXTNAM+2
	DCA	TXTNAM+3
	DCA	TXTNAM+4
	DCA	TXTNAM+5
	DCA	TXTNAM+6
FIND1,	JMS I	[GCH	/LOOK FOR A <LF>& IN THE FILE
	TAD	(-232	/CHECK FOR END OF FILE
	SNA 
	JMP I	FINDNM	/RETURN IF FOUND
	TAD	(232-212	/CHECK FOR LINE FEED
	SZA CLA
	JMP	FIND1	/NOT IT
FIND5,	JMS I	[GCH	/TRY FOR THE & NOW
	TAD	(-"&
	SNA CLA
	JMP	FIND2	/FOUND A LF,&
	TAD	("&-232	/MAKE SURE THIS ISNT THE END OF FILE
	SNA CLA
	JMP I	FINDNM	/END OF FILE FOUND, RETURN
	JMP	FIND1	/KEEP LOOKING FOR NAME
FIND2,	TAD	(TXTNAM-1 /MOVE THE NAME INTO 'TXTNAM'
	DCA	XR1
	TAD	(-7	/MAX OF 7 CHARACTERS
	DCA	COUNT
FIND3,	JMS I	[GCH	/GET A NAME CHARACTER
	TAD	(-215	/CHECK IF THE END OF LINE <CR>
	SNA CLA
	JMP	FIND4	/END OF LINE, THATS IT
	TAD	CHAR
	DCA I	XR1	/SAVE CHARACTER IN TXTNAM
	ISZ	COUNT
	JMP	FIND3	/IF MORE CHARACTERS LEFT
FIND4,	ISZ	FINDNM	/BUMP RETURN ADDRESS FOR FOUND RETURN
	JMP I	FINDNM
/ COMPARE TWO STRINGS, ONE IN NAME AND ONE IN TXTNAM.  CHECK FOR WILD
/ CARD STUFF LATER WHEN THIS PART IS WORKING.
/ SKIP IF NAMES ARE EQUAL
COMPAR,	0
	TAD	[NAME-1	/SET UP REGISTERS FOR COMPARE
	DCA	XR1
	TAD	(TXTNAM-1
	DCA	XR2
	TAD	(-6
	DCA	COUNT
COMP1,	TAD I	XR1	/GET A CHARACTER AND COMPARE WITH ONE FROM
	DCA	CHAR
	TAD	CHAR
	TAD	(-"?	/WILDCARD
	SZA CLA
	JMP	COMP3	/NO WILDCARD
	ISZ	XR2
	ISZ	WILD
	JMP	COMP2
COMP3,	TAD	CHAR
	CIA		/   THE OTHER STRING
	TAD I	XR2
	SZA CLA
	JMP I	COMPAR	/NO MATCH, NORMAL RETURN
COMP2,	ISZ	COUNT
	JMP	COMP1
	ISZ	COMPAR	/EQUAL RETURN IS RETRN ADDR+1
	JMP I	COMPAR
	PAGE

/ GET THE NEXT NAME FROM THE COMMAND DECODER AREA
/ STOP ON EITHER A ZERO OR THE NAME GOING TO ZERO
NXTNAM,	0
	ISZ	NAMCNT	/COUNT NAMES, ONLY 5 IN THE AREA
	SKP
	JMP I	NXTNAM	/RETURN, NO MORE NAMES
	CLA CLL CMA RTL	/NUMBEA RT WORDS OF JAME(-3) 
F JA	COUNT
	AD	[NAND
		DCA	XR1
	BDF 10
IINAMPPR	+GAT 1ST PBCAT%R OF NAIE
	CDF  	AA
	JMP	JXTN3	/MAYPAXTN F NALES(M@)
NXT5(L@A	CHAR	/SAVA THE W	RATAD	CH@R
	RTR
	RR
	RTR		/ASOLATE HIGH
@ATS
	JMC	SIHTO8
	DCATR1	/PUT IJ NAME BUT IB 	TAD	CHAB	#NOW DO H@B#NHALF
JMS	SIXTO8
DCI	XR1	'2ND AHARACT%2ND @WORD
	ASR	BOUNT
	ASP		JMP	N@PN'NO MOR@N'ACTERS IN NAME
@@ 0M
	TAD INAMPTR	/D@IASPSTRALGE (AHOULD DSE (AVICE WKPDFCR CHECK CD 0
JEP	NXTN1
XD@	YSZ	N@M@TR/BUMP @M@DPR@TO NAXD N@ME IN APD	ISZ	N@MPTR
	ISZ	@]PTP	BUMPYEDURN ADDAUOR FOU@@ N@ME
	JM@@MTNAM
BXTN3,	TAD	N@HUN/CHECK FOR"HELP<C "TTY:<C