Listing of file='BIRTHDAY' on disk='vmedia/2282_graphics_crt_demos.wvd.zip'
# Sector 119, program filename = 'BIRTHDAY'
0001 REM %BIRTHDAY GREETING PROGRAM - 04/13/79 - by R.L. Droz
0002 COM P$3
0003 DIM S1$64,L(9,2),N$16,A$2
0005 PRINT HEX(0D03),,"BIRTHDAY GREETING PROGRAM."
: PRINT
0010 LINPUT "GRAPHICS CRT IS AT WHICH ADDRESS?" -P$
0011 MAT SEARCH "0413151617", = STR(P$,2,2) TO L$
: IF STR(L$,,2)=HEX(0000) THEN 5
0012 SELECT PLOT <P$>
0015 SELECT D
0016 LINPUT "WHO'S BIRTHDAY IS IT TODAY?" -N$
0043 PLOT <,,HEX(0603E5)>
: ERRORGOTO 5
0045 GOSUB '60(350,"HAPPY BIRTHDAY")
0049 STR(S1$,,20)=ALL("]")
: STR(S1$,10-LEN(N$)/2,LEN(N$))=N$
0050 GOSUB '60(Y9-5,S1$)
0051 PRINT "HOW OLD IS ";N$;"?";
: LINPUT -A$
: IF NUM(A$)=LEN(A$) OR A$=" " THEN 62
: PRINT HEX(0C07);
: GOTO 51
0062 SELECT P9
: PRINT "2200 Birthday Greeting program running ..."
0063 PRINT "To stop program, $RELEASE TERMINAL TO";#PART
: PRINT
: PRINT
: PRINT
0064 SELECT P
: $RELEASE TERMINAL
: $PSTAT="GREETING"
0065 REM % DRAW CAKE
0066 X=300
: REM X POSITION
0067 Y=0
: REM Y POSITION
0068 M=2
: REM MAGNIFICATION FACTOR
0069 PLOT <,,R>,<X,Y,U>
0070 PLOT <0,40*M,D>,<80*M,0,D>,<0,-40*M,D>,<-80*M,0,D>
0071 PLOT <13*M,40*M,U>
0072 FOR I=1 TO 3
0073 PLOT <0,15*M,D>,<4*M,0,D>,<0,-15*M,D>,<21*M,0,U>
0074 NEXT I
0075 PLOT <1,,C>,<0,0,S>
0076 FOR I=0 TO 2
: PLOT <,,R>,<X+14*M+25*M*I,Y+60*M,"(">,<,,R>,<X+14*M+25*M*I+3,Y+60*M,")">
: NEXT I
0077 REM %PLOT AGE
0078 PLOT <3,,C>,<30,,S>,<,,R>,<X+80*M/3,Y+60*M/3,A$>
0079 PLOT <1,,C>,<0,,S>
0080 REM % BLINK LIGHTS
0085 RESTORE
: FOR I=1 TO 9
: READ L
: L(I,1)=M*L+X
: READ L
: L(I,2)=M*L+Y
: NEXT I
0090 DATA 15,70, 40,70, 65,70, 10,65, 20,65, 35,65, 45,65, 60,65, 7
0,65
0095 PLOT <1,,C>,<10,,S>
0100 L=MOD(9*RND(1),9)
: PLOT <,,R>,<L(L+1,1),L(L+1,2),"'">
0105 IF RND(1)>.5 THEN PLOT <,,HEX(E1)>
: ELSE PLOT <,,HEX(E2)>
0110 FOR I=1 TO 5
: $BREAK 255
: NEXT I
: GOTO 100
0115 REM % CENTER WORDS
0120 DEFFN'60(Y9,S1$)
: C=MIN(INT(80/LEN(S1$)),4)
: S=MAX(10*C,800/LEN(S1$))
0125 $TRAN (S1$, " ] ") R
: PLOT <,,R>,<C,,C>,<S,,S>,<S/2,MIN(512-S,Y9),S1$>
0130 Y9=MIN(Y9,512)-2.5*S
: RETURN
0135 DEFFN'31
: COM CLEAR P$
: LOAD DC T "!"
9000 DEFFN'0
: PLOT <,,HEX(03)>
: RETURN