home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9303 / pastrick / grafbnch.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-06-01  |  2.8 KB  |  127 lines

  1. (* ------------------------------------------------------ *)
  2. (*                      GRAFBNCH.PAS                      *)
  3. (*              Benchmark-Test der Grafikkarte            *)
  4. (*          (c) 1993 Markus Kämmerer & DMV-Verlag         *)
  5. (* ------------------------------------------------------ *)
  6. PROGRAM GrafBench;
  7.  
  8. USES Crt, Dos;
  9.  
  10. CONST
  11.   z =  ' abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP' +
  12.        'QRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
  13.   z1 = ' $';
  14.   z2 = '$';
  15.   zkette  : STRING = z + z1;
  16.   zkette2 : STRING = z + z2;
  17.  
  18. VAR
  19.   t, Bildsegment  : WORD;
  20.   CursorKilled    : BOOLEAN;
  21.   CursorLineStart,
  22.   CursorLineEnd   : INTEGER;
  23.   Regs            : Registers;
  24.   h, m, s, ss     : WORD;
  25.   a,b,c           : REAL;
  26.   h1, m1, s1, ss1 : WORD;
  27.  
  28. BEGIN
  29.   IF NOT CursorKilled THEN BEGIN
  30.     Regs.ah := 3;
  31.     Regs.bh := 0;
  32.     Intr($10, Regs);
  33.     CursorLineStart := Regs.ch;
  34.     CursorLineEnd   := Regs.cl;
  35.     Regs.ah := 1;
  36.     Regs.ch := $20;
  37.     Intr($10, Regs);
  38.     CursorKilled := TRUE;
  39.   END;
  40.   IF Mem[$0040:$0049] <> 7 THEN (* bzw. Seg0040:$0049 *)
  41.     Bildsegment := $B800
  42.   ELSE
  43.     Bildsegment := $B000;
  44.   GetTime(h1, m1, s1, ss1);
  45.   SetTime(0, 0, 0, 0);
  46.   ASM
  47.     MOV  SI, $0800
  48. @1: CLD
  49.     MOV  DI, 0
  50.     MOV  AX, Bildsegment
  51.     PUSH AX
  52.     POP  ES
  53.     MOV  CX, 2000
  54.     MOV  AX, SI
  55.     REPE STOSW
  56.     DEC  SI
  57.     JNE  @1
  58.   END;
  59.   GetTime(h, m, s, ss);
  60.   SetTime(h1, m1, s1, ss1);
  61.   a := m*60000 + s*100 + ss;
  62.   ClrScr;
  63.   SetTime(0, 0, 0, 0);
  64.   ASM
  65.     MOV   SI, $0200
  66. @1: PUSH  SI
  67.     MOV   AX, SI
  68.     MOV   AH, $0A
  69.     MOV   BH, 0
  70.     MOV   CX, 4000
  71.     INT   $10
  72.     POP   SI
  73.     DEC   SI
  74.     JNE   @1
  75.   END;
  76.   GetTime(h, m, s, ss);
  77.   SetTime(h1, m1, s1, ss1);
  78.   b := m*60000 + s*100 + ss;
  79.   SetTime(0, 0, 0, 0);
  80.   ASM
  81.     MOV  SI, $0010
  82. @1: PUSH SI
  83.     MOV  CX, 24
  84. @2: LEA  DX, zKette
  85.     INC  DX
  86.     MOV  AH, $09
  87.     INT  $21
  88.     LOOP @2
  89.     LEA  DX, zKette2
  90.     INC  DX
  91.     MOV  AH, $09
  92.     INT  $21
  93.     MOV  AH, 2
  94.     MOV  BH, 0
  95.     MOV  DX, 0
  96.     INT  $10
  97.     POP  SI
  98.     DEC  SI
  99.     JNE  @1
  100.   END;
  101.   GetTime(h, m, s, ss);
  102.   SetTime(h1, m1, s1, ss1);
  103.   c := m*60000 + s*100 + ss;
  104.   TextColor(15);
  105.   TextBackground(2);
  106.   IF CursorKilled THEN BEGIN
  107.     Regs.ah := 1;
  108.     Regs.ch := CursorLineStart;
  109.     Regs.cl := CursorLineEnd;
  110.     Intr($10, Regs);
  111.     CursorKilled := FALSE;
  112.   END;
  113.   ClrScr; 
  114.   Writeln('Grafik-Performancetest.');
  115.   Writeln('Werte: ');
  116.   Writeln;
  117.   Writeln('Direktzugriff auf Bildschirm: ',
  118.           798700 / a : 5 : 0, ' (7680)');
  119.   Writeln('BIOS-Zugriff auf Bildschirm : ',
  120.           798700 / b / 4 : 5 : 0, ' (1040)');
  121.   Writeln('DOS-Zugriff auf Bildschirm  : ',
  122.           798700 / c / 128 : 5 : 2, ' (18.68)');
  123. END.
  124. (* ------------------------------------------------------ *)
  125. (*               Ende von GRAFBNCH.PAS                    *)
  126.  
  127.