home *** CD-ROM | disk | FTP | other *** search
-
- PROGRAM REPRATE;
- { REPEAT- RATE DER TASTATUR EINSTELLEN }
-
- USES CRT;
-
-
- VAR I,J : INTEGER;
- ANSP,WIED : BYTE;
- CH : CHAR;
- DISP : BOOLEAN;
-
-
- PROCEDURE SETRATE;
- VAR OBYTE : BYTE;
- BEGIN
- PORT[$60] := $F3;
- DELAY(10);
- {
- D5..D6 = ANSPRECHZEIT IN 250 MS
- D0..D4 = WIEDERHOLRATE
- }
- OBYTE := (ANSP AND 3) SHL 5 + (WIED AND $1F);
- PORT[$60] := OBYTE;
-
- IF DISP THEN BEGIN
- WINDOW(1,1,80,25);
- TEXTCOLOR(4);
- GOTOXY(19,8); WRITE(ANSP:2);
- GOTOXY(19,9); WRITE(WIED:2);
- TEXTCOLOR(7);
- WINDOW(2,13,78,13);
- END;
- END;
-
-
- PROCEDURE INCANSP;
- BEGIN
- IF ANSP < 3 THEN BEGIN
- INC(ANSP);
- SETRATE;
- END ELSE WRITE(CHR(7));
- END;
-
-
- PROCEDURE DECANSP;
- BEGIN
- IF ANSP > 0 THEN BEGIN
- DEC(ANSP);
- SETRATE;
- END ELSE WRITE(CHR(7));
- END;
-
-
- PROCEDURE DECWIED;
- BEGIN
- IF WIED > 0 THEN BEGIN
- DEC(WIED);
- SETRATE;
- END ELSE WRITE(CHR(7));
- END;
-
-
- PROCEDURE INCWIED;
- BEGIN
- IF WIED < 31 THEN BEGIN
- INC(WIED);
- SETRATE;
- END ELSE WRITE(CHR(7));
- END;
-
-
-
-
- PROCEDURE FUNKTAST;
- VAR CH : CHAR;
- BEGIN
- CH := READKEY;
- CASE ORD(CH) OF
- 72 : INCANSP;
- 80 : DECANSP;
- 75 : DECWIED;
- 77 : INCWIED;
- END; { CASE }
- DELAY(6*(WIED XOR $1F));
- END;
-
-
- BEGIN
- DISP := FALSE;
- IF PARAMCOUNT = 2 THEN BEGIN
- VAL(PARAMSTR(1),ANSP,I);
- VAL(PARAMSTR(2),WIED,J);
- IF (I+J) <> 0 THEN HALT(0);
- IF NOT(ANSP IN [0..3]) THEN HALT(0);
- IF NOT(WIED IN [0..31]) THEN HALT(0);
- SETRATE;
- HALT(0);
- END;
-
- DISP := TRUE;
-
- TEXTBACKGROUND(0);
- CLRSCR;
-
- TEXTCOLOR(14);
-
- GOTOXY(1,2);
- WRITE('╔'); FOR I := 1 TO 77 DO WRITE('═'); WRITE('╗');
- FOR I := 3 TO 5 DO BEGIN GOTOXY(1,I); WRITE('║'); GOTOXY(79,I); WRITE('║'); END;
- GOTOXY(1,6);
- WRITE('╟'); FOR I := 1 TO 77 DO WRITE('─'); WRITE('╢');
- FOR I := 7 TO 11 DO BEGIN GOTOXY(1,I); WRITE('║'); GOTOXY(79,I); WRITE('║'); END;
- GOTOXY(1,12);
- WRITE('╟'); FOR I := 1 TO 77 DO WRITE('─'); WRITE('╢');
- FOR I := 13 TO 13 DO BEGIN GOTOXY(1,I); WRITE('║'); GOTOXY(79,I); WRITE('║'); END;
-
- GOTOXY(1,14);
- WRITE('╚'); FOR I := 1 TO 77 DO WRITE('═'); WRITE('╝');
-
- TEXTCOLOR(7);
-
- WINDOW(3,3,77,5);
- TEXTBACKGROUND(1);
- TEXTCOLOR(15);
- CLRSCR;
- GOTOXY(8,2);
- WRITE('Einstellen der Ansprechzeit und Wiederholrate des Autorepeat');
- WINDOW(1,1,80,25);
- TEXTBACKGROUND(0);
- TEXTCOLOR(7);
-
- GOTOXY(3,8);
- WRITE(' Ansprechzeit = 1 (0..3) ',#24,' = länger, ',#25,' = kürzer');
- GOTOXY(3,9);
- WRITE('Wiederholrate = 12 (0..31) ',#27,' = schneller, ',#26,' = langsamer');
- GOTOXY(39,10);
- WRITE('Ende mit <Esc>');
-
- ANSP := 1; { 0..3 }
- WIED := 12; { 0..31 }
- SETRATE;
-
- WINDOW(2,13,78,13);
- REPEAT
- CH := READKEY;
- IF CH = ^@ THEN FUNKTAST ELSE BEGIN
- IF CH <> ^[ THEN BEGIN
- WRITE(' ');
- SOUND(1000+(30*(WIED XOR $1F)));
- DELAY(4);
-
- SOUND(500-(70*ANSP));
- DELAY(10);
-
- NOSOUND;
- END;
- END;
- UNTIL CH = ^[;
-
- WINDOW(1,1,80,25);
- GOTOXY(1,14);
- END.