
; Entr‚es  : ES=dest
;            FS=source

Virt2Scr:
  push ds
  push fs
  pop ds
  xor si,si
  xor di,di
  xor dl,dl
  mov cl,200

  .V2S1:
    mov bl,64
    .V2S2:
      lodsd
      stosb
      stosd
      dec bl
    jnz .V2S2
    add dl,57
    jno .PasSaut
      add si,256
    .PasSaut:
  dec cl
  jnz .V2S1
  pop ds
ret



WaitVBL:
  mov dx,3dah
  in al,dx
  test al,8
  jne $-3

  mov dx,3dah
  in al,dx
  test al,8
  je $-3
ret


WhiteFlash:
  mov es,[cs:screen]
  xor eax,eax
  call ClearSeg

  mov bl,0
  mov cx,31
  .lf_loop1:
    call WaitVBL
    mov al,0
    mov dx,3c8h
    out dx,al
    inc dx
    mov al,bl
    out dx,al
    out dx,al
    out dx,al
    add bl,2
  loop .lf_loop1

  mov cl,31
  .lf_loop2:
    call WaitVBL
    mov al,0
    mov dx,3c8h
    out dx,al
    inc dx
    mov al,bl
    out dx,al
    out dx,al
    out dx,al
    sub bl,2
  loop .lf_loop2
ret


;FastWhiteFlash:

;  mov bl,0
;  mov cx,4
;  .flf_loop1:
;    call WaitVBL
;    mov al,0
;    mov dx,3c8h
;    out dx,al
;    inc dx
;    mov al,bl
;    out dx,al
;    out dx,al
;    out dx,al
;    add bl,15
;  loop .flf_loop1

;  mov cl,4
;  .flf_loop2:
;    call WaitVBL
;    mov al,0
;    mov dx,3c8h
;    out dx,al
;    inc dx
;    mov al,bl
;    out dx,al
;    out dx,al
;    out dx,al
;    sub bl,5
;  loop .flf_loop2
;ret



