![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
Altair |
![]()
Сообщение
#1
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
У меня вот появилось 2 вопроса:
1) Как менять палитру в 256 цв. режиме (процедура setallpalette -не работает в 256 цв.) 2) При замене палитры в 256 цв. режиме, то, что уже на экран выведенно, будет замененно на новые цвета, или только индексы цветов поменяются? Если у кого есть идеи, подскажите пожалуйста. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
![]() ![]() |
P@sh@ |
![]()
Сообщение
#2
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Мужской Репутация: ![]() ![]() ![]() |
Самый известный и удобный(IMHO) графический режим для ДОСа - под номером 13h - естесственно стандартными модулями Паскаля не поддерживается, но оно и не надо... Все остальные режимы (в том числе и VESA) может и не намного сложнее в работе (на низком уровне, я имею ввиду), но гораздо тормознее и непонятнее (вначале).
Для тех, кто не в курсе, что такое видеорежим 13h, поясняю: mode 13h - MCGA (VGA) 320x200x256 (8-битный цвет) видеопамять проецируется на ОЗУ одной страницей в 64000 байт, т.е. целиком умещается в один сегмент! и даже в реальном режиме процессора весь экран доступен без переключения страниц !!! например рисование точки в этой режиме выглядит так: Код procedure putpixel(x,y: integer; c: byte); begin mem[$A000:y*320+x]:=c; end; где $A000 - адрес сегмента ОЗУ, в который проецируется видеопамять в графических режимах VGA (CGA и EGA вроде с $B000), к слову: в текстовом режиме видеопамять доступна с адреса $B800... как включить этот режим ? Код procedure setmode(mode: byte); assembler; asm mov ah,0; //команда (0-установка видеорежима) mov al,mode; int 10h; //видео-служба BIOSа end; вызываем setmode($13) для переключения туда и setmode(3) обратно в текстовый (перед выходом) это необходимый минимум для работы с графикой, и никаких модулей Graph подключать не нужно (он и не будет работать) потом принесу свой модуль, если кому надо, там и с палитрой работа есть (причем даже в текстовом режиме палитру можно менять, и в любых графических, кроме 3х-цветного CGA разве что ![]() |
![]() ![]() |
![]() |
Текстовая версия | 20.06.2025 3:14 |