Google
 

Trailing-Edge - PDP-10 Archives - bb-x130a-sb - seda3a.mac
There are 13 other files named seda3a.mac in the archive. Click here to see a list.
TITLE   SEDA3A - EDITOR TERMINAL DEFINITION PROGRAM FOR THE ADM-3A
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.

;NOTE: THIS FILE IS AS YET UNTESTED, AND MAY NOT BE QUITE RIGHT

;LOAD THE EDITOR BY: .COMP SED,SEDA3A
;                    .LOAD/RE SEDA3A,SED
;                    .SS SED

        SEARCH  SEDSYM
IFE TOPS10,<SEARCH MONSYM>

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

FTFAST==0	;SET THIS IF TERMINAL SENDS OUT XON-XOFF'S
AUTONL==0	;SET THIS IF TERMINAL HAS THE AUTONL SWITCH SET ON

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) 13		;CURSOR UP
	BYTE (7) 12		; DOWN
	BYTE (7) 14		; RIGHT
	BYTE (7) 10		; LEFT
	BYTE (7) 36		; HOME
	0			;CLEAR TO END OF PAGE
	0			;CLEAR TO END OF LINE
	BYTE (7) 12		;ROLL UP AND CLEAR LINE
	0			;ROLL DOWN AND CLEAR LINE
	0			;PROTECT ON  (NONE)
	0			;PROTECT OFF (NONE)
	0			;INSERT LINE (NONE)
	0			;INSERT SPACE (NONE)
	0			;DELETE LINE (NONE)
	0			;DELETE SPACE (NONE)
	BYTE (7) 33,"=","7"," "	;MOVE TO BOTTOM
	BYTE (7) 32		;HOME AND CLEAR ENTIRE PAGE
	POSCUR			;ROUTINE TO POSITION TO CHARACTER
	POSLIN			;ROUTINE TO POSITION TO START OF LINE
	^D24			;LINES PER PAGE
	^D80			;CHARACTERS PER LINE
IFE FTFAST,<
IFE AUTONL,<
	MRK!LSD			;TERMINAL-DEPENDENT FLAGS (MARK, LF=DOWN)
>
IFN AUTONL,<
	WRP!MRK!LSD		;TERMINAL-DEPENDENT FLAGS (WRAP, MARK, LF=DOWN)
>>
IFN FTFAST,<
IFE AUTONL,<
	MRK!LSD!NPG		;TERMINAL-DEPENDENT FLAGS (KEEP TTY PAGE)
>
IFN AUTONL,<
	WRP!MRK!LSD!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
	ITABLE			;ADDRESS OF INPUT CHARACTER TABLE
	"~"			;MARK TO INSERT ON ENTER

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

IFE FTFAST,<
                0                       ;CODE FOR RUBOUT (0==RESET)
ITABLE:	EXP	33, 1, 2, 3, 4, 5, 6, 7 ;NOTHING SPECIAL
	EXP	10,11,34,36,35,15,16,17
	EXP	20,21,22,23,24,25,26,27
	EXP	30,31,32
	-SIZ.IS,,ISUBTB			;ESCAPE NEEDS A SUBTABLE (FOR EXAMPLE)
	EXP		 34,35,37,37
>
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 B AND N, B TO ESCAPE-F, AND N TO ESCAPE-S.

                 0                      ;COMMAND FOR RUBOUT (RESET)
ITABLE:	EXP	33,21, 1, 3, 4, 5, 6, 7 ;NOTHING SPECIAL
	EXP	10,11,34,36,35,15,23,17
	EXP	20, 0,22, 0,24,25,26,27
	EXP	30,31,32
	-SIZ.IS,,ISUBTB
	EXP		 34,35,37,37
>
;SUBTABLE. PUT THE MOST FREQUENTLY-USED SEQUENCES FIRST
;ENTER IS PROBABLY THE MOST COMMON OF ALL

ISUBTB:	33,,33		;ESCAPE ESCAPE == ENTER
	37,,"H" 	;ESCAPE H == HOME
	42,,"D" 	;ESCAPE D == DELETE-CHARACTER
	41,,"I" 	;ESCAPE I == INSERT-MODE
	43,,"T" 	;ESCAPE T == REAL-TAB
	44,,"M" 	;ESCAPE M == MARK
	40,,"E" 	;ESCAPE E == RECALL
	46,,"C" 	;ESCAPE C == CASE
	13,,"L" 	;ESCAPE L == SLIDE-LEFT
	14,,"R" 	;ESCAPE R == SLIDE-RIGHT
	47,,"W" 	;ESCAPE W == WINDOW
	40,,"e" 	;ESCAPE e == RECALL
	46,,"c" 	;ESCAPE c == CASE
IFN FTFAST,<
	02,,"F"		;ESCAPE F == SET-FILE (WHICH IS ALSO CONTROL-H)
	16,,"S"		;ESCAPE S == SWITCH
>
SIZ.IS=.-ISUBTB

;POSITIONING ALGORITHMS

POSCUR:	MOVE	T1,[BYTE (7) 33,"="]
	PUSHJ	P,PUTSQ1	;START IT OFF
	MOVEI	T1,40(RW)	;GET ROW POSITION
	IDPB	T1,TY
	MOVEI	T1,40(CM)	;GET COLUMN POSITION
	IDPB	T1,TY
	POPJ	P,		;DONE

POSLIN:	MOVE	T1,[BYTE (7) 33,"="]
	PUSHJ	P,PUTSQ1	;START IT OFF
	MOVEI	T1,40(T4)	;GET ROW POSITION
	IDPB	T1,TY
	MOVEI	T1,40		;MOVE TO COLUMN ZERO
	IDPB	T1,TY
	POPJ	P,

        END