LFRAME.PRG von Laurenz Prner, 2.1.92
======================================


   It's a _longframe to the top if you wanna rock'n'roll
   -----------------------------------------------------

Seit TOS 1.06 existiert die OS-Variable _longframe an Adresse
$059E. Sie ist zwei Bytes (ein Word) breit und fr die
Programmierer von Trap-Dispatchern von entscheidender Bedeutung.
Wenn es nmlich darum geht, Parameter, die auf dem Supervisor-
Stack liegen, zu identifizieren, dann mu dem Dispatcher bekannt
sein, ob die CPU bei der Abarbeitung der Trap-Instruction einen
68000er Exception-Frame oder einen erweiterten Stack-Frame
generiert hat. 68000er legen bei jeder Exception 12 Bytes,
bestehend aus Statusregister (2 Bytes) und Program Counter (4
Bytes) auf den Stack, jngere Prozessoren mindestens zwei weitere
Bytes, nmlich das sogenannte Format-Word. Anhand von _longframe
kann der Dispatcher also entscheiden, ob ein 68000er (_longframe
= 0) oder ein jngerer Prozessor ( _longframe != 0) Anwendung
findet.

Unter TOS 1.00, 1.02 und 1.04 enthielt _longframe immer den Wert
0, entsprechend >>68000er benutzt<<. Nun gibt es von einem
bekannten deutschen >>Magazin fr Computertechnik<<, das sich
geradezu traditionell dem TOS-Hacking widmet, eine 68020-
Austauschkarte fr den ST, dessen modifiziertes TOS 1.04
>>_longframe<< ignoriert. Fr Benutzer solch einer Karte haben
wir den >>_longframe-Setter<< geschrieben. Dieses Programm lst
eine >>Illegal Instruction<<-Exception aus und betrachtet
anschlieend den Stack-Frame. Je nachdem, ob ein 68000 oder ein
jngerer Prozessor Verwendung findet, setzt es das
>>_longframe<<-word oder lscht es.
