
	.TITLE	DPYDEF
;DEFINITION FILE FOR DPY

	.MACRO		INI$	TRMTYP=#0
	PUSHL		TRMTYP
	CALLS		#1,DPY$INI
	.ENDM

	.MACRO		DPY$
	CALLS		#0,DPY$DPY
	.ENDM

	.MACRO		SIZ$	MINLIN=#0,MAXLIN=#-1,MINCOL=#0,MAXCOL=#-1
	MOVW		MAXCOL,-(SP)
	MOVW		MINCOL,-(SP)
	MOVW		MAXLIN,-(SP)
	MOVW		MINLIN,-(SP)
	CALLS		#2,DPY$SIZ
	.ENDM

	.MACRO		STR$	STRNGDSC
	PUSHAQ		STRNGDSC
	CALLS		#1,DPY$STR
	.ENDM

	.MACRO		CHR$	CHRADR
	MOVZBL		CHRADR,-(SP)
	CALLS		#1,DPY$CHR
	.ENDM

	.MACRO		LOC$	RETADR
	PUSHAQ		RETADR
	CALLS		#1,DPY$LOC
	.ENDM

	.MACRO		TAB$	MASK=0
	PUSHAB		MASK
	CALLS		#1,DPY$TAB
	.ENDM

	.MACRO		TTY$	FUN
		TRM$C_TTY_HOME=1
		TRM$C_TTY_CLEAR=2
		TRM$C_TTY_BOTOM=3
	PUSHL		FUN
	CALLS		#1,DPY$TTY
	.ENDM

	.MACRO		REF$
	CALLS		#0,DPY$REF
	.ENDM

	.MACRO		DPY$SETUP
	.EXTERNAL	DPY$DISPATCH
	$DCLCMH_S	ADDRES=DPY$DISPATCH
	.ENDM

	.MACRO		DPY$TRMDEF
	.SAVE_PSECT
	.PSECT		DPY$DEF,ABS

TRM$L_FLAGS:
	.BLKL		1			;FLAGS
		TRM$M_ASCII=1
		TRM$V_ASCII=0			;VT100 TYPE ASCII ADDRESSING
		TRM$M_REVERSE=2			;REVERSE XY COORDS, NOT LC
		TRM$V_REVERSE=1
TRM$W_MAXLIN:
	.BLKW		1			;MAX LINE THIS TERMINAL KNOWS
TRM$W_MAXCOL:
	.BLKW		1			;MAX COLUMN THIS TTY KNOWS
TRM$B_MAXCHR:
	.BLKB		1			;MAX PRINTING CHARACTER
TRM$B_EATCHR:
	.BLKB		1			;DESTRUCTIVE SPACE CHARACTER
;THE FOLLOWING SEQUENCES ARE ASCIC AND ARE LIMITED TO 5 CHARACTERS+COUNT
TRM$T_LEFT:
	.BLKB		7			;SEQUENCE TO MOVE LEFT
TRM$T_RIGHT:
	.BLKB		7			;SEQUENCE TO MOVE RIGHT
TRM$T_UP:
	.BLKB		7			;SEQUENCE TO MOVE UP
TRM$T_DOWN:
	.BLKB		7			;SEQUENCE TO MOVE DOWN
TRM$T_HOME:
	.BLKB		7			;HOME SEQUENCE
TRM$T_HOMCLR:
	.BLKB		7			;HOME AND CLEAR SEQUENCE
TRM$T_EOL:
	.BLKB		7			;ERASE TO END OF LINE
TRM$T_EOF:
	.BLKB		7			;ERASE TO END OF SCREEN
TRM$T_ADR1:
	.BLKB		7			;SEQUENCE TO START ADDRESSING
TRM$T_ADR2:
	.BLKB		7			;SEQUENCE BETWEEN COORDS
TRM$T_ADR3:
	.BLKB		7			;SEQUENCE TO FINISH ADDRESSING
TRM$B_XOFF:
	.BLKB		1			;X OFFSET IN ADDRESSING
TRM$B_YOFF:
	.BLKB		1			;Y OFFSET IN ADDRESSING
;ALSO, SOME USEFUL CHARACTER DEFINITIONS:

	BSP=^O10				;BACKSPACE
	ESC=^O33				;ESCAPE
	ALT=^O176			;ALTMODE
	CR=^O15					;<CR>
	LF=^O12					;<LF>
	TAB=^O11				;<TAB>
	FF=^O14					;<FF>
	VT=^O13					;<VT>
	SPACE=^O40				;SPACE
	SEMI=^O73
;OUR OWN TERMINAL TYPES:

DPY$C_VT52==0					;DEFAULT ALSO
DPY$C_VT100==1					;VT100
DPY$C_I100==2					;INFOTON
DPY$C_ADM3A==3					;ADM 3A
DPY$C_VT100D==4					;DUMB VT100 (NO ADDRESSING)
DPY$C_HP2645==5				;HP2645
DPY$C_HZ1500==6
DPY$C_LA120==7

	.RESTORE_PSECT
	.ENDM

	.MACRO		TTY	-
			FLAGS=0,-
			CFLAGS=0,-
			LINES=25,-
			COLUMNS=80,-
			MAXCHR=<^O176>,-
			EATCHR=SPACE,-
			LEFT=<<BSP>>,-
			RIGHT=<<SPACE>>,-
			UP=<//>,-
			DOWN=<<LF>>,-
			HOME,-
			CLEAR,-
			EOL=<//>,-
			EOF=<//>,-
			ADR1=<//>,-
			ADR2=<//>,-
			ADR3=<//>,-
			XOFF=<0>,-
			YOFF=<0>




TRM$V_C_ZEROBX=0
TRM$M_C_ZEROBX=1
TRM$V_C_ZEROBY=1
TRM$M_C_ZEROBY=2
	.LONG		'FLAGS'
	.WORD		'LINES'-1
	.WORD		'COLUMNS'-1
	.BYTE		'MAXCHR'
	.BYTE		'EATCHR'
	..=.
	.ASCIC		'LEFT'
	.IF		GT,<.-<..+7>>
		.ERROR			;LEFT SEQUENCE IS TOO LONG;
	.ENDC
	.=..+7
	..=.
	.ASCIC		'RIGHT'
	.IF		GT,<.-<..+7>>
		.ERROR			;RIGHT SEQUENCE IS TOO LONG;
	.ENDC
	.=..+7
	..=.
	.ASCIC		'UP'
	.IF		GT,<.-<..+7>>
		.ERROR			;UP SEQUENCE IS TOO LONG;
	.ENDC
	.=..+7
	..=.
	.ASCIC		'DOWN'
	.IF		GT,<.-<..+7>>
		.ERROR			;DOWN SEQUENCE IS TOO LONG;
	.ENDC
	.=..+7
	..=.
	.ASCIC		'HOME'
	.IF		GT,<.-<..+7>>
		.ERROR			;HOME SEQUENCE IS TOO LONG;
	.ENDC
	.=..+7
	..=.
	.ASCIC		'CLEAR'
	.IF		GT,<.-<..+7>>
		.ERROR			;CLEAR SEQUENCE IS TOO LONG;
	.ENDC
	.=..+7
	..=.
	.ASCIC		'EOL'
	.IF		GT,<.-<..+7>>
		.ERROR			;EOL SEQUENCE IS TOO LONG;
	.ENDC
	.=..+7
	..=.
	.ASCIC		'EOF'
	.IF		GT,<.-<..+7>>
		.ERROR			;EOF SEQUENCE IS TOO LONG;
	.ENDC
	.=..+7
	..=.
	.ASCIC		'ADR1'
	.IF		GT,<.-<..+7>>
		.ERROR			;ADR1 SEQUENCE IS TOO LONG;
	.ENDC
	.=..+7
	..=.
	.ASCIC		'ADR2'
	.IF		GT,<.-<..+7>>
		.ERROR			;ADR2 SEQUENCE IS TOO LONG;
	.ENDC
	.=..+7
	..=.
	.ASCIC		'ADR3'
	.IF		GT,<.-<..+7>>
		.ERROR			;ADR3 SEQUENCE IS TOO LONG;
	.ENDC
	.=..+7
	.BYTE		<'XOFF'+1-<<'CFLAGS'&TRM$M_C_ZEROBX>@<-TRM$V_C_ZEROBX>>>
	.BYTE		<'YOFF'+1-<<'CFLAGS'&TRM$M_C_ZEROBY>@<-TRM$V_C_ZEROBY>>>

	.ENDM

	.END
