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