Google
 

Trailing-Edge - PDP-10 Archives - red405a2 - uetp/lib/cmlbjs.mac
There is 1 other file named cmlbjs.mac in the archive. Click here to see a list.
	TITLE	CMLBJS	LIBRARY OF JSYS CALLS.
	SUBTTL	C.MITCHELL 1977. ROUTINES WRITTEN AT COLOGNE.


	;THIS LIBRARY CONTAINS "JSYS" CALLS. ALL ROUTINES BEGIN
	;WITH A "J" AND ARE FOLLOWED BY THE NAME OF THE JSYS.

	;THE IDEA IS THAT ERROR CHECKS AND MULTIPLE RESULTS
	;CAN BE CHECKED, ERROR MESSAGES ISSUED, AND MULTIPLE
	;RETURNS CAN BE PROVIDED.

	;WITH I/O JSYS'S THE JFN IS EXPECTED TO BE IN "T1".
	;ALL ROUTINES SHOULD BE WRITTEN SO THAT THE CURRENT
	;JFN FOR OUTPUT IS HELD IN "OUTP" AND THAT FOR INPUT
	;SHOULD BE IN "INP". CALLS TO SOME OF THE JSYS'S WILL
	;THEN CAUSE "T1" TO BE LOADED FROM EITHER "OUTP" OR
	;"INP". ALSO, THE UPDATED JFN WILL BE STORED BACK INTO
	;EITHER "OUTP" OR "INP" AFTER THE JSYS HAS BEEN EXECUTED.
	;THIS ALLOWS THE SAME ROUTINES TO WORK WHEN WRITING TO
	;CORE INSTEAD OF FILES.

	PRGEND
	TITLE	JCOMND	COMMAND JSYS ROUTINE
	SUBTTL	C.MITCHELL 1977. ROUTINES WRITTEN AT COLOGNE.

	SEARCH	MONSYM,MACSYM,CMLBSM

	IFNDEF	.PSECT,<
	.DIRECT	.XTABM>

	SALL

	ENTRY	JCOMND

	;ROUTINE TO ISSUE "COMND" JSYS. ENTER WITH T2 SET UP.
	;RETURNS NON-SKIP IF A RE-PARSE IS NECESSARY, SKIP
	;IF BAD REPLY, OR DOUBLE SKIP IF GOOD.

JCOMND:	MOVEI	T1,CMDBLK##	;POINT TO COMMAND BLOCK
	COMND			;DO REQUESTED FUNCTION
	TXNE	T1,CM%RPT	;REPARSE?
	POPJ	P,		;YES--NON SKIP
	TXNN	T1,CM%NOP	;GOOD REPLY?
	PJRST	CPOPJ2##	;YES
	PJRST	CPOPJ1##	;ELSE SKIP

	PRGEND
	TITLE	JOPENF	OPEN FILE
	SUBTTL	C.MITCHELL 1977. ROUTINES WRITTEN AT COLOGNE.

	SEARCH	MONSYM,MACSYM,CMLBSM

	IFNDEF	.PSECT,<
	.DIRECT	.XTABM>

	SALL

	ENTRY	JOPENF

	;ROUTINE TO OPEN FILE. ENTER WITH T1 CONTAINING JFN,
	;AND T2 CONTAINING OPEN FLAGS. RETURN +1 IF ERROR
	;OR SKIP IF OK. PRINT ERROR MESSAGE IF ERROR.

JOPENF:	OPENF			;OPEN IT
	 PJRST	JSERPJ##	;ERROR
	PJRST	CPOPJ1##	;OK

	PRGEND
	TITLE	JGETAB	ROUTINE TO DO GETABS
	SUBTTL	C.MITCHELL 1977. ROUTINES WRITTEN AT COLOGNE.

	SEARCH	MONSYM,MACSYM,CMLBSM

	IFNDEF	.PSECT,<
	.DIRECT	.XTABM>

	SALL

	ENTRY	JGETAB

	;ROUTINE TO DO GETABS. ENTER WITH T1 SET UP AS DEFINED
	;FOR GETABS. RETURN +1 ALWAYS WITH EITHER THE REQUIRED
	;ENTRY OR ZERO.

JGETAB:	GETAB			;GET IT
	 SETZM	T1		;NOT THERE
	POPJ	P,		;OK

	PRGEND
	TITLE	JODTIM	OUTPUT DATE AND/OR TIME
	SUBTTL	C.MITCHELL 1977. ROUTINES WRITTEN AT COLOGNE.

	SEARCH	MONSYM,MACSYM,CMLBSM

	IFNDEF	.PSECT,<
	.DIRECT	.XTABM>

	SALL

	ENTRY	JODTIM

	;ROUTINE TO OUTPUT THE DATE AND/OR TIME. ENTER WITH TIME IN
	;INTERNAL FORMAT IN T2. OUTPUT IS TO FILE WITH JFN IN OUTP.
	;T3 SHOULD HAVE FLAGS SET UP.
	;RETURN +1 ALWAYS.

JODTIM:	PUSHJ	P,OUTPGT##	;OUTPUT JFN
	ODTIM			;OK
	 ERJMP	JSERPJ##	;ERROR
	POPJ	P,		;OK

	PRGEND
	TITLE	JFLOUT	OUTPUT FLOATING POINT NUMBER
	SUBTTL	C.MITCHELL 1977. ROUTINES WRITTEN AT COLOGNE.

	SEARCH	MONSYM,MACSYM,CMLBSM

	IFNDEF	.PSECT,<
	.DIRECT	.XTABM>

	SALL

	ENTRY	JFLOUT

	;ROUTINE TO OUTPUT A FLOATING POINT NUMBER IN T2 TO
	;FILE WITH JFN IN OUTP. T3 SHOULD BE SET UP. RETURN +1
	;IF ERROR, AND SKIP IF OK.

JFLOUT:	PUSHJ	P,OUTPGT##	;OUTPUT JFN
	FLOUT			;OUTPUT IT
	 PJRST	JSERPJ##	;ERROR
	PJRST	CPOPJ1##	;OK

	PRGEND
	TITLE	JFLIN	INPUT A FLOATING POINT NUMBER
	SUBTTL	C.MITCHELL 1977. ROUTINES WRITTEN AT COLOGNE.

	SEARCH	MONSYM,MACSYM,CMLBSM

	IFNDEF	.PSECT,<
	.DIRECT	.XTABM>

	SALL

	ENTRY	JFLIN

	;ROUTINE TO INPUT A FLOATING POINT NUMBER IN T2 FROM
	;FILE WITH JFN IN INP. RETURN +1
	;IF ERROR, AND SKIP IF OK.

JFLIN:	PUSHJ	P,INPGT##	;INPUT JFN
	FLIN			;INPUT IT
	 PJRST	JSERPJ##	;ERROR
	PJRST	CPOPJ1##	;OK

	PRGEND
	TITLE	JNOUT	OUTPUT A NUMBER
	SUBTTL	C.MITCHELL 1977. ROUTINES WRITTEN AT COLOGNE.

	SEARCH	MONSYM,MACSYM,CMLBSM

	IFNDEF	.PSECT,<
	.DIRECT	.XTABM>

	SALL

	ENTRY	JNOUT

	;ROUTINE TO OUTPUT A NUMBER. ENTER WITH NUMBER IN T2 AND
	;FORMAT BITS IN T3. OUTPUT IS TO FILE WITH JFN IN OUTP.
	;RETURN +1 IF ERROR, OR SKIP IF OK.

JNOUT:	PUSHJ	P,OUTPGT##	;GET JFN
	NOUT			;OUTPUT IT
	 PJRST	JSERPJ##	;ERROR
	PJRST	CPOPJ1##	;SKIP--OK

	PRGEND
	TITLE	JNIN	INPUT A NUMBER
	SUBTTL	C.MITCHELL 1977. ROUTINES WRITTEN AT COLOGNE.

	SEARCH	MONSYM,MACSYM,CMLBSM

	IFNDEF	.PSECT,<
	.DIRECT	.XTABM>

	SALL

	ENTRY	JNIN

	;ROUTINE TO INPUT A NUMBER FROM FILE WITH JFN IN "INP".
	;T3 SHOULD BE SET UP. RETURN +1 IF ERROR OR SKIP IF OK.

JNIN:	PUSHJ	P,INPGT##	;GET JFN
	NIN			;GET NUMBER
	 POPJ	P,		;ERROR
	PJRST	CPOPJ1##	;OK

	PRGEND
	TITLE	JBKJFN	BACKUP FILE POINTER
	SUBTTL	C.MITCHELL 1977. ROUTINES WRITTEN AT COLOGNE.

	SEARCH	MONSYM,MACSYM,CMLBSM

	IFNDEF	.PSECT,<
	.DIRECT	.XTABM>

	SALL

	ENTRY	JBKJFN

	;ROUTINE TO BACKUP INPUT FILE POINTER BY ONE BYTE.

JBKJFN:	PUSHJ	P,INPGT##	;GET JFN
	BKJFN			;DO IT
	 PJRST	JSERPJ##	;FAILED
	PJRST	CPOPJ1##	;OK

	PRGEND
	TITLE	JBOUT	OUTPUT A CHARACTER
	SUBTTL	C.MITCHELL 1977. ROUTINES WRITTEN AT COLOGNE.

	SEARCH	MONSYM,MACSYM,CMLBSM

	IFNDEF	.PSECT,<
	.DIRECT	.XTABM>

	SALL

	ENTRY	JBOUT

	;ROUTINE TO OUTPUT A BYTE. ENTER WITH BYTE IN T2. OUTPUT
	;IS TO FILE WITH JFN IN "OUTP". RETURN +1 IF ERROR, SKIP IF OK

JBOUT:	PUSHJ P,OUTPGT##	;GET JFN
	BOUT
	ERJMP	JSERPJ##	;ERROR
	PJRST	CPOPJ1##	;OK

	PRGEND
	TITLE	JBIN	INPUT A CHARACTER FROM FILE
	SUBTTL	C.MITCHELL 1977. ROUTINES WRITTEN AT COLOGNE.

	SEARCH	MONSYM,MACSYM,CMLBSM

	IFNDEF	.PSECT,<
	.DIRECT	.XTABM>

	SALL

	ENTRY	JBIN

	;ROUTINE TO INPUT A CHARACTER FROM A FILE. ENTER WITH
	;JFN IN "INP". RETURNS NON-SKIP IF EOF OR ERROR, OR SKIP WITH
	;BYTE IN T2.

JBIN:	PUSHJ	P,INPGT##	;GET JFN
	BIN			;GET CHAR
	ERJMP	CPOPJ##		;ERROR
	JRST	CPOPJ1##	;SKIP FOR OK

	PRGEND
	TITLE	JSOUT	OUTPUT A STRING
	SUBTTL	C.MITCHELL 1977. ROUTINES WRITTEN AT COLOGNE.

	SEARCH	MONSYM,MACSYM,CMLBSM

	IFNDEF	.PSECT,<
	.DIRECT	.XTABM>

	SALL

	ENTRY	JSOUT

	;ROUTINE TO OUTPUT A STRING. ENTER WITH OUTPUT JFN IN OUTP
	;AND T2 POINTING TO STRING. ALSO T3 AND T4 SHOULD BE SET UP.
	;RETURN +1 IF ERROR, OR SKIP IF OK.

JSOUT:	PUSHJ P,OUTPGT##	;GET JFN
	SOUT			;OUTPUT IT
	ERJMP	JSERPJ##	;ERROR
	PJRST	CPOPJ1##	;OK

	PRGEND
	TITLE	JSIN	INPUT A STRING FROM A FILE
	SUBTTL	C.MITCHELL 1977. ROUTINES WRITTEN AT COLOGNE.

	SEARCH	MONSYM,MACSYM,CMLBSM

	IFNDEF	.PSECT,<
	.DIRECT	.XTABM>

	SALL

	ENTRY	JSIN

	;ROUTINE TO INPUT A STRING. ENTER WITH JFN IN "INP" AND
	;POINTER TO SPACE FOR STRING IN T2. ALSO T3 AND T4 SHOULD
	;BE SET FOR REQUIRED LENGTH OR TERMINATING CHARACTER.
	;RETURNS +1 IF ERROR, OR SKIP IF OK.

JSIN:	PUSHJ	P,INPGT##	;GET JFN
	SIN
	ERJMP	CPOPJ##		;ERROR
	JRST	CPOPJ1##	;OK

	PRGEND
	TITLE	JSERPJ	PRINT REASON FOR JSYS ERROR
	SUBTTL	C.MITCHELL 1977. ROUTINES WRITTEN AT COLOGNE.

	SEARCH	MONSYM,MACSYM,CMLBSM

	IFNDEF	.PSECT,<
	.DIRECT	.XTABM>

	SALL

	ENTRY	JSERPJ

	;ROUTINE TO PRINT REASON FOR JSYS ERROR. CALL WITH PUSHJ.

JSERPJ:	MOVEI	T1,.PRIOU	;TO TTY
	HRLOI	T2,.FHSLF	;LAST ERROR MADE BY US
	SETZM	T3		;LONG STRING
	ERSTR			;TYPE IT
	 JFCL
	 JFCL			;MANY RETURNS
	HRROI	T1,[ASCIZ /
/]
	PSOUT
	POPJ	P,		;OK

	END