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

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Вид курсора мыши

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

airyashov » 12 май 2008, 10:24

получить адрес памяти где хранятся коды знакогенератора для символов 128-255

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

Alex_Burn » 09 май 2008, 17:59

г-н airyashov, а что в вашем примере значат следующие строки?

[Syntax="ASM"]
mov ax,1130h
mov bx, 0004h
int 10h
[/Syntax]

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

Alex_Burn » 01 май 2008, 18:18

Всем большое спасибо за помощь! Вроде разобрался.
Что касается задания, то просто хотелось, чтобы форма курсора в графическом режиме была отлична от прямоугольника.

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

somewhere » 29 апр 2008, 19:02

&quot писал(а):Там еще тонкость, что помимо программирования вида символов хорошо бы (если речь шла о VGA) перевести экран в режим матрицы символа 8x16 (из 9x16). Для лучшей смотрибельности.
Ну да, была такая фича. Я когда делал, всегда смотрел видеорежим чтобы определить размер матрицы. Ну или функцию Int 10h юзал для ее определения. Зато прикольно, когда по нортону вместо красного прямоугольника настоящий курсор ходил. Косяк только один был - его цвет, т.к. он зависел от аттрибутов символов и мог быть неравномерным.
&quot писал(а):Я подозреваю, что это черезчур для учебной задачки Alex_Burn-а
Просто внешне показалось, что нужно реализовать графический курсор в текстовом режиме, который не "шагает" по символьной матрице, а двигается плавно.

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

BBB » 29 апр 2008, 16:02

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

Я подозреваю, что это черезчур для учебной задачки Alex_Burn-а. Видимо, ему как раз достаточно через Int 33h, AX = 000Ah, как написал airyashovв #2.

А через постоянное перепрограммирование внешнего вида символов мы как-то раз реалировали "бегущее сообщение". Наподобие того, как бегут по экрану (снизу вверх) титры кинофильма.

Там еще тонкость, что помимо программирования вида символов хорошо бы (если речь шла о VGA) перевести экран в режим матрицы символа 8x16 (из 9x16). Для лучшей смотрибельности.

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

airyashov » 29 апр 2008, 16:02

[Syntax="Asm"]
.startup
mov ax,0003h ; установить 03h режим 80х25
int 10h
mov dx,offset infoprog ; вывести информационное сообщение
mov ax,0900h
int 21h
mov ax,0c07h ; ожидаем нажатие Enter для запуска программы
int 21h
cmp al,0dh; Нажата клавиша Enter?
jz run_prog ; если да, то запустить программу
jmp exit_prog; иначе выход из программы
run_prog:
xor ax,ax ; проверяем наличии манипулятора мышь
int 33h
cmp ax,0ffffh; если результат равен 0ffffh то все в порядке
je mouse_ok
mov ax, 0900h; иначе выдать предупреждение и завершить программу
mov dx, offset mouse_err
int 21h
exit_prog:
mov ax, 4c00h ; закончить программу
int 21h

mouse_ok:
....
mov ax, 0001h ; включить мышь
int 33h
....
GetChar:
mov ax,0700h ; ожидаем нажатие на клавишу Esc
int 21h
cmp al,27;нажата Esc?
jne GetChar; если нет продолжить опрос клавиатуры

mov ax, 0002h ; выключить мышь
int 33h

mov ax, 4c00h ; закончить программу
int 21h
end[/Syntax]

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

somewhere » 29 апр 2008, 15:15

Какой-то древнеукраинский или кривой Т9 )))))

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

Alex_Burn » 29 апр 2008, 13:43

С вашего позволения, покажу то,что вижу.

[Syntax="Asm"]

.model small
.stack 100h
.286p
.data
infoprog db 10,13,"Mouse test",10,13,'$'
mouse_err db 10,13,"Mouse error",10,13,'$'
sym db 11111111b
db 11111111b
db 11111000b
db 11111000b
db 11111000b
db 11011000b
db 11001100b
db 11001100b
db 00000110b
db 00000110b
db 00000011b
db 00000011b
db 00000001b
db 00000001b
db 00000000b
db 00000000b

db 0,0,0,0,0,0,0,0
.code
.startup
mov ax,0003h ; гсвановивм 03h режим 80е25
int 10h
mov dx,offset infoprog ; влвесви индормажионное сообйение
mov ax,0900h
int 21h
mov ax,0c07h ; ожидаем нажавие Enter длп запгска программл
int 21h
cmp al,0dh; Ќажава клавииа Enter?
jz run_prog ; если да, во запгсвивм программг
jmp exit_prog; иназе влеод из программл
run_prog:
xor ax,ax ; проверпем нализии манипглпвора млим
int 33h
cmp ax,0ffffh; если резглмвав равен 0ffffh во все в порпдке
je mouse_ok
mov ax, 0900h; иназе влдавм предгпреждение и завериивм программг
mov dx, offset mouse_err
int 21h
exit_prog:
mov ax, 4c00h ; законзивм программг
int 21h

mouse_ok:
mov ax,1130h
mov bx, 0004h
int 10h

mov ax,1100h
mov cx,1
mov dx,255
mov bx,1000h
push ds
pop es
mov bp, offset sym
int 10h

mov ax,0200h
mov dx,255
int 21h

mov ax, 0001h ; вклозивм млим
int 33h

mov ax,000ah
mov bx,0
mov cx,0ff00h
mov dx,000ffh
int 33h

GetChar:
mov ax,0700h ; ожидаем нажавие на клавииг Esc
int 21h
cmp al,27;нажава Esc?
jne GetChar; если нев продолживм опрос клавиавгрл

mov ax, 0002h ; влклозивм млим
int 33h

mov ax, 4c00h ; законзивм программг
int 21h
end


[/Syntax]

Так-то ничего страшного, но читать не приятно. Да и хотелось-бы знать, что вы там написали.

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

airyashov » 29 апр 2008, 13:17

Попробуйте WIN кодировку Я пишу в RadASM, открываете наверное под DOS

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

Alex_Burn » 29 апр 2008, 13:01

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

Вернуться к началу