home *** CD-ROM | disk | FTP | other *** search
- {
- STEPHEN CHEOK
-
- > Could you post the fade out source?
- }
-
- PROCEDURE DimDisplay(delayfactor : INTEGER); ASSEMBLER;
-
- { Total time to fade out in seconds = ((DelayFactor+1)*MaxIntensity) / 1000 }
-
- CONST
- MaxIntensity = 45;
- {MaxIntensity = 63;}
-
- VAR
- DACTable : Array [0..255] OF RECORD
- R, G, B : BYTE;
- END;
- ASM
- PUSH DS
- MOV AX, SS
- MOV ES, AX
- MOV DS, AX
-
- { Store colour information into DACTable }
-
- LEA DX, DACTable
- MOV CX, 256
- XOR BX, BX
- MOV AX, 1017h
- INT 10h
-
- MOV BX, MaxIntensity
-
- { VGA port 3C8h: PEL address register, (colour index,
- increments automatically after every third write)
- VGA port 3C9h: PEL write register (R, G, B) }
-
- CLD
- @1:
- LEA SI, DACTable
- MOV DI, SI
- MOV CX, 3*256
- XOR AX, AX
- MOV DX, 3C8h
- OUT DX, AL
- INC DX
-
- { Get colour value, decrement it and update the table }
-
- @2:
- LODSB
- OR AX, AX
- JZ @3
- DEC AX
- @3:
- STOSB
- OUT DX, AL
- LOOP @2
-
- { Delay before next decrement of R, G, B values }
-
- PUSH ES
- PUSH BX
- MOV AX, DelayFactor
- PUSH AX
- CALL Delay
- POP BX
- POP ES
-
- DEC BX
- OR BX, BX
- JNZ @1
- POP DS
- END; { DimDisplay }
-
-