	.TITLE	TERCHA
	.IDENT	/020000/
	.PSECT	TERCHA,RO,I
	.LIST	TTM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;								;;
;; ABSTRACT: TERCHA						;;
;; 	GET THE CURRENT TERMINAL TYPE, WIDTH, LENGTH, 		;;
;; 	AND COMPUTER TRANSMIT SPEED.				;;
;;  								;;
;; CALLING SEQUENCE:						;;
;; 	CALL TERCHA (TYPE,WIDTH,LENGTH,SPEED)			;;
;;  								;;
;; ARGUMENTS:							;;
;;  								;;
;; 	TYPE FIXED BINARY(15)					;;
;; 		OUTPUT: CONTAINS A NUMBER FOR TERMINAL TYPE :	;;
;; 		0= ERROR OR UNKNOWN				;;
;; 		1=ASR33	2=KSR33	3=ASR35	4=LA30S	5=LA30P		;;
;; 		6=LA36	7=VT05	8=VT50		9=VT52		;;
;; 		10=VT55	11=VT61	12=LA180	13=VT100	;;
;; 		14=LA120 15=SCRIPT LINE	16=USR0	17=USR1		;;
;;		18=USR2	 19=USR3	20=USR4	21=USR5		;;
;;		22=ADM1	 23=ADM31	24=ADM3A  25=MINIBEE	;;
;;		26=SUPERBEE 27=DIABLO   28=GE30	  29=ACT4	;;
;;		30=TEKTRONIX 4006	31=MICRO + TEK		;;
;;  								;;
;; 	WIDTH FIXED BINARY (15)					;;
;; 		OUTPUT: WIDTH OF THE TERMINAL IN CHARACTERS	;;
;;  								;;
;; 	LENGTH FIXED BINARY (15)				;;
;; 		OUTPUT: LENGTH OF THE TERMINAL IN LINES		;;
;;  								;;
;; 	SPEED FIXED BINARY (15)					;;
;; 		OUTPUT: COMPUTER TRANSMIT SPEED IN BAUD		;;
;;  								;;
;; LIBRARIES: [30,1]PLIUTL					;;
;;  								;;
;; ERRORS: SEE RETURNS ABOVE					;;
;;  								;;
;; SUBROUTINES:							;;
;; 	ILNAR$	SIGNAL ERROR CONDITION FOR TOO FEW ARGS.	;;
;; 	SAVRG$	SAVE REGISTERS FOR PLIUTL			;;
;;  								;;
;; LIMITATIONS: ROUTINE IS SYSTEM DEPENDENT TO RSX-11D V6.2,	;;
;; 		RSX-11M V3.2 AND IAS V3.0			;;
;;  								;;
;; WRITTEN: 13-FEB-79  -1.0.0-  DAVE PARKER			;;
;;  								;;
;; Modified: 07-Apr-81, -2.0.0-, Bruce C. Wright		;;
;;	Changes for VAX/VMS environment				;;
;;  								;;
;; Verified:							;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

	.mcall	dir$
;
;
	.SBTTL	OFFSETS AND TABLES
;
; PLI STACK OFFSETS
;
NARGS	=	16				;ARGUMENTS
TYPE	=	NARGS+2
WIDTH	=	NARGS+4
LENGTH	=	NARGS+6
SPEED	=	NARGS+10
;
; TABLE OF SPEEDS AS RETURNED BY TT HANDLER
;
STBL:	.WORD	0.
	.WORD	50.
	.WORD	75.
	.WORD	100.
	.WORD	110.
	.WORD	134.
	.WORD	150.
	.WORD	200.
	.WORD	300.
	.WORD	600.
	.WORD	1200.
	.WORD	1800.
	.WORD	2000.
	.WORD	2400.
	.WORD	3600.
	.WORD	4800.
	.WORD	7200.
	.WORD	9600.
	.WORD	0.		;EXTERNAL A
	.WORD	0.		;EXTERNAL B

	.SBTTL	SUBROUTINE CODE
;
TERCHA:: JSR	R0,SAVRG$	;SAVE REGISTERS
	CMP	NARGS(SP),#4	;FOUR PARMS?
	BEQ	1$		;YES
	JSR	R5,ILNAR$	;NO
;
1$:	dir$	#exfc		; Execute directive.
	CLR	@TYPE(SP)	;CLEAR TYPE FIELD
	MOVB	BUF+1,@TYPE(SP)	;AND INSERT TYPE
;
	CLR	@WIDTH(SP)	;CLEAR WIDTH
	MOVB	BUF+3,@WIDTH(SP) ;AND INSERT WIDTH
;
	CLR	@LENGTH(SP)	;CLEAR LENGTH
	MOVB	BUF+5,@LENGTH(SP) ;AND INSERT IT
;
	CLR	@SPEED(SP)	;CLEAR SPEED
	MOVB	BUF+7,R2	;GET SPEED CODE TO R2
	ASL	R2		;CONVERT TO WORD
	MOV	STBL-2(R2),@SPEED(SP) ;AND INSERT SPEED
;
	RTS	PC		;AND EXIT

	.SBTTL	READ/WRITE DATA AREA
;
	.PSECT	$TERCH,RW,D,CON
exfc:	.byte	145.,8.		; Directive code for elephant directive
	.word	4		; Subfunction code - call native image
	.word	secnam		; Section name to call
	.word	seclen		; Length of section name
;
; Arguments to NATVMODE
;
	.word	4		; Function code - terminal handler
	.word	buf		; Address of buffer.
	.word	buflen		; Length of buffer
iost:	.word	0,0,0,0		; VMS I/O status block
BUF:					;BUFFER FOR CHARACTERISTICS
	.BYTE	TC.TTP,0
	.BYTE	TC.WID,0
	.BYTE	TC.LPP,0
	.BYTE	TC.XSP,0
BUFLEN	=	.-BUF
;
; Global section name
;
	.psect	$merli,ro,d,ovr
secnam:	.ascii	/_DBA0:[PLIUTL]NATVMODE.EXE/
seclen	=	.-secnam
;
	.EVEN
;
	.END
