1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
|
* GNU MDK -- History of visible changes.
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, Free Software Foundation, Inc.
See the end for copying conditions.
Please send mdk bug reports to bug-mdk@gnu.org.
---------------------------------------------------------------------------
* 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.
** Documentation: invariant sections removed.
** 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
<anp@cantv.net>.
** 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 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:
|