100 22 000 n+A 119 000 AM 117 000 n+A 117 000 Vs 000 000 Vs 000 000 Vs 000 000 Vs 000 000 Vs 000 000 Vs 000 000 Vs 000 000 A+A 117 000 A+A 118 100 AM 117 000 n+B 117 000 LpB 120 001 BM 121 000 Z 102 000000 100003 012345 014798 000000 # A pseudo random congruential generator, with: # - modulus (m) 262144 i.e. 2^18, exploits natural overflow; # - multiplier (a) 129 2^8+1 uses shift and a-1 multiple of 4; # - increment (c) 100003 prime. # - seed (s) 12345 # Starts at 100, as usual. Seed can be changed in: 119 # Breakpoints at: # - 112 actual generated number stored, CAC=100; # - 115 masked number stored (to be used as a slot machine), CAC=001. # Enjoy! # # Commented source code # # 100 strt 000 n+A seed # load seed in A # 101 000 AM x # copy seed in x to initialize sequence # 102 loop 000 n+A x # load x in A # 103 000 Vs # multiply 2 # 104 000 Vs # multiply 4 # 105 000 Vs # multiply 8 # 106 000 Vs # multiply 16 # 107 000 Vs # multiply 32 # 108 000 Vs # multiply 64 # 109 000 Vs # multiply 128 # 110 000 A+A x # multiply 129 # 111 000 A+A c # add increment # 112 100 AM x # store x+1 # 113 000 n+B x # load x in B # 114 000 LpB mask # light off some bits # 115 001 BM v # store to visualize # 116 000 Z loop # go to generate next number # 117 x 000000 # generated pseudo random value # 118 c 100003 # increment # 119 seed 012345 # seed # 120 mask 014798 # 000 01110 01110 01110 # 121 v 000000 # visualized value # # Copyright (c) 2011-2015 Giovanni A. Cignoni # HMR Project hmr.di.unipi.it #