100 ; REM PROG NAME IS 'C1GRDEMO' 17 JUN '87
110 ;
120 CLS:PEEK $FFFA01,C%:IF C%<128 THEN PRINT " NOT A COLOR SYSTEM":END
130 C%=0:MODE 1:VTAB 4
140 PRINT " THIS IS A COLOR (MODE 1) GRAPHICS DEMONSTRATION PROGRAM.  ENTER THE NUMBER"
150 PRINT " CORRESPONDING TO YOUR CHOICE TO START A PARTICULAR DEMO.  TO STOP A DEMO,"
160 PRINT " SIMULTANEOUSLY PRESS THE 'CONTROL' AND 'C' KEYS":PRINT:PRINT
170 PRINT " 1 = HEX                  2 = GRID"
180 PRINT " 3 = PROP                 4 = LINES"
190 PRINT " 5 = CIRCLE               6 = CIRCLES"
200 PRINT " 7 = RNDLINES             8 = RNDLINES2"
210 PRINT " 9 = RECTANGLE":PRINT
220 INPUT "WHICH ? ",N%:IF N%<1 GOTO 220 ELSE IF N%>9 GOTO 220
230 ON N% GOTO HEX,GRID,PROP,LINES,CIRCLE,CIRCLES,RNDLINES,RNDLINES2,RECTANGLE
240 ;
250  "HEX":MODE 1:PALETTE 0,0:PALETTE 3,7
260 CLS:PI=4*ATN(1):C=COS(PI/3):S=SIN(PI/3)
270 C1=COS(PI/36):S1=SIN(PI/36):SF=.95
280 ;
290 GOSUB 310:GOTO 290
300 ;
310 X=100:Y=0:CX=320:CY=100:SC=1.16
320 FOR J%=1 TO 70:C%=C%+1:IF C%=4 THEN C%=1
330 COLOR C%:FOR I%=0 TO 6:SX=X*SC+CX:SY=CY+Y
340 IF I%=0 THEN SX1%=FIX(SX):SY1%=FIX(SY)
350 LSET (SX1%,SY1%)-(FIX(SX),FIX(SY))
360 SX1%=FIX(SX):SY1%=FIX(SY)
370 XN=X*C-Y*S:Y=X*S+Y*C:X=XN:NEXT I%
380 XN=SF*(X*C1-Y*S1):Y=SF*(X*S1+Y*C1):X=XN:NEXT J%
390 X=100:Y=0:CX=320:CY=100:SC=1.16
400 FOR J%=1 TO 70:FOR I%=0 TO 6:SX=X*SC+CX:SY=CY+Y
410 IF I%=0 THEN SX1%=FIX(SX):SY1%=FIX(SY)
420 LCLR (SX1%,SY1%)-(FIX(SX),FIX(SY))
430 SX1%=FIX(SX):SY1%=FIX(SY)
440 XN=X*C-Y*S:Y=X*S+Y*C:X=XN:NEXT I%
450 XN=SF*(X*C1-Y*S1):Y=SF*(X*S1+Y*C1):X=XN:NEXT J%:RETURN
460 ;
470 ;
480 ;
490  "GRID"
500 CLS:GOSUB 530:FOR I=0 TO 120 STEP 20:COLOR FIX(I/60)+1
510 FOR X=0 TO 190+I STEP 1:Y=(X*X-2*I*X)/190:X%=FIX(X):Y%=FIX(Y)
520 PSET X%+320,100-Y%:PSET 320-X%,Y%+100:NEXT X:NEXT I:STOP
530 FOR X%=40 TO 600 STEP 40:FOR Y%=4 TO 196 STEP 4:PSET X%,Y%:NEXT Y%:NEXT X%
540 FOR Y%=40 TO 160 STEP 40:FOR X%=4 TO 636 STEP 4:PSET X%,Y%:NEXT X%:NEXT Y%
550 RETURN
560 ;
570 ;
580  "PROP"
590 CLS:DIM X%[360],Y%[360]:K=ATN(1)/90:PALETTE 0,0
600 FOR I%=0 TO 180:X%[I%]=FIX(100.5*COS(D)):D=D+K:NEXT I%
610 FOR I%=359 TO 181 STEP -1:J%=J%+1:X%[I%]=-X%[J%]:NEXT I%
620 FOR I%=180 TO 359:Y%[K%]=-X%[I%]:K%=K%+1:NEXT I%
630 FOR I%=0 TO 179:Y%[K%]=X%[I%]:K%=K%+1:NEXT I%
640 FOR I%=0 TO 359:X%[I%]=X%[I%]+319:Y%[I%]=Y%[I%]+99:NEXT I%
650 ;
660 FOR I%=0 TO 4:FOR J%=72*I%+36 TO 72*I%+71:X%=X%[J%]:Y%=Y%[J%]
670 LSET (X%,Y%)-(638-X%,198-Y%):NEXT J%:NEXT I%
680 ;
690 C%=100*FIX(RND(0)*8)+10*FIX(RND(0)*8)+FIX(RND(0)*8)
700 T%=T%+1:IF T%=4 THEN T%=1
710 PALETTE T%,C%:COLOR T%
720 FOR H%=0 TO 35:FOR I%=H% TO 359 STEP 72
730 X%=X%[I%]:Y%=Y%[I%]:LSET (X%,Y%)-(638-X%,198-Y%)
740 X%=X%[I%+36]:Y%=Y%[I%+36]:LCLR (X%,Y%)-(638-X%,198-Y%)
750 NEXT I%:NEXT H%
760 ;
770 FOR H%=0 TO 35:FOR I%=H% TO 359 STEP 72
780 X%=X%[I%]:Y%=Y%[I%]:LCLR (X%,Y%)-(638-X%,198-Y%)
790 X%=X%[I%+36]:Y%=Y%[I%+36]:LSET (X%,Y%)-(638-X%,198-Y%)
800 NEXT I%:NEXT H%:GOTO 690
810 ;
820 ;
830  "LINES"
840 ;
850 PALETTE 0,0:PALETTE 3,7:CLS:S%=4
860 FOR X%=0 TO 639 STEP S%
870 C%=FIX(3*RND(0))+1:COLOR C%:LSET (X%,0)-(639-X%,100)
880 LSET (639-X%,100)-(X%,199):NEXT X%
890 FOR X%=0 TO 639 STEP S%:LCLR (X%,0)-(639-X%,100)
900 LCLR (639-X%,100)-(X%,199):NEXT X%
910 FOR I%=1 TO 3:C%=100*FIX(8*RND(0))+10*FIX(8*RND(0))+FIX(8*RND(0))
920 PALETTE I%,C%:NEXT I%
930 GOTO 860
940 ;
950 ;
960  "CIRCLE"
970 ;
980 CLS:DIM A%[640]:INIT A%[]=-1:J%=1:CNT%=30:PALETTE 3,7:PALETTE 0,0
990 K%=J%:FOR I%=200 TO 0 STEP -1:IF A%[I%]=K% GOTO 1050 ELSE A%[I%]=K%:K%=-K%
1000 IF K%=-1 THEN CIRSET (318-I%,200-I%),I%
1010 IF K%=-1 THEN CIRSET (322+I%,200-I%),I%
1020 IF K%=1 THEN CIRCLR (318-I%,200-I%),I%
1030 IF K%=1 THEN CIRCLR (322+I%,200-I%),I%
1040 I%=I%-19
1050 NEXT I%:CNT%=CNT%-1
1060 IF CNT%>0 GOTO 990
1070 C%=C%+1:IF C%=4 THEN C%=1
1080 COLOR C%
1090 J%=-J%:CNT%=30:GOTO 990
1100 FOR I%=1 TO 200:CIRCLR (320,200),I%:NEXT I%:GOTO 1060
1110 ;
1120 ;
1130  "CIRCLES"
1140 CLS:DIM A%[396]:INIT A%[]=-1:J%=1:CNT%=20:PALETTE 3,7
1150 C%=C%+1:IF C%=4 THEN C%=1
1160 COLOR C%
1170 K%=J%:FOR I%=1 TO 200:IF A%[I%]=K% GOTO 1200
1180 A%[I%]=K%:IF K%=1 THEN CIRSET (319,99),I% ELSE CIRCLR (319,99),I%
1190 K%=-K%:I%=I%+19
1200 NEXT I%:CNT%=CNT%-1:IF CNT%>0 GOTO 1170
1210 J%=-J%:CNT%=20:GOTO 1150
1220 ;
1230 ;
1240  "RNDLINES"
1250 ;
1260 CLS:DIM C%[251],X1%[251],X2%[251],Y1%[251],Y2%[251]
1270 PALETTE 0,0:PALETTE 3,7
1280  "LOOP":FOR I%=1 TO 250:C%[I%]=FIX(RND(0)*3+1)
1290 E=640:GOSUB 1350:X1%[I%]=R%:GOSUB 1350:X2%[I%]=R%
1300 E=200:GOSUB 1350:Y1%[I%]=R%:GOSUB 1350:Y2%[I%]=R%:NEXT I%
1310 CLS:FOR I%=1 TO 250:COLOR%=C%[I%]:COLOR COLOR%
1320 LSET (X1%[I%],Y1%[I%])-(X2%[I%],Y2%[I%]):NEXT I%
1330 HTAB FIX(66*RND(0)):VTAB FIX(25*RND(0))
1340 PRINT "SHORT DELAY";:FOR D=1 TO 12000:NEXT D:GOTO LOOP
1350 R%=FIX(RND(0)*E):RETURN
1360 ;
1370 ;
1380  "RNDLINES2"
1390 REM CRNDLINES2
1400 ;
1410 DIM C%[251],X%[251],Y%[251]:CLS:PALETTE 0,0:PALETTE 3,7
1420  "LOOP1":FOR I%=1 TO 250:C%[I%]=FIX(RND(0)*3+1)
1430 E=640:GOSUB 1480:X%[I%]=R%:E=200:GOSUB 1480:Y%[I%]=R%:NEXT I%
1440 CLS:FOR I%=1 TO 250:COLOR%=C%[I%]:COLOR COLOR%
1450 LSET (639-X%[I%],199-Y%[I%])-(X%[I%],Y%[I%]):NEXT I%
1460 HTAB FIX(66*RND(0)):VTAB FIX(25*RND(0))
1470 PRINT "SHORT DELAY";:FOR D=1 TO 8000:NEXT D:GOTO LOOP1
1480 R%=FIX(RND(0)*E):RETURN
1490 ;
1500 ;
1510  "RECTANGLE"
1520 CLS:PALETTE 0,0:PALETTE 3,7:DIM A%[640]:INIT A%[]=-1:J%=1:CNT%=20
1530 K%=J%:FOR I%=0 TO 100:IF A%[I%]=K% GOTO 1570 ELSE A%[I%]=K%:K%=-K%
1540 IF K%=-1 THEN RECTSET (200-I%,100-I%)-(I%+440,100+I%)
1550 IF K%=1 THEN RECTCLR (200-I%,100-I%)-(I%+440,100+I%)
1560 I%=I%+19
1570 NEXT I%:CNT%=CNT%-1:IF CNT%>0 GOTO 1530
1580 C%=C%+1:IF C%=4 THEN C%=1
1590 COLOR C%
1600 J%=-J%:CNT%=20:GOTO 1530
1610 ;
