#include #include #include #define DATA_PORT 0x378 /* parallel port base address */ #define STATUS_PORT DATA_PORT + 1 #define CONTROL_PORT DATA_PORT + 2 unsigned char status, data; void main() { if (ioperm(DATA_PORT, 1, 1)) { fprintf(stderr, "Access denied to %x\n", DATA_PORT), exit(1); } while (1) { for (int seg = 0; seg < 8; seg++) { data = 1 << seg; outb(~data, DATA_PORT); // turn on the segment // here we use inversion because the common anode 7-segment display is used sleep(1); } } ioperm(DATA_PORT, 1, 0); // release the port }