Здравствуйте, уважаемые участники форума!
Не знает и кто-нибудь из вас, как менять вид текстового курсора мыши (скажем, изобразить какую-либо фигурку) ?
Вид курсора мыши
Модератор: Andy
А.В. Фролов, Г.В. Фролов, 1997 Аппаратное обеспечение персонального компьютера Часть 1Задать форму курсора в текстовом режиме
С помощью функции 0Ah программа может изменять форму курсора мыши в текстовом режиме.
Регистры на входе:
AX = 000Ah
BX = тип курсора:
0 - определяемый программно;
1 - определяемый аппаратно;
CX = маска экрана (для BX=0) или начальная строка курсора (для BX=1);
DX = маска курсора (для BX=0) или конечная строка курсора (для BX=1)
Регистры на выходе:
Регистры не используются
В зависимости от содержимого регистра BX драйвер мыши использует курсор, определяемый аппаратными средствами, либо курсор, определяемый программно. По умолчанию используется “программный курсор”, который отображается в виде символа с инвертированным значением атрибута. Курсор, сформированный аппаратными средствами, выглядит аналогично обычному текстовому курсору, его форма - прямоугольник. Размер этого прямоугольника можно задавать при помощи регистров CX и DX.
Для курсора, определяемого программно, вначале выполняется операция логического “И” над содержимым видеопамяти в том месте, куда указывает курсор, и маской экрана. Затем выполняется операция “Исключающее ИЛИ” с маской курсора.
Младший байт масок соответствует коду ASCII символа, старший - это байт атрибута символа.
Что-то у меня не получается. Вроде и делаю все правильно, а курсор не меняется.
Может быть предоставете небольшой примерчик?
Может быть предоставете небольшой примерчик?
-
- Сообщения: 366
- Зарегистрирован: 31 авг 2007, 03:06
Alex_Burn писал(а):Что-то у меня не получается. Вроде и делаю все правильно, а курсор не меняется.
Может быть предоставете небольшой примерчик?
ой... опять всё это непросто.
в виндузовском окне работать НЕ БУДЕТ!
Переводите консоль в полноэкранный режим (ALT-ENTER), обязательно запускайте какое-нибудь DOS приложение, поддерживающее мышь (например, TurboPascal) и там уже смотрите! (ну, или грузите комп с дискетки с DOS'ом)
о вложении.
Вот, в давние-давние времена,
в те времена, когда некоторых нонешных программеров ещё и на свете не было,
был такой комьютерный (софтовый - т.е. исключительно в виде файлов)
киевский журнальчик "Софтпанорама"...
Вот, оттуда я взял сейчас DOS драйвер мышки.
"V-Lab Alpha-Graphics Mouse Driver v.1.04".
с исходниками на ASM.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Serge_Bliznykov,
При попытке запустить выложенный вами *.asm файл с помощью AsmConstructor'а у меня появилось 102 ошибки!!
Например, в проге, которую я пытаюсь написать, в Виндоуз графический курсор выводится нормально, а текстовый - в виде прямоугольника, а с дискетки не выводится ни текстовый, ни графический.
З. Ы. Везет мне с заданиями, правда?
При попытке запустить выложенный вами *.asm файл с помощью AsmConstructor'а у меня появилось 102 ошибки!!
Нельзя ли по-подробней?Serge_Bliznykov писал(а): Переводите консоль в полноэкранный режим (ALT-ENTER), обязательно запускайте какое-нибудь DOS приложение, поддерживающее мышь (например, TurboPascal) и там уже смотрите! (ну, или грузите комп с дискетки с DOS'ом)
Например, в проге, которую я пытаюсь написать, в Виндоуз графический курсор выводится нормально, а текстовый - в виде прямоугольника, а с дискетки не выводится ни текстовый, ни графический.
З. Ы. Везет мне с заданиями, правда?
Это потому что не загружен драйвер мыши." писал(а):а с дискетки не выводится ни текстовый, ни графический.
Вообще такие вещи всегда делались вручную, никто никакие функции не использовал. Например, люди создавали графический курсор (стрелку) в текстовом режиме. Добивались этого путем программирования знакогенератора - т.е. битовых строк, которые определяют каждый текстовый символ, через порты видеоадаптера.
Причем предполагалось что общее количество различных символов на экране всегда меньше 256-4 (252). Вид тех самых 4 символов, на которых стоял указатель мыши заменялся на битовые изображения этих символов с наложением курсора (стрелки). Только коды этих символов менялись на диапазон с 252-255, чтобы остальные символы на экране не попортились новым изображением. Для примера можно посмотреть NDD.EXE или FFORMAT.COM в которых именно такая реализация.
Примерно по такой же схеме рисовались графические формы поверх текстовых и все в то время удивлялись как люди совмещали графический и текстовый режимы.
It's a long way to the top if you wanna rock'n'roll
Вот, пример, под DOSBox работает.
Прога и драйвер мыши.
В NDD.EXE и FFORMAT.COM помоему другой принцип, курсор явно не текстовый, движется не по символам, а по пикселям
Прога и драйвер мыши.
В NDD.EXE и FFORMAT.COM помоему другой принцип, курсор явно не текстовый, движется не по символам, а по пикселям
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Курсор движется по символам, просто перепрограммируется внешний вид символов, я об этом уже писал - и, сказать больше, сам писал такие резидентные курсоры." писал(а):В NDD.EXE и FFORMAT.COM помоему другой принцип, курсор явно не текстовый, движется не по символам, а по пикселям
It's a long way to the top if you wanna rock'n'roll
Получается нужно максимально 4 символа постоянно перепрограммировать? Да прикольно вспомнить как все начиналось
airyashov, спасибо большое за пример и прогу!
Только вот в проге с комментариями проблемы, отображаются плохо. С каким шрифтом это необходимо читать?
Только вот в проге с комментариями проблемы, отображаются плохо. С каким шрифтом это необходимо читать?