text:  it's just '95 you're after working with, use the following tips: Use this to get the IO base ads of printer port n
  // returns 0 for invalid port, or IO base ads
  WORD GetPrinterPortBaseAddress(
  {
  WORD * pwDosPrinterPortBaseAddres
  if((nPort<4)&&(nPort>=0)) return pwDosPrinterPortBaseAddres
  return(0);
  }
  Then write to the (base ads+0) to set D0..D7 on the printer port, eg outp(wBaseAds, 0x55);. inp(wBaseAds+1) reads back the input lines, and outp(wBaseAds+2) writes to the status lines.
  Contact me at andy@warmcat.com if you need more detail.
  You can still use the standard _inp and _outp as well.
  Phillip
  Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.
  I've been over a couple of times, and cannot seem to figure out how to make it useful... I really need something that will allow me to send a string of characters to the parallel port... even if it can be done only 1 character at a time. I'm checking into Andy's advice, but haven't gotten it to work correctly yet. I apologize for delays in grading these responses... one fire after another seems to be springing up at the moment.
  So yeah, source code would be GREAT!!
  Garrett
  The sample I gave you works in a DOS app - now I see you are in the 32-bit world. Use the following code instead...
  WORD GetPrinterPortBaseAddress(
  {
  WORD wa[4];
  DWORD dwRead;
  if( (nPort<0)||(nPort>3) ) return(0);
  if(ReadProcessMemory(GetCu
  return (wa[nPort]);
  } else {
  return(0);
  }
  }
  . some sample code to go with it ....
  int main()
  {
  WORD wBase=GetPrinterPortBaseAd
  int n;
  if(wBase==0) { printf("Unable to get LPT1 base ads\n"); return(1); }
  for(n=0;n<1000;n++) {
  outp(wBase, 0x55);
  outp(wBase, 0xaa);
  }
  return(0);
  }
  . mail me if you need more advice.
  -Andy
  Garrett