Listing of file='FOURTH' on disk='vmedia/2282_graphics_crt_demos.wvd.zip'
# Sector 213, program filename = 'FOURTH'
0001 REM %HOLIDAY GREETING PROGRAM - 07/03/81 - by R.L. Droz
0002 COM P$3
0003 DIM S1$64,L(7,2),B$1,K$1
0005 PRINT HEX(0D03),,HEX(020400020F0E);" FOURTH OF JULY GREETING PROGRAM. "
: PRINT
0006 LINPUT "GRAPHIC CRT IS AT WHICH ADDRESS?" -P$
0007 MAT SEARCH "13151604", = STR(P$,2,2) TO L$
: IF STR(L$,,2)=HEX(0000) THEN 5
0008 SELECT PLOT <P$>,#15<P$>
: $OPEN #15
0015 SELECT D
0020 PRINT AT(21,0,);BOX(3,79);" Drawing initial image ...";
0023 B$="B"
0025 $PSTAT="GREETING"
0043 PLOT <,,HEX(0603E5)>
: ERRORGOTO 5
0045 GOSUB '60(1000,"]]Have a Bang-up]]")
0050 GOSUB '60(Y9,"]]Fourth of July]]")
0055 GOSUB '70(200,350,20)
0065 REM % DRAW FIGURE
: M=3
0066 PLOT <,,R>,<320,20,U>,<0,10*M,D>,<60*M,0,D>,<0,-5*M,D>,<10*M,0,D>,<-10*M
,0,D>,<0,-5*M,D>,<-60*M,0,D>
0067 REM % BLINK LIGHTS
0068 RESTORE LINE 69
: FOR I=1 TO 7
: READ L
: L(I,1)=M*(L+75)+320
: READ L
: L(I,2)=M*L+25
: NEXT I
0069 DATA 2,2, -2,-2, -5,-5, 5,5, 7,-3, -9,7, 5,5
0070 PLOT <1,,C>,<10,,S>
0080 FOR J=1 TO 5000
: L=MOD(7*RND(1),7)
: PLOT <,,R>,<L(L+1,1),L(L+1,2),"*">
0085 IF RND(1)>.5 THEN PLOT <,,HEX(E1)>
: ELSE PLOT <,,HEX(E2)>
0086 KEYIN K$,86,87
: IF B$="F" THEN 90
: $IF OFF /005,90
: GOSUB 110
: GOTO 90
0087 IF VAL(K$)=31 THEN 9999
: IF VAL(K$)<>4 THEN 86
: B$="B"
: $RELEASE TERMINAL
0090 $BREAK 255
: NEXT J
0091 PLOT <,,HEX(E2)>
: FOR J=1 TO 7
: PLOT <,,R>,<L(J,1),L(J,2),"*">
: NEXT J
0092 PLOT <2,,C>,<20,15,S>,<,,R>,<360,20,HEX(E1)>,<,,"BANG !!">
0093 FOR I=1 TO 10
: $IF OFF /005,94
: PRINT HEX(070D)
0094 FOR J=1 TO 30
: $BREAK 255
: NEXT J
: NEXT I
: GOTO 43
0100 REM % BACKGROUND MESSAGE HANDLER
0110 SELECT P
0115 PRINT AT(21,0,);BOX(3,79);
: PRINT " Fourth of July Greeting program running ..."
0120 PRINT
: PRINT " KEY SF '4 for background operation, or SF '31 to exit program.";
0130 PRINT HEX(0106)
: SELECT P6
: B$="F"
: RETURN
0600 REM % CENTER WORDS
0605 DEFFN'60(Y9,S1$)
: C=MIN(INT(80/LEN(S1$)),4)
: S=MAX(10*C,800/LEN(S1$))
0610 $TRAN (S1$, " ] ") R
: PLOT <,,R>,<C,,C>,<S,,S>,<S/2,MIN(512-S,Y9),S1$>
0615 Y9=MIN(Y9,512)-2.5*S
: RETURN
0620 REM % DRAW FLAG
0625 DEFFN'70(X,Y,M1)
: PLOT <,,R>,<X,Y,U>
0630 PLOT <20*M1,0,D>,<0,-13*M1,D>,<-20*M1,0,D>,<0,13*M1,D>
0635 PLOT <8*M1,0,U>,<0,-7*M1,D>,<-8*M1,0,D>,<0,7*M1,U>
0640 PLOT <20*M1,0,U>
: S3=3
0645 FOR S1=1 TO 13
: IF S1<8 THEN L1=12
: ELSE L1=20
0650 IF MOD(S1,2)=1 THEN 670
0655 FOR S2=1 TO M1-S3 STEP S3
0660 PLOT <0,-S3,U>,<-L1*M1,0,D>,<L1*M1,0,U>
0665 NEXT S2
: PLOT <0,INT(.5+(M1-S3)/S3)*S3,U>
0670 PLOT <0,-M1,U>,<-L1*M1,0,D>,<L1*M1,0,U>
0675 NEXT S1
0680 PLOT <-19.5*M1,12.5*M1,U>
: S3=1
0685 FOR S1=1 TO 7
0690 FOR S2=1 TO 8
: IF MOD(S1,2)=0 AND S2=1 THEN 700
: IF MOD(S1,2)=0 AND S2=8 THEN 700
0695 GOSUB '71(S3*M1)
0700 PLOT <M1,0,U>
: NEXT S2
0705 PLOT <-8*M1,-M1,U>
: NEXT S1
: RETURN
0710 REM % DRAW STAR
0715 DIM P2(5,2)
0720 DEFFN'71(M2)
: IF M3=M2 THEN 730
0725 FOR P3=1 TO 5
: P2(P3,2)=ROUND((M2*COS(P3*72)/2,0)
: P2(P3,1)=ROUND((M2*SIN(P3*72)/2,0)
: NEXT P3
0730 M3=M2
0735 PLOT <P2(1,1),P2(1,2),U>
0740 FOR P3=2 TO 11 STEP 2
: P4=MOD(P3,5)+1
: P5=MOD(P3-2,5)+1
0745 PLOT < P2(P4,1)-P2(P5,1), P2(P4,2)-P2(P5,2), D>
: NEXT P3
0750 PLOT <-P2(1,1),-P2(1,2),U>
: RETURN
9999 DEFFN'31
: SELECT P
: COM CLEAR P$
: $CLOSE
: LOAD T "START"