linear feedback shift register

by david (no login)

Qbasic is not very good with bit-wise operations so the implementation is a bit messy. It produces a pseudo-random byte (0-255).

seed1 = 123
seed2 = 146
10 tap1 = (seed2 AND 128) \ 128
tap2 = (seed2 AND 32) \ 32
tap3 = (seed2 AND 16) \ 16
tap4 = (seed2 AND 4) \ 4
i1 = tap1 XOR tap2
i2 = i1 XOR tap3
i3 = i2 XOR tap4
j1 = (seed1 AND 128) \ 128
seed1 = (seed1 AND 127) * 2
seed1 = seed1 + i3
seed2 = (seed2 AND 127) * 2
seed2 = seed2 + j1
m = m + 1
IF m MOD 9 <> 0 THEN 10
PRINT seed1;
x$ = INKEY$
IF x$ = CHR$(27) THEN END
GOTO 10

Posted on Dec 8, 2010, 7:13 AM

Respond to this message   

Return to Index


Response TitleAuthor and Date
*period is 21845lawgin on Dec 8