  encoding_raw:
    DEBUGF 1,'RAW\n'

    mov   ax,[frame.y]			      ;
    mov   bx,[screen.width]		      ;
    mul   bx				      ;
    shl   edx,16			      ;
    mov   dx,ax 			      ; [screen.width]*[frame.y]
    movzx eax,[frame.x]
    add   edx,eax			      ; [screen.width]*[frame.y]+[frame.x]

    mov   eax,3 			      ;
    mul   edx				      ; ([screen.width]*[frame.y]+[frame.x])*3

    add   eax,framebuffer_data		      ;
    push  eax				      ; framebuffer_data+([screen.width]*[frame.y]+[frame.x])*3

    mov   ax,[frame.width]		      ;
    mov   bx,3				      ;
    mul   bx				      ;
    shl   edx,16			      ;
    mov   dx,ax 			      ; [frame.width]*3

    pop   eax				      ;
    add   edx,eax			      ; framebuffer_data+([screen.width]*[frame.y]+[frame.x])*3+[frame.width]*3
    push  eax				      ;
    push  edx				      ;

    mov   ax,[frame.height]		      ;
    dec   ax				      ;
    mov   bx,3				      ;
    mul   bx				      ;
    mov   bx,[screen.width]		      ;
    mul   bx				      ;
    shl   edx,16			      ;
    mov   dx,ax 			      ;
    mov   ecx,edx			      ;
    pop   edx				      ;
    add   ecx,edx			      ; mov ecx,edx+([frame.height]-1)*[screen.width]*3
    pop   ebx

   .pixelloop32:
    cmp   ebx,ecx
    jge   next_rectangle

;    add   esi,2           ; 32 bit code RAW - OK
;    mov   al,[esi]        ;
;    mov   [ebx],al        ;
;    inc   ebx             ;
;    dec   esi             ;
;                          ;
;    mov   al,[esi]        ;
;    mov   [ebx],al        ;
;    inc   ebx             ;
;    dec   esi             ;
;                          ;
;    mov   al,[esi]        ;
;    mov   [ebx],al        ;
;    inc   ebx             ;
;    add   esi,4           ;

;    push  ecx             ; 16 bit code RAW
;    mov   cl,51
;
;    mov   ax,[esi]        ;
;        xchg  al,ah
;    and   al,00011111b    ;
;        xchg  al,ah
;    mul   cl
;    mov   [ebx],al        ;
;    inc   ebx             ;
;
;    mov   ax,[esi]        ;
;        xchg  al,ah
;    shr   ax,5            ;
;        xchg  al,ah
;    and   al,00011111b    ;
;    mul   cl
;    mov   [ebx],al        ;
;    inc   ebx             ;
;
;    mov   ax,[esi]        ;
;    xchg  al,ah
;    shr   ax,10           ;
;    and   al,00011111b    ;
;    mul   cl
;    mov   [ebx],al        ;
;    inc   ebx             ;
;
;    inc   esi             ;
;    inc   esi             ;
;    pop   ecx

    push  ecx		  ; 8 bit code RAW - OK
    mov   cl,85 	  ;
			  ;
    mov   al,[esi]	  ;
    shr   al,4		  ;
    and   al,3		  ;
    mul   cl		  ;
    mov   [ebx],al	  ;
    inc   ebx		  ;
			  ;
    mov   al,[esi]	  ;
    shr   al,2		  ;
    and   al,3		  ;
    mul   cl		  ;
    mov   [ebx],al	  ;
    inc   ebx		  ;
			  ;
    mov   al,[esi]	  ;
    and   al,3		  ;
    mul   cl		  ;
    mov   byte[ebx],al	  ;
    inc   ebx		  ;
    inc   esi		  ;
    pop   ecx		  ;


    cmp   ebx,edx
    jl	  .pixelloop32

    push  edx
    push  ebx
    mov   ax,[screen.width]
    mov   bx,3
    mul   bx
    shl   edx,16
    mov   dx,ax
    mov   eax,edx
    pop   ebx
    pop   edx

    add   ebx,eax ; eax = [screen.width]*3
    add   edx,eax

    push  edx
    push  ebx
    mov   ax,[frame.width]
    mov   bx,3
    mul   bx
    shl   edx,16
    mov   dx,ax
    mov   eax,edx
    pop   ebx
    pop   edx

    sub   ebx,eax ; eax = [frame.width]*3

    jmp   .pixelloop32



