Program je v C:
#include <sys/io.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/select.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#define base 0x378
void perm(void) {
if(ioperm(base,1,1)) {
printf(" Nedostatecna prava!\n");
exit(1);
}
}
void wait_usec(int usec) {
struct timeval tv;
tv.tv_sec = 0;
tv.tv_usec = usec;
select(0,NULL,NULL,NULL,&tv);
}
int main(int argc, char *argv[]) {
int i;
int cas;
perm();
if(atoi(argv[3]) == 0) {
while(1) {
outb(atoi(argv[2]), base);
wait_usec(atoi(argv[4]));
outb(atoi(argv[1]), base);
wait_usec(atoi(argv[4]));
}
} else {
for(i=0;i<atoi(argv[3]);i=i+1) {
outb(atoi(argv[2]), base);
wait_usec(atoi(argv[4]));
outb(atoi(argv[1]), base);
wait_usec(atoi(argv[4]));
}
}
exit(0);
}
Já vím, je to jedna velká prasárna, nikdy jsem v C nedělal, dal jsem to dohromady pomocí Google. Když se to připojí na reproduktor, tak to dělá i docela dost vysoké tóny. Schéma zapojení dodám, jen co ho nakreslím (eta 10 min)