PDA

Просмотр полной версии : Странное поведение курсора на арабских и корейских MSX



Wierzbowsky
14.04.2020, 17:18
В процессе улучшения бутблока для Карнивора я столкнулся со странным поведением курсора на арабских и корейских MSX. Если использовать функцию биоса CHGET (#009F), которая ожидает ввода, то курсор появляется и работает нормально. Но если не используя эту функцию самому включить курсор переменной по адресу #FCA9, то начинаются чудеса. На арабских машинках курсор становится белым и непрозрачным, а на корейских - чёрным и тоже непрозрачным. К тому же на арабских машинках перемещение курсора оставляет на прежнем месте его копию. Кто-нибудь знает что это за хрень и как её победить?

Wierzbowsky
26.05.2020, 14:17
Проблема была решена ручной эмуляцией курсора на корейских MSX. Чтобы был виден символ под курсором, в матрицу символа курсора копируется инвертированная матрица символа, над которым находится курсор. При перемещении курсора матрица обновляется, а в конце работы оригинальная матрица символа курсора восстанавливается.

На арабских MSX включать курсор вообще нельзя - он повсюду начинает оставлять свои копии. Также арабский БИОС не обновляет в области переменных байт, в котором хранится символ, над которым находится курсор. В итоге было решено сделать символ под курсором мигающим, как на Apple II. На обработчик клавиатуры был "повешен" код, который периодически меняет символ под курсором на подчёркивание, а затем восстанавливает его.