--------------------------------------------------------------------------- - GFA-BASIC Interpreter/Compiler-Patcher - - Version 1.06 - --------------------------------------------------------------------------- - Compiler & Library-Patches by - - Christoph Conrad, Adalbertsteinweg 113, D-52070 Aachen - - eMail: Christoph_Conrad@AC3.maus.de - - - - Interpreter-Patches and GEM interface by - - Gregor Duchalski, Baueracker 15a, D-44627 Herne - - eMail: Gregor_Duchalski@DO.maus.ruhr.de - - - - A big thank you for the English translation of GFA_PTCH - - and this documentation goes to *The System ST Team* - --------------------------------------------------------------------------- The program enclosed provides a convenient method of making useful patches to the GFA-BASIC 3.x interpreter and compiler. At the start, select the Basic interpreter or compiler (GFA_BCOM.PRG). After that you will be taken to the settings dialog box. Something in advance: Please take care not to save the patched program(s) under the same name as the original(s). We accept no responsibility for the functionality of the patches, anyone who damages his own interpreter and does not have a backup, only has himself to blame! ---------------------------------------------------------------------------- Patching the compiler ---------------------------------------------------------------------------- Two changes can be made to the compiler or to the library: - Insertion of an improved INIT section - A bugfix for the crash under Mag!X Both patches can be made individually or in one go. The Mag!X patch only changes the GFA_BCOM.PRG file, the INIT patch also updates the library. In the patch dialog box, you can enter the new names that should be used to save the compiler and the library. If necessary, you can also use the original library again in case the preset name is not correct. ---------------------------------------------------------------------------- Patching the compiler 1: New INIT section ---------------------------------------------------------------------------- You can get precise information about the new INIT section by reading the text file LIBPATCH.TXT. The listing ERR.LST contains some examples of how to use the new features. Important: The LIBPATCH folder _must_ contain the files HIDEM.O, INIT35.O and INIT36.O! Clicking on 'Patch' will start the automatic patching procedure. At the end, you should try to create a new index file (GFA3BLIB.NDX) using the program MAKE_NDX.PRG. This program (you should have received this with the original package containing the compiler) will search first in the original library folder and then in the folder LIBPATCH. If this fails, the file can still be chosen using the file selector. If this also fails, then the program will terminate. You should be aware that in this instance you will have to create an NDX file 'by hand'. If you can avoid this situation, so much the better. Hint: If you do not have the MAKE_NDX.PRG program, you can obtain this from GFA Systemtechnik (good luck with that) or send your original diskette and a stamped, addressed return mailer to G. Duchalski and the address mentioned above. --------------------------------------------------------------------------- Patching the compiler II: MAG!X bugfix --------------------------------------------------------------------------- The compiler crashes under Mag!X with the message "Memory block destroyed". This is the cause: The compiler uses MShrink (GEMDOS 74) to reduce its memory requirement as necessary. Using Malloc (GEMDOS 72) it then checks for the largest available memory block and allocates this amount less 16 Kbytes. Unfortunately, the program assumes fom this that the allocated memory lies directly after the area previously shrunk. In general this is true. Under Mag!X, it lies before the allocated memory block (the address that was returned by MAlloc) which is indeed the so-called MCB, 'Memory Control Block'. This contains - An identifier ('ANDR' or 'KROM' a greeting to one of the programmers) - The length of the allocated block - The base page address of the program, to which the block belongs - A pointer to the last MCB. The GFA compiler overwrites the MCB. After the compiler terminates, Mag!X checks whether the chain of MCBs is still intact and then reports the error described. By the way: This problem also occurs under MultiTOS. However, in this case it can be removed by simply setting the memory protection flags in the program header to GLOBAL. Through the use of the patch, the GFA compiler no longer uses the first 16 bytes lying after the MShrink memory block and therefore does not overwrite an MCB. The behaviour of the compiler remains nevertheless incorrect, so that the area allocated does not unconditionally lie after that which is still in use by the compiler (although as a rule this is true). ---------------------------------------------------------------------------- Patching the interpreter ---------------------------------------------------------------------------- This provides either practical configuration patches, as documented by GFA or the correction of errors. Interpreters that can be patched: Version: File length: 3.6TT 104770 104766 104739 104597 (English version) 3.5E 103510 103337 (English version) 3.50 102519 102523 3.07 92894 What will be patched in the interpreter? - No more LINEA calls: Also see LIBPATCH.TXT. When moving the mouse in the editor you may get some residual images, but not while a program is running. - No more SETCOLOR calls, that change the colors on the TT: GFA Basic make some errors with the internal setting and querying of the screen colors, so that in resolutions like TT Medium, some colors are changed after running the interpreter. This patch prevents this. Also the command SETCOLOR will no longer have an effect. The better command VSETCOLOR should be used as a replacement. Hint: Please take note that additional patches made to the editor colors in conjunction with the SETCOLOR patch will have no effect either! - MERGE will no longer abort when ASCII 4 is encountered within the text: The interpreter normally aborts the merging of files at the corresponding line when it encounters ASCII 4 (EOT == End of trans- mission, CONTROL D, left arrow). Under UNIX, ASCII 4 is the EOF character which was one of the greatest ambitions of GFA Systemtechnik. This patch removes this disrupting behaviour. - CALL bug removed: The CALL command in interpreter version 3.6 D TT with a size of 104770 bytes does not work because of a typing error (movem.l a4/a6,-(sp) instead of movem.l a4-a6,-(sp)). The patch repairs this command. - Free system memory: When starting, the interpreter reserves all available memory for itself apart from 16 Kbytes. This is especially a problem on non-TT machines since too little memory is available for accessories and they refuse to work. This patch allows you to set the amount of memory that will remain free (e.g. 32Kbytes). - Activate 'New names': The 'New names' option from the Basic's system menu will be activated automatically. - The DEFLIST preset - The editor colors Hint: These do not work when the 'No more SETCOLOR calls' is active at the same time. - The default variable type can be entered without Postfix. This is preset to Float. - No CLS when starting program Patching is basically simple: Once you have selected the patches you require, select the "Patch.." button. The patched version of the interpreter will then be saved under a new name. ---------------------------------------------------------------------------- Version history ---------------------------------------------------------------------------- Vers. Date 24.07.93 - First version released. And shortly afterwards, I added the numbering of versions. :-) 0.90ž 26.07.93 - MERGE patch for V 3.50 of the interpreter incorporated. - The default variable type of the interpreter loaded will be read and displayed. - Patches for later versions expanded. 0.91ž 27.07.93 - No more 'mouse droppings' with the file selector - Compiler patch support started. 0.92ž 29.07.93 - DEFFILL patch incorporated, its action was wrongly documented. - GFA_BCOM.PRG now longer has an evaluation table appended. All of the data necessary is now incorporated directly within the file. 01.08.93 - The compiler was wrongly patched. 0.93 08.08.93 - Library patches integrated. 0.94 13.08.93 - Call to the MAKE_NDX program was incorrect. - MERGE patch for the 3.5E Interpreter incorporated. - Instruction reworked. 0.95 19.08.93 - Remaining patches incorporated: Line-A and SETCOLOR suppression for Version 3.07. - DEFFILL patch expanded to a value of 8. - Documents reworked again. 0.96 28.08.93 - 3.6 Interpreter with 104739 Bytes now supported. - Line-A patch for 3.07 doesn't work. 0.97 27.09.93 - 3.6 Interpreter with 104766 Bytes now supported. 0.98 29.09.93 - Modifications for the MAG!X-Compiler patch begun. 02.10.93 - MAG!X-patch incorporated completely. 04.10.93 - A brief information dialog now appears when the program is started. 0.99 23.01.94 - New INIT section. The old one contained an error in conjunction with floating point varaibles. - The program no longer uses LINEA. 1.00 07.02.94 - The SETCOLOR patch did not work with V3.50 of the interpreter. - An additional patch has been added: The size of the memory which remains free after starting the program can be changed. The default is 16 Kbytes the least that is practical when using accessories e.g. (ERGO!help). - 3D effects under MultiTOS and Mag!X were incorrect. - If SHIFT, CONTROL or ALTERNATE is pressed when starting the program, the info dialog no longer appears. The file selector appears instead. 1.01 10.04.94 - The LINEA patch for the interpreter with 102523 Bytes was incorrect. - The memory patch would only work on the ST until the next RESERVE call occurred. This was then reset to 16 KB. 15.04.94 - A successful patch operation is now confirmed with an appropriate message. 1.02 15.05.94 - The SETCOLOR patch for V3.5 of the interpreter with 102519 Bytes did not work (Andre Muller). - Since the editor colors patch does not work at the same time as SETCOLOR suppression, the corresponding option will be disabled (David Reitter). 1.03 20.07.94 - A few internal changes, some further security checks were added and some adaptions for the new English version. - The 'Patch...' button will be disabled if no patch is chosen for the interpreter. 1.04 11.08.94 - Included support for English 3.6 interpreter (104597 bytes). 1.05 29.08.94 - 'New names' patch included. 1.06 07.09.94 - Included support for English 3.5E interpreter (103337 bytes), thanx to Bob Samuel. --------------------------------------------------------------------------- Status and disclaimer --------------------------------------------------------------------------- GFA_PTCH is freeware and can be freely distributed so long as the contents of the original archive remains complete. The commercial use of this program is prohibited. The distribution by PD vendors is allowed provided that the fee charged does not exceed DM 10.-. We accept no responsibility for the functionality of the patches, anyone who damages his hard- or software by using GFA_PTCH and does not have a backup only has himself to blame! The newest version of this program can always be found in the Maus DO. If you have any suggestions for additional patches or have a Basic version that is not supported, we would be pleased to here from you. Have fun Gregor Duchalski & Christoph Conrad --------------------------------------------------------------------------