rotox  dw 0
rotoy  dw 0

; Entr‚es : FS=source
;           ES=dest
Rotozoom:
  xor bx,bx
  mov bl,[Timer]
  shl bx,1
  mov ax,[bx+Sin]
  sub ax,128
  mov [rotox],ax
  add bx,128
  and bx,511
  mov ax,[bx+Sin]
  sub ax,128
  mov [rotoy],ax
Zoom:
  xor di,di      ; on commence en (0,0)
  xor cx,cx
  xor dx,dx
  .roto_loop1:
    mov ax,256
    push cx
    push dx
    .roto_loop2:
      push ax
      add cx,[rotox]
      add dx,[rotoy]
      mov bl,ch
      mov bh,dh
      mov al,[fs:bx]
      stosb
      pop ax
      dec ax
    jnz .roto_loop2
    pop dx
    pop cx
    sub cx,[rotoy]
    add dx,[rotox]
    or di,di
  jnz .roto_loop1
ret