Apple III Pascal: Reading special keyboard characters (2 of 2)

Apple III Pascal: Reading special keyboard characters (2 of 2)

  procedure KEY_NAME;
    var Its_There: integer;
    begin
      Key:= ' '; {Initialize as one character}
      if (A > 127) then A:= A - 128; {Open-Apple
                                      flagged elsewhere}
      if (A < 33) then begin
        Its_There:= pos ('Special', Mod_Key);
        if (Its_There > 0) then begin
          case (A) of
             8: Key:= 'LeftArrow';
             9: Key:= 'Tab';
            10: Key:= 'DownArrow';
            11: Key:= 'UpArrow';
            13: Key:= 'Enter';
            21: Key:= 'RightArrow';
            27: Key:= 'Escape';
            32: Key:= 'Space'
          end;
          delete (Mod_Key, 1, 7); {Delete 'Special'}
        end
        else begin
          Key [1]:= chr (A + 64); {Convert to regular character}
          if (A = 13) then begin
            Its_There:= pos ('Control', Mod_Key);
            if (Its_There = 0) then Key:= 'Return'
          end
        end
      end
      else begin {Printing characters}
        Key [1]:= chr (A);
        if (A = 127) then Key:= 'Delete'
      end
    end; {Key_Name}
 
  begin
    write (chr (28)); {Clear viewport}
    KBD_MODE (128); {Request 2-byte keyboard operation}
    repeat
      write ('Enter key combination: ');
      READ_TWO;
      MODIFIER; {Interpret Byte_B}
      KEY_NAME; {Interpret Byte_A}
      writeln (Mod_Key, Key);
    until (Key = 'Escape');
    KBD_MODE (0) {Restore 1-byte keyboard operation}
  end. {Two_Bytes}