| may96.tar |
Sidebar: The TAP Protocol
The protocol used by alphanumeric pagers is called TAP (Telocator Alpha-Paging Protocol). It's the industry-standard version of IXO's and Motorola's PET protocols. The protocol includes a few variations (e.g., a version for manual use); this sidebar presents only the details of TAP that are necessary to understand the implementation of ASAP. The modem parameters for using TAP are 7 data bits, even parity, and one stop bit (7E1). The protocol guarantees 300 baud, but many providers seem to accept speeds as high as 1200 baud. Upon connecting to the provider's modem, the TAP sending application should send up to three <CR>'s separated by two seconds until the paging provider (hereafter referred to as the terminal) responds with ID=. After the paging terminal comes back with ID=, you send <ESC>PG1<CR>, and dialogue proceeds as diagrammed below. Note that while all terminal responses from this point may contain an optional message, the responses ideally are only acknowledgments (that is, <CR><ACK><CR>).
Sending Application Terminal <ESC>PG1<CR> ====> Initiate dialogue <==== <CR><ACK><CR> Logon accepted, or <CR><NAK><CR> Requested again, or <CR><ESC><EOT><CR> Forced disconnect <==== <ESC> [p <CR> <STX>Field1<CR>Field2<CR><ETX>CheckSum<CR> ====> <==== <CR><ACK><CR> OK, send next block, or <CR><NAK><CR> Checksum, or transmission error, send last block again, or <CR><RS><CR> Abandon current transaction and go to next, or <CR><ESC><EOT><CR> begin disconnect. <EOT><CR> ====> No more transactions, sent after the <ACK> or <RS> response.
Where Field1 is the PIN and Field2 is the first message block (up to 230 characters, depending on the service). The checksum is computed by performing the simple arithmetic sum of the 7-bit values of all characters preceding it in that block (including the <STX> and <ETX>). The checksum is then the 12 least significant bits (LSBs) of this resulting sum. (The checksum is transmitted as three printable ASCII characters having values between 30h and 3Fh (the hex numbers are represented as 0123456789:;<=>?). The four LSBs of the sum are encoded as the four LSBs of the third character. The following shows an example that uses a three-digit PIN:
<STX>123<CR>ABC<CR><ETX>17;<CR> Field1 Field2 Checksum
Viewed another way:
STX 0000 0010 1 0011 0001 2 0011 0010 3 0011 0011 CR 0000 1101 A 0100 0001 B 0100 0010 C 0100 0011 CR 0000 1101 ETX 0000 0011 10111 1011 1 0111 1011 HEX $1 $7 $B ASCII 31(1) 37(7) 3B(;)
Resulting in a checksum transmitted as the ASCII characters:
17;
Again, to compute the 3 checksum characters to transmit, take the 12 LSBs of the checksum and transmit 4 bits at a time in a byte, where the upper 4 bits are always 3, thereby, making the character transmitted ASCII format.
|