home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* BUBBLE.PAS *)
- (* Bubblesort-Benchmark *)
- (* (C) 1990 Gerald Arend & TOOLBOX *)
- (* ------------------------------------------------------ *)
- {$A+,B-,D-,E-,F-,I-,L-,N-,O-,R-,S-,V-}
- PROGRAM Bubbles;
-
- USES Dos, Crt;
-
- CONST
- Max = 20*24-1;
- OrigPC = 213.5; { Geschwindigkeit des Original IBM-PC }
-
- VAR
- X: ARRAY[0..Max] OF WORD;
- n: WORD;
- StartZeit, EndZeit, Zeit: LONGINT;
- Sec: REAL;
-
- PROCEDURE StartTimer;
- VAR
- R: Registers;
- BEGIN
- R.AH:=$00;
- Intr($1A, R);
- StartZeit:=R.CX SHL 16+R.DX;
- END;
-
- PROCEDURE GetTimer;
- VAR
- R: Registers;
- BEGIN
- R.AH:=$00;
- Intr($1A, R);
- EndZeit:=R.CX SHL 16+R.DX;
- Zeit:=EndZeit-StartZeit;
- Sec:=Zeit/18.2;
- END;
-
- PROCEDURE Init;
- BEGIN
- TextColor(LightGray);
- TextBackground(Black);
- FOR n:=0 TO Max DO
- BEGIN
- X[n]:=Random(1000);
- GotoXY(n MOD 20*4+1, Succ(n DIV 20));
- Write(X[n]:4);
- END;
- END;
-
- PROCEDURE Sort;
- VAR
- a, b, xch: WORD;
- BEGIN
- FOR a:=0 TO Pred(Max) DO
- BEGIN
- GetTimer;
- TextColor(White);
- TextBackground(Blue);
- GotoXY(41,25);
- Write(Sec:5:1);
- TextBackground(Black);
- FOR b:=Succ(a) TO Max DO
- BEGIN
- IF X[a]>X[b] THEN
- BEGIN
- TextColor(1+a MOD 15);
- xch:=X[a];
- X[a]:=X[b];
- X[b]:=xch;
- GotoXY(a MOD 20*4+1, Succ(a DIV 20));
- Write(X[a]:4);
- GotoXY(b MOD 20*4+1, Succ(b DIV 20));
- Write(X[b]:4);
- END
- ELSE
- Sound(880);
- NoSound;
- END;
- END;
- END;
-
- BEGIN
- DirectVideo:=TRUE;
- TextMode(CO80);
- ClrScr;
- TextColor(White);
- TextBackground(Blue);
- RandSeed:=13011966;
- GotoXY(1,25);
- Write('toolbox - Bubblesort-Benchmark -> Start mit <ENTER>');
- ClrEol;
- REPEAT
- UNTIL ReadKey=#13;
- GotoXY(32,25);
- Write('läuft - ---.- Sekunden');
- ClrEol;
- StartTimer;
- Init;
- Sort;
- GetTimer;
- TextColor(White);
- TextBackground(Blue);
- GotoXY(1,25);
- Write('Fertig - ',Sec:5:1, ' Sekunden => ',
- OrigPC/Sec:6:2, ' AD -> Ende mit <RETURN>');
- REPEAT
- UNTIL ReadKey=#13;
- TextBackground(Black);
- ClrScr;
- END.
- (* ------------------------------------------------------ *)
- (* Ende von BUBBLE.PAS *)