Приложение C. Описание на стандартните модули
109
WRITE) в графичния екран, ако той е активен. От програмиста в този случай не се
изискват никакви действия, т.е. механизмът е прозрачен. Освен READ/WRITE в
графичен режим могат да се използват и всички процедури от модула UniCRT.
Графичният курсор (който е невидим, т.е. не се индицира, както текстовия) е различен
от текстовия курсор, т.е. текущата графична позиция и текущата текстова позиция са
независими. Например: gotoxy(10, 10); и moveto(40, 40); ще предизвикат следното:
изписващият се след това текст ще бъде от позиция (текстова) (10, 10), а чертаенето
например линия ще започва от позиция (графична) (40, 40).
function ActualXsz: cardinal;
Действие: Връща физическия хоризонтален размер на екрана (брой точки на ред) и 0 ако
не е в графичен режим.
function ActualYsz: cardinal;
Действие: Връща физическия вертикален размер на екрана (брой редове от точки на
екран) и 0, ако не е в графичен режим.
function AllctCharSet(Npg: shortcard; free: boolean): pointer;
Действие: Отделя място за дефиниция на Npg * 32 символа. Възможна е дефиницията на
32 последователни символа, като кодът на първия от тях трябва да бъде един от
следните: $00, $20, $40, $60, $80, $а0, $c0, $е0. Паметта трябва де бъде
отделена на граница на 256 байта (както се изисква от XBIOS), т.е. младшият
байт на началния адрес ще съдържа 0. Дефиницията на всеки символ се състои
от 8 байта (по един за всеки ред от графичното изображение на символа).
Следователно дефиницията на 32 символа се състои от 256 байта, по 8 байта за
всеки символ, разположени един след друг. Тази функция само отделя място за
тези символи и връща началният му адрес. Зареждането на дефиницията трябва
да се извърши след това (например прочитане от файл). Тъй като отделянето на
памет ще се извършва с изравняване на 256 байтова граница в повечето случаи
се отделя повече памет от необходимата (но излишъкът не надминава 255
байта). Ако се зададе параметъра FREE = true, то неизползваната памет
(излишната за дефиниция на букви) ще се освободи от функцията AllctCharSet
(по този начин ще се образува 'дупка' в динамичната памет). Ако се зададе
FREE = false, то неизползваната памет няма да бъде освободена.
function AllctScreen(free: boolean): pointer;
Действие: Отделя необходимото количество памет за графичен екран (8/16 килобайта).
Ако вече съществува графичен екран, не извършва нищо. При резервирането
на памет за графичен екран, възможно е да бъде заета малко повече памет
(със не повече от 15 байта), тъй като се прави изравняване на 16 байтова
граница. Ако се зададе параметър free = true, то тези байтове се освобождават
веднага за използване (аналогично на AllctCharSet). Ако параметърът free =
false, то те се освобождават едва, когато се освободи паметта за графичния
екран (т.е. заедно с неговата памет).
function GraphSize: cardinal;
Действие: Връща размера на паметта която е необходима за графичен екран в зависимост
от компютъра. 8 килобайта при Пълдин 601 и 16 при Пълдин 601А/601М.
procedure DefaultCharSet;
Действие: Възстановява стандартните дефиниции на символите (такива, каквито са били
преди изпълнението на програмата).
<<  <  GO  >  >>

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