0' == D E S I G N . B A S == Version 2.0 1 ' Graphic formulas from Bob Boothe, from 80-Microcomputing, April-June 1981, and TRSColor Computer routines from Jake Commander and Kavlos Gesamte, in 80-Micro, March 1982. 2 ' IBM PC conversions and modifications by Marty Smith. Houston, Texas. (713) 661-1241 (Office) 3 ' SOURCE ST2259, COMPUSERVE 72155,1214. 4 ' This program requires BASICA, the Color Board, 64K and up, should work with any color display. My system has both boards and exiting throughor makes a toggle between Color and B/W. 5 ' The exit leaves a design on the Color Screen and puts you in Command Mode on Monochrome. 6 ' Originally the Function Keys called up elaborate designs that took too long to generate on the screen. (One took the PC 2 1/2 hours). These were saved in 16K BLOAD screens, which pretty much filled a whole disk. 7 ' That's what the BEEP's from function keys 1-8 are. This also keeps you from inputting text strings to the program, while leaving them intact at command mode. 25 GOSUB 8000 30 PI=3.141593 40 GOSUB 10000 45 IF ALT=1 THEN GOSUB 1601 ELSE GOSUB 1600 46 N=VAL(I$):IF I$="m" OR I$="M" THEN KEY 7,"gosub 65000"+CHR$(13):END 50 IF I$="0" THEN N=10 ELSE IF I$="c" OR I$="C" THEN GOSUB 20000 52 IF I$=CHR$(45) OR I$=CHR$(95) THEN N=11 ELSE IF I$="=" THEN N=12 53 IF I$="q" OR I$="Q" THEN M=1:GOTO 5810 ELSE IF I$="w" OR I$="W" THEN M=2:GOTO 5810 ELSE IF I$="e" OR I$="E" THEN M=3:GOTO 5810 ELSE IF I$="r" OR I$="R" THEN M=4:GOTO 5810 ELSE IF I$="t" OR I$="T" THEN M=5:GOTO 5810 54 IF I$="y" OR I$="Y" THEN M=6:GOTO 5810 ELSE IF I$="u" OR I$="U" THEN M=7:GOTO 5810 ELSE IF I$="i" OR I$="I" THEN M=8:GOTO 5810 55 ON N GOTO 110,210,320,400,500,700,850,1000,1200,1400,5000,5800 60 GOTO 40 100 REM design #5, Circle and circle 110 CLS:FOR T=0 TO 2*PI STEP PI/50 120 X1=COS(T)*160+159:Y1=SIN(T)*100+99 130 A=T+3*PI/4 140 X2=COS(A)*160+159:Y2=SIN(A)*100+99 150 GOSUB 1500 160 NEXT 170 GOSUB 1600 180 IF I$="x" THEN 40 ELSE IF I$=" " THEN 110 ELSE IF I$="0" THEN N=10:GOTO 50 200 N=VAL(I$):IF N>=0 AND N<16 THEN 50 ELSE 110 210 REM design #3, Moire Pattern 215 CLS:FOR T=0 TO PI/2 STEP PI/180 220 X1=FIX(COS(T)*100):Y1=SIN(T)*50 230 X2=FIX(COS(T)*320):Y2=SIN(T)*199 240 CO3=1:GOSUB 1500 250 X1=319-X1:Y1=199-Y1 260 X2=319-X2:Y2=199-Y2 270 CO3=2:GOSUB 1500 280 NEXT 300 GOSUB 1600 305 IF I$="x" THEN 40 ELSE IF I$=" " THEN 210 ELSE IF I$="0" THEN N=10:GOTO 50 310 N=VAL(I$):IF N>=0 AND N<13 THEN 50 ELSE 210 320 CLS:FOR T=0 TO 10*PI STEP PI/20:REM design 6, Spiral 330 X1=COS(T)*3.5*T+160:Y1=SIN(T)*3.5*T+100 340 A=T+2*PI/3 350 X2=COS(A)*3.5*A+160:Y2=SIN(A)*3.5*A+100 360 GOSUB 1500 370 NEXT 380 GOSUB 1600 390 IF I$="x" THEN 40 ELSE IF I$=" " THEN 320 ELSE IF I$="0" THEN N=10:GOTO 50 395 N=VAL(I$):IF N>=0 AND N<13 THEN 50 ELSE 320 400 CLS: FOR T=0 TO 2*PI STEP PI/60:REM design #8, Rotating Squares 410 R=COS(2*T)*100 420 X1=COS(T)*R+160:Y1=SIN(T)*R+100 430 A=T+PI/2 440 R2=COS(2*A)*100 450 X2=COS(A)*R2+160:Y2=SIN(A)*R2+100 460 GOSUB 1500 470 NEXT 480 GOSUB 1600 490 IF I$="x" THEN 40 ELSE IF I$=" " THEN 400 ELSE IF I$="0" THEN N=10:GOTO 50 495 N=VAL(I$):IF N>=0 AND N<13 THEN 50 ELSE 400 500 REM design #1, N-Sided Polygon 505 Z=0 510 PRINT"Number of points? (Maximum 48) " 515 FOR X=0 TO 10000:NEXT 516 I$=INKEY$:J$=INKEY$:I$=I$+J$:N=VAL(I$) 517 IF N=0 THEN N=CO1+10 518 IF N>48 THEN 510 519 CLS 520 FOR T=0 TO 2*PI-.001 STEP 2*PI/N 530 Z=Z+1 540 A(Z)=COS(T)*159+159:B(Z)=SIN(T)*99+99 550 NEXT 560 FOR S=1 TO N-1:FOR D=S+1 TO N 570 X1=A(S):Y1=B(S) 580 X2=A(D):Y2=B(D) 590 GOSUB 1500 600 NEXT:NEXT 650 GOSUB 1600:IF I$="x" THEN 40 ELSE IF I$=" " THEN 500 ELSE IF I$="0" THEN N=10:GOTO 50 660 N=VAL(I$):IF N>=0 AND N<13 THEN 50 ELSE 500 700 CLS:REM design #4, Square Spiral 710 X1=200:Y1=120 720 FOR Q=1 TO 40 730 X2=X1+5*Q+2:Y2=Y1 740 CO3=1:GOSUB 1500 750 X1=X2:Y1=Y2+5*Q+3 760 CO3=2:GOSUB 1500 770 X2=X1-5*Q-5:Y2=Y1 780 CO3=3:GOSUB 1500 790 X1=X2:Y1=Y2-5*Q-6 800 CO3=2:GOSUB 1500 810 NEXT 820 GOSUB 1600 830 IF I$="x" THEN 40 ELSE IF I$=" " THEN 700 ELSE IF I$="0" THEN N=10:GOTO 50 840 N=VAL(I$):IF N>=0 AND N<13 THEN 50 ELSE 700 850 CLS:REM design# 7, Four Leaf Rose 860 FOR T=0 TO 2*PI STEP PI/75 870 R=COS(2*T)*100 880 X1=COS(T)*R+159:Y1=SIN(T)*R+99 890 A=T+PI/3 900 R2=COS(2*A)*100 910 X2=COS(A)*R2+159:Y2=SIN(A)*R2+99 920 GOSUB 1500 930 NEXT 940 GOSUB 1600 950 IF I$="x" THEN 40 ELSE IF I$=" " THEN 850 ELSE IF I$="0" THEN N=10:GOTO 50 960 N=VAL(I$):IF N>=0 AND N<13 THEN 50 ELSE 850 1000 CLS:REM design #10, Triangle Spiral 1010 FOR T=0 TO 2*PI STEP PI/30 1020 R=T*23 1030 X1=COS(T)*R+159:Y1=SIN(T)*R+99 1040 A=T+2*PI/3 1050 X2=COS(A)*R+159:Y2=SIN(A)*R+99 1060 GOSUB 1500 1070 B=T+4*PI/3 1080 X1=COS(B)*R+159:Y1=SIN(B)*R+99 1090 GOSUB 1500 1100 X2=COS(T)*R+159:Y2=SIN(T)*R+99 1110 GOSUB 1500 1120 NEXT 1130 GOSUB 1600 1140 IF I$="x" THEN 40 ELSE IF I$=" " THEN 1000 ELSE IF I$="0" THEN N=10:GOTO 50 1150 N=VAL(I$):IF N>=0 AND N<13 THEN 50 ELSE 1000 1200 REM design #11, Triangles in triangles 1210 R=1 1220 FOR T=0 TO 3.24 STEP PI/30 1230 R=R*1.16557 1240 X1=COS(T)*R+159:Y1=SIN(T)*R+99 1250 A=T+2*PI/3 1260 X2=COS(A)*R+159:Y2=SIN(A)*R+99 1270 CO3=1:GOSUB 1500 1280 B=T+4*PI/3 1290 X1=COS(B)*R+159:Y1=SIN(B)*R+99 1300 CO3=2:GOSUB 1500 1310 X2=COS(T)*R+159:Y2=SIN(T)*R+99 1320 CO3=3:GOSUB 1500 1330 NEXT 1340 CO3=2:GOSUB 1600 1350 IF I$="x" THEN 40 ELSE IF I$=" " THEN 1200 ELSE IF I$="0" THEN N=10:GOTO 50 1360 N=VAL(I$):IF N>=0 AND N<13 THEN 50 ELSE 1200 1400 Z=0:REM design # 2 1405 FOR Q=0 TO 319 STEP 9 1410 CO3=1:X1=0:Y1=Q*.625:X2=Q:Y2=199 1415 GOSUB 1500 1420 CO3=2:X1=Q:Y1=0:X2=319:Y2=Q*.625 1425 GOSUB 1500 1430 NEXT 1435 N=15 1440 FOR T=0 TO 2*PI -.001 STEP 2*PI/N 1445 Z=Z+1 1450 A(Z)=COS(T)*100+159:B(Z)=SIN(T)*65+99 1455 NEXT 1460 FOR S=1 TO N-1:FOR D=S+1 TO N 1465 X1=A(S):Y1=B(S) 1470 X2=A(D):Y2=B(D) 1475 CO3=3:GOSUB 1500 1477 NEXT:NEXT 1480 GOSUB 1600 1490 IF I$="x" THEN 40 ELSE IF I$=" " THEN 1400 ELSE IF I$="0" THEN N=10: GOTO 50 1495 N=VAL(I$):IF N>=0 AND N < 13 THEN 50 ELSE 1400 1500 LINE(X1,Y1)-(X2,Y2),CO3 1510 RETURN 1600 I$="":DEF SEG:IF ALT=1 THEN 3600: ' DELAY/COLOR/SELECTION ROUTINE 1601 FOR Z=0 TO 3000 1602 I$=INKEY$:IF I$<>"" THEN Z=3000 1603 NEXT:Z=FRE(X$) 1604 IF I$="" THEN N1=CO1 MOD 16:I$ = STR$(N1) 1605 GOSUB 2000 1607 IF CO1 MOD 2 = 0 THEN CO2 = 1 ELSE IF CO1 MOD 2 = 1 THEN CO2 = 0 1608 IF LEN(I$)=2 THEN GOSUB 1640 1610 CLS:SCREEN 1,0:COLOR CO1,CO2:OUT 980,2:OUT 981,HSYNC% 1620 RETURN 1640 IF ASC(RIGHT$(I$,1))=45 THEN GOSUB 65000:END 1645 IF ASC(RIGHT$(I$,1))=30 THEN IF ALT=0 THEN ALT=1:GOSUB 4100 ELSE IF ALT=1 THEN ALT=0:GOSUB 4200 1650 RETURN 2000 CO1=RND(RNDGEN):CO2=RND(RNDGEN+1):CO3=RND(RNDGEN+3) 2005 CO2=CO2*100 MOD 2 2010 CO1=CO1*100 MOD 16 2040 CO3=CO3*100 MOD 3 + 1 2100 RETURN 3000 REM ///// F10 COLOR CHANGE ROUTINE \\\\\ 3005 I$="" 3020 FOR XIT=0 TO 3000 3030 I$=INKEY$:IF I$ <> "" THEN XIT=3000 3040 NEXT XIT 3050 IF I$="b" OR I$="B" THEN CO1=0 ELSE IF I$="u" OR I$="U" THEN CO1=1 ELSE IF I$="g" OR I$="G" THEN CO1=2 ELSE IF I$="c" OR I$="C" THEN CO1=3 ELSE IF I$="r" OR I$="R" THEN CO1=4 3055 IF I$="m" OR I$="M" THEN CO1=5 ELSE IF I$="n" OR I$="N" THEN CO1=6 ELSE IF I$="w" OR I$="W" THEN CO1=7 3060 IF I$="s" OR I$="S" THEN CO1=9 ELSE IF I$="y" OR I$="Y" THEN CO1=14 ELSE IF I$="h" OR I$="H" THEN CO1=15 3065 IF I$="0" THEN CO2=0 ELSE IF I$="1" THEN CO3=1 ELSE IF I$="2" THEN CO3=2 ELSE IF I$="3" THEN CO3=3 ELSE IF I$="9" THEN CO2=1 3070 COLOR CO1,CO2 3100 RETURN 3600 REM alternate non-auto 3610 Z=0 3620 FOR Z1= 0 TO 100 3625 I$=INKEY$ 3630 NEXT Z1 3632 ZAP=FRE(X$) 3635 IF Z=0 THEN 3620 3636 I$="x" 3640 GOTO 1604 3700 REM toggle non-auto 3710 BEEP 3720 Z=1 3730 SOUND 500,2 3740 RETURN 3800 I$="":DEF SEG:IF ALT=1 THEN 3600 3801 FOR ZINT=0 TO 3000 3802 I$=INKEY$:IF I$<>"" THEN ZINT=3000 3803 NEXT:ZAP=FRE(X$) 3810 GOTO 1604 3900 REM clear input buffer 3910 DEF SEG=&H40:BEGIN%=PEEK(&H1A):POKE &H1C,BEGIN% 3920 BEEP 3930 RETURN 4000 REM Dummy keys 4010 PLAY "MBXO$;" 4020 RETURN 4100 REM play my bonnie to indicate change of state 4110 PLAY "MBXM$;" 4120 RETURN 4200 REM more music 4210 PLAY "MBXN$;" 4220 RETURN 4300 REM 4310 PLAY "MBXP$;" 4320 RETURN 5000 A=31:FOR DO3%=1 TO 2 5010 Z=VAL(RIGHT$(TIME$,2)) 5020 Z%=VAL(RIGHT$(TIME$,2)) 5030 GOSUB 2000:COLOR CO1,CO2 5040 FOR N=10 TO 1 STEP -2 5050 FOR Q=316 TO 319 5060 LINE(Q,0)-(Q,199),3 5070 NEXT 5080 FOR Q=197 TO 199 5090 LINE(0,Q)-(319,Q),3 5100 NEXT 5110 FOR X=79 TO 0 STEP -N 5120 LINE(X,0)-(39,33),3 5130 NEXT 5140 FOR Y=0 TO 67 STEP N 5150 LINE(0,Y)-(39,33),3 5160 NEXT 5170 FOR X=0 TO 79 STEP N 5180 LINE(X,67)-(39,33),3 5190 NEXT 5200 FOR Y=67 TO 0 STEP -N 5210 LINE(79,Y)-(39,33),3 5220 NEXT 5230 GET(0,0)-(78,66),C 5240 PUT( 79, 0),C,PRESET 5250 PUT(157, 0),C,PSET 5260 PUT(235, 0),C,PRESET 5270 PUT( 0, 67),C,PRESET 5280 PUT( 79, 67),C,PSET 5290 PUT(157, 67),C,PRESET 5300 PUT(235, 67),C,PSET 5310 PUT( 0,133),C,PSET 5320 PUT( 79,133),C,PRESET 5330 PUT(157,133),C,PSET 5340 PUT(235,133),C,PRESET 5350 NEXT 5360 FOR A=0 TO 319 STEP 5 5370 LINE( A, 0)-(159, 99),2 5380 NEXT 5390 FOR A=0 TO 199 STEP 5 5400 LINE(319, A)-(159, 99),2 5410 NEXT 5420 FOR A=319 TO 0 STEP -5 5430 LINE( A,199)-(159, 99),2 5440 NEXT 5450 FOR A=199 TO 0 STEP -5 5460 LINE( 0, A)-(159, 99),2 5470 NEXT 5480 FOR A=1 TO 318 STEP 5 5490 LINE( A, 0)-(159, 99),0 5500 NEXT 5510 FOR A=1 TO 198 STEP 5 5520 LINE(319, A)-(159, 99),0 5530 NEXT 5540 FOR A=318 TO 1 STEP -5 5550 LINE( A,199)-(159, 99),0 5560 NEXT 5570 FOR A=199 TO 1 STEP -5 5580 LINE( 0, A)-(159, 99),0 5590 NEXT 5600 FOR A=1 TO 130 STEP 3 5610 CIRCLE(159,99),A,2 5620 NEXT 5630 FOR B=0 TO 99 5640 LINE(159,99-B)-(159+B,99),0 5650 LINE -(159, 99+B),0 5660 LINE -(159-B,99 ),0 5670 LINE -(159, 99-B),0 5680 CIRCLE(159,99),B/2,1 5690 NEXT 5695 NEXT 5700 GOSUB 1600 5710 IF I$="x" OR I$="X" THEN 40 ELSE IF I$=" " THEN 5000 ELSE IF I$="0" THEN N=10:GOTO 50 5720 N=VAL(I$):IF N>=0 AND N<14 THEN 50 ELSE 5000 5800 M=RND(1)*1000 MOD 8 + 1 5810 GOSUB 7000 5820 GOSUB 6000 5890 GOSUB 1600 5900 IF I$="x" OR I$="X" THEN 40 ELSE IF I$=" " THEN 5810 ELSE IF I$="0" THEN N=10:GOTO 50 5910 N=VAL(I$):IF N>=0 AND N<14 THEN 50 ELSE 5810 6000 D=D/57.29578 6005 CLS:XA=159:YA=99 6010 R=0 6020 X=R*COS(R)*A+159:Y=R*SIN(R)*B+99 6030 XP=X+OF:YP=Y:OF=OF+DO 6040 IF XP<0 OR XP>319 OR YP<0 OR YP> 199 THEN 6110 6050 IF S$="d" OR S$="D" THEN 6090 ELSE IF S$="b" OR S$="B" THEN 6070 ELSE IF S$="c" OR S$="C" THEN 6080 6060 LINE(XA,YA)-(XP,YP),CO3:GOTO 6100 6070 LINE(XA,YA)-(XP,YP),CO3,B:GOTO 6100 6080 CIRCLE(XP,YP),5,CO3:GOTO 6100 6090 PSET(XP,YP),CO3 6100 XA=X:YA=Y:R=R+D:GOTO 6020 6110 RETURN 7000 IF M=1 THEN D=73:S$="L":OF=0:DO=0:A=.6:B=.4:RETURN 7010 IF M=2 THEN D=183:S$="L":OF=0:DO=.3:A=.3:B=.2:RETURN 7020 IF M=3 THEN D=357.8:S$="L":OF=0:DO=.4:A=.05:B=.05:RETURN 7030 IF M=4 THEN D=45.1:S$="L":OF=0:DO=.3:A=.3:B=.3:RETURN 7040 IF M=5 THEN D=44.9:S$="B":OF=0:DO=0:A=.6:B=.6:RETURN 7050 IF M=6 THEN D=33:S$="B":OF=0:DO=0:A=.4:B=.4:RETURN 7060 IF M=7 THEN D=180.5:S$="B":OF=0:DO=0:A=.4:B=.4:RETURN 7070 D=91:S$="L":OF=0:DO=0:A=.5:B=.5 7100 RETURN 8000 KEY (9) ON:KEY (10) ON:KEY(11) ON 8002 FOR X% = 1 TO 8: KEY (X%) ON: ON KEY (X%) GOSUB 9000:NEXT X% 8005 ON KEY (9) GOSUB 3700:ON KEY (10) GOSUB 3000:ON KEY(11) GOSUB 3900 8010 DIM A(50),B(50),C(350) 8014 KEY OFF:CLS 8015 TOG=2:GOSUB 65010:SCREEN 0,1 8020 SCREEN 0,1:HSYNC%=45 8025 RNDGEN=VAL(RIGHT$(TIME$,2))+VAL(MID$(TIME$,4,2))*12:ALT=0 8026 GOSUB 40000:GOSUB 30000 8030 RETURN 9000 REM Dummy Function keys 9010 BEEP 9020 RETURN 10000 REM menu 10010 SCREEN 0,1,0,0:COLOR 15,1,1:CLS:OUT 980,2:OUT 981,HSYNC% 10020 IF ALT=0 THEN COLOR 0,7 ELSE IF ALT=1 THEN COLOR 7,0 10025 LOCATE 3,8,0 10030 PRINT CHR$(16);" IBM PC LINE PATTERNS "; CHR$(17):PRINT 10040 COLOR 0,1 10050 PRINT "*** Press X to return to this Menu ***" 10060 PRINT " Function Keys 1 to 10 are active." 10065 PRINT 10070 COLOR 15,1 10080 PRINT " 1 - Circle and Circle." 10090 PRINT " 2 - Moire Pattern." 10100 PRINT " 3 - Spiral." 10110 PRINT " 4 - Rotating Squares." 10120 PRINT " 5 - N-Sided Polygon." 10130 PRINT " 6 - Square Spiral." 10140 PRINT " 7 - Four Leaf Rose." 10150 PRINT " 8 - Outside Triangle Spiral." 10160 PRINT " 9 - Inside Triangle Spiral." 10165 PRINT " 0 - Big Eye." 10170 PRINT " - - Multiple Pattern." 10175 PRINT " = - Spirographs." 10180 PRINT " Keys Q thru I are more Spirographs." 10185 COLOR 23,1 10190 PRINT :PRINT "PRESS a key, C for Colors, or M to end?" 10200 RETURN 20000 SCREEN 1,0:COLOR 0,1 20010 PRINT "**** COLOR CONTROL COMMAND MENU ****" 20020 PRINT 20030 PRINT " PRESS F10 and a letter:" 20040 PRINT 20050 PRINT " B = Black U = Blue G = Green" 20060 PRINT " C = Cyan R = Red M = Magenta" 20070 PRINT " N = Brown W = White S = Light Blue" 20080 PRINT " Y = Yellow H = High Intensity White" 20090 PRINT 20100 PRINT " Or PRESS F10 and a number: 20110 PRINT 20120 PRINT " 0 = Palette 0 9 = Palette 1 20130 PRINT 20140 PRINT " Depending on Palette:" 20150 PRINT 20160 PRINT " Green = 1 = Cyan" 20170 PRINT " Red = 2 = Magenta" 20180 PRINT " Brown = 3 = White" 20190 PRINT 20200 PRINT " PRESS RETURN TO CONTINUE OR TRY F10!" 20202 PRINT " ";STRING$(6,19) 20205 FOR Z=0 TO 20000 20210 I$=INKEY$:IF I$=CHR$(13) THEN Z=20000 20220 NEXT 20230 RETURN 29000 REM move screen left 29010 HSYNC%=HSYNC%+1:IF HSYNC% > 46 THEN BEEP:HSYNC%=46 29020 OUT 980,2:OUT 981,HSYNC% 29030 RETURN 29100 REM move screen right 29110 HSYNC%=HSYNC%-1:IF HSYNC% < 36 THEN BEEP:HSYNC%=36 29120 OUT 980,2:OUT 981,HSYNC% 29130 RETURN 30000 CLS 30020 SCREEN 0,1:COLOR 3,0:OUT 980,2:OUT 981,HSYNC% 30050 PRINT "This program will run unattended all " 30060 PRINT "by itself, or it can be shifted into " 30070 PRINT "manual operation by pressing ";:COLOR 12,0:PRINT "ALT A";:COLOR 3,0 30080 PRINT "at the menu screen. ";:COLOR 5,0:PRINT "In this mode, to" 30090 PRINT "procede with the next design press ";:COLOR 12,0:PRINT "F9.":COLOR 3,0 30110 PRINT "Pressing ";:COLOR 12,0:PRINT "ALT A";:COLOR 3,0:PRINT " again will return the" 30120 PRINT "program to auto operation. 30130 PRINT :COLOR 2,0 30140 PRINT "During any mode the top row of" 30150 PRINT "keys, from ";:COLOR 12,0:PRINT "1";:COLOR 2,0:PRINT " to ";:COLOR 12,0:PRINT "=";:COLOR 2,0:PRINT ", will call a design," 30160 PRINT "as will ";:COLOR 12,0:PRINT "Q";:COLOR 2,0:PRINT " to ";:COLOR 12,0:PRINT "I";:COLOR 2,0:PRINT ". If nothing is done" 30170 PRINT "after about 10 seconds, the program" 30180 PRINT "will pick a design for you." 30190 COLOR 4,0:PRINT "RETURN";:COLOR 2,0:PRINT " is NOT needed for most input."; 30200 PRINT "Color backgrounds and palettes can be" 30210 PRINT "changed during operation. Press ";:COLOR 12,0:PRINT "C";:COLOR 2,0:PRINT 30220 PRINT "at the menu prompt for an explantion." 30230 PRINT :COLOR 6,0 30240 PRINT "Hitting the ";:COLOR 4,0:PRINT "SPACE";:COLOR 6,0:PRINT " bar repeats a design" 30250 PRINT "with a different color. Entering a" 30260 PRINT "series of keys results in a series of" 30270 PRINT "designs, but they come on top of each" 30280 PRINT "other. Press ";:COLOR 4,0:PRINT "UP ARROW";:COLOR 6,0:PRINT " to clear buffer." 30290 LOCATE 25,1:INPUT " Press RETURN to continue";I$:RETURN 30295 FOR GEN%=1 TO 32766 30296 RNDGEN%=GEN%:I$=INKEY$ 30297 IF I$ <> "" THEN GEN%=32766:X%=1 30298 NEXT GEN% 30299 Y=FRE(X$):IF X% <> 1 THEN 30295 30300 RANDOMIZE RNDGEN% 30310 RETURN 30311 X=X+1 30312 X=X-1 30313 I$=INKEY$ 30314 IF I$=CHR$(13) THEN 30320 30315 X=FRE(X$) 30316 GOTO 30311 30320 KEY(12) OFF:KEY(13) OFF:SCREEN 1,0:OUT 980,0:OUT 981,HSYNC%:RETURN 40000 LOCATE 11,9:PRINT "IBM LINE PATTERNS PROGRAM":COLOR 22,0:LOCATE 15,16:PRINT "Press RETURN":COLOR 0,7:GOSUB 30295 40005 KEY(12) ON:KEY(13) ON:ON KEY(12) GOSUB 29000:ON KEY(13) GOSUB 29100:REM Center Screen 40010 SCREEN 0,1:COLOR 7,1,4:CLS 40055 COLOR 7,1 40060 LOCATE 7, 8:PRINT "If this is not centered"; 40070 LOCATE 10, 8:PRINT "on your screen, use the"; 40080 LOCATE 13,13:PRINT "left and right"; 40085 LOCATE 16, 8:PRINT "arrow keys to center it."; 40088 COLOR 31,1:LOCATE 19,14:PRINT "PRESS RETURN";:COLOR 7,1 40090 GOSUB 40400:RETURN 40400 X=X+1 40410 X=X-1 40420 I$=INKEY$ 40430 IF I$=CHR$(13) THEN 40460 40440 X=FRE(X$) 40450 GOTO 40400 40460 KEY(12) OFF:KEY(13) OFF:SCREEN 1,0:RETURN 65000 IF TOG=1 THEN TOG=2 ELSE TOG=1 65010 ON TOG GOSUB 65080, 65030 65020 RETURN 65030 REM toggle color graphics 65050 DEF SEG=0: A=PEEK(&H410): POKE &H410,(A AND &HCF) OR &H20 65060 WIDTH 40:SCREEN 1:SCREEN 0:LOCATE ,,1,6,7: SCREEN 1,0 65070 RETURN 65080 REM toggle monochrome display 65100 DEF SEG=0: A=PEEK(&H410): POKE &H410,A OR &H30 65110 WIDTH 80: LOCATE ,,1,12,13:SCREEN 0,0,0 65120 RETURN