// parport.h: parallel port output routines // // Charles Hastings, 1998 // http://pangaea.ml.org/ // // 01234567abcd // ppout("000000000000"); // // The arguments must be either 1 or 0. 1 will turn the pin high, 0 low. // Inverted bits are compensated for in software. // // Position Pin Name || Pin Number // ------------------------------------------ // 0 Data 0 2 // 1 Data 1 3 // 2 Data 2 4 // 3 Data 3 5 // 4 Data 4 6 // 5 Data 5 7 // 6 Data 6 8 // 7 Data 7 9 // a /Strobe 1 // b /Auto Feed 14 // c Init 16 // d /Select Input 17 // /////////////////////////////////////////////////////////////////////////////// #include #include "/usr/src/linux/include/asm-i386/io.h" const port=0x378; void ppout(char); void ppout(char ppOut[]) { int outSum=0; int loop; for(loop=0;loop<8;loop++) { if (ppOut[loop]=='1') {outSum=outSum+int(pow(2.0, loop));} } outb(outSum,port); outSum=0; for(loop=8;loop<12;loop++) { if(ppOut[loop]=='0' && loop==8) {outSum=outSum+1;} if(ppOut[loop]=='0' && loop==9) {outSum=outSum+2;} if(ppOut[loop]=='1' && loop==10) {outSum=outSum+4;} if(ppOut[loop]=='0' && loop==11) {outSum=outSum+8;} } outb(outSum,port+2); }