Assembler-Inlines von Zündeln für den AtariST
(zurück zu Zündeln)
;
; "Treffer.IS"
;
movem.l d1-d3/a0-a3,-(sp)
; 7 Register = 28
;
movea.l 32(sp),a0 ; XBIOS(2) in a0
movea.l 36(sp),a1 ; L:V:bild$ in a1
move.l 40(sp),d1 ; zufz% in d1
movea.l 44(sp),a2 ; Maske in a2
lea.l pow,a3 ; Pow-Maske
clr.l d0
move.w #31,d0
subi.l #1282,d1
bclr.l #0,d1
maske:
move.l (a3)+,d2
and.l 0(a1,d1.l),d2 ; Bild mit Pow-Maske
move.l d2,0(a0,d1.l) ; Maske aufs Bild
adda.l #80,a0
adda.l #80,a1
dbf d0,maske
lea.l pow,a3 ; a3 wieder Pow-Maske
movea.l 36(sp),a1 ; a1 wieder V:Bild$
movea.l 32(sp),a0 ; a0 wieder XBIOS(2)
move.l 40(sp),d1 ; d1 wieder zufz%
clr.l d0
move.l #50000,d0
warten:
dbf d0,warten
clr.l d0
move.w #31,d0
subi.l #1282,d1
bclr.l #0,d1
peng_rueck:
move.l 0(a1,d1.l),0(a0,d1.l)
adda.l #80,a1
adda.l #80,a0
dbf d0,peng_rueck
movea.l 32(sp),a0 ; a0 wieder auf xbios(2)
move.l 40(sp),d1 ; wieder zufz% in d1
movea.l 36(sp),a1 ; a1 wieder auf V:Bild$
clr.l d0
move.w #7,d0 ; Schleifenzähler
nochm:
adda.l #80,a0
adda.l #80,a1
move.b (a2),0(a0,d1.l)
move.b (a2)+,0(a1,d1.l)
dbf d0,nochm
movem.l (sp)+,d1-d3/a0-a3
rts
ding:
.DC.b %11111111
.DC.b %11111111
.DC.b %11111111
.DC.b %11100111
.DC.b %11100111
.DC.b %11111111
.DC.b %11111111
.DC.b %11111111
pow:
.DC.l %11111111111111111111111111111111
.DC.l %11111111111111111111111111111111
.DC.l %11111111111111111111111111111111
.DC.l %11111111111111011111111111111111
.DC.l %11111111111100001111111111111111
.DC.l %11111111111100001111111111111111
.DC.l %11111111111000000111111111111111
.DC.l %11111111111000000111111111111111
.DC.l %11111111111000000111111111011111
.DC.l %11111111111000000011111100111111
.DC.l %11111111110000000011111000011111
.DC.l %11110111111000000000000000111111
.DC.l %11100011000000000000000001111111
.DC.l %11110000000000000000110001111111
.DC.l %11111000000011000000000001111111
.DC.l %11111100000000000000000000111111
.DC.l %11111100000000000000000000011111
.DC.l %11110000000000000000000000000111
.DC.l %10000000000000000000011100000011
.DC.l %11000000000000000000001110000111
.DC.l %11100000000000000000000000001111
.DC.l %11110000000111100000000000011111
.DC.l %11110000000011100000000000111111
.DC.l %11111000000000000000000001111111
.DC.l %11111000000000000000000000111111
.DC.l %11110000001000000000000001111111
.DC.l %11111100010000000000000001111111
.DC.l %11111110100000000000111001111111
.DC.l %11111111000000000001111110111111
.DC.l %11111111000000000111111111111111
.DC.l %11111111100000001111111111111111
.DC.l %11111111110001111111111111111111
.DC.l %11111111111111111111111111111111
.END