diff --git a/_posts/2015-12-27-revisiting-os2.md b/_posts/2015-12-27-revisiting-os2.md
new file mode 100644
index 000000000..50c36febf
--- /dev/null
+++ b/_posts/2015-12-27-revisiting-os2.md
@@ -0,0 +1,42 @@
+---
+layout: post
+title: Revisiting OS/2
+date: 2015-12-27 11:00:00
+category: OS/2
+permalink: /blog/2015/12/27/
+machines:
+ - type: pc-dbg
+ id: ibm5170
+ config: /disks/pc/os2/ibm/1.0/machine.xml
+---
+
+Just for fun (because I have a warped sense of fun), I decided to revisit some of the old OS/2 software I wrote
+almost 30 years ago. But first, I need an OS/2 development environment.
+
+So I started with a clean install of IBM's OS/2 1.0 in the [8Mhz IBM PC AT](/disks/pc/os2/ibm/1.0/) machine
+below, by booting from the "IBM OS/2 1.0 (1.44M Install)" diskette in drive A and reformatting the machine's 20Mb
+drive C.
+
+Next, I installed the [MS OS/2 SDK 1.02](/disks/pc/tools/microsoft/os2/sdk/1.02/). This SDK was released around
+December 1987 and included a copy of Microsoft OS/2 1.0. I don't have any of the printed documentation that came
+with the SDK, such as the *Installation Guide*, but I do have the [Microsoft® Operating System/2 Programmer’s Toolkit](/docs/os2/microsoft/ptk/1.0/)
+from March 1988, thanks to the [OS/2 Museum](http://www.os2museum.com/).
+
+Aside from Microsoft's assembler (MASM) and C compiler, the SDK included some other useful tools, such as **SDKED**
+(SDK Editor), which was essentially an OS/2 port of Mark Zbikowski's **Z** editor that was used internally at
+Microsoft for many years. The same editor was later renamed to **M** and ultimately **PWB** (Programmer's Workbench).
+With the introduction of various Integrated Development Environment (IDE) products, such as Visual BASIC in 1991,
+Visual C++ in 1993, and Visual Studio in 1995, this stand-alone editor became obsolete, but in the 1980's, it was a
+valuable tool.
+
+You can learn more about [SDKED](/disks/pc/tools/microsoft/os2/sdk/1.02/#using-sdked) on the
+[MS OS/2 SDK 1.02](/disks/pc/tools/microsoft/os2/sdk/1.02/) page. I'll be adding a complete list of all the files
+that came with SDK to that page in the near future.
+
+To boot IBM OS/2 1.0 and tinker with the [SDK](/disks/pc/tools/microsoft/os2/sdk/1.02/), scroll down and
+click the "Run" button.
+
+{% include machine.html id="ibm5170" %}
+
+*[@jeffpar](http://twitter.com/jeffpar)*
+*December 27, 2015*
diff --git a/disks/pc/README.md b/disks/pc/README.md
index efd0a1d3f..7c71ceec7 100644
--- a/disks/pc/README.md
+++ b/disks/pc/README.md
@@ -76,7 +76,7 @@ that automatically run the software.
### Other Operating Systems
-* [CP/M-86 v1.1B](/disks/pc/cpm/1.1b/)
+* [CP/M-86 1.1B](/disks/pc/cpm/1.1b/)
* Minix 1.1
* PC/IX 1.0
* [Microport's AT&T UNIX System V-AT 2.3](/disks/pc/unix/microport/system-v/2.3/)
@@ -120,14 +120,14 @@ in [PC Tech Journal](/pubs/pc/magazines/pctj/).
* Microsoft Flight Simulator
-Learn more about
-[Disk Sets](https://github.com/jeffpar/pcjs/tree/master/disks/pc) in the
-[PCjs Project](https://github.com/jeffpar/pcjs) on [GitHub](https://github.com/).
-
### Other Games
* [Infocom Zork I](/disks/pc/games/infocom/zork1/)
+Learn more about
+[Disk Sets](https://github.com/jeffpar/pcjs/tree/master/disks/pc) in the
+[PCjs Project](https://github.com/jeffpar/pcjs) on [GitHub](https://github.com/).
+
{% if page.developer %}
### Developer Notes: Disk Sets and Manifests
diff --git a/disks/pc/os2/ibm/1.0/manifest.xml b/disks/pc/os2/ibm/1.0/manifest.xml
index 93d58ccdf..7ddb1f632 100644
--- a/disks/pc/os2/ibm/1.0/manifest.xml
+++ b/disks/pc/os2/ibm/1.0/manifest.xml
@@ -4,15 +4,15 @@
IBM OS/2 1.0
- OS/2 1.0 (1.44M Install)
+ IBM OS/2 1.0 (1.44M Install)
- OS/2 1.0 (1.44M Disk 1)
+ IBM OS/2 1.0 (1.44M Disk 1)
- OS/2 1.0 (1.44M Disk 2)
+ IBM OS/2 1.0 (1.44M Disk 2)
- OS/2 1.0 (1.44M Disk 3)
+ IBM OS/2 1.0 (1.44M Disk 3)
diff --git a/disks/pc/os2/ibm/1.1/manifest.xml b/disks/pc/os2/ibm/1.1/manifest.xml
index 1c630eab0..3a4fd42e0 100644
--- a/disks/pc/os2/ibm/1.1/manifest.xml
+++ b/disks/pc/os2/ibm/1.1/manifest.xml
@@ -3,24 +3,24 @@
IBM OS/2 1.1
- OS/2 1.1 (1.44M Install Disk)
+ IBM OS/2 1.1 (1.44M Install Disk)
- OS/2 1.1 (1.44M Disk 1)
+ IBM OS/2 1.1 (1.44M Disk 1)
- OS/2 1.1 (1.44M Disk 2)
+ IBM OS/2 1.1 (1.44M Disk 2)
- OS/2 1.1 (1.44M Disk 3)
+ IBM OS/2 1.1 (1.44M Disk 3)
- OS/2 1.1 (1.44M Disk 4)
+ IBM OS/2 1.1 (1.44M Disk 4)
- OS/2 1.1 (1.44M Devices Disk)
+ IBM OS/2 1.1 (1.44M Devices Disk)
- OS/2 1.1 (1.44M Printers Disk)
+ IBM OS/2 1.1 (1.44M Printers Disk)
diff --git a/disks/pc/os2/ibm/1.3/manifest.xml b/disks/pc/os2/ibm/1.3/manifest.xml
index 122ba5b91..593be5e93 100644
--- a/disks/pc/os2/ibm/1.3/manifest.xml
+++ b/disks/pc/os2/ibm/1.3/manifest.xml
@@ -3,33 +3,33 @@
IBM OS/2 1.3
- OS/2 1.3 (1.44M Disk 1)
+ IBM OS/2 1.3 (1.44M Disk 1)
- OS/2 1.3 (1.44M Disk 2)
+ IBM OS/2 1.3 (1.44M Disk 2)
- OS/2 1.3 (1.44M Disk 3)
+ IBM OS/2 1.3 (1.44M Disk 3)
- OS/2 1.3 (1.44M Disk 4)
+ IBM OS/2 1.3 (1.44M Disk 4)
- OS/2 1.3 (1.44M Disk 5)
+ IBM OS/2 1.3 (1.44M Disk 5)
- OS/2 1.3 (1.44M Disk 6)
+ IBM OS/2 1.3 (1.44M Disk 6)
- OS/2 1.3 (1.44M Disk 7)
+ IBM OS/2 1.3 (1.44M Disk 7)
- OS/2 1.3 (1.44M Disk 8)
+ IBM OS/2 1.3 (1.44M Disk 8)
- OS/2 1.3 (1.44M Disk 9)
+ IBM OS/2 1.3 (1.44M Disk 9)
- OS/2 1.3 (1.44M Disk 10)
+ IBM OS/2 1.3 (1.44M Disk 10)
diff --git a/disks/pc/os2/microsoft/1.0/manifest.xml b/disks/pc/os2/microsoft/1.0/manifest.xml
index 59a8926e3..2c2b5eb24 100644
--- a/disks/pc/os2/microsoft/1.0/manifest.xml
+++ b/disks/pc/os2/microsoft/1.0/manifest.xml
@@ -1,17 +1,17 @@
- MSOS210-INSTALL.img
+ MS OS/2 1.0
- MSOS210-INSTALL
+ MS OS/2 1.0 (1.2M Install)
- MSOS210-DISK1
+ MS OS/2 1.0 (1.2M Disk 1)
- MSOS210-DISK2
+ MS OS/2 1.0 (1.2M Disk 2)
- MSOS210-DISK3
+ MS OS/2 1.0 (1.2M Disk 3)
-
\ No newline at end of file
+
diff --git a/disks/pc/tools/microsoft/misc/root/Z.TXT b/disks/pc/tools/microsoft/misc/root/Z.TXT
new file mode 100755
index 000000000..e8b9fa58a
--- /dev/null
+++ b/disks/pc/tools/microsoft/misc/root/Z.TXT
@@ -0,0 +1,1848 @@
+
+
+
+
+
+
+
+ .
+
+
+
+
+
+
+
+
+
+
+
+ User's Guide to the Z Editor
+
+ Mark Zbikowski
+
+ 4 August 1986
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+ Starting Z..................................................... 1
+ Editing Functions.............................................. 4
+ Editing Switches and Flags.................................... 15
+ Keystroke Macros.............................................. 17
+ Index......................................................... 21
+ Revision History.............................................. 23
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Z User's Guide
Printed: November 5, 1986 11:52 AM
+
+
+
+
+ What is the Z editor?
+
+ Z is an editor, a program for creating and altering files.
+
+ The editor creates the file specified or copies an existing file from
+ disk into memory. Then when the file is "saved", the copy in Z
+ overwrites the copy on disk. The copy that was overlayed may be
+ retrieved with the UNDEL command (see UNDEL.HLP and also the "backup"
+ switch below).
+
+ Z makes your screen into a window on the file you are editing. The
+ window can move forwards or backwards to any point in the file. The
+ cursor identifies the focus of each edit operation.
+
+ The simplest editing operation is to move the cursor to the place you
+ want to change and start typing characters. What you type is stored in
+ the corresponding location in the copy of the file in Z. If you are in
+ INSERT mode, then the characters you type are inserted at the cursor
+ location instead of overwriting what is already there.
+
+ The editor interprets ASCII control characters and some ASCII character
+ sequences as commands. Each control character has an editing command
+ associated with it. You can change the association between editor
+ commands and control characters or character sequences with the
+ command.
+
+
+ Starting Z
+
+ Z uses several environment variables during its start-up. First, Z
+ looks for a file called TOOLS.INI by searching all the directories
+ contained in the USER environment variable. Contained in this TOOLS.INI
+ file are any customizations you wish to make to the editor function
+ assignments and editor switch settings. This file is optional. Starting
+ Z with the /D switch prevents TOOLS.INI from being read.
+
+ Z uses a scratch file during it execution. Normally, this file (Z.VM)
+ is created in the root directory on the default drive when Z is started.
+ If you want this file to be created elsewhere, for example on a ram-
+ drive, you may use the TMP environment variable to direct Z to place it
+ elsewhere. The TMP variable is also used to locate other temporary
+ files that Z uses.
+
+ The TOOLS.INI file is used to maintain configuration information. The
+ files are divided into sections by tags which are the name of a tool
+ surrounded by square brackets. In the case of the Z editor, the
+ following tags are used:
+
+ [z] following this tag should be general Z initialization
+
+ [z-x.y] following this tag should be Z initialization peculiar to a
+ particular version of MSDOS.
+
+
+
+
+
+
+
+
+
+ Z User's Guide
Printed: November 5, 1986 11:52 AM
+
+
+ For a sample of user initialization, see the TOOLS.INI file.
+
+ The definitions in these files have one of several forms. Below are the
+ forms and a description of each.
+
+ NAME=xx yy zz...
+
+ This assignment directs Z to view the sequence of characters xx yy zz
+ ... (in hexadecimal) as a single keystroke. This is often used for
+ naming function keys on your terminal.
+
+ NAME="chars"
+
+ Similar to the previous form except that the characters are named
+ explicitly. Quotes may be preceded with the "\" character to allow you
+ to enter them directly.
+
+ function:=function1 function2...
+
+ Defines a new function in terms of existing functions. This is called a
+ MACRO. When the new function is executed by Z, each function contained
+ in the definition is executed in order. Further information is
+ contained in the Keyboard Macros section below.
+
+ function:keys
+
+ Causes Z to execute the named function when the specified keys are read
+ from the keyboard. The keys are either a key name as defined above or a
+ sequence of characters to be used. Note that ^X in such a sequence
+ stands for CONTROL-X rather than up-arrow-X. You may have several keys
+ or key sequences assigned to a particular editing function, but you may
+ have ONLY one function on a key or sequence. A description of the
+ available editing functions is below.
+
+ switch:value
+
+ Set a particular configuration switch in Z to a value. See the
+ "switches and flags" section below for more information.
+
+ Anyway, when Z is through initializing, it attempts to read the file
+ specified on the command line. If Z was invoked without an argument, it
+ will attempt to read in the most recently edited file.
+
+ When the file has been read in, Z will display the file on the top 23
+ lines of the screen. The bottom two lines are used as follows:
+
+ The 24th line is used as a dialog line. Prompts and messages
+ appear on this line.
+
+ The 25th line is used as a status line. The information that
+ appears is (from left-to-right):
+
+ filename of file being edited
+ type of file (a guess based on the extension)
+
+
+
+ - 2 -
+
+
+
+
+
+ Z User's Guide
Printed: November 5, 1986 11:52 AM
+
+
+ the word modified, if you have changed the file
+ the length in lines of the file
+ the position in (row, column) form of the upper-left corner of the
+ screen relative to the first byte of the file. (1,1) is the top of
+ the file
+
+ Now for the interesting part. Normally, when a key sequence is
+ recognized by Z as being attached to an editing function, Z will execute
+ that function.
+
+ Most functions have a 'default' action which is unchangeable. You may
+ change this action by preceding the editing function with an argument
+ and/or a mode- function modifier.
+
+ Arguments are introduced by the editor function. When you enter
+ the function, Z will reverse the video at the current cursor
+ position. You may then enter the argument as follows:
+
+ A sequence of cursor movements:
+
+ If the cursor ends up on top of the then the argument is
+ called a nullarg and represents either the remainder of the
+ line up to (and possibly including the line break) or
+ represents the next space-terminated word on the line
+ depending on the editing function.
+
+ If the cursor ends up on the same line but on a different column,
+ the argument is called a streamarg and represents all text
+ from the leftmost of the and cursor up to one character
+ position to the left of the rightmost of the and cursor.
+
+ If the cursor ends up in the same column as the then the
+ argument is called a linearg and represents the range of lines
+ beginning with the line that contains the up to and
+ including the line that contains the cursor.
+
+ If the cursor ends up on a different line and column from the
+ , the arg is known as a boxarg and may represent either a
+ rectangle of text whose diagonal is delimited by the and
+ cursor or the sequence of characters beginning at the
+ uppermost of and cursor through the bottommost of
+ and cursor including the line breaks. This distinction is
+ made by the editing function itself.
+
+ You may also type normal characters. You are prompted, on the dialog
+ line, to enter an argument. The types of textual arguments are:
+
+ ASCII text. This is called a textarg. The argument to the
+ function is merely the text you have typed.
+
+ A number. This is called a numarg and is the same as if you had
+ moved the cursor either upward or downward the specified
+ number of lines.
+
+
+
+
+ - 3 -
+
+
+
+
+
+ Z User's Guide
Printed: November 5, 1986 11:52 AM
+
+
+ A bookmark. This is called a markarg. This is the same as if you
+ had moved the cursor to the bookmark position. To define a
+ bookmark, see the command.
+
+ The only mode-command modifier at the present is the command.
+ Its effect on each function is described in that function's description.
+
+
+ Editing Functions
+
+ Here is the current set of Z functions with a description of the allowed
+ arguments and a description of how they affect the command's operation.
+ Also, in each function description is the default assignment.
+
+ (^X) introduces an argument to modify a subsequent operation. To
+ cancel an , enter the command. There are no modifiers
+ or arguments allowed for this command.
+
+ (^^) makes a Z configuration change. An argument MUST be
+ specified and be of the form described for TOOLS.INI above:
+
+ linearg treats each line as a separate assignment or key
+ definition.
+
+ textarg treats textarg as an assignment or a key
+ definition.
+
+ nullarg treats the remainder of the line to the right of
+ the cursor but not including the line break as an assignment or a
+ key definition.
+
+ streamarg treats the outlined text as an assignment or a
+ key definition.
+
+ The special case of ? displays all the current keyboard
+ assignments.
+
+ (SHIFT-TAB) is a cursor movement function. It will move the
+ cursor leftward to the next tabstop. Tabstops are defined to be every
+ nth character where n is settable by the tabstops editor switch.
+ Being a cursor movement function, takes no arguments nor
+ mode-command modifiers.
+
+ (END) is a cursor movement function that places the cursor on
+ the first non-blank character on the line.
+
+ places the cursor on the first character position on
+ the line regardless of the contents of the line.
+
+ (^C) will cancel the current operation in progress. Depending
+ on your operating system, some of these operations may be completed
+ before the is read. will always cancel an argument
+ so it never takes an argument nor a mode-command modifier.
+
+
+
+
+ - 4 -
+
+
+
+
+
+ Z User's Guide
Printed: November 5, 1986 11:52 AM
+
+
+ (BACKSPACE or ^H) will attempt to delete the previous
+ character. Note that this function will NOT delete line breaks. For
+ that function, see the function below. If the cursor is
+ in column 1, will move the cursor to the previous line and
+ place it just to the right of the last character on that line. If
+ issued while an argument was being issued, is treated as a
+ cursor-left command. If issued in insert mode, will delete
+ the previous character from the line, reducing the length of the line
+ by 1. If there is nothing but whitespace on the line to the left of
+ the cursor, the cursor is placed in column 1 of the line. If the
+ cursor is beyond the last non- whitespace character on the line, it is
+ moved to the character immediately to the right of the end of line.
+ Otherwise, the cursor is moved one position to the left and a space
+ replaces the character under the cursor.
+
+ (^U) is used to perform background compilations and to review
+ error messages from them.
+
+ will read the next error message and attempt to parse it
+ into file, row, column and message. If it is successful, Z will
+ read in the file, place the cursor on the appropriate row and
+ column, and display the message on the dialog line.
+ currently works with GREP, Lattice C, Microsoft C, and the C-based
+ Microsoft Assembler.
+
+ will read error messages and advance to the first
+ message that is NOT for the current file.
+
+ nullarg will attempt to compile the current file,
+ resulting in the current file being compiled and linked. The
+ command and arguments used to compile the file are determined by
+ the extension of the file and can be changed by the extmake: switch
+ .
+
+ textarg uses a special command and arguments to compile
+ the specified text. This can be changed by using the extmake:
+ switch with extension "text".
+
+ streamarg as above but uses the text selected on the
+ screen as the arguments for the command.
+
+ textarg will invoke the text as a program. The
+ program is assumed to display its errors in file row column message
+ format. This is often useful to find text in a series of files by
+ using GREP:
+ grep /l pat files ; zibo grep
+ grep -n pat files ; *NIX grep
+
+ (ALT-D) is a predefined macro that will insert the current
+ date at the current cursor position.
+
+ is a predefined macro that will insert the current day at the
+ current cursor position.
+
+
+
+
+ - 5 -
+
+
+
+
+
+ Z User's Guide
Printed: November 5, 1986 11:52 AM
+
+
+ is a predefined macro that is the extension of the most
+ recently switched file.
+
+ is a predefined macro that is the file name of the most
+ recently switched file.
+
+ (ALT-T) is a predefined macro that will insert the current
+ time at the current cursor position.
+
+ is a predefined macro that will insert the name of the current
+ user at the current cursor position. This uses the MAILNAME
+ environment variable.
+
+ (DOWN arrow) is a cursor movement function that moves the cursor
+ to the line below the current one. If this results in the cursor
+ moving off the bottom of the screen, the window is adjusted
+ appropriately. Being a cursor movement function, takes no
+ arguments.
+
+ moves the cursor to the same column position but to the
+ last displayed line on the current window.
+
+ (CTRL-BACKSPACE) behaves identically to except
+ that at the beginning of a line while in insert mode, will
+ delete the line break between the current line and the previous line,
+ joining the two lines together.
+
+ (unassigned) behaves identically to except that
+ when in insert mode, it will break the current line at the current
+ cursor position.
+
+ (PGDN) moves the cursor beyond the last character on a line.
+
+ moves the cursor to the column corresponding to the
+ right- most edge of the screen.
+
+ (F9) is used to terminating an editing session. There are
+ editing flags and switches that modify the behaviour of the
+ command: askexit/noaskexit, backup, entab, tmpsav (see Editing
+ Switches and Flags section).
+
+ saves the current file if it has been modified. Z saves its
+ temporary file and scans the set of in-core files. If any are
+ modified, Z will ask you to confirm the exit.
+
+ is identical to except that it skips the save of
+ the current file. See for details of the saving
+ operation.
+
+ is identical to except that Z does not exit but
+ advances to the next file on the command line.
+
+ is identical to except that Z does not
+ save the current file.
+
+
+
+ - 6 -
+
+
+
+
+
+ Z User's Guide
Printed: November 5, 1986 11:52 AM
+
+
+ (HOME) is a cursor movement function that places the cursor in
+ the upper-left-hand corner of the current window.
+
+ (F1) saves the current file and 's to the
+ information file which contains a list of all files in core along with
+ the current set of files that you have edited. The size of this list
+ is controlled by the tmpsav switch.
+
+ (F2) causes Z to reread the user configuration files. This
+ is useful when initially configuring your editor and when attempting
+ to use someone else's keyboard assignments.
+
+ rereads all the Z switches for the user configuration
+ files.
+
+ text rereads all the Z switches for the system and
+ reads the user switches from the section of the user's TOOLS.INI
+ that is tagged [Z- text].
+
+ (^N) toggles the state of the insert mode switch. This
+ switch is easily seen on the right hand side of the status line. When
+ insert mode is on, each graphic character is inserted at the current
+ cursor position, the remainder of the line is shifted one character to
+ the right and the cursor is advanced one position. Note, however,
+ that the function is NOT a graphic character and does NOT
+ cause insertion of a line break. For this, please see the
+ function. Z normally is started in overstrike mode. You can use the
+ editor flag enterinsmode to cause Z to begin execution in insert mode.
+
+ (^F) deletes a range of lines or a box within a series of
+ lines.
+
+ deletes the current line and places it into the pick buffer.
+
+ deletes from the cursor up to the end of line and
+ places that text into the pick buffer. Note that it does not join
+ the current line with the next line.
+
+ linearg deletes all lines specified and places the block
+ into the pick buffer.
+
+ boxarg deletes the box specified from the file and
+ places it into the pick buffer.
+
+ streamarg deletes the specified characters (treated as a
+ box one line high).
+
+ (LEFT arrow) moves the cursor one position to the left. If this
+ results in the cursor being off the screen, then the window is
+ adjusted appropriately by scrolling a number of columns defined by the
+ hscroll editor switch.
+
+ moves the cursor to the leftmost position on the screen.
+
+
+
+
+ - 7 -
+
+
+
+
+
+ Z User's Guide
Printed: November 5, 1986 11:52 AM
+
+
+ (^D) inserts blank lines.
+
+ inserts one blank line underneath the cursor.
+
+ inserts or deletes blanks at the beginning of a line to
+ make the first non-blank character appear under the cursor.
+
+ linearg inserts the indicated range of blank lines.
+
+ boxarg inserts an empty box in the indicated range.
+
+ streamarg inserts an empty region (treated as a box one
+ line high).
+
+ (^P) goes to a specified spot in a file.
+
+ goes to beginning of file.
+
+ restores the screen to its previous location. Z remembers
+ only one previous location. is used to flip between
+ two viewpoints in the file.
+
+ numarg moves the cursor to the beginning of the specified
+ line.
+
+ text defines a bookmark at the current cursor
+ location. That bookmark can now be addressed with the specified
+ textual name.
+
+ text moves the cursor to the indicated bookmark. If it was
+ not previously defined, Z will use the editor switch markfile to
+ find a file that contains bookmark definitions. This file contains
+ lines of the form: bookmark file row column
+
+ (ESC) is a function modifier. It is used to prefix functions to
+ change their behaviour. See the individual function description for
+ more information.
+
+ (^W) adjusts the window on the file a few lines towards the
+ beginning of the file.
+
+ adjusts the window backwards in the file. The number of
+ lines it is moved is determined by the editor switch vscroll.
+
+ moves the window until the line that the cursor is on is
+ at the bottom of the screen.
+
+ numarg moves the window backwards the specified number of
+ lines.
+
+ (^Q) moves the window back by pages.
+
+ moves the window backwards in the file by one screen's worth
+ of lines.
+
+
+
+ - 8 -
+
+
+
+
+
+ Z User's Guide
Printed: November 5, 1986 11:52 AM
+
+
+ moves the window all the way back to the beginning of the
+ file.
+
+ numarg moves the window the specified number of pages
+ backward in the file.
+
+ (CTRL-PGUP) moves the cursor backwards by paragraphs.
+ Paragraphs are blocks of text separated by blank lines.
+
+ moves the cursor backwards one paragraph and places the cursor
+ on the first line of the paragraph
+
+ moves the cursor backwards one paragraph and places the
+ cursor just beyond the last line of the paragraph.
+
+ (^E) searches backwards in a file for a string or a regular
+ expression. If the editor switch case is set then case is significant
+ in the search otherwise case is ignored.
+
+ searches backwards for the previously defined string or
+ pattern. If the string/pattern is found, then the window is moved
+ to display it and the matched string/pattern is highlighted. If it
+ was not found, no cursor movement takes place.
+
+ streamarg searches backwards for the selected text. In
+ this case, the text is treated as a simple string.
+
+ text searches backwards for the text. In this case, the
+ text is treated as a simple string.
+
+ streamarg
+ text searches backwards for a regular expression.
+
+ The patterns that Z understands are called "regular expressions".
+ These are true regular expressions (plus some optimizations) rather
+ than the much-weakened form that is used on the *NIX xGREPs.
+
+ The simplest form of regular expression is just a string, like
+ "hello". This pattern will match occurrences of the word "hello", or
+ substrings of words like "othello". It will even match the string
+ "Hello" if the nocase editor switch is given. Most characters in a
+ regular expression match themselves, but some characters (one of
+ "{}()[]!~:?^$+*@#") have a special meaning to the pattern matcher.
+ These special characters are used to specify more complex patterns:
+
+ \ "escape"; ignore the special meaning of the next character and just
+ match that character. "\?" matches the question-mark and "\\"
+ matches a single backslash.
+
+ ? "wildcard"; match any character.
+
+ [class] "character class"; this is used to match one of a set of
+ characters. "[abc]" matches an "a", "b", or "c". The character "-"
+
+
+
+
+ - 9 -
+
+
+
+
+
+ Z User's Guide
Printed: November 5, 1986 11:52 AM
+
+
+ is used here to specify a range of characters; "[a-zA-z0-9]"
+ matches a letter or a number.
+
+ [~class] "not character class"; this is used to match a character
+ that is NOT in the specified set of characters.
+
+ ^ "beginning of line"; this matches or "anchors" a pattern to the
+ beginning of the line.
+
+ $ "end of line"; matches the end of a line.
+
+ In the following, X denotes some regular expression:
+
+ X* "closure"; this matches zero or more occurrences of the pattern X.
+ It will match as few X's as it can, e.g. if the pattern is "?*ab"
+ then it will match the first "ab" in "abababab". If the pattern is
+ "?*ab$", then it will match the entire string "abababab", with the
+ "?*" portion of the pattern matching "ababab".
+
+ X+ "plus"; this is just a shorthand for XX+. It will match one or
+ more occurrences of the pattern X.
+
+ X@ "greedy closure"; this matches zero or more occurrences of the
+ pattern X, but it starts out by matching as many X's as it can. and
+ backs off on this choice ONLY if the rest of the pattern doesn't
+ match. So, the pattern "?@ab" will match the whole string
+ "abababab", unlike "?*ab" above.
+
+ X# "greedy plus"; a shorthand for XX@.
+
+ (X1!X2!...!Xn) "alternation"; this will match either X1, or X2, ...
+ or Xn. It tries them in that order and it will switch from Xi to
+ Xi+1 only if the rest of the pattern fails to match.
+
+ ~X "not" or "guard"; this pattern matches nothing, but it checks to
+ see if the string matches X at this point, and fails if it does.
+ For example, "^~(foo!bar)?*$" will match all lines that don't begin
+ with "foo" or "bar".
+
+ X^n "power"; this pattern matches exactly n copies of X.
+
+ The following commonly used patters are defined for your typing
+ convenience. To use them, just put : in your pattern:
+
+ :a [a-zA-Z0-9] alphanumeric
+ :b ([ \t]#) whitespace
+ :c [a-zA-Z] alphabetic
+ :d [0-9] digit
+ :f ([~ "\[\]\:<|>+=;,.]#) file part
+ :h ([0-9a-zA-Z]#) hex number
+ :i ([a-zA-Z_$][a-zA-Z0-9_$]@) identifier
+ :n ([0-9]#.[0-9]@![0-9]@.[0-9]#![0-9]#) number
+ :p (([a-z]\:!)(\\!)(:f(.:f!)\\)@:f(.:f!)) path
+ :q ("[~"]@"!'[~']@') quoted string
+
+
+
+ - 10 -
+
+
+
+
+
+ Z User's Guide
Printed: November 5, 1986 11:52 AM
+
+
+ :w ([a-zA-Z]#) word
+ :z ([0-9]#) integer
+
+ (unassigned) moves the cursor backwards by words.
+
+ moves the cursor backwards one word and places the cursor on
+ the beginning of the word.
+
+ moves the cursor backwards one word and places the
+ cursor just beyond the end of the word.
+
+ (ENTER or ^M) moves the cursor to a new line.
+
+ moves the cursor to the beginning of the next line. If the
+ editor switch softcr is set, then Z will attempt to place the
+ cursor on a meaningfully tabbed-in position based on the type of
+ file. If the file is a C program, then Z will attempt to correctly
+ tab in based on continuation of lines and on open blocks.
+ Otherwise, if the next line is blank, Z will place the cursor in
+ the column corresponding to the first non-blank character in the
+ previous line. If all else fails, Z places the cursor on the first
+ non-blank character of the line.
+
+ moves the cursor to the real beginning of the next
+ line.
+
+ (^V) balances parenthesis and brackets.
+
+ scans backwards through the file balancing parenthesis and
+ brackets. When the first unbalanced one is found, the matching
+ character is placed into the file at the cursor position. If it is
+ found in the visible window, Z will alter its color for a short
+ interval. If it is found and it is not visible, Z will display the
+ matching line on the dialog line.
+
+ scans forward for unbalanced characters.
+
+ (^K) grabs text from the file and places it into the pick buffer.
+ This allows simple copy-and-paste operations.
+
+ places the current line into the pick buffer.
+
+ places the text from the current cursor position up to the
+ end-of- line into the pick buffer. Note that the line break is not
+ picked up.
+
+ linearg places the specified range of lines into the pick
+ buffer.
+
+ boxarg places the text of specified box into the pick
+ buffer.
+
+ text places the text into the pick buffer.
+
+
+
+
+ - 11 -
+
+
+
+
+
+ Z User's Guide
Printed: November 5, 1986 11:52 AM
+
+
+ numarg places the specified range of lines into the pick
+ buffer.
+
+ markarg places the range of text between the cursor and the
+ location of the bookmark into the pick buffer.
+
+ (^T) adjusts the window on the file a few lines towards the end
+ of the file.
+
+ adjusts the window forward in the file. The number of lines
+ it is moved is determined by the editor switch vscroll.
+
+ moves the window until the line that the cursor is on is
+ at the top of the screen.
+
+ numarg moves the window forward the specified number of
+ lines.
+
+ (^L) moves the window forward by pages.
+
+ moves the window forwards in the file by one screen's worth of
+ lines.
+
+ moves the window all the way to the end of the file.
+
+ numarg moves the window the specified number of pages
+ forward in the file.
+
+ (CTRL-PGDN) moves the cursor forwards by paragraphs. Paragraphs
+ are blocks of text separated by blank lines.
+
+ moves the cursor forwards one paragraph and places the cursor
+ on the first line of the paragraph
+
+ moves the cursor forwards one paragraph and places the
+ cursor just beyond the last line of the paragraph.
+
+ (^R) searches forwards in a file for a string or a regular
+ expression. See for the definition of the regular expression
+ patterns.
+
+ searches forwards for the previously defined string or
+ pattern. If the string/pattern is found, then the window is moved
+ to display it and the matched string/pattern is highlighted. If it
+ was not found, no cursor movement takes place.
+
+ streamarg searches forwards for the selected text. In
+ this case, the text is treated as a simple string.
+
+ text searches forwards for the text. In this case, the
+ text is treated as a simple string.
+
+ streamarg
+ text searched forwards for a regular expression.
+
+
+
+ - 12 -
+
+
+
+
+
+ Z User's Guide
Printed: November 5, 1986 11:52 AM
+
+
+ (^Z) runs the command shell. Depending on the OS, you either get
+ COMMAND.COM or SH.
+
+ saves the current file and runs the shell.
+
+ does not save the current file and runs the shell. See
+ for a description of the save operation.
+
+ uses the text on the screen from the cursor up to end-of-
+ line as a command to the shell.
+
+ text uses the text as a command to the shell.
+
+ (^G) inserts the text of the pick buffer into the file beginning
+ at the current cursor position. The insertion depends on the type of
+ text stored in the pick buffer:
+
+ text
+
+ streamarg places the specified text into the pick buffer and
+ inserts the specified text at the current cursor position.
+
+ text interprets text as a filename and will insert the
+ contents of the specified file into the current file at the current
+ cursor position.
+
+ lines are inserted directly before the cursor and do not break the
+ line. boxes are inserted in the current line and all succeeding lines.
+ streams break the current line and are inserted at the cursor.
+
+ (unassigned) moves the cursor forwards by words.
+
+ moves the cursor forwards one word and places the cursor on
+ the beginning of the word.
+
+ moves the cursor forwards one word and places the cursor
+ just beyond the end of the word.
+
+ (CTRL-ENTER or ^J) performs global search and replace but
+ prompts for confirmation of each replacement. See .
+
+ (unassigned) reads one keystroke from the keyboard and treats it
+ literally. This is useful for inserting text into a file that happens
+ to be assigned to an editor function.
+
+ (F10) reloads or discards the current file.
+
+ prompts and rereads the file from disk, discarding all
+ edits.
+
+ prompts and discards the file from the editor memory.
+
+ (^O) performs global search and replace. The editor switch
+ case indicates whether case is significant for comparison.
+
+
+
+ - 13 -
+
+
+
+
+
+ Z User's Guide
Printed: November 5, 1986 11:52 AM
+
+
+
+
+ perform simple search and replace, prompting you for the search
+ string and for the replacement string. The search begins at the
+ cursor position and continues through the end of file.
+
+ linearg performs the search and replace on the specified
+ line range.
+
+ numarg performs the search and replace on the specified
+ line range.
+
+ boxarg performs the search and replace within the
+ specified box.
+
+ markarg performs the search and replace between the
+ cursor and the specified bookmark.
+
+
+ linearg
+ numarg
+