#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; // Array to hold bit patterns for each digit unsigned char digit_patterns[10] = { 0b00111111, // digit 0 0b00000110, // digit 1 0b01011011, // digit 2 0b01001111, // digit 3 0b01100110, // digit 4 0b01101101, // digit 5 0b01111101, // digit 6 0b00000111, // digit 7 0b01111111, // digit 8 0b01101111 // digit 9 }; int main() { if (ioperm(DATA_PORT, 1, 1)) { fprintf(stderr, "Access denied to %x\n", DATA_PORT); exit(1); } while (1) { for (int digit = 0; digit < 10; digit++) { data = digit_patterns[digit]; // Get bit pattern for current digit outb(~data, DATA_PORT); // Display the digit sleep(1); // Delay for 1 second } } ioperm(DATA_PORT, 1, 0); // release the port return 0; }