Добавил:
Mymnan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Сборка Часть1 / avmis_labs / неразобрано / 503 / Лаб_Принтер / Белорусец / LPT
.CPP# include <stdio.h>
# include <conio.h>
# include <dos.h>
# include <bios.h>
# include <string.h>
#pragma inline
void CLRSCR(int number)
{
gotoxy(1,number+1);
for (int i=0; i<80; i++)
cprintf(" ");
}
void print_BIOS (char symbol)
{
_asm{
mov ah,02
mov dx,00
int 17h
test ah,01101001B
jnz ERROR
mov ah,00
mov al,symbol
mov dx,00
int 17h
}
return;
ERROR:
clrscr();
gotoxy(1,1);
cprintf("ERROR");
}
void run_BIOS()
{
_asm{
mov ah,02
mov dx,00
int 17h
test ah,01101001B
jnz ERROR
mov ah,01
mov dx,00
int 17h
}
return;
ERROR:
clrscr();
gotoxy(1,1);
cprintf("ERROR");
}
void print_DOS (char symbol)
{
_asm{
mov ah,05
mov dl,symbol
int 21h
}
}
void print_endl_DOS()
{
print_DOS('\x0A');
}
void run_DOS()
{
print_DOS('\x0C');
}
void print_String(char*buffer, int flag)
{
if (flag)
{
for (int i=0; i<strlen(buffer); i++)
{
print_DOS(buffer[i]);
}
}
else
{
for (int i=0; i<strlen(buffer); i++)
{
print_BIOS(buffer[i]);
}
}
}
int main()
{
char buffer[256];
clrscr();
while(1)
{
CLRSCR(0);
gotoxy(1,1);
cprintf("INPUT: ");
gets(buffer);
gotoxy(1,6);
cprintf ("1.Exit\n\r2.Perevod stroki DOS\n\r");
cprintf("3.Progon DOS\n\r4.Vivod str DOS\n\r");
cprintf("5.Vivod str BIOS\n\r6.Progon BIOS");
switch(getch())
{
case '1':
return 0;
case '2':
{
print_endl_DOS();
break;
}
case '3':
{
run_DOS();
break;
}
case '4':
{
print_String(buffer,1);
break;
}
case '5':
{
print_String(buffer,0);
break;
}
case '6':
{
run_BIOS();
break;
}
}
}
return 0;
}