= Сообщение: 20371 из 47640 =============================== RU.FIDONET.TODAY = От : Andrei Kopanchuk 2:5058/108.2 02 Nov 20 04:06:20 Кому : Andrei Kopanchuk 02 Nov 20 04:06:20 Тема : Re: Мысли про фидо-софт-девелопмент в 2020 FGHI : area://RU.FIDONET.TODAY?msgid=2:5058/108.2+5f9f699f На : area://RU.FIDONET.TODAY?msgid=2:5058/108.2+5f9f1eac = Кодировка сообщения определена как: CP866 ================================== ============================================================================== Привет, Andrei
01 ноя 20, Andrei Kopanchuk пишет к Alexey Vissarionov:
AK>>> Скорее всего было связано со скан-кодами, т.к. расширенный набор AK>>> клавиш имел префикс E0, который совпадал с буквой "р" в CP866-й AK>>> кодировке.
AV>> Каким боком скан-коды к кодам символов?
AK> Прямым образом. Некоторый софт просто не дает ввести букву из-за AK> корявой обработки скан-кода нажатой клавиши. В том же мелкософтовском AK> QBASIC при обработке INPUT.
Кстати, ради интереса решил посмотреть, что же там QB накопмилировал.
В общем, процедура обработки клавиатуры по INT 16 получает ASCII код нажатой клавиши, если в регистре AL содержится значение E0 или F0 - запускается пост-обработка.
Не совсем ясно зачем это было сделано, так как в случае нажатия клавиш с префиксами E0 и F0, INT 16 возвращает их код в регистре AH, обнуляя AL. Возможно, на древних машинах это работало как-то по-другому.
В нашем же случае с кодом E0 в AL, мы просто получим нулевой код на выходе процедуры пост-обработки, так как она работает с регистром AH, в котором фактически ничего нет.
Andrei Kopanchuk
--- GoldED+/W32-MSVC 1.1.5-b20170303 * Origin: 15 CPS на Handshake EMSI. YooHooHoo! И бyтылка пива (2:5058/108.2)