home *** CD-ROM | disk | FTP | other *** search
- Ded - the Draco Screen Editor
-
- Ded is a screen editor for CP/M-80 systems which can be
- configured to run on a variety of terminals. Also, it's 62
- commands can be assigned by the user to any desired keystroke or
- keystroke sequence. It is NOT a word processor. It has no
- concept of boldface, italics, footnotes, etc. It does have some
- commands and features (such as automatic word-wrap) which are
- useful in editing text files. It has several commands and
- features (such as automatic indentation and block shifts) which
- are designed specifically for working with source files for
- structured programming languages.
-
- Ded is invoked from CP/M by the command
-
- ded file.typ
-
- where 'file.typ' is the name of the file to be edited. If the
- file doesn't exist, it will be created. If the file does exist
- then it will be renamed as 'file.BAK' and a new file called
- 'file.typ' will be created. When Ded terminates normally, it
- writes the new version of the file to the newly created file,
- thus the entire editing session can be later discarded by ERAsing
- 'file.typ' and RENameing 'file.BAK' to be 'file.typ'. Note,
- however than any existing 'file.BAK' is deleted when Ded first
- reads in 'file.typ'. If more than one file is given on the
- command line then Ded edits them one after another.
-
- Internally, Ded is a line editor. This means that it treats
- a file as a sequence of lines of text. This has little effect on
- the user, but will show up in some situations. One minor point is
- that Ded will always put a CR/LF sequence at the end of each line
- of text in a file.
-
- One aspect of this nature is that Ded does not handle lines
- longer than 79 characters. The user will be warned when an
- operation attempts to make a longer line. Similarly, lines are
- truncated to 79 characters when files are read in.
-
- Ded does not do disk buffering. This means that the entire
- file being edited must fit in memory. Ded uses a compressed form
- of internal storage in which sequences of blanks are stored as
- single bytes (the high order bit is set and the remaining 7 bits
- are a count of the number of blanks). This compressed form can be
- used for file storage, to reduce the space used by files
- containing a lot of whitespace. Ded will also generate standard
- 8-column tabs or fully expanded blanks. If Ded runs out of memory
- space, it will inform the user gracefully, and allow editing to
- continue.
-
- User-settable typewriter-style tabstobs are available in
- Ded. When it is initially run, the tab-stops are set at the
- standard 8-column boundary, but they can be cleared and set to
- any arbitrary columns. The TAB key causes blanks to be generated
- until the cursor is at the next tab-stop. When not in insert
- mode, the character under the cursor is replaced by the blanks.
-
- Since Ded uses special characters internally to represent
- sequences of blanks, these characters should not appear (as other
- than the intended compressed blanks) in any files edited with
- Ded. As a special case, if these characters are between matching
- quotes (as scanned left-to-right), they are acceptable and will
- be displayed in highlighted mode on the screen. The ASCII HT
- character is similarly restricted. Control characters other than
- CR, LF, SUB and HT can appear anywhere in a line with no ill
- effects. They will be displayed in reverse video as their
- non-control forms.
-
- One of the concepts used in Ded is that of a region of
- lines. Such a region can be shifted, aligned, printed, written to
- a file, etc. A region is defined by first selecting the start
- point of the region with the POINT command, moving to the
- end-point of the region, and then executing the command which is
- to affect the entire region. Regions must be marked in the
- forward direction, i.e. the end-point must be later in the file
- than the start point, whether on the same line or on a later
- line.
-
- Ded's screen display consists of 23 lines for the text of
- the file, each of which is 79 columns long (the last column is
- not used other than by the cursor). Also present is a status line
- at the bottom of the screen. This line contains 7 indicators, the
- name of the file being edited, the line and column of the cursor
- and an area which is used for error messages, status messages,
- and user prompts. The 7 indicators are as follows:
-
- 1 - the first end of a region has been marked
- T - there is currently text in the 'text buffer'
- I - insert mode is enabled
- W - word-wrap mode is enabled
- M - multi-column mode is enabled
- S - a search subject has been given
- C - a global change 'to' has been given
-
- Insert mode should be familiar to all computer users:
- characters typed are inserted before the one under the cursor
- instead of replacing the ones currently on the line. Characters
- to the right are moved over to make room. Word-wrap is also
- fairly common - when typing, if a character is about to be typed
- just beyond the word-wrap column, then an automatic carriage
- return is generated. Also, if the character to be typed is a
- non-blank, then the full word which that character is part of is
- moved down to the new line. Any left indent set is applicable to
- the newly inserted line.
-
- Multi-column mode is a special feature of Ded. It interacts
- with the carriage return and word-wrap operations. Instead of
- causing a new line to be inserted, these operations move the
- cursor to the left indent column of an existing next line. Blanks
- are added to that line only as needed to reach the left indent
- and any word carried over by word-wrap is moved to the next line
- replacing any text that might have been there. Multiple columns
- can be easily made by setting the left indent at the desired
- left edge of the column (remember that the left indent is the
- number of spaces before the first character of the column) and
- the word-wrap column to the desired right edge of the column.
- Such columns can be entered in any order, and with careful typing
- and the use of insert mode, columns can even be inserted.
-
- Since the keystrokes which select the various commands can
- be modified by the user, it is not possible to discuss the
- commands based on the keys typed to execute them. Thus, all of
- the commands in Ded have been named. The detailed description of
- the commands is arranged in several related groups. A separate
- page included with this writeup lists the commands in a short
- form, with space in which the user can write in the keystrokes
- which have been selected to perform the commands.
-
-
- Cursor Movement Commands
-
- LEFT - the cursor moves left one column. Moving left past the
- first column will cause the cursor to wrap to the next
- available column in the previous line.
-
- RIGHT - the cursor moves right one column. Moving right past the
- right-hand edge of the screen causes the cursor to wrap to
- the first column of the next line.
-
- UP - the cursor moves up one line. If the cursor was originally
- on the top line of the screen, then the file is windowed
- backwards one line first.
-
- DOWN - the cursor moves down one line. If the cursor was
- originally on the last line of the screen, then the file is
- scrolled up one line first.
-
- SKIPWORD - the cursor moves forward to the beginning of the next
- word. It will not move past the end of the line.
-
- BACKWORD - the cursor moves backward to the beginning of the
- previous word. It will not move past the beginning of the
- line.
-
- BOL - the cursor moves to the first column of the current line.
-
- EOL - the cursor moves to the next free column of the line. (Just
- past the last character on the line.)
-
- NEXTLINE - the cursor moves to the first column of the next line.
-
- TOP - the cursor moves to the top line on the screen.
-
- BOTTOM - the cursor moves to the bottom line on the screen.
-
- PAGEUP - the screen is scrolled backwards 20 lines through the
- file. The cursor will stay at the same screen position unless
- the full 20 line scroll was not possible.
-
- PAGEDOWN - the screen is scrolled forwards 20 lines through the
- file. The cursor will stay at the same screen position unless
- the full 20 line scroll was not possible.
-
- HOME - the cursor (and screen window if necessary) is moved to
- the first column of the first line in the file.
-
- GOTO - the user is asked to enter a number. The cursor (and
- screen window if necessary) is moved to that line.
-
- GOPOINT - the cursor is moved to the position last set using the
- POINT command. The presence of a marked point is indicated by
- a highlighted '1' (for 1st region end) in the status line.
-
-
- Commands Which Change the Current Line
-
- DELCHAR - the character under the cursor is deleted. Characters
- which were to the right of it are moved left one space.
-
- BACKSPACE - the character before the cursor is deleted and the
- cursor backs up one column.
-
- TAB - if insert mode is active (an 'I' is showing in the status
- line), then blanks are inserted before the character under
- the cursor to move that character to the next tab-stop. If
- insert mode is not active, the character under the cursor is
- deleted first (it is replaced or typed over by the TAB).
-
- DELWORD - the next word is deleted. If the cursor is within a
- word, then the trailing portion of that word is deleted.
-
- DELBACKWORD - the previous word is deleted. If the cursor is
- within a word, then the leading portion of that word is
- deleted.
-
- DELEOL - the characters from the current position to the end of
- the line are deleted.
-
- INSERTSPECIAL - a special character is inserted before the
- current character. The user is asked for the decimal value of
- the character to be inserted. Characters with the high-order
- bit set, or the ASCII HT character, should only be inserted
- inside matching quotes, else they will be expanded into
- blanks. CP/M end-of-file characters (decimal 26), carriage
- returns (decimal 13) or linefeeds (decimal 10) should never
- be inserted into the file.
-
- UNDO - any changes made to the current line since the cursor was
- moved onto that line are undone. Commands which require user
- input or redraw the screen will finalize the line so that
- changes made before then cannot be undone.
-
- REDRAW - the entire screen is redrawn. This is useful if your
- terminal goes bonkers.
-
-
- Commands Which Affect Entire Lines
-
- DELLINE - the current line is deleted.
-
- RETURN (this key cannot be redefined) - the normal action here is
- to insert a new line after the current one, add blanks to
- that line to make up the current left indent, and leave the
- cursor after the indent column. The cursor does not have to
- be at the end of a line for RETURN to work. The new line is
- considered to be inserted, since that is the action when
- RETURN is given when the cursor is not on the last line of
- the file. The action of RETURN is modified when the multi-
- column flag is set (an 'M' appears in the status line).
-
- INSERTLINE - a new line is inserted after the current one, and
- blanks will be added to it to come up to the current left
- indent column. This command is NOT affected by the multi-
- column flag.
-
- JOIN - the next line is joined to the end of the current line.
-
- SPLIT - the current line is split into two lines. The characters
- from the cursor position onwards are moved to the next line.
- The left indent column is ignored.
-
- INDENT - the left indent is incremented by the current value of
- the indent increment. The current line is adjusted to the new
- indent amount if the line is longer than the new indent.
-
- OUTDENT - the left indent is decremented by the current value of
- the indent increment. The current line is adjusted to the new
- indent amount if the line is longer than the old indent.
-
- ADJUSTLINE - the current line is adjusted to the current indent
- amount.
-
-
- Commands for Doing Global Changes and Searches
-
- CHANGE - the user is asked for a subject ('from') string, a 'to'
- string, and a count. The first 'count' occurrences of the
- 'from' string are changed to the 'to' string. The cursor will
- be left at the end of the last changed string. If not enough
- are found, the cursor will be left at the end of the file.
- The changes done by CHANGE cannot be undone by UNDO even if
- the last change is on the line the cursor ends up on. The
- presence of a 'to' change string is indicated by a
- highlighted 'C' in the status line.
-
- CHANGENEXT - the previously selected 'from' and 'to' (if still
- active), are used for a single further search. CHANGENEXT
- freezes changes to the line before it operates, but the
- single change it makes can be undone using UNDO. CHANGENEXT
- can only be done if the 'C' and 'S' indicators are on.
-
- FIND - the user is asked to enter a subject string and Ded
- searches for the first occurence of that string after the
- current position. The cursor is moved to just after the first
- found occurrence. If none is found, the cursor is left at the
- end of the file.
-
- FINDNEXT - the next occurrence of the given search subject is
- scanned for. The presence of a search subject is indicated by
- an 'S' in the status line.
-
-
- Commands Dealing With Entire Regions of the File
-
- POINT - this command marks the first end of a region. The
- presence of such a first end is indicated by the presence of
- a '1' in the status line.
-
- ADJUST - the lines in the selected region are adjusted to the
- current left indent.
-
- SHIFTLEFT - the lines in the selected region are shifted left by
- 'IndentIncrement' characters, where 'IndentIncrement' is the
- current value of the indent increment (default 4).
-
- SHIFTRIGHT - the lines in the selected region are shifted right
- by 'IndentIncrement' characters (blanks are inserted at the
- beginning of the lines).
-
- YANK - the text in the selected region is removed from the file
- and put into the 'text buffer'. If the two end points are in
- the same line and the same column, then the entire line is
- taken. If they are in the same line but different columns,
- then the text moved is a string from the single line. If the
- end points are in different lines, then the entire region
- between the end points (inclusive) is moved. This is the
- quickest way to delete a large group of lines from the file.
- Any previous text in the text buffer is freed first. The
- presence of text in the 'text buffer' is indicated by a 'T'
- in the status line.
-
- COPY - a copy of the selected region is made in the 'text
- buffer'. Other than copying instead of moving, this command
- is the same as the YANK command.
-
- PUT - a copy of the text in the 'text buffer' is inserted into
- the file. If the buffered text is a string from a single
- line, then it is inserted into the current line at the
- current cursor position. If the buffered text is a group of
- lines, then a copy of those lines is inserted before the
- current line.
-
- FORMAT - the format command is fairly simple in what it does, but
- the effects of it can be quite complex. Basically, it takes
- the text in the 'text buffer' and feeds it through the input
- routine just as if the user had typed it in. Initially, the
- user is asked whether or not to do line-by-line formatting.
- If the answer is no, then the text on the saved lines is
- pushed through in a single stream. Multiple blanks in the
- buffered text are replaced by a single blank. If a line being
- processed doesn't end in a blank, then a blank is generated
- (this prevents words from being joined together). If the line-
- by-line mode is selected, the further option of deleting
- instead of inserting is offered. Ignore the delete option for
- now. In line-by-line mode, a carriage return is generated at
- the end of each of the processed lines. The key to this
- command (and why it is called FORMAT) is that the word-wrap
- flag is forced on during the processing, thus the text being
- processed is formatted within the current left-indent to
- wrap margin space. The multi-column flag is also respected,
- so FORMAT can be used to create new columns. Paragraph
- indents and hanging indents can be created in the new text by
- properly positioning the cursor when issuing the FORMAT
- command - the first character will be placed at the cursor
- position, and the left indent will not take effect until the
- next line. See the section on hints for more information on
- using the FORMAT command. Currently, the FORMAT command has
- some minor problems concerning the definition of "words".
-
- PRINT - the selected group of lines is printed on the printer.
- Output to the printer always uses fully expanded blanks.
-
- WRITE - the user is asked for a file name, and the selected group
- of lines is written to that file. The file is deleted and
- re-created first. A disk-full condition during this operation
- will be reported.
-
- READ - the user is asked for a file name and a first and last
- line number in that file. Those lines are copied into the
- current file before the current line.
-
-
- Commands for Manipulating Files
-
- DELETEFILE - the user is asked for the name of a file to delete.
- This is useful for handling the 'disk full' condition.
-
- NEWFILEEXIT - the user is asked for the name of another file to
- edit. The current file is written out and the new file is
- read in and edited. The sequence of files given on the CP/M
- command line which ran Ded is not disturbed. A disk-full
- condition during the write operation will be reported and the
- user will be left editing the original file.
-
- NEWFILEQUIT - the user is asked for the name of another file to
- edit. All changes made to the current file in this editing
- session are abandoned.
-
- EXIT - the current file is written out, and the next one in Ded's
- parameter list is read in and edited. If no more files
- remain in the list (the usual case), Ded returns to CP/M.
- Again, the disk-full condition is reported and the user is
- left still editing the intact file.
-
- QUIT - all changes made to the current file in this editing
- session are abandoned and Ded moves on to the next file.
-
-
- Commands for Setting Options and Tabstops
-
- SET - this command is used to set any of 3 different numeric
- values, depending on the character typed after the SET
- command (this character will not be echoed anywhere, but the
- appropriate prompt will appear). The 3 parameters and their
- code letters are:
-
- i - indent increment (any value from 0 to 70, default 4)
- l - the current left margin (any value from 0 to 1 less
- than the current wrap column, default 0)
- w - the current word-wrap column (any value from 1
- greater than the current left margin to 79, default
- 79)
-
- BLANKMODE - this command cycles through the three modes of
- storing blanks in disk files. The default mode, that of using
- standard 8-column tabs, is compatible with CP/M, MSDOS, Dec
- operating systems, etc. Blank-count mode is compatible only
- with Ded, but is handled by the Draco compiler also. Fully
- expanded mode is handled by everything, but takes up more
- disk space and I/O time.
-
- CLEARALL - all tabstops are cleared
-
- TABSET - a tabstop is set for the current column
-
- TABCLEAR - any tabstop in the current column is cleared
-
- INSERT - the character insert mode is toggled between on and off.
- Insert mode on is indicated by an 'I' in the status line.
-
- WRAP - the word-wrap mode is toggled between on and off. Wrap
- mode on is indicated by a 'W' in the status line. For the
- purposes of word wrapping, along with word movement and word
- deletion, characters of a word are letters, digits, '_', '^',
- '"', ''', and '$'.
-
- MULTICOLUMN - the multicolumn mode is toggled between on and off.
- Multi-column mode on is indicated by an 'M' in the status
- line.
-
-
- Some Hints and Tricks
-
- The left margin is of great use when typing in structured
- program source. Indentation tends to change a lot, so the INDENT
- and UNDENT commands should be on easily reached keys. Similarly
- the ADJUST, SHIFTLEFT and SHIFTRIGHT commands are of great use
- when modifying programs.
-
- A useful(?) trick involves the combination of word-wrap and
- multi-column mode. Set the left indent and wrap-column 1 column
- apart, then pick a key (say the vertical bar) and let it
- auto-repeat. You will get a column of that character stretching
- vertically down the file. Such a column can be inserted as a
- separator by setting insert mode on also.
-
- Because of the way the INDENT and OUTDENT commands operate,
- they can be used to create hanging indents in text. When a
- hanging indent is desired, use carriage return to go to the line
- to be hanging left, then use OUTDENT to move left to the desired
- outdent position. Type in the first few words of the line and
- then use INDENT to re-set the proper indent level. The current
- line will not move since the cursor is beyond the indent column.
- You can then continue typing and word-wrap will take over.
- Similarly, when entering structured program text, the INDENT or
- OUTDENT commands for the next line can be entered before hitting
- return or after hitting return. After is usually easiest.
-
- Additional capabilities of the FORMAT command can be used to
- manipulate columns of text. An example should suffice to
- illustrate some of the possibilities. Enter Ded editing a new
- file and enter the following (Ded command names are in upper
- case, comments are indicated by a '*', and additional
- instructions are indicated by ':'):
-
- SET w 20
- WRAP
- Now is the time for all good men to come to the aid of
- their party. Now is the time for all good men to come
- to the aid of their party. Now is the time for all
- good men to come to the aid of their party.
- HOME
- EOL
- WRAP
- : space to column 22 (cursor in column 22)
- SET w 79
- SET l 21
- MULTICOLUMN
- : hit RETURN until cursor is in last line of text
- * You have now created a rectangular block of text - the
- last set of RETURNs served to pad all of the lines
- to exactly 21 characters each.
- HOME
- POINT
- : move cursor to last line
- COPY
- * the rectangular region is now in the text buffer
- HOME
- EOL
- SET l 21
- FORMAT y n
- * we have created a second, identical column - nothing
- special so far.
- TOP
- INSERT
- FORMAT y n
- * the new column has been INSERTED between the other two.
- TOP
- FORMAT y y
- * the new third column has been DELETED (if nothing else,
- it's fun to watch!)
-
- With appropriate use of the FORMAT command and the various
- modes, it is possible to change a single column of material into
- 2 or more columns, and vice versa (SHIFTLEFT is useful here to
- wipe away the left-hand column, and FORMAT with the delete option
- to wipe away the right-hand column).
-
- Configuring Ded
-
- Configuring Ded for your system and preferences takes two
- steps. The first step is that of configuring it to generate the
- appropriate terminal control sequences for your terminal or
- computer. This is normally only done once. The process is
- described in the writeup for the CONFIG program, which is also
- used to similarly configure other programs written using the
- Draco terminal independent CRT routines. In summary, perform the
- following steps:
-
- 1) Have files CONFIG.COM, CONFIG.DAT and DED.SET on your
- default drive. Enter
-
- config ded
-
- 2) Issue the CONFIG command 'L' and find your terminal on the
- list of terminals. If it isn't there, use the information
- provided with your terminal to create a new entry in the
- database using the 'C' command.
-
- 3) Issue the CONFIG command 'S' and select your terminal
- type.
-
- 4) Issue the CONFIG command 'P' to configure Ded.
-
- 5) Issue the CONFIG command 'Q' to return to CP/M.
-
- 6) Enter
-
- ren ded.cnf=ded.com
-
- The second configuration step is used to assign keystroke
- sequences to the various Ded commands. This can be done as many
- times as desired until you are happy with your assignment. Ded
- allows keystroke sequences to be any of the following:
-
- a single control character (other than CR, also known as
- CONTROL-M).
-
- a single character in the range (hex) 0x80 - 0xff
-
- a common escape character (usually ESC, CONTROL-[) followed
- by any single character
-
- the common escape character followed by one of a set of
- 'second escape characters', followed by any single
- character
-
- During the configuration process, you must inform the
- configuration program (DCONFIG.COM) of the common escape
- character and any 'second escape characters' (up to 5).
-
- To perform the keystroke configuration, make sure files
- DED.CNF (created by the other configuration process) and
- DCONFIG.COM are on your default drive. Enter
-
- dconfig
-
- The program will read in a copy of Ded from DED.CNF and present
- you with a menu of 4 choices. Choice 1) allows you to examine the
- current set of keystroke assignments in file DED.CNF. Choice 2)
- allows you to define your own keystoke assignment. You will have
- to enter your common escape character, any 'second escape
- characters' and your keystroke choices for the various Ded
- commands. When entering keystroke choices, the program will
- display the current value. You can keep this value by pressing
- RETURN, or replace it by typing the chosen keys. The program will
- not allow any duplicate sequences or invalid keystrokes. The keys
- you type will not be echoed in any way, so it is a good idea to
- examine the assignments (using choice 1) when you are done.
-
- Choice 3) writes the current settings out to a new file
- called DED.COM, along with all of the code for Ded. The only
- difference between DED.CNF and DED.COM is the selected keystroke
- sequences, thus you can rename an existing DED.COM as DED.CNF and
- configure from it. Choice 4) returns you to CP/M. Ded should now
- be ready to run.