2003-06-16 21:33:54 +00:00
|
|
|
;;; mixal-mode.el --- Major mode for the mix asm language.
|
|
|
|
|
2015-01-01 14:26:41 -08:00
|
|
|
;; Copyright (C) 2003-2015 Free Software Foundation, Inc.
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-11 21:22:14 +00:00
|
|
|
;; Author: Pieter E.J. Pareit <pieter.pareit@gmail.com>
|
|
|
|
;; Maintainer: Pieter E.J. Pareit <pieter.pareit@gmail.com>
|
2003-06-16 21:33:54 +00:00
|
|
|
;; Created: 09 Nov 2002
|
|
|
|
;; Version: 0.1
|
2010-03-14 23:15:02 +02:00
|
|
|
;; Keywords: languages, Knuth, mix, mixal, asm, mixvm, The Art Of Computer Programming
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2007-07-25 04:29:40 +00:00
|
|
|
;; This file is part of GNU Emacs.
|
|
|
|
|
2008-05-06 07:25:26 +00:00
|
|
|
;; GNU Emacs is free software: you can redistribute it and/or modify
|
2007-07-25 04:29:40 +00:00
|
|
|
;; it under the terms of the GNU General Public License as published by
|
2008-05-06 07:25:26 +00:00
|
|
|
;; the Free Software Foundation, either version 3 of the License, or
|
|
|
|
;; (at your option) any later version.
|
2007-07-25 04:29:40 +00:00
|
|
|
|
|
|
|
;; GNU Emacs is distributed in the hope that it will be useful,
|
|
|
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
;; GNU General Public License for more details.
|
|
|
|
|
|
|
|
;; You should have received a copy of the GNU General Public License
|
2008-05-06 07:25:26 +00:00
|
|
|
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
2007-07-25 04:29:40 +00:00
|
|
|
|
2003-06-16 21:33:54 +00:00
|
|
|
;;; Commentary:
|
|
|
|
;; Major mode for the mix asm language.
|
|
|
|
;; The mix asm language is described in "The Art Of Computer Programming".
|
|
|
|
;;
|
2005-10-11 21:22:14 +00:00
|
|
|
;; For optimal use, also use GNU MDK. Compiling needs mixasm, running
|
|
|
|
;; and debugging needs mixvm and mixvm.el from GNU MDK. You can get
|
2003-06-16 21:33:54 +00:00
|
|
|
;; GNU MDK from `https://savannah.gnu.org/projects/mdk/' and
|
|
|
|
;; `ftp://ftp.gnu.org/pub/gnu/mdk'.
|
|
|
|
;;
|
2012-09-17 13:41:04 +08:00
|
|
|
;; To use this mode, place the following in your init file:
|
2003-06-16 21:33:54 +00:00
|
|
|
;; `(load-file "/PATH-TO-FILE/mixal-mode.el")'.
|
|
|
|
;; When you load a file with the extension .mixal the mode will be started
|
2005-10-11 21:22:14 +00:00
|
|
|
;; automatic. If you want to start the mode manual, use `M-x mixal-mode'.
|
|
|
|
;; Font locking will work, the behavior of tabs is the same as Emacs's
|
|
|
|
;; default behavior. You can compile a source file with `C-c c' you can
|
2003-06-16 21:33:54 +00:00
|
|
|
;; run a compiled file with `C-c r' or run it in debug mode with `C-c d'.
|
|
|
|
;; You can get more information about a particular operation code by using
|
|
|
|
;; mixal-describe-operation-code or `C-h o'.
|
|
|
|
;;
|
|
|
|
;; Have fun.
|
|
|
|
|
|
|
|
;;; History:
|
2005-10-11 21:22:14 +00:00
|
|
|
;; Version 0.3:
|
2005-10-12 17:29:57 +00:00
|
|
|
;; 12/10/05: Stefan Monnier <monnier@iro.umontreal.ca>
|
|
|
|
;; Use font-lock-syntactic-keywords to detect/mark comments.
|
|
|
|
;; Use [^ \t\n]+ to match the operand part of a line.
|
|
|
|
;; Drop mixal-operation-codes.
|
|
|
|
;; Build the mixal-operation-codes-alist immediately.
|
|
|
|
;; Use `interactive' in mixal-describe-operation-code.
|
|
|
|
;; Remove useless ".*$" at the end of some regexps.
|
|
|
|
;; Fix the definition of comment-start-skip.
|
2005-10-11 21:22:14 +00:00
|
|
|
;; 08/10/05: sync mdk and emacs cvs
|
|
|
|
;; from emacs: compile-command and require-final-newline
|
|
|
|
;; from mdk: see version 0.2
|
|
|
|
;; correct my email address
|
|
|
|
;; Version 0.2:
|
|
|
|
;; 06/04/05: mixasm no longer needs -g option
|
|
|
|
;; fontlocking of comments works in all? cases now
|
|
|
|
;; added some more mixal-operation-codes
|
2003-06-16 21:33:54 +00:00
|
|
|
;; Version 0.1:
|
|
|
|
;; Version 0.1.1:
|
|
|
|
;; 22/11/02: bugfix in fontlocking, needed to add a '-' to the regex.
|
|
|
|
;; 19/11/02: completed implementing mixal-describe-operation-code.
|
|
|
|
;; 13/11/02: implemented compile, mixal-run and mixal-debug.
|
|
|
|
;; 10/11/02: implemented font-locking and syntax table.
|
|
|
|
;; 09/11/02: started mixal-mode.
|
|
|
|
|
|
|
|
;;; Code:
|
2005-08-30 11:09:32 +00:00
|
|
|
(defvar compile-command)
|
|
|
|
|
2003-06-16 21:33:54 +00:00
|
|
|
;;; Key map
|
|
|
|
(defvar mixal-mode-map
|
|
|
|
(let ((map (make-sparse-keymap)))
|
2008-05-23 20:31:12 +00:00
|
|
|
(define-key map "\C-c\C-c" 'compile)
|
|
|
|
(define-key map "\C-c\C-r" 'mixal-run)
|
|
|
|
(define-key map "\C-c\C-d" 'mixal-debug)
|
|
|
|
(define-key map "\C-h\C-o" 'mixal-describe-operation-code)
|
2003-06-16 21:33:54 +00:00
|
|
|
map)
|
|
|
|
"Keymap for `mixal-mode'.")
|
2005-10-11 21:22:14 +00:00
|
|
|
;; (makunbound 'mixal-mode-map)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
|
|
|
;;; Syntax table
|
|
|
|
(defvar mixal-mode-syntax-table
|
|
|
|
(let ((st (make-syntax-table)))
|
2005-10-12 17:29:57 +00:00
|
|
|
;; We need to do a bit more to make fontlocking for comments work.
|
New syntax-propertize functionality.
* lisp/font-lock.el (font-lock-syntactic-keywords): Make obsolete.
(font-lock-fontify-syntactic-keywords-region): Move handling of
font-lock-syntactically-fontified to...
(font-lock-default-fontify-region): ...here.
Let syntax-propertize-function take precedence.
(font-lock-fontify-syntactically-region): Cal syntax-propertize.
* lisp/emacs-lisp/regexp-opt.el (regexp-opt-depth): Skip named groups.
* lisp/emacs-lisp/syntax.el (syntax-propertize-function)
(syntax-propertize-chunk-size, syntax-propertize--done)
(syntax-propertize-extend-region-functions): New vars.
(syntax-propertize-wholelines, syntax-propertize-multiline)
(syntax-propertize--shift-groups, syntax-propertize-via-font-lock)
(syntax-propertize): New functions.
(syntax-propertize-rules): New macro.
(syntax-ppss-flush-cache): Set syntax-propertize--done.
(syntax-ppss): Call syntax-propertize.
* lisp/progmodes/ada-mode.el (ada-set-syntax-table-properties)
(ada-after-change-function, ada-initialize-syntax-table-properties)
(ada-handle-syntax-table-properties): Only define when
syntax-propertize is not available.
(ada-mode): Use syntax-propertize-function.
* lisp/progmodes/autoconf.el (autoconf-mode):
Use syntax-propertize-function.
(autoconf-font-lock-syntactic-keywords): Remove.
* lisp/progmodes/cfengine.el (cfengine-mode):
Use syntax-propertize-function.
(cfengine-font-lock-syntactic-keywords): Remove.
* lisp/progmodes/cperl-mode.el (cperl-mode): Use syntax-propertize-function.
* lisp/progmodes/fortran.el (fortran-mode): Use syntax-propertize-function.
(fortran--font-lock-syntactic-keywords): New var.
(fortran-line-length): Update syntax-propertize-function and
fortran--font-lock-syntactic-keywords.
* lisp/progmodes/gud.el (gdb-script-syntax-propertize-function): New var;
replaces gdb-script-font-lock-syntactic-keywords.
(gdb-script-mode): Use it.
* lisp/progmodes/js.el (js--regexp-literal): Define while compiling.
(js-syntax-propertize-function): New var; replaces
js-font-lock-syntactic-keywords.
(js-mode): Use it.
* lisp/progmodes/make-mode.el (makefile-syntax-propertize-function):
New var; replaces makefile-font-lock-syntactic-keywords.
(makefile-mode): Use it.
(makefile-imake-mode): Adjust.
* lisp/progmodes/mixal-mode.el (mixal-syntax-propertize-function): New var;
replaces mixal-font-lock-syntactic-keywords.
(mixal-mode): Use it.
* lisp/progmodes/octave-mod.el (octave-syntax-propertize-sqs): New function
to replace octave-font-lock-close-quotes.
(octave-syntax-propertize-function): New function to replace
octave-font-lock-syntactic-keywords.
(octave-mode): Use it.
* lisp/progmodes/perl-mode.el (perl-syntax-propertize-function): New fun to
replace perl-font-lock-syntactic-keywords.
(perl-syntax-propertize-special-constructs): New fun to replace
perl-font-lock-special-syntactic-constructs.
(perl-font-lock-syntactic-face-function): New fun.
(perl-mode): Use it.
* lisp/progmodes/python.el (python-syntax-propertize-function): New var to
replace python-font-lock-syntactic-keywords.
(python-mode): Use it.
(python-quote-syntax): Simplify and adjust to new use.
* lisp/progmodes/ruby-mode.el (ruby-here-doc-beg-re):
Define while compiling.
(ruby-here-doc-end-re, ruby-here-doc-beg-match)
(ruby-font-lock-syntactic-keywords, ruby-comment-beg-syntax)
(syntax-ppss, ruby-in-ppss-context-p, ruby-in-here-doc-p)
(ruby-here-doc-find-end, ruby-here-doc-beg-syntax)
(ruby-here-doc-end-syntax): Only define when
syntax-propertize is not available.
(ruby-syntax-propertize-function, ruby-syntax-propertize-heredoc):
New functions.
(ruby-in-ppss-context-p): Update to new syntax of heredocs.
(electric-indent-chars): Silence bytecompiler.
(ruby-mode): Use prog-mode, syntax-propertize-function, and
electric-indent-chars.
* lisp/progmodes/sh-script.el (sh-st-symbol): Remove.
(sh-font-lock-close-heredoc, sh-font-lock-open-heredoc): Add eol arg.
(sh-font-lock-flush-syntax-ppss-cache, sh-font-lock-here-doc): Remove.
(sh-font-lock-quoted-subshell): Assume we've already matched $(.
(sh-font-lock-paren): Set syntax-multiline.
(sh-font-lock-syntactic-keywords): Remove.
(sh-syntax-propertize-function): New function to replace it.
(sh-mode): Use it.
* lisp/progmodes/simula.el (simula-syntax-propertize-function): New var to
replace simula-font-lock-syntactic-keywords.
(simula-mode): Use it.
* lisp/progmodes/tcl.el (tcl-syntax-propertize-function): New var to
replace tcl-font-lock-syntactic-keywords.
(tcl-mode): Use it.
* lisp/progmodes/vhdl-mode.el (vhdl-mode): Use syntax-propertize-function
if available.
(vhdl-fontify-buffer): Adjust.
* lisp/textmodes/bibtex.el (bibtex-mode): Use syntax-propertize-function.
* lisp/textmodes/reftex.el (font-lock-syntactic-keywords): Don't declare
since we don't use it.
* lisp/textmodes/sgml-mode.el (sgml-syntax-propertize-function): New var to
replace sgml-font-lock-syntactic-keywords.
(sgml-mode): Use it.
* lisp/textmodes/tex-mode.el (tex-common-initialization, doctex-mode):
Use syntax-propertize-function.
* lisp/textmodes/texinfo.el (texinfo-syntax-propertize-function): New fun
to replace texinfo-font-lock-syntactic-keywords.
(texinfo-mode): Use it.
* test/indent/octave.m: Remove some `fixindent' not needed any more.
2010-09-11 01:13:42 +02:00
|
|
|
;; See use of syntax-propertize-function.
|
2005-10-12 17:29:57 +00:00
|
|
|
;; (modify-syntax-entry ?* "<" st)
|
|
|
|
(modify-syntax-entry ?\n ">" st)
|
2003-06-16 21:33:54 +00:00
|
|
|
st)
|
2005-10-12 17:29:57 +00:00
|
|
|
"Syntax table for `mixal-mode'.")
|
2003-06-16 21:33:54 +00:00
|
|
|
|
|
|
|
(defvar mixal-font-lock-label-face 'font-lock-variable-name-face
|
|
|
|
"Face name to use for label names.
|
|
|
|
Default value is that of `font-lock-variable-name-face', but you can modify
|
|
|
|
its value.")
|
|
|
|
|
|
|
|
(defvar mixal-font-lock-operation-code-face 'font-lock-keyword-face
|
|
|
|
"Face name to use for operation code names.
|
|
|
|
Default value is that of `font-lock-keyword-face', but you can modify its
|
|
|
|
value.")
|
|
|
|
|
|
|
|
(defvar mixal-font-lock-assembly-pseudoinstruction-face 'font-lock-builtin-face
|
|
|
|
"Face name to use for assembly pseudoinstruction names.
|
|
|
|
Default value is that of `font-lock-builtin-face', but you can modify its
|
|
|
|
value.")
|
|
|
|
|
|
|
|
(defvar mixal-assembly-pseudoinstructions
|
|
|
|
'("ORIG" "EQU" "CON" "ALF" "END")
|
2005-10-11 21:22:14 +00:00
|
|
|
"List of possible assembly pseudoinstructions.")
|
2003-06-16 21:33:54 +00:00
|
|
|
|
|
|
|
;;;; Compilation
|
|
|
|
;; Output from mixasm is compatible with default behavior of emacs,
|
|
|
|
;; I just added a key (C-cc) and modified the make-command.
|
|
|
|
|
|
|
|
;;;; Indentation
|
|
|
|
;; Tabs works well by default.
|
|
|
|
|
|
|
|
;;;; Describe
|
2005-10-12 17:29:57 +00:00
|
|
|
(defvar mixal-operation-codes-alist
|
|
|
|
;; FIXME: the codes FADD, FSUB, FMUL, FDIV, JRAD, and FCMP were in
|
|
|
|
;; mixal-operation-codes but not here. They should probably be added here.
|
2010-09-23 20:06:33 -07:00
|
|
|
;;
|
2005-10-13 22:17:58 +00:00
|
|
|
;; We used to define this with a backquote and subexps like ,(+ 8 3) for
|
|
|
|
;; better clarity, but the resulting code was too big and caused the
|
|
|
|
;; byte-compiler to eat up all the stack space. Even using
|
|
|
|
;; `eval-when-compile' didn't help because the byte-compiler insists on
|
|
|
|
;; compiling the code before evaluating it.
|
|
|
|
'((LDA loading "load A" 8 field
|
|
|
|
"Put in rA the contents of cell no. M.
|
2003-06-16 21:33:54 +00:00
|
|
|
Uses a + when there is no sign in subfield. Subfield is left padded with
|
|
|
|
zeros to make a word."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(LDX loading "load X" 15 field
|
|
|
|
"Put in rX the contents of cell no. M.
|
2003-06-16 21:33:54 +00:00
|
|
|
Uses a + when there is no sign in subfield. Subfield is left padded with
|
|
|
|
zeros to make a word."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(LD1 loading "load I1" 9 field
|
|
|
|
"Put in rI1 the contents of cell no. M.
|
2003-06-16 21:33:54 +00:00
|
|
|
Uses a + when there is no sign in subfield. Subfield is left padded with
|
2012-01-10 22:53:12 -08:00
|
|
|
zeros to make a word. Index registers only have 2 bytes and a sign; trying
|
|
|
|
to set anything more than that will result in undefined behavior."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(LD2 loading "load I2" 10 field
|
|
|
|
"Put in rI2 the contents of cell no. M.
|
2003-06-16 21:33:54 +00:00
|
|
|
Uses a + when there is no sign in subfield. Subfield is left padded with
|
2012-01-10 22:53:12 -08:00
|
|
|
zeros to make a word. Index registers only have 2 bytes and a sign; trying
|
|
|
|
to set anything more than that will result in undefined behavior."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(LD3 loading "load I3" 11 field
|
|
|
|
"Put in rI3 the contents of cell no. M.
|
2003-06-16 21:33:54 +00:00
|
|
|
Uses a + when there is no sign in subfield. Subfield is left padded with
|
2012-01-10 22:53:12 -08:00
|
|
|
zeros to make a word. Index registers only have 2 bytes and a sign; trying
|
|
|
|
to set anything more than that will result in undefined behavior."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(LD4 loading "load I4" 12 field
|
|
|
|
"Put in rI4 the contents of cell no. M.
|
2003-06-16 21:33:54 +00:00
|
|
|
Uses a + when there is no sign in subfield. Subfield is left padded with
|
2012-01-10 22:53:12 -08:00
|
|
|
zeros to make a word. Index registers only have 2 bytes and a sign; trying
|
|
|
|
to set anything more than that will result in undefined behavior."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(LD5 loading "load I5" 13 field
|
|
|
|
"Put in rI5 the contents of cell no. M.
|
2003-06-16 21:33:54 +00:00
|
|
|
Uses a + when there is no sign in subfield. Subfield is left padded with
|
2012-01-10 22:53:12 -08:00
|
|
|
zeros to make a word. Index registers only have 2 bytes and a sign; trying
|
|
|
|
to set anything more than that will result in undefined behavior."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(LD6 loading "load I6" 14 field
|
|
|
|
"Put in rI6 the contents of cell no. M.
|
2003-06-16 21:33:54 +00:00
|
|
|
Uses a + when there is no sign in subfield. Subfield is left padded with
|
2012-01-10 22:53:12 -08:00
|
|
|
zeros to make a word. Index registers only have 2 bytes and a sign; trying
|
|
|
|
to set anything more than that will result in undefined behavior."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(LDAN loading "load A negative" 16 field
|
|
|
|
"Put in rA the contents of cell no. M, with opposite sign.
|
2003-06-16 21:33:54 +00:00
|
|
|
Uses a + when there is no sign in subfield, otherwise use the opposite sign.
|
|
|
|
Subfield is left padded with zeros to make a word."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(LDXN loading "load X negative" 23 field
|
|
|
|
"Put in rX the contents of cell no. M, with opposite sign.
|
2003-06-16 21:33:54 +00:00
|
|
|
Uses a + when there is no sign in subfield, otherwise use the opposite sign.
|
|
|
|
Subfield is left padded with zeros to make a word."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(LD1N loading "load I1 negative" 17 field
|
|
|
|
"Put in rI1 the contents of cell no. M, with opposite sign.
|
2003-06-16 21:33:54 +00:00
|
|
|
Uses a + when there is no sign in subfield, otherwise use the opposite sign.
|
|
|
|
Subfield is left padded with zeros to make a word. Index registers only
|
2012-01-10 22:53:12 -08:00
|
|
|
have 2 bytes and a sign; trying to set anything more than that will result
|
2003-06-16 21:33:54 +00:00
|
|
|
in undefined behavior."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(LD2N loading "load I2 negative" 18 field
|
|
|
|
"Put in rI2 the contents of cell no. M, with opposite sign.
|
2003-06-16 21:33:54 +00:00
|
|
|
Uses a + when there is no sign in subfield, otherwise use the opposite sign.
|
|
|
|
Subfield is left padded with zeros to make a word. Index registers only
|
2012-01-10 22:53:12 -08:00
|
|
|
have 2 bytes and a sign; trying to set anything more than that will result
|
2003-06-16 21:33:54 +00:00
|
|
|
in undefined behavior."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(LD3N loading "load I3 negative" 19 field
|
|
|
|
"Put in rI3 the contents of cell no. M, with opposite sign.
|
2003-06-16 21:33:54 +00:00
|
|
|
Uses a + when there is no sign in subfield, otherwise use the opposite sign.
|
|
|
|
Subfield is left padded with zeros to make a word. Index registers only
|
2012-01-10 22:53:12 -08:00
|
|
|
have 2 bytes and a sign; trying to set anything more than that will result
|
2003-06-16 21:33:54 +00:00
|
|
|
in undefined behavior."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(LD4N loading "load I4 negative" 20 field
|
|
|
|
"Put in rI4 the contents of cell no. M, with opposite sign.
|
2003-06-16 21:33:54 +00:00
|
|
|
Uses a + when there is no sign in subfield, otherwise use the opposite sign.
|
|
|
|
Subfield is left padded with zeros to make a word. Index registers only
|
2012-01-10 22:53:12 -08:00
|
|
|
have 2 bytes and a sign; trying to set anything more than that will result
|
2003-06-16 21:33:54 +00:00
|
|
|
in undefined behavior."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(LD5N loading "load I5 negative" 21 field
|
|
|
|
"Put in rI5 the contents of cell no. M, with opposite sign.
|
2003-06-16 21:33:54 +00:00
|
|
|
Uses a + when there is no sign in subfield, otherwise use the opposite sign.
|
|
|
|
Subfield is left padded with zeros to make a word. Index registers only
|
2012-01-10 22:53:12 -08:00
|
|
|
have 2 bytes and a sign; trying to set anything more than that will result
|
2003-06-16 21:33:54 +00:00
|
|
|
in undefined behavior."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(LD6N loading "load I6 negative" 22 field
|
|
|
|
"Put in rI6 the contents of cell no. M, with opposite sign.
|
2003-06-16 21:33:54 +00:00
|
|
|
Uses a + when there is no sign in subfield, otherwise use the opposite sign.
|
|
|
|
Subfield is left padded with zeros to make a word. Index registers only
|
2012-01-10 22:53:12 -08:00
|
|
|
have 2 bytes and a sign; trying to set anything more than that will result
|
2003-06-16 21:33:54 +00:00
|
|
|
in undefined behavior."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(STA storing "store A" 24 field
|
|
|
|
"Store in cell Nr. M the contents of rA.
|
2003-06-16 21:33:54 +00:00
|
|
|
The modification of the operation code represents the subfield of the
|
|
|
|
memory cell that is to be overwritten with bytes from a register. These
|
|
|
|
bytes are taken beginning by the rightmost side of the register. The
|
|
|
|
sign of the memory cell is not changed, unless it is part of the subfield."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(STX storing "store X" 31 field
|
|
|
|
"Store in cell Nr. M the contents of rX.
|
2003-06-16 21:33:54 +00:00
|
|
|
The modification of the operation code represents the subfield of the
|
|
|
|
memory cell that is to be overwritten with bytes from a register. These
|
|
|
|
bytes are taken beginning by the rightmost side of the register. The
|
|
|
|
sign of the memory cell is not changed, unless it is part of the subfield."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ST1 storing "store I1" 25 field
|
|
|
|
"Store in cell Nr. M the contents of rI1.
|
2003-06-16 21:33:54 +00:00
|
|
|
The modification of the operation code represents the subfield of the
|
|
|
|
memory cell that is to be overwritten with bytes from a register. These
|
|
|
|
bytes are taken beginning by the rightmost side of the register. The
|
|
|
|
sign of the memory cell is not changed, unless it is part of the subfield.
|
|
|
|
Because index registers only have 2 bytes and a sign, the rest of the bytes
|
|
|
|
are assumed to be 0."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ST2 storing "store I2" 26 field
|
|
|
|
"Store in cell Nr. M the contents of rI2.
|
2003-06-16 21:33:54 +00:00
|
|
|
The modification of the operation code represents the subfield of the
|
|
|
|
memory cell that is to be overwritten with bytes from a register. These
|
|
|
|
bytes are taken beginning by the rightmost side of the register. The
|
|
|
|
sign of the memory cell is not changed, unless it is part of the subfield.
|
|
|
|
Because index registers only have 2 bytes and a sign, the rest of the bytes
|
|
|
|
are assumed to be 0."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ST3 storing "store I3" 27 field
|
|
|
|
"Store in cell Nr. M the contents of rI3.
|
2003-06-16 21:33:54 +00:00
|
|
|
The modification of the operation code represents the subfield of the
|
|
|
|
memory cell that is to be overwritten with bytes from a register. These
|
|
|
|
bytes are taken beginning by the rightmost side of the register. The
|
|
|
|
sign of the memory cell is not changed, unless it is part of the subfield.
|
|
|
|
Because index registers only have 2 bytes and a sign, the rest of the bytes
|
|
|
|
are assumed to be 0."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ST4 storing "store I4" 28 field
|
|
|
|
"Store in cell Nr. M the contents of rI4.
|
2003-06-16 21:33:54 +00:00
|
|
|
The modification of the operation code represents the subfield of the
|
|
|
|
memory cell that is to be overwritten with bytes from a register. These
|
|
|
|
bytes are taken beginning by the rightmost side of the register. The
|
|
|
|
sign of the memory cell is not changed, unless it is part of the subfield.
|
|
|
|
Because index registers only have 2 bytes and a sign, the rest of the bytes
|
|
|
|
are assumed to be 0."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ST5 storing "store I5" 29 field
|
|
|
|
"Store in cell Nr. M the contents of rI5.
|
2003-06-16 21:33:54 +00:00
|
|
|
The modification of the operation code represents the subfield of the
|
|
|
|
memory cell that is to be overwritten with bytes from a register. These
|
|
|
|
bytes are taken beginning by the rightmost side of the register. The
|
|
|
|
sign of the memory cell is not changed, unless it is part of the subfield.
|
|
|
|
Because index registers only have 2 bytes and a sign, the rest of the bytes
|
|
|
|
are assumed to be 0."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ST6 storing "store I6" 30 field
|
|
|
|
"Store in cell Nr. M the contents of rI6.
|
2003-06-16 21:33:54 +00:00
|
|
|
The modification of the operation code represents the subfield of the
|
|
|
|
memory cell that is to be overwritten with bytes from a register. These
|
|
|
|
bytes are taken beginning by the rightmost side of the register. The
|
|
|
|
sign of the memory cell is not changed, unless it is part of the subfield.
|
|
|
|
Because index registers only have 2 bytes and a sign, the rest of the bytes
|
|
|
|
are assumed to be 0."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(STJ storing "store J" 32 field
|
|
|
|
"Store in cell Nr. M the contents of rJ.
|
2003-06-16 21:33:54 +00:00
|
|
|
The modification of the operation code represents the subfield of the
|
|
|
|
memory cell that is to be overwritten with bytes from a register. These
|
|
|
|
bytes are taken beginning by the rightmost side of the register. The sign
|
|
|
|
of rJ is always +, sign of the memory cell is not changed, unless it is
|
|
|
|
part of the subfield. The default field for STJ is (0:2)."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(STZ storing "store zero" 33 field
|
|
|
|
"Store in cell Nr. M '+ 0'.
|
2003-06-16 21:33:54 +00:00
|
|
|
The modification of the operation code represents the subfield of the
|
|
|
|
memory cell that is to be overwritten with zeros."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ADD arithmetic "add" 1 field
|
|
|
|
"Add to A the contents of cell Nr. M.
|
2003-06-16 21:33:54 +00:00
|
|
|
Subfield is padded with zero to make a word.
|
|
|
|
If the result is to large, the operation result modulo 1,073,741,823 (the
|
|
|
|
maximum value storable in a MIX word) is stored in `rA', and the overflow
|
|
|
|
toggle is set to TRUE."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(SUB arithmetic "subtract" 2 field
|
|
|
|
"Subtract to A the contents of cell Nr. M.
|
2003-06-16 21:33:54 +00:00
|
|
|
Subfield is padded with zero to make a word.
|
|
|
|
If the result is to large, the operation result modulo 1,073,741,823 (the
|
|
|
|
maximum value storable in a MIX word) is stored in `rA', and the overflow
|
|
|
|
toggle is set to TRUE."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(MUL arithmetic "multiply" 3 field
|
|
|
|
"Multiplies the contents of cell Nr. M with A, result is 10 bytes and stored in rA and rX.
|
2003-06-16 21:33:54 +00:00
|
|
|
The sign is + if the sign of rA and cell M where the same, otherwise, it is -"
|
2005-10-13 22:17:58 +00:00
|
|
|
10)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(DIV arithmetic "divide" 4 field
|
|
|
|
"Both rA and rX are taken together and divided by cell Nr. M, quotient is placed in rA, remainder in rX.
|
2003-06-16 21:33:54 +00:00
|
|
|
The sign is taken from rA, and after the divide the sign of rA is set to + when
|
2005-10-12 17:29:57 +00:00
|
|
|
both the sign of rA and M where the same. Divide by zero and overflow of rA
|
|
|
|
result in undefined behavior."
|
2005-10-13 22:17:58 +00:00
|
|
|
12)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ENTA address-transfer "enter A" 48
|
|
|
|
"Literal value is stored in rA.
|
2003-06-16 21:33:54 +00:00
|
|
|
Indexed, stores value of index in rA."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ENTX address-transfer "enter X" 55
|
|
|
|
"Literal value is stored in rX.
|
2003-06-16 21:33:54 +00:00
|
|
|
Indexed, stores value of index in rX."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ENT1 address-transfer "Enter rI1" 49
|
|
|
|
"Literal value is stored in rI1.
|
2003-06-16 21:33:54 +00:00
|
|
|
Indexed, stores value of index in rI1."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ENT2 address-transfer "Enter rI2" 50
|
|
|
|
"Literal value is stored in rI2.
|
2003-06-16 21:33:54 +00:00
|
|
|
Indexed, stores value of index in rI2."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ENT3 address-transfer "Enter rI3" 51
|
|
|
|
"Literal value is stored in rI3.
|
2003-06-16 21:33:54 +00:00
|
|
|
Indexed, stores value of index in rI3."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ENT4 address-transfer "Enter rI4" 52
|
|
|
|
"Literal value is stored in rI4.
|
2003-06-16 21:33:54 +00:00
|
|
|
Indexed, stores value of index in rI4."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ENT5 address-transfer "Enter rI5" 53
|
|
|
|
"Literal value is stored in rI5.
|
2003-06-16 21:33:54 +00:00
|
|
|
Indexed, stores value of index in rI5."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ENT6 address-transfer "Enter rI6" 54
|
|
|
|
"Literal value is stored in rI6.
|
2003-06-16 21:33:54 +00:00
|
|
|
Indexed, stores value of index in rI6."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ENNA address-transfer "enter negative A" 48
|
|
|
|
"Literal value is stored in rA with opposite sign.
|
2003-06-16 21:33:54 +00:00
|
|
|
Indexed, stores value of index in rA with opposite sign."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ENNX address-transfer "enter negative X" 55
|
|
|
|
"Literal value is stored in rX with opposite sign.
|
2003-06-16 21:33:54 +00:00
|
|
|
Indexed, stores value of index in rX with opposite sign."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ENN1 address-transfer "Enter negative rI1" 49
|
|
|
|
"Literal value is stored in rI1 with opposite sign.
|
2003-06-16 21:33:54 +00:00
|
|
|
Indexed, stores value of index in rI1 with opposite sign."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ENN2 address-transfer "Enter negative rI2" 50
|
|
|
|
"Literal value is stored in rI2 with opposite sign.
|
2003-06-16 21:33:54 +00:00
|
|
|
Indexed, stores value of index in rI2 with opposite sign."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ENN3 address-transfer "Enter negative rI3" 51
|
|
|
|
"Literal value is stored in rI3 with opposite sign.
|
2003-06-16 21:33:54 +00:00
|
|
|
Indexed, stores value of index in rI3 with opposite sign."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ENN4 address-transfer "Enter negative rI4" 52
|
|
|
|
"Literal value is stored in rI4 with opposite sign.
|
2003-06-16 21:33:54 +00:00
|
|
|
Indexed, stores value of index in rI4 with opposite sign."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ENN5 address-transfer "Enter negative rI5" 53
|
|
|
|
"Literal value is stored in rI5 with opposite sign.
|
2003-06-16 21:33:54 +00:00
|
|
|
Indexed, stores value of index in rI5 with opposite sign."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(ENN6 address-transfer "Enter negative rI6" 54
|
|
|
|
"Literal value is stored in rI6 with opposite sign.
|
2003-06-16 21:33:54 +00:00
|
|
|
Indexed, stores value of index in rI6 with opposite sign."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(INCA address-transfer "increase A" 48
|
|
|
|
"Increase register A with the literal value of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
On overflow the overflow toggle is set."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(INCX address-transfer "increase X" 55
|
|
|
|
"Increase register X with the literal value of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
On overflow the overflow toggle is set."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(INC1 address-transfer "increase I1" 49
|
|
|
|
"Increase register I1 with the literal value of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
The result is undefined when the result does not fit in
|
|
|
|
2 bytes."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(INC2 address-transfer "increase I2" 50
|
|
|
|
"Increase register I2 with the literal value of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
The result is undefined when the result does not fit in
|
|
|
|
2 bytes."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(INC3 address-transfer "increase I3" 51
|
|
|
|
"Increase register I3 with the literal value of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
The result is undefined when the result does not fit in
|
|
|
|
2 bytes."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(INC4 address-transfer "increase I4" 52
|
|
|
|
"Increase register I4 with the literal value of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
The result is undefined when the result does not fit in
|
|
|
|
2 bytes."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(INC5 address-transfer "increase I5" 53
|
|
|
|
"Increase register I5 with the literal value of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
The result is undefined when the result does not fit in
|
|
|
|
2 bytes."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(INC6 address-transfer "increase I6" 54
|
|
|
|
"Increase register I6 with the literal value of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
The result is undefined when the result does not fit in
|
|
|
|
2 bytes."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(DECA address-transfer "decrease A" 48
|
|
|
|
"Decrease register A with the literal value of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
On overflow the overflow toggle is set."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(DECX address-transfer "decrease X" 55
|
|
|
|
"Decrease register X with the literal value of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
On overflow the overflow toggle is set."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(DEC1 address-transfer "decrease I1" 49
|
|
|
|
"Decrease register I1 with the literal value of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
The result is undefined when the result does not fit in
|
|
|
|
2 bytes."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(DEC2 address-transfer "decrease I2" 50
|
|
|
|
"Decrease register I2 with the literal value of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
The result is undefined when the result does not fit in
|
|
|
|
2 bytes."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(DEC3 address-transfer "decrease I3" 51
|
|
|
|
"Decrease register I3 with the literal value of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
The result is undefined when the result does not fit in
|
|
|
|
2 bytes."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(DEC4 address-transfer "decrease I4" 52
|
|
|
|
"Decrease register I4 with the literal value of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
The result is undefined when the result does not fit in
|
|
|
|
2 bytes."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(DEC5 address-transfer "decrease I5" 53
|
|
|
|
"Decrease register I5 with the literal value of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
The result is undefined when the result does not fit in
|
|
|
|
2 bytes."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(DEC6 address-transfer "decrease I6" 54
|
|
|
|
"Decrease register I6 with the literal value of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
The result is undefined when the result does not fit in
|
|
|
|
2 bytes."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(CMPA comparison "compare A" 56 field
|
|
|
|
"Compare contents of A with contents of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
The field specifier works on both fields. The comparison indicator
|
|
|
|
is set to LESS, EQUAL or GREATER depending on the outcome."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(CMPX comparison "compare X" 63 field
|
|
|
|
"Compare contents of rX with contents of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
The field specifier works on both fields. The comparison indicator
|
|
|
|
is set to LESS, EQUAL or GREATER depending on the outcome."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(CMP1 comparison "compare I1" 57 field
|
|
|
|
"Compare contents of rI1 with contents of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
The field specifier works on both fields. The comparison indicator
|
|
|
|
is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3
|
|
|
|
have a value of 0."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(CMP2 comparison "compare I2" 58 field
|
|
|
|
"Compare contents of rI2 with contents of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
The field specifier works on both fields. The comparison indicator
|
|
|
|
is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3
|
|
|
|
have a value of 0."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(CMP3 comparison "compare I3" 59 field
|
|
|
|
"Compare contents of rI3 with contents of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
The field specifier works on both fields. The comparison indicator
|
|
|
|
is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3
|
|
|
|
have a value of 0."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(CMP4 comparison "compare I4" 60 field
|
|
|
|
"Compare contents of rI4 with contents of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
The field specifier works on both fields. The comparison indicator
|
|
|
|
is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3
|
|
|
|
have a value of 0."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(CMP5 comparison "compare I5" 61 field
|
|
|
|
"Compare contents of rI5 with contents of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
The field specifier works on both fields. The comparison indicator
|
|
|
|
is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3
|
|
|
|
have a value of 0."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(CMP6 comparison "compare I6" 62 field
|
|
|
|
"Compare contents of rI6 with contents of M.
|
2003-06-16 21:33:54 +00:00
|
|
|
The field specifier works on both fields. The comparison indicator
|
|
|
|
is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3
|
|
|
|
have a value of 0."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JMP jump "jump" 39
|
|
|
|
"Unconditional jump.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JSJ jump "jump, save J" 39
|
|
|
|
"Unconditional jump, but rJ is not modified."
|
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JOV jump "jump on overflow" 39
|
|
|
|
"Jump if OV is set (and turn it off).
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JNOV jump "Jump on no overflow" 39
|
|
|
|
"Jump if OV is not set (and turn it off).
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JL jump "Jump on less" 39
|
|
|
|
"Jump if '[CM] = L'.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JE jump "Jump on equal" 39
|
|
|
|
"Jump if '[CM] = E'.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JG jump "Jump on greater" 39
|
|
|
|
"Jump if '[CM] = G'.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JGE jump "Jump on not less" 39
|
|
|
|
"Jump if '[CM]' does not equal 'L'.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JNE jump "Jump on not equal" 39
|
|
|
|
"Jump if '[CM]' does not equal 'E'.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JLE jump "Jump on not greater" 39
|
|
|
|
"Jump if '[CM]' does not equal 'G'.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JAN jump "jump A negative" 40
|
|
|
|
"Jump if the content of rA is negative.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JAZ jump "jump A zero" 40
|
|
|
|
"Jump if the content of rA is zero.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JAP jump "jump A positive" 40
|
|
|
|
"Jump if the content of rA is positive.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JANN jump "jump A non-negative" 40
|
|
|
|
"Jump if the content of rA is non-negative.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JANZ jump "jump A non-zero" 40
|
|
|
|
"Jump if the content of rA is non-zero.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JANP jump "jump A non-positive" 40
|
|
|
|
"Jump if the content of rA is non-positive.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JXN jump "jump X negative" 47
|
|
|
|
"Jump if the content of rX is negative.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JXZ jump "jump X zero" 47
|
|
|
|
"Jump if the content of rX is zero.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JXP jump "jump X positive" 47
|
|
|
|
"Jump if the content of rX is positive.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JXNN jump "jump X non-negative" 47
|
|
|
|
"Jump if the content of rX is non-negative.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JXNZ jump "jump X non-zero" 47
|
|
|
|
"Jump if the content of rX is non-zero.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JXNP jump "jump X non-positive" 47
|
|
|
|
"Jump if the content of rX is non-positive.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J1N jump "jump I1 negative" 41
|
|
|
|
"Jump if the content of rI1 is negative.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J1Z jump "jump I1 zero" 41
|
|
|
|
"Jump if the content of rI1 is zero.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J1P jump "jump I1 positive" 41
|
|
|
|
"Jump if the content of rI1 is positive.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J1NN jump "jump I1 non-negative" 41
|
|
|
|
"Jump if the content of rI1 is non-negative.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J1NZ jump "jump I1 non-zero" 41
|
|
|
|
"Jump if the content of rI1 is non-zero.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J1NP jump "jump I1 non-positive" 41
|
|
|
|
"Jump if the content of rI1 is non-positive.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J2N jump "jump I2 negative" 41
|
|
|
|
"Jump if the content of rI2 is negative.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J2Z jump "jump I2 zero" 41
|
|
|
|
"Jump if the content of rI2 is zero.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J2P jump "jump I2 positive" 41
|
|
|
|
"Jump if the content of rI2 is positive.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J2NN jump "jump I2 non-negative" 41
|
|
|
|
"Jump if the content of rI2 is non-negative.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J2NZ jump "jump I2 non-zero" 41
|
|
|
|
"Jump if the content of rI2 is non-zero.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J2NP jump "jump I2 non-positive" 41
|
|
|
|
"Jump if the content of rI2 is non-positive.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J3N jump "jump I3 negative" 41
|
|
|
|
"Jump if the content of rI3 is negative.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J3Z jump "jump I3 zero" 41
|
|
|
|
"Jump if the content of rI3 is zero.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J3P jump "jump I3 positive" 41
|
|
|
|
"Jump if the content of rI3 is positive.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J3NN jump "jump I3 non-negative" 41
|
|
|
|
"Jump if the content of rI3 is non-negative.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J3NZ jump "jump I3 non-zero" 41
|
|
|
|
"Jump if the content of rI3 is non-zero.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J3NP jump "jump I3 non-positive" 41
|
|
|
|
"Jump if the content of rI3 is non-positive.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J4N jump "jump I4 negative" 41
|
|
|
|
"Jump if the content of rI4 is negative.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J4Z jump "jump I4 zero" 41
|
|
|
|
"Jump if the content of rI4 is zero.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J4P jump "jump I4 positive" 41
|
|
|
|
"Jump if the content of rI4 is positive.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J4NN jump "jump I4 non-negative" 41
|
|
|
|
"Jump if the content of rI4 is non-negative.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J4NZ jump "jump I4 non-zero" 41
|
|
|
|
"Jump if the content of rI4 is non-zero.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J4NP jump "jump I4 non-positive" 41
|
|
|
|
"Jump if the content of rI4 is non-positive.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J5N jump "jump I5 negative" 41
|
|
|
|
"Jump if the content of rI5 is negative.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J5Z jump "jump I5 zero" 41
|
|
|
|
"Jump if the content of rI5 is zero.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J5P jump "jump I5 positive" 41
|
|
|
|
"Jump if the content of rI5 is positive.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J5NN jump "jump I5 non-negative" 41
|
|
|
|
"Jump if the content of rI5 is non-negative.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J5NZ jump "jump I5 non-zero" 41
|
|
|
|
"Jump if the content of rI5 is non-zero.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J5NP jump "jump I5 non-positive" 41
|
|
|
|
"Jump if the content of rI5 is non-positive.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J6N jump "jump I6 negative" 41
|
|
|
|
"Jump if the content of rI6 is negative.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J6Z jump "jump I6 zero" 41
|
|
|
|
"Jump if the content of rI6 is zero.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J6P jump "jump I6 positive" 41
|
|
|
|
"Jump if the content of rI6 is positive.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J6NN jump "jump I6 non-negative" 41
|
|
|
|
"Jump if the content of rI6 is non-negative.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J6NZ jump "jump I6 non-zero" 41
|
|
|
|
"Jump if the content of rI6 is non-zero.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(J6NP jump "jump I6 non-positive" 41
|
|
|
|
"Jump if the content of rI6 is non-positive.
|
2003-06-16 21:33:54 +00:00
|
|
|
Register J is set to the value of the next instruction that would have
|
|
|
|
been executed when there was no jump."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(SLA miscellaneous "shift left A" 6
|
|
|
|
"Shift to A, M bytes left.
|
2003-06-16 21:33:54 +00:00
|
|
|
Hero's will be added to the right."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(SRA miscellaneous "shift right A" 6
|
|
|
|
"Shift to A, M bytes right.
|
2003-06-16 21:33:54 +00:00
|
|
|
Zeros will be added to the left."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(SLAX miscellaneous "shift left AX" 6
|
|
|
|
"Shift AX, M bytes left.
|
2003-06-16 21:33:54 +00:00
|
|
|
Zeros will be added to the right."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(SRAX miscellaneous "shift right AX" 6
|
|
|
|
"Shift AX, M bytes right.
|
2003-06-16 21:33:54 +00:00
|
|
|
Zeros will be added to the left."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(SLC miscellaneous "shift left AX circularly" 6
|
|
|
|
"Shift AX, M bytes left circularly.
|
2003-06-16 21:33:54 +00:00
|
|
|
The bytes that fall off to the left will be added to the right."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(SRC miscellaneous "shift right AX circularly" 6
|
|
|
|
"Shift AX, M bytes right circularly.
|
2003-06-16 21:33:54 +00:00
|
|
|
The bytes that fall off to the right will be added to the left."
|
2005-10-13 22:17:58 +00:00
|
|
|
2)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(MOVE miscellaneous "move" 7 number
|
|
|
|
"Move MOD words from M to the location stored in rI1."
|
|
|
|
(+ 1 (* 2 number)))
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(NOP miscellaneous "no operation" 0 ignored
|
|
|
|
"No operation, M and F are not used by the machine."
|
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(HLT miscellaneous "halt" 5
|
|
|
|
"Halt.
|
2003-06-16 21:33:54 +00:00
|
|
|
Stop instruction fetching."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(IN input-output "input" 36 unit
|
|
|
|
"Transfer a block of words from the specified unit to memory.
|
2003-06-16 21:33:54 +00:00
|
|
|
The transfer starts at address M."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(OUT input-output "output" 37 unit
|
|
|
|
"Transfer a block of words from memory.
|
2003-06-16 21:33:54 +00:00
|
|
|
The transfer starts at address M to the specified unit."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(IOC input-output "input-output control" 35 unit
|
|
|
|
"Perform a control operation.
|
2003-06-16 21:33:54 +00:00
|
|
|
The control operation is given by M on the specified unit."
|
2005-10-13 22:17:58 +00:00
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JRED input-output "jump ready" 38 unit
|
|
|
|
"Jump to M if the specified unit is ready."
|
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(JBUS input-output "jump busy" 34 unit
|
|
|
|
"Jump to M if the specified unit is busy."
|
|
|
|
1)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(NUM conversion "convert to numeric" 5
|
|
|
|
"Convert rAX to its numerical value and store it in rA.
|
2003-06-16 21:33:54 +00:00
|
|
|
the register rAX is assumed to contain a character representation of
|
|
|
|
a number."
|
2005-10-13 22:17:58 +00:00
|
|
|
10)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
2005-10-13 22:17:58 +00:00
|
|
|
(CHAR conversion "convert to characters" 5
|
|
|
|
"Convert the number stored in rA to a character representation.
|
2003-06-16 21:33:54 +00:00
|
|
|
The converted character representation is stored in rAX."
|
2005-10-13 22:17:58 +00:00
|
|
|
10))
|
2005-10-12 17:29:57 +00:00
|
|
|
|
|
|
|
"Alist that contains all the possible operation codes for mix.
|
|
|
|
Each elt has the form
|
|
|
|
(OP-CODE GROUP FULL-NAME C-BYTE F-BYTE DESCRIPTION EXECUTION-TIME)
|
2007-06-07 14:27:21 +00:00
|
|
|
Where OP-CODE is the text of the opcode as a symbol,
|
2005-10-12 17:29:57 +00:00
|
|
|
FULL-NAME is the human readable name as a string,
|
|
|
|
C-BYTE is the operation code telling what operation is to be performed,
|
|
|
|
F-BYTE holds a modification of the operation code which can be a symbol
|
|
|
|
or a number,
|
|
|
|
DESCRIPTION contains an string with a description about the operation code and
|
|
|
|
EXECUTION-TIME holds info about the time it takes, number or string.")
|
|
|
|
;; (makunbound 'mixal-operation-codes-alist)
|
|
|
|
|
|
|
|
|
|
|
|
;;; Font-locking:
|
New syntax-propertize functionality.
* lisp/font-lock.el (font-lock-syntactic-keywords): Make obsolete.
(font-lock-fontify-syntactic-keywords-region): Move handling of
font-lock-syntactically-fontified to...
(font-lock-default-fontify-region): ...here.
Let syntax-propertize-function take precedence.
(font-lock-fontify-syntactically-region): Cal syntax-propertize.
* lisp/emacs-lisp/regexp-opt.el (regexp-opt-depth): Skip named groups.
* lisp/emacs-lisp/syntax.el (syntax-propertize-function)
(syntax-propertize-chunk-size, syntax-propertize--done)
(syntax-propertize-extend-region-functions): New vars.
(syntax-propertize-wholelines, syntax-propertize-multiline)
(syntax-propertize--shift-groups, syntax-propertize-via-font-lock)
(syntax-propertize): New functions.
(syntax-propertize-rules): New macro.
(syntax-ppss-flush-cache): Set syntax-propertize--done.
(syntax-ppss): Call syntax-propertize.
* lisp/progmodes/ada-mode.el (ada-set-syntax-table-properties)
(ada-after-change-function, ada-initialize-syntax-table-properties)
(ada-handle-syntax-table-properties): Only define when
syntax-propertize is not available.
(ada-mode): Use syntax-propertize-function.
* lisp/progmodes/autoconf.el (autoconf-mode):
Use syntax-propertize-function.
(autoconf-font-lock-syntactic-keywords): Remove.
* lisp/progmodes/cfengine.el (cfengine-mode):
Use syntax-propertize-function.
(cfengine-font-lock-syntactic-keywords): Remove.
* lisp/progmodes/cperl-mode.el (cperl-mode): Use syntax-propertize-function.
* lisp/progmodes/fortran.el (fortran-mode): Use syntax-propertize-function.
(fortran--font-lock-syntactic-keywords): New var.
(fortran-line-length): Update syntax-propertize-function and
fortran--font-lock-syntactic-keywords.
* lisp/progmodes/gud.el (gdb-script-syntax-propertize-function): New var;
replaces gdb-script-font-lock-syntactic-keywords.
(gdb-script-mode): Use it.
* lisp/progmodes/js.el (js--regexp-literal): Define while compiling.
(js-syntax-propertize-function): New var; replaces
js-font-lock-syntactic-keywords.
(js-mode): Use it.
* lisp/progmodes/make-mode.el (makefile-syntax-propertize-function):
New var; replaces makefile-font-lock-syntactic-keywords.
(makefile-mode): Use it.
(makefile-imake-mode): Adjust.
* lisp/progmodes/mixal-mode.el (mixal-syntax-propertize-function): New var;
replaces mixal-font-lock-syntactic-keywords.
(mixal-mode): Use it.
* lisp/progmodes/octave-mod.el (octave-syntax-propertize-sqs): New function
to replace octave-font-lock-close-quotes.
(octave-syntax-propertize-function): New function to replace
octave-font-lock-syntactic-keywords.
(octave-mode): Use it.
* lisp/progmodes/perl-mode.el (perl-syntax-propertize-function): New fun to
replace perl-font-lock-syntactic-keywords.
(perl-syntax-propertize-special-constructs): New fun to replace
perl-font-lock-special-syntactic-constructs.
(perl-font-lock-syntactic-face-function): New fun.
(perl-mode): Use it.
* lisp/progmodes/python.el (python-syntax-propertize-function): New var to
replace python-font-lock-syntactic-keywords.
(python-mode): Use it.
(python-quote-syntax): Simplify and adjust to new use.
* lisp/progmodes/ruby-mode.el (ruby-here-doc-beg-re):
Define while compiling.
(ruby-here-doc-end-re, ruby-here-doc-beg-match)
(ruby-font-lock-syntactic-keywords, ruby-comment-beg-syntax)
(syntax-ppss, ruby-in-ppss-context-p, ruby-in-here-doc-p)
(ruby-here-doc-find-end, ruby-here-doc-beg-syntax)
(ruby-here-doc-end-syntax): Only define when
syntax-propertize is not available.
(ruby-syntax-propertize-function, ruby-syntax-propertize-heredoc):
New functions.
(ruby-in-ppss-context-p): Update to new syntax of heredocs.
(electric-indent-chars): Silence bytecompiler.
(ruby-mode): Use prog-mode, syntax-propertize-function, and
electric-indent-chars.
* lisp/progmodes/sh-script.el (sh-st-symbol): Remove.
(sh-font-lock-close-heredoc, sh-font-lock-open-heredoc): Add eol arg.
(sh-font-lock-flush-syntax-ppss-cache, sh-font-lock-here-doc): Remove.
(sh-font-lock-quoted-subshell): Assume we've already matched $(.
(sh-font-lock-paren): Set syntax-multiline.
(sh-font-lock-syntactic-keywords): Remove.
(sh-syntax-propertize-function): New function to replace it.
(sh-mode): Use it.
* lisp/progmodes/simula.el (simula-syntax-propertize-function): New var to
replace simula-font-lock-syntactic-keywords.
(simula-mode): Use it.
* lisp/progmodes/tcl.el (tcl-syntax-propertize-function): New var to
replace tcl-font-lock-syntactic-keywords.
(tcl-mode): Use it.
* lisp/progmodes/vhdl-mode.el (vhdl-mode): Use syntax-propertize-function
if available.
(vhdl-fontify-buffer): Adjust.
* lisp/textmodes/bibtex.el (bibtex-mode): Use syntax-propertize-function.
* lisp/textmodes/reftex.el (font-lock-syntactic-keywords): Don't declare
since we don't use it.
* lisp/textmodes/sgml-mode.el (sgml-syntax-propertize-function): New var to
replace sgml-font-lock-syntactic-keywords.
(sgml-mode): Use it.
* lisp/textmodes/tex-mode.el (tex-common-initialization, doctex-mode):
Use syntax-propertize-function.
* lisp/textmodes/texinfo.el (texinfo-syntax-propertize-function): New fun
to replace texinfo-font-lock-syntactic-keywords.
(texinfo-mode): Use it.
* test/indent/octave.m: Remove some `fixindent' not needed any more.
2010-09-11 01:13:42 +02:00
|
|
|
(defconst mixal-syntax-propertize-function
|
|
|
|
(syntax-propertize-rules
|
|
|
|
;; Normal comments start with a * in column 0 and end at end of line.
|
|
|
|
("^\\*" (0 "<"))
|
|
|
|
;; Every line can end with a comment which is placed after the operand.
|
|
|
|
;; I assume here that mnemonics without operands can not have a comment.
|
|
|
|
("^[[:alnum:]]*[ \t]+[[:alnum:]]+[ \t]+[^ \n\t]+[ \t]*\\([ \t]\\)[^\n \t]"
|
|
|
|
(1 "<"))))
|
2005-10-12 17:29:57 +00:00
|
|
|
|
|
|
|
(defvar mixal-font-lock-keywords
|
|
|
|
`(("^\\([A-Z0-9a-z]+\\)"
|
|
|
|
(1 mixal-font-lock-label-face))
|
|
|
|
(,(regexp-opt (mapcar (lambda (x) (symbol-name (car x)))
|
|
|
|
mixal-operation-codes-alist) 'words)
|
|
|
|
. mixal-font-lock-operation-code-face)
|
|
|
|
(,(regexp-opt mixal-assembly-pseudoinstructions 'words)
|
|
|
|
. mixal-font-lock-assembly-pseudoinstruction-face)
|
|
|
|
("^[A-Z0-9a-z]*[ \t]+[A-ZO-9a-z]+[ \t]+\\(=.*=\\)"
|
|
|
|
(1 font-lock-constant-face)))
|
|
|
|
"Keyword highlighting specification for `mixal-mode'.")
|
|
|
|
;; (makunbound 'mixal-font-lock-keywords)
|
2003-06-16 21:33:54 +00:00
|
|
|
|
|
|
|
(defvar mixal-describe-operation-code-history nil
|
|
|
|
"History list for describe operation code.")
|
|
|
|
|
2005-10-12 17:29:57 +00:00
|
|
|
(defun mixal-describe-operation-code (op-code)
|
2003-06-16 21:33:54 +00:00
|
|
|
"Display the full documentation of OP-CODE."
|
2005-10-12 17:29:57 +00:00
|
|
|
(interactive
|
|
|
|
(list
|
2003-06-16 21:33:54 +00:00
|
|
|
(let* ((completion-ignore-case t)
|
|
|
|
;; we already have a list, but it is not in the right format
|
2011-11-14 23:55:13 -08:00
|
|
|
;; transform it to a valid table so completion can use it
|
2011-05-23 14:57:17 -03:00
|
|
|
(table (mapcar (lambda (elm) (cons (symbol-name (car elm)) nil))
|
2003-06-16 21:33:54 +00:00
|
|
|
mixal-operation-codes-alist))
|
|
|
|
;; prompt is different depending on we are close to a valid op-code
|
2005-10-12 17:29:57 +00:00
|
|
|
(have-default (assq (intern-soft (current-word))
|
|
|
|
mixal-operation-codes-alist))
|
2003-06-16 21:33:54 +00:00
|
|
|
(prompt (concat "Describe operation code "
|
|
|
|
(if have-default
|
|
|
|
(concat "(default " (current-word) "): ")
|
|
|
|
": "))))
|
2005-10-12 17:29:57 +00:00
|
|
|
;; As the operation code to the user.
|
|
|
|
(completing-read prompt table nil t nil
|
|
|
|
'mixal-describe-operation-code-history
|
|
|
|
(current-word)))))
|
2003-06-16 21:33:54 +00:00
|
|
|
;; get the info on the op-code and output it to the help buffer
|
|
|
|
(let ((op-code-help (assq (intern-soft op-code) mixal-operation-codes-alist)))
|
|
|
|
(when op-code-help
|
|
|
|
(with-output-to-temp-buffer (buffer-name (get-buffer-create "*Help*"))
|
|
|
|
(princ op-code) (princ " is an mix operation code\n\n")
|
|
|
|
(princ (nth 5 op-code-help)) (terpri) (terpri)
|
|
|
|
(princ " group: ") (princ (nth 1 op-code-help)) (terpri)
|
|
|
|
(princ " nice name: ") (princ (nth 2 op-code-help)) (terpri)
|
|
|
|
(princ " OPCODE / C: ") (princ (nth 3 op-code-help)) (terpri)
|
|
|
|
(princ " MOD / F: ") (princ (nth 4 op-code-help)) (terpri)
|
|
|
|
(princ " time: ") (princ (nth 6 op-code-help)) (terpri)))))
|
|
|
|
|
|
|
|
;;;; Running
|
|
|
|
(defun mixal-run ()
|
2005-10-11 21:22:14 +00:00
|
|
|
"Run mixal file in current buffer, assumes that file has been compiled."
|
2003-06-16 21:33:54 +00:00
|
|
|
(interactive)
|
* progmodes/mixal-mode.el (mixal-run, mixal-debug): Call mixvm
only if it is bound.
* textmodes/reftex.el: Move autoloads for before all uses.
(reftex-make-overlay, reftex-overlay-put, reftex-move-overlay)
(reftex-delete-overlay): Move to the top level with the condition
in the body.
* progmodes/simula.el: Use when instead of if.
* iimage.el (iimage-locate-file): Define unconditionally.
* mail/mailabbrev.el (mail-abbrev-next-line):
* emulation/vip.el (vip-enlarge-region, vip-line)
(vip-next-line-at-bol, vip-previous-line)
(vip-previous-line-at-bol, vip-find-char, vip-put-back, ex-read):
Wrap with-no-warnings around uses of next-line and previous-line.
* ediff.el (run-ediff-from-cvs-buffer):
* ediff-vers.el (cvs-run-ediff-on-file-descriptor): Remove
function not used by pcl-cvs anymore.
(noninteractive, generic-sc-get-latest-rev)
(ediff-generic-sc-internal, ediff-generic-sc-merge-internal):
Delete support for long obsolete generic-sc.el.
2007-10-31 06:28:09 +00:00
|
|
|
(if (fboundp 'mixvm)
|
|
|
|
(mixvm (concat "mixvm -r -t -d "
|
|
|
|
(file-name-sans-extension (buffer-file-name))))
|
|
|
|
(error "mixvm.el needs to be loaded to run `mixvm'")))
|
2003-06-16 21:33:54 +00:00
|
|
|
|
|
|
|
(defun mixal-debug ()
|
2005-10-11 21:22:14 +00:00
|
|
|
"Start mixvm for debugging.
|
|
|
|
Assumes that file has been compiled with debugging support."
|
2003-06-16 21:33:54 +00:00
|
|
|
(interactive)
|
* progmodes/mixal-mode.el (mixal-run, mixal-debug): Call mixvm
only if it is bound.
* textmodes/reftex.el: Move autoloads for before all uses.
(reftex-make-overlay, reftex-overlay-put, reftex-move-overlay)
(reftex-delete-overlay): Move to the top level with the condition
in the body.
* progmodes/simula.el: Use when instead of if.
* iimage.el (iimage-locate-file): Define unconditionally.
* mail/mailabbrev.el (mail-abbrev-next-line):
* emulation/vip.el (vip-enlarge-region, vip-line)
(vip-next-line-at-bol, vip-previous-line)
(vip-previous-line-at-bol, vip-find-char, vip-put-back, ex-read):
Wrap with-no-warnings around uses of next-line and previous-line.
* ediff.el (run-ediff-from-cvs-buffer):
* ediff-vers.el (cvs-run-ediff-on-file-descriptor): Remove
function not used by pcl-cvs anymore.
(noninteractive, generic-sc-get-latest-rev)
(ediff-generic-sc-internal, ediff-generic-sc-merge-internal):
Delete support for long obsolete generic-sc.el.
2007-10-31 06:28:09 +00:00
|
|
|
(if (fboundp 'mixvm)
|
|
|
|
(mixvm (concat "mixvm "
|
|
|
|
(file-name-sans-extension (buffer-file-name))))
|
|
|
|
(error "mixvm.el needs to be loaded to run `mixvm'")))
|
2003-06-16 21:33:54 +00:00
|
|
|
|
|
|
|
;;;###autoload
|
2011-06-15 07:07:48 -07:00
|
|
|
(define-derived-mode mixal-mode prog-mode "mixal"
|
Derive from prog-mode, use derived-mode-p, and fix up various
minor style issues in lisp/progmodes.
* lisp/progmodes/vhdl-mode.el (vhdl-write-file-hooks-init)
(vhdl-hs-minor-mode, vhdl-ps-print-init): Fix make-local-variable ->
make-local-hook.
* lisp/progmodes/sh-script.el (sh-require-final-newline): Remove.
(sh-set-shell): Don't set require-final-newline since it's already done
by prog-mode.
* lisp/progmodes/modula2.el (m2-mode): Don't make m2-end-comment-column
since we never set it.
* lisp/progmodes/ebrowse.el (ebrowse-set-tree-indentation):
Use read-string and standard prompt.
* lisp/progmodes/dcl-mode.el (dcl-mode-map): Move init into declaration.
* lisp/progmodes/meta-mode.el (meta-mode-abbrev-table): Merge init and decl.
(meta-common-mode-syntax-table): Rename from meta-mode-syntax-table.
(meta-common-mode-map): Rename from meta-mode-map.
Remove C-m binding, which is a user preference, not mode specific.
(meta-common-mode): New major mode; replace meta-common-initialization.
* lisp/progmodes/js.el (js-mode): Call syntax-propertize rather than messing
around with font-lock.
* lisp/progmodes/etags.el (select-tags-table-mode):
Derive from special-mode.
* lisp/progmodes/octave-mod.el (octave-mode):
* lisp/progmodes/gdb-mi.el (gdb-inferior-io-mode, gdb-threads-mode)
(gdb-memory-mode, gdb-disassembly-mode, gdb-breakpoints-mode)
(gdb-frames-mode, gdb-locals-mode, gdb-registers-mode):
Let define-derived-mode do its job.
* lisp/progmodes/cpp.el (cpp-edit-mode-map):
Move initialization into declaration.
(cpp-edit-mode): Use define-derived-mode.
(cpp-edit-load): Use derived-mode-p.
* lisp/progmodes/mixal-mode.el (mixal-mode):
* lisp/progmodes/f90.el (f90-mode):
* lisp/progmodes/cfengine.el (cfengine-mode): Don't bother setting
require-final-newline since prog-mode does it already.
* lisp/progmodes/cc-cmds.el (c-update-modeline): Use match-string.
* lisp/progmodes/asm-mode.el (asm-mode-map): Fix menu setup.
* lisp/progmodes/antlr-mode.el: Require cc-mode upfront.
(antlr-mode-syntax-table, antlr-action-syntax-table): Initialize in
the declaration.
(antlr-directory-dependencies, antlr-show-makefile-rules):
Use derived-mode-p.
(antlr-language-option): Don't assume point-min==1.
(antlr-mode): Use define-derived-mode.
* lisp/progmodes/ada-mode.el: Use derived-mode-p.
(ada-mode): Use define-derived-mode.
Use hack-local-variables-hook.
* lisp/progmodes/vhdl-mode.el (vhdl-mode):
* lisp/progmodes/verilog-mode.el (verilog-mode):
* lisp/progmodes/vera-mode.el (vera-mode):
* lisp/progmodes/sql.el (sql-mode):
* lisp/progmodes/scheme.el (scheme-mode):
* lisp/progmodes/perl-mode.el (perl-mode):
* lisp/progmodes/octave-inf.el (inferior-octave-mode):
* lisp/progmodes/autoconf.el (autoconf-mode):
* lisp/progmodes/m4-mode.el (m4-mode):
* lisp/progmodes/inf-lisp.el (inferior-lisp-mode):
* lisp/progmodes/idlwave.el (idlwave-mode):
* lisp/progmodes/icon.el (icon-mode):
* lisp/progmodes/idlw-help.el (idlwave-help-mode):
* lisp/progmodes/dcl-mode.el (dcl-mode):
* lisp/progmodes/idlw-shell.el (idlwave-shell-mode):
* lisp/progmodes/ebrowse.el (ebrowse-tree-mode, ebrowse-electric-list-mode)
(ebrowse-member-mode, ebrowse-electric-position-mode):
Use define-derived-mode.
* lisp/progmodes/xscheme.el (xscheme-start)
(local-set-scheme-interaction-buffer, scheme-interaction-mode):
* lisp/progmodes/which-func.el (which-function):
* lisp/progmodes/vhdl-mode.el (vhdl-set-style):
* lisp/progmodes/verilog-mode.el (verilog-set-compile-command)
(verilog-modify-compile-command, verilog-error-regexp-add-xemacs)
(verilog-set-define, verilog-auto-reeval-locals):
* lisp/progmodes/sql.el (sql-product-font-lock, sql-interactive-mode):
* lisp/progmodes/simula.el (simula-mode):
* lisp/progmodes/scheme.el (scheme-mode-variables, dsssl-mode):
* lisp/progmodes/python.el (python-check, python-mode):
* lisp/progmodes/prolog.el (prolog-mode-variables):
* lisp/progmodes/gud.el (gud-tooltip-activate-mouse-motions):
* lisp/progmodes/ebrowse.el (ebrowse-view-file-other-frame):
* lisp/progmodes/delphi.el (delphi-mode):
* lisp/progmodes/cc-styles.el (c-setup-paragraph-variables):
* lisp/progmodes/cc-mode.el (c-basic-common-init, c-common-init)
(c-font-lock-init): Move make-local-variable to their setq.
* lisp/progmodes/xscheme.el (exit-scheme-interaction-mode)
(xscheme-enter-interaction-mode, xscheme-enter-debugger-mode)
(xscheme-debugger-mode-p, xscheme-send-string-1):
* lisp/progmodes/tcl.el (inferior-tcl-proc, tcl-current-word)
(tcl-load-file, tcl-restart-with-file):
* lisp/progmodes/ps-mode.el (ps-run-running):
* lisp/progmodes/gdb-mi.el (gud-watch, gdb-mouse-set-clear-breakpoint):
* lisp/progmodes/js.el (js--get-all-known-symbols):
* lisp/progmodes/inf-lisp.el (inferior-lisp-proc):
* lisp/progmodes/idlwave.el (idlwave-beginning-of-statement)
(idlwave-template, idlwave-update-buffer-routine-info)
(idlwave-update-current-buffer-info)
(idlwave-get-routine-info-from-buffers, idlwave-choose)
(idlwave-scan-class-info, idlwave-fix-keywords)
(idlwave-list-buffer-load-path-shadows):
* lisp/progmodes/idlw-toolbar.el (idlwave-toolbar, idlwave-toolbar-add)
(idlwave-toolbar-remove):
* lisp/progmodes/idlw-shell.el (idlwave-shell-save-and-action)
(idlwave-shell-file-name, idlwave-shell-electric-debug-all-off)
(idlwave-shell-menu-def):
* lisp/progmodes/idlw-complete-structtag.el
(idlwave-prepare-structure-tag-completion):
* lisp/progmodes/gud.el (gud-set-buffer):
* lisp/progmodes/f90.el (f90-backslash-not-special):
* lisp/progmodes/delphi.el (delphi-find-unit): Use derived-mode-p.
2010-12-10 15:00:25 -05:00
|
|
|
"Major mode for the mixal asm language."
|
2003-06-16 21:33:54 +00:00
|
|
|
(set (make-local-variable 'comment-start) "*")
|
2005-10-12 17:29:57 +00:00
|
|
|
(set (make-local-variable 'comment-start-skip) "^\\*[ \t]*")
|
|
|
|
(set (make-local-variable 'font-lock-defaults)
|
New syntax-propertize functionality.
* lisp/font-lock.el (font-lock-syntactic-keywords): Make obsolete.
(font-lock-fontify-syntactic-keywords-region): Move handling of
font-lock-syntactically-fontified to...
(font-lock-default-fontify-region): ...here.
Let syntax-propertize-function take precedence.
(font-lock-fontify-syntactically-region): Cal syntax-propertize.
* lisp/emacs-lisp/regexp-opt.el (regexp-opt-depth): Skip named groups.
* lisp/emacs-lisp/syntax.el (syntax-propertize-function)
(syntax-propertize-chunk-size, syntax-propertize--done)
(syntax-propertize-extend-region-functions): New vars.
(syntax-propertize-wholelines, syntax-propertize-multiline)
(syntax-propertize--shift-groups, syntax-propertize-via-font-lock)
(syntax-propertize): New functions.
(syntax-propertize-rules): New macro.
(syntax-ppss-flush-cache): Set syntax-propertize--done.
(syntax-ppss): Call syntax-propertize.
* lisp/progmodes/ada-mode.el (ada-set-syntax-table-properties)
(ada-after-change-function, ada-initialize-syntax-table-properties)
(ada-handle-syntax-table-properties): Only define when
syntax-propertize is not available.
(ada-mode): Use syntax-propertize-function.
* lisp/progmodes/autoconf.el (autoconf-mode):
Use syntax-propertize-function.
(autoconf-font-lock-syntactic-keywords): Remove.
* lisp/progmodes/cfengine.el (cfengine-mode):
Use syntax-propertize-function.
(cfengine-font-lock-syntactic-keywords): Remove.
* lisp/progmodes/cperl-mode.el (cperl-mode): Use syntax-propertize-function.
* lisp/progmodes/fortran.el (fortran-mode): Use syntax-propertize-function.
(fortran--font-lock-syntactic-keywords): New var.
(fortran-line-length): Update syntax-propertize-function and
fortran--font-lock-syntactic-keywords.
* lisp/progmodes/gud.el (gdb-script-syntax-propertize-function): New var;
replaces gdb-script-font-lock-syntactic-keywords.
(gdb-script-mode): Use it.
* lisp/progmodes/js.el (js--regexp-literal): Define while compiling.
(js-syntax-propertize-function): New var; replaces
js-font-lock-syntactic-keywords.
(js-mode): Use it.
* lisp/progmodes/make-mode.el (makefile-syntax-propertize-function):
New var; replaces makefile-font-lock-syntactic-keywords.
(makefile-mode): Use it.
(makefile-imake-mode): Adjust.
* lisp/progmodes/mixal-mode.el (mixal-syntax-propertize-function): New var;
replaces mixal-font-lock-syntactic-keywords.
(mixal-mode): Use it.
* lisp/progmodes/octave-mod.el (octave-syntax-propertize-sqs): New function
to replace octave-font-lock-close-quotes.
(octave-syntax-propertize-function): New function to replace
octave-font-lock-syntactic-keywords.
(octave-mode): Use it.
* lisp/progmodes/perl-mode.el (perl-syntax-propertize-function): New fun to
replace perl-font-lock-syntactic-keywords.
(perl-syntax-propertize-special-constructs): New fun to replace
perl-font-lock-special-syntactic-constructs.
(perl-font-lock-syntactic-face-function): New fun.
(perl-mode): Use it.
* lisp/progmodes/python.el (python-syntax-propertize-function): New var to
replace python-font-lock-syntactic-keywords.
(python-mode): Use it.
(python-quote-syntax): Simplify and adjust to new use.
* lisp/progmodes/ruby-mode.el (ruby-here-doc-beg-re):
Define while compiling.
(ruby-here-doc-end-re, ruby-here-doc-beg-match)
(ruby-font-lock-syntactic-keywords, ruby-comment-beg-syntax)
(syntax-ppss, ruby-in-ppss-context-p, ruby-in-here-doc-p)
(ruby-here-doc-find-end, ruby-here-doc-beg-syntax)
(ruby-here-doc-end-syntax): Only define when
syntax-propertize is not available.
(ruby-syntax-propertize-function, ruby-syntax-propertize-heredoc):
New functions.
(ruby-in-ppss-context-p): Update to new syntax of heredocs.
(electric-indent-chars): Silence bytecompiler.
(ruby-mode): Use prog-mode, syntax-propertize-function, and
electric-indent-chars.
* lisp/progmodes/sh-script.el (sh-st-symbol): Remove.
(sh-font-lock-close-heredoc, sh-font-lock-open-heredoc): Add eol arg.
(sh-font-lock-flush-syntax-ppss-cache, sh-font-lock-here-doc): Remove.
(sh-font-lock-quoted-subshell): Assume we've already matched $(.
(sh-font-lock-paren): Set syntax-multiline.
(sh-font-lock-syntactic-keywords): Remove.
(sh-syntax-propertize-function): New function to replace it.
(sh-mode): Use it.
* lisp/progmodes/simula.el (simula-syntax-propertize-function): New var to
replace simula-font-lock-syntactic-keywords.
(simula-mode): Use it.
* lisp/progmodes/tcl.el (tcl-syntax-propertize-function): New var to
replace tcl-font-lock-syntactic-keywords.
(tcl-mode): Use it.
* lisp/progmodes/vhdl-mode.el (vhdl-mode): Use syntax-propertize-function
if available.
(vhdl-fontify-buffer): Adjust.
* lisp/textmodes/bibtex.el (bibtex-mode): Use syntax-propertize-function.
* lisp/textmodes/reftex.el (font-lock-syntactic-keywords): Don't declare
since we don't use it.
* lisp/textmodes/sgml-mode.el (sgml-syntax-propertize-function): New var to
replace sgml-font-lock-syntactic-keywords.
(sgml-mode): Use it.
* lisp/textmodes/tex-mode.el (tex-common-initialization, doctex-mode):
Use syntax-propertize-function.
* lisp/textmodes/texinfo.el (texinfo-syntax-propertize-function): New fun
to replace texinfo-font-lock-syntactic-keywords.
(texinfo-mode): Use it.
* test/indent/octave.m: Remove some `fixindent' not needed any more.
2010-09-11 01:13:42 +02:00
|
|
|
`(mixal-font-lock-keywords))
|
|
|
|
(set (make-local-variable 'syntax-propertize-function)
|
|
|
|
mixal-syntax-propertize-function)
|
2005-10-11 21:22:14 +00:00
|
|
|
;; might add an indent function in the future
|
|
|
|
;; (set (make-local-variable 'indent-line-function) 'mixal-indent-line)
|
2013-08-13 00:56:43 -07:00
|
|
|
(set (make-local-variable 'compile-command)
|
|
|
|
(concat "mixasm "
|
|
|
|
(if buffer-file-name
|
|
|
|
(shell-quote-argument buffer-file-name)))))
|
2003-06-16 21:33:54 +00:00
|
|
|
|
|
|
|
(provide 'mixal-mode)
|
2003-09-01 15:45:59 +00:00
|
|
|
|
2003-06-16 21:33:54 +00:00
|
|
|
;;; mixal-mode.el ends here
|