adfun.ru
| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
/* Это фрагмент программы, использующей encget. Она читает
файл целиком и запоминает результат декодирования в
(большом) буфере, на который ссылается переменная "bufr".
"fp" - это ссылка на файл с изображением */
while (EOF != encget(&chr, &cnt, fp))
for (i = 0; i < cnt; i++, *bufr++ = chr)
- 11 -
Приведенный ниже набор программ предназначен для записи
в .PCX файл.
/* Эта программа кодирует содержимое одной строки
изображения и записывает его в файл */
encLine(inBuff, inLen, fp)
unsigned char *inBuff; /* указатель на строку данных */
int inLen; /* длина строки в байтах */
FILE *fp; /* указатель на запис. файл */
{ /* возвращает число байтов, запис. в файл, или 0, если
имела место ошибка */
unsigned char this, last;
int srcIndex, i;
register int total;
register unsigned char runCount; /* макс. значение равно
63 */
total = 0;
last = *(inBuff); runCount = 1;
for (srcIndex = 1; srcIndex < inLen; srcIndex++) {
this = *(++inBuff);
if (this == last) {
runCount++; /* он кодируется */
if (runCount == 63) {
if (!(i=encput(last, runCount, fp))) return(0);
total += i;
runCount = 0;
}
}
else { /* this != last */
if (runCount) {
if (!(i=encput(last, runCount, fp))) return(0);
total += i;
}
last = this;
runCount = 1;
}
} /* конец цикла */
if (runCount) { /* завершение */
if (!(i=encput(last, runCount, fp))) return(0);
return(total + i);
}
return(total);
}
/* программа для записи закодированной пары байтов (или
одиночного байта, если он не кодируется) в файл */
encput(byt, cnt, fid) /* возвращает число записанных байтов
или 0, если имела место ошибка */
unsigned char byt, cnt;
FILE *fid;
{
if(cnt) {
if( (cnt==1) && (0xc0 != (0xc0&byt)) ) {
if(EOF == putc((int)byt, fid))
return(0); /* ошибка при записи на диск */
return(1);
}
else {
if(EOF == putc((int)0xC0 | cnt, fid))
return(0); /* ошибка при записи на диск */
if(EOF == putc((int)byt, fid))
return(0); /* ошибка при записи на диск */
return(2);
}
}
return(0);
}
- 12 -
Техническая информация об утилите FRIEZE
FRIEZE является резидентной утилитой, которая позволяет
вам перехватывать и сохранять графические изображения других
программ. Вы можете потом переместить это изображение в PC
Paintbrush для редактирования и улучшения.
FRIEZE был переписан для использования в PC Paintbrush
Plus, и поэтому техническая документация по нему коренным
образом изменилась. Для облегчения понимания технической
информации по FRIEZE, мы разбили этот раздел на две части:
один о версиях FRIEZE, предшествующих 7.00, и второй о
текущей версии (начиная с 7.00).
Начиная с версии FRIEZE 7.10, он может быть позднее
удален из памяти (это возвращает вам почти 85K DOS RAM, в
зависимости от вашей конфигурации). Чтобы сделать это, вы
можете выбрать освобождение FRIEZE из памяти в меню
PCINSTAL, либо изменить в некоторый момент рабочую
директорию PC PAINTBRUSH и набрать слово "FRIEZE."
Спецификация для версий FRIEZE ранее 7.00
Набор опций печати FRIEZE
FRIEZE может легко адаптироваться к неполным принтерным
кабелям (в которых отсутствует линия статуса, указанная IBM)
и управляет как последовательным, так и параллельным
интерфейсами. Отметим также, что FRIEZE всегда использует
стандартные вызовы BIOS'а, вследствие чего неответившие
устройства будут находиться в режиме тайм-аута, однако можно
потребовать, чтобы случаи типа отсутствия бумаги при этом
игнорировались.
Синтаксис команды FRIEZE:
FRIEZE Xnaarr
Где:
X = параллельное (P) или последовательное (S)
устройство,
n = номер порта,
aa = две шестнадцатиричные цифры кода, для
которого возвращаемые биты вызывают аварийное
завершение,
rr = две шестнадцатиричные цифры кода, для
которого возвращаемые биты вызывают повтор.
Примеры:
FRIEZE P1 - использовать стандартный набор параллельного
вывода, номер порта 1, маска аварийного
завершения 28h, и маска повтора 01h
FRIEZE P2 - использовать принтерный порт #2
FRIEZE S1 - использовать последовательный порт #1 и протокол
Xon/Xoff
FRIEZE P10028 - использовать принтерный порт #1, маску
аварийного завершения 00 (ничто не воспри-
нимается как ошибка) и маску повтора 28h
- 13 -
Интерпретация кодов:
Коды, возвращаемые параллельным принтером при вызове
общеизвестны:
20h - отсутствие бумаги,
10h - выбран,
08h - ошибка ввода/вывода,
04h - не используется,
02h - не используется,
01h - тайм-аут.
Вызов функций FRIEZE
FRIEZE работает, используя программное прерывание номер
10h (вызов видео прерывания).
Для вызова функции FRIEZE, загрузите значение 75
(десятичное) на регистр AH, номер вызываемой функции на
регистр CL и затем либо загрузите на AL аргумент функции,
либо на регистры ES и BX сегмент и смещение того места, где
располагаются эти аргументы, после чего вызовите прерывание
10h.
FRIEZE возвращает на AX число, которое означает код
ответа: нулевое значение соответствует успешному завершению,
все другие - номер ошибки. Значения других регистров не
изменяются.
# Определение Аргументы
0 Печать окна AL = режим:
0 - символьный,
1 - обычный,
2 - sideways
1 Чтение окна ES:BX - строка
(имя читаемого файла)
2 Запись окна ES:BX - строка
(имя записываемого файла)
3 Ширина печати AL = ширине в 1/4 дюйма
4 Высота печати AL = высота в 1/4 дюйма
5 Резерв.
6 Уст. левой границы AL = левое поле в 1/4 дюйма
7 Уст. размера окна ES:BX - 4 слова в которых записаны
угловые координаты окна:
Xmin, Ymin, Xmax, Ymax
8 Резерв.
9 Уст. образцов ES:BX - 16-элементный вектор байтов,
содержащий цветовое
|
adfun.ru
|
|
|
|