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:
- Recent acquisitions » Acorn ADFS disks » adfs_ArchimedesWorld_199403.adf » Disk1Mar94 » !AWMar94/Goodies/SquishDemo/!Help
- Recent acquisitions » Acorn ADFS disks » adfs_ArchimedesWorld_199403.adf » Disk1Mar94 » !AWMar94/Goodies/SquishDemo/!Squish/!Help
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