This is an old version from the tos.hyp. The new is on GitHub!

HomeLine-AHide mouseUndraw sprite

6.16 Transform mouse

Name: »Transform mouse«
Line-A Nummer: $A00B
Binding: Bindings für transform_mouse
Beschreibung: Diese Line-A Funktion setzt den Mauszeiger auf ein neues Erscheinungsbild. Die nötigen Parameter werden über das intin Feld übergeben. Alternativ kann auch die AES Struktur MFORM benutzt werden. Für den Aufruf der Line-A Funktion wird intin im Line-A Parameterblock auf diese Struktur gesetzt und nach dem Aufruf wird der alte Wert restauriert.
typedef struct mfstr
{
   int16_t mf_xhot;
   int16_t mf_yhot;
   int16_t mf_nplanes;
   int16_t mf_fg;
   int16_t mf_bg;
   int16_t mf_mask[16];
   int16_t mf_data[16];
} MFORM;
Variable Bedeutung
   
mf_xhot X-Koordinate des Aktionspunkts der Mausform. Für die Aktion der Maus ist maßgeblich, wo sich dieser Punkt der Mausform befindet.
mf_yhot Y-Koordinate des Aktionspunkts der Mausform. Für die Aktion der Maus ist maßgeblich, wo sich dieser Punkt der Mausform befindet.
mf_nplanes Muß auf 1 gesetzt werden, da die Mausform nur eine Farbebene haben darf.
mf_fg Die Farbe der Maske.
mf_bg Die Farbe der Daten fest.
mf_mask Die 16 * 16 Pixel große Maske. Jede 1 in der Maske löscht den Hintergrund an der Stelle (bzw. setzt die Hintergrundfarbe). Damit kann an den Stellen, an denen keine Mausdaten gezeichnet werden, das "Druchscheinen" eines Hintergrunds verhindern und z.B. die Maus mit einem "Rahmen" von dem Untergrund abgesetzt werden.
mf_data Die 16 * 16 Pixel große Mausform. Jede 1 in der Mausform erzeugt einen Punkt der Farbe mf_bg auf dem Bildschirm.
Ergebnis: Die Funktion liefert keinen Returnwert.
Verfügbar: Alle TOS-Versionen.
Querverweis: Binding   Undraw sprite   Draw sprite

6.16.1 Bindings für transform_mouse

Pure-C: void transform_mouse( MFORM *mform );
Assembler:
movem.l   D0-D2/A0-A2,-(A7)  ; Register retten
move.l    pParamblk,A0       ; Zeiger Parameterblock LINEA
move.l    (8,A0),-(A7)       ; alten Wert des intin Feldes retten
move.l    mform,(8,A0)       ; Feld mit Mausform in LINEA.intin
dc.w      $A00B              ; Line-A Opcode
move.l    pParamblk,A0       ; Zeiger Parameterblock LINEA
move.l    (A7)+,(8,A0)       ; alten Wert des intin Feldes restaurieren
movem.l   (A7)+,D0-D2/A0-A2  ; Register restaurieren

HomeLine-AHide mouseUndraw sprite