*``````````````````````````````* * RAND16 : 16BIT RANDOM NUMBER * *- -* * GENERATE A 16BIT PSEUDO- * * RANDOM NUMBER AND RETURN IT * * IN Y,X (LOW, HIGH). * * * * ORIGINAL AUTHOR IS WHITE * * FLAME, AS SHARED ON * * CODEBASE64. * *- -* * CLOBBERS: * * * * FLAGS: ????---- REG: AXYM * *- -* * CYCLES: ??? * * SIZE: * *- -* * USAGE: * * * *- -* * ENTRY * * * * LOW BYTE OF RETURN ADDRESS * * HIGH BYTE OF RETURN ADDRESS * *- -* * EXIT * * * * .Y = HIGH BYTE OF PRODUCT * * .X = LOW BYTE OF PRODUCT * * .A = LOW BYTE OF PRODUCT * * * * [RETURN] = RESULT (2 BYTES) * * [RETLEN] = 2 (RESULT LENGTH) * *- -* * NOTE: THERE ARE 2048 MAGIC * * NUMBERS THAT COULD BE EOR'D * * TO GENERATE A PSEUDO-RANDOM * * PATTERN THAT DOESN'T REPEAT * * UNTIL 65535 ITERATIONS. TOO * * MANY TO LIST HERE, BUT SOME * * ARE: $002D, $1979, $1B47, * * $41BB, $3D91, $B5E9, $FFEB * *,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* * RAND16 * LDA RNDL STA :SEED LDA RNDH STA :SEED+1 * LDA :SEED BEQ :LOW0 * ** DO A NORMAL SHIFT * ASL :SEED LDA :SEED+1 ROL BCC :NOEOR :DOEOR ; HIGH BYTE IN A EOR #>$0369 STA :SEED+1 LDA :SEED EOR #<$0369 STA :SEED JMP :EXIT :LOW0 LDA :SEED+1 BEQ :DOEOR ASL BEQ :NOEOR BCS :DOEOR :NOEOR STA :SEED+1 :EXIT LDX :SEED+1 LDY :SEED STY RETURN STX RETURN+1 LDA #2 STA RETLEN RTS * ** DATA * :SEED DS 2 *