mirror of
https://github.com/PDP-10/stacken.git
synced 2026-03-03 09:56:03 +00:00
141 lines
4.1 KiB
Plaintext
141 lines
4.1 KiB
Plaintext
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
|
|
|