{
char s; int i ;
for(i=0; i<nc && string[i] != 0x00; i++)
{
s=string[i]; xy_s_out(row,col+i, s);
}
}
Программа s_out_r — вывод строки в полосу с прижимом вправо
Если ширина полосы превышает длину строки, то вычисляется начальная позиция строки в полосе, при которой последний символ строки попадает в последнюю позицию полосы, и вывод осуществляется по функции st_out_1. Если длина выводимой строки превышает ширину отведенной полосы, то у строки отсекаются лишние символы с начала и остаток строки заполняет полосу целиком.
void st_out_r(int row,int col,int nc, char *string)
// row,col - начало полосы,
//nc - длина полосы,
// string - выводимая строка
{
int ls,i;
ls=strlen(string);
i=nc-ls;
if(Is <= nc)
st_out_l(row,col+i,Is,string);
else
st_out_l(row,col,nc, &string[i] ) ; }
Программа ask__page — опрос активной страницы
Вместо этой функции вызывающая программа может проанализировать значение глобальной переменной _PAGE.
int ask_page(void) {
return (_PAGE); }
Программа set_page — установка текущей страницы
Помимо записи номера активной страницы в глобальную переменную _PAGE, необходимо довести эту информацию и до BIOS с помощью подфункции номер 5.
void set_page(int p) //р - номер, от 0 до 7 {
if(p>=0 && р<8)
{
_PAGE=p;
AH=5;
AL=p;
INT10h; } else err_out("Ошибка при вызове set_page");
}
Программа err_out — вывод сообщения об ошибке
Сообщение об ошибке выдается красными мигающими буквами в самой нижней строке экрана. После вывода сообщения делается выдержка до нажатия любой клавиши.
void err_out (char *string) {
set_attr(7,4,1,1);
st_out_l(25,1,80,string);
getch(); }
Программа init_txt — инициализация пакета text_box
void init_txt (void)
/*********************************************/
/* Инициализация экрана в текстовом режиме : */
/* размер экрана -25x80 */
/* маска символов - 8 х 14 */
/*********************************************/
{
extern union REGS reg;