Calculating the day of the week

The Gregorian Calendar runs on a 400year cycle. Leap years are calculated with:
A leap year is a year wholly divided by 4
Unless it is wholly divided by 100, then it is not a leap year
Unless it is wholly divided by 400, then it is a leap year
So: 1600, 2000, 2400 are leap years, but 1900, 2100 etc are not.
Over 400 years there are 97 leap days, so the day of the week advances 497 times,
497/7 gives a remainder of 0, so over the 400year Gregorian cycle the day of the
week resets to the same day. This means that the day of the week can be calculated
by reducing the year to a 0399 offset within any 400year cycle.
The standard modification of Zeller's formula to calculate the day of the week is:
offset[]={7,3,2,5,0,3,5,1,4,6,2,4}
if (month < 3) then year=year1
day=(year + year/4  year/100 + year/400 + offset[month] + day) MOD 7


 Incrementing a calendar date

This code will increment a date, correctly rolling over from the last
day of a month to the first day of the next month, or the next year.


 Optimised *60 and *100

When manipulating clock times, you often need to multiply by 60 and 100, for
example centiseconds=((hours*60+minutes)*60+seconds)*100.
This is a small snippet of optimised code to do multiplication by 60 or 100.
There are 360000 = &057E40 centiseconds in a day, so this fits into a
3byte 24bit number.


 Divide into hrs/min/sec/cs

This is simple unoptimised code to divide a centisecond count into hours,
minutes, seconds, and centiseconds; the reverse of Times60.


