diff options
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/Makefile.am | 13 | ||||
| -rw-r--r-- | doc/mdk.texi | 143 | ||||
| -rw-r--r-- | doc/mdk_ack.texi | 24 | ||||
| -rw-r--r-- | doc/mdk_bugs.texi | 4 | ||||
| -rw-r--r-- | doc/mdk_copying.texi | 10 | ||||
| -rw-r--r-- | doc/mdk_emixvm.texi | 6 | ||||
| -rw-r--r-- | doc/mdk_findex.texi | 4 | ||||
| -rw-r--r-- | doc/mdk_gmixvm.texi | 22 | ||||
| -rw-r--r-- | doc/mdk_gstart.texi | 100 | ||||
| -rw-r--r-- | doc/mdk_index.texi | 4 | ||||
| -rw-r--r-- | doc/mdk_intro.texi | 8 | ||||
| -rw-r--r-- | doc/mdk_mixasm.texi | 4 | ||||
| -rw-r--r-- | 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 | 
