Google
 

Trailing-Edge - PDP-10 Archives - bb-j710b-bm_tops20_v41_tools - tools/sed/seddme.mac
There is 1 other file named seddme.mac in the archive. Click here to see a list.
TITLE	SEDDME - DEFINITIONS FOR THE DATAMEDIA ELITE
SUBTTL	A CHRISTOPHER HALL FECIT

;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
;  OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
;
;COPYRIGHT (C) 1981 BY DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

;LOAD THE EDITOR BY: .LOAD SEDSYM,SEDDME,SED
;		     .SS SED

	SEARCH	SEDSYM
IFE TOPS10,<SEARCH MONSYM>

	EXTERN	CPOPJ,PUTTYP,PUTSTG,PUTSQ1,PUTNUM,TRMNAM,TYPBUF,HOMPOS
	EXTERN	CHOME,CDOWN,CRIGHT
	INTERN	TERMNL

FTFAST==0	;SET THIS IF TERMINAL SENDS OUT XON-XOFF'S

TERMNL:	OTABLE	;ADDRESS OF THE TERMINAL TABLE TO USE

;TERMINAL OUTPUT TABLE - SEQUENCES TO MAKE THE TERMINAL DO SPECIAL THINGS
;FILL IN WITH THE CODES FOR YOUR TERMINAL

OTABLE:	BYTE (7) 37		;CURSOR UP
	BYTE (7) 12		; DOWN
	BYTE (7) 34		; RIGHT
	BYTE (7) 10		; LEFT
	BYTE (7) 31		; HOME
	BYTE (7) 13		;CLEAR TO END OF PAGE
	BYTE (7) 35		;CLEAR TO END OF LINE
	BYTE (7) 12		;ROLL UP AND CLEAR LINE
	BYTE (7) 0		;ROLL DOWN AND CLEAR LINE
	BYTE (7) 0		;PROTECT ON (0 IF NONE)
	BYTE (7) 0		;PROTECT OFF (0 IF NONE)
	BYTE (7) 0		;INSERT LINE (0 IF NONE)
	BYTE (7) 0		;INSERT SPACE (0 IF NONE)
	BYTE (7) 0		;DELETE LINE (0 IF NONE)
	BYTE (7) 0		;DELETE SPACE (0 IF NONE)
	BYTE (7) 36," ","7"	;MOVE TO BOTTOM
	BYTE (7) 14		;HOME AND CLEAR ENTIRE PAGE
	DATCUR			;ROUTINE TO POSITION TO CHARACTER
	DATLIN			;ROUTINE TO POSITION TO START OF LINE
	^D24			;LINES PER PAGE
	^D80			;CHARACTERS PER LINE
IFE FTFAST,<
	SLW!WRP!MRK		;TERMINAL-DEPENDENT FLAGS
>
IFN FTFAST,<
	SLW!WRP!MRK!NPG		;TERMINAL-DEPENDENT FLAGS (KEEP TTY PAGE)
>
	CPOPJ			;ROUTINE TO CALL ON ENTRY
	CPOPJ			;ROUTINE TO CALL ON EXIT
	0,,0			;NUMBER OF NULLS TO OUTPUT,,NULL CHARACTER
	IDATAM			;ADDRESS OF INPUT CHARACTER TABLE
	"*"			;MARK TO DISPLAY ON ENTER (OMIT IF MRK NOT SET)

;TERMINAL INPUT TABLE - TELLS WHAT CONTROL CHARACTERS OR SEQUENCES
;INVOKE WHICH COMMANDS

IFE FTFAST,<
	EXP	$RESET				;RUBOUT
IDATAM:	EXP		$RECAL, $RLBKP, $SETFI	;   0, A, B
	EXP	$ABORT, $INSLN, $SRCBK, $DELLN	;C, D, E, F
	EXP	$PUT,   $CURLF, $TAB,   $CURDN	;G, H, I, J
	EXP	$SLDLF, $SLDRT, $RETRN, $SWTCH	;K, L, M, N
	EXP	$ENTCC, $GOTO,  $RLBKP, $SRCFW	;O, P, Q, R
	EXP	$DELSP, $RLFWL, $BKTAB, $PICK	;S, T, U, V
	EXP	$RLBKL, $EXEC,  $CURHM, $EXIT	;W, X, Y, Z
	EXP	-SIZ.IS,,ISUBTB			;ESCAPE
	EXP	$CURRT, $ENTER, $CURHM, $DELCH	;\, ], ^, _
>
IFN FTFAST,<
;THIS TABLE SETS UP THE KEYBOARD ARRANGEMENT FOR WHEN YOU NEED TO KEEP
;TTY PAGE IN EFFECT BECAUSE THE TERMINAL SENDS OUT ITS OWN CONTROL S AND Q'S
;THOSE TWO CHARACTERS CANNOT BE COMMANDS SINCE SED DOES NOT KNOW WHETHER THE
;USER HAS TYPED THEM OR THEY WERE SENT BY THE TERMINAL.

;SO Q GOES TO A, A AND S GO TO K AND L, K TO ESCAPE-L, AND L TO ESCAPE-T

;NOTE: this table has not been altered for the Datamedia.

	EXP	$RESET				;RUBOUT
IDATAM:	EXP		$RECAL, $RLBKP, $SETFI	;   0, A, B
	EXP	$ABORT, $INSLN, $SRCBK, $DELLN	;C, D, E, F
	EXP	$PUT,   $DELCH, $TAB,   $ERSLN	;G, H, I, J
	EXP	$INSSP, $DELSP, $RETRN, $SWTCH	;K, L, M, N
	EXP	$ENTCC, $GOTO,  0,	$SRCFW	;O, P, Q, R
	EXP	0,	$RLFWL, $BKTAB, $PICK	;S, T, U, V
	EXP	$RLBKL, $EXEC,  $RLFWP, $EXIT	;W, X, Y, Z
		-SIZ.IS,,ISUBTB			;ESCAPE
	EXP	$CURDN, $CURRT, $CURUP, $CURHM	;\, ], ^, _
>
;SUBTABLE. PUT THE MOST FREQUENTLY-USED SEQUENCES FIRST
;ENTER IS PROBABLY THE MOST COMMON OF ALL

ISUBTB:	$SETFI,,"F" 	;ESCAPE F == SET-FILE
	$SAVE ,,"S" 	;ESCAPE S == SAVE-FILE
	$EXIT ,,"E" 	;ESCAPE E == EXIT
	$WINDW,,"W" 	;ESCAPE W == WINDOW
	$REWRT,,"X" 	;ESCAPE X == REWRITE
	$CASE ,,"C" 	;ESCAPE C == CASE
	$HELP ,,"H" 	;ESCAPE H == HELP
	$INSSP,,"I" 	;ESCAPE I == INSERT-SPACES
	$INMOD,,"M" 	;ESCAPE M == INSERT-MODE
	$SLDLF,,"L" 	;ESCAPE L == SLIDE-LEFT
	$SLDRT,,"R" 	;ESCAPE R == SLIDE-RIGHT
	$RLFWP,,"P" 	;ESCAPE P == ROLL-FORWARD-PAGES
	$RLTAB,,"T" 	;ESCAPE T == REAL-TAB
	$RECAL,,"?" 	;ESCAPE ? == RECALL
	$ENTER,,33 	;ESCAPE ESCAPE == ENTER
	$PUSH ,,"^" 	;ESCAPE ^ == PUSH
	$MARK ,,"\" 	;ESCAPE \ == MARK

	$SETFI,,"f" 	;ESCAPE f == SET-FILE
	$SAVE ,,"s" 	;ESCAPE s == SAVE-FILE
	$EXIT ,,"e" 	;ESCAPE e == EXIT
	$WINDW,,"w" 	;ESCAPE w == WINDOW
	$REWRT,,"x" 	;ESCAPE x == REWRITE
	$CASE ,,"c" 	;ESCAPE c == CASE
	$HELP ,,"h" 	;ESCAPE h == HELP
	$INSSP,,"i" 	;ESCAPE i == INSERT-SPACES
	$INMOD,,"m" 	;ESCAPE m == INSERT-MODE
	$SLDLF,,"l" 	;ESCAPE l == SLIDE-LEFT
	$SLDRT,,"r" 	;ESCAPE r == SLIDE-RIGHT
	$RLFWP,,"p" 	;ESCAPE p == ROLL-FORWARD-PAGES
	$RLTAB,,"t" 	;ESCAPE t == REAL-TAB
IFN FTFAST,<
			;IF TTY PAGE IS IN EFFECT,
			;DEFINE SEQUENCES FOR
			;<SLIDE-LEFT> AND <SLIDE-RIGHT> HERE
>
SIZ.IS=.-ISUBTB

;PUT THE CURSOR POSITIONING ROUTINES HERE (SEE SED.POS FOR SAMPLES)
;ALSO PUT ENTRY AND EXIT ROUTINES HERE

COMMENT \
;NOTE:	THE FOLLOWING CODE, UNDER TOPS-10 7.01, WILL READ THE TERMINAL TYPE,
;	IN SIXBIT, INTO T1. THE TYPE IS COMPARED WITH A LIST OF KNOWN TYPES
;	AND THE ADDRESS OF THE RIGHT TERMINAL OUTPUT TABLE IS SET UP:

IFN TOPS10,<
	...
	MOVE	T1,[2,,TRMBLK]	;READ SIXBIT TERMINAL TYPE INTO T1
	TRMOP.	T1,
	  JFCL
	MOVEI	T2,TTBLEN	;FIND THIS TYPE IN THE TERMINAL TABLE
	CAME	T1,TNMTBL(T2)
	SOJGE	T2,.-1
	JUMPL	T2,TRMERR	;NOT FOUND - ERROR (note: no error routine)
	HRR	TM,TADTBL(T2)	;FOUND - GET ADDRESS OF OUTPUT TABLE
	...

TNMTBL:	SIXBIT	/VT52/
	SIXBIT	/VT100/
	SIXBIT	/ADM3A/
TTBLEN=.-TNMTBL-1

TADTBL:	OVT52
	OVT100
	OADB3A

TRMBLK:	1041
	-1
>
IFE TOPS10,<
;THE TERMINAL TYPE CAN BE READ UNDER TOPS20 LIKE THIS:

TENTRY:	MOVEI	T1,.PRIIN	;READ TERMINAL TYPE
	GTTYP
>
;(END OF EXAMPLE CODE)
\
;DATAMEDIA SUBROUTINE TO MOVE TO ROW, COLUMN [RW, CM]

DATCUR:	MOVEI	T1,36
	IDPB	T1,TY
	MOVEI	T1," "(CM)
	IDPB	T1,TY
	MOVEI	T1," "(RW)
	IDPB	T1,TY
	POPJ	P,

;DATAMEDIA SUBROUTINE TO MOVE TO THE START OF ROW (T4)

DATLIN:	MOVEI	T1,36
	IDPB	T1,TY
	MOVEI	T1," "
	IDPB	T1,TY
	MOVEI	T1," "(T4)
	IDPB	T1,TY
	POPJ	P,

	END