{ Sorry it took so long - anyway here's a new batch of VGA TRICKS : First there's your basic equipment - synchronizing with the vertical Crt retrace. ( You can use this For hardware VGA scrolling synchronisation too, just substitute the Delay(14) in my old routine For a call to this Procedure.) } Procedure VRET;Assembler; {works For CGA,EGA and VGA cards} Asm MOV DX, $03DA MOV AH, 8 @Wau: in AL, DX TEST AL, AH JNZ @Wau { wait Until out of retrace } @Wai: in AL, DX TEST AL, AH JZ @Wai { wait Until inside retrace } end { The following is Really new, as Far as I know: breaking the color barrier by displaying more than 64 different colors on a Text mode screen. (But it will work For Text and Graphics color modes.) It displays the effect For approximately SEC seconds, affecting the black background and any black Characters. note that if you have the border set to black too, the bars will expand into it. } Procedure ColorBars(Sec:Byte);Assembler; Asm MOV AL,Sec MOV AH,70 { assume a 70 Hz mode (= 400 lines like mode 3 or $13)} MUL AH MOV CX,AX MOV DX,$03DA in AL,DX MOV DX,$03C0 { assume color nr 0 = default Text background.. } MOV AL,$20+0 { set color nr 0 .. } OUT DX,AL MOV AL,0 { .. to DAC color 0 } OUT DX,AL @Doscreen: xor SI,SI CLI MOV DX,$03DA MOV AH,8 @Wau: in AL,DX TEST AL,AH JNZ @Wau { wait Until out of retrace } @Wai: in AL,DX TEST AL,AH JZ @Wai { wait Until inside retrace } @Doline: STI MOV DX,$03C8 { point to DAC[0] } MOV AL,0 OUT DX,AL inC SI { line counter } MOV BX,SI ADD BX,CX { prepare For color effect } MOV DI,$03C9 CLI MOV DX,$03DA @Whu: in AL,DX RCR AL,1 JC @Whu { wait Until out of horizontal retrace } @Whi: in AL,DX RCR AL,1 JNC @Whi { wait Until inside retrace } MOV DX,DI XCHG BX,AX { tinker With these to change the chromatic effect} OUT DX,AL { dynamic Red } ADD AL,AL OUT DX,AL { dynamic Green } XCHG SI,AX OUT DX,AL { static Blue } XCHG SI,AX CMP SI,200 { paint 200 lines } JBE @doline DEC DX { last line } MOV AL,0 { reset to black For remainder of screen } OUT DX,AL inC DX OUT DX,AL OUT DX,AL OUT DX,AL STI Loop @Doscreen end;