#include #include #define LPT1 0x00400008 /* BIOS printer address entries */ #define LPT2 0x0040000a #define LPT3 0x0040000c #define LPT4 0x0040000e int main(int argc, char *argv[]) { unsigned int port,data; unsigned int far *bios_printer_addr; if (argc>3) exit(1); switch(argc) { case 1: exit(1); case 2: port=*(bios_printer_addr=LPT1); if (port==NULL) { printf("LPT1 does not exist\n"); exit(1); } sscanf(argv[1],"%x",&data); break; case 3: if (argv[1][0]=='/') switch(argv[1][1]) { case '1': port=*(bios_printer_addr=LPT1); if (port==NULL) { printf("LPT1 does not exist\n"); exit(1); } sscanf(argv[2],"%x",&data); break; case '2': port=*(bios_printer_addr=LPT2); if (port==NULL) { printf("LPT2 does not exist\n"); exit(1); } sscanf(argv[2],"%x",&data); break; case '3': port=*(bios_printer_addr=LPT3); if (port==NULL) { printf("LPT3 does not exist\n"); exit(1); } sscanf(argv[2],"%x",&data); break; case '4': port=*(bios_printer_addr=LPT4); if (port==NULL) { printf("LPT4 does not exist\n"); exit(1); } sscanf(argv[2],"%x",&data); break; default: printf("Invalid printer port!\n"); exit(1); } else exit(1); } outportb(port, (char)data); return 0; }