home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / tp_util / reprate.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1990-03-04  |  3.1 KB  |  164 lines

  1.  
  2. PROGRAM REPRATE;
  3. { REPEAT- RATE DER TASTATUR EINSTELLEN }
  4.  
  5. USES  CRT;
  6.  
  7.  
  8. VAR   I,J            : INTEGER;
  9.       ANSP,WIED      : BYTE;
  10.       CH             : CHAR;
  11.       DISP           : BOOLEAN;
  12.  
  13.  
  14. PROCEDURE SETRATE;
  15. VAR   OBYTE   : BYTE;
  16. BEGIN
  17.   PORT[$60] := $F3;
  18.   DELAY(10);
  19. {
  20.   D5..D6 = ANSPRECHZEIT IN 250 MS
  21.   D0..D4 = WIEDERHOLRATE
  22. }
  23.   OBYTE := (ANSP AND 3) SHL 5 + (WIED AND $1F);
  24.   PORT[$60] := OBYTE;
  25.  
  26.   IF DISP THEN BEGIN
  27.     WINDOW(1,1,80,25);
  28.     TEXTCOLOR(4);
  29.     GOTOXY(19,8); WRITE(ANSP:2);
  30.     GOTOXY(19,9); WRITE(WIED:2);
  31.     TEXTCOLOR(7);
  32.     WINDOW(2,13,78,13);
  33.   END;
  34. END;
  35.  
  36.  
  37. PROCEDURE INCANSP;
  38. BEGIN
  39.   IF ANSP < 3 THEN BEGIN
  40.     INC(ANSP);
  41.     SETRATE;
  42.   END ELSE WRITE(CHR(7));
  43. END;
  44.  
  45.  
  46. PROCEDURE DECANSP;
  47. BEGIN
  48.   IF ANSP > 0 THEN BEGIN
  49.     DEC(ANSP);
  50.     SETRATE;
  51.   END ELSE WRITE(CHR(7));
  52. END;
  53.  
  54.  
  55. PROCEDURE DECWIED;
  56. BEGIN
  57.   IF WIED > 0 THEN BEGIN
  58.     DEC(WIED);
  59.     SETRATE;
  60.   END ELSE WRITE(CHR(7));
  61. END;
  62.  
  63.  
  64. PROCEDURE INCWIED;
  65. BEGIN
  66.   IF WIED < 31 THEN BEGIN
  67.     INC(WIED);
  68.     SETRATE;
  69.   END ELSE WRITE(CHR(7));
  70. END;
  71.  
  72.  
  73.  
  74.  
  75. PROCEDURE FUNKTAST;
  76. VAR   CH    : CHAR;
  77. BEGIN
  78.   CH := READKEY;
  79.   CASE ORD(CH) OF
  80.     72 : INCANSP;
  81.     80 : DECANSP;
  82.     75 : DECWIED;
  83.     77 : INCWIED;
  84.   END; { CASE }
  85.   DELAY(6*(WIED XOR $1F));
  86. END;
  87.  
  88.  
  89. BEGIN
  90.   DISP := FALSE;
  91.   IF PARAMCOUNT = 2 THEN BEGIN
  92.     VAL(PARAMSTR(1),ANSP,I);
  93.     VAL(PARAMSTR(2),WIED,J);
  94.     IF (I+J) <> 0 THEN HALT(0);
  95.     IF NOT(ANSP IN [0..3]) THEN HALT(0);
  96.     IF NOT(WIED IN [0..31]) THEN HALT(0);
  97.     SETRATE;
  98.     HALT(0);
  99.   END;
  100.  
  101.   DISP := TRUE;
  102.  
  103.   TEXTBACKGROUND(0);
  104.   CLRSCR;
  105.  
  106.   TEXTCOLOR(14);
  107.  
  108.   GOTOXY(1,2);
  109.   WRITE('╔'); FOR I := 1 TO 77 DO WRITE('═'); WRITE('╗');
  110.   FOR I := 3 TO 5 DO BEGIN GOTOXY(1,I); WRITE('║'); GOTOXY(79,I); WRITE('║'); END;
  111.   GOTOXY(1,6);
  112.   WRITE('╟'); FOR I := 1 TO 77 DO WRITE('─'); WRITE('╢');
  113.   FOR I := 7 TO 11 DO BEGIN GOTOXY(1,I); WRITE('║'); GOTOXY(79,I); WRITE('║'); END;
  114.   GOTOXY(1,12);
  115.   WRITE('╟'); FOR I := 1 TO 77 DO WRITE('─'); WRITE('╢');
  116.   FOR I := 13 TO 13 DO BEGIN GOTOXY(1,I); WRITE('║'); GOTOXY(79,I); WRITE('║'); END;
  117.  
  118.   GOTOXY(1,14);
  119.   WRITE('╚'); FOR I := 1 TO 77 DO WRITE('═'); WRITE('╝');
  120.  
  121.   TEXTCOLOR(7);
  122.  
  123.   WINDOW(3,3,77,5);
  124.   TEXTBACKGROUND(1);
  125.   TEXTCOLOR(15);
  126.   CLRSCR;
  127.   GOTOXY(8,2);
  128.   WRITE('Einstellen der Ansprechzeit und Wiederholrate des Autorepeat');
  129.   WINDOW(1,1,80,25);
  130.   TEXTBACKGROUND(0);
  131.   TEXTCOLOR(7);
  132.  
  133.   GOTOXY(3,8);
  134.   WRITE(' Ansprechzeit =  1 (0..3)           ',#24,' = länger,     ',#25,' = kürzer');
  135.   GOTOXY(3,9);
  136.   WRITE('Wiederholrate = 12 (0..31)          ',#27,' = schneller,  ',#26,' = langsamer');
  137.   GOTOXY(39,10);
  138.   WRITE('Ende mit <Esc>');
  139.  
  140.   ANSP := 1;  { 0..3 }
  141.   WIED := 12; { 0..31 }
  142.   SETRATE;
  143.  
  144.   WINDOW(2,13,78,13);
  145.   REPEAT
  146.     CH := READKEY;
  147.     IF CH = ^@ THEN FUNKTAST ELSE BEGIN
  148.       IF CH <> ^[ THEN BEGIN
  149.         WRITE(' ');
  150.         SOUND(1000+(30*(WIED XOR $1F)));
  151.         DELAY(4);
  152.  
  153.         SOUND(500-(70*ANSP));
  154.         DELAY(10);
  155.  
  156.         NOSOUND;
  157.       END;
  158.     END;
  159.   UNTIL CH = ^[;
  160.  
  161.   WINDOW(1,1,80,25);
  162.   GOTOXY(1,14);
  163. END.
  164.