summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--doc/Makefile.am13
-rw-r--r--doc/mdk.texi143
-rw-r--r--doc/mdk_ack.texi24
-rw-r--r--doc/mdk_bugs.texi4
-rw-r--r--doc/mdk_copying.texi10
-rw-r--r--doc/mdk_emixvm.texi6
-rw-r--r--doc/mdk_findex.texi4
-rw-r--r--doc/mdk_gmixvm.texi22
-rw-r--r--doc/mdk_gstart.texi100
-rw-r--r--doc/mdk_index.texi4
-rw-r--r--doc/mdk_intro.texi8
-rw-r--r--doc/mdk_mixasm.texi4
-rw-r--r--doc/mdk_mixvm.texi64
13 files changed, 149 insertions, 257 deletions
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 25a86b5..1ffa910 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -1,16 +1,16 @@
## Process this file with automake to produce Makefile.in
-# Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-#
+# Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+#
# This file is free software; as a special exception the author gives
-# unlimited permission to copy and/or distribute it, with or without
+# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
-#
+#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# $Id: Makefile.am,v 1.8 2001/09/29 01:53:51 jao Exp $
+# $Id: Makefile.am,v 1.9 2003/06/02 23:20:38 jao Exp $
SUBDIRS = img
SUFFIXES = .html
@@ -19,7 +19,8 @@ info_TEXINFOS = mdk.texi
mdk_TEXINFOS = mdk_intro.texi mdk_ack.texi mdk_tut.texi mdk_gstart.texi \
mdk_mixvm.texi mdk_emixvm.texi mdk_mixasm.texi mdk_bugs.texi \
mdk_index.texi mdk_gmixvm.texi mdk_install.texi \
- mdk_mixguile.texi mdk_copying.texi mdk_findex.texi
+ mdk_mixguile.texi mdk_copying.texi mdk_findex.texi \
+ mdk_mixal-mode.texi
html_docs = mdk.html
diff --git a/doc/mdk.texi b/doc/mdk.texi
index 63c2aec..3eeb29d 100644
--- a/doc/mdk.texi
+++ b/doc/mdk.texi
@@ -1,4 +1,4 @@
-\input texinfo
+\input texinfo
@c %**start of header
@setfilename mdk.info
@settitle GNU MIX Development Kit (mdk)
@@ -17,13 +17,14 @@
@set VERSION 1.0
@set JAO Jose Antonio Ortega Ruiz
@set PHILIP Philip E. King
+@set PIETER Pieter E. J. Pareit
@footnotestyle separate
@ifinfo
This file documents the the GNU @sc{mdk} utilities for developing
programs using Donald Knuth's MIX language.
-Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
@@ -89,23 +90,27 @@ assembler-like language for programming a virtual computer called
MIX. They were created by Donald Knuth in the first volume of @cite{The
Art of Computer Programming} (Addison Wesley, 1997).
-GNU @sc{mdk} is an official GNU package.
+GNU @sc{mdk} is part of the GNU project.
GNU @sc{mdk} was written by @value{JAO} and is released under the GNU
General Public license (@pxref{Copying}), so that users are free to share
and improve it.
+@value{PIETER} is the author of the Emacs @code{MIXAL} mode
+(@pxref{mixal-mode.el}), and has also contributed many bug fixes.
+
@value{PHILIP} has contributed to this package development with many
helpful discussions, as well as actual code (@pxref{mixvm.el}).
@end ifinfo
@menu
-* Introduction::
-* Acknowledgments::
+* Introduction::
+* Acknowledgments::
* Installing MDK:: Installing GNU MDK from the source tarball.
* MIX and MIXAL tutorial:: Learn the innards of MIX and MIXAL.
* Getting started:: Basic usage of the @sc{mdk} tools.
+* mixal-mode.el:: Using Emacs to write MIX code.
* mixvm.el:: Using @code{mixvm} within Emacs.
* mixasm:: Invoking the MIXAL assembler.
* mixvm:: Invoking and using the MIX virtual machine.
@@ -116,131 +121,6 @@ helpful discussions, as well as actual code (@pxref{mixvm.el}).
* Concept Index:: Index of concepts.
* Instructions and commands:: Index of MIXAL instructions and MIXVM commands.
-
-
-
-
-
-@detailmenu
- --- The Detailed Node Listing ---
-
-Installing @sc{mdk}
-
-* Download::
-* Requirements::
-* Basic installation::
-* Emacs support::
-* Special configure flags::
-* Supported platforms::
-
-MIX and MIXAL tutorial
-
-* The MIX computer:: Architecture and instruction set
- of the MIX computer.
-* MIXAL:: The MIX assembly language.
-
-The MIX computer
-
-* MIX architecture::
-* MIX instruction set::
-
-MIX instruction set
-
-* Instruction structure::
-* Loading operators::
-* Storing operators::
-* Arithmetic operators::
-* Address transfer operators::
-* Comparison operators::
-* Jump operators::
-* Input-output operators::
-* Conversion operators::
-* Shift operators::
-* Miscellaneous operators::
-* Execution times::
-
-MIXAL
-
-* Basic structure:: Writing basic MIXAL programs.
-* MIXAL directives:: Assembler directives.
-* Expressions:: Evaluation of expressions.
-* W-expressions:: Evaluation of w-expressions.
-* Local symbols:: Special symbol table entries.
-* Literal constants:: Specifying an immediate operand.
-
-Getting started
-
-* Writing a source file:: A sample MIXAL source file.
-* Compiling:: Using @code{mixasm} to compile source
- files into binary format.
-* Running the program:: Running and debugging your programs.
-* Using mixguile:: Using the Scheme interpreter to run and
- debug your programs.
-* Using Scheme in mixvm and gmixvm::
-
-Running the program
-
-* Non-interactive mode:: Running your programs non-interactively.
-* Interactive mode:: Running programs interactively.
-* Debugging:: Commands for debugging your programs.
-
-Using @code{mixguile}
-
-* The mixguile shell:: Using the Scheme MIX virtual machine.
-* Additional functions:: Scheme functions accessing the VM.
-* Defining new functions:: Defining your own Scheme functions.
-* Hook functions:: Using command and break hook functions.
-* Scheme scripts::
-
-Hook functions
-
-* Command hooks::
-* Break hooks::
-
-@code{mixasm}, the MIXAL assembler
-
-* Invoking @code{mixasm}:: @code{mixasm} options
-
-@code{mixvm}, the MIX computer simulator
-
-* Invocation:: Options when invoking @code{mixvm}.
-* Commands:: Commands available in interactive mode.
-* Devices:: MIX block devices implementation.
-
-Interactive commands
-
-* File commands:: Loading and executing programs.
-* Debug commands:: Debugging programs.
-* State commands:: Inspecting the virtual machine state.
-* Configuration commands:: Storing mixvm settings.
-* Scheme commands::
-
-@code{gmixvm}, the GTK virtual machine
-
-* Invoking @code{gmixvm}:: Invoking the GTK+ interface.
-* MIXVM console:: Using @code{mixvm} commands.
-* MIX virtual machine:: The MIX virtual machine window.
-* MIXAL source view:: Viewing the MIXAL source code.
-* MIX devices view:: Device output.
-* Menu and status bars:: Available menu commands.
-
-@code{mixguile}, the Scheme virtual machine
-
-* Invoking mixguile:: Command line options.
-* Scheme functions reference:: Scheme functions accessing the VM.
-
-Scheme functions reference
-
-* mixvm wrappers:: Functions invoking mixvm commands.
-* Hooks:: Adding hooks to mixvm commands.
-* Additional VM functions:: Functions accessing the MIX virtual machine.
-
-Copying
-
-* GNU General Public License::
-* GNU Free Documentation License::
-
-@end detailmenu
@end menu
@include mdk_intro.texi
@@ -248,6 +128,7 @@ Copying
@include mdk_install.texi
@include mdk_tut.texi
@include mdk_gstart.texi
+@include mdk_mixal-mode.texi
@include mdk_emixvm.texi
@include mdk_mixasm.texi
@include mdk_mixvm.texi
@@ -262,4 +143,4 @@ Copying
@contents
@bye
-$Id: mdk.texi,v 1.18 2002/04/08 00:26:38 jao Exp $
+$Id: mdk.texi,v 1.19 2003/06/02 23:20:38 jao Exp $
diff --git a/doc/mdk_ack.texi b/doc/mdk_ack.texi
index 532bd02..4da0f4a 100644
--- a/doc/mdk_ack.texi
+++ b/doc/mdk_ack.texi
@@ -1,16 +1,16 @@
@c -*-texinfo-*-
@c This is part of the GNU MDK Reference Manual.
-@c Copyright (C) 2000, 2001, 2002
+@c Copyright (C) 2000, 2001, 2002, 2003
@c Free Software Foundation, Inc.
@c See the file mdk.texi for copying conditions.
-@c $Id: mdk_ack.texi,v 1.4 2002/04/08 00:26:38 jao Exp $
+@c $Id: mdk_ack.texi,v 1.5 2003/06/02 23:20:38 jao Exp $
@node Acknowledgments, Installing MDK, Introduction, Top
@comment node-name, next, previous, up
@unnumbered Acknowledgements
-Many people have further contributed to @sc{mdk} by reporting problems,
+Many people have further contributed to @sc{mdk} by reporting problems,
suggesting various improvements, or submitting actual code. Here is
a list of these people. Help me keep it complete and exempt of errors.
@@ -24,15 +24,15 @@ release, and useful discussions as well. Philip has also contributed
with the Emacs port of @code{mixvm} and influenced the @code{gmixvm} GUI
design with insightful comments and prototypes.
+@item Pieter E J Pareit (@email{pieter.pareit@@skynet.be})
+is the author of the Emacs MIXAL mode, and has also contributed many
+bug fixes.
+
@item Agustin Navarro (@email{anp@@cantv.net})
tested the installation on Mandrake and RedHat and helped debugging the
package configuration. He created and maintains the @sc{mdk} RedHat and
Mandrake packages.
-@item Vasilij Ozmetelenko (@email{vasimba@@mail.ru})
-pointed out various bugs and provided helpful suggestions for improving
-mixvm.
-
@item Francesc Xavier Noria (@email{fxn@@retemail.es})
kindly and thoroughly reviewed the @sc{mdk} documentation, providing
insightful advice.
@@ -44,6 +44,16 @@ it.
@item Adrian Bunk (@email{bunk@@fs.tum.de})
created and maintained the @sc{mdk} Debian packages.
+@item Baruch Even (@email{baruch@@debian.org})
+is the current maintainer of the Debian official packages.
+
+@item Nelson H. F. Beebe (@email{beebe@@math.utah.edu})
+has tested @sc{mdk} in a lot of Unix platforms, suggesting portability
+enhancements to the source code.
+
+@item Ronald Cole (@email{ronald@@forte-intl.com})
+created RPM packages for version 1.0.
+
@item Christoph von Nathusius (@email{nathusiu@@gmx.net})
tested @sc{mdk} on Windows/Cygwin and reported a bug on pmem.
diff --git a/doc/mdk_bugs.texi b/doc/mdk_bugs.texi
index abf9f89..4b8ee1c 100644
--- a/doc/mdk_bugs.texi
+++ b/doc/mdk_bugs.texi
@@ -1,10 +1,10 @@
@c -*-texinfo-*-
@c This is part of the GNU MDK Reference Manual.
-@c Copyright (C) 2000, 2001
+@c Copyright (C) 2000, 2001, 2003
@c Free Software Foundation, Inc.
@c See the file mdk.texi for copying conditions.
-@c $Id: mdk_bugs.texi,v 1.4 2001/09/18 22:53:18 jao Exp $
+@c $Id: mdk_bugs.texi,v 1.5 2003/06/02 23:20:38 jao Exp $
@node Problems, Copying, mixguile, Top
@chapter Reporting Bugs
diff --git a/doc/mdk_copying.texi b/doc/mdk_copying.texi
index bbcd225..1bfca8e 100644
--- a/doc/mdk_copying.texi
+++ b/doc/mdk_copying.texi
@@ -2,8 +2,8 @@
@appendix Copying
@menu
-* GNU General Public License::
-* GNU Free Documentation License::
+* GNU General Public License::
+* GNU Free Documentation License::
@end menu
GNU MDK is distributed under the GNU General Public License (GPL) and
@@ -18,7 +18,7 @@ this manual under the GNU Free Documentation License (GFDL).
@center Version 2, June 1991
@display
-Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
+Copyright @copyright{} 1989, 1991, 2003 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
@@ -377,7 +377,7 @@ when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19@var{yy} @var{name of author}
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
type `show w'. This is free software, and you are welcome
-to redistribute it under certain conditions; type `show c'
+to redistribute it under certain conditions; type `show c'
for details.
@end smallexample
@@ -395,7 +395,7 @@ necessary. Here is a sample; alter the names:
@group
Yoyodyne, Inc., hereby disclaims all copyright
interest in the program `Gnomovision'
-(which makes passes at compilers) written
+(which makes passes at compilers) written
by James Hacker.
@var{signature of Ty Coon}, 1 April 1989
diff --git a/doc/mdk_emixvm.texi b/doc/mdk_emixvm.texi
index 70e2ae5..4dd1cd5 100644
--- a/doc/mdk_emixvm.texi
+++ b/doc/mdk_emixvm.texi
@@ -1,12 +1,12 @@
@c -*-texinfo-*-
@c This is part of the GNU MDK Reference Manual.
-@c Copyright (C) 2000, 2001
+@c Copyright (C) 2000, 2001, 2003
@c Free Software Foundation, Inc.
@c See the file mdk.texi for copying conditions.
-@c $Id: mdk_emixvm.texi,v 1.4 2001/09/18 22:53:18 jao Exp $
+@c $Id: mdk_emixvm.texi,v 1.5 2003/06/02 23:20:38 jao Exp $
-@node mixvm.el, mixasm, Getting started, Top
+@node mixvm.el, mixasm, mixal-mode.el, Top
@comment node-name, next, previous, up
@chapter mixvm.el
diff --git a/doc/mdk_findex.texi b/doc/mdk_findex.texi
index 64ac31b..dffb6a3 100644
--- a/doc/mdk_findex.texi
+++ b/doc/mdk_findex.texi
@@ -1,10 +1,10 @@
@c -*-texinfo-*-
@c This is part of the GNU MDK Reference Manual.
-@c Copyright (C) 2000, 2001
+@c Copyright (C) 2000, 2001, 2003
@c Free Software Foundation, Inc.
@c See the file mdk.texi for copying conditions.
-@c $Id: mdk_findex.texi,v 1.1 2001/09/13 00:13:39 jao Exp $
+@c $Id: mdk_findex.texi,v 1.2 2003/06/02 23:20:38 jao Exp $
@node Instructions and commands, , Concept Index, Top
@unnumbered Instructions and commands
diff --git a/doc/mdk_gmixvm.texi b/doc/mdk_gmixvm.texi
index 32045cb..0966679 100644
--- a/doc/mdk_gmixvm.texi
+++ b/doc/mdk_gmixvm.texi
@@ -1,10 +1,10 @@
@c -*-texinfo-*-
@c This is part of the GNU MDK Reference Manual.
-@c Copyright (C) 2000, 2001
+@c Copyright (C) 2000, 2001, 2003
@c Free Software Foundation, Inc.
@c See the file mdk.texi for copying conditions.
-@c $Id: mdk_gmixvm.texi,v 1.15 2001/09/29 01:55:05 jao Exp $
+@c $Id: mdk_gmixvm.texi,v 1.16 2003/06/02 23:20:38 jao Exp $
@node gmixvm, mixguile, mixvm, Top
@comment node-name, next, previous, up
@@ -115,7 +115,7 @@ directory contains the program settings, the device files used by your
MIX programs (@pxref{Devices}), and a command history file.
The following sections describe the above mentioned components of
-@code{gmixvm}.
+@code{gmixvm}.
@node MIXVM console, MIX virtual machine, Invoking @code{gmixvm}, gmixvm
@comment node-name, next, previous, up
@@ -147,8 +147,8 @@ will produce the following output on the echo area:
@example
Completions:
-pc psym preg pflags pall
-pmem
+pc psym preg pflags pall
+pmem
@end example
@noindent
which lists all the available commands starting with @code{p}. In
@@ -156,7 +156,7 @@ addition, the command prompt maintains a history of typed commands,
which can be recovered using the arrow up and down keys. As mentioned
above, a file containing previous sessions' commands is stored in the
configuration directory @file{~/.mdk}, and reloaded every time you start
-@code{gmixvm}.
+@code{gmixvm}.
You can change the font used to display the issued commands and the
messages in the echo area using the @w{Settings->Change font->Command
@@ -209,7 +209,7 @@ using the @w{Settings->Change font->MIX} menu command.
@section MIXAL source view
The second notebook's page, dubbed MIXAL, shows you the MIXAL source of
-the currently loaded MIX file.
+the currently loaded MIX file.
@ifnottex
@image{img/ss_mixal, 400pt}
@@ -226,7 +226,7 @@ which has an associated memory address.
The colors used to mark the location pointer line and the breakpoints
can be customized with the @w{Settings->Colors...} menu command. When you
click on this menu item, a dialog showing the current line colors will
-appear.
+appear.
@ifhtml
The following figure shows the change color dialog.
@@ -249,7 +249,7 @@ using the @w{Settings->Change font->MIXAL} menu command.
The last notebook page, dubbed Devices, shows you the output/input
to/from MIX block devices (the console, line printer, paper tape,
disks, card and tapes @pxref{Devices}) produced by the running
-program.
+program.
@ifhtml
@@ -330,7 +330,7 @@ Change the mode between one and split windows.
@deffn Debug Run
Runs the currently loaded MIX program, up to the next breakpoint. It is
equivalent to the @code{mixvm}'s @code{run} command (@pxref{Debug
-commands}).
+commands}).
@end deffn
@deffn Debug Next
@@ -404,7 +404,7 @@ if you want to edit programs using @code{vi} running in an @code{xterm},
you must enter the command template @code{@w{xterm -e vi %s}} in the
corresponding dialog entry. These settings can also be changed using the
@code{mixvm} commands @code{sedit} and @code{sasm} (@pxref{Configuration
-commands}).
+commands}).
@end deffn
diff --git a/doc/mdk_gstart.texi b/doc/mdk_gstart.texi
index f04e5c1..d315279 100644
--- a/doc/mdk_gstart.texi
+++ b/doc/mdk_gstart.texi
@@ -1,19 +1,19 @@
@c -*-texinfo-*-
@c This is part of the GNU MDK Reference Manual.
-@c Copyright (C) 2000, 2001, 2002
+@c Copyright (C) 2000, 2001, 2002, 2003
@c Free Software Foundation, Inc.
@c See the file mdk.texi for copying conditions.
-@c $Id: mdk_gstart.texi,v 1.13 2002/04/08 00:26:38 jao Exp $
+@c $Id: mdk_gstart.texi,v 1.14 2003/06/02 23:20:38 jao Exp $
-@node Getting started, mixvm.el, MIX and MIXAL tutorial, Top
+@node Getting started, mixal-mode.el, MIX and MIXAL tutorial, Top
@chapter Getting started
@cindex tutorial
In this chapter, you will find a sample code-compile-run-debug session
using the @sc{mdk} utilities. Familiarity with the MIX mythical computer
and its assembly language MIXAL (as described in Knuth's TAOCP) is
-assumed; for a compact reminder, see @ref{MIX and MIXAL tutorial}.
+assumed; for a compact reminder, see @ref{MIX and MIXAL tutorial}.
@menu
* Writing a source file:: A sample MIXAL source file.
@@ -22,7 +22,7 @@ assumed; for a compact reminder, see @ref{MIX and MIXAL tutorial}.
* Running the program:: Running and debugging your programs.
* Using mixguile:: Using the Scheme interpreter to run and
debug your programs.
-* Using Scheme in mixvm and gmixvm::
+* Using Scheme in mixvm and gmixvm::
@end menu
@node Writing a source file, Compiling, Getting started, Getting started
@@ -50,7 +50,7 @@ MSG ALF "MIXAL" (9)
ALF "LD " (12)
END START end of the program (13)
@end example
-
+
@noindent MIXAL source files should have the extension @file{.mixal}
when used with the @sc{mdk} utilities. As you can see in the above
sample, each line in a MIXAL file can be divided into four fields
@@ -86,14 +86,14 @@ an optional free text comment.
@noindent Lines 9-12 of the @file{hello.mixal} file above also show the
second (and last) difference between Knuth's MIXAL definition and ours:
the operand of the @code{ALF} pseudoinstruction (a word of five
-characters) must be quoted with using ""@footnote{In Knuth's definition,
+characters) must be quoted using ""@footnote{In Knuth's definition,
the operand always starts at a fixed column number, and the use of
quotation is therefore unnecessary. As @code{mixasm} releases this
requirement, marking the beginning and end of the @code{ALF} operand
disambiguates the parser's recognition of this operand when it includes
blanks. Note that double-quotes (") are not part of the MIX character
set, and, therefore, no escape characters are needed within
-@code{ALF}'s operands.}.
+@code{ALF}'s operands.}.
The workings of this sample program should be straightforward if you are
familiar with MIXAL. See TAOCP vol. 1 for a thorough definition or
@@ -200,7 +200,7 @@ and written its output there@footnote{The device files are stored, by
default, in a directory called @file{.mdk}, which is created in your
home directory the first time @code{mixvm} is run. You can change this
default directory using the command @code{devdir} when running
-@code{mixvm} in interactive mode (@pxref{Configuration commands})}.
+@code{mixvm} in interactive mode (@pxref{Configuration commands})}.
The virtual machine can also report the execution time of the program,
according to the (virtual) time spent in each of the binary instructions
@@ -237,9 +237,9 @@ MIXAL HELLO WORLD
rA: + 00 00 00 00 00 (0000000000)
rX: + 00 00 00 00 00 (0000000000)
rJ: + 00 00 (0000)
-rI1: + 00 00 (0000) rI2: + 00 00 (0000)
-rI3: + 00 00 (0000) rI4: + 00 00 (0000)
-rI5: + 00 00 (0000) rI6: + 00 00 (0000)
+rI1: + 00 00 (0000) rI2: + 00 00 (0000)
+rI3: + 00 00 (0000) rI4: + 00 00 (0000)
+rI5: + 00 00 (0000) rI6: + 00 00 (0000)
Overflow: F
Cmp: E
@end example
@@ -314,10 +314,10 @@ have guessed, the @code{run} command:
@example
MIX > run
Running ...
-MIXAL HELLO WORLD
+MIXAL HELLO WORLD
... done
Elapsed time: 11 /Total program time: 11 (Total uptime: 11)
-MIX >
+MIX >
@end example
@noindent Note that now the timing statistics are richer. You obtain the
@@ -385,7 +385,7 @@ and @code{help COMMAND} for help on a specific command, e.g.
@example
MIX > help run
run Run loaded or given MIX code file. Usage: run [FILENAME]
-MIX >
+MIX >
@end example
@noindent
@@ -421,7 +421,7 @@ Current address: 3002
MIX > next
MIXAL HELLO WORLD
Elapsed time: 1 /Total program time: 1 (Total uptime: 12)
-MIX >
+MIX >
MIX > run
Running ...
... done
@@ -446,7 +446,7 @@ MIX > sbpa 3001
Breakpoint set at address 3001
MIX > run
Running ...
-MIXAL HELLO WORLD
+MIXAL HELLO WORLD
... stopped: breakpoint at line 8 (address 3001)
Elapsed time: 1 /Total program time: 1 (Total uptime: 23)
MIX > run
@@ -468,7 +468,7 @@ source code lines using the command @code{sbp LINE_NO}, e.g.
@example
MIX > sbp 4
Breakpoint set at line 7
-MIX >
+MIX >
@end example
@noindent
@@ -496,7 +496,7 @@ MIX > psym
START: 3000
TERM: 19
MSG: 3002
-MIX >
+MIX >
@end example
Other useful commands for debugging are @code{strace} (which turns on
@@ -519,7 +519,7 @@ using this MIX emulator.
* Additional functions:: Scheme functions accessing the VM.
* Defining new functions:: Defining your own Scheme functions.
* Hook functions:: Using command and break hook functions.
-* Scheme scripts::
+* Scheme scripts::
@end menu
@node The mixguile shell, Additional functions, Using mixguile, Using mixguile
@@ -552,7 +552,7 @@ simply enter
@example
guile> (mix-load "hello")
Program loaded. Start address: 3000
-guile>
+guile>
@end example
@noindent
and run it using @code{mix-run}:
@@ -560,10 +560,10 @@ and run it using @code{mix-run}:
@example
guile> (mix-run)
Running ...
-MIXAL HELLO WORLD
+MIXAL HELLO WORLD
... done
Elapsed time: 11 /Total program time: 11 (Total uptime: 11)
-guile>
+guile>
@end example
@noindent
In the same way, you can execute it step by step using the Scheme
@@ -572,7 +572,7 @@ function @code{mix-next} or set a breakpoint:
@example
guile> (mix-sbp 4)
Breakpoint set at line 5
-guile>
+guile>
@end example
@noindent
or, if you one to peek at a register contents:
@@ -580,7 +580,7 @@ or, if you one to peek at a register contents:
@example
guile> (mix-preg 'A)
rA: + 00 00 00 00 00 (0000000000)
-guile>
+guile>
@end example
You get the idea: you have at your disposal all the @code{mixvm} and
@@ -607,7 +607,7 @@ value of a register you can use @code{mix-reg}:
@example
guile> (mix-reg 'I2)
0
-guile>
+guile>
@end example
@noindent
Note that, unlike @code{(mix-preg 'I2)}, the expression @code{(mix-reg
@@ -618,9 +618,9 @@ produce any side-effect:
guile> (number? (mix-reg 'I2))
#t
guile> (number? (mix-preg 'I2))
-rI2: + 00 00 (0000)
+rI2: + 00 00 (0000)
#f
-guile>
+guile>
@end example
In a similar fashion, you can access the memory contents using
@@ -631,7 +631,7 @@ guile> (mix-cell 3000)
786957541
guile> (mix-loc)
3002
-guile>
+guile>
@end example
Other functions returning the contents of the virtual machine components
@@ -659,7 +659,7 @@ guile> (define my-load-and-run @key{RET}
(mix-pprog) @key{RET}
(mix-run) @key{RET}
(mix-preg))) @key{RET}
-guile>
+guile>
@end example
@noindent
and use it to run your programs:
@@ -669,16 +669,16 @@ guile> (my-load-and-run "hello")
Program loaded. Start address: 3000
File loaded: hello.mix
Running ...
-MIXAL HELLO WORLD
+MIXAL HELLO WORLD
... done
Elapsed time: 11 /Total program time: 11 (Total uptime: 33)
rA: + 00 00 00 00 00 (0000000000)
rX: + 00 00 00 00 00 (0000000000)
rJ: + 00 00 (0000)
-rI1: + 00 00 (0000) rI2: + 00 00 (0000)
-rI3: + 00 00 (0000) rI4: + 00 00 (0000)
-rI5: + 00 00 (0000) rI6: + 00 00 (0000)
-guile>
+rI1: + 00 00 (0000) rI2: + 00 00 (0000)
+rI3: + 00 00 (0000) rI4: + 00 00 (0000)
+rI5: + 00 00 (0000) rI6: + 00 00 (0000)
+guile>
@end example
@@ -702,7 +702,7 @@ guile>
As a third example, the following function loads a program, runs it and
prints the contents of the memory between the program's start and end
-addresses:
+addresses:
@example
guile> (define my-run
@@ -714,13 +714,13 @@ guile> (define my-run
guile> (my-run "hello")
Program loaded. Start address: 3000
Running ...
-MIXAL HELLO WORLD
+MIXAL HELLO WORLD
... done
Elapsed time: 11 /Total program time: 11 (Total uptime: 11)
3000: + 46 58 00 19 37 (0786957541)
3001: + 00 00 00 02 05 (0000000133)
3002: + 14 09 27 01 13 (0237350989)
-guile>
+guile>
@end example
@@ -755,8 +755,8 @@ interruption events. The following sections give you a tutorial on using
hook functions within @code{mixguile}.
@menu
-* Command hooks::
-* Break hooks::
+* Command hooks::
+* Break hooks::
@end menu
@node Command hooks, Break hooks, Hook functions, Hook functions
@@ -814,13 +814,13 @@ hooks, we would write:
@noindent
Assuming we have put the above expressions in @code{mixguile}'s
initialisation file, we would obtain the following results when
-evaluating @code{mix-next}:
+evaluating @code{mix-next}:
@example
guile> (mix-next)
-MIXAL HELLO WORLD
-Stopped at line 6: HLT
-guile>
+MIXAL HELLO WORLD
+Stopped at line 6: HLT
+guile>
@end example
As a second, more elaborated, example, let's define hooks which print
@@ -906,10 +906,10 @@ executing @code{mix-next} will yield the following result:
guile> (mix-next 5)
next invoked with arguments (5)
slog invoked with arguments (off)
-MIXAL HELLO WORLD
+MIXAL HELLO WORLD
Stopped at line 7: MSG ALF "MIXAL"
slog invoked with arguments (on)
-guile>
+guile>
@end example
Adventurous readers may see the above global hook as the beginning of a
@@ -995,9 +995,9 @@ Elapsed time: 190908 /Total program time: 190908 (Total uptime: 190908)
rA: + 30 30 30 30 30 (0511305630)
rX: + 30 30 32 32 39 (0511313959)
rJ: + 47 18 (3026)
-rI1: + 00 00 (0000) rI2: + 55 51 (3571)
-rI3: + 00 19 (0019) rI4: + 31 51 (2035)
-rI5: + 00 00 (0000) rI6: + 00 00 (0000)
+rI1: + 00 00 (0000) rI2: + 55 51 (3571)
+rI3: + 00 19 (0019) rI4: + 31 51 (2035)
+rI5: + 00 00 (0000) rI6: + 00 00 (0000)
Overflow: F
Cmp: L
$
@@ -1032,7 +1032,7 @@ Program loaded. Start address: 3000
MIX > (define a (mix-loc))
MIX > run
Running ...
-MIXAL HELLO WORLD
+MIXAL HELLO WORLD
... done
Elapsed time: 11 /Total program time: 11 (Total uptime: 11)
MIX > (mix-pmem a)
diff --git a/doc/mdk_index.texi b/doc/mdk_index.texi
index 5aaecc4..04e545f 100644
--- a/doc/mdk_index.texi
+++ b/doc/mdk_index.texi
@@ -1,10 +1,10 @@
@c -*-texinfo-*-
@c This is part of the GNU MDK Reference Manual.
-@c Copyright (C) 2000, 2001
+@c Copyright (C) 2000, 2001, 2003
@c Free Software Foundation, Inc.
@c See the file mdk.texi for copying conditions.
-@c $Id: mdk_index.texi,v 1.5 2001/09/16 22:17:33 jao Exp $
+@c $Id: mdk_index.texi,v 1.6 2003/06/02 23:20:38 jao Exp $
@node Concept Index, Instructions and commands, Copying, Top
@unnumbered Concept Index
diff --git a/doc/mdk_intro.texi b/doc/mdk_intro.texi
index c86ca18..f7b5a8e 100644
--- a/doc/mdk_intro.texi
+++ b/doc/mdk_intro.texi
@@ -1,10 +1,10 @@
@c -*-texinfo-*-
@c This is part of the GNU MDK Reference Manual.
-@c Copyright (C) 2000, 2001
+@c Copyright (C) 2000, 2001, 2003
@c Free Software Foundation, Inc.
@c See the file mdk.texi for copying conditions.
-@c $Id: mdk_intro.texi,v 1.5 2001/09/16 22:17:33 jao Exp $
+@c $Id: mdk_intro.texi,v 1.6 2003/06/02 23:20:38 jao Exp $
@node Introduction, Acknowledgments, Top, Top
@comment node-name, next, previous, up
@@ -14,7 +14,7 @@
In his book series @cite{The Art of Computer Programming} (published by
Addison Wesley), D. Knuth uses an imaginary computer, the MIX, and its
associated machine-code and assembly languages to ilustrate the
-concepts and algorithms as they are presented.
+concepts and algorithms as they are presented.
The MIX's architecture is a simplified version of those found in real
CISC CPUs, and the MIX assembly language (MIXAL) provides a set of
@@ -48,7 +48,7 @@ commands to manipulate it using Scheme.
@item mixvm.el
This elisp program allows running @code{mixvm} inside an Emacs GUD
buffer, allowing concurrent edition and debugging of MIXAL programs.
-@end table
+@end table
@code{mixvm} and @code{gmixvm} implement a simulator of the MIX
computer, giving you a virtual machine for executing and debugging MIX
diff --git a/doc/mdk_mixasm.texi b/doc/mdk_mixasm.texi
index 71e6805..06d8736 100644
--- a/doc/mdk_mixasm.texi
+++ b/doc/mdk_mixasm.texi
@@ -1,10 +1,10 @@
@c -*-texinfo-*-
@c This is part of the GNU MDK Reference Manual.
-@c Copyright (C) 2000, 2001
+@c Copyright (C) 2000, 2001, 2003
@c Free Software Foundation, Inc.
@c See the file mdk.texi for copying conditions.
-@c $Id: mdk_mixasm.texi,v 1.5 2001/09/26 23:15:55 jao Exp $
+@c $Id: mdk_mixasm.texi,v 1.6 2003/06/02 23:20:38 jao Exp $
@node mixasm, mixvm, mixvm.el, Top
@comment node-name, next, previous, up
diff --git a/doc/mdk_mixvm.texi b/doc/mdk_mixvm.texi
index 7992567..e52790e 100644
--- a/doc/mdk_mixvm.texi
+++ b/doc/mdk_mixvm.texi
@@ -1,10 +1,10 @@
@c -*-texinfo-*-
@c This is part of the GNU MDK Reference Manual.
-@c Copyright (C) 2000, 2001, 2002
+@c Copyright (C) 2000, 2001, 2002, 2003
@c Free Software Foundation, Inc.
@c See the file mdk.texi for copying conditions.
-@c $Id: mdk_mixvm.texi,v 1.11 2002/04/08 00:26:37 jao Exp $
+@c $Id: mdk_mixvm.texi,v 1.12 2003/06/02 23:20:38 jao Exp $
@node mixvm, gmixvm, mixasm, Top
@comment node-name, next, previous, up
@@ -91,7 +91,7 @@ MIX >
and waiting for your commands (@pxref{Commands}). If the
optional @var{FILE} argument is given, the file @file{FILE.mix} will be
loaded into the virtual machine memory before entering the interactive
-mode.
+mode.
The first time @code{mixvm} is invoked, a directory named @file{.mdk} is
created in your home directory. It contains the @code{mixvm}
@@ -105,12 +105,12 @@ the @code{-q} command line option to skip this file loading:
@defopt -q
@defoptx --noinit
Do not load the Guile initialisation file @code{~/.mdk/mixguile.scm} at
-startup.
+startup.
@end defopt
@node Commands, Devices, Invocation, mixvm
@comment node-name, next, previous, up
-@section Interactive commands
+@section Interactive commands
You can enter the interactive mode of the MIX virtual machine by simply
invoking @code{mixvm} without arguments. You will then presented a shell
@@ -151,7 +151,7 @@ all available commands.
* Debug commands:: Debugging programs.
* State commands:: Inspecting the virtual machine state.
* Configuration commands:: Changing and storing mixvm settings.
-* Scheme commands::
+* Scheme commands::
@end menu
@node File commands, Debug commands, Commands, Commands
@@ -213,7 +213,7 @@ The source file @var{file.mixal} is compiled (with debug information
enabled) using @code{mixasm}. If invoked without argument, the source
file for the currently loaded MIX file is recompiled. The compilation
command can be set using the @code{sasm} command (@pxref{Configuration
-commands}).
+commands}).
@end deffn
@deffn {file command} pprog
@@ -223,7 +223,7 @@ Print the path of the currently loaded MIX program and its source file:
@example
MIX > load ../samples/primes
Program loaded. Start address: 3000
-MIX > pprog
+MIX > pprog
../samples/primes.mix
MIX > psrc
/home/jao/projects/mdk/gnu/samples/primes.mixal
@@ -285,7 +285,7 @@ trying to set a breakpoint at line 5, will produce the following result:
@example
MIX > sbp 5
Breakpoint set at line 7
-MIX >
+MIX >
@end example
@noindent
@@ -312,7 +312,7 @@ given memory address.
@deffn {debug command} sbpr A | X | J | Ii
@deffnx {debug command} cbpr A | X | J | Ii
Sets a conditional breakpoint on the specified register change. For
-instance,
+instance,
@example
sbpr I1
@@ -340,13 +340,13 @@ contents or of the memory cell number 1000 changes. A previously set
breakpoint is cleared using the @code{cbpm} command.
@end deffn
-@deffn {debug command} sbpo
-@deffnx {debug command} cbpo
+@deffn {debug command} sbpo
+@deffnx {debug command} cbpo
Sets/clears a conditional breakpoint on overflow toggle change.
@end deffn
-@deffn {debug command} sbpc
-@deffnx {debug command} cbpc
+@deffn {debug command} sbpc
+@deffnx {debug command} cbpc
Sets/clears a conditional breakpoint on comparison flag change.
@end deffn
@@ -392,14 +392,14 @@ command. A typical tracing session could be like this:
MIX > strace on
MIX > next
3000: [OUT 3002,0(2:3)] START OUT MSG(TERM)
-MIXAL HELLO WORLD
+MIXAL HELLO WORLD
Elapsed time: 1 /Total program time: 1 (Total uptime: 1)
MIX > next
3001: [HLT 0,0] HLT
End of program reached at address 3002
Elapsed time: 10 /Total program time: 11 (Total uptime: 11)
MIX > strace off
-MIX >
+MIX >
@end example
@noindent
The executed instruction, as it was translated, is shown between square
@@ -418,7 +418,7 @@ Program loaded. Start address: 3000
MIX > pline
Line 5: START OUT MSG(TERM)
MIX > pline 6
-Line 6: HLT
+Line 6: HLT
MIX >
@end example
@end deffn
@@ -445,7 +445,7 @@ you could get the following traces:
MIX > load bt
Program loaded. Start address: 0
MIX > next
-MIX > pbt
+MIX > pbt
#0 BEG in bt.mixal:2
MIX > next
MIX > pbt
@@ -505,7 +505,7 @@ MIX > psym S
+ 00 00 18 19 56 (0000075000)
MIX > weval S(3:4)
+ 00 00 19 56 00 (0000081408)
-MIX >
+MIX >
@end example
@end deffn
@@ -517,14 +517,14 @@ Computes the decimal value of the given word. @var{WORD} must be
expressed as a sign (+/-) followed by five space-delimited, two-digit
decimal values representing the five bytes composing the word. The
reverse operation (showing the word representation of a decimal value)
-can be accomplished with @code{weval}. For instance:
+can be accomplished with @code{weval}. For instance:
@example
MIX > w2d - 01 00 00 02 02
-16777346
MIX > weval -16777346
- 01 00 00 02 02 (0016777346)
-MIX >
+MIX >
@end example
@end deffn
@@ -571,10 +571,10 @@ MIX > preg
rA: - 00 00 00 00 35 (0000000035)
rX: + 00 00 00 15 40 (0000001000)
rJ: + 00 00 (0000)
-rI1: + 00 00 (0000) rI2: + 00 00 (0000)
-rI3: + 00 00 (0000) rI4: + 00 00 (0000)
-rI5: + 00 00 (0000) rI6: + 00 00 (0000)
-MIX >
+rI1: + 00 00 (0000) rI2: + 00 00 (0000)
+rI3: + 00 00 (0000) rI4: + 00 00 (0000)
+rI5: + 00 00 (0000) rI6: + 00 00 (0000)
+MIX >
@end example
As you can see in the above sample, the contents is printed as the sign
@@ -592,11 +592,11 @@ MAXIMU_VALUE} is stored, e.g.
@example
MIX > sreg I1 1000
MIX > preg I1
-rI1: + 15 40 (1000)
+rI1: + 15 40 (1000)
MIX > sreg I1 1000000
MIX > preg I1
-rI1: + 09 00 (0576)
-MIX >
+rI1: + 09 00 (0576)
+MIX >
@end example
@end deffn
@@ -612,7 +612,7 @@ toggle of the virtual machine, e.g.
MIX > pflags
Overflow: F
Cmp: E
-MIX >
+MIX >
@end example
@noindent
@@ -663,7 +663,7 @@ commands prefixed with @code{p} (@code{preg}, @code{pmem} and the like).
@end deffn
@deffn {config command} stime on|off
-@deffnx {config command} ptime
+@deffnx {config command} ptime
The @code{stime} command (un)sets the printing of timing statistics, and
@code{ptime} prints their current value:
@@ -749,7 +749,7 @@ command:
@deffn {scheme command} scmf FILE_NAME
Loads the given Scheme file and evaluates it using the embedded Guile
-interpreter.
+interpreter.
@end deffn
@@ -772,7 +772,7 @@ your favourite editor). The device files are stored, by default, in the
directory @file{~/.mdk}; this location can be changed using the
@code{mixvm} command @code{devdir} (@pxref{Configuration commands}).
-@multitable {the device name} { xx-xx } {filename[x-x].dev} {bin i/o/char }
+@multitable {the device name} { xx-xx } {filename[x-x].dev} {bin i/o/char }
@item @emph{Device} @tab @emph{No.} @tab @emph{filename} @tab @emph{type}
@item Tape @tab 0-7 @tab @file{tape[0-7].dev} @tab bin i/o
@item Disks @tab 8-15 @tab @file{disk[0-7].dev} @tab bin i/o