  Ŀ
  Ŀ
                                                                          
                           Yumuak Gei                                  
                                                                          
  ٳ
                                                  Semih Hazar               
  




 Program, 256 renklik modda program yapanlarn iine yaramas iin yaplan
  iki rutinden oluamktadr.

  Bunlardan birincisi olan FADEIN, ekrann yumuak geile programn giri
  ksmna girmesini salar.

  FADEOUT ise ekrann yumuak bir geile kararmasn salar.


 FADEIN ve FADEOUT'un; Pascal ve Assembler versiyonlar ilgili ksmlarda
  verilmitir.



  PASCAL'ca


 fadein.pasĿ
 uses dos;                                             
 var                                                   
  y,i    : byte                                        
  newpal : array[1..$300] of byte;                     
  normpal: array[1..$300] of byte;                     
  regs   : registers;                                  
                                                       
 begin                                                 
  for y:=1 to 50 do                                    
  begin                                                
   for i:=1 to $300 do newpal[i]:=(normpal[i]*i)/50;   
   regs.ax:=$1012;                                     
   regs.bx:=0;                                         
   regs.cx:=$100;                                      
   regs.dx:=ofs(newpal);                               
   regs.es:=seg(newpal);                               
   intr($10,regs);                                     
   delay(5);                                           
  end;                                                 
 end.                                                  
 

 fadeout.pasĿ
 uses dos;                                             
 var                                                   
  y,i    : byte                                        
  newpal : array[1..$300] of byte;                     
  normpal: array[1..$300] of byte;                     
  regs   : registers;                                  
                                                       
 begin                                                 
  for y:=50 downto 0 do                                
  begin                                                
   for i:=1 to $300 do newpal[i]:=(normpal[i]*i)/50;   
   regs.ax:=$1012;                                     
   regs.bx:=0;                                         
   regs.cx:=$100;                                      
   regs.dx:=ofs(newpal);                               
   regs.es:=seg(newpal);                               
   intr($10,regs);                                     
   delay(5);                                           
  end;                                                 
 end.                                                  
 




  ASSEMBLER'ca


  Cseg    Segment
  Assume  Cs:cseg,Ds:cseg,Es:cseg
  Org     100H
  Locals  __

  FadeIn  Proc    Near
          Mov     Say,0
          Mov     Cx,60
~  __Don1: Push    Cx
          Lea     Si,Pal          ; Gerek Paletin Ofset Adresi.
          Lea     Di,Npal         ; Geici Olarak Kullanlan Buffer Adresi.
          Mov     Cx,300H         ; 256 Renk Iin (256*3 (R,G,B))
  __Don2: Push    Cx              ;
          Lodsb                   ;\
          Xor     Dx,Dx           ; \
          Xor     Ah,Ah           ;  \
          Mov     Cl,Say          ;   \
          Xor     Ch,Ch           ;    \
          Mul     Cx              ;     \ Burada Yaplan Ilem :
          Xor     Dx,Dx           ;    /  (Alnan Bayt * Say) / 60
          Mov     Cx,60           ;   /  Ve Yeni Deeri Geici Buffer 'A
          Div     Cx              ;  /  Koy.
          Stosb                   ; /
          Pop     Cx              ;/
          Loop    __Don2          ;\
          Mov     Ax,1012H        ; \
          Mov     Bx,0            ;  \
          Mov     Cx,256          ;  / Geici Buffer 'Daki Renkleri
  Etkinletir.
          Mov     Dx,Offset Npal  ; /
          Int     10H             ;/
          Pop     Cx
          Inc     Say             ; Sayy Arttr.
          Push    Cx
          Mov     Cx,04444H       ; Bekleme
  __Bekle:loop    __Bekle
          Pop     Cx
          Loop    __Don1          ; En Baa Dn.
          Ret
  FadeIn  Endp

  FadeOut Proc    Near
          Mov     Say,60
          Mov     Cx,60
  __Don1: Push    Cx
          Lea     Si,Pal          ; Gerek Paletin Ofset Adresi.
          Lea     Di,Npal         ; Geici Olarak Kullanlan Buffer Adresi.
          Mov     Cx,300H         ; 256 Renk Iin (256*3 (R,G,B))
  __Don2: Push    Cx              ;
          Lodsb                   ;\
          Xor     Dx,Dx           ; \
          Xor     Ah,Ah           ;  \
          Mov     Cl,Say          ;   \
          Xor     Ch,Ch           ;    \
          Mul     Cx              ;     \ Burada Yaplan Ilem :
          Xor     Dx,Dx           ;    /  (Alnan Bayt * Say) / 60
          Mov     Cx,60           ;   /  Ve Yeni Deeri Geici Buffer 'A
          Div     Cx              ;  /  Koy.
          Stosb                   ; /
          Pop     Cx              ;/
          Loop    __Don2          ;\
          Mov     Ax,1012H        ; \
          Mov     Bx,0            ;  \
          Mov     Cx,256          ;  / Geici Buffer 'Daki Renkleri
  Etkinletir.
          Mov     Dx,Offset Npal  ; /
          Int     10H             ;/
          Pop     Cx
          Dec     Say             ; Sayy Eksilt.
          Push    Cx
          Mov     Cx,04444H       ; Bekleme
  __Bekle:loop    __Bekle
          Pop     Cx
          Loop    __Don1          ; En Baa Dn.
          Ret
  FadeOut Endp


  Npal    Db 300H Dup(0)
  Pal     Db 300H Dup(0)
  Say     Db 0
  Cseg Ends
  End