Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-03 - decus/20-0078/libsim/flokup.mac
There is 1 other file named flokup.mac in the archive. Click here to see a list.
00100	COMMENT * SIMULA specification;
00200	OPTIONS(/E:QUICK,flokup);
00300	INTEGER PROCEDURE flokup(f); INTEGER f;
00400	COMMENT f contains the absolute address of a FILOP. UUO argument block.
00500	Result = f unchanged on success, zero on error.
00600	The file info is available in the lookup block (pointed to by .FOLEB
00700	field).  See Monitor Calls manual.
00800	;
00900	
01000	!*;! MACRO-10 code !*;!
01100	
01200		TITLE	flokup
01300		ENTRY	flokup
01400		SUBTTL	SIMULA utility, Lars Enderin Nov 1977
01500	
01600	;!*** Copyright 1977 by the Swedish Defence Research Institute. ***
01700	;!*** Copying is allowed.					***
01800	
01900	
02000		sall
02100		search	simmac,simmcr,simrpa
02200		macinit
02300	
02400		;! Local definitions ;!
02500	
02600		f==XWAC1
02700	
02800	flokup:	PROC
02900		EXCH	f,(XTAC)
03000		HLLZ	.FOFNC(f)	;! Channel
03100		LSH	5		;! to ac position
03200		TLO	(OPEN)
03300		HRRI	.FOIOS(f)
03400		XCT			;! OPEN channel,
03500		 GOTO	L8		;!  error
03600		TLZ	(OPEN)		;! Clear opcode, leave channel,
03700		TLO	(LOOKUP)
03800		HRR	.FOLEB(f)	;! Adr of lookup block from FILOP. blk
03900		XCT			;! LOOKUP channel,adr
04000		 GOTO	L7		;!  failure, go release channel
04100		L	X1,.FOPAT(f)
04200		HLRZ	.FOFNC(f)
04300		ST	(X1)
04400		PATH.	X1,		;! Get file path into path block
04500		 GOTO	L7
04600		GOTO	L9		;! Ok now
04700	
04800	L7():!	HLLZ	.FOFNC(f)	;! Error, release channel
04900		LSH	5
05000		TLO	(RELEASE)
05100		XCT			;! RELEASE channel,
05200	
05300	L8():!	SETZ	f,		;! Error, return zero
05400	L9():!	EXCH	f,(XTAC)	;! Return f or zero
05500		RET
05600		EPROC
05700		LIT
05800		END;