' SEQ2.BS2 ' ' {$STAMP BS2} ' {$PBASIC 2.5} ' =========================================== ' variables ' =========================================== reps VAR Nib ' repetitions of basic patterns i VAR Nib ' looping index n VAR Word ' random number ' =========================================== ' program setup & output test ' =========================================== Setup: n = 12121 ' seed random number DIRL = %11111111 ' set all pins to output Test: GOSUB AllOn GOSUB AllOff ' =========================================== ' main program ' =========================================== Main: DO GOSUB Chase1R GOSUB Chase2R GOSUB Chase3 GOSUB Chase4R GOSUB Chase5R GOSUB AllOn GOSUB Chase5L GOSUB Chase4L GOSUB Chase3 GOSUB Chase2L GOSUB Chase1L GOSUB Steady1 GOSUB Steady2 GOSUB Steady3 GOSUB Steady4 GOSUB Steady5 GOSUB AllOn GOSUB Steady5 GOSUB Steady4 GOSUB Steady3 GOSUB Steady2 GOSUB Steady1 LOOP END ' =========================================== ' subroutines ' =========================================== AllOff: OUTL = %00000000 PAUSE 3000 RETURN AllOn: OUTL = %00111111 PAUSE 10000 RETURN Chase1R: FOR reps = 1 TO 10 FOR i = 0 TO 5 LOOKUP i, [%00100000, %00010000, %00001000, %00000100, %00000010, %00000001], OUTL PAUSE 250 NEXT NEXT RETURN Chase1L: FOR reps = 1 TO 10 FOR i = 0 TO 5 LOOKUP i, [%00000001, %00000010, %00000100, %00001000, %00010000, %00100000], OUTL PAUSE 250 NEXT NEXT RETURN Chase2R: FOR reps = 1 TO 10 FOR i = 0 TO 2 LOOKUP i, [%00100100, %00010010, %00001001], OUTL PAUSE 500 NEXT NEXT RETURN Chase2L: FOR reps = 1 TO 10 FOR i = 0 TO 2 LOOKUP i, [%00100100, %00001001, %00010010], OUTL PAUSE 500 NEXT NEXT RETURN Chase3: FOR reps = 1 TO 10 OUTL = %00101010 PAUSE 1000 OUTL = %00010101 PAUSE 1000 NEXT RETURN Chase4R: FOR reps = 1 TO 10 FOR i = 0 TO 2 LOOKUP i, [%00101101, %00110110, %00011011], OUTL PAUSE 500 NEXT NEXT RETURN Chase4L: FOR reps = 1 TO 10 FOR i = 0 TO 2 LOOKUP i, [%00101101, %00011011, %00110110], OUTL PAUSE 500 NEXT NEXT RETURN Chase5R: FOR reps = 1 TO 10 FOR i = 0 TO 5 LOOKUP i, [%00111110, %00011111, %00101111, %00110111, %00111011, %00111101], OUTL PAUSE 250 NEXT NEXT RETURN Chase5L: FOR reps = 1 TO 10 FOR i = 0 TO 5 LOOKUP i, [%00111110, %00111101, %00111011, %00110111, %00101111, %00011111], OUTL PAUSE 250 NEXT NEXT Steady1: OUTL = %00000000 GOSUB RandBit HIGH i PAUSE 5000 RETURN Steady2: GOSUB RandBit LOOKUP i, [%00000011, %00100001, %00110000, %00011000, %00001100, %00000110], OUTL PAUSE 5000 RETURN Steady3: GOSUB RandBit LOOKUP i, [%00000111, %00100011, %00110001, %00111000, %00011100, %00001110], OUTL PAUSE 5000 RETURN Steady4: GOSUB RandBit LOOKUP i, [%00001111, %00100111, %00110011, %00111001, %00111100, %00011110], OUTL PAUSE 5000 RETURN Steady5: GOSUB RandBit LOOKUP i, [%00011111, %00101111, %00110111, %00111011, %00111101, %00111110], OUTL PAUSE 5000 RETURN RandBit: RANDOM n i = n / 13107 MIN 0 ' scale n to fit 0-5 range RETURN