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

Por Wierzbowsky

Guardian (3571)

imagem de Wierzbowsky

14-04-2020, 16:15

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

Entrar ou registrar-se para comentar

Por Pyhesty

Expert (84)

imagem de Pyhesty

16-04-2020, 10:56

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

Por Wierzbowsky

Guardian (3571)

imagem de Wierzbowsky

16-04-2020, 13:06

Pyhesty wrote:

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

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

Por Pyhesty

Expert (84)

imagem de Pyhesty

16-04-2020, 16:06

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

Por АIеks

Paladin (949)

imagem de АIеks

18-04-2020, 11:54

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

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

Por Wierzbowsky

Guardian (3571)

imagem de Wierzbowsky

18-04-2020, 13:40

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

Por Wierzbowsky

Guardian (3571)

imagem de Wierzbowsky

26-05-2020, 13:19

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

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

Por neznajka

Champion (306)

imagem de neznajka

28-05-2020, 16:16

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

Por Wierzbowsky

Guardian (3571)

imagem de Wierzbowsky

29-05-2020, 15:09

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

Por АIеks

Paladin (949)

imagem de АIеks

30-05-2020, 11:48

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