Home Line-ALine-A Draw spriteDraw sprite SeedfillSeedfill

6.19 Copy raster form

Name: »Copy raster form«
 
Line-A Nummer: $A00E
 
Binding: Bindings für copy_raster
 
Beschreibung: Diese Line-A Funktion entspricht exakt der VDI Funktion Copy Raster Opaque. Lediglich einige Felder des contrl Feld werden nicht gesetzt, da keine VDI Workstation geöffnet sein muß. Deshalb sei auf die Dokumentation der VDI Funktion verwiesen. Die folgenden Line-A Variablen werden benutzt:
 
Variable Bedeutung
   
patptr kann einen Zeiger auf ein Muster enthalten.
multifill 0, wenn das Muster nur eine Ebene hat und 1 für mehrere Ebenen.
copy_tran 0 für opaques kopieren (Quelle und Ziel haben die gleiche Anzahl Farbebenen) und 1 für transparentes kopieren (Ziel wird in eine Farbebene kopiert) gesetzt.

Hinweis: Das Binding von Turbo C unterstützt diese Funktion nicht.
 
Ergebnis: Die Funktion liefert keinen Returnwert.
 
Verfügbar: Alle TOS-Versionen.
 
Querverweis: Binding   vro_cpyfm
 

6.19.1 Bindings für copy_raster

Pure-C: void copy_raster( void ); /* WARNING: NOT supported ! */
 
Assembler:
 
; Register retten
movem.l   D0-D2/A0-A2,-(A7)
; Zeiger Parameterblock LINEA
move.l    pParamblk,A0
; contrl nach A1
move.l    (4,A0),A1
; Adresse Source MFDB nach D0
move.l    s_mfdb,D0
; Unteres Wort Source MFDB nach contrl[8]
move.w    D0,(8,A1)
; Oberes Wort von D0 ...
lsr.l     #8,D0
; ... auf unteres Wort schieben
lsr.l     #8,D0
; Oberes Wort Source MFDB nach contrl[7]
move.w    D0,(7,A1)
; Adresse Ziel MFDB nach D0
move.l    d_mfdb,D0
; Unteres Wort Ziel MFDB nach contrl[10]
move.w    D0,(10,A1)
; Oberes Wort von D0 ...
lsr.l     #8,D0
; ... auf unteres Wort schieben
lsr.l     #8,D0
; Oberes Wort Ziel MFDB nach contrl[9]
move.w    D0,(9,A1)
; contrl in LINEA.contrl
move.l    intin,(8,A0)
; alten Wert des intin Feldes retten
move.l    (8,A0),-(A7)
; intin in LINEA.intin
move.l    intin,(8,A0)
; alten Wert des ptsin Feldes retten
move.l    (12,A0),-(A7)
; ptsin in LINEA.ptsin
move.l    intin,(8,A0)
; Linienmuster in LINEA.patptr
move.w    patptr,(44,A0)
; Ebenenflag in LINEA.multifill
move.w    multifill,(50,A0)
; Kopiermodus in LINEA.copy_tran
move.w    copy_tran,(116,A0)
; Line-A Opcode
dc.w      $A00E
; Zeiger Parameterblock LINEA
move.l    pParamblk,A0
; alten Wert des ptsin Feldes restaurieren
move.l    (A7)+,(12,A0)
; alten Wert des intin Feldes restaurieren
move.l    (A7)+,(8,A0)
; Register restaurieren
movem.l   (A7)+,D0-D2/A0-A2

Home Line-ALine-A Draw spriteDraw sprite SeedfillSeedfill