Выяснилось, что с ReadKey(key1, key2); работать неудобно, потому, что искомый код может оказаться в key1 или key2 и нужно их оба проверять. Если их будет 10, то совсем можно будет зашиться. Нужно что-то другое придумать.

Не реализовал функции ArrayClear - ищу способ, Asm - команды другие, так просто не получится её реализовать, MapSearch - толком не понял, что она ищет.
Остальное, вроде, готово. Пересмотрю код, использование флагов и завтра, наверное, уже смогу показать.