///////////////////////////////////////////////////////////////////////// // QUICKBBS.SLT - by Terry Robertson (October 1988) // // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // // // SCRIPT TO LOG-ON TO A QUICKBBS SYSTEM. It also deals with // // QBBS's BINKLEYTERM "front-end". // // // // Please note that this script assumes that you have assigned your // // FULL NAME to function key F4. The easiest way to do this is by // // using the FKEY script in this collection. // // // // In addition, the script is written so that it will abort if you // // have not completed the relevant PASSWORD entry in the Dialling // // Directory. // // // // I have assumed that you want to use the linked scripts CONNECT // // and CAPTURE. If you do not have these or prefer not to use // // them you should "comment out" the two lines starting "call" // // by simply putting "//" before the word "call". // // // ///////////////////////////////////////////////////////////////////////// str s[30]; main() { int stat; int t1, t2, t3; int tmark; alarm(1); call("connect", 1); // Gives "connect" information by // calling Connect.slc script call("capture", 1); // Opens new capture file by calling // Capture.slc script if (not _entry_pass) // no pass, so didn't recog. board { prints ("Sorry, I don't know the password for this BBS!"); return; } t1 = track("Binkley", 1); t2 = track(" name?", 1); t3 = track("Password", 1); tmark = timer_start(1800); // wait up to 3 minutes for login // answer any logon questions while (not time_up(tmark)) { terminal(); // let Telix process any chars and keys stat = track_hit(0); // see which (if any) track was hit if (stat == t1) // Escape prompt found { delay(50); cputs("^["); // Send Escape character } else if (stat == t2) // send name { keyget(0x3e00, 0, s); delchrs(s, strlen(s) - 2, strlen(s)); cputs(s); cputs("^M"); } else if (stat == t3) // send password { cputs(_entry_pass); cputs("^M"); break; // done with logon } } if (time_up(1)) prints("Logon failed!"); timer_free(tmark); // free timer channel track_free(0); // and all track channels }