Google
 

Trailing-Edge - PDP-10 Archives - bb-jr93e-bb - alglib.c08
There are 14 other files named alglib.c08 in the archive. Click here to see a list.
 REP 26/116	;08C1
		MOVEI	A7,1
		MOVE	A10,A0		; SET UP DEFAULT PARAMETERS
		SOSN	A1,.V(DL)
		JRST	COPY1		; ONLY ONE PARAMETER
		CAMLE	A10,.M(DL)
		MOVE	A10,.M(DL)	; MIN(M,LENGTH(S))
		SOJE	A1,COPY1	; IF TWO PARAMETERS
		MOVE	A7,A10
		CAIGE	A7,1
		MOVEI	A7,1		; MAX(M,1)
		MOVE	A10,.N(DL)
		CAMLE	A10,A0
		MOVE	A10,A0		; MIN(N,LENGTH(S))
 WIT
		MOVEI	A7,1		;[347] SET UP DEFAULT PARAMETERS - START COPY
		MOVE	A10,A0		;[347] AT FIRST BYTE, END AT LAST BYTE
		SOSN	A1,.V(DL)	;[347] TEST # OF USER-SUPPLIED PARAMETERS
		 JRST	COPY1		;[347] JUMP IF 1 PARAMETER (COPY WHOLE STRING)
		CAMLE	A10,.M(DL)	;[347] TRYING TO COPY PAST END OF STRING?
		 MOVE	A10,.M(DL)	;[347] NO, PICK UP LAST BYTE # TO COPY (2 ARGS)
		SOJE	A1,COPY1	;[347] JUMP IF 2 PARAMS (COPY 1'ST- M'TH BYTES)
		CAMGE	A7,.M(DL)	;[347] STARTING COPY WITH AT LEAST FIRST BYTE?
		 MOVE	A7,.M(DL)	;[347] YES, START COPYING WHERE USER WANTS
		MOVE	A10,.N(DL)	;[347] NO, START AT BYTE 1 & GET LAST BYTE #
		CAMLE	A10,A0		;[347] INVALID END BYTE #?
		 MOVE	A10,A0		;[347] YES, END WITH LAST BYTE IN STRING
	;[347] A7 IS START BYTE, A10 IS END BYTE
 REP 15/129	;08C2
		MOVE	AX,-1(AX)	; [335] GET FORMAL BITS
		MOVEM	AX,A01TMP(DB)	; [335] PUT THEM HERE UNTIL WE NEED THEM
 WIT
		PUSH	SP,-1(AX)	; [351] SAVE FORMAL BITS ON STACK
 REP 27/129	;08C3
		HLRZ	A0,A01TMP(DB)	; [335] GET FORMAL BITS INTO RIGHT HALF
		TRZ	A0,77		; [335] TURN OFF WHAT WE DON'T CARE ABOUT
		CAIE	A0,$PRO!$S	; [335] STATIC SIMPLE STRING PROC (USER PROC.)?
		CAIN	A0,$D!$EXP!$S	; [335] DYNAMIC SIMPLE STR EXPR (STR EXPRSION)?
		 JRST	LAB321		; [335] YES, GO DELETE IT
		CAIE	A0,$PRO!$S!$EXT	; [335] STATIC EXTERN STR PROC. (ALGLIB PROC.)?
		JRST	.EXIT(DL)	; [335] NO, EXIT BUT DON'T DELETE IT
 WIT
		POP	SP,A0		; [351] RESTORE FORMAL BITS
		TDZ	A0,[$P,,-1]	; [351] TURN OFF EXTRA BITS
		CAME	A0,[($PRO!$S!$EXT)] ; [351] STATIC EXT STR PROC (ALGLIB PROC.)?
		CAMN	A0,[($PRO!$S)]	; [351] STATIC SIMPLE STRING PROC (USER PROC.)?
		 JRST	LAB321		; [351] YES, GO DELETE IT
		CAME	A0,[($D!$S!$EXP)] ; [351] NO, DYNAMIC STRING EXPRESSION?
		 JRST	.EXIT(DL)	; [351] NO, EXIT
		TLC	A2,STRDYN!STRPRC ; [351] YES, AND IS IT DYNAMIC AND THE RESULT
		TLCE	A2,STRDYN!STRPRC ; [351] OF A STRING PROCEDURE?
		 JRST	.EXIT(DL)	; [351] NO, EXIT
 REP 16/130	;08C4
		MOVE	AX,-1(AX)	; [335] GET FORMAL BITS
		MOVEM	AX,A01TMP(DB)	; [335] PUT THEM HERE UNTIL WE NEED THEM
 WIT
		PUSH	SP,-1(AX)	; [351] SAVE FORMAL BITS ON STACK
 REP 26/130	;08C5
		HLRZ	A0,A01TMP(DB)	; [335] GET FORMAL BITS INTO RIGHT HALF
		TRZ	A0,77		; [335] TURN OFF WHAT WE DON'T CARE ABOUT
		CAIE	A0,$PRO!$S	; [335] STATIC SIMPLE STRING PROC (USER PROC.)?
		CAIN	A0,$D!$EXP!$S	; [335] DYNAMIC SIMPLE STR EXPR (STR EXPRSION)?
		 JRST	LAB326		; [335] YES, GO DELETE IT
		CAIE	A0,$PRO!$S!$EXT	; [335] STATIC EXTERN STR PROC. (ALGLIB PROC.)?
		JRST	.EXIT(DL)	; [335] NO, EXIT BUT DON'T DELETE IT
 WIT
		POP	SP,A0		; [351] RESTORE FORMAL BITS
		TDZ	A0,[$P,,-1]	; [351] TURN OFF EXTRA BITS
		CAME	A0,[($PRO!$S!$EXT)] ; [351] STATIC EXT STR PROC (ALGLIB PROC.)?
		CAMN	A0,[($PRO!$S)]	; [351] STATIC SIMPLE STRING PROC (USER PROC.)?
		 JRST	LAB326		; [351] YES, GO DELETE IT
		CAME	A0,[($D!$S!$EXP)] ; [351] NO, DYNAMIC STRING EXPRESSION?
		 JRST	.EXIT(DL)	; [351] NO, EXIT
		TLC	A2,STRDYN!STRPRC ; [351] YES, AND IS IT DYNAMIC AND THE RESULT
		TLCE	A2,STRDYN!STRPRC ; [351] OF A STRING PROCEDURE?
		 JRST	.EXIT(DL)	; [351] NO, EXIT
 INS 37/132	;08C6
		MOVE	A2,PRGLNK(DL)	; [351] GET RETURN ADDR.
		MOVEI	A2,-1(A2)	; [351] GET POINTER TO FORMAL BITS
		PUSH	SP,A2		; [351] SAVE ON STACK FOR LATER
 REP 63/132	;08C7
		JUMPE	A1,CONCA7	; RETURN IF LENGTH IS ZERO
 WIT
		JUMPE	A1,.EXIT(DL)	; [351] RETURN IF LENGTH IS ZERO
 REP 12/133	;08C8
	CONCA5:	MOVNI	A2,.S		; GET SIZE OF ENTRY
		ADDB	A2,.W(DL)	; COUNT W DOWN TO POINT TO HEADER
		MOVEI	A2,@A2		; DELOCATE  ADDRESS
		MOVEI	A1,@STR1(A2)	; GET ADDRESS OF STRING
		MOVE	A0,STR2(A2)	; GET LENGTH INTO A0
		TLZE	A0,STRDYN	; IF STRING IS NOT DYNAMIC
		TLZN	A0,STRPRC	; OR NOT RESULT OF A PROCEDURE
		JRST	CONCA6		; LEAVE IT ALONE
		TDZE	A0,A0		; CLEAR A0 AND UNLESS ALREADY ZERO
		PUSHJ	SP,GETOWN	; CALL GETOWN TO RETURN THE SPACE
	CONCA6:	SOSLE	.N(DL)		; COUNT ONE MORE CHECKED
		JRST	CONCA5		; REPEAT FOR EACH STRING
	CONCA7:	JRST	.EXIT(DL)	; THEN RETURN
 WIT
	CONCA5:	POP	SP,AX		; [351] GET ADDR. OF FORMAL BITS FOR ARGS.
	CONCA6:	MOVNI	A2,.S		; [351] GET SIZE OF ENTRY
		ADDB	A2,.W(DL)	; [351] COUNT W DOWN TO POINT TO HEADER
		MOVEI	A2,@A2		; [351] DELOCATE ADDRESS
		MOVEI	A1,@STR1(A2)	; [351] GET ADDRESS OF STRING TO MAYBE DELETE
		MOVE	A2,STR2(A2)	; [351] GET STRING HEADER BITS
		MOVE	A0,(AX)		; [351] PICK UP ACTUAL PARAMETER BITS
		TDZ	A0,[$P,,-1]	; [351] TURN OFF EXTRA BITS
		CAME	A0,[($PRO!$S!$EXT)] ; [351] STATIC EXT STR PROC (ALGLIB PROC.)?
		CAMN	A0,[($PRO!$S)]	; [351] STATIC SIMPLE STRING PROC (USER PROC.)?
		 JRST	CONCA7		; [351] YES, GO DELETE IT
		CAME	A0,[($D!$S!$EXP)] ; [351] NO, DYNAMIC STRING EXPRESSION?
		 JRST	CONCA8		; [351] NO, LEAVE IT ALONE
		TLC	A2,STRDYN!STRPRC ; [351] YES, AND IS IT DYNAMIC AND THE RESULT
		TLCE	A2,STRDYN!STRPRC ; [351] OF A STRING PROCEDURE?
		 JRST	CONCA8		; [351] NO, LEAVE IT ALONE
	CONCA7:	SETZ	A0,		; [351] YES, GET READY TO DELETE THE STRING
		SKIPE	STR2(A2)	; [351] DON'T DELETE IF NULL STRING
		 PUSHJ	SP,GETOWN	; [351] RETURN SPACE USED BY TRANSIENT STRING
	CONCA8:	SOSG	.N(DL)		; [351] COUNT ONE MORE CHECKED
		 JRST	.EXIT(DL)	; [351] THEN RETURN
		SOJA	AX,CONCA6	; [351] REPEAT FOR EACH STRING
 REP 15/147	;08C9
		MOVE	AX,-1(AX)	; [335] GET FORMAL BITS
		MOVEM	AX,A01TMP(DB)	; [335] PUT THEM HERE UNTIL WE NEED THEM
 WIT
		PUSH	SP,-1(AX)	; [351] SAVE FORMAL BITS ON STACK
 REP 32/147	;08C10
		HLRZ	A0,A01TMP(DB)	; [335] GET FORMAL BITS INTO RIGHT HALF
		TRZ	A0,77		; [335] TURN OFF WHAT WE DON'T CARE ABOUT
		CAIE	A0,$PRO!$S	; [335] STATIC SIMPLE STRING PROC (USER PROC.)?
		CAIN	A0,$D!$EXP!$S	; [335] DYNAMIC SIMPLE STR EXPR (STR EXPRSION)?
		 JRST	LAB413		; [335] YES, GO DELETE IT
		CAIE	A0,$PRO!$S!$EXT	; [335] STATIC EXTERN STR PROC. (ALGLIB PROC.)?
		JRST	.EXIT(DL)	; [335] NO, EXIT BUT DON'T DELETE IT
 WIT
		POP	SP,A0		; [351] RESTORE FORMAL BITS
		TDZ	A0,[$P,,-1]	; [351] TURN OFF EXTRA BITS
		CAME	A0,[($PRO!$S!$EXT)] ; [351] STATIC EXT STR PROC (ALGLIB PROC.)?
		CAMN	A0,[($PRO!$S)]	; [351] STATIC SIMPLE STRING PROC (USER PROC.)?
		 JRST	LAB413		; [351] YES, GO DELETE IT
		CAME	A0,[($D!$S!$EXP)] ; [351] NO, DYNAMIC STRING EXPRESSION?
		 JRST	.EXIT(DL)	; [351] NO, EXIT
		TLC	A2,STRDYN!STRPRC ; [351] YES, AND IS IT DYNAMIC AND THE RESULT
		TLCE	A2,STRDYN!STRPRC ; [351] OF A STRING PROCEDURE?
		 JRST	.EXIT(DL)	; [351] NO, EXIT
 SUM 56425