home *** CD-ROM | disk | FTP | other *** search
- PROGRAM SpeedUpTest1;
-
- {$R-,S-,I-,D-,F-,V-,B-,N-,L-}
- {
-
- Christian Philipps Software-Technik
- Düsseldorfer Str. 316
- 4130 Moers 1
-
- Januar 1989
- }
-
- USES Crt, CpMulti;
-
- CONST NoTsk = 5;
-
- VAR SoundSem : Pointer; { Koordination des Sound()-Zugriffs }
- TaskNo : Word;
- c : Char;
- Speed : Word;
-
- {---------------------------------------------------------------------------}
-
- {$F+}
- PROCEDURE PiepsTask(P:Pointer);
-
- VAR MyNo : Word;
-
- BEGIN {PiepsTask}
- MyNo := Word(P);
- Writeln('Task Nr. ',MyNo,' ist jetzt aktiv!');
- REPEAT { Taskrumpf }
- SemWait(SoundSem); { Anfordern des Sound-Generators }
- Sound(MyNo * 300);
- Delay(1);
- NoSound;
- SemSignal(SoundSem); { Freigeben des Sound-Generators }
- Sleep(1);
- UNTIL False;
- END; {PiepsTask}
- {$F-}
-
- {---------------------------------------------------------------------------}
-
- BEGIN {Main}
- ClrScr;
- Speed := 1;
-
- { Erzeugen der Semaphoren }
- IF (CreateSem(SoundSem) <> Sem_Ok)
- THEN BEGIN
- Writeln('Fehler beim Erzeugen einer Semaphore!');
- Halt(1);
- END;
-
- { Erzeugen der Pieps-Tasks }
- FOR TaskNo := 1 TO NoTsk DO
- BEGIN
- IF CreateTask(PiepsTask,Pointer(TaskNo),Pri_User,500) < 0
- THEN BEGIN
- Writeln(^G'Fehler beim Erzeugen der Task ',TaskNo);
- Halt(1);
- END;
- END;
-
- { Hauptprogramm - Verarbeitung }
- Writeln('Veränderung des Speedup-Faktors mit +/-; Ende mit ESC');
- REPEAT
- REPEAT Sleep(1); UNTIL Keypressed;
- C := ReadKey;
- SemWait(SoundSem);
- CASE C OF
- '+': Inc(Speed);
- '-': IF Speed > 0
- THEN Dec(Speed);
- END;
- Writeln('Speed=',Speed);
- SpeedUp(Speed);
- SemSignal(SoundSem);
- UNTIL C = #27;
-
- SemWait(SoundSem); { Verhindere weitere Tonerzeugung }
- Window(1,1,80,25);
- GotoXY(1,23);
- END.