1\input texinfo @c -*-texinfo-*- 2@c %**start of header 3@setfilename mdk.info 4@settitle GNU MIX Development Kit (mdk) 5@syncodeindex pg cp 6@finalout 7@setchapternewpage odd 8@c %**end of header 9 10@set UPDATED October, 2020 11@set EDITION 1.3.0 12@set VERSION 1.3.0 13@set JAO Jose Antonio Ortega Ruiz 14@set PHILIP Philip E. King 15@set PIETER Pieter E. J. Pareit 16@set MIKE Michael Scholz 17 18@copying 19This manual is for GNU MDK (version @value{VERSION}, @value{UPDATED}), 20a set of utilities for developing programs using Donald Knuth's MIX 21mythical computer and MIXAL, its assembly language. 22 23Copyright @copyright{} 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009, 2010, 2013, 2014, 2015, 2020 Free Software Foundation, Inc. 24 25@quotation 26Permission is granted to copy, distribute and/or modify this document 27under the terms of the GNU Free Documentation License, Version 1.2 or 28any later version published by the Free Software Foundation; with the 29Invariant Sections being ``GNU General Public License'', with the 30Front-Cover Texts being ``A GNU Manual,'' and with the Back-Cover Texts 31as in (a) below. A copy of the license is included in the section 32entitled ``GNU Free Documentation License''. 33 34(a) The FSF's Back-Cover Text is: ``You have the freedom to 35copy and modify this GNU manual. Buying copies from the FSF 36supports it in developing GNU and promoting software freedom.'' 37@end quotation 38@end copying 39 40@dircategory GNU programming tools 41@direntry 42* MDK: (mdk). The GNU MIX Development Kit. 43@end direntry 44 45 46@footnotestyle separate 47 48@titlepage 49@title GNU MDK 50@subtitle GNU MIX Development Kit 51@subtitle Edition @value{EDITION}, for GNU @sc{mdk} Version @value{VERSION} 52@subtitle @value{UPDATED} 53@author by @value{JAO} (@email{jao@@gnu.org}) 54@page 55@vskip 0pt plus 1filll 56@insertcopying 57@end titlepage 58 59@shortcontents 60@contents 61 62@ifnottex 63@node Top, Introduction, (dir), (dir) 64 65@insertcopying 66 67GNU MDK was written and designed by @value{JAO}. 68 69@value{PIETER} is the author of the Emacs @code{MIXAL} mode 70(@pxref{MIXAL mode}), and has also contributed many bug fixes. 71 72@value{PHILIP} has contributed to this package development with many 73helpful discussions, as well as actual code (@pxref{GUD integration}). 74 75@value{MIKE} is the author of the German translation of @sc{mdk}'s 76user interface. 77 78@end ifnottex 79 80@menu 81* Introduction:: 82* Acknowledgments:: 83* Installing MDK:: Installing GNU MDK from the source tarball. 84* MIX and MIXAL tutorial:: Learn the innards of MIX and MIXAL. 85* Getting started:: Basic usage of the @sc{mdk} tools. 86* Emacs tools:: Programming the MIX using Emacs. 87* mixasm:: Invoking the MIXAL assembler. 88* mixvm:: Invoking and using the MIX virtual machine. 89* gmixvm:: Invoking and using the GTK+ virtual machine. 90* mixguile:: Invoking and using the Scheme virtual machine. 91* Problems:: Reporting bugs. 92* Copying:: @sc{mdk} licensing terms. 93* Concept Index:: Index of concepts. 94* Instructions and commands:: Index of MIXAL instructions and MIXVM commands. 95 96 97 98@detailmenu 99 --- The Detailed Node Listing --- 100 101Installing @sc{mdk} 102 103* Download:: 104* Requirements:: 105* Basic installation:: 106* Emacs support:: 107* Special configure flags:: 108* Supported platforms:: 109 110MIX and MIXAL tutorial 111 112* The MIX computer:: Architecture and instruction set 113 of the MIX computer. 114* MIXAL:: The MIX assembly language. 115 116The MIX computer 117 118* MIX architecture:: 119* MIX instruction set:: 120 121MIX instruction set 122 123* Instruction structure:: 124* Loading operators:: 125* Storing operators:: 126* Arithmetic operators:: 127* Address transfer operators:: 128* Comparison operators:: 129* Jump operators:: 130* Input-output operators:: 131* Conversion operators:: 132* Shift operators:: 133* Miscellaneous operators:: 134* Execution times:: 135 136MIXAL 137 138* Basic structure:: Writing basic MIXAL programs. 139* MIXAL directives:: Assembler directives. 140* Expressions:: Evaluation of expressions. 141* W-expressions:: Evaluation of w-expressions. 142* Local symbols:: Special symbol table entries. 143* Literal constants:: Specifying an immediate operand. 144 145Getting started 146 147* Writing a source file:: A sample MIXAL source file. 148* Compiling:: Using @code{mixasm} to compile source 149 files into binary format. 150* Running the program:: Running and debugging your programs. 151* Using mixguile:: Using the Scheme interpreter to run and 152 debug your programs. 153* Using Scheme in mixvm and gmixvm:: 154 155Running the program 156 157* Non-interactive mode:: Running your programs non-interactively. 158* Interactive mode:: Running programs interactively. 159* Debugging:: Commands for debugging your programs. 160 161Using @code{mixguile} 162 163* The mixguile shell:: Using the Scheme MIX virtual machine. 164* Additional functions:: Scheme functions accessing the VM. 165* Defining new functions:: Defining your own Scheme functions. 166* Hook functions:: Using command and break hook functions. 167* Scheme scripts:: 168 169Hook functions 170 171* Command hooks:: 172* Break hooks:: 173 174Emacs tools 175 176* MIXAL mode:: Editing MIXAL files. 177* GUD integration:: Invoking @code{mixvm} within Emacs. 178 179MIXAL mode 180 181* Basics:: Editing code, font locking and indentation. 182* Help system:: Using the interactive help system. 183* Compiling and running:: Invoking compiler and/or virtual machine. 184 185@code{mixasm}, the MIXAL assembler 186 187* Invoking mixasm:: 188 189@code{mixvm}, the MIX computer simulator 190 191* Invocation:: 192* Commands:: Commands available in interactive mode. 193* Devices:: MIX block devices implementation. 194 195Interactive commands 196 197* File commands:: Loading and executing programs. 198* Debug commands:: Debugging programs. 199* State commands:: Inspecting the virtual machine state. 200* Configuration commands:: Changing and storing mixvm settings. 201* Scheme commands:: 202 203@code{gmixvm}, the GTK virtual machine 204 205* Invoking gmixvm:: 206* MIXVM console:: Using @code{mixvm} commands. 207* MIX virtual machine:: The MIX virtual machine window. 208* MIXAL source view:: Viewing the MIXAL source code. 209* MIX devices view:: Device output. 210* Menu and status bars:: Available menu commands. 211 212@code{mixguile}, the Scheme virtual machine 213 214* Invoking mixguile:: Command line options. 215* Scheme functions reference:: Scheme functions accessing the VM. 216 217Scheme functions reference 218 219* mixvm wrappers:: Functions invoking mixvm commands. 220* Hooks:: Adding hooks to mixvm commands. 221* Additional VM functions:: Functions accessing the MIX virtual machine. 222 223Copying 224 225* GNU General Public License:: 226* GNU Free Documentation License:: 227 228@end detailmenu 229@end menu 230 231@include mdk_intro.texi 232@include mdk_ack.texi 233@include mdk_install.texi 234@include mdk_tut.texi 235@include mdk_gstart.texi 236@include mdk_emacs.texi 237@include mdk_mixasm.texi 238@include mdk_mixvm.texi 239@include mdk_gmixvm.texi 240@include mdk_mixguile.texi 241@include mdk_bugs.texi 242@include mdk_copying.texi 243@include mdk_index.texi 244@include mdk_findex.texi 245 246@bye 247