Home » Recent acquisitions » Acorn ADFS disks » adfs_ArchimedesWorld_199403.adf » Disk1Mar94 » !AWMar94/Goodies/SquishDemo/!Squish/!Help

!AWMar94/Goodies/SquishDemo/!Squish/!Help

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 » Recent acquisitions » Acorn ADFS disks » adfs_ArchimedesWorld_199403.adf » Disk1Mar94
Filename: !AWMar94/Goodies/SquishDemo/!Squish/!Help
Read OK:
File size: 4A16 bytes
Load address: 0000
Exec address: 0000
Duplicates

There is 1 duplicate copy of this file in the archive:

File contents
                                   !Squish
                                   -------
                                Release  2.38


ARM-Code BASIC Squishing software : Kevin J Swinton
C RISC OS WIMP Interface software : Stuart Swinton

� Kevin J Swinton and Stuart Swinton 1990/1991/1992
Published by : Unique Software       1993


-----------------------------------------------------------------------------
                                  Disclaimer
-----------------------------------------------------------------------------

 The software is provided "as is". Neither the authors or Unique Software
 make any warranty, express or implied, of the merchantability of this
 software or its fitness for any particular purpose. In no circumstances
 shall either be liable for any damage, loss of profits, or any indirect or
 consequential loss arising out of the use of this software or inability to
 use this software, even if advised of the possibility of such loss.


-----------------------------------------------------------------------------
                      Rules and regulations for !Squish
-----------------------------------------------------------------------------

* Squish is not perfect. After an extremely long development time, Squish
  has reached the stage whereby it can squash any program by someone with a
  respect for 'sensible' programming. One can lecture about the principles of
  good design in today's competing environment, but no. Though suffice to
  mention a statement made by Dijkstra in 1979, on the subject of software:

  "The advent of cheap and powerful devices will put Software Engineering
   back 25 years."

  This, of course, is absolutely true.

  The BBC BASIC interpreter is quite simple. It's syntax rules are good,
  but very flexible. This allows people to tackle the subject of programming
  in very different ways. Squish uses general algorithms to reduce the size
  of programs, but there are restrictions should you want the resulting file
  to work! These are listed below, along with hints on how to avoid these.


------------------------- Restrictions with Squish --------------------------


* GOTO, GOSUB and RESTORE.

  Squish will simply ignore these commands by skipping past them. Nowadays it
  is absolutely unforgiveable to use GOTO/GOSUB so Squish will NEVER support
  these. RESTORE commands are generally OK, but

  a) don't use formula based RESTORE commands if you can avoid doing so, and
  b) don't RESTORE pointers to blank lines/REMs that will be deleted.

  Please note that, if a program has been written sensibly, it is perfectly
  possible for it's GOTO, GOSUB, and/or RESTORE commands to be squished and
  still work correctly. (Eg. RISC User's !Dustbin.)


          ----------------------------------------------------------


* DATA statements

  If a variable is an element of a DATA statement, it will need to be
  renamed along with the other references to it throughout the program.

  In DATA statements, BASIC determines a string from a variable by the fact
  that the former is enclosed within quotation marks, although the syntax
  does allow certain strings to exclude quotation marks.

  Squish works on the principle that ALL strings are enclosed within
  quotation marks. If not, the DATA element is liable to be renamed.
  For example :

  100 DATA window                <- This will be renamed
  100 DATA "window"              <- This will NOT be renamed


          ----------------------------------------------------------


* Pointless lines.

  Don't use pointless lines to separate PROCedures etc.. Use blank/commented
  lines instead, else Squish will attempt to rename the text inbetween
  (should you ask Squish to "Rename Variables", but not "Remove REMs etc."
  first.)

  Eg. :

  ENDPROC
  :
  : --- Routine to read TIME --- <- Squish will assume these are VARIABLEs
  :
  DEF PROCget_time

  The annotation of programs using REM statements is the correct method. So,
  to implement the above example :

  ENDPROC
  :
  : REM Routine to read TIME     <- Correct style, acceptable by Squish
  :
  DEF PROCget_time


          ----------------------------------------------------------


* The EVAL problem.

  This refers to FuNctions like :
  
  A% = EVAL( "FNdoodah(" + STR$ input + ")" )

  Squish sees "FNdoodah" as a constant (quite correctly) and does not rename
  it. There are other language constructs available that can be used in place
  of this method, and should be whenever possible (particularly if the
  program is to be Squished at a later date.) Note that EVAL statements which
  use FN/PROC identifiers can be used by renaming variables WITHOUT the
  "PROCs" and "FNs" options.


          ----------------------------------------------------------


-----------------------------------------------------------------------------
   Special Notes on !Squish for programmers (and other interested parties)
-----------------------------------------------------------------------------


* When determining if a line is blank, the one thing that seperates a 'dummy'
  line from a real one is if it contains a KEYWORD. The routine that checks
  for this simply scans the tokenised line for a hex value of &7F or greater.
  If this is the case, a KEYWORD is present, and the line is taken to be
  'real', regardless of whether or not it is ever executed.
  The exceptions are lines that consist of a '*' command, a line containing a
  return assignment (eg. =result$), or a line consisting solely of '[', or
  ']', as these are all valid lines containing no KEYWORDs.

* When removing SPACEs from a line, there are many conditions whereupon a
  single SPACE must be left so that the BASIC interpreter can make sense of
  what is going on. For an example, Squishing 'X = Y NOT Z' can only be
  Squished to 'X=Y NOTZ', because taking the remaining SPACE out results in
  the BASIC interpreter recognising this as an assignment, as opposed to a
  logical operation. Although Squish doesn't take all of these conditions
  into account, it still provides a more than adequate reduction rate.

* Note that recognising if you are in Assembler or not depends entirely
  upon how many '[' and ']' signs have been encountered, and when Squishing
  assembler commands, all statements are left with a single SPACE between
  each field of the statement. ';' comments are also deleted.
  (Although the idea of Squish is to Squish BASIC programs, the assembler
  Squisher has been included to improve those programs that use small amounts
  of ARM code, just to please those who like to do so.)

* To remove REM statements, Squish scans the tokenised line for the Hex
  value for 'REM'. If this is found, the line is shortened appropriately.
  This works fine, but there is one occasion when this doesn't work, and that
  is when you put a REM statement after a DATA statement, as the interpreter
  stores this as a string, failing to tokenise it.

* As mentioned above, everything following a DATA statement is stored as pure
  ASCII, and the same also applies to REM statements, so if you concatenate a
  program without removing REM statements, if 2 (or more) REMs are Squished
  together, the supplementary REMs are de-tokenised into ASCII form, which is
  why Squished REM statements look a little weird.

KJS (08-08-90) - Release version 1.00


-----------------------------------------------------------------------------
                                  History file
-----------------------------------------------------------------------------


* Amended the blank-line removal code to account for OTHERWISE statements
  being present [OTHERWISE->&7F]
* Restructured logic format for IF... statements. Previously 'dead' logic has
  now been redesigned to cope with IF... statements without THENs.
* Additional logic to ensure 'OTHERWISE' keywords start on a new line.

  KJS (10-08-90) - Release version 1.01


* Inserted additional code to rename variables.

  KJS (21-09-90) - Release version 1.02


* Variable renamer now copes with ARM code, and instructions are not
  treated as variables. (eg. LDMEQIA.)
* RESTORE statements are left alone (BASIC encodes ensuing pointers), making
  renumbering possible after compaction.
* Labels such as '.Address' are not treated as an ADD instruction (variable
  code used to check the ADD part and be fooled by this.)
* Option of fast/slow compaction inserted. Slow allows Squish to compact as
  a background task, whilst fast allows Squish to control the system during
  compaction.
* Renaming code altered to produce liberally-spread variable names, a feature
  from the old BBC days, as the interpreter takes less time to identify the
  variable it wants.

  KJS (25-09-90) - Release version 1.03


* Additional code added so that semicolon-text in Assembly language is not
  treated as variables (if you Squish a program using the rename variable
  option WITHOUT removing REMs etc., REMarks in Assembly language were
  renamed)
* Additional code also added to the renaming procedures, since, when using
  Assembly language, AND and EOR instructions are tokenised as if they were
  BASIC instructions.

  KJS (03-10-90) - Release version 1.04


* Logic in the SPACE-Squishing procedures restructured for DIM statements.
* Save-over-original option altered to a 'final-info' one, so that the old
  and new program-length, and the compression rate, may be seen.
* Procedure that removes SPACEs rewritten to be a lot speedier.

  KJS (22-10-90) - Release version 1.05


* Additional code added to cope with the BY keyword used in conjunction with
  certain graphic commands. BY itself is stored as ASCII text straight after
  the tokenised graphic keyword.

  KJS (25-10-90) - Release version 1.06


* Algorithms completely rewritten in ARM Code.
* Algorithms VASTLY improved.
  (Has competently Squished everything tried so far.)
* Windows redrawn from scratch.
* User interface completely rewritten in C.

  KJS (22-08-91) - Release version 2.00


* User interface
    - bugs sorted out.
    - made completely !Help compatible.
    - pause facility / swap between fast & slow options implemented
    - etc. etc.

  Izzy (26-10-91) - Release version 2.10


* ARM and C interface recoded to allow >8k programs to be loaded and have
  their variables compacted. Filename extraction for in-memory-data-transfers
  implemented (so why doesn't everyone else use it?)

  Izzy (23-11-91) - Release version 2.11


* Problem with 'flex_midextend' cured by using 'flex_extend' instead.

  Izzy (24-12-91) - Release version 2.12


* 'Rename under flex' bugs solved. Only ALI-vars still remain a problem.

  KJS (31-12-91) - Release version 2.14 (2.13 is unlucky, man!)


* DIV and MOD spacing problems removed (why had I not noticed this before?)
  All variables now forced to lower-case to remove FN/PC/IF/ON problems
  (why had I not noticed this either?!)

  KJS (12-01-92) - Release version 2.15


* Renaming of program variables vastly restructured. Now renames ARM Code
  variables properly, without renaming shift mnemonics. Help file redone
  to a more 'serious programmer attitude' style ... NOT!

  KJS (26-01-92) - Release version 2.16


* Minor modifications to run under RISC OS 3.10

  Izzy (18-12-92) - Release version 2.17


* Major modifications to run under RISC OS 3.10. Squish can now save without
  constantly falling over.

  Izzy (07-01-93) - Release version 2.18


* Help system rewritten. Templates generally 'tidied' up. Modification to
  SPACE remover to correctly handle removal of multiple SPACEs within
  particular DIM statements.

  KJS (08-01-93) - Release version 2.19


* ERROR EXT problem solved. OPT problem solved, specifically renaming of 1
  character pass variables. Register renaming solved. Can now rename ARM
  registers that have been assigned to 1 character variable names. Anomalies
  with C interface (WIMP drags, IMDTs etc.) solved. Validation of BASIC file
  included, as per !Edit. BackDrop icon created. Adjust click on main window
  forces filer window to appear.

  KJS (11-01-93) - Release version 2.20


* REM removal code rewritten. Squish can now remove comments from ARM
  assembler correctly. (Assembler can have further statements after a
  comment, BASIC can't.)
* Variable renamer changed to cope with the rewritten REM code. Can now
  rename variables AFTER concatenation, without renaming all the embedded
  ARM comments.
* Save routines now made more robust.

  KJS / Izzy (13-01-93) - Release version 2.21


* C interface updated. RAM transfers work correctly. Interface examined for
  consistency.
* ARM routines compared to BASIC CRUNCH command - ARM routines found to be
  somewhat better.
* Save routine now suffixes filename with S or Q as appropriate. Code fixed
  to prevent renaming ARM variables that begin with a register definition
  (eg. "r13pointer"). Problem with *commands solved.

  KJS / Izzy (19-01-93) - Release version 2.22


* A 'bug' in the "Pause" feature removed. If squishing is paused, pressing
  either the Cancel or the Fast icon failed to reset the Pause status, and
  subsequent icons reflected erroneous states.

  KJS (24-02-93) - Release version 2.23


* SERIOUS problem in the messaging system removed, which had only became
  apparent after release RISC OS 3.10 was fitted. Option added to the Rename
  algorithm to allow suppression of renaming PROCEDURE and/or FUNCTION
  identifiers.

  KJS/Izzy (25-02-93) - Release version 2.24


* Dialogue box handler code completely re-written. Squish can now be quit
  from the menu without a problem. Modified RAM save routine slightly -
  now if you save using an in-memory data transfer the data is considered
  safe. It will be up to the other package to warn the user that the data
  is unsafe, since Squish will by now have effectively finished processing.
* Bug in rename variables fixed. If a *command was part of an IF...THEN
  construct, it was renamed.

  Izzy (01-03-93) - Release version 2.25


* Put in code to differentiate between a PREQUIT message being application
  specific / a general desktop shutdown routine.

  Izzy (02-03-93) - Release version 2.26


* Completely re-wrote dialogue box code. All dboxes now self-centre across
  MODE changes.
* Changed the code back so that in-memory data transfers are NOT considered
  safe.
* Options for squishing are now automatically displayed if none are selected
  when attempting to squish a program.
* Messages file and templates tidied up. Help messages for menus taken out
  as not supported by the current C compiler.

  Izzy (03-03-93) - Release version 2.27


* Squish will now intelligently deal with an attempt to quit the program.
* The RISC OS desktop boot file facility is also now supported.
* Extra code inserted to allow identifiers to be 'locked' from renaming.
  Principally, this allows libraries to have global PROC/FN/vars exported
  to individual RunImages without the need to concatenate, also retaining
  their uncompressed format. The syntax for listing identifiers is held
  within REM statements in the source program, as per example :

  100 REM LOCK <identifier 1> , <identifier 2> , ... , <identifier n>

  so a WIMP program which uses a global WIMP procedure library may
  have a LOCK statement something like this :

  100 REM LOCK PROCopen_window , PROCclose_window , WINDOW% , ICON_TEXT$

  Of course, both the main RunImage AND the library itself will need to have
  a copy of the LOCK statements, else one will have it's identifiers renamed
  and the other won't. Also note that subscripts must be omitted, so a LOCK
  cannot have something like this :

  100 REM LOCK PROCedure_OpenWindow( x% )     <- the "( x% )" should be
                                                 omitted from this line

  KJS/Izzy (17-03-93) - Release version 2.28


* C interface now allows multiple re-squish attempts without losing the list
  of LOCKed variables. Also advises when re-squishing may be advisable due to
  lack of memory when renaming variables.
* All calculations on savings are now based on the original program size.
* Help now given on SAVE dialogue box.

  Izzy (18-03-93) - Release version 2.29


* Bug in variable renamer fixed. One character identifiers caused problems
  in some places, especially in the third opcode field, in use as an
  immediate (eg. #X).

  KJS (19-03-93) - Release version 2.30


* Put in new save routines to use the drag-a-sprite facility.

  Izzy (21-03-93) - Release version 2.31


* Iconise facility implemented fully. Now when iconised, Squish will
  continue to process the BASIC program. When finished the iconbar
  sprite will change to indicate that the process has been completed,
  but that the window is still iconised. Double click on the iconised
  window to continue. Also fixed minor bug when using ADJUST on the
  close window icon to open the programs directory.

  Izzy (01-04-93) - Release version 2.32


* Patch over initialisation routines to cope with new Wimp_Initialise
  specification, as C library doesn't allow for this.

  Izzy (03-04-93) - Release version 2.33


* Patch over 'wimpt' routines. Had to insert our task handle into the
  'wimpt' routines workspace directly, as Acorn have forgotten to tell
  us that 'xfer_send' uses, for in memory data transfers, the 'wimpt_task'
  function - which meant that Squish version 2.33 fell over when doing
  in-memory data transfers.

  Izzy (06-04-93) - Release version 2.34


* Put in hourglass routines to include the LED indicator and changed
  message warning order when you attempt to Squish a program.

              No LED : Initialising general internal routines,
             Top LED : Extracting LOCK information,
          Bottom LED : Initialising variables.
   

* SYS reduction code altered, so that renaming of OS_WriteC (SYS &0)
  does not have it's only zero stripped off by the leading_zero code.

  KJS/Izzy (07-04-93) - Release version 2.35


* Fixed * command bug.

  KJS (15-04-93) - Release version 2.36


* Adjusted !Run file so as not to re-instate a CLib that is already active.

  Izzy (10-05-93) - Release version 2.37


* Removed bug in EOL removal code. Now removes EOL rubbish, without also
  removing out of bound characters at the end of a * command.

  KJS (29-07-93) - Release version 2.38


-----------------------------------------------------------------------------
                                  Special note
-----------------------------------------------------------------------------

* After concatenation, although the tokenised line may be less than or equal
  to 255 bytes long, the UNtokenised may be a lot longer. BASIC editors do
  not like this (sad isn't it?) and kick up errors of the sort : 'Line xxxx
  is too long to be edited.'. Please note that this is not a 'bug' with
  Squish, but a limitation of the editors.

------------------------------ End Of Help File -----------------------------
00000000  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00000020  20 20 20 21 53 71 75 69  73 68 0a 20 20 20 20 20  |   !Squish.     |
00000030  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000040  20 20 20 20 20 20 20 20  20 20 20 20 20 20 2d 2d  |              --|
00000050  2d 2d 2d 2d 2d 0a 20 20  20 20 20 20 20 20 20 20  |-----.          |
00000060  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000070  20 20 20 20 20 20 52 65  6c 65 61 73 65 20 20 32  |      Release  2|
00000080  2e 33 38 0a 0a 0a 41 52  4d 2d 43 6f 64 65 20 42  |.38...ARM-Code B|
00000090  41 53 49 43 20 53 71 75  69 73 68 69 6e 67 20 73  |ASIC Squishing s|
000000a0  6f 66 74 77 61 72 65 20  3a 20 4b 65 76 69 6e 20  |oftware : Kevin |
000000b0  4a 20 53 77 69 6e 74 6f  6e 0a 43 20 52 49 53 43  |J Swinton.C RISC|
000000c0  20 4f 53 20 57 49 4d 50  20 49 6e 74 65 72 66 61  | OS WIMP Interfa|
000000d0  63 65 20 73 6f 66 74 77  61 72 65 20 3a 20 53 74  |ce software : St|
000000e0  75 61 72 74 20 53 77 69  6e 74 6f 6e 0a 0a a9 20  |uart Swinton... |
000000f0  4b 65 76 69 6e 20 4a 20  53 77 69 6e 74 6f 6e 20  |Kevin J Swinton |
00000100  61 6e 64 20 53 74 75 61  72 74 20 53 77 69 6e 74  |and Stuart Swint|
00000110  6f 6e 20 31 39 39 30 2f  31 39 39 31 2f 31 39 39  |on 1990/1991/199|
00000120  32 0a 50 75 62 6c 69 73  68 65 64 20 62 79 20 3a  |2.Published by :|
00000130  20 55 6e 69 71 75 65 20  53 6f 66 74 77 61 72 65  | Unique Software|
00000140  20 20 20 20 20 20 20 31  39 39 33 0a 0a 0a 2d 2d  |       1993...--|
00000150  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000190  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0a 20 20 20 20  |-----------.    |
000001a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000001b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 44 69  |              Di|
000001c0  73 63 6c 61 69 6d 65 72  0a 2d 2d 2d 2d 2d 2d 2d  |sclaimer.-------|
000001d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000210  2d 2d 2d 2d 2d 2d 0a 0a  20 54 68 65 20 73 6f 66  |------.. The sof|
00000220  74 77 61 72 65 20 69 73  20 70 72 6f 76 69 64 65  |tware is provide|
00000230  64 20 22 61 73 20 69 73  22 2e 20 4e 65 69 74 68  |d "as is". Neith|
00000240  65 72 20 74 68 65 20 61  75 74 68 6f 72 73 20 6f  |er the authors o|
00000250  72 20 55 6e 69 71 75 65  20 53 6f 66 74 77 61 72  |r Unique Softwar|
00000260  65 0a 20 6d 61 6b 65 20  61 6e 79 20 77 61 72 72  |e. make any warr|
00000270  61 6e 74 79 2c 20 65 78  70 72 65 73 73 20 6f 72  |anty, express or|
00000280  20 69 6d 70 6c 69 65 64  2c 20 6f 66 20 74 68 65  | implied, of the|
00000290  20 6d 65 72 63 68 61 6e  74 61 62 69 6c 69 74 79  | merchantability|
000002a0  20 6f 66 20 74 68 69 73  0a 20 73 6f 66 74 77 61  | of this. softwa|
000002b0  72 65 20 6f 72 20 69 74  73 20 66 69 74 6e 65 73  |re or its fitnes|
000002c0  73 20 66 6f 72 20 61 6e  79 20 70 61 72 74 69 63  |s for any partic|
000002d0  75 6c 61 72 20 70 75 72  70 6f 73 65 2e 20 49 6e  |ular purpose. In|
000002e0  20 6e 6f 20 63 69 72 63  75 6d 73 74 61 6e 63 65  | no circumstance|
000002f0  73 0a 20 73 68 61 6c 6c  20 65 69 74 68 65 72 20  |s. shall either |
00000300  62 65 20 6c 69 61 62 6c  65 20 66 6f 72 20 61 6e  |be liable for an|
00000310  79 20 64 61 6d 61 67 65  2c 20 6c 6f 73 73 20 6f  |y damage, loss o|
00000320  66 20 70 72 6f 66 69 74  73 2c 20 6f 72 20 61 6e  |f profits, or an|
00000330  79 20 69 6e 64 69 72 65  63 74 20 6f 72 0a 20 63  |y indirect or. c|
00000340  6f 6e 73 65 71 75 65 6e  74 69 61 6c 20 6c 6f 73  |onsequential los|
00000350  73 20 61 72 69 73 69 6e  67 20 6f 75 74 20 6f 66  |s arising out of|
00000360  20 74 68 65 20 75 73 65  20 6f 66 20 74 68 69 73  | the use of this|
00000370  20 73 6f 66 74 77 61 72  65 20 6f 72 20 69 6e 61  | software or ina|
00000380  62 69 6c 69 74 79 20 74  6f 0a 20 75 73 65 20 74  |bility to. use t|
00000390  68 69 73 20 73 6f 66 74  77 61 72 65 2c 20 65 76  |his software, ev|
000003a0  65 6e 20 69 66 20 61 64  76 69 73 65 64 20 6f 66  |en if advised of|
000003b0  20 74 68 65 20 70 6f 73  73 69 62 69 6c 69 74 79  | the possibility|
000003c0  20 6f 66 20 73 75 63 68  20 6c 6f 73 73 2e 0a 0a  | of such loss...|
000003d0  0a 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.---------------|
000003e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000410  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0a 20  |--------------. |
00000420  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000430  20 20 20 20 20 52 75 6c  65 73 20 61 6e 64 20 72  |     Rules and r|
00000440  65 67 75 6c 61 74 69 6f  6e 73 20 66 6f 72 20 21  |egulations for !|
00000450  53 71 75 69 73 68 0a 2d  2d 2d 2d 2d 2d 2d 2d 2d  |Squish.---------|
00000460  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000004a0  2d 2d 2d 2d 0a 0a 2a 20  53 71 75 69 73 68 20 69  |----..* Squish i|
000004b0  73 20 6e 6f 74 20 70 65  72 66 65 63 74 2e 20 41  |s not perfect. A|
000004c0  66 74 65 72 20 61 6e 20  65 78 74 72 65 6d 65 6c  |fter an extremel|
000004d0  79 20 6c 6f 6e 67 20 64  65 76 65 6c 6f 70 6d 65  |y long developme|
000004e0  6e 74 20 74 69 6d 65 2c  20 53 71 75 69 73 68 0a  |nt time, Squish.|
000004f0  20 20 68 61 73 20 72 65  61 63 68 65 64 20 74 68  |  has reached th|
00000500  65 20 73 74 61 67 65 20  77 68 65 72 65 62 79 20  |e stage whereby |
00000510  69 74 20 63 61 6e 20 73  71 75 61 73 68 20 61 6e  |it can squash an|
00000520  79 20 70 72 6f 67 72 61  6d 20 62 79 20 73 6f 6d  |y program by som|
00000530  65 6f 6e 65 20 77 69 74  68 20 61 0a 20 20 72 65  |eone with a.  re|
00000540  73 70 65 63 74 20 66 6f  72 20 27 73 65 6e 73 69  |spect for 'sensi|
00000550  62 6c 65 27 20 70 72 6f  67 72 61 6d 6d 69 6e 67  |ble' programming|
00000560  2e 20 4f 6e 65 20 63 61  6e 20 6c 65 63 74 75 72  |. One can lectur|
00000570  65 20 61 62 6f 75 74 20  74 68 65 20 70 72 69 6e  |e about the prin|
00000580  63 69 70 6c 65 73 20 6f  66 0a 20 20 67 6f 6f 64  |ciples of.  good|
00000590  20 64 65 73 69 67 6e 20  69 6e 20 74 6f 64 61 79  | design in today|
000005a0  27 73 20 63 6f 6d 70 65  74 69 6e 67 20 65 6e 76  |'s competing env|
000005b0  69 72 6f 6e 6d 65 6e 74  2c 20 62 75 74 20 6e 6f  |ironment, but no|
000005c0  2e 20 54 68 6f 75 67 68  20 73 75 66 66 69 63 65  |. Though suffice|
000005d0  20 74 6f 0a 20 20 6d 65  6e 74 69 6f 6e 20 61 20  | to.  mention a |
000005e0  73 74 61 74 65 6d 65 6e  74 20 6d 61 64 65 20 62  |statement made b|
000005f0  79 20 44 69 6a 6b 73 74  72 61 20 69 6e 20 31 39  |y Dijkstra in 19|
00000600  37 39 2c 20 6f 6e 20 74  68 65 20 73 75 62 6a 65  |79, on the subje|
00000610  63 74 20 6f 66 20 73 6f  66 74 77 61 72 65 3a 0a  |ct of software:.|
00000620  0a 20 20 22 54 68 65 20  61 64 76 65 6e 74 20 6f  |.  "The advent o|
00000630  66 20 63 68 65 61 70 20  61 6e 64 20 70 6f 77 65  |f cheap and powe|
00000640  72 66 75 6c 20 64 65 76  69 63 65 73 20 77 69 6c  |rful devices wil|
00000650  6c 20 70 75 74 20 53 6f  66 74 77 61 72 65 20 45  |l put Software E|
00000660  6e 67 69 6e 65 65 72 69  6e 67 0a 20 20 20 62 61  |ngineering.   ba|
00000670  63 6b 20 32 35 20 79 65  61 72 73 2e 22 0a 0a 20  |ck 25 years.".. |
00000680  20 54 68 69 73 2c 20 6f  66 20 63 6f 75 72 73 65  | This, of course|
00000690  2c 20 69 73 20 61 62 73  6f 6c 75 74 65 6c 79 20  |, is absolutely |
000006a0  74 72 75 65 2e 0a 0a 20  20 54 68 65 20 42 42 43  |true...  The BBC|
000006b0  20 42 41 53 49 43 20 69  6e 74 65 72 70 72 65 74  | BASIC interpret|
000006c0  65 72 20 69 73 20 71 75  69 74 65 20 73 69 6d 70  |er is quite simp|
000006d0  6c 65 2e 20 49 74 27 73  20 73 79 6e 74 61 78 20  |le. It's syntax |
000006e0  72 75 6c 65 73 20 61 72  65 20 67 6f 6f 64 2c 0a  |rules are good,.|
000006f0  20 20 62 75 74 20 76 65  72 79 20 66 6c 65 78 69  |  but very flexi|
00000700  62 6c 65 2e 20 54 68 69  73 20 61 6c 6c 6f 77 73  |ble. This allows|
00000710  20 70 65 6f 70 6c 65 20  74 6f 20 74 61 63 6b 6c  | people to tackl|
00000720  65 20 74 68 65 20 73 75  62 6a 65 63 74 20 6f 66  |e the subject of|
00000730  20 70 72 6f 67 72 61 6d  6d 69 6e 67 0a 20 20 69  | programming.  i|
00000740  6e 20 76 65 72 79 20 64  69 66 66 65 72 65 6e 74  |n very different|
00000750  20 77 61 79 73 2e 20 53  71 75 69 73 68 20 75 73  | ways. Squish us|
00000760  65 73 20 67 65 6e 65 72  61 6c 20 61 6c 67 6f 72  |es general algor|
00000770  69 74 68 6d 73 20 74 6f  20 72 65 64 75 63 65 20  |ithms to reduce |
00000780  74 68 65 20 73 69 7a 65  0a 20 20 6f 66 20 70 72  |the size.  of pr|
00000790  6f 67 72 61 6d 73 2c 20  62 75 74 20 74 68 65 72  |ograms, but ther|
000007a0  65 20 61 72 65 20 72 65  73 74 72 69 63 74 69 6f  |e are restrictio|
000007b0  6e 73 20 73 68 6f 75 6c  64 20 79 6f 75 20 77 61  |ns should you wa|
000007c0  6e 74 20 74 68 65 20 72  65 73 75 6c 74 69 6e 67  |nt the resulting|
000007d0  20 66 69 6c 65 0a 20 20  74 6f 20 77 6f 72 6b 21  | file.  to work!|
000007e0  20 54 68 65 73 65 20 61  72 65 20 6c 69 73 74 65  | These are liste|
000007f0  64 20 62 65 6c 6f 77 2c  20 61 6c 6f 6e 67 20 77  |d below, along w|
00000800  69 74 68 20 68 69 6e 74  73 20 6f 6e 20 68 6f 77  |ith hints on how|
00000810  20 74 6f 20 61 76 6f 69  64 20 74 68 65 73 65 2e  | to avoid these.|
00000820  0a 0a 0a 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |...-------------|
00000830  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 20 52 65 73  |------------ Res|
00000840  74 72 69 63 74 69 6f 6e  73 20 77 69 74 68 20 53  |trictions with S|
00000850  71 75 69 73 68 20 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |quish ----------|
00000860  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000870  0a 0a 0a 2a 20 47 4f 54  4f 2c 20 47 4f 53 55 42  |...* GOTO, GOSUB|
00000880  20 61 6e 64 20 52 45 53  54 4f 52 45 2e 0a 0a 20  | and RESTORE... |
00000890  20 53 71 75 69 73 68 20  77 69 6c 6c 20 73 69 6d  | Squish will sim|
000008a0  70 6c 79 20 69 67 6e 6f  72 65 20 74 68 65 73 65  |ply ignore these|
000008b0  20 63 6f 6d 6d 61 6e 64  73 20 62 79 20 73 6b 69  | commands by ski|
000008c0  70 70 69 6e 67 20 70 61  73 74 20 74 68 65 6d 2e  |pping past them.|
000008d0  20 4e 6f 77 61 64 61 79  73 20 69 74 0a 20 20 69  | Nowadays it.  i|
000008e0  73 20 61 62 73 6f 6c 75  74 65 6c 79 20 75 6e 66  |s absolutely unf|
000008f0  6f 72 67 69 76 65 61 62  6c 65 20 74 6f 20 75 73  |orgiveable to us|
00000900  65 20 47 4f 54 4f 2f 47  4f 53 55 42 20 73 6f 20  |e GOTO/GOSUB so |
00000910  53 71 75 69 73 68 20 77  69 6c 6c 20 4e 45 56 45  |Squish will NEVE|
00000920  52 20 73 75 70 70 6f 72  74 0a 20 20 74 68 65 73  |R support.  thes|
00000930  65 2e 20 52 45 53 54 4f  52 45 20 63 6f 6d 6d 61  |e. RESTORE comma|
00000940  6e 64 73 20 61 72 65 20  67 65 6e 65 72 61 6c 6c  |nds are generall|
00000950  79 20 4f 4b 2c 20 62 75  74 0a 0a 20 20 61 29 20  |y OK, but..  a) |
00000960  64 6f 6e 27 74 20 75 73  65 20 66 6f 72 6d 75 6c  |don't use formul|
00000970  61 20 62 61 73 65 64 20  52 45 53 54 4f 52 45 20  |a based RESTORE |
00000980  63 6f 6d 6d 61 6e 64 73  20 69 66 20 79 6f 75 20  |commands if you |
00000990  63 61 6e 20 61 76 6f 69  64 20 64 6f 69 6e 67 20  |can avoid doing |
000009a0  73 6f 2c 20 61 6e 64 0a  20 20 62 29 20 64 6f 6e  |so, and.  b) don|
000009b0  27 74 20 52 45 53 54 4f  52 45 20 70 6f 69 6e 74  |'t RESTORE point|
000009c0  65 72 73 20 74 6f 20 62  6c 61 6e 6b 20 6c 69 6e  |ers to blank lin|
000009d0  65 73 2f 52 45 4d 73 20  74 68 61 74 20 77 69 6c  |es/REMs that wil|
000009e0  6c 20 62 65 20 64 65 6c  65 74 65 64 2e 0a 0a 20  |l be deleted... |
000009f0  20 50 6c 65 61 73 65 20  6e 6f 74 65 20 74 68 61  | Please note tha|
00000a00  74 2c 20 69 66 20 61 20  70 72 6f 67 72 61 6d 20  |t, if a program |
00000a10  68 61 73 20 62 65 65 6e  20 77 72 69 74 74 65 6e  |has been written|
00000a20  20 73 65 6e 73 69 62 6c  79 2c 20 69 74 20 69 73  | sensibly, it is|
00000a30  20 70 65 72 66 65 63 74  6c 79 0a 20 20 70 6f 73  | perfectly.  pos|
00000a40  73 69 62 6c 65 20 66 6f  72 20 69 74 27 73 20 47  |sible for it's G|
00000a50  4f 54 4f 2c 20 47 4f 53  55 42 2c 20 61 6e 64 2f  |OTO, GOSUB, and/|
00000a60  6f 72 20 52 45 53 54 4f  52 45 20 63 6f 6d 6d 61  |or RESTORE comma|
00000a70  6e 64 73 20 74 6f 20 62  65 20 73 71 75 69 73 68  |nds to be squish|
00000a80  65 64 20 61 6e 64 0a 20  20 73 74 69 6c 6c 20 77  |ed and.  still w|
00000a90  6f 72 6b 20 63 6f 72 72  65 63 74 6c 79 2e 20 28  |ork correctly. (|
00000aa0  45 67 2e 20 52 49 53 43  20 55 73 65 72 27 73 20  |Eg. RISC User's |
00000ab0  21 44 75 73 74 62 69 6e  2e 29 0a 0a 0a 20 20 20  |!Dustbin.)...   |
00000ac0  20 20 20 20 20 20 20 2d  2d 2d 2d 2d 2d 2d 2d 2d  |       ---------|
00000ad0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000b00  2d 0a 0a 0a 2a 20 44 41  54 41 20 73 74 61 74 65  |-...* DATA state|
00000b10  6d 65 6e 74 73 0a 0a 20  20 49 66 20 61 20 76 61  |ments..  If a va|
00000b20  72 69 61 62 6c 65 20 69  73 20 61 6e 20 65 6c 65  |riable is an ele|
00000b30  6d 65 6e 74 20 6f 66 20  61 20 44 41 54 41 20 73  |ment of a DATA s|
00000b40  74 61 74 65 6d 65 6e 74  2c 20 69 74 20 77 69 6c  |tatement, it wil|
00000b50  6c 20 6e 65 65 64 20 74  6f 20 62 65 0a 20 20 72  |l need to be.  r|
00000b60  65 6e 61 6d 65 64 20 61  6c 6f 6e 67 20 77 69 74  |enamed along wit|
00000b70  68 20 74 68 65 20 6f 74  68 65 72 20 72 65 66 65  |h the other refe|
00000b80  72 65 6e 63 65 73 20 74  6f 20 69 74 20 74 68 72  |rences to it thr|
00000b90  6f 75 67 68 6f 75 74 20  74 68 65 20 70 72 6f 67  |oughout the prog|
00000ba0  72 61 6d 2e 0a 0a 20 20  49 6e 20 44 41 54 41 20  |ram...  In DATA |
00000bb0  73 74 61 74 65 6d 65 6e  74 73 2c 20 42 41 53 49  |statements, BASI|
00000bc0  43 20 64 65 74 65 72 6d  69 6e 65 73 20 61 20 73  |C determines a s|
00000bd0  74 72 69 6e 67 20 66 72  6f 6d 20 61 20 76 61 72  |tring from a var|
00000be0  69 61 62 6c 65 20 62 79  20 74 68 65 20 66 61 63  |iable by the fac|
00000bf0  74 0a 20 20 74 68 61 74  20 74 68 65 20 66 6f 72  |t.  that the for|
00000c00  6d 65 72 20 69 73 20 65  6e 63 6c 6f 73 65 64 20  |mer is enclosed |
00000c10  77 69 74 68 69 6e 20 71  75 6f 74 61 74 69 6f 6e  |within quotation|
00000c20  20 6d 61 72 6b 73 2c 20  61 6c 74 68 6f 75 67 68  | marks, although|
00000c30  20 74 68 65 20 73 79 6e  74 61 78 0a 20 20 64 6f  | the syntax.  do|
00000c40  65 73 20 61 6c 6c 6f 77  20 63 65 72 74 61 69 6e  |es allow certain|
00000c50  20 73 74 72 69 6e 67 73  20 74 6f 20 65 78 63 6c  | strings to excl|
00000c60  75 64 65 20 71 75 6f 74  61 74 69 6f 6e 20 6d 61  |ude quotation ma|
00000c70  72 6b 73 2e 0a 0a 20 20  53 71 75 69 73 68 20 77  |rks...  Squish w|
00000c80  6f 72 6b 73 20 6f 6e 20  74 68 65 20 70 72 69 6e  |orks on the prin|
00000c90  63 69 70 6c 65 20 74 68  61 74 20 41 4c 4c 20 73  |ciple that ALL s|
00000ca0  74 72 69 6e 67 73 20 61  72 65 20 65 6e 63 6c 6f  |trings are enclo|
00000cb0  73 65 64 20 77 69 74 68  69 6e 0a 20 20 71 75 6f  |sed within.  quo|
00000cc0  74 61 74 69 6f 6e 20 6d  61 72 6b 73 2e 20 49 66  |tation marks. If|
00000cd0  20 6e 6f 74 2c 20 74 68  65 20 44 41 54 41 20 65  | not, the DATA e|
00000ce0  6c 65 6d 65 6e 74 20 69  73 20 6c 69 61 62 6c 65  |lement is liable|
00000cf0  20 74 6f 20 62 65 20 72  65 6e 61 6d 65 64 2e 0a  | to be renamed..|
00000d00  20 20 46 6f 72 20 65 78  61 6d 70 6c 65 20 3a 0a  |  For example :.|
00000d10  0a 20 20 31 30 30 20 44  41 54 41 20 77 69 6e 64  |.  100 DATA wind|
00000d20  6f 77 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |ow              |
00000d30  20 20 3c 2d 20 54 68 69  73 20 77 69 6c 6c 20 62  |  <- This will b|
00000d40  65 20 72 65 6e 61 6d 65  64 0a 20 20 31 30 30 20  |e renamed.  100 |
00000d50  44 41 54 41 20 22 77 69  6e 64 6f 77 22 20 20 20  |DATA "window"   |
00000d60  20 20 20 20 20 20 20 20  20 20 20 3c 2d 20 54 68  |           <- Th|
00000d70  69 73 20 77 69 6c 6c 20  4e 4f 54 20 62 65 20 72  |is will NOT be r|
00000d80  65 6e 61 6d 65 64 0a 0a  0a 20 20 20 20 20 20 20  |enamed...       |
00000d90  20 20 20 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |   -------------|
00000da0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000dc0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0a 0a 0a  |-------------...|
00000dd0  2a 20 50 6f 69 6e 74 6c  65 73 73 20 6c 69 6e 65  |* Pointless line|
00000de0  73 2e 0a 0a 20 20 44 6f  6e 27 74 20 75 73 65 20  |s...  Don't use |
00000df0  70 6f 69 6e 74 6c 65 73  73 20 6c 69 6e 65 73 20  |pointless lines |
00000e00  74 6f 20 73 65 70 61 72  61 74 65 20 50 52 4f 43  |to separate PROC|
00000e10  65 64 75 72 65 73 20 65  74 63 2e 2e 20 55 73 65  |edures etc.. Use|
00000e20  20 62 6c 61 6e 6b 2f 63  6f 6d 6d 65 6e 74 65 64  | blank/commented|
00000e30  0a 20 20 6c 69 6e 65 73  20 69 6e 73 74 65 61 64  |.  lines instead|
00000e40  2c 20 65 6c 73 65 20 53  71 75 69 73 68 20 77 69  |, else Squish wi|
00000e50  6c 6c 20 61 74 74 65 6d  70 74 20 74 6f 20 72 65  |ll attempt to re|
00000e60  6e 61 6d 65 20 74 68 65  20 74 65 78 74 20 69 6e  |name the text in|
00000e70  62 65 74 77 65 65 6e 0a  20 20 28 73 68 6f 75 6c  |between.  (shoul|
00000e80  64 20 79 6f 75 20 61 73  6b 20 53 71 75 69 73 68  |d you ask Squish|
00000e90  20 74 6f 20 22 52 65 6e  61 6d 65 20 56 61 72 69  | to "Rename Vari|
00000ea0  61 62 6c 65 73 22 2c 20  62 75 74 20 6e 6f 74 20  |ables", but not |
00000eb0  22 52 65 6d 6f 76 65 20  52 45 4d 73 20 65 74 63  |"Remove REMs etc|
00000ec0  2e 22 0a 20 20 66 69 72  73 74 2e 29 0a 0a 20 20  |.".  first.)..  |
00000ed0  45 67 2e 20 3a 0a 0a 20  20 45 4e 44 50 52 4f 43  |Eg. :..  ENDPROC|
00000ee0  0a 20 20 3a 0a 20 20 3a  20 2d 2d 2d 20 52 6f 75  |.  :.  : --- Rou|
00000ef0  74 69 6e 65 20 74 6f 20  72 65 61 64 20 54 49 4d  |tine to read TIM|
00000f00  45 20 2d 2d 2d 20 3c 2d  20 53 71 75 69 73 68 20  |E --- <- Squish |
00000f10  77 69 6c 6c 20 61 73 73  75 6d 65 20 74 68 65 73  |will assume thes|
00000f20  65 20 61 72 65 20 56 41  52 49 41 42 4c 45 73 0a  |e are VARIABLEs.|
00000f30  20 20 3a 0a 20 20 44 45  46 20 50 52 4f 43 67 65  |  :.  DEF PROCge|
00000f40  74 5f 74 69 6d 65 0a 0a  20 20 54 68 65 20 61 6e  |t_time..  The an|
00000f50  6e 6f 74 61 74 69 6f 6e  20 6f 66 20 70 72 6f 67  |notation of prog|
00000f60  72 61 6d 73 20 75 73 69  6e 67 20 52 45 4d 20 73  |rams using REM s|
00000f70  74 61 74 65 6d 65 6e 74  73 20 69 73 20 74 68 65  |tatements is the|
00000f80  20 63 6f 72 72 65 63 74  20 6d 65 74 68 6f 64 2e  | correct method.|
00000f90  20 53 6f 2c 0a 20 20 74  6f 20 69 6d 70 6c 65 6d  | So,.  to implem|
00000fa0  65 6e 74 20 74 68 65 20  61 62 6f 76 65 20 65 78  |ent the above ex|
00000fb0  61 6d 70 6c 65 20 3a 0a  0a 20 20 45 4e 44 50 52  |ample :..  ENDPR|
00000fc0  4f 43 0a 20 20 3a 0a 20  20 3a 20 52 45 4d 20 52  |OC.  :.  : REM R|
00000fd0  6f 75 74 69 6e 65 20 74  6f 20 72 65 61 64 20 54  |outine to read T|
00000fe0  49 4d 45 20 20 20 20 20  3c 2d 20 43 6f 72 72 65  |IME     <- Corre|
00000ff0  63 74 20 73 74 79 6c 65  2c 20 61 63 63 65 70 74  |ct style, accept|
00001000  61 62 6c 65 20 62 79 20  53 71 75 69 73 68 0a 20  |able by Squish. |
00001010  20 3a 0a 20 20 44 45 46  20 50 52 4f 43 67 65 74  | :.  DEF PROCget|
00001020  5f 74 69 6d 65 0a 0a 0a  20 20 20 20 20 20 20 20  |_time...        |
00001030  20 20 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |  --------------|
00001040  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00001060  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0a 0a 0a 2a  |------------...*|
00001070  20 54 68 65 20 45 56 41  4c 20 70 72 6f 62 6c 65  | The EVAL proble|
00001080  6d 2e 0a 0a 20 20 54 68  69 73 20 72 65 66 65 72  |m...  This refer|
00001090  73 20 74 6f 20 46 75 4e  63 74 69 6f 6e 73 20 6c  |s to FuNctions l|
000010a0  69 6b 65 20 3a 0a 20 20  0a 20 20 41 25 20 3d 20  |ike :.  .  A% = |
000010b0  45 56 41 4c 28 20 22 46  4e 64 6f 6f 64 61 68 28  |EVAL( "FNdoodah(|
000010c0  22 20 2b 20 53 54 52 24  20 69 6e 70 75 74 20 2b  |" + STR$ input +|
000010d0  20 22 29 22 20 29 0a 0a  20 20 53 71 75 69 73 68  | ")" )..  Squish|
000010e0  20 73 65 65 73 20 22 46  4e 64 6f 6f 64 61 68 22  | sees "FNdoodah"|
000010f0  20 61 73 20 61 20 63 6f  6e 73 74 61 6e 74 20 28  | as a constant (|
00001100  71 75 69 74 65 20 63 6f  72 72 65 63 74 6c 79 29  |quite correctly)|
00001110  20 61 6e 64 20 64 6f 65  73 20 6e 6f 74 20 72 65  | and does not re|
00001120  6e 61 6d 65 0a 20 20 69  74 2e 20 54 68 65 72 65  |name.  it. There|
00001130  20 61 72 65 20 6f 74 68  65 72 20 6c 61 6e 67 75  | are other langu|
00001140  61 67 65 20 63 6f 6e 73  74 72 75 63 74 73 20 61  |age constructs a|
00001150  76 61 69 6c 61 62 6c 65  20 74 68 61 74 20 63 61  |vailable that ca|
00001160  6e 20 62 65 20 75 73 65  64 20 69 6e 20 70 6c 61  |n be used in pla|
00001170  63 65 0a 20 20 6f 66 20  74 68 69 73 20 6d 65 74  |ce.  of this met|
00001180  68 6f 64 2c 20 61 6e 64  20 73 68 6f 75 6c 64 20  |hod, and should |
00001190  62 65 20 77 68 65 6e 65  76 65 72 20 70 6f 73 73  |be whenever poss|
000011a0  69 62 6c 65 20 28 70 61  72 74 69 63 75 6c 61 72  |ible (particular|
000011b0  6c 79 20 69 66 20 74 68  65 0a 20 20 70 72 6f 67  |ly if the.  prog|
000011c0  72 61 6d 20 69 73 20 74  6f 20 62 65 20 53 71 75  |ram is to be Squ|
000011d0  69 73 68 65 64 20 61 74  20 61 20 6c 61 74 65 72  |ished at a later|
000011e0  20 64 61 74 65 2e 29 20  4e 6f 74 65 20 74 68 61  | date.) Note tha|
000011f0  74 20 45 56 41 4c 20 73  74 61 74 65 6d 65 6e 74  |t EVAL statement|
00001200  73 20 77 68 69 63 68 0a  20 20 75 73 65 20 46 4e  |s which.  use FN|
00001210  2f 50 52 4f 43 20 69 64  65 6e 74 69 66 69 65 72  |/PROC identifier|
00001220  73 20 63 61 6e 20 62 65  20 75 73 65 64 20 62 79  |s can be used by|
00001230  20 72 65 6e 61 6d 69 6e  67 20 76 61 72 69 61 62  | renaming variab|
00001240  6c 65 73 20 57 49 54 48  4f 55 54 20 74 68 65 0a  |les WITHOUT the.|
00001250  20 20 22 50 52 4f 43 73  22 20 61 6e 64 20 22 46  |  "PROCs" and "F|
00001260  4e 73 22 20 6f 70 74 69  6f 6e 73 2e 0a 0a 0a 20  |Ns" options.... |
00001270  20 20 20 20 20 20 20 20  20 2d 2d 2d 2d 2d 2d 2d  |         -------|
00001280  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000012b0  2d 2d 2d 0a 0a 0a 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |---...----------|
000012c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00001300  2d 2d 2d 0a 20 20 20 53  70 65 63 69 61 6c 20 4e  |---.   Special N|
00001310  6f 74 65 73 20 6f 6e 20  21 53 71 75 69 73 68 20  |otes on !Squish |
00001320  66 6f 72 20 70 72 6f 67  72 61 6d 6d 65 72 73 20  |for programmers |
00001330  28 61 6e 64 20 6f 74 68  65 72 20 69 6e 74 65 72  |(and other inter|
00001340  65 73 74 65 64 20 70 61  72 74 69 65 73 29 0a 2d  |ested parties).-|
00001350  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00001390  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0a 0a 0a 2a  |------------...*|
000013a0  20 57 68 65 6e 20 64 65  74 65 72 6d 69 6e 69 6e  | When determinin|
000013b0  67 20 69 66 20 61 20 6c  69 6e 65 20 69 73 20 62  |g if a line is b|
000013c0  6c 61 6e 6b 2c 20 74 68  65 20 6f 6e 65 20 74 68  |lank, the one th|
000013d0  69 6e 67 20 74 68 61 74  20 73 65 70 65 72 61 74  |ing that seperat|
000013e0  65 73 20 61 20 27 64 75  6d 6d 79 27 0a 20 20 6c  |es a 'dummy'.  l|
000013f0  69 6e 65 20 66 72 6f 6d  20 61 20 72 65 61 6c 20  |ine from a real |
00001400  6f 6e 65 20 69 73 20 69  66 20 69 74 20 63 6f 6e  |one is if it con|
00001410  74 61 69 6e 73 20 61 20  4b 45 59 57 4f 52 44 2e  |tains a KEYWORD.|
00001420  20 54 68 65 20 72 6f 75  74 69 6e 65 20 74 68 61  | The routine tha|
00001430  74 20 63 68 65 63 6b 73  0a 20 20 66 6f 72 20 74  |t checks.  for t|
00001440  68 69 73 20 73 69 6d 70  6c 79 20 73 63 61 6e 73  |his simply scans|
00001450  20 74 68 65 20 74 6f 6b  65 6e 69 73 65 64 20 6c  | the tokenised l|
00001460  69 6e 65 20 66 6f 72 20  61 20 68 65 78 20 76 61  |ine for a hex va|
00001470  6c 75 65 20 6f 66 20 26  37 46 20 6f 72 20 67 72  |lue of &7F or gr|
00001480  65 61 74 65 72 2e 0a 20  20 49 66 20 74 68 69 73  |eater..  If this|
00001490  20 69 73 20 74 68 65 20  63 61 73 65 2c 20 61 20  | is the case, a |
000014a0  4b 45 59 57 4f 52 44 20  69 73 20 70 72 65 73 65  |KEYWORD is prese|
000014b0  6e 74 2c 20 61 6e 64 20  74 68 65 20 6c 69 6e 65  |nt, and the line|
000014c0  20 69 73 20 74 61 6b 65  6e 20 74 6f 20 62 65 0a  | is taken to be.|
000014d0  20 20 27 72 65 61 6c 27  2c 20 72 65 67 61 72 64  |  'real', regard|
000014e0  6c 65 73 73 20 6f 66 20  77 68 65 74 68 65 72 20  |less of whether |
000014f0  6f 72 20 6e 6f 74 20 69  74 20 69 73 20 65 76 65  |or not it is eve|
00001500  72 20 65 78 65 63 75 74  65 64 2e 0a 20 20 54 68  |r executed..  Th|
00001510  65 20 65 78 63 65 70 74  69 6f 6e 73 20 61 72 65  |e exceptions are|
00001520  20 6c 69 6e 65 73 20 74  68 61 74 20 63 6f 6e 73  | lines that cons|
00001530  69 73 74 20 6f 66 20 61  20 27 2a 27 20 63 6f 6d  |ist of a '*' com|
00001540  6d 61 6e 64 2c 20 61 20  6c 69 6e 65 20 63 6f 6e  |mand, a line con|
00001550  74 61 69 6e 69 6e 67 20  61 0a 20 20 72 65 74 75  |taining a.  retu|
00001560  72 6e 20 61 73 73 69 67  6e 6d 65 6e 74 20 28 65  |rn assignment (e|
00001570  67 2e 20 3d 72 65 73 75  6c 74 24 29 2c 20 6f 72  |g. =result$), or|
00001580  20 61 20 6c 69 6e 65 20  63 6f 6e 73 69 73 74 69  | a line consisti|
00001590  6e 67 20 73 6f 6c 65 6c  79 20 6f 66 20 27 5b 27  |ng solely of '['|
000015a0  2c 20 6f 72 0a 20 20 27  5d 27 2c 20 61 73 20 74  |, or.  ']', as t|
000015b0  68 65 73 65 20 61 72 65  20 61 6c 6c 20 76 61 6c  |hese are all val|
000015c0  69 64 20 6c 69 6e 65 73  20 63 6f 6e 74 61 69 6e  |id lines contain|
000015d0  69 6e 67 20 6e 6f 20 4b  45 59 57 4f 52 44 73 2e  |ing no KEYWORDs.|
000015e0  0a 0a 2a 20 57 68 65 6e  20 72 65 6d 6f 76 69 6e  |..* When removin|
000015f0  67 20 53 50 41 43 45 73  20 66 72 6f 6d 20 61 20  |g SPACEs from a |
00001600  6c 69 6e 65 2c 20 74 68  65 72 65 20 61 72 65 20  |line, there are |
00001610  6d 61 6e 79 20 63 6f 6e  64 69 74 69 6f 6e 73 20  |many conditions |
00001620  77 68 65 72 65 75 70 6f  6e 20 61 0a 20 20 73 69  |whereupon a.  si|
00001630  6e 67 6c 65 20 53 50 41  43 45 20 6d 75 73 74 20  |ngle SPACE must |
00001640  62 65 20 6c 65 66 74 20  73 6f 20 74 68 61 74 20  |be left so that |
00001650  74 68 65 20 42 41 53 49  43 20 69 6e 74 65 72 70  |the BASIC interp|
00001660  72 65 74 65 72 20 63 61  6e 20 6d 61 6b 65 20 73  |reter can make s|
00001670  65 6e 73 65 20 6f 66 0a  20 20 77 68 61 74 20 69  |ense of.  what i|
00001680  73 20 67 6f 69 6e 67 20  6f 6e 2e 20 46 6f 72 20  |s going on. For |
00001690  61 6e 20 65 78 61 6d 70  6c 65 2c 20 53 71 75 69  |an example, Squi|
000016a0  73 68 69 6e 67 20 27 58  20 3d 20 59 20 4e 4f 54  |shing 'X = Y NOT|
000016b0  20 5a 27 20 63 61 6e 20  6f 6e 6c 79 20 62 65 0a  | Z' can only be.|
000016c0  20 20 53 71 75 69 73 68  65 64 20 74 6f 20 27 58  |  Squished to 'X|
000016d0  3d 59 20 4e 4f 54 5a 27  2c 20 62 65 63 61 75 73  |=Y NOTZ', becaus|
000016e0  65 20 74 61 6b 69 6e 67  20 74 68 65 20 72 65 6d  |e taking the rem|
000016f0  61 69 6e 69 6e 67 20 53  50 41 43 45 20 6f 75 74  |aining SPACE out|
00001700  20 72 65 73 75 6c 74 73  20 69 6e 0a 20 20 74 68  | results in.  th|
00001710  65 20 42 41 53 49 43 20  69 6e 74 65 72 70 72 65  |e BASIC interpre|
00001720  74 65 72 20 72 65 63 6f  67 6e 69 73 69 6e 67 20  |ter recognising |
00001730  74 68 69 73 20 61 73 20  61 6e 20 61 73 73 69 67  |this as an assig|
00001740  6e 6d 65 6e 74 2c 20 61  73 20 6f 70 70 6f 73 65  |nment, as oppose|
00001750  64 20 74 6f 20 61 0a 20  20 6c 6f 67 69 63 61 6c  |d to a.  logical|
00001760  20 6f 70 65 72 61 74 69  6f 6e 2e 20 41 6c 74 68  | operation. Alth|
00001770  6f 75 67 68 20 53 71 75  69 73 68 20 64 6f 65 73  |ough Squish does|
00001780  6e 27 74 20 74 61 6b 65  20 61 6c 6c 20 6f 66 20  |n't take all of |
00001790  74 68 65 73 65 20 63 6f  6e 64 69 74 69 6f 6e 73  |these conditions|
000017a0  0a 20 20 69 6e 74 6f 20  61 63 63 6f 75 6e 74 2c  |.  into account,|
000017b0  20 69 74 20 73 74 69 6c  6c 20 70 72 6f 76 69 64  | it still provid|
000017c0  65 73 20 61 20 6d 6f 72  65 20 74 68 61 6e 20 61  |es a more than a|
000017d0  64 65 71 75 61 74 65 20  72 65 64 75 63 74 69 6f  |dequate reductio|
000017e0  6e 20 72 61 74 65 2e 0a  0a 2a 20 4e 6f 74 65 20  |n rate...* Note |
000017f0  74 68 61 74 20 72 65 63  6f 67 6e 69 73 69 6e 67  |that recognising|
00001800  20 69 66 20 79 6f 75 20  61 72 65 20 69 6e 20 41  | if you are in A|
00001810  73 73 65 6d 62 6c 65 72  20 6f 72 20 6e 6f 74 20  |ssembler or not |
00001820  64 65 70 65 6e 64 73 20  65 6e 74 69 72 65 6c 79  |depends entirely|
00001830  0a 20 20 75 70 6f 6e 20  68 6f 77 20 6d 61 6e 79  |.  upon how many|
00001840  20 27 5b 27 20 61 6e 64  20 27 5d 27 20 73 69 67  | '[' and ']' sig|
00001850  6e 73 20 68 61 76 65 20  62 65 65 6e 20 65 6e 63  |ns have been enc|
00001860  6f 75 6e 74 65 72 65 64  2c 20 61 6e 64 20 77 68  |ountered, and wh|
00001870  65 6e 20 53 71 75 69 73  68 69 6e 67 0a 20 20 61  |en Squishing.  a|
00001880  73 73 65 6d 62 6c 65 72  20 63 6f 6d 6d 61 6e 64  |ssembler command|
00001890  73 2c 20 61 6c 6c 20 73  74 61 74 65 6d 65 6e 74  |s, all statement|
000018a0  73 20 61 72 65 20 6c 65  66 74 20 77 69 74 68 20  |s are left with |
000018b0  61 20 73 69 6e 67 6c 65  20 53 50 41 43 45 20 62  |a single SPACE b|
000018c0  65 74 77 65 65 6e 0a 20  20 65 61 63 68 20 66 69  |etween.  each fi|
000018d0  65 6c 64 20 6f 66 20 74  68 65 20 73 74 61 74 65  |eld of the state|
000018e0  6d 65 6e 74 2e 20 27 3b  27 20 63 6f 6d 6d 65 6e  |ment. ';' commen|
000018f0  74 73 20 61 72 65 20 61  6c 73 6f 20 64 65 6c 65  |ts are also dele|
00001900  74 65 64 2e 0a 20 20 28  41 6c 74 68 6f 75 67 68  |ted..  (Although|
00001910  20 74 68 65 20 69 64 65  61 20 6f 66 20 53 71 75  | the idea of Squ|
00001920  69 73 68 20 69 73 20 74  6f 20 53 71 75 69 73 68  |ish is to Squish|
00001930  20 42 41 53 49 43 20 70  72 6f 67 72 61 6d 73 2c  | BASIC programs,|
00001940  20 74 68 65 20 61 73 73  65 6d 62 6c 65 72 0a 20  | the assembler. |
00001950  20 53 71 75 69 73 68 65  72 20 68 61 73 20 62 65  | Squisher has be|
00001960  65 6e 20 69 6e 63 6c 75  64 65 64 20 74 6f 20 69  |en included to i|
00001970  6d 70 72 6f 76 65 20 74  68 6f 73 65 20 70 72 6f  |mprove those pro|
00001980  67 72 61 6d 73 20 74 68  61 74 20 75 73 65 20 73  |grams that use s|
00001990  6d 61 6c 6c 20 61 6d 6f  75 6e 74 73 0a 20 20 6f  |mall amounts.  o|
000019a0  66 20 41 52 4d 20 63 6f  64 65 2c 20 6a 75 73 74  |f ARM code, just|
000019b0  20 74 6f 20 70 6c 65 61  73 65 20 74 68 6f 73 65  | to please those|
000019c0  20 77 68 6f 20 6c 69 6b  65 20 74 6f 20 64 6f 20  | who like to do |
000019d0  73 6f 2e 29 0a 0a 2a 20  54 6f 20 72 65 6d 6f 76  |so.)..* To remov|
000019e0  65 20 52 45 4d 20 73 74  61 74 65 6d 65 6e 74 73  |e REM statements|
000019f0  2c 20 53 71 75 69 73 68  20 73 63 61 6e 73 20 74  |, Squish scans t|
00001a00  68 65 20 74 6f 6b 65 6e  69 73 65 64 20 6c 69 6e  |he tokenised lin|
00001a10  65 20 66 6f 72 20 74 68  65 20 48 65 78 0a 20 20  |e for the Hex.  |
00001a20  76 61 6c 75 65 20 66 6f  72 20 27 52 45 4d 27 2e  |value for 'REM'.|
00001a30  20 49 66 20 74 68 69 73  20 69 73 20 66 6f 75 6e  | If this is foun|
00001a40  64 2c 20 74 68 65 20 6c  69 6e 65 20 69 73 20 73  |d, the line is s|
00001a50  68 6f 72 74 65 6e 65 64  20 61 70 70 72 6f 70 72  |hortened appropr|
00001a60  69 61 74 65 6c 79 2e 0a  20 20 54 68 69 73 20 77  |iately..  This w|
00001a70  6f 72 6b 73 20 66 69 6e  65 2c 20 62 75 74 20 74  |orks fine, but t|
00001a80  68 65 72 65 20 69 73 20  6f 6e 65 20 6f 63 63 61  |here is one occa|
00001a90  73 69 6f 6e 20 77 68 65  6e 20 74 68 69 73 20 64  |sion when this d|
00001aa0  6f 65 73 6e 27 74 20 77  6f 72 6b 2c 20 61 6e 64  |oesn't work, and|
00001ab0  20 74 68 61 74 0a 20 20  69 73 20 77 68 65 6e 20  | that.  is when |
00001ac0  79 6f 75 20 70 75 74 20  61 20 52 45 4d 20 73 74  |you put a REM st|
00001ad0  61 74 65 6d 65 6e 74 20  61 66 74 65 72 20 61 20  |atement after a |
00001ae0  44 41 54 41 20 73 74 61  74 65 6d 65 6e 74 2c 20  |DATA statement, |
00001af0  61 73 20 74 68 65 20 69  6e 74 65 72 70 72 65 74  |as the interpret|
00001b00  65 72 0a 20 20 73 74 6f  72 65 73 20 74 68 69 73  |er.  stores this|
00001b10  20 61 73 20 61 20 73 74  72 69 6e 67 2c 20 66 61  | as a string, fa|
00001b20  69 6c 69 6e 67 20 74 6f  20 74 6f 6b 65 6e 69 73  |iling to tokenis|
00001b30  65 20 69 74 2e 0a 0a 2a  20 41 73 20 6d 65 6e 74  |e it...* As ment|
00001b40  69 6f 6e 65 64 20 61 62  6f 76 65 2c 20 65 76 65  |ioned above, eve|
00001b50  72 79 74 68 69 6e 67 20  66 6f 6c 6c 6f 77 69 6e  |rything followin|
00001b60  67 20 61 20 44 41 54 41  20 73 74 61 74 65 6d 65  |g a DATA stateme|
00001b70  6e 74 20 69 73 20 73 74  6f 72 65 64 20 61 73 20  |nt is stored as |
00001b80  70 75 72 65 0a 20 20 41  53 43 49 49 2c 20 61 6e  |pure.  ASCII, an|
00001b90  64 20 74 68 65 20 73 61  6d 65 20 61 6c 73 6f 20  |d the same also |
00001ba0  61 70 70 6c 69 65 73 20  74 6f 20 52 45 4d 20 73  |applies to REM s|
00001bb0  74 61 74 65 6d 65 6e 74  73 2c 20 73 6f 20 69 66  |tatements, so if|
00001bc0  20 79 6f 75 20 63 6f 6e  63 61 74 65 6e 61 74 65  | you concatenate|
00001bd0  20 61 0a 20 20 70 72 6f  67 72 61 6d 20 77 69 74  | a.  program wit|
00001be0  68 6f 75 74 20 72 65 6d  6f 76 69 6e 67 20 52 45  |hout removing RE|
00001bf0  4d 20 73 74 61 74 65 6d  65 6e 74 73 2c 20 69 66  |M statements, if|
00001c00  20 32 20 28 6f 72 20 6d  6f 72 65 29 20 52 45 4d  | 2 (or more) REM|
00001c10  73 20 61 72 65 20 53 71  75 69 73 68 65 64 0a 20  |s are Squished. |
00001c20  20 74 6f 67 65 74 68 65  72 2c 20 74 68 65 20 73  | together, the s|
00001c30  75 70 70 6c 65 6d 65 6e  74 61 72 79 20 52 45 4d  |upplementary REM|
00001c40  73 20 61 72 65 20 64 65  2d 74 6f 6b 65 6e 69 73  |s are de-tokenis|
00001c50  65 64 20 69 6e 74 6f 20  41 53 43 49 49 20 66 6f  |ed into ASCII fo|
00001c60  72 6d 2c 20 77 68 69 63  68 20 69 73 0a 20 20 77  |rm, which is.  w|
00001c70  68 79 20 53 71 75 69 73  68 65 64 20 52 45 4d 20  |hy Squished REM |
00001c80  73 74 61 74 65 6d 65 6e  74 73 20 6c 6f 6f 6b 20  |statements look |
00001c90  61 20 6c 69 74 74 6c 65  20 77 65 69 72 64 2e 0a  |a little weird..|
00001ca0  0a 4b 4a 53 20 28 30 38  2d 30 38 2d 39 30 29 20  |.KJS (08-08-90) |
00001cb0  2d 20 52 65 6c 65 61 73  65 20 76 65 72 73 69 6f  |- Release versio|
00001cc0  6e 20 31 2e 30 30 0a 0a  0a 2d 2d 2d 2d 2d 2d 2d  |n 1.00...-------|
00001cd0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00001d10  2d 2d 2d 2d 2d 2d 0a 20  20 20 20 20 20 20 20 20  |------.         |
00001d20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001d30  20 20 20 20 20 20 20 20  20 48 69 73 74 6f 72 79  |         History|
00001d40  20 66 69 6c 65 0a 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  | file.----------|
00001d50  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00001d90  2d 2d 2d 0a 0a 0a 2a 20  41 6d 65 6e 64 65 64 20  |---...* Amended |
00001da0  74 68 65 20 62 6c 61 6e  6b 2d 6c 69 6e 65 20 72  |the blank-line r|
00001db0  65 6d 6f 76 61 6c 20 63  6f 64 65 20 74 6f 20 61  |emoval code to a|
00001dc0  63 63 6f 75 6e 74 20 66  6f 72 20 4f 54 48 45 52  |ccount for OTHER|
00001dd0  57 49 53 45 20 73 74 61  74 65 6d 65 6e 74 73 0a  |WISE statements.|
00001de0  20 20 62 65 69 6e 67 20  70 72 65 73 65 6e 74 20  |  being present |
00001df0  5b 4f 54 48 45 52 57 49  53 45 2d 3e 26 37 46 5d  |[OTHERWISE->&7F]|
00001e00  0a 2a 20 52 65 73 74 72  75 63 74 75 72 65 64 20  |.* Restructured |
00001e10  6c 6f 67 69 63 20 66 6f  72 6d 61 74 20 66 6f 72  |logic format for|
00001e20  20 49 46 2e 2e 2e 20 73  74 61 74 65 6d 65 6e 74  | IF... statement|
00001e30  73 2e 20 50 72 65 76 69  6f 75 73 6c 79 20 27 64  |s. Previously 'd|
00001e40  65 61 64 27 20 6c 6f 67  69 63 20 68 61 73 0a 20  |ead' logic has. |
00001e50  20 6e 6f 77 20 62 65 65  6e 20 72 65 64 65 73 69  | now been redesi|
00001e60  67 6e 65 64 20 74 6f 20  63 6f 70 65 20 77 69 74  |gned to cope wit|
00001e70  68 20 49 46 2e 2e 2e 20  73 74 61 74 65 6d 65 6e  |h IF... statemen|
00001e80  74 73 20 77 69 74 68 6f  75 74 20 54 48 45 4e 73  |ts without THENs|
00001e90  2e 0a 2a 20 41 64 64 69  74 69 6f 6e 61 6c 20 6c  |..* Additional l|
00001ea0  6f 67 69 63 20 74 6f 20  65 6e 73 75 72 65 20 27  |ogic to ensure '|
00001eb0  4f 54 48 45 52 57 49 53  45 27 20 6b 65 79 77 6f  |OTHERWISE' keywo|
00001ec0  72 64 73 20 73 74 61 72  74 20 6f 6e 20 61 20 6e  |rds start on a n|
00001ed0  65 77 20 6c 69 6e 65 2e  0a 0a 20 20 4b 4a 53 20  |ew line...  KJS |
00001ee0  28 31 30 2d 30 38 2d 39  30 29 20 2d 20 52 65 6c  |(10-08-90) - Rel|
00001ef0  65 61 73 65 20 76 65 72  73 69 6f 6e 20 31 2e 30  |ease version 1.0|
00001f00  31 0a 0a 0a 2a 20 49 6e  73 65 72 74 65 64 20 61  |1...* Inserted a|
00001f10  64 64 69 74 69 6f 6e 61  6c 20 63 6f 64 65 20 74  |dditional code t|
00001f20  6f 20 72 65 6e 61 6d 65  20 76 61 72 69 61 62 6c  |o rename variabl|
00001f30  65 73 2e 0a 0a 20 20 4b  4a 53 20 28 32 31 2d 30  |es...  KJS (21-0|
00001f40  39 2d 39 30 29 20 2d 20  52 65 6c 65 61 73 65 20  |9-90) - Release |
00001f50  76 65 72 73 69 6f 6e 20  31 2e 30 32 0a 0a 0a 2a  |version 1.02...*|
00001f60  20 56 61 72 69 61 62 6c  65 20 72 65 6e 61 6d 65  | Variable rename|
00001f70  72 20 6e 6f 77 20 63 6f  70 65 73 20 77 69 74 68  |r now copes with|
00001f80  20 41 52 4d 20 63 6f 64  65 2c 20 61 6e 64 20 69  | ARM code, and i|
00001f90  6e 73 74 72 75 63 74 69  6f 6e 73 20 61 72 65 20  |nstructions are |
00001fa0  6e 6f 74 0a 20 20 74 72  65 61 74 65 64 20 61 73  |not.  treated as|
00001fb0  20 76 61 72 69 61 62 6c  65 73 2e 20 28 65 67 2e  | variables. (eg.|
00001fc0  20 4c 44 4d 45 51 49 41  2e 29 0a 2a 20 52 45 53  | LDMEQIA.).* RES|
00001fd0  54 4f 52 45 20 73 74 61  74 65 6d 65 6e 74 73 20  |TORE statements |
00001fe0  61 72 65 20 6c 65 66 74  20 61 6c 6f 6e 65 20 28  |are left alone (|
00001ff0  42 41 53 49 43 20 65 6e  63 6f 64 65 73 20 65 6e  |BASIC encodes en|
00002000  73 75 69 6e 67 20 70 6f  69 6e 74 65 72 73 29 2c  |suing pointers),|
00002010  20 6d 61 6b 69 6e 67 0a  20 20 72 65 6e 75 6d 62  | making.  renumb|
00002020  65 72 69 6e 67 20 70 6f  73 73 69 62 6c 65 20 61  |ering possible a|
00002030  66 74 65 72 20 63 6f 6d  70 61 63 74 69 6f 6e 2e  |fter compaction.|
00002040  0a 2a 20 4c 61 62 65 6c  73 20 73 75 63 68 20 61  |.* Labels such a|
00002050  73 20 27 2e 41 64 64 72  65 73 73 27 20 61 72 65  |s '.Address' are|
00002060  20 6e 6f 74 20 74 72 65  61 74 65 64 20 61 73 20  | not treated as |
00002070  61 6e 20 41 44 44 20 69  6e 73 74 72 75 63 74 69  |an ADD instructi|
00002080  6f 6e 20 28 76 61 72 69  61 62 6c 65 0a 20 20 63  |on (variable.  c|
00002090  6f 64 65 20 75 73 65 64  20 74 6f 20 63 68 65 63  |ode used to chec|
000020a0  6b 20 74 68 65 20 41 44  44 20 70 61 72 74 20 61  |k the ADD part a|
000020b0  6e 64 20 62 65 20 66 6f  6f 6c 65 64 20 62 79 20  |nd be fooled by |
000020c0  74 68 69 73 2e 29 0a 2a  20 4f 70 74 69 6f 6e 20  |this.).* Option |
000020d0  6f 66 20 66 61 73 74 2f  73 6c 6f 77 20 63 6f 6d  |of fast/slow com|
000020e0  70 61 63 74 69 6f 6e 20  69 6e 73 65 72 74 65 64  |paction inserted|
000020f0  2e 20 53 6c 6f 77 20 61  6c 6c 6f 77 73 20 53 71  |. Slow allows Sq|
00002100  75 69 73 68 20 74 6f 20  63 6f 6d 70 61 63 74 20  |uish to compact |
00002110  61 73 0a 20 20 61 20 62  61 63 6b 67 72 6f 75 6e  |as.  a backgroun|
00002120  64 20 74 61 73 6b 2c 20  77 68 69 6c 73 74 20 66  |d task, whilst f|
00002130  61 73 74 20 61 6c 6c 6f  77 73 20 53 71 75 69 73  |ast allows Squis|
00002140  68 20 74 6f 20 63 6f 6e  74 72 6f 6c 20 74 68 65  |h to control the|
00002150  20 73 79 73 74 65 6d 20  64 75 72 69 6e 67 0a 20  | system during. |
00002160  20 63 6f 6d 70 61 63 74  69 6f 6e 2e 0a 2a 20 52  | compaction..* R|
00002170  65 6e 61 6d 69 6e 67 20  63 6f 64 65 20 61 6c 74  |enaming code alt|
00002180  65 72 65 64 20 74 6f 20  70 72 6f 64 75 63 65 20  |ered to produce |
00002190  6c 69 62 65 72 61 6c 6c  79 2d 73 70 72 65 61 64  |liberally-spread|
000021a0  20 76 61 72 69 61 62 6c  65 20 6e 61 6d 65 73 2c  | variable names,|
000021b0  20 61 20 66 65 61 74 75  72 65 0a 20 20 66 72 6f  | a feature.  fro|
000021c0  6d 20 74 68 65 20 6f 6c  64 20 42 42 43 20 64 61  |m the old BBC da|
000021d0  79 73 2c 20 61 73 20 74  68 65 20 69 6e 74 65 72  |ys, as the inter|
000021e0  70 72 65 74 65 72 20 74  61 6b 65 73 20 6c 65 73  |preter takes les|
000021f0  73 20 74 69 6d 65 20 74  6f 20 69 64 65 6e 74 69  |s time to identi|
00002200  66 79 20 74 68 65 0a 20  20 76 61 72 69 61 62 6c  |fy the.  variabl|
00002210  65 20 69 74 20 77 61 6e  74 73 2e 0a 0a 20 20 4b  |e it wants...  K|
00002220  4a 53 20 28 32 35 2d 30  39 2d 39 30 29 20 2d 20  |JS (25-09-90) - |
00002230  52 65 6c 65 61 73 65 20  76 65 72 73 69 6f 6e 20  |Release version |
00002240  31 2e 30 33 0a 0a 0a 2a  20 41 64 64 69 74 69 6f  |1.03...* Additio|
00002250  6e 61 6c 20 63 6f 64 65  20 61 64 64 65 64 20 73  |nal code added s|
00002260  6f 20 74 68 61 74 20 73  65 6d 69 63 6f 6c 6f 6e  |o that semicolon|
00002270  2d 74 65 78 74 20 69 6e  20 41 73 73 65 6d 62 6c  |-text in Assembl|
00002280  79 20 6c 61 6e 67 75 61  67 65 20 69 73 20 6e 6f  |y language is no|
00002290  74 0a 20 20 74 72 65 61  74 65 64 20 61 73 20 76  |t.  treated as v|
000022a0  61 72 69 61 62 6c 65 73  20 28 69 66 20 79 6f 75  |ariables (if you|
000022b0  20 53 71 75 69 73 68 20  61 20 70 72 6f 67 72 61  | Squish a progra|
000022c0  6d 20 75 73 69 6e 67 20  74 68 65 20 72 65 6e 61  |m using the rena|
000022d0  6d 65 20 76 61 72 69 61  62 6c 65 0a 20 20 6f 70  |me variable.  op|
000022e0  74 69 6f 6e 20 57 49 54  48 4f 55 54 20 72 65 6d  |tion WITHOUT rem|
000022f0  6f 76 69 6e 67 20 52 45  4d 73 20 65 74 63 2e 2c  |oving REMs etc.,|
00002300  20 52 45 4d 61 72 6b 73  20 69 6e 20 41 73 73 65  | REMarks in Asse|
00002310  6d 62 6c 79 20 6c 61 6e  67 75 61 67 65 20 77 65  |mbly language we|
00002320  72 65 0a 20 20 72 65 6e  61 6d 65 64 29 0a 2a 20  |re.  renamed).* |
00002330  41 64 64 69 74 69 6f 6e  61 6c 20 63 6f 64 65 20  |Additional code |
00002340  61 6c 73 6f 20 61 64 64  65 64 20 74 6f 20 74 68  |also added to th|
00002350  65 20 72 65 6e 61 6d 69  6e 67 20 70 72 6f 63 65  |e renaming proce|
00002360  64 75 72 65 73 2c 20 73  69 6e 63 65 2c 20 77 68  |dures, since, wh|
00002370  65 6e 20 75 73 69 6e 67  0a 20 20 41 73 73 65 6d  |en using.  Assem|
00002380  62 6c 79 20 6c 61 6e 67  75 61 67 65 2c 20 41 4e  |bly language, AN|
00002390  44 20 61 6e 64 20 45 4f  52 20 69 6e 73 74 72 75  |D and EOR instru|
000023a0  63 74 69 6f 6e 73 20 61  72 65 20 74 6f 6b 65 6e  |ctions are token|
000023b0  69 73 65 64 20 61 73 20  69 66 20 74 68 65 79 20  |ised as if they |
000023c0  77 65 72 65 0a 20 20 42  41 53 49 43 20 69 6e 73  |were.  BASIC ins|
000023d0  74 72 75 63 74 69 6f 6e  73 2e 0a 0a 20 20 4b 4a  |tructions...  KJ|
000023e0  53 20 28 30 33 2d 31 30  2d 39 30 29 20 2d 20 52  |S (03-10-90) - R|
000023f0  65 6c 65 61 73 65 20 76  65 72 73 69 6f 6e 20 31  |elease version 1|
00002400  2e 30 34 0a 0a 0a 2a 20  4c 6f 67 69 63 20 69 6e  |.04...* Logic in|
00002410  20 74 68 65 20 53 50 41  43 45 2d 53 71 75 69 73  | the SPACE-Squis|
00002420  68 69 6e 67 20 70 72 6f  63 65 64 75 72 65 73 20  |hing procedures |
00002430  72 65 73 74 72 75 63 74  75 72 65 64 20 66 6f 72  |restructured for|
00002440  20 44 49 4d 20 73 74 61  74 65 6d 65 6e 74 73 2e  | DIM statements.|
00002450  0a 2a 20 53 61 76 65 2d  6f 76 65 72 2d 6f 72 69  |.* Save-over-ori|
00002460  67 69 6e 61 6c 20 6f 70  74 69 6f 6e 20 61 6c 74  |ginal option alt|
00002470  65 72 65 64 20 74 6f 20  61 20 27 66 69 6e 61 6c  |ered to a 'final|
00002480  2d 69 6e 66 6f 27 20 6f  6e 65 2c 20 73 6f 20 74  |-info' one, so t|
00002490  68 61 74 20 74 68 65 20  6f 6c 64 0a 20 20 61 6e  |hat the old.  an|
000024a0  64 20 6e 65 77 20 70 72  6f 67 72 61 6d 2d 6c 65  |d new program-le|
000024b0  6e 67 74 68 2c 20 61 6e  64 20 74 68 65 20 63 6f  |ngth, and the co|
000024c0  6d 70 72 65 73 73 69 6f  6e 20 72 61 74 65 2c 20  |mpression rate, |
000024d0  6d 61 79 20 62 65 20 73  65 65 6e 2e 0a 2a 20 50  |may be seen..* P|
000024e0  72 6f 63 65 64 75 72 65  20 74 68 61 74 20 72 65  |rocedure that re|
000024f0  6d 6f 76 65 73 20 53 50  41 43 45 73 20 72 65 77  |moves SPACEs rew|
00002500  72 69 74 74 65 6e 20 74  6f 20 62 65 20 61 20 6c  |ritten to be a l|
00002510  6f 74 20 73 70 65 65 64  69 65 72 2e 0a 0a 20 20  |ot speedier...  |
00002520  4b 4a 53 20 28 32 32 2d  31 30 2d 39 30 29 20 2d  |KJS (22-10-90) -|
00002530  20 52 65 6c 65 61 73 65  20 76 65 72 73 69 6f 6e  | Release version|
00002540  20 31 2e 30 35 0a 0a 0a  2a 20 41 64 64 69 74 69  | 1.05...* Additi|
00002550  6f 6e 61 6c 20 63 6f 64  65 20 61 64 64 65 64 20  |onal code added |
00002560  74 6f 20 63 6f 70 65 20  77 69 74 68 20 74 68 65  |to cope with the|
00002570  20 42 59 20 6b 65 79 77  6f 72 64 20 75 73 65 64  | BY keyword used|
00002580  20 69 6e 20 63 6f 6e 6a  75 6e 63 74 69 6f 6e 20  | in conjunction |
00002590  77 69 74 68 0a 20 20 63  65 72 74 61 69 6e 20 67  |with.  certain g|
000025a0  72 61 70 68 69 63 20 63  6f 6d 6d 61 6e 64 73 2e  |raphic commands.|
000025b0  20 42 59 20 69 74 73 65  6c 66 20 69 73 20 73 74  | BY itself is st|
000025c0  6f 72 65 64 20 61 73 20  41 53 43 49 49 20 74 65  |ored as ASCII te|
000025d0  78 74 20 73 74 72 61 69  67 68 74 20 61 66 74 65  |xt straight afte|
000025e0  72 0a 20 20 74 68 65 20  74 6f 6b 65 6e 69 73 65  |r.  the tokenise|
000025f0  64 20 67 72 61 70 68 69  63 20 6b 65 79 77 6f 72  |d graphic keywor|
00002600  64 2e 0a 0a 20 20 4b 4a  53 20 28 32 35 2d 31 30  |d...  KJS (25-10|
00002610  2d 39 30 29 20 2d 20 52  65 6c 65 61 73 65 20 76  |-90) - Release v|
00002620  65 72 73 69 6f 6e 20 31  2e 30 36 0a 0a 0a 2a 20  |ersion 1.06...* |
00002630  41 6c 67 6f 72 69 74 68  6d 73 20 63 6f 6d 70 6c  |Algorithms compl|
00002640  65 74 65 6c 79 20 72 65  77 72 69 74 74 65 6e 20  |etely rewritten |
00002650  69 6e 20 41 52 4d 20 43  6f 64 65 2e 0a 2a 20 41  |in ARM Code..* A|
00002660  6c 67 6f 72 69 74 68 6d  73 20 56 41 53 54 4c 59  |lgorithms VASTLY|
00002670  20 69 6d 70 72 6f 76 65  64 2e 0a 20 20 28 48 61  | improved..  (Ha|
00002680  73 20 63 6f 6d 70 65 74  65 6e 74 6c 79 20 53 71  |s competently Sq|
00002690  75 69 73 68 65 64 20 65  76 65 72 79 74 68 69 6e  |uished everythin|
000026a0  67 20 74 72 69 65 64 20  73 6f 20 66 61 72 2e 29  |g tried so far.)|
000026b0  0a 2a 20 57 69 6e 64 6f  77 73 20 72 65 64 72 61  |.* Windows redra|
000026c0  77 6e 20 66 72 6f 6d 20  73 63 72 61 74 63 68 2e  |wn from scratch.|
000026d0  0a 2a 20 55 73 65 72 20  69 6e 74 65 72 66 61 63  |.* User interfac|
000026e0  65 20 63 6f 6d 70 6c 65  74 65 6c 79 20 72 65 77  |e completely rew|
000026f0  72 69 74 74 65 6e 20 69  6e 20 43 2e 0a 0a 20 20  |ritten in C...  |
00002700  4b 4a 53 20 28 32 32 2d  30 38 2d 39 31 29 20 2d  |KJS (22-08-91) -|
00002710  20 52 65 6c 65 61 73 65  20 76 65 72 73 69 6f 6e  | Release version|
00002720  20 32 2e 30 30 0a 0a 0a  2a 20 55 73 65 72 20 69  | 2.00...* User i|
00002730  6e 74 65 72 66 61 63 65  0a 20 20 20 20 2d 20 62  |nterface.    - b|
00002740  75 67 73 20 73 6f 72 74  65 64 20 6f 75 74 2e 0a  |ugs sorted out..|
00002750  20 20 20 20 2d 20 6d 61  64 65 20 63 6f 6d 70 6c  |    - made compl|
00002760  65 74 65 6c 79 20 21 48  65 6c 70 20 63 6f 6d 70  |etely !Help comp|
00002770  61 74 69 62 6c 65 2e 0a  20 20 20 20 2d 20 70 61  |atible..    - pa|
00002780  75 73 65 20 66 61 63 69  6c 69 74 79 20 2f 20 73  |use facility / s|
00002790  77 61 70 20 62 65 74 77  65 65 6e 20 66 61 73 74  |wap between fast|
000027a0  20 26 20 73 6c 6f 77 20  6f 70 74 69 6f 6e 73 20  | & slow options |
000027b0  69 6d 70 6c 65 6d 65 6e  74 65 64 0a 20 20 20 20  |implemented.    |
000027c0  2d 20 65 74 63 2e 20 65  74 63 2e 0a 0a 20 20 49  |- etc. etc...  I|
000027d0  7a 7a 79 20 28 32 36 2d  31 30 2d 39 31 29 20 2d  |zzy (26-10-91) -|
000027e0  20 52 65 6c 65 61 73 65  20 76 65 72 73 69 6f 6e  | Release version|
000027f0  20 32 2e 31 30 0a 0a 0a  2a 20 41 52 4d 20 61 6e  | 2.10...* ARM an|
00002800  64 20 43 20 69 6e 74 65  72 66 61 63 65 20 72 65  |d C interface re|
00002810  63 6f 64 65 64 20 74 6f  20 61 6c 6c 6f 77 20 3e  |coded to allow >|
00002820  38 6b 20 70 72 6f 67 72  61 6d 73 20 74 6f 20 62  |8k programs to b|
00002830  65 20 6c 6f 61 64 65 64  20 61 6e 64 20 68 61 76  |e loaded and hav|
00002840  65 0a 20 20 74 68 65 69  72 20 76 61 72 69 61 62  |e.  their variab|
00002850  6c 65 73 20 63 6f 6d 70  61 63 74 65 64 2e 20 46  |les compacted. F|
00002860  69 6c 65 6e 61 6d 65 20  65 78 74 72 61 63 74 69  |ilename extracti|
00002870  6f 6e 20 66 6f 72 20 69  6e 2d 6d 65 6d 6f 72 79  |on for in-memory|
00002880  2d 64 61 74 61 2d 74 72  61 6e 73 66 65 72 73 0a  |-data-transfers.|
00002890  20 20 69 6d 70 6c 65 6d  65 6e 74 65 64 20 28 73  |  implemented (s|
000028a0  6f 20 77 68 79 20 64 6f  65 73 6e 27 74 20 65 76  |o why doesn't ev|
000028b0  65 72 79 6f 6e 65 20 65  6c 73 65 20 75 73 65 20  |eryone else use |
000028c0  69 74 3f 29 0a 0a 20 20  49 7a 7a 79 20 28 32 33  |it?)..  Izzy (23|
000028d0  2d 31 31 2d 39 31 29 20  2d 20 52 65 6c 65 61 73  |-11-91) - Releas|
000028e0  65 20 76 65 72 73 69 6f  6e 20 32 2e 31 31 0a 0a  |e version 2.11..|
000028f0  0a 2a 20 50 72 6f 62 6c  65 6d 20 77 69 74 68 20  |.* Problem with |
00002900  27 66 6c 65 78 5f 6d 69  64 65 78 74 65 6e 64 27  |'flex_midextend'|
00002910  20 63 75 72 65 64 20 62  79 20 75 73 69 6e 67 20  | cured by using |
00002920  27 66 6c 65 78 5f 65 78  74 65 6e 64 27 20 69 6e  |'flex_extend' in|
00002930  73 74 65 61 64 2e 0a 0a  20 20 49 7a 7a 79 20 28  |stead...  Izzy (|
00002940  32 34 2d 31 32 2d 39 31  29 20 2d 20 52 65 6c 65  |24-12-91) - Rele|
00002950  61 73 65 20 76 65 72 73  69 6f 6e 20 32 2e 31 32  |ase version 2.12|
00002960  0a 0a 0a 2a 20 27 52 65  6e 61 6d 65 20 75 6e 64  |...* 'Rename und|
00002970  65 72 20 66 6c 65 78 27  20 62 75 67 73 20 73 6f  |er flex' bugs so|
00002980  6c 76 65 64 2e 20 4f 6e  6c 79 20 41 4c 49 2d 76  |lved. Only ALI-v|
00002990  61 72 73 20 73 74 69 6c  6c 20 72 65 6d 61 69 6e  |ars still remain|
000029a0  20 61 20 70 72 6f 62 6c  65 6d 2e 0a 0a 20 20 4b  | a problem...  K|
000029b0  4a 53 20 28 33 31 2d 31  32 2d 39 31 29 20 2d 20  |JS (31-12-91) - |
000029c0  52 65 6c 65 61 73 65 20  76 65 72 73 69 6f 6e 20  |Release version |
000029d0  32 2e 31 34 20 28 32 2e  31 33 20 69 73 20 75 6e  |2.14 (2.13 is un|
000029e0  6c 75 63 6b 79 2c 20 6d  61 6e 21 29 0a 0a 0a 2a  |lucky, man!)...*|
000029f0  20 44 49 56 20 61 6e 64  20 4d 4f 44 20 73 70 61  | DIV and MOD spa|
00002a00  63 69 6e 67 20 70 72 6f  62 6c 65 6d 73 20 72 65  |cing problems re|
00002a10  6d 6f 76 65 64 20 28 77  68 79 20 68 61 64 20 49  |moved (why had I|
00002a20  20 6e 6f 74 20 6e 6f 74  69 63 65 64 20 74 68 69  | not noticed thi|
00002a30  73 20 62 65 66 6f 72 65  3f 29 0a 20 20 41 6c 6c  |s before?).  All|
00002a40  20 76 61 72 69 61 62 6c  65 73 20 6e 6f 77 20 66  | variables now f|
00002a50  6f 72 63 65 64 20 74 6f  20 6c 6f 77 65 72 2d 63  |orced to lower-c|
00002a60  61 73 65 20 74 6f 20 72  65 6d 6f 76 65 20 46 4e  |ase to remove FN|
00002a70  2f 50 43 2f 49 46 2f 4f  4e 20 70 72 6f 62 6c 65  |/PC/IF/ON proble|
00002a80  6d 73 0a 20 20 28 77 68  79 20 68 61 64 20 49 20  |ms.  (why had I |
00002a90  6e 6f 74 20 6e 6f 74 69  63 65 64 20 74 68 69 73  |not noticed this|
00002aa0  20 65 69 74 68 65 72 3f  21 29 0a 0a 20 20 4b 4a  | either?!)..  KJ|
00002ab0  53 20 28 31 32 2d 30 31  2d 39 32 29 20 2d 20 52  |S (12-01-92) - R|
00002ac0  65 6c 65 61 73 65 20 76  65 72 73 69 6f 6e 20 32  |elease version 2|
00002ad0  2e 31 35 0a 0a 0a 2a 20  52 65 6e 61 6d 69 6e 67  |.15...* Renaming|
00002ae0  20 6f 66 20 70 72 6f 67  72 61 6d 20 76 61 72 69  | of program vari|
00002af0  61 62 6c 65 73 20 76 61  73 74 6c 79 20 72 65 73  |ables vastly res|
00002b00  74 72 75 63 74 75 72 65  64 2e 20 4e 6f 77 20 72  |tructured. Now r|
00002b10  65 6e 61 6d 65 73 20 41  52 4d 20 43 6f 64 65 0a  |enames ARM Code.|
00002b20  20 20 76 61 72 69 61 62  6c 65 73 20 70 72 6f 70  |  variables prop|
00002b30  65 72 6c 79 2c 20 77 69  74 68 6f 75 74 20 72 65  |erly, without re|
00002b40  6e 61 6d 69 6e 67 20 73  68 69 66 74 20 6d 6e 65  |naming shift mne|
00002b50  6d 6f 6e 69 63 73 2e 20  48 65 6c 70 20 66 69 6c  |monics. Help fil|
00002b60  65 20 72 65 64 6f 6e 65  0a 20 20 74 6f 20 61 20  |e redone.  to a |
00002b70  6d 6f 72 65 20 27 73 65  72 69 6f 75 73 20 70 72  |more 'serious pr|
00002b80  6f 67 72 61 6d 6d 65 72  20 61 74 74 69 74 75 64  |ogrammer attitud|
00002b90  65 27 20 73 74 79 6c 65  20 2e 2e 2e 20 4e 4f 54  |e' style ... NOT|
00002ba0  21 0a 0a 20 20 4b 4a 53  20 28 32 36 2d 30 31 2d  |!..  KJS (26-01-|
00002bb0  39 32 29 20 2d 20 52 65  6c 65 61 73 65 20 76 65  |92) - Release ve|
00002bc0  72 73 69 6f 6e 20 32 2e  31 36 0a 0a 0a 2a 20 4d  |rsion 2.16...* M|
00002bd0  69 6e 6f 72 20 6d 6f 64  69 66 69 63 61 74 69 6f  |inor modificatio|
00002be0  6e 73 20 74 6f 20 72 75  6e 20 75 6e 64 65 72 20  |ns to run under |
00002bf0  52 49 53 43 20 4f 53 20  33 2e 31 30 0a 0a 20 20  |RISC OS 3.10..  |
00002c00  49 7a 7a 79 20 28 31 38  2d 31 32 2d 39 32 29 20  |Izzy (18-12-92) |
00002c10  2d 20 52 65 6c 65 61 73  65 20 76 65 72 73 69 6f  |- Release versio|
00002c20  6e 20 32 2e 31 37 0a 0a  0a 2a 20 4d 61 6a 6f 72  |n 2.17...* Major|
00002c30  20 6d 6f 64 69 66 69 63  61 74 69 6f 6e 73 20 74  | modifications t|
00002c40  6f 20 72 75 6e 20 75 6e  64 65 72 20 52 49 53 43  |o run under RISC|
00002c50  20 4f 53 20 33 2e 31 30  2e 20 53 71 75 69 73 68  | OS 3.10. Squish|
00002c60  20 63 61 6e 20 6e 6f 77  20 73 61 76 65 20 77 69  | can now save wi|
00002c70  74 68 6f 75 74 0a 20 20  63 6f 6e 73 74 61 6e 74  |thout.  constant|
00002c80  6c 79 20 66 61 6c 6c 69  6e 67 20 6f 76 65 72 2e  |ly falling over.|
00002c90  0a 0a 20 20 49 7a 7a 79  20 28 30 37 2d 30 31 2d  |..  Izzy (07-01-|
00002ca0  39 33 29 20 2d 20 52 65  6c 65 61 73 65 20 76 65  |93) - Release ve|
00002cb0  72 73 69 6f 6e 20 32 2e  31 38 0a 0a 0a 2a 20 48  |rsion 2.18...* H|
00002cc0  65 6c 70 20 73 79 73 74  65 6d 20 72 65 77 72 69  |elp system rewri|
00002cd0  74 74 65 6e 2e 20 54 65  6d 70 6c 61 74 65 73 20  |tten. Templates |
00002ce0  67 65 6e 65 72 61 6c 6c  79 20 27 74 69 64 69 65  |generally 'tidie|
00002cf0  64 27 20 75 70 2e 20 4d  6f 64 69 66 69 63 61 74  |d' up. Modificat|
00002d00  69 6f 6e 20 74 6f 0a 20  20 53 50 41 43 45 20 72  |ion to.  SPACE r|
00002d10  65 6d 6f 76 65 72 20 74  6f 20 63 6f 72 72 65 63  |emover to correc|
00002d20  74 6c 79 20 68 61 6e 64  6c 65 20 72 65 6d 6f 76  |tly handle remov|
00002d30  61 6c 20 6f 66 20 6d 75  6c 74 69 70 6c 65 20 53  |al of multiple S|
00002d40  50 41 43 45 73 20 77 69  74 68 69 6e 0a 20 20 70  |PACEs within.  p|
00002d50  61 72 74 69 63 75 6c 61  72 20 44 49 4d 20 73 74  |articular DIM st|
00002d60  61 74 65 6d 65 6e 74 73  2e 0a 0a 20 20 4b 4a 53  |atements...  KJS|
00002d70  20 28 30 38 2d 30 31 2d  39 33 29 20 2d 20 52 65  | (08-01-93) - Re|
00002d80  6c 65 61 73 65 20 76 65  72 73 69 6f 6e 20 32 2e  |lease version 2.|
00002d90  31 39 0a 0a 0a 2a 20 45  52 52 4f 52 20 45 58 54  |19...* ERROR EXT|
00002da0  20 70 72 6f 62 6c 65 6d  20 73 6f 6c 76 65 64 2e  | problem solved.|
00002db0  20 4f 50 54 20 70 72 6f  62 6c 65 6d 20 73 6f 6c  | OPT problem sol|
00002dc0  76 65 64 2c 20 73 70 65  63 69 66 69 63 61 6c 6c  |ved, specificall|
00002dd0  79 20 72 65 6e 61 6d 69  6e 67 20 6f 66 20 31 0a  |y renaming of 1.|
00002de0  20 20 63 68 61 72 61 63  74 65 72 20 70 61 73 73  |  character pass|
00002df0  20 76 61 72 69 61 62 6c  65 73 2e 20 52 65 67 69  | variables. Regi|
00002e00  73 74 65 72 20 72 65 6e  61 6d 69 6e 67 20 73 6f  |ster renaming so|
00002e10  6c 76 65 64 2e 20 43 61  6e 20 6e 6f 77 20 72 65  |lved. Can now re|
00002e20  6e 61 6d 65 20 41 52 4d  0a 20 20 72 65 67 69 73  |name ARM.  regis|
00002e30  74 65 72 73 20 74 68 61  74 20 68 61 76 65 20 62  |ters that have b|
00002e40  65 65 6e 20 61 73 73 69  67 6e 65 64 20 74 6f 20  |een assigned to |
00002e50  31 20 63 68 61 72 61 63  74 65 72 20 76 61 72 69  |1 character vari|
00002e60  61 62 6c 65 20 6e 61 6d  65 73 2e 20 41 6e 6f 6d  |able names. Anom|
00002e70  61 6c 69 65 73 0a 20 20  77 69 74 68 20 43 20 69  |alies.  with C i|
00002e80  6e 74 65 72 66 61 63 65  20 28 57 49 4d 50 20 64  |nterface (WIMP d|
00002e90  72 61 67 73 2c 20 49 4d  44 54 73 20 65 74 63 2e  |rags, IMDTs etc.|
00002ea0  29 20 73 6f 6c 76 65 64  2e 20 56 61 6c 69 64 61  |) solved. Valida|
00002eb0  74 69 6f 6e 20 6f 66 20  42 41 53 49 43 20 66 69  |tion of BASIC fi|
00002ec0  6c 65 0a 20 20 69 6e 63  6c 75 64 65 64 2c 20 61  |le.  included, a|
00002ed0  73 20 70 65 72 20 21 45  64 69 74 2e 20 42 61 63  |s per !Edit. Bac|
00002ee0  6b 44 72 6f 70 20 69 63  6f 6e 20 63 72 65 61 74  |kDrop icon creat|
00002ef0  65 64 2e 20 41 64 6a 75  73 74 20 63 6c 69 63 6b  |ed. Adjust click|
00002f00  20 6f 6e 20 6d 61 69 6e  20 77 69 6e 64 6f 77 0a  | on main window.|
00002f10  20 20 66 6f 72 63 65 73  20 66 69 6c 65 72 20 77  |  forces filer w|
00002f20  69 6e 64 6f 77 20 74 6f  20 61 70 70 65 61 72 2e  |indow to appear.|
00002f30  0a 0a 20 20 4b 4a 53 20  28 31 31 2d 30 31 2d 39  |..  KJS (11-01-9|
00002f40  33 29 20 2d 20 52 65 6c  65 61 73 65 20 76 65 72  |3) - Release ver|
00002f50  73 69 6f 6e 20 32 2e 32  30 0a 0a 0a 2a 20 52 45  |sion 2.20...* RE|
00002f60  4d 20 72 65 6d 6f 76 61  6c 20 63 6f 64 65 20 72  |M removal code r|
00002f70  65 77 72 69 74 74 65 6e  2e 20 53 71 75 69 73 68  |ewritten. Squish|
00002f80  20 63 61 6e 20 6e 6f 77  20 72 65 6d 6f 76 65 20  | can now remove |
00002f90  63 6f 6d 6d 65 6e 74 73  20 66 72 6f 6d 20 41 52  |comments from AR|
00002fa0  4d 0a 20 20 61 73 73 65  6d 62 6c 65 72 20 63 6f  |M.  assembler co|
00002fb0  72 72 65 63 74 6c 79 2e  20 28 41 73 73 65 6d 62  |rrectly. (Assemb|
00002fc0  6c 65 72 20 63 61 6e 20  68 61 76 65 20 66 75 72  |ler can have fur|
00002fd0  74 68 65 72 20 73 74 61  74 65 6d 65 6e 74 73 20  |ther statements |
00002fe0  61 66 74 65 72 20 61 0a  20 20 63 6f 6d 6d 65 6e  |after a.  commen|
00002ff0  74 2c 20 42 41 53 49 43  20 63 61 6e 27 74 2e 29  |t, BASIC can't.)|
00003000  0a 2a 20 56 61 72 69 61  62 6c 65 20 72 65 6e 61  |.* Variable rena|
00003010  6d 65 72 20 63 68 61 6e  67 65 64 20 74 6f 20 63  |mer changed to c|
00003020  6f 70 65 20 77 69 74 68  20 74 68 65 20 72 65 77  |ope with the rew|
00003030  72 69 74 74 65 6e 20 52  45 4d 20 63 6f 64 65 2e  |ritten REM code.|
00003040  20 43 61 6e 20 6e 6f 77  0a 20 20 72 65 6e 61 6d  | Can now.  renam|
00003050  65 20 76 61 72 69 61 62  6c 65 73 20 41 46 54 45  |e variables AFTE|
00003060  52 20 63 6f 6e 63 61 74  65 6e 61 74 69 6f 6e 2c  |R concatenation,|
00003070  20 77 69 74 68 6f 75 74  20 72 65 6e 61 6d 69 6e  | without renamin|
00003080  67 20 61 6c 6c 20 74 68  65 20 65 6d 62 65 64 64  |g all the embedd|
00003090  65 64 0a 20 20 41 52 4d  20 63 6f 6d 6d 65 6e 74  |ed.  ARM comment|
000030a0  73 2e 0a 2a 20 53 61 76  65 20 72 6f 75 74 69 6e  |s..* Save routin|
000030b0  65 73 20 6e 6f 77 20 6d  61 64 65 20 6d 6f 72 65  |es now made more|
000030c0  20 72 6f 62 75 73 74 2e  0a 0a 20 20 4b 4a 53 20  | robust...  KJS |
000030d0  2f 20 49 7a 7a 79 20 28  31 33 2d 30 31 2d 39 33  |/ Izzy (13-01-93|
000030e0  29 20 2d 20 52 65 6c 65  61 73 65 20 76 65 72 73  |) - Release vers|
000030f0  69 6f 6e 20 32 2e 32 31  0a 0a 0a 2a 20 43 20 69  |ion 2.21...* C i|
00003100  6e 74 65 72 66 61 63 65  20 75 70 64 61 74 65 64  |nterface updated|
00003110  2e 20 52 41 4d 20 74 72  61 6e 73 66 65 72 73 20  |. RAM transfers |
00003120  77 6f 72 6b 20 63 6f 72  72 65 63 74 6c 79 2e 20  |work correctly. |
00003130  49 6e 74 65 72 66 61 63  65 20 65 78 61 6d 69 6e  |Interface examin|
00003140  65 64 20 66 6f 72 0a 20  20 63 6f 6e 73 69 73 74  |ed for.  consist|
00003150  65 6e 63 79 2e 0a 2a 20  41 52 4d 20 72 6f 75 74  |ency..* ARM rout|
00003160  69 6e 65 73 20 63 6f 6d  70 61 72 65 64 20 74 6f  |ines compared to|
00003170  20 42 41 53 49 43 20 43  52 55 4e 43 48 20 63 6f  | BASIC CRUNCH co|
00003180  6d 6d 61 6e 64 20 2d 20  41 52 4d 20 72 6f 75 74  |mmand - ARM rout|
00003190  69 6e 65 73 20 66 6f 75  6e 64 20 74 6f 20 62 65  |ines found to be|
000031a0  0a 20 20 73 6f 6d 65 77  68 61 74 20 62 65 74 74  |.  somewhat bett|
000031b0  65 72 2e 0a 2a 20 53 61  76 65 20 72 6f 75 74 69  |er..* Save routi|
000031c0  6e 65 20 6e 6f 77 20 73  75 66 66 69 78 65 73 20  |ne now suffixes |
000031d0  66 69 6c 65 6e 61 6d 65  20 77 69 74 68 20 53 20  |filename with S |
000031e0  6f 72 20 51 20 61 73 20  61 70 70 72 6f 70 72 69  |or Q as appropri|
000031f0  61 74 65 2e 20 43 6f 64  65 20 66 69 78 65 64 0a  |ate. Code fixed.|
00003200  20 20 74 6f 20 70 72 65  76 65 6e 74 20 72 65 6e  |  to prevent ren|
00003210  61 6d 69 6e 67 20 41 52  4d 20 76 61 72 69 61 62  |aming ARM variab|
00003220  6c 65 73 20 74 68 61 74  20 62 65 67 69 6e 20 77  |les that begin w|
00003230  69 74 68 20 61 20 72 65  67 69 73 74 65 72 20 64  |ith a register d|
00003240  65 66 69 6e 69 74 69 6f  6e 0a 20 20 28 65 67 2e  |efinition.  (eg.|
00003250  20 22 72 31 33 70 6f 69  6e 74 65 72 22 29 2e 20  | "r13pointer"). |
00003260  50 72 6f 62 6c 65 6d 20  77 69 74 68 20 2a 63 6f  |Problem with *co|
00003270  6d 6d 61 6e 64 73 20 73  6f 6c 76 65 64 2e 0a 0a  |mmands solved...|
00003280  20 20 4b 4a 53 20 2f 20  49 7a 7a 79 20 28 31 39  |  KJS / Izzy (19|
00003290  2d 30 31 2d 39 33 29 20  2d 20 52 65 6c 65 61 73  |-01-93) - Releas|
000032a0  65 20 76 65 72 73 69 6f  6e 20 32 2e 32 32 0a 0a  |e version 2.22..|
000032b0  0a 2a 20 41 20 27 62 75  67 27 20 69 6e 20 74 68  |.* A 'bug' in th|
000032c0  65 20 22 50 61 75 73 65  22 20 66 65 61 74 75 72  |e "Pause" featur|
000032d0  65 20 72 65 6d 6f 76 65  64 2e 20 49 66 20 73 71  |e removed. If sq|
000032e0  75 69 73 68 69 6e 67 20  69 73 20 70 61 75 73 65  |uishing is pause|
000032f0  64 2c 20 70 72 65 73 73  69 6e 67 0a 20 20 65 69  |d, pressing.  ei|
00003300  74 68 65 72 20 74 68 65  20 43 61 6e 63 65 6c 20  |ther the Cancel |
00003310  6f 72 20 74 68 65 20 46  61 73 74 20 69 63 6f 6e  |or the Fast icon|
00003320  20 66 61 69 6c 65 64 20  74 6f 20 72 65 73 65 74  | failed to reset|
00003330  20 74 68 65 20 50 61 75  73 65 20 73 74 61 74 75  | the Pause statu|
00003340  73 2c 20 61 6e 64 0a 20  20 73 75 62 73 65 71 75  |s, and.  subsequ|
00003350  65 6e 74 20 69 63 6f 6e  73 20 72 65 66 6c 65 63  |ent icons reflec|
00003360  74 65 64 20 65 72 72 6f  6e 65 6f 75 73 20 73 74  |ted erroneous st|
00003370  61 74 65 73 2e 0a 0a 20  20 4b 4a 53 20 28 32 34  |ates...  KJS (24|
00003380  2d 30 32 2d 39 33 29 20  2d 20 52 65 6c 65 61 73  |-02-93) - Releas|
00003390  65 20 76 65 72 73 69 6f  6e 20 32 2e 32 33 0a 0a  |e version 2.23..|
000033a0  0a 2a 20 53 45 52 49 4f  55 53 20 70 72 6f 62 6c  |.* SERIOUS probl|
000033b0  65 6d 20 69 6e 20 74 68  65 20 6d 65 73 73 61 67  |em in the messag|
000033c0  69 6e 67 20 73 79 73 74  65 6d 20 72 65 6d 6f 76  |ing system remov|
000033d0  65 64 2c 20 77 68 69 63  68 20 68 61 64 20 6f 6e  |ed, which had on|
000033e0  6c 79 20 62 65 63 61 6d  65 0a 20 20 61 70 70 61  |ly became.  appa|
000033f0  72 65 6e 74 20 61 66 74  65 72 20 72 65 6c 65 61  |rent after relea|
00003400  73 65 20 52 49 53 43 20  4f 53 20 33 2e 31 30 20  |se RISC OS 3.10 |
00003410  77 61 73 20 66 69 74 74  65 64 2e 20 4f 70 74 69  |was fitted. Opti|
00003420  6f 6e 20 61 64 64 65 64  20 74 6f 20 74 68 65 20  |on added to the |
00003430  52 65 6e 61 6d 65 0a 20  20 61 6c 67 6f 72 69 74  |Rename.  algorit|
00003440  68 6d 20 74 6f 20 61 6c  6c 6f 77 20 73 75 70 70  |hm to allow supp|
00003450  72 65 73 73 69 6f 6e 20  6f 66 20 72 65 6e 61 6d  |ression of renam|
00003460  69 6e 67 20 50 52 4f 43  45 44 55 52 45 20 61 6e  |ing PROCEDURE an|
00003470  64 2f 6f 72 20 46 55 4e  43 54 49 4f 4e 0a 20 20  |d/or FUNCTION.  |
00003480  69 64 65 6e 74 69 66 69  65 72 73 2e 0a 0a 20 20  |identifiers...  |
00003490  4b 4a 53 2f 49 7a 7a 79  20 28 32 35 2d 30 32 2d  |KJS/Izzy (25-02-|
000034a0  39 33 29 20 2d 20 52 65  6c 65 61 73 65 20 76 65  |93) - Release ve|
000034b0  72 73 69 6f 6e 20 32 2e  32 34 0a 0a 0a 2a 20 44  |rsion 2.24...* D|
000034c0  69 61 6c 6f 67 75 65 20  62 6f 78 20 68 61 6e 64  |ialogue box hand|
000034d0  6c 65 72 20 63 6f 64 65  20 63 6f 6d 70 6c 65 74  |ler code complet|
000034e0  65 6c 79 20 72 65 2d 77  72 69 74 74 65 6e 2e 20  |ely re-written. |
000034f0  53 71 75 69 73 68 20 63  61 6e 20 6e 6f 77 20 62  |Squish can now b|
00003500  65 20 71 75 69 74 0a 20  20 66 72 6f 6d 20 74 68  |e quit.  from th|
00003510  65 20 6d 65 6e 75 20 77  69 74 68 6f 75 74 20 61  |e menu without a|
00003520  20 70 72 6f 62 6c 65 6d  2e 20 4d 6f 64 69 66 69  | problem. Modifi|
00003530  65 64 20 52 41 4d 20 73  61 76 65 20 72 6f 75 74  |ed RAM save rout|
00003540  69 6e 65 20 73 6c 69 67  68 74 6c 79 20 2d 0a 20  |ine slightly -. |
00003550  20 6e 6f 77 20 69 66 20  79 6f 75 20 73 61 76 65  | now if you save|
00003560  20 75 73 69 6e 67 20 61  6e 20 69 6e 2d 6d 65 6d  | using an in-mem|
00003570  6f 72 79 20 64 61 74 61  20 74 72 61 6e 73 66 65  |ory data transfe|
00003580  72 20 74 68 65 20 64 61  74 61 20 69 73 20 63 6f  |r the data is co|
00003590  6e 73 69 64 65 72 65 64  0a 20 20 73 61 66 65 2e  |nsidered.  safe.|
000035a0  20 49 74 20 77 69 6c 6c  20 62 65 20 75 70 20 74  | It will be up t|
000035b0  6f 20 74 68 65 20 6f 74  68 65 72 20 70 61 63 6b  |o the other pack|
000035c0  61 67 65 20 74 6f 20 77  61 72 6e 20 74 68 65 20  |age to warn the |
000035d0  75 73 65 72 20 74 68 61  74 20 74 68 65 20 64 61  |user that the da|
000035e0  74 61 0a 20 20 69 73 20  75 6e 73 61 66 65 2c 20  |ta.  is unsafe, |
000035f0  73 69 6e 63 65 20 53 71  75 69 73 68 20 77 69 6c  |since Squish wil|
00003600  6c 20 62 79 20 6e 6f 77  20 68 61 76 65 20 65 66  |l by now have ef|
00003610  66 65 63 74 69 76 65 6c  79 20 66 69 6e 69 73 68  |fectively finish|
00003620  65 64 20 70 72 6f 63 65  73 73 69 6e 67 2e 0a 2a  |ed processing..*|
00003630  20 42 75 67 20 69 6e 20  72 65 6e 61 6d 65 20 76  | Bug in rename v|
00003640  61 72 69 61 62 6c 65 73  20 66 69 78 65 64 2e 20  |ariables fixed. |
00003650  49 66 20 61 20 2a 63 6f  6d 6d 61 6e 64 20 77 61  |If a *command wa|
00003660  73 20 70 61 72 74 20 6f  66 20 61 6e 20 49 46 2e  |s part of an IF.|
00003670  2e 2e 54 48 45 4e 0a 20  20 63 6f 6e 73 74 72 75  |..THEN.  constru|
00003680  63 74 2c 20 69 74 20 77  61 73 20 72 65 6e 61 6d  |ct, it was renam|
00003690  65 64 2e 0a 0a 20 20 49  7a 7a 79 20 28 30 31 2d  |ed...  Izzy (01-|
000036a0  30 33 2d 39 33 29 20 2d  20 52 65 6c 65 61 73 65  |03-93) - Release|
000036b0  20 76 65 72 73 69 6f 6e  20 32 2e 32 35 0a 0a 0a  | version 2.25...|
000036c0  2a 20 50 75 74 20 69 6e  20 63 6f 64 65 20 74 6f  |* Put in code to|
000036d0  20 64 69 66 66 65 72 65  6e 74 69 61 74 65 20 62  | differentiate b|
000036e0  65 74 77 65 65 6e 20 61  20 50 52 45 51 55 49 54  |etween a PREQUIT|
000036f0  20 6d 65 73 73 61 67 65  20 62 65 69 6e 67 20 61  | message being a|
00003700  70 70 6c 69 63 61 74 69  6f 6e 0a 20 20 73 70 65  |pplication.  spe|
00003710  63 69 66 69 63 20 2f 20  61 20 67 65 6e 65 72 61  |cific / a genera|
00003720  6c 20 64 65 73 6b 74 6f  70 20 73 68 75 74 64 6f  |l desktop shutdo|
00003730  77 6e 20 72 6f 75 74 69  6e 65 2e 0a 0a 20 20 49  |wn routine...  I|
00003740  7a 7a 79 20 28 30 32 2d  30 33 2d 39 33 29 20 2d  |zzy (02-03-93) -|
00003750  20 52 65 6c 65 61 73 65  20 76 65 72 73 69 6f 6e  | Release version|
00003760  20 32 2e 32 36 0a 0a 0a  2a 20 43 6f 6d 70 6c 65  | 2.26...* Comple|
00003770  74 65 6c 79 20 72 65 2d  77 72 6f 74 65 20 64 69  |tely re-wrote di|
00003780  61 6c 6f 67 75 65 20 62  6f 78 20 63 6f 64 65 2e  |alogue box code.|
00003790  20 41 6c 6c 20 64 62 6f  78 65 73 20 6e 6f 77 20  | All dboxes now |
000037a0  73 65 6c 66 2d 63 65 6e  74 72 65 20 61 63 72 6f  |self-centre acro|
000037b0  73 73 0a 20 20 4d 4f 44  45 20 63 68 61 6e 67 65  |ss.  MODE change|
000037c0  73 2e 0a 2a 20 43 68 61  6e 67 65 64 20 74 68 65  |s..* Changed the|
000037d0  20 63 6f 64 65 20 62 61  63 6b 20 73 6f 20 74 68  | code back so th|
000037e0  61 74 20 69 6e 2d 6d 65  6d 6f 72 79 20 64 61 74  |at in-memory dat|
000037f0  61 20 74 72 61 6e 73 66  65 72 73 20 61 72 65 20  |a transfers are |
00003800  4e 4f 54 20 63 6f 6e 73  69 64 65 72 65 64 0a 20  |NOT considered. |
00003810  20 73 61 66 65 2e 0a 2a  20 4f 70 74 69 6f 6e 73  | safe..* Options|
00003820  20 66 6f 72 20 73 71 75  69 73 68 69 6e 67 20 61  | for squishing a|
00003830  72 65 20 6e 6f 77 20 61  75 74 6f 6d 61 74 69 63  |re now automatic|
00003840  61 6c 6c 79 20 64 69 73  70 6c 61 79 65 64 20 69  |ally displayed i|
00003850  66 20 6e 6f 6e 65 20 61  72 65 20 73 65 6c 65 63  |f none are selec|
00003860  74 65 64 0a 20 20 77 68  65 6e 20 61 74 74 65 6d  |ted.  when attem|
00003870  70 74 69 6e 67 20 74 6f  20 73 71 75 69 73 68 20  |pting to squish |
00003880  61 20 70 72 6f 67 72 61  6d 2e 0a 2a 20 4d 65 73  |a program..* Mes|
00003890  73 61 67 65 73 20 66 69  6c 65 20 61 6e 64 20 74  |sages file and t|
000038a0  65 6d 70 6c 61 74 65 73  20 74 69 64 69 65 64 20  |emplates tidied |
000038b0  75 70 2e 20 48 65 6c 70  20 6d 65 73 73 61 67 65  |up. Help message|
000038c0  73 20 66 6f 72 20 6d 65  6e 75 73 20 74 61 6b 65  |s for menus take|
000038d0  6e 20 6f 75 74 0a 20 20  61 73 20 6e 6f 74 20 73  |n out.  as not s|
000038e0  75 70 70 6f 72 74 65 64  20 62 79 20 74 68 65 20  |upported by the |
000038f0  63 75 72 72 65 6e 74 20  43 20 63 6f 6d 70 69 6c  |current C compil|
00003900  65 72 2e 0a 0a 20 20 49  7a 7a 79 20 28 30 33 2d  |er...  Izzy (03-|
00003910  30 33 2d 39 33 29 20 2d  20 52 65 6c 65 61 73 65  |03-93) - Release|
00003920  20 76 65 72 73 69 6f 6e  20 32 2e 32 37 0a 0a 0a  | version 2.27...|
00003930  2a 20 53 71 75 69 73 68  20 77 69 6c 6c 20 6e 6f  |* Squish will no|
00003940  77 20 69 6e 74 65 6c 6c  69 67 65 6e 74 6c 79 20  |w intelligently |
00003950  64 65 61 6c 20 77 69 74  68 20 61 6e 20 61 74 74  |deal with an att|
00003960  65 6d 70 74 20 74 6f 20  71 75 69 74 20 74 68 65  |empt to quit the|
00003970  20 70 72 6f 67 72 61 6d  2e 0a 2a 20 54 68 65 20  | program..* The |
00003980  52 49 53 43 20 4f 53 20  64 65 73 6b 74 6f 70 20  |RISC OS desktop |
00003990  62 6f 6f 74 20 66 69 6c  65 20 66 61 63 69 6c 69  |boot file facili|
000039a0  74 79 20 69 73 20 61 6c  73 6f 20 6e 6f 77 20 73  |ty is also now s|
000039b0  75 70 70 6f 72 74 65 64  2e 0a 2a 20 45 78 74 72  |upported..* Extr|
000039c0  61 20 63 6f 64 65 20 69  6e 73 65 72 74 65 64 20  |a code inserted |
000039d0  74 6f 20 61 6c 6c 6f 77  20 69 64 65 6e 74 69 66  |to allow identif|
000039e0  69 65 72 73 20 74 6f 20  62 65 20 27 6c 6f 63 6b  |iers to be 'lock|
000039f0  65 64 27 20 66 72 6f 6d  20 72 65 6e 61 6d 69 6e  |ed' from renamin|
00003a00  67 2e 0a 20 20 50 72 69  6e 63 69 70 61 6c 6c 79  |g..  Principally|
00003a10  2c 20 74 68 69 73 20 61  6c 6c 6f 77 73 20 6c 69  |, this allows li|
00003a20  62 72 61 72 69 65 73 20  74 6f 20 68 61 76 65 20  |braries to have |
00003a30  67 6c 6f 62 61 6c 20 50  52 4f 43 2f 46 4e 2f 76  |global PROC/FN/v|
00003a40  61 72 73 20 65 78 70 6f  72 74 65 64 0a 20 20 74  |ars exported.  t|
00003a50  6f 20 69 6e 64 69 76 69  64 75 61 6c 20 52 75 6e  |o individual Run|
00003a60  49 6d 61 67 65 73 20 77  69 74 68 6f 75 74 20 74  |Images without t|
00003a70  68 65 20 6e 65 65 64 20  74 6f 20 63 6f 6e 63 61  |he need to conca|
00003a80  74 65 6e 61 74 65 2c 20  61 6c 73 6f 20 72 65 74  |tenate, also ret|
00003a90  61 69 6e 69 6e 67 0a 20  20 74 68 65 69 72 20 75  |aining.  their u|
00003aa0  6e 63 6f 6d 70 72 65 73  73 65 64 20 66 6f 72 6d  |ncompressed form|
00003ab0  61 74 2e 20 54 68 65 20  73 79 6e 74 61 78 20 66  |at. The syntax f|
00003ac0  6f 72 20 6c 69 73 74 69  6e 67 20 69 64 65 6e 74  |or listing ident|
00003ad0  69 66 69 65 72 73 20 69  73 20 68 65 6c 64 0a 20  |ifiers is held. |
00003ae0  20 77 69 74 68 69 6e 20  52 45 4d 20 73 74 61 74  | within REM stat|
00003af0  65 6d 65 6e 74 73 20 69  6e 20 74 68 65 20 73 6f  |ements in the so|
00003b00  75 72 63 65 20 70 72 6f  67 72 61 6d 2c 20 61 73  |urce program, as|
00003b10  20 70 65 72 20 65 78 61  6d 70 6c 65 20 3a 0a 0a  | per example :..|
00003b20  20 20 31 30 30 20 52 45  4d 20 4c 4f 43 4b 20 3c  |  100 REM LOCK <|
00003b30  69 64 65 6e 74 69 66 69  65 72 20 31 3e 20 2c 20  |identifier 1> , |
00003b40  3c 69 64 65 6e 74 69 66  69 65 72 20 32 3e 20 2c  |<identifier 2> ,|
00003b50  20 2e 2e 2e 20 2c 20 3c  69 64 65 6e 74 69 66 69  | ... , <identifi|
00003b60  65 72 20 6e 3e 0a 0a 20  20 73 6f 20 61 20 57 49  |er n>..  so a WI|
00003b70  4d 50 20 70 72 6f 67 72  61 6d 20 77 68 69 63 68  |MP program which|
00003b80  20 75 73 65 73 20 61 20  67 6c 6f 62 61 6c 20 57  | uses a global W|
00003b90  49 4d 50 20 70 72 6f 63  65 64 75 72 65 20 6c 69  |IMP procedure li|
00003ba0  62 72 61 72 79 20 6d 61  79 0a 20 20 68 61 76 65  |brary may.  have|
00003bb0  20 61 20 4c 4f 43 4b 20  73 74 61 74 65 6d 65 6e  | a LOCK statemen|
00003bc0  74 20 73 6f 6d 65 74 68  69 6e 67 20 6c 69 6b 65  |t something like|
00003bd0  20 74 68 69 73 20 3a 0a  0a 20 20 31 30 30 20 52  | this :..  100 R|
00003be0  45 4d 20 4c 4f 43 4b 20  50 52 4f 43 6f 70 65 6e  |EM LOCK PROCopen|
00003bf0  5f 77 69 6e 64 6f 77 20  2c 20 50 52 4f 43 63 6c  |_window , PROCcl|
00003c00  6f 73 65 5f 77 69 6e 64  6f 77 20 2c 20 57 49 4e  |ose_window , WIN|
00003c10  44 4f 57 25 20 2c 20 49  43 4f 4e 5f 54 45 58 54  |DOW% , ICON_TEXT|
00003c20  24 0a 0a 20 20 4f 66 20  63 6f 75 72 73 65 2c 20  |$..  Of course, |
00003c30  62 6f 74 68 20 74 68 65  20 6d 61 69 6e 20 52 75  |both the main Ru|
00003c40  6e 49 6d 61 67 65 20 41  4e 44 20 74 68 65 20 6c  |nImage AND the l|
00003c50  69 62 72 61 72 79 20 69  74 73 65 6c 66 20 77 69  |ibrary itself wi|
00003c60  6c 6c 20 6e 65 65 64 20  74 6f 20 68 61 76 65 0a  |ll need to have.|
00003c70  20 20 61 20 63 6f 70 79  20 6f 66 20 74 68 65 20  |  a copy of the |
00003c80  4c 4f 43 4b 20 73 74 61  74 65 6d 65 6e 74 73 2c  |LOCK statements,|
00003c90  20 65 6c 73 65 20 6f 6e  65 20 77 69 6c 6c 20 68  | else one will h|
00003ca0  61 76 65 20 69 74 27 73  20 69 64 65 6e 74 69 66  |ave it's identif|
00003cb0  69 65 72 73 20 72 65 6e  61 6d 65 64 0a 20 20 61  |iers renamed.  a|
00003cc0  6e 64 20 74 68 65 20 6f  74 68 65 72 20 77 6f 6e  |nd the other won|
00003cd0  27 74 2e 20 41 6c 73 6f  20 6e 6f 74 65 20 74 68  |'t. Also note th|
00003ce0  61 74 20 73 75 62 73 63  72 69 70 74 73 20 6d 75  |at subscripts mu|
00003cf0  73 74 20 62 65 20 6f 6d  69 74 74 65 64 2c 20 73  |st be omitted, s|
00003d00  6f 20 61 20 4c 4f 43 4b  0a 20 20 63 61 6e 6e 6f  |o a LOCK.  canno|
00003d10  74 20 68 61 76 65 20 73  6f 6d 65 74 68 69 6e 67  |t have something|
00003d20  20 6c 69 6b 65 20 74 68  69 73 20 3a 0a 0a 20 20  | like this :..  |
00003d30  31 30 30 20 52 45 4d 20  4c 4f 43 4b 20 50 52 4f  |100 REM LOCK PRO|
00003d40  43 65 64 75 72 65 5f 4f  70 65 6e 57 69 6e 64 6f  |Cedure_OpenWindo|
00003d50  77 28 20 78 25 20 29 20  20 20 20 20 3c 2d 20 74  |w( x% )     <- t|
00003d60  68 65 20 22 28 20 78 25  20 29 22 20 73 68 6f 75  |he "( x% )" shou|
00003d70  6c 64 20 62 65 0a 20 20  20 20 20 20 20 20 20 20  |ld be.          |
00003d80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00003da0  20 20 20 20 20 20 20 6f  6d 69 74 74 65 64 20 66  |       omitted f|
00003db0  72 6f 6d 20 74 68 69 73  20 6c 69 6e 65 0a 0a 20  |rom this line.. |
00003dc0  20 4b 4a 53 2f 49 7a 7a  79 20 28 31 37 2d 30 33  | KJS/Izzy (17-03|
00003dd0  2d 39 33 29 20 2d 20 52  65 6c 65 61 73 65 20 76  |-93) - Release v|
00003de0  65 72 73 69 6f 6e 20 32  2e 32 38 0a 0a 0a 2a 20  |ersion 2.28...* |
00003df0  43 20 69 6e 74 65 72 66  61 63 65 20 6e 6f 77 20  |C interface now |
00003e00  61 6c 6c 6f 77 73 20 6d  75 6c 74 69 70 6c 65 20  |allows multiple |
00003e10  72 65 2d 73 71 75 69 73  68 20 61 74 74 65 6d 70  |re-squish attemp|
00003e20  74 73 20 77 69 74 68 6f  75 74 20 6c 6f 73 69 6e  |ts without losin|
00003e30  67 20 74 68 65 20 6c 69  73 74 0a 20 20 6f 66 20  |g the list.  of |
00003e40  4c 4f 43 4b 65 64 20 76  61 72 69 61 62 6c 65 73  |LOCKed variables|
00003e50  2e 20 41 6c 73 6f 20 61  64 76 69 73 65 73 20 77  |. Also advises w|
00003e60  68 65 6e 20 72 65 2d 73  71 75 69 73 68 69 6e 67  |hen re-squishing|
00003e70  20 6d 61 79 20 62 65 20  61 64 76 69 73 61 62 6c  | may be advisabl|
00003e80  65 20 64 75 65 20 74 6f  0a 20 20 6c 61 63 6b 20  |e due to.  lack |
00003e90  6f 66 20 6d 65 6d 6f 72  79 20 77 68 65 6e 20 72  |of memory when r|
00003ea0  65 6e 61 6d 69 6e 67 20  76 61 72 69 61 62 6c 65  |enaming variable|
00003eb0  73 2e 0a 2a 20 41 6c 6c  20 63 61 6c 63 75 6c 61  |s..* All calcula|
00003ec0  74 69 6f 6e 73 20 6f 6e  20 73 61 76 69 6e 67 73  |tions on savings|
00003ed0  20 61 72 65 20 6e 6f 77  20 62 61 73 65 64 20 6f  | are now based o|
00003ee0  6e 20 74 68 65 20 6f 72  69 67 69 6e 61 6c 20 70  |n the original p|
00003ef0  72 6f 67 72 61 6d 20 73  69 7a 65 2e 0a 2a 20 48  |rogram size..* H|
00003f00  65 6c 70 20 6e 6f 77 20  67 69 76 65 6e 20 6f 6e  |elp now given on|
00003f10  20 53 41 56 45 20 64 69  61 6c 6f 67 75 65 20 62  | SAVE dialogue b|
00003f20  6f 78 2e 0a 0a 20 20 49  7a 7a 79 20 28 31 38 2d  |ox...  Izzy (18-|
00003f30  30 33 2d 39 33 29 20 2d  20 52 65 6c 65 61 73 65  |03-93) - Release|
00003f40  20 76 65 72 73 69 6f 6e  20 32 2e 32 39 0a 0a 0a  | version 2.29...|
00003f50  2a 20 42 75 67 20 69 6e  20 76 61 72 69 61 62 6c  |* Bug in variabl|
00003f60  65 20 72 65 6e 61 6d 65  72 20 66 69 78 65 64 2e  |e renamer fixed.|
00003f70  20 4f 6e 65 20 63 68 61  72 61 63 74 65 72 20 69  | One character i|
00003f80  64 65 6e 74 69 66 69 65  72 73 20 63 61 75 73 65  |dentifiers cause|
00003f90  64 20 70 72 6f 62 6c 65  6d 73 0a 20 20 69 6e 20  |d problems.  in |
00003fa0  73 6f 6d 65 20 70 6c 61  63 65 73 2c 20 65 73 70  |some places, esp|
00003fb0  65 63 69 61 6c 6c 79 20  69 6e 20 74 68 65 20 74  |ecially in the t|
00003fc0  68 69 72 64 20 6f 70 63  6f 64 65 20 66 69 65 6c  |hird opcode fiel|
00003fd0  64 2c 20 69 6e 20 75 73  65 20 61 73 20 61 6e 0a  |d, in use as an.|
00003fe0  20 20 69 6d 6d 65 64 69  61 74 65 20 28 65 67 2e  |  immediate (eg.|
00003ff0  20 23 58 29 2e 0a 0a 20  20 4b 4a 53 20 28 31 39  | #X)...  KJS (19|
00004000  2d 30 33 2d 39 33 29 20  2d 20 52 65 6c 65 61 73  |-03-93) - Releas|
00004010  65 20 76 65 72 73 69 6f  6e 20 32 2e 33 30 0a 0a  |e version 2.30..|
00004020  0a 2a 20 50 75 74 20 69  6e 20 6e 65 77 20 73 61  |.* Put in new sa|
00004030  76 65 20 72 6f 75 74 69  6e 65 73 20 74 6f 20 75  |ve routines to u|
00004040  73 65 20 74 68 65 20 64  72 61 67 2d 61 2d 73 70  |se the drag-a-sp|
00004050  72 69 74 65 20 66 61 63  69 6c 69 74 79 2e 0a 0a  |rite facility...|
00004060  20 20 49 7a 7a 79 20 28  32 31 2d 30 33 2d 39 33  |  Izzy (21-03-93|
00004070  29 20 2d 20 52 65 6c 65  61 73 65 20 76 65 72 73  |) - Release vers|
00004080  69 6f 6e 20 32 2e 33 31  0a 0a 0a 2a 20 49 63 6f  |ion 2.31...* Ico|
00004090  6e 69 73 65 20 66 61 63  69 6c 69 74 79 20 69 6d  |nise facility im|
000040a0  70 6c 65 6d 65 6e 74 65  64 20 66 75 6c 6c 79 2e  |plemented fully.|
000040b0  20 4e 6f 77 20 77 68 65  6e 20 69 63 6f 6e 69 73  | Now when iconis|
000040c0  65 64 2c 20 53 71 75 69  73 68 20 77 69 6c 6c 0a  |ed, Squish will.|
000040d0  20 20 63 6f 6e 74 69 6e  75 65 20 74 6f 20 70 72  |  continue to pr|
000040e0  6f 63 65 73 73 20 74 68  65 20 42 41 53 49 43 20  |ocess the BASIC |
000040f0  70 72 6f 67 72 61 6d 2e  20 57 68 65 6e 20 66 69  |program. When fi|
00004100  6e 69 73 68 65 64 20 74  68 65 20 69 63 6f 6e 62  |nished the iconb|
00004110  61 72 0a 20 20 73 70 72  69 74 65 20 77 69 6c 6c  |ar.  sprite will|
00004120  20 63 68 61 6e 67 65 20  74 6f 20 69 6e 64 69 63  | change to indic|
00004130  61 74 65 20 74 68 61 74  20 74 68 65 20 70 72 6f  |ate that the pro|
00004140  63 65 73 73 20 68 61 73  20 62 65 65 6e 20 63 6f  |cess has been co|
00004150  6d 70 6c 65 74 65 64 2c  0a 20 20 62 75 74 20 74  |mpleted,.  but t|
00004160  68 61 74 20 74 68 65 20  77 69 6e 64 6f 77 20 69  |hat the window i|
00004170  73 20 73 74 69 6c 6c 20  69 63 6f 6e 69 73 65 64  |s still iconised|
00004180  2e 20 44 6f 75 62 6c 65  20 63 6c 69 63 6b 20 6f  |. Double click o|
00004190  6e 20 74 68 65 20 69 63  6f 6e 69 73 65 64 0a 20  |n the iconised. |
000041a0  20 77 69 6e 64 6f 77 20  74 6f 20 63 6f 6e 74 69  | window to conti|
000041b0  6e 75 65 2e 20 41 6c 73  6f 20 66 69 78 65 64 20  |nue. Also fixed |
000041c0  6d 69 6e 6f 72 20 62 75  67 20 77 68 65 6e 20 75  |minor bug when u|
000041d0  73 69 6e 67 20 41 44 4a  55 53 54 20 6f 6e 20 74  |sing ADJUST on t|
000041e0  68 65 0a 20 20 63 6c 6f  73 65 20 77 69 6e 64 6f  |he.  close windo|
000041f0  77 20 69 63 6f 6e 20 74  6f 20 6f 70 65 6e 20 74  |w icon to open t|
00004200  68 65 20 70 72 6f 67 72  61 6d 73 20 64 69 72 65  |he programs dire|
00004210  63 74 6f 72 79 2e 0a 0a  20 20 49 7a 7a 79 20 28  |ctory...  Izzy (|
00004220  30 31 2d 30 34 2d 39 33  29 20 2d 20 52 65 6c 65  |01-04-93) - Rele|
00004230  61 73 65 20 76 65 72 73  69 6f 6e 20 32 2e 33 32  |ase version 2.32|
00004240  0a 0a 0a 2a 20 50 61 74  63 68 20 6f 76 65 72 20  |...* Patch over |
00004250  69 6e 69 74 69 61 6c 69  73 61 74 69 6f 6e 20 72  |initialisation r|
00004260  6f 75 74 69 6e 65 73 20  74 6f 20 63 6f 70 65 20  |outines to cope |
00004270  77 69 74 68 20 6e 65 77  20 57 69 6d 70 5f 49 6e  |with new Wimp_In|
00004280  69 74 69 61 6c 69 73 65  0a 20 20 73 70 65 63 69  |itialise.  speci|
00004290  66 69 63 61 74 69 6f 6e  2c 20 61 73 20 43 20 6c  |fication, as C l|
000042a0  69 62 72 61 72 79 20 64  6f 65 73 6e 27 74 20 61  |ibrary doesn't a|
000042b0  6c 6c 6f 77 20 66 6f 72  20 74 68 69 73 2e 0a 0a  |llow for this...|
000042c0  20 20 49 7a 7a 79 20 28  30 33 2d 30 34 2d 39 33  |  Izzy (03-04-93|
000042d0  29 20 2d 20 52 65 6c 65  61 73 65 20 76 65 72 73  |) - Release vers|
000042e0  69 6f 6e 20 32 2e 33 33  0a 0a 0a 2a 20 50 61 74  |ion 2.33...* Pat|
000042f0  63 68 20 6f 76 65 72 20  27 77 69 6d 70 74 27 20  |ch over 'wimpt' |
00004300  72 6f 75 74 69 6e 65 73  2e 20 48 61 64 20 74 6f  |routines. Had to|
00004310  20 69 6e 73 65 72 74 20  6f 75 72 20 74 61 73 6b  | insert our task|
00004320  20 68 61 6e 64 6c 65 20  69 6e 74 6f 20 74 68 65  | handle into the|
00004330  0a 20 20 27 77 69 6d 70  74 27 20 72 6f 75 74 69  |.  'wimpt' routi|
00004340  6e 65 73 20 77 6f 72 6b  73 70 61 63 65 20 64 69  |nes workspace di|
00004350  72 65 63 74 6c 79 2c 20  61 73 20 41 63 6f 72 6e  |rectly, as Acorn|
00004360  20 68 61 76 65 20 66 6f  72 67 6f 74 74 65 6e 20  | have forgotten |
00004370  74 6f 20 74 65 6c 6c 0a  20 20 75 73 20 74 68 61  |to tell.  us tha|
00004380  74 20 27 78 66 65 72 5f  73 65 6e 64 27 20 75 73  |t 'xfer_send' us|
00004390  65 73 2c 20 66 6f 72 20  69 6e 20 6d 65 6d 6f 72  |es, for in memor|
000043a0  79 20 64 61 74 61 20 74  72 61 6e 73 66 65 72 73  |y data transfers|
000043b0  2c 20 74 68 65 20 27 77  69 6d 70 74 5f 74 61 73  |, the 'wimpt_tas|
000043c0  6b 27 0a 20 20 66 75 6e  63 74 69 6f 6e 20 2d 20  |k'.  function - |
000043d0  77 68 69 63 68 20 6d 65  61 6e 74 20 74 68 61 74  |which meant that|
000043e0  20 53 71 75 69 73 68 20  76 65 72 73 69 6f 6e 20  | Squish version |
000043f0  32 2e 33 33 20 66 65 6c  6c 20 6f 76 65 72 20 77  |2.33 fell over w|
00004400  68 65 6e 20 64 6f 69 6e  67 0a 20 20 69 6e 2d 6d  |hen doing.  in-m|
00004410  65 6d 6f 72 79 20 64 61  74 61 20 74 72 61 6e 73  |emory data trans|
00004420  66 65 72 73 2e 0a 0a 20  20 49 7a 7a 79 20 28 30  |fers...  Izzy (0|
00004430  36 2d 30 34 2d 39 33 29  20 2d 20 52 65 6c 65 61  |6-04-93) - Relea|
00004440  73 65 20 76 65 72 73 69  6f 6e 20 32 2e 33 34 0a  |se version 2.34.|
00004450  0a 0a 2a 20 50 75 74 20  69 6e 20 68 6f 75 72 67  |..* Put in hourg|
00004460  6c 61 73 73 20 72 6f 75  74 69 6e 65 73 20 74 6f  |lass routines to|
00004470  20 69 6e 63 6c 75 64 65  20 74 68 65 20 4c 45 44  | include the LED|
00004480  20 69 6e 64 69 63 61 74  6f 72 20 61 6e 64 20 63  | indicator and c|
00004490  68 61 6e 67 65 64 0a 20  20 6d 65 73 73 61 67 65  |hanged.  message|
000044a0  20 77 61 72 6e 69 6e 67  20 6f 72 64 65 72 20 77  | warning order w|
000044b0  68 65 6e 20 79 6f 75 20  61 74 74 65 6d 70 74 20  |hen you attempt |
000044c0  74 6f 20 53 71 75 69 73  68 20 61 20 70 72 6f 67  |to Squish a prog|
000044d0  72 61 6d 2e 0a 0a 20 20  20 20 20 20 20 20 20 20  |ram...          |
000044e0  20 20 20 20 4e 6f 20 4c  45 44 20 3a 20 49 6e 69  |    No LED : Ini|
000044f0  74 69 61 6c 69 73 69 6e  67 20 67 65 6e 65 72 61  |tialising genera|
00004500  6c 20 69 6e 74 65 72 6e  61 6c 20 72 6f 75 74 69  |l internal routi|
00004510  6e 65 73 2c 0a 20 20 20  20 20 20 20 20 20 20 20  |nes,.           |
00004520  20 20 54 6f 70 20 4c 45  44 20 3a 20 45 78 74 72  |  Top LED : Extr|
00004530  61 63 74 69 6e 67 20 4c  4f 43 4b 20 69 6e 66 6f  |acting LOCK info|
00004540  72 6d 61 74 69 6f 6e 2c  0a 20 20 20 20 20 20 20  |rmation,.       |
00004550  20 20 20 42 6f 74 74 6f  6d 20 4c 45 44 20 3a 20  |   Bottom LED : |
00004560  49 6e 69 74 69 61 6c 69  73 69 6e 67 20 76 61 72  |Initialising var|
00004570  69 61 62 6c 65 73 2e 0a  20 20 20 0a 0a 2a 20 53  |iables..   ..* S|
00004580  59 53 20 72 65 64 75 63  74 69 6f 6e 20 63 6f 64  |YS reduction cod|
00004590  65 20 61 6c 74 65 72 65  64 2c 20 73 6f 20 74 68  |e altered, so th|
000045a0  61 74 20 72 65 6e 61 6d  69 6e 67 20 6f 66 20 4f  |at renaming of O|
000045b0  53 5f 57 72 69 74 65 43  20 28 53 59 53 20 26 30  |S_WriteC (SYS &0|
000045c0  29 0a 20 20 64 6f 65 73  20 6e 6f 74 20 68 61 76  |).  does not hav|
000045d0  65 20 69 74 27 73 20 6f  6e 6c 79 20 7a 65 72 6f  |e it's only zero|
000045e0  20 73 74 72 69 70 70 65  64 20 6f 66 66 20 62 79  | stripped off by|
000045f0  20 74 68 65 20 6c 65 61  64 69 6e 67 5f 7a 65 72  | the leading_zer|
00004600  6f 20 63 6f 64 65 2e 0a  0a 20 20 4b 4a 53 2f 49  |o code...  KJS/I|
00004610  7a 7a 79 20 28 30 37 2d  30 34 2d 39 33 29 20 2d  |zzy (07-04-93) -|
00004620  20 52 65 6c 65 61 73 65  20 76 65 72 73 69 6f 6e  | Release version|
00004630  20 32 2e 33 35 0a 0a 0a  2a 20 46 69 78 65 64 20  | 2.35...* Fixed |
00004640  2a 20 63 6f 6d 6d 61 6e  64 20 62 75 67 2e 0a 0a  |* command bug...|
00004650  20 20 4b 4a 53 20 28 31  35 2d 30 34 2d 39 33 29  |  KJS (15-04-93)|
00004660  20 2d 20 52 65 6c 65 61  73 65 20 76 65 72 73 69  | - Release versi|
00004670  6f 6e 20 32 2e 33 36 0a  0a 0a 2a 20 41 64 6a 75  |on 2.36...* Adju|
00004680  73 74 65 64 20 21 52 75  6e 20 66 69 6c 65 20 73  |sted !Run file s|
00004690  6f 20 61 73 20 6e 6f 74  20 74 6f 20 72 65 2d 69  |o as not to re-i|
000046a0  6e 73 74 61 74 65 20 61  20 43 4c 69 62 20 74 68  |nstate a CLib th|
000046b0  61 74 20 69 73 20 61 6c  72 65 61 64 79 20 61 63  |at is already ac|
000046c0  74 69 76 65 2e 0a 0a 20  20 49 7a 7a 79 20 28 31  |tive...  Izzy (1|
000046d0  30 2d 30 35 2d 39 33 29  20 2d 20 52 65 6c 65 61  |0-05-93) - Relea|
000046e0  73 65 20 76 65 72 73 69  6f 6e 20 32 2e 33 37 0a  |se version 2.37.|
000046f0  0a 0a 2a 20 52 65 6d 6f  76 65 64 20 62 75 67 20  |..* Removed bug |
00004700  69 6e 20 45 4f 4c 20 72  65 6d 6f 76 61 6c 20 63  |in EOL removal c|
00004710  6f 64 65 2e 20 4e 6f 77  20 72 65 6d 6f 76 65 73  |ode. Now removes|
00004720  20 45 4f 4c 20 72 75 62  62 69 73 68 2c 20 77 69  | EOL rubbish, wi|
00004730  74 68 6f 75 74 20 61 6c  73 6f 0a 20 20 72 65 6d  |thout also.  rem|
00004740  6f 76 69 6e 67 20 6f 75  74 20 6f 66 20 62 6f 75  |oving out of bou|
00004750  6e 64 20 63 68 61 72 61  63 74 65 72 73 20 61 74  |nd characters at|
00004760  20 74 68 65 20 65 6e 64  20 6f 66 20 61 20 2a 20  | the end of a * |
00004770  63 6f 6d 6d 61 6e 64 2e  0a 0a 20 20 4b 4a 53 20  |command...  KJS |
00004780  28 32 39 2d 30 37 2d 39  33 29 20 2d 20 52 65 6c  |(29-07-93) - Rel|
00004790  65 61 73 65 20 76 65 72  73 69 6f 6e 20 32 2e 33  |ease version 2.3|
000047a0  38 0a 0a 0a 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |8...------------|
000047b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000047f0  2d 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |-.              |
00004800  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004810  20 20 20 20 53 70 65 63  69 61 6c 20 6e 6f 74 65  |    Special note|
00004820  0a 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.---------------|
00004830  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00004860  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0a 0a  |--------------..|
00004870  2a 20 41 66 74 65 72 20  63 6f 6e 63 61 74 65 6e  |* After concaten|
00004880  61 74 69 6f 6e 2c 20 61  6c 74 68 6f 75 67 68 20  |ation, although |
00004890  74 68 65 20 74 6f 6b 65  6e 69 73 65 64 20 6c 69  |the tokenised li|
000048a0  6e 65 20 6d 61 79 20 62  65 20 6c 65 73 73 20 74  |ne may be less t|
000048b0  68 61 6e 20 6f 72 20 65  71 75 61 6c 0a 20 20 74  |han or equal.  t|
000048c0  6f 20 32 35 35 20 62 79  74 65 73 20 6c 6f 6e 67  |o 255 bytes long|
000048d0  2c 20 74 68 65 20 55 4e  74 6f 6b 65 6e 69 73 65  |, the UNtokenise|
000048e0  64 20 6d 61 79 20 62 65  20 61 20 6c 6f 74 20 6c  |d may be a lot l|
000048f0  6f 6e 67 65 72 2e 20 42  41 53 49 43 20 65 64 69  |onger. BASIC edi|
00004900  74 6f 72 73 20 64 6f 0a  20 20 6e 6f 74 20 6c 69  |tors do.  not li|
00004910  6b 65 20 74 68 69 73 20  28 73 61 64 20 69 73 6e  |ke this (sad isn|
00004920  27 74 20 69 74 3f 29 20  61 6e 64 20 6b 69 63 6b  |'t it?) and kick|
00004930  20 75 70 20 65 72 72 6f  72 73 20 6f 66 20 74 68  | up errors of th|
00004940  65 20 73 6f 72 74 20 3a  20 27 4c 69 6e 65 20 78  |e sort : 'Line x|
00004950  78 78 78 0a 20 20 69 73  20 74 6f 6f 20 6c 6f 6e  |xxx.  is too lon|
00004960  67 20 74 6f 20 62 65 20  65 64 69 74 65 64 2e 27  |g to be edited.'|
00004970  2e 20 50 6c 65 61 73 65  20 6e 6f 74 65 20 74 68  |. Please note th|
00004980  61 74 20 74 68 69 73 20  69 73 20 6e 6f 74 20 61  |at this is not a|
00004990  20 27 62 75 67 27 20 77  69 74 68 0a 20 20 53 71  | 'bug' with.  Sq|
000049a0  75 69 73 68 2c 20 62 75  74 20 61 20 6c 69 6d 69  |uish, but a limi|
000049b0  74 61 74 69 6f 6e 20 6f  66 20 74 68 65 20 65 64  |tation of the ed|
000049c0  69 74 6f 72 73 2e 0a 0a  2d 2d 2d 2d 2d 2d 2d 2d  |itors...--------|
000049d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000049e0  2d 2d 2d 2d 2d 2d 20 45  6e 64 20 4f 66 20 48 65  |------ End Of He|
000049f0  6c 70 20 46 69 6c 65 20  2d 2d 2d 2d 2d 2d 2d 2d  |lp File --------|
00004a00  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00004a10  2d 2d 2d 2d 2d 0a                                 |-----.|
00004a16