Страница 1 из 2

Вид курсора мыши

Добавлено: 26 апр 2008, 20:10
Alex_Burn
Здравствуйте, уважаемые участники форума!

Не знает и кто-нибудь из вас, как менять вид текстового курсора мыши (скажем, изобразить какую-либо фигурку) ? :confused:

Re: Вид курсора мыши

Добавлено: 26 апр 2008, 23:15
airyashov
Задать форму курсора в текстовом режиме
С помощью функции 0Ah программа может изменять форму курсора мыши в текстовом режиме.

Регистры на входе:
AX = 000Ah
BX = тип курсора:
0 - определяемый программно;
1 - определяемый аппаратно;
CX = маска экрана (для BX=0) или начальная строка курсора (для BX=1);
DX = маска курсора (для BX=0) или конечная строка курсора (для BX=1)
Регистры на выходе:
Регистры не используются

В зависимости от содержимого регистра BX драйвер мыши использует курсор, определяемый аппаратными средствами, либо курсор, определяемый программно. По умолчанию используется “программный курсор”, который отображается в виде символа с инвертированным значением атрибута. Курсор, сформированный аппаратными средствами, выглядит аналогично обычному текстовому курсору, его форма - прямоугольник. Размер этого прямоугольника можно задавать при помощи регистров CX и DX.
Для курсора, определяемого программно, вначале выполняется операция логического “И” над содержимым видеопамяти в том месте, куда указывает курсор, и маской экрана. Затем выполняется операция “Исключающее ИЛИ” с маской курсора.
Младший байт масок соответствует коду ASCII символа, старший - это байт атрибута символа.
А.В. Фролов, Г.В. Фролов, 1997 Аппаратное обеспечение персонального компьютера Часть 1

Re: Вид курсора мыши

Добавлено: 27 апр 2008, 14:55
Alex_Burn
Что-то у меня не получается. Вроде и делаю все правильно, а курсор не меняется.
Может быть предоставете небольшой примерчик?

Re: Вид курсора мыши

Добавлено: 27 апр 2008, 21:32
Serge_Bliznykov
Alex_Burn писал(а):Что-то у меня не получается. Вроде и делаю все правильно, а курсор не меняется.
Может быть предоставете небольшой примерчик?

ой... опять всё это непросто.
в виндузовском окне работать НЕ БУДЕТ!
Переводите консоль в полноэкранный режим (ALT-ENTER), обязательно запускайте какое-нибудь DOS приложение, поддерживающее мышь (например, TurboPascal) и там уже смотрите! (ну, или грузите комп с дискетки с DOS'ом)


о вложении.
Вот, в давние-давние времена,
в те времена, когда некоторых нонешных программеров ещё и на свете не было,
был такой комьютерный (софтовый - т.е. исключительно в виде файлов)
киевский журнальчик "Софтпанорама"...
Вот, оттуда я взял сейчас DOS драйвер мышки.
"V-Lab Alpha-Graphics Mouse Driver v.1.04".
с исходниками на ASM.

Re: Вид курсора мыши

Добавлено: 27 апр 2008, 23:41
Alex_Burn
Serge_Bliznykov,
При попытке запустить выложенный вами *.asm файл с помощью AsmConstructor'а у меня появилось 102 ошибки!!
Serge_Bliznykov писал(а): Переводите консоль в полноэкранный режим (ALT-ENTER), обязательно запускайте какое-нибудь DOS приложение, поддерживающее мышь (например, TurboPascal) и там уже смотрите! (ну, или грузите комп с дискетки с DOS'ом)
Нельзя ли по-подробней?

Например, в проге, которую я пытаюсь написать, в Виндоуз графический курсор выводится нормально, а текстовый - в виде прямоугольника, а с дискетки не выводится ни текстовый, ни графический.

З. Ы. Везет мне с заданиями, правда?

Re: Вид курсора мыши

Добавлено: 28 апр 2008, 09:12
somewhere
&quot писал(а):а с дискетки не выводится ни текстовый, ни графический.
Это потому что не загружен драйвер мыши.
Вообще такие вещи всегда делались вручную, никто никакие функции не использовал. Например, люди создавали графический курсор (стрелку) в текстовом режиме. Добивались этого путем программирования знакогенератора - т.е. битовых строк, которые определяют каждый текстовый символ, через порты видеоадаптера.
Причем предполагалось что общее количество различных символов на экране всегда меньше 256-4 (252). Вид тех самых 4 символов, на которых стоял указатель мыши заменялся на битовые изображения этих символов с наложением курсора (стрелки). Только коды этих символов менялись на диапазон с 252-255, чтобы остальные символы на экране не попортились новым изображением. Для примера можно посмотреть NDD.EXE или FFORMAT.COM в которых именно такая реализация.
Примерно по такой же схеме рисовались графические формы поверх текстовых и все в то время удивлялись как люди совмещали графический и текстовый режимы.

Re: Вид курсора мыши

Добавлено: 28 апр 2008, 11:48
airyashov
Вот, пример, под DOSBox работает.
Прога и драйвер мыши.
В NDD.EXE и FFORMAT.COM помоему другой принцип, курсор явно не текстовый, движется не по символам, а по пикселям

Re: Вид курсора мыши

Добавлено: 28 апр 2008, 13:11
somewhere
&quot писал(а):В NDD.EXE и FFORMAT.COM помоему другой принцип, курсор явно не текстовый, движется не по символам, а по пикселям
Курсор движется по символам, просто перепрограммируется внешний вид символов, я об этом уже писал - и, сказать больше, сам писал такие резидентные курсоры.

Re: Вид курсора мыши

Добавлено: 28 апр 2008, 13:17
airyashov
Получается нужно максимально 4 символа постоянно перепрограммировать? Да прикольно вспомнить как все начиналось :)

Re: Вид курсора мыши

Добавлено: 29 апр 2008, 13:01
Alex_Burn
airyashov, спасибо большое за пример и прогу!
Только вот в проге с комментариями проблемы, отображаются плохо. С каким шрифтом это необходимо читать?