100 REM DESIGNS FOR FUN (C) PETE BROOKS 1982 V1.0 110 REM TO TML S SHAW 1990 120 CALL LINK("CLEAR") :: CALL LINK("CHSIZE",8,8) :: OPTION BASE 1 :: DIM A$(24),B$(40),C$(2) :: D$="0123456789ABCDEF" :: E$="084C2A6E195D3B7F" :: F$="54433322" :: C$(1)="CONTINUOUS" 200 C$(2)="USER-CUED" :: DEF A(B)=INT(RND*B)+1 :: FOR C=96 TO 127 :: CALL LINK("CHAR",C,"00013B3323033F7F") :: NEXT C :: GOTO 2270 260 FOR C=1 TO D*8 :: B$(C)="" :: NEXT C :: E=LEN(G$) :: FOR C=1 TO D*4 :: FOR F=1 TO D :: H$=SEG$(G$,A(E),1) :: B$(C)=H$&B$(C)&SEG$(E$,POS(D$,H$,1),1) :: CALL KEY(1,G,H) :: IF G=2 THEN 550 360 IF G=1 THEN GOSUB 2670 370 NEXT F :: B$(D*8-C+1)=B$(C) :: NEXT C :: I=96 :: FOR C=1 TO D*8 STEP 8 :: FOR F=1 TO 2*D-1 STEP 2 :: H$="" :: FOR J=C TO C+7 :: H$=H$&SEG$(B$(J),F,2) :: CALL KEY(1,G,H) :: IF G=2 THEN 550 480 NEXT J :: CALL LINK("CHAR",I,H$) :: GOSUB 2540 :: I=I+1 :: NEXT F :: NEXT C :: GOSUB 2610 550 RETURN 560 FOR C=1 TO 24 :: A$(C)="" :: NEXT C :: FOR C=1 TO D :: FOR F=1 TO D :: A$(C)=A$(C)&CHR$(95-D+C*D+F) :: NEXT F :: NEXT C :: FOR C=1 TO D :: FOR F=1 TO VAL(SEG$(F$,D,1)) :: A$(C)=A$(C)&A$(C) :: NEXT F :: A$(C)=SEG$(A$(C),1,28) :: NEXT C 700 FOR C=D+1 TO 24 :: A$(C)=A$(C-D) :: NEXT C :: RETURN 740 FOR C=1 TO 10 :: CALL LINK("PRINT",C*8-7,1,A$(C)) :: NEXT C :: RETURN 780 D=3 :: GOSUB 560 :: K=1 :: G$="01234789CEF" :: L=15 :: M=15 :: N=2 850 CALL SCREEN(L) :: REM 870 CALL LINK("COLOR",N,M) :: REM 890 CALL SOUND(100,1220,0) :: RETURN 910 CALL SOUND(100,1220,0) 920 CALL KEY(0,G,H) :: IF H<1 THEN 920 940 O=POS(D$,CHR$(G),1) :: IF O=0 THEN 920 960 CALL SOUND(100,1220,0) :: RETURN 980 CALL LINK("CLEAR") :: CALL LINK("PRINT",2,20,"CURRENT SETTINGS") :: RESTORE 2480 :: FOR C=1 TO L :: READ I$ :: NEXT C :: CALL LINK("PRINT",12,20,"SCREEN IS "&I$) :: RESTORE 2480 :: FOR C=1 TO M :: READ I$ :: NEXT C 1090 CALL LINK("PRINT",22,20,"BACKGROUND IS "&I$) :: RESTORE 2480 :: FOR C=1 TO N :: READ I$ :: NEXT C :: CALL LINK("PRINT",32,20,"FOREGROUND IS "&I$) 1150 CALL LINK("PRINT",42,20,"BIAS IS "&G$) :: CALL LINK("PRINT",82,20,"PATTERN AREA IS "&STR$(D*D)) :: CALL LINK("PRINT",92,20,"MODE IS "&C$(K)) 1170 CALL LINK("PRINT",122,20,"PRESS 'S' TO CONTINUE") 1180 CALL KEY(1,G,H) :: IF G<>2 THEN 1180 1200 CALL SOUND(100,1220,0) :: RETURN 1220 CALL LINK("CLEAR") :: CALL LINK("PRINT",20,20,"PATTERN AREA") :: CALL LINK("PRINT",30,20,"PRESS: FOR:") :: FOR C=1 TO 5 1250 CALL LINK("PRINT",30+C*9,20,STR$(C)&" "&STR$(C*C)&" "&"("&STR$(C)&" X "&STR$(C)&")") :: NEXT C :: CALL LINK("PRINT",120,20,"YOUR SELECTION ?:") :: CALL SOUND(100,1220,0) 1290 CALL KEY(0,G,H) :: IF(G<49)+(G>53)THEN 1290 1310 CALL SOUND(100,1220,0) :: D=G-48 :: CALL LINK("PRINT",140,90,D) :: GOSUB 560 :: RETURN 1360 CALL LINK("CLEAR") :: RESTORE 2480 :: CALL LINK("PRINT",12,20,"SELECT COLOURS") :: CALL LINK("PRINT",22,20,"PRESS: FOR:") :: FOR C=1 TO 16 :: READ I$ 1420 CALL LINK("PRINT",C*8+26,23,SEG$(D$,C,1)&" "&I$) :: NEXT C :: CALL LINK("PRINT",160,40,"SCREEN COLOUR ?:") :: GOSUB 910 :: L=O 1470 CALL LINK("PRINT",160,220,SEG$(D$,L,1)) :: CALL LINK("PRINT",169,20,"BACKGROUND COLOUR ?:") :: GOSUB 910 :: M=O 1500 CALL LINK("PRINT",169,220,SEG$(D$,M,1)) :: CALL LINK("PRINT",178,20,"DIFFERENT FOREGROUND COLOUR ?:") 1510 GOSUB 910 :: IF M=O THEN 1510 1530 N=O :: CALL LINK("PRINT",178,220,SEG$(D$,N,1)) :: FOR C=1 TO 200 :: NEXT C :: RETURN 1580 CALL LINK("CLEAR") :: RESTORE 2520 :: CALL LINK("PRINT",10,20,"BIAS SELECTION") :: CALL LINK("PRINT",20,20,"PRESS: FOR:") :: FOR C=1 TO 16 :: READ G$ 1630 CALL LINK("PRINT",C*8+22,30,SEG$(D$,C,1)&" "&G$) :: NEXT C :: CALL LINK("PRINT",170,20,"YOUR SELECTION ?:") :: GOSUB 910 :: CALL LINK("PRINT",170,220,SEG$(D$,O,1)) 1680 FOR C=1 TO 200 :: NEXT C :: RETURN 1710 CALL LINK("CLEAR") :: CALL LINK("PRINT",10,10,"BIAS CREATION") :: REM 1740 CALL LINK("PRINT",22,20,"USE 0 TO 9 AND A TO F") 1750 REM 1760 CALL LINK("PRINT",32,20,"INPUT BETWEEN 2 & 112 DIGITS LONG") :: CALL LINK("PRINT",62,20,"PLEASE ENTER YOUR STRING :- ") :: CALL LINK("INPUT",70,20,G$,112) 1790 CALL LINK("CLEAR") :: CALL LINK("PRINT",100,20,"CHECKING...") :: IF LEN(G$)>1 THEN 1850 1820 CALL LINK("PRINT",109,20,"YOU'VE MADE A MISTAKE") :: CALL LINK("PRINT",119,1,"YOU'LL HAVE TO INCREASE THE LENGTH OF YOUR STRING") :: GOTO 1760 1850 FOR C=1 TO LEN(G$) :: H$=SEG$(G$,C,1) :: IF H$<>" " THEN 1900 1880 CALL LINK("PRINT",109,20,"PLEASE DO NOT INCLUDE SPACES") :: GOTO 1750 1900 IF(H$<"0")+(H$>"9")*(H$<"A")+(H$>"F")THEN 1750 1910 NEXT C :: CALL LINK("PRINT",150,50,"STRING CHECKED") :: FOR C=1 TO 200 :: NEXT C :: RETURN 1960 CALL LINK("CLEAR") :: RANDOMIZE :: CALL SOUND(100,1220,0) :: RETURN 2000 CALL LINK("CLEAR") :: CALL LINK("PRINT",10,20,"SELECT MODE") :: CALL LINK("PRINT",20,20,"PRESS: FOR:") :: FOR C=1 TO 2 2030 CALL LINK("PRINT",40+C*10,40,STR$(C)&" "&C$(C)) :: NEXT C :: CALL LINK("PRINT",80,30,"YOUR SELECTION ?:") 2060 CALL KEY(0,G,H) :: IF(G<49)+(G>50)THEN 2060 2080 K=G-48 :: CALL LINK("PRINT",90,120,K) :: CALL SOUND(100,1220,0) :: FOR C=1 TO 200 :: NEXT C :: RETURN 2140 CALL LINK("CLEAR") :: GOSUB 850 :: GOSUB 740 2170 GOSUB 260 :: CALL KEY(1,G,H) :: IF G=2 THEN 2260 2200 IF G=1 THEN GOSUB 2670 2210 ON K GOTO 2170,2220 2220 CALL KEY(1,G,H) :: IF H<1 THEN 2220 2240 CALL SOUND(100,1220,0) :: GOTO 2170 2260 RETURN 2270 GOSUB 780 :: GOSUB 560 2290 CALL LINK("CLEAR") :: CALL SCREEN(15) :: RESTORE 2500 :: CALL LINK("PRINT",10,20,"MAIN MENU") :: CALL LINK("PRINT",20,20,"PRESS: TO:") :: FOR C=0 TO 8 :: READ I$ 2350 CALL LINK("PRINT",C*9+28,30,STR$(C)&" "&I$) :: NEXT C :: CALL LINK("PRINT",168,30,"YOUR SELECTION ?:") :: CALL SOUND(100,1220,0) 2390 CALL KEY(0,G,H) :: IF(G<48)+(G>56)THEN 2390 2410 G=G-47 :: CALL LINK("PRINT",176,140,G-1) :: CALL SOUND(100,1220,0) :: FOR C=1 TO 200 :: NEXT C :: ON G GOSUB 780,980,1220,1360,1580,1710,1960,2000,2140 2470 GOTO 2290 2480 DATA TRANSPARENT,BLACK,MEDIUM GREEN,LIGHT GREEN,DARK BLUE,LIGHT BLUE,DARK RED,CYAN,MEDIUM RED 2490 DATA LIGHT RED,DARK YELLOW,LIGHT YELLOW,DARK GREEN,MAGENTA,GREY,WHITE 2500 DATA SET DEFAULTS,CHECK SETTINGS,SELECT PATTERN AREA,SELECT COLOURS,SELECT BIAS,CREATE BIAS 2510 DATA RESET RANDOMISER,SELECT MODE,CONTINUE 2520 DATA F2481F4812F8124F1248,02468ACE13579BDF,FFEECC00,FEC8,01234789CEF,1248,8CEF137F,11333311333311C8 2530 DATA 842184218421,124812481248,9AC953F,11224488,07E07E07E,DB00DB00,969696F08181,1032547698BADCFE 2540 REM PUT CHARDEFS ON SCREEN 2550 CALL LINK("CHSIZE",6,7) :: P=I-95! 1 TO 25 2560 Q=8*INT(D*D/2+2)! 1 TO 13 *8 2570 R=193-Q+INT((P-1)/2)*8 :: S=1-((I/2)<>INT(I/2))*114 :: CALL LINK("PRINT",R,S,STR$(P)&":"&H$) :: CALL LINK("CHSIZE",8,8) :: RETURN 2610 REM DISPLAY NEW PATTERN 2620 T=(192-Q)/8 :: FOR C=1 TO T :: CALL LINK("PRINT",C*8-7,1,A$(C)) :: NEXT C :: RETURN 2670 REM TO ARTIST FILE 2680 CALL LINK("PRINT",1,196,"DSK") :: CALL LINK("INPUT",1,220,U,1) :: CALL LINK("PRINT",1,194,"FILE ") :: CALL LINK("INPUT",9,170,J$,8) :: J$="DSK"&STR$(U)&"."&J$ 2730 FOR U=1 TO 3 :: CALL LINK("PRINT",U*8-7,1,A$(U)) :: NEXT U :: CALL LINK("SAVEP",J$,1) :: RETURN