date & version  comment

12/25/1991 0.10 first worldwide distribution of "crystal" on various ftp
                areas, start of version report
12/27/1991 0.11 global VAR AESHandle now from GrafTool, used in RsrcTool
                and FormTool,
                now common redraw procedure in XSample
12/28/1991 0.12 FormTool.FormDo() and FlyingLook.FormDo() now remember last
                edit position, also added VScreen.VSound()
12/29/1991 0.13 FreeStringPtr and FreeImagePtr added to RsrcMgr, therefor
                RsrcTool.GetFreeStringPtr() and RsrcTool.GetFreeImagePtr(),
                RButton's in FlyingLook now work with free images from the
                resource file, RsrcLoad() and RsrcFree have to be imported
                from FlyingLook
12/30/1991 0.14 FormTool.FormDo() and FlyingLook.FormDo() remember last edit
                position in a more sophisticated way using
                AES.ObjectFlag{Flag15}, bug fixed by replacing
                IF CHR(EKR.ScanCode) # 0C by
                IF EKR.ScanCode # 0 within FormDo()
01/01/1992 0.15 VDI now contains a large ptsin array for metafile
                interpreters, VQuery.VQMAttributes() now takes care of
                NVDI, FlyingLook.RsrcLoad() now installs user defined
                objects for all trees, therefor MenuBar() removed from
                FlyingLook
01/03/1992 0.16 RsrcTool.SpecialChar() returns a ASCII character, read from
                the resource file that contains a scancode table, this
                scancode table has to be load by RsrcTool.OpenResource()
                and may be adapted to any national keyboard layout and
                any GEM environment,
                MenuTool.MenuKey() allows editable menu shortcuts by means
                of a resource construction set, the shortcuts are actually
                limited to two characters (like "^Q"), does not yet work
                with user defined output of menu items
01/04/1992 0.17 ObjcTool.IndirectObject(), ObjcTool.DirectObject(), Object.
                Spec() and SetObject.Spec() now handle indirect objects
01/19/1992 0.18 module MEMORY renamed to HEAP
01/27/1992 0.19 indirect object handling corrected,
                ATARI GEM's MenuText() ignores indirect object flag
02/23/1992 0.20 module HEAP renamed to PSTORAGE because HEAP causes problems
                with LPRM2's Heap module,
                changes at XSample, a colored icon is included
03/08/1992 0.21 Text() and TextPtr() removed from Object,
                String() and StringPtr() added to SetObject,
                changes on FlyingLook,
                changes on XSample
04/20/1992 0.22 changes for FSTM2,
                PSTORAGE renamed to pSTORAGE,
                implementation of VQFSMGDOS() and VQFNTGDOS()
04/30/1992 0.23 the rounded radio buttons of FlyingLook are now put
                together within one box with extended object type 1,
                various changes on FlyingLook
05/03/1992 0.24 module Object renamed to GetObject,
                counter bug in VQuery.VQTExtent() fixed,
                FlyingLook now with complete short cut buttons, GEM fonts,
                rounded radio buttons suitable to font height, checkable
                menu items with slanted text effect (caused changes on
                MenuTool)
05/09/1992 0.25 GEM fonts removed from FlyingLook - GEM fonts caused
                problems with low and medium ST resolutions
07/05/1992 0.26 MenuTool, SetObject, GetObject, ObjcTool, AES, AESTool
                improved for indirect objects,
                bypass to the indirect object GEM bug at MenuText(),
                XSample shows application callback mechanism for menu items
07/12/1992 0.27 FlyingLook as a driver module by using procedure variables at
                ApplMgr, FormMgr and RsrcMgr
11/13/1992 0.28 completed GEM/3 functions
11/22/1992 0.29 implemented AES 4.0 functions
12/21/1992 0.30 forgot to save registers at LPRM2 AESTool.NewObject(),
                optional emulation for ScrpRead() and ScrpClear() by means
                of POSIX functions
01/05/1993 0.31 definitions for color icons in AES.DEF,
                changes at RsrcMgr: RsrcXxxx-variables for extensions,
                rsrcxxxx-variables for replacements,
                TxtXxxx- and AliXxxx- constants as alternatives,
                using PTR() in FlyingLook,
                no more OpenResource() and CloseResource() from RsrcTool
01/07/1993 0.32 some aliases added: ApplBlk, GrafMBox(), GrafRubBox(),
                HotCloseBox, DWhite... (both AES and VDI), PmDot...,
                Squared...
01/08/1993 0.33 WindTool.RedrawWindow(): first BeginUpdate then HideMouse,
                otherwise you may miss your mouse
                EvntMgr.MEvent: introduced ELoCount and EHiCount because
                ETime has to follow the intel model,
                GrafTool: added GetMouse() (it was long awaited)
01/10/1993 0.34 PACKEDSET macro for ISO,
                for ISO: tagless variant records must (sometimes) have ELSE,
                WindTool: GetTop() and GetTopAndAbove(),
                AES.GlobalBlock renamed to AES.GlobalBlk,
                AES.MouseButtons with MBxxxx prefix
01/17/1993 0.35 ScrpMgr-functions now work with access(),
                no more AES.IconBlk.IBColor,
                type error in Eyes corrected
01/24/1993 0.36 both MFDB and FDB record for VDI raster functions,
                aliases in EvntMgr.Def
02/01/1993 0.37 WindGet and WindSet modules (it was a former idea, now it
                is back again),
                FlyingLook: BaseLine and LowLine are no more global,
                no_enum_reexport definition
02/06/1993 0.38 changes for TDIM2,
                EvntMgr.Messages made two bytes wide,
                no more CAST(AES.ObjectSpec,...) in AESTool.DisposeObject()
02/20/1993 0.39 changes for TDIM2 finished,
                "#define x A || B || C" now with brackets,
                NEW and DISPOSE replaced by calls of ALLOCATE and DEALLOCATE
                EvntMgr.Messages made one byte wide again since LPRM2 does
                not support 16-bit enums
03/05/1993 0.40 changes for TSM2 V 1.14 (TSM2_1)
03/07/1993 0.41 save more registers at TSM2_1 GEM calls,
                corrections for HM2 V 5.1
03/11/1993 0.42 no_set_return definition for FSTM2 V 2.0,
                FSTM2-VDITest.App, TSM2-VDITest.App, TSM2-Sample.App now
                run friendly with PC-GEM
03/13/1993 0.43 tried to implement user defined AES object functions with
                TSM2,
                VAttribute.VSTHeight() now returns an unsigned word,
                corrected VRqString() and VSmString()
03/15/1993 0.44 more AES 4.0 definitions,
                no_set_return definition also for FSTM2 V 3.1
03/16/1993 0.45 cleaned files from no_enum_reexport definition,
                changes for FTLM2
03/28/1993 0.46 SpeedoGDOS-functions implemented,
                no more VPrinter.VOpnWk() and VPrinter.VUpdWk() but
                extended VControl.VOpnWk() and VControl.VUpdWk()
05/01/1993 0.47 cpp.exe for DOS (>=386),
                cleaned up docs
05/22/1993 0.48 fixed typo in INTRINSIC.Def,
                worked on ApplTool.ApplGetInfo(), but the emulation for
                AES <= 4.00 only sets up constants - though it seems to work
                with AES 4.00,
                FlyingLook now calls ApplGetInfo(),
                ApDragDrop message in EvntMgr.Def
                PORTAB for MM2: UNSIGNEDLONG is LONGCARD, SIGNEDLONG is
                LONGINT
05/31/1993 0.49 INTRINSIC.VOID() for MM2 now without $L option because
                A3 stack was not corrected,
                ApplTool.ApplGetInfo() is still preliminary (does not
                work with low resolutions)
06/12/1993 0.50 font information by ApplTool.ApplGetInfo() now works
                with all versions of the AES, but other informations
                only with AES 4.00 and higher
                FlyingLook uses VSTHeight() like the AES, although
                VSTPoint() leads to better looking results, the radio
                buttons correspond to the GrafHandle() values,
                PORTAB.ANYTYPE definition for TDIM2,
                preparing radio buttons for different medium resolutions that
                are possible since AES 4.00
06/20/1993 0.51 VSTLoadFonts(), VSTUnloadFonts() and VSTFont in FlyingLook,
                SIGNED, UNSIGNED, MAX~ and MIN~ in PORTAB
07/12/1993 0.52 little changes at various vdi modules, especially corrected
                VOpnWk()
07/16/1993 0.53 some definitions for Mag!X,
                implementation of NVDI's OffScreen feature as a pseudo
                memory workstation #90,
                removed begin_word/end_word macros from VAttribute.Def,
                VQuery.VQLAttributes() and other functions: you may use
                either an user-defined array or the pre-defined record,
                VDITool: OpenVWork() now shorter than OpenVirtualWorkstation,
                corrected INTRINSIC.SHIFT(),
                ApplTool.ApplGetInfo() now uses ObjcDraw() to get AES's font
                information, works with Mag!X's #_TXT feature,
                MenuTool.ShowMenu() now constrains a drop down menu if it is
                too large for the desk
07/21/1993 0.54 corrected some ELSE paths in VDITest.M2,
                little corrections at FlyingLook.MenuTitle(),
                format of a menu shortcut may be with or without a space
                character at the end,
                found another GEM bug concerning indirect objects (s.
                comment at crystal version 0.26): all AES versions, that
                manipulate the desk/accessory menu (e.g. ABC-GEM and PC-GEM
                move this menu to the right screen corner, MultiTOS-GEM adds
                some items to indicate the parallel applications), ignore
                the INDIRECT object-flag, MultiTOS-GEM also doesn't like an
                user-defined object as "  about..." entry, but doesn't mind
                the following item separator ("--------") to be an
                user-defined object
08/01/1993 0.55 inquire EdDI cookie in VControl.VOpnWk(), therefor you need
                the M2POSIX lib version 0.7 or higher,
                first test of MultiTOS drag & drop protocoll in XSample,
                initialize Global.ApPMem,
                check for unknown compiler in crystal.m2h,
                removed module "Module" (shall be replaced by pTERMINATION),
                VControl.VQSpeedoGDOS(),
                improved SpeedoGDOS calls, but there remains a mismatch with
                VQTTrackKern() and VQTPairKern()
09/11/1993 0.56 typo corrected in VControl.Mod
10/03/1993 0.57 corrected VBezOn() and VBezOff() due to st computer 9/1993
                p. 93
10/24/1993 0.58 adaptions to Mag!X 2.0,
                check for Mag!X and WINX in ApplTool.ApplGetInfo(),
                NewMenuAction() and MenuAction() now take care for INDIRECT
                menu GEM bug,
                FlyingLook.formdo now cares for the Indirect object flag,
                RsrcTool.TransformObject() now patches the object height of
                GImage and GIcon, this makes desktop icons behave more
                friendly in lower resolutions, therefor removed GIcon case
                from ObjcTool.ObjectXYWH(),
                test of ObjcTool.NewObjectCallback() in XSample,
                DragDropMessages in EvntMgr.Def
10/31/1993 0.59 pSTORAGE for TSM2_1 now uses heap-calls allowing allocation
                of 1MB dynamic memory
11/07/1993 0.60 more version checks for Mag!X 2.0 (AES.Version() >= 0399H),
                pSTORAGE.SIZETYPE is now LONGCARD for TDIM2, but there is
                also a ugly exception for TDIM2 at FormTool.FormDial(),
                made VControl.VQSpeedoGDOS() run for TDIM2,
                added VOpnBm() and VClsBm(), which is also available as
                physical workstation #90
11/21/1993 0.61 new: TestBezier.M2,
                renamed archive to m2cryxxx.lzh to show that it handles
                with Modula-2
12/01/1993 0.62 changed CARDINAL to SIZETYPE for LPRM2 in
                FormTool.FormDial()
12/11/1993 1.00 Thomas Tempelmann advised me to use a version number
                >= 1.00 since crystal is not a beta-test
12/12/1993 1.01 started work on GPM2, but no idea what about DGROUP,
                CODE, DATA and BSS statements in aessys.asm, perhaps
                anyone will help?
01/04/1994 1.02 included a hack at MenuMgr.MenuRegister() to make behave
                GEM-Desktop of GEM <=3.2 with MiNT 1.09 more friendly -
                read the comment for further details
                started to implement ApplTool.Accessory(),
                Holger advised me to rename the archive to m2gemxxx.lzh
01/06/1994 1.03 included shift key context in XSample,
                included HotDragBox() in GrafTool, GrafTool now imports
                GetObject and ObjectTool, so compile order had to be
                changed for systems which do not have any make facility,
                call of HotDragBox in XSample
01/15/1994 1.04 lot of bug fixes in GrafTool.HotDragBox(), it's better to
                pass mouse position than to inquire it a second time by
                GrafMKState()
01/21/1994 1.05 Eyes.Acc using pMATHLIB now
01/27/1994 1.06 misc. docs and modules esp. for LPRM2 and TDIM2
02/01/1994 1.07 changes for new GetCookie() function of M2POSIX11, that
                means: you need M2POSIX11 now!
02/12/1994 1.08 inquire preferred language by M2POSIX's
                DosSystem.Language(),
                showing mouse as text cursor over editable objects with
                FlyingLook,
                cleaned up FlyingLook.formdo() a little,
                adapted GrafTool.HotDragBox to the new MM2-Compiler,
                fitted FormTool.FormDial() for MM2 and LPRM2
02/16/1994 1.09 finished alternativ method for QueryAESFont() at ApplTool,
                new bug reports for TDI,
                new GEMX.MOD for LPRM2 (the last one was buggy)
03/06/1994 1.10 added ## at the NEW()-macro in crystal.m2h,
                added VAL(SIZETYPE,Amount) in ApplTool.Mod,
                VAL-macro for TDI and FTL, try it in ApplTool.Mod and
                FormTool.Mod
03/12/1994 1.11 expanded AES.Global with variants for AES 4.00,
                pMATHLIB for SPCM2 imports from MathLib
04/09/1994 1.12 update of ...\cmp\tdim2\pd-docs
04/17/1994 1.13 update of ...\cmp\...\m2posix.* for M2POSIX13
04/22/1994 1.14 synchronisation of PORTAB with M2POSIX14
04/29/1994 1.15 special scrap definition for LPRM2
06/03/1994 1.16 removed the folder named flying,
                VAttribute.VSTWidth() for SpeedoGDOS,
                walk through a RsrcLoad() chain, with RsrcMgr.AddRsrcLoad()
                it is now possible to hang things that initialize the
                resource into this chain,
                at this opportunity it was necessary to remove REF from
                RsrcLoad,
                same for ApplInit() and ApplExit(),
                Global.ApId now initialized by -1 in AES.Mod
06/20/1994 1.17 Added RsrcFree chain,
                updated files in ...\cmp\lprm2\hk\
07/02/1994 1.18 changed the way of calling RcMgr.RcUnion,
                there is a bug at the ATARI-AES's window manager (only
                AES < 4.x): a mover will not be drawn, if there is no
                NAME-flag, now WindMgr bypasses this bug,
                ApplMgr.ApplExit checks wether ApplInit was successfull
07/03/1994 1.19 fixed serious bug in RsrcTool.Mod and FlyingLook.Mod which
                only occured when a resource file did not contain any trees
                (but only alerts)
07/31/1994 1.20 removed ...\cmp\lprm2\hk\, it should be found at the same
                place where you found this here, look for lpr_utl?.zoo,
                updated M2POSIX.* for M2POSIX15
                released ApplTool.Accessory() which only works correctly
                for HM2, TDIM2 (with patched GEMX), MM2, LPRM2 (with
                LPRTermination from LPR_UTL?.ZOO)
08/05/1994 1.21 Eyes now knows about WINX 2.3,
                removed FormDo() from FormTool - I never used it,
                ApplMgr.applexit, RsrcMgr.rsrcfree and VControl.VClsVWk now
                are protected versus multiple calls,
                DeskTool.OpenDesk() now calls WindGet(..,WFNewDesk,..) to
                set the background to the system's background, works only
                for AES >= 4.0,
                FlyingLook: CheckButtons, RadioButtons, ShortCutButtons and
                GroupBoxes now may be of type GButton, GString, GText,
                GFText, GBoxText and GFBoxText,
                renamed ObSpec.TextInfo to ObSpec.TEdInfo,
                renamed ObSpec.UserBlock to ObSpec.UserBlk,
                renamed ObSpec.BitBlock to ObSpec.BitBlk,
                renamed ObSpec.IconBlock to ObSpec.IconBlk
08/07/1994 1.22 implemented ObjcMgr.ObjcSysVar(),
                prepared FlyingLook for AES's 4.0 3D look,
                MenuRegister() is now allowed for applications under AES 4.0,
                changed EvntEvent() to EvntMulti() at GrafTool.HotDragBox(),
                because it caused a mysterious flacker with HM2 and TDIM2
08/09/1994 1.23 removed all WindGet/WindSet functions from WindTool - you
                have to use the modules WindGet and WindSet,
                new functions INTRINSIC.(UN)SIGNEDWORDOF(), even for intel,
                which return the word part of a word OR a long word
08/14/1994 1.24 new function INTRINSIC.SIZEOF(), because for some systems
                SIZE must be imported form SYSTEM,
                FlyingLook: ShortCutButton() now draws GBoxTexts or GButtons
                which are neither exit buttons nor check boxes nor radio
                buttons, for that reason check boxes must have the crossed
                flag set,
                if rsrcload() fails, rsrcload() now tries the lower case
                (caution: national characters are not respected), this is a
                contribution to the Minix filesystem,
                using MenuTool.GetFirstGString() instead of a fixed object
                index for the "About..." menu
08/20/1994 1.25 WindGet.NewDesk() does not check the AES version any more,
                because it seems to work for AES versions < 4.0,
                renamed WindowElement to WindowFeature,
                ObjcMgr.ObjcDraw() is now a variable, FlyingLook uses this
                to replace it by a function which updates the AES 4.0 3D
                colors (changed by any CPX) on every ObjcDraw() call,
                start of work on EvntTool, for a first test you no longer
                need to call MenuTool.MenuKey(), if you IMPORT EvntTool
                this will be done automatically,
                new definitions for AES > 4.1
08/24/1994 1.26 fixed a lot of bugs at FlyingLook.ShortCutButton(), because
                I did not know that the AES 4.0 draw a part of the 3D
                effect themselves,
                furthermore, some draw functions of FlyingLook should use
                PB.PBXC.. instead of PB.PBX.. to set the clip rectangle,
                else there will be problems with these functions in
                window dialogs
08/25/1994 1.27 some minor changes at XSample.Rsc,
                corrected INTRINSIC.(UN)SIGNEDWORDOF() for LPRM2 and SPCM2
08/26/1994 1.28 forgot to check MagiC and KAOS at ObjcSysVar()
08/31/1994 1.29 FlyingLook now looks for TEdInfo^.TEFontId which also may
                be used in case of AES < 4.1,
                FlyinkLook.Title now may be of type GText,
                various optimisations in FlyingLook
09/05/1994 1.30 new functions FormTool.PopupDo(), FormTool.PopupAttach(),
                FormTool.PopupGAddr(),
                new function VDITool.GIconToArray(),
                new function GrafTool.HotDragIcon(), changed the parameters
                of GrafTool.HotDragBox()
09/10/1994 1.31 added popup handling to FlyingLook.FormDo(), test of popups
                in XSample
09/25/1994 1.32 ORD() macro for LPRM2 in crystal.m2h,
                WindGet.NewDesk() has to check WINX
10/03/1994 1.33 new functions in ObjcTool: CreateTree(), AddObject() and
                DeleteTree(),
                added Window parameter to WindTool.RedrawWindow()
10/29/1994 1.34 continued work on EvntTool,
                fixed bug in FlyingLook.formdo() (IF CursorOb # Nil THEN...),
                thanks to Holger Kleinschmidt
10/30/1994 1.35 changed the ORD()-macro for LPRM2,
                ApplTool.ApplConv() is now the special version of
                ApplFind() for MultiTOS
10/31/1994 1.36 added DISPOSE at ApplInit, ApplExit, RsrcLoad, RsrcFree,
                fixed bug at ObjcTool.CreateTree() and ~.DeleteTree(),
                test of these functions in TDynTree
11/06/1994 1.37 continued work on EventTool,
                first release of the window manager Win, no example yet,
                activated Deinstall() in FlyingLook,
                changed FlyingLook.FormDo(),
                underlined SMALL font in FlyingLook,
                new function VDITool.MoveScreen