Managed to mask the background colour and have the triangle thing moving (slowly)
org 100h
mov al,13h
int 10h
lds si,[bx]
draw_loop:
mov bx,cx ;copy background pixel address, going to be altered later for foreground pixel address
mov ax,dx ;copy background colour value
and al,080h ;mask background colour value
mov [bx], al ;plot background pixel
add dl,bh ;alter colour value for next background pixel
or bl,bh ;alter pixel address for foreground
add bl,dh ;scroll the foreground add bx,ax / add bl,dh
mov [bx],bh ;plot foreground pixel
loop draw_loop
inc dx ;adjust for background colour cycling and for foreground scrolling
in al,60h
dec al
jnz draw_loop
ret