SEDT Editor Document SEDT (Screen EDiTor) is a VAX/VMS screen editor tailored for educational requirements. The requirements that SEDT was designed to meet are: Appearance and functionality that closely matches EDT in change mode. Resource consumption and total system performance impact that is less than EDT's. The ability to tailor the editor locally for non DEC terminals. The ability to link the editor into an application program. The editor distribution kit contains the following files: SEDT.EXE The executable stand alone editor. This should be installed shareable. SEDT.COM This command file will run SEDT in a spawned subprocess. SEDTNAMES.COM This command file will define two commands, SE*DT and KS*EDT. The file assumes that SEDT.EXE is in the directory Sedt$Library:. SEDT.B32, SEDT.OBJ, SEDT.LIS, SEDT.MAP These files contain the DCL command interface for SEDT. SEDTMAIN.PAS, SEDTMAIN.OBJ, SEDTMAIN.LIS These files contain the actual interpreter. QIO.MAR, QIO.OBJ, QIO.LIS These files contain utility routines for the editor. SEDT.DOC This file. VT100HLP.SED Help file for VT100 type terminals. VT200HLP.SED Help file for VT200 type terminals. Installing SEDT Copy the files SEDT.EXE, SEDT.COM, SEDTNAMES.COM, VT100HLP.SED, VT200HLP.SEDto a public directory. SEDTNAMES.COM assumes that SEDT is reachable through the filespec Sedt$Library:SEDT. Install SEDT.EXE shared , open and header resident. Make the system wide login command file call SEDTNAMES.COM. Make sure that all files have world read and execute access. If your user community is allowed to KSEDT, you should ensure that all process specific parameters are adjusted to accomodate the greater number of processes that will be present on your system. Parameters that should be adjusted include BALSETCNT, MAXPROCESSCNT. Building SEDT Compile the files SEDT.B32, SEDTMAIN.PAS, and QIO.MAR with the commands: Bliss Sedt/Lis=Sedt Pascal/Debug=All/Check=None/Cross/Lis= Sedtmain Sedtmain Macro Qio/Lis=Qio Link the file SEDT with the command Link Sedt,Sedtmain,Qio/Map=Sedt.Map Calling SEDT SEDTNAMES defines the commands: SEDT {Input File}{/OUTPUT=Output File}{/TERMINAL=VT52|VT100| VK100|VT200|IDENTIFY}{/COMMAND=Command File}{/RECOVER} and KSEDT {Input File}{/OUTPUT=Output File}{/TERMINAL=VT52|VT100| VK100|VT200|IDENTIFY}{/COMMAND=Command File}{/RECOVER} The SEDT command runs the edit session in your current process. The KSEDT command runs SEDT in a subprocess. At the end of the session, the subprocess will remain and can be reentred with the SEDT command without any arguments. If an SEDT subprocess exists and the KSEDT command is entered with arguments, the subprocess will be killed, and a new one started. When the /RECOVER qualifier is used, SEDT will read commands from a journal file named .JOU. The journal file contains commands entered to SEDT from a previous edit session of the same file. If SEDT is exited normally the journal file will be deleted. Recovery will only work properly if you either do not use control C's or always move to a definite position after the control C has been typed. If a kept Sedt is used, the journal file will be deleted every time the file is saved. Performance: SEDT has a number of features tageted towards optimizing performance. Output to the terminal is minimized, and the output record sizes maximized. This will make SEDT perform well with DMF-32's. If the KSEDT command is used, performace will be improved by eliminating the need to reinitialize the editor every time an edit session is started. SEDT will always suspend a screen update if input is typed, this will both reduce the total number of characters written to the terminal and also improve user productivity on slow terminals. For maximum CPU performance the KSEDT command should be used. Callability: SEDT can be called by other programs. The editor has three enty points. SEDT should be called first. This routine initializes the editor and does the first session. SEDTREST is called for further sessions using the same file. SEDTPURG is called to shut down the editor. The arguments for SEDT are: 1:Reference to a longword containing the length of the input filename. 2:Reference to a string of bytes containing the input filename. 3:Reference to a longword containing the length of the output filename. 4:Reference to a string of bytes containing the output filename. 5:Reference to a longword containing the terminal type: 0: VT52 1: VT100 2: VK100 (GIGI) 3: VT102 4: VT2XX 6:Reference to a longword containing the length of the command filename. 7:Reference to a string of bytes containing the command filename. 8:Reference to a byte containing 1 if recovery is required otherwise 0. If the input name length is zero, SEDT will edit a blank buffer. If the output name length is zero, the input filename will be used as the output filename. If the command name length is non zero, SEDT will read commands from the given file before reading the first terminal command. The results will be unpredictable if the terminal type is different from the ones given. SEDTREST should be called with the exact same argument values as SEDT. SEDTPURG has no arguments. Tailoring SEDT To change the keyboard layout without modifying the program sources you should: Enter SEDT and define all keys as you want them. Hit Gold 7 KS/Filename/ Enter. The filename will now contain commands to define all keys, including the defaulted ones. Edit out the definitions that you have not changed. To have SEDT come up with the altered definitions include the qualifier /COMMAND=Filename. You can also change the default setup by locating all calls to Put_Pad in SEDTMAIN.PAS and changing those. To make SEDT recognize new terminals you need to locate all statements of the type CASE Term_Type OF in SEDTMAIN.PAS and include code to handle the new terminal. The hairiest part of the code is Get_Key which reads a character or escape equence from the terminal and returns the type of key pressed. The screen optimizer code is fairly straight forward. To enter new commands you should include the command, or entity, in the Command or Entity type definitions. Then insert it in the tests in Get_Command or Get_Entity, and finally implement the code in Ex_Command or Ex_Entity. Known problems When used over a remote terminal (RTXNN:) restartable SEDT, using the Ksedt command, will not refresh the screen before the first command is input. When using Ksedt facility for restartable edit sessions, the subprocess will use the default directory that you main process has when Ksedt was called initially. This will not change when you change your default directory. When using a VT200 type terminal Sedt will reset the terminal to VT100 mode upon exit. If, for some reason, Sedt aborts, the terminal will be left in VT200 mode and should be reset via Setup for the terminal to work normally. Error reporting Errors should be reported to Anker Berg-Sonne Industry Marketing Manager Digital Equipment Corporation (Australia) PTY Limited Chatswood Plaza Railway Street Chatswood, NSW 2067 Australia (02) 412 - 5252 Enhancements should also be passed to the same address.