10 REM > Times 1.01 20 REM Various time and date functions 30 REM 24-09-96 JGH 40 : 50 MODE7 60 DIM ctrl% 30,data% 80 70 REM Read time string on any machine 80 PRINT"The time and date is";:A$=FNtime:IF A$="":PRINT" not set"' ELSE PRINT":"'A$' 90 : 100 REM Read date as numbers 110 d%=FNdate:m%=(d%AND&FF00)DIV256 120 y%=(d%AND&FFFF0000)DIV65536 130 d%=d%AND&FF 140 : 150 REM Find day of week 160 day%=FNDayOfWeek(d%,m%,y%) 170 day$=MID$("SunMonTueWedThuFriSat",day%*3-2,3) 180 PRINT"The date is: ";day$;", ";d%;"/";m%;"/";y% 190 IFd%=0 OR m%=0:PRINTSPC13"Date not set" 200 PRINT 210 : 220 REM Calculate days since past event 230 PRINT"It is ";FNDaysSince(d%,m%,y%,7,1,1969);" days since 1/7/1969." 240 PRINT"There are ";FNDaysSince(1,1,2001,d%,m%,y%);" days to the next century." 250 : 260 END 270 : 280 : 290 : 300 REM Time & Date functions from HADFS Reference Manual 310 REM J.G.Harston 1996 320 : 330 REM Return Real-Time-Clock string, or null if no clock available 340 DEFFNtime:LOCAL A%,X%,Y%:X%=ctrl%:Y%=X%DIV256:A%=14:?X%=0:CALL &FFF1 350 IF?X%:X%?24=13:=$X% ELSE ="" 360 : 370 REM Return Real-Time-Clock date, or zero if no clock available 380 DEFFNdate:LOCAL A%,X%,Y%:X%=ctrl%:Y%=X%DIV256:A%=14:?X%=1:CALL &FFF1 390 =VALSTR$~X%?2+256*VALSTR$~X%?1+65536*(1900+VALSTR$~?X%-100*(?X%<&50)) 400 : 410 : 420 REM Return day of week, 1=Sunday, 7=Saturday 430 DEFFNDayOfWeek(d%,m%,y%):IFy%<100:y%=y%+1900 440 y%=y%MOD400 450 =(y%*365.25+m%*30+d%+VALMID$("120112234455",m%,1)+((y%MOD4)=0)-((y%-1)DIV100)-(m%>2AND((y%MOD4)=0AND(y%MOD100)<>0ORy%=0))+3)MOD7+1 460 : 470 REM Convert time and date to 5-byte centi-second count since 1st Jan 1900 480 DEFPROCConvDate(mem%,d%,m%,y%,hr%,mn%,sc%,cs%):IFy%<100:y%=y%+1900 490 y%=y%MOD400:d%=y%*365.25+m%*30+d%+VALMID$("120112234455",m%,1)+((y%MOD4)=0)-((y%-1)DIV100)-(m%>2AND((y%MOD4)=0AND(y%MOD100)<>0ORy%=0))+36493:IFd%>146096:d%=d%-146097 500 d%=d%*&41EB:mem%!1=d%+d%:d%=((hr%*60+mn%)*60+sc%)*100+cs% 510 ?mem%=d%:mem%!1=mem%!1+d%DIV256:ENDPROC 520 : 530 REM Return number of days since a past date 540 DEFFNDaysSince(td%,tm%,ty%,pd%,pm%,py%):LOCAL past% 550 PROCConvDate(ctrl%,pd%,pm%,py%,0,0,0,0):past%=ctrl%!1 560 PROCConvDate(ctrl%,td%,tm%,ty%,0,0,0,0):=(ctrl%!1-past%)DIV&83D6 570 :