Untitled
unknown
plain_text
a year ago
2.3 kB
6
Indexable
#include <dos.h> // Библиотека за работа с прекъсвания на BIOS
#include <string.h>
// Функция printetext за изпращане на текст към принтера
void printetext(const char *text, const char *font_code, int lpt_port) {
// Изпраща управляващия код за шрифта
while (*font_code) {
union REGS regs;
regs.h.ah = 0x00; // Функция 00h: Изпраща байт към принтера
regs.h.al = *font_code; // Символ за печат (управляващ код)
regs.x.dx = lpt_port; // Номер на LPT порта (0 за LPT1, 1 за LPT2 и т.н.)
int86(0x17, ®s, ®s); // Прекъсване 17h
font_code++;
}
// Изпраща текста
while (*text) {
union REGS regs;
regs.h.ah = 0x00; // Функция 00h: Изпраща байт към принтера
regs.h.al = *text; // Символ за печат
regs.x.dx = lpt_port; // Номер на LPT порта
int86(0x17, ®s, ®s); // Прекъсване 17h
text++;
}
}
// Основна програма
int main() {
// Номер на LPT порта (0 за LPT1)
int lpt_port = 0;
// Управляващи кодове за шрифтове
const char *large_font = "\x1B\x47"; // Уголемен шрифт (ESC G)
const char *condensed_font = "\x1B\x4D"; // Кондензиран шрифт (ESC M)
const char *normal_font = "\x1B\x50"; // Нормален шрифт (ESC P)
// Данни за печат
const char *student_name = "Иван Иванов\n";
const char *student_number = "123456789\n";
const char *date = "21.01.2025\n";
// Печат на редовете с различни шрифтови настройки
printetext(student_name, large_font, lpt_port); // Име с уголемен шрифт
printetext(student_number, condensed_font, lpt_port); // Факултетен номер с кондензиран шрифт
printetext(date, normal_font, lpt_port); // Дата с нормален шрифт
return 0;
}
Editor is loading...
Leave a Comment