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