; File ALHAPAGE ; ; Authors: F. da Cruz and C. Gianone, Columbia University, September 1996. ; ; For use with C-Kermit 6.0.192 or later. ; For a detailed explanation, consult "Using C-Kermit", 2nd Ed., pp.454-456. ; ; Revised July 1997: ; 1. To make TAPMSG fit into 1K for small C-Kermit versions. ; 2. Change END to STOP within SWITCH to work around bug ; (these should be changed back to END in C-Kermit 6.0.193). ; ; TAPMSG, defined below, is an alphanumeric pager dialing script that ; implements the TAP protocol for sending one-line alphanumeric pages. ; To use the script, save it into a file, then tell C-Kermit to "take" ; the file. Now you have the TAPMSG macro defined. It assumes you have ; already made the phone connection. Then invoke it with two arguments: ; the pager ID and the message. ; ; Of course, it is also easy to define a macro for making the connection and ; then sending the page, for example (just a sample, change as required): define APAGE { set modem type usr ; I have a USR modem set port com1 ; on COM1 set speed 1200 ; Must use 2400 bps for paging set parity even ; and even parity set flow xon/xoff ; and Xon/Xoff flow control set modem flow none ; end-to-end, not local set dial retries 10 ; Allow 10 redials dial 5554321 ; Call the pager service if success - ; If the call is answered tapmsg \%1 {\%2} ; Send the page else end 1 Page failed. ; otherwise fail } ; To invoke the APAGE macro, put it in a file, edit it as necessary for your ; setup, tell C-Kermit to "take" the file, and then just type: ; ; apage number { this is a message } ; ; at the C-Kermit> prompt, for example: ; ; apage 99997654321 { Please call the office } ; ; Note: the pager ID number should not contain any spaces or else you must ; enclose it in braces: ; ; apage { 999 76 543 21 } { this is a message } ; ; Ditto for the message. COMMENT - TAPMSG - Send a one-line alpha page using TAP ; \%1 = Pager ID ; \%2 = Message ; def TAPMSG { loc \%i \%m \%s blk ; Local variables asg \%m \2\%1\13\%2\13\3 ; IDmsg asg \%s \fchecks(\%m) ; Get checksum and make block asg blk \%m\fchar(\fmod(\%s/256,16)+48)- \fchar(\fmod(\%s/16,16)+48)- \fchar(\fmod(\%s,16)+48)\13 ; Checksummed TAP block for \%i 1 6 1 { ; Try six times to get prompt out \13 ; Send in 3 ID= ; Wait for "ID=" if succ break } if > \%i 6 end 1 No prompt for \%i 1 8 1 { ; Send PG1, get msl 500 out \{27}PG1\13 min 3 {\6\13} {\21\13} {ID=} {\27\4\13} switch \v(minput) { :0, continue ; Timeout :1, break ; :2, continue ; :3, out \{27}PG1\13, continue :4, stop 1 Forced disconnect ; Fatal error } break } if > \%i 8 end 1 Timeout or bad response in 5 \27[p\13 ; Wait for go-ahead if fail end 1 No go-ahead ; Didn't get it for \%i 1 8 1 { ; Try eight times msl 500 out \m(blk) ; Send block min 8 {\6\13} {\21\13} {\13\27\4\13} {\30\13} switch \v(minput) { ; Get response :0, continue ; Timeout :1, break ; - success :2, continue ; :3, stop 1 Forced disconnect :4, echo ERROR - RETRYING, continue } out \4\13 ; Sign off with in 5 \27\4\13 ; Get back break ; But ignore timeout } if > \%i 8 end 1 Timeout or bad response } ; (End)