[nmglug] parallel port address

akaluta akaluta at taosnet.com
Sat Dec 27 20:17:31 PST 2008


Seasons Greetings All;
The parallel port location found in /proc/ioports/ is 0378-037a
parportO.
The pertinent uncooperative program part: "#define base 0x0378"
 /* printer port base address */
a                                                                                    

I have tried inputting various address permutations i.e 0x378 ,0378 ,
0378-037a I get varying error messages: cannot locate 378 ,alternately
"invalid digit 8 in octal constant"

program quoted:
"/*
 * Simple parallel port output control program for Linux
 * Written and copyright by Tomi Engdahl 1998
 * (e-mail: tomi.engdahl at hut.fi)
 *
 * The program output the data value to PC parallel port data pins
 * (default lpt1 I/O address 0x378). The data values are given as the
 * command line parameter to the program. The number can be
 * in decimal (0..255) or hexadecimal format (0x00..0xFF).
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/io.h>

#define base 0x0378           /* printer port base address */

main(int argc, char **argv)
{                    
  int value;

  if (argc!=2)
    fprintf(stderr, "Error: Wrong number of arguments. This program
needs one argument which is number between 0 and 255.\n"), exit(1);
  if (sscanf(argv[1],"%i",&value)!=1)
    fprintf(stderr, "Error: Parameter is not a number.\n"), exit(1);
  if ((value<0) || (value>255))
    fprintf(stderr, "Error: Invalid numeric value. The parameter number
must be between 0 and 255\n"), exit(1);
  if (ioperm(base,1,1))
    fprintf(stderr, "Error: Couldn't get the port at %x\n", base),
exit(1);

  outb((unsigned char)value, base);
}" end quote.
                                          

Any insights,provided to the greenhorn,are appreciated. 
                                             Best Regards,Anthony K





More information about the nmglug mailing list