AppleIIAsm-Collection/disks/disk3_math8_math16/T.RAND8

56 lines
1.5 KiB
Plaintext
Raw Normal View History

*
*``````````````````````````````*
* RAND8 :: 8-BIT RANDOM NUMBER *
*- -*
* GENERATES A PSEUDO-RANDOM *
* NUMBER BETWEEN 1..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 *
*- -*
* EXIT *
* *
* .Y = NOT AFFECTED *
* .X = CLOBBERED *
* .A = RANDOM NUM 1..255 *
*- -*
* NOTE: BASED ON THE PRNG *
* LISTING FOUND IN THE NESDEV *
* WIKI. *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
RAND8
*
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
STA RETURN
LDY #1
STY RETLEN
CMP #0 ; RELOAD FLAGS
RTS
*