Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-03 - decus/20-0078/libsim/arrlgd.mac
There is 1 other file named arrlgd.mac in the archive. Click here to see a list.
00100	COMMENT * SIMULA specification;
00200	OPTIONS(/EXTERN:QUICK,arrlgd);
00300	INTEGER PROCEDURE arrlgd(ta); TEXT ARRAY ta;;
00400	
00500	!*;! MACRO-10 code !*;!
00600	
00700		TITLE arrlgd
00800	;!	Compute N := no. of elements in array TA + sum of
00900	;!	the lengths of the elements in the text array TA
01000	;!	N is returned as value of the function procedure ARRLGD
01100		SALL
01200		SEARCH	MACSIM
01300		QUICKPROC
01400		ENTRY arrlgd
01500		SPECIFY<
01600		PROC	.arrlgd,ta
01700		INTEGER	.arrlgd
01800		ARRAY	ta
01900		>
02000		X4=4
02100	arrlgd:	EXCH	ta,(xtac)
02200		PUSH	XPDP,X4
02300		MOVE	X1,5(ta)
02400		SUB	X1,4(ta)	;! Upper limit - lower limit
02500		ADDI	X1,1		;! Loop index
02600		MOVEI	X4,7(ta)	;! Position in array
02700		MOVEM	X1,ta		;! Result = number of elements
02800	L1:	HLRZ	X0,(X4)		;! Length of next element
02900		ADDM	X0,ta		;! Add to result
03000		ADDI	X4,2		;! Increase array position
03100		SOJG	X1,L1		;! End of loop
03200		POP	XPDP,X4		;! Restore register from stack
03300		EXCH	ta,(XTAC)
03400		RETURN
03500		LIT
03600		END;