#include #include #include #include #include #include #include //Prototype functions int goForward(); int goForwardRight(); int goForwardLeft(); int goBackward(); int goBackwardRight(); int goBackwardLeft(); int powerOn(); int powerOff(); //The address where the printer port lives int addr = 0x378; int main() { int x, num, slp; sleep(3); srand(clock(NULL)); for(x = 0; x < 145; x++) { num = rand() % 7 + 1; slp = rand() % 2 + 1; if(num == 0) { goForward(); } if(num == 1) { goBackward(); } if(num == 2) { goForwardRight(); } if(num == 3) { goForwardLeft(); } if(num == 5) { goBackwardRight(); } if(num == 6) { goBackwardLeft(); } if(num == 7) { powerOff(); } sleep(slp); } powerOff(); return 0; } //Power on function - not very useful on its own, used to test for address verification int powerOn() { int result = ioperm(addr,5,1); outb(0x01, addr); return 0; } //Power off - function to be called before each new set of instructions to put all outputs low int powerOff() { int result = ioperm(addr,5,1); outb(0x00, addr); return 0; } //Forward function - pin addr 0x09 int goForward() { int result = ioperm(addr,5,1); powerOff(); outb(0x09, addr); return 0; } //Forward and right - pin addr 0x0B int goForwardRight() { int result = ioperm(addr,5,1); powerOff(); outb(0x0B, addr); return 0; } //Forward and left - pin addr 0x0D int goForwardLeft() { int result = ioperm(addr,5,1); outb(0x0D, addr); return 0; } //Reverse - pin addr 0x81 int goBackward() { int result = ioperm(addr,5,1); powerOff(); outb(0x81, addr); return 0; } //Reverse and right - pin addr 0x83 int goBackwardRight() { int result = ioperm(addr,5,1); powerOff(); outb(0x83, addr); return 0; } //Reverse and left - pin addr 0x85 int goBackwardLeft() { int result = ioperm(addr,5,1); powerOff(); outb(0x85, addr); return 0; }