From f6f760db6440c5f672abafa2dfcbd908c9d9c823 Mon Sep 17 00:00:00 2001 From: Jose Antonio Ortega Ruiz Date: Mon, 2 Jun 2003 23:20:38 +0000 Subject: miscellaneous corrections --- doc/Makefile.am | 13 ++--- doc/mdk.texi | 143 +++++---------------------------------------------- doc/mdk_ack.texi | 24 ++++++--- doc/mdk_bugs.texi | 4 +- doc/mdk_copying.texi | 10 ++-- doc/mdk_emixvm.texi | 6 +-- doc/mdk_findex.texi | 4 +- doc/mdk_gmixvm.texi | 22 ++++---- doc/mdk_gstart.texi | 100 +++++++++++++++++------------------ doc/mdk_index.texi | 4 +- doc/mdk_intro.texi | 8 +-- doc/mdk_mixasm.texi | 4 +- doc/mdk_mixvm.texi | 64 +++++++++++------------ 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 -- cgit v1.2.3