{ Mit der Routine TIMER wird auf die interne CP/M 3 Uhr zugegriffen. Diese Routine hier ist entstanden aus der Disassemblierung der Originaldatei SLIDER.COM. } procedure timer; var TIME1,TIME2 : record Sekunde, Minute, Stunde : byte; end; DAT : array[0..3] of byte; function binaer(wert:byte):byte; { BDOS Funktion 105 liefert Werte im BCD Format Diese Funktion wandelt sie um nach Binaer } begin binaer:=10*(wert div 16) + (wert and $0f); end; Begin {timer} {Zeit ueber BDOS Funktion 105} TIME1.Sekunde:=binaer(BDOS(105,addr(DAT[0]))); {Sekunden werden zurueckgegeben} TIME1.Minute :=binaer(DAT[3]); TIME1.Stunde :=binaer(DAT[2]); if (LaufZeit<0) then {Erster Aufruf - Werte initialisieren} begin TIME2:=TIME1; Sekunden:=0; Minuten:=0; Stunden:=0; LaufZeit:=0; end else {Folgeaufruf - Werte berechnen} begin Sekunden:=TIME1.Sekunde-TIME2.Sekunde; Minuten :=TIME1.Minute -TIME2.Minute; Stunden :=TIME1.Stunde -TIME2.Stunde; if (Sekunden<0) then begin Sekunden:=Sekunden+60; Minuten:=Minuten-1; end; if (Minuten<0) then begin Minuten:=Minuten+60; Stunden:=Stunden-1; end; if (Stunden<0) then Stunden:=Stunden+24; LaufZeit:=Sekunden+60*(Minuten+60*Stunden); end; End;