There is an incompatibility between the CRT unit in Free Pascal 3.0.4 and recent versions of Windows 10.
Consider this simple program:
uses CRT;
begin
while true do
writeln(ord(ReadKey));
end.
It will write out one or two numbers depending on the key pressed.
If the key has an ASCII code, it writes out the ASCII code.
For example, Shift-A writes 65, the ASCII code for a capital A.
Otherwise it writes out a zero and then the scan code of the key.
For example the F1 key writes out 0 and then 59 (the scan code for F1).
Now consider the key combination Ctrl-End.
When running this program under Windows 10 version 1903, Ctrl-End does absolutely nothing.
When running this program under Windows XP, Windows 7, or ever earlier versions of Windows 10, Ctrl-End writes out 0 and then 117, the scan code for Ctrl-End.
It doesn't matter under which OS the program was compiled. It only matters under which OS it is executed.
Now it's not the case that Ctrl-End is completely dead in Win 10 ver 1903. Here is a demo of one case where it does work as intended:
Open a command shell (cmd.exe) window.
On the command line, type a long line of text, then position the cursor in the middle of it, and hit Ctrl-End. The text to the right of the cursor is deleted as intended.