aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaroly Lorentey2005-10-19 14:03:44 +0000
committerKaroly Lorentey2005-10-19 14:03:44 +0000
commit6d8cf83040cdb54a0b1d72bd6a021f9815bd4af2 (patch)
treef22e60624e5ffd52bbe19fea7809c2f5cb54704d
parent734b679135207a8623dc460eb8d108befe080d46 (diff)
parent6507c4c73dad972eb4f6bc224c8c22de6cbeec97 (diff)
downloademacs-6d8cf83040cdb54a0b1d72bd6a021f9815bd4af2.tar.gz
emacs-6d8cf83040cdb54a0b1d72bd6a021f9815bd4af2.zip
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
-rw-r--r--lisp/ChangeLog101
-rw-r--r--lisp/desktop.el9
-rw-r--r--lisp/info.el44
-rw-r--r--lisp/international/fontset.el55
-rw-r--r--lisp/international/utf-8.el3
-rw-r--r--lisp/makefile.w32-in46
-rw-r--r--lisp/mh-e/.gitignore1
-rw-r--r--lisp/progmodes/mixal-mode.el1221
-rw-r--r--lisp/startup.el10
-rw-r--r--lisp/toolbar/README2
-rw-r--r--lisp/toolbar/diropen.pbmbin81 -> 81 bytes
-rw-r--r--lisp/toolbar/diropen.xpm255
-rw-r--r--man/ChangeLog13
-rw-r--r--man/basic.texi11
-rw-r--r--man/cmdargs.texi2
-rw-r--r--src/ChangeLog38
-rw-r--r--src/buffer.c12
-rw-r--r--src/keyboard.c26
-rw-r--r--src/sysdep.c25
-rw-r--r--src/xdisp.c31
-rw-r--r--src/xterm.c15
21 files changed, 885 insertions, 1035 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 1de2034918d..00c71e23aeb 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,4 +1,76 @@
12005-10-11 Sven Joachim <svenjoac@gmx.de> 12005-10-13 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
2
3 * toolbar/diropen.xpm, toolbar/diropen.pbm: New versions made from
4 Gnome file-manager.png. Suggested by
5 Joachim Nilsson <joachim.nilsson@vmlinux.org>.
6
7 * toolbar/README: Add diropen.xpm.
8
92005-10-13 Bill Wohler <wohler@newt.com>
10
11 * makefile.w32-in (MH_E_SRC): Rename from MH-E-SRC per NMAKE
12 restrictions. Suggested by David Robinow <drobinow@gmail.com>.
13
142005-10-13 Stefan Monnier <monnier@iro.umontreal.ca>
15
16 * progmodes/mixal-mode.el (mixal-operation-codes-alist):
17 Don't waste the byte-compiler's time on constant data.
18
192005-10-13 Kenichi Handa <handa@m17n.org>
20
21 * international/utf-8.el (utf-8-compose): Display an invalid UTF-8
22 byte with `escape-glyph' face.
23
24 * international/fontset.el (ccl-encode-unicode-font):
25 Lookup utf-subst-table-for-encode, not ucs-mule-cjk-to-unicode.
26 Handle the case that ucs-mule-to-mule-unicode translates a character to
27 ASCII (usually for IPA characters).
28
292005-10-12 Bill Wohler <wohler@newt.com>
30
31 * makefile.w32-in (MH-E-SRC): New. Used by mh-autoloads.
32 (mh-autoloads): New. Builds mh-e/mh-loaddefs.el. Rebuilds if any
33 files in MH-E-SRC have been updated.
34 (updates, compile, recompile, bootstrap): Depend on mh-autoloads.
35
362005-10-12 Stefan Monnier <monnier@iro.umontreal.ca>
37
38 * progmodes/mixal-mode.el (mixal-operation-codes): Remove.
39 (mixal-mode-syntax-table): Add \n as end-comment.
40 (mixal-operation-codes-alist): Immediately initialize to full value.
41 (mixal-add-operation-code): Remove.
42 (mixal-describe-operation-code): Make the arg non-optional.
43 Use the interactive spec instead.
44 Use mixal-operation-codes-alist rather than mixal-operation-codes.
45 (mixal-font-lock-keywords): Don't highlight comments here any more.
46 (mixal-font-lock-syntactic-keywords): New var.
47 (mixal-mode): Use it. Fix comment-start-skip.
48
492005-10-12 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
50
51 * startup.el (command-line-x-option-alist): -nb => -nbi
52
532005-10-12 Kim F. Storm <storm@cua.dk>
54
55 * startup.el (fancy-splash-default-action): Discard mouse click in
56 the spash screen window, as it has no sensible meaning in the
57 next window to be selected. Fixes error reported by Jan D.
58
592005-10-12 Reiner Steib <Reiner.Steib@gmx.de>
60
61 * desktop.el (desktop-load-file): Do nothing when FUNCTION is nil.
62
632005-10-11 Stefan Monnier <monnier@iro.umontreal.ca>
64
65 * progmodes/mixal-mode.el: Sync with version in the GNU MDK project.
66 Try to fix up minor layout issues like indentation, line break, etc...
67 (mixal-mode-syntax-table): Don't try to specify comment syntax,
68 because it doesn't work.
69 (mixal-operation-codes): Add some more codes.
70 (mixal-font-lock-keywords): Process comments here.
71 (mixal-mode): mixasm no longer needs -g option.
72
732005-10-11 Sven Joachim <svenjoac@gmx.de> (tiny change)
2 74
3 * progmodes/sh-script.el (sh-tmp-file): 75 * progmodes/sh-script.el (sh-tmp-file):
4 Use mktemp -t. Finish support for es and rc shells. 76 Use mktemp -t. Finish support for es and rc shells.
@@ -798,7 +870,7 @@
798 color rxvt terminals by using the code xterm.el used to use before 870 color rxvt terminals by using the code xterm.el used to use before
799 2005-04-09 in order to match the colors used by rxvt. 871 2005-04-09 in order to match the colors used by rxvt.
800 872
8012005-09-24 Emanuele Giaquinta <emanuele.giaquinta@gmail.com> (tiny change) 8732005-09-24 Emanuele Giaquinta <emanuele.giaquinta@gmail.com> (tiny change)
802 874
803 * term/rxvt.el (rxvt-register-default-colors): Add support for 88 875 * term/rxvt.el (rxvt-register-default-colors): Add support for 88
804 colors rxvt-unicode terminals by using the same code as xterm.el. 876 colors rxvt-unicode terminals by using the same code as xterm.el.
@@ -5940,8 +6012,8 @@
5940 6012
5941 * log-view.el (log-view-file, log-view-message): Remove "-face" 6013 * log-view.el (log-view-file, log-view-message): Remove "-face"
5942 suffix from face names. 6014 suffix from face names.
5943 (log-view-file-face, log-view-message-face): New 6015 (log-view-file-face, log-view-message-face):
5944 backward-compatibility aliases for renamed faces. 6016 New backward-compatibility aliases for renamed faces.
5945 (log-view-file-face, log-view-message-face): Use renamed log-view 6017 (log-view-file-face, log-view-message-face): Use renamed log-view
5946 faces. 6018 faces.
5947 6019
@@ -5961,8 +6033,8 @@
5961 (ruler-mode-margins-face, ruler-mode-fringes-face) 6033 (ruler-mode-margins-face, ruler-mode-fringes-face)
5962 (ruler-mode-column-number-face, ruler-mode-fill-column-face) 6034 (ruler-mode-column-number-face, ruler-mode-fill-column-face)
5963 (ruler-mode-comment-column-face, ruler-mode-goal-column-face) 6035 (ruler-mode-comment-column-face, ruler-mode-goal-column-face)
5964 (ruler-mode-tab-stop-face, ruler-mode-current-column-face): New 6036 (ruler-mode-tab-stop-face, ruler-mode-current-column-face):
5965 backward-compatibility aliases for renamed faces. 6037 New backward-compatibility aliases for renamed faces.
5966 (ruler-mode-pad, ruler-mode-margins, ruler-mode-fringes) 6038 (ruler-mode-pad, ruler-mode-margins, ruler-mode-fringes)
5967 (ruler-mode-column-number, ruler-mode-fill-column) 6039 (ruler-mode-column-number, ruler-mode-fill-column)
5968 (ruler-mode-comment-column, ruler-mode-goal-column) 6040 (ruler-mode-comment-column, ruler-mode-goal-column)
@@ -6085,8 +6157,7 @@
6085 * comint.el (comint-check-proc, make-comint-in-buffer) 6157 * comint.el (comint-check-proc, make-comint-in-buffer)
6086 (comint-source-default): Doc fixes. 6158 (comint-source-default): Doc fixes.
6087 6159
6088 * term.el (term-send-string): Improve argument/docstring 6160 * term.el (term-send-string): Improve argument/docstring consistency.
6089 consistency.
6090 6161
60912005-06-09 Luc Teirlinck <teirllm@auburn.edu> 61622005-06-09 Luc Teirlinck <teirllm@auburn.edu>
6092 6163
@@ -6203,12 +6274,11 @@
6203 XEmacs code. 6274 XEmacs code.
6204 (flyspell-word): Minor simplification. 6275 (flyspell-word): Minor simplification.
6205 (flyspell-math-tex-command-p): Quieten the byte-compiler. 6276 (flyspell-math-tex-command-p): Quieten the byte-compiler.
6206 (flyspell-external-point-words): Remove unused vars `size' and 6277 (flyspell-external-point-words): Remove unused vars `size' and `start'.
6207 `start'. 6278 (flyspell-do-correct): Rename from flyspell-xemacs-correct.
6208 (flyspell-do-correct): Rename from flyspell-xemacs-correct. Merge 6279 Merge the corresponding Emacs code.
6209 the corresponding Emacs code. 6280 (flyspell-correct-word, flyspell-xemacs-popup):
6210 (flyspell-correct-word, flyspell-xemacs-popup): Use 6281 Use flyspell-do-correct.
6211 flyspell-do-correct.
6212 6282
6213 * emacs-lisp/debug.el (debug): Don't bury the buffer unless it's in 6283 * emacs-lisp/debug.el (debug): Don't bury the buffer unless it's in
6214 a dedicated window. 6284 a dedicated window.
@@ -6247,8 +6317,7 @@
6247 Add a completion-base-size-function property. 6317 Add a completion-base-size-function property.
6248 6318
6249 * simple.el (completion-setup-function): Look for 6319 * simple.el (completion-setup-function): Look for
6250 completion-base-size-function property of 6320 completion-base-size-function property of minibuffer-completion-table.
6251 minibuffer-completion-table.
6252 6321
6253 * files.el (locate-file-completion): Doc fix. 6322 * files.el (locate-file-completion): Doc fix.
6254 6323
diff --git a/lisp/desktop.el b/lisp/desktop.el
index cf4d387c7b1..0d5d18da191 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -963,10 +963,11 @@ directory DIRNAME."
963 963
964(defun desktop-load-file (function) 964(defun desktop-load-file (function)
965 "Load the file where auto loaded FUNCTION is defined." 965 "Load the file where auto loaded FUNCTION is defined."
966 (let ((fcell (symbol-function function))) 966 (when function
967 (when (and (listp fcell) 967 (let ((fcell (symbol-function function)))
968 (eq 'autoload (car fcell))) 968 (when (and (listp fcell)
969 (load (cadr fcell))))) 969 (eq 'autoload (car fcell)))
970 (load (cadr fcell))))))
970 971
971;; ---------------------------------------------------------------------------- 972;; ----------------------------------------------------------------------------
972;; Create a buffer, load its file, set its mode, ...; 973;; Create a buffer, load its file, set its mode, ...;
diff --git a/lisp/info.el b/lisp/info.el
index 4dc129db152..5d86d0cb46e 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -3666,23 +3666,23 @@ the variable `Info-file-list-for-emacs'."
3666 ((equal tag "Up") Info-up-link-keymap)))))) 3666 ((equal tag "Up") Info-up-link-keymap))))))
3667 (when Info-use-header-line 3667 (when Info-use-header-line
3668 (goto-char (point-min)) 3668 (goto-char (point-min))
3669 (let ((header-end (line-end-position)) 3669 (let* ((header-end (line-end-position))
3670 header) 3670 (header
3671 ;; If we find neither Next: nor Prev: link, show the entire 3671 ;; If we find neither Next: nor Prev: link, show the entire
3672 ;; node header. Otherwise, don't show the File: and Node: 3672 ;; node header. Otherwise, don't show the File: and Node:
3673 ;; parts, to avoid wasting precious space on information that 3673 ;; parts, to avoid wasting precious space on information that
3674 ;; is available in the mode line. 3674 ;; is available in the mode line.
3675 (if (re-search-forward 3675 (if (re-search-forward
3676 "\\(next\\|up\\|prev[ious]*\\): " 3676 "\\(next\\|up\\|prev[ious]*\\): "
3677 header-end t) 3677 header-end t)
3678 (progn 3678 (progn
3679 (goto-char (match-beginning 1)) 3679 (goto-char (match-beginning 1))
3680 (setq header (buffer-substring (point) header-end))) 3680 (buffer-substring (point) header-end))
3681 (if (re-search-forward "node:[ \t]*[^ \t]+[ \t]*" header-end t) 3681 (if (re-search-forward "node:[ \t]*[^ \t]+[ \t]*"
3682 (setq header 3682 header-end t)
3683 (concat "No next, prev or up links -- " 3683 (concat "No next, prev or up links -- "
3684 (buffer-substring (point) header-end))) 3684 (buffer-substring (point) header-end))
3685 (setq header (buffer-substring (point) header-end)))) 3685 (buffer-substring (point) header-end)))))
3686 (put-text-property (point-min) (1+ (point-min)) 3686 (put-text-property (point-min) (1+ (point-min))
3687 'header-line 3687 'header-line
3688 (replace-regexp-in-string 3688 (replace-regexp-in-string
@@ -3698,9 +3698,15 @@ the variable `Info-file-list-for-emacs'."
3698 3698
3699 ;; Fontify titles 3699 ;; Fontify titles
3700 (goto-char (point-min)) 3700 (goto-char (point-min))
3701 (when not-fontified-p 3701 (when (and font-lock-mode not-fontified-p)
3702 (while (re-search-forward "\n\\([^ \t\n].+\\)\n\\(\\*\\*+\\|==+\\|--+\\|\\.\\.+\\)$" 3702 (while (and (re-search-forward "\n\\([^ \t\n].+\\)\n\\(\\*\\*+\\|==+\\|--+\\|\\.\\.+\\)$"
3703 nil t) 3703 nil t)
3704 ;; Only consider it as an underlined title if the ASCII
3705 ;; underline has the same size as the text. A typical
3706 ;; counter example is when a continuation "..." is alone
3707 ;; on a line.
3708 (= (- (match-end 1) (match-beginning 1))
3709 (- (match-end 2) (match-beginning 2))))
3704 (let* ((c (preceding-char)) 3710 (let* ((c (preceding-char))
3705 (face 3711 (face
3706 (cond ((= c ?*) 'info-title-1) 3712 (cond ((= c ?*) 'info-title-1)
diff --git a/lisp/international/fontset.el b/lisp/international/fontset.el
index c441b72166c..1e5c9508f4e 100644
--- a/lisp/international/fontset.el
+++ b/lisp/international/fontset.el
@@ -173,39 +173,42 @@
173 ((if (r2 >= 0) 173 ((if (r2 >= 0)
174 ;; This is a 2D charset. 174 ;; This is a 2D charset.
175 (r1 = ((r1 << 7) | r2))) 175 (r1 = ((r1 << 7) | r2)))
176 (lookup-character ucs-mule-cjk-to-unicode r0 r1) 176 (lookup-character utf-subst-table-for-encode r0 r1)
177 (if r7 177 (if r7
178 ;; We got it! 178 ;; We got it!
179 ((r1 = (r0 >> 8)) 179 ((r1 = (r0 >> 8))
180 (r2 = (r0 & #xFF))) 180 (r2 = (r0 & #xFF)))
181 ;; Look for a translation for non-ASCII chars. 181 ;; Look for a translation for non-ASCII chars.
182 ((translate-character ucs-mule-to-mule-unicode r0 r1) 182 ((translate-character ucs-mule-to-mule-unicode r0 r1)
183 (if (r0 == ,(charset-id 'latin-iso8859-1)) 183 (if (r0 == ,(charset-id 'ascii))
184 ((r2 = (r1 + 128)) 184 ((r2 = r1)
185 (r1 = 0)) 185 (r1 = 0))
186 ((r2 = (r1 & #x7F)) 186 ((if (r0 == ,(charset-id 'latin-iso8859-1))
187 (r1 >>= 7) 187 ((r2 = (r1 + 128))
188 (if (r0 == ,(charset-id 'mule-unicode-0100-24ff)) 188 (r1 = 0))
189 ((r1 *= 96) 189 ((r2 = (r1 & #x7F))
190 (r1 += r2) 190 (r1 >>= 7)
191 (r1 += ,(- #x100 (* 32 96) 32)) 191 (if (r0 == ,(charset-id 'mule-unicode-0100-24ff))
192 (r1 >8= 0) 192 ((r1 *= 96)
193 (r2 = r7)) 193 (r1 += r2)
194 (if (r0 == ,(charset-id 'mule-unicode-2500-33ff)) 194 (r1 += ,(- #x100 (* 32 96) 32))
195 ((r1 *= 96) 195 (r1 >8= 0)
196 (r1 += r2) 196 (r2 = r7))
197 (r1 += ,(- #x2500 (* 32 96) 32)) 197 (if (r0 == ,(charset-id 'mule-unicode-2500-33ff))
198 (r1 >8= 0) 198 ((r1 *= 96)
199 (r2 = r7)) 199 (r1 += r2)
200 (if (r0 == ,(charset-id 'mule-unicode-e000-ffff)) 200 (r1 += ,(- #x2500 (* 32 96) 32))
201 ((r1 *= 96) 201 (r1 >8= 0)
202 (r1 += r2) 202 (r2 = r7))
203 (r1 += ,(- #xe000 (* 32 96) 32)) 203 (if (r0 == ,(charset-id 'mule-unicode-e000-ffff))
204 (r1 >8= 0) 204 ((r1 *= 96)
205 (r2 = r7)) 205 (r1 += r2)
206 ;; No way, use the glyph for U+FFFD. 206 (r1 += ,(- #xe000 (* 32 96) 32))
207 ((r1 = #xFF) 207 (r1 >8= 0)
208 (r2 = #xFD))))))))))))) 208 (r2 = r7))
209 ;; No way, use the glyph for U+FFFD.
210 ((r1 = #xFF)
211 (r2 = #xFD)))))))))))))))
209 "Encode characters for display with iso10646 font. 212 "Encode characters for display with iso10646 font.
210Translate through the translation-hash-table named 213Translate through the translation-hash-table named
211`ucs-mule-cjk-to-unicode' and the translation-table named 214`ucs-mule-cjk-to-unicode' and the translation-table named
diff --git a/lisp/international/utf-8.el b/lisp/international/utf-8.el
index 56043630817..384d973db9f 100644
--- a/lisp/international/utf-8.el
+++ b/lisp/international/utf-8.el
@@ -934,7 +934,8 @@ Move point to the end of the sequence."
934 'help-echo 'utf-8-help-echo) 934 'help-echo 'utf-8-help-echo)
935 (if (= l 2) 935 (if (= l 2)
936 (put-text-property (point) (min (point-max) (+ l (point))) 936 (put-text-property (point) (min (point-max) (+ l (point)))
937 'display (format "\\%03o" ch)) 937 'display (propertize (format "\\%03o" ch)
938 'face 'escape-glyph))
938 (compose-region (point) (+ l (point)) ?$,3u=(B)) 939 (compose-region (point) (+ l (point)) ?$,3u=(B))
939 (forward-char l)) 940 (forward-char l))
940 (forward-char 1)))) 941 (forward-char 1))))
diff --git a/lisp/makefile.w32-in b/lisp/makefile.w32-in
index 6d3cacecc6a..df92500a006 100644
--- a/lisp/makefile.w32-in
+++ b/lisp/makefile.w32-in
@@ -176,7 +176,7 @@ update-subdirs-SH: doit
176 $(srcdir)/update-subdirs $$file; \ 176 $(srcdir)/update-subdirs $$file; \
177 done; 177 done;
178 178
179updates: update-subdirs autoloads finder-data custom-deps 179updates: update-subdirs autoloads mh-autoloads finder-data custom-deps
180 180
181# Update the AUTHORS file. 181# Update the AUTHORS file.
182 182
@@ -207,7 +207,7 @@ TAGS-LISP: $(lisptagsfiles1) $(lisptagsfiles2)
207# compiled find the right files. 207# compiled find the right files.
208 208
209# Need separate version for sh and native cmd.exe 209# Need separate version for sh and native cmd.exe
210compile: subdirs.el compile-$(SHELLTYPE) doit 210compile: subdirs.el mh-autoloads compile-$(SHELLTYPE) doit
211 211
212compile-CMD: 212compile-CMD:
213# -for %%f in ($(lisp) $(WINS)) do for %%g in (%%f\*.elc) do @attrib -r %%g 213# -for %%f in ($(lisp) $(WINS)) do for %%g in (%%f\*.elc) do @attrib -r %%g
@@ -282,9 +282,47 @@ compile-after-backup: backup-compiled-files compile-always
282# Note that this doesn't create .elc files. It only recompiles if an 282# Note that this doesn't create .elc files. It only recompiles if an
283# .elc is present. 283# .elc is present.
284 284
285recompile: doit 285recompile: mh-autoloads doit
286 $(emacs) -f batch-byte-recompile-directory $(lisp) 286 $(emacs) -f batch-byte-recompile-directory $(lisp)
287 287
288# Update MH-E internal autoloads. These are not to be confused with
289# the autoloads for the MH-E entry points, which are already in
290# loaddefs.el.
291MH_E_SRC = $(lisp)/mh-e/mh-acros.el $(lisp)/mh-e/mh-alias.el \
292 $(lisp)/mh-e/mh-comp.el $(lisp)/mh-e/mh-customize.el \
293 $(lisp)/mh-e/mh-e.el $(lisp)/mh-e/mh-funcs.el \
294 $(lisp)/mh-e/mh-mime.el $(lisp)/mh-e/mh-pick.el \
295 $(lisp)/mh-e/mh-print.el $(lisp)/mh-e/mh-inc.el \
296 $(lisp)/mh-e/mh-init.el $(lisp)/mh-e/mh-index.el \
297 $(lisp)/mh-e/mh-identity.el $(lisp)/mh-e/mh-junk.el \
298 $(lisp)/mh-e/mh-seq.el $(lisp)/mh-e/mh-speed.el \
299 $(lisp)/mh-e/mh-utils.el
300
301mh-autoloads: $(lisp)/mh-e/mh-loaddefs.el
302$(lisp)/mh-e/mh-loaddefs.el: $(MH_E_SRC)
303 echo ";;; mh-loaddefs.el --- automatically extracted autoloads" > $@
304 echo ";;" >> $@
305 echo ";;; Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc." >> $@
306 echo ";;; Author: Bill Wohler <wohler@newt.com>" >> $@
307 echo ";;; Keywords: mail" >> $@
308 echo ";;; Commentary:" >> $@
309 echo ";;; Change Log:" >> $@
310 echo ";;; Code:" >> $@
311 $(EMACS) $(EMACSOPT) \
312 -l autoload \
313 --eval "(setq generate-autoload-cookie \";;;###mh-autoload\")" \
314 --eval "(setq generated-autoload-file \"$(lisp)/mh-e/mh-loaddefs.el\")" \
315 --eval "(setq make-backup-files nil)" \
316 -f batch-update-autoloads $(lisp)/mh-e
317 echo " " >> $@
318 echo "(provide 'mh-loaddefs)" >> $@
319 echo ";;; Local Variables:" >> $@
320 echo ";;; version-control: never" >> $@
321 echo ";;; no-byte-compile: t" >> $@
322 echo ";;; no-update-autoloads: t" >> $@
323 echo ";;; End:" >> $@
324 echo ";;; mh-loaddefs.el ends here" >> $@
325
288# Prepare a bootstrap in the lisp subdirectory. 326# Prepare a bootstrap in the lisp subdirectory.
289# 327#
290# Build loaddefs.el to make sure it's up-to-date. If it's not, that 328# Build loaddefs.el to make sure it's up-to-date. If it's not, that
@@ -316,7 +354,7 @@ bootstrap-clean-SH:
316# When done, remove bootstrap-emacs from ../bin, so that 354# When done, remove bootstrap-emacs from ../bin, so that
317# it will not be mistaken for an installed binary. 355# it will not be mistaken for an installed binary.
318 356
319bootstrap: update-subdirs autoloads compile finder-data custom-deps 357bootstrap: update-subdirs autoloads mh-autoloads compile finder-data custom-deps
320 - $(DEL) $(EMACS) 358 - $(DEL) $(EMACS)
321 359
322# 360#
diff --git a/lisp/mh-e/.gitignore b/lisp/mh-e/.gitignore
index 150b33984e4..19a8825a278 100644
--- a/lisp/mh-e/.gitignore
+++ b/lisp/mh-e/.gitignore
@@ -1 +1,2 @@
1mh-autoloads.el
1mh-loaddefs.el 2mh-loaddefs.el
diff --git a/lisp/progmodes/mixal-mode.el b/lisp/progmodes/mixal-mode.el
index 5134cf8292e..741ae8097a0 100644
--- a/lisp/progmodes/mixal-mode.el
+++ b/lisp/progmodes/mixal-mode.el
@@ -46,6 +46,14 @@
46 46
47;;; History: 47;;; History:
48;; Version 0.3: 48;; Version 0.3:
49;; 12/10/05: Stefan Monnier <monnier@iro.umontreal.ca>
50;; Use font-lock-syntactic-keywords to detect/mark comments.
51;; Use [^ \t\n]+ to match the operand part of a line.
52;; Drop mixal-operation-codes.
53;; Build the mixal-operation-codes-alist immediately.
54;; Use `interactive' in mixal-describe-operation-code.
55;; Remove useless ".*$" at the end of some regexps.
56;; Fix the definition of comment-start-skip.
49;; 08/10/05: sync mdk and emacs cvs 57;; 08/10/05: sync mdk and emacs cvs
50;; from emacs: compile-command and require-final-newline 58;; from emacs: compile-command and require-final-newline
51;; from mdk: see version 0.2 59;; from mdk: see version 0.2
@@ -79,10 +87,12 @@
79;;; Syntax table 87;;; Syntax table
80(defvar mixal-mode-syntax-table 88(defvar mixal-mode-syntax-table
81 (let ((st (make-syntax-table))) 89 (let ((st (make-syntax-table)))
82 ;; (modify-syntax-entry ?* "<" st) we need to do a bit more to make 90 ;; We need to do a bit more to make fontlocking for comments work.
83 ;; (modify-syntax-entry ?\n ">" st) fontlocking for comments work 91 ;; See mixal-font-lock-syntactic-keywords.
92 ;; (modify-syntax-entry ?* "<" st)
93 (modify-syntax-entry ?\n ">" st)
84 st) 94 st)
85 "Syntax table for `dot-mode'.") 95 "Syntax table for `mixal-mode'.")
86 96
87(defvar mixal-font-lock-label-face 'font-lock-variable-name-face 97(defvar mixal-font-lock-label-face 'font-lock-variable-name-face
88 "Face name to use for label names. 98 "Face name to use for label names.
@@ -99,48 +109,10 @@ value.")
99Default value is that of `font-lock-builtin-face', but you can modify its 109Default value is that of `font-lock-builtin-face', but you can modify its
100value.") 110value.")
101 111
102(defvar mixal-operation-codes
103 '("NOP" "ADD" "FADD" "SUB" "FSUB" "MUL" "FMUL" "DIV" "FDIV" "NUM" "CHAR"
104 "HLT" "SLA" "SRA" "SLAX" "SRAX" "SLC" "SRC" "MOVE" "LDA" "LD1" "LD2" "LD3"
105 "LD4" "LD5" "LD6" "LDX" "LDAN" "LD1N" "LD2N" "LD3N" "LD4N" "LD5N" "LD6N"
106 "LDXN" "STA" "ST1" "ST2" "ST3" "ST4" "ST5" "ST6" "STX" "STJ" "STZ" "JBUS"
107 "IOC" "IN" "OUT" "JRAD" "JMP" "JSJ" "JOV" "JNOV"
108 "JL" "JE" "JG" "JGE" "JNE" "JLE"
109 "JAN" "J1N" "J2N" "J3N" "J4N" "J5N" "J6N" "JXN"
110 "JAZ" "J1Z" "J2Z" "J3Z" "J4Z" "J5Z" "J6Z" "JXZ"
111 "JAP" "J1P" "J2P" "J3P" "J4P" "J5P" "J6P" "JXP"
112 "JANN" "J1NN" "J2NN" "J3NN" "J4NN" "J5NN" "J6NN" "JXNN"
113 "JANZ" "J1NZ" "J2NZ" "J3NZ" "J4NZ" "J5NZ" "J6NZ" "JXNZ"
114 "JANP" "J1NP" "J2NP" "J3NP" "J4NP" "J5NP" "J6NP" "JXNP"
115 "INCA" "DECA" "ENTA" "ENNA" "INC1" "DEC1" "ENT1" "ENN1"
116 "INC2" "DEC2" "ENT2" "ENN2" "INC3" "DEC3" "ENT3" "ENN3" "INC4" "DEC4"
117 "ENT4" "ENN4" "INC5" "DEC5" "ENT5" "ENN5" "INC6" "DEC6" "ENT6" "ENN6"
118 "INCX" "DECX" "ENTX" "ENNX" "CMPA" "FCMP" "CMP1" "CMP2" "CMP3" "CMP4"
119 "CMP5" "CMP6" "CMPX")
120 "List of possible operation codes as strings.")
121;; (makunbound 'mixal-operation-codes)
122
123(defvar mixal-assembly-pseudoinstructions 112(defvar mixal-assembly-pseudoinstructions
124 '("ORIG" "EQU" "CON" "ALF" "END") 113 '("ORIG" "EQU" "CON" "ALF" "END")
125 "List of possible assembly pseudoinstructions.") 114 "List of possible assembly pseudoinstructions.")
126 115
127;;; Font-locking:
128(defvar mixal-font-lock-keywords
129 `(("^\\([A-Z0-9a-z]+\\).*$"
130 (1 mixal-font-lock-label-face))
131 (,(regexp-opt mixal-operation-codes 'words)
132 . mixal-font-lock-operation-code-face)
133 (,(regexp-opt
134 mixal-assembly-pseudoinstructions 'words)
135 . mixal-font-lock-assembly-pseudoinstruction-face)
136 ("^[A-Z0-9a-z]*[ \t]+[A-ZO-9a-z]+[ \t]+\\(=.*=\\).*$"
137 (1 font-lock-constant-face))
138 ("^[A-Z0-9a-z]*[ \t]+[A-Z0-9a-z]+[ \t]+[A-Z0-9a-z,():+-\\*=\" ]*\t+\\(.*\\)$"
139 (1 font-lock-comment-face))
140 ("^\\*.*$" . font-lock-comment-face))
141 "Keyword highlighting specification for `mixal-mode'.")
142;; (makunbound 'mixal-font-lock-keywords)
143
144;;;; Compilation 116;;;; Compilation
145;; Output from mixasm is compatible with default behavior of emacs, 117;; Output from mixasm is compatible with default behavior of emacs,
146;; I just added a key (C-cc) and modified the make-command. 118;; I just added a key (C-cc) and modified the make-command.
@@ -149,1127 +121,940 @@ value.")
149;; Tabs works well by default. 121;; Tabs works well by default.
150 122
151;;;; Describe 123;;;; Describe
152(defvar mixal-operation-codes-alist '() 124(defvar mixal-operation-codes-alist
153 "Alist that contains all the possible operation codes for mix. 125 ;; FIXME: the codes FADD, FSUB, FMUL, FDIV, JRAD, and FCMP were in
154Each elt has the form 126 ;; mixal-operation-codes but not here. They should probably be added here.
155 (OP-CODE GROUP FULL-NAME C-BYTE F-BYTE DESCRIPTION EXECUTION-TIME) 127 ;;
156Where OP-CODE is the text of the opcode as an symbol, 128 ;; We used to define this with a backquote and subexps like ,(+ 8 3) for
157FULL-NAME is the human readable name as a string, 129 ;; better clarity, but the resulting code was too big and caused the
158C-BYTE is the operation code telling what operation is to be performed, 130 ;; byte-compiler to eat up all the stack space. Even using
159F-BYTE holds a modification of the operation code which can be a symbol 131 ;; `eval-when-compile' didn't help because the byte-compiler insists on
160 or a number, 132 ;; compiling the code before evaluating it.
161DESCRIPTION contains an string with a description about the operation code and 133 '((LDA loading "load A" 8 field
162EXECUTION-TIME holds info about the time it takes, number or string.") 134 "Put in rA the contents of cell no. M.
163;; (makunbound 'mixal-operation-codes-alist)
164
165(defun mixal-add-operation-code (op-code group full-name C-byte F-byte
166 description execution-time)
167 "Add an operation code to `mixal-operation-codes-alist'."
168 (setq mixal-operation-codes-alist
169 (cons (list op-code group full-name C-byte F-byte
170 description execution-time)
171 mixal-operation-codes-alist)))
172
173;; now add each operation code
174
175(mixal-add-operation-code
176 'LDA 'loading "load A" 8 'field
177 "Put in rA the contents of cell no. M.
178Uses a + when there is no sign in subfield. Subfield is left padded with 135Uses a + when there is no sign in subfield. Subfield is left padded with
179zeros to make a word." 136zeros to make a word."
180 2) 137 2)
181 138
182(mixal-add-operation-code 139 (LDX loading "load X" 15 field
183 'LDX 'loading "load X" 15 'field 140 "Put in rX the contents of cell no. M.
184 "Put in rX the contents of cell no. M.
185Uses a + when there is no sign in subfield. Subfield is left padded with 141Uses a + when there is no sign in subfield. Subfield is left padded with
186zeros to make a word." 142zeros to make a word."
187 2) 143 2)
188 144
189(mixal-add-operation-code 145 (LD1 loading "load I1" 9 field
190 'LD1 'loading "load I1" (+ 8 1) 'field 146 "Put in rI1 the contents of cell no. M.
191 "Put in rI1 the contents of cell no. M.
192Uses a + when there is no sign in subfield. Subfield is left padded with 147Uses a + when there is no sign in subfield. Subfield is left padded with
193zeros to make a word. Index registers only have 2 bytes and a sign, Trying 148zeros to make a word. Index registers only have 2 bytes and a sign, Trying
194to set anything more that that will result in undefined behavior." 149to set anything more that that will result in undefined behavior."
195 2) 150 2)
196 151
197(mixal-add-operation-code 152 (LD2 loading "load I2" 10 field
198 'LD2 'loading "load I2" (+ 8 2) 'field 153 "Put in rI2 the contents of cell no. M.
199 "Put in rI2 the contents of cell no. M.
200Uses a + when there is no sign in subfield. Subfield is left padded with 154Uses a + when there is no sign in subfield. Subfield is left padded with
201zeros to make a word. Index registers only have 2 bytes and a sign, Trying 155zeros to make a word. Index registers only have 2 bytes and a sign, Trying
202to set anything more that that will result in undefined behavior." 156to set anything more that that will result in undefined behavior."
203 2) 157 2)
204 158
205(mixal-add-operation-code 159 (LD3 loading "load I3" 11 field
206 'LD3 'loading "load I3" (+ 8 3) 'field 160 "Put in rI3 the contents of cell no. M.
207 "Put in rI3 the contents of cell no. M.
208Uses a + when there is no sign in subfield. Subfield is left padded with 161Uses a + when there is no sign in subfield. Subfield is left padded with
209zeros to make a word. Index registers only have 2 bytes and a sign, Trying 162zeros to make a word. Index registers only have 2 bytes and a sign, Trying
210to set anything more that that will result in undefined behavior." 163to set anything more that that will result in undefined behavior."
211 2) 164 2)
212 165
213(mixal-add-operation-code 166 (LD4 loading "load I4" 12 field
214 'LD4 'loading "load I4" (+ 8 4) 'field 167 "Put in rI4 the contents of cell no. M.
215 "Put in rI4 the contents of cell no. M.
216Uses a + when there is no sign in subfield. Subfield is left padded with 168Uses a + when there is no sign in subfield. Subfield is left padded with
217zeros to make a word. Index registers only have 2 bytes and a sign, Trying 169zeros to make a word. Index registers only have 2 bytes and a sign, Trying
218to set anything more that that will result in undefined behavior." 170to set anything more that that will result in undefined behavior."
219 2) 171 2)
220 172
221(mixal-add-operation-code 173 (LD5 loading "load I5" 13 field
222 'LD5 'loading "load I5" (+ 8 5) 'field 174 "Put in rI5 the contents of cell no. M.
223 "Put in rI5 the contents of cell no. M.
224Uses a + when there is no sign in subfield. Subfield is left padded with 175Uses a + when there is no sign in subfield. Subfield is left padded with
225zeros to make a word. Index registers only have 2 bytes and a sign, Trying 176zeros to make a word. Index registers only have 2 bytes and a sign, Trying
226to set anything more that that will result in undefined behavior." 177to set anything more that that will result in undefined behavior."
227 2) 178 2)
228 179
229(mixal-add-operation-code 180 (LD6 loading "load I6" 14 field
230 'LD6 'loading "load I6" (+ 8 6) 'field 181 "Put in rI6 the contents of cell no. M.
231 "Put in rI6 the contents of cell no. M.
232Uses a + when there is no sign in subfield. Subfield is left padded with 182Uses a + when there is no sign in subfield. Subfield is left padded with
233zeros to make a word. Index registers only have 2 bytes and a sign, Trying 183zeros to make a word. Index registers only have 2 bytes and a sign, Trying
234to set anything more that that will result in undefined behavior." 184to set anything more that that will result in undefined behavior."
235 2) 185 2)
236 186
237(mixal-add-operation-code 187 (LDAN loading "load A negative" 16 field
238 'LDAN 'loading "load A negative" 16 'field 188 "Put in rA the contents of cell no. M, with opposite sign.
239 "Put in rA the contents of cell no. M, with opposite sign.
240Uses a + when there is no sign in subfield, otherwise use the opposite sign. 189Uses a + when there is no sign in subfield, otherwise use the opposite sign.
241Subfield is left padded with zeros to make a word." 190Subfield is left padded with zeros to make a word."
242 2) 191 2)
243 192
244(mixal-add-operation-code 193 (LDXN loading "load X negative" 23 field
245 'LDXN 'loading "load X negative" 23 'field 194 "Put in rX the contents of cell no. M, with opposite sign.
246 "Put in rX the contents of cell no. M, with opposite sign.
247Uses a + when there is no sign in subfield, otherwise use the opposite sign. 195Uses a + when there is no sign in subfield, otherwise use the opposite sign.
248Subfield is left padded with zeros to make a word." 196Subfield is left padded with zeros to make a word."
249 2) 197 2)
250 198
251(mixal-add-operation-code 199 (LD1N loading "load I1 negative" 17 field
252 'LD1N 'loading "load I1 negative" (+ 16 1) 'field 200 "Put in rI1 the contents of cell no. M, with opposite sign.
253 "Put in rI1 the contents of cell no. M, with opposite sign.
254Uses a + when there is no sign in subfield, otherwise use the opposite sign. 201Uses a + when there is no sign in subfield, otherwise use the opposite sign.
255Subfield is left padded with zeros to make a word. Index registers only 202Subfield is left padded with zeros to make a word. Index registers only
256have 2 bytes and a sign, Trying to set anything more that that will result 203have 2 bytes and a sign, Trying to set anything more that that will result
257in undefined behavior." 204in undefined behavior."
258 2) 205 2)
259 206
260(mixal-add-operation-code 207 (LD2N loading "load I2 negative" 18 field
261 'LD2N 'loading "load I2 negative" (+ 16 2) 'field 208 "Put in rI2 the contents of cell no. M, with opposite sign.
262 "Put in rI2 the contents of cell no. M, with opposite sign.
263Uses a + when there is no sign in subfield, otherwise use the opposite sign. 209Uses a + when there is no sign in subfield, otherwise use the opposite sign.
264Subfield is left padded with zeros to make a word. Index registers only 210Subfield is left padded with zeros to make a word. Index registers only
265have 2 bytes and a sign, Trying to set anything more that that will result 211have 2 bytes and a sign, Trying to set anything more that that will result
266in undefined behavior." 212in undefined behavior."
267 2) 213 2)
268 214
269(mixal-add-operation-code 215 (LD3N loading "load I3 negative" 19 field
270 'LD3N 'loading "load I3 negative" (+ 16 3) 'field 216 "Put in rI3 the contents of cell no. M, with opposite sign.
271 "Put in rI3 the contents of cell no. M, with opposite sign.
272Uses a + when there is no sign in subfield, otherwise use the opposite sign. 217Uses a + when there is no sign in subfield, otherwise use the opposite sign.
273Subfield is left padded with zeros to make a word. Index registers only 218Subfield is left padded with zeros to make a word. Index registers only
274have 2 bytes and a sign, Trying to set anything more that that will result 219have 2 bytes and a sign, Trying to set anything more that that will result
275in undefined behavior." 220in undefined behavior."
276 2) 221 2)
277 222
278(mixal-add-operation-code 223 (LD4N loading "load I4 negative" 20 field
279 'LD4N 'loading "load I4 negative" (+ 16 4) 'field 224 "Put in rI4 the contents of cell no. M, with opposite sign.
280 "Put in rI4 the contents of cell no. M, with opposite sign.
281Uses a + when there is no sign in subfield, otherwise use the opposite sign. 225Uses a + when there is no sign in subfield, otherwise use the opposite sign.
282Subfield is left padded with zeros to make a word. Index registers only 226Subfield is left padded with zeros to make a word. Index registers only
283have 2 bytes and a sign, Trying to set anything more that that will result 227have 2 bytes and a sign, Trying to set anything more that that will result
284in undefined behavior." 228in undefined behavior."
285 2) 229 2)
286 230
287(mixal-add-operation-code 231 (LD5N loading "load I5 negative" 21 field
288 'LD5N 'loading "load I5 negative" (+ 16 5) 'field 232 "Put in rI5 the contents of cell no. M, with opposite sign.
289 "Put in rI5 the contents of cell no. M, with opposite sign.
290Uses a + when there is no sign in subfield, otherwise use the opposite sign. 233Uses a + when there is no sign in subfield, otherwise use the opposite sign.
291Subfield is left padded with zeros to make a word. Index registers only 234Subfield is left padded with zeros to make a word. Index registers only
292have 2 bytes and a sign, Trying to set anything more that that will result 235have 2 bytes and a sign, Trying to set anything more that that will result
293in undefined behavior." 236in undefined behavior."
294 2) 237 2)
295 238
296(mixal-add-operation-code 239 (LD6N loading "load I6 negative" 22 field
297 'LD6N 'loading "load I6 negative" (+ 16 6) 'field 240 "Put in rI6 the contents of cell no. M, with opposite sign.
298 "Put in rI6 the contents of cell no. M, with opposite sign.
299Uses a + when there is no sign in subfield, otherwise use the opposite sign. 241Uses a + when there is no sign in subfield, otherwise use the opposite sign.
300Subfield is left padded with zeros to make a word. Index registers only 242Subfield is left padded with zeros to make a word. Index registers only
301have 2 bytes and a sign, Trying to set anything more that that will result 243have 2 bytes and a sign, Trying to set anything more that that will result
302in undefined behavior." 244in undefined behavior."
303 2) 245 2)
304 246
305(mixal-add-operation-code 247 (STA storing "store A" 24 field
306 'STA 'storing "store A" 24 'field 248 "Store in cell Nr. M the contents of rA.
307 "Store in cell Nr. M the contents of rA.
308The modification of the operation code represents the subfield of the 249The modification of the operation code represents the subfield of the
309memory cell that is to be overwritten with bytes from a register. These 250memory cell that is to be overwritten with bytes from a register. These
310bytes are taken beginning by the rightmost side of the register. The 251bytes are taken beginning by the rightmost side of the register. The
311sign of the memory cell is not changed, unless it is part of the subfield." 252sign of the memory cell is not changed, unless it is part of the subfield."
312 2) 253 2)
313 254
314(mixal-add-operation-code 255 (STX storing "store X" 31 field
315 'STX 'storing "store X" 31 'field 256 "Store in cell Nr. M the contents of rX.
316 "Store in cell Nr. M the contents of rX.
317The modification of the operation code represents the subfield of the 257The modification of the operation code represents the subfield of the
318memory cell that is to be overwritten with bytes from a register. These 258memory cell that is to be overwritten with bytes from a register. These
319bytes are taken beginning by the rightmost side of the register. The 259bytes are taken beginning by the rightmost side of the register. The
320sign of the memory cell is not changed, unless it is part of the subfield." 260sign of the memory cell is not changed, unless it is part of the subfield."
321 2) 261 2)
322 262
323(mixal-add-operation-code 263 (ST1 storing "store I1" 25 field
324 'ST1 'storing "store I1" (+ 24 1) 'field 264 "Store in cell Nr. M the contents of rI1.
325 "Store in cell Nr. M the contents of rI1.
326The modification of the operation code represents the subfield of the 265The modification of the operation code represents the subfield of the
327memory cell that is to be overwritten with bytes from a register. These 266memory cell that is to be overwritten with bytes from a register. These
328bytes are taken beginning by the rightmost side of the register. The 267bytes are taken beginning by the rightmost side of the register. The
329sign of the memory cell is not changed, unless it is part of the subfield. 268sign of the memory cell is not changed, unless it is part of the subfield.
330Because index registers only have 2 bytes and a sign, the rest of the bytes 269Because index registers only have 2 bytes and a sign, the rest of the bytes
331are assumed to be 0." 270are assumed to be 0."
332 2) 271 2)
333 272
334(mixal-add-operation-code 273 (ST2 storing "store I2" 26 field
335 'ST2 'storing "store I2" (+ 24 2) 'field 274 "Store in cell Nr. M the contents of rI2.
336 "Store in cell Nr. M the contents of rI2.
337The modification of the operation code represents the subfield of the 275The modification of the operation code represents the subfield of the
338memory cell that is to be overwritten with bytes from a register. These 276memory cell that is to be overwritten with bytes from a register. These
339bytes are taken beginning by the rightmost side of the register. The 277bytes are taken beginning by the rightmost side of the register. The
340sign of the memory cell is not changed, unless it is part of the subfield. 278sign of the memory cell is not changed, unless it is part of the subfield.
341Because index registers only have 2 bytes and a sign, the rest of the bytes 279Because index registers only have 2 bytes and a sign, the rest of the bytes
342are assumed to be 0." 280are assumed to be 0."
343 2) 281 2)
344 282
345(mixal-add-operation-code 283 (ST3 storing "store I3" 27 field
346 'ST3 'storing "store I3" (+ 24 3) 'field 284 "Store in cell Nr. M the contents of rI3.
347 "Store in cell Nr. M the contents of rI3.
348The modification of the operation code represents the subfield of the 285The modification of the operation code represents the subfield of the
349memory cell that is to be overwritten with bytes from a register. These 286memory cell that is to be overwritten with bytes from a register. These
350bytes are taken beginning by the rightmost side of the register. The 287bytes are taken beginning by the rightmost side of the register. The
351sign of the memory cell is not changed, unless it is part of the subfield. 288sign of the memory cell is not changed, unless it is part of the subfield.
352Because index registers only have 2 bytes and a sign, the rest of the bytes 289Because index registers only have 2 bytes and a sign, the rest of the bytes
353are assumed to be 0." 290are assumed to be 0."
354 2) 291 2)
355 292
356(mixal-add-operation-code 293 (ST4 storing "store I4" 28 field
357 'ST4 'storing "store I4" (+ 24 4) 'field 294 "Store in cell Nr. M the contents of rI4.
358 "Store in cell Nr. M the contents of rI4.
359The modification of the operation code represents the subfield of the 295The modification of the operation code represents the subfield of the
360memory cell that is to be overwritten with bytes from a register. These 296memory cell that is to be overwritten with bytes from a register. These
361bytes are taken beginning by the rightmost side of the register. The 297bytes are taken beginning by the rightmost side of the register. The
362sign of the memory cell is not changed, unless it is part of the subfield. 298sign of the memory cell is not changed, unless it is part of the subfield.
363Because index registers only have 2 bytes and a sign, the rest of the bytes 299Because index registers only have 2 bytes and a sign, the rest of the bytes
364are assumed to be 0." 300are assumed to be 0."
365 2) 301 2)
366 302
367(mixal-add-operation-code 303 (ST5 storing "store I5" 29 field
368 'ST5 'storing "store I5" (+ 24 5) 'field 304 "Store in cell Nr. M the contents of rI5.
369 "Store in cell Nr. M the contents of rI5.
370The modification of the operation code represents the subfield of the 305The modification of the operation code represents the subfield of the
371memory cell that is to be overwritten with bytes from a register. These 306memory cell that is to be overwritten with bytes from a register. These
372bytes are taken beginning by the rightmost side of the register. The 307bytes are taken beginning by the rightmost side of the register. The
373sign of the memory cell is not changed, unless it is part of the subfield. 308sign of the memory cell is not changed, unless it is part of the subfield.
374Because index registers only have 2 bytes and a sign, the rest of the bytes 309Because index registers only have 2 bytes and a sign, the rest of the bytes
375are assumed to be 0." 310are assumed to be 0."
376 2) 311 2)
377 312
378(mixal-add-operation-code 313 (ST6 storing "store I6" 30 field
379 'ST6 'storing "store I6" (+ 24 6) 'field 314 "Store in cell Nr. M the contents of rI6.
380 "Store in cell Nr. M the contents of rI6.
381The modification of the operation code represents the subfield of the 315The modification of the operation code represents the subfield of the
382memory cell that is to be overwritten with bytes from a register. These 316memory cell that is to be overwritten with bytes from a register. These
383bytes are taken beginning by the rightmost side of the register. The 317bytes are taken beginning by the rightmost side of the register. The
384sign of the memory cell is not changed, unless it is part of the subfield. 318sign of the memory cell is not changed, unless it is part of the subfield.
385Because index registers only have 2 bytes and a sign, the rest of the bytes 319Because index registers only have 2 bytes and a sign, the rest of the bytes
386are assumed to be 0." 320are assumed to be 0."
387 2) 321 2)
388 322
389(mixal-add-operation-code 323 (STJ storing "store J" 32 field
390 'STJ 'storing "store J" 32 'field 324 "Store in cell Nr. M the contents of rJ.
391 "Store in cell Nr. M the contents of rJ.
392The modification of the operation code represents the subfield of the 325The modification of the operation code represents the subfield of the
393memory cell that is to be overwritten with bytes from a register. These 326memory cell that is to be overwritten with bytes from a register. These
394bytes are taken beginning by the rightmost side of the register. The sign 327bytes are taken beginning by the rightmost side of the register. The sign
395of rJ is always +, sign of the memory cell is not changed, unless it is 328of rJ is always +, sign of the memory cell is not changed, unless it is
396part of the subfield. The default field for STJ is (0:2)." 329part of the subfield. The default field for STJ is (0:2)."
397 2) 330 2)
398 331
399(mixal-add-operation-code 332 (STZ storing "store zero" 33 field
400 'STZ 'storing "store zero" 33 'field 333 "Store in cell Nr. M '+ 0'.
401 "Store in cell Nr. M '+ 0'.
402The modification of the operation code represents the subfield of the 334The modification of the operation code represents the subfield of the
403memory cell that is to be overwritten with zeros." 335memory cell that is to be overwritten with zeros."
404 2) 336 2)
405 337
406(mixal-add-operation-code 338 (ADD arithmetic "add" 1 field
407 'ADD 'arithmetic "add" 1 'field 339 "Add to A the contents of cell Nr. M.
408 "Add to A the contents of cell Nr. M.
409Subfield is padded with zero to make a word. 340Subfield is padded with zero to make a word.
410If the result is to large, the operation result modulo 1,073,741,823 (the 341If the result is to large, the operation result modulo 1,073,741,823 (the
411maximum value storable in a MIX word) is stored in `rA', and the overflow 342maximum value storable in a MIX word) is stored in `rA', and the overflow
412toggle is set to TRUE." 343toggle is set to TRUE."
413 2) 344 2)
414 345
415(mixal-add-operation-code 346 (SUB arithmetic "subtract" 2 field
416 'SUB 'arithmetic "subtract" 2 'field 347 "Subtract to A the contents of cell Nr. M.
417 "Subtract to A the contents of cell Nr. M.
418Subfield is padded with zero to make a word. 348Subfield is padded with zero to make a word.
419If the result is to large, the operation result modulo 1,073,741,823 (the 349If the result is to large, the operation result modulo 1,073,741,823 (the
420maximum value storable in a MIX word) is stored in `rA', and the overflow 350maximum value storable in a MIX word) is stored in `rA', and the overflow
421toggle is set to TRUE." 351toggle is set to TRUE."
422 2) 352 2)
423 353
424(mixal-add-operation-code 354 (MUL arithmetic "multiply" 3 field
425 'MUL 'arithmetic "multiply" 3 'field 355 "Multiplies the contents of cell Nr. M with A, result is 10 bytes and stored in rA and rX.
426 "Multiplies the contents of cell Nr. M with A, result is 10 bytes and stored in rA and rX.
427The sign is + if the sign of rA and cell M where the same, otherwise, it is -" 356The sign is + if the sign of rA and cell M where the same, otherwise, it is -"
428 10) 357 10)
429 358
430(mixal-add-operation-code 359 (DIV arithmetic "divide" 4 field
431 'DIV 'arithmetic "divide" 4 'field 360 "Both rA and rX are taken together and divided by cell Nr. M, quotient is placed in rA, remainder in rX.
432 "Both rA and rX are taken together and divided by cell Nr. M, quotient is placed in rA, remainder in rX.
433The sign is taken from rA, and after the divide the sign of rA is set to + when 361The sign is taken from rA, and after the divide the sign of rA is set to + when
434both the sign of rA and M where the same. Divide by zero and overflow of rA result 362both the sign of rA and M where the same. Divide by zero and overflow of rA
435in undefined behavior." 363result in undefined behavior."
436 12) 364 12)
437 365
438(mixal-add-operation-code 366 (ENTA address-transfer "enter A" 48
439 'ENTA 'address-transfer "enter A" 48 2 367 "Literal value is stored in rA.
440 "Literal value is stored in rA.
441Indexed, stores value of index in rA." 368Indexed, stores value of index in rA."
442 1) 369 1)
443 370
444(mixal-add-operation-code 371 (ENTX address-transfer "enter X" 55
445 'ENTX 'address-transfer "enter X" 55 2 372 "Literal value is stored in rX.
446 "Literal value is stored in rX.
447Indexed, stores value of index in rX." 373Indexed, stores value of index in rX."
448 1) 374 1)
449 375
450(mixal-add-operation-code 376 (ENT1 address-transfer "Enter rI1" 49
451 'ENT1 'address-transfer "Enter rI1" (+ 48 1) 2 377 "Literal value is stored in rI1.
452 "Literal value is stored in rI1.
453Indexed, stores value of index in rI1." 378Indexed, stores value of index in rI1."
454 1) 379 1)
455 380
456(mixal-add-operation-code 381 (ENT2 address-transfer "Enter rI2" 50
457 'ENT2 'address-transfer "Enter rI2" (+ 48 2) 2 382 "Literal value is stored in rI2.
458 "Literal value is stored in rI2.
459Indexed, stores value of index in rI2." 383Indexed, stores value of index in rI2."
460 1) 384 1)
461 385
462(mixal-add-operation-code 386 (ENT3 address-transfer "Enter rI3" 51
463 'ENT3 'address-transfer "Enter rI3" (+ 48 3) 2 387 "Literal value is stored in rI3.
464 "Literal value is stored in rI3.
465Indexed, stores value of index in rI3." 388Indexed, stores value of index in rI3."
466 1) 389 1)
467 390
468(mixal-add-operation-code 391 (ENT4 address-transfer "Enter rI4" 52
469 'ENT4 'address-transfer "Enter rI4" (+ 48 4) 2 392 "Literal value is stored in rI4.
470 "Literal value is stored in rI4.
471Indexed, stores value of index in rI4." 393Indexed, stores value of index in rI4."
472 1) 394 1)
473 395
474(mixal-add-operation-code 396 (ENT5 address-transfer "Enter rI5" 53
475 'ENT5 'address-transfer "Enter rI5" (+ 48 5) 2 397 "Literal value is stored in rI5.
476 "Literal value is stored in rI5.
477Indexed, stores value of index in rI5." 398Indexed, stores value of index in rI5."
478 1) 399 1)
479 400
480(mixal-add-operation-code 401 (ENT6 address-transfer "Enter rI6" 54
481 'ENT6 'address-transfer "Enter rI6" (+ 48 6) 2 402 "Literal value is stored in rI6.
482 "Literal value is stored in rI6.
483Indexed, stores value of index in rI6." 403Indexed, stores value of index in rI6."
484 1) 404 1)
485 405
486(mixal-add-operation-code 406 (ENNA address-transfer "enter negative A" 48
487 'ENNA 'address-transfer "enter negative A" 48 3 407 "Literal value is stored in rA with opposite sign.
488 "Literal value is stored in rA with opposite sign.
489Indexed, stores value of index in rA with opposite sign." 408Indexed, stores value of index in rA with opposite sign."
490 1) 409 1)
491 410
492(mixal-add-operation-code 411 (ENNX address-transfer "enter negative X" 55
493 'ENNX 'address-transfer "enter negative X" 55 3 412 "Literal value is stored in rX with opposite sign.
494 "Literal value is stored in rX with opposite sign.
495Indexed, stores value of index in rX with opposite sign." 413Indexed, stores value of index in rX with opposite sign."
496 1) 414 1)
497 415
498(mixal-add-operation-code 416 (ENN1 address-transfer "Enter negative rI1" 49
499 'ENN1 'address-transfer "Enter negative rI1" (+ 48 1) 3 417 "Literal value is stored in rI1 with opposite sign.
500 "Literal value is stored in rI1 with opposite sign.
501Indexed, stores value of index in rI1 with opposite sign." 418Indexed, stores value of index in rI1 with opposite sign."
502 1) 419 1)
503 420
504(mixal-add-operation-code 421 (ENN2 address-transfer "Enter negative rI2" 50
505 'ENN2 'address-transfer "Enter negative rI2" (+ 48 2) 3 422 "Literal value is stored in rI2 with opposite sign.
506 "Literal value is stored in rI2 with opposite sign.
507Indexed, stores value of index in rI2 with opposite sign." 423Indexed, stores value of index in rI2 with opposite sign."
508 1) 424 1)
509 425
510(mixal-add-operation-code 426 (ENN3 address-transfer "Enter negative rI3" 51
511 'ENN3 'address-transfer "Enter negative rI3" (+ 48 3) 3 427 "Literal value is stored in rI3 with opposite sign.
512 "Literal value is stored in rI3 with opposite sign.
513Indexed, stores value of index in rI3 with opposite sign." 428Indexed, stores value of index in rI3 with opposite sign."
514 1) 429 1)
515 430
516(mixal-add-operation-code 431 (ENN4 address-transfer "Enter negative rI4" 52
517 'ENN4 'address-transfer "Enter negative rI4" (+ 48 4) 3 432 "Literal value is stored in rI4 with opposite sign.
518 "Literal value is stored in rI4 with opposite sign.
519Indexed, stores value of index in rI4 with opposite sign." 433Indexed, stores value of index in rI4 with opposite sign."
520 1) 434 1)
521 435
522(mixal-add-operation-code 436 (ENN5 address-transfer "Enter negative rI5" 53
523 'ENN5 'address-transfer "Enter negative rI5" (+ 48 5) 3 437 "Literal value is stored in rI5 with opposite sign.
524 "Literal value is stored in rI5 with opposite sign.
525Indexed, stores value of index in rI5 with opposite sign." 438Indexed, stores value of index in rI5 with opposite sign."
526 1) 439 1)
527 440
528(mixal-add-operation-code 441 (ENN6 address-transfer "Enter negative rI6" 54
529 'ENN6 'address-transfer "Enter negative rI6" (+ 48 6) 3 442 "Literal value is stored in rI6 with opposite sign.
530 "Literal value is stored in rI6 with opposite sign.
531Indexed, stores value of index in rI6 with opposite sign." 443Indexed, stores value of index in rI6 with opposite sign."
532 1) 444 1)
533 445
534(mixal-add-operation-code 446 (INCA address-transfer "increase A" 48
535 'INCA 'address-transfer "increase A" 48 0 447 "Increase register A with the literal value of M.
536 "Increase register A with the literal value of M.
537On overflow the overflow toggle is set." 448On overflow the overflow toggle is set."
538 1) 449 1)
539 450
540(mixal-add-operation-code 451 (INCX address-transfer "increase X" 55
541 'INCX 'address-transfer "increase X" 55 0 452 "Increase register X with the literal value of M.
542 "Increase register X with the literal value of M.
543On overflow the overflow toggle is set." 453On overflow the overflow toggle is set."
544 1) 454 1)
545 455
546(mixal-add-operation-code 456 (INC1 address-transfer "increase I1" 49
547 'INC1 'address-transfer "increase I1" (+ 48 1) 0 457 "Increase register I1 with the literal value of M.
548 "Increase register I1 with the literal value of M.
549The result is undefined when the result does not fit in 458The result is undefined when the result does not fit in
5502 bytes." 4592 bytes."
551 1) 460 1)
552 461
553(mixal-add-operation-code 462 (INC2 address-transfer "increase I2" 50
554 'INC2 'address-transfer "increase I2" (+ 48 2) 0 463 "Increase register I2 with the literal value of M.
555 "Increase register I2 with the literal value of M.
556The result is undefined when the result does not fit in 464The result is undefined when the result does not fit in
5572 bytes." 4652 bytes."
558 1) 466 1)
559 467
560(mixal-add-operation-code 468 (INC3 address-transfer "increase I3" 51
561 'INC3 'address-transfer "increase I3" (+ 48 3) 0 469 "Increase register I3 with the literal value of M.
562 "Increase register I3 with the literal value of M.
563The result is undefined when the result does not fit in 470The result is undefined when the result does not fit in
5642 bytes." 4712 bytes."
565 1) 472 1)
566 473
567(mixal-add-operation-code 474 (INC4 address-transfer "increase I4" 52
568 'INC4 'address-transfer "increase I4" (+ 48 4) 0 475 "Increase register I4 with the literal value of M.
569 "Increase register I4 with the literal value of M.
570The result is undefined when the result does not fit in 476The result is undefined when the result does not fit in
5712 bytes." 4772 bytes."
572 1) 478 1)
573 479
574(mixal-add-operation-code 480 (INC5 address-transfer "increase I5" 53
575 'INC5 'address-transfer "increase I5" (+ 48 5) 0 481 "Increase register I5 with the literal value of M.
576 "Increase register I5 with the literal value of M.
577The result is undefined when the result does not fit in 482The result is undefined when the result does not fit in
5782 bytes." 4832 bytes."
579 1) 484 1)
580 485
581(mixal-add-operation-code 486 (INC6 address-transfer "increase I6" 54
582 'INC6 'address-transfer "increase I6" (+ 48 6) 0 487 "Increase register I6 with the literal value of M.
583 "Increase register I6 with the literal value of M.
584The result is undefined when the result does not fit in 488The result is undefined when the result does not fit in
5852 bytes." 4892 bytes."
586 1) 490 1)
587 491
588(mixal-add-operation-code 492 (DECA address-transfer "decrease A" 48
589 'DECA 'address-transfer "decrease A" 48 1 493 "Decrease register A with the literal value of M.
590 "Decrease register A with the literal value of M.
591On overflow the overflow toggle is set." 494On overflow the overflow toggle is set."
592 1) 495 1)
593 496
594(mixal-add-operation-code 497 (DECX address-transfer "decrease X" 55
595 'DECX 'address-transfer "decrease X" 55 1 498 "Decrease register X with the literal value of M.
596 "Decrease register X with the literal value of M.
597On overflow the overflow toggle is set." 499On overflow the overflow toggle is set."
598 1) 500 1)
599 501
600(mixal-add-operation-code 502 (DEC1 address-transfer "decrease I1" 49
601 'DEC1 'address-transfer "decrease I1" (+ 48 1) 1 503 "Decrease register I1 with the literal value of M.
602 "Decrease register I1 with the literal value of M.
603The result is undefined when the result does not fit in 504The result is undefined when the result does not fit in
6042 bytes." 5052 bytes."
605 1) 506 1)
606 507
607(mixal-add-operation-code 508 (DEC2 address-transfer "decrease I2" 50
608 'DEC2 'address-transfer "decrease I2" (+ 48 2) 1 509 "Decrease register I2 with the literal value of M.
609 "Decrease register I2 with the literal value of M.
610The result is undefined when the result does not fit in 510The result is undefined when the result does not fit in
6112 bytes." 5112 bytes."
612 1) 512 1)
613 513
614(mixal-add-operation-code 514 (DEC3 address-transfer "decrease I3" 51
615 'DEC3 'address-transfer "decrease I3" (+ 48 3) 1 515 "Decrease register I3 with the literal value of M.
616 "Decrease register I3 with the literal value of M.
617The result is undefined when the result does not fit in 516The result is undefined when the result does not fit in
6182 bytes." 5172 bytes."
619 1) 518 1)
620 519
621(mixal-add-operation-code 520 (DEC4 address-transfer "decrease I4" 52
622 'DEC4 'address-transfer "decrease I4" (+ 48 4) 1 521 "Decrease register I4 with the literal value of M.
623 "Decrease register I4 with the literal value of M.
624The result is undefined when the result does not fit in 522The result is undefined when the result does not fit in
6252 bytes." 5232 bytes."
626 1) 524 1)
627 525
628(mixal-add-operation-code 526 (DEC5 address-transfer "decrease I5" 53
629 'DEC5 'address-transfer "decrease I5" (+ 48 5) 1 527 "Decrease register I5 with the literal value of M.
630 "Decrease register I5 with the literal value of M.
631The result is undefined when the result does not fit in 528The result is undefined when the result does not fit in
6322 bytes." 5292 bytes."
633 1) 530 1)
634 531
635(mixal-add-operation-code 532 (DEC6 address-transfer "decrease I6" 54
636 'DEC6 'address-transfer "decrease I6" (+ 48 6) 1 533 "Decrease register I6 with the literal value of M.
637 "Decrease register I6 with the literal value of M.
638The result is undefined when the result does not fit in 534The result is undefined when the result does not fit in
6392 bytes." 5352 bytes."
640 1) 536 1)
641 537
642(mixal-add-operation-code 538 (CMPA comparison "compare A" 56 field
643 'CMPA 'comparison "compare A" 56 'field 539 "Compare contents of A with contents of M.
644 "Compare contents of A with contents of M.
645The field specifier works on both fields. The comparison indicator 540The field specifier works on both fields. The comparison indicator
646is set to LESS, EQUAL or GREATER depending on the outcome." 541is set to LESS, EQUAL or GREATER depending on the outcome."
647 2) 542 2)
648
649 543
650(mixal-add-operation-code 544 (CMPX comparison "compare X" 63 field
651 'CMPX 'comparison "compare X" 63 'field 545 "Compare contents of rX with contents of M.
652 "Compare contents of rX with contents of M.
653The field specifier works on both fields. The comparison indicator 546The field specifier works on both fields. The comparison indicator
654is set to LESS, EQUAL or GREATER depending on the outcome." 547is set to LESS, EQUAL or GREATER depending on the outcome."
655 2) 548 2)
656 549
657 550 (CMP1 comparison "compare I1" 57 field
658(mixal-add-operation-code 551 "Compare contents of rI1 with contents of M.
659 'CMP1 'comparison "compare I1" (+ 56 1) 'field
660 "Compare contents of rI1 with contents of M.
661The field specifier works on both fields. The comparison indicator 552The field specifier works on both fields. The comparison indicator
662is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 553is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3
663have a value of 0." 554have a value of 0."
664 2) 555 2)
665
666 556
667(mixal-add-operation-code 557 (CMP2 comparison "compare I2" 58 field
668 'CMP2 'comparison "compare I2" (+ 56 2) 'field 558 "Compare contents of rI2 with contents of M.
669 "Compare contents of rI2 with contents of M.
670The field specifier works on both fields. The comparison indicator 559The field specifier works on both fields. The comparison indicator
671is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 560is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3
672have a value of 0." 561have a value of 0."
673 2) 562 2)
674
675 563
676(mixal-add-operation-code 564 (CMP3 comparison "compare I3" 59 field
677 'CMP3 'comparison "compare I3" (+ 56 3) 'field 565 "Compare contents of rI3 with contents of M.
678 "Compare contents of rI3 with contents of M.
679The field specifier works on both fields. The comparison indicator 566The field specifier works on both fields. The comparison indicator
680is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 567is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3
681have a value of 0." 568have a value of 0."
682 2) 569 2)
683 570
684 571 (CMP4 comparison "compare I4" 60 field
685(mixal-add-operation-code 572 "Compare contents of rI4 with contents of M.
686 'CMP4 'comparison "compare I4" (+ 56 4) 'field
687 "Compare contents of rI4 with contents of M.
688The field specifier works on both fields. The comparison indicator 573The field specifier works on both fields. The comparison indicator
689is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 574is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3
690have a value of 0." 575have a value of 0."
691 2) 576 2)
692
693 577
694(mixal-add-operation-code 578 (CMP5 comparison "compare I5" 61 field
695 'CMP5 'comparison "compare I5" (+ 56 5) 'field 579 "Compare contents of rI5 with contents of M.
696 "Compare contents of rI5 with contents of M.
697The field specifier works on both fields. The comparison indicator 580The field specifier works on both fields. The comparison indicator
698is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 581is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3
699have a value of 0." 582have a value of 0."
700 2) 583 2)
701 584
702 585 (CMP6 comparison "compare I6" 62 field
703(mixal-add-operation-code 586 "Compare contents of rI6 with contents of M.
704 'CMP6 'comparison "compare I6" (+ 56 6) 'field
705 "Compare contents of rI6 with contents of M.
706The field specifier works on both fields. The comparison indicator 587The field specifier works on both fields. The comparison indicator
707is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 588is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3
708have a value of 0." 589have a value of 0."
709 2) 590 2)
710 591
711(mixal-add-operation-code 592 (JMP jump "jump" 39
712 'JMP 'jump "jump" 39 0 593 "Unconditional jump.
713 "Unconditional jump.
714Register J is set to the value of the next instruction that would have 594Register J is set to the value of the next instruction that would have
715been executed when there was no jump." 595been executed when there was no jump."
716 1) 596 1)
717 597
718(mixal-add-operation-code 598 (JSJ jump "jump, save J" 39
719 'JSJ 'jump "jump, save J" 39 1 599 "Unconditional jump, but rJ is not modified."
720 "Unconditional jump, but rJ is not modified." 600 1)
721 1)
722 601
723(mixal-add-operation-code 602 (JOV jump "jump on overflow" 39
724 'JOV 'jump "jump on overflow" 39 2 603 "Jump if OV is set (and turn it off).
725 "Jump if OV is set (and turn it off).
726Register J is set to the value of the next instruction that would have 604Register J is set to the value of the next instruction that would have
727been executed when there was no jump." 605been executed when there was no jump."
728 1) 606 1)
729 607
730(mixal-add-operation-code 608 (JNOV jump "Jump on no overflow" 39
731 'JNOV 'jump "Jump on no overflow" 39 3 609 "Jump if OV is not set (and turn it off).
732 "Jump if OV is not set (and turn it off).
733Register J is set to the value of the next instruction that would have 610Register J is set to the value of the next instruction that would have
734been executed when there was no jump." 611been executed when there was no jump."
735 1) 612 1)
736 613
737(mixal-add-operation-code 614 (JL jump "Jump on less" 39
738 'JL 'jump "Jump on less" 39 4 615 "Jump if '[CM] = L'.
739 "Jump if '[CM] = L'.
740Register J is set to the value of the next instruction that would have 616Register J is set to the value of the next instruction that would have
741been executed when there was no jump." 617been executed when there was no jump."
742 1) 618 1)
743
744 619
745(mixal-add-operation-code 620 (JE jump "Jump on equal" 39
746 'JE 'jump "Jump on equal" 39 5 621 "Jump if '[CM] = E'.
747 "Jump if '[CM] = E'.
748Register J is set to the value of the next instruction that would have 622Register J is set to the value of the next instruction that would have
749been executed when there was no jump." 623been executed when there was no jump."
750 1) 624 1)
751 625
752 626 (JG jump "Jump on greater" 39
753(mixal-add-operation-code 627 "Jump if '[CM] = G'.
754 'JG 'jump "Jump on greater" 39 6
755 "Jump if '[CM] = G'.
756Register J is set to the value of the next instruction that would have 628Register J is set to the value of the next instruction that would have
757been executed when there was no jump." 629been executed when there was no jump."
758 1) 630 1)
759
760 631
761(mixal-add-operation-code 632 (JGE jump "Jump on not less" 39
762 'JGE 'jump "Jump on not less" 39 7 633 "Jump if '[CM]' does not equal 'L'.
763 "Jump if '[CM]' does not equal 'L'.
764Register J is set to the value of the next instruction that would have 634Register J is set to the value of the next instruction that would have
765been executed when there was no jump." 635been executed when there was no jump."
766 1) 636 1)
767
768 637
769(mixal-add-operation-code 638 (JNE jump "Jump on not equal" 39
770 'JNE 'jump "Jump on not equal" 39 8 639 "Jump if '[CM]' does not equal 'E'.
771 "Jump if '[CM]' does not equal 'E'.
772Register J is set to the value of the next instruction that would have 640Register J is set to the value of the next instruction that would have
773been executed when there was no jump." 641been executed when there was no jump."
774 1) 642 1)
775 643
776 644 (JLE jump "Jump on not greater" 39
777(mixal-add-operation-code 645 "Jump if '[CM]' does not equal 'G'.
778 'JLE 'jump "Jump on not greater" 39 9
779 "Jump if '[CM]' does not equal 'G'.
780Register J is set to the value of the next instruction that would have 646Register J is set to the value of the next instruction that would have
781been executed when there was no jump." 647been executed when there was no jump."
782 1) 648 1)
783 649
784(mixal-add-operation-code 650 (JAN jump "jump A negative" 40
785 'JAN 'jump "jump A negative" 40 0 651 "Jump if the content of rA is negative.
786 "Jump if the content of rA is negative.
787Register J is set to the value of the next instruction that would have 652Register J is set to the value of the next instruction that would have
788been executed when there was no jump." 653been executed when there was no jump."
789 1) 654 1)
790
791 655
792(mixal-add-operation-code 656 (JAZ jump "jump A zero" 40
793 'JAZ 'jump "jump A zero" 40 1 657 "Jump if the content of rA is zero.
794 "Jump if the content of rA is zero.
795Register J is set to the value of the next instruction that would have 658Register J is set to the value of the next instruction that would have
796been executed when there was no jump." 659been executed when there was no jump."
797 1) 660 1)
798 661
799 662 (JAP jump "jump A positive" 40
800(mixal-add-operation-code 663 "Jump if the content of rA is positive.
801 'JAP 'jump "jump A positive" 40 2
802 "Jump if the content of rA is positive.
803Register J is set to the value of the next instruction that would have 664Register J is set to the value of the next instruction that would have
804been executed when there was no jump." 665been executed when there was no jump."
805 1) 666 1)
806
807 667
808(mixal-add-operation-code 668 (JANN jump "jump A non-negative" 40
809 'JANN 'jump "jump A non-negative" 40 3 669 "Jump if the content of rA is non-negative.
810 "Jump if the content of rA is non-negative.
811Register J is set to the value of the next instruction that would have 670Register J is set to the value of the next instruction that would have
812been executed when there was no jump." 671been executed when there was no jump."
813 1) 672 1)
814 673
815 674 (JANZ jump "jump A non-zero" 40
816(mixal-add-operation-code 675 "Jump if the content of rA is non-zero.
817 'JANZ 'jump "jump A non-zero" 40 4
818 "Jump if the content of rA is non-zero.
819Register J is set to the value of the next instruction that would have 676Register J is set to the value of the next instruction that would have
820been executed when there was no jump." 677been executed when there was no jump."
821 1) 678 1)
822
823 679
824(mixal-add-operation-code 680 (JANP jump "jump A non-positive" 40
825 'JANP 'jump "jump A non-positive" 40 5 681 "Jump if the content of rA is non-positive.
826 "Jump if the content of rA is non-positive.
827Register J is set to the value of the next instruction that would have 682Register J is set to the value of the next instruction that would have
828been executed when there was no jump." 683been executed when there was no jump."
829 1) 684 1)
830 685
831(mixal-add-operation-code 686 (JXN jump "jump X negative" 47
832 'JXN 'jump "jump X negative" 47 0 687 "Jump if the content of rX is negative.
833 "Jump if the content of rX is negative.
834Register J is set to the value of the next instruction that would have 688Register J is set to the value of the next instruction that would have
835been executed when there was no jump." 689been executed when there was no jump."
836 1) 690 1)
837
838 691
839(mixal-add-operation-code 692 (JXZ jump "jump X zero" 47
840 'JXZ 'jump "jump X zero" 47 1 693 "Jump if the content of rX is zero.
841 "Jump if the content of rX is zero.
842Register J is set to the value of the next instruction that would have 694Register J is set to the value of the next instruction that would have
843been executed when there was no jump." 695been executed when there was no jump."
844 1) 696 1)
845 697
846 698 (JXP jump "jump X positive" 47
847(mixal-add-operation-code 699 "Jump if the content of rX is positive.
848 'JXP 'jump "jump X positive" 47 2
849 "Jump if the content of rX is positive.
850Register J is set to the value of the next instruction that would have 700Register J is set to the value of the next instruction that would have
851been executed when there was no jump." 701been executed when there was no jump."
852 1) 702 1)
853
854 703
855(mixal-add-operation-code 704 (JXNN jump "jump X non-negative" 47
856 'JXNN 'jump "jump X non-negative" 47 3 705 "Jump if the content of rX is non-negative.
857 "Jump if the content of rX is non-negative.
858Register J is set to the value of the next instruction that would have 706Register J is set to the value of the next instruction that would have
859been executed when there was no jump." 707been executed when there was no jump."
860 1) 708 1)
861 709
862 710 (JXNZ jump "jump X non-zero" 47
863(mixal-add-operation-code 711 "Jump if the content of rX is non-zero.
864 'JXNZ 'jump "jump X non-zero" 47 4
865 "Jump if the content of rX is non-zero.
866Register J is set to the value of the next instruction that would have 712Register J is set to the value of the next instruction that would have
867been executed when there was no jump." 713been executed when there was no jump."
868 1) 714 1)
869
870 715
871(mixal-add-operation-code 716 (JXNP jump "jump X non-positive" 47
872 'JXNP 'jump "jump X non-positive" 47 5 717 "Jump if the content of rX is non-positive.
873 "Jump if the content of rX is non-positive.
874Register J is set to the value of the next instruction that would have 718Register J is set to the value of the next instruction that would have
875been executed when there was no jump." 719been executed when there was no jump."
876 1) 720 1)
877 721
878(mixal-add-operation-code 722 (J1N jump "jump I1 negative" 41
879 'J1N 'jump "jump I1 negative" (+ 40 1) 0 723 "Jump if the content of rI1 is negative.
880 "Jump if the content of rI1 is negative.
881Register J is set to the value of the next instruction that would have 724Register J is set to the value of the next instruction that would have
882been executed when there was no jump." 725been executed when there was no jump."
883 1) 726 1)
884 727
885 728 (J1Z jump "jump I1 zero" 41
886(mixal-add-operation-code 729 "Jump if the content of rI1 is zero.
887 'J1Z 'jump "jump I1 zero" (+ 40 1) 1
888 "Jump if the content of rI1 is zero.
889Register J is set to the value of the next instruction that would have 730Register J is set to the value of the next instruction that would have
890been executed when there was no jump." 731been executed when there was no jump."
891 1) 732 1)
892
893 733
894(mixal-add-operation-code 734 (J1P jump "jump I1 positive" 41
895 'J1P 'jump "jump I1 positive" (+ 40 1) 2 735 "Jump if the content of rI1 is positive.
896 "Jump if the content of rI1 is positive.
897Register J is set to the value of the next instruction that would have 736Register J is set to the value of the next instruction that would have
898been executed when there was no jump." 737been executed when there was no jump."
899 1) 738 1)
900
901 739
902(mixal-add-operation-code 740 (J1NN jump "jump I1 non-negative" 41
903 'J1NN 'jump "jump I1 non-negative" (+ 40 1) 3 741 "Jump if the content of rI1 is non-negative.
904 "Jump if the content of rI1 is non-negative.
905Register J is set to the value of the next instruction that would have 742Register J is set to the value of the next instruction that would have
906been executed when there was no jump." 743been executed when there was no jump."
907 1) 744 1)
908 745
909 746 (J1NZ jump "jump I1 non-zero" 41
910(mixal-add-operation-code 747 "Jump if the content of rI1 is non-zero.
911 'J1NZ 'jump "jump I1 non-zero" (+ 40 1) 4
912 "Jump if the content of rI1 is non-zero.
913Register J is set to the value of the next instruction that would have 748Register J is set to the value of the next instruction that would have
914been executed when there was no jump." 749been executed when there was no jump."
915 1) 750 1)
916
917 751
918(mixal-add-operation-code 752 (J1NP jump "jump I1 non-positive" 41
919 'J1NP 'jump "jump I1 non-positive" (+ 40 1) 5 753 "Jump if the content of rI1 is non-positive.
920 "Jump if the content of rI1 is non-positive.
921Register J is set to the value of the next instruction that would have 754Register J is set to the value of the next instruction that would have
922been executed when there was no jump." 755been executed when there was no jump."
923 1) 756 1)
924 757
925(mixal-add-operation-code 758 (J2N jump "jump I2 negative" 41
926 'J2N 'jump "jump I2 negative" (+ 40 1) 0 759 "Jump if the content of rI2 is negative.
927 "Jump if the content of rI2 is negative.
928Register J is set to the value of the next instruction that would have 760Register J is set to the value of the next instruction that would have
929been executed when there was no jump." 761been executed when there was no jump."
930 1) 762 1)
931
932 763
933(mixal-add-operation-code 764 (J2Z jump "jump I2 zero" 41
934 'J2Z 'jump "jump I2 zero" (+ 40 1) 1 765 "Jump if the content of rI2 is zero.
935 "Jump if the content of rI2 is zero.
936Register J is set to the value of the next instruction that would have 766Register J is set to the value of the next instruction that would have
937been executed when there was no jump." 767been executed when there was no jump."
938 1) 768 1)
939 769
940 770 (J2P jump "jump I2 positive" 41
941(mixal-add-operation-code 771 "Jump if the content of rI2 is positive.
942 'J2P 'jump "jump I2 positive" (+ 40 1) 2
943 "Jump if the content of rI2 is positive.
944Register J is set to the value of the next instruction that would have 772Register J is set to the value of the next instruction that would have
945been executed when there was no jump." 773been executed when there was no jump."
946 1) 774 1)
947
948 775
949(mixal-add-operation-code 776 (J2NN jump "jump I2 non-negative" 41
950 'J2NN 'jump "jump I2 non-negative" (+ 40 1) 3 777 "Jump if the content of rI2 is non-negative.
951 "Jump if the content of rI2 is non-negative.
952Register J is set to the value of the next instruction that would have 778Register J is set to the value of the next instruction that would have
953been executed when there was no jump." 779been executed when there was no jump."
954 1) 780 1)
955
956 781
957(mixal-add-operation-code 782 (J2NZ jump "jump I2 non-zero" 41
958 'J2NZ 'jump "jump I2 non-zero" (+ 40 1) 4 783 "Jump if the content of rI2 is non-zero.
959 "Jump if the content of rI2 is non-zero.
960Register J is set to the value of the next instruction that would have 784Register J is set to the value of the next instruction that would have
961been executed when there was no jump." 785been executed when there was no jump."
962 1) 786 1)
963 787
964 788 (J2NP jump "jump I2 non-positive" 41
965(mixal-add-operation-code 789 "Jump if the content of rI2 is non-positive.
966 'J2NP 'jump "jump I2 non-positive" (+ 40 1) 5
967 "Jump if the content of rI2 is non-positive.
968Register J is set to the value of the next instruction that would have 790Register J is set to the value of the next instruction that would have
969been executed when there was no jump." 791been executed when there was no jump."
970 1) 792 1)
971
972 793
973(mixal-add-operation-code 794 (J3N jump "jump I3 negative" 41
974 'J3N 'jump "jump I3 negative" (+ 40 1) 0 795 "Jump if the content of rI3 is negative.
975 "Jump if the content of rI3 is negative.
976Register J is set to the value of the next instruction that would have 796Register J is set to the value of the next instruction that would have
977been executed when there was no jump." 797been executed when there was no jump."
978 1) 798 1)
979 799
980 800 (J3Z jump "jump I3 zero" 41
981(mixal-add-operation-code 801 "Jump if the content of rI3 is zero.
982 'J3Z 'jump "jump I3 zero" (+ 40 1) 1
983 "Jump if the content of rI3 is zero.
984Register J is set to the value of the next instruction that would have 802Register J is set to the value of the next instruction that would have
985been executed when there was no jump." 803been executed when there was no jump."
986 1) 804 1)
987
988 805
989(mixal-add-operation-code 806 (J3P jump "jump I3 positive" 41
990 'J3P 'jump "jump I3 positive" (+ 40 1) 2 807 "Jump if the content of rI3 is positive.
991 "Jump if the content of rI3 is positive.
992Register J is set to the value of the next instruction that would have 808Register J is set to the value of the next instruction that would have
993been executed when there was no jump." 809been executed when there was no jump."
994 1) 810 1)
995 811
996 812 (J3NN jump "jump I3 non-negative" 41
997(mixal-add-operation-code 813 "Jump if the content of rI3 is non-negative.
998 'J3NN 'jump "jump I3 non-negative" (+ 40 1) 3
999 "Jump if the content of rI3 is non-negative.
1000Register J is set to the value of the next instruction that would have 814Register J is set to the value of the next instruction that would have
1001been executed when there was no jump." 815been executed when there was no jump."
1002 1) 816 1)
1003
1004 817
1005(mixal-add-operation-code 818 (J3NZ jump "jump I3 non-zero" 41
1006 'J3NZ 'jump "jump I3 non-zero" (+ 40 1) 4 819 "Jump if the content of rI3 is non-zero.
1007 "Jump if the content of rI3 is non-zero.
1008Register J is set to the value of the next instruction that would have 820Register J is set to the value of the next instruction that would have
1009been executed when there was no jump." 821been executed when there was no jump."
1010 1) 822 1)
1011
1012 823
1013(mixal-add-operation-code 824 (J3NP jump "jump I3 non-positive" 41
1014 'J3NP 'jump "jump I3 non-positive" (+ 40 1) 5 825 "Jump if the content of rI3 is non-positive.
1015 "Jump if the content of rI3 is non-positive.
1016Register J is set to the value of the next instruction that would have 826Register J is set to the value of the next instruction that would have
1017been executed when there was no jump." 827been executed when there was no jump."
1018 1) 828 1)
1019 829
1020 830 (J4N jump "jump I4 negative" 41
1021(mixal-add-operation-code 831 "Jump if the content of rI4 is negative.
1022 'J4N 'jump "jump I4 negative" (+ 40 1) 0
1023 "Jump if the content of rI4 is negative.
1024Register J is set to the value of the next instruction that would have 832Register J is set to the value of the next instruction that would have
1025been executed when there was no jump." 833been executed when there was no jump."
1026 1) 834 1)
1027
1028 835
1029(mixal-add-operation-code 836 (J4Z jump "jump I4 zero" 41
1030 'J4Z 'jump "jump I4 zero" (+ 40 1) 1 837 "Jump if the content of rI4 is zero.
1031 "Jump if the content of rI4 is zero.
1032Register J is set to the value of the next instruction that would have 838Register J is set to the value of the next instruction that would have
1033been executed when there was no jump." 839been executed when there was no jump."
1034 1) 840 1)
1035 841
1036 842 (J4P jump "jump I4 positive" 41
1037(mixal-add-operation-code 843 "Jump if the content of rI4 is positive.
1038 'J4P 'jump "jump I4 positive" (+ 40 1) 2
1039 "Jump if the content of rI4 is positive.
1040Register J is set to the value of the next instruction that would have 844Register J is set to the value of the next instruction that would have
1041been executed when there was no jump." 845been executed when there was no jump."
1042 1) 846 1)
1043
1044 847
1045(mixal-add-operation-code 848 (J4NN jump "jump I4 non-negative" 41
1046 'J4NN 'jump "jump I4 non-negative" (+ 40 1) 3 849 "Jump if the content of rI4 is non-negative.
1047 "Jump if the content of rI4 is non-negative.
1048Register J is set to the value of the next instruction that would have 850Register J is set to the value of the next instruction that would have
1049been executed when there was no jump." 851been executed when there was no jump."
1050 1) 852 1)
1051 853
1052 854 (J4NZ jump "jump I4 non-zero" 41
1053(mixal-add-operation-code 855 "Jump if the content of rI4 is non-zero.
1054 'J4NZ 'jump "jump I4 non-zero" (+ 40 1) 4
1055 "Jump if the content of rI4 is non-zero.
1056Register J is set to the value of the next instruction that would have 856Register J is set to the value of the next instruction that would have
1057been executed when there was no jump." 857been executed when there was no jump."
1058 1) 858 1)
1059
1060 859
1061(mixal-add-operation-code 860 (J4NP jump "jump I4 non-positive" 41
1062 'J4NP 'jump "jump I4 non-positive" (+ 40 1) 5 861 "Jump if the content of rI4 is non-positive.
1063 "Jump if the content of rI4 is non-positive.
1064Register J is set to the value of the next instruction that would have 862Register J is set to the value of the next instruction that would have
1065been executed when there was no jump." 863been executed when there was no jump."
1066 1) 864 1)
1067
1068 865
1069(mixal-add-operation-code 866 (J5N jump "jump I5 negative" 41
1070 'J5N 'jump "jump I5 negative" (+ 40 1) 0 867 "Jump if the content of rI5 is negative.
1071 "Jump if the content of rI5 is negative.
1072Register J is set to the value of the next instruction that would have 868Register J is set to the value of the next instruction that would have
1073been executed when there was no jump." 869been executed when there was no jump."
1074 1) 870 1)
1075 871
1076 872 (J5Z jump "jump I5 zero" 41
1077(mixal-add-operation-code 873 "Jump if the content of rI5 is zero.
1078 'J5Z 'jump "jump I5 zero" (+ 40 1) 1
1079 "Jump if the content of rI5 is zero.
1080Register J is set to the value of the next instruction that would have 874Register J is set to the value of the next instruction that would have
1081been executed when there was no jump." 875been executed when there was no jump."
1082 1) 876 1)
1083
1084 877
1085(mixal-add-operation-code 878 (J5P jump "jump I5 positive" 41
1086 'J5P 'jump "jump I5 positive" (+ 40 1) 2 879 "Jump if the content of rI5 is positive.
1087 "Jump if the content of rI5 is positive.
1088Register J is set to the value of the next instruction that would have 880Register J is set to the value of the next instruction that would have
1089been executed when there was no jump." 881been executed when there was no jump."
1090 1) 882 1)
1091 883
1092 884 (J5NN jump "jump I5 non-negative" 41
1093(mixal-add-operation-code 885 "Jump if the content of rI5 is non-negative.
1094 'J5NN 'jump "jump I5 non-negative" (+ 40 1) 3
1095 "Jump if the content of rI5 is non-negative.
1096Register J is set to the value of the next instruction that would have 886Register J is set to the value of the next instruction that would have
1097been executed when there was no jump." 887been executed when there was no jump."
1098 1) 888 1)
1099
1100 889
1101(mixal-add-operation-code 890 (J5NZ jump "jump I5 non-zero" 41
1102 'J5NZ 'jump "jump I5 non-zero" (+ 40 1) 4 891 "Jump if the content of rI5 is non-zero.
1103 "Jump if the content of rI5 is non-zero.
1104Register J is set to the value of the next instruction that would have 892Register J is set to the value of the next instruction that would have
1105been executed when there was no jump." 893been executed when there was no jump."
1106 1) 894 1)
1107 895
1108 896 (J5NP jump "jump I5 non-positive" 41
1109(mixal-add-operation-code 897 "Jump if the content of rI5 is non-positive.
1110 'J5NP 'jump "jump I5 non-positive" (+ 40 1) 5
1111 "Jump if the content of rI5 is non-positive.
1112Register J is set to the value of the next instruction that would have 898Register J is set to the value of the next instruction that would have
1113been executed when there was no jump." 899been executed when there was no jump."
1114 1) 900 1)
1115
1116 901
1117(mixal-add-operation-code 902 (J6N jump "jump I6 negative" 41
1118 'J6N 'jump "jump I6 negative" (+ 40 1) 0 903 "Jump if the content of rI6 is negative.
1119 "Jump if the content of rI6 is negative.
1120Register J is set to the value of the next instruction that would have 904Register J is set to the value of the next instruction that would have
1121been executed when there was no jump." 905been executed when there was no jump."
1122 1) 906 1)
1123
1124 907
1125(mixal-add-operation-code 908 (J6Z jump "jump I6 zero" 41
1126 'J6Z 'jump "jump I6 zero" (+ 40 1) 1 909 "Jump if the content of rI6 is zero.
1127 "Jump if the content of rI6 is zero.
1128Register J is set to the value of the next instruction that would have 910Register J is set to the value of the next instruction that would have
1129been executed when there was no jump." 911been executed when there was no jump."
1130 1) 912 1)
1131 913
1132 914 (J6P jump "jump I6 positive" 41
1133(mixal-add-operation-code 915 "Jump if the content of rI6 is positive.
1134 'J6P 'jump "jump I6 positive" (+ 40 1) 2
1135 "Jump if the content of rI6 is positive.
1136Register J is set to the value of the next instruction that would have 916Register J is set to the value of the next instruction that would have
1137been executed when there was no jump." 917been executed when there was no jump."
1138 1) 918 1)
1139
1140 919
1141(mixal-add-operation-code 920 (J6NN jump "jump I6 non-negative" 41
1142 'J6NN 'jump "jump I6 non-negative" (+ 40 1) 3 921 "Jump if the content of rI6 is non-negative.
1143 "Jump if the content of rI6 is non-negative.
1144Register J is set to the value of the next instruction that would have 922Register J is set to the value of the next instruction that would have
1145been executed when there was no jump." 923been executed when there was no jump."
1146 1) 924 1)
1147
1148 925
1149(mixal-add-operation-code 926 (J6NZ jump "jump I6 non-zero" 41
1150 'J6NZ 'jump "jump I6 non-zero" (+ 40 1) 4 927 "Jump if the content of rI6 is non-zero.
1151 "Jump if the content of rI6 is non-zero.
1152Register J is set to the value of the next instruction that would have 928Register J is set to the value of the next instruction that would have
1153been executed when there was no jump." 929been executed when there was no jump."
1154 1) 930 1)
1155 931
1156 932 (J6NP jump "jump I6 non-positive" 41
1157(mixal-add-operation-code 933 "Jump if the content of rI6 is non-positive.
1158 'J6NP 'jump "jump I6 non-positive" (+ 40 1) 5
1159 "Jump if the content of rI6 is non-positive.
1160Register J is set to the value of the next instruction that would have 934Register J is set to the value of the next instruction that would have
1161been executed when there was no jump." 935been executed when there was no jump."
1162 1) 936 1)
1163 937
1164(mixal-add-operation-code 938 (SLA miscellaneous "shift left A" 6
1165 'SLA 'miscellaneous "shift left A" 6 0 939 "Shift to A, M bytes left.
1166 "Shift to A, M bytes left.
1167Hero's will be added to the right." 940Hero's will be added to the right."
1168 2) 941 2)
1169
1170 942
1171(mixal-add-operation-code 943 (SRA miscellaneous "shift right A" 6
1172 'SRA 'miscellaneous "shift right A" 6 1 944 "Shift to A, M bytes right.
1173 "Shift to A, M bytes right.
1174Zeros will be added to the left." 945Zeros will be added to the left."
1175 2) 946 2)
1176
1177 947
1178(mixal-add-operation-code 948 (SLAX miscellaneous "shift left AX" 6
1179 'SLAX 'miscellaneous "shift left AX" 6 2 949 "Shift AX, M bytes left.
1180 "Shift AX, M bytes left.
1181Zeros will be added to the right." 950Zeros will be added to the right."
1182 2) 951 2)
1183 952
1184 953
1185 954 (SRAX miscellaneous "shift right AX" 6
1186(mixal-add-operation-code 955 "Shift AX, M bytes right.
1187 'SRAX 'miscellaneous "shift right AX" 6 3
1188 "Shift AX, M bytes right.
1189Zeros will be added to the left." 956Zeros will be added to the left."
1190 2) 957 2)
1191
1192 958
1193(mixal-add-operation-code 959 (SLC miscellaneous "shift left AX circularly" 6
1194 'SLC 'miscellaneous "shift left AX circularly" 6 4 960 "Shift AX, M bytes left circularly.
1195 "Shift AX, M bytes left circularly.
1196The bytes that fall off to the left will be added to the right." 961The bytes that fall off to the left will be added to the right."
1197 2) 962 2)
1198 963
1199 964 (SRC miscellaneous "shift right AX circularly" 6
1200(mixal-add-operation-code 965 "Shift AX, M bytes right circularly.
1201 'SRC 'miscellaneous "shift right AX circularly" 6 4
1202 "Shift AX, M bytes right circularly.
1203The bytes that fall off to the right will be added to the left." 966The bytes that fall off to the right will be added to the left."
1204 2) 967 2)
1205 968
1206(mixal-add-operation-code 969 (MOVE miscellaneous "move" 7 number
1207 'MOVE 'miscellaneous "move" 7 'number 970 "Move MOD words from M to the location stored in rI1."
1208 "Move MOD words from M to the location stored in rI1." 971 (+ 1 (* 2 number)))
1209 '(+ 1 (* 2 number)))
1210 972
1211(mixal-add-operation-code 973 (NOP miscellaneous "no operation" 0 ignored
1212 'NOP 'miscellaneous "no operation" 0 'ignored 974 "No operation, M and F are not used by the machine."
1213 "No operation, M and F are not used by the machine." 975 1)
1214 1)
1215 976
1216(mixal-add-operation-code 977 (HLT miscellaneous "halt" 5
1217 'HLT 'miscellaneous "halt" 5 2 978 "Halt.
1218 "Halt.
1219Stop instruction fetching." 979Stop instruction fetching."
1220 1) 980 1)
1221 981
1222(mixal-add-operation-code 982 (IN input-output "input" 36 unit
1223 'IN 'input-output "input" 36 'unit 983 "Transfer a block of words from the specified unit to memory.
1224 "Transfer a block of words from the specified unit to memory.
1225The transfer starts at address M." 984The transfer starts at address M."
1226 1) 985 1)
1227 986
1228(mixal-add-operation-code 987 (OUT input-output "output" 37 unit
1229 'OUT 'input-output "output" 37 'unit 988 "Transfer a block of words from memory.
1230 "Transfer a block of words from memory.
1231The transfer starts at address M to the specified unit." 989The transfer starts at address M to the specified unit."
1232 1) 990 1)
1233 991
1234(mixal-add-operation-code 992 (IOC input-output "input-output control" 35 unit
1235 'IOC 'input-output "input-output control" 35 'unit 993 "Perform a control operation.
1236 "Perform a control operation.
1237The control operation is given by M on the specified unit." 994The control operation is given by M on the specified unit."
1238 1) 995 1)
1239
1240(mixal-add-operation-code
1241 'JRED 'input-output "jump ready" 38 'unit
1242 "Jump to M if the specified unit is ready."
1243 1)
1244 996
997 (JRED input-output "jump ready" 38 unit
998 "Jump to M if the specified unit is ready."
999 1)
1245 1000
1246(mixal-add-operation-code 1001 (JBUS input-output "jump busy" 34 unit
1247 'JBUS 'input-output "jump busy" 34 'unit 1002 "Jump to M if the specified unit is busy."
1248 "Jump to M if the specified unit is busy." 1003 1)
1249 1)
1250 1004
1251(mixal-add-operation-code 1005 (NUM conversion "convert to numeric" 5
1252 'NUM 'conversion "convert to numeric" 5 0 1006 "Convert rAX to its numerical value and store it in rA.
1253 "Convert rAX to its numerical value and store it in rA.
1254the register rAX is assumed to contain a character representation of 1007the register rAX is assumed to contain a character representation of
1255a number." 1008a number."
1256 10) 1009 10)
1257 1010
1258(mixal-add-operation-code 1011 (CHAR conversion "convert to characters" 5
1259 'CHAR 'conversion "convert to characters" 5 1 1012 "Convert the number stored in rA to a character representation.
1260 "Convert the number stored in rA to a character representation.
1261The converted character representation is stored in rAX." 1013The converted character representation is stored in rAX."
1262 10) 1014 10))
1015
1016 "Alist that contains all the possible operation codes for mix.
1017Each elt has the form
1018 (OP-CODE GROUP FULL-NAME C-BYTE F-BYTE DESCRIPTION EXECUTION-TIME)
1019Where OP-CODE is the text of the opcode as an symbol,
1020FULL-NAME is the human readable name as a string,
1021C-BYTE is the operation code telling what operation is to be performed,
1022F-BYTE holds a modification of the operation code which can be a symbol
1023 or a number,
1024DESCRIPTION contains an string with a description about the operation code and
1025EXECUTION-TIME holds info about the time it takes, number or string.")
1026;; (makunbound 'mixal-operation-codes-alist)
1027
1028
1029;;; Font-locking:
1030(defvar mixal-font-lock-syntactic-keywords
1031 ;; Normal comments start with a * in column 0 and end at end of line.
1032 '(("^\\*" (0 '(11))) ;(string-to-syntax "<") == '(11)
1033 ;; Every line can end with a comment which is placed after the operand.
1034 ;; I assume here that mnemonics without operands can not have a comment.
1035 ("^[[:alnum:]]*[ \t]+[[:alnum:]]+[ \t]+[^ \n\t]+[ \t]*\\([ \t]\\)[^\n \t]"
1036 (1 '(11)))))
1037
1038(defvar mixal-font-lock-keywords
1039 `(("^\\([A-Z0-9a-z]+\\)"
1040 (1 mixal-font-lock-label-face))
1041 (,(regexp-opt (mapcar (lambda (x) (symbol-name (car x)))
1042 mixal-operation-codes-alist) 'words)
1043 . mixal-font-lock-operation-code-face)
1044 (,(regexp-opt mixal-assembly-pseudoinstructions 'words)
1045 . mixal-font-lock-assembly-pseudoinstruction-face)
1046 ("^[A-Z0-9a-z]*[ \t]+[A-ZO-9a-z]+[ \t]+\\(=.*=\\)"
1047 (1 font-lock-constant-face)))
1048 "Keyword highlighting specification for `mixal-mode'.")
1049;; (makunbound 'mixal-font-lock-keywords)
1263 1050
1264(defvar mixal-describe-operation-code-history nil 1051(defvar mixal-describe-operation-code-history nil
1265 "History list for describe operation code.") 1052 "History list for describe operation code.")
1266 1053
1267(defun mixal-describe-operation-code (&optional op-code) 1054(defun mixal-describe-operation-code (op-code)
1268 "Display the full documentation of OP-CODE." 1055 "Display the full documentation of OP-CODE."
1269 (interactive) 1056 (interactive
1270 ;; We like to provide completion and history, so do it ourself 1057 (list
1271 ;; (interactive "?bla")?
1272 (unless op-code
1273 (let* ((completion-ignore-case t) 1058 (let* ((completion-ignore-case t)
1274 ;; we already have a list, but it is not in the right format 1059 ;; we already have a list, but it is not in the right format
1275 ;; transform it to a valid table so completition can use it 1060 ;; transform it to a valid table so completition can use it
@@ -1277,15 +1062,16 @@ The converted character representation is stored in rAX."
1277 (cons (symbol-name (car elm)) nil)) 1062 (cons (symbol-name (car elm)) nil))
1278 mixal-operation-codes-alist)) 1063 mixal-operation-codes-alist))
1279 ;; prompt is different depending on we are close to a valid op-code 1064 ;; prompt is different depending on we are close to a valid op-code
1280 (have-default (member (current-word) mixal-operation-codes)) 1065 (have-default (assq (intern-soft (current-word))
1066 mixal-operation-codes-alist))
1281 (prompt (concat "Describe operation code " 1067 (prompt (concat "Describe operation code "
1282 (if have-default 1068 (if have-default
1283 (concat "(default " (current-word) "): ") 1069 (concat "(default " (current-word) "): ")
1284 ": ")))) 1070 ": "))))
1285 ;; as the operation code to the user 1071 ;; As the operation code to the user.
1286 (setq op-code (completing-read prompt table nil t nil 1072 (completing-read prompt table nil t nil
1287 'mixal-describe-operation-code-history 1073 'mixal-describe-operation-code-history
1288 (current-word))))) 1074 (current-word)))))
1289 ;; get the info on the op-code and output it to the help buffer 1075 ;; get the info on the op-code and output it to the help buffer
1290 (let ((op-code-help (assq (intern-soft op-code) mixal-operation-codes-alist))) 1076 (let ((op-code-help (assq (intern-soft op-code) mixal-operation-codes-alist)))
1291 (when op-code-help 1077 (when op-code-help
@@ -1317,8 +1103,11 @@ Assumes that file has been compiled with debugging support."
1317 "Major mode for the mixal asm language. 1103 "Major mode for the mixal asm language.
1318\\{mixal-mode-map}" 1104\\{mixal-mode-map}"
1319 (set (make-local-variable 'comment-start) "*") 1105 (set (make-local-variable 'comment-start) "*")
1320 (set (make-local-variable 'comment-start-skip) "*") 1106 (set (make-local-variable 'comment-start-skip) "^\\*[ \t]*")
1321 (set (make-local-variable 'font-lock-defaults) '(mixal-font-lock-keywords)) 1107 (set (make-local-variable 'font-lock-defaults)
1108 `(mixal-font-lock-keywords nil nil nil nil
1109 (font-lock-syntactic-keywords . ,mixal-font-lock-syntactic-keywords)
1110 (parse-sexp-lookup-properties . t)))
1322 ;; might add an indent function in the future 1111 ;; might add an indent function in the future
1323 ;; (set (make-local-variable 'indent-line-function) 'mixal-indent-line) 1112 ;; (set (make-local-variable 'indent-line-function) 'mixal-indent-line)
1324 (set (make-local-variable 'compile-command) (concat "mixasm " 1113 (set (make-local-variable 'compile-command) (concat "mixasm "
diff --git a/lisp/startup.el b/lisp/startup.el
index 4ec3915787a..f5b01809512 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -128,7 +128,7 @@ This is normally copied from `default-directory' when Emacs starts.")
128 ("-bg" 1 x-handle-switch background-color) 128 ("-bg" 1 x-handle-switch background-color)
129 ("-background" 1 x-handle-switch background-color) 129 ("-background" 1 x-handle-switch background-color)
130 ("-ms" 1 x-handle-switch mouse-color) 130 ("-ms" 1 x-handle-switch mouse-color)
131 ("-nb" 0 x-handle-switch icon-type nil) 131 ("-nbi" 0 x-handle-switch icon-type nil)
132 ("-iconic" 0 x-handle-iconic) 132 ("-iconic" 0 x-handle-iconic)
133 ("-xrm" 1 x-handle-xrm-switch) 133 ("-xrm" 1 x-handle-xrm-switch)
134 ("-cr" 1 x-handle-switch cursor-color) 134 ("-cr" 1 x-handle-switch cursor-color)
@@ -1232,7 +1232,13 @@ This is an internal function used to turn off the splash screen after
1232the user caused an input event by hitting a key or clicking with the 1232the user caused an input event by hitting a key or clicking with the
1233mouse." 1233mouse."
1234 (interactive) 1234 (interactive)
1235 (push last-command-event unread-command-events) 1235 (if (and (consp last-command-event)
1236 (eq (posn-window (event-start last-command-event))
1237 (selected-window)))
1238 ;; This is a mouse-down event in the spash screen window.
1239 ;; Ignore it and consume the corresponding mouse-up event.
1240 (read-event)
1241 (push last-command-event unread-command-events))
1236 (throw 'exit nil)) 1242 (throw 'exit nil))
1237 1243
1238 1244
diff --git a/lisp/toolbar/README b/lisp/toolbar/README
index 4bf1700dd91..81df0c874bd 100644
--- a/lisp/toolbar/README
+++ b/lisp/toolbar/README
@@ -7,4 +7,6 @@ The following icons are from GTK+ 2.x:
7 7
8 back_arrow.xpm and fwd_arrow.xpm are slightly modified undo and redo. 8 back_arrow.xpm and fwd_arrow.xpm are slightly modified undo and redo.
9 9
10 diropen.xpm is file-manager.png from Gnome hicolor theme.
11
10They are not part of Emacs, but distributed and used by Emacs. 12They are not part of Emacs, but distributed and used by Emacs.
diff --git a/lisp/toolbar/diropen.pbm b/lisp/toolbar/diropen.pbm
index 0f1996db78c..61adc3b2a23 100644
--- a/lisp/toolbar/diropen.pbm
+++ b/lisp/toolbar/diropen.pbm
Binary files differ
diff --git a/lisp/toolbar/diropen.xpm b/lisp/toolbar/diropen.xpm
index bdc0b19d7dd..6937b99a44d 100644
--- a/lisp/toolbar/diropen.xpm
+++ b/lisp/toolbar/diropen.xpm
@@ -1,215 +1,44 @@
1/* XPM */ 1/* XPM */
2static char * diropen_xpm[] = { 2static char * diropen_xpm[] = {
3"24 24 188 2", 3"19 24 17 1",
4" c None", 4" c None",
5". c #000000", 5". c #000100",
6"+ c #010100", 6"+ c #C6C9A6",
7"@ c #B5B8A5", 7"@ c #D0D3AF",
8"# c #E4E7D2", 8"# c #93997C",
9"$ c #878A76", 9"$ c #E6E7D0",
10"% c #33342B", 10"% c #BEC19E",
11"& c #0B0B0B", 11"& c #B4B895",
12"* c #E2E5CF", 12"* c #A7AA88",
13"= c #CFD4AF", 13"= c #6B6D59",
14"- c #CED3AE", 14"- c #4A4E40",
15"; c #B2B696", 15"; c #7C8166",
16"> c #2D2D25", 16"> c #898E72",
17", c #23241D", 17", c #3C4032",
18"' c #9D9F90", 18"' c #575845",
19") c #C6CAA6", 19") c #34332C",
20"! c #C4C9A5", 20"! c #24231D",
21"~ c #C6CBA7", 21" ............... ",
22"{ c #C7CCA8", 22" .+@@@@@@@@@@@@@#. ",
23"] c #C9CEA9", 23".$@@@@@@@@@@@@@@@#.",
24"^ c #555847", 24".++++%%%%%%%%%&&&*.",
25"/ c #1A1B15", 25".&&&&&&&&&&******#.",
26"( c #20201A", 26".*%+++%%%%%%%%%&=#.",
27"_ c #D4D6C2", 27".*+***********##-#.",
28": c #BEC2A0", 28".*+****;===;####-#.",
29"< c #B3B896", 29".*+****=*****###-#.",
30"[ c #B0B595", 30".*+****;*****###-#.",
31"} c #B3B797", 31".*+****########>-#.",
32"| c #B6BB99", 32".*&######>>>>>>>,>.",
33"1 c #BBC09E", 33".*#-------------'>)",
34"2 c #BCC19F", 34".*&&&&&&&&&&&&&*#>)",
35"3 c #81856C", 35".*&************#'>)",
36"4 c #3E3F32", 36".*&***********##,>)",
37"5 c #010101", 37".*&****====;###>,>)",
38"6 c #DADDC8", 38".#&****=**#**##>,;)",
39"7 c #AFB494", 39".#&****>****###>,;)",
40"8 c #AAAF8F", 40".#&****########>,;)",
41"9 c #A3A789", 41".##''''''''''''',;)",
42"0 c #A6AA8B", 42".#>==============;)",
43"a c #A9AD8E", 43".''''''''''''''''-!",
44"b c #A7AB8D", 44" ................. "};
45"c c #A4A88A",
46"d c #A1A588",
47"e c #AAAD96",
48"f c #B3B5A5",
49"g c #B8BBAA",
50"h c #BABCAB",
51"i c #40413B",
52"j c #CACDBB",
53"k c #BABDA8",
54"l c #0C0C09",
55"m c #DDDFCB",
56"n c #969B7E",
57"o c #9DA286",
58"p c #95987C",
59"q c #96997E",
60"r c #9A9D81",
61"s c #999D80",
62"t c #9DA184",
63"u c #A5AA8B",
64"v c #A4A98A",
65"w c #A3A889",
66"x c #A2A588",
67"y c #33352B",
68"z c #9B9E83",
69"A c #898D74",
70"B c #D8DBC9",
71"C c #84866E",
72"D c #7D8169",
73"E c #151612",
74"F c #D7DAC9",
75"G c #797D67",
76"H c #3D3F34",
77"I c #E0E0D9",
78"J c #EBEDDD",
79"K c #E8EBD9",
80"L c #D8DBCA",
81"M c #1A1A18",
82"N c #0A0A09",
83"O c #6E7067",
84"P c #8D8F84",
85"Q c #4A4B45",
86"R c #2C2D29",
87"S c #4B4C46",
88"T c #E7EAD8",
89"U c #E3E6D4",
90"V c #DEE1D0",
91"W c #DADCCC",
92"X c #DADCD1",
93"Y c #2B2C28",
94"Z c #D7DAC6",
95"` c #6F735E",
96" . c #0D0D0D",
97".. c #F4F4EC",
98"+. c #606251",
99"@. c #92957B",
100"#. c #4A4C3E",
101"$. c #434438",
102"%. c #CACFAB",
103"&. c #C6CBA8",
104"*. c #C2C6A4",
105"=. c #ABB091",
106"-. c #23251E",
107";. c #494B3D",
108">. c #DCDCD4",
109",. c #EAECDD",
110"'. c #CDD2AD",
111"). c #20201B",
112"!. c #1C1C17",
113"~. c #A4A88B",
114"{. c #414337",
115"]. c #BABF9D",
116"^. c #B5B999",
117"/. c #81836C",
118"(. c #070806",
119"_. c #D5D8C4",
120":. c #161616",
121"<. c #F2F2EA",
122"[. c #CACFAA",
123"}. c #050504",
124"|. c #3C3D32",
125"1. c #C9CEAA",
126"2. c #C8CDA9",
127"3. c #BFC4A2",
128"4. c #3E4035",
129"5. c #BCC09F",
130"6. c #B6BB9A",
131"7. c #B0B494",
132"8. c #9DA185",
133"9. c #535445",
134"0. c #B6B8A7",
135"a. c #747470",
136"b. c #ECECE2",
137"c. c #C3C8A5",
138"d. c #C2C7A4",
139"e. c #393B30",
140"f. c #BFC4A1",
141"g. c #BDC2A0",
142"h. c #C0C5A2",
143"i. c #3A3B31",
144"j. c #A9AD8F",
145"k. c #A3A78A",
146"l. c #80836D",
147"m. c #020201",
148"n. c #A6A998",
149"o. c #B8BC9B",
150"p. c #1B1C17",
151"q. c #181814",
152"r. c #AFB394",
153"s. c #ACB091",
154"t. c #878A72",
155"u. c #9B9F83",
156"v. c #9A9D82",
157"w. c #8A8D75",
158"x. c #4F5243",
159"y. c #070705",
160"z. c #9E9F91",
161"A. c #E5E6DA",
162"B. c #ADB192",
163"C. c #A6AA8C",
164"D. c #A5A98C",
165"E. c #4B4D3F",
166"F. c #70735F",
167"G. c #9FA286",
168"H. c #999D81",
169"I. c #35362D",
170"J. c #2D2E26",
171"K. c #8A8D74",
172"L. c #71735F",
173"M. c #080908",
174"N. c #E3E5D9",
175"O. c #C0C3AF",
176"P. c #94987C",
177"Q. c #8F9379",
178"R. c #8B8F75",
179"S. c #8A8E74",
180"T. c #888C73",
181"U. c #7D816A",
182"V. c #0E0F0C",
183"W. c #3E4034",
184"X. c #4E5042",
185"Y. c #282922",
186"Z. c #121310",
187"`. c #24251F",
188" + c #71745F",
189".+ c #6A6D59",
190"++ c #434538",
191"@+ c #080907",
192" ",
193" ",
194" ",
195" . . . . . . . ",
196" + @ # # # # # $ % ",
197" & * = = = - - ; > ",
198", ' * ) ! ~ { ] ] ^ / . . ",
199"( _ : < [ } | 1 2 3 4 5 . . . . . . . ",
200", 6 7 8 9 0 8 a b c d e f g h . i j k . ",
201"l m n o p q r s q t u v w x 9 . y z A . ",
202". B C D E . . . . . . . . . . . . . . . 5 5 ",
203". F G H I J K K L M N O P Q R . S T U V W X Y ",
204". Z ` ...= = = +.. @.= = = #.. $.%.&.*.1 =.-. ",
205". Z ;.>.,.'.- - ).!.'.'.'.'.~.. {.&.*.].^./.(. ",
206". _.:.<.%.[.%.[.}.|.1.{ 2.2.3.. 4.5.6.7.8.9.l ",
207". 0.a.b.c.d.d.*.}.e.f.g.h.g.} . i.[ j.k.l.m. ",
208". n.>.o.o.^.} } p.q.r.r.r.s.t.. % u.v.w.x.y. ",
209". z.A.B.j.C.D.k.E.. F.G.u.H.I.. J.K.K.L.M. ",
210". N.O.P.Q.R.S.T.U.V.}.W.X.Y.Z.. `. +.+++@+ ",
211" . . . . . . . . . . . . . . . . . . }. ",
212" ",
213" ",
214" ",
215" "};
diff --git a/man/ChangeLog b/man/ChangeLog
index 66f7caa1ee8..8ba536739fc 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,16 @@
12005-10-13 Kenichi Handa <handa@m17n.org>
2
3 * basic.texi (Position Info): Fix previous change.
4
52005-10-12 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
6
7 * cmdargs.texi (Icons X): Fix typo.
8
92005-10-12 Kenichi Handa <handa@m17n.org>
10
11 * basic.texi (Position Info): Describe the case that Emacs shows
12 "part of display ...".
13
12005-10-11 Jay Belanger <belanger@truman.edu> 142005-10-11 Jay Belanger <belanger@truman.edu>
2 15
3 * calc.texi (Integration): Mention using `a i' to compute definite 16 * calc.texi (Integration): Mention using `a i' to compute definite
diff --git a/man/basic.texi b/man/basic.texi
index 2f5aa3162e1..2c78de612ad 100644
--- a/man/basic.texi
+++ b/man/basic.texi
@@ -636,10 +636,17 @@ Char: c (0143, 99, 0x63) point=21044 of 26883(78%) column 53
636 The four values after @samp{Char:} describe the character that follows 636 The four values after @samp{Char:} describe the character that follows
637point, first by showing it and then by giving its character code in 637point, first by showing it and then by giving its character code in
638octal, decimal and hex. For a non-@acronym{ASCII} multibyte character, these are 638octal, decimal and hex. For a non-@acronym{ASCII} multibyte character, these are
639followed by @samp{ext} and the character's representation, in hex, in 639followed by @samp{file} and the character's representation, in hex, in
640the buffer's coding system, if that coding system encodes the character 640the buffer's coding system, if that coding system encodes the character
641safely and with a single byte (@pxref{Coding Systems}). If the 641safely and with a single byte (@pxref{Coding Systems}). If the
642character's encoding is longer than one byte, Emacs shows @samp{ext ...}. 642character's encoding is longer than one byte, Emacs shows @samp{file ...}.
643
644 However, if the character displayed is in the range 0200 through
6450377 octal, it may actually stand for an invalid UTF-8 byte read from
646a file. In Emacs, that byte is represented as a sequence of 8-bit
647characters, but all of them together display as the original invalid
648byte, in octal code. In this case, @kbd{C-x =} shows @samp{part of
649display ...} instead of @samp{file}.
643 650
644 @samp{point=} is followed by the position of point expressed as a character 651 @samp{point=} is followed by the position of point expressed as a character
645count. The front of the buffer counts as position 1, one character later 652count. The front of the buffer counts as position 1, one character later
diff --git a/man/cmdargs.texi b/man/cmdargs.texi
index bdb57d9b063..28cb567f0cd 100644
--- a/man/cmdargs.texi
+++ b/man/cmdargs.texi
@@ -1188,7 +1188,7 @@ Start Emacs in iconified state.
1188@end table 1188@end table
1189 1189
1190 By default Emacs uses an icon window containing a picture of the GNU gnu. 1190 By default Emacs uses an icon window containing a picture of the GNU gnu.
1191The @samp{-np} or @samp{--no-bitmap-icon} option tells Emacs to let the 1191The @samp{-nbi} or @samp{--no-bitmap-icon} option tells Emacs to let the
1192window manager choose what sort of icon to use---usually just a small 1192window manager choose what sort of icon to use---usually just a small
1193rectangle containing the frame's title. 1193rectangle containing the frame's title.
1194 1194
diff --git a/src/ChangeLog b/src/ChangeLog
index d8c93e96754..30db0548172 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,41 @@
12005-10-14 Kim F. Storm <storm@cua.dk>
2
3 * xterm.c (note_mouse_movement): Return 1 if mouse moved; 0 otherwise.
4 (handle_one_xevent): Only clear help_echo_string; restore it if
5 note_mouse_movement didn't record any mouse movement.
6
7 * xdisp.c (pos_visible_p): Convert w->hscroll to pixels before use.
8 (remember_mouse_glyph): Clear RECT if mouse is over an image glyph.
9
10 * keyboard.c (make_lispy_position): Adjust wx for left margin if ON_TEXT.
11 (Fposn_at_x_y): Fix calculation of x coordinate.
12 (Fposn_at_point): Return nil if point is hscrolled out of view.
13
142005-10-13 Andreas Schwab <schwab@suse.de>
15
16 * sysdep.c (request_sigio, unrequest_sigio): Do nothing in
17 non-interactive mode.
18
192005-10-12 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
20
21 * xterm.c, w32term.c, macterm.c (note_mouse_movement): Undo last change.
22
232005-10-12 Kim F. Storm <storm@cua.dk>
24
25 * xterm.c (handle_one_xevent): Clear last_mouse_glyph on mouse up/down.
26
272005-10-12 Romain Francoise <romain@orebokech.com>
28
29 * buffer.c (init_buffer): Rename `rc' to `len' for clarity.
30
312005-10-12 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
32
33 * xdisp.c (remember_mouse_glyph): Use MATRIX_BOTTOM_TEXT_ROW to
34 get end of text rows. Obtain header-line/mode-line rows directly.
35
36 * xterm.c, w32term.c, macterm.c (note_mouse_movement): Restore
37 help_echo_string if mouse is moved inside last_mouse_glyph.
38
12005-10-12 Kim F. Storm <storm@cua.dk> 392005-10-12 Kim F. Storm <storm@cua.dk>
2 40
3 * xdisp.c (remember_mouse_glyph): New generic version based on 41 * xdisp.c (remember_mouse_glyph): New generic version based on
diff --git a/src/buffer.c b/src/buffer.c
index fb1ff1c22e9..c173136961e 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -5114,7 +5114,7 @@ init_buffer ()
5114 char *pwd; 5114 char *pwd;
5115 struct stat dotstat, pwdstat; 5115 struct stat dotstat, pwdstat;
5116 Lisp_Object temp; 5116 Lisp_Object temp;
5117 int rc; 5117 int len;
5118 5118
5119#ifdef USE_MMAP_FOR_BUFFERS 5119#ifdef USE_MMAP_FOR_BUFFERS
5120 { 5120 {
@@ -5141,13 +5141,13 @@ init_buffer ()
5141#ifndef VMS 5141#ifndef VMS
5142 /* Maybe this should really use some standard subroutine 5142 /* Maybe this should really use some standard subroutine
5143 whose definition is filename syntax dependent. */ 5143 whose definition is filename syntax dependent. */
5144 rc = strlen (pwd); 5144 len = strlen (pwd);
5145 if (!(IS_DIRECTORY_SEP (pwd[rc - 1]))) 5145 if (!(IS_DIRECTORY_SEP (pwd[len - 1])))
5146 { 5146 {
5147 /* Grow buffer to add directory separator and '\0'. */ 5147 /* Grow buffer to add directory separator and '\0'. */
5148 pwd = (char *) xrealloc (pwd, rc + 2); 5148 pwd = (char *) xrealloc (pwd, len + 2);
5149 pwd[rc] = DIRECTORY_SEP; 5149 pwd[len] = DIRECTORY_SEP;
5150 pwd[rc + 1] = '\0'; 5150 pwd[len + 1] = '\0';
5151 } 5151 }
5152#endif /* not VMS */ 5152#endif /* not VMS */
5153 5153
diff --git a/src/keyboard.c b/src/keyboard.c
index 4937cc445bd..814ef5dc6c9 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -5108,7 +5108,11 @@ make_lispy_position (f, x, y, time)
5108 XSETINT (*x, wx); 5108 XSETINT (*x, wx);
5109 XSETINT (*y, wy); 5109 XSETINT (*y, wy);
5110 5110
5111 if (part == ON_MODE_LINE || part == ON_HEADER_LINE) 5111 if (part == ON_TEXT)
5112 {
5113 wx += WINDOW_LEFT_MARGIN_WIDTH (w);
5114 }
5115 else if (part == ON_MODE_LINE || part == ON_HEADER_LINE)
5112 { 5116 {
5113 /* Mode line or header line. Look for a string under 5117 /* Mode line or header line. Look for a string under
5114 the mouse that may have a `local-map' property. */ 5118 the mouse that may have a `local-map' property. */
@@ -10779,11 +10783,11 @@ The `posn-' functions access elements of such lists. */)
10779 CHECK_LIVE_WINDOW (frame_or_window); 10783 CHECK_LIVE_WINDOW (frame_or_window);
10780 10784
10781 w = XWINDOW (frame_or_window); 10785 w = XWINDOW (frame_or_window);
10782 XSETINT (x, (WINDOW_TO_FRAME_PIXEL_X (w, XINT (x)) 10786 XSETINT (x, (XINT (x)
10787 + WINDOW_LEFT_EDGE_X (w)
10783 + (NILP (whole) 10788 + (NILP (whole)
10784 ? window_box_left_offset (w, TEXT_AREA) 10789 ? window_box_left_offset (w, TEXT_AREA)
10785 : - (WINDOW_LEFT_SCROLL_BAR_COLS (w) 10790 : 0)));
10786 * WINDOW_FRAME_COLUMN_WIDTH (w)))));
10787 XSETINT (y, WINDOW_TO_FRAME_PIXEL_Y (w, XINT (y))); 10791 XSETINT (y, WINDOW_TO_FRAME_PIXEL_Y (w, XINT (y)));
10788 frame_or_window = w->frame; 10792 frame_or_window = w->frame;
10789 } 10793 }
@@ -10809,9 +10813,21 @@ The `posn-' functions access elements of such lists. */)
10809{ 10813{
10810 Lisp_Object tem; 10814 Lisp_Object tem;
10811 10815
10816 if (NILP (window))
10817 window = selected_window;
10818
10812 tem = Fpos_visible_in_window_p (pos, window, Qt); 10819 tem = Fpos_visible_in_window_p (pos, window, Qt);
10813 if (!NILP (tem)) 10820 if (!NILP (tem))
10814 tem = Fposn_at_x_y (XCAR (tem), XCAR (XCDR (tem)), window, Qnil); 10821 {
10822 Lisp_Object x = XCAR (tem);
10823 Lisp_Object y = XCAR (XCDR (tem));
10824
10825 /* Point invisible due to hscrolling? */
10826 if (XINT (x) < 0)
10827 return Qnil;
10828 tem = Fposn_at_x_y (x, y, window, Qnil);
10829 }
10830
10815 return tem; 10831 return tem;
10816} 10832}
10817 10833
diff --git a/src/sysdep.c b/src/sysdep.c
index c9464cd111f..0cf6ecb1f36 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -1032,6 +1032,7 @@ reset_sigio (fd)
1032 1032
1033#ifdef FASYNC /* F_SETFL does not imply existence of FASYNC */ 1033#ifdef FASYNC /* F_SETFL does not imply existence of FASYNC */
1034/* XXX Uhm, FASYNC is not used anymore here. */ 1034/* XXX Uhm, FASYNC is not used anymore here. */
1035/* XXX Yeah, but you need it for SIGIO, don't you? */
1035 1036
1036void 1037void
1037request_sigio () 1038request_sigio ()
@@ -1039,7 +1040,7 @@ request_sigio ()
1039 /* XXX read_socket_hook is not global anymore. Is blocking SIGIO 1040 /* XXX read_socket_hook is not global anymore. Is blocking SIGIO
1040 bad under X? */ 1041 bad under X? */
1041#if 0 1042#if 0
1042 if (read_socket_hook) 1043 if (noninteractive || read_socket_hook)
1043 return; 1044 return;
1044#endif 1045#endif
1045 1046
@@ -1057,7 +1058,7 @@ unrequest_sigio (void)
1057 /* XXX read_socket_hook is not global anymore. Is blocking SIGIO 1058 /* XXX read_socket_hook is not global anymore. Is blocking SIGIO
1058 bad under X? */ 1059 bad under X? */
1059#if 0 1060#if 0
1060 if (read_socket_hook) 1061 if (noninteractive || read_socket_hook)
1061 return; 1062 return;
1062#endif 1063#endif
1063 1064
@@ -1076,7 +1077,7 @@ request_sigio ()
1076{ 1077{
1077 int on = 1; 1078 int on = 1;
1078 1079
1079 if (read_socket_hook) 1080 if (noninteractive || read_socket_hook)
1080 return; 1081 return;
1081 1082
1082 /* XXX CURTTY() is bogus here. */ 1083 /* XXX CURTTY() is bogus here. */
@@ -1089,7 +1090,7 @@ unrequest_sigio ()
1089{ 1090{
1090 int off = 0; 1091 int off = 0;
1091 1092
1092 if (read_socket_hook) 1093 if (noninteractive || read_socket_hook)
1093 return; 1094 return;
1094 1095
1095 /* XXX CURTTY() is bogus here. */ 1096 /* XXX CURTTY() is bogus here. */
@@ -1109,7 +1110,7 @@ request_sigio ()
1109 int on = 1; 1110 int on = 1;
1110 sigset_t st; 1111 sigset_t st;
1111 1112
1112 if (read_socket_hook) 1113 if (noninteractive || read_socket_hook)
1113 return; 1114 return;
1114 1115
1115 sigemptyset (&st); 1116 sigemptyset (&st);
@@ -1124,7 +1125,7 @@ unrequest_sigio ()
1124{ 1125{
1125 int off = 0; 1126 int off = 0;
1126 1127
1127 if (read_socket_hook) 1128 if (noninteractive || read_socket_hook)
1128 return; 1129 return;
1129 1130
1130 ioctl (0, FIOASYNC, &off); /* XXX This fails for multiple ttys. */ 1131 ioctl (0, FIOASYNC, &off); /* XXX This fails for multiple ttys. */
@@ -1137,7 +1138,7 @@ unrequest_sigio ()
1137void 1138void
1138request_sigio () 1139request_sigio ()
1139{ 1140{
1140 if (read_socket_hook) 1141 if (noninteractive || read_socket_hook)
1141 return; 1142 return;
1142 1143
1143 croak ("request_sigio"); 1144 croak ("request_sigio");
@@ -1146,7 +1147,7 @@ request_sigio ()
1146void 1147void
1147unrequest_sigio () 1148unrequest_sigio ()
1148{ 1149{
1149 if (read_socket_hook) 1150 if (noninteractive || read_socket_hook)
1150 return; 1151 return;
1151 1152
1152 croak ("unrequest_sigio"); 1153 croak ("unrequest_sigio");
@@ -2335,12 +2336,16 @@ reset_sigio (fd)
2335void 2336void
2336request_sigio () 2337request_sigio ()
2337{ 2338{
2339 if (noninteractive)
2340 return;
2338 croak ("request sigio"); 2341 croak ("request sigio");
2339} 2342}
2340 2343
2341void 2344void
2342unrequest_sigio () 2345unrequest_sigio ()
2343{ 2346{
2347 if (noninteractive)
2348 return;
2344 croak ("unrequest sigio"); 2349 croak ("unrequest sigio");
2345} 2350}
2346 2351
@@ -2884,6 +2889,8 @@ reset_sigio (fd)
2884void 2889void
2885request_sigio () 2890request_sigio ()
2886{ 2891{
2892 if (noninteractive)
2893 return;
2887 sigrelse (SIGTINT); 2894 sigrelse (SIGTINT);
2888 2895
2889 interrupts_deferred = 0; 2896 interrupts_deferred = 0;
@@ -2892,6 +2899,8 @@ request_sigio ()
2892void 2899void
2893unrequest_sigio () 2900unrequest_sigio ()
2894{ 2901{
2902 if (noninteractive)
2903 return;
2895 sighold (SIGTINT); 2904 sighold (SIGTINT);
2896 2905
2897 interrupts_deferred = 1; 2906 interrupts_deferred = 1;
diff --git a/src/xdisp.c b/src/xdisp.c
index 013d3955c6f..ff3d9f2ca0c 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -1335,7 +1335,7 @@ pos_visible_p (w, charpos, x, y, rtop, rbot, exact_mode_line_heights_p)
1335 current_header_line_height = current_mode_line_height = -1; 1335 current_header_line_height = current_mode_line_height = -1;
1336 1336
1337 if (visible_p && XFASTINT (w->hscroll) > 0) 1337 if (visible_p && XFASTINT (w->hscroll) > 0)
1338 *x -= XFASTINT (w->hscroll); 1338 *x -= XFASTINT (w->hscroll) * WINDOW_FRAME_COLUMN_WIDTH (w);
1339 1339
1340 return visible_p; 1340 return visible_p;
1341} 1341}
@@ -2047,7 +2047,7 @@ remember_mouse_glyph (f, gx, gy, rect)
2047 height = WINDOW_FRAME_LINE_HEIGHT (w); 2047 height = WINDOW_FRAME_LINE_HEIGHT (w);
2048 2048
2049 r = MATRIX_FIRST_TEXT_ROW (w->current_matrix); 2049 r = MATRIX_FIRST_TEXT_ROW (w->current_matrix);
2050 end_row = r + w->current_matrix->nrows - 1; 2050 end_row = MATRIX_BOTTOM_TEXT_ROW (w->current_matrix, w);
2051 2051
2052 if (w->pseudo_window_p) 2052 if (w->pseudo_window_p)
2053 { 2053 {
@@ -2066,20 +2066,28 @@ remember_mouse_glyph (f, gx, gy, rect)
2066 area = RIGHT_MARGIN_AREA; 2066 area = RIGHT_MARGIN_AREA;
2067 goto text_glyph; 2067 goto text_glyph;
2068 2068
2069 case ON_TEXT:
2070 case ON_MODE_LINE:
2071 case ON_HEADER_LINE: 2069 case ON_HEADER_LINE:
2070 case ON_MODE_LINE:
2071 gr = (part == ON_HEADER_LINE
2072 ? MATRIX_HEADER_LINE_ROW (w->current_matrix)
2073 : MATRIX_MODE_LINE_ROW (w->current_matrix));
2074 gy = gr->y;
2075 area = TEXT_AREA;
2076 goto text_glyph_row_found;
2077
2078 case ON_TEXT:
2072 area = TEXT_AREA; 2079 area = TEXT_AREA;
2073 2080
2074 text_glyph: 2081 text_glyph:
2075 gr = 0; gy = 0; 2082 gr = 0; gy = 0;
2076 for (; r < end_row && r->enabled_p; ++r) 2083 for (; r <= end_row && r->enabled_p; ++r)
2077 if (r->y + r->height > y) 2084 if (r->y + r->height > y)
2078 { 2085 {
2079 gr = r; gy = r->y; 2086 gr = r; gy = r->y;
2080 break; 2087 break;
2081 } 2088 }
2082 2089
2090 text_glyph_row_found:
2083 if (gr && gy <= y) 2091 if (gr && gy <= y)
2084 { 2092 {
2085 struct glyph *g = gr->glyphs[area]; 2093 struct glyph *g = gr->glyphs[area];
@@ -2091,7 +2099,16 @@ remember_mouse_glyph (f, gx, gy, rect)
2091 break; 2099 break;
2092 2100
2093 if (g < end) 2101 if (g < end)
2094 width = g->pixel_width; 2102 {
2103 if (g->type == IMAGE_GLYPH)
2104 {
2105 /* Don't remember when mouse is over image, as
2106 image may have hot-spots. */
2107 STORE_NATIVE_RECT (*rect, 0, 0, 0, 0);
2108 return;
2109 }
2110 width = g->pixel_width;
2111 }
2095 else 2112 else
2096 { 2113 {
2097 /* Use nominal char spacing at end of line. */ 2114 /* Use nominal char spacing at end of line. */
@@ -2136,7 +2153,7 @@ remember_mouse_glyph (f, gx, gy, rect)
2136 2153
2137 row_glyph: 2154 row_glyph:
2138 gr = 0, gy = 0; 2155 gr = 0, gy = 0;
2139 for (; r < end_row && r->enabled_p; ++r) 2156 for (; r <= end_row && r->enabled_p; ++r)
2140 if (r->y + r->height > y) 2157 if (r->y + r->height > y)
2141 { 2158 {
2142 gr = r; gy = r->y; 2159 gr = r; gy = r->y;
diff --git a/src/xterm.c b/src/xterm.c
index 30a43995a57..ef40c8b790d 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -3588,7 +3588,7 @@ construct_mouse_click (result, event, f)
3588static XMotionEvent last_mouse_motion_event; 3588static XMotionEvent last_mouse_motion_event;
3589static Lisp_Object last_mouse_motion_frame; 3589static Lisp_Object last_mouse_motion_frame;
3590 3590
3591static void 3591static int
3592note_mouse_movement (frame, event) 3592note_mouse_movement (frame, event)
3593 FRAME_PTR frame; 3593 FRAME_PTR frame;
3594 XMotionEvent *event; 3594 XMotionEvent *event;
@@ -3602,10 +3602,11 @@ note_mouse_movement (frame, event)
3602 frame->mouse_moved = 1; 3602 frame->mouse_moved = 1;
3603 last_mouse_scroll_bar = Qnil; 3603 last_mouse_scroll_bar = Qnil;
3604 note_mouse_highlight (frame, -1, -1); 3604 note_mouse_highlight (frame, -1, -1);
3605 return 1;
3605 } 3606 }
3606 3607
3607 /* Has the mouse moved off the glyph it was on at the last sighting? */ 3608 /* Has the mouse moved off the glyph it was on at the last sighting? */
3608 else if (event->x < last_mouse_glyph.x 3609 if (event->x < last_mouse_glyph.x
3609 || event->x >= last_mouse_glyph.x + last_mouse_glyph.width 3610 || event->x >= last_mouse_glyph.x + last_mouse_glyph.width
3610 || event->y < last_mouse_glyph.y 3611 || event->y < last_mouse_glyph.y
3611 || event->y >= last_mouse_glyph.y + last_mouse_glyph.height) 3612 || event->y >= last_mouse_glyph.y + last_mouse_glyph.height)
@@ -3615,7 +3616,10 @@ note_mouse_movement (frame, event)
3615 note_mouse_highlight (frame, event->x, event->y); 3616 note_mouse_highlight (frame, event->x, event->y);
3616 /* Remember which glyph we're now on. */ 3617 /* Remember which glyph we're now on. */
3617 remember_mouse_glyph (frame, event->x, event->y, &last_mouse_glyph); 3618 remember_mouse_glyph (frame, event->x, event->y, &last_mouse_glyph);
3619 return 1;
3618 } 3620 }
3621
3622 return 0;
3619} 3623}
3620 3624
3621 3625
@@ -6496,8 +6500,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
6496 case MotionNotify: 6500 case MotionNotify:
6497 { 6501 {
6498 previous_help_echo_string = help_echo_string; 6502 previous_help_echo_string = help_echo_string;
6499 help_echo_string = help_echo_object = help_echo_window = Qnil; 6503 help_echo_string = Qnil;
6500 help_echo_pos = -1;
6501 6504
6502 if (dpyinfo->grabbed && last_mouse_frame 6505 if (dpyinfo->grabbed && last_mouse_frame
6503 && FRAME_LIVE_P (last_mouse_frame)) 6506 && FRAME_LIVE_P (last_mouse_frame))
@@ -6536,7 +6539,8 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
6536 6539
6537 last_window=window; 6540 last_window=window;
6538 } 6541 }
6539 note_mouse_movement (f, &event.xmotion); 6542 if (!note_mouse_movement (f, &event.xmotion))
6543 help_echo_string = previous_help_echo_string;
6540 } 6544 }
6541 else 6545 else
6542 { 6546 {
@@ -6645,6 +6649,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
6645 int tool_bar_p = 0; 6649 int tool_bar_p = 0;
6646 6650
6647 bzero (&compose_status, sizeof (compose_status)); 6651 bzero (&compose_status, sizeof (compose_status));
6652 bzero (&last_mouse_glyph, sizeof (last_mouse_glyph));
6648 6653
6649 if (dpyinfo->grabbed 6654 if (dpyinfo->grabbed
6650 && last_mouse_frame 6655 && last_mouse_frame