<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.intellivision.us/index.php?action=history&amp;feed=atom&amp;title=Memcmp.asm</id>
		<title>Memcmp.asm - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.intellivision.us/index.php?action=history&amp;feed=atom&amp;title=Memcmp.asm"/>
		<link rel="alternate" type="text/html" href="http://wiki.intellivision.us/index.php?title=Memcmp.asm&amp;action=history"/>
		<updated>2026-10-24T12:34:56Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://wiki.intellivision.us/index.php?title=Memcmp.asm&amp;diff=14849&amp;oldid=prev</id>
		<title>Mr z: Protected &quot;Memcmp.asm&quot; ([edit=autoconfirmed] (indefinite) [move=autoconfirmed] (indefinite))</title>
		<link rel="alternate" type="text/html" href="http://wiki.intellivision.us/index.php?title=Memcmp.asm&amp;diff=14849&amp;oldid=prev"/>
				<updated>2010-12-04T08:55:02Z</updated>
		
		<summary type="html">&lt;p&gt;Protected &amp;quot;&lt;a href=&quot;/index.php/Memcmp.asm&quot; title=&quot;Memcmp.asm&quot;&gt;Memcmp.asm&lt;/a&gt;&amp;quot; ([edit=autoconfirmed] (indefinite) [move=autoconfirmed] (indefinite))&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 08:55, 4 December 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Mr z</name></author>	</entry>

	<entry>
		<id>http://wiki.intellivision.us/index.php?title=Memcmp.asm&amp;diff=2984&amp;oldid=prev</id>
		<title>Mr z at 09:20, 7 September 2008</title>
		<link rel="alternate" type="text/html" href="http://wiki.intellivision.us/index.php?title=Memcmp.asm&amp;diff=2984&amp;oldid=prev"/>
				<updated>2008-09-07T09:20:01Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 09:20, 7 September 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l4&quot; &gt;Line 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;CENTER&amp;gt;&amp;lt;TABLE BORDER&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TH&amp;gt;Entry point&amp;lt;/TH&amp;gt;&amp;lt;TH&amp;gt;Function provided&amp;lt;/TH&amp;gt;&amp;lt;TH&amp;gt;Notes&amp;lt;/TH&amp;gt;&amp;lt;/TR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;CENTER&amp;gt;&amp;lt;TABLE BORDER&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TH&amp;gt;Entry point&amp;lt;/TH&amp;gt;&amp;lt;TH&amp;gt;Function provided&amp;lt;/TH&amp;gt;&amp;lt;TH&amp;gt;Notes&amp;lt;/TH&amp;gt;&amp;lt;/TR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;MEMCMP&amp;lt;/TD&amp;gt;&amp;lt;TD ROWSPAN=2&amp;gt;Compare two blocks of memory&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Source&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;destination &lt;/del&gt;and length fixed in ROM.&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;MEMCMP&amp;lt;/TD&amp;gt;&amp;lt;TD ROWSPAN=2&amp;gt;Compare two blocks of memory&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;First source&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;second source &lt;/ins&gt;and length fixed in ROM.&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;MEMCMP.1&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Source&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;destination &lt;/del&gt;and length in registers.&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;/TABLE&amp;gt;&amp;lt;/CENTER&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;MEMCMP.1&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;First source&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;second source &lt;/ins&gt;and length in registers.&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;/TABLE&amp;gt;&amp;lt;/CENTER&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;See source code below for calling convention.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;See source code below for calling convention.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Mr z</name></author>	</entry>

	<entry>
		<id>http://wiki.intellivision.us/index.php?title=Memcmp.asm&amp;diff=2980&amp;oldid=prev</id>
		<title>Mr z at 09:15, 7 September 2008</title>
		<link rel="alternate" type="text/html" href="http://wiki.intellivision.us/index.php?title=Memcmp.asm&amp;diff=2980&amp;oldid=prev"/>
				<updated>2008-09-07T09:15:29Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:Programming]] [[Category:Library]]&lt;br /&gt;
&lt;br /&gt;
= Functions Provided =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CENTER&amp;gt;&amp;lt;TABLE BORDER&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TH&amp;gt;Entry point&amp;lt;/TH&amp;gt;&amp;lt;TH&amp;gt;Function provided&amp;lt;/TH&amp;gt;&amp;lt;TH&amp;gt;Notes&amp;lt;/TH&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;MEMCMP&amp;lt;/TD&amp;gt;&amp;lt;TD ROWSPAN=2&amp;gt;Compare two blocks of memory&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Source, destination and length fixed in ROM.&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;MEMCMP.1&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Source, destination and length in registers.&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;/TABLE&amp;gt;&amp;lt;/CENTER&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
See source code below for calling convention.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
&lt;br /&gt;
(todo... please contribute!)&lt;br /&gt;
&lt;br /&gt;
= Notes =&lt;br /&gt;
&lt;br /&gt;
= Source Code =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;* ======================================================================== *;&lt;br /&gt;
;*  These routines are placed into the public domain by their author.  All  *;&lt;br /&gt;
;*  copyright rights are hereby relinquished on the routines and data in    *;&lt;br /&gt;
;*  this file.  -- Joseph Zbiciak, 2008                                     *;&lt;br /&gt;
;* ======================================================================== *;&lt;br /&gt;
&lt;br /&gt;
;; ======================================================================== ;;&lt;br /&gt;
;;  MEMCMP    Compare Two Arrays                                            ;;&lt;br /&gt;
;;  MEMCMP.1  Alternate entry point                                         ;;&lt;br /&gt;
;;                                                                          ;;&lt;br /&gt;
;;  AUTHOR                                                                  ;;&lt;br /&gt;
;;      Joseph Zbiciak &amp;lt;intvnut AT gmail.com&amp;gt;                               ;;&lt;br /&gt;
;;                                                                          ;;&lt;br /&gt;
;;  REVISION HISTORY                                                        ;;&lt;br /&gt;
;;      08-Sep-2001 Initial Revision                                        ;;&lt;br /&gt;
;;                                                                          ;;&lt;br /&gt;
;;  INPUTS for MEMCMP                                                       ;;&lt;br /&gt;
;;      R5    Pointer to invocation record, followed by return address.     ;;&lt;br /&gt;
;;            Pointer to first array       1 DECLE                          ;;&lt;br /&gt;
;;            Pointer to second array      1 DECLE                          ;;&lt;br /&gt;
;;            Length                       1 DECLE                          ;;&lt;br /&gt;
;;                                                                          ;;&lt;br /&gt;
;;  INPUTS for MEMCMP.1                                                     ;;&lt;br /&gt;
;;      R5    Return address                                                ;;&lt;br /&gt;
;;      R4    Pointer to first array                                        ;;&lt;br /&gt;
;;      R1    Pointer to second array                                       ;;&lt;br /&gt;
;;      R0    Length                                                        ;;&lt;br /&gt;
;;                                                                          ;;&lt;br /&gt;
;;  OUTPUTS                                                                 ;;&lt;br /&gt;
;;      R0    Zero if all elements compared as equal, non-zero otherwise.   ;;&lt;br /&gt;
;;      R1    Last element compared against from first array.               ;;&lt;br /&gt;
;;      R4    If miscompared, points just after miscompare in 1st array,    ;;&lt;br /&gt;
;;            otherwise points to first element beyond end of array.        ;;&lt;br /&gt;
;;      R5    If miscompared, points just after miscompare in 2nd array,    ;;&lt;br /&gt;
;;            otherwise points to first element beyond end of array.        ;;&lt;br /&gt;
;;      FLAGS Result of comparison between the arrays.                      ;;&lt;br /&gt;
;;                                                                          ;;&lt;br /&gt;
;;  TECHNIQUES                                                              ;;&lt;br /&gt;
;;      Unrolled 2x for speed.                                              ;;&lt;br /&gt;
;;                                                                          ;;&lt;br /&gt;
;;  CODESIZE                                                                ;;&lt;br /&gt;
;;      23 words                                                            ;;&lt;br /&gt;
;;                                                                          ;;&lt;br /&gt;
;;  CYCLES                                                                  ;;&lt;br /&gt;
;;      If length is even:  cycles =  74 + 61*floor(length / 2)             ;;&lt;br /&gt;
;;      If length is odd:   cycles = 107 + 61*floor(length / 2)             ;;&lt;br /&gt;
;;                                                                          ;;&lt;br /&gt;
;;      If calling MEMCMP.1, subtract 24 cycles from the above formulae.    ;;&lt;br /&gt;
;; ======================================================================== ;;&lt;br /&gt;
MEMCMP      PROC&lt;br /&gt;
&lt;br /&gt;
            MVI@    R5,     R4      ;   8   First array&lt;br /&gt;
            MVI@    R5,     R1      ;   8   Second array&lt;br /&gt;
            MVI@    R5,     R0      ;   8   Length&lt;br /&gt;
&lt;br /&gt;
@@1:        PSHR    R5              ;   9   Alternate entry point&lt;br /&gt;
&lt;br /&gt;
            MOVR    R1,     R5      ;   6   Use auto-incr pointer&lt;br /&gt;
&lt;br /&gt;
            INCR    R0              ;   6   \    Loop is unrolled 2x, so &lt;br /&gt;
            SARC    R0,     1       ;   6    |-- handle the odd iteration.&lt;br /&gt;
            BNC     @@odd           ;  7/9  /   &lt;br /&gt;
            BEQ     @@done          ;  7/9  Abort if length == 0.&lt;br /&gt;
                                    ;---- &lt;br /&gt;
                                    ;  65   Fallthru case&lt;br /&gt;
                                    ;  60   Branch to odd&lt;br /&gt;
&lt;br /&gt;
@@loop:     MVI@    R5,     R1      ;   8   \&lt;br /&gt;
            CMP@    R4,     R1      ;   8    |-- Compare one pair of words&lt;br /&gt;
            BNEQ    @@done          ;  7/9  /&lt;br /&gt;
            &lt;br /&gt;
@@odd:      MVI@    R5,     R1      ;   8   \&lt;br /&gt;
            CMP@    R4,     R1      ;   8    |-- Compare one pair of words&lt;br /&gt;
            BNEQ    @@done          ;  7/9  /&lt;br /&gt;
            &lt;br /&gt;
            DECR    R0              ;   6   &lt;br /&gt;
            BNEQ    @@loop          ;  9/7  Iterate&lt;br /&gt;
                                    ;----&lt;br /&gt;
                                    ;  61*k - 2&lt;br /&gt;
&lt;br /&gt;
@@done:     PULR    PC              ;  11   Return, w/ result in FLAGS.&lt;br /&gt;
            ENDP    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;; ======================================================================== ;;&lt;br /&gt;
;;  End of File:  memcmp.asm                                                ;;&lt;br /&gt;
;; ======================================================================== ;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mr z</name></author>	</entry>

	</feed>