LFRAME.PRG von Laurenz Pržner, 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 fr die Programmierer von Trap-Dispatchern von entscheidender Bedeutung. Wenn es n„mlich 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, jngere Prozessoren mindestens zwei weitere Bytes, n„mlich das sogenannte Format-Word. Anhand von _longframe kann der Dispatcher also entscheiden, ob ein 68000er (_longframe = 0) oder ein jngerer 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 fr Computertechnik<<, das sich geradezu traditionell dem TOS-Hacking widmet, eine 68020- Austauschkarte fr den ST, dessen modifiziertes TOS 1.04 >>_longframe<< ignoriert. Fr Benutzer solch einer Karte haben wir den >>_longframe-Setter<< geschrieben. Dieses Programm l”st eine >>Illegal Instruction<<-Exception aus und betrachtet anschliežend den Stack-Frame. Je nachdem, ob ein 68000 oder ein jngerer Prozessor Verwendung findet, setzt es das >>_longframe<<-word oder l”scht es.