#include <string.h>
#include <unistd.h>
#include <sys/io.h>
#include "xassert.h"
#include "xatexit.h"
#include "port.h"

extern int base_port;

unsigned char cur_value = 0;

void port_cleanup (void)
{
	port_set (0);
	ioperm (base_port, 1, 0);
}

void port_init (void)
{
	xassert (ioperm(base_port, 1, 1) != -1, "Ustawianie uprawnień dostępu do portu: %m.");
	port_set (0);
	xatexit (port_cleanup);
}

void port_set (unsigned char val)
{
	outb (val, base_port);
	cur_value = val;
}

unsigned char port_get (void)
{
	return cur_value;
}
