?? random.dsp
字號:
.module/boot=3/boot=4 random;
{ RANDOM.DSP - Random number function.
INPUT :
sr1 = msw of seed
sr0 = lsw of seed
OUTPUT: for best result use ONLY sr1 as random number
sr1 = msw of new seed between 0 and 2^32
sr0 = lsw of new seed
FUNCTIONS CALLED:
None
DESCRIPTION:
The function (taken from the APPS handbook) implements
x(n+1) = (a*x(n) + c) mod m
m = 2^32 a = 1,664,525 c = 32767
}
.entry noise_rand;
noise_rand:
my1 = 25; {upper half of a}
my0 = 26125; {lower half of a}
mr = sr0*my1 (uu);
mr = mr + sr1*my0 (uu); {a(hi)*x(lo)}
si = mr1; {a(hi)*x(lo) + a(lo)*x(hi)}
mr1 = mr0;
mr2 = si;
mr0 = 0xfffe; {c = 32767, leftshifted by 1}
mr = mr + sr0*my0 (uu); { (above) + a(lo)*x(lo) + c}
sr = ashift mr2 by 15 (hi);
sr = sr or lshift mr1 by -1 (hi); {right shift by 1}
sr = sr or lshift mr0 by -1 (lo);
rts;
.endmod;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -