CLEAR 10 REM RNDTEST - CHECK OUT RANDOM NUMBER ALGORITHM D. ANGEL 10/11/79 20 DIM A$4,A1$(8)1,B$6,C$4,S$14 30 PRINT HEX(03),,"RANDOM NUMBER DEMONSTRATION PROGRAM":PRINT 40 PRINT " THE FOLLOWING PROGRAM DEMONSTRATES THE RANDOM NUMBER GENERATION" 50 PRINT " ON THE 2200VP (RELEASE 2.0) AND THE 2200MVP (RELEASE 1.7)." 60 PRINT " THERE IS A SEQUENCE OF 32 BIT BINARY RANDOM NUMBERS, STARTING AT A" 70 PRINT " SPECIFIC BINARY RANDOM SEED, FROM WHICH THE DECIMAL ALGORITHM" 80 PRINT " EXTRACTS BCD DIGITS. THESE DIGITS ARE ASSEMBLED INTO 13 DIGIT" 90 PRINT " FRACTIONS, THEN NORMALIZED AND RETURNED TO THE RND FUNCTION." 100 PRINT " FIRST THE ODD PLACES ARE FILLED FROM THE SECOND DIGITS OF EACH" 110 PRINT " TERM IN THE BINARY SEQUENCE, THEN THE EVEN PLACES ARE FILLED FROM" 120 PRINT " THE FIRST DIGITS. ANY NON-BCD TERM IS DISCARDED IN THE PROCESS." 130 PRINT 140 A$=HEX(10DF5D09):PRINT HEXOF(A$);" = BINARY RANDOM SEED" 150 Q=RND(0):GOTO 170 160 Q=RND(1) 170 PRINT " PRESS EXEC TO CONTINUE";:KEYIN C$:PRINT HEX (0D);"*BINARY**********DECIMAL****************************************************"; 180 S$=".-------------":FOR I=1 TO 13 STEP 2 190 GOSUB 240:X=VAL(A1$(2))-48:IF X<=9 THEN 200:PRINT:PRINT A1$();:GOTO 190 200 A1$(2)=OR HEX(80):STR(S$,I+1,1)=BIN(128+48+X):PRINT:PRINT A1$(),S$;:S$=AND ALL(7F):NEXT I:FOR I=2 TO 12 STEP 2 210 GOSUB 240:X=VAL(A1$(1))-48:IF X<=9 THEN 220:PRINT:PRINT A1$();:GOTO 210 220 A1$(1)=OR HEX(80):STR(S$,I+1,1)=BIN(128+48+X):PRINT:PRINT A1$(),S$;:S$=AND ALL(7F):NEXT I:PRINT " <-- NEW RANDOM NUMBER" 230 CONVERT S$ TO S:IF S=Q THEN 160:STOP "ERROR!!!":END 240 REM % BINARY - BINARY RANDOM NUMBER GENERATOR 250 B$=STR(A$) & HEX(0000):C$=A$ ADDC A$ ADDC A$ ADDC A$ ADDC A$ ADDC B$:A$=C$:HEXUNPACK A$ TO A1$():RETURN