/* Created by Anjuta version 1.2.1 */
/*	This file will not be overwritten */

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


void
wait (int second)		
// wait függvény, a prog.hu-ról szedtem. 
// feladata szüneteltetni a program futtatását 
// second tízezredmásodpercig
{

  clock_t goal = (clock_t) second / 10000 * CLOCKS_PER_SEC + clock ();

  while (goal > clock ());

}

void
fordit (int ms)
{
kezdet:outb (255, 0x378);	//kiirja az LPT port adatportjára a 255-öt 
							//(minden biten kint lesz a jel)
  wait (ms);			    //vár ms tízezred másodpercet 
  outb (00, 0x378);		    //lekapcsol minden bitet.
  int maradek;
  maradek = (200 - ms);

// kivonja az argumentumot a 200*0,0001 = 0,02s-ból
// 15 esetén a maradék 0,0185 s lenne
// valhogy így nézne ki grafikonon:
/*
     ____                               ____      +5 Volt
    |    |                             |    |                  
    |    |                             |    |
____|    |_____________________________|    |____  GND

    |<-->|

	1,5 ms = 0,0015 s
	     |<--------------------------->|
                    maradek =0,0185 s
    |<-------------------------------->|
         20 ms = 0,02 s

*/
  wait (maradek);		//vár maradék tízezredmásodpercig
  goto kezdet;          //kezdi az egészet előlről
}


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

  if (ioperm (0x378, 1, 1))
    //leellenőrízzük van e jogosultságunk a port eléréséhez
    {
      fprintf (stderr, "Couldn't get the port at %x\n", 0x378), exit (1);
    }
  else
    {
      fordit (15);
	// argumentuma 10 és 20 között legyen 15 a szervó alapállása  (lenne)
	// ergo ha az argumentum pl 15 15*0,0001s azaz 0,00015 s lenne
	// kint a jel
    }
  return 1;
}
