X-Git-Url: https://git.jankratochvil.net/?p=lptgpib.git;a=blobdiff_plain;f=terminal.c;fp=terminal.c;h=5de10a8f0fc80e6ac092b2583fe9d3d241493753;hp=0000000000000000000000000000000000000000;hb=2665bb5e2a4bf30c7e68813f6ee07ca4d8f1d15e;hpb=e5d37585de9699dbcf203ba49b5ff8a8e5c89ff8 diff --git a/terminal.c b/terminal.c new file mode 100644 index 0000000..5de10a8 --- /dev/null +++ b/terminal.c @@ -0,0 +1,45 @@ +#include "lptgpib.h" +#include +#include +#include +#include +#include +#include + +// lptgpib.c +#define get_control() (inb(lpt_base+2) ^ 0x04) +#define put_control(x) outb((x) ^ 0x04, lpt_base+2) +#define TRI 0x20 /* tristate data lines */ +#define NDAC 0x04 /* LPT pin 16 */ +#define DAV 0x01 /* LPT pin 1 */ + +extern int lpt_base; + +int main(int argc,char **argv) { + lptgpib_init(0x378); + for (;;) { + put_control(TRI | NDAC); /* clear NRFD */ + if (get_control()&DAV) { /* wait for DAV */ + fprintf(stderr,"ctu znak...\n"); + char flags,val=lptgpib_read_byte(&flags); + if (flags&ATN) + lptgpib_print_command(val); + else + fprintf(stderr,"precten znak: %02x (%c)\n",val,val); + } + struct pollfd pollfd; + memset(&pollfd,0,sizeof pollfd); + pollfd.fd=0; + pollfd.events=POLLIN; + int i=poll(&pollfd,1,0); + assert(i==0||i==1); + if (i==1) { + char val; + i=read(0,&val,1); + assert(i==1); + fprintf(stderr,"zapisuji znak... %02x (%c)\n",val,val); + lptgpib_write_byte(val,0); + fprintf(stderr,"zapsan znak.\n"); + } + } +}