Untitled

 avatar
unknown
plain_text
21 days ago
1.9 kB
3
Indexable
#include <dos.h> // Библиотека за работа с прекъсвания на BIOS
#include <string.h>

// Функция за изпращане на байт към принтера
void send_byte_to_printer(char byte, int lpt_port) {
    union REGS regs;
    regs.h.ah = 0x00;          // Функция 00h: Изпраща байт към принтера
    regs.h.al = byte;          // Символ за печат
    regs.x.dx = lpt_port;      // Номер на LPT порта (0 за LPT1, 1 за LPT2 и т.н.)
    int86(0x17, &regs, &regs); // Прекъсване 17h
}

// Функция за изпращане на ред текст
void send_string_to_printer(const char *str, int lpt_port) {
    while (*str) {
        send_byte_to_printer(*str, lpt_port);
        str++;
    }
}

// Основна програма
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";

    // Печат на редовете с различни шрифтови настройки
    send_string_to_printer(large_font, lpt_port);
    send_string_to_printer(student_name, lpt_port);

    send_string_to_printer(condensed_font, lpt_port);
    send_string_to_printer(student_number, lpt_port);

    send_string_to_printer(normal_font, lpt_port);
    send_string_to_printer(date, lpt_port);

    return 0;
}
Leave a Comment