Практика программирования (Бейсик, Си, Паскаль)



         

Красивые окна в текстовом режиме - часть 2


/p>

Для удобства общения между функциями пакета определены следующие глобальные переменные:

  • PAGE — байт с номером активной страницы (начальное значение — 0);

  • 1 _ATTR — байт текущих цветовых атрибутов выводимого текста;

  • _COLR__S — байт с номером цвета выводимых символов;

  • _COLOR_F — байт с номером цвета фона;

  • __INTENS — байт с признаком обычной (0) или повышенной (1) яркости;

  • _BLINK — байт с признаком мерцания (0 — мерцания нет);

  • _ROW_CUR — байт с номером текущей строки;

  • _COL_CUR — байт с номером текущего столбца.

    С целью сокращения обозначений и приближения их к идентификаторам регистров на Ассемблере введены следующие подстановки:

  • union REGS reg;
  • #define АН reg.h.ah
  • #define AL reg.h.al
  • #define BH reg.h.bh
  • #define BL reg.h.bl
  • #define CH reg.h.ch
  • #define CL reg.h.cl
  • #define CX reg.x.ex
  • #define DL reg.h.dl
  • #define DH reg.h.dl

  • #define INT10h int86 ( 0x10 , &reg, &reg)

    Программа ask_attr — опрос цветовых атрибутов

    Если вы забыли, как выглядит байт цветовых атрибутов, то загляните в раздел 3.5.5.

    int ask_attrtint *cs,int *cf,int *in,int *bl)

    // cs - цвет символов, от 0 до 7

    // cf - цвет фона, от 0 до 7

    //in - яркость, 0 или 1

    // b1 - признак мерцания, 0 или 1

    {

    АН=8;

    //Подфункция опроса цветовых атрибутов

    BH=_PAGE;

    //Номер текущей страницы

    INT10h ;

    //Чтение текущего символа и атрибутов

    _ATTR=AH;

    //Байт цветовых атрибутов

    __COLOR__S=_ATTR & 0x07;

    //Цвет символа

    _COLOR_F=(_ATTR & 0x70) >> 4;

    //Цвет фона

    _INTENS=(_ATTR & 0x08) >> 3;

    //Бит интенсивности

    _BLINK=(_ATTR & 0x80) >> 7;

    //Бит мерцания

    *cs=_COLOR__S;

    //возврат цвета символов

    *cf=_COLOR_F;

    //возврат цвета фона

    *in= INTENS;

    //возврат признака яркости

    *b1=_BLINK;

    //возврат признака мерцания

    return ( ATTR);

    //возврат всех атрибутов цвета

    }

    Программа set_attr — установка цветовых атрибутов

    void set_attr(int cs,int cf,int in,int b1) {

    //анализ атрибутов цвета на допустимость

    if(cs>=0 && cs<8 && cf>=0 && cf<8 &&




    Содержание  Назад  Вперед