home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / programs / textual / zap / zmods / Modules / !ZapBASIC / !Help next >
Encoding:
Text File  |  1998-01-14  |  30.7 KB  |  668 lines

  1.  
  2.                    ZapBASIC
  3.                    ========
  4.  
  5. Contents
  6. ========
  7.  
  8. 1.0 : Features.
  9. 2.0 : Installation.
  10. 3.0 : Function.
  11. 4.0 : BASIC colour summary.
  12. 5.0 : Recent History
  13.  
  14. 1.0 Features
  15. ~~~~~~~~~~~~
  16.  
  17. Recent features include:
  18.  * Improved syntax colouring and tokenisation.
  19.  * BASIC assembler code is now being coloured and syntax-checked properly.
  20.  * Simple bracket matching has been implemented.
  21.  * The mode now also offers support for ZapButtons.
  22.  
  23. There have also been a number of more minor changes to the Taskwindow mode.
  24.  
  25.  
  26. 2.0 Installation
  27. ~~~~~~~~~~~~~~~~
  28.  
  29. Copy the application "!ZapBASIC" into an the !Zap.Modules directory and
  30. reboot Zap.
  31.  
  32.  
  33. 3.0 Function
  34. ~~~~~~~~~~~~
  35.   3.10 Editing BASIC
  36.   3.20 Taskwindows
  37.  
  38. 3.10 Editing BASIC
  39. ~~~~~~~~~~~~~~~~~~
  40.  
  41.   3.11 Changing editors/options
  42.   3.12 Using BASIC in ARMBE mode
  43.   3.13 Testing BASIC programs
  44.   3.14 Trouble Shooting
  45.   3.15 Technical detail
  46.  
  47. 3.11 Changing editors/options
  48. -----------------------------
  49.  
  50. There are essentially 3 ways to edit BASIC programs in Zap. Do not be put off
  51. if you dislike the default configuration. You may change most things to your
  52. preference.
  53.  
  54. In the default configuration, BASIC programs are edited in the Zap extension
  55. mode called BASIC. This is designed to be a desktop version of Acorn's ARMBE.
  56. Those people used to ARMBE should find this mode very easy to use. The
  57. program is edited while tokenised and line numbers are shown in the margin
  58. and updated when new lines are inserted.
  59.  
  60. Return and delete act differently from ARMBE, acting as they do for the
  61. standard text mode (this is called stream editing). If you wish them to act
  62. precisely as in ARMBE then switch on the 'lineedit' and 'nonstandard'
  63. options. They will then act in a 'line editor' fashion with Return inserting
  64. a new line rather than splitting the current one. The functions Split and
  65. Join (sF1 and cF1) can then be used to split/join lines.
  66.  
  67. For those people who wish to edit BASIC in tokenised form, and thus with line
  68. numbers accessible, but don't want to see them in the margin, they can be
  69. switched off. Perform the option changes indicated by the clicks:
  70.  
  71.     options.mode.BASIC         ; configure BASIC mode
  72.     options.display.linenumbers.none ; turn off line numbers
  73.     options.mode.TEXT         ; return config mode to text
  74.     options.save options         ; save your Config file
  75.     
  76. For those who prefer to edit BASIC in detokenised form, there is a separate
  77. mode named BASTXT which accomplishes this. To load a single file in using
  78. this mode it is easiest to set the options menu mode to BASTXT and hold down
  79. CTRL key while loading the file. To change to the BASTXT mode permanently,
  80. change the line of the 'Keys' file which reads:
  81.  
  82.     BASIC        &1FFB    BASIC
  83.     
  84. to read:
  85.  
  86.     BASIC        &1FFB    BASTXT
  87.     
  88. In this mode, whenever a file is loaded it is converted into text with line
  89. numbers striped. Saving is the converse. Please note that if the program
  90. contained line number references, then Zap will beep before forcing the BASIC
  91. mode described in 3.12.
  92.  
  93. 3.12 Using BASIC in ARMBE mode
  94. ------------------------------
  95.  
  96. In it's default setup the BASIC mode is designed to emulate ARMBE. Thus line
  97. numbers are displayed in the left margin, and automatic renumbering takes
  98. place as lines are added to the file.  All GOTO and GOSUB line number
  99. references are automatically updated.
  100.  
  101. In line editor mode, the RETURN key inserts a new logical line. To split the
  102. line in two at the current cursor position press SHIFT-F1 and to join two
  103. lines press CTRL-F1. When two lines are joined, a ':' is inserted between the
  104. statements.  If you do not like this, it can be switched off by turning off
  105. the line-edit and non-standard flags on the edit menu.  See above.
  106.  
  107. Text is typed as usual with the proviso that tokens are automatically
  108. expanded. For example 'P.' will be expanded to 'PRINT' when the fill-stop is
  109. typed. Also note that in non-standard editing mode excess spaces are
  110. automatically removed from the end of a line (except when this would prevent
  111. the line wrapping onto the next).  'Unix' tab mode just advances the cursor
  112. to the next tab stop as in ARMBE.  The other tab modes, unix and Column work
  113. as in the text mode.
  114.  
  115. Copying bits out of the middle of lines is performed using the COPY key.
  116. Groups of lines are selected, cut and moved/copied as usual for any text
  117. region.  The regions are automatically renumbered internally. For those (like
  118. me) used to the ARMBE way of moving regions, there is a natural replacement.
  119. For example suppose you wish to move lines 10-50, to before line 100. In the
  120. ARMBE you would do:
  121.  
  122.   Move to line 10, cM cM, move to line 50, cM cM, move to line 100, cB, f12
  123.   
  124. In Zap you do:
  125.  
  126.   Move to line 10, cCOPY, move to line 60, ESCAPE, move to line 100, cV
  127.  
  128. GOTO's are automatically updated. To observe this copy the lines 10 and 20
  129. below several times in a BASIC program.
  130.  
  131.     10 PRINT "HELLO"
  132.     20 GOTO 10
  133.  
  134. Shift-F8 renumbers any program in steps of 10. Please note that line numbers
  135. are not stored in the undo buffer as this would be a waste of space. Thus
  136. after multiple undo's, the line numbers may get out of order. This can be
  137. rectified by renumbering (shift-F8). BASIC programs can be appended by
  138. simply dropping them into the window.
  139.  
  140. 3.13 Testing BASIC programs
  141. ---------------------------
  142.  
  143. Zap provides a number of commands to test out BASIC programs while they are
  144. being edited. The first three start up a new BASIC task and RAM transfers
  145. your program to the new task, loading it a PAGE:
  146.  
  147. BASIC      (scB) This drops you into BASIC with your program loaded at PAGE.
  148. RUN        (scU) This acts as cB and then RUNs the program.
  149. RUNANDQUIT (scF) This acts as cU but automatically quits BASIC when finished.
  150.  
  151. The other two commands save the program first, and then run them from disc.
  152. These are of course slower:
  153.  
  154. COMPILE    (scC) As cU but saves the program first and chains it from disc.
  155. SAVEANDRUN (scE) As cF but saves the program first and chains it from disc.
  156. BASIC_TWRUN      This saves the progam and then runs it in a taskwindow.
  157.  
  158. Most of these commands have their own button, for easy access.
  159.  
  160. Zap calculates the amount of room needed to run the program as the maximum
  161. of: 1) Next slot size 2) Program size+16k 3) Program size * 1.5.
  162.  
  163. ZapBASIC has a command designed to help locate simple syntax errors in
  164. BASIC programs.  BASIC_CHECKBUF checks for mismatched quotes, brackets and
  165. similar simple errors, generatung throwback based on the results.  This
  166. is intended mainly to provide a quick way of locating errors without
  167. typing in reported line numbers.  The command is not currently aware of
  168. comments in assembler.
  169.  
  170. 3.14 Trouble Shooting
  171. ---------------------
  172.  
  173. There are several errors that can occur when editing BASIC in Zap's
  174. tokenised BASIC mode.
  175.  
  176. The first of these is the 'BASIC line too long' error.  This is given when a
  177. single line is longer than 255 characters, a limit imposed by Acorn's BASIC
  178. interpreter.  Attempts to insert characters on this line will then produce
  179. this error.  This feature can be turned off by ticking the 'Allow long lines'
  180. option in the BASIC mode menu.  This allows lines to exceed the 255 character
  181. limit (albeit with warnings) by a few characters - which can help with the
  182. editing of very long lines.  Attempts to save the file with long lines still
  183. present will then generate an error.
  184.  
  185. It is possible, when editing BASIC programs in the tokenised BASIC mode, to
  186. get an error 'cln_backward'. This essentially means that the BASIC program
  187. has become corrupted in some manner and Zap can't redraw the screen -
  188. usually the line numbers have got out of sync.
  189.  
  190. If you get this error it is not normally a cause for panic. The easiest way
  191. to save your program is to switch immediately to text mode (scF1) before
  192. doing anything else. Save it as a text file (if you wish), move to the top
  193. of the file and then switch back to BASIC mode (via scF6), renumber and then
  194. save the program.
  195.  
  196. The most common cause of the 'cln_backward' error in previous versions of
  197. ZapBASIC was inserting regions with multiple lines which were not aligned to
  198. complete BASIC lines. This was possible when selecting regions via the mouse
  199. using 'ADJUST'.  Fortunately, this case has been addressed; the error should
  200. now occur much less frequently.  It remains possible to produce the error,
  201. for example when editing corrupt or non-BASIC programs in 'BASIC' mode, or by
  202. deliberately mangling the BASIC line-numbers by editing them in 'Byte' mode.
  203.  
  204. 3.15 Technical detail
  205. ---------------------
  206.  
  207. Note that a slight modification is made to the BASIC program on loading.
  208. The actual file format edited is a number of lines of the form:
  209.  
  210.  xx yy zz "Tokenised line" &0D
  211.  
  212. Where xx yy zz is the line number in 3 byte text form as stored after a GOTO
  213. or GOSUB statement.
  214.  
  215.  
  216.  
  217. 3.20 Taskwindows
  218. ~~~~~~~~~~~~~~~~
  219. This mode handles task windows.  To create a task window use the
  220. 'Create.Taskwindow' menu option from the icon bar menu, or press ctrl-F12.
  221.  
  222. At any time, changing mode to 'Text' will suspend the task, and changing mode
  223. back to 'TaskWindow' will resume it.
  224.  
  225. There are options on the mode's menu that allow suspension, unlinking and
  226. termination of the task.  When unlinked, tasks continue to run independently
  227. of the output window, changing mode will no longer suspend the task, and
  228. closing the window or quitting Zap will no longer terminate it.  This can be
  229. of use in low-memory conditions.  If a task window becomes permanently
  230. separated from Zap in this manner, it may need to be killed from the Task
  231. Manager.
  232.  
  233. The taskwindow output supports the COPY key and the following VDU actions:
  234.  
  235.     07 CTRL G    Bell.
  236.     08 CTRL H    Move back one character.
  237.     09 CTRL I    Move forward one character.
  238.     10 CTRL J    Move down a line.
  239.     11 CTRL K    Move up a line.
  240.     12 CTRL L    Clear text window.
  241.     13 CTRL M    Move to line start.
  242.     22 CTRL V    Change mode.
  243.     26 CTRL Z    Restore text window.
  244.     28        Define text window.
  245.     30        Home cursor.
  246.     31        Move to x,y (TAB).
  247.  
  248. If you use Olly Betts' wonderful 'Line Editor' module then you'll find it
  249. works within a Zap taskwindow.  See the 3rdParty.Lineeditor directory for the
  250. latest version.  Mode changes are reflected by changing the width and height
  251. of the window.
  252.  
  253. In general control-letter keys are passed on to the task window and function
  254. keys are not.  The following commands (usually bound to the bracketed keys)
  255. are never passed on: Copy (Copy) Copysel (^C) Movesel (^V) Paste (^Y)
  256. Clearsel (^Z) Quote (^Q).  You can use ^C to copy commands to the active
  257. task.
  258.  
  259. If you want to send a control key or function key to the taskwindow (which
  260. is not normally passed on) then this can be done by quoting it with CTRL-Q.
  261. For example, CTRL-Q F1 will cause function key F1 to be expanded in the
  262. taskwindow.
  263.  
  264.  
  265. 4.0 BASIC colour summary
  266. ~~~~~~~~~~~~~~~~~~~~~~~~
  267. A summary of the colours follows...
  268.  
  269. Menu name  - Description
  270. ========================
  271. Comments   - Anything after a REM statement, or in an assembler comment;
  272. Strings       - The contents of sequences starting and ending with quotes;
  273. Tokenised  - Tokenised BASIC commands (unless mentioned below);
  274. x in PROCx - The names of any PROCs and FNs;
  275. PROC/FN       - PROC and FN;
  276. DEF/END       - DEFPROC, DEFFN, ENDPROC, END and STOP (start/finish);
  277. FOR/NEXT   - FOR, NEXT, REPEAT, UNTIL, WHILE and ENDWHILE (loops);
  278. IF/THEN       - IF, THEN, ELSE and ENDIF (conditional);
  279. CASE/WHEN  - CASE, WHEN, OF, OTHERWISE and ENDCASE (case statement);
  280. DATA       - The contents of DATA statements;
  281. HexNumbers - Any numbers that start with an ampersand (&);
  282. Numbers       - Any other numbers in any base;
  283. ( and )       - Ordinary brackets;
  284. { and }       - Curly braces;
  285. [ and ]       - Square brackets;
  286. :;,       - Punctuation;
  287. +-*/=<>       - Symbols;
  288. !?#^       - Indirection, exclamations and queries, hash symbols and powers;
  289. *Commands  - Operating system commands called by using a '*';
  290. Labels       - Assembler labels;
  291. Assembler  - Assembler op-codes, e.g. ADD, MOV, etc;
  292. Directives - Assembler directives.  This also affects & and = at line starts;
  293. Registers  - R0-R15,PC and APCS register names if these are enabled;
  294. Shifts       - LSL, RRX, ROL, etc;
  295. Branches   - B and BL;
  296. LDM/STM       - Multiple loads and stores;
  297. LDR/STR       - Single loads and stores.
  298.  
  299. 5.0 History
  300. ~~~~~~~~~~~
  301. v1.33 - (27-Apr-97)
  302.       * Support for buttons and window-wrap added.
  303.       * Bracket matching.
  304.       * Extensive colouring added.
  305.       * BASIC assembler colouring.
  306.  
  307. A 'warts and all' history follows...
  308.  
  309.             BASIC changes since v1.32
  310.             ~~~~~~~~~~~~~~~~~~~~~~~~~
  311.       * BASIC colouring rewritten to colour assembler comments correctly.
  312.     - A comment is taken as anything beginning with a ';' unless there
  313.       are no colons (outside strings) since the last PRINT, SYS OR VDU
  314.       statement, or  anything after a '\'.  This is much prettier and
  315.       offers visual feedback about when comments are (often incorrectly)
  316.       terminated by ':' characters.
  317.       * The corresponding changes have also been made to the internal
  318.       tokenisation routines, so the following issue has been resolved:
  319.       In the line:
  320.       MOV PC,R14 ; REM return : ] : PRINT "the end" : END
  321.       (which is now considered to be a comment *only* between the
  322.       semi-colon and the colon :-), Zap used to tokenise the REM
  323.       (before the tokenisation routines knew about assembler comments)
  324.       and thus refused to tokenise the subsequent PRINT.  Now,
  325.       everything correctly follows the syntax of the BASIC assembler.
  326.       * Added a new BASIC colour for the numbers of GOTO statements.
  327.       * Added two new BASIC colours for the names of functions and
  328.       procedures.
  329.       * Added colour categories for *commands, DATA statements, two colours
  330.       for numbers (one for hex) one colour for each type of bracket and
  331.       four colour categories of punctuation.
  332.       * Added window wrap to the BASIC mode.  There were some complications
  333.       in that BASIC does not like widths smaller than four, so a new
  334.       version of ZapButtons was produced.
  335.       * Added routines designed to make window update much smoother when
  336.       using window wrap with a selected region.
  337.       * Added buttons to the BASIC mode.  This works well...
  338.       * Added a colour to BASIC mode for assembler labels.
  339.       * More changes to the tokenisation in BASIC's assembler comments.
  340.       In the sequence [ .label ; REM xxx : ] if this had been tokenised
  341.       by a previous version of Zap then the REM would have been
  342.       tokenised.  I was trying to preserve the appearance of this in the
  343.       new version, but this has proved to be an inconsistent strategy.
  344.       Now, old tokenised statements in assembler comments are reduced to
  345.       their top-bit-set tokenised equivalents.
  346.       * Still more changes to BASIC tokenisation of assembly comments.
  347.       Top-bit set characters are now never expanded into BASIC
  348.       commands in these.
  349.       * Detokenisation has been split into two sections internally: one
  350.       section is used by the colouring and redraw routines and the
  351.       other does 'only what is absolutely necessary' to actually
  352.       detokenise.  This means improved colouring has a minimal impact
  353.       on the speed of detokenising in general (as used by the search
  354.       routines for example).
  355.       * The hourglass is now active during the execution of the RENUMBER
  356.       command from BASIC.
  357.       * Thanks to some bug reports (thanks) 'Drop into BASIC' and 'RUN' have
  358.       now started working again. Also the colours in BASIC mode can now
  359.       be successfully saved.  The bits used to store the buttons status
  360.       no-longer overwrite the bottom 5 bits of the mode's width.
  361.       * Some complicated changes to the BASIC tokenisation.  The old approach
  362.       had some fundamental flaws, so it all got rewritten (making three
  363.       times in two weeks so far...) The apparent changes are:
  364.        - Old tokenised expressions in assembler comments are preserved
  365.          so their appearance is now preserved :-)
  366.        - Top-bit set characters inserted into assembler comments are now
  367.          expanded into tokenised BASIC :-(
  368.        - Low-level calculations of tokenised line-lengths are now
  369.          working properly (this was the *big* problem).
  370.       * Assembler colouring added to BASIC mode.  Issues here are:
  371.       - MOVE, AND, EOR and OR are still being tokenised 'underneath' the
  372.         new colouring.  This means clicking on the middle of MOVEQ, ORR,
  373.         AND, and EOR commands behaves in an unintuitive manner.
  374.       - The syntax checking of conditions does not operate if this
  375.         tokenisation is occurring.
  376.       - Most structures do not require spaces after them and may run
  377.         into any following parameters.  Some however need to be
  378.         separated by a space.  The colouring does not perfectly mirror
  379.         the syntax of the BASIC assembler in this respect.
  380.       - No special colour for immediate constants.  This may not happen.
  381.       * Improvements to the BASIC assembly colouring.
  382.       - Instructions now wrap properly around the window edges.
  383.       - Tree search algorithm for decoding assembly instructions
  384.         rewritten, so it is now blindingly fast.  This has allowed
  385.         the entire co-processor and FP instruction sets to be added with
  386.         no noticeable speed penalty.
  387.       - Added full parsing of the IA/IB/DA/DB/FD/FA/ED/EA stack types.
  388.       * Added simple bracket matching to the BASIC mode.  This only deals
  389.       with code on a single line so [... ...] assembler structures split
  390.       over a number of lines will not cause the code to fire.  The delay
  391.       is not configurable at the moment.
  392.       * Included a 'Don't colour code' option in the BASIC menu to turn
  393.       assembler colouring off if for some reason it is not required.
  394.       * Added lots of code to be more 'fussy' about how the end of
  395.       instructions should be in BASIC assembler.
  396.       * Added code to deal with a number of cases where assembler-like
  397.       sequences occur in normal BASIC code.  This section will probably
  398.       never be perfect, but catching 99% of cases should be practical...
  399.       * Added support of colouring of registers in the BASIC assembler.
  400.       The APCS register names are supported, as well as the floating
  401.       point and co-processor register sets.  APCS register name
  402.       colouring can be turned off if desired.
  403.       * Added support for colouring shifts in the BASIC assembler (LSL etc).
  404.       * A bug in the expansion of tokenised BASIC code has been fixed.  If
  405.       an abbreviation of a command whose tokenisation was dependant on
  406.       there being no following alphanumeric character (e.g. QUIT or
  407.       ENDPROC), and there was such a following alphanumeric present, then
  408.       the cursor used to be updated as though tokenisation had occurred.
  409.       * Extensive revamp of the floating point/co-processor instructions
  410.       in the light of lots of helpful information from Darren Salt.
  411.       * Added colours for LDR/STR, LDM/STM and Branches to the BASIC mode.
  412.       * Modified the routine that performs insertions.  These now check to
  413.       see if a multiple-line insertion ends in the middle of a line, and
  414.       if so it inserts the section on a separate line and appends a
  415.       carriage-return to the end of the inserted region.  This sorts out
  416.       a number of problems, including cases where the insertion would
  417.       previously have corrupted the BASIC program or lead to the
  418.       'cln_backwards' error.  The extra carriage-return does however
  419.       mean that the insertions may behave in a slightly counter-intuitive
  420.       manner.
  421.       * ZapBASIC now resets the Taskwindow alias when it quits to point to
  422.       ZapCode:Taskwindow (if <ZapCode$Path> exists) or
  423.       <Zap$Dir>.Code.Taskwindow if it doesn't (see recent history...).
  424.       * Selection constraints have been applied to the BASIC mode.  These
  425.       carefully control the areas which are allowed to be selected.
  426.       The main benefit the user sees is that it is no longer possible to
  427.       copy line numbers into the body of the text.
  428.  
  429.  
  430.             Taskwindow changes since v1.32
  431.             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  432.       * Improved keyboard handling when using the QUOTE command (cQ).
  433.     - Routines designed to expand quoted function key presses in
  434.       taskwindows no longer fire when other unusual control combinations
  435.       are pressed.  This means (amongst other things) that 'QUOTE'ing c@
  436.       now correctly produces a character zero, and that 'QUOTE'ing c_,
  437.       c[, c], c\, and c^ functions as expected.
  438.     - 'QUOTE'ing function keys when not in a taskwindow still produces
  439.       short encoded strings, though.
  440.       * Primitive taskwindow colouring implemented.  There are currently
  441.       colours for any lines starting with > or *.  There are a number
  442.       of cases where taskwindow colouring is inappropriate.  If using
  443.       unusual languages, prompts or defining text windows then the
  444.       colours may be better off set to the default foreground colour.
  445.       * Now c@ (sc2) works correctly in taskwindows and passes the correct
  446.       control code to the LineEditor module.  Binding it to "CHAR 0" in
  447.       the default keymap would also make good sense.  On RPCs c@ is
  448.       not the same as sc2 (it's sc') whose Zap keynumber I don't
  449.       know at the moment...
  450.  
  451. Alas, ZapBASIC seems to have become trickleware - recent history:
  452.  
  453. 26-September-97
  454.  * A large number of bugfixes over a period of time :|
  455.  * 'Force renumber rate' option to minimise the renumber start and step
  456.    figures.  This is a bit of a temporary measure, to help with the
  457.    combination of large BASIC programs and multiple libraries.
  458.  * Added the FINDFUNCTION command and the associated 'FIND' button which
  459.    searches for references to function and procedure definitions, and the
  460.    definitions of assembler labels.  This can be a very useful button.
  461.    The FINDFUNCTION command uses a protocol which has been designed to work
  462.    in all modes, but so far BASIC mode is the only client.
  463.  
  464. 15-Aug-97
  465.  * Added the 'Free click in keywords' option for those who don't like the
  466.    default click behaviour being unusual in BASIC mode.  This allows
  467.    ZapBASIC's behaviour when keywords are clicked on to be configured to be
  468.    loke that of most other Zap modes.  The redraw of the cursor with this
  469.    option on is not perfect and it is off by default.
  470.  * Added the 'Allow long lines' option which permits lines to exceed the
  471.    255 character limit imposed by BASIC.  This is to allow very long
  472.    tokenised lines to be more easily edited; where detokenising a single 
  473.    token can exceed the maximum length.  Attempts to save files with long
  474.    lines will fail with error messages, directing the user to the
  475.    problematic line.
  476.  * Reorganised the 'Menus' file slightly to accomodate the options which
  477.    are altered least frequently.
  478.  
  479. 09-Aug-97
  480.  * Disabled the changes connected with retokenising lines made on 28-Jul-97
  481.    for users with Zap version 1.35 - as these were causing problems when
  482.    MOVESEL (cV) was used - sorry.
  483.  
  484. 08-Aug-97
  485.  * The 'LineNumber' colour has been removed.  Line numbers in GOTO/GOSUB
  486.    statements are now coloured the same colour as any line numbers in the
  487.    left-hand margin.
  488.  * The colour category has been reused to provide a colour for function and
  489.    proceedure names.  Colouring these the same as the PROC/DEFPROC that
  490.    preceeded it proved not to be universally popular.
  491.  
  492. 05-Aug-97
  493.  * The ASSEMBLE instruction now disassembles 'Undefined instruction's
  494.    as DCDs.
  495.  
  496. 28-Jul-97
  497.  * Insertions and deletions which take place on a single line have been
  498.    recoded.  These now finish by retokenising the line.  Insertions are made
  499.    as though they are being typed, so that, for example, pasting a REM into
  500.    the start of a line now detokenises the rest of the line before
  501.    commenting it out.  Also, it is no longer possible to exceed the limit
  502.    to the length of BASIC lines by pasting in code.
  503.    There are still some unusual artefacts present: in a top-bit-set
  504.    character is pasted outside a string, then it is taken to be a token, and
  505.    if a tokenised comand is pasted into a string or a REMark then the top-
  506.    bit-set character-equivalent is inserted.  The retokenisation of the line
  507.    after a paste can have some unusual effects.  If tokenisation elsewhere
  508.    on the line is affected then undoing the change may position the cursor
  509.    in an unintuitive manner.  Also, if the selected area's tokenisation
  510.    changes, the size of the selection is not adjusted accordingly.
  511.  
  512. 26-Jul-97
  513.  * '!Edit tab' mode now searches backwards through the file to find a
  514.    line long enough to provide it with a guide if the previous line
  515.    is inadequate for this purpose.  If no such line is found the
  516.    default tab setting of 8 columns is used.
  517.  
  518. 23-Jul-97
  519.  * Bugs in colouring of REPEAT command cured.  This can now be followed by
  520.    correctly-coloured *commands.
  521.  
  522. 21-Jul-97
  523.  * Minor changes mainly affecting the colouring of crunched BASIC assembler.
  524.    OPTpass and DCDconst are now coloured correctly.
  525.  * REMarks when used in assembler to start comments now no longer adversely
  526.    affect the colouring of preceding instructions.
  527.  
  528. 19-Jul-97
  529.  * Added two new buttons and four new commands designed to allow sections of
  530.    BASIC code to be easily commented out with REMarks.
  531.  
  532. 17-Jul-97
  533.  * Colouring of DEFs and assembler comments had been recently broken.
  534.  * Zap now makes some attempt to load files with appended data and corrupt
  535.    BASIC files.  Because it can't cope well with redrawing arbitrary data
  536.    sequences, any appended DATA is truncated, and corrupt files are loaded
  537.    only up to the point of serious corruption.  There are three new warnings:
  538.     * 'This BASIC file has a missing terminator' - which means that the file
  539.       should be saved from Zap before any attempt is made to run it.
  540.     * 'Appended data truncated - beware of data loss' - given when a BASIC
  541.        program with appended data is loaded into Zap.  Take heed of this
  542.        warning: saving the file will lose the truncated data.
  543.     * 'BASIC file seriously corrupted - truncated on loading' - Zap has
  544.       attempted to load a seriously corrupted BASIC file, but it failed to
  545.       complete the process.  Take heed of this warning: saving the file
  546.       will lose data.
  547.    These changes mean that it is possible to view files like 'DEARCHIVE/BAS'
  548.    in BASIC mode.  They may also help with recovering parts of corrupted
  549.    BASIC files.  However, they can be potentially dangerous - be warned.
  550.    It is still possible to view the entire files by loading them into text
  551.    mode (usually by ctrl-dragging them to the icon-bar) and then switching
  552.    to BASIC mode.
  553.  * New separate colour categories for:
  554.     1: PROC and FN - these now colour the keywords and their names;
  555.     2: DEFPROC, DEFFN and ENDPROC;
  556.     3: FOR, NEXT, REPEAT, UNTIL, WHILE and ENDWHILE;
  557.     4: IF THEN ELSE ENDIF;
  558.     5: CASE WHEN OF OTHERWISE ENDCASE.
  559.    Some of the old categories (e.g. those allowing separate colouring of the
  560.    names of PROCs, FNs, DEFPROCs and DEFFNs) have been scrapped to make some
  561.    room for these.  It is recognised that these colours will be missed by
  562.    some people - sorry.
  563.  * Improved colouring of some sequences in compressed assembler.  Notably,
  564.    the colouring of ORR0,0,#1 is improved, as is that of MOVPC,R14.
  565.  * Improved colouring of the & directive in compressed sequences.
  566.  * Colouring of DEFPROCx*FX15 improved.  It is still coloured incorrectly
  567.    if the procedure has parameters and the BASIC tokeniser isn't aware
  568.    of the * command in this type of sequence (i.e. it'll try to tokenise any
  569.    keywords it finds if you try to edit such a sequence), so it's best to
  570.    avoid using them.
  571.  * Some improvements to allow (hopefully) better detection of sequences
  572.    which look like assembler in ordinary BASIC - e.g. SWI += 1.
  573.  
  574. 15-Jul-97
  575.  * Two bugfixes affecting which characters terminate assembler labels.
  576.  
  577. 12-Jul-97
  578.  * Structures such as MOVEQ in assembler (i.e. ones which contain BASIC
  579.    tokens) are now coloured correctly when split across line ends.
  580.  * The historical problem involving inserting code at a point just beyond
  581.    the last line of a BASIC program no longer results in the first three
  582.    letters of the inserted text being 'consumed' by the line number.
  583.  
  584. 10-Jul-97
  585.  * Bugfix for last version - colour wrapping had been quite broken in this.
  586.  
  587. 08-Jul-97
  588.  * Fed lots of files through a BASIC compression program and then viewed
  589.    the results.  As a result of this a number of colouring problems were
  590.    identified.  Some of these have been fixed:
  591.    * The colouring of DEFs (as in DEFPROCs) had a tendency to penetrate
  592.      following BASIC if there were no spaces colons or brackets around.
  593.    * In 'IFA=0THENE=0' the THEN was not considered to terminate the number
  594.      perfectly.  This meant the E was being coloured as a number (it was
  595.      treating it as an exponent which zero was being raised to).
  596.    * Ampersands are now considered to terminate assembler comments.  This
  597.      means '.label&&0' is now being coloured properly.
  598.    * Directives (e.g. OPT and ALIGN) no longer need trailing spaces for them
  599.      to be coloured correctly.  This currently has the side effect that
  600.      BASIC variables with the same names are coloured incorrectly if they
  601.      are followed by an exclamation point (e.g. DCD!0=0).
  602.  * Extended the BASIC_CHECKBUF command.  This now generates throwback and
  603.    has its own button devoted to it.
  604.  * Button bar redesigned so that more options are available from it.
  605.  
  606. 28-Jun-97
  607.  * /Very/ primitive support for ZapSpell added.  Only the contents of
  608.    comments and REM statements are checked.
  609.  * Bracket matching added to Taskwindow mode.
  610.  * Work on the BASIC_CHECKBUF command started.
  611.  
  612. 23-Jun-97
  613.  * Problems with clicking in a BAISC window affecting the selection in
  614.    another window fixed.
  615.  
  616. 16-Jun-97
  617.  * Problems with ALIGN not being coloured properly resolved.
  618.  
  619. 05-Jun-97
  620.  * Problem with the colours in Taskwindow mode not being saved fixed.
  621.  
  622. 01-Jun-97
  623.  * Internal confusion over some of the buttons' flags sorted out.
  624.  
  625. 31-May-97
  626.  * A change to the selection constraints which removes a bug which meant
  627.      that the line number on the first line of the program could be selected
  628.      and copied into the body of the program.
  629.  
  630. 28-May-97
  631.  * Minor tweaks to the colouring of conditional instructions with the 'P'
  632.      extension in assembler, such as TEQP.
  633.  
  634. 20-May-97
  635.  * A severe problem with variables starting with the '`' symbol fixed.
  636.  
  637. 16-May-97
  638.  * '=', when used as a function terminator was sometimes colouring any
  639.      subsequent string as a number.
  640.  * A bug meant that lines like 'equd$ = ""' in BASIC were being coloured as
  641.      assembler directives.
  642.  
  643. 13-May-97
  644.  * Removed hard-wired aliasing of the Taskwindow command within ZapBASIC.
  645.    This was done in part to cooperate with the different alias required by
  646.    Darren Salt's new taskwindow running program.
  647.  * Selection constraints added along similar lines to those originally
  648.    envisaged by Darren Salt.
  649.  
  650. 12-May-97
  651.  * Cured bug affecting command completion after colons in lines.
  652.  * Cured old selection bug triggered by dragging alternate edges of the
  653.    selection with ADJUST in BASIC mode.
  654.  
  655. Please note that saving any of the new options in the BASIC mode will cause
  656. problems if you should decide to revert to v1.32 of ZapBASIC - the solution
  657. to this problem is to save the options from the new BASIC mode with
  658. everything turned *off* - you can then go back to ZapBASIC v1.32.
  659.  
  660. Also note that the ZapBASIC module (and also much of this !Help file)
  661. remains copyright Dominic Symes, and should not be distributed without his
  662. permission.  Thanks are due to him for giving his permission for this
  663. distribution to be made.
  664.  
  665. Enjoy
  666. __________
  667.  |im |yler  The Mandala Centre - tt@cryogen.com - http://www.mandala.co.uk
  668.