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-File14.1.11.19 stackLoad TOS stackLoad aktiviert einen neuen CPU-Stack (A7). Dies ist dann nötig, wenn aus einem Mac-Kontext, bei dem ein beliebiger CPU-Stack aktiv ist, eine Routine im ATARI-Kontext aufgerufen werden soll, also, bevor ein Modus-Wechsel mit "modeAtari" erfolgt. Das Wechseln auf einen anderen Stack ist dann nötig, weil evtl. der Bereich, den A7 gerade benutzt, durch den Wechsel zum Atari-Modus ausgeblendet wird und es dann zu einem CPU-Stillstand käme (siehe auch Kap. "Interrupt-Handler unter MagiC Mac"). Anstatt einfach selbst den A7 azf den neuen Stack zu setzen, sollte 'stackLoad' benutzt werden. Diese Funktion tut im Grunde das selbe, jedoch informiert sie zusaetzlich das MacOS davon (durch Setzen weniger globaler Variablen). Damit wird erreicht, dass das MacOS waehrenddessen nicht den A7 periodisch überprüft. Denn sonst könnte es auf bestimmten MacOS-Versionen (vor 7.5 und wieder ab 7.5.3) zur Meldung eines Stack-Überlaufs durch das MacOS kommen, obwohl dies gar nicht der Fall ist. Falls Virtual Memory aktiviert ist, wird hiermit außerdem erreicht, daß dieser Stack-Bereich nicht ausgelagert werden kann, was sonst u.U. einen Rechnerstillstand zur Folge haben kann. Benutzung: In A0 ist ein Zeiger auf ein MemArea-Struktur (s.o.) zu übergeben. Darin muß der Zeiger auf den Beginn (niedrigste Adresse) des Stacks sowie seine Länge (beachte 'minStackSize'!) enthalten sein. Die Routine zerstört die Register A0 und A1 und setzt A7 auf den Wert von <MemArea.start+MemArea.length>.