1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| RNic7 |
Сообщение
#1
|
![]() Группа: Пользователи Сообщений: 4 Пол: Мужской Реальное имя: Nick Репутация: 0 |
По нажатию на левую кнопку мыши все символы переворачиваются вверх ногами. по наведению мыши на символ "Ф", он меняется на "Р".
Буду очень признателен, если хотя бы намекнете, как делать. Устал висеть в гугле уже третие сутки |
![]() ![]() |
| Федосеев Павел |
Сообщение
#2
|
|
Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 481 Пол: Мужской Реальное имя: Федосеев Павел Репутация: 9 |
Хоть эпоха DOS и ушла, но баловство со знакогенератором привлекло...
На работе на одном из стендов FreeDOS и можно было поэкспериментировать. Приводить полностью всё не буду - подскажу лишь алгоритм в общем виде.
Идея следующая. 1. Получить характеристики шрифта, т.е. размеры символа (в точках) 8x8, 8x14, 8x16, 9x14, 9x16 и размер в байтах. Это берётся из переменной BIOS'а по адресу $0040:$0085 и из прерывания int 10h, функция 11h, подфункция 30h, которое возвращает характеристики текущего шрифта и указатель на одну из таблиц знакогенератора (по выбору). 2. Теперь мы знаем размеры шрифтов и можем из той же процедуры получить указатель на текущую таблицу знакогенератора. 3. Переворачиваем каждый символ в таблице - т.е. меняем местами строки (байты или слова) в описании каждого глифа. Так для 8х16: 0-я строка (байт) меняется с 15-й, 1-я - с 14-й и т.д. 4. Но пока не вызовем int 10h, функция 11h, подфункция 10h изменения не вступят в силу - значит вызываем. Детали реализации будут проясняться по мере изучения материала. Дерзай! Узким местом в моей реализации является приведение типов - шаманство с массивами [0..0]. Не все переменные нужны для реализации - стоит сделать ревизию. И прошу прощения за странные имена переменных - они "пришли" из другой программки. |
RNic7 Управление монитором и мышью 21.02.2012 1:59
sheka Либо маразм, либо неполное задание.
Язык хотя бы к… 21.02.2012 3:00
RNic7 Паскаль
Ну и со ставками ассемблера
И может под … 21.02.2012 3:03
IUnknown Скорее речь о "перепрограммировании знакогене… 21.02.2012 3:29
RNic7 Вот нашел что-то. Только я в ассемблере ноль. Как … 21.02.2012 4:12
IUnknown Это "что-то" к заданию твоему не имеет н… 21.02.2012 17:48
RNic7
Вот пример работы с мышой из Паскаля:
Также в FA… 21.02.2012 19:50![]() ![]() |
|
Текстовая версия | 29.12.2025 21:33 |