10 REM . SAVE LARMKLOC 20 REM  ALARM CLOCK  30 REM  40 REM  DAVID ANDERSSON <5201> 50 REM  60 REM  811122 70 REM  80 REM V[CKARKLOCKA MED VISARE. VID LARM STARTAR BANDSPELAREN. 90 REM ANPASSAD TILL CHECKSUM<>11273 1986-02-23. 100 REM INSTRUKT 110 REM ST[LLA KLOCKAN 120 REM ANGE TID OCH TRYCK CTRL-S 130 REM 140 REM ST[LLA LARMTID 150 REM ANGE TID OCH TRYCK A 160 REM 170 REM ST[NGA AV LARM 180 REM TRYCK SHIFT-$ 190 REM 200 REM VISARE 210 DIM L%(2%),V0%(2%),V%(2%) 220 DIM I$=1%,T$=8% 230 DIM I%(2%),A%(2%) 240 X%=65063% : B0%=PEEK(X%) 250 B0%=B0%+SWAP%(PEEK(X%+1%))-4000% 260 IF PEEK(65056%)+SWAP%(PEEK(65057%))+9%>B0% STOP 270 IF PEEK(B0%)-131% 310 280 IF PEEK(B0%+3602%)-131% 310 290 IF PEEK(B0%+3603%)-131% 310 300 IF PEEK(B0%+1%)=131% 400 310 ; 'Var_sn{ll_v{nta_22_sekunder_!!'; 320 FOR V%=0% TO 59% : V=V%*PI/30 : X=-COS(V) : Y=SIN(V)*.845 330 FOR I%=1% TO 30% : I=I% : POKE B0%+V%*60%+I%+I%,X*I+35.5,Y*I+41.5 : NEXT I% 340 IF V% AND 1% ; CHR$(8%,32%,8%); 350 NEXT V% 360 POKE B0%,131%,131% 370 POKE B0%+3602%,131%,131% 400 REM BILD MM 410 READ L%(0%),L%(1%),L%(2%) 420 DATA 30,24,18 430 ; CHR$(12%) : GOSUB 2000 440 FOR X%=1% TO 22% : ; CUR(X%,0%)CHR$(23%); : NEXT X% 450 FOR V%=1% TO 12% : V=PI*V%/6 : X=-COS(V) : Y=SIN(V) 460 READ X%,Y% : ; CUR(X%,Y%)V%CHR$(23%)CUR(X%,Y%)CHR$(1%); 470 SETDOT X*31+35.5,Y*26.9+41 : NEXT V% 480 SETDOT 35%,41% : ; CUR(0%,30%)CHR$(1%); 490 DATA 1,26,5,32,11,34,17,33,22,27,23,19,22,11,17,5,11,4,5,5,1,11,0,18 500 REM LOOP 510 IF PEEK(65013%) GOSUB 1000 520 GOSUB 900 530 IF V0%(0%)=V%(0%) 500 540 GOSUB 2100 : ; CUR(0%,0%)'('T$')'; 550 IF A0% IF V%(0%)=A%(0%) GOSUB 2200 560 FOR V%=0% TO 2% : IF V0%(V%)=V%(V%) 580 ELSE B%=B0%+V0%(V%)*60% 570 FOR I%=2% TO L%(V%)*2% STEP 2% : CLRDOT PEEK(B%+I%),PEEK(B%+I%+1%) : NEXT I% 580 B%=B0%+V%(V%)*60% : FOR I%=B%+2% TO L%(V%)*2%+B% STEP 2% : SETDOT PEEK(I%),PEEK(I%+1%) : NEXT I% 590 V0%(V%)=V%(V%) : NEXT V% : GOTO 500 900 REM READ 910 IF PEEK(65008%)<4% 910 920 Z=((PEEK(65008%) XOR 255%)+(PEEK(65009%) XOR 255%)*256+(PEEK(65010%) XOR 255%)*65536)/50 930 IF Z>=86400 Z=Z-86400 : GOSUB 1530 : GOTO 900 940 H%=Z/3600 : V%(2%)=Z/720 : Z=Z-H%*3600 : IF V%(2%)>59% V%(2%)=V%(2%)-60% 950 M%=Z/60 : V%(1%)=M% : S%=Z-M%*60% : V%(0%)=S% 960 RETURN 1000 REM KEY 1010 OUT 58%,INP(58%) AND 223%,6%,0% 1020 POKE 65013%,0% : I%=INP(56%) AND 127% : IF I%>96% I%=I%-32% 1030 I$=CHR$(I%) 1040 IF I$='$' A0%=0% : ; CUR(0%,31%)SPACE$(9%); : RETURN 1050 IF I$>='0' AND I$<='9' 1200 1060 IF I$='A' 1300 1070 IF I%=19% 1500 1080 IF I$=' ' OR I%=8% 2000 1090 RETURN 1200 REM SIFFRA 1210 I%=I%-48% : ; CUR(23%,F%); 1220 IF F%=0% IF I%<3% I%(2%)=I%*10% : ; I$; ELSE I%(2%)=0% : ; '0'; : F%=1% 1230 IF F%=1% IF I%<5% OR I%(2%)<20% I%(2%)=I%(2%)+I% : ; I$; 1240 IF F%=3% IF I%<6% I%(1%)=I%*10% : ; I$; ELSE I%(1%)=0% : F%=4% : ; '0'; 1250 IF F%=4% I%(1%)=I%(1%)+I% : ; I$; 1260 IF F%=6% IF I%<6% I%(0%)=I%*10% : ; I$; ELSE I%(0%)=0% : F%=7% : ; '0'; 1270 IF F%=7% I%(0%)=I%(0%)+I% : ; I$; 1280 IF F%<8% F%=F%+1% : IF F%=2% OR F%=5% 1280 1290 RETURN 1300 REM ALARM ON 1310 IF F%<6% OR F%=7% RETURN 1320 IF F%=6% I%(0%)=0% 1330 FOR X%=0% TO 2% : A%(X%)=I%(X%) : NEXT X% 1340 H%=A%(2%) : M%=A%(1%) : S%=A%(0%) : GOSUB 2100 : ; CUR(0%,31%)'A'T$; 1350 A0%=1% 1360 GOSUB 2000 : RETURN 1500 REM SET 1510 IF F%<8% RETURN 1520 Z=I%(2%)*3600+I%(1%)*60+I%(0%) 1530 Z=Z*50 1540 Z%=Z/65536 : Z= NOT Z-Z%*65536 1550 POKE 65008%,Z OR 3%,SWAP%(Z),Z% XOR 255% 1560 GOSUB 2000 : RETURN 2000 REM CLRINP 2010 F%=0% : ; CUR(23%,0%)' : : '; : RETURN 2100 REM HMS-T$ 2110 T$=RIGHT$(NUM$(H%+100%),3%)+':'+RIGHT$(NUM$(M%+100%),3%)+':'+RIGHT$(NUM$(S%+100%),3%) 2120 RETURN 2200 REM ALARM 2210 X%=H%*60%+M%-A%(2%)*60%-A%(1%) 2220 IF X%<0% OR X%>15% RETURN 2230 OUT 6%,5% 2240 OUT 58%,INP(58%) OR 32% 2250 RETURN