home *** CD-ROM | disk | FTP | other *** search
/ CD-X 1 / cdx_01.iso / demodisc / tyrant / raster / rastdemo.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1994-12-23  |  3.8 KB  |  104 lines

  1. {
  2.                              Hello mindenkinek !
  3.  
  4.  Azt mondták, hogy kell valamiféle cikket írnom a RASTER-ról, na jó egye fene !
  5.  Mi is a RASTERsugár (elektronsugár) ??
  6.  Amikor TV-t nézünk akkor ugye mozgóképet látunk, ez azért van mert egy ún.
  7.  elektronsugár mindíg frissíti a képernyôn látott képet, mégpedig olyan gyor-
  8.  san, hogy a szemünk nem tudja azt képkockánként felfogni (ez 25 képkocka/
  9.  másodperc körül következik be). A TV-nél ez általában 50 Hz vagyis 50 kép/mp.
  10.  Ez a monitoroknál ua. vagy legtöbbször magasabb (Herc,CGA=50 Hz,VGA=60 Hz,
  11.  SVGA=60-120 Hz).
  12.  Ez az elektronsugár a képernyô bal felsô sarkából indul és vízszintesen soron-
  13.  ként halad lefelé. Mindíg balról jobbra halad, tehát ha egy soron végigér,
  14.  akkor "átmászik" a következô sor elejére, ilyenkor nem frissít. Ez van akkor
  15.  is ha az egész képernyôvel végez, csak akkor a jobb alsó sarokból kell vissza-
  16.  térnie a bal felsô sarokba (ez jóval hoszabb idô).
  17.  Hogy ez az egész miért jó nekünk ? Hát sokmindenért :
  18.  - A régebbi monitorkártyáknál ha akkor állítjuk a színek RGB értékeit
  19.    (RGB érték=egy szín színösszetevôinek Red[=Vörös],Green[=Zöld],Blue[=Kék],
  20.     alapszínek aránya) amikor az elektronsugár a képernyôt frissíti, akkor a
  21.     képernyô havazik !
  22.  - A PC kompatibilis gépek sebessége eléggé különbözik, a RASTER visszafutásá-
  23.    hoz való idôzítés aránylag hasonló sebességet ad programjainkban.
  24.  - A megírt rutinunk sebességét is tesztelhetjük a RASTER segítségével.
  25.    ( pl. Pascalban:
  26.      Repeat
  27.        WaitVertReTrace;
  28.        ColorRGB(0,63,0,63);
  29.        MyRoutine;
  30.        ColorRGB(0,0,0,0);
  31.      Until KeyPressed;
  32.      ReadKey; )
  33.    Ha a rutinunk egy függôleges visszafutásnál lassabb, akkor villogást fogunk
  34.    látni, különben pedig a lila rész mutatja azt az idôt, ameddig a RASTERsugár
  35.    eljutott a képernyôn a rutin futása alatt.
  36.  - Scroll írása esetén megszüntethetjük annak remegését !
  37.    (A képernyômemóriába való írást kell szinkronizálni egy csomó rutinnál a
  38.     RASTER-hez)
  39.  - Ha RASTERsoronként állítjuk egy szín RGB-jét, akkor többszáz színt is meg
  40.    tudunk jeleníteni egyszerre.
  41.  - Stb.
  42.  Itt közlök egy rövid kis PASCAL rutint, amelyben megtalálható a vízszintes és
  43.  függôleges RASTERvisszafutás figyelése.
  44.  
  45. }
  46. Program Raster_Demo;
  47.  Uses Crt;
  48.   Var
  49.     I:Word;
  50.  
  51. Procedure ColorRGB(Number,Red,Green,Blue:Byte);Assembler;
  52.            ASM
  53.              MOV DX,3C8h
  54.              MOV AL,Number
  55.              OUT DX,AL
  56.              INC DX
  57.              MOV AL,Red
  58.              OUT DX,AL
  59.              MOV AL,Green
  60.              OUT DX,AL
  61.              MOV AL,Blue
  62.              OUT DX,AL
  63.            END;
  64.  
  65. Procedure WaitVertReTrace;Assembler;
  66.            ASM
  67.              MOV DX,3DAh
  68.          @J1:IN AL,DX
  69.              TEST AL,8
  70.              JNE @J1
  71.          @J2:IN AL,DX
  72.              TEST AL,8
  73.              JE @J2
  74.            END;
  75.  
  76. Procedure WaitHorizReTrace;Assembler;
  77.            ASM
  78.              MOV DX,3DAh
  79.          @J1:IN AL,DX
  80.              TEST AL,1
  81.              JNE @J1
  82.          @J2:IN AL,DX
  83.              TEST AL,1
  84.              JE @J2
  85.            END;
  86.  
  87. Begin
  88.   ClrScr;
  89.   Repeat
  90.     WaitVertReTrace;                    { Függôleges visszafutás kivárása }
  91.     ColorRGB(0,63,63,63);               { Fehér szín beállítása }
  92.     For I:=1 to 10 do WaitHorizReTrace; { 10 vízszintes visszafutás kivárása }
  93.     ColorRGB(0,0,0,63);                 { Kék szín beállítása }
  94.     For I:=1 to 190 do WaitHorizReTrace;{ 190 vízszintes visszafutás kivárása }
  95.     ColorRGB(0,63,0,63);                { Lila szín beállítása }
  96.     For I:=1 to 190 do WaitHorizReTrace;{ 190 vízszintes visszafutás kivárása }
  97.     ColorRGB(0,63,63,63);               { Fehér szín beállítása }
  98.   Until KeyPressed;
  99.   ReadKey;
  100.   ColorRGB(0,0,0,0);
  101. End.
  102.  
  103.                                                       { NOR OF XεεD }
  104.