The communications program QTERM is, in my opinion, the best CP/M program of its kind. With its fast 1k Xmodem and true Ymodem protocols, it knocks spots off the commercial COMM+ (the only other popular PCW comms package these days) and pounds off your telephone bill. Unless you need an array of terminal emulations and a very user-friendly scripting language, QTERM is the program to go for. Being in the public domain, it's also completely free of charge. What more could you want? Download the program now. And once you've got hold of it, download this high speed patch to enable speeds of up to 38,400 bps with a Fax Link interface or 9,600 bps with a CPS8256 compatible interface. Please note that you'll need PMEXT to unpack the main QTERM archive.
Unfortunately, one of QTERM's strongest points is also its Achilles heel. Its built-in scripting language, QTCHAT, whilst very powerful, is rather impenetrable for non-programmers. One solution to this is to get hold of LOGMAKE, a handy script making utility.
Alternatively, with very little modification, the script below can be used to connect with and log on to your access provider. The parts you may need to customise are highlighted in the text. For more information on the syntax of QTCHAT scripts, please refer to the QTERM documentation.
Once you have customised and saved the script, you can run it using [PASTE] X from within QTERM, or by giving its name as a command line parameter when running the program, i.e. QTERM script name [ENTER].
The script itself will also accept command line parameters:
QTERM script name 1 [ENTER] will force the script to dial your provider's 1st number only. Useful when one line is not answering or is constantly engaged.
QTERM script name 2 [ENTER] will force the script to dial your provider's 2nd number only.
QTERM script name Q
[ENTER] will silence the modem's speaker before dialling:
useful for late night sessions when your other half is in bed.
!;QTCHAT script for logging onto XS4ALL (or any other provider for that matter) !;Ian Macdonald 18/4/95 !;set 38400 baud, 8 data bits & no parity, 0 msecs char. delay and 0 msecs line delay !b 38400 8n1 -* * 0 !;set drive and user number !n a1: !;set user function keys (useful for frequently used commands) !k 1anonymous\r !k 2ianmacd !k email@example.com\r !k 4finger\x20 !k 5ls -l | more\r !k 6elm\r !k 7tin\r !k 8lynx\r !k 9quota -v\r !k 0last ianmacd\r !;set toggles !;set match messages off !& m 0 !;set full duplex !h 0 !;set VT100 emulation (causes bug: \e will not work when VT100 on) !v 1 (comment out if you use the EMU VT100 emulator) !;set window off !w 0 !;set local echo off !e 0 !;set line feed complement off !l 0 !> +-----------------------------------------+\r\n !> | QTCHAT script XS4ALL log-in |\r\n !> +-----------------------------------------+\r\n\r\n !> Ian Macdonald (firstname.lastname@example.org) 18/4/95 \r\n !> \r\n\r\n !> \t \epPress [ALT]+[X] to abort\eq\r\n !> \r\n !;dialling failure string !$ u \r\n\erUnrecognised or no response expecting\eu "login:"\r\n !;dialling attempt string !$ v \r\nAttempt number\x20 !;XS4ALL dialling string !$ w \r\nDialling XS4ALL on\x20 !;XS4ALL's 1st number !$ x 5350535 !% _ .$1.1. `only1 !;XS4ALL's 2nd number !$ y 6265060 !% _ .$1.2. `only2 !:start !;check that the modem is alive -AT\r-OK\r\n-1--`mdminit-`mdmfail- !:only1 !$ y $x !% = .$y.$y. `start !:only2 !$ x $y !% = .$x.$x. `start !:quiet !;silence modem -ATM\r-OK\r\n-1---`mdmfail- !% = .$1.$1. `dial1 !;modem OK !:mdminit !;reset if fax has been used (comment out if not required) -AT+FCLASS=0\r-OK\r\n-1---`mdmfail- !;Wait 27 secs for carrier -ATS7=27\r-OK\r\n-1---`mdmfail- !;Check for quiet flag !% _ .$1.q. `quiet !:dial1 !;hang up modem !, !;increment count !@ t t + 1 !> $v@t !> $w$x...\r\n -ATD$x\r-- !;Look for "login:", "NO CARRIER" or "BUSY" ![ - 27 .login:.NO\x20CARRIER\r\n.BUSY\r\n. ![ = login: `login ![ = NO\x20CARRIER\r\n `dial1 ![ = BUSY\r\n `dial2 !> $u --- !:dial2 !;try XS4ALL's other number !;hang up modem !, !;increment count !@ t t + 1 !> $v@t !> $w$y...\r\n -ATD$y\r-- !;Look for "login:", "NO CARRIER" or "BUSY" ![ - 27 .login:.NO\x20CARRIER\r\n.BUSY\r\n. ![ = login: `login ![ = NO\x20CARRIER\r\n `dial2 ![ = BUSY\r\n `dial1 !> $u --- !:login !;send log-in name and get password request -ianmacd\r-Password:\x20- !;send password and check for 'new mail' message -password\r-$$- ![ = new\x20mail `mail --- !:mail !;if there's new mail, start Elm -elm\r-- --- !:mdmfail !> \r\n\erThe modem is NOT responding\eu\r\n !:mdmprm !> \r\n\er(R)estart or (A)bort script?\eu\x20\x07 !;use buffered input: hot-keys do not appear to work ! - z !% _ .$z.A. `end !% _ .$z.R. `start !;loop if neither 'a' nor 'r' !% = .$z.$z. `mdmprm !:end ---