'CIRCUIT 'SPRITES '.. DIM GLOBAL CHARGE(32,32) X=0 Y=0 TAPX=0 TAPY=0 T=0 VIEWX=0 VIEWY=0 N=0 DIM GLOBAL MENU(3) TOUCHSCREEN BG 1 PAL 0 BG FILL 0,0 TO 31,31 CHAR 0 BG FILL 1,1 TO 30,30 CHAR 9 '..................... MAIN: 'CONTROL IF TAP THEN TAPX=TOUCH.X TAPY=TOUCH.Y T=TIMER END IF IF TOUCH THEN 'DRAG SCREEN SCROLL 1,VIEWX+(TAPX-TOUCH.X),VIEWY+(TAPY-TOUCH.Y) SCROLL 0,VIEWX+(TAPX-TOUCH.X),VIEWY+(TAPY-TOUCH.Y) ELSE IF T<>0 THEN IF TIMER-T<10 THEN 'TAP SELECTION X=INT((TOUCH.X+SCROLL.X(1))/8) Y=INT((TOUCH.Y+SCROLL.Y(1))/8) IF MENU(2)=0 THEN 'SHOW MENU MENU(2)=1 MENU(0)=X MENU(1)=Y 'SCROLL 0,MENU(0)-8,MENU(1)-8 BG 0 PAL 1 CELL MENU(0),MENU(1),8 PAL 3 TEXT MENU(0)+1,MENU(1),"DELETE" TEXT MENU(0)+1,MENU(1)+1,"WIRE" TEXT MENU(0)+1,MENU(1)+2,"INVERT" TEXT MENU(0)+1,MENU(1)+3,"POWER" TEXT MENU(0)+1,MENU(1)+4,"LIGHT" TEXT MENU(0)+1,MENU(1)+5,"DIODE >" TEXT MENU(0)+1,MENU(1)+6,"DIODE <" TEXT MENU(0)+1,MENU(1)+7,"DIODE ^" TEXT MENU(0)+1,MENU(1)+8,"DIODE V" TEXT MENU(0)+1,MENU(1)+9,"CAPACITOR" TEXT MENU(0)+1,MENU(1)+10,"RESISTOR" TEXT MENU(0)+1,MENU(1)+11,"AMPLIFIER" ELSE 'MAKE SELECTION MENU(2)=0 'N=INT((TOUCH.Y-SCROLL.Y(0))/8) N=Y-MENU(1) IF X>MENU(0) AND XC OR C<1 THEN EXIT SUB 'DIODE N=INT(CELL.A(X,Y)/8) MOD 2 IF CELL.C(X,Y)=3 AND N=0 AND D<>0 THEN EXIT SUB IF CELL.C(X,Y)=3 AND N=1 AND D<>2 THEN EXIT SUB N=INT(CELL.A(X,Y)/16) MOD 2 IF CELL.C(X,Y)=4 AND N=0 AND D<>3 THEN EXIT SUB IF CELL.C(X,Y)=4 AND N=1 AND D<>1 THEN EXIT SUB 'CHARGE IF CELL.C(X,Y)<>10 THEN CHARGE(X,Y)=C ELSE 'CAPACITOR ADD CHARGE(X,Y),C,0 TO 100 END IF TINT X,Y PAL 1 'IF LIGHT IF CELL.C(X,Y)=6 THEN CELL X,Y,7 TINT X,Y PAL 2 END IF 'RESISTOR IF CELL.C(X,Y)=11 THEN ADD C,-5 IF C<1 THEN EXIT SUB END IF 'AMPLIFIER IF CELL.C(X,Y)=12 THEN C=10 N=0 IF D<>0 AND CELL.C(X,Y)<>4 AND CELL.C(X-1,Y)<>9 THEN INC N 'IF INVERTER IF CELL.C(X-1,Y)=2 OR CELL.C(X-1,Y)=10 THEN CHARGE(X-1,Y)=C-1 ELSE CALL POWER(X-1,Y,C-1,2) END IF END IF IF D<>1 AND CELL.C(X,Y)<>3 AND CELL.C(X,Y+1)<>9 THEN INC N IF CELL.C(X,Y+1)=2 OR CELL.C(X,Y+1)=10 THEN CHARGE(X,Y+1)=C-1 ELSE CALL POWER(X,Y+1,C-1,3) END IF END IF IF D<>2 AND CELL.C(X,Y)<>4 AND CELL.C(X+1,Y)<>9 THEN INC N IF CELL.C(X+1,Y)=2 OR CELL.C(X+1,Y)=10 THEN CHARGE(X+1,Y)=C-1 ELSE CALL POWER(X+1,Y,C-1,0) END IF END IF IF D<>3 AND CELL.C(X,Y)<>3 AND CELL.C(X,Y-1)<>9 THEN INC N IF CELL.C(X,Y-1)=2 OR CELL.C(X,Y-1)=10 THEN CHARGE(X,Y-1)=C-1 ELSE CALL POWER(X,Y-1,C-1,1) END IF END IF 'IF CAPACITOR IF CELL.C(X,Y)=10 THEN ADD CHARGE(X,Y),N*C*-1,0 TO 100 END SUB SUB SENDCHARGE BG 1 FOR X=0 TO 31 FOR Y=0 TO 31 IF CELL.C(X,Y)=5 THEN CALL POWER(X,Y,10,4) NEXT Y NEXT X END SUB SUB INVERTCHARGE BG 1 FOR X=0 TO 31 FOR Y=0 TO 31 IF CELL.C(X,Y)=2 AND CHARGE(X,Y)=0 THEN CALL POWER(X,Y,10,4) IF CELL.C(X,Y)=10 THEN IF CHARGE(X,Y)>0 THEN CALL POWER(X,Y,10,4) ELSE TINT X,Y PAL 0 END IF END IF NEXT Y NEXT X END SUB SUB CLEARCHARGE BG 1 FOR X=0 TO 31 FOR Y=0 TO 31 IF CELL.C(X,Y)<>10 THEN CHARGE(X,Y)=0 TINT X,Y PAL 0 END IF IF CELL.C(X,Y)=7 THEN CELL X,Y,6 NEXT Y NEXT X END SUB #1:MAIN PALETTES 043F2A15002B0117003D2A15003A2510 003F2A15003F2A15003F2A15003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 2466DB3C3CDB66243C7EE7C3C3E77E3C 245AA55A5AA55A243C3CDBE7E7DB3C3C 00728DBEBE8D7200087EF3C1C1F37E08 3C425A5A3C3C5A243C7E6666C342663C 2418BD6666BD18243C24C39999C3243C 180018BDBD180018183C5AE7E75A3C18 183C7EFFFF7E3C181800008181000018 7E81BDA5A5BD817E007E7E66667E7E00 00084000000210000008400420000000 247EFF7E7EFF7E243C7EDB9999DB7E3C 247EFF7E7EFF7E243C2AABABD5D5543C 247EFF3C7EFFFF243C66C3C38181003C