#include <linux/ioport.h>


void
dump_port( unsigned char addr_port, unsigned char data_port,
           unsigned short offset, unsigned short length)
{
    unsigned char i, *data;

    if (!(data = (unsigned char *)malloc(length))) {
        perror("Bad Malloc\n");
        exit(1);
    }

    /* Write the offset to the index port
       and read data from the data port */
    for(i=offset; i<offset+length; i++) {
        outb(i, addr_port );
        data[i-offset] = inb(data_port);
    }

    /* Dump */
    for(i=0; i<length; i++)
        printf("%02X ", data[i]);

    free(data);
}

int
main(int argc, char *argv[])
{
    /* Get access permissions */
    if( iopl(3) < 0) {
        perror("iopl access error\n");
        exit(1);
    }
    dump_port(0x70, 0x71, 0x0, 1);
}


syntax highlighted by Code2HTML, v. 0.9.1