Instructions for VDE (Video Display Editor):
VDE, VDM 2.30 (9/86)
(c)1986, E. Meyer
VDE is a small, powerful text editor for CP/M computers. It offers:
* full-screen editing * full block operations
* windowing * disk file input/output
* auto horizontal scroll * powerful macro functions
* wordwrap and formatting * find/replace
* pagination * undelete
* disk utilities * many user options
VDE is small (under 10k) because it is written in assembler. VDE is fast
because it edits a file entirely in memory. (This does impose a limit on the
maximum file size; however, VDE compresses text, so you can actually edit a
file somewhat larger than the available memory.)
VDE produces standard ASCII text files, compatible with virtually all
other software. This makes it an ideal programmer's editor. On the other
hand, with wordwrap and similar features, it is an efficient (though not
fancy) word processor as well. VDE can even read in WordStar "document"
files, though it will convert them to plain ASCII ("non-document") text.
VDE requires a Z80 CPU, and fully supports both CP/M 2.2 and 3.0 (Plus).
The generic version of VDE can be installed for practically any terminal, and
is fast enough in its screen operations that it even works well on laptop
computers with slow LCD displays. There is also a special version VDM for
computers with memory-mapped video (MMV) only, which is even faster if your
hardware supports it. See the section on using the VINSTALL program, below.
Hereafter "VDE/M" refers to either version; "VDE" alone may also refer to
either, unless a distinction is being drawn between generic VDE and VDM.
VDE is invoked from CP/M: A>vde [filename]
If you omit the filename, VDE will ask you for it. If it's a new file, it
will of course be empty. If an existing file is too large to fit in memory,
VDE will not be able to edit it.
VDE gives you a "status line" at the top of the screen which includes the
filename, cursor position, INSERT toggle (if on), and prefix flag (if on).
The position is given by page, line, and column, according to the page length
value you have installed. At first, the prefix flag will be reminding you
"ESC-? = menu". If you hit ESC-?, you will get a brief menu of the various
VDE commands. The menu, like all command prompts and error messages, appears
temporarily in the top portion of the screen; it is removed when a command is
selected. It also includes the amount of free memory.
VDE/M can handle lines of up to 255 characters. When the cursor moves
past the edge of the screen, the VDM display will scroll horizontally. [VDE
scrolls a single line, then after a delay the rest of the screen.]
The VDE command set is similar in many respects to WordStar's, though not
identical. There are ESC- commands, which mostly correspond to WordStar ^K
(Block) commands; ^Q- and ^O- commands; and other single-control-key commands.
The similarities are strong enough that a WordStar user should have no trouble
adapting to VDE. Differences remain because of the extra functions provided
by VDE, and the need to support both WordStar and CP/M arrow keys.
THE STATUS LINE AND MENU
File D:FNAME.TYP Pg 1 Ln 1 Cl 1 INSERT ESC-
VDE 2.30 (46174 bytes free)
ESC- Take Print | ^Q- <udrl> | ^O- B fmt | ^F,A wd r,l ^V INSERT
<udrl> Copy Name | B block | L,R margins | ^R,C pg u,d ^N insrt CR
Block Macro Load | R,C TOF,EOF | X rel mrgns | ^B reform DEL,^G d l,r
Write Key Save | F find | C,F ctr,flsh | ^^ tog case ^T,Y " wd,ln
Read Files eXit | A replace | P tog pagn | ^P pr code ^U,^QU undel
Delete Erase Quit | DEL,Y del l,r | W window | ^W wait ^Z rpt find
I. CONTROL KEYS: single keystroke commands, function without prefix.
Basic keys: CR is a carriage return.
BS is a nondestructive backspace.
TAB is a real Tab, ^I.
Arrow keys: CP/M: ^K up, ^J dn, ^L rt [Can be reconfigured];
WordStar: ^E up, ^X dn, ^D rt, ^S lft.
^F = word right.
^A = word left.
^R = scroll upward one screen.
^C = scroll downward one screen.
^G = delete character to the right of the cursor.
DEL = delete to the left. [Can be reconfigured]
^U = undelete a character.
^T = delete word to right of cursor.
^Y = delete current line.
^N = insert a carriage return at present position.
^V = toggle INSERT mode on and off.
^^ = toggle case (upper/lower) of character at cursor.
^P = insert following control code.
^B = reform a paragraph with current margins.
^Z = repeat find. (Repeats the last ^QF command.)
^W = wait. (Brief pause, useful during Macros.)
II. QUICK COMMANDS: first hit ^Q, then the key shown. (ESC cancels)
^Q Arrows: The Right and Left arrows (including ^S/D), when pressed
after ^Q, move the cursor quickly to the beginning or end
of the line. The Up and Down arrows (including ^E/X) move
to the top or bottom of the screen.
^Q B = move to block marker (if set with ESC-B).
^Q R = move to top of file.
^Q C = move to end of file.
^Q F = find next occurrence of a string.
^Q A = global find/replace (see below).
^Q Y = delete from cursor to end of current line.
^Q DEL = delete from cursor to beginning of current line.
^Q U = undelete a line.
III. ONSCREEN COMMANDS: first hit ^O, then the key shown. (ESC cancels)
^O R = set right margin (column 1 turns off wordwrap/reformatting).
^O L = set left margin.
^O X = release margins (do ^OX again to restore).
^O C = center current line with respect to margins.
^O F = align a line flush to the right margin.
^O B = format a paragraph with left margin at current cursor
column to a new set of margins.
^O P = toggle pagination on/off.
^O W = toggle windowing on/off.
IV. ESCAPE COMMANDS: first hit ESC, then the key shown. (ESC cancels)
ESC ? = menu. Display a brief menu of all VDE commands.
Also shows free memory. Press ESC to clear.
ESC TAB: The TAB key, when pressed after ESC, moves to the next tab
stop by inserting spaces (instead of an actual Tab).
ESC Arrows: The Up and Down arrow keys, when pressed after ESC,
scroll the screen vertically by 4 lines, without moving
the cursor unless necessary.
The Right and Left arrows, pressed after ESC, scroll
the screen horizontally by 30 columns, if this can be
done without moving the cursor.
ESC F = Files. Look at the directory of a disk.
ESC E = Erase. Erase a disk file.
ESC L = Load. Load a brand new file to begin editing.
(Asks for confirmation (Y/N) first)
ESC N = Name. Change the current filename (affects Save, eXit).
ESC S = Save. Save the current file, but continue editing it.
ESC X = eXit. Do a Save, then a Quit (no confirmation needed).
ESC Q = Quit. Abandon current file and exit VDE.
(Asks for confirmation (Y/N) first)
ESC B = Block. Mark the start of a Block.
ESC D = Delete. Delete everything from Block start to cursor.
ESC T = Take. Take text from Block start to cursor into copy buffer.
ESC C = Copy. Copy text from copy buffer to present cursor position.
ESC W = Write. Write everything from Block to cursor to a disk file.
ESC R = Read. Read a disk file into text at cursor position.
ESC P = Print. Print the file as it now stands, from memory.
ESC M = Macro. Execute a string of commands repeatedly.
ESC K = Key. Store Macro on function Key for later recall.
ESC 0..9 = Use stored Key. (In macro mode: label.)
ESC !,=,~,# Used in Macro programming (see below).
EXPLANATION OF SELECTED COMMANDS
BLOCK COMMANDS (ESC-B,D,T,C,W, ^QB) - ESC-B marks the beginning of a Block.
(The marker will display according to your terminal installation, quite
likely as a highlighted "B", and will remain until deleted or reset.)
There is no Block end command; wherever the cursor is when you execute a
block operation (ESC-D,T,W) is the end of the block. (If the Block
marker is not set, block operations will not work.)
Modest block moves and copying can be done using ESC-T to Take the
block into the copy buffer, (ESC-D to Delete the original if desired,)
and ESC-C to Copy it back elsewhere in the file (or in another file).
The block remains in the copy buffer until replaced.
The ^QB command moves the cursor back to the Block marker.
DISK OPERATIONS (ESC-F,E,R) - On using the ESC-F command, you will be asked
to specify a drive, and its directory will be shown. If there is not
enough room to fit all the files on the screen, you will see "..." at the
end to indicate that there were still more. Press ESC to return to
editing. [ESC-F may be configured to ignore SYStem files.]
ESC-E can erase a disk file. (Like all VDE commands, it will not
accept wildcards in the filename.)
ESC-R reads in an entire disk file, placing the text at the current
FIND, REPLACE (^QF, ^Z, ^QA) - Once a string is "found" with ^QF its next
occurrence can be found with ^Z. (^Z does not repeat ^QA.) Matching is
case sensitive, and there are no wildcards; but control codes (including
newline, ^M) may be included with ^P.
^QA is the global find/replace command. It goes to the top of the
file, asks for a string to find, and what to change it to. The cursor
will be placed in succession on each occurrence of the string in the
file. To change it, press "Y"; anything else skips to the next. If you
want to change all further occurrences without being asked, press "*".
ESC cancels at any time.
MACROS (ESC-M) - The macro string may contain text, control keys, escape
commands, etc as desired, and will execute exactly as if you had typed in
that same sequence. You will then be asked for a "Repeat count".
Usually you will simply type a number for the repeat count (0-9, or "*"
for "global" -- actually 255 times). You will see the results as the
macro executes, and you can abort it at any time by pressing ESC.
If you want to put a brief pause in the execution of a Macro, use
the Wait command, ^W. (Example: "^C^W" is a simple Macro to browse
through a file.)
If you are sure you know what you're doing, you can speed up Macro
execution by specifying "Quiet" mode: press "Q" before the repeat count.
Only the line/column counts will be updated as the Macro runs. (This is
particularly useful on laptop computers with slow LCD screens.)
Macros also stop any time an error occurs; the error message will be
visible, and can be cleared by pressing ESC. Many commands (like Find or
Reformat) are designed to generate errors at the end of the file so
that a global ("*") Macro containing them will halt there. Other global
Macros may need to be aborted manually.
CAUTION: Macros can be confusing, even dangerous; be careful.
Macros don't nest; if you use ESC-M in a macro, the original is simply
replaced. A repeat count of "*" will insist on repeating 255 times, even
once the end of the file is reached, unless an ERROR occurs.
ESC-M turns INSERT OFF first for consistency, so that the same macro
will always work the same way.
Here is an example of a macro. Can you figure out what it does?
(Answer: .elif eht fo dne eht ta meht fo tsil a gnikam elif a fo tuo
sesehtnerap ni stnemmoc lla ekat lliw tI)
(Onscreen you will see: QRQF(MG[BQF)MG[T[DQCM[C )
VDE Macros are very powerful tools, particularly given their program
ability (see below) and storage on function keys. They can be used to
customize VDE for any task, such as the formatting requirements of
specialized writing or programming languages.
MACRO KEYS (ESC-K) - The Key function gives you a convenient way to store
Macros for later use. Up to 10 Macros can be stored (0..9), by entering
them with the ESC-M command, then using ESC-K to save them. They can
then be recalled and used simply by typing ESC-<number>. Example: typing
ESC-K-0 will store the last Macro used as Key 0, and it can be recalled
and reused at any future time simply by typing ESC-0. [VINSTALL also
allows you to install a default set of macro Keys.]
Ordinarily, Keys operate just like the original Macro: they will
ask for "Quiet/Repeat count" when executed. If you want to suppress this
(giving something more like a "function key", that only executes once)
you can type "N" (for No repeat) before storing the key number. Example:
ESC-K-N-0 stores a Macro in Key 0 as a once-only function key. Similarly
you can make it a QUIET once-only key with "Q": eg ESC-K-Q-0.
If the Macro (ESC-M) string is empty, using ESC-K will delete any
Key definition. Using a Key replaces whatever was previously in the
Macro string. Trying to use an undefined Key results in an error.
Redefining a Key simply replaces its former value.
There are 245 bytes total available for all 10 Keys (and a 65 byte
limit for any one Key.) If your request to store (ESC-K) exceeds the
limit an error will result.
Besides simply storing Macros, here are some useful function Keys:
1. Showing a ruler line. The following sequence:
^V, CR, TAB,!,TAB,!,TAB,!,TAB,!,TAB,!,TAB,!, CR, ^V
can be used to display a ruler line showing tab stops.
2. Storing different sets of margins (eg for quotes): for example,
^OR, 12, CR, ^OL, 66, CR
3. Typing any frequently repeated phrase; "ESC-6" is much more
convenient than "World Wide Widgets Inc."
MACRO PROGRAMMING (ESC-0..9, ESC-!,=,~,#) - VDE has several commands which
function only in a Macro string, and give you control over the execution
of a macro, allowing real programming.
ESC-0..9, when in a Macro, function as "labels" 0..9. They have no
effect, but can be "jumped" to by other commands.
ESC-! followed by 0..9 is a simple "jump" instruction, causing macro
execution to resume with the command following the label ESC-0..9. As
two special cases, ESC-!-[ jumps to the beginning of the Macro, and ESC-
!-] jumps to the end (aborts).
ESC-= and ESC-~, followed by a character and then a label (or "[",
"]"), are conditional jumps: they will jump to that label IF the
character at the cursor position does (or for "~", doesn't) match that
ESC-= and ESC-~, followed by a character and then ">" or "<", are
search loops. They will continue to move the cursor right (or for "<",
left) as long as the character at the cursor does(n't) match, or until
the beginning or end of the file.
ESC-#, followed by 0..9, is used to "chain" to another macro key.
In this way you can build up strings longer than the 65-byte limit on
any one key. It does not "call" the key; there is no returning.
Macro programs are stored just like any other macro string (usually,
though not necessarily, with no repeat count). If these commands are
misused, you will probably get an error. If you program in an endless
loop, you will at some point have to abort with ESC. Don't make macro
programs "quiet" until you're sure they work.
Example: stripping (varible numbers of) leading spaces. The macro:
^QS, ESC-=-sp->, ^Q-DEL, CR
will delete all leading blanks on a line (give any desired repeat count).
MARGINS, WORDWRAP, CENTER, FLUSH, FORMAT (^OR,L,X, ^OF,C, ^B,^OB) -
^OR sets the RIGHT margin, and turns ON wordwrap, formatting, and
centering. The default is column 1, which turns OFF wordwrap, etc. At
the prompt "Column:" enter the column number (1-255), or just hit RETURN
for the current cursor column. If this value is to the left of the left
margin, the left margin will be reset to 1.
^OL sets the LEFT margin where the cursor is. Must be to left of
the right margin, which must have been set first. The default is 1.
Wordwrap automatically aligns text, as it is typed in, within the
current margin settings.
^OX temporarily RELEASES the margins (sets them to 1); use ^OX again
to restore the previous margins.
^OC CENTERS a line with respect to the margins, if set.
^OF FLUSHES a line over to the right margin, if set.
^B REFORMS from the line the cursor is on, to the end of the
paragraph, according to the current right margin (the LEFT margin must
remain the same). Paragraphs must either be indented beyond the current
left margin with spaces or tabs, or separated by a blank line; otherwise
they will all run together. (VDE doesn't use soft spaces or CRs; it has
to guess what you want when you try to reformat text. Usually this works
pretty well; but be cautious with formatted columns and tables, etc.)
^OB FORMATS text (like ^B), but can also handle text created with
a different left margin. Place the cursor in the original left margin
column of the existing text, then type ^OB.
CAUTION: ^B and ^OB are different. Trying to change the left margin
with ^B, or using ^OB in the wrong column, can create a mess!
VDE can't actually hyphenate, but it does recognize hyphens ("-")
that you have put in the text yourself. If VDE needs to break up a line,
it will treat a hyphen as a legitimate place to do so. (If you have a
long word that you'd like to have broken up, put a hyphen in it some-
where.) If VDE is trying to recombine lines and finds a hyphen at the
end of one, it will quit with an error. You must join the lines (and
delete the hyphen, if desired) manually, then press ^B again.
PAGINATION (^OP) - The ^OP command toggles pagination. When on, the default
page length is reflected in the VDE header ("Pg xx..."), and all page
functions in the Print routine (formfeeds, headers, start/stop print) are
enabled. When off, the header will say "Pg 0", and the line count ("Ln
xx...") will be the line number in the file; also, printing sends the
whole file out at once, with no pagination from VDE.
[You cannot toggle pagination on if the default page length is 0.]
PRINTING (ESC-P, ^P) - The ESC-P command Prints the file from memory. You
will be asked for a set of "Options:", at which point you may enter one
or more of the following, in any order:
^ causes control characters ^X to be FILTERED to ASCII "^X".
*nn causes the job to print out nn TIMES (nn=1..255).
@nn causes printing to begin AT page nn.
#nn causes a MAXIMUM of nn pages to print.
"..." causes quoted string to print out as a HEADER. The string will
print at the left, and the page number will appear near the right margin.
(Maximum header length is 50 characters; use an empty string, "", to get
numbered pages with no header text.)
The last three options are NOT allowed if pagination is off (^OP).
Example: Options: *2 "Instructions" @6#1
will print out page six of the file twice, with the header shown.
[Codes to initialize the printer can be specified in the Printer
Installation section of VINSTALL.]
You can abort at any time with ESC (though this may take a moment,
or a few keystrokes, depending on your BIOS).
For printer control, VDE supports a subset of WordStar ^P print
codes. These can be entered with ^P, then the control code. First there
are simple embedded codes:
^H - overstrike previous character
^L - formfeed (Not recommended when pagination (^OP) is on)
Then there are seven user-definable codes: three toggles, four switches.
The Printer Installation in VINSTALL allows you to choose what codes you
want, and install the control sequences your printer needs. The defaults
are toggles ^D, ^S, ^Y
and switches ^Q, ^W, ^E, ^R.
These correspond to the Doublestrike, Underline, and Ribbon toggles, and
the four User Codes, in WordStar. Toggles are well suited to features
(like ^Sunderline^S) that will be turned on and off.
Control codes other than the 7 installed ones will simply print out
"as is", that is, ^[ will print as ESC, etc. The only codes you cannot
enter into a file are ^B and ^Z. Control codes display on screen as (if
possible, highlighted) letters. Unfortunately, VDE does count these
codes when reformatting text. Where format is critical, insert ^P codes
TABS (^I) - The TAB key alone produces a single ^I. When preceded by ESC,
it moves the cursor over the same amount, but by spaces instead. Either
way, whether it overwrites existing text depends on the INSERT toggle.
[The Tab stops are configurable to 2, 4, 8, 16 (etc) columns.]
UNDELETE (^U, ^QU) - The undelete functions can be used (repeatedly if
necessary) to recover up to 2k of text deleted by overstriking, or with
^G, ^T, ^QY/^Y, ^Q-DEL, or ESC-D, as long as the cursor has not been
moved since. ^U undeletes one character; ^QU does a whole line.
(Restriction: After DEL, ^U is only good for one character.)
Further use after all deleted text is recovered will produce either
duplicates of existing text or junk.
WINDOWING (^OW) - The ^OW command takes the 11 lines of text beginning on the
cursor line, and splits the screen into two Windows. The bottom window
retains a copy of this text, while the top window continues to function
normally. This is useful when comparing different portions of text
within a file, or even between different files. Use ^OW again to remove.
Windowing only works on 24 line screens.
BACKUP FILES - When you edit a previously existing file, VDE will normally
create a backup (BAK) file each time you save (with ESC-S or ESC-X).
This can be suppressed entirely with VINSTALL.
There is one exception: if the ESC-N command has been used to change
the filename, BAK files will no longer be made. (Thus you can tempor-
arily avoid BAK files by renaming a file to itself.)
The block write command (ESC-W) does not create BAK files.
INTERRUPTION - If VDE gets interrupted by a message from some other software
(BIOS error, resident utilities, etc), it may lose control of the screen.
You can always restore the text by, for example, scrolling up and back
down again (^R^C).
RUNNING OUT OF ROOM - VDE has excellent error recovery, under both CP/M 2.2
and 3.0: BDOS errors are trapped entirely within VDE, so you will never
lose any text.
If you run out of disk space, you can just swap disks (you should
always keep a blenk FORMATTED disk around). Alternatively, you can use
the ESC-F and ESC-E commands to delete unneeded files.
If you want to Take a block to copy it, but run out of memory, write
it out to a disk file instead.
Remember that the copy block remains in memory. If you run low on
memory, you may want to delete it (by Taking nothing, ESC-B ESC-T).
If you want to Copy it back but don't have room, delete some text or Load
a new file first.
You can always find the amount of free memory in the ESC-? Menu.
SPACE COMPRESSION - VDE 2.1 uses a new text compression algorithm that can
effectively increase memory capacity by over 25%. (I have loaded a 67k
text file into 53k of free RAM.) Of course this compression is undone
when writing the file back to disk.
(Earlier versions of VDE used a compression algorithm inherited from
VDO, that was about half as efficient.)
STRING ARGUMENTS - When confronted with a prompt like "Find:", you are
expected to type in a string (up to 65 characters) then hit CR. During
this process, you can correct mistakes with BS, DEL, or any left arrow;
and ^X will delete the whole entry. Note that to get any of these codes
into the string itself, you must precede it with ^P (this includes ^P).
Examples: to find a line beginning with a "*" (find "CR,*") type
^QF, ^P,CR, *, CR.
Now to get this into a Macro with ESC-M, you would have to type (whew)
ESC-M, ^QF, ^P,^P, ^P,CR, *, ^P,CR, CR.
All messages appear in the line just below the header. First
there are PROMPTS requiring user input (though most assume a natural
default, or exit, if you just type RET):
"Abandon file?" - please confirm ("Y") a Quit or Load request.
"Find:", etc - enter the string argument for the command.
"Column:", etc - enter a number 0..255
"[Quiet], Repeat count:" - enter [opt. "Q" and] repeat count for Macro.
"[No rpt/Quiet], Key number:" - enter [opt. "N/Q" and] key number for Key.
Then there are the (temporary) INFORMATIONAL messages:
"I/O working... please WAIT" - disk or printer operations in progress.
Then there are ERROR messages: you need to press ESC to continue.
"Out of Memory" - the file, block, or key string won't fit in RAM.
"Invalid Key" - an illegal control or ESC sequence was pressed.
"I/O Failure" - file not found, disk full, empty/invalid drive, etc.
"Cannot Reformat" - end of file; hyphen at end of line; or word too long.
"Not Found" - the search string was not found.
"Syntax Error" - a macro programming command was misused.
"Error" - the command used won't work in this situation.
(Example: block isn't marked...)
INSTALLING AND MODIFYING VDE
As distributed, VDE is set up for Osborne computers, and VDM is set up
for an Osborne Executive. If you use another computer/terminal, you will most
likely have to re-"install" VDE/M; otherwise it will make more or less of a
mess on your screen, and (possibly, with VDM) crash.
The default printer installation is empty. You will probably want to
redo this, so you will have access to your printer's special features.
There are also many options affecting the operation of VDE that you can
select or modify to suit your taste.
All this can be done using the VINSTALL program, which should be
distributed as part of VDE.LBR.
VINSTALL SYNTAX: A>vinstall [d:]vde/m [termname]
You can use VINSTALL to modify VDE/M.COM simply by typing:
Alternatively, you can use (or create) an INSTALLATION FILE by typing:
A>vinstall vde termname
In this case, VINSTALL will load the file TERMNAME.VDE (or VDM) and install
it, if it already exists; and will create or update it at the end, when you
save and exit. Example: you can create the file OSBEXEC.VDM, to install VDM
for the Osborne Executive, simply by typing:
A>vinstall vdm23 osbexec
and then choosing to "SAVE", since that is how VDM is already installed by
default. Alternatively, you can create KAYPRO84.VDE, to install VDE for New
Kaypro (84) computers, by typing:
A>vinstall vde23 kaypro84
Then go through the "Terminal Installation" routine. (The only values you
would need to change are "erase to end of line" and "alternate video".) When
you save, the new configuration will be written to KAYPRO84.VDE as well.
Each installation file (VDE or VDM) is 1k, and includes only the terminal
installation data (not options, printer, keys, etc). Once you've created one
for your terminal, please circulate it for the benefit of others.
The version numbers of VDE/M, VINSTALL, and any installation files must
"agree" or you will get an error. The match need not be exact, as there may
be a new release of VDE without modifying the installation areas. But if
there has been a change in these, a new version of VINSTALL will be provided,
and you will have to create new installation files.
VINSTALL is largely self-documenting, and steps you through each item
individually. If this is your first time running the program, take advantage
of the "Help" option before you start in, for some basic instructions. What
follows is a more detailed explanation of installation items, in about the
same order as in the VINSTALL procedure.
Note that all the number entry in VINSTALL is hexadecimal; you will find
a good ASCII/base-conversion chart helpful. The only error that VINSTALL can
detect is the attempt to define a longer hex string than will fit; it can't
check for legal values. Don't install illegal values, or VDE will behave very
CONFIGURING USER OPTIONS
Create BAKup files (Y/N) - Do you want backup files to be made when you
save a file with VDE?
Default insert on (Y/N) - Do you want the INSERT toggle to start out on
when VDE loads a new file?
Left and Right margin columns (00-FF hex) - Default margin settings.
Set both to 1 to turn off wordwrap and reformatting.
Tab spacing -1 (01,03,07,0F,1F...) - The tab spacing can be 2, 4, 8, 16
(etc) columns, any power of 2. Enter one less than the value desired, in
hex, as shown above. Other values cause the TAB key to act erratically.
Page length (00-FF) - Set the page length to affect header display and
printer pagination. Set to 0 to turn off pagination entirely. [Note:
this is the number of lines you want to print, not the physical length of
the sheet, and does not include an extra 3 lines for a header if used.]
Scroll overlap (00-lines) - This is the number of lines overlap between
screens when scrolling with ^R/^C. The smaller, the faster the scroll.
Show system files (Y/N) - Do you want files with the SYStem attribute
to show in the VDE directory display?
Ring bell on error (Y/N) - Do you want your terminal bell to ring when
a VDE error message displays?
Clock speed in MHz (01-FF) - Set this to your CPU clock speed; many
CP/M computers are 4.0 MHz (use 40 here). Can also be adjusted to vary
length of delays in VDE.
TERMINAL INSTALLATION (Both versions)
VDE will run on nearly all computers, and is very easy to install. If
you have memory-mapped video, you may be able instead to use VDM, which is
much faster, but requires a bit more skill to install. First there are some
things in common in both installations:
Terminal ID - This is just a place to put the name of the terminal you
are installing (up to 16 characters).
Viewable screen columns (28-FF) - Enter the width of your screen in
columns. The normal value is 50 for eighty columns.
Screen lines -1 (07-1F) - Enter one less than the number of lines on
your screen. Normally 17 for twenty-four line screens.
DELete character (00-7F) - Normally 7F. If your keyboard can't
generate this, and you want a DEL key, change it to something else.
Arrows up, down, right, left (00-7F) - Enter the ASCII codes for your
terminal arrow keys in this order, one byte each. Ignore parity. Use a
value of FF to mean "not used". (Wordstar arrows ^E,^X,^D,^S and
backspace ^H are always accepted, and should not be redefined here.) The
default set is CP/M ^K,^J,^L, entered as 4B4A4CFF.
Terminal init, uninit - Enter the codes you want sent to initialize
your screen on entry into VDE, and to uninitialize on exit, in the form
(# of bytes),bytes. You will at least want to clear the screen, and can
optionally do other things as well. Example: ^Z alone is common, (01)1A.
TERMINAL INSTALLATION (Generic)
VDE should run with adequate speed on most terminals. If your BIOS
doesn't buffer the keyboard well, you might lose characters when typing while
the screen is being updated. If so, consider the following hints:
(1) Installing Scroll Up/Down [see below] correctly makes a big difference.
(2) Response speed improves if you have INSERT OFF while typing in text.
Horizontal scroll delay (01-FF) - This controls the delay between
scrolling the current line and scrolling the rest of the screen, when
working beyond column 80. The average value is 80h; adjust as you like.
Also affected by the setting of clock speed, above.
Clear to end of line - Enter the ASCII string to clear to the end of
the line, as (#),bytes. Example: (02)1B54. If your terminal can't do
this then zero it out (00).
Alternate video on/off - Enter the codes (#),bytes to turn some video
mode (eg inverse), that you want to use to highlight control codes, on and
off. If your terminal can't do this, zero them out (00).
Use high bit for alt. video (Y/N) - If your terminal needs the high bit
set on characters to get them in alternate video, zero the above strings
out and say Yes here; otherwise, No.
Console filter (7D-FF) - This is the highest ASCII code that will be
sent to the screen. Normally 7F; if your terminal can't display codes 7F
or 7E (DEL and tilde), lower this to 7E or 7D.
Cursor column before row (Y/N) - Normally No; if your terminal expects
column,row order when positioning the cursor instead of row,column, say
Yes. (Don't worry; if you get this wrong, you'll notice!)
Position cursor at (0,0) - Enter the 4-byte sequence for addressing the
cursor to the top left: two lead bytes, then two row/column values. Most
terminals use ESC,=,20h+row,20h+col, or 1B3D2020. If you have only one
lead byte, make the first something innocuous.
Scroll up and down - What is wanted here is to get the text to scroll
up or down a line, by either deleting or inserting a line at the top. A
common way to do this is to send the cursor to the second screen line
(first text line) and delete/insert a line. Example: on an ADM3-style
terminal, 1B3D2120 puts the cursor on line 2, 1B52 deletes a line, and
1B45 inserts a line. So what you need for scroll up is (06)1B3D21201B52,
and for scroll down (06)1B3D21201B45. Some terminals require different
approaches; if yours can't do this at all, zero this out (00).
TERMINAL INSTALLATION (Memory-mapped)
VDM assumes the following about video memory: (1) its high bit can be
used to highlight and provide a cursor; (2) its absolute address is at or
above 3000h (above VDM code itself). Installation:
Unused columns of RAM (00-FF) - Enter the number of unused bytes in
video RAM between the end of one visible line and the start of the next.
Example: many computers have 128 bytes of RAM per line, but only show 80
of them. So there would be 48 unused columns (30 hex).
Cursor on/off - Enter the codes (#),bytes to turn the regular CP/M
cursor on and off, so it won't appear on the VDE screen. If you can't do
this zero them out (00), and the cursor will remain visible at the upper
corner of the screen.
Video RAM start (3000-FFFF) - Enter the starting address of your video
memory, in hex.
Video in/out code - If your video RAM is in the ordinary bank of
memory, just put C9000000... here (that's a RET instruction). Otherwise,
you will need the machine-language code to switch video memory in and
out. There are 16 bytes for each routine, and you must preserve all the
CPU registers, and end with a RET. You should find the assembler code to
do this in your terminal manual; to convert it to hex, either look up the
hex values in a Z80/8080 reference book, or use DDT or ASM/MAC to write
and assemble the code to hex form.
Printer ID - Just room for a text string (16 bytes) to identify the
printer you are installing.
Printer initialization - Enter a string of codes (#),bytes to send to
the printer before printing text, to set print mode, margins, etc. If
none, zero it out (00).
Send LF after CR (Y/N) - Normally Yes. But with some printers, which
manufacture their own LF on receiving a CR, you will want No here.
Toggles and switches - Enter the ASCII codes for the three toggles,
then four switches, as described above. Toggles turn a feature on and
off again; switches just send the same code each time. The defaults,
which correspond to Wordstar, are toggles ^D,^S,^Y (doublestrike,
underline, and ribbon) and switches ^Q,^W,^E,^R. You can use any codes
here EXCEPT ^B,^H,^I,^J,^L,^M,^Z, which are used for other purposes.
Codes for toggles (on/off) - Enter the codes (#),bytes to send to the
printer on encountering each of the three toggle codes. See your printer
Codes for switches - Enter the codes (#),bytes to send to the printer
on encountering each of the four switches.
VINSTALL gives you the ability to install a default set of macro keys.
(It also lets you see the keys, which VDE can't.) Keys defined with ESC-K
while running VDE override the defaults, but are only temporary. VINSTALL
gives you a display much like this:
MACRO KEYS: (C7 bytes free) <---- note free bytes (up to F5 = 245)
<1><> <---- "<>" flag means empty
<3>^C^W <---- normal macro key
<5><N>World Wide Widgets Inc. <---- "<N>" flag means no-rpt key
<7><Q>^QR^[B^QC^[T^[C <---- "<Q>" flag means quiet key
Select <0-9>, <Z>ap, or <CR> to save:
This is pretty straightforward; you just select the number of the Key you
wish to redefine, then type in the new definition, much as you would in
VDE (though the display is a bit different). All the same rules apply.
To erase all the keys and start over, press "Z".
FURTHER USER PATCHING
The address of the user patch area will be given to you by VINSTALL.
This small region in VDE can be used to install any extra patch code you
need. (Example: if your video in/out routines won't fit into 16 bytes,
you can jump to the user patch area and put more code there.) This is the
ONLY such area available, as VDE uses all memory after its own code for
VINSTALL also tells you the addresses of the command tables in VDE/M.
You may find this useful if you need to go in and change a VDE command key
that conflicts with your computer's firmware. There are four command
tables: basic, ESC, ^Q, and ^O. Each is a list of 3-byte entries, with a
one byte keycode, then a two byte address. (Examples: you will find the
^T command and the ESC prefix in the basic table; and the ^OX command
appears in the ^O menu, as ^X.) Find the problem keycode, and use DDT or
another utility to change it. (You will also see the keycodes 80-84h in
the tables; these are the arrow keys and DEL, as installed in the Terminal
The original VDO (Fritz Schneider, 1982) was modified by George Peace to
run on Osborne computers (VDO-EX, 1984). This is where my own VDE began from.
My first Osborne VDE, VDE-2, 2B, 2C series (1984) was followed by
VDE-OS,OX 2.4-2.7; this has now developed into VDM, adaptable to most MMV
computers. My Epson Geneva adaptation VDE-PX (1985) has now become the
generic terminal version of VDE.
(VDE and VDM are both clearly identified by a version message at the
beginning of the COM file. You can view this with DDT or a similar utility.
Do not alter this in any way.)
There are other descendants of VDO; each has evolved in a different
direction, with its own advantages and compromises. VDE reflects my own
tastes, and has by now been thoroughly enough rewritten that I consider it
(and the name "VDE/M") mine. Please respect this, particularly if you begin
to play with the source code for an earlier version of VDO or VDE. I do not
plan to release the source for VDE 2.xx, but I welcome suggestions.
Versions 2.00 of VDE and VDM are equivalent in features and format.
Future revisions will attempt to maintain this correspondence in the first two
digits (#.#), possibly with separate bug fixes in the third. RECENT UPDATES:
v 2.10 (6/86) - Macro Key (ESC-K) function; window; undelete;
new compression algorithm; true block marker;
directory; improved pagination and scrolling;
printer installation; small fixes.
v 2.20 (8/86) - Larger, more Wordstar-compatible command set;
left margins; hyphenation; macro programs.
v 2.30 (9/86) - New VINSTALL program replaces overlays. New
functions ^F,^A,^T, ^QE/X, and ^QU. New global
replace ^QA. New Print options; restrictions
on ^P entry removed. Macro key chaining.
Several small bugs fixed.
***** The VDE editor and this documentation are (c)1986 E. Meyer. *****
***** They may be freely copied and distributed for NONPROFIT use *****
***** only. No changes are to be made to this documentation, nor *****
***** to the VDE program itself (except as detailed above). *****
I want VDE to continue to be a valuable utility for all CP/M users.
Please direct problem reports and suggestions to:
427 N. Washington
Bloomington IN 47401 CompuServe [74415,1305]