Aktualności: C64 Power - online od stycznia 2000 !

Autor Wątek: Wyznaczanie dnia tygodnia - algorytm  (Przeczytany 502 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline Kisiel

  • Level 7
  • *******
  • Wiadomości: 11447
  • Number 7 in all users competition...
    • http://wiki.projekt64.filety.pl/doku.php
Wyznaczanie dnia tygodnia - algorytm
« dnia: 07 Sierpnia 2014, 02:19 »
Witam,

j.w. potrzebuje wyznaczyć dzień tygodnia, może być coś w np. basicu.


idz wyprostowany wśród tych co idą na kolanach

...w przypadku checi zakupu UK1541,GA,MA,T8500,T7501 prosze o kontakt na Facebooku, haslo: UK1541....

Offline StaryMarabut

  • Level 6
  • ******
  • Wiadomości: 1794
  • Robię wszystkim dobrze *za pół ceny.
Wyznaczanie dnia tygodnia - algorytm
« Odpowiedź #1 dnia: 07 Sierpnia 2014, 02:40 »
Miałem na kasecie taki program.
Calendar to sie zwało, jak dobrze pamiętam. Niestety kasety z użytkami zagineły \"\"

Offline Gohanks

  • Level 3
  • ***
  • Wiadomości: 103
Wyznaczanie dnia tygodnia - algorytm
« Odpowiedź #2 dnia: 07 Sierpnia 2014, 05:26 »

Offline Kisiel

  • Level 7
  • *******
  • Wiadomości: 11447
  • Number 7 in all users competition...
    • http://wiki.projekt64.filety.pl/doku.php
Wyznaczanie dnia tygodnia - algorytm
« Odpowiedź #3 dnia: 07 Sierpnia 2014, 07:46 »
* This routine works for any date from 1900-03-01 to 2155-12-31.
* No range checking is done, so validate input before calling.
*
* I use the formula
*     Weekday = (day + offset[month] + year + year/4 + fudge) mod 7
* where the value of fudge depends on the century.
*
* Input: Y = year (0=1900, 1=1901, ..., 255=2155)
*        X = month (1=Jan, 2=Feb, ..., 12=Dec)
*        A = day (1 to 31)
*
* Output: Weekday in A (0=Sunday, 1=Monday, ..., 6=Saturday)

TMP      EQU $6          ; Temporary storage

By Paul Guertin (pg@sff.net), 18 August 2000.

WEEKDAY:
         CPX #3          ; Year starts in March to bypass
         BCS MARCH       ; leap year problem
         DEY             ; If Jan or Feb, decrement year
MARCH    EOR #$7F        ; Invert A so carry works right
         CPY #200        ; Carry will be 1 if 22nd century
         ADC MTAB-1,X    ; A is now day+month offset
         STA TMP
         TYA             ; Get the year
         JSR MOD7        ; Do a modulo to prevent overflow
         SBC TMP         ; Combine with day+month
         STA TMP
         TYA             ; Get the year again
         LSR             ; Divide it by 4
         LSR
         CLC             ; Add it to y+m+d and fall through
         ADC TMP
MOD7     ADC #7          ; Returns (A+3) modulo 7
         BCC MOD7        ; for A in 0..255
         RTS
MTAB     DB 1,5,6,3,1,5,3,0,4,2,6,4      ; Month offsets


Cool , dzięki.
idz wyprostowany wśród tych co idą na kolanach

...w przypadku checi zakupu UK1541,GA,MA,T8500,T7501 prosze o kontakt na Facebooku, haslo: UK1541....