[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]

    {***********************************************
    * KBSETUP - set the desired delay/repeat rate  *
    * for the keyboard.                            *
    ***********************************************}

    USES
        Dos;

    PROCEDURE Usage;
      BEGIN
        WriteLn;
        WriteLn('KBSETUP Command format:');
        WriteLn;
        WriteLn('KBSETUP  n {A | B | C | D} ');
        WriteLn;
        Write  ('n            A number from 0 to 31');
        WriteLn(' to set the keyboard repeat rate.');
        Write  ('             0 is the fastest and');
        WriteLn(' 31 is the slowest.');
        WriteLn;
        Write  ('A,B,C or D   Sets the keyboard');
        WriteLn(' delay before repeating');
        Write  ('             to 1/4, 1/2, 3/4 and');
        WriteLn(' 1 second.');
        Halt(1);
      END;

    VAR
      KBDelay, KBRepeat, I : byte;
      Code                 : integer;
      Regs                 : Registers;
      KeyString            : string[1];

    BEGIN

      KBDelay := 0;
      KBRepeat := 0;

      IF ParamCount = 0 THEN
        Usage
      ELSE
        BEGIN
          FOR I := 1 TO ParamCount DO
            BEGIN
              KeyString := ParamStr(I);
            IF UpCase(KeyString[1]) in ['A'..'D'] THEN
              KBDelay := Ord(UpCase(KeyString[1]))
                           - Ord('A')
            ELSE
              BEGIN
                 {$R-}
                Val(ParamStr(I),KBRepeat,Code);
                 {$R+}
                IF (Code <> 0) or (KBRepeat < 0) or
                   (KBRepeat > 31) THEN
                  BEGIN
                    Write('-- Invalid Letter or');
                    Write(' Number Entered --> ');
                    WriteLn(ParamStr(I));
                    Usage
                  END
              END
            END;

            { Set the keyboard delay/repeat rate }

          WITH Regs DO
            BEGIN
              AX := $0305;
              BH := KBDelay;
              BL := KBRepeat;
              Intr($16,Regs)
            END
        END {of the IF/THEN/ELSE instruction}
    END.

[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]