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-File8.22.26 PARMBLK TOS typedef struct { OBJECT *pb_tree; /* Zeiger auf den Objektbaum */ int16_t pb_obj; /* Nummer des Objekts */ int16_t pb_prevstate; /* vorheriger Objektstatus */ int16_t pb_currstate; /* neuer Objektstatus */ int16_t pb_x; /* x-Position des Objektes */ int16_t pb_y; /* y-Position des Objektes */ int16_t pb_w; /* Breite des Objektes */ int16_t pb_h; /* Höhe des Objektes */ int16_t pb_xc; /* x-Position des Clipping-Bereichs */ int16_t pb_yc; /* y-Position des Clipping-Bereichs */ int16_t pb_wc; /* Breite des Clipping-Bereichs */ int16_t pb_hc; /* Höhe des Clipping-Bereichs */ int32_t pb_parm; /* Parameter der USERBLK-Struktur */ } PARMBLK; Hinweis: Das Objekt muß nur neu gezeichnet werden, wenn alter und neuer Status identisch sind; anderenfalls reicht ein 'Update' des Objektbaums aus. Ferner sollten folgende Punkte beachtet werden: ∙ die eigene Funktion muß im Datenregister d0 dem AES zurückliefern, welche Aspekte des Objektstatus noch aktualisiert werden müssen. Damit ist es nicht unbedingt nötig, in der eigenen Ausgabefunktion den Code zum invertieren des Objektes auszuprogrammieren. Im allgemeinen wird man einige Bits des Objektstatus selbst bearbeiten wollen, und andere dem AES überlassen. ∙ die Funktion erhält den PARMBLK-Zeiger auf dem Stack, und muß daher in Pure-C als 'cdecl' deklariert werden. ∙ ein vollständiges Neuzeichnen des Objektes ist nur dann nötig, wenn die Komponenten pb_prevstate und pb_currstate gleich sind; anderenfalls hat sich nur der Objektstatus geändert (zum Beispiel durch Anklicken). ∙ die eigene Funktion wird de facto als Unterprogramm der AES ausgeführt. Daher sollte man im Hinblick auf die Stackbenutzung vorsichtig sein. Außerdem darf man natürlich keine weiteren AES- Aufrufe machen, da das AES nicht re-entrant ist. Aufrufe der VDI-Eingabefunktionen sind hingegen an dieser Stelle erlaubt. ∙ die Komponente pb_parm dient dazu, der eigenen Funktion weitere Informationen (wie etwa einen Zeiger auf einen String) mit auf den Weg zu geben. ∙ man sollte sich nie zu weit von der ursprünglichen Optik von GEM entfernen. Abgerundete Rechtecke oder kursive Texte passen sicherlich nicht in das normale Erscheinungsbild einer GEM- Applikation. Querverweis: AES GEM USERBLK