<?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=Memcpy.asm</id>
		<title>Memcpy.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=Memcpy.asm"/>
		<link rel="alternate" type="text/html" href="http://wiki.intellivision.us/index.php?title=Memcpy.asm&amp;action=history"/>
		<updated>2026-08-26T11:19:58Z</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=Memcpy.asm&amp;diff=14850&amp;oldid=prev</id>
		<title>Mr z: Protected &quot;Memcpy.asm&quot; ([edit=autoconfirmed] (indefinite) [move=autoconfirmed] (indefinite))</title>
		<link rel="alternate" type="text/html" href="http://wiki.intellivision.us/index.php?title=Memcpy.asm&amp;diff=14850&amp;oldid=prev"/>
				<updated>2010-12-04T08:57:16Z</updated>
		
		<summary type="html">&lt;p&gt;Protected &amp;quot;&lt;a href=&quot;/index.php/Memcpy.asm&quot; title=&quot;Memcpy.asm&quot;&gt;Memcpy.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:57, 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=Memcpy.asm&amp;diff=2978&amp;oldid=prev</id>
		<title>Mr z: /* Functions Provided */</title>
		<link rel="alternate" type="text/html" href="http://wiki.intellivision.us/index.php?title=Memcpy.asm&amp;diff=2978&amp;oldid=prev"/>
				<updated>2008-09-07T09:12:16Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Functions Provided&lt;/span&gt;&lt;/span&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:12, 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-l5&quot; &gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&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;&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;TR&amp;gt;&amp;lt;TD&amp;gt;MEMCPY&amp;lt;/TD&amp;gt;&amp;lt;TD ROWSPAN=2&amp;gt;Copy a block 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;/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;TR&amp;gt;&amp;lt;TD&amp;gt;MEMCPY&amp;lt;/TD&amp;gt;&amp;lt;TD ROWSPAN=2&amp;gt;Copy a block 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;/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;MEMCPY&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;/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;MEMCPY&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;.1&lt;/ins&gt;&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;/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=Memcpy.asm&amp;diff=2977&amp;oldid=prev</id>
		<title>Mr z at 09:12, 7 September 2008</title>
		<link rel="alternate" type="text/html" href="http://wiki.intellivision.us/index.php?title=Memcpy.asm&amp;diff=2977&amp;oldid=prev"/>
				<updated>2008-09-07T09:12:05Z</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;MEMCPY&amp;lt;/TD&amp;gt;&amp;lt;TD ROWSPAN=2&amp;gt;Copy a block 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;MEMCPY&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;
;;  MEMCPY    Copy one array to another                                     ;;&lt;br /&gt;
;;  MEMCPY.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 MEMCPY                                                       ;;&lt;br /&gt;
;;      R5    Pointer to invocation record, followed by return address.     ;;&lt;br /&gt;
;;            Pointer to destination       1 DECLE                          ;;&lt;br /&gt;
;;            Pointer to source            1 DECLE                          ;;&lt;br /&gt;
;;            Length                       1 DECLE                          ;;&lt;br /&gt;
;;                                                                          ;;&lt;br /&gt;
;;  INPUTS for MEMCPY.1                                                     ;;&lt;br /&gt;
;;      R5    Return address                                                ;;&lt;br /&gt;
;;      R4    Pointer to destination                                        ;;&lt;br /&gt;
;;      R1    Pointer to source                                             ;;&lt;br /&gt;
;;      R0    Length                                                        ;;&lt;br /&gt;
;;                                                                          ;;&lt;br /&gt;
;;  OUTPUTS                                                                 ;;&lt;br /&gt;
;;      R0    $FFFF                                                         ;;&lt;br /&gt;
;;      R1    Last element copied                                           ;;&lt;br /&gt;
;;      R4    Points one element beyond destination array                   ;;&lt;br /&gt;
;;      R5    Points one element beyond source array                        ;;&lt;br /&gt;
;;                                                                          ;;&lt;br /&gt;
;;  TECHNIQUES                                                              ;;&lt;br /&gt;
;;      Unrolled 8x for speed.                                              ;;&lt;br /&gt;
;;      Special dispatch handles length % 8 != 0.                           ;;&lt;br /&gt;
;;                                                                          ;;&lt;br /&gt;
;;  CODESIZE                                                                ;;&lt;br /&gt;
;;      35 words                                                            ;;&lt;br /&gt;
;;                                                                          ;;&lt;br /&gt;
;;  CYCLES                                                                  ;;&lt;br /&gt;
;;      Not yet characterized.                                              ;;&lt;br /&gt;
;; ======================================================================== ;;&lt;br /&gt;
MEMCPY      PROC&lt;br /&gt;
&lt;br /&gt;
            MVI@    R5,     R4      ;   8   Destination array&lt;br /&gt;
            MVI@    R5,     R1      ;   8   Source 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;
            MOVR    R0,     R1      ;   6   Copy array length&lt;br /&gt;
            SLR     R0,     2       ;   8   \___ Find floor(length / 8)&lt;br /&gt;
            SLR     R0,     1       ;   6   /&lt;br /&gt;
            ANDI    #7,     R1      ;   8   \&lt;br /&gt;
            ADDR    R1,     R1      ;   6    |__ Find address to jump to for&lt;br /&gt;
            SUBI    #@@end, R1      ;   8    |   first iteration, to handle&lt;br /&gt;
            NEGR    R1              ;   6   /    length % 8.&lt;br /&gt;
            MOVR    R1,     PC      ;   6   Jump into copy loop.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@@loop:     MVI@    R5,     R1      ;   8   &lt;br /&gt;
            MVO@    R1,     R4      ;   9   &lt;br /&gt;
            MVI@    R5,     R1      ;   8   &lt;br /&gt;
            MVO@    R1,     R4      ;   9   &lt;br /&gt;
            MVI@    R5,     R1      ;   8   &lt;br /&gt;
            MVO@    R1,     R4      ;   9   &lt;br /&gt;
            MVI@    R5,     R1      ;   8   &lt;br /&gt;
            MVO@    R1,     R4      ;   9   &lt;br /&gt;
            MVI@    R5,     R1      ;   8   &lt;br /&gt;
            MVO@    R1,     R4      ;   9   &lt;br /&gt;
            MVI@    R5,     R1      ;   8   &lt;br /&gt;
            MVO@    R1,     R4      ;   9   &lt;br /&gt;
            MVI@    R5,     R1      ;   8   &lt;br /&gt;
            MVO@    R1,     R4      ;   9   &lt;br /&gt;
            MVI@    R5,     R1      ;   8   &lt;br /&gt;
            MVO@    R1,     R4      ;   9   &lt;br /&gt;
            &lt;br /&gt;
@@end:      DECR    R0              ;   6   &lt;br /&gt;
            BPL     @@loop          ;  9/7  Iterate floor(length/8) + 1 times&lt;br /&gt;
                                    ;----&lt;br /&gt;
                                    ; 151*k - 2&lt;br /&gt;
&lt;br /&gt;
@@done:     PULR    PC              ;  11   Return&lt;br /&gt;
            ENDP    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;; ======================================================================== ;;&lt;br /&gt;
;;  End of File:  memcpy.asm                                                ;;&lt;br /&gt;
;; ======================================================================== ;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mr z</name></author>	</entry>

	</feed>