> Calendar : ctrl%32:X%=ctrl%:Y%=X%256 ( Needs pc8 font selected 2: <"Year: "y% F"Start Month: "sm% P"End Month: "em% Z: d m%=sm% em% n!firstday%=DayOfWeek(1,m%,y%) x>numdays%=DaysSince(1,1+(m% (m%<12)),y%-(m%=12),1,m%,y%) #month$=month(m%)+" "+d0(y%,4) len%=39-month$/2  ""77,"")"" - ""(len%);month$;(77-month$-len%)""  ""38,"")""38,"")""  day%=1 16  ""38," ")""38," ")"" ; ""d(day%,2)" "day((firstday%+day%-1)7);(32);""; ] day%+16<=numdays%: d(day%+16,2)" "day((firstday%+day%+16-1)7);(32)"" (38)""  ""38," ")""38," ")"" ) day%<16: ""38,"")""38,"")""   ""38,"")""38,"")""   : ": ,ݤmonth(A%):="JanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecember","010816212629333743525967",2*A%-1,2),"785534469788",A%,1)) 6: @<ݤday(A%):A%=A%7:="SatSunMonTueWedThuFriSat",A%*3+1,3) J: T. Return day of week, 1=Sunday, 7=Saturday ^#ݤDayOfWeek(d%,m%,y%):y%=y%400 hq=(y%*365.25+m%*30+d%+"120112234455",m%,1)+((y%4)=0)-((y%-1)100)-(m%>2((y%4)=0(y%100)<>0y%=0))+3)7+1 r: |K Convert time and date to 5-byte centi-second count since 1st Jan 1900 @ConvDate(mem%,d%,m%,y%,hr%,mn%,sc%,cs%):y%<100:y%=y%+1900  y%=y%400 qd%=y%*365.25+m%*30+d%+"120112234455",m%,1)+((y%4)=0)-((y%-1)100)-(m%>2((y%4)=0(y%100)<>0y%=0))+36493 d%>146096:d%=d%-146097 =d%=d%*&41EB:mem%!1=d%+d%:d%=((hr%*60+mn%)*60+sc%)*100+cs% #?mem%=d%:mem%!1=mem%!1+d%256: : - Return number of days since a past date 0ݤDaysSince(td%,tm%,ty%,pd%,pm%,py%): past% 6ConvDate(ctrl%,pd%,pm%,py%,0,0,0,0):past%=ctrl%!1 ?ConvDate(ctrl%,td%,tm%,ty%,0,0,0,0):=(ctrl%!1-past%)&83D6 : # Hexadecimal padded with zeros #ݤh0(A%,N%)="0000000"+~A%,N%) :  Decimal padded with zeros &#ݤd0(A%,N%)="00000000"+A%,N%) 0: :$ Hexadecimal padded with spaces D$ݤh(A%,N%)=" "+~A%,N%) N: X Decimal padded with spaces b#ݤd(A%,N%)=" "+A%,N%) l: