AppleIIAsm-Collection/disks/disk4_math/T.MATH8.RND8

56 lines
1.5 KiB
Plaintext
Raw Normal View History

*
*``````````````````````````````*
* RND8 :: 8-BIT RANDOM NUMBER *
*- -*
* GENERATES A PSEUDO-RANDOM *
* NUMBER BETWEEN 0..255 (BYTE) *
* AND RETURNS THE VALUE IN A. *
* *
* THIS USES THE GALOIS LINEAR *
* FEEDBACK SHIFT REGISTER *
* ALGORITHM WITH POLYNOMIAL *
* $002D. THE SEQUENCE WILL *
* REPEAT AFTER 65535 CALLS. *
*- -*
* CLOBBERS: *
* *
* FLAGS: ????---- REG: AX-- *
*- -*
* CYCLES: ??? *
* SIZE: *
*- -*
* USAGE: *
* *
* JSR RND8 *
*- -*
* ENTRY: NONE *
*- -*
* EXIT *
* *
* Y = NOT AFFECTED *
* X = CLOBBERED *
* A = RANDOM NUM 0..255 *
*- -*
* NOTE: BASED ON THE PRNG *
* LISTING FOUND IN THE NESDEV *
* WIKI. *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
RND8
*
LDX #8
LDA RNDL+0
:A
ASL ;SHIFT THE REG
ROL RNDL+1
BCC :B
EOR #$2D ; APPLY XOR FEEDBACK
; WHENEVER A 1 BIT IS
; SHIFTED OUT
:B
DEX
BNE :A
STA RNDL+0
CMP #0 ; RELOAD FLAGS
RTS