•  Back 
  •  Typdefinitionen 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
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-File16.9.10  Memory-Control-Block (MCB)                                TOS

typedef struct
{
    int32_t mcb_magic;        /* 'ANDR' oder 'KROM' (letzter)    */
    int32_t mcb_len;          /* Nettolänge                      */
    int32_t mcb_owner;        /* Zeiger auf PD-Struktur          */
    int32_t mcb_prev;         /* vorh. Block oder NULL           */
    int8_t mcb_data[0];
} MCB;

Hinweis: Die Komponente mcb_magic besitzt den Wert 'KROM', falls kein 
weiterer MCB folgt, und anderenfalls den Wert 'ANDR'. Im letzteren 
Fall liegt der nächste MCB mcb_len Bytes hinter dem aktuellen MCB. Die 
Liste ist per mcb_prev rückwärts verkettet, was viele Operationen 
erheblich beschleunigt.

Bei allen Speicheroperationen wird immer die Komponente mcb_magic 
überprüft, und das System bei einem Fehler sofort angehalten. Beim 
Anhalten aufgrund eines Speicherfehlers werden die Adresse des 
fehlerhaften MCB sowie die Daten (4 Langworte) ausgegeben. 
Anschließend wird man gefragt, auf

welches Laufwerk man einen Systemauszug (core dump) speichern möchte. 
Gibt man ein gültiges Laufwerk an, so wird der gesamte ST-Speicher von 
0 bis phystop auf das Wurzelverzeichnis des angegebenen Laufwerks

geschrieben, und zwar unter dem Namen "_sys_". Die Datei kann 
natürlich je nach ST-Modell bis zu 4 oder gar 16 MB lang werden.

Speicherresidente Programme (beenden sich über Ptermres) arbeiten 
jetzt im Gegensatz zu früher einfach nur so, daß die Blöcke nicht 
freigegeben werden, alle MCBs bleiben intakt und werden auch weiterhin 
benutzt (jedesmal, wenn man in die Menüleiste klickt, wird der freie 
Speicher ausgegeben, dazu wird die gesamte Liste einmal durchlaufen 
und dabei alle MCBs überprüft). Wer möchte, kann also 
speicherresidente Programme (oder auch Teile davon) nachträglich 
freigeben.

Querverweis: GEMDOS   MagiC   MD   Speicherverwaltung