1REM +++++++++++++++++++++++++++++++ 2REM ! Program .... LARMKLOC.BAS 3REM ! Utg}va 81-11-22 4REM ! av David Andersson <5201> 5REM ! Minne 16 Kbytes 6REM ! Screening TES 7REM +++++++++++++++++++++++++++++++ 8REM 9REM Analog-ur med alarm 10REM 100;CHR$(12%)" INSTRUKTIONER":;:; 110;"ST[LLA KLOCKAN:ange tid och tryck CTRL-S":; 140;"ST[LLA LARMTID:ange tid och tryck A":;:; 170;"ST[NGA AV LARM: tryck SHIFT-$":;CUR(23%,30%)"RETURN";:GETG$:; 190REM 200REM VISARE 210DIML%(2%),V0%(2%),V%(2%) 220DIMI$=1%,T$=8% 230DIMI%(2%),A%(2%) 240X%=65063%:B0%=PEEK(X%) 250B0%=B0%+SWAP%(PEEK(X%+1%))-4000% 260IFPEEK(65056%)+SWAP%(PEEK(65057%))+9%>B0%STOP 270IFPEEK(B0%)-131%310 280IFPEEK(B0%+3602%)-131%310 290IFPEEK(B0%+3603%)-131%310 300IFPEEK(B0%+1%)=131%400 310;'Var_sn{ll_v{nta_22_sekunder_!!'; 320FORV%=0%TO59%:V=V%*PI/30:X=-COS(V):Y=SIN(V)*.845 330FORI%=1%TO30%:I=I%:POKEB0%+V%*60%+I%+I%,X*I+35.5,Y*I+41.5:NEXTI% 340IFV%AND1%;CHR$(8%,32%,8%); 350NEXTV% 360POKEB0%,131%,131% 370POKEB0%+3602%,131%,131% 400REM BILD MM 410READL%(0%),L%(1%),L%(2%) 420DATA30,24,18 430;CHR$(12%):GOSUB2000 440FORX%=1%TO22%:;CUR(X%,0%)CHR$(23%);:NEXTX% 450FORV%=1%TO12%:V=PI*V%/6:X=-COS(V):Y=SIN(V) 460READX%,Y%:;CUR(X%,Y%)V%CHR$(23%)CUR(X%,Y%)CHR$(1%); 470SETDOTX*31+35.5,Y*26.9+41:NEXTV% 480SETDOT35%,41%:;CUR(0%,30%)CHR$(1%); 490DATA1,26,5,32,11,34,17,33,22,27,23,19,22,11,17,5,11,4,5,5,1,11,0,18 500REM LOOP 510IFPEEK(65013%)GOSUB1000 520GOSUB900 530IFV0%(0%)=V%(0%)500 540GOSUB2100:;CUR(0%,0%)'('T$')'; 550IFA0%IFV%(0%)=A%(0%)GOSUB2200 560FORV%=0%TO2%:IFV0%(V%)=V%(V%)580ELSEB%=B0%+V0%(V%)*60% 570FORI%=2%TOL%(V%)*2%STEP2%:CLRDOTPEEK(B%+I%),PEEK(B%+I%+1%):NEXTI% 580B%=B0%+V%(V%)*60%:FORI%=B%+2%TOL%(V%)*2%+B%STEP2%:SETDOTPEEK(I%),PEEK(I%+1%):NEXTI% 590V0%(V%)=V%(V%):NEXTV%:GOTO500 900REM READ 910IFPEEK(65008%)<4%910 920Z=((PEEK(65008%)XOR255%)+(PEEK(65009%)XOR255%)*256+(PEEK(65010%)XOR255%)*65536)/50 930IFZ>=86400Z=Z-86400:GOSUB1530:GOTO900 940H%=Z/3600:V%(2%)=Z/720:Z=Z-H%*3600:IFV%(2%)>59%V%(2%)=V%(2%)-60% 950M%=Z/60:V%(1%)=M%:S%=Z-M%*60%:V%(0%)=S% 960RETURN 1000REM KEY 1010OUT58%,INP(58%)AND223% 1020POKE65013%,0%:I%=INP(56%)AND127%:IFI%>96%I%=I%-32% 1030I$=CHR$(I%) 1040IFI$='$'A0%=0%:;CUR(0%,31%)SPACE$(9%);:RETURN 1050IFI$>='0'ANDI$<='9'1200 1060IFI$='A'1300 1070IFI%=19%1500 1080IFI$=' 'ORI%=8%2000 1090RETURN 1200REM SIFFRA 1210I%=I%-48%:;CUR(23%,F%); 1220IFF%=0%IFI%<3%I%(2%)=I%*10%:;I$;ELSEI%(2%)=0%:;'0';:F%=1% 1230IFF%=1%IFI%<5%ORI%(2%)<20%I%(2%)=I%(2%)+I%:;I$; 1240IFF%=3%IFI%<6%I%(1%)=I%*10%:;I$;ELSEI%(1%)=0%:F%=4%:;'0'; 1250IFF%=4%I%(1%)=I%(1%)+I%:;I$; 1260IFF%=6%IFI%<6%I%(0%)=I%*10%:;I$;ELSEI%(0%)=0%:F%=7%:;'0'; 1270IFF%=7%I%(0%)=I%(0%)+I%:;I$; 1280IFF%<8%F%=F%+1%:IFF%=2%ORF%=5%1280 1290RETURN 1300REM ALARM ON 1310IFF%<6%ORF%=7%RETURN 1320IFF%=6%I%(0%)=0% 1330FORX%=0%TO2%:A%(X%)=I%(X%):NEXTX% 1340H%=A%(2%):M%=A%(1%):S%=A%(0%):GOSUB2100:;CUR(0%,31%)'A'T$; 1350A0%=1% 1360GOSUB2000:RETURN 1500REM SET 1510IFF%<8%RETURN 1520Z=I%(2%)*3600+I%(1%)*60+I%(0%) 1530Z=Z*50 1540Z%=Z/65536:Z=NOTZ-Z%*65536 1550POKE65008%,ZOR3%,SWAP%(Z),Z%XOR255% 1560GOSUB2000:RETURN 2000REM CLRINP 2010F%=0%:;CUR(23%,0%)' : : ';:RETURN 2100REM HMS-T$ 2110T$=RIGHT$(NUM$(H%+100%),3%)+':'+RIGHT$(NUM$(M%+100%),3%)+':'+RIGHT$(NUM$(S%+100%),3%) 2120RETURN 2200REM ALARM 2210X%=H%*60%+M%-A%(2%)*60%-A%(1%) 2220IFX%<0%ORX%>15%RETURN 2230OUT6%,5% 2240OUT58%,INP(58%)OR32% 2250RETURN