| • 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