Mercurial > emacs
changeset 83385:1cd4072747c6
Merged from miles@gnu.org--gnu-2005 (patch 593-595)
Patches applied:
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-593
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-594
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-595
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-425
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Wed, 19 Oct 2005 14:03:44 +0000 |
parents | 08b4dd6a6e87 (current diff) 33c8db02dc18 (diff) |
children | db4e74787e6f |
files | lisp/ChangeLog lisp/startup.el man/ChangeLog src/buffer.c src/keyboard.c src/sysdep.c src/xdisp.c src/xterm.c |
diffstat | 21 files changed, 1320 insertions(+), 1470 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Wed Oct 12 16:14:04 2005 +0000 +++ b/lisp/ChangeLog Wed Oct 19 14:03:44 2005 +0000 @@ -1,4 +1,76 @@ -2005-10-11 Sven Joachim <svenjoac@gmx.de> +2005-10-13 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> + + * toolbar/diropen.xpm, toolbar/diropen.pbm: New versions made from + Gnome file-manager.png. Suggested by + Joachim Nilsson <joachim.nilsson@vmlinux.org>. + + * toolbar/README: Add diropen.xpm. + +2005-10-13 Bill Wohler <wohler@newt.com> + + * makefile.w32-in (MH_E_SRC): Rename from MH-E-SRC per NMAKE + restrictions. Suggested by David Robinow <drobinow@gmail.com>. + +2005-10-13 Stefan Monnier <monnier@iro.umontreal.ca> + + * progmodes/mixal-mode.el (mixal-operation-codes-alist): + Don't waste the byte-compiler's time on constant data. + +2005-10-13 Kenichi Handa <handa@m17n.org> + + * international/utf-8.el (utf-8-compose): Display an invalid UTF-8 + byte with `escape-glyph' face. + + * international/fontset.el (ccl-encode-unicode-font): + Lookup utf-subst-table-for-encode, not ucs-mule-cjk-to-unicode. + Handle the case that ucs-mule-to-mule-unicode translates a character to + ASCII (usually for IPA characters). + +2005-10-12 Bill Wohler <wohler@newt.com> + + * makefile.w32-in (MH-E-SRC): New. Used by mh-autoloads. + (mh-autoloads): New. Builds mh-e/mh-loaddefs.el. Rebuilds if any + files in MH-E-SRC have been updated. + (updates, compile, recompile, bootstrap): Depend on mh-autoloads. + +2005-10-12 Stefan Monnier <monnier@iro.umontreal.ca> + + * progmodes/mixal-mode.el (mixal-operation-codes): Remove. + (mixal-mode-syntax-table): Add \n as end-comment. + (mixal-operation-codes-alist): Immediately initialize to full value. + (mixal-add-operation-code): Remove. + (mixal-describe-operation-code): Make the arg non-optional. + Use the interactive spec instead. + Use mixal-operation-codes-alist rather than mixal-operation-codes. + (mixal-font-lock-keywords): Don't highlight comments here any more. + (mixal-font-lock-syntactic-keywords): New var. + (mixal-mode): Use it. Fix comment-start-skip. + +2005-10-12 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> + + * startup.el (command-line-x-option-alist): -nb => -nbi + +2005-10-12 Kim F. Storm <storm@cua.dk> + + * startup.el (fancy-splash-default-action): Discard mouse click in + the spash screen window, as it has no sensible meaning in the + next window to be selected. Fixes error reported by Jan D. + +2005-10-12 Reiner Steib <Reiner.Steib@gmx.de> + + * desktop.el (desktop-load-file): Do nothing when FUNCTION is nil. + +2005-10-11 Stefan Monnier <monnier@iro.umontreal.ca> + + * progmodes/mixal-mode.el: Sync with version in the GNU MDK project. + Try to fix up minor layout issues like indentation, line break, etc... + (mixal-mode-syntax-table): Don't try to specify comment syntax, + because it doesn't work. + (mixal-operation-codes): Add some more codes. + (mixal-font-lock-keywords): Process comments here. + (mixal-mode): mixasm no longer needs -g option. + +2005-10-11 Sven Joachim <svenjoac@gmx.de> (tiny change) * progmodes/sh-script.el (sh-tmp-file): Use mktemp -t. Finish support for es and rc shells. @@ -798,7 +870,7 @@ color rxvt terminals by using the code xterm.el used to use before 2005-04-09 in order to match the colors used by rxvt. -2005-09-24 Emanuele Giaquinta <emanuele.giaquinta@gmail.com> (tiny change) +2005-09-24 Emanuele Giaquinta <emanuele.giaquinta@gmail.com> (tiny change) * term/rxvt.el (rxvt-register-default-colors): Add support for 88 colors rxvt-unicode terminals by using the same code as xterm.el. @@ -5940,8 +6012,8 @@ * log-view.el (log-view-file, log-view-message): Remove "-face" suffix from face names. - (log-view-file-face, log-view-message-face): New - backward-compatibility aliases for renamed faces. + (log-view-file-face, log-view-message-face): + New backward-compatibility aliases for renamed faces. (log-view-file-face, log-view-message-face): Use renamed log-view faces. @@ -5961,8 +6033,8 @@ (ruler-mode-margins-face, ruler-mode-fringes-face) (ruler-mode-column-number-face, ruler-mode-fill-column-face) (ruler-mode-comment-column-face, ruler-mode-goal-column-face) - (ruler-mode-tab-stop-face, ruler-mode-current-column-face): New - backward-compatibility aliases for renamed faces. + (ruler-mode-tab-stop-face, ruler-mode-current-column-face): + New backward-compatibility aliases for renamed faces. (ruler-mode-pad, ruler-mode-margins, ruler-mode-fringes) (ruler-mode-column-number, ruler-mode-fill-column) (ruler-mode-comment-column, ruler-mode-goal-column) @@ -6085,8 +6157,7 @@ * comint.el (comint-check-proc, make-comint-in-buffer) (comint-source-default): Doc fixes. - * term.el (term-send-string): Improve argument/docstring - consistency. + * term.el (term-send-string): Improve argument/docstring consistency. 2005-06-09 Luc Teirlinck <teirllm@auburn.edu> @@ -6203,12 +6274,11 @@ XEmacs code. (flyspell-word): Minor simplification. (flyspell-math-tex-command-p): Quieten the byte-compiler. - (flyspell-external-point-words): Remove unused vars `size' and - `start'. - (flyspell-do-correct): Rename from flyspell-xemacs-correct. Merge - the corresponding Emacs code. - (flyspell-correct-word, flyspell-xemacs-popup): Use - flyspell-do-correct. + (flyspell-external-point-words): Remove unused vars `size' and `start'. + (flyspell-do-correct): Rename from flyspell-xemacs-correct. + Merge the corresponding Emacs code. + (flyspell-correct-word, flyspell-xemacs-popup): + Use flyspell-do-correct. * emacs-lisp/debug.el (debug): Don't bury the buffer unless it's in a dedicated window. @@ -6247,8 +6317,7 @@ Add a completion-base-size-function property. * simple.el (completion-setup-function): Look for - completion-base-size-function property of - minibuffer-completion-table. + completion-base-size-function property of minibuffer-completion-table. * files.el (locate-file-completion): Doc fix.
--- a/lisp/desktop.el Wed Oct 12 16:14:04 2005 +0000 +++ b/lisp/desktop.el Wed Oct 19 14:03:44 2005 +0000 @@ -963,10 +963,11 @@ (defun desktop-load-file (function) "Load the file where auto loaded FUNCTION is defined." - (let ((fcell (symbol-function function))) - (when (and (listp fcell) - (eq 'autoload (car fcell))) - (load (cadr fcell))))) + (when function + (let ((fcell (symbol-function function))) + (when (and (listp fcell) + (eq 'autoload (car fcell))) + (load (cadr fcell)))))) ;; ---------------------------------------------------------------------------- ;; Create a buffer, load its file, set its mode, ...;
--- a/lisp/info.el Wed Oct 12 16:14:04 2005 +0000 +++ b/lisp/info.el Wed Oct 19 14:03:44 2005 +0000 @@ -3666,23 +3666,23 @@ ((equal tag "Up") Info-up-link-keymap)))))) (when Info-use-header-line (goto-char (point-min)) - (let ((header-end (line-end-position)) - header) - ;; If we find neither Next: nor Prev: link, show the entire - ;; node header. Otherwise, don't show the File: and Node: - ;; parts, to avoid wasting precious space on information that - ;; is available in the mode line. - (if (re-search-forward - "\\(next\\|up\\|prev[ious]*\\): " - header-end t) - (progn - (goto-char (match-beginning 1)) - (setq header (buffer-substring (point) header-end))) - (if (re-search-forward "node:[ \t]*[^ \t]+[ \t]*" header-end t) - (setq header + (let* ((header-end (line-end-position)) + (header + ;; If we find neither Next: nor Prev: link, show the entire + ;; node header. Otherwise, don't show the File: and Node: + ;; parts, to avoid wasting precious space on information that + ;; is available in the mode line. + (if (re-search-forward + "\\(next\\|up\\|prev[ious]*\\): " + header-end t) + (progn + (goto-char (match-beginning 1)) + (buffer-substring (point) header-end)) + (if (re-search-forward "node:[ \t]*[^ \t]+[ \t]*" + header-end t) (concat "No next, prev or up links -- " - (buffer-substring (point) header-end))) - (setq header (buffer-substring (point) header-end)))) + (buffer-substring (point) header-end)) + (buffer-substring (point) header-end))))) (put-text-property (point-min) (1+ (point-min)) 'header-line (replace-regexp-in-string @@ -3698,9 +3698,15 @@ ;; Fontify titles (goto-char (point-min)) - (when not-fontified-p - (while (re-search-forward "\n\\([^ \t\n].+\\)\n\\(\\*\\*+\\|==+\\|--+\\|\\.\\.+\\)$" - nil t) + (when (and font-lock-mode not-fontified-p) + (while (and (re-search-forward "\n\\([^ \t\n].+\\)\n\\(\\*\\*+\\|==+\\|--+\\|\\.\\.+\\)$" + nil t) + ;; Only consider it as an underlined title if the ASCII + ;; underline has the same size as the text. A typical + ;; counter example is when a continuation "..." is alone + ;; on a line. + (= (- (match-end 1) (match-beginning 1)) + (- (match-end 2) (match-beginning 2)))) (let* ((c (preceding-char)) (face (cond ((= c ?*) 'info-title-1)
--- a/lisp/international/fontset.el Wed Oct 12 16:14:04 2005 +0000 +++ b/lisp/international/fontset.el Wed Oct 19 14:03:44 2005 +0000 @@ -173,39 +173,42 @@ ((if (r2 >= 0) ;; This is a 2D charset. (r1 = ((r1 << 7) | r2))) - (lookup-character ucs-mule-cjk-to-unicode r0 r1) + (lookup-character utf-subst-table-for-encode r0 r1) (if r7 ;; We got it! ((r1 = (r0 >> 8)) (r2 = (r0 & #xFF))) ;; Look for a translation for non-ASCII chars. ((translate-character ucs-mule-to-mule-unicode r0 r1) - (if (r0 == ,(charset-id 'latin-iso8859-1)) - ((r2 = (r1 + 128)) + (if (r0 == ,(charset-id 'ascii)) + ((r2 = r1) (r1 = 0)) - ((r2 = (r1 & #x7F)) - (r1 >>= 7) - (if (r0 == ,(charset-id 'mule-unicode-0100-24ff)) - ((r1 *= 96) - (r1 += r2) - (r1 += ,(- #x100 (* 32 96) 32)) - (r1 >8= 0) - (r2 = r7)) - (if (r0 == ,(charset-id 'mule-unicode-2500-33ff)) - ((r1 *= 96) - (r1 += r2) - (r1 += ,(- #x2500 (* 32 96) 32)) - (r1 >8= 0) - (r2 = r7)) - (if (r0 == ,(charset-id 'mule-unicode-e000-ffff)) - ((r1 *= 96) - (r1 += r2) - (r1 += ,(- #xe000 (* 32 96) 32)) - (r1 >8= 0) - (r2 = r7)) - ;; No way, use the glyph for U+FFFD. - ((r1 = #xFF) - (r2 = #xFD))))))))))))) + ((if (r0 == ,(charset-id 'latin-iso8859-1)) + ((r2 = (r1 + 128)) + (r1 = 0)) + ((r2 = (r1 & #x7F)) + (r1 >>= 7) + (if (r0 == ,(charset-id 'mule-unicode-0100-24ff)) + ((r1 *= 96) + (r1 += r2) + (r1 += ,(- #x100 (* 32 96) 32)) + (r1 >8= 0) + (r2 = r7)) + (if (r0 == ,(charset-id 'mule-unicode-2500-33ff)) + ((r1 *= 96) + (r1 += r2) + (r1 += ,(- #x2500 (* 32 96) 32)) + (r1 >8= 0) + (r2 = r7)) + (if (r0 == ,(charset-id 'mule-unicode-e000-ffff)) + ((r1 *= 96) + (r1 += r2) + (r1 += ,(- #xe000 (* 32 96) 32)) + (r1 >8= 0) + (r2 = r7)) + ;; No way, use the glyph for U+FFFD. + ((r1 = #xFF) + (r2 = #xFD))))))))))))))) "Encode characters for display with iso10646 font. Translate through the translation-hash-table named `ucs-mule-cjk-to-unicode' and the translation-table named
--- a/lisp/international/utf-8.el Wed Oct 12 16:14:04 2005 +0000 +++ b/lisp/international/utf-8.el Wed Oct 19 14:03:44 2005 +0000 @@ -934,7 +934,8 @@ 'help-echo 'utf-8-help-echo) (if (= l 2) (put-text-property (point) (min (point-max) (+ l (point))) - 'display (format "\\%03o" ch)) + 'display (propertize (format "\\%03o" ch) + 'face 'escape-glyph)) (compose-region (point) (+ l (point)) ?$,3u=(B)) (forward-char l)) (forward-char 1))))
--- a/lisp/makefile.w32-in Wed Oct 12 16:14:04 2005 +0000 +++ b/lisp/makefile.w32-in Wed Oct 19 14:03:44 2005 +0000 @@ -176,7 +176,7 @@ $(srcdir)/update-subdirs $$file; \ done; -updates: update-subdirs autoloads finder-data custom-deps +updates: update-subdirs autoloads mh-autoloads finder-data custom-deps # Update the AUTHORS file. @@ -207,7 +207,7 @@ # compiled find the right files. # Need separate version for sh and native cmd.exe -compile: subdirs.el compile-$(SHELLTYPE) doit +compile: subdirs.el mh-autoloads compile-$(SHELLTYPE) doit compile-CMD: # -for %%f in ($(lisp) $(WINS)) do for %%g in (%%f\*.elc) do @attrib -r %%g @@ -282,9 +282,47 @@ # Note that this doesn't create .elc files. It only recompiles if an # .elc is present. -recompile: doit +recompile: mh-autoloads doit $(emacs) -f batch-byte-recompile-directory $(lisp) +# Update MH-E internal autoloads. These are not to be confused with +# the autoloads for the MH-E entry points, which are already in +# loaddefs.el. +MH_E_SRC = $(lisp)/mh-e/mh-acros.el $(lisp)/mh-e/mh-alias.el \ + $(lisp)/mh-e/mh-comp.el $(lisp)/mh-e/mh-customize.el \ + $(lisp)/mh-e/mh-e.el $(lisp)/mh-e/mh-funcs.el \ + $(lisp)/mh-e/mh-mime.el $(lisp)/mh-e/mh-pick.el \ + $(lisp)/mh-e/mh-print.el $(lisp)/mh-e/mh-inc.el \ + $(lisp)/mh-e/mh-init.el $(lisp)/mh-e/mh-index.el \ + $(lisp)/mh-e/mh-identity.el $(lisp)/mh-e/mh-junk.el \ + $(lisp)/mh-e/mh-seq.el $(lisp)/mh-e/mh-speed.el \ + $(lisp)/mh-e/mh-utils.el + +mh-autoloads: $(lisp)/mh-e/mh-loaddefs.el +$(lisp)/mh-e/mh-loaddefs.el: $(MH_E_SRC) + echo ";;; mh-loaddefs.el --- automatically extracted autoloads" > $@ + echo ";;" >> $@ + echo ";;; Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc." >> $@ + echo ";;; Author: Bill Wohler <wohler@newt.com>" >> $@ + echo ";;; Keywords: mail" >> $@ + echo ";;; Commentary:" >> $@ + echo ";;; Change Log:" >> $@ + echo ";;; Code:" >> $@ + $(EMACS) $(EMACSOPT) \ + -l autoload \ + --eval "(setq generate-autoload-cookie \";;;###mh-autoload\")" \ + --eval "(setq generated-autoload-file \"$(lisp)/mh-e/mh-loaddefs.el\")" \ + --eval "(setq make-backup-files nil)" \ + -f batch-update-autoloads $(lisp)/mh-e + echo "" >> $@ + echo "(provide 'mh-loaddefs)" >> $@ + echo ";;; Local Variables:" >> $@ + echo ";;; version-control: never" >> $@ + echo ";;; no-byte-compile: t" >> $@ + echo ";;; no-update-autoloads: t" >> $@ + echo ";;; End:" >> $@ + echo ";;; mh-loaddefs.el ends here" >> $@ + # Prepare a bootstrap in the lisp subdirectory. # # Build loaddefs.el to make sure it's up-to-date. If it's not, that @@ -316,7 +354,7 @@ # When done, remove bootstrap-emacs from ../bin, so that # it will not be mistaken for an installed binary. -bootstrap: update-subdirs autoloads compile finder-data custom-deps +bootstrap: update-subdirs autoloads mh-autoloads compile finder-data custom-deps - $(DEL) $(EMACS) #
--- a/lisp/mh-e/.cvsignore Wed Oct 12 16:14:04 2005 +0000 +++ b/lisp/mh-e/.cvsignore Wed Oct 19 14:03:44 2005 +0000 @@ -1,1 +1,2 @@ +mh-autoloads.el mh-loaddefs.el
--- a/lisp/progmodes/mixal-mode.el Wed Oct 12 16:14:04 2005 +0000 +++ b/lisp/progmodes/mixal-mode.el Wed Oct 19 14:03:44 2005 +0000 @@ -46,6 +46,14 @@ ;;; History: ;; Version 0.3: +;; 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. ;; 08/10/05: sync mdk and emacs cvs ;; from emacs: compile-command and require-final-newline ;; from mdk: see version 0.2 @@ -79,10 +87,12 @@ ;;; Syntax table (defvar mixal-mode-syntax-table (let ((st (make-syntax-table))) - ;; (modify-syntax-entry ?* "<" st) we need to do a bit more to make - ;; (modify-syntax-entry ?\n ">" st) fontlocking for comments work + ;; We need to do a bit more to make fontlocking for comments work. + ;; See mixal-font-lock-syntactic-keywords. + ;; (modify-syntax-entry ?* "<" st) + (modify-syntax-entry ?\n ">" st) st) - "Syntax table for `dot-mode'.") + "Syntax table for `mixal-mode'.") (defvar mixal-font-lock-label-face 'font-lock-variable-name-face "Face name to use for label names. @@ -99,48 +109,10 @@ Default value is that of `font-lock-builtin-face', but you can modify its value.") -(defvar mixal-operation-codes - '("NOP" "ADD" "FADD" "SUB" "FSUB" "MUL" "FMUL" "DIV" "FDIV" "NUM" "CHAR" - "HLT" "SLA" "SRA" "SLAX" "SRAX" "SLC" "SRC" "MOVE" "LDA" "LD1" "LD2" "LD3" - "LD4" "LD5" "LD6" "LDX" "LDAN" "LD1N" "LD2N" "LD3N" "LD4N" "LD5N" "LD6N" - "LDXN" "STA" "ST1" "ST2" "ST3" "ST4" "ST5" "ST6" "STX" "STJ" "STZ" "JBUS" - "IOC" "IN" "OUT" "JRAD" "JMP" "JSJ" "JOV" "JNOV" - "JL" "JE" "JG" "JGE" "JNE" "JLE" - "JAN" "J1N" "J2N" "J3N" "J4N" "J5N" "J6N" "JXN" - "JAZ" "J1Z" "J2Z" "J3Z" "J4Z" "J5Z" "J6Z" "JXZ" - "JAP" "J1P" "J2P" "J3P" "J4P" "J5P" "J6P" "JXP" - "JANN" "J1NN" "J2NN" "J3NN" "J4NN" "J5NN" "J6NN" "JXNN" - "JANZ" "J1NZ" "J2NZ" "J3NZ" "J4NZ" "J5NZ" "J6NZ" "JXNZ" - "JANP" "J1NP" "J2NP" "J3NP" "J4NP" "J5NP" "J6NP" "JXNP" - "INCA" "DECA" "ENTA" "ENNA" "INC1" "DEC1" "ENT1" "ENN1" - "INC2" "DEC2" "ENT2" "ENN2" "INC3" "DEC3" "ENT3" "ENN3" "INC4" "DEC4" - "ENT4" "ENN4" "INC5" "DEC5" "ENT5" "ENN5" "INC6" "DEC6" "ENT6" "ENN6" - "INCX" "DECX" "ENTX" "ENNX" "CMPA" "FCMP" "CMP1" "CMP2" "CMP3" "CMP4" - "CMP5" "CMP6" "CMPX") - "List of possible operation codes as strings.") -;; (makunbound 'mixal-operation-codes) - (defvar mixal-assembly-pseudoinstructions '("ORIG" "EQU" "CON" "ALF" "END") "List of possible assembly pseudoinstructions.") -;;; Font-locking: -(defvar mixal-font-lock-keywords - `(("^\\([A-Z0-9a-z]+\\).*$" - (1 mixal-font-lock-label-face)) - (,(regexp-opt mixal-operation-codes '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)) - ("^[A-Z0-9a-z]*[ \t]+[A-Z0-9a-z]+[ \t]+[A-Z0-9a-z,():+-\\*=\" ]*\t+\\(.*\\)$" - (1 font-lock-comment-face)) - ("^\\*.*$" . font-lock-comment-face)) - "Keyword highlighting specification for `mixal-mode'.") -;; (makunbound 'mixal-font-lock-keywords) - ;;;; Compilation ;; Output from mixasm is compatible with default behavior of emacs, ;; I just added a key (C-cc) and modified the make-command. @@ -149,7 +121,898 @@ ;; Tabs works well by default. ;;;; Describe -(defvar mixal-operation-codes-alist '() +(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. + ;; + ;; 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. +Uses a + when there is no sign in subfield. Subfield is left padded with +zeros to make a word." + 2) + + (LDX loading "load X" 15 field + "Put in rX the contents of cell no. M. +Uses a + when there is no sign in subfield. Subfield is left padded with +zeros to make a word." + 2) + + (LD1 loading "load I1" 9 field + "Put in rI1 the contents of cell no. M. +Uses a + when there is no sign in subfield. Subfield is left padded with +zeros to make a word. Index registers only have 2 bytes and a sign, Trying +to set anything more that that will result in undefined behavior." + 2) + + (LD2 loading "load I2" 10 field + "Put in rI2 the contents of cell no. M. +Uses a + when there is no sign in subfield. Subfield is left padded with +zeros to make a word. Index registers only have 2 bytes and a sign, Trying +to set anything more that that will result in undefined behavior." + 2) + + (LD3 loading "load I3" 11 field + "Put in rI3 the contents of cell no. M. +Uses a + when there is no sign in subfield. Subfield is left padded with +zeros to make a word. Index registers only have 2 bytes and a sign, Trying +to set anything more that that will result in undefined behavior." + 2) + + (LD4 loading "load I4" 12 field + "Put in rI4 the contents of cell no. M. +Uses a + when there is no sign in subfield. Subfield is left padded with +zeros to make a word. Index registers only have 2 bytes and a sign, Trying +to set anything more that that will result in undefined behavior." + 2) + + (LD5 loading "load I5" 13 field + "Put in rI5 the contents of cell no. M. +Uses a + when there is no sign in subfield. Subfield is left padded with +zeros to make a word. Index registers only have 2 bytes and a sign, Trying +to set anything more that that will result in undefined behavior." + 2) + + (LD6 loading "load I6" 14 field + "Put in rI6 the contents of cell no. M. +Uses a + when there is no sign in subfield. Subfield is left padded with +zeros to make a word. Index registers only have 2 bytes and a sign, Trying +to set anything more that that will result in undefined behavior." + 2) + + (LDAN loading "load A negative" 16 field + "Put in rA the contents of cell no. M, with opposite sign. +Uses a + when there is no sign in subfield, otherwise use the opposite sign. +Subfield is left padded with zeros to make a word." + 2) + + (LDXN loading "load X negative" 23 field + "Put in rX the contents of cell no. M, with opposite sign. +Uses a + when there is no sign in subfield, otherwise use the opposite sign. +Subfield is left padded with zeros to make a word." + 2) + + (LD1N loading "load I1 negative" 17 field + "Put in rI1 the contents of cell no. M, with opposite sign. +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 +have 2 bytes and a sign, Trying to set anything more that that will result +in undefined behavior." + 2) + + (LD2N loading "load I2 negative" 18 field + "Put in rI2 the contents of cell no. M, with opposite sign. +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 +have 2 bytes and a sign, Trying to set anything more that that will result +in undefined behavior." + 2) + + (LD3N loading "load I3 negative" 19 field + "Put in rI3 the contents of cell no. M, with opposite sign. +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 +have 2 bytes and a sign, Trying to set anything more that that will result +in undefined behavior." + 2) + + (LD4N loading "load I4 negative" 20 field + "Put in rI4 the contents of cell no. M, with opposite sign. +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 +have 2 bytes and a sign, Trying to set anything more that that will result +in undefined behavior." + 2) + + (LD5N loading "load I5 negative" 21 field + "Put in rI5 the contents of cell no. M, with opposite sign. +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 +have 2 bytes and a sign, Trying to set anything more that that will result +in undefined behavior." + 2) + + (LD6N loading "load I6 negative" 22 field + "Put in rI6 the contents of cell no. M, with opposite sign. +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 +have 2 bytes and a sign, Trying to set anything more that that will result +in undefined behavior." + 2) + + (STA storing "store A" 24 field + "Store in cell Nr. M the contents of rA. +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." + 2) + + (STX storing "store X" 31 field + "Store in cell Nr. M the contents of rX. +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." + 2) + + (ST1 storing "store I1" 25 field + "Store in cell Nr. M the contents of rI1. +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." + 2) + + (ST2 storing "store I2" 26 field + "Store in cell Nr. M the contents of rI2. +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." + 2) + + (ST3 storing "store I3" 27 field + "Store in cell Nr. M the contents of rI3. +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." + 2) + + (ST4 storing "store I4" 28 field + "Store in cell Nr. M the contents of rI4. +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." + 2) + + (ST5 storing "store I5" 29 field + "Store in cell Nr. M the contents of rI5. +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." + 2) + + (ST6 storing "store I6" 30 field + "Store in cell Nr. M the contents of rI6. +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." + 2) + + (STJ storing "store J" 32 field + "Store in cell Nr. M the contents of rJ. +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)." + 2) + + (STZ storing "store zero" 33 field + "Store in cell Nr. M '+ 0'. +The modification of the operation code represents the subfield of the +memory cell that is to be overwritten with zeros." + 2) + + (ADD arithmetic "add" 1 field + "Add to A the contents of cell Nr. M. +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." + 2) + + (SUB arithmetic "subtract" 2 field + "Subtract to A the contents of cell Nr. M. +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." + 2) + + (MUL arithmetic "multiply" 3 field + "Multiplies the contents of cell Nr. M with A, result is 10 bytes and stored in rA and rX. +The sign is + if the sign of rA and cell M where the same, otherwise, it is -" + 10) + + (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. +The sign is taken from rA, and after the divide the sign of rA is set to + when +both the sign of rA and M where the same. Divide by zero and overflow of rA +result in undefined behavior." + 12) + + (ENTA address-transfer "enter A" 48 + "Literal value is stored in rA. +Indexed, stores value of index in rA." + 1) + + (ENTX address-transfer "enter X" 55 + "Literal value is stored in rX. +Indexed, stores value of index in rX." + 1) + + (ENT1 address-transfer "Enter rI1" 49 + "Literal value is stored in rI1. +Indexed, stores value of index in rI1." + 1) + + (ENT2 address-transfer "Enter rI2" 50 + "Literal value is stored in rI2. +Indexed, stores value of index in rI2." + 1) + + (ENT3 address-transfer "Enter rI3" 51 + "Literal value is stored in rI3. +Indexed, stores value of index in rI3." + 1) + + (ENT4 address-transfer "Enter rI4" 52 + "Literal value is stored in rI4. +Indexed, stores value of index in rI4." + 1) + + (ENT5 address-transfer "Enter rI5" 53 + "Literal value is stored in rI5. +Indexed, stores value of index in rI5." + 1) + + (ENT6 address-transfer "Enter rI6" 54 + "Literal value is stored in rI6. +Indexed, stores value of index in rI6." + 1) + + (ENNA address-transfer "enter negative A" 48 + "Literal value is stored in rA with opposite sign. +Indexed, stores value of index in rA with opposite sign." + 1) + + (ENNX address-transfer "enter negative X" 55 + "Literal value is stored in rX with opposite sign. +Indexed, stores value of index in rX with opposite sign." + 1) + + (ENN1 address-transfer "Enter negative rI1" 49 + "Literal value is stored in rI1 with opposite sign. +Indexed, stores value of index in rI1 with opposite sign." + 1) + + (ENN2 address-transfer "Enter negative rI2" 50 + "Literal value is stored in rI2 with opposite sign. +Indexed, stores value of index in rI2 with opposite sign." + 1) + + (ENN3 address-transfer "Enter negative rI3" 51 + "Literal value is stored in rI3 with opposite sign. +Indexed, stores value of index in rI3 with opposite sign." + 1) + + (ENN4 address-transfer "Enter negative rI4" 52 + "Literal value is stored in rI4 with opposite sign. +Indexed, stores value of index in rI4 with opposite sign." + 1) + + (ENN5 address-transfer "Enter negative rI5" 53 + "Literal value is stored in rI5 with opposite sign. +Indexed, stores value of index in rI5 with opposite sign." + 1) + + (ENN6 address-transfer "Enter negative rI6" 54 + "Literal value is stored in rI6 with opposite sign. +Indexed, stores value of index in rI6 with opposite sign." + 1) + + (INCA address-transfer "increase A" 48 + "Increase register A with the literal value of M. +On overflow the overflow toggle is set." + 1) + + (INCX address-transfer "increase X" 55 + "Increase register X with the literal value of M. +On overflow the overflow toggle is set." + 1) + + (INC1 address-transfer "increase I1" 49 + "Increase register I1 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (INC2 address-transfer "increase I2" 50 + "Increase register I2 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (INC3 address-transfer "increase I3" 51 + "Increase register I3 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (INC4 address-transfer "increase I4" 52 + "Increase register I4 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (INC5 address-transfer "increase I5" 53 + "Increase register I5 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (INC6 address-transfer "increase I6" 54 + "Increase register I6 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (DECA address-transfer "decrease A" 48 + "Decrease register A with the literal value of M. +On overflow the overflow toggle is set." + 1) + + (DECX address-transfer "decrease X" 55 + "Decrease register X with the literal value of M. +On overflow the overflow toggle is set." + 1) + + (DEC1 address-transfer "decrease I1" 49 + "Decrease register I1 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (DEC2 address-transfer "decrease I2" 50 + "Decrease register I2 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (DEC3 address-transfer "decrease I3" 51 + "Decrease register I3 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (DEC4 address-transfer "decrease I4" 52 + "Decrease register I4 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (DEC5 address-transfer "decrease I5" 53 + "Decrease register I5 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (DEC6 address-transfer "decrease I6" 54 + "Decrease register I6 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (CMPA comparison "compare A" 56 field + "Compare contents of A with contents of M. +The field specifier works on both fields. The comparison indicator +is set to LESS, EQUAL or GREATER depending on the outcome." + 2) + + (CMPX comparison "compare X" 63 field + "Compare contents of rX with contents of M. +The field specifier works on both fields. The comparison indicator +is set to LESS, EQUAL or GREATER depending on the outcome." + 2) + + (CMP1 comparison "compare I1" 57 field + "Compare contents of rI1 with contents of M. +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." + 2) + + (CMP2 comparison "compare I2" 58 field + "Compare contents of rI2 with contents of M. +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." + 2) + + (CMP3 comparison "compare I3" 59 field + "Compare contents of rI3 with contents of M. +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." + 2) + + (CMP4 comparison "compare I4" 60 field + "Compare contents of rI4 with contents of M. +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." + 2) + + (CMP5 comparison "compare I5" 61 field + "Compare contents of rI5 with contents of M. +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." + 2) + + (CMP6 comparison "compare I6" 62 field + "Compare contents of rI6 with contents of M. +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." + 2) + + (JMP jump "jump" 39 + "Unconditional jump. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JSJ jump "jump, save J" 39 + "Unconditional jump, but rJ is not modified." + 1) + + (JOV jump "jump on overflow" 39 + "Jump if OV is set (and turn it off). +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JNOV jump "Jump on no overflow" 39 + "Jump if OV is not set (and turn it off). +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JL jump "Jump on less" 39 + "Jump if '[CM] = L'. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JE jump "Jump on equal" 39 + "Jump if '[CM] = E'. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JG jump "Jump on greater" 39 + "Jump if '[CM] = G'. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JGE jump "Jump on not less" 39 + "Jump if '[CM]' does not equal 'L'. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JNE jump "Jump on not equal" 39 + "Jump if '[CM]' does not equal 'E'. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JLE jump "Jump on not greater" 39 + "Jump if '[CM]' does not equal 'G'. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JAN jump "jump A negative" 40 + "Jump if the content of rA is negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JAZ jump "jump A zero" 40 + "Jump if the content of rA is zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JAP jump "jump A positive" 40 + "Jump if the content of rA is positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JANN jump "jump A non-negative" 40 + "Jump if the content of rA is non-negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JANZ jump "jump A non-zero" 40 + "Jump if the content of rA is non-zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JANP jump "jump A non-positive" 40 + "Jump if the content of rA is non-positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JXN jump "jump X negative" 47 + "Jump if the content of rX is negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JXZ jump "jump X zero" 47 + "Jump if the content of rX is zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JXP jump "jump X positive" 47 + "Jump if the content of rX is positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JXNN jump "jump X non-negative" 47 + "Jump if the content of rX is non-negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JXNZ jump "jump X non-zero" 47 + "Jump if the content of rX is non-zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JXNP jump "jump X non-positive" 47 + "Jump if the content of rX is non-positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J1N jump "jump I1 negative" 41 + "Jump if the content of rI1 is negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J1Z jump "jump I1 zero" 41 + "Jump if the content of rI1 is zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J1P jump "jump I1 positive" 41 + "Jump if the content of rI1 is positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J1NN jump "jump I1 non-negative" 41 + "Jump if the content of rI1 is non-negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J1NZ jump "jump I1 non-zero" 41 + "Jump if the content of rI1 is non-zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J1NP jump "jump I1 non-positive" 41 + "Jump if the content of rI1 is non-positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J2N jump "jump I2 negative" 41 + "Jump if the content of rI2 is negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J2Z jump "jump I2 zero" 41 + "Jump if the content of rI2 is zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J2P jump "jump I2 positive" 41 + "Jump if the content of rI2 is positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J2NN jump "jump I2 non-negative" 41 + "Jump if the content of rI2 is non-negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J2NZ jump "jump I2 non-zero" 41 + "Jump if the content of rI2 is non-zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J2NP jump "jump I2 non-positive" 41 + "Jump if the content of rI2 is non-positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J3N jump "jump I3 negative" 41 + "Jump if the content of rI3 is negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J3Z jump "jump I3 zero" 41 + "Jump if the content of rI3 is zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J3P jump "jump I3 positive" 41 + "Jump if the content of rI3 is positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J3NN jump "jump I3 non-negative" 41 + "Jump if the content of rI3 is non-negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J3NZ jump "jump I3 non-zero" 41 + "Jump if the content of rI3 is non-zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J3NP jump "jump I3 non-positive" 41 + "Jump if the content of rI3 is non-positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J4N jump "jump I4 negative" 41 + "Jump if the content of rI4 is negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J4Z jump "jump I4 zero" 41 + "Jump if the content of rI4 is zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J4P jump "jump I4 positive" 41 + "Jump if the content of rI4 is positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J4NN jump "jump I4 non-negative" 41 + "Jump if the content of rI4 is non-negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J4NZ jump "jump I4 non-zero" 41 + "Jump if the content of rI4 is non-zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J4NP jump "jump I4 non-positive" 41 + "Jump if the content of rI4 is non-positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J5N jump "jump I5 negative" 41 + "Jump if the content of rI5 is negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J5Z jump "jump I5 zero" 41 + "Jump if the content of rI5 is zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J5P jump "jump I5 positive" 41 + "Jump if the content of rI5 is positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J5NN jump "jump I5 non-negative" 41 + "Jump if the content of rI5 is non-negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J5NZ jump "jump I5 non-zero" 41 + "Jump if the content of rI5 is non-zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J5NP jump "jump I5 non-positive" 41 + "Jump if the content of rI5 is non-positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J6N jump "jump I6 negative" 41 + "Jump if the content of rI6 is negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J6Z jump "jump I6 zero" 41 + "Jump if the content of rI6 is zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J6P jump "jump I6 positive" 41 + "Jump if the content of rI6 is positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J6NN jump "jump I6 non-negative" 41 + "Jump if the content of rI6 is non-negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J6NZ jump "jump I6 non-zero" 41 + "Jump if the content of rI6 is non-zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J6NP jump "jump I6 non-positive" 41 + "Jump if the content of rI6 is non-positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (SLA miscellaneous "shift left A" 6 + "Shift to A, M bytes left. +Hero's will be added to the right." + 2) + + (SRA miscellaneous "shift right A" 6 + "Shift to A, M bytes right. +Zeros will be added to the left." + 2) + + (SLAX miscellaneous "shift left AX" 6 + "Shift AX, M bytes left. +Zeros will be added to the right." + 2) + + + (SRAX miscellaneous "shift right AX" 6 + "Shift AX, M bytes right. +Zeros will be added to the left." + 2) + + (SLC miscellaneous "shift left AX circularly" 6 + "Shift AX, M bytes left circularly. +The bytes that fall off to the left will be added to the right." + 2) + + (SRC miscellaneous "shift right AX circularly" 6 + "Shift AX, M bytes right circularly. +The bytes that fall off to the right will be added to the left." + 2) + + (MOVE miscellaneous "move" 7 number + "Move MOD words from M to the location stored in rI1." + (+ 1 (* 2 number))) + + (NOP miscellaneous "no operation" 0 ignored + "No operation, M and F are not used by the machine." + 1) + + (HLT miscellaneous "halt" 5 + "Halt. +Stop instruction fetching." + 1) + + (IN input-output "input" 36 unit + "Transfer a block of words from the specified unit to memory. +The transfer starts at address M." + 1) + + (OUT input-output "output" 37 unit + "Transfer a block of words from memory. +The transfer starts at address M to the specified unit." + 1) + + (IOC input-output "input-output control" 35 unit + "Perform a control operation. +The control operation is given by M on the specified unit." + 1) + + (JRED input-output "jump ready" 38 unit + "Jump to M if the specified unit is ready." + 1) + + (JBUS input-output "jump busy" 34 unit + "Jump to M if the specified unit is busy." + 1) + + (NUM conversion "convert to numeric" 5 + "Convert rAX to its numerical value and store it in rA. +the register rAX is assumed to contain a character representation of +a number." + 10) + + (CHAR conversion "convert to characters" 5 + "Convert the number stored in rA to a character representation. +The converted character representation is stored in rAX." + 10)) + "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) @@ -162,1114 +1025,36 @@ EXECUTION-TIME holds info about the time it takes, number or string.") ;; (makunbound 'mixal-operation-codes-alist) -(defun mixal-add-operation-code (op-code group full-name C-byte F-byte - description execution-time) - "Add an operation code to `mixal-operation-codes-alist'." - (setq mixal-operation-codes-alist - (cons (list op-code group full-name C-byte F-byte - description execution-time) - mixal-operation-codes-alist))) -;; now add each operation code - -(mixal-add-operation-code - 'LDA 'loading "load A" 8 'field - "Put in rA the contents of cell no. M. -Uses a + when there is no sign in subfield. Subfield is left padded with -zeros to make a word." - 2) - -(mixal-add-operation-code - 'LDX 'loading "load X" 15 'field - "Put in rX the contents of cell no. M. -Uses a + when there is no sign in subfield. Subfield is left padded with -zeros to make a word." - 2) - -(mixal-add-operation-code - 'LD1 'loading "load I1" (+ 8 1) 'field - "Put in rI1 the contents of cell no. M. -Uses a + when there is no sign in subfield. Subfield is left padded with -zeros to make a word. Index registers only have 2 bytes and a sign, Trying -to set anything more that that will result in undefined behavior." - 2) - -(mixal-add-operation-code - 'LD2 'loading "load I2" (+ 8 2) 'field - "Put in rI2 the contents of cell no. M. -Uses a + when there is no sign in subfield. Subfield is left padded with -zeros to make a word. Index registers only have 2 bytes and a sign, Trying -to set anything more that that will result in undefined behavior." - 2) - -(mixal-add-operation-code - 'LD3 'loading "load I3" (+ 8 3) 'field - "Put in rI3 the contents of cell no. M. -Uses a + when there is no sign in subfield. Subfield is left padded with -zeros to make a word. Index registers only have 2 bytes and a sign, Trying -to set anything more that that will result in undefined behavior." - 2) - -(mixal-add-operation-code - 'LD4 'loading "load I4" (+ 8 4) 'field - "Put in rI4 the contents of cell no. M. -Uses a + when there is no sign in subfield. Subfield is left padded with -zeros to make a word. Index registers only have 2 bytes and a sign, Trying -to set anything more that that will result in undefined behavior." - 2) - -(mixal-add-operation-code - 'LD5 'loading "load I5" (+ 8 5) 'field - "Put in rI5 the contents of cell no. M. -Uses a + when there is no sign in subfield. Subfield is left padded with -zeros to make a word. Index registers only have 2 bytes and a sign, Trying -to set anything more that that will result in undefined behavior." - 2) - -(mixal-add-operation-code - 'LD6 'loading "load I6" (+ 8 6) 'field - "Put in rI6 the contents of cell no. M. -Uses a + when there is no sign in subfield. Subfield is left padded with -zeros to make a word. Index registers only have 2 bytes and a sign, Trying -to set anything more that that will result in undefined behavior." - 2) - -(mixal-add-operation-code - 'LDAN 'loading "load A negative" 16 'field - "Put in rA the contents of cell no. M, with opposite sign. -Uses a + when there is no sign in subfield, otherwise use the opposite sign. -Subfield is left padded with zeros to make a word." - 2) - -(mixal-add-operation-code - 'LDXN 'loading "load X negative" 23 'field - "Put in rX the contents of cell no. M, with opposite sign. -Uses a + when there is no sign in subfield, otherwise use the opposite sign. -Subfield is left padded with zeros to make a word." - 2) - -(mixal-add-operation-code - 'LD1N 'loading "load I1 negative" (+ 16 1) 'field - "Put in rI1 the contents of cell no. M, with opposite sign. -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 -have 2 bytes and a sign, Trying to set anything more that that will result -in undefined behavior." - 2) - -(mixal-add-operation-code - 'LD2N 'loading "load I2 negative" (+ 16 2) 'field - "Put in rI2 the contents of cell no. M, with opposite sign. -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 -have 2 bytes and a sign, Trying to set anything more that that will result -in undefined behavior." - 2) - -(mixal-add-operation-code - 'LD3N 'loading "load I3 negative" (+ 16 3) 'field - "Put in rI3 the contents of cell no. M, with opposite sign. -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 -have 2 bytes and a sign, Trying to set anything more that that will result -in undefined behavior." - 2) - -(mixal-add-operation-code - 'LD4N 'loading "load I4 negative" (+ 16 4) 'field - "Put in rI4 the contents of cell no. M, with opposite sign. -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 -have 2 bytes and a sign, Trying to set anything more that that will result -in undefined behavior." - 2) - -(mixal-add-operation-code - 'LD5N 'loading "load I5 negative" (+ 16 5) 'field - "Put in rI5 the contents of cell no. M, with opposite sign. -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 -have 2 bytes and a sign, Trying to set anything more that that will result -in undefined behavior." - 2) - -(mixal-add-operation-code - 'LD6N 'loading "load I6 negative" (+ 16 6) 'field - "Put in rI6 the contents of cell no. M, with opposite sign. -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 -have 2 bytes and a sign, Trying to set anything more that that will result -in undefined behavior." - 2) - -(mixal-add-operation-code - 'STA 'storing "store A" 24 'field - "Store in cell Nr. M the contents of rA. -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." - 2) - -(mixal-add-operation-code - 'STX 'storing "store X" 31 'field - "Store in cell Nr. M the contents of rX. -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." - 2) - -(mixal-add-operation-code - 'ST1 'storing "store I1" (+ 24 1) 'field - "Store in cell Nr. M the contents of rI1. -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." - 2) - -(mixal-add-operation-code - 'ST2 'storing "store I2" (+ 24 2) 'field - "Store in cell Nr. M the contents of rI2. -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." - 2) - -(mixal-add-operation-code - 'ST3 'storing "store I3" (+ 24 3) 'field - "Store in cell Nr. M the contents of rI3. -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." - 2) - -(mixal-add-operation-code - 'ST4 'storing "store I4" (+ 24 4) 'field - "Store in cell Nr. M the contents of rI4. -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." - 2) - -(mixal-add-operation-code - 'ST5 'storing "store I5" (+ 24 5) 'field - "Store in cell Nr. M the contents of rI5. -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." - 2) - -(mixal-add-operation-code - 'ST6 'storing "store I6" (+ 24 6) 'field - "Store in cell Nr. M the contents of rI6. -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." - 2) - -(mixal-add-operation-code - 'STJ 'storing "store J" 32 'field - "Store in cell Nr. M the contents of rJ. -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)." - 2) - -(mixal-add-operation-code - 'STZ 'storing "store zero" 33 'field - "Store in cell Nr. M '+ 0'. -The modification of the operation code represents the subfield of the -memory cell that is to be overwritten with zeros." - 2) - -(mixal-add-operation-code - 'ADD 'arithmetic "add" 1 'field - "Add to A the contents of cell Nr. M. -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." - 2) - -(mixal-add-operation-code - 'SUB 'arithmetic "subtract" 2 'field - "Subtract to A the contents of cell Nr. M. -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." - 2) - -(mixal-add-operation-code - 'MUL 'arithmetic "multiply" 3 'field - "Multiplies the contents of cell Nr. M with A, result is 10 bytes and stored in rA and rX. -The sign is + if the sign of rA and cell M where the same, otherwise, it is -" - 10) - -(mixal-add-operation-code - '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. -The sign is taken from rA, and after the divide the sign of rA is set to + when -both the sign of rA and M where the same. Divide by zero and overflow of rA result -in undefined behavior." - 12) - -(mixal-add-operation-code - 'ENTA 'address-transfer "enter A" 48 2 - "Literal value is stored in rA. -Indexed, stores value of index in rA." - 1) - -(mixal-add-operation-code - 'ENTX 'address-transfer "enter X" 55 2 - "Literal value is stored in rX. -Indexed, stores value of index in rX." - 1) - -(mixal-add-operation-code - 'ENT1 'address-transfer "Enter rI1" (+ 48 1) 2 - "Literal value is stored in rI1. -Indexed, stores value of index in rI1." - 1) - -(mixal-add-operation-code - 'ENT2 'address-transfer "Enter rI2" (+ 48 2) 2 - "Literal value is stored in rI2. -Indexed, stores value of index in rI2." - 1) - -(mixal-add-operation-code - 'ENT3 'address-transfer "Enter rI3" (+ 48 3) 2 - "Literal value is stored in rI3. -Indexed, stores value of index in rI3." - 1) - -(mixal-add-operation-code - 'ENT4 'address-transfer "Enter rI4" (+ 48 4) 2 - "Literal value is stored in rI4. -Indexed, stores value of index in rI4." - 1) - -(mixal-add-operation-code - 'ENT5 'address-transfer "Enter rI5" (+ 48 5) 2 - "Literal value is stored in rI5. -Indexed, stores value of index in rI5." - 1) - -(mixal-add-operation-code - 'ENT6 'address-transfer "Enter rI6" (+ 48 6) 2 - "Literal value is stored in rI6. -Indexed, stores value of index in rI6." - 1) - -(mixal-add-operation-code - 'ENNA 'address-transfer "enter negative A" 48 3 - "Literal value is stored in rA with opposite sign. -Indexed, stores value of index in rA with opposite sign." - 1) - -(mixal-add-operation-code - 'ENNX 'address-transfer "enter negative X" 55 3 - "Literal value is stored in rX with opposite sign. -Indexed, stores value of index in rX with opposite sign." - 1) - -(mixal-add-operation-code - 'ENN1 'address-transfer "Enter negative rI1" (+ 48 1) 3 - "Literal value is stored in rI1 with opposite sign. -Indexed, stores value of index in rI1 with opposite sign." - 1) - -(mixal-add-operation-code - 'ENN2 'address-transfer "Enter negative rI2" (+ 48 2) 3 - "Literal value is stored in rI2 with opposite sign. -Indexed, stores value of index in rI2 with opposite sign." - 1) - -(mixal-add-operation-code - 'ENN3 'address-transfer "Enter negative rI3" (+ 48 3) 3 - "Literal value is stored in rI3 with opposite sign. -Indexed, stores value of index in rI3 with opposite sign." - 1) - -(mixal-add-operation-code - 'ENN4 'address-transfer "Enter negative rI4" (+ 48 4) 3 - "Literal value is stored in rI4 with opposite sign. -Indexed, stores value of index in rI4 with opposite sign." - 1) - -(mixal-add-operation-code - 'ENN5 'address-transfer "Enter negative rI5" (+ 48 5) 3 - "Literal value is stored in rI5 with opposite sign. -Indexed, stores value of index in rI5 with opposite sign." - 1) - -(mixal-add-operation-code - 'ENN6 'address-transfer "Enter negative rI6" (+ 48 6) 3 - "Literal value is stored in rI6 with opposite sign. -Indexed, stores value of index in rI6 with opposite sign." - 1) - -(mixal-add-operation-code - 'INCA 'address-transfer "increase A" 48 0 - "Increase register A with the literal value of M. -On overflow the overflow toggle is set." - 1) - -(mixal-add-operation-code - 'INCX 'address-transfer "increase X" 55 0 - "Increase register X with the literal value of M. -On overflow the overflow toggle is set." - 1) - -(mixal-add-operation-code - 'INC1 'address-transfer "increase I1" (+ 48 1) 0 - "Increase register I1 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'INC2 'address-transfer "increase I2" (+ 48 2) 0 - "Increase register I2 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'INC3 'address-transfer "increase I3" (+ 48 3) 0 - "Increase register I3 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'INC4 'address-transfer "increase I4" (+ 48 4) 0 - "Increase register I4 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'INC5 'address-transfer "increase I5" (+ 48 5) 0 - "Increase register I5 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'INC6 'address-transfer "increase I6" (+ 48 6) 0 - "Increase register I6 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'DECA 'address-transfer "decrease A" 48 1 - "Decrease register A with the literal value of M. -On overflow the overflow toggle is set." - 1) - -(mixal-add-operation-code - 'DECX 'address-transfer "decrease X" 55 1 - "Decrease register X with the literal value of M. -On overflow the overflow toggle is set." - 1) - -(mixal-add-operation-code - 'DEC1 'address-transfer "decrease I1" (+ 48 1) 1 - "Decrease register I1 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'DEC2 'address-transfer "decrease I2" (+ 48 2) 1 - "Decrease register I2 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'DEC3 'address-transfer "decrease I3" (+ 48 3) 1 - "Decrease register I3 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'DEC4 'address-transfer "decrease I4" (+ 48 4) 1 - "Decrease register I4 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'DEC5 'address-transfer "decrease I5" (+ 48 5) 1 - "Decrease register I5 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'DEC6 'address-transfer "decrease I6" (+ 48 6) 1 - "Decrease register I6 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'CMPA 'comparison "compare A" 56 'field - "Compare contents of A with contents of M. -The field specifier works on both fields. The comparison indicator -is set to LESS, EQUAL or GREATER depending on the outcome." - 2) - - -(mixal-add-operation-code - 'CMPX 'comparison "compare X" 63 'field - "Compare contents of rX with contents of M. -The field specifier works on both fields. The comparison indicator -is set to LESS, EQUAL or GREATER depending on the outcome." - 2) - - -(mixal-add-operation-code - 'CMP1 'comparison "compare I1" (+ 56 1) 'field - "Compare contents of rI1 with contents of M. -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." - 2) - - -(mixal-add-operation-code - 'CMP2 'comparison "compare I2" (+ 56 2) 'field - "Compare contents of rI2 with contents of M. -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." - 2) - - -(mixal-add-operation-code - 'CMP3 'comparison "compare I3" (+ 56 3) 'field - "Compare contents of rI3 with contents of M. -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." - 2) - - -(mixal-add-operation-code - 'CMP4 'comparison "compare I4" (+ 56 4) 'field - "Compare contents of rI4 with contents of M. -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." - 2) - - -(mixal-add-operation-code - 'CMP5 'comparison "compare I5" (+ 56 5) 'field - "Compare contents of rI5 with contents of M. -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." - 2) - - -(mixal-add-operation-code - 'CMP6 'comparison "compare I6" (+ 56 6) 'field - "Compare contents of rI6 with contents of M. -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." - 2) +;;; Font-locking: +(defvar mixal-font-lock-syntactic-keywords + ;; Normal comments start with a * in column 0 and end at end of line. + '(("^\\*" (0 '(11))) ;(string-to-syntax "<") == '(11) + ;; 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 '(11))))) -(mixal-add-operation-code - 'JMP 'jump "jump" 39 0 - "Unconditional jump. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - -(mixal-add-operation-code - 'JSJ 'jump "jump, save J" 39 1 - "Unconditional jump, but rJ is not modified." - 1) - -(mixal-add-operation-code - 'JOV 'jump "jump on overflow" 39 2 - "Jump if OV is set (and turn it off). -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - -(mixal-add-operation-code - 'JNOV 'jump "Jump on no overflow" 39 3 - "Jump if OV is not set (and turn it off). -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - -(mixal-add-operation-code - 'JL 'jump "Jump on less" 39 4 - "Jump if '[CM] = L'. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JE 'jump "Jump on equal" 39 5 - "Jump if '[CM] = E'. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JG 'jump "Jump on greater" 39 6 - "Jump if '[CM] = G'. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JGE 'jump "Jump on not less" 39 7 - "Jump if '[CM]' does not equal 'L'. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JNE 'jump "Jump on not equal" 39 8 - "Jump if '[CM]' does not equal 'E'. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JLE 'jump "Jump on not greater" 39 9 - "Jump if '[CM]' does not equal 'G'. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - -(mixal-add-operation-code - 'JAN 'jump "jump A negative" 40 0 - "Jump if the content of rA is negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JAZ 'jump "jump A zero" 40 1 - "Jump if the content of rA is zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JAP 'jump "jump A positive" 40 2 - "Jump if the content of rA is positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JANN 'jump "jump A non-negative" 40 3 - "Jump if the content of rA is non-negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JANZ 'jump "jump A non-zero" 40 4 - "Jump if the content of rA is non-zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JANP 'jump "jump A non-positive" 40 5 - "Jump if the content of rA is non-positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - -(mixal-add-operation-code - 'JXN 'jump "jump X negative" 47 0 - "Jump if the content of rX is negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JXZ 'jump "jump X zero" 47 1 - "Jump if the content of rX is zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JXP 'jump "jump X positive" 47 2 - "Jump if the content of rX is positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JXNN 'jump "jump X non-negative" 47 3 - "Jump if the content of rX is non-negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JXNZ 'jump "jump X non-zero" 47 4 - "Jump if the content of rX is non-zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JXNP 'jump "jump X non-positive" 47 5 - "Jump if the content of rX is non-positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - -(mixal-add-operation-code - 'J1N 'jump "jump I1 negative" (+ 40 1) 0 - "Jump if the content of rI1 is negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J1Z 'jump "jump I1 zero" (+ 40 1) 1 - "Jump if the content of rI1 is zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J1P 'jump "jump I1 positive" (+ 40 1) 2 - "Jump if the content of rI1 is positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J1NN 'jump "jump I1 non-negative" (+ 40 1) 3 - "Jump if the content of rI1 is non-negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J1NZ 'jump "jump I1 non-zero" (+ 40 1) 4 - "Jump if the content of rI1 is non-zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J1NP 'jump "jump I1 non-positive" (+ 40 1) 5 - "Jump if the content of rI1 is non-positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - -(mixal-add-operation-code - 'J2N 'jump "jump I2 negative" (+ 40 1) 0 - "Jump if the content of rI2 is negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J2Z 'jump "jump I2 zero" (+ 40 1) 1 - "Jump if the content of rI2 is zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J2P 'jump "jump I2 positive" (+ 40 1) 2 - "Jump if the content of rI2 is positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J2NN 'jump "jump I2 non-negative" (+ 40 1) 3 - "Jump if the content of rI2 is non-negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J2NZ 'jump "jump I2 non-zero" (+ 40 1) 4 - "Jump if the content of rI2 is non-zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J2NP 'jump "jump I2 non-positive" (+ 40 1) 5 - "Jump if the content of rI2 is non-positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J3N 'jump "jump I3 negative" (+ 40 1) 0 - "Jump if the content of rI3 is negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J3Z 'jump "jump I3 zero" (+ 40 1) 1 - "Jump if the content of rI3 is zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J3P 'jump "jump I3 positive" (+ 40 1) 2 - "Jump if the content of rI3 is positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J3NN 'jump "jump I3 non-negative" (+ 40 1) 3 - "Jump if the content of rI3 is non-negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J3NZ 'jump "jump I3 non-zero" (+ 40 1) 4 - "Jump if the content of rI3 is non-zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J3NP 'jump "jump I3 non-positive" (+ 40 1) 5 - "Jump if the content of rI3 is non-positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J4N 'jump "jump I4 negative" (+ 40 1) 0 - "Jump if the content of rI4 is negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J4Z 'jump "jump I4 zero" (+ 40 1) 1 - "Jump if the content of rI4 is zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J4P 'jump "jump I4 positive" (+ 40 1) 2 - "Jump if the content of rI4 is positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J4NN 'jump "jump I4 non-negative" (+ 40 1) 3 - "Jump if the content of rI4 is non-negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J4NZ 'jump "jump I4 non-zero" (+ 40 1) 4 - "Jump if the content of rI4 is non-zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J4NP 'jump "jump I4 non-positive" (+ 40 1) 5 - "Jump if the content of rI4 is non-positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J5N 'jump "jump I5 negative" (+ 40 1) 0 - "Jump if the content of rI5 is negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J5Z 'jump "jump I5 zero" (+ 40 1) 1 - "Jump if the content of rI5 is zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J5P 'jump "jump I5 positive" (+ 40 1) 2 - "Jump if the content of rI5 is positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J5NN 'jump "jump I5 non-negative" (+ 40 1) 3 - "Jump if the content of rI5 is non-negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J5NZ 'jump "jump I5 non-zero" (+ 40 1) 4 - "Jump if the content of rI5 is non-zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J5NP 'jump "jump I5 non-positive" (+ 40 1) 5 - "Jump if the content of rI5 is non-positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J6N 'jump "jump I6 negative" (+ 40 1) 0 - "Jump if the content of rI6 is negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J6Z 'jump "jump I6 zero" (+ 40 1) 1 - "Jump if the content of rI6 is zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J6P 'jump "jump I6 positive" (+ 40 1) 2 - "Jump if the content of rI6 is positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J6NN 'jump "jump I6 non-negative" (+ 40 1) 3 - "Jump if the content of rI6 is non-negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J6NZ 'jump "jump I6 non-zero" (+ 40 1) 4 - "Jump if the content of rI6 is non-zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J6NP 'jump "jump I6 non-positive" (+ 40 1) 5 - "Jump if the content of rI6 is non-positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - -(mixal-add-operation-code - 'SLA 'miscellaneous "shift left A" 6 0 - "Shift to A, M bytes left. -Hero's will be added to the right." - 2) - - -(mixal-add-operation-code - 'SRA 'miscellaneous "shift right A" 6 1 - "Shift to A, M bytes right. -Zeros will be added to the left." - 2) - - -(mixal-add-operation-code - 'SLAX 'miscellaneous "shift left AX" 6 2 - "Shift AX, M bytes left. -Zeros will be added to the right." - 2) - - - -(mixal-add-operation-code - 'SRAX 'miscellaneous "shift right AX" 6 3 - "Shift AX, M bytes right. -Zeros will be added to the left." - 2) - - -(mixal-add-operation-code - 'SLC 'miscellaneous "shift left AX circularly" 6 4 - "Shift AX, M bytes left circularly. -The bytes that fall off to the left will be added to the right." - 2) - - -(mixal-add-operation-code - 'SRC 'miscellaneous "shift right AX circularly" 6 4 - "Shift AX, M bytes right circularly. -The bytes that fall off to the right will be added to the left." - 2) - -(mixal-add-operation-code - 'MOVE 'miscellaneous "move" 7 'number - "Move MOD words from M to the location stored in rI1." - '(+ 1 (* 2 number))) - -(mixal-add-operation-code - 'NOP 'miscellaneous "no operation" 0 'ignored - "No operation, M and F are not used by the machine." - 1) - -(mixal-add-operation-code - 'HLT 'miscellaneous "halt" 5 2 - "Halt. -Stop instruction fetching." - 1) - -(mixal-add-operation-code - 'IN 'input-output "input" 36 'unit - "Transfer a block of words from the specified unit to memory. -The transfer starts at address M." - 1) - -(mixal-add-operation-code - 'OUT 'input-output "output" 37 'unit - "Transfer a block of words from memory. -The transfer starts at address M to the specified unit." - 1) - -(mixal-add-operation-code - 'IOC 'input-output "input-output control" 35 'unit - "Perform a control operation. -The control operation is given by M on the specified unit." - 1) - -(mixal-add-operation-code - 'JRED 'input-output "jump ready" 38 'unit - "Jump to M if the specified unit is ready." - 1) - - -(mixal-add-operation-code - 'JBUS 'input-output "jump busy" 34 'unit - "Jump to M if the specified unit is busy." - 1) - -(mixal-add-operation-code - 'NUM 'conversion "convert to numeric" 5 0 - "Convert rAX to its numerical value and store it in rA. -the register rAX is assumed to contain a character representation of -a number." - 10) - -(mixal-add-operation-code - 'CHAR 'conversion "convert to characters" 5 1 - "Convert the number stored in rA to a character representation. -The converted character representation is stored in rAX." - 10) +(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) (defvar mixal-describe-operation-code-history nil "History list for describe operation code.") -(defun mixal-describe-operation-code (&optional op-code) +(defun mixal-describe-operation-code (op-code) "Display the full documentation of OP-CODE." - (interactive) - ;; We like to provide completion and history, so do it ourself - ;; (interactive "?bla")? - (unless op-code + (interactive + (list (let* ((completion-ignore-case t) ;; we already have a list, but it is not in the right format ;; transform it to a valid table so completition can use it @@ -1277,15 +1062,16 @@ (cons (symbol-name (car elm)) nil)) mixal-operation-codes-alist)) ;; prompt is different depending on we are close to a valid op-code - (have-default (member (current-word) mixal-operation-codes)) + (have-default (assq (intern-soft (current-word)) + mixal-operation-codes-alist)) (prompt (concat "Describe operation code " (if have-default (concat "(default " (current-word) "): ") ": ")))) - ;; as the operation code to the user - (setq op-code (completing-read prompt table nil t nil - 'mixal-describe-operation-code-history - (current-word))))) + ;; As the operation code to the user. + (completing-read prompt table nil t nil + 'mixal-describe-operation-code-history + (current-word))))) ;; 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 @@ -1317,8 +1103,11 @@ "Major mode for the mixal asm language. \\{mixal-mode-map}" (set (make-local-variable 'comment-start) "*") - (set (make-local-variable 'comment-start-skip) "*") - (set (make-local-variable 'font-lock-defaults) '(mixal-font-lock-keywords)) + (set (make-local-variable 'comment-start-skip) "^\\*[ \t]*") + (set (make-local-variable 'font-lock-defaults) + `(mixal-font-lock-keywords nil nil nil nil + (font-lock-syntactic-keywords . ,mixal-font-lock-syntactic-keywords) + (parse-sexp-lookup-properties . t))) ;; might add an indent function in the future ;; (set (make-local-variable 'indent-line-function) 'mixal-indent-line) (set (make-local-variable 'compile-command) (concat "mixasm "
--- a/lisp/startup.el Wed Oct 12 16:14:04 2005 +0000 +++ b/lisp/startup.el Wed Oct 19 14:03:44 2005 +0000 @@ -128,7 +128,7 @@ ("-bg" 1 x-handle-switch background-color) ("-background" 1 x-handle-switch background-color) ("-ms" 1 x-handle-switch mouse-color) - ("-nb" 0 x-handle-switch icon-type nil) + ("-nbi" 0 x-handle-switch icon-type nil) ("-iconic" 0 x-handle-iconic) ("-xrm" 1 x-handle-xrm-switch) ("-cr" 1 x-handle-switch cursor-color) @@ -1232,7 +1232,13 @@ the user caused an input event by hitting a key or clicking with the mouse." (interactive) - (push last-command-event unread-command-events) + (if (and (consp last-command-event) + (eq (posn-window (event-start last-command-event)) + (selected-window))) + ;; This is a mouse-down event in the spash screen window. + ;; Ignore it and consume the corresponding mouse-up event. + (read-event) + (push last-command-event unread-command-events)) (throw 'exit nil))
--- a/lisp/toolbar/README Wed Oct 12 16:14:04 2005 +0000 +++ b/lisp/toolbar/README Wed Oct 19 14:03:44 2005 +0000 @@ -7,4 +7,6 @@ back_arrow.xpm and fwd_arrow.xpm are slightly modified undo and redo. + diropen.xpm is file-manager.png from Gnome hicolor theme. + They are not part of Emacs, but distributed and used by Emacs.
--- a/lisp/toolbar/diropen.xpm Wed Oct 12 16:14:04 2005 +0000 +++ b/lisp/toolbar/diropen.xpm Wed Oct 19 14:03:44 2005 +0000 @@ -1,215 +1,44 @@ /* XPM */ static char * diropen_xpm[] = { -"24 24 188 2", -" c None", -". c #000000", -"+ c #010100", -"@ c #B5B8A5", -"# c #E4E7D2", -"$ c #878A76", -"% c #33342B", -"& c #0B0B0B", -"* c #E2E5CF", -"= c #CFD4AF", -"- c #CED3AE", -"; c #B2B696", -"> c #2D2D25", -", c #23241D", -"' c #9D9F90", -") c #C6CAA6", -"! c #C4C9A5", -"~ c #C6CBA7", -"{ c #C7CCA8", -"] c #C9CEA9", -"^ c #555847", -"/ c #1A1B15", -"( c #20201A", -"_ c #D4D6C2", -": c #BEC2A0", -"< c #B3B896", -"[ c #B0B595", -"} c #B3B797", -"| c #B6BB99", -"1 c #BBC09E", -"2 c #BCC19F", -"3 c #81856C", -"4 c #3E3F32", -"5 c #010101", -"6 c #DADDC8", -"7 c #AFB494", -"8 c #AAAF8F", -"9 c #A3A789", -"0 c #A6AA8B", -"a c #A9AD8E", -"b c #A7AB8D", -"c c #A4A88A", -"d c #A1A588", -"e c #AAAD96", -"f c #B3B5A5", -"g c #B8BBAA", -"h c #BABCAB", -"i c #40413B", -"j c #CACDBB", -"k c #BABDA8", -"l c #0C0C09", -"m c #DDDFCB", -"n c #969B7E", -"o c #9DA286", -"p c #95987C", -"q c #96997E", -"r c #9A9D81", -"s c #999D80", -"t c #9DA184", -"u c #A5AA8B", -"v c #A4A98A", -"w c #A3A889", -"x c #A2A588", -"y c #33352B", -"z c #9B9E83", -"A c #898D74", -"B c #D8DBC9", -"C c #84866E", -"D c #7D8169", -"E c #151612", -"F c #D7DAC9", -"G c #797D67", -"H c #3D3F34", -"I c #E0E0D9", -"J c #EBEDDD", -"K c #E8EBD9", -"L c #D8DBCA", -"M c #1A1A18", -"N c #0A0A09", -"O c #6E7067", -"P c #8D8F84", -"Q c #4A4B45", -"R c #2C2D29", -"S c #4B4C46", -"T c #E7EAD8", -"U c #E3E6D4", -"V c #DEE1D0", -"W c #DADCCC", -"X c #DADCD1", -"Y c #2B2C28", -"Z c #D7DAC6", -"` c #6F735E", -" . c #0D0D0D", -".. c #F4F4EC", -"+. c #606251", -"@. c #92957B", -"#. c #4A4C3E", -"$. c #434438", -"%. c #CACFAB", -"&. c #C6CBA8", -"*. c #C2C6A4", -"=. c #ABB091", -"-. c #23251E", -";. c #494B3D", -">. c #DCDCD4", -",. c #EAECDD", -"'. c #CDD2AD", -"). c #20201B", -"!. c #1C1C17", -"~. c #A4A88B", -"{. c #414337", -"]. c #BABF9D", -"^. c #B5B999", -"/. c #81836C", -"(. c #070806", -"_. c #D5D8C4", -":. c #161616", -"<. c #F2F2EA", -"[. c #CACFAA", -"}. c #050504", -"|. c #3C3D32", -"1. c #C9CEAA", -"2. c #C8CDA9", -"3. c #BFC4A2", -"4. c #3E4035", -"5. c #BCC09F", -"6. c #B6BB9A", -"7. c #B0B494", -"8. c #9DA185", -"9. c #535445", -"0. c #B6B8A7", -"a. c #747470", -"b. c #ECECE2", -"c. c #C3C8A5", -"d. c #C2C7A4", -"e. c #393B30", -"f. c #BFC4A1", -"g. c #BDC2A0", -"h. c #C0C5A2", -"i. c #3A3B31", -"j. c #A9AD8F", -"k. c #A3A78A", -"l. c #80836D", -"m. c #020201", -"n. c #A6A998", -"o. c #B8BC9B", -"p. c #1B1C17", -"q. c #181814", -"r. c #AFB394", -"s. c #ACB091", -"t. c #878A72", -"u. c #9B9F83", -"v. c #9A9D82", -"w. c #8A8D75", -"x. c #4F5243", -"y. c #070705", -"z. c #9E9F91", -"A. c #E5E6DA", -"B. c #ADB192", -"C. c #A6AA8C", -"D. c #A5A98C", -"E. c #4B4D3F", -"F. c #70735F", -"G. c #9FA286", -"H. c #999D81", -"I. c #35362D", -"J. c #2D2E26", -"K. c #8A8D74", -"L. c #71735F", -"M. c #080908", -"N. c #E3E5D9", -"O. c #C0C3AF", -"P. c #94987C", -"Q. c #8F9379", -"R. c #8B8F75", -"S. c #8A8E74", -"T. c #888C73", -"U. c #7D816A", -"V. c #0E0F0C", -"W. c #3E4034", -"X. c #4E5042", -"Y. c #282922", -"Z. c #121310", -"`. c #24251F", -" + c #71745F", -".+ c #6A6D59", -"++ c #434538", -"@+ c #080907", -" ", -" ", -" ", -" . . . . . . . ", -" + @ # # # # # $ % ", -" & * = = = - - ; > ", -", ' * ) ! ~ { ] ] ^ / . . ", -"( _ : < [ } | 1 2 3 4 5 . . . . . . . ", -", 6 7 8 9 0 8 a b c d e f g h . i j k . ", -"l m n o p q r s q t u v w x 9 . y z A . ", -". B C D E . . . . . . . . . . . . . . . 5 5 ", -". F G H I J K K L M N O P Q R . S T U V W X Y ", -". Z ` ...= = = +.. @.= = = #.. $.%.&.*.1 =.-. ", -". Z ;.>.,.'.- - ).!.'.'.'.'.~.. {.&.*.].^./.(. ", -". _.:.<.%.[.%.[.}.|.1.{ 2.2.3.. 4.5.6.7.8.9.l ", -". 0.a.b.c.d.d.*.}.e.f.g.h.g.} . i.[ j.k.l.m. ", -". n.>.o.o.^.} } p.q.r.r.r.s.t.. % u.v.w.x.y. ", -". z.A.B.j.C.D.k.E.. F.G.u.H.I.. J.K.K.L.M. ", -". N.O.P.Q.R.S.T.U.V.}.W.X.Y.Z.. `. +.+++@+ ", -" . . . . . . . . . . . . . . . . . . }. ", -" ", -" ", -" ", -" "}; +"19 24 17 1", +" c None", +". c #000100", +"+ c #C6C9A6", +"@ c #D0D3AF", +"# c #93997C", +"$ c #E6E7D0", +"% c #BEC19E", +"& c #B4B895", +"* c #A7AA88", +"= c #6B6D59", +"- c #4A4E40", +"; c #7C8166", +"> c #898E72", +", c #3C4032", +"' c #575845", +") c #34332C", +"! c #24231D", +" ............... ", +" .+@@@@@@@@@@@@@#. ", +".$@@@@@@@@@@@@@@@#.", +".++++%%%%%%%%%&&&*.", +".&&&&&&&&&&******#.", +".*%+++%%%%%%%%%&=#.", +".*+***********##-#.", +".*+****;===;####-#.", +".*+****=*****###-#.", +".*+****;*****###-#.", +".*+****########>-#.", +".*&######>>>>>>>,>.", +".*#-------------'>)", +".*&&&&&&&&&&&&&*#>)", +".*&************#'>)", +".*&***********##,>)", +".*&****====;###>,>)", +".#&****=**#**##>,;)", +".#&****>****###>,;)", +".#&****########>,;)", +".##''''''''''''',;)", +".#>==============;)", +".''''''''''''''''-!", +" ................. "};
--- a/man/ChangeLog Wed Oct 12 16:14:04 2005 +0000 +++ b/man/ChangeLog Wed Oct 19 14:03:44 2005 +0000 @@ -1,3 +1,16 @@ +2005-10-13 Kenichi Handa <handa@m17n.org> + + * basic.texi (Position Info): Fix previous change. + +2005-10-12 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> + + * cmdargs.texi (Icons X): Fix typo. + +2005-10-12 Kenichi Handa <handa@m17n.org> + + * basic.texi (Position Info): Describe the case that Emacs shows + "part of display ...". + 2005-10-11 Jay Belanger <belanger@truman.edu> * calc.texi (Integration): Mention using `a i' to compute definite
--- a/man/basic.texi Wed Oct 12 16:14:04 2005 +0000 +++ b/man/basic.texi Wed Oct 19 14:03:44 2005 +0000 @@ -636,10 +636,17 @@ The four values after @samp{Char:} describe the character that follows point, first by showing it and then by giving its character code in octal, decimal and hex. For a non-@acronym{ASCII} multibyte character, these are -followed by @samp{ext} and the character's representation, in hex, in +followed by @samp{file} and the character's representation, in hex, in the buffer's coding system, if that coding system encodes the character safely and with a single byte (@pxref{Coding Systems}). If the -character's encoding is longer than one byte, Emacs shows @samp{ext ...}. +character's encoding is longer than one byte, Emacs shows @samp{file ...}. + + However, if the character displayed is in the range 0200 through +0377 octal, it may actually stand for an invalid UTF-8 byte read from +a file. In Emacs, that byte is represented as a sequence of 8-bit +characters, but all of them together display as the original invalid +byte, in octal code. In this case, @kbd{C-x =} shows @samp{part of +display ...} instead of @samp{file}. @samp{point=} is followed by the position of point expressed as a character count. The front of the buffer counts as position 1, one character later
--- a/man/cmdargs.texi Wed Oct 12 16:14:04 2005 +0000 +++ b/man/cmdargs.texi Wed Oct 19 14:03:44 2005 +0000 @@ -1188,7 +1188,7 @@ @end table By default Emacs uses an icon window containing a picture of the GNU gnu. -The @samp{-np} or @samp{--no-bitmap-icon} option tells Emacs to let the +The @samp{-nbi} or @samp{--no-bitmap-icon} option tells Emacs to let the window manager choose what sort of icon to use---usually just a small rectangle containing the frame's title.
--- a/src/ChangeLog Wed Oct 12 16:14:04 2005 +0000 +++ b/src/ChangeLog Wed Oct 19 14:03:44 2005 +0000 @@ -1,3 +1,41 @@ +2005-10-14 Kim F. Storm <storm@cua.dk> + + * xterm.c (note_mouse_movement): Return 1 if mouse moved; 0 otherwise. + (handle_one_xevent): Only clear help_echo_string; restore it if + note_mouse_movement didn't record any mouse movement. + + * xdisp.c (pos_visible_p): Convert w->hscroll to pixels before use. + (remember_mouse_glyph): Clear RECT if mouse is over an image glyph. + + * keyboard.c (make_lispy_position): Adjust wx for left margin if ON_TEXT. + (Fposn_at_x_y): Fix calculation of x coordinate. + (Fposn_at_point): Return nil if point is hscrolled out of view. + +2005-10-13 Andreas Schwab <schwab@suse.de> + + * sysdep.c (request_sigio, unrequest_sigio): Do nothing in + non-interactive mode. + +2005-10-12 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> + + * xterm.c, w32term.c, macterm.c (note_mouse_movement): Undo last change. + +2005-10-12 Kim F. Storm <storm@cua.dk> + + * xterm.c (handle_one_xevent): Clear last_mouse_glyph on mouse up/down. + +2005-10-12 Romain Francoise <romain@orebokech.com> + + * buffer.c (init_buffer): Rename `rc' to `len' for clarity. + +2005-10-12 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> + + * xdisp.c (remember_mouse_glyph): Use MATRIX_BOTTOM_TEXT_ROW to + get end of text rows. Obtain header-line/mode-line rows directly. + + * xterm.c, w32term.c, macterm.c (note_mouse_movement): Restore + help_echo_string if mouse is moved inside last_mouse_glyph. + 2005-10-12 Kim F. Storm <storm@cua.dk> * xdisp.c (remember_mouse_glyph): New generic version based on
--- a/src/buffer.c Wed Oct 12 16:14:04 2005 +0000 +++ b/src/buffer.c Wed Oct 19 14:03:44 2005 +0000 @@ -5114,7 +5114,7 @@ char *pwd; struct stat dotstat, pwdstat; Lisp_Object temp; - int rc; + int len; #ifdef USE_MMAP_FOR_BUFFERS { @@ -5141,13 +5141,13 @@ #ifndef VMS /* Maybe this should really use some standard subroutine whose definition is filename syntax dependent. */ - rc = strlen (pwd); - if (!(IS_DIRECTORY_SEP (pwd[rc - 1]))) + len = strlen (pwd); + if (!(IS_DIRECTORY_SEP (pwd[len - 1]))) { /* Grow buffer to add directory separator and '\0'. */ - pwd = (char *) xrealloc (pwd, rc + 2); - pwd[rc] = DIRECTORY_SEP; - pwd[rc + 1] = '\0'; + pwd = (char *) xrealloc (pwd, len + 2); + pwd[len] = DIRECTORY_SEP; + pwd[len + 1] = '\0'; } #endif /* not VMS */
--- a/src/keyboard.c Wed Oct 12 16:14:04 2005 +0000 +++ b/src/keyboard.c Wed Oct 19 14:03:44 2005 +0000 @@ -5108,7 +5108,11 @@ XSETINT (*x, wx); XSETINT (*y, wy); - if (part == ON_MODE_LINE || part == ON_HEADER_LINE) + if (part == ON_TEXT) + { + wx += WINDOW_LEFT_MARGIN_WIDTH (w); + } + else if (part == ON_MODE_LINE || part == ON_HEADER_LINE) { /* Mode line or header line. Look for a string under the mouse that may have a `local-map' property. */ @@ -10779,11 +10783,11 @@ CHECK_LIVE_WINDOW (frame_or_window); w = XWINDOW (frame_or_window); - XSETINT (x, (WINDOW_TO_FRAME_PIXEL_X (w, XINT (x)) + XSETINT (x, (XINT (x) + + WINDOW_LEFT_EDGE_X (w) + (NILP (whole) ? window_box_left_offset (w, TEXT_AREA) - : - (WINDOW_LEFT_SCROLL_BAR_COLS (w) - * WINDOW_FRAME_COLUMN_WIDTH (w))))); + : 0))); XSETINT (y, WINDOW_TO_FRAME_PIXEL_Y (w, XINT (y))); frame_or_window = w->frame; } @@ -10809,9 +10813,21 @@ { Lisp_Object tem; + if (NILP (window)) + window = selected_window; + tem = Fpos_visible_in_window_p (pos, window, Qt); if (!NILP (tem)) - tem = Fposn_at_x_y (XCAR (tem), XCAR (XCDR (tem)), window, Qnil); + { + Lisp_Object x = XCAR (tem); + Lisp_Object y = XCAR (XCDR (tem)); + + /* Point invisible due to hscrolling? */ + if (XINT (x) < 0) + return Qnil; + tem = Fposn_at_x_y (x, y, window, Qnil); + } + return tem; }
--- a/src/sysdep.c Wed Oct 12 16:14:04 2005 +0000 +++ b/src/sysdep.c Wed Oct 19 14:03:44 2005 +0000 @@ -1032,6 +1032,7 @@ #ifdef FASYNC /* F_SETFL does not imply existence of FASYNC */ /* XXX Uhm, FASYNC is not used anymore here. */ +/* XXX Yeah, but you need it for SIGIO, don't you? */ void request_sigio () @@ -1039,7 +1040,7 @@ /* XXX read_socket_hook is not global anymore. Is blocking SIGIO bad under X? */ #if 0 - if (read_socket_hook) + if (noninteractive || read_socket_hook) return; #endif @@ -1057,7 +1058,7 @@ /* XXX read_socket_hook is not global anymore. Is blocking SIGIO bad under X? */ #if 0 - if (read_socket_hook) + if (noninteractive || read_socket_hook) return; #endif @@ -1076,7 +1077,7 @@ { int on = 1; - if (read_socket_hook) + if (noninteractive || read_socket_hook) return; /* XXX CURTTY() is bogus here. */ @@ -1089,7 +1090,7 @@ { int off = 0; - if (read_socket_hook) + if (noninteractive || read_socket_hook) return; /* XXX CURTTY() is bogus here. */ @@ -1109,7 +1110,7 @@ int on = 1; sigset_t st; - if (read_socket_hook) + if (noninteractive || read_socket_hook) return; sigemptyset (&st); @@ -1124,7 +1125,7 @@ { int off = 0; - if (read_socket_hook) + if (noninteractive || read_socket_hook) return; ioctl (0, FIOASYNC, &off); /* XXX This fails for multiple ttys. */ @@ -1137,7 +1138,7 @@ void request_sigio () { - if (read_socket_hook) + if (noninteractive || read_socket_hook) return; croak ("request_sigio"); @@ -1146,7 +1147,7 @@ void unrequest_sigio () { - if (read_socket_hook) + if (noninteractive || read_socket_hook) return; croak ("unrequest_sigio"); @@ -2335,12 +2336,16 @@ void request_sigio () { + if (noninteractive) + return; croak ("request sigio"); } void unrequest_sigio () { + if (noninteractive) + return; croak ("unrequest sigio"); } @@ -2884,6 +2889,8 @@ void request_sigio () { + if (noninteractive) + return; sigrelse (SIGTINT); interrupts_deferred = 0; @@ -2892,6 +2899,8 @@ void unrequest_sigio () { + if (noninteractive) + return; sighold (SIGTINT); interrupts_deferred = 1;
--- a/src/xdisp.c Wed Oct 12 16:14:04 2005 +0000 +++ b/src/xdisp.c Wed Oct 19 14:03:44 2005 +0000 @@ -1335,7 +1335,7 @@ current_header_line_height = current_mode_line_height = -1; if (visible_p && XFASTINT (w->hscroll) > 0) - *x -= XFASTINT (w->hscroll); + *x -= XFASTINT (w->hscroll) * WINDOW_FRAME_COLUMN_WIDTH (w); return visible_p; } @@ -2047,7 +2047,7 @@ height = WINDOW_FRAME_LINE_HEIGHT (w); r = MATRIX_FIRST_TEXT_ROW (w->current_matrix); - end_row = r + w->current_matrix->nrows - 1; + end_row = MATRIX_BOTTOM_TEXT_ROW (w->current_matrix, w); if (w->pseudo_window_p) { @@ -2066,20 +2066,28 @@ area = RIGHT_MARGIN_AREA; goto text_glyph; - case ON_TEXT: + case ON_HEADER_LINE: case ON_MODE_LINE: - case ON_HEADER_LINE: + gr = (part == ON_HEADER_LINE + ? MATRIX_HEADER_LINE_ROW (w->current_matrix) + : MATRIX_MODE_LINE_ROW (w->current_matrix)); + gy = gr->y; + area = TEXT_AREA; + goto text_glyph_row_found; + + case ON_TEXT: area = TEXT_AREA; text_glyph: gr = 0; gy = 0; - for (; r < end_row && r->enabled_p; ++r) + for (; r <= end_row && r->enabled_p; ++r) if (r->y + r->height > y) { gr = r; gy = r->y; break; } + text_glyph_row_found: if (gr && gy <= y) { struct glyph *g = gr->glyphs[area]; @@ -2091,7 +2099,16 @@ break; if (g < end) - width = g->pixel_width; + { + if (g->type == IMAGE_GLYPH) + { + /* Don't remember when mouse is over image, as + image may have hot-spots. */ + STORE_NATIVE_RECT (*rect, 0, 0, 0, 0); + return; + } + width = g->pixel_width; + } else { /* Use nominal char spacing at end of line. */ @@ -2136,7 +2153,7 @@ row_glyph: gr = 0, gy = 0; - for (; r < end_row && r->enabled_p; ++r) + for (; r <= end_row && r->enabled_p; ++r) if (r->y + r->height > y) { gr = r; gy = r->y;
--- a/src/xterm.c Wed Oct 12 16:14:04 2005 +0000 +++ b/src/xterm.c Wed Oct 19 14:03:44 2005 +0000 @@ -3588,7 +3588,7 @@ static XMotionEvent last_mouse_motion_event; static Lisp_Object last_mouse_motion_frame; -static void +static int note_mouse_movement (frame, event) FRAME_PTR frame; XMotionEvent *event; @@ -3602,10 +3602,11 @@ frame->mouse_moved = 1; last_mouse_scroll_bar = Qnil; note_mouse_highlight (frame, -1, -1); + return 1; } /* Has the mouse moved off the glyph it was on at the last sighting? */ - else if (event->x < last_mouse_glyph.x + if (event->x < last_mouse_glyph.x || event->x >= last_mouse_glyph.x + last_mouse_glyph.width || event->y < last_mouse_glyph.y || event->y >= last_mouse_glyph.y + last_mouse_glyph.height) @@ -3615,7 +3616,10 @@ note_mouse_highlight (frame, event->x, event->y); /* Remember which glyph we're now on. */ remember_mouse_glyph (frame, event->x, event->y, &last_mouse_glyph); - } + return 1; + } + + return 0; } @@ -6496,8 +6500,7 @@ case MotionNotify: { previous_help_echo_string = help_echo_string; - help_echo_string = help_echo_object = help_echo_window = Qnil; - help_echo_pos = -1; + help_echo_string = Qnil; if (dpyinfo->grabbed && last_mouse_frame && FRAME_LIVE_P (last_mouse_frame)) @@ -6536,7 +6539,8 @@ last_window=window; } - note_mouse_movement (f, &event.xmotion); + if (!note_mouse_movement (f, &event.xmotion)) + help_echo_string = previous_help_echo_string; } else { @@ -6645,6 +6649,7 @@ int tool_bar_p = 0; bzero (&compose_status, sizeof (compose_status)); + bzero (&last_mouse_glyph, sizeof (last_mouse_glyph)); if (dpyinfo->grabbed && last_mouse_frame