home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 18 / CD_ASCQ_18_111294_W.iso / dos / prg / pas / gfxfx / testblnk.pas < prev    next >
Pascal/Delphi Source File  |  1994-04-21  |  993b  |  48 lines

  1.  
  2. {$g+}
  3. program testblink;
  4. { Disabling blink (hicolor background), the HARD way,
  5.   by Bas van Gaalen, Holland, PD }
  6. uses crt;
  7. const vseg:word=$b800; off=false; on=true;
  8.  
  9. procedure blink(state:boolean); assembler;
  10. asm
  11.   mov dx,3dah
  12.   in al,dx
  13.   mov dx,3c0h
  14.   mov al,10h+32
  15.   out dx,al
  16.   inc dx
  17.   in al,dx
  18.   and al,11110111b
  19.   mov ah,state
  20.   shl ah,3
  21.   or al,ah
  22.   dec dx
  23.   out dx,al
  24. end;
  25.  
  26. procedure scrwrite(s:string; x,y,col:byte);
  27. var offset : word; i : byte;
  28. begin
  29.   offset := y*160+x+x;
  30.   if length(s) > 0 then
  31.     for i := 0 to length(s)-1 do
  32.       memw[vseg:offset+i+i] := col*256+ord(s[i+1]);
  33. end;
  34.  
  35. procedure waitkey; begin
  36.   repeat until keypressed;
  37.   while keypressed do readkey;
  38. end;
  39.  
  40. var x,y:byte;
  41. begin
  42.   if lastmode=7 then vseg:=$b000;
  43.   textcolor(white); textbackground(black);
  44.   clrscr;
  45.   for y:=0 to 15 do for x:=0 to 15 do scrwrite(' x ',3*x,y,y*16+x);
  46.   waitkey; blink(off); waitkey; blink(on); waitkey; {textmode(lastmode);}
  47. end.
  48.