
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.9.173] |
![]() |
|
Сообщ.
#1
,
|
|
|
Реализовать библиотеку (модуль) содержащий в качестве импортируемых компонентов объектные типы, характеризуемые устройства видеоадаптер.
I. Объектный тип, характеризующий устройство видеоадаптер должен обеспечивать: 1. Установку текущего видео режима как текстового, так и графического (несколько режимов). 2. Определение максимального разрешения по вертикали и горизонтали (две функции). 3. Изменение содержимого экрана без изменения атрибута цвета (в текстовом режиме). 4. Изменение атрибута цвета в заданном участке экрана (в текстовом режиме). 5. Загрузка текстового фонта. 6. Прокрутка заданной области экрана на заданное число строк. 7. Управление назначение старшего бита в атрибуте цвета. Уже есть код, но я заглох ???, незнаю как дальше. Нужно писать со вставками на асме... Помогите, плиз... Ссылка на исходник: http://www.naphy.narod.ru/video.rar |
Сообщ.
#2
,
|
|
|
Практически всё что ты здесь описал
можно сделать через 10H прерывание. Всё что тебе надо - иметь под рукой справочник по прерываниям видеосервиса, если у тебя его нет то скачай хотябы этот http://pascal.sources.ru/incoming/bios.zip А асм знать необязательно. А зачем тут нужна объектность??? |
Сообщ.
#3
,
|
|
|
Цитата Mixxx, 06.07.03, 15:56:49 Практически всё что ты здесь описал можно сделать через 10H прерывание. Всё что тебе надо - иметь под рукой справочник по прерываниям видеосервиса, если у тебя его нет то скачай хотябы этот http://pascal.sources.ru/incoming/bios.zip А асм знать необязательно. А зачем тут нужна объектность??? А зачем "практически всё" через INT10h ? Что, камень слишком быстрый ? |
Сообщ.
#4
,
|
|
|
Не вопрос:
unit Consoles interface uses Dos; type tSymbol=record Sym: char; Attr: byte end; tString=array[0..79]of tSymbol; tPage=array[0..25]of tString; tScreen=array[0..7]of tPage; tConsole=object constructor Init; destructor Done; ...... end; var Screen: tScreen absolute B800:0000 Console: tConsole; implementation end. И описывай, хоть скролл, хоть через прерывания, хоть напрямую с памятью работай... А если ты собрался переключать текстовые режимы (отличающиеся количеством строк и столбцов), советую сделать несколько объектов tScreen... или хотя бы по одному для каждого видеорежима. А вот для графики надо бы добавить кое-что ещё... но тогда проще использовать отдельный модуль и использовать его... ;D |
Сообщ.
#5
,
|
|
|
Кстати, советую почитать Нортона, Абеля и Джордейна....
Питер Абель "Язык ассемблера для IBM PC и программирования" Джоржейн "IBM PC, XT & AT. Руководство по программированию" Питер Нортон, Ричард Уилтон... короче найдёшь, я название не помню, но там подробно все видеорежимы до VGA включительно ;D P.S. from vot: http://pascal.sources.ru/docs/ |
Сообщ.
#6
,
|
|
|
Цитата Сахаров Сергей, 20.08.03, 06:30:46 Не вопрос: unit Consoles interface uses Dos; type tSymbol=record Sym: char; Attr: byte end; tString=array[0..79]of tSymbol; tPage=array[0..25]of tString; tScreen=array[0..7]of tPage; tConsole=object constructor Init; destructor Done; ...... end; var Screen: tScreen absolute B800:0000 Console: tConsole; implementation end. А если ты собрался переключать текстовые режимы (отличающиеся количеством строк и столбцов), советую сделать несколько объектов tScreen... или хотя бы по одному для каждого видеорежима. А вот для графики надо бы добавить кое-что ещё... но тогда проще использовать отдельный модуль и использовать его... ;D Гм. Это всё очень мило, но в графических режимах памяти может быть больше 64К, то есть "вкусные" фокусы с массивом по такому-то адресу не проходят. А тема обши-и-ирная... ModeX, SVGA и т.д. Вот пара интересных линков (правда, Си): http://prdownloads.sourceforge.net/aa-project/text.zip http://prdownloads.sourceforge.net/aa-project/vga.zip А вообще -- написано уже СТОЛЬКО этого дела... И прежде чем изобретать велосипед, может быть, имеет смысл посмотреть на Allegro (или примеры из SWAG, если уж так хочется писать на Паскале)? |