Here's the solution to item 2 from my previous post yesterday (as it's the easiest to complete). It's the inverse of the CalculateDateFromLinear subroutine.
This subroutine takes YEAR, MONTH and DAY and returns with Linear DAYS starting with DAYS=0 for 01/01/2000. Note, it's only good for 100 years as it does NOT account for year 2100 leap anomaly. I'm reusing variables and EEPROM presets previously defined in your program.
Code:
'
' Subroutine Calculates Linear Days from Date
' -------------------------------------------
CalculateLinearFromDate:
DAYS=0
For CounterA=0 to YEAR
TempA=CounterA//4
If CounterA < YEAR then
TempB=365
If TempA=0 then TempB=TempB+1
DAYS=DAYS+TempB
endif
Next CounterA
IF MONTH > 1 then
For CounterA=1 to MONTH-1
Read (CounterA+20),ByteA
If TempA=0 then
If CounterA=2 then ByteA=ByteA+1
endif
DAYS=DAYS+ByteA
Next CounterA
endif
DAYS=DAYS+DAY-1
Return
Oh and in this routine, my MONTHS start counting from 1, so CounterA+20 is valid here!
Bookmarks