#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 BCD_values[10] = { 0b00000000, // digit 0 0b00000001, // digit 1 0b00000010, // digit 2 0b00000011, // digit 3 0b00000100, // digit 4 0b00000101, // digit 5 0b00000110, // digit 6 0b00000111, // digit 7 0b00001000, // digit 8 0b00001001 // 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 = BCD_values[digit]; // Get BCD value 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; }