L LB 0
T #Jahr
L LB 1
T #Monat
L LB 2
T #Tag
L LB 3
T #Stunde
L LB 7 // Low-Byte = Wochentag
L W#16#F
UW
T #Wochentag
// Monat <März & >Oktober ?
L #Monat
L 3
<I
= #HM1
TAK
L W#16#10 // 10 hex = 10 BCD
>I
O #HM1
SPB Wi // Wi = Winter
// Monat >März & <Oktober ?
L #Monat
L 3
>I
= #HM1
TAK
L W#16#10
<I
U #HM1
SPB So // So = Sommer
// Ist März?
L #Monat
L 3
==I
SPBN Okt
// --------------- Sommerzeit-Umstellung ---------------
// Es ist März! Ist es später als der 24.März?
L #Tag
L W#16#24 //24 hex = 24 BCD
>I
SPBN Wi
// Es ist später als der 24.März! Kommt noch ein Sonntag?
TAK
L #Wochentag
-I
L W#16#24
<I
SPB Wi
// Es ist entweder der letzte So. im März oder danach!
L #Wochentag
L 1 // Sonntag?
==I
SPBN So
// Ist es 3 Uhr oder später ?
L #Stunde
L 3
>=I
SPB So
// Ist es 2 Uhr (nur Stunde)?
TAK
L 2
==I
SPBN Wi
// Aktuelle Zeit +1h!
TAK
INC 1
T LB 3 // LokalByte 3 = Stunde
S #UhrStellen
SPA So
// --------------- Winterzeit-Umstellung ---------------
// Es ist Oktober! Ist es später als der 24.?
Okt: L #Tag
L W#16#24 // 24 hex = 24 BCD
>I
SPBN So
// Es ist später als der 24.Oktober! Kommt noch ein Sonntag?
TAK
BTI
L #Wochentag
-I
L 24
<I
SPB So
// Es ist entweder der letzte So. im Oktober oder danach!
L #Wochentag
L 1 // Sonntag?
==I
SPBN Wi
// Ist es vor 2 Uhr (nur Stunde)?
L #Stunde
L 2
<I
SPB So
// Steht #SZ noch auf Sommerzeit?
U #SZ
SPBN Wi
// Ist es 3 Uhr oder später?
L #Stunde
L 3
>=I
SPBN So
// Aktuelle Zeit -1h!
TAK
DEC 1
T LB 3 // LokalByte 3 = Stunde
S #UhrStellen
SPA Wi
// -----------------------------------------------------
So: S #SZ
SPA Uhr
Wi: R #SZ
Uhr: NOP 0