home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 8 / CDASC08.ISO / NEWS / 554 / JUIN / FADEOUT.PAS < prev    next >
Pascal/Delphi Source File  |  1993-10-07  |  2KB  |  83 lines

  1. {─ Fido Pascal Conference ────────────────────────────────────────────── PASCAL ─
  2. Msg  : 312 of 360
  3. From : Stephen Cheok                       1:153/255.0          01 Jun 93  18:35
  4. To   : Liam Stitt                          201:5500/551.0
  5. Subj : FADE IN?
  6. ────────────────────────────────────────────────────────────────────────────────
  7.  LS>         Could you post the fade out source?
  8.  
  9.  
  10.      Hi Liam! Uhm, here is what I have..try it and see if it works!}
  11.  
  12. PROCEDURE DimDisplay(delayfactor : INTEGER); ASSEMBLER ;
  13.  
  14.     { Total time to fade out in seconds =
  15.       ((DelayFactor+1)*MaxIntensity) / 1000 }
  16.  
  17.     CONST
  18.       MaxIntensity = 45 ;
  19.       {MaxIntensity = 63;}
  20.  
  21.     VAR
  22.       DACTable : Array[0..255] OF RECORD
  23.                    R, G, B : BYTE;
  24.                  END ;
  25.     ASM
  26.             PUSH   DS
  27.             MOV    AX, SS
  28.             MOV    ES, AX
  29.             MOV    DS, AX
  30.  
  31.       { Store colour information into DACTable }
  32.  
  33.             LEA    DX, DACTable
  34.             MOV    CX, 256
  35.             XOR    BX, BX
  36.             MOV    AX, 1017h
  37.             INT    10h
  38.  
  39.             MOV    BX, MaxIntensity
  40.  
  41.       { VGA port 3C8h: PEL address register, (colour index,
  42.         increments automatically after every third write)
  43.         VGA port 3C9h: PEL write register (R, G, B) }
  44.  
  45.             CLD
  46.     @1:     LEA    SI, DACTable
  47.             MOV    DI, SI
  48.             MOV    CX, 3*256
  49.             XOR    AX, AX
  50.             MOV    DX, 3C8h
  51.             OUT    DX, AL
  52.             INC    DX
  53.  
  54.       { Get colour value, decrement it and update the table }
  55.  
  56.     @2:     LODSB
  57.             OR     AX, AX
  58.             JZ     @3
  59.             DEC    AX
  60.     @3:     STOSB
  61.             OUT    DX, AL
  62.             LOOP   @2
  63.  
  64.       { Delay before next decrement of R, G, B values }
  65.  
  66.             PUSH   ES
  67.             PUSH   BX
  68.             MOV    AX, DelayFactor
  69.             PUSH   AX
  70.             CALL   Delay
  71.             POP    BX
  72.             POP    ES
  73.  
  74.             DEC    BX
  75.             OR     BX, BX
  76.             JNZ    @1
  77.             POP    DS
  78.     END ;  { DimDisplay }
  79.  
  80.  
  81. It is done in assembler so if you don't know a bit in assembly... then your out
  82. of luck =8)
  83.