• Gettime | Datum und Uhrzeit ermitteln. |
• NVMaccess | Konfiguration des NVM der Echtzeituhr. |
• Settime | Datum und Uhrzeit einstellen. |
• Xbtimer | Systemzeitgeber initialisieren. |
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:
| ||||||||||||||
Verfügbar: | Alle TOS Versionen. | ||||||||||||||
Gruppe: | Datum, Uhrzeit und Zeitgeber | ||||||||||||||
Querverweis: | Binding Settime |
C: | #include uint32_t Gettime( void ); |
Assembler: | move.w #23,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #2,sp ; Stack korrigieren |
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:
| ||||||||||||||||||
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 |
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 |
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:
| ||||||||||||||
Ergebnis: | Die Funktion liefert kein Ergebnis. | ||||||||||||||
Verfügbar: | Alle TOS Versionen. | ||||||||||||||
Gruppe: | Datum, Uhrzeit und Zeitgeber | ||||||||||||||
Querverweis: | Binding Gettime |
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 |
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:
| ||||||||||||||||||||
Ergebnis: | Die Funktion liefert kein Ergebnis. | ||||||||||||||||||||
Verfügbar: | Alle TOS Versionen. | ||||||||||||||||||||
Gruppe: | Datum, Uhrzeit und Zeitgeber | ||||||||||||||||||||
Querverweis: | Binding |
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 |
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:
| ||||||
separator | ASCII-Wert des Zeichens, das als Trenner für die Datumsangaben dienen soll. | ||||||
bootdelay | Bootverzögerung | ||||||
vmode | Videomode
| ||||||
scsi |
|
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 |
|
Querverweis: NVMaccess XHDI-Spezifikation