Aug 30 1993: Struct 0.95 released to beta testers. Sep 18 1993: Made Zeroloop work properly with LONG variables. The way to do this was explained by Joakim Rosqvist. Jan 03 1994: The Lib Call command originally had two limitations: you couldn't use math expressions as parameters and it didn't automatically sign-extend parameters to LONG for you. The former was caused by a lack of scratch registers. The latter was just dumb. Making library calls under these limitations proved unbearable, and so they were removed. Struct now uses 12 bytes of stack space as scratch during a library call if you supply a parameter list. Jan 06 1994: Allowed procedures to return a value. This would have been done a long time ago, but I couldn't decide how it should appear to the programmer. Jan 12 1994: Made the Load Address command more powerful. It can now load the addresses of labels, procedures, and variables. In order to make this work, compiler output is now directed to two separate files which are combined at the end of processing. The AmigaDOS Join command must be in your C: directory (the compiler will use it automatically). This modification effectively makes Struct a "1 & 1/2 pass" compiler. The compiler now distinguishes between local and global labels. Jan 15 1994: Added the ability to recognize the IFND directive to the Include Constant command. This seems to make it work properly with the include files I have. It's real slow though. Made the Goto command use the double output file system. Forward Gotos no longer require a resolution subroutine at the end of the procedure. Jan 21 1994: No more annoying warnings from the Print command. Jan 22 1994: Variables can now be given an initial value. Jan 25 1994: Procedures can now have "default parameters" for each of their input variables. The default parameter will be used if no value is passed to that variable. This permits a limited form of function overloading. STACK data type added. This is EXPERIMENTAL and may be removed from the language at a later date. See the Q & A section of the main documentation for more information. Jan 27 1994: Indenter and UOut example programs updated to make use of Struct's new features. REALLY DUMB bug discovered in the Exit command and eliminated. I must have been brain-dead the night I wrote the code for that command. L¡brary base tracking fixed. Struct tries to keep track of which library's base pointer is on A6, but isn't as rigorous as it is with normal register variables. This was part of the language from the beginning, but didn't work. It should, now. Jan 29 1994: Library definitions file updated. It now contains the five major libraries (Exec, Dos, Graphics, Layers, and Intuition) up to version 1.2. My references are not the most complete, so there may be some functions missing. It would be nice if some kind soul could send me the function information for 2.0+... Jan 30 1994: Increased the compiler's working buffer size and raised some of its internal limits. See the Theoretical Limits appendix for specifics. Struct now requires approximately 600k to compile a program. Jan 31 1994: Documentation for the Indenter example program written. Feb 02 1994: Documentation for the UOut example program written. Feb 13 1994: Struct main documentation updated to reflect recent changes. New chapter added on optimization. Struct 0.99 released to beta testers. Feb 21 1994: Any constants which end with "@" will now be ignored by Include Constant if they're already defined. (The "@" sign indicates a redefinable constant in assembly) Library bases are now stored in global variables which are directly accessible to the programmer. Various bugs fixed - local and global labels with the same name weren't being allowed, forward Gotos were bringing up false errors in some situations, constants weren't always working with the Poke and Peek set of commands. Mar 14 1994: Despite my efforts to fix the Include Constant command, one of my beta testers still has problems with it. If you can't get this command to work, and you only need a few magic numbers, you might try finding out the values of those numbers and then just inlining them with the Constant command. Struct 1.0 released to the public. My great thanks to those beta testers who sent advice and comments during the testing process: David Benn, Sean Conner, and Joakim Rosqvist.