#include #include #include #include #include char buffer[25],keybuffer[100],text[1000],name[16],filename[128]; char buffer2[25],ret[]="\n",*cp,*kb,*tx; int rsinput,key,button,ii,checkinput,result; int drv,count,backcount,gchk; FILE *fp; long keyinp,textlen; main() { appl_init(); /* open application */ graf_mouse(M_OFF,0); /* turn mouse off */ cls; title(); checkinput=0; kb=keybuffer; tx=text; backcount=0; gchk=0; get_input(); /* accept input */ } get_input() { for(;;) { while(Bconstat(1)==-1) /* loop while char is ready */ { if(checkinput==1) { save_data(); /* save buffer, reset flag */ checkinput=0; backcount=0; } rsinput=Bconin(1); /* get char from seriel */ if (rsinput=='>') gchk=1; if (buffer[3]==13 || buffer[3]==10) { gchk=0; for(ii=0;ii<=24;ii++) { buffer[ii]=0; buffer2[ii]=0; } } if((rsinput>=32 && rsinput<=126 && gchk==0)|| rsinput==13) { for(ii=24;ii>0;ii--) /* build buffer */ buffer[ii]=buffer[ii-1]; buffer[0]=rsinput; } Cconout(rsinput); /* print character */ } if (Bconstat(2)==-1) { keyinp=Bconin(2); key=keyinp & 0xff; if (keyinp==3866624) /* check for F1 */ save_file(); /* save capture */ if(keyinp==6356992) /* check for UNDO */ quit(); /* quit program */ gchk=0; if (key==8 && backcount>0) { backcount--; /* count # of char inputted */ *kb--=0; /* erase character */ Bconout(1,(int)key); /* output to seriel */ for (ii=0;ii<3;ii++) Cconout((int)Bconin(1)); /* print echo char */ } if (key>=1 && key<=126 && key!=8) { backcount++; /* count # of char inputted */ if (backcount==100) { kb==keybuffer; /* check for overflow */ backcount=0; for (ii=0;ii<100;ii++) keybuffer[ii]=0; } Bconout(1,(int)key); key=(key==13) ? '|' : key; /* handle carr ret */ *kb++=key; /* save input */ checkinput=1; } if ((key>=32 && key<=126) || key==13) Cconout((int)Bconin(1)); /* print echo char */ } } } save_data() { count=0; for(ii=24;ii>=0;ii--) { if (buffer[ii]>31) { buffer2[count]=buffer[ii]; count++; } } strcat(text,">WA "); /* the WAIT command */ strcat(text,buffer2); /* string to wait for */ strcat(text,"|"); /* RETURN character */ strcat(text,ret); /* REAL carr return */ strcat(text,keybuffer); /* copy response */ strcat(text,ret); kb=keybuffer; /* reset pointer */ for(ii=0;ii<100;ii++) /* clear buffer */ keybuffer[ii]=0; } save_file() { get_file(filename,"*.DO"); if (filename[0]!=0) { fp=fopen(filename,"w"); /* create file */ fwrite(text,1,strlen(text),fp); fclose(fp); quit(); } } quit() { appl_exit(); /* close application */ printf("\33f\n"); /* turn cursor off */ exit(0); } title() { printf("\33j \33p Bob Areddy's Autolog (c) 1989 \33q\33k\n"); }