1 REM * NEOPIXEL DRIVER DEMO 2 REM * BY JOE STROSNIDER 3 REM * INANIS.NET 4 REM * JCM-1.COM 5 REM ******************** 9 P$ = ".":R$ = ">":Z = 0:U = 1:V = 7:DT = 49244 10 GOSUB 4900: REM INIT PORT 20 GOSUB 4000: REM PRINT MENU 30 GOSUB 3900: REM GET INPUT 40 ON K GOSUB 9000,4200,4200,4200,4200,4300,4500,4700,4800 50 IF ASC (K$) = 27 THEN END 60 IF K = 1 THEN 30 70 GOTO 20 1000 REM 1001 REM ******************** 1002 REM * GET BITS 1003 REM ******************** 1010 BY$ = "": FOR I = Z TO V:B(I) = 0: NEXT 1020 IF A > = 128 THEN B(7) = 1:A = A - 128 1030 IF A > = 64 THEN B(6) = 1:A = A - 64 1040 IF A > = 32 THEN B(5) = 1:A = A - 32 1050 IF A > = 16 THEN B(4) = 1:A = A - 16 1060 IF A > = 8 THEN B(3) = 1:A = A - 8 1070 IF A > = 4 THEN B(2) = 1:A = A - 4 1080 IF A > = 2 THEN B(1) = 1:A = A - 2 1090 IF A = 1 THEN B(0) = 1 1110 FOR I = Z TO V:BY$ = BY$ + STR$ (B(I)): PRINT P$;: NEXT 1120 CM$ = CM$ + BY$ 1130 RETURN 2000 REM 2001 REM ******************* 2002 REM * SEND COMMAND 2003 REM ******************* 2009 PRINT : PRINT "SENDING"; 2010 POKE 49246,0: REM CMD Lo 2020 POKE 49240,0: POKE 49241,0: REM INT Toggle 2030 L = LEN (CM$) 2040 FOR I = U TO L 2050 POKE DT + VAL ( MID$ (CM$,I,1)),0 2070 POKE 49242,0: PRINT R$;: POKE 49243,0 2080 NEXT 2090 POKE 49247,0: REM CMD Hi 2100 RETURN 3900 REM 3901 REM ******************** 3902 REM * GET INPUT 3903 REM ******************** 3910 GET K$:K = VAL (K$): RETURN 4000 REM 4001 REM ******************** 4002 REM * PRINT MENU 4003 REM ******************** 4010 HOME : PRINT : PRINT " NEOPIXEL DRIVER DEMO": PRINT " BY JOE STROSNIDER": PRINT " INANIS.NET | JCM-1.COM": PRINT 4020 PRINT " 1) STEP TO NEXT MODE" 4030 PRINT " 2) PLAY: STATIC APPLE COLORS" 4040 PRINT " 3) PLAY: APPLE COLOR CHASE" 4050 PRINT " 4) PLAY: APPLE COLOR FADE" 4060 PRINT " 5) PLAY: APPLE COLOR TWINKLE" 4070 PRINT " 6) COMMAND: FILL STRIP" 4080 PRINT " 7) COMMAND: SET PIXEL" 4090 PRINT " 8) COMMAND: CHASE STRIP" 4100 PRINT " 9) COMMAND: FADE STRIP" 4110 PRINT 4120 PRINT " ESC) EXIT" 4130 RETURN 4200 REM 4201 REM ******************** 4202 REM * RUN BUILTIN MODE 4203 REM ******************** 4210 CM$ = "10000000": REM # of CMDS 4220 CM$ = CM$ + "01111111": REM 254 = SETMODE 4230 IF K = 2 THEN CM$ = CM$ + "00": REM APPLE 4240 IF K = 3 THEN CM$ = CM$ + "10": REM APPLE CHASE 4250 IF K = 4 THEN CM$ = CM$ + "01": REM APPLE FADE 4260 IF K = 5 THEN CM$ = CM$ + "11": REM APPLE TWINKLE 4270 CM$ = CM$ + "000000": GOSUB 2000: RETURN 4300 REM 4301 REM ******************** 4302 REM * FILL STRIP 4303 REM ******************** 4310 PRINT : PRINT " FILL STRIP" 4320 INPUT " RED: (0-255): ";R1$:R = VAL (R1$): IF R > 255 THEN R = 255 4330 INPUT " GREEN: (0-255): ";G1$:G = VAL (G1$): IF G > 255 THEN G = 255 4340 INPUT " BLUE: (0-255): ";B1$:B = VAL (B1$): IF B > 255 THEN B = 255 4350 INPUT " START: (0-59): ";S1$:S = VAL (S1$): IF S > 59 THEN S = 59 4360 INPUT " COUNT: (1-60): ";C1$:C = VAL (C1$): IF C > 60 THEN C = 60 4370 PRINT : PRINT "PARSING BITS"; 4380 CM$ = "10000000": REM # OF CMDS 4390 CM$ = CM$ + "10000000": REM CMD TO EXECUTE 4400 A = R: GOSUB 1000:A = G: GOSUB 1000:A = B: GOSUB 1000:A = S: GOSUB 1000:A = C: GOSUB 1000: GOSUB 2000: RETURN 4500 REM 4501 REM ******************** 4502 REM * SET PIXEL 4503 REM ******************** 4510 PRINT : PRINT " SET PIXEL" 4520 INPUT " PIXEL: (0-59): ";S1$:S = VAL (S1$): IF S > 59 THEN S = 59 4530 INPUT " RED: (0-255): ";R1$:R = VAL (R1$): IF R > 255 THEN R = 255 4540 INPUT " GREEN: (0-255): ";G1$:G = VAL (G1$): IF G > 255 THEN G = 255 4550 INPUT " BLUE: (0-255): ";B1$:B = VAL (B1$): IF B > 255 THEN B = 255 4560 PRINT : PRINT "PARSING BITS"; 4570 CM$ = "10000000": REM # OF CMDS 4580 CM$ = CM$ + "01000000": REM CMD TO EXECUTE 4590 A = S: GOSUB 1000:A = R: GOSUB 1000:A = G: GOSUB 1000:A = B: GOSUB 1000: GOSUB 2000: RETURN 4700 REM 4701 REM ******************** 4702 REM * CHASE MODE 4703 REM ******************** 4710 CM$ = "10000000": REM # OF CMDS 4720 CM$ = CM$ + "11000000": REM CMD TO EXECUTE 4799 GOSUB 2000: RETURN 4800 REM 4801 REM ******************** 4802 REM * FADE MODE 4803 REM ******************** 4810 CM$ = "10000000": REM # OF CMDS 4820 CM$ = CM$ + "00100000": REM CMD TO EXECUTE 4899 GOSUB 2000: RETURN 4900 REM 4901 REM ******************** 4902 REM * INIT GAME PORT 4903 REM ******************** 4910 POKE 49241,0: REM INT HI 4920 POKE 49243,0: REM CLK HI 4930 POKE 49245,0: REM DAT HI 4940 POKE 49247,0: REM CMD HI 4950 RETURN 9000 REM 9001 REM ******************** 9002 REM * NEXT MODE 9003 REM ******************** 9010 POKE 49240,0: POKE 49241,0: RETURN