.IIF	NDF	L$$IST,	.NLIST
;
; PREFIX FILE FOR RSX-11 TECOIO ASSEMBLY
;
; VERSION R0216
;
; COPYRIGHT (C) 1976 BY DIGITAL EQUIPMENT CORPORATION,
; MAYNARD, MASSACHUSETTS
;
; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A
; SINGLE  COMPUTER  SYSTEM AND MAY BE COPIED ONLY WITH THE IN-
; CLUSION OF THE ABOVE COPYRIGHT NOTICE.   THIS  SOFTWARE,  OR
; ANY  OTHER  COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE
; MADE AVAILABLE TO ANY OTHER PERSON EXCEPT FOR  USE  ON  SUCH
; SYSTEM  AND TO ONE WHO AGREES TO THESE LICENSE TERMS.  TITLE
; TO AND OWNERSHIP OF THE SOFTWARE SHALL AT ALL  TIMES  REMAIN
; IN DIGITAL.
;
; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITH-
; OUT  NOTICE  AND  SHOULD NOT BE CONSTRUED AS A COMMITMENT BY
; DIGITAL EQUIPMENT CORPORATION.
;
; DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY  FOR
; THE USE OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT WHICH IS
; NOT SUPPLIED BY DIGITAL.
;
; ANDREW C. GOLDSTEIN   9-APR-79  20:15
; MARK H. BRAMHALL     10-APR-79  23:18

TECTTY	=	1	; 1 FOR TECO MODE; ELSE 0 (AFFECTS ONLY "LISTEN")

	.ENABL	LC

;
; MACRO TO SIGNAL AN ERROR EXIT. IT CAUSES TECOIO TO MAKE AN
; ERROR RETURN WITH THE C BIT SET, A 3 CHARACTER RAD-50 ERROR
; CODE IN R1, AND A POINTER TO AN ERROR TEXT STRING IN R2.
; THE STRING AND POINTER ARE SUPPRESSED IF THE SYMBOL "ERRTXT"
; IS DEFINED AS ZERO. THE MACRO OPTIMIZES OUT REDUNDANT ERROR
; STRINGS.
;
.MACRO	ERROR	ERCOD,TEXT

	.IF	NDF,$E$'ERCOD
$E$'ERCOD:
	.IFF
	.IF	EQ,.-$E$'ERCOD
$E$'ERCOD:
	.ENDC
	.ENDC

	.IF	GE,.-$E$'ERCOD-400
	JMP	$E$'ERCOD
	.MEXIT
	.ENDC

	.IF	NE,.-$E$'ERCOD
	BR	$E$'ERCOD
	.MEXIT
	.ENDC

	JSR	R4,ERRORX
	.RAD50	"ERCOD"

	.PSECT	ER$TXT,RO,D,GBL
	$$$TXT = .
	.ASCIZ	TEXT
	.PSECT	CODE
	.WORD	$$$TXT

.ENDM	ERROR

;
; MACRO TO CALL GENERAL REGISTER SAVE ROUTINE. SAVE DOES A COROUTINE
; RETURN SO THAT AN RTS PC WILL DO A PROPER RESTORE AND RETURN.
;
.MACRO	SAVE
	JSR	R4,SAVREG
.ENDM	SAVE

;
; MACRO TO DO SOB INSTRUCTION FOR RUNNING ON MACHINES WITHOUT EIS.
;
.MACRO	SOB	RX,TAG
	DEC	RX
	BNE	TAG
.ENDM

;
; SPECIAL CHARACTERS RECOGNIZED.
;
CTRLC	= 3		; CONTROL C
BELL	= 07		; DING
BS	= 10		; BACKSPACE
TAB	= 11		; HORIZONTAL TAB
LF	= 12		; LINE FEED
VT	= 13		; VERTICAL TAB
FF	= 14		; FORM FEED
CR	= 15		; CARRIAGE RETURN
CTRLZ	= 32		; CONTROL Z
AM	= 33		; ALT MODE
SPACE	= 40		; SPACE
RUB	= 177		; RUBOUT
;
; OFFSETS TO CALLER'S REGISTERS SAVED ON STACK.
; NOTE THAT THESE ARE SENSITIVE TO THE OPERATION OF THE
; SAVREG ROUTINE!
;
SR0	= 2		; R0
SR1	= 4		; R1
SR2	= 6		; R2
SR3	= 10		; R3
SR4	= 12		; R4
SR5	= 14		; R5
;
; INTERFACES WITH TECO.
;
;
; RAD-50 CODE TO SIGNAL FILE NOT FOUND
;
FNFERR	= <<'F-100>*50*50>+<<'N-100>*50>+<'F-100>
;
; SIZE OF FILE NAME BUFFER (ALSO LENGTH OF MAX ACCEPTABLE COMMAND)
;
FILSIZ	= 132.
;
; FUNCTION CODE TO READ SIZE OF TYPE-AHEAD BUFFER. IT IS LOCALLY DEFINED
; SINCE IT IS NOT UNIVERSALLY SUPPORTED
;
TC.TBF	= 57.
;
; FUNCTION CODE FOR TERMINAL READ WITH TERMINATOR MASK. USED TO DETECT
; PRESENCE OF NEW 11M TERMINAL DRIVER
;
IO.RTT	= 5001
;
; NAMES FOR CONTROL BITS IN THE ET FLAG
;
ET.IMG	= 1			; IMAGE MODE TYPEOUT
ET.CRT	= 2			; USE CRT TYPE RUBOUTS
ET.LOC	= 4			; ACCEPT LOWER CASE INPUT
ET.NCH	= 10			; NO ECHO ON ^T TYPE IN
ET.CCO	= 20			; CANCEL CONTROL O BEFORE OUTPUT
ET.CKE	= 40			; RETURN -1 ON ^T IF NO INPUT READY
ET.DET	= 100			; SET TO DETACH TERMINAL
ET.EXI	= 200			; EXIT ON ERRORS - NO MESSAGES
ET.TRN	= 400			; TRUNCATE LINES ON OUTPUT
ET.VT52	= 1000			; SCOPE ROUTINE AND VT52 AVAILABLE
ET.VT11	= 2000			; SCOPE ROUTINE AND VT11 AVAILABLE
ET.CC	= 100000		; CONTROL C TRAP FLAG
;
; NAMES FOR CONTROL BITS IN THE ED FLAG
;
ED.CAR	= 1			; CARET IN SEARCH STRINGS
ED.NPR	= 2			; NO YANK PROTECTION
ED.SML	= 4			; SMALL BUFFER TECO
ED.SRH	=20			; DON'T RESET "DOT" ON SEARCH FAILURE
;
; LUN USAGE.
;
CMDLUN	= 1		; INDIRECT COMMAND FILE INPUT
TTYLUN	= 2		; CONSOLE TTY
OUTLUN	= 3		; OUTPUT FILE
INLUN	= 4		; INPUT FILE
MOLUN	= 5		; MO FOR I/O ERROR INTERPRETATION
TDRLUN	= 6		; LUN FOR TEMP DIRECTORY
ENLUN	= 7		; LUN FOR "EN" OPERATIONS

TTYEFN	= 4		; EFN FOR TTY I/O
KILEFN	= 5		; EFN FOR I/O KILL OPERATIONS
ATTEFN	= 6		; EFN FOR ATTACH/DETACH OPERATIONS

;
; MACRO TO DO TASK EXPANSION. KEEP THIS UNTIL THE RSX-11M PEOPLE
; MANAGE TO GET IT INTO THE MACRO LIBRARY.
;
	.MACRO	EXRG$S	SIZE
	.MCALL	DIR$
	CLR	-(SP)
	MOV	SIZE,-(SP)
	MOV	#<3*400!89.>,-(SP)
	DIR$
	.ENDM	EXRG$S


.IIF	NDF	L$$IST,	.LIST
