home *** CD-ROM | disk | FTP | other *** search
- (**********************************************************)
- (* *)
- (* Filename TASTATUR.PAS *)
- (* *)
- (* TOOLBOX-Spezial III Echtzeitverarbeitung *)
- (* *)
- (* (C) TOOLBOX und Thomas Lang 1988 *)
- (* *)
- (* Dieses File enthält die Bearbeitung der Tastatur *)
- (* bei dem Anwenderprogramm. Die Aufgabe besteht darin, *)
- (* die Tastatur abzufragen, bei Buchstaben diese zu *)
- (* verarbeiten, und ein Geräusch auszugeben. Es wird *)
- (* Periodic 2 benutzt. *)
- (* *)
- (**********************************************************)
-
- Procedure EingabeAuswerten(Ch:Char);
- Begin
- If (Ord(Ch)>=Ord('A')) And (Ord(Ch)<=Ord('Z')) Then Begin
- (* identisch zu *)
- (* Ch In ['A'..'Z'] *)
- (* aber schneller *)
-
- GotoXY(EingabeSpalte+AnzahlEingaben,
- FolgeZeile+FolgeNummer);
- Write(Ch);
-
- If (Ch=Folge[AnzahlEingaben+1]) Then Begin
- (* Character ist Ok *)
- AnzahlEingaben:=AnzahlEingaben+1;
- If (AnzahlEingaben=FolgenLaenge) Then Begin
- (* Folge komplett richtig *)
- FolgeEingeben:=False;
- DruckText(' richtig');
- DruckLn;
- GotoXY(BewertungsSpalte,FolgeZeile+FolgeNummer);
- Write('richtig');
- NoSound;
- AnzahlRichtig:=AnzahlRichtig+1;
- End; (* zu Folge komplett *)
- End (* zu Character ist Ok *)
-
- Else Begin (* falscher Buchstabe *)
- FolgeOk:=False;
- FolgeEingeben:=False;
- NoSound;
- DruckInteger(AnzahlEingaben,6);
- DruckText(' Buchstaben Ok, dann Fehler');
- DruckLn;
- GotoXY(BewertungsSpalte,FolgeZeile+FolgeNummer);
- Write(AnzahlEingaben:1);
- Write(' Ok, dann Fehler');
- RichtigBuchstaben:=RichtigBuchstaben+
- AnzahlEingaben;
- End; (* zu falschem Buchstaben *)
-
- End; (* zu Ch In A..Z *)
- (* kein Else, da andere *)
- (* Zeichen nicht beachtet *)
- (* werden *)
- End;
-
- Procedure PPeriodic2; (* Aufgabe der Per2 *)
- Var
- Ch:Char;
- Begin
- If Keypressed Then Begin (* nur wenn Taste gedrückt *)
-
- Read(Kbd,Ch); (* lese ohne Echo *)
- Ch:=UpCase(Ch); (* und in Großbuchstaben *)
- (* umwandeln *)
-
- If FolgeEingeben Then
- EingabeAuswerten(Ch)
-
- Else
- If RestDrucken Then Begin
- If (Ch=' ') Then
- Ende:=True; (* abbrechen *)
- End; (* zu RestDrucken *)
-
- End; (* zu KeyPressed *)
-
- If (FolgeEingeben=True) Then Begin
- (* weder falscher Buchstabe *)
- (* noch fertig *)
- Frequenz:=Frequenz+SoundDelta;
- Sound(Round(Frequenz));
- End;
-
- TastenZeit:=TastenZeit+TastenDelta;
- PutPerAbs(2,TastenZeit); (* wieder neu in Aufgaben- *)
- (* liste eintragen. *)
- End;