* *``````````````````````````````* * 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 *