Topic : TOS - das Betriebssystem Author : Version : tos.hyp (5. März 2013) Subject : Programmieren/Atari Nodes : 3001 Index Size : 93602 HCP-Version : 5 Compiled on : Atari @charset : atarist @lang : @default : Titel @help : @options : +g -i -s +x +zz -t4 @width : 70 View Ref-File5.20.15 DOSVARS TOS typedef struct { int8_t *in_dos; /* Adresse der DOS- Semaphore */ int16_t *dos_time; /* Adresse der DOS- Zeit */ int16_t *dos_date; /* Adresse des DOS- Datums */ int32_t res1; /* */ int32_t res2; /* */ int32_t res3; /* ist 0L */ VOID *act_pd; /* Laufendes Programm */ int32_t res4; /* */ int16_t res5; /* */ VOID *res6; /* */ VOID *res7; /* interne DOS- Speicherliste */ VOID (*resv_intmem)(); /* DOS- Speicher erweitern */ int32_t (*etv_critic)(); /* etv_critic des GEMDOS */ int8_t * ((*err_to_str)(int8_t e)); /* Umrechnung Code->Klartext*/ int32_t res8; /* */ int32_t res9; /* */ int32_t res10; /* */ } DOSVARS; Hinweis: Diese Variablen sind READ-ONLY ! Mit Hilfe der Funktion resv_intmem läßt sich ähnlich wie mit FOLDRnnnn Speicher für die interne Speicherverwaltung reservieren. Im Gegensatz zu TOS wird diese jedoch deutlich weniger belastet, so daß ein Erweitern i.a. nicht notwendig ist. Muß der Speicher erweitert werden, was auch in ADDMEM geschieht, übergibt man der Funktion resv_intmem in Register A0 die Adresse, und in Register D0 die Länge des zu reservierenden Speicherblocks. Der Prototyp für den Event-Critic-Handler lautet: int32_t etv_critic (int16_t errcode, int16_t drvnr) Man beachte, daß die Funktion die Argumente auf dem Stack erwartet, und daher in Pure-C als cdecl deklariert werden muß. Die Funktion err_to_str erwartet in Register D0 einen TOS-Fehlercode, und gibt in den Registern D0 und A0 einen Zeiger auf die beschreibende Zeichenkette zurück. Bei einem ungültigen Fehlercode erhält man in D0 eine Null, und in A0 einen Zeiger auf die Zeichenkette 'TOS-Fehler'. Aus der Sicht von KAOS 1.4.2 sieht die Struktur folgendermaßen aus: typedef struct { int8_t *in_dos; /* Adresse der DOS- Semaphore */ int16_t *dos_time; /* Adresse der DOS- Zeit */ int16_t *dos_date; /* Adresse des DOS- Datums */ int32_t dos_stack; /* Stack für DOS selbst */ int32_t pgm_superset; /* Benutzerpgm.-Sup.stack */ MD *menlist[3]; /* Adresse der 3 MD-Listen */ VOID *act_pd; /* Laufendes Programm */ FCB *fcbx; /* Dateien */ int16_t fcbn; /* Länge von fcbx[] */ DMD *dmdx; /* Zeiger auf 16 DMDs */ IMB *imbx; /* interne DOS- Speicherliste */ VOID (*resv_intmem)(); /* DOS- Speicher erweitern */ int32_t (*etv_critic)(); /* etv_critic des GEMDOS */ int8_t * ((*err_to_str)(int8_t e)); /* Umrechnung Code->Klartext */ } DOSVARS; Querverweis: AESVARS Cookie von MagiC Sconfig