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