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

Door Wierzbowsky

Guardian (3648)

afbeelding van Wierzbowsky

14-04-2020, 16:15

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

Aangemeld of registreer om reacties te plaatsen

Van Pyhesty

Expert (97)

afbeelding van Pyhesty

16-04-2020, 10:56

если курсор выводится видеопроцессором в виде спрайта? может быть дело в версии или совместимости по видео процессору?...

Van Wierzbowsky

Guardian (3648)

afbeelding van Wierzbowsky

16-04-2020, 13:06

Pyhesty wrote:

если курсор выводится видеопроцессором в виде спрайта? может быть дело в версии или совместимости по видео процессору?...

Не болтайте ерундой. Big smile Где Вы видели спрайты в текстовом режиме? Видеопроцессоры на двушках везде одинаковые.

Van Pyhesty

Expert (97)

afbeelding van Pyhesty

16-04-2020, 16:06

Smile Big smile
да ладно, я зашёл разговор поддержать...
хотя не очевидно, почему бы курсор не выводить аппаратным способом через видеопроцессор...
то есть выводить курсов через функции видеопроцессора - это достаточно логично...
сейчас поищу букварь на него =)))

Van АIеks

Paladin (983)

afbeelding van АIеks

18-04-2020, 11:54

Тут уникальный случай. Софт у вас самописный. Оригинальный софт я так понимаю, работает без особых нареканий.

Снова чего-то в биос-е переделали под свои нужды. Вы же с этим не в первый раз сталкивайтесь? Да иметься не совместимость от машинки к машинке MSX. Я тоже удивлялся одно время. Но когда почитал про IBM совместимые машины, впал в ступор о их совместимости между собой.

Van Wierzbowsky

Guardian (3648)

afbeelding van Wierzbowsky

18-04-2020, 13:40

Я уже победил этот глюк на Корейцах. Приходится вручную формировать символ курсора #FF путём копирования в него инверсной копии образа символа, на котором находится курсор. На Арабцах курсор находится в символе #00, и этот подход тоже бы сработал. Но символ под курсором не определяется. Вот думаю как это обойти...

Van Wierzbowsky

Guardian (3648)

afbeelding van Wierzbowsky

26-05-2020, 13:19

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

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

Van neznajka

Champion (306)

afbeelding van neznajka

28-05-2020, 16:16

А оно так на всех работает или можно заранее определить на какой машине запускается?

Van Wierzbowsky

Guardian (3648)

afbeelding van Wierzbowsky

29-05-2020, 15:09

Можно определить по данным в знакогенераторе. У корейцев и арабцев символы с одинаковым номером имеют разные данные, отличные от других машин.

Van АIеks

Paladin (983)

afbeelding van АIеks

30-05-2020, 11:48

Alexey, круто. Правда ничего не понял. Не обучен корейской мысленью (вам удалось понять) Big smile