;
; CALC VERSION X01-06
;
;	CALLED BY MAINLINE (CALC.FOR)
;
; SIMULATES RSX-11M'S GETMCR SYSTEM CALL
;
; FOR USE UNDER VMS VERSION 2.0 OR LATTER
;
	.TITLE GETMCR
	.IDENT /X01.06/
	.ENABLE DEBUG
	.PSECT RWDATA WRT,RD,BYTE
	.MCALL $CLIDEF,$CLIREQDESC
	$CLIDEF
TABLE:	$CLIREQDESC	RQTYPE=CLI$K_GETCMD
	.PSECT	PURE	RD,NOWRT,BYTE
;
;
LINE=4	;DISPLACEMENT OFF AP TO ADDRESS OF LINE (LOGICAL*1 LINE(80))
LEND=8	;DISPLACEMENT OFF AP TO ADDRESS OF LEND (INTEGER*2)
	.ENTRY	GETMCR,^M<R2,R3,R4,R5>	;SAVE REGS USED BY MOVC
	CMPL	(AP),#2		;MUST CALL WITH TWO ARGUMENTS
	BEQL	10$		;OTHERWISE
	HALT			;HALT IMMEDIATELY
10$:
	MOVC5	#0,0,#0,#CLI$K_WORKAREA,TABLE	;ZERO OUT TABLE
	MOVB	#CLI$K_GETCMD,CLI$B_RQTYPE+TABLE	;AND SET REQUEST TYPE SO
							;ROUTINE WILL BE RE-
							;USABLE
	PUSHAQ	TABLE			;SET UP FOR RECALLING CLI
	CALLS	#1,@#SYS$CLI		;RECALL CLI
	BLBC	R0,20$			;BRANCH IF CALL TO SYS$CLI FAILS
	MOVZWL	CLI$W_RQSIZE+TABLE,R0	;GET LENGTH OF COMMAND LINE
	BNEQ	30$			;SEE IF THERE WAS ANY GIVEN
20$:	CLRW	@LEND(AP)		;IF NOT, ZERO OUT LEND (LINE END)
	RET				;AND RETURN
30$:
	CMPW	R0,#80		;SEE IF THERE WERE 80. OR MORE CHARACTERS
	BLSSU	40$		;BRANCH IF FEWER
	MOVL	#79,R0		;OTHERWISE, PASS ONLY 79 OF THEM
				;PLUS A PRECEDING BLANK
40$:
	MOVW	R0,@LEND(AP)	;UPDATE LEND (LINE END)
	INCW 	@LEND(AP)	;INCLUDE COUNT OF PRECEDING BLANK
	MOVL	LINE(AP),R1	;GET START ADDRESS OF LINE VECTOR
	MOVB	#^A/ /,(R1)+	;PRECEED BLANK SO IT LOOKS SOMETHING
					;LIKE RSX-11M'S GETMCR
	MOVC3	R0,@<CLI$A_RQADDR+TABLE>,(R1)
	RET
	.END
