Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-06 - decus/20-153/setret.mac
There are 16 other files named setret.mac in the archive. Click here to see a list.
TITLE	SETRET FOR RPGII V1		
SUBTTL	SET-UP AND RETURN ROUTINES	AL BLACKINGTON/CAM/ACK/RBC

;USED TO BE
;COPYRIGHT 1974, 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MA.
;BUT MODIFIED TO RPGII VERSION 1/14/76, BOB CURRIER

;REVISION HISTORY:

;V1 *****

;	15-DEC-74	/ACK	ADDED ROUTINES SET1. AND SET2.

;	5/15/75		/DBT	ADDED BSET1. AND BSET2. FOR BIS
;	1/14/76		/RBC	MODIFIED TO SUPPORT RPGII.
;*****

	SEARCH	RPGPRM		;DEFINE PARAMETERS.
	%%LBLP==:%%LBLP
	BIS==:BIS

	HISEG
ENTRY SET.1,SET.2,SET.3
ENTRY RET.1,RET.2,RET.3
	ENTRY	SET1.		;TO PICK UP ONE PARAMETER AND BREAK IT DOWN.
	ENTRY	SET1A.		;ANOTHER ENTRY POINT FOR SET1.
	ENTRY	SET2.		;TO PICK UP TWO PARAMETERS AND BREAK
				; THEM DOWN.


; THE FOLLOWING ARE ENTRY POINTS FOR SETTING UP PARAMETERS IN AC'S

SET.3:	MOVE 15,2(16)		;3 PARAMETERS DESIRED
SET.2:	MOVE 14,1(16)		;2 PARAMETERS DESIRED
SET.1:	MOVE 13,0(16)		;1 PARANETER  DESIRED
	POPJ 17,


; THE FOLLOWING ARE RETURN POINTS FOR THE SUB-ROUTINES

RET.3:	AOS	(17)		;RETURN TO CALL+3
RET.2:	AOS	(17)		;RETURN TO CALL+2
RET.1:	POPJ	17,		;RETURN TO CALL+1
	SUBTTL	SET1. - SET UP ONE PARAMETER

COMMENT	\

	THIS ROUTINE SETS UP A SINGLE PARAMETER.

CALLS:
	JSP	JAC,	SET1.		;TO PICK UP THE PARAMETERS,
OR	JSP	JAC,	SET1A.		; INITIALIZE THE SWITCHES AND
					; PRESERVE THE INPUT CODE.

INPUT CONDITIONS:
	(CH)	=	THE INPUT CODE:
				6 ==> SIXBIT
				7 ==> ASCII
				8 ==> EBCDIC

EXIT CONDITIONS:
	SET1. & SET1A.:
		(SW)
			BIT	0	THE OPERATIONAL SIGN FLAG.
			BITS	1-17	ZERO.
			BITS	18-35	THE INPUT CODE.
		(CNT)	THE FIELD LENGTH.
		(IPTR)	THE INPUT BYTE POINTER.
		(CH)	THE INPUT BYTE SIZE.

RETURNS:
	IF THE FIELD LENGTH IS ZERO WE RETURN TO CALLER'S CALLER AT CALL+1.
	IF THE FIELD LENGTH IS NON ZERO WE RETURN TO CALLER AT CALL+1.

REGISTERS MODIFIED:
	SW, CH, IPTR, CNT

\

SET1A.:
SET1.:	HRRZI	SW,	(CH)		;CLEAR ALL SWITCHES AND SAVE THE
					; INPUT CODE.
	MOVE	IPTR,	(PARM)		;GET THE INPUT PARAMETER.
	TLZE	IPTR,	4000		;CLEAR THE SIGN FLAG.
	HRLI	SW,	(1B0)		;IF IT WAS ON, SET THE SIGN SWITCH.
	LDB	CNT,	SLPTR1		;GET THE STRING LENGTH.
	TLZN	IPTR,	3777		;CLEAN UP THE BYTE POINTER.
	POPJ	PP,			;RETURN TO CALLER'S CALLER ON A
					; NULL STRING.
	TRNN	SW,	7		;IS THE INPUT EBCDIC.
	MOVEI	CH,	^D9		;YES, THEN IT'S REALLY 9 BITS

					; PER BYTE.
	DPB	CH,	PTIBS.		;PUT IT IN THE BYTE POINTER.
	JRST		(JAC)		;RETURN.


IFE	BIS,<XLIST>
IFN	BIS,<

;	BSET1. IS THE BIS EQUIVALENT OF SET1.
;	BISCH IS THE SAME AS CH
;	SRCPT IS THE SAME AS IPTR
;	SRCCNT IS THE SAME AS CNT

;	INPUT CODES ARE 6/7/9 IE BYTE SIZE

ENTRY	BSET1.,BSET2.

BSET1.:	HRRZI	SW,	(BISCH)		;CLEAR ALL SWITCHES AND SAVE THE
					; INPUT CODE.
	MOVE	SRCPT,	(PARM)		;GET THE INPUT PARAMETER.
	TLZE	SRCPT,	4000		;CLEAR THE SIGN FLAG.
	HRLI	SW,	(1B0)		;IF IT WAS ON, SET THE SIGN SWITBISCH.
	LDB	SRCCNT,	BSLPT1		;GET THE STRING LENGTH.
	TLZN	SRCPT,	3777		;CLEAN UP THE BYTE POINTER.
	POPJ	PP,			;RETURN TO CALLER'S CALLER ON A
					; NULL STRING.
	DPB	BISCH,	BPTIBS		;PUT BYTE SIZE IN THE BYTE POINTER.
	JRST		(JAC)		;RETURN.

>	;END OF BIS
LIST
	SUBTTL	SET2. - SET UP TWO PARAMETERS.

COMMENT	\

	THIS ROUTINE SETS UP TWO PARAMETERS.

CALL:
	JSP	JAC,	SET2.

INPUT CONDITIONS:
	RH(PARM)	POINTS AT THE FIRST PARAMETER.

EXIT CONDITIONS:
	(IPTR)	=	THE INPUT BYTE POINTER.
	(OPTR)	=	THE OUTPUT BYTE POINTER WITH A NULL S FIELD.
	(CNT)	=	THE SIZE OF BOTH FIELDS.

RETURNS:
	@CALL+1	IF THE SIZE OF THE FIELDS IS ZERO.
	CALL+2	OTHERWISE.

REGISTERS MODIFIED:
	IPTR, OTPR, CNT

\

SET2.:	MOVE	IPTR,	(PARM)		;GET THE INPUT POINTER.
	MOVE	OPTR,	1(PARM)		;GET THE OUTPUT POINTER.
	LDB	CNT,	SLPTR2		;GET THE FIELD LENGTH.
	JUMPE	CNT,	@(JAC)		;RETURN THROUGH CALL+1 ON A
					; NULL STRING.
	TLZ	OPTR,	7777		;CLEAN UP THE BYTE POINTER.
	JRST		1(JAC)		;RETURN TO CALL+2.

;POINTERS TO VARIOUS FIELDS IN THE PARAMETERS.

SLPTR1:	POINT	11,IPTR,17	;POINTS AT THE LENGTH FIELD FOR ONE
				; PARAMETER ROUTINES.
SLPTR2:	POINT	11,OPTR,17	;POINTS AT THE LENGTH FIELD FOR TWO
				; PARAMETER ROUTINES.
	INTERN	PTIBS.
	INTERN	PTOBS.
	INTERN	PACFL.
PTIBS.:	POINT	6,IPTR,11	;POINTS AT THE S FIELD OF IPTR.
PTOBS.:	POINT	6,OPTR,11	;POINTS AT THE S FIELD OF OPTR.
PACFL.:	POINT	4,PARM,12	;POINTS AT THE AC FIELD OF THE AC
				; CONTAINING THE POINTER TO THE PARAMETERS.




IFE	BIS,<XLIST>
IFN	BIS,<

; BSET2. IS THE BIS EQUIVALENT OF SET2.
;
;	IT SETS UP SRCPT, DSTPT, SRCCNT, AND DSTCNT

BSET2.:	MOVE	SRCPT,	(PARM)		;GET THE INPUT POINTER.
	MOVE	DSTPT,	1(PARM)		;GET THE OUTPUT POINTER.
	LDB	SRCCNT,	BSLPT2		;GET THE FIELD LENGTH.
	JUMPE	SRCCNT,	@(JAC)		;RETURN THROUGH CALL+1 ON A
					; NULL STRING.
	MOVE	DSTCNT,	SRCCNT		;SOURCE AND DESTINATION SAME SIZE
	TLZ	DSTPT,	7777		;CLEAN UP THE BYTE POINTER.
	JRST		1(JAC)		;RETURN TO CALL+2.

;POINTERS TO VARIOUS FIELDS IN THE PARAMETERS.

BSLPT1::	POINT	11,SRCPT,17	;POINTS AT THE LENGTH FIELD FOR ONE
				; PARAMETER ROUTINES.
BSLPT2::	POINT	11,DSTPT,17	;POINTS AT THE LENGTH FIELD FOR TWO
				; PARAMETER ROUTINES.
	INTERN	BPTIBS
	INTERN	BPTOBS
BPTIBS:	POINT	6,SRCPT,11	;POINTS AT THE S FIELD OF SRCPT.
BPTOBS:	POINT	6,DSTPT,11	;POINTS AT THE S FIELD OF DSTPT.


>

	END