!GREEN:EDT.BLI 17-JUL-87 ,Edit by PERKINS !EDIT 50, Don't delete more than one from the input file. This breaks ! recovery mode. If the input line has 20 characters the that ! belongs in the text gets deleted. ! Fixes to IOMOD.BLI !GREEN:EDT.BLI 15-APR-87 ,Edit by PERKINS !EDIT 47, Set the command buffer point to the end of the command after the ! command is executed from a macro call. ! Fixes to MACCAL.BLI !GREEN:EDT.BLI 01-Apr-87 ,Edit by PERKINS !EDIT 46, Set the terminal width and length to zero so that the wrap around ! works correctly when displaying the help keypad on VT100's or later. ! Fixes to IOMOD.BLI. !GREEN:EDT.BLI 1-APR-87 , Edit by PERKINS !EDIT 45, Remove the part of edit 36 that changed TTBIN to TTATE. It seems ! that TOPS-20 V6.1 fixed the problem with 7 bit terminals. But with ! the TTBIN changed to TTATE 7 bit terminals don't work with V6.1. ! On KS's running V4.1, 7 bit terminals don't seem to be affected ! with or with out the patch. Also with edit 36, PUSHing and POPing ! back (in CHANGE mode) into EDT screws up the wrap around. ! Fixes to IOMOD.BLI. !GREEN:EDT.BLI 26-MAR-87 , Edit by PERKINS !EDIT 44, Fixes to SETCOMMAN.BLI for reading EDTINI.EDT ! from the users loing directory. !GREEN:EDT.BLI 10-NOV-86 11:20, Edit by PERKINS !EDIT 43, Fix XDDT command parsing. Fixes to PARDATA.REQ !GREEN:EDT.BLI.7 24-Feb-86 15:59:11, Edit by MERRILL !EDIT 42, Add VT200 type to type table in IOMOD. !GREEN:EDT.BLI.2 9-Jan-86 11:35:15, Edit by MERRILL !EDIT 41, If user types REENTER, give them a reasonable error message. ! Fixes to COMAND.MAC !GREEN:EDT.BLI.2 25-Nov-85 12:46:20, Edit by MERRILL !EDIT 40, if an error occurs during write, delete tmp output file ! Fixes to LWRITE !GREEN:EDT.BLI.2 25-Nov-85 11:24:17, Edit by MERRILL !Edit 37, Fixes to HELP.BLI !GREEN:EDT.BLI.2 20-Nov-85 13:40:41, Edit by MERRILL !Edit 36, Fixes to IOMOD and DATA. !GREEN:EDT.BLI.2 4-Nov-85 13:52:51, Edit by MERRILL !Edit 35, Fixes up SETCOMMAN, and PRFILE. %TITLE 'EDT - STARTUP MODULE' MODULE EDT ( IDENT = '1-005', ! File: EDT.B36 Edit: GB1005 MAIN = EDIT$, VERSION = '1(50)' ! EDT's version number ) = BEGIN ! ! COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1984, 1988 ALL RIGHTS RESERVED. ! ! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED ! ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE ! INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER ! COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY ! OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY ! TRANSFERRED. ! ! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE ! AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT ! CORPORATION. ! ! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS ! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL. ! !++ ! FACILITY: EDT -- The DEC Standard Editor ! ! ABSTRACT: ! ! This is the startup module for EDT ! ! ENVIRONMENT: Runs on TOPS20 ! ! AUTHOR: Chris Gill, CREATION DATE: 13-Jun-1983 ! ! MODIFIED BY: ! ! 1-001 - Original. This module was created by combining MAIN and STARTEDT ! both modified for TOPS20 operation. CJG 13-Jun-1983 ! 1-002 - Move EDT$$PA_CMDLN to INIT to prevent parsed data being lost. CJG 27-Jun-1983 ! 1-003 - Deal with the CREATE command (EDT$M_NEWFILE). CJG 12-Jul-1983 ! 1-004 - Add EDT$$GET_LOGDIR so that we search the login directory. CJG 7-Oct-1983 ! 1-005 - Add a VERSION parameter to the MODULE declaration. GB 19-Jul-1984 !-- %SBTTL 'Declarations' ! ! TABLE OF CONTENTS: ! REQUIRE 'EDTSRC:TRAROUNAM'; FORWARD ROUTINE EDIT$; ! ! INCLUDE FILES: ! REQUIRE 'EDTSRC:EDTREQ'; ! ! MACROS: ! ! NONE ! ! ! ! EQUATED SYMBOLS: ! EXTERNAL LITERAL EDT$M_NOCREATE, EDT$M_NOJOURNAL, EDT$M_COMMAND, EDT$M_NOCOMMAND, EDT$M_NEWFILE, EDT$K_OPEN_IN_OUT, EDT$K_OPEN_INPUT, EDT$K_INPUT_FILE, EDT$K_JOURNAL_FILE, EDT$K_OPEN_OUTPUT_NOSEQ, EDT$K_COMMAND_FILE, EDT$K_CLOSE; ! ! OWN STORAGE: ! ! NONE ! ! EXTERNAL REFERENCES: ! ! Inside the routine. !- %SBTTL 'EDIT$ - set up and call EDT' ROUTINE EDIT$ ! set up and call EDT = !++ ! FUNCTIONAL DESCRIPTION: ! ! The main entry point for the editor. ! ! FORMAL PARAMETERS: ! ! NONE ! ! IMPLICIT INPUTS: ! ! NONE ! ! IMPLICIT OUTPUTS: ! ! INP_NAM ! OUT_NAM ! CMD_NAM ! COM_NAM ! JOU_NAM ! LASTMSG ! CMD_BUF ! CMD_END ! ! ROUTINE VALUE: ! ! Normally 1 or EDT$_EDITORABO ! ! SIDE EFFECTS: ! ! Performs an edit. ! ! NOTES: ! ! OPTIONS ! bit 0 = /RECOVER ! bit 1 = /COMMAND ! bit 2 = /NOJOURNAL ! bit 3 = /NOOUTPUT ! bit 4 = /NOCOMMAND ! bit 5 = /NOCREATE ! bit 6 = CREATE command !-- BEGIN EXTERNAL ROUTINE EDT$$SYS_EXI, ! Return to system (with status) EDT$FILEIO, ! Perform file io EDT$$EXE_CMD, ! Execute a command EDT$$TERMIN_RCOVMOD : NOVALUE, ! Handle end of journal file during /RECOVER EDT$$INIT, ! Do the initial processing EDT$$TERMIN, ! Do the final processing EDT$$FIOPN_ERR : NOVALUE, ! Print a message about a file error, with file name EDT$$TY_CURLN, ! Type out the current line EDT$$FMT_MSG : NOVALUE, ! Format and print a message EDT$$GET_LOGDIR : NOVALUE, ! Get login directory and device EDT$$SET_COMFNAM; ! Open and close command files EXTERNAL CMD_NAM : BLOCK, ! Command file name OUT_NAM : BLOCK, ! Output file name INP_NAM : BLOCK, ! input file name JOU_NAM : BLOCK, ! Name of journal file CMD_NAM_DEF1 : REF BLOCK, ! First default command spec CMD_NAM_DEF2 : REF BLOCK, ! Second default command spec CMD_DFLT : REF BLOCK, ! Alternative form of CMD_NAM_DEF2 EXITD, ! Did we exit with the last command? RCOV_MOD, ! do a recovery flag EDIT_MOD, ! Current editing mode EDIT_DFLTMOD, ! Default editing mode FNF_MSGFLG, ! File not found message flag IOFI_NFND, ! 1 = open failed due to file not found OPTIONS : BITVECTOR [36], ! Options bits LASTMSG, ! Message for change mode to print CMD_PTR, ! Pointer to current location in command buffer CMD_BUF, ! Command buffer CMD_END, ! Pointer to end of command buffer CC_DONE; ! 1 = control C actually aborted something MESSAGES ((COMFILNEX, COMFILNOP, COMFILCLO, NOJNLFIL, INPFILNEX, ABOBYCC, CTRC__IGN, EDITORABO)); LOCAL STATUS, PRIMARY_FILE_CONDITION, STRING_LENGTH; !+ ! Do the initial processing. !- PRIMARY_FILE_CONDITION = EDT$$INIT (); !+ ! If initialization failed, abort right now. !- IF (.PRIMARY_FILE_CONDITION EQL 3) THEN EDT$$SYS_EXI (EDT$_EDITORABO); !+ ! If /NOCREATE was specified then exit if file was not found !- IF ((.PRIMARY_FILE_CONDITION EQL 0) AND ((.OPTIONS AND EDT$M_NOCREATE) NEQ 0)) THEN BEGIN IF .FNF_MSGFLG THEN EDT$$FMT_MSG (EDT$_INPFILNEX); EDT$$SYS_EXI (-1); END; !+ ! Open the journal file. If recovery was specified, open it so we can read ! from it. !- IF .RCOV_MOD THEN BEGIN STATUS = EDT$FILEIO (EDT$K_OPEN_IN_OUT, EDT$K_JOURNAL_FILE, JOU_NAM); IF ( NOT .STATUS) THEN BEGIN EDT$$FIOPN_ERR (EDT$_NOJNLFIL, JOU_NAM); EDT$$SYS_EXI (EDT$_NOJNLFIL); END; END ELSE !+ ! We are not in recovery mode; just open the journal file for write. !- IF ((.OPTIONS AND EDT$M_NOJOURNAL) EQL 0) ! NOT /NOJOURNAL THEN BEGIN STATUS = EDT$FILEIO (EDT$K_OPEN_OUTPUT_NOSEQ, EDT$K_JOURNAL_FILE, JOU_NAM); END; !+ ! Make sure the journal file was opened. !- IF (( NOT .STATUS) AND (.OPTIONS AND EDT$M_NOJOURNAL) EQL 0) THEN BEGIN EDT$$FIOPN_ERR (EDT$_NOJNLFIL, JOU_NAM); EDT$$SYS_EXI (EDT$_NOJNLFIL); END; !+ ! Execute the startup file, if one was provided. The startup file is always executed ! in line mode. !- EDIT_MOD = LINE_MODE; IF ((.OPTIONS AND EDT$M_NOCOMMAND) EQL 0) THEN BEGIN IF (.CMD_NAM [DSC$W_LENGTH] EQL 0) THEN BEGIN !+ ! No command file name was provided, use the default. Note that there are ! two default names; if the first is not found we try the second. !- STATUS = EDT$$SET_COMFNAM (CMD_NAM_DEF1); IF ( NOT .STATUS) THEN BEGIN STATUS = EDT$$SET_COMFNAM (CMD_NAM_DEF2); IF ( NOT .STATUS) THEN BEGIN EDT$$GET_LOGDIR (CMD_DFLT, CMD_NAM); STATUS = EDT$$SET_COMFNAM (CMD_NAM); END; END; END ELSE STATUS = EDT$$SET_COMFNAM (CMD_NAM); IF .STATUS THEN BEGIN IF (EDT$$EXE_CMD (INP_COMMAND) EQL 2) THEN BEGIN !+ ! The startup file was terminated by control C. !- IF .CC_DONE THEN EDT$$FMT_MSG (EDT$_ABOBYCC) ELSE EDT$$FMT_MSG (EDT$_CTRC__IGN); CMD_PTR = CH$PTR (CMD_BUF, 0, BYTE_SIZE); CMD_END = .CMD_PTR; !+ ! Make sure we stay in line mode so the message is visible. !- EDIT_DFLTMOD = LINE_MODE; END; END ELSE IF ((.OPTIONS AND EDT$M_COMMAND) NEQ 0) THEN BEGIN EDT$$FIOPN_ERR (IF .IOFI_NFND THEN EDT$_COMFILNEX ELSE EDT$_COMFILNOP, CMD_NAM); EDT$$SYS_EXI (EDT$_COMFILNOP) END; END; !+ ! Make sure the command file is closed, and the name is null. !- STATUS = EDT$$SET_COMFNAM (0); ! Close the command file IF ( NOT .STATUS) THEN EDT$$SYS_EXI (EDT$_COMFILCLO); !+ ! Use the default mode setting. !- EDIT_MOD = .EDIT_DFLTMOD; !+ ! Give an error message if the primary file was not found or does not have standard format. ! unless we are about to enter change mode, in which case defer the message. ! The message is not needed if the original command was CREATE. !- IF ((.OPTIONS AND EDT$M_NEWFILE) EQL 0) THEN BEGIN CASE .PRIMARY_FILE_CONDITION FROM 0 TO 2 OF SET [0] : IF (.EDIT_MOD EQL LINE_MODE) THEN BEGIN IF .FNF_MSGFLG THEN EDT$$FMT_MSG (EDT$_INPFILNEX); END ELSE IF .FNF_MSGFLG THEN LASTMSG = EDT$_INPFILNEX; [1] : BEGIN 0 END; [2] : BEGIN 0 END; TES; END; !+ ! If we are in recovery mode, execute the remainder of the journal file. ! (Part of the journal file may have been used to respond to SUBSTITUTE/QUERY ! commands in the startup file.) !- IF (.RCOV_MOD) THEN BEGIN IF (EDT$$EXE_CMD (INP_JOURNAL) EQL 2) THEN BEGIN !+ ! The recovery process was interrupted by a control C. Bail out. !- IF .CC_DONE THEN RETURN (EDT$_ABOBYCC) ELSE EDT$$SYS_EXI (EDT$_CTRC__IGN); END; EDT$$TERMIN_RCOVMOD (); END; !+ ! If we are in line mode, then print the current line. !- IF (.EDIT_MOD EQL LINE_MODE) THEN BEGIN EDT$$TY_CURLN (); END; !+ ! And execute the main stream of commands. !- EDT$$EXE_CMD (INP_TERM); !+ ! Do the finalization processing. !- EDT$$TERMIN (); RETURN (1); END; ! of routine EDIT$ END ! of module EDT ELUDOM