• 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 <tos.h>
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 <tos.h>
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 <tos.h>
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 <tos.h>
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