home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 11 / keyboard.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1987-09-08  |  1.9 KB  |  55 lines

  1. (* Beispielprogramm der externen DOS-Funktion "DOSXQQ" in MS-PASCAL 3.2 *)
  2. (*    Autor: W. Wegener            Literatur: MS-PASCAL USER'S GUIDE    *)
  3. PROGRAM demo(Output);
  4.  
  5. VAR ch: CHAR;  dxreg: WORD;
  6.  
  7. (* "public"-Variablen aus der Library. Wert aus "crcxqq" wird vor DOS-
  8.    Call dem CX-Register zugewiesen, "crdxqq" enthaelt den Wert des
  9.    DX-Registers nach dem DOS-Call:                                      *)
  10.  
  11. VAR [EXTERN] crcxqq, crdxqq: WORD;
  12.  
  13. (* externe DOS-Funktion (INT 21H). "command" -> AH-Register, "parameter"
  14.    -> DX-Register,  AL-Register -> Funktionswert:                       *)
  15. FUNCTION DOSxqq (command, parameter: WORD): BYTE; EXTERN;
  16.  
  17. (*      liefert den Wert TRUE, wenn Zeichen im Tastaturpuffer:          *)
  18. FUNCTION KeyPress: BOOLEAN;
  19. BEGIN  KeyPress := DOSxqq(11,0) = 255;  END;
  20.  
  21. (*    Zeicheneingabe mit Bildschirmecho und warten, Control-C aktiv:    *)
  22. FUNCTION CharRead: CHAR;
  23. BEGIN  CharRead := Chr(DOSxqq(1,0));  END;
  24.  
  25. (* Zeicheneingabe ohne Bildschirmecho und ohne warten, Control-C aktiv: *)
  26. FUNCTION KbdRead: CHAR;
  27. BEGIN  KbdRead := Chr(DOSxqq(6,255));  END;
  28.  
  29. (*     Zeicheneingabe ohne Echo, mit warten, Control-C nicht aktiv:     *)
  30. FUNCTION ReadKbd: CHAR;
  31. BEGIN  ReadKbd := Chr(DOSxqq(7,0));  END;
  32.  
  33. (*       Zeicheneingabe ohne Echo, mit warten, Control-C aktiv:         *)
  34. FUNCTION ReadBreak: CHAR;
  35. BEGIN  ReadBreak := Chr(DOSxqq(8,0));  END;
  36.  
  37. (*                           MS-DOS Interrupt 21:                       *)
  38. FUNCTION MSDos (ah: BYTE; cx: WORD; VAR dx: WORD): BYTE;
  39. BEGIN
  40.   crcxqq := cx;  MSDos := DOSxqq(ah,dx);  dx := crdxqq;
  41. END;
  42.  
  43. BEGIN (* demo *)
  44.   ch := CharRead;
  45.   REPEAT UNTIL KeyPress;
  46.   Write(KbdRead);
  47.   REPEAT
  48.     ch := KbdRead;  WriteLn(ch, Ord(ch));
  49.   UNTIL Ord(ch) > 0;
  50.   Write(ReadKbd);
  51.   Write(ReadBreak);
  52.   dxreg := 1;
  53.   Write(MSDos(14,0,dxreg));               (* select B: as default drive *)
  54. END.
  55.