What's New in COGENT Version 2.1

(Release date: Fri Oct 26 14:53:52 2001)

  1. Fix to display of floating point numbers in current state windows: Internal float_ext/3 constructions are now converted to a standard floating point representation for output.
  2. Fix to research programme renaming: The ":" character is now prohibited from appearing in research programme names. UNIX doesn't mind the ":", but Windows does. For compatability it is now banned in both! (Existing research programme names will not be affected.)
  3. Fix to research programme renaming from the archive browser: Previously COGENT could crash if the archive browser was used to rename a research programme when no research programme was open in the main COGENT window.
  4. Enhancement: Double clicking on an external box will now open that box.
  5. Enhancment: Dialogue boxes for copying/renaming research programmes, scripts, etc. are now initialised with the current name of the research programme, script, etc.
  6. Enhancement: Various major changes to the experiment scripting interface, including allowing the import of text scripts (assuming they are valid scripts), allowing embedded commands within scripts (e.g., while condition do list of commands), replacement of explicit calls to subscripts in commands such as "repeat", "while/do", "if/then" with the "call" command, and automatic conversion of calls to subscripts to appropriate "call" commands.
  7. Enhancement: All properties that could previously have values Yes/No selected from a menu have been converted to use checkboxes.
  8. Enhancement: Added cut/paste facility in the research programme manager. It is now possible to cut a complete model from one research programme and paste it into another. This feature is currently only available to registered users.
  9. Modification: The default for archive/extract is now to retain the project/archive being archived/extracted, rather than to delete it. If this option is already set to a specific value in your saved preferences then this change will have no effect.
  10. Modification: More left and right brackets are now used in mathematical expressions, to ensure that users aren't caught out by occasional oddities with mathematical operator priorities.

Version 2.1 b4 (Tue Jul 12 21:40:42 2001)

  1. Fix to bug in project renaming/copying, whereby the contents of the history window could be corrupted.
  2. Fix to location reported by syntax error routines used when importing rules etc. to a canvas. (Reported by RC on Jan 24, 1999.) Previously the location reported (line count and character count) were incorrect. (The import function is only available to registered users.)
  3. Fix to bug in setting the position of the first node in a research programme (in the professional edition only), whereby such nodes could be drawn on the history canvas but not accessed by mouse clicks.
  4. Fix to bug with very old-style data sinks: the auto-update code has been fixed to ensure that data sinks created with version 1 function sensibly.
  5. Enhancement: Creation of a new research programme will now cause the scrolling widget of research programme names to scroll to the new name.
  6. Enhancement: Accelerator keys added for research programme management functions and for some element editing functions (Apply = CTRL-A and Done = CTRL-Q).
  7. Enhancement: The student/professional edition has been abolished and replaced with a single edition functioning in unregistered/registered modes. This means that the professional edition is no longer a separate package. Upgrading to what was the professional edition is now a matter of registering and entering an appropriate user id and key in the registration box.

Version 2.1 b3 (Tue Jun 12 21:40:42 2001)

  1. Fix to two potentially serious bugs (introduced in V2.1 b0) in the function for setting the project folder/directory. Most seriously, setting the project directory would correctly display the research programmes in the selected folder, but those research programmes could not be opened. Furthermore, if a research programme was open when the folder was set, COGENT would crash.
  2. Enhancement to import function: Imported items can now be prepended or appended to existing items. (The import and export functions are only available in the professional edition.)

Version 2.1 b2 (Wed Jun 6 16:47:17 2001)

  1. Fix to minor bug in font selection. Previously, if the user began to select a font, then pressed the "Set" button on the font selector without actually selecting a font, COGENT would issue a GTK warning. This no longer happens. Instead COGENT reverts to the previous font.
  2. Fix to potentially serious bug in arithmetic "power" function (in which arguments were incorrectly ordered).
  3. Enhanced OOS error reporting: multi-line errors are now reported with multiple warning messages (and the end-of-line character is correctly handled under Windows).
  4. Fix to bug in use of display rules (attached to buffer). Rules were being created as normal process rules (instead of display rules).

Version 2.1 b1 (Fri Jun 1 11:43:19 2001)

This release features dozens of enhancements, reorganisation of several components, and a few significant bug fixes.

Enhancements include:

  1. All new smart installation procedure, designed to make installation and setting of essential preference much easier
  2. Addition of mechanism to define new conditions directly from the condition menu
  3. Addition of improved display facilities for propositional buffers: rule sets may now be associated with a propositional buffer to provide an alternate graphical representation of the propositional contents. Find and replace work on these so-called mapping rules.
  4. Added "Set Parent" menu item to allow reparenting of nodes on the project history window. This may not always be a good thing: it allows rewriting of history! Hence, it is currently only available in the Professional Edition.
  5. A popup window now appears when an oos error occurs.
  6. A page has been added to the run window's notebook allowing OOS preferences to be set directly from there.
  7. Minor modifications to the Prolog parser to improve handling of negation, and especially distinguishing between the unary "-" and the binary "-".
  8. Added new enumerated property to table buffers and sinks: Sort. This controls the ordering of rows and columns in the table display. Possible values are: Alpha (i.e., alphanumeric); Reverse Alpha (i.e., reverse alphanumeric); Primacy (i.e., in order of entry to the table, with the first elements to the top/left); Recency (i.e., in order of entry to the table, with the last elements to the top/left). The value does not affect model execution.
  9. Modified rule editor to allow independent resizing of condition panel and action panel.
  10. Added pull-down menu of system triggers that sits beside the trigger text entry field, allowing rapid selection of system triggers when required.
  11. Addition of new conditions to menus: select/3, cartesian_polar/3, chi_sq/3, gensym/2.
  12. Added various glosses for term comparision operations on the rule/condition definition canvas and on printouts etc. (e.g., "\==" now appears as "is distinct from", and "=" now appears as "unifies with").
  13. Addition of "Copy condition" item to condition edit menus
  14. Addition of "Copy Action" in item on action edit menus
  15. The archiving facilities have been completely over-hauled with the addition of an all-new archive/extraction interface. The interface shows two scrolling lists (research programmes and archives), and has buttons for transfering items from one list to the other. Relevant preferences may also be set directly from the panel, allowing, for example, navigation around multiple archive or project directories. In addition, multiple archive formats are now supported, and several new preferences have been added. Supported formats include: TGZ (the old faithful); TAR (uncompressed unix tar files); and CAR (COGENT's native archive format). CAR format archives will transfer between unix and windows, and will not require any special unix tools (making the preferable to TGZ and TAR formats). They tend to be slightly smaller than equivalent TAR archives. CAR archives are normally much larger than TGZ archives, however. A compressed CAR format (CAZ) may be developed at some later stage to reduce archive size. New preferences include archive format and extract format (both being CAR by default) and retain on extract and retain on archive (both being false by default).
  16. The archive browser also allows extraction of COG files (as generated by WinCOGENT). Extraction of a COG archive will generate a research programme by the same name and containing a single model.
  17. Added documentation on the archive browser.
  18. A directory browser widget has been added for setting options relating to directories/folders.
  19. Repositioning of objects in the research programme history window (as suggested by JF on 03/04/96) is now possible. This feature is currently only enabled in the Professional Edition.
  20. The Windows version now uses the Windows Registry for storing preferences.
  21. Message log windows are now "greyed out" when message logging is switched off.
  22. Updating of some documentation, specifically bitmaps and documentation on preferences.

Reorganisation of functionality includes:

  1. Various menu items (Import/Export/Clear/Reopen) moved from the main COGENT window toolbar to a "Canvas" submenu available from each canvas. This is motivated by the fact that these items refer to the current canvas view, and not to the whole box. The functions now also all work on mapping rules (as above) as well as normal box contents.
  2. Change to all quotes in output (from ``...'' to "..."), since the later is more likely to look sensible.
  3. Recurrent property of processes converted from an enumerated list with default No to a boolean with default TRUE. Old models will automatically be updated.
  4. Modified feedback dialogue boxes so the user isn't given the option of quitting. The user now just gets to say "OK".
  5. Tidying up of help preferences to simplify configuration for a variety of web browser.
  6. The preference for specifying the location of utility programmes has been removed. This was originally intended to fix a problem with archiving on Windows, but it didn't.
  7. Altered OOS startup: OOS now reads from the model's root directory before starting. This file specifies search paths for libraries, classes, etc.
  8. Memory allocation checked with zmalloc (thanks to Eric Murray). Several minor memory leaks were fixed.

Bug fixes include:

  1. Fixed bug in Win32 version whereby help facilities were inaccessible whenever a model was open. This bug would often leave Windows frozen and require a system reboot. It was thus pretty severe.
  2. Fixed problem with highlight following use of find: any click on a contents panel now unhighlights all elements before doing anything else.
  3. Fixed printing of quoted atoms in LaTeX format, which were appearing without their quotes!
  4. Fixed bug in preference code that was preventing recall of "Print in LaTeX format" (and defaulting to "Print in PostScript format"). This also affected "Print in Win32 format".
  5. Fixed bug in preference code that was saving the print directory when the file locations were displayed, instead of when the print preferences were being displayed.
  6. Fixed bug in handling the "Exit Program" option on error dialogues. (It wasn't always exiting immediately.)
  7. Fixed bug in cut/paste of boxes between models. It should now be possible to cut a box from one model and paste it into another. Note though that, unlike in the case of cutting and pasting of boxes within a model, arrows will not normally be preserved. (Reported by RC on Jan 24, 1999.)

Version 2 b2 (Tue Feb 19 17:16:54 2001)

  1. Improved paging/redrawing of pagable canvases
  2. If a condition in a rule/defined condition is changed (via the Change Condition menu) to a condition with the same functor, the arguments will now be preserved were possible.
  3. Fixed description windows for models: previously they weren't being loaded, and they weren't being saved! Who knows how/when this crept in!
  4. Improved consistency of menu items in the scripting system
  5. Improved file selection widgets for import/export
  6. Increased string space allocation in analogue buffer images
  7. Reorganised some condition menu items: User defined conditions are now listed as such on the add/edit condition menus, and "call Prolog" has been moved to the "miscellaneous" submenu.
  8. Improved handling of script saving: Initialising the execution model now forces script saving (provided the save on run option is set).
  9. Fixed bug in script saving/discarding such that discarding script edits really does discard script edits.
  10. Fixed bug arising when the "Continue editing" option was chosen after attempting to close a window.
  11. Added option to commit window to abort and continue editing a rule/condition/element.
  12. Replaced "done" menu on all object windows with a done button, plus popup that appears if anything needs saving.
  13. Added a "Variables" view on the OOS Script window (in the Professional Edition only).
  14. Rationalised user preferences. One or two redundant warning/confirmation preferences have been deleted.
  15. Fixed default Help URL for Windows.
  16. Added a few new display formats for statistics and term comparison conditions.
  17. Added step operator: op(675, xfy, step) for use by the scripting language.
  18. Added randomise, while/do, if/then/else and for/do constructs for script (Professional Edition only).
  19. Operators are now read by COGENT and OOS from the file in the oos library directory. Unscrupulous users may take advantage of this to define their own operators.
  20. Fixed typos in some user messages ("Coninue" -> "Continue").
  21. Added a preference for the location of utility programmes for Windows ... doesn't seem to fix archive/extract as hoped.

Version 2 b1 (Thu Oct 5 16:00:00 2000)

This version is pretty much entirely new. It uses a new look and feel that unifies the previous Windows and UNIX versions of COGENT.

Version 1.11.00 (Thu Nov 16 19:04:24 1999)

  1. Modified OOS interface: The OOS trial and block windows have been removed. There is now a single OOS script window that gives access to virtually all of the functions previously available under trial and block mode, and that, in addition, allows the specification of complex scripts to reflect a range of experimental designs. When the OOS script window is opened, the most recently used script is automatically loaded, and execution of a script can be paused and restarted at any point. (COGENT can even be closed completely without upsetting a paused script state.) See the Run window documentation for more details.
  2. As a consequence of the reorganisation of the execution interface, end-of-block and end-of-trial detection methods have been overhauled, with the addition of the system_end(Level) set of triggers, which replace system_quiescent. Also, the built-in condition trial/2 (the current trial is N of T) can no longer return the number of trials in the current block as its second argument, so if you use this method to determine the end of a block, you will need to rewrite your code to use the system_end(block) trigger instead.
  3. OOS is no longer distributed in source form; this means the user no longer needs to have SWI prolog installed separately, and COGENT will not use it anyway. This should simplify the installation process and improve system reliability.
  4. Added new options: An OOS options panel has been added to allow the specification of the location of the OOS executable and COGENT class hierarchy, as well as some run-time options.
  5. Modified class hierarchy: The variuos types of network box are now all placed under a single node in the class hierarchy.
  6. Modified treatment of colour and scaling on analogue buffers: Three new analogue buffer properties have been added (Colour, X Scale, Y Scale). These replace the the functionality previously available on analogue buffer windows' toolbars. The advantage of the new scheme is that the values of these new properties can be stored, and are not reset everytime the user opens an analogue buffer's window.
  7. Improved PostScript output for analogue buffers: Scaling factors, colour, line style and line weight (as specified in buffer's properties or the buffer elements' secondary properties) are now taken into account in producing PostScript output.
  8. Found and fixed minor bug in script command generation (apparent only under Linux as far as I know).
  9. Found and fixed potentially fatal bug in the "Add before command" option of the script editor.
  10. Found and fixed potentially fatal bug in the spin button associated with the "repeat" command on the script editor.
  11. Modified functionality of the "Delete" option on the script editor's file menu: Preivously this deleted the current script. Now it pops up a file chooser to allow the user to select a script for deletion.
  12. Rather a lot of code reorganisation (that could have introduced new bugs).
  13. Added support for "experiment" as another level of processing (in addition to trial, block, subject, and session).
  14. Added LaTeX format option to print dialogue (allowing output to be saved as a LaTeX document).
  15. Slightly improved reporting of syntax errors. The syntax error dialogue now gives an option to turn further reporting of syntax errors off.
  16. Extended built-in conditions with a few statistical functions: probability/3, rank_list/2, correlation/3, related_t/2 and unrelated_t/3. See the documentation on built-in conditions for more details.
  17. Implemented find and replace options from all object windows. See the documentation for details.
  18. Implemented undo and redo options from all object windows. See the documentation for details.
  19. Various efficiency improvements to OOS.
  20. Fixed long-standing difficulty with defining recursive conditions. Previously when editing a user-defined condition, the only conditions available under the Prolog submenu were those that had already been committed. This meant the current condition was not listed. Now, the list of available conditions includes the current functor/arity combinations of all conditions, even if they are being edited.
  21. The "Canvas Font" option has been renamed "Diagram Font".
  22. Option handling (in GTK COGENT only) has been completely revised. Options are no longer stored in the Xdefaults database. Instead, they are loaded from (and stored in) the users .cogentrc file.
  23. The project manager window has been merged with the history window.
  24. Changed semantics of additions to table buffers: Adding an element to a cell of such a buffer now automatically deletes any previous element in that cell.
  25. Fixed sublist/2 so that it really does resatisfy to find all sublist of a given list.

Version 1.10.04 (Thu Jan 21 19:04:24 1999)

  1. Found and fixed serious bug in table redrawing (that was causing infinite looping when redrawing tables containing non-table elements).
  2. Found and fixed minor bug introduced in correction to canvas resizing code (in version 1.10.02). Previous code was causing harmless warnings when switching between property and description views of compound subobject canvases. These warnings are no longer produced.
  3. Fixed potentially fatal bug in generation of HTML for rules with no actions. (Such rules are pointless are should not be present.)
  4. Fixed vertical alignment in HTML output of rules.
  5. Improved portability of OOS between Unix and Windows.
  6. Fixed portability of OOS to SWI Prolog version 3.1.
  7. Found and fixed minor bug in paste (incorrectly fixed in version 1.10.03).
  8. Added further options in the initial state/rule definition windows, allowing an element to be moved up or down (equivalent to cutting and then pasting, but with one mouse click).
  9. Added new box type: interactive activation network.
  10. Added new option for specifying the position of the box/arrow edit buttons. They may now appear either above or below the main canvas.
  11. Compound objects now make their external objects snap to the same grid as their internal objects. (This means that it is now possible to get perfectly straight lines between internal and external objects on a compound.)
  12. Modified OOS treatment of floating point numbers to improve efficiency.
  13. Modified redrawing of COGENT canvases during execution of OOS so that redrawing is only attempted when the file changes (hopefully). Canvases corresponding to files that don't change on successive cycles will not be redrawn on each cycle.
  14. Found and fixed over-sight in script execution. Running a script was not first ensuring the model was saved. (This behaviour was at variance with other interaction with OOS.) Models are now automatically saved on execution of a script.

Version 1.10.03 (Mon Nov 16 08:48:09 1998)

  1. Fixed bug in model copying (reported by MR on 11/11/98).
  2. Found and fixed bug in replace callback.
  3. Found and fixed bug in paste introduced in version 1.10.02.
  4. Disabled replace callback (because it is undocumented, incomplete, and has irreversible consequences).

Version 1.10.02 (Wed Nov 11 22:58:13 1998)

  1. Found and fixed potentially fatal bug (introduced in version 1.10.01) in generating the rule action editor menu for rules within recurrent processes.
  2. Found and fixed potentially fatal bug in delete box. (The code was buggy for some time, but the bug was never reported!)
  3. Found and fixed potentially fatal bug in the rule editor. If a process was writing to a box of unknown class, editing the actions of rules in that process would result in a crash.
  4. Found and fixed minor bug in syntax checking (resulting in the temporary addition of unnecessary recurrent arrows to buffers containing condition definitions).
  5. Found and fixed minor bug in PostScript printing of certain properties (specifically properties with bounded real values).
  6. Fixed minor bug in resizing subobject canvases. Often resizing didn't cause redrawing but redrawing is necessary for those canvases with arrows to external objects.
  7. Altered default value of analogue buffer Dimensionality. Previously the default was one, but the vast majority of applications use the value two, so the default has been switched.
  8. Altered default value of network Weight Parameter A from 0 to -1. This ensures that weights in the default network configuration are symmetrically distributed about 0, which is consistent with the default activation function.
  9. Altered positioning of popup sub-element editors. These are now centreed on the screen, rather than offset from their parent window (because once popped-up they should be filled in and closed).
  10. Altered PostScript printing of boxes of unknown class. The class field of such boxes is now printed, with a value of UNKNOWN.
  11. Altered PostScript printing of boxes of unknown name. The name field of such boxes is now printed, with a value of UNNAMED.
  12. Replaced delete functionality with a global clipboard. Previously, each class had its own clipboard. This was fine when the types of elements within boxes of each class were disjoint. The proliferation of classes and the inclusion of elements of the same type in different class definitions has made this less useful, however. With the global clipboard, any items (including complete boxes) that are deleted from a model are placed in a central store. They can then be pasted back from this store into any box provided they are of the correct type for that box. (So it is now possible to delete conditions from processes and paste them into buffers.)
  13. Improved documentation for the script editor.

Version 1.10.01 (Mon Nov 9 13:15:45 1998)

  1. Added user definable properties. It is now possible for the user to define his/her own properties, and use these properties to control the behaviour of process and buffer boxes. When a box is displayed in property mode you will notice three new buttons above the properties: add property, edit property, and delete property. These buttons allow the user to extend the basic property set associated with an object. Behaviour can be keyed to property values by the condition "get value of property".
  2. Added new colours for use within analogue buffers: brown, violet, grey, orange, and yellow.
  3. Modified drawing of the contents of analogue buffers. These are now drawn (when the buffer is in Current Image mode) in the order in which they were added to the buffer. This means that in 2-d buffers newer objects are drawn on top of older objects.
  4. Fixed potentially fatal bug in use of the increment/decrement buttons on the numeric text widgets within the OOS run windows (which was causing crashes under some versions of XView). This was initially thought to be an XView problem, but it wasn't, it was a programmer error, and has now been fixed.
  5. Found and fixed several potentially fatal bugs in the handling of boxes of unknown class. Specifically, syntax checking and opening of such boxes no longer cause COGENT to crash. Of course, boxes of unknown class should not occur with normal function, but they may arise if the user fiddles about with COGENT's model files and directories.
  6. Removed the property view of compounds. This did show the properties and their values of boxes within a compound, but the code is dodgy and so the feature has been temporarily removed.
  7. Added new properties: X Drift and Y drift. These properties allow the user to correct window placement when the window manager puts borders around the window. Basically XView cannot reliably determine the width of such borders, and so windows can drift. The problem is most noticable with the window managers distributed with Redhat Linux (e.g., fvwm2). These new properties allow the user to correct the problem by specifying the natural drift of windows (which COGENT can then use to prevent such drift). A good value (XDrift, YDrift) for olvwm is (0,1). For fvwm2, try (5,23).

Version 1.10.00 (Mon Sep 14 14:04:32 1998)

  1. Improved Prolog code, using SWI modules. This ensures that conditions which are defined within a process are encapsulated within that process (as they should be), and prevents the user from accidently redefining system predicates.
  2. SICStus Prolog is no longer supported.
  3. Conditions may now be defined within buffers. This gives buffers some inferencing power. See the customisation help file for more details.
  4. OOS has been separated into two main components: the execution engine, and a set of files which define the behaviour of each box (sub)class. This is in preparation for allowing user-defined subclasses, and for supporting alternative class hierarchies (such as BioCOGENT). See the customisation help file for more details.
  5. It is now possible to over-ride the default behaviour of buffers by specifying replacement procedures for buffer element addition, matching, and decay. See the customisation help file for more details.
  6. Facilities to allow objects to have boolean properties (i.e., properties with true/false values indicated by a check box) have been added. There are currently no objects which use these kind of properties, but they have been added in preparation for the impending addition of user-defined properties.
  7. The buggy behaviour of uninstantiated variables in buffers has been fixed.
  8. It is now possible to send a process a stop trigger. Receipt of such a trigger will cause the process to stop attempting to fire autonomous rules, and to ignore any other triggers on the same or subsequent cycles. The process will remain in this stopped state until the end of the trial. (As requested by ME on 30/09/96)
  9. When the system reaches quiescence ("All data processed"), a special trigger consisting of the string 'system_quiescent', is now sent to each process box. If any rules are capable of responding to that trigger, they will then fire. Such rules should generally be refracted, to permit eventual true termination. (As requested by ME on 30/09/96.)
  10. Detection of the end of processing should now work properly even for rules that involve arbitrary randomness...
  11. ...but the cost is that the cycle has been reorganised. Now buffer state is updated after rules etc fire, so an element added to a buffer will enter it on the same cycle as it is sent.
  12. This help system now includes a bug report mechanism (as requested by JF).
  13. The sigmoid and tanh network activation functions have been replaced by a single sigmoidal activation function. This is because the other network parameters which allow scaling of the activation space render the sigmoid and tanh functions identical. At the same time bugs in the calculation of these functions (which were failing to correctly use maximum and minimum activation scaling) have been corrected.
  14. The problem of learning in NULL network connections (whereby unconnected nodes within a network with less than complete connectivity could obtain a non-zero weight, and hence a connection, through learning) has been resolved. NULL network connections are now shown in the output as '---'.
  15. The buttons on the top of OOS windows (for trial/block/script) have been reordered, and an Initialise menu has been added for scripts.
  16. The Stop function did not work when an embedded script was running. That is, Stop would stop the embedded script, but not the external script, so OOS would in fact continue running. This has been fixed.
  17. When you select File|Open... in the scripting interface, but then cancel the selection dialog, incorrect behaviour was occurring: the default or user-selected script file was not being loaded into the editor (which was correct), but the Execute button action was being changed to execute the canceled script. Similarly, the Execute button would retain the script name across script execution sessions (within one COGENT session), so that Execute could invoke a script when no script had been loaded. This has now all been fixed to behave sensibly: the currently displayed script is always the one to which Execute applies, and Execute only works when a script is loaded.
  18. It is no longer possible to use the condition editor to construct conditions with names which violate Prolog syntax. The editor now ignores illegal characters (such as brackets and Prolog punctuation characters) typed in the field specifying the condition's functor.
  19. It is now possibly to query the value of a box's properties by conditions declared within that box. Thus, a process can query its firing rate, and use that information to affect the rules. More usefully, a condition defined within a buffer can query the buffer's properties. This condition can then be called by the "call in module" primitive. Both of these functions are available from the standard condition menu.
  20. A new, optional third argument of graphical objects in analogue buffers can now be used to specify secondary (ie non-geometrical) properties for these objects. Currently supported secondary properties include colour, line weight and style, and filled/outlined 2-d objects.
  21. Window positions and sizes, and any user defined script files, are now preserved when a new version of a model is created from the project manager.
  22. Fixed problem with archive extraction: redundant tar files are now correctly removed after archive extraction.

Version 1.09.00 (Mon Jun 1 09:16:28 1998)

  1. "Directories" on the options panel has been renamed "File Locations".
  2. Added explicit setting of history window width so that the window will always initialise to 640 pixels wide, regardless of font.
  3. Added a guard in project create and rename functions to ensure that all putative project names are valid (i.e., don't contain "/" characters).
  4. New boxes now snap to the grid as soon as they are drawn. Previously if a box was drawn and not repositioned it would not be forced to the underlying grid.
  5. Fixed minor bug in PostScript printing of Research Programme history diagrams. Previously, special PostScript characters (such as "(") which occurred in a model name were not being printed correctly.
  6. Archive creation now checks that an archive doesn't already exist before attempting to create the archive, and gives the user the chance to abort if one does exist.
  7. Added new property to allow setting of the colour used to highlight selected boxes.
  8. Added code to remember window sizes (as well as window positions) as requested by DG.
  9. Rules are now numbered in the current contents view. These numbers are also used in the message log view of processes to simplify tracing of rule firings (as requested some time ago by ME & PB).
  10. Several new conditions have been added, including: dot product (for calculating the dot product of two vectors, and accessed under the list processing/arithmetic menu); random/integer (for generating a random integer within a specified range, and accessed under the arithmetic menu); others added by Pete?
  11. The Message Matrix view of compounds now appears in all printouts (and in all formats) when "Show current contents?" is checked.
  12. Scrollbars on the Message Matrix and Table views are now automatically attached to the canvas if and only if the message matrix/table is bigger than the canvas. The buttons to allow switching on and off of scrollbars have been removed.
  13. Removed bounding rectangle from compound subboxes and altered drawing of external objects to include a hatched outline of their box icon (based strongly on WinCOGENT).
  14. Altered drawing of boxes of unknown class. They are now drawn as a big question mark.
  15. Altered the default line break behaviour of description subwindows, so that long lines are now clipped (i.e., not shown). The user now must insert explicit line breaks when they are required. This ensures that the PostScript generated when printing a box's description matches the screen display.
  16. Replaced black disks on the programme manager with little black COGENT "brain" icons, as used by WinCOGENT. Printing out a project now also uses these icons instead of the disks to represent COGENT models.
  17. The Create Model function (which is called from the history canvas and simply creates a copy of the selected model) now only works when the selected model is closed (so there is no question of copying unsaved edits of the selected model) and automatically renames the copied model as "Copy of ..." (as suggested by RMY). In addition, it only copies files which are strictly part of the model, thus removing the proliferation of miscellaneous files and directories that used to occur.
  18. Modified behaviour of the delete arrow function accessed from a compound's canvas' arrow menu. If there are arrows of multiple types connecting two boxes, delete arrow will now only delete arrows of one type (not all arrows between the boxes). This behaviour is analogous to the other arrow manipulation functions available from that menu.
  19. Facilities to convert COGENT models to the files necessary for WebCogent have been added. On the project manager, select webify from the menu that appears when you right-click on a model to create all the necessary files.
  20. Added HTML as another printer output format. In doing this, many of the internal printing functions were reorganised in order to simplify the addition of further printing formats in the future. Note that HTML output may contain references to image files (all currently in xbm format). These files are placed in the output directory and have names of the form img_*.xbm, and must be stored in the same directory as the HTML root file if they are to be found by most browsers.
  21. Printing in all formats (ASCII, HTML and PostScript) of alternate views of the current contents of all box classes (including table sinks and analogue buffers, as well as two new objects described below: stack buffers and table buffers) is now supported.
  22. The print file's extension now changes automatically depending on the output format (".txt" for ASCII, ".ps" for PostScript, ".html" for HTML).
  23. Extensive modifications have been made to many of the internal functions, aimed at simplifying the process of extending/modifying the class hierarchy. The user should not notice much, but 1) the items beneath the Add Action menu have changed; and 2) the various network message types have been removed. Network messages should now take the form of simple send messages, whose content may be a vector or a vector pair for training of the form "train(Input, Output)". This approach to special messages is the same as that used for analogue buffers and stacks.
  24. Altered the palette so that all icons are shown half-size and without class labels. Footer messages which appear when the cursor moves over the icons now describe the various classes. Arrow buttons also appear on the palette (and work). Arrows can now be drawn either by selecting the appropriate arrow class (from the palette), left clicking on the source and dragging to the target, or by middle clicking on the source and dragging to the target (as before). In the latter case, if an arrow class on the palette is selected, then that class will be picked up by the arrow. Otherwise the arrow will default to a write/send arrow (as before). All this has involved yet another reworking of the way mouse events on the main canvas are handled (and has hopefully not introduced any bugs).
  25. Added new object class: Stack. Stacks are buffers whose top-most element can be matched and which can only be sent messages of the form "push(X)" or "pop".
  26. Added new object class: Table buffer. This uses the same syntax as Table Sink, with Analogue Buffer style directional access.
  27. A new property (similar to the refract property) has been added to rules which allows rules to be marked as firing just once per cycle. When set, the first appropriate instantiation of a rule will be found and fired on each cycle. If a rule is also refracted, this mechanism can be used to fire successive instantiations of the rule on successive cycles.
  28. Changed help files to html and help callback to fire-up Netscape on the appropriate help files. If Netscape is already running, the relevant page will be directed to the existing Netscape process. If not, a new Netscape process will be started. If Netscape is not on the user's path, nothing will happen. The help directory has also been replaced by a help URL, giving added flexibility over the display of help information. Thus, if you're using Netscape 3.2 or later and the help URL is set to file:/usr/.../COGENT/help/index.html?main=, then (thanks to Pete's JavaScript tricks) you get the help file embedded within an index frameset. If you set your help URL to file:/usr/.../COGENT/help/, then you get the specific section of help requested (but no index frameset).
  29. All help files have been converted to HTML, standardised, updated to version 1.09.00, and, where necessary, rewritten. Some features (and bugs) still remain undocumented. Notable examples include the replace function and the property view of compounds.
  30. Added a "property" view of compounds, which shows the properties of all the children of a compound. At present this is read only (i.e., you can't set properties from here).
  31. The button layout on the Run windows has been altered so that initialisation and randomisation functions are hidden under a single menu button, with initialise or run block being the default options. At the same time, a minor bug in the randomisation function which prevented the random seed from being displayed if OOS was randomised before being initialised has been fixed.
  32. Numerous modifications to the execution model have been made in order to provide support for levels beyond trial and block. The execution model now incorporates notions of subject and experiment, and most box types can be set to initialise at any level (i.e., each trial, block, subject, or experiment). This has necessitated a change to the numbering scheme which is used to label the current state of boxes (to accommodate experiment/subject/block and trial numbers). These features may need further refinement as we experiment with further examples.
  33. Other important changes to the execution side of things include the storage and retrieval of current contents of boxes, which now persist between invocations of COGENT. It is thus possible to run several blocks (or several subjects), terminate COGENT, and come back another time to finish the computational experiment. Accompanying this change is the addition of a Stop button which allows OOS to be safely stopped at any stage in its processing. OOS can then be restarted (even if COGENT is stopped and restarted) without having to reinitialise the model and run from scratch.

Version 1.08.02 (Mon Mar 30 17:26:58 1998)

  1. Fixed bug in archive extraction which stopped re-compression of archives which were extracted but not deleted.
  2. Fixed minor bug in help/what's new functions: if help was open on the top-most frame when What's new was selected (and the help screen was the top-most window in the stacking order), then the What's new file wasn't displayed until the help window was refreshed.
  3. Changed legend display of analogue buffers so that non-image elements in such buffers are no longer listed.
  4. Changed analogue buffer drawing to give a slight (perhaps unnoticable) efficiency improvement when displaying buffer contents.
  5. Changed the location of Check Syntax from beneath the File menu to a new Edit menu.
  6. Changed the code for dumping output of the various boxes during execution to improve efficiency. The improvement is dramatic: there now appears to be little if any performance decrement over multiple blocks.
  7. Added new display option for analogue buffers: colour (yes/no), which determines if the image is drawn in colour (with a legend) or in black and white (without a legend).
  8. Added a partial implementation of Edit/Replace facility to allow global replacement of terms. Currently, this facility will allow replacement of atoms and numbers, but not compound terms, and it doesn't check the syntax of find/replace terms. It should be used with extreme caution!
  9. Updated description of printing properties in the print help file.

Version 1.08.01 (Mon Feb 23 11:11:07 1998)

  1. Fixed minor bug in printing ASCII output which caused some residual PostScript to occasionally get mixed up in the text.
  2. Fixed bug in Prolog printing routines that caused a crash when terms that were defined as operators were (legitimately) used as functors. A typical manifestation of the bug would be a crash occurring when a box whose elements were terms containing operator-like functors was opened.
  3. Fixed potentially potentially fatal bug in duplicate testing within buffers.
  4. Fixed bug in change_class function which prevented the function from working when it was called from the menu button beside a box's class specification.
  5. Changed display and printing of tables so that rows/columns are sorted alphabetically. That is, a row labelled "A" will now always appear above one labeled "B". Previously, rows and columns would automatically reorder themselves whenever a new element was added to the table.
  6. Changed the default behaviour for Print Confirmation option. By default, confirmation is now required before the print file will be sent to the printer. This is safer for users with print quotas.
  7. Changed reading of .Xdefaults so that (hopefully) COGENT won't get confused by default entries containing wild cards.
  8. Added code for memory deallocation for table labels which were not being deallocated when the table was destroyed. (Thanks to DS for pointing this out.)
  9. Added configuration parameter for scrolling of rule/element windows so that scrolling is now switchable between smooth scroll and jump scroll. With jump scroll, each scroll moves one line (instead of one pixel). On servers that call the canvas repaint proc on each redraw (as in SGI, but not as in Linux and Solaris) this helps prevent lots of screen flicker when scrolling reasonable distances. It also seems reasonable to scroll line by line (rather than pixel by pixel) on these windows.

Version 1.08.00 (Mon Nov 3 19:45:38 1997)

  1. Added message matrix view for compounds. This view shows messages passing to/from subboxes within a compound.

Version 1.07.03 (Fri Oct 31 14:53:18 1997)

  1. Redirected output from the trace qualifier to the message log of the box containing the condition being traced.
  2. Changed Xdefault PopupCopy to PopupCreate.
  3. Added description of archive directory to new-user welcome screen.
  4. The line spacing in the options screens has been increased by a couple of pixels.
  5. Selecting a box now highlights it in red, instead of inverting it.
  6. The "Edit" and "View" options on the history window canvas have been merged into a separate submenu of "Open". This emphasises the commonalities between their functions.
  7. Altered duplicate checking in OOS buffer loading, so that elements which are clearly not duplicates (i.e., which don't unify) are compared (as they previously were).
  8. Replaced ln/2 with log/2 in the maths menu within the condition editor. This now matches OOS which always seemed to know the function by the name log/2 (and not ln/2).
  9. Improved output of the trace qualifier, so that failed calls are also printed.
  10. Added two new built-in arithmetic functions: maximum value and minimum value, which work with lists of values.
  11. Re-arranged list-based arithmetic into a separate sub-menu, now accessible both from the list processing functions and the arithmetic functions. The arithmetic term comparison functions are now also accessible via two routes through the submenu network (term comparison/arithmetic and arithmetic/term comparison).
  12. Fixed minor formating bug in tables/graphs/etc which prevented embedded canvases from being resized when their containing window was resized.
  13. Added optional scrollbars to tables.

Version 1.07.02 (Mon Oct 6 11:13:50 1997)

  1. In previous versions, the default behaviour when an rule/buffer element was copied was to open the appropriate editor on that object. This could be turned off by setting the appropriate option. This has now been reversed. The default is simple to copy the object, and the user must open the editor as a separate operation. The logic is that new users don't want windows popping up when they copy something. They want to see the copy appear beside the original. They can then open the editor manually. More experienced users can get the same behaviour by just setting the option.
  2. The popup-on-copy option (referenced in 1) has been extended to include copying of complete models when a new version of a model is created. By default, the copy will be created but the model won't open, but this can be changed by setting the popup-on-copy option.
  3. Improved the output format used by the export function, and extended the import side of things so that it is now possible to export from any box type and import to any box type except compounds. All box sub-items (including comments and ignored sub-items) are correctly handled on the import and export. Note that it is possible to put elements of the wrong type in a box (e.g., rules into buffers) by importing the elements of one box into a second box of a different class. I see this as a feature, not a bug, although it does not appear to be a useful feature. Perhaps import should do some checking of the imported elements.
  4. Fixed bug in rule/condition editor whereby Change Condition failed to produce a correct condition when the intended target was findall/3. Also fixed a related bug in the code for deleting rule editor widgets which failed to calculate the correct height for findall/3 clauses when the second argument wasn't a list (as it should be). (Bug reported by CPB on 02/10/97.)
  5. Fixed long-standing bug in rule edit widget redraw that meant lines got out of sync when the "Insert Condition After" option was used within an embedded (i.e., qualified or findall) condition. (Reported by PGY sometime in August 1996!)
  6. Fixed redraw of palette buttons so if a button is selected it will be highlighted. Selected buttons were not previously being highlight, and this could cause problems if you selected a box and then did something else (that might cause a screen refresh) before drawing the object. (Reported by CPB on 02.10.97.)
  7. Found and fixed unreported bug in the interaction between messages and comments within data sources that resulted in the cycle number of source elements being indicated incorrectly on the source's data panel.
  8. Altered sink output format so it is pretty to read. The output is still valid Prolog (using ':' as an operator), so can still be fed into some kind of Prolog post processor if required. This change actually reverses a change made in May 1996.
  9. Boxes are now highlighted (drawn in inverse video) during drag operations and when they are selected by right-clicking on them.
  10. The separate paste menu which used to appear after right clicking in the background of a box/arrow diagram has now been merged with the menu that appears when the user right-clicks on a box. Inappropriate buttons are greyed out in each case.
  11. Arrow drawing has been improved so that when multiple arrows (of different types) connect the same two boxes, only one arrow stem is drawn. This means that all arrows to/from a box now stay visible when dragging the box. Such arrows are drawn by inverting the intermediate pixels, and this led to the arrows disappearing when an even number of arrows were present between two boxes (because the stems would be inverted an even number of times, with no net result).
  12. Added "Scaling:" checkbox to the history diagram window to allow easy switching on/off of history scaling (as suggested by PGY during September 1997).
  13. Fixed drawing of arrows from external objects of compound objects, which got well messed up at some stage.
  14. Added confirmation of model deletion from the project window. (Wasn't this there before? If so, what happened to it?)

Version 1.07.01 (Mon Sep 29 10:52:03 1997)

  1. Improved terminology by un-overloading the use of "condition". "Condition" is retained to describe the elements which must be satisfied for a rule to fire, but the other elements of rule-based processes (previously also termed conditions) are now termed "Condition Definitions". (Thanks to DS for realising the potential confusion and suggesting a sensible remedy.)
  2. "sort(X, Y)" now appears on the rule editor as "Y results from sorting X" (after prompting from CPB).
  3. Big changes to what happens when a research programme is created. Now, the history window is displayed, but it remains blank. There is a new button on the history window for creation of root nodes. Creating the first model in a research programme is done by clicking on this button. New models are then opened in the standard way. This button means that we can create multi-rooted projects. A further change, that shouldn't be noticed by the user, is that project history information is now stored in a slightly different way, so that it is possible to have an empty research programme (i.e., no models) but still have a comment/description for that research programme.
  4. Found and fixed an unreported bug in research programme creation that could cause crashes if a new research programme was created when an existing programme was open.
  5. Fixed checking of new research programme name in project creation (which was being correctly checked in project renaming and deletion, but not creation) so that if the user fails to type a name the system doesn't try to create a project with an empty name.
  6. The "randomise" condition has been removed from the condition menus as it isn't really a condition -- it is semantically an action. However, we don't want to make it an action because then 1) we wouldn't be able to randomise at the beginning of the first cycle; 2) there is no point resetting the random number generator part way through a trial. In order to retain the functionality that randomise was intended to capture, a "Randomise" button has been added to the run window, so it is now possible to randomise independently of the model (as should be the case). Note that there is still no point in randomising twice in a run. Also note that randomise remains available as an action callable from the scripting language. Randomise now also prints the value of the random seed to the output trace.
  7. The "Once" value of the "Initialise:" property (in buffers, networks, and tables) has been renamed "Each Session". COGENT should automatically convert old instances of the property, so the user should notice very little.
  8. Added an "Ignore Edits" option to the Done button on box windows, so it is now possible to close without saving or confirming save of edits. Confirm Save is only available as an active menu option when the box being closed is a compound, when (conceivably) one might want to save edits to some subset of subboxes of the compound.

Version 1.07.00 (Fri Sep 5 10:28:05 1997)

  1. Added new project management functions: archive and extract. These are intended to work in conjunction with the web-based COGENT resources. Basically the functions just automate the processes of putting a project into a single file (archiving: tar cf followed gzip) and extracting a project from a single file (extracting: gunzip followed by tar xf).
  2. Added server grabs/releases around the project management function callbacks, so now when you, for example, select "Rename" you have to respond to the rename pop-up before you can continue.
  3. Added similar server grabs/releases around the import/export functions.
  4. Modified mechanism for setting the filename associated with pagable canvas files to prevent COGENT from crashing when the filename associated with a pagable canvas is modified (as happens when "Help" is pressed when the help window is already open).
  5. Fixed a bug in script file scanning which caused a crash when "Open" was attempted on an empty script directory.

Version 1.06.01 (Fri Jul 18 15:19:39 1997)

  1. Modified mechanisms for copying deleted files to/from the waste directory. This should fix problem with cutting and pasting boxes.
  2. The option "Warn on system commands" has been removed as it was redundant.
  3. Modified change_class command so it again allows the class of unopened boxes to be changed from the boxes' parent canvas.
  4. Fixed bug in table drawing that causes problems when multiple tables were present simultaneously.
  5. Improved OOS efficiency by adding a flag that means buffer contents etc. are only dumped to their corresponding output files (and hence output is only updated) when the contents change (instead of on every cycle).

Version 1.06.00 (Sat Jul 12 11:11:28 1997)

  1. Raw comment subobjects are now allowed within buffers/processes/etc (as suggested by PGY on 30/06/97).
  2. Bitmaps are now used for icons. This ensures that PostScript output matches the screen output and should make extending the class hierarchy simpler.
  3. New subtype of sink: table. Messages of the form data(R, C, V) sent to such objects are presented as values within a 2-dimensional table. This is still very experimental. Any suggested modifications will be seriously considered. (Note: PostScript output of tables is also available.)
  4. PostScript output from analogue buffers is now available: printing current contents will now print both textual and graphical representations where appropriate. The graphical output doesn't attempt to capture colour (by, for example, using shading) and doesn't include the legend. It also doesn't scale.
  5. Fixed spacing bug in TwoUp PostScript output.
  6. Fixed insignificant bug in recalling TwoUp page style from Xdefaults.
  7. The recursive print option has been moved to a checkbox on the print options interface. A further boolean Xdefault which governs recursive printing has also been created, to parallel other print options which are stored as Xdefaults.

Version 1.05.09 (Tue May 20 13:10:54 1997)

  1. Extended the default size of the argument field for "call" conditions to 50 characters. (Suggested by PGY on 12/05/97.)
  2. Fixed allocation errors in the parser that were creating 2 byte memory leaks every time a comma was parsed. (Spotted by DS on 12/05/97.)
  3. Fixed parser failures when operators are used as stand-alone arguments (e.g., "term(+, -, >)." didn't parse properly).
  4. Fixed parser failures when infix operators are followed immediately by a bracketed argument. (Reported by PGY on 13/05/97.)
  5. Altered legend drawing for analogue buffer output. Only items actually on the canvas are now listed in the legend (as argued for by PGY for several weeks).
  6. Fixed minor bug in destroying the paste menu after pasting into a compound box.
  7. Improved memory deallocation when freeing boxes (as spotted by DS on 12/05/97) and when reading files of Prolog (as spotted by DS on 13/05/97).
  8. Further improvements in memory management, including correct deallocation of object properties, correct deallocation of the Prolog operator table, correct allocation of space when loading box files; correct deallocation of the colour table associated with analogue buffer graphical output.

Version 1.05.08 (Mon May 12 11:11:11 1997)

  1. Switched FIFO/LIFO access procedures, which somewhere in the mists of time got reversed. (Spotted by PGY on 29/04/97.)
  2. Fixed bad memory deallocation on exit. (Spotted by DS on 09/05/97.)
  3. Removed unnecessary memory allocation in Prolog scanning routines. (Spotted by DS on 09/05/97.)
  4. Added new property to data sinks to specify whether output should be stored locally (and hence inaccessible to all but the most persistent of hackers) or in the standard I/O directory. The default is local storage. Note that if this is changed to I/O directory, the user may need to check that if he/she has multiple data sinks they aren't all connected to the same file. A future option may allow a third possible location: global to the research programme (but inaccessible from other research programmes).

Version 1.05.07 (Tue May 6 10:06:31 1997)

  1. Project selection routines have been substantially rewritten to make various bits of code more maintainable.
  2. Included PGY's new syntax for lines in analogue buffers: line and interval now have new alternative syntaces line(Name, Point1 to Point2) and interval(Name, Start to Finish). The old versions still work too. This brings all object types into line with the overall syntax object_type(Name,Geometry).
  3. Include select/3 in sicstus/, corresponding to the built-in select/3 in SWI Prolog.
  4. The code for handling mouse double clicks has been revised (on both programme history canvases and compound box canvases), so that a double click now corresponds to the default menu action. The default behaviour is as before, but it is now possible for the user to configure double clicking to correspond to any menu action (by setting that menu action to be the default in the normal XView way -- holding the required menu button down and pressing ).
  5. It is now possible to open any box in edit or view mode, independently of the mode of its parent. Previously, if you opened a model in view mode, all boxes and subboxes would necessarily be opened in view mode (and similarly for edit mode). The default is now to maintain the parent object's mode, but a submenu item allows this to be overridden.
  6. The mechanisms for preventing modification of data displayed in widgets in view mode has been improved. Previously, it was possible to make changes which were then ignored. Now it is no longer possible to modify the widgets' data.

Version 1.05.06 (Sun Apr 27 19:55:41 1997)

  1. Routines for maintaining a research programme's history have been rewritten. It is now possible to have multi-routed RPs, to delete the root node of an RP, and to drag models around the RP history canvas (though positions of models are not remembered between invocations).
  2. Changed all abort() calls to exit(-1) so that when users exit after a bug the doesn't crash (though forced crashing is useful for locating bugs).
  3. Fixed bug in getting buffer dimensionality which would crash if the relevant box wasn't a buffer.
  4. The version is now recorded in the init file so COGENT knows when you are using a new version and can advise of any changes. (Suggested by RC 24/04/97.)
  5. COGENT now creates an init file if one does not exist. (Suggested by RC 11/96.)
  6. COGENT now also creates project and io directories if they do not exist. (Suggested by RC 11/96.)
  7. The arguments of conditions/actions are retained (if possible) when the functor of the condition/action is changed. (Suggested by JF on 10/04/96.)
  8. If the current version isn't the one with which configuration information (i.e., which boxes were open, where the boxes were positioned, and what info they were showing) was created, then be careful about using that information. In particular, don't use any information whose representation may have changed. (Suggested by RC 24/04/97.)
  9. Added primitive facility for tracing conditions. The facility works via a new "qualifier", that can be put in front of any condition. trace(X) succeeds just in case X succeeds, but has the additional side-effect of printing any successful instantiations of X on the output log. (Suggested by RC 27/04/97 in response to query from JF.)

Version 1.05.05 (Tue Apr 22 12:47:25 1997)

  1. Incorporated more functions from PGY for analogue buffers (2D scanning; the x_mark object)
  2. Incorporated Pete's release notes as a help file for analogue buffers.
  3. Added better colour support for analogue buffers, such that objects retain their colours. A legend is also drawn in the top right of the graphical display window.
  4. Fixed bug reported by MR which caused occasional crashing when closing rule editors.
  5. Fixed bug in creation of sibling models from the project manager window.
  6. Fixed printing of ';' operator so that quotes are no longer included.
  7. Added new list processing conditions: replace and replace_all.
  8. Fixed bug in recurrent processing checking that caused a crash when rules were edited after changing the containing processes recurrent status.
  9. Altered routines for drawing/scaling the history window. When scaling is on, time intervals between are represented by a constant y displacement.
  10. Changed name of "Project Manager" to "Research Programme Manager".
  11. Changed name of "History" to "Family Tree". I'm not sure if this is good.
  12. When printing an entire research programme, individual modes are now printed in a sensible order.

Version 1.05.04 (Wed Apr 16 12:35:03 1997)

  1. Fixed bug in warning of syntax errors in the rule/condition editors. (Reported by MR's student)
  2. Generalised mechanism for setting defaults on menus with inactive items.
  3. Added X/Y scale locking to scalable canvases. (Suggested by PGY on 14/04/97)
  4. Fixed bug in handling boxes with NULL classes introduced in version 1.05.00.
  5. Fixed silly bug in reading empty Prolog files that crashed on Sun 4s.

Version 1.05.03 (Sun Apr 13 23:23:38 1997)

  1. Revised code for pagable canvases, improving the modularisation and putting it in xv_extensions.c.
  2. Added new extended widget: scalable canvas, especially for analogue buffer output. The widget consists of a canvas with sliders for X and Y scale. Will probably need to clean up the code a lot if this is to be a reusable widget.

Version 1.05.02 (Fri Apr 11 16:49:54 1997)

  1. Added Pete's code for circles in 2D analogue buffers
  2. Added initial version of colour code to give colourful output of analogue buffers.

Version 1.05.01 (Wed Apr 9 11:28:59 1997)

  1. Added further print option to suppress printing of initial contents.
  2. Included PGY's code for displaying polygons within analogue buffers.

Version 1.05.00 (Mon Apr 7 13:16:34 1997)

  1. Added primitive script editor/running facilities.
  2. Added print confirmation window showing all print options before printing is effected.
  3. Made print options inactive when they are not relevant (both in print confirmation and in the Options panel).
  4. Added options for print formats: PostScript or Plain Text (i.e., ASCII).
  5. Added landscape mode for PostScript printing (and revised interface for setting "Two pages per sheet" (i.e., two-up) mode).
  6. Fixed bug in font size when printing PostScript in two-up mode.
  7. Buffers can now contain Prolog conditions (but don't use them!).
  8. Added graphical output for one-dimensional objects in analogue buffers.
  9. New (more efficient and more portable) method of generating random seeds in SWI version of OOS. (Fix due to PGY.)

Version 1.04.04 (Fri Feb 28 17:37:38 1997)

  1. Added a new condition "trial X of Y" so the user can determine which trial is currently being run, and how many trials there are in the current block.
  2. Fixed one (of many) memory leak, in which space used by X font information wasn't being freed when it should have been, resulting in potential linear growth in RAM requirements if displaying contents whilst the model was running. Further memory leaks remain (e.g., when closing boxes) and should be fixed.

Version 1.04.03 (Tue Feb 18 12:19:43 1997)

  1. Subtle change in the menu generated under Add Condition/Prolog. The first (and default) entry is now call/1. Other user-defined conditions are listed below this.
  2. Added new list-processing condition: sort/2 which is just an interface to the standard Prolog list sorting routine.
  3. Added new condition: randomise/0, which uses the current date and time to reset the random number generator.
  4. Grouped miscellaneous conditions (current cycle, randomise, cut) under a single menu in the Add/Modify Conditions functions.
  5. Fixed a couple of printing problems: when printing compounds, COGENT would occasionally incorrectly calculate the height of those boxes and hence over-write some bits of the page; when printing bits of Prolog containing special characters (like backslash), COGENT wasn't marking those characters as special so PostScript was ignoring them (or trying to interpret them incorrectly).
  6. Added new property to control the number of lines displayed in the Prolog half of the OOS window.
  7. Fixed bugs in rule commitment which caused crashes when a rule was edited and the rule's box was set to show the box's properties before the rule's editor was closed.
  8. Fixed parallel bug in box reloading that caused crashes when a box was reloaded when it was set to show its properties.

Version 1.04.02 (Wed Jan 8 22:06:16 1997)

  1. Fixed bug in project disposal which was causing a crash whenever you deleted an entire project.
  2. Made modes box-specific, so, for examples, processes can be viewed in rule, description, message log, or property mode, and compounds can be viewed in diagram mode (instead of using generic mode names like "initial state").

Version 1.04.01 (Mon Jan 6 10:46:15 1997)

  1. Altered presentation of property information so that it too is shown on a separate subwindow of a box (i.e., there is now a "property" mode as well as modes for "description", "initial contents", etc.). This is in preparation for allowing the addition of instance specific properties.
  2. Moved all the syntax checking etc to a callback under the File menu. This speeds up model loading and makes puts syntax checking under the user's control.
  3. Added a further phase to syntax checking which removes any outdated files. This includes old backup files (which were never much use) and any directories for boxes which are no longer part of the model.
  4. Added a project clean up phase on project loading which removes any models that are no longer part of a project. I'm not sure how such files might get left around, but I found a few in the JDM project, so it seemed useful, but this might get removed if it isn't actually used again.

Version 1.04.00 (Mon Dec 30 19:32:37 1996)

  1. Removed use of single quotes around special punctuation characters (; and ,) when used as principal functors in a clause
  2. Add arrow checking when loading a model. If, on loading, COGENT discovers an arrow of the wrong type leading from a box, or an arrow of the right type without a corresponding return arrow, the arrows will be automatically adjusted to ensure that the complete model is consistent and complete.
  3. Add checking of rules etc. to ensure that all messages and matches have corresponding arrows.
  4. Fixed bug preventing double click in view mode from opening a box. This now works. Also prevented edited box elements from being committed to an uneditable box.
  5. Typing an integer into the cycles/step or trials/block fields now sets those fields immediately. Previously they were not set until or was pressed.
  6. On the Mode menu of the Run window, the current mode is now inactive (because it doesn't make sense to switch to the current mode), and the other mode is the default. Thus, clicking on the menu button is now enough to switch modes.
  7. Fixed printing of (spatially) large models such that they are scaled to fit onto the page, regardless of their size (as requested by ME).
  8. Added printing of project history/description/models.
  9. Fixed bug in printing: was occasionally crashing when printing empty descriptions due to bad code for calculating the length of a null string.

Version 1.03.05 (Fri Dec 20 13:24:15 1996)

  1. Fixed bug in subobject editor which was causing user-entered terms to occasionally be misread and overwrite existing data, usually leading to a crash.
  2. Fixed typos in some parser warning messages.

Version 1.03.04 (Thu Dec 19 18:05:34 1996)

  1. Fixed long-standing undesirable behaviour in change_class, such that now changing a box's class only deletes the contents of that box if the old and new classes are incompatible (e.g., buffer and process). JF first complained about this on 10/04/96.
  2. Removed warning message from configuration read process, so missing boxes (which might arise legitimately when a new model is created) no longer result in puzzling warnings.
  3. Fixed bug in rule editor which was making all ports into output ports, and possibly causing crashes due to incoherent arrow information.

Version 1.03.03 (Wed Dec 18 17:35:59 1996)

  1. Recursive copy box fully implemented (finally!)
  2. Added code to update old-style internal box references. Previously messages were addressed to boxes by name. This meant than changing a box's name would mess up any messages targeted at that box. Some time ago this was changed so that all new messages would be addressed using an internal reference which was independent of the box name. Old-style references were inherited from previous models, and COGENT/OOS didn't mind mixing them. This fix will update all references when you load a model, ensuring that only internal references are used. Once the fix has propagated to all models, it will be removed and OOS will be updated so as not to understand the old-style references.
    NOTE 1: Internal errors will arise if a reference cannot be updated. This will only occur if COGENT cannot translate from a stored old-style box name to the box's internal reference. This in turn should only happen if you have messages which reference boxes that either no longer exist or that have their names spelt incorrectly within the message.
    NOTE 2: While updating the references, COGENT also takes the opportunity to get rid of any excess uses of "call" wrapped around rules' conditions.
    NOTE 3: Given the above, it is highly recommended to open and recursively save each and every model in your project directory. If I had time I'd write a little routine to automagically do this.

Version 1.03.02 (Mon Dec 16 11:14:18 1996)

  1. Fixed bug in locating external objects of compounds when presenting the options within a rule's menus (reported by ME, 10/12/96).
  2. Improved reporting of syntax errors in user-entered Prolog terms: report now shows string being parsed.
  3. Partially implemented copy of compounds (but I wouldn't use it yet!)

Version 1.03.01 (Wed Dec 11 22:30:09 1996)

  1. Slight alterations to project history diagram (discs instead of squares, plus black GC instead of inverse GC, plus slight increase in sensitive area around individual models).
  2. Slight modification to some error/warning messages.
  3. Reverse the specific properties of analogue buffers to make the order more sensible.
  4. Fix insidious bug in OOS concerning addition of variables to buffers.

Version 1.03.00 (Wed Nov 27 00:22:47 1996)

  1. Box state (open/closed) are now remembered with position information. This information is not currently used on start-up.
  2. Altered condition menus to include any user defined conditions (as suggested by PGY).
  3. Sink output now goes to the io directory if a file is nominated. If no file is specified (under the sink's properties) output is sent to "data.current" in the sink's directory (as before).

Version 1.02.00 (Sun Nov 24 10:56:51 1996)

  1. Fix bug in parsing terms containing multiple unbracketed operators.
  2. Fix OOS so that variables in sink output are translated into more sensible upper-case-initial identifies (e.g., _193032 will appears as something like A).
  3. Added code to remember window positions and modes across sessions.
  4. Added Boolean option to control whether window positions/modes are remembered across sessions.
  5. Added "is" to list of mathematical conditions in rules.

Version 1.01.01 (Wed Nov 20 15:43:39 1996)

  1. Fixed Linux bug in directory creation (was preventing creation of top-level boxes on some machines).

Version 1.01.00 (Mon Nov 18 19:15:18 1996)

  1. Start version numbers with clear criteria for incrementing such numbers.
  2. Added "What's New" subwindow.
  3. Merged Limited & Unlimited Buffer subclasses.
  4. Added code to automatically update outdated file formats.
  5. Updated OOS to handle the modified class hierarchy.
  6. Fixed bug in OOS causing duplicate printing of trace initialisation information.

Version 1.0 (Mon Nov 11 15:37:24 1996)

  1. Fix "stop" action which broke when message logging was added.
  2. Allow view of message log for compounds.

Version 1.0 (Sat Nov 9 17:33:05 1996)

  1. Make the import/export dialogue box remember the last import/export file and directory
  2. Replace "Recursive" by "Recurrent" in processes

Version 1.0 (Mon Nov 4 15:21:42 1996)

  1. Fixed two non-NULL-terminated xv_set commands, correcting the bug (reported by Mike Ramscar) which sometimes caused crashes when opening boxes.

Version 1.0 (Sun Nov 3 16:54:00 1996)

  1. Added help button/frame on run window.
  2. Fixed bug in use of help frames: previously frame accounting failed when the parent was destroyed. Now frame handles are attached to parents and hence destroyed with parents.
  3. Fixed bug in setting frame labels: long names where causing crashes when string space ran out.
  4. Added new boolean option to control scrollbars on diagrams: "Scrollable canvases?"
  5. Removed redundant option: "Create tracefile?"