<?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=Randfast.asm</id>
		<title>Randfast.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=Randfast.asm"/>
		<link rel="alternate" type="text/html" href="http://wiki.intellivision.us/index.php?title=Randfast.asm&amp;action=history"/>
		<updated>2026-07-26T16:32:05Z</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=Randfast.asm&amp;diff=14885&amp;oldid=prev</id>
		<title>Mr z: Protected &quot;Randfast.asm&quot; ([edit=autoconfirmed] (indefinite) [move=autoconfirmed] (indefinite))</title>
		<link rel="alternate" type="text/html" href="http://wiki.intellivision.us/index.php?title=Randfast.asm&amp;diff=14885&amp;oldid=prev"/>
				<updated>2010-12-04T09:09:32Z</updated>
		
		<summary type="html">&lt;p&gt;Protected &amp;quot;&lt;a href=&quot;/index.php/Randfast.asm&quot; title=&quot;Randfast.asm&quot;&gt;Randfast.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 09:09, 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=Randfast.asm&amp;diff=2958&amp;oldid=prev</id>
		<title>Mr z at 00:37, 7 September 2008</title>
		<link rel="alternate" type="text/html" href="http://wiki.intellivision.us/index.php?title=Randfast.asm&amp;diff=2958&amp;oldid=prev"/>
				<updated>2008-09-07T00:37:30Z</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;RANDFAST&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Return a 16-bit random number&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Always returns 16 bits, but only advances state by 4 bits.&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;
This function requires 1 word of 16-bit memory.  Create a label, RSEED, that is set to the address for this function to store its random numbers state.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
RANDFAST always returns a 16 bit random value, but only advances its internal state 4 bits.  If you need greater separation between consecutive random numbers, either modify the count in the REPEAT loop, or call RANDFAST multiple times.  If you need a more flexible and robust random number generator, consider [[rand.asm]].&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&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;
;;  RANDFAST                                                                ;;&lt;br /&gt;
;;      Returns random bits in R0.                                          ;;&lt;br /&gt;
;;                                                                          ;;&lt;br /&gt;
;;  INPUTS:                                                                 ;;&lt;br /&gt;
;;      R5 -- Return address                                                ;;&lt;br /&gt;
;;      Random state in RSEED                                               ;;&lt;br /&gt;
;;                                                                          ;;&lt;br /&gt;
;;  OUTPUTS:                                                                ;;&lt;br /&gt;
;;      R0 -- 16 random bits.                                               ;;&lt;br /&gt;
;;      R1 -- Set to $AB19                                                  ;;&lt;br /&gt;
;;      R2..R4 -- Unmodified                                                ;;&lt;br /&gt;
;;                                                                          ;;&lt;br /&gt;
;;  NOTES:                                                                  ;;&lt;br /&gt;
;;      You are encouraged to add additional &amp;quot;randomness&amp;quot; by adding or      ;;&lt;br /&gt;
;;      XORing other values into RSEED.                                     ;;&lt;br /&gt;
;;                                                                          ;;&lt;br /&gt;
;;      Implementation is a Galois realization of a 16-bit LFSR with the    ;;&lt;br /&gt;
;;      following polynomial:                                               ;;&lt;br /&gt;
;;                                                                          ;;&lt;br /&gt;
;;          x^16 = x^15 + x^13 + x^11 + x^9 + x^8 + x^4 + x^3 + x^0         ;;&lt;br /&gt;
;;                                                                          ;;&lt;br /&gt;
;;      The random number generator is only advanced by 4 bits per call.    ;;&lt;br /&gt;
;;      Call twice if you need 8 truly random bits.  The generator uses     ;;&lt;br /&gt;
;;      a dense polynomial, so the top 12 bits will be different than the   ;;&lt;br /&gt;
;;      bottom 12 bits returned on the previous call 15 out of 16 times.    ;;&lt;br /&gt;
;; ======================================================================== ;;&lt;br /&gt;
RANDFAST    PROC&lt;br /&gt;
            MVI     RSEED,      R0      ;  10   Get rand seed&lt;br /&gt;
            XORR    R5,         R0      ;   8   XOR in caller ret address&lt;br /&gt;
            MVII    #$AB19,     R1      ;   8   Field polynomial&lt;br /&gt;
                                        ;----&lt;br /&gt;
                                        ;  26&lt;br /&gt;
&lt;br /&gt;
            REPEAT  4&lt;br /&gt;
            SLLC    R0,         1       ;   6   Multiply by x^1&lt;br /&gt;
            ADCR    PC                  ;   7   \_ If x^16 generated, XOR in&lt;br /&gt;
            XORR    R1,         R0      ;   6   /  polynomial (-ve logic)&lt;br /&gt;
                                        ;----&lt;br /&gt;
                                        ;  19&lt;br /&gt;
            ENDR&lt;br /&gt;
                                        ;  76  (4 unrolled iterations)&lt;br /&gt;
                                        ;  26  (carried forward)&lt;br /&gt;
                                        ;----&lt;br /&gt;
                                        ; 102&lt;br /&gt;
        &lt;br /&gt;
            MVO     R0,     RSEED       ;  11&lt;br /&gt;
            JR      R5                  ;   7&lt;br /&gt;
                                        ;----&lt;br /&gt;
                                        ;  18&lt;br /&gt;
                                        ; 102&lt;br /&gt;
                                        ;----&lt;br /&gt;
                                        ; 130&lt;br /&gt;
            ENDP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mr z</name></author>	</entry>

	</feed>