Home » Archimedes archive » Archimedes World » AW-1994-06-Disc2.adf » Disk2Jun94 » !AWJune94/Goodies/Zap/!Zap/3rdParty/CModeHelp

!AWJune94/Goodies/Zap/!Zap/3rdParty/CModeHelp

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Archimedes World » AW-1994-06-Disc2.adf » Disk2Jun94
Filename: !AWJune94/Goodies/Zap/!Zap/3rdParty/CModeHelp
Read OK:
File size: 2242 bytes
Load address: 0000
Exec address: 0000
File contents
This is the ReadMe file for ZapCMode 0.20

	� Bryan Scattergood (03-Mar-1994)

This is an extension mode for Zap.  It requires Zap 0.91 or later.  It adds
simple bracket matching and automatic indent to the standard Text mode in Zap
to create a mode suitable for editing C, Pascal, Tex, LaTex and Gofer.  It
does *not* add bracket matching to BASIC mode.

It also adds a C function browser and function search commands, in the style
of Martin Ebourne's derivative of CMode 0.03 (which he called 0.10).  It now
supports a simplified version of his compilation command.

The distribution conditions of ZapCMode are the same as those for Zap, with
one exception; you do not need my permission to copy ZapCMode if you have
Dominic Symes' permission to copy Zap.  Thus, ZapCMode is freeware and those
wishing to distribute it on a cover disk need only contact Dom for
permission.


Installation
============

1. Check your version of Zap is >= 0.91 (in the Info box).
2. Copy the ZapCMode module into the !Zap directory.
3. Add the line
	RMLoad <Zap$Dir>.ZapCMode
   after the line
   	RMLoad <Zap$Dir>.ZapBasic
   in the !Zap.!Run file, if it is not already present.
4. Restart your copy of Zap.


The menu
========

The mode adds the following menu on the Zap Mode menu.

....	+----------+
CMode =>| Pause  =>|
....	| Indent =>|
	| Match  =>|
	| C        |
	| Tex      |
	| Gofer    |
	+----------+
	
The pause option sets the delay in centiseconds when the cursor is moved back
to the open bracket after a close bracket is typed.  The field can be set to
any value between 0 and 255 inclusive.

The indent option sets the relative indent of lines following an open brace
('{').  The field can be set to any value between 0 and 31 inclusive.  The
indent is relative to the start of the line containing the open brace, and
consists of space characters.  Setting to 0 gives the same indent as
AutoIndent on the lines following open braces.

The Match menu controls which 'bracket' characters are matched.

	+-------+	
	|  { }  |
	|  [ ]  |
	|  ( )  |
	|  ` '  |
	|  " "  |
	|  $ $  |
	| $$ $$ |
	|  ` `  |
	+-------+	
	
The three sets of brackets are generally useful, as are the double quotes.
The single quotes, and dollar patterns are useful for TeX, while the
backquote is used in Gofer for turning functions into infix operators.

The remaining three options on the main menu select commonly used sets
of options for the Match menu.

The keyboard
============

To enter CMode from the keyboard, with the default keymap, use scF8. In this
version, the function browser is invoked using SAVEANDRUN, bound to scE in
the standard keymap.  The bounce function is bound to BASIC, which is scB. 
The next/previous function commands are on RUNANDQUIT and RUN respectively,
normally scF and scU. The function lister is bound to scH as in BASIC mode.
The compile entry point is on scC.

Overloadings of the basic mode entry points may be removed in later versions;
they are no longer necessary given the keymaps of Zap 0.91 and later.


The commands
============

Some of these keys are also available via other entry points and so are
bound in the standard keymap to the indicated keys.

C_LIST_FUNCTIONS				(SAVEANDRUN, scE)

Pops up a function browser on the current buffer.  As usual with throwback
buffers, double click will jump to the corresponding location in the original
buffer.  The throwback buffer will not be displayed if no functions can be
found.

C_PREV_FUNCTION					(RUN, scU)
C_NEXT_FUNCTION					(RUNANDQUIT, scF)

These step to the next function definition in the appropriate direction.

C_COMPILE					(COMPILE, scC)

Looks up one directory for a Makefile, and does a DataOpen broadcast if
it finds one; this is only successful if !Make is already loaded.

C_BOUNCE					(BASIC, scB)

This bounces back to the open corresponding to the close character under
the cursor.

C_SET_PAUSE n
C_SET_INDENT n

These set the pause delay and indent step (the writable menu items)
to the corresponding value.

C_MODE
TEX_MODE
GOFER_MODE

Switch the buffer to CMode, and set the match flags appropriately.


Bugs and suggestions
====================

First, the standard disclaimer:

This program is provided "as is", without any warranty of any kind. The
entire risk as to its quality and performance is with you.  In no event will
I be liable for damages arising from the use of this program.

Having said that, CMode has been under test (in various versions) for several
months and is coded fairly defensively.  If you manage to find any bugs,
especially serious ones, then contact me as soon as possible and I'll try
to fix it.

Similarly, suggestions are welcome, although many of the usual requests are
not possible with the current version of Zap without insane amounts of work.

I can be contacted as

	jbs@uk.ac.ox.prg
	
or by post as

	Bryan Scattergood
	The Queens College
	Oxford
	OX1 4AW

both addresses being good until September 1994.  After then, post sent to the
above address should reach me eventually.

Acknowledgements
================

Thanks must obviously go to Dominic Symes, firstly for creating Zap and
secondly for answering my (numerous) questions about writing extension modes.
Thanks must also go to the many members of the Oxford Arc User Group who
pushed this from being a prototype supporting only C, to a configurable
stable product supporting C, TeX and Gofer.  Their efficiency at finding
some of the more subtle bugs was especially valuable.

This version of CMode incorporates some ideas first implemented by Martin
Ebourne in his CMode, which in turn used code from CMode 0.03.  In doing
so it fixes some bugs in the function browser code.


Version history
===============

0.01
0.02

Early prototype versions for testing by the Oxford Arc User Group.

0.03

Simple version matching {}, () and [] unconditionally.  Released with Zap
0.90 by Dominic Symes.

0.04

Added simple $..$ matching for Dom.

0.05

Add quote matching and $$..$$, together with Match menu item to
allow for configuration for different languages.

0.06

Cleaned up sources, creating a separate library to share with other modes,
and changed to use w_tabc rather than wiring in character 9.

0.07

Added bounce command as BASIC, (so on scB).

0.08

Added code to remove delay on bounce when the user types ahead.

0.09

Added accelerators for commonly used Match combinations; TeX, C and Gofer.

0.10

Added function searching and browsing, together with incomplete command
interface.

0.11

Allow tabs and spaces after the open brace when indenting on a return.
Use Zap_BaseMode, rather than Zap_CallBaseMode.
Moved C_LIST_FUNCTIONS onto e_listfns vector.
Fixed glitch in function browser (scanner now handles '{' properly).
Fixed the bounce bug introduced in 0.08; the delay for the display when
bouncing was essentially random, and usually very small.

0.12 (Released with Zap 1.0)

Fixed mistake with function browser when no functions present; tried to clear
modify bit without checking whether throwback buffer had been generated.

0.13 (Not released; checkpoint version before 0.14)

Modified recogniser to make the code more K&R friendly; essentially allow
semicolon between the closing parenthesis and opening brace of a potential
function body provided (a) there was some non white-space before and it
and (b) there was only white space after it.

0.14

Changed the recogniser still further so that preprocessor directives are
skipped (and so correspond to whitespace).  This allows the idiom below,
which is fairly common in code which must support both K&R and ANSI C
compilers.

	#ifdef __ANSI__
	void foo(int x)
	#else
	void foo(x)
	int x;
	#endif /* <- this is now skipped */
	{
	  /* Wibble */
	}

This also means that macro definitions involving blocks are no longer
recognised as well, so that

	#define swap(x, y) { int t = x; x = y; y = t; }
	
is no longer considered a function definition (it was previously).

0.15

(Alex) Character literals and strings are no longer scanned within comments.
This prevents a comment like /* This " comment */ from losing all the
subsequent functions in the file.

0.16

Add a beep when the function browser fails to find any functions as feedback
that the button was pressed.

0.17

Add a minimal compile command; it simply broadcasts a DataOpen on the
Makefile, if it exists.

0.18

Revise source code layout in library area, and modify library loading
to match.  No functional changes.

0.19	Development version

Augmented the compile command to scan for ZapCompile:, and added ZapInitial:
processing.  Added the *_MODE commands for use with Initial:.

0.20	

Removed the ZapInitial and ZapCompile prototypes: abandon initial as too
vulnerable to attack by Trojans, and ZapCompile needs much more work.
00000000  0a 54 68 69 73 20 69 73  20 74 68 65 20 52 65 61  |.This is the Rea|
00000010  64 4d 65 20 66 69 6c 65  20 66 6f 72 20 5a 61 70  |dMe file for Zap|
00000020  43 4d 6f 64 65 20 30 2e  32 30 0a 0a 09 a9 20 42  |CMode 0.20.... B|
00000030  72 79 61 6e 20 53 63 61  74 74 65 72 67 6f 6f 64  |ryan Scattergood|
00000040  20 28 30 33 2d 4d 61 72  2d 31 39 39 34 29 0a 0a  | (03-Mar-1994)..|
00000050  54 68 69 73 20 69 73 20  61 6e 20 65 78 74 65 6e  |This is an exten|
00000060  73 69 6f 6e 20 6d 6f 64  65 20 66 6f 72 20 5a 61  |sion mode for Za|
00000070  70 2e 20 20 49 74 20 72  65 71 75 69 72 65 73 20  |p.  It requires |
00000080  5a 61 70 20 30 2e 39 31  20 6f 72 20 6c 61 74 65  |Zap 0.91 or late|
00000090  72 2e 20 20 49 74 20 61  64 64 73 0a 73 69 6d 70  |r.  It adds.simp|
000000a0  6c 65 20 62 72 61 63 6b  65 74 20 6d 61 74 63 68  |le bracket match|
000000b0  69 6e 67 20 61 6e 64 20  61 75 74 6f 6d 61 74 69  |ing and automati|
000000c0  63 20 69 6e 64 65 6e 74  20 74 6f 20 74 68 65 20  |c indent to the |
000000d0  73 74 61 6e 64 61 72 64  20 54 65 78 74 20 6d 6f  |standard Text mo|
000000e0  64 65 20 69 6e 20 5a 61  70 0a 74 6f 20 63 72 65  |de in Zap.to cre|
000000f0  61 74 65 20 61 20 6d 6f  64 65 20 73 75 69 74 61  |ate a mode suita|
00000100  62 6c 65 20 66 6f 72 20  65 64 69 74 69 6e 67 20  |ble for editing |
00000110  43 2c 20 50 61 73 63 61  6c 2c 20 54 65 78 2c 20  |C, Pascal, Tex, |
00000120  4c 61 54 65 78 20 61 6e  64 20 47 6f 66 65 72 2e  |LaTex and Gofer.|
00000130  20 20 49 74 0a 64 6f 65  73 20 2a 6e 6f 74 2a 20  |  It.does *not* |
00000140  61 64 64 20 62 72 61 63  6b 65 74 20 6d 61 74 63  |add bracket matc|
00000150  68 69 6e 67 20 74 6f 20  42 41 53 49 43 20 6d 6f  |hing to BASIC mo|
00000160  64 65 2e 0a 0a 49 74 20  61 6c 73 6f 20 61 64 64  |de...It also add|
00000170  73 20 61 20 43 20 66 75  6e 63 74 69 6f 6e 20 62  |s a C function b|
00000180  72 6f 77 73 65 72 20 61  6e 64 20 66 75 6e 63 74  |rowser and funct|
00000190  69 6f 6e 20 73 65 61 72  63 68 20 63 6f 6d 6d 61  |ion search comma|
000001a0  6e 64 73 2c 20 69 6e 20  74 68 65 20 73 74 79 6c  |nds, in the styl|
000001b0  65 0a 6f 66 20 4d 61 72  74 69 6e 20 45 62 6f 75  |e.of Martin Ebou|
000001c0  72 6e 65 27 73 20 64 65  72 69 76 61 74 69 76 65  |rne's derivative|
000001d0  20 6f 66 20 43 4d 6f 64  65 20 30 2e 30 33 20 28  | of CMode 0.03 (|
000001e0  77 68 69 63 68 20 68 65  20 63 61 6c 6c 65 64 20  |which he called |
000001f0  30 2e 31 30 29 2e 20 20  49 74 20 6e 6f 77 0a 73  |0.10).  It now.s|
00000200  75 70 70 6f 72 74 73 20  61 20 73 69 6d 70 6c 69  |upports a simpli|
00000210  66 69 65 64 20 76 65 72  73 69 6f 6e 20 6f 66 20  |fied version of |
00000220  68 69 73 20 63 6f 6d 70  69 6c 61 74 69 6f 6e 20  |his compilation |
00000230  63 6f 6d 6d 61 6e 64 2e  0a 0a 54 68 65 20 64 69  |command...The di|
00000240  73 74 72 69 62 75 74 69  6f 6e 20 63 6f 6e 64 69  |stribution condi|
00000250  74 69 6f 6e 73 20 6f 66  20 5a 61 70 43 4d 6f 64  |tions of ZapCMod|
00000260  65 20 61 72 65 20 74 68  65 20 73 61 6d 65 20 61  |e are the same a|
00000270  73 20 74 68 6f 73 65 20  66 6f 72 20 5a 61 70 2c  |s those for Zap,|
00000280  20 77 69 74 68 0a 6f 6e  65 20 65 78 63 65 70 74  | with.one except|
00000290  69 6f 6e 3b 20 79 6f 75  20 64 6f 20 6e 6f 74 20  |ion; you do not |
000002a0  6e 65 65 64 20 6d 79 20  70 65 72 6d 69 73 73 69  |need my permissi|
000002b0  6f 6e 20 74 6f 20 63 6f  70 79 20 5a 61 70 43 4d  |on to copy ZapCM|
000002c0  6f 64 65 20 69 66 20 79  6f 75 20 68 61 76 65 0a  |ode if you have.|
000002d0  44 6f 6d 69 6e 69 63 20  53 79 6d 65 73 27 20 70  |Dominic Symes' p|
000002e0  65 72 6d 69 73 73 69 6f  6e 20 74 6f 20 63 6f 70  |ermission to cop|
000002f0  79 20 5a 61 70 2e 20 20  54 68 75 73 2c 20 5a 61  |y Zap.  Thus, Za|
00000300  70 43 4d 6f 64 65 20 69  73 20 66 72 65 65 77 61  |pCMode is freewa|
00000310  72 65 20 61 6e 64 20 74  68 6f 73 65 0a 77 69 73  |re and those.wis|
00000320  68 69 6e 67 20 74 6f 20  64 69 73 74 72 69 62 75  |hing to distribu|
00000330  74 65 20 69 74 20 6f 6e  20 61 20 63 6f 76 65 72  |te it on a cover|
00000340  20 64 69 73 6b 20 6e 65  65 64 20 6f 6e 6c 79 20  | disk need only |
00000350  63 6f 6e 74 61 63 74 20  44 6f 6d 20 66 6f 72 0a  |contact Dom for.|
00000360  70 65 72 6d 69 73 73 69  6f 6e 2e 0a 0a 0a 49 6e  |permission....In|
00000370  73 74 61 6c 6c 61 74 69  6f 6e 0a 3d 3d 3d 3d 3d  |stallation.=====|
00000380  3d 3d 3d 3d 3d 3d 3d 0a  0a 31 2e 20 43 68 65 63  |=======..1. Chec|
00000390  6b 20 79 6f 75 72 20 76  65 72 73 69 6f 6e 20 6f  |k your version o|
000003a0  66 20 5a 61 70 20 69 73  20 3e 3d 20 30 2e 39 31  |f Zap is >= 0.91|
000003b0  20 28 69 6e 20 74 68 65  20 49 6e 66 6f 20 62 6f  | (in the Info bo|
000003c0  78 29 2e 0a 32 2e 20 43  6f 70 79 20 74 68 65 20  |x)..2. Copy the |
000003d0  5a 61 70 43 4d 6f 64 65  20 6d 6f 64 75 6c 65 20  |ZapCMode module |
000003e0  69 6e 74 6f 20 74 68 65  20 21 5a 61 70 20 64 69  |into the !Zap di|
000003f0  72 65 63 74 6f 72 79 2e  0a 33 2e 20 41 64 64 20  |rectory..3. Add |
00000400  74 68 65 20 6c 69 6e 65  0a 09 52 4d 4c 6f 61 64  |the line..RMLoad|
00000410  20 3c 5a 61 70 24 44 69  72 3e 2e 5a 61 70 43 4d  | <Zap$Dir>.ZapCM|
00000420  6f 64 65 0a 20 20 20 61  66 74 65 72 20 74 68 65  |ode.   after the|
00000430  20 6c 69 6e 65 0a 20 20  20 09 52 4d 4c 6f 61 64  | line.   .RMLoad|
00000440  20 3c 5a 61 70 24 44 69  72 3e 2e 5a 61 70 42 61  | <Zap$Dir>.ZapBa|
00000450  73 69 63 0a 20 20 20 69  6e 20 74 68 65 20 21 5a  |sic.   in the !Z|
00000460  61 70 2e 21 52 75 6e 20  66 69 6c 65 2c 20 69 66  |ap.!Run file, if|
00000470  20 69 74 20 69 73 20 6e  6f 74 20 61 6c 72 65 61  | it is not alrea|
00000480  64 79 20 70 72 65 73 65  6e 74 2e 0a 34 2e 20 52  |dy present..4. R|
00000490  65 73 74 61 72 74 20 79  6f 75 72 20 63 6f 70 79  |estart your copy|
000004a0  20 6f 66 20 5a 61 70 2e  0a 0a 0a 54 68 65 20 6d  | of Zap....The m|
000004b0  65 6e 75 0a 3d 3d 3d 3d  3d 3d 3d 3d 0a 0a 54 68  |enu.========..Th|
000004c0  65 20 6d 6f 64 65 20 61  64 64 73 20 74 68 65 20  |e mode adds the |
000004d0  66 6f 6c 6c 6f 77 69 6e  67 20 6d 65 6e 75 20 6f  |following menu o|
000004e0  6e 20 74 68 65 20 5a 61  70 20 4d 6f 64 65 20 6d  |n the Zap Mode m|
000004f0  65 6e 75 2e 0a 0a 2e 2e  2e 2e 09 2b 2d 2d 2d 2d  |enu........+----|
00000500  2d 2d 2d 2d 2d 2d 2b 0a  43 4d 6f 64 65 20 3d 3e  |------+.CMode =>|
00000510  7c 20 50 61 75 73 65 20  20 3d 3e 7c 0a 2e 2e 2e  || Pause  =>|....|
00000520  2e 09 7c 20 49 6e 64 65  6e 74 20 3d 3e 7c 0a 09  |..| Indent =>|..|
00000530  7c 20 4d 61 74 63 68 20  20 3d 3e 7c 0a 09 7c 20  || Match  =>|..| |
00000540  43 20 20 20 20 20 20 20  20 7c 0a 09 7c 20 54 65  |C        |..| Te|
00000550  78 20 20 20 20 20 20 7c  0a 09 7c 20 47 6f 66 65  |x      |..| Gofe|
00000560  72 20 20 20 20 7c 0a 09  2b 2d 2d 2d 2d 2d 2d 2d  |r    |..+-------|
00000570  2d 2d 2d 2b 0a 09 0a 54  68 65 20 70 61 75 73 65  |---+...The pause|
00000580  20 6f 70 74 69 6f 6e 20  73 65 74 73 20 74 68 65  | option sets the|
00000590  20 64 65 6c 61 79 20 69  6e 20 63 65 6e 74 69 73  | delay in centis|
000005a0  65 63 6f 6e 64 73 20 77  68 65 6e 20 74 68 65 20  |econds when the |
000005b0  63 75 72 73 6f 72 20 69  73 20 6d 6f 76 65 64 20  |cursor is moved |
000005c0  62 61 63 6b 0a 74 6f 20  74 68 65 20 6f 70 65 6e  |back.to the open|
000005d0  20 62 72 61 63 6b 65 74  20 61 66 74 65 72 20 61  | bracket after a|
000005e0  20 63 6c 6f 73 65 20 62  72 61 63 6b 65 74 20 69  | close bracket i|
000005f0  73 20 74 79 70 65 64 2e  20 20 54 68 65 20 66 69  |s typed.  The fi|
00000600  65 6c 64 20 63 61 6e 20  62 65 20 73 65 74 20 74  |eld can be set t|
00000610  6f 0a 61 6e 79 20 76 61  6c 75 65 20 62 65 74 77  |o.any value betw|
00000620  65 65 6e 20 30 20 61 6e  64 20 32 35 35 20 69 6e  |een 0 and 255 in|
00000630  63 6c 75 73 69 76 65 2e  0a 0a 54 68 65 20 69 6e  |clusive...The in|
00000640  64 65 6e 74 20 6f 70 74  69 6f 6e 20 73 65 74 73  |dent option sets|
00000650  20 74 68 65 20 72 65 6c  61 74 69 76 65 20 69 6e  | the relative in|
00000660  64 65 6e 74 20 6f 66 20  6c 69 6e 65 73 20 66 6f  |dent of lines fo|
00000670  6c 6c 6f 77 69 6e 67 20  61 6e 20 6f 70 65 6e 20  |llowing an open |
00000680  62 72 61 63 65 0a 28 27  7b 27 29 2e 20 20 54 68  |brace.('{').  Th|
00000690  65 20 66 69 65 6c 64 20  63 61 6e 20 62 65 20 73  |e field can be s|
000006a0  65 74 20 74 6f 20 61 6e  79 20 76 61 6c 75 65 20  |et to any value |
000006b0  62 65 74 77 65 65 6e 20  30 20 61 6e 64 20 33 31  |between 0 and 31|
000006c0  20 69 6e 63 6c 75 73 69  76 65 2e 20 20 54 68 65  | inclusive.  The|
000006d0  0a 69 6e 64 65 6e 74 20  69 73 20 72 65 6c 61 74  |.indent is relat|
000006e0  69 76 65 20 74 6f 20 74  68 65 20 73 74 61 72 74  |ive to the start|
000006f0  20 6f 66 20 74 68 65 20  6c 69 6e 65 20 63 6f 6e  | of the line con|
00000700  74 61 69 6e 69 6e 67 20  74 68 65 20 6f 70 65 6e  |taining the open|
00000710  20 62 72 61 63 65 2c 20  61 6e 64 0a 63 6f 6e 73  | brace, and.cons|
00000720  69 73 74 73 20 6f 66 20  73 70 61 63 65 20 63 68  |ists of space ch|
00000730  61 72 61 63 74 65 72 73  2e 20 20 53 65 74 74 69  |aracters.  Setti|
00000740  6e 67 20 74 6f 20 30 20  67 69 76 65 73 20 74 68  |ng to 0 gives th|
00000750  65 20 73 61 6d 65 20 69  6e 64 65 6e 74 20 61 73  |e same indent as|
00000760  0a 41 75 74 6f 49 6e 64  65 6e 74 20 6f 6e 20 74  |.AutoIndent on t|
00000770  68 65 20 6c 69 6e 65 73  20 66 6f 6c 6c 6f 77 69  |he lines followi|
00000780  6e 67 20 6f 70 65 6e 20  62 72 61 63 65 73 2e 0a  |ng open braces..|
00000790  0a 54 68 65 20 4d 61 74  63 68 20 6d 65 6e 75 20  |.The Match menu |
000007a0  63 6f 6e 74 72 6f 6c 73  20 77 68 69 63 68 20 27  |controls which '|
000007b0  62 72 61 63 6b 65 74 27  20 63 68 61 72 61 63 74  |bracket' charact|
000007c0  65 72 73 20 61 72 65 20  6d 61 74 63 68 65 64 2e  |ers are matched.|
000007d0  0a 0a 09 2b 2d 2d 2d 2d  2d 2d 2d 2b 09 0a 09 7c  |...+-------+...||
000007e0  20 20 7b 20 7d 20 20 7c  0a 09 7c 20 20 5b 20 5d  |  { }  |..|  [ ]|
000007f0  20 20 7c 0a 09 7c 20 20  28 20 29 20 20 7c 0a 09  |  |..|  ( )  |..|
00000800  7c 20 20 60 20 27 20 20  7c 0a 09 7c 20 20 22 20  ||  ` '  |..|  " |
00000810  22 20 20 7c 0a 09 7c 20  20 24 20 24 20 20 7c 0a  |"  |..|  $ $  |.|
00000820  09 7c 20 24 24 20 24 24  20 7c 0a 09 7c 20 20 60  |.| $$ $$ |..|  `|
00000830  20 60 20 20 7c 0a 09 2b  2d 2d 2d 2d 2d 2d 2d 2b  | `  |..+-------+|
00000840  09 0a 09 0a 54 68 65 20  74 68 72 65 65 20 73 65  |....The three se|
00000850  74 73 20 6f 66 20 62 72  61 63 6b 65 74 73 20 61  |ts of brackets a|
00000860  72 65 20 67 65 6e 65 72  61 6c 6c 79 20 75 73 65  |re generally use|
00000870  66 75 6c 2c 20 61 73 20  61 72 65 20 74 68 65 20  |ful, as are the |
00000880  64 6f 75 62 6c 65 20 71  75 6f 74 65 73 2e 0a 54  |double quotes..T|
00000890  68 65 20 73 69 6e 67 6c  65 20 71 75 6f 74 65 73  |he single quotes|
000008a0  2c 20 61 6e 64 20 64 6f  6c 6c 61 72 20 70 61 74  |, and dollar pat|
000008b0  74 65 72 6e 73 20 61 72  65 20 75 73 65 66 75 6c  |terns are useful|
000008c0  20 66 6f 72 20 54 65 58  2c 20 77 68 69 6c 65 20  | for TeX, while |
000008d0  74 68 65 0a 62 61 63 6b  71 75 6f 74 65 20 69 73  |the.backquote is|
000008e0  20 75 73 65 64 20 69 6e  20 47 6f 66 65 72 20 66  | used in Gofer f|
000008f0  6f 72 20 74 75 72 6e 69  6e 67 20 66 75 6e 63 74  |or turning funct|
00000900  69 6f 6e 73 20 69 6e 74  6f 20 69 6e 66 69 78 20  |ions into infix |
00000910  6f 70 65 72 61 74 6f 72  73 2e 0a 0a 54 68 65 20  |operators...The |
00000920  72 65 6d 61 69 6e 69 6e  67 20 74 68 72 65 65 20  |remaining three |
00000930  6f 70 74 69 6f 6e 73 20  6f 6e 20 74 68 65 20 6d  |options on the m|
00000940  61 69 6e 20 6d 65 6e 75  20 73 65 6c 65 63 74 20  |ain menu select |
00000950  63 6f 6d 6d 6f 6e 6c 79  20 75 73 65 64 20 73 65  |commonly used se|
00000960  74 73 0a 6f 66 20 6f 70  74 69 6f 6e 73 20 66 6f  |ts.of options fo|
00000970  72 20 74 68 65 20 4d 61  74 63 68 20 6d 65 6e 75  |r the Match menu|
00000980  2e 0a 0a 54 68 65 20 6b  65 79 62 6f 61 72 64 0a  |...The keyboard.|
00000990  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 0a 0a 54 6f  |============..To|
000009a0  20 65 6e 74 65 72 20 43  4d 6f 64 65 20 66 72 6f  | enter CMode fro|
000009b0  6d 20 74 68 65 20 6b 65  79 62 6f 61 72 64 2c 20  |m the keyboard, |
000009c0  77 69 74 68 20 74 68 65  20 64 65 66 61 75 6c 74  |with the default|
000009d0  20 6b 65 79 6d 61 70 2c  20 75 73 65 20 73 63 46  | keymap, use scF|
000009e0  38 2e 20 49 6e 20 74 68  69 73 0a 76 65 72 73 69  |8. In this.versi|
000009f0  6f 6e 2c 20 74 68 65 20  66 75 6e 63 74 69 6f 6e  |on, the function|
00000a00  20 62 72 6f 77 73 65 72  20 69 73 20 69 6e 76 6f  | browser is invo|
00000a10  6b 65 64 20 75 73 69 6e  67 20 53 41 56 45 41 4e  |ked using SAVEAN|
00000a20  44 52 55 4e 2c 20 62 6f  75 6e 64 20 74 6f 20 73  |DRUN, bound to s|
00000a30  63 45 20 69 6e 0a 74 68  65 20 73 74 61 6e 64 61  |cE in.the standa|
00000a40  72 64 20 6b 65 79 6d 61  70 2e 20 20 54 68 65 20  |rd keymap.  The |
00000a50  62 6f 75 6e 63 65 20 66  75 6e 63 74 69 6f 6e 20  |bounce function |
00000a60  69 73 20 62 6f 75 6e 64  20 74 6f 20 42 41 53 49  |is bound to BASI|
00000a70  43 2c 20 77 68 69 63 68  20 69 73 20 73 63 42 2e  |C, which is scB.|
00000a80  20 0a 54 68 65 20 6e 65  78 74 2f 70 72 65 76 69  | .The next/previ|
00000a90  6f 75 73 20 66 75 6e 63  74 69 6f 6e 20 63 6f 6d  |ous function com|
00000aa0  6d 61 6e 64 73 20 61 72  65 20 6f 6e 20 52 55 4e  |mands are on RUN|
00000ab0  41 4e 44 51 55 49 54 20  61 6e 64 20 52 55 4e 20  |ANDQUIT and RUN |
00000ac0  72 65 73 70 65 63 74 69  76 65 6c 79 2c 0a 6e 6f  |respectively,.no|
00000ad0  72 6d 61 6c 6c 79 20 73  63 46 20 61 6e 64 20 73  |rmally scF and s|
00000ae0  63 55 2e 20 54 68 65 20  66 75 6e 63 74 69 6f 6e  |cU. The function|
00000af0  20 6c 69 73 74 65 72 20  69 73 20 62 6f 75 6e 64  | lister is bound|
00000b00  20 74 6f 20 73 63 48 20  61 73 20 69 6e 20 42 41  | to scH as in BA|
00000b10  53 49 43 20 6d 6f 64 65  2e 0a 54 68 65 20 63 6f  |SIC mode..The co|
00000b20  6d 70 69 6c 65 20 65 6e  74 72 79 20 70 6f 69 6e  |mpile entry poin|
00000b30  74 20 69 73 20 6f 6e 20  73 63 43 2e 0a 0a 4f 76  |t is on scC...Ov|
00000b40  65 72 6c 6f 61 64 69 6e  67 73 20 6f 66 20 74 68  |erloadings of th|
00000b50  65 20 62 61 73 69 63 20  6d 6f 64 65 20 65 6e 74  |e basic mode ent|
00000b60  72 79 20 70 6f 69 6e 74  73 20 6d 61 79 20 62 65  |ry points may be|
00000b70  20 72 65 6d 6f 76 65 64  20 69 6e 20 6c 61 74 65  | removed in late|
00000b80  72 20 76 65 72 73 69 6f  6e 73 3b 0a 74 68 65 79  |r versions;.they|
00000b90  20 61 72 65 20 6e 6f 20  6c 6f 6e 67 65 72 20 6e  | are no longer n|
00000ba0  65 63 65 73 73 61 72 79  20 67 69 76 65 6e 20 74  |ecessary given t|
00000bb0  68 65 20 6b 65 79 6d 61  70 73 20 6f 66 20 5a 61  |he keymaps of Za|
00000bc0  70 20 30 2e 39 31 20 61  6e 64 20 6c 61 74 65 72  |p 0.91 and later|
00000bd0  2e 0a 0a 0a 54 68 65 20  63 6f 6d 6d 61 6e 64 73  |....The commands|
00000be0  0a 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 0a 0a 53  |.============..S|
00000bf0  6f 6d 65 20 6f 66 20 74  68 65 73 65 20 6b 65 79  |ome of these key|
00000c00  73 20 61 72 65 20 61 6c  73 6f 20 61 76 61 69 6c  |s are also avail|
00000c10  61 62 6c 65 20 76 69 61  20 6f 74 68 65 72 20 65  |able via other e|
00000c20  6e 74 72 79 20 70 6f 69  6e 74 73 20 61 6e 64 20  |ntry points and |
00000c30  73 6f 20 61 72 65 0a 62  6f 75 6e 64 20 69 6e 20  |so are.bound in |
00000c40  74 68 65 20 73 74 61 6e  64 61 72 64 20 6b 65 79  |the standard key|
00000c50  6d 61 70 20 74 6f 20 74  68 65 20 69 6e 64 69 63  |map to the indic|
00000c60  61 74 65 64 20 6b 65 79  73 2e 0a 0a 43 5f 4c 49  |ated keys...C_LI|
00000c70  53 54 5f 46 55 4e 43 54  49 4f 4e 53 09 09 09 09  |ST_FUNCTIONS....|
00000c80  28 53 41 56 45 41 4e 44  52 55 4e 2c 20 73 63 45  |(SAVEANDRUN, scE|
00000c90  29 0a 0a 50 6f 70 73 20  75 70 20 61 20 66 75 6e  |)..Pops up a fun|
00000ca0  63 74 69 6f 6e 20 62 72  6f 77 73 65 72 20 6f 6e  |ction browser on|
00000cb0  20 74 68 65 20 63 75 72  72 65 6e 74 20 62 75 66  | the current buf|
00000cc0  66 65 72 2e 20 20 41 73  20 75 73 75 61 6c 20 77  |fer.  As usual w|
00000cd0  69 74 68 20 74 68 72 6f  77 62 61 63 6b 0a 62 75  |ith throwback.bu|
00000ce0  66 66 65 72 73 2c 20 64  6f 75 62 6c 65 20 63 6c  |ffers, double cl|
00000cf0  69 63 6b 20 77 69 6c 6c  20 6a 75 6d 70 20 74 6f  |ick will jump to|
00000d00  20 74 68 65 20 63 6f 72  72 65 73 70 6f 6e 64 69  | the correspondi|
00000d10  6e 67 20 6c 6f 63 61 74  69 6f 6e 20 69 6e 20 74  |ng location in t|
00000d20  68 65 20 6f 72 69 67 69  6e 61 6c 0a 62 75 66 66  |he original.buff|
00000d30  65 72 2e 20 20 54 68 65  20 74 68 72 6f 77 62 61  |er.  The throwba|
00000d40  63 6b 20 62 75 66 66 65  72 20 77 69 6c 6c 20 6e  |ck buffer will n|
00000d50  6f 74 20 62 65 20 64 69  73 70 6c 61 79 65 64 20  |ot be displayed |
00000d60  69 66 20 6e 6f 20 66 75  6e 63 74 69 6f 6e 73 20  |if no functions |
00000d70  63 61 6e 20 62 65 0a 66  6f 75 6e 64 2e 0a 0a 43  |can be.found...C|
00000d80  5f 50 52 45 56 5f 46 55  4e 43 54 49 4f 4e 09 09  |_PREV_FUNCTION..|
00000d90  09 09 09 28 52 55 4e 2c  20 73 63 55 29 0a 43 5f  |...(RUN, scU).C_|
00000da0  4e 45 58 54 5f 46 55 4e  43 54 49 4f 4e 09 09 09  |NEXT_FUNCTION...|
00000db0  09 09 28 52 55 4e 41 4e  44 51 55 49 54 2c 20 73  |..(RUNANDQUIT, s|
00000dc0  63 46 29 0a 0a 54 68 65  73 65 20 73 74 65 70 20  |cF)..These step |
00000dd0  74 6f 20 74 68 65 20 6e  65 78 74 20 66 75 6e 63  |to the next func|
00000de0  74 69 6f 6e 20 64 65 66  69 6e 69 74 69 6f 6e 20  |tion definition |
00000df0  69 6e 20 74 68 65 20 61  70 70 72 6f 70 72 69 61  |in the appropria|
00000e00  74 65 20 64 69 72 65 63  74 69 6f 6e 2e 0a 0a 43  |te direction...C|
00000e10  5f 43 4f 4d 50 49 4c 45  09 09 09 09 09 28 43 4f  |_COMPILE.....(CO|
00000e20  4d 50 49 4c 45 2c 20 73  63 43 29 0a 0a 4c 6f 6f  |MPILE, scC)..Loo|
00000e30  6b 73 20 75 70 20 6f 6e  65 20 64 69 72 65 63 74  |ks up one direct|
00000e40  6f 72 79 20 66 6f 72 20  61 20 4d 61 6b 65 66 69  |ory for a Makefi|
00000e50  6c 65 2c 20 61 6e 64 20  64 6f 65 73 20 61 20 44  |le, and does a D|
00000e60  61 74 61 4f 70 65 6e 20  62 72 6f 61 64 63 61 73  |ataOpen broadcas|
00000e70  74 20 69 66 0a 69 74 20  66 69 6e 64 73 20 6f 6e  |t if.it finds on|
00000e80  65 3b 20 74 68 69 73 20  69 73 20 6f 6e 6c 79 20  |e; this is only |
00000e90  73 75 63 63 65 73 73 66  75 6c 20 69 66 20 21 4d  |successful if !M|
00000ea0  61 6b 65 20 69 73 20 61  6c 72 65 61 64 79 20 6c  |ake is already l|
00000eb0  6f 61 64 65 64 2e 0a 0a  43 5f 42 4f 55 4e 43 45  |oaded...C_BOUNCE|
00000ec0  09 09 09 09 09 28 42 41  53 49 43 2c 20 73 63 42  |.....(BASIC, scB|
00000ed0  29 0a 0a 54 68 69 73 20  62 6f 75 6e 63 65 73 20  |)..This bounces |
00000ee0  62 61 63 6b 20 74 6f 20  74 68 65 20 6f 70 65 6e  |back to the open|
00000ef0  20 63 6f 72 72 65 73 70  6f 6e 64 69 6e 67 20 74  | corresponding t|
00000f00  6f 20 74 68 65 20 63 6c  6f 73 65 20 63 68 61 72  |o the close char|
00000f10  61 63 74 65 72 20 75 6e  64 65 72 0a 74 68 65 20  |acter under.the |
00000f20  63 75 72 73 6f 72 2e 0a  0a 43 5f 53 45 54 5f 50  |cursor...C_SET_P|
00000f30  41 55 53 45 20 6e 0a 43  5f 53 45 54 5f 49 4e 44  |AUSE n.C_SET_IND|
00000f40  45 4e 54 20 6e 0a 0a 54  68 65 73 65 20 73 65 74  |ENT n..These set|
00000f50  20 74 68 65 20 70 61 75  73 65 20 64 65 6c 61 79  | the pause delay|
00000f60  20 61 6e 64 20 69 6e 64  65 6e 74 20 73 74 65 70  | and indent step|
00000f70  20 28 74 68 65 20 77 72  69 74 61 62 6c 65 20 6d  | (the writable m|
00000f80  65 6e 75 20 69 74 65 6d  73 29 0a 74 6f 20 74 68  |enu items).to th|
00000f90  65 20 63 6f 72 72 65 73  70 6f 6e 64 69 6e 67 20  |e corresponding |
00000fa0  76 61 6c 75 65 2e 0a 0a  43 5f 4d 4f 44 45 0a 54  |value...C_MODE.T|
00000fb0  45 58 5f 4d 4f 44 45 0a  47 4f 46 45 52 5f 4d 4f  |EX_MODE.GOFER_MO|
00000fc0  44 45 0a 0a 53 77 69 74  63 68 20 74 68 65 20 62  |DE..Switch the b|
00000fd0  75 66 66 65 72 20 74 6f  20 43 4d 6f 64 65 2c 20  |uffer to CMode, |
00000fe0  61 6e 64 20 73 65 74 20  74 68 65 20 6d 61 74 63  |and set the matc|
00000ff0  68 20 66 6c 61 67 73 20  61 70 70 72 6f 70 72 69  |h flags appropri|
00001000  61 74 65 6c 79 2e 0a 0a  0a 42 75 67 73 20 61 6e  |ately....Bugs an|
00001010  64 20 73 75 67 67 65 73  74 69 6f 6e 73 0a 3d 3d  |d suggestions.==|
00001020  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
00001030  3d 3d 0a 0a 46 69 72 73  74 2c 20 74 68 65 20 73  |==..First, the s|
00001040  74 61 6e 64 61 72 64 20  64 69 73 63 6c 61 69 6d  |tandard disclaim|
00001050  65 72 3a 0a 0a 54 68 69  73 20 70 72 6f 67 72 61  |er:..This progra|
00001060  6d 20 69 73 20 70 72 6f  76 69 64 65 64 20 22 61  |m is provided "a|
00001070  73 20 69 73 22 2c 20 77  69 74 68 6f 75 74 20 61  |s is", without a|
00001080  6e 79 20 77 61 72 72 61  6e 74 79 20 6f 66 20 61  |ny warranty of a|
00001090  6e 79 20 6b 69 6e 64 2e  20 54 68 65 0a 65 6e 74  |ny kind. The.ent|
000010a0  69 72 65 20 72 69 73 6b  20 61 73 20 74 6f 20 69  |ire risk as to i|
000010b0  74 73 20 71 75 61 6c 69  74 79 20 61 6e 64 20 70  |ts quality and p|
000010c0  65 72 66 6f 72 6d 61 6e  63 65 20 69 73 20 77 69  |erformance is wi|
000010d0  74 68 20 79 6f 75 2e 20  20 49 6e 20 6e 6f 20 65  |th you.  In no e|
000010e0  76 65 6e 74 20 77 69 6c  6c 0a 49 20 62 65 20 6c  |vent will.I be l|
000010f0  69 61 62 6c 65 20 66 6f  72 20 64 61 6d 61 67 65  |iable for damage|
00001100  73 20 61 72 69 73 69 6e  67 20 66 72 6f 6d 20 74  |s arising from t|
00001110  68 65 20 75 73 65 20 6f  66 20 74 68 69 73 20 70  |he use of this p|
00001120  72 6f 67 72 61 6d 2e 0a  0a 48 61 76 69 6e 67 20  |rogram...Having |
00001130  73 61 69 64 20 74 68 61  74 2c 20 43 4d 6f 64 65  |said that, CMode|
00001140  20 68 61 73 20 62 65 65  6e 20 75 6e 64 65 72 20  | has been under |
00001150  74 65 73 74 20 28 69 6e  20 76 61 72 69 6f 75 73  |test (in various|
00001160  20 76 65 72 73 69 6f 6e  73 29 20 66 6f 72 20 73  | versions) for s|
00001170  65 76 65 72 61 6c 0a 6d  6f 6e 74 68 73 20 61 6e  |everal.months an|
00001180  64 20 69 73 20 63 6f 64  65 64 20 66 61 69 72 6c  |d is coded fairl|
00001190  79 20 64 65 66 65 6e 73  69 76 65 6c 79 2e 20 20  |y defensively.  |
000011a0  49 66 20 79 6f 75 20 6d  61 6e 61 67 65 20 74 6f  |If you manage to|
000011b0  20 66 69 6e 64 20 61 6e  79 20 62 75 67 73 2c 0a  | find any bugs,.|
000011c0  65 73 70 65 63 69 61 6c  6c 79 20 73 65 72 69 6f  |especially serio|
000011d0  75 73 20 6f 6e 65 73 2c  20 74 68 65 6e 20 63 6f  |us ones, then co|
000011e0  6e 74 61 63 74 20 6d 65  20 61 73 20 73 6f 6f 6e  |ntact me as soon|
000011f0  20 61 73 20 70 6f 73 73  69 62 6c 65 20 61 6e 64  | as possible and|
00001200  20 49 27 6c 6c 20 74 72  79 0a 74 6f 20 66 69 78  | I'll try.to fix|
00001210  20 69 74 2e 0a 0a 53 69  6d 69 6c 61 72 6c 79 2c  | it...Similarly,|
00001220  20 73 75 67 67 65 73 74  69 6f 6e 73 20 61 72 65  | suggestions are|
00001230  20 77 65 6c 63 6f 6d 65  2c 20 61 6c 74 68 6f 75  | welcome, althou|
00001240  67 68 20 6d 61 6e 79 20  6f 66 20 74 68 65 20 75  |gh many of the u|
00001250  73 75 61 6c 20 72 65 71  75 65 73 74 73 20 61 72  |sual requests ar|
00001260  65 0a 6e 6f 74 20 70 6f  73 73 69 62 6c 65 20 77  |e.not possible w|
00001270  69 74 68 20 74 68 65 20  63 75 72 72 65 6e 74 20  |ith the current |
00001280  76 65 72 73 69 6f 6e 20  6f 66 20 5a 61 70 20 77  |version of Zap w|
00001290  69 74 68 6f 75 74 20 69  6e 73 61 6e 65 20 61 6d  |ithout insane am|
000012a0  6f 75 6e 74 73 20 6f 66  20 77 6f 72 6b 2e 0a 0a  |ounts of work...|
000012b0  49 20 63 61 6e 20 62 65  20 63 6f 6e 74 61 63 74  |I can be contact|
000012c0  65 64 20 61 73 0a 0a 09  6a 62 73 40 75 6b 2e 61  |ed as...jbs@uk.a|
000012d0  63 2e 6f 78 2e 70 72 67  0a 09 0a 6f 72 20 62 79  |c.ox.prg...or by|
000012e0  20 70 6f 73 74 20 61 73  0a 0a 09 42 72 79 61 6e  | post as...Bryan|
000012f0  20 53 63 61 74 74 65 72  67 6f 6f 64 0a 09 54 68  | Scattergood..Th|
00001300  65 20 51 75 65 65 6e 73  20 43 6f 6c 6c 65 67 65  |e Queens College|
00001310  0a 09 4f 78 66 6f 72 64  0a 09 4f 58 31 20 34 41  |..Oxford..OX1 4A|
00001320  57 0a 0a 62 6f 74 68 20  61 64 64 72 65 73 73 65  |W..both addresse|
00001330  73 20 62 65 69 6e 67 20  67 6f 6f 64 20 75 6e 74  |s being good unt|
00001340  69 6c 20 53 65 70 74 65  6d 62 65 72 20 31 39 39  |il September 199|
00001350  34 2e 20 20 41 66 74 65  72 20 74 68 65 6e 2c 20  |4.  After then, |
00001360  70 6f 73 74 20 73 65 6e  74 20 74 6f 20 74 68 65  |post sent to the|
00001370  0a 61 62 6f 76 65 20 61  64 64 72 65 73 73 20 73  |.above address s|
00001380  68 6f 75 6c 64 20 72 65  61 63 68 20 6d 65 20 65  |hould reach me e|
00001390  76 65 6e 74 75 61 6c 6c  79 2e 0a 0a 41 63 6b 6e  |ventually...Ackn|
000013a0  6f 77 6c 65 64 67 65 6d  65 6e 74 73 0a 3d 3d 3d  |owledgements.===|
000013b0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 0a 0a 54  |=============..T|
000013c0  68 61 6e 6b 73 20 6d 75  73 74 20 6f 62 76 69 6f  |hanks must obvio|
000013d0  75 73 6c 79 20 67 6f 20  74 6f 20 44 6f 6d 69 6e  |usly go to Domin|
000013e0  69 63 20 53 79 6d 65 73  2c 20 66 69 72 73 74 6c  |ic Symes, firstl|
000013f0  79 20 66 6f 72 20 63 72  65 61 74 69 6e 67 20 5a  |y for creating Z|
00001400  61 70 20 61 6e 64 0a 73  65 63 6f 6e 64 6c 79 20  |ap and.secondly |
00001410  66 6f 72 20 61 6e 73 77  65 72 69 6e 67 20 6d 79  |for answering my|
00001420  20 28 6e 75 6d 65 72 6f  75 73 29 20 71 75 65 73  | (numerous) ques|
00001430  74 69 6f 6e 73 20 61 62  6f 75 74 20 77 72 69 74  |tions about writ|
00001440  69 6e 67 20 65 78 74 65  6e 73 69 6f 6e 20 6d 6f  |ing extension mo|
00001450  64 65 73 2e 0a 54 68 61  6e 6b 73 20 6d 75 73 74  |des..Thanks must|
00001460  20 61 6c 73 6f 20 67 6f  20 74 6f 20 74 68 65 20  | also go to the |
00001470  6d 61 6e 79 20 6d 65 6d  62 65 72 73 20 6f 66 20  |many members of |
00001480  74 68 65 20 4f 78 66 6f  72 64 20 41 72 63 20 55  |the Oxford Arc U|
00001490  73 65 72 20 47 72 6f 75  70 20 77 68 6f 0a 70 75  |ser Group who.pu|
000014a0  73 68 65 64 20 74 68 69  73 20 66 72 6f 6d 20 62  |shed this from b|
000014b0  65 69 6e 67 20 61 20 70  72 6f 74 6f 74 79 70 65  |eing a prototype|
000014c0  20 73 75 70 70 6f 72 74  69 6e 67 20 6f 6e 6c 79  | supporting only|
000014d0  20 43 2c 20 74 6f 20 61  20 63 6f 6e 66 69 67 75  | C, to a configu|
000014e0  72 61 62 6c 65 0a 73 74  61 62 6c 65 20 70 72 6f  |rable.stable pro|
000014f0  64 75 63 74 20 73 75 70  70 6f 72 74 69 6e 67 20  |duct supporting |
00001500  43 2c 20 54 65 58 20 61  6e 64 20 47 6f 66 65 72  |C, TeX and Gofer|
00001510  2e 20 20 54 68 65 69 72  20 65 66 66 69 63 69 65  |.  Their efficie|
00001520  6e 63 79 20 61 74 20 66  69 6e 64 69 6e 67 0a 73  |ncy at finding.s|
00001530  6f 6d 65 20 6f 66 20 74  68 65 20 6d 6f 72 65 20  |ome of the more |
00001540  73 75 62 74 6c 65 20 62  75 67 73 20 77 61 73 20  |subtle bugs was |
00001550  65 73 70 65 63 69 61 6c  6c 79 20 76 61 6c 75 61  |especially valua|
00001560  62 6c 65 2e 0a 0a 54 68  69 73 20 76 65 72 73 69  |ble...This versi|
00001570  6f 6e 20 6f 66 20 43 4d  6f 64 65 20 69 6e 63 6f  |on of CMode inco|
00001580  72 70 6f 72 61 74 65 73  20 73 6f 6d 65 20 69 64  |rporates some id|
00001590  65 61 73 20 66 69 72 73  74 20 69 6d 70 6c 65 6d  |eas first implem|
000015a0  65 6e 74 65 64 20 62 79  20 4d 61 72 74 69 6e 0a  |ented by Martin.|
000015b0  45 62 6f 75 72 6e 65 20  69 6e 20 68 69 73 20 43  |Ebourne in his C|
000015c0  4d 6f 64 65 2c 20 77 68  69 63 68 20 69 6e 20 74  |Mode, which in t|
000015d0  75 72 6e 20 75 73 65 64  20 63 6f 64 65 20 66 72  |urn used code fr|
000015e0  6f 6d 20 43 4d 6f 64 65  20 30 2e 30 33 2e 20 20  |om CMode 0.03.  |
000015f0  49 6e 20 64 6f 69 6e 67  0a 73 6f 20 69 74 20 66  |In doing.so it f|
00001600  69 78 65 73 20 73 6f 6d  65 20 62 75 67 73 20 69  |ixes some bugs i|
00001610  6e 20 74 68 65 20 66 75  6e 63 74 69 6f 6e 20 62  |n the function b|
00001620  72 6f 77 73 65 72 20 63  6f 64 65 2e 0a 0a 0a 56  |rowser code....V|
00001630  65 72 73 69 6f 6e 20 68  69 73 74 6f 72 79 0a 3d  |ersion history.=|
00001640  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 0a 0a  |==============..|
00001650  30 2e 30 31 0a 30 2e 30  32 0a 0a 45 61 72 6c 79  |0.01.0.02..Early|
00001660  20 70 72 6f 74 6f 74 79  70 65 20 76 65 72 73 69  | prototype versi|
00001670  6f 6e 73 20 66 6f 72 20  74 65 73 74 69 6e 67 20  |ons for testing |
00001680  62 79 20 74 68 65 20 4f  78 66 6f 72 64 20 41 72  |by the Oxford Ar|
00001690  63 20 55 73 65 72 20 47  72 6f 75 70 2e 0a 0a 30  |c User Group...0|
000016a0  2e 30 33 0a 0a 53 69 6d  70 6c 65 20 76 65 72 73  |.03..Simple vers|
000016b0  69 6f 6e 20 6d 61 74 63  68 69 6e 67 20 7b 7d 2c  |ion matching {},|
000016c0  20 28 29 20 61 6e 64 20  5b 5d 20 75 6e 63 6f 6e  | () and [] uncon|
000016d0  64 69 74 69 6f 6e 61 6c  6c 79 2e 20 20 52 65 6c  |ditionally.  Rel|
000016e0  65 61 73 65 64 20 77 69  74 68 20 5a 61 70 0a 30  |eased with Zap.0|
000016f0  2e 39 30 20 62 79 20 44  6f 6d 69 6e 69 63 20 53  |.90 by Dominic S|
00001700  79 6d 65 73 2e 0a 0a 30  2e 30 34 0a 0a 41 64 64  |ymes...0.04..Add|
00001710  65 64 20 73 69 6d 70 6c  65 20 24 2e 2e 24 20 6d  |ed simple $..$ m|
00001720  61 74 63 68 69 6e 67 20  66 6f 72 20 44 6f 6d 2e  |atching for Dom.|
00001730  0a 0a 30 2e 30 35 0a 0a  41 64 64 20 71 75 6f 74  |..0.05..Add quot|
00001740  65 20 6d 61 74 63 68 69  6e 67 20 61 6e 64 20 24  |e matching and $|
00001750  24 2e 2e 24 24 2c 20 74  6f 67 65 74 68 65 72 20  |$..$$, together |
00001760  77 69 74 68 20 4d 61 74  63 68 20 6d 65 6e 75 20  |with Match menu |
00001770  69 74 65 6d 20 74 6f 0a  61 6c 6c 6f 77 20 66 6f  |item to.allow fo|
00001780  72 20 63 6f 6e 66 69 67  75 72 61 74 69 6f 6e 20  |r configuration |
00001790  66 6f 72 20 64 69 66 66  65 72 65 6e 74 20 6c 61  |for different la|
000017a0  6e 67 75 61 67 65 73 2e  0a 0a 30 2e 30 36 0a 0a  |nguages...0.06..|
000017b0  43 6c 65 61 6e 65 64 20  75 70 20 73 6f 75 72 63  |Cleaned up sourc|
000017c0  65 73 2c 20 63 72 65 61  74 69 6e 67 20 61 20 73  |es, creating a s|
000017d0  65 70 61 72 61 74 65 20  6c 69 62 72 61 72 79 20  |eparate library |
000017e0  74 6f 20 73 68 61 72 65  20 77 69 74 68 20 6f 74  |to share with ot|
000017f0  68 65 72 20 6d 6f 64 65  73 2c 0a 61 6e 64 20 63  |her modes,.and c|
00001800  68 61 6e 67 65 64 20 74  6f 20 75 73 65 20 77 5f  |hanged to use w_|
00001810  74 61 62 63 20 72 61 74  68 65 72 20 74 68 61 6e  |tabc rather than|
00001820  20 77 69 72 69 6e 67 20  69 6e 20 63 68 61 72 61  | wiring in chara|
00001830  63 74 65 72 20 39 2e 0a  0a 30 2e 30 37 0a 0a 41  |cter 9...0.07..A|
00001840  64 64 65 64 20 62 6f 75  6e 63 65 20 63 6f 6d 6d  |dded bounce comm|
00001850  61 6e 64 20 61 73 20 42  41 53 49 43 2c 20 28 73  |and as BASIC, (s|
00001860  6f 20 6f 6e 20 73 63 42  29 2e 0a 0a 30 2e 30 38  |o on scB)...0.08|
00001870  0a 0a 41 64 64 65 64 20  63 6f 64 65 20 74 6f 20  |..Added code to |
00001880  72 65 6d 6f 76 65 20 64  65 6c 61 79 20 6f 6e 20  |remove delay on |
00001890  62 6f 75 6e 63 65 20 77  68 65 6e 20 74 68 65 20  |bounce when the |
000018a0  75 73 65 72 20 74 79 70  65 73 20 61 68 65 61 64  |user types ahead|
000018b0  2e 0a 0a 30 2e 30 39 0a  0a 41 64 64 65 64 20 61  |...0.09..Added a|
000018c0  63 63 65 6c 65 72 61 74  6f 72 73 20 66 6f 72 20  |ccelerators for |
000018d0  63 6f 6d 6d 6f 6e 6c 79  20 75 73 65 64 20 4d 61  |commonly used Ma|
000018e0  74 63 68 20 63 6f 6d 62  69 6e 61 74 69 6f 6e 73  |tch combinations|
000018f0  3b 20 54 65 58 2c 20 43  20 61 6e 64 20 47 6f 66  |; TeX, C and Gof|
00001900  65 72 2e 0a 0a 30 2e 31  30 0a 0a 41 64 64 65 64  |er...0.10..Added|
00001910  20 66 75 6e 63 74 69 6f  6e 20 73 65 61 72 63 68  | function search|
00001920  69 6e 67 20 61 6e 64 20  62 72 6f 77 73 69 6e 67  |ing and browsing|
00001930  2c 20 74 6f 67 65 74 68  65 72 20 77 69 74 68 20  |, together with |
00001940  69 6e 63 6f 6d 70 6c 65  74 65 20 63 6f 6d 6d 61  |incomplete comma|
00001950  6e 64 0a 69 6e 74 65 72  66 61 63 65 2e 0a 0a 30  |nd.interface...0|
00001960  2e 31 31 0a 0a 41 6c 6c  6f 77 20 74 61 62 73 20  |.11..Allow tabs |
00001970  61 6e 64 20 73 70 61 63  65 73 20 61 66 74 65 72  |and spaces after|
00001980  20 74 68 65 20 6f 70 65  6e 20 62 72 61 63 65 20  | the open brace |
00001990  77 68 65 6e 20 69 6e 64  65 6e 74 69 6e 67 20 6f  |when indenting o|
000019a0  6e 20 61 20 72 65 74 75  72 6e 2e 0a 55 73 65 20  |n a return..Use |
000019b0  5a 61 70 5f 42 61 73 65  4d 6f 64 65 2c 20 72 61  |Zap_BaseMode, ra|
000019c0  74 68 65 72 20 74 68 61  6e 20 5a 61 70 5f 43 61  |ther than Zap_Ca|
000019d0  6c 6c 42 61 73 65 4d 6f  64 65 2e 0a 4d 6f 76 65  |llBaseMode..Move|
000019e0  64 20 43 5f 4c 49 53 54  5f 46 55 4e 43 54 49 4f  |d C_LIST_FUNCTIO|
000019f0  4e 53 20 6f 6e 74 6f 20  65 5f 6c 69 73 74 66 6e  |NS onto e_listfn|
00001a00  73 20 76 65 63 74 6f 72  2e 0a 46 69 78 65 64 20  |s vector..Fixed |
00001a10  67 6c 69 74 63 68 20 69  6e 20 66 75 6e 63 74 69  |glitch in functi|
00001a20  6f 6e 20 62 72 6f 77 73  65 72 20 28 73 63 61 6e  |on browser (scan|
00001a30  6e 65 72 20 6e 6f 77 20  68 61 6e 64 6c 65 73 20  |ner now handles |
00001a40  27 7b 27 20 70 72 6f 70  65 72 6c 79 29 2e 0a 46  |'{' properly)..F|
00001a50  69 78 65 64 20 74 68 65  20 62 6f 75 6e 63 65 20  |ixed the bounce |
00001a60  62 75 67 20 69 6e 74 72  6f 64 75 63 65 64 20 69  |bug introduced i|
00001a70  6e 20 30 2e 30 38 3b 20  74 68 65 20 64 65 6c 61  |n 0.08; the dela|
00001a80  79 20 66 6f 72 20 74 68  65 20 64 69 73 70 6c 61  |y for the displa|
00001a90  79 20 77 68 65 6e 0a 62  6f 75 6e 63 69 6e 67 20  |y when.bouncing |
00001aa0  77 61 73 20 65 73 73 65  6e 74 69 61 6c 6c 79 20  |was essentially |
00001ab0  72 61 6e 64 6f 6d 2c 20  61 6e 64 20 75 73 75 61  |random, and usua|
00001ac0  6c 6c 79 20 76 65 72 79  20 73 6d 61 6c 6c 2e 0a  |lly very small..|
00001ad0  0a 30 2e 31 32 20 28 52  65 6c 65 61 73 65 64 20  |.0.12 (Released |
00001ae0  77 69 74 68 20 5a 61 70  20 31 2e 30 29 0a 0a 46  |with Zap 1.0)..F|
00001af0  69 78 65 64 20 6d 69 73  74 61 6b 65 20 77 69 74  |ixed mistake wit|
00001b00  68 20 66 75 6e 63 74 69  6f 6e 20 62 72 6f 77 73  |h function brows|
00001b10  65 72 20 77 68 65 6e 20  6e 6f 20 66 75 6e 63 74  |er when no funct|
00001b20  69 6f 6e 73 20 70 72 65  73 65 6e 74 3b 20 74 72  |ions present; tr|
00001b30  69 65 64 20 74 6f 20 63  6c 65 61 72 0a 6d 6f 64  |ied to clear.mod|
00001b40  69 66 79 20 62 69 74 20  77 69 74 68 6f 75 74 20  |ify bit without |
00001b50  63 68 65 63 6b 69 6e 67  20 77 68 65 74 68 65 72  |checking whether|
00001b60  20 74 68 72 6f 77 62 61  63 6b 20 62 75 66 66 65  | throwback buffe|
00001b70  72 20 68 61 64 20 62 65  65 6e 20 67 65 6e 65 72  |r had been gener|
00001b80  61 74 65 64 2e 0a 0a 30  2e 31 33 20 28 4e 6f 74  |ated...0.13 (Not|
00001b90  20 72 65 6c 65 61 73 65  64 3b 20 63 68 65 63 6b  | released; check|
00001ba0  70 6f 69 6e 74 20 76 65  72 73 69 6f 6e 20 62 65  |point version be|
00001bb0  66 6f 72 65 20 30 2e 31  34 29 0a 0a 4d 6f 64 69  |fore 0.14)..Modi|
00001bc0  66 69 65 64 20 72 65 63  6f 67 6e 69 73 65 72 20  |fied recogniser |
00001bd0  74 6f 20 6d 61 6b 65 20  74 68 65 20 63 6f 64 65  |to make the code|
00001be0  20 6d 6f 72 65 20 4b 26  52 20 66 72 69 65 6e 64  | more K&R friend|
00001bf0  6c 79 3b 20 65 73 73 65  6e 74 69 61 6c 6c 79 20  |ly; essentially |
00001c00  61 6c 6c 6f 77 0a 73 65  6d 69 63 6f 6c 6f 6e 20  |allow.semicolon |
00001c10  62 65 74 77 65 65 6e 20  74 68 65 20 63 6c 6f 73  |between the clos|
00001c20  69 6e 67 20 70 61 72 65  6e 74 68 65 73 69 73 20  |ing parenthesis |
00001c30  61 6e 64 20 6f 70 65 6e  69 6e 67 20 62 72 61 63  |and opening brac|
00001c40  65 20 6f 66 20 61 20 70  6f 74 65 6e 74 69 61 6c  |e of a potential|
00001c50  0a 66 75 6e 63 74 69 6f  6e 20 62 6f 64 79 20 70  |.function body p|
00001c60  72 6f 76 69 64 65 64 20  28 61 29 20 74 68 65 72  |rovided (a) ther|
00001c70  65 20 77 61 73 20 73 6f  6d 65 20 6e 6f 6e 20 77  |e was some non w|
00001c80  68 69 74 65 2d 73 70 61  63 65 20 62 65 66 6f 72  |hite-space befor|
00001c90  65 20 61 6e 64 20 69 74  0a 61 6e 64 20 28 62 29  |e and it.and (b)|
00001ca0  20 74 68 65 72 65 20 77  61 73 20 6f 6e 6c 79 20  | there was only |
00001cb0  77 68 69 74 65 20 73 70  61 63 65 20 61 66 74 65  |white space afte|
00001cc0  72 20 69 74 2e 0a 0a 30  2e 31 34 0a 0a 43 68 61  |r it...0.14..Cha|
00001cd0  6e 67 65 64 20 74 68 65  20 72 65 63 6f 67 6e 69  |nged the recogni|
00001ce0  73 65 72 20 73 74 69 6c  6c 20 66 75 72 74 68 65  |ser still furthe|
00001cf0  72 20 73 6f 20 74 68 61  74 20 70 72 65 70 72 6f  |r so that prepro|
00001d00  63 65 73 73 6f 72 20 64  69 72 65 63 74 69 76 65  |cessor directive|
00001d10  73 20 61 72 65 0a 73 6b  69 70 70 65 64 20 28 61  |s are.skipped (a|
00001d20  6e 64 20 73 6f 20 63 6f  72 72 65 73 70 6f 6e 64  |nd so correspond|
00001d30  20 74 6f 20 77 68 69 74  65 73 70 61 63 65 29 2e  | to whitespace).|
00001d40  20 20 54 68 69 73 20 61  6c 6c 6f 77 73 20 74 68  |  This allows th|
00001d50  65 20 69 64 69 6f 6d 20  62 65 6c 6f 77 2c 0a 77  |e idiom below,.w|
00001d60  68 69 63 68 20 69 73 20  66 61 69 72 6c 79 20 63  |hich is fairly c|
00001d70  6f 6d 6d 6f 6e 20 69 6e  20 63 6f 64 65 20 77 68  |ommon in code wh|
00001d80  69 63 68 20 6d 75 73 74  20 73 75 70 70 6f 72 74  |ich must support|
00001d90  20 62 6f 74 68 20 4b 26  52 20 61 6e 64 20 41 4e  | both K&R and AN|
00001da0  53 49 20 43 0a 63 6f 6d  70 69 6c 65 72 73 2e 0a  |SI C.compilers..|
00001db0  0a 09 23 69 66 64 65 66  20 5f 5f 41 4e 53 49 5f  |..#ifdef __ANSI_|
00001dc0  5f 0a 09 76 6f 69 64 20  66 6f 6f 28 69 6e 74 20  |_..void foo(int |
00001dd0  78 29 0a 09 23 65 6c 73  65 0a 09 76 6f 69 64 20  |x)..#else..void |
00001de0  66 6f 6f 28 78 29 0a 09  69 6e 74 20 78 3b 0a 09  |foo(x)..int x;..|
00001df0  23 65 6e 64 69 66 20 2f  2a 20 3c 2d 20 74 68 69  |#endif /* <- thi|
00001e00  73 20 69 73 20 6e 6f 77  20 73 6b 69 70 70 65 64  |s is now skipped|
00001e10  20 2a 2f 0a 09 7b 0a 09  20 20 2f 2a 20 57 69 62  | */..{..  /* Wib|
00001e20  62 6c 65 20 2a 2f 0a 09  7d 0a 0a 54 68 69 73 20  |ble */..}..This |
00001e30  61 6c 73 6f 20 6d 65 61  6e 73 20 74 68 61 74 20  |also means that |
00001e40  6d 61 63 72 6f 20 64 65  66 69 6e 69 74 69 6f 6e  |macro definition|
00001e50  73 20 69 6e 76 6f 6c 76  69 6e 67 20 62 6c 6f 63  |s involving bloc|
00001e60  6b 73 20 61 72 65 20 6e  6f 20 6c 6f 6e 67 65 72  |ks are no longer|
00001e70  0a 72 65 63 6f 67 6e 69  73 65 64 20 61 73 20 77  |.recognised as w|
00001e80  65 6c 6c 2c 20 73 6f 20  74 68 61 74 0a 0a 09 23  |ell, so that...#|
00001e90  64 65 66 69 6e 65 20 73  77 61 70 28 78 2c 20 79  |define swap(x, y|
00001ea0  29 20 7b 20 69 6e 74 20  74 20 3d 20 78 3b 20 78  |) { int t = x; x|
00001eb0  20 3d 20 79 3b 20 79 20  3d 20 74 3b 20 7d 0a 09  | = y; y = t; }..|
00001ec0  0a 69 73 20 6e 6f 20 6c  6f 6e 67 65 72 20 63 6f  |.is no longer co|
00001ed0  6e 73 69 64 65 72 65 64  20 61 20 66 75 6e 63 74  |nsidered a funct|
00001ee0  69 6f 6e 20 64 65 66 69  6e 69 74 69 6f 6e 20 28  |ion definition (|
00001ef0  69 74 20 77 61 73 20 70  72 65 76 69 6f 75 73 6c  |it was previousl|
00001f00  79 29 2e 0a 0a 30 2e 31  35 0a 0a 28 41 6c 65 78  |y)...0.15..(Alex|
00001f10  29 20 43 68 61 72 61 63  74 65 72 20 6c 69 74 65  |) Character lite|
00001f20  72 61 6c 73 20 61 6e 64  20 73 74 72 69 6e 67 73  |rals and strings|
00001f30  20 61 72 65 20 6e 6f 20  6c 6f 6e 67 65 72 20 73  | are no longer s|
00001f40  63 61 6e 6e 65 64 20 77  69 74 68 69 6e 20 63 6f  |canned within co|
00001f50  6d 6d 65 6e 74 73 2e 0a  54 68 69 73 20 70 72 65  |mments..This pre|
00001f60  76 65 6e 74 73 20 61 20  63 6f 6d 6d 65 6e 74 20  |vents a comment |
00001f70  6c 69 6b 65 20 2f 2a 20  54 68 69 73 20 22 20 63  |like /* This " c|
00001f80  6f 6d 6d 65 6e 74 20 2a  2f 20 66 72 6f 6d 20 6c  |omment */ from l|
00001f90  6f 73 69 6e 67 20 61 6c  6c 20 74 68 65 0a 73 75  |osing all the.su|
00001fa0  62 73 65 71 75 65 6e 74  20 66 75 6e 63 74 69 6f  |bsequent functio|
00001fb0  6e 73 20 69 6e 20 74 68  65 20 66 69 6c 65 2e 0a  |ns in the file..|
00001fc0  0a 30 2e 31 36 0a 0a 41  64 64 20 61 20 62 65 65  |.0.16..Add a bee|
00001fd0  70 20 77 68 65 6e 20 74  68 65 20 66 75 6e 63 74  |p when the funct|
00001fe0  69 6f 6e 20 62 72 6f 77  73 65 72 20 66 61 69 6c  |ion browser fail|
00001ff0  73 20 74 6f 20 66 69 6e  64 20 61 6e 79 20 66 75  |s to find any fu|
00002000  6e 63 74 69 6f 6e 73 20  61 73 20 66 65 65 64 62  |nctions as feedb|
00002010  61 63 6b 0a 74 68 61 74  20 74 68 65 20 62 75 74  |ack.that the but|
00002020  74 6f 6e 20 77 61 73 20  70 72 65 73 73 65 64 2e  |ton was pressed.|
00002030  0a 0a 30 2e 31 37 0a 0a  41 64 64 20 61 20 6d 69  |..0.17..Add a mi|
00002040  6e 69 6d 61 6c 20 63 6f  6d 70 69 6c 65 20 63 6f  |nimal compile co|
00002050  6d 6d 61 6e 64 3b 20 69  74 20 73 69 6d 70 6c 79  |mmand; it simply|
00002060  20 62 72 6f 61 64 63 61  73 74 73 20 61 20 44 61  | broadcasts a Da|
00002070  74 61 4f 70 65 6e 20 6f  6e 20 74 68 65 0a 4d 61  |taOpen on the.Ma|
00002080  6b 65 66 69 6c 65 2c 20  69 66 20 69 74 20 65 78  |kefile, if it ex|
00002090  69 73 74 73 2e 0a 0a 30  2e 31 38 0a 0a 52 65 76  |ists...0.18..Rev|
000020a0  69 73 65 20 73 6f 75 72  63 65 20 63 6f 64 65 20  |ise source code |
000020b0  6c 61 79 6f 75 74 20 69  6e 20 6c 69 62 72 61 72  |layout in librar|
000020c0  79 20 61 72 65 61 2c 20  61 6e 64 20 6d 6f 64 69  |y area, and modi|
000020d0  66 79 20 6c 69 62 72 61  72 79 20 6c 6f 61 64 69  |fy library loadi|
000020e0  6e 67 0a 74 6f 20 6d 61  74 63 68 2e 20 20 4e 6f  |ng.to match.  No|
000020f0  20 66 75 6e 63 74 69 6f  6e 61 6c 20 63 68 61 6e  | functional chan|
00002100  67 65 73 2e 0a 0a 30 2e  31 39 09 44 65 76 65 6c  |ges...0.19.Devel|
00002110  6f 70 6d 65 6e 74 20 76  65 72 73 69 6f 6e 0a 0a  |opment version..|
00002120  41 75 67 6d 65 6e 74 65  64 20 74 68 65 20 63 6f  |Augmented the co|
00002130  6d 70 69 6c 65 20 63 6f  6d 6d 61 6e 64 20 74 6f  |mpile command to|
00002140  20 73 63 61 6e 20 66 6f  72 20 5a 61 70 43 6f 6d  | scan for ZapCom|
00002150  70 69 6c 65 3a 2c 20 61  6e 64 20 61 64 64 65 64  |pile:, and added|
00002160  20 5a 61 70 49 6e 69 74  69 61 6c 3a 0a 70 72 6f  | ZapInitial:.pro|
00002170  63 65 73 73 69 6e 67 2e  20 20 41 64 64 65 64 20  |cessing.  Added |
00002180  74 68 65 20 2a 5f 4d 4f  44 45 20 63 6f 6d 6d 61  |the *_MODE comma|
00002190  6e 64 73 20 66 6f 72 20  75 73 65 20 77 69 74 68  |nds for use with|
000021a0  20 49 6e 69 74 69 61 6c  3a 2e 0a 0a 30 2e 32 30  | Initial:...0.20|
000021b0  09 0a 0a 52 65 6d 6f 76  65 64 20 74 68 65 20 5a  |...Removed the Z|
000021c0  61 70 49 6e 69 74 69 61  6c 20 61 6e 64 20 5a 61  |apInitial and Za|
000021d0  70 43 6f 6d 70 69 6c 65  20 70 72 6f 74 6f 74 79  |pCompile prototy|
000021e0  70 65 73 3a 20 61 62 61  6e 64 6f 6e 20 69 6e 69  |pes: abandon ini|
000021f0  74 69 61 6c 20 61 73 20  74 6f 6f 0a 76 75 6c 6e  |tial as too.vuln|
00002200  65 72 61 62 6c 65 20 74  6f 20 61 74 74 61 63 6b  |erable to attack|
00002210  20 62 79 20 54 72 6f 6a  61 6e 73 2c 20 61 6e 64  | by Trojans, and|
00002220  20 5a 61 70 43 6f 6d 70  69 6c 65 20 6e 65 65 64  | ZapCompile need|
00002230  73 20 6d 75 63 68 20 6d  6f 72 65 20 77 6f 72 6b  |s much more work|
00002240  2e 0a                                             |..|
00002242