         By Joe Botto. 
These programs originally appeared in the ADAM's LEAF of the Edmonton (Alberta, Canada) ADAM Users Group and are distributed by ADAM News Network. 
Here are a couple of SmartBASIC programs that will let yo ur ADAM join in on your Holiday Season.
\ 
The first is "The ADAM Caroller" -- it plays any one of fo ur Christmas Carols you select from the main menu.  Get your family and friends together and "sing along wit h ADAM".  This program was downloaded from the ADAMania data library on CompuServe.
\ 
The second program appeared in Family Computing magazine .  This "NEWYEAR" program has been updated for 1989. It f eatures an on-screen clock that you "set" on New Years Eve . ADAM will then count-down the time until 1989 at which time your ADAM will try to make more noise than you an d your party guests! It also plays an all time classi c tune! 
(p.s. you can update this program yourself, for 1990,91,92 etc. by changing the DATA statements in lines 2000 thr ough 2030)
\ 
Both programs should be typed in exactly as they appear, given a name, and saved to tape or disk.  To "run" either of the programs, simply load SMARTBasic, do a CATALOG, and type run <filename>.  Both have been tested and work just fine.
\ 
Enjoy....and HAPPY HOLIDAYS! 
\ 
"CAROLS"
\ 
5LOMEM :29000 
10POKE 17059, 4:TEXT 
11DIM b1(80), b2(80), d(80) 
12POKE 28000, 58:POKE 28001, 102:POKE 28002, 109:POKE 28003, 211:POKE 28004, 255:POKE 28005, 201 
15HOME 
16VTAB 3:HTAB 6:? "The Adam Caroller":?:? 
20HTAB 2:? "1) We Three Kings":?:HTAB 2:? "2) Silent Night":? :HTAB 2:? "3) The First Noel" 
25?:HTAB 2:? "4) O Come All Ye Faithful":?:HTAB 2:? "5) End" 
26VTAB 20:? " Enter number of choice "; 
30GET z 
40ON z GOSUB 100, 200, 300, 400, 500 
45RESTORE:GOTO 30 
55STOP 
100FOR x=1 TO 31:READ b1(x), b2(x), d(x):NEXT 
110 nn=31 
120GOSUB 10000 
130RETURN 
200FOR x=1 TO 31:READ b1, b2, d:NEXT 
210 nn=46 
220FOR x=1 TO nn:READ b1(x), b2(x), d(x):NEXT 
230GOSUB 10000 
240RETURN 
300FOR x=1 TO 77:READ b1, b2, d:NEXT 
310 nn=77 
320FOR x=1 TO nn:READ b1(x), b2(x), d(x):NEXT 
330GOSUB 10000 
340RETURN 
400FOR x=1 TO 154:READ b1, b2, d:NEXT 
410 nn=62 
420FOR x=1 TO nn:READ b1(x), b2(x), d(x):NEXT 
430GOSUB 10000 
440RETURN 
500HOME:VTAB 8:HTAB 6:? "Merry Christmas!!":?:FOR de=1 TO 3000:NEXT 
510VTAB 12:? " uh...":FOR de=1 TO 2000:NEXT:VTAB 15:? " is the hot cocoa ready yet??":END 
999REM we 3 kings 
1000DATA 135,8,600,135,9,300,136,10,600,136,12,300 
1010DATA 130,11,300,136,10,300,130,11,300,136,12,600 
1020DATA 135,8,600,135,9,300,136,10,600,136,12,300 
1030DATA 130,11,300,136,10,300,130,11,300,136,12,600 
1040DATA 136,10,600,136,10,300,135,9,600,135,9,300,135,8,600,135,8,300 
1050DATA 128,7,300,143,7,300,135,8,300,135,9,300,135,8,300,135,9,300 
1060DATA 136,10,600,130,11,300,136,12,900 
1099REM silent night 
1100DATA 136,10,900,135,9,300,136,10,600,136,12,1800 
1110DATA 136,10,900,135,9,300,136,10,600,136,12,1800 
1120DATA 128,7,1200,128,7,600,135,8,1800 
1130DATA 143,7,1200,143,7,600,136,10,1800 
1140DATA 135,9,1200,135,9,600,143,7,900,135,8,300,135,9,600 
1150DATA 136,10,900,135,9,300,136,10,600,136,12,1800 
1160DATA 135,9,1200,135,9,600,143,7,900,135,8,300,135,9,600 
1170DATA 136,10,900,135,9,300,136,10,600,136,12,1800 
1180DATA 128,7,1200,128,7,600,143,5,900,128,7,300,135,8,600,143,7,1200 
1185DATA 132,6,1200,143,7,900,136,10,300,136,12,600 
1190DATA 136,10,900,142,11,300,130,14,600,142,15,1800 
1199REM the first noel 
1200DATA 131,21,300,140,23,300,138,26,900,140,23,300,131,21,300,128,20,300 
1210DATA 140,17,1200,142,15,300,130,14,300,132,13,600,130,14,300,142,15,600 
1220DATA 140,17,1200,142,15,300,130,14,300,132,13,600,130,14,600,142,15,600,140,17,600 
1230DATA 142,15,600,130,14,600,132,13,600,140,17,600,128,20,600,131,21,1200 
1240DATA 131,21,300,140,23,300,138,26,900,140,23,300,131,21,300,128,20,300 
1250DATA 140,17,1200,142,15,300,130,14,300,132,13,600,130,14,300,142,15,600 
1260DATA 140,17,1200,142,15,300,130,14,300,132,13,600,130,14,600,142,15,600,140,17,600 
1270DATA 142,15,600,130,14,600,132,13,600,140,17,600,128,20,600,131,21,1200 
1275DATA 131,21,300,140,23,300,138,26,900,140,23,300,fl,21,300,128,20,300,140,17,1200 
1280DATA 132,13,300,130,14,300,142,15,1200,142,15,600,140,17,1800 
1285DATA 132,13,300,130,14,300,142,15,1200,142,15,600,140,17,1800,132,13,600,130,14,600,142,15,600 
1290DATA 140,17,600,142,15,600,130,14,600,132,13,600,140,17,600,128,20,600,131,21,1800 
1299REM o come all ye faithful 
1300DATA 128,10,600,128,10,1200,132,13,600,128,10,600,143,8,1200 
1310DATA 132,13,1200,143,7,600,143,8,600,143,7,600,134, 7,600,143,7,1200 
1320DATA 143,8,600,128,10,600,128,10,1200,136,10,600,142,11,600 
1330DATA 136,10,600,128,10,600,143,8,600,143,7,600,136,10,1200 
1340DATA 142,11,900,132,13,300,132,13,2400,139,6,1200,134,7,600 
1345DATA 143,7,600,134,7,1200,143,7,1200,143,8,600,143,7,600,128,10,600,143,8,600 
1350DATA 136,10,900,142,11,300,132,13,600,128,10,600,128,10,600 
1355DATA 136,10,600,128,10,600,143,8,600,128,10,1200,132,13,600,143,7,600 
1360DATA 143,7,600,143,8,600,143,7,600,134,7,600,143,7,1200 
1365DATA 143,8,600,143,7,600, 134,7,600,143,7,600,143,8,600,128,10,600 
1370DATA 136,10,1200,128,10,600 ,134,7,600,143,7,1200,143,8,900,128,10,300,128,10,1500 
10000FOR x=1 TO nn 
10010POKE 28006, b1(x):CALL 28000 
10020POKE 28006, b2(x):CALL 28000 
10030POKE 28006, 144:CALL 28000 
10040FOR d=1 TO d(x):NEXT d 
10045IF (x=8 OR x=16) AND z=1 THEN de=300:GOSUB 11000 
10046IF (x=17 OR x=19 OR x=21) AND z=1 THEN de=10:GOSUB 11000 
10050IF z=2 AND (x=9 OR x=12 OR x=15 OR x=18 OR x=22) THEN de=10:GOSUB 11000 
10060POKE 28006, 159:CALL 28000 
10070NEXT x 
10080POKE 28006, 159:CALL 28000 
10090RETURN 
11000POKE 28006, 159:CALL 28000 
11010FOR d=1 TO de:NEXT 
11020RETURN
 
 
"NEWYEAR89" 
 
10LOMEM :29000: fl=0 
20DIM bin(7), lt(30), f(30), s(30), d(30) 
30FOR x=0 TO 7: bin(x)=2^x:NEXT x 
40FOR x=1 TO 29:READ lt(x):NEXT x 
50FOR x=1 TO 30:READ f(x), s(x), d(x):NEXT x 
60FOR x=28000 TO 28005:READ ml:POKE x, ml:NEXT x 
70POKE 28006, 255:CALL 28000 
80HOME:? "TO SET THE COMPUTER CLOCK," 
90? "PLEASE INPUT THE TIME IN" 
100? "HOURS, MINUTES, AND SECONDS" 
110? "(eg., 095502); THEN PRESS" 
120? "<RETURN>.":? 
130INPUT "WHAT TIME IS IT NOW?"; tim$ 
140IF LEN(tim$)<>6 THEN 80 
150 ts=0:FOR x=1 TO 6 
160IF VAL(MID$(tim$, x, 1))=0 AND MID$(tim$, x, 1)<>"0" THEN ts=0:  x=6 
170NEXT x:IF ts=1 THEN 80 
180 hrs=VAL(LEFT$(tim$, 2)) 
190 min=VAL(MID$(tim$, 3, 2)) 
200 sec=VAL(RIGHT$(tim$, 2)) 
210IF hrs<1 OR hrs>12 OR min<0 OR min>59 OR sec<0 OR sec>59 THEN 80 
220 tim=hrs*3600+min*60+sec:HOME 
230IF tim>=43195 AND tim<=43200 THEN 320 
240FOR de=1 TO 908:NEXT de:  tim=tim+1 
250 hrs=INT(tim/3600) 
260 min=INT((tim-hrs*3600)/60) 
270 sec=tim-hrs*3600-min*60 
280HTAB 13:VTAB 10 
290? STR$(hrs); ":"; CHR$(48*(min<10)); STR$(min); 
300? ":"; CHR$(48*(sec<10)); STR$(sec); " " 
310GOTO 230 
320GR 
330FOR x=700 TO 100 STEP -10 
340 pitch=112406/x:  two=INT(pitch/16) 
350 one=128+pitch-(two*16) 
360POKE 28006, one:CALL 28000:POKE 28006, two 
370CALL 28000:POKE 28006, 144:CALL 28000 
380FOR d=1 TO 70-(x/10):NEXT d, x:POKE 28006, 159 
390CALL 28000:FOR x=1 TO 50:GOSUB 1000:NEXT x 
400COLOR =INT(RND(1)*15)+1 
410FOR bitmap=1 TO 29: l=lt(bitmap) 
420FOR q=7 TO 0 STEP -1:IF l<bin(q) THEN 490 
430 l=l-bin(q) 
440IF fl=1 THEN COLOR =INT(RND(1)*15)+1 
450VLIN 4*(7-q)+2, 4*(7-q)+3 AT bitmap+4 
460IF fl=1 THEN COLOR =INT(RND(1)*15)+1 
470VLIN 4*(7-q)+4, 4*(7-q)+5 AT bitmap+4 
480GOSUB 1000 
490NEXT q, bitmap 
500FOR x=1 TO 30:POKE 28006, f(x) 
510CALL 28000:POKE 28006, s(x):CALL 28000 
520POKE 28006, 144:CALL 28000 
530FOR de=1 TO d(x)*200:NEXT de 
540POKE 28006, 159:CALL 28000:NEXT x 
550 fl= NOT fl:GOTO 330 
1000POKE 28006, 240:CALL 28000 
1010POKE 28006, 228:CALL 28000 
1020FOR de=1 TO 20:NEXT de 
1040POKE 28006, 255:CALL 28000:RETURN 
2000DATA 0,0,129,255,1,0,0 
2010DATA 0,224,160,161,255,1,0,0 
2020DATA 0,239,145,145,239,0,0,0 
2030DATA 0,224,160,161,255,1 
3000DATA 141,35,2,141,26,3,135,28,1,141,26,2,132,21,2 
3010DATA 142,23,3,133,25,1,142,23,2,132,21,1,142,23,1 
3020DATA 141,26,3,141,26,1,132,21,2,142,17,2,143,15,6 
3030DATA 143,15,2,142,17,3,132,21,1,132,21,2,141,26,2 
3040DATA 142,23,3,133,25,1,142,23,2,132,21,1,142,23,1 
3050DATA 141,26,3,142,31,1,142,31,2,141,35,2,141,26,6 
4000DATA 58,102,109,211,255,201
 
 
received?
 

, s(x):CALL 28000 
520POKE 28006, 144:CALL 28000 
530FOR de=1 TO d(x)*200:NEXT de 
540POKE 28006, 159:CALL 28000:NEXT 
