* GNU MDK -- History of visible changes. Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009, 2010, 2013, 2014, 2015, 2019, 2020 Free Software Foundation, Inc. See the end for copying conditions. Please send mdk bug reports to bug-mdk@gnu.org. --------------------------------------------------------------------------- * Version 1.3.0 (31/10/20) - Graphical user interface upgraded to GTK+ 3.14+ --------------------------------------------------------------------------- * Version 1.2.11 (15/10/20) ** Bug fixes: - #55877: mixvm.el: obsolete string-to-int removed. - Read/write access to/from highest word of memory (patch #9773 by Kevin Brunelle). - Correctly rewind tape when seeking past beginning of file (patch #9974 by Kevin Brunelle). - Memory usage optimizations (Kevin Brunelle). - Compatibility with Guile 3. --------------------------------------------------------------------------- * Version 1.2.10 (07/01/19) ** Upgraded dependencies: - Upgrade to Guile 2.2 - Upgrade to Flex 2.6 ** Bug fixes: - #32452: Fixed infinite loop in mixasm on wrong F-spec - #43634: Preserving rA's sign on ADD/SUB yielding 0 - #47208: Correctly store third byte of immediate constants --------------------------------------------------------------------------- * Version 1.2.9 (23/12/15) ** Bug fixes: - #43985: Added missing instructions SLB,SRB,JAE,JAO,JXE,JXO (from volume 2, section 4.5.2), by Sergey Litvin. - #46456: Documentation fixes, by Joshua Davies. --------------------------------------------------------------------------- * Version 1.2.8 (03/08/14) ** Bug fixes: - #42818: Fixed invalid use of --export-dynamic in Darwin. - #42871: Fixed tautological integer comparisons. - #39817: Fixed compilation with Glib > 2.35.6. - #41097, #4198: Fixed compilation in Darwin systems. - #41097: Fixed compilation with libreadline 6.3.x. - #40359: Check for opcodes during compilation fixed. --------------------------------------------------------------------------- * Version 1.2.7 (23/02/13) - Upgrade to Guile 2.0. Thanks to Aleix Conchillo. - Samples and documentation from TAOCP, via MIXAL. Thanks to Eric S. Raymond. --------------------------------------------------------------------------- * Version 1.2.6 (10/10/10): ** Bug fixes: - mixvm: the instruction MOVE with F=0 is interpreted correctly as a NOP (#31010). - mixasm: no longer limit the index field to 3 bits (#5652) - debugger: breakpoints for I register modification fixed. - Manual: download info updated to point to Git repositories (#29524). - Compilation without Guile works again (#28086). - Parallel compilation with `make -jn' now works (#31018). --------------------------------------------------------------------------- * Version 1.2.5 (11/10/09): ** Bug fixes: - MIXAL: EQU directives without a LOC don't cause an error (#23816). - gmixvm: startup time reduced. ** Maintenance: - Guile API modernized (deprecated gh_* calls are gone). - Migration to latest Glade tool. - Miscellaneous infrastructure improvements (thanks to Aleix Conchillo). --------------------------------------------------------------------------- * Version 1.2.4 (21/03/08) ** Maintenance release: - License changed to GPLv3 - Compilation checked against recent versions GTK+, Glib, Glade &co. - Bug fixes - Darwin compatibility issues fixed (thanks to Aleix Conchillo) --------------------------------------------------------------------------- * Version 1.2.3 (16/08/06) ** GUI improvements: - The external programs dialog has been revamped: - Only proper paths can be introduced for the executables (via a graphical file chooser). - Flags for mixasm are no longer free text, but a check button. - Configurable toolbars (icons, text or both). - Attach/detach buttons in main toolbar are only active when meaningful. - Missing toolbar tooltips added. - 'About' dialog cleaned up. ** Supported platforms: - Fixed compilation for Darwin (thanks to Aleix Conchillo). - Fixed compilation for 64-bit archs (thanks to Baruch Even). --------------------------------------------------------------------------- * Version 1.2.2 (07/08/06) ** MIXAL compliance fixes (thanks to Xiaofeng Zhao): - NOP accepts an F-spec. - Invalid F-spec values are reported as warnings instead of errors, since they can be legitimately (if hackishly) used. ** gmixvm: history popup in terminal input dialog. ** gmixvm: the load file dialog now remembers last directory. ** Bug fixes: - smem in mixvm correctly handles negative zero (thanks to Michael Vernov). - cbpo help string corrected (thanks to Michael Vernov). - I1 and I2 in mixvm swapped to their correct position (closes #15746). - Obsolete CFLAGS for Darwin removed. - mixal-mode.el syncronised with Emacs CVS. - Segmentation fault when clicking Memory title (closes #15910). - Writing to char devices caused an out-of-bounds array access (thanks to Aleix Conchillo). --------------------------------------------------------------------------- * Version 1.2.1 (20/09/05) ** MIXAL compliance improvements (Sergey Poznyakoff): - w-expressions in literals are now admitted (e.g. LDA =8(1:1)=) - ALF now accepts non-quoted arguments (in addition to quoted - ones), as in the original TAOCP definition. ** German translation updated (thanks to Jens Seidel) ** mixal.el improvements (Pieter Pareit) ** Bug fixes: - gmixvm's failure to dynamically link with libglade (#13661) (thanks to Sascha Wilde) - mixal.el calls mixasm with obsolete -g option (#14569) (thanks to Sascha Wilde) - mixasm -g causes a coredump (#14579) (Pieter Pareit) --------------------------------------------------------------------------- * Version 1.2 (05/08/04) ** Graphical user interface (gmixvm) updated to gtk+ 2.4.x - gmixvm now uses the latest version of the gtk+ toolkit, including antialiased Pango fonts. - Individually detachable windows for the virtual machine, the source window and the devices notebook (there is no 'split mode' anymore). - Detachable toolbars. - Current source line and breakpoints are now marked via icons. - New menu option to change all fonts at once. ** German i18n available (thanks to Mike Scholz). Set LANG to de_DE.UTF-8 to use it. ** mixasm includes debug info in compiled mix files by default: the options -g and --debug are gone; if you want to compile without debug info, use -O or --ndebug. --------------------------------------------------------------------------- * Version 1.1 (12/06/04) ** The typewriter device (19) is now input/output, so that you can read characters from standard input (mixvm) or a popup dialog (gmixvm) in your MIXAL programs (see samples/echo.mixal for a simple usage sample). ** Input character device files may now contain lines with less than the required block size; the virtual machine pads the missing characters in memory using 0 (MIX char 'space'). ** The paper tape device (20) was incorrectly defined as an output device. It is now an input char device (cf. TAOCP vol.1 p. 133, where it is mentioned as the 'paper tape reader'; thanks to Michael Talbot-Wilson). ** Listings produced by mixasm improved: better layout, and correct identification of 'ALF' and 'CON' instructions (including those added by the compiler as a result of local constant definitions and future references. ** Local constants can now be modified by a field spec or an index, as in, say, CMPA =0=,1(3:2) (closes #5654). ** The virtual machine reader is now case-insensitive, i.e., it automatically converts lowercase characters in input char device files to their uppercase counterparts (which are the only ones admitted by MIX). The ASCII representation for MIX chars delta, sigma and pi is now ~, [ and #. ** Bug fix: mixvm prompt's ending whitespace is now correctly set. ** Bug fix: blocks in input char devices (e.g. the card reader) are now expected to be separated by newlines, mirroring char output, which is done so (i.e. with one ASCII line per block). ** Improved virtual machine error messages (bad memory address, device no., fspec, etc.). ** Bug fix: undefined symbols are transformed to new addresses just before the end of a compiled program (as per TAOCP v1 p. 156; thanks to WeiZeng). ** Bug fix: the vm no longer blows up on memory access violations (thanks to Joel R. Holveck; closes #5649). ** Bug fix: LDAN, LDXN and LDiN always negate the result, even if zero (thanks to Ruslan Batdalov; closes Debian's #247392). --------------------------------------------------------------------------- * Version 1.0.1 (09/06/03) ** New misc/mixal-mode.el for emacs (and associated docs), written by Pieter Pareit. ** Error message for unquoted ALF operand improved. ** Fixed bug that caused (g)mixvm to segfault when reading a false MIX file. ** All translatable strings are ready for i18n. ** Portability fixes to extend supported platforms. ** When the program counter reaches address 4000 during program execution, it is set back to its maximum value, 3999, and the program halts, to avoid infinite loops. ** Minor documentation improvements. ** Minor bug fixes. --------------------------------------------------------------------------- * Version 1.0 (08/04/02) ** The stable release. ** New command line option added to 'mixvm': -t (--time) to turn on virtual execution time printing (it is now off by default). ** New 'mixvm' command: prompt, lets you change the mixvm command prompt ("MIX > " by default). ** When the program counter reaches address 4000 during program execution, it wraps up to value 0, to keep always a valid address. Caveat: a program missing the HLT instruction can loop indefinitely. ** New supported platform: Mac OS X. ** User manual reviewed and updated. ** Bug fix: 'configure' libraries detection now works properly. ** Bug fix: missing #includes added to avoid compilation errors in some platforms (RedHat 7.1, ia64 with gcc 3.0). --------------------------------------------------------------------------- * Version 0.5 (29/09/01) ** Added Guile support: - New utility 'mixguile': a Guile shell with an embedded MIX virtual machine. - gmixvm and mixvm have an embedded Guile interpreter: Scheme can be used as an extension language. - See the updated User's Manual for details. ** New (g)mixvm commands: - psrc: print the current program's source file path - pprog: print the current program's path - pline: print the current program line - pstat: print the current virtual machine status - slog: set on/off the logging of info messages to stdout (or the command log in gmixvm) ** For the sake of coherence, the following (g)mixvm commands have been renamed: - tracing -> strace - timing -> stime (set on/off timing), ptime (print timing stats) - devdir -> sddir (set the devices dir), pddir (print the devices dir) ** Major documentation update to include Guile support and various cosmetic corrections for pretty ps and pdf manuals (provided in the distribution in addition to the html format). ** In gmixvm, when a font specified in the config file cannot be loaded, it is removed from the configuration. ** gmixvm now accepts the standard command line options -vuh ** Bug fix: when the MIX font is changed in gmixvm, the loc widget font is correctly updated. ** Bug fix: help messages are now correctly aligned in (g)mixvm. ** Bug fix: timing statitics for the MOVE instruction are correctly computed. ** Bug fix: pressing return at an empty 'MIX >' prompt does not produce an error message. ** Bug fix: the configure script now correctly detects the absence of libglade (needed by gmixvm). ** Bug fix: makefiles corrected so that mdk accepts a VPATH build ('make distcheck' works now) --------------------------------------------------------------------------- * Version 0.4.2 (17/08/01) ** New toolbars for gmixvm windows. ** Toolbars can be hidden, using View->Toolbar checkbox. ** New icon for the "goto loc pointer address" button. ** The menu entry "Split windows" has been moved from "Settings" to "View" main menu, and renamed to "One window" in split mode. ** In split mode, the MIXAL window has its own statusbar to display symbol values in it (instead of in the main window toolbar). ** Bug fix: the visibility of split windows when changing mode is now correctly handled. ** Bug fix: the devices window is now correctly destroyed, avoiding GTK warnings on gmixvm exit. --------------------------------------------------------------------------- * Version 0.4 (22/07/01) ** Split mode: gmixvm can now be run with the MIXVM, MIXAL and Devices windows detached (instead of arranged in a notebook). ** When running in split mode, the MIXVM, MIXAL and Devices windows can be hidden. ** Conditional breakpoints can be set in mixvm and gmixvm using the commands 'sbp[rmco]', which cause the execution to stop when a given register, memory cell contents, comparison flag or overflow toggle change (e.g. 'sbpr A' will set a breakpoint on register A contents change). Conditional breakpoints can be deleted using the new commands 'cbp[rmco]'. ** New vm command 'pbt' which prints a backtrace of the last executed instructions. ** The gmixvm main window displays the path to the current MIX file in its title bar. ** The mixvm and gmixvm configuration files are now stored in ~/.mdk (instead of ~/.gmixvm). ** The default device files directory is also ~/.mdk. It can be configured using the new command 'devdir' or (in gmixvm) with the new Settings->Devices dir menu command. ** The commands 'tron' and 'troff' have been substituted by 'tracing on|off'. ** The trace flag is saved as a configuration parameter in mixvm and gmixvm. ** New vm commands: 'pedit'/'sedit' (print/set editor command) and 'pasm'/'sasm' (print/set compile command). Their value is stored as a config param also in mixvm. ** New command 'timing' for setting on/off and printing the timing statistics (both in gmixvm and mixvm). Its value is also stored as a config param. ** mixvm and gmixvm now save a history file so that they remember commands typed in previous sessions. ** Bug fix: changes in the device format are now correctly stored (gmixvm). --------------------------------------------------------------------------- * Version 0.3.5 (23/06/01) ** In gmixvm, when the mouse pointer is over a MIXAL source line, the status bar shows the value of the variables appearing in this line. ** The current symbol table can be displayed, in gmixvm, using the menu command Debug->Symbols... ** Bug fix: the load, compile and run file dialogs now get the correct filename under linux. ** Bug fix: fonts used by gmixvm are now always correctly saved. ** Bug fix: 'psym' now works correctly in gmixvm. ** Bug fix: the symbol table for a MIX file is now correctly recovered both in gmixvm and mixvm (negative values where incorrectly converted to a positive value). --------------------------------------------------------------------------- * Version 0.3.4 (12/06/01) ** Bug fix for a segfault which made gmixvm unusable in version 0.3.3. --------------------------------------------------------------------------- * Version 0.3.3 (10/06/01) ** The output of the contents of binary devices in gmixvm can be configured to be in decimal or word format (for each block device). ** The main gmixvm window is not shown until it is completely drawn. ** The commands 'edit' and 'compile' are now understood by gmixvm. The external programs used can be configured using the menu entry Settings->External programs. ** The commands 'edit' and 'compile' can be now executed without argument (both in mixvm and gmixvm). When no argument is given, the MIXAL source file corresponding to the currently loaded MIX program is edited/compiled. ** Bug in CON fixed : 'CON wexpr' didn't compile correctly unless wexpr represented a valid instruction; now, wexpr can evaluate to an arbitrary value (Vasilij Ozmetelenko). ** The completion key for the gmixvm command prompt is now TAB (instead of RETURN). ** The gmixvm command prompt maintains now a history of previously typed commands, which can be visited using the arrow keys (UP for previous command, DOWN for next one). ** When a file is reloaded by the virtual machine (both in mixvm and gmixvm), the currently set breakpoints are conserved. ** When compiling a source file which is not in the current directory, the correct path is now stored in the compiled file. ** Fixed a bug which caused gmixvm to segfault when creating the virtual machine (Andrew Hood) ** The GNU MDK documentation is now distributed under the GFDL license. --------------------------------------------------------------------------- * Version 0.3.2 (10/05/01) ** The colors used for highlighting MIXAL source lines in gmixvm are now customizable. ** The fonts used in the different gmixvm widgets are now customizable. ** Input/output for all MIX block devices is shown in gmixvm. ** All gmixvm customizations are stored in a configuration file (inside ~/.gmixvm directory). ** Device files used by gmixvm are stored in ~/.gmixvm, instead of the working directory. ** Output to binary devices works now correctly. ** Bug on pmem fixed (thanks to Christoph von Nathusius and Jason Uhlenkott). --------------------------------------------------------------------------- * Version 0.3.1 (9/04/01) ** New binary and html RPMs (RedHat) contributed by Agustin Navarro . ** The package can be correctly build in FreeBSD 4.2 (Ying-Chieh Liao) ** Fixed configuration process when included gettext is used. ** The info files are now properly categorized in a dir entry, so that they can be properly installed. ** Compilation warnings fixed. ** getopt implementation provided for systems missing it. --------------------------------------------------------------------------- * Version 0.3 (28/03/01) ** MDK is now an official GNU package. ** New GTK+ interface for the virtual machine (gmixvm). ** New mixvm-Emacs/GUD interface via mixvm.el (Philip King). ** Readline and history support for mixvm are now optional features. ** JRED is now properly implemented (bug pointed out by Vasilij Ozmetelenko). --------------------------------------------------------------------------- * Version 0.2 (07/01/01) ** mixvm provides virtual execution time statistics after each invocation of run or next. ** mixvm can trace instructions as they are executed. tron/troff commands turn on/off instruction tracing. ** mixvm accepts a new command, w2d, which computes the decimal value of a MIX word given as a series of bytes (e.g. - 01 00 34 32 22). ** Symbols can be defined at the mixvm prompt with the new command ssym. ** mixvm accepts a new command, weval, which allows the evaluation of MIXAL w-expressions. ** Expressions containing strings of successive '*' are now correctly evaluated. ** When using block devices in mixvm, the buffers are now flushed after each OUT operation. --------------------------------------------------------------------------- * Version 0.1.1 (18/11/00) ** MDK is now compilable in rpm-based linuxes. ** MDK fully compliant with Knuth's specification. In particular, local symbols are now properly handled in special cases such as 3H ORIG 3B instructions. See samples/stress{1,2}.mixal. ** Future references affected by unary minus are accepted with a warning (they are banned in Knuth's specification). Also future refs in EQU directives are now properly handled. See samples/stress{3,4}.mixal. ** When mixvm executes a program and reaches the end of the available memory without encountering a HALT instruction, it halts anyway. --------------------------------------------------------------------------- * Version 0.1 (31/10/00) ** Initial version --------------------------------------------------------------------------- * Copying information: Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009, 2010, 2013, 2014, 2015, 2019, 2020 Free Software Foundation, Inc. Permission is granted to anyone to make or distribute verbatim copies of this document as received, in any medium, provided that the copyright notice and this permission notice are preserved, thus giving the recipient permission to redistribute in turn. Permission is granted to distribute modified versions of this document, or of portions of it, under the above conditions, provided also that they carry prominent notices stating who last changed them. -- ;;; Local Variables: ;;; mode: outline ;;; End: