HomeXBIOSCT60-XBIOS-ErweiterungDruckerfunktionen

4.9 Datum, Uhrzeit und Zeitgeber

Gettime Datum und Uhrzeit ermitteln.
NVMaccess Konfiguration des NVM der Echtzeituhr.
Settime Datum und Uhrzeit einstellen.
Xbtimer Systemzeitgeber initialisieren.

4.9.1 Gettime

Name: »get time« - Zeit ermitteln.
Xbiosnummer: 23
Deklaration: uint32_t Gettime( void );
Beschreibung: Die XBIOS-Routine Gettime ermittelt Datum und Uhrzeit aus der Hardware-Uhr des Rechners.
Ergebnis: Die Funktion liefert Datum und Uhrzeit, welche wie folgt codiert sind:

Bit Beschreibung
0-4 Sekunden in Einheiten von 2 (0-29)
5-10 Minuten (0-59)
11-15 Stunden (0-23)
16-20 Tag im Monat (1-31)
21-24 Monat (1-12)
25-31 Jahr (0-119, 0 steht für 1980)
Verfügbar: Alle TOS Versionen.
Gruppe: Datum, Uhrzeit und Zeitgeber
Querverweis: Binding   Settime

4.9.1.1 Bindings für Gettime

C: #include

uint32_t Gettime( void );
Assembler:
move.w    #23,-(sp)    ; Offset 0
trap      #14          ; XBIOS aufrufen
addq.l    #2,sp        ; Stack korrigieren

4.9.2 NVMaccess

Name: »NVMacess« - Konfiguration des "non volatile memory" der Echtzeituhr.
Xbiosnummer: 46
Deklaration: int16_t NVMaccess( int16_t op, int16_t start, int16_t count, int8_t *buffer );
Beschreibung: Die XBIOS-Routine NVMaccess ermöglicht die Konfiguration des NVM der Echtzeituhr. Diese verfügt über 50 Bytes nicht-flüchtiges RAM, wobei die letzten zwei Bytes als Prüfsumme verwendet werden. Es gilt:

Parameter Bedeutung
op 0 = NVM auslesen und Prüfsumme checken
  1 = NVM beschreiben, Prüfsumme checken
      und neu setzen
  2 = NVM initialisieren und Prüfsumme setzen
   
start Startbyte
count Anzahl der zu übertragenden Bytes
buffer Puffer aus bzw. in den geschrieben wird
Ergebnis: Die Funktion liefert den Wert 0, wenn kein Fehler aufgetreten ist. Ein Wert von -5 bedeutet, daß die Argumente nicht im erlaubten Bereich waren. Ein Rückgabewert von -12 kennzeichnet eine nicht konsistente Prüfsumme.
Verfügbar: Atari TT (TOS 3.xx) und Falcon (TOS 4.xx)
Gruppe: Datum, Uhrzeit und Zeitgeber
Querverweis Binding   Belegung des NVM

4.9.2.1 Bindings für NVMaccess

C: #include

int16_t NVMaccess( int16_t op, int16_t start, int16_t count, int8_t *buffer );
Assembler:
pea       buffer       ; Offset 8
move.w    count,-(sp)  ; Offset 6
move.w    start,-(sp)  ; Offset 4
move.w    op,-(sp)     ; Offset 2
move.w    #46,-(sp)    ; Offset 0
trap      #14          ; XBIOS aufrufen
lea       $C(sp),sp    ; Stack korrigieren

4.9.3 Settime

Name: »set time« - Zeit einstellen.
Xbiosnummer: 22
Deklaration: void Settime( uint32_t time );
Beschreibung: Die XBIOS-Routine Settime stellt Datum und Uhrzeit neu ein. Der 32-Bit Parameter time wird wie folgt aufgesplittet:

time Bedeutung
0-4 Sekunden in Einheiten von 2 (0-29)
5-10 Minuten (0-59)
11-15 Stunden (0-23)
16-20 Tag im Monat (1-31)
21-24 Monat (1-12)
25-31 Jahr (1980 subtrahieren)
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Alle TOS Versionen.
Gruppe: Datum, Uhrzeit und Zeitgeber
Querverweis: Binding   Gettime

4.9.3.1 Bindings für Settime

C: #include

void Settime( uint32_t time );
Assembler:
move.l    time,-(sp)   ; Offset 2
move.w    #22,-(sp)    ; Offset 0
trap      #14          ; XBIOS aufrufen
addq.l    #6,sp        ; Stack korrigieren

4.9.4 Xbtimer

Name: »timer init« - initialisiert die Zeitgeber im MFP-Chip.
Xbiosnummer: 31
Deklaration: void Xbtimer( int16_t timer, int16_t control, int16_t data, void(*vector)( ) );
Beschreibung: Die XBIOS-Routine Xbtimer initialisiert einen von vier Zeitgebern (A-D) im Multifunktionsperipheriechip 68901. Es gilt:

Parameter Bedeutung
timer Nummer des Timers:
  0 = A (für eigene Programme nutzbar)
  1 = B (Horizontal Blank Interrupt)
  2 = C (Systemtimer (200 Hz))
  3 = D (Generator für die Baudraten)
   
control Wert für entsprechende Timer-Register
data Wert für entsprechende Timer-Register
vector Zeiger auf Interrupt-Routine
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Alle TOS Versionen.
Gruppe: Datum, Uhrzeit und Zeitgeber
Querverweis: Binding

4.9.4.1 Bindings für Xbtimer

C: #include

void Xbtimer( int16_t timer, int16_t control, int16_t data, void(*vector)( ) );
Assembler:
pea       vector        ; Offset 8
move.w    data,-(sp)    ; Offset 6
move.w    control,-(sp) ; Offset 4
move.w    timer,-(sp)   ; Offset 2
move.w    #31,-(sp)     ; Offset 0
trap      #14           ; XBIOS aufrufen
lea       $C(sp),sp     ; Stack korrigieren

4.9.5 Die Belegung des NVM der Echtzeit-Uhr

Die Echtzeit-Uhr im Atari-TT und Falcon030 verfügt über 50 Bytes nichtflüchtiges RAM, welches von Programmen zu Konfigurationszwecken benutzt werden kann. Es gilt folgende Belegung:

typedef struct
{
  unsigned int bootpref;
  char reserved[4];
  unsigned char language;
  unsigned char keyboard;
  unsigned char datetime;
  char separator;
  unsigned char bootdelay;
  char reserved2[3];
  unsigned int vmode;
  unsigned char scsi;
} NVM;
bootpref Bootpräferenz:
0x00 = keine Präferenz
0x08 = MagiC
0x10 = Linux
0x20 = NetBSD
0x40 = UNIX wird gebootet
0x80 = TOS wird gebootet
language Landessprache:
0 = Englisch
1 = Deutsch
2 = Französisch
3 = reserviert
4 = Spanisch
5 = Italienisch
keyboard Layout der Tastatur:
0 = USA
1 = Deutschland
2 = Frankreich
3 = England
4 = Spanien
5 = Italien
6 = Schweden
7 = (französische) Schweiz
8 = (deutsche) Schweiz
datetime Formatierung des Datum:
Bit 0..3 0 = Format "MM-DD-YY" (Monat, Tag, Jahr)
1 = Format "DD-MM-YY" (Tag, Monat, Jahr)
2 = Format "YY-MM-DD" (Jahr, Monat, Tag)
3 = Format "YY-DD-MM" (Jahr, Tag, Monat)
Bit 4..7 0 = 12-Stunden Darstellung
1 = 24-Stunden Darstellung
separator ASCII-Wert des Zeichens, das als Trenner für die Datumsangaben dienen soll.
bootdelay Bootverzögerung
vmode Videomode
scsi
Bit 0..2 SCSI-ID (0-7)
Bit 3..6 0, reserviert
Bit 7 Flag für Bus-Arbitration.
Es gilt:
0 = Arbitration ein
1 = Arbitration aus

Alle weiteren Bytes sind z.Zt. nicht dokumentiert. Wie man sieht, läßt sich insbesondere die SCSI-ID von TT oder Falcon über das NVM festlegen.

Beim Milan hat das NVM eine größe von 224 Bytes.

Die folgende Struktur gilt nur für TOS 4.08 (2003-03-09) und Bootblock 1.02!

typedef struct
{
  unsigned int bootpref;
  char reserved[4];
  unsigned char language;
  unsigned char keyboard;
  unsigned char datetime;
  char separator;
  unsigned char bootdelay;
  unsigned char ide_drives;
  unsigned char scsi_drives;
  char reserved2;
  unsigned int vmode;
  unsigned char scsi;
  char reserved3[31];
  unsigned char memory;
  char INT1_2;
  char INT3_4;
  char reserved4[173];
} NVM_Milan;
memory
Bit 0..1 0 = 16MB ST-RAM
1 =  4MB ST-RAM
2 =  2MB ST-RAM
Bit 2 ROMPORT-Emulation

Querverweis: NVMaccess   XHDI-Spezifikation


HomeXBIOSCT60-XBIOS-ErweiterungDruckerfunktionen