{ Return Extended keys for 101 Keyboard including F11/F12. If key is extended, the BOOLEAN = TRUE. This is needed as Home key will return the same character value as 'G' } USES DOS; VAR Ch : Char; Ext : BOOLEAN; function ExReadKey(VAR Extended : BOOLEAN) : char; var Regs : registers; begin Regs.AX := $1000; Intr($16,Regs); Extended := (Regs.AL = 0) OR (Regs.AL > 127); IF Extended THEN ExReadKey := Chr(Regs.AH) ELSE ExReadKey := Chr(Regs.AL); end; function ReadKey : char; { This function adds 128 to char if it is extended } var Regs : registers; begin Regs.AX := $1000; Intr($16,Regs); IF (Regs.AL = 0) OR (Regs.AL > 127) THEN ReadKey := Chr(Regs.AH + 128) ELSE ReadKey := Chr(Regs.AL); end; Begin Repeat ch := ReadKey; WriteLn(ch,' ',Ext,' ',ORD(Ch)); Until Ch = #27; END.