The truth -- like many things in life -- is not so well known. It was actually written at the direction of my good friend Robert Edwards, the paging industry pioneer. Bob owned Radiofone Corp. (Empire Paging in New York) which was one of the largest carriers in the USA. One of Bob's technical people (Doug Morrison) wrote the code because Bob had the vision to get into Alphanumeric Paging before anyone else thought it was a good idea.
He also had the first Numeric Display Pager manufactured when everyone else in the industry thought voice pagers was the only way to go. Of course, the Numeric Display Pager became the most successful pager ever made, and it continues to lead the world market by a large margin. Alphanumeric paging is gaining share of market in the U.S. and is clearly the dominant offering in Latin America with over 90% of that market.
Step | Remote entry device | Paging central | Comments |
1 | Off hook
Access DDD line Await dial tone Dial stored access number |
| |
2 | Carrier up | Carrier up | |
3 | "<CR>" | "<CR>" is repeated at two second intervals until paging central responds with "ID=" at correct baud rate or until 3 transmissions have been completed. (This step exists to allow for possible future baud rate recognition). (All quotation marks or the symbols < > shown are used for notation in this document and are not transmitted). | |
4 | "ID=" | Request for ID returned within one second of receipt of <CR>. | |
5A | (For automatic remote entry devices)
"<ESC> SST" |
"<ESC>" signifies entry device intends to talk in automatic dump mode. "SS" is a set of two alphanumeric characters signifying a type of service to be accessed. (For a paging service where: Field 1 = "Pager ID" and SS will be sent as "PG".) Where T is a single alphanumeric character relating to the type of terminal or device attempting to send the message. T = "1" is a category of entry devices using the same protocol. The IXO and Novation devices are members of this category. T = 7, 9, 9 are reserved for wild card terminal or devices which may relate to a specific user's system. 6 alphanumeric character password (PPPPPP) here from automatic terminals. (Password is optional and may be different lengths in some systems). | |
5M | (For manual remote entry.)
"M<CR>" | Lack of <ESC> at beginning of response to "ID" signifies manual operation where applicable.
Any manual operation is user defined after log-on. "M <CR>" can be replaced by any sequence ending in <CR> and not beginning with <ESC>. | |
6 | "<Message sequence> <CR> <ACK> <CR>"
or
or |
Log-on accepted
Forced disconnect
| |
7 | "<ESC> [p <CR>" | Message go ahead is sent when paging central is ready for new information. [Note: the "p" is in lower case. This has caused a lot of grief to some programmers.] | |
8
BLOCK #1 BLOCK #2 BLOCK #3 BLOCK #4 LAST BLOCK |
TRANSACTION #1
"<STX> TRANSACTION #2
"<STX>
"<STX>
LAST TRANSACTION
"<STX> |
or
or
or |
A "block" is up to 256 characters in length, with up to 250 characters of info, plus 3 control characters and a 3 character checksum. The block carries one transaction (one set of all fields 1 through N) or a portion of a transaction. A block always carries an integral number of fields with their associated <CR>'s. It may be less than 256 characters to accommodate short transactions or the integral number of fields rule.
A field, with its associated <CR>,, may not exceed 250 characters. The <CR> field delimiter suggests <CR> may not be used within a field. The <ETX> is used if a given transaction (Fields 1 through N) ends within the block currently being transmitted. The <ETB> is used if the transaction is continued into the next block. No limit is established within the protocol itself regarding the number of transactions or the number of blocks or fields or blocks per transaction; however, a particular user system may have limits on either or both. Some systems may be limited to one block per transaction and one transaction per phone connection. Each checksum is computed by performing the simple arithmetic sum of the 7-bit values of all characters preceding it in that block. (This means that STX and ETB/ETX are included in the sum). The checksum is then the least significant 12 bits of this resulting sum. The checksum is transmitted as 3 printable ASCII characters having values between HEX 30 and HEX 3F (the characters 012345678 9:;<=>?). The most significant 4 bits of the sum are encoded as the 4 LSB of the second character and the least significant 4 bits of the sum are encoded as the 4 LSB of the third character. (See example in following table.) A normal paging system will have 2 fields only: Field 1 = Pager ID (normally up to 8 digits. May include function and check digit). Field 2 = Message. When a page is tone only, Field 2 will be empty. (Field 2 will typically be up to 80 alphanumeric or up to 24 numeric characters). The response to each block is one of four: <ACK> <CR> = OK, send next block.
<NAK> <CR> = Checksum error, send latest block again.
<RS> <CR> = Abandon current transaction and go to next. RS may occur when the checksum is OK, but the current transaction violates a system rule. At the option of the system, it may occur in other cases.
It is expected that many systems will save their message sequence responses until immediately before disconnect. For some entry devices, it may also be desirable that messages describing non checksum errors associated with a particular transaction in a "PG" service will begin with the letters "ID" followed by the contents of field 1 for that transaction. |
9 | "<EOT><CR>" | After reception of an <ACK> or <RS> for the last transaction in a given service, the entry device sends <EOT><CR> meaning there are no more transactions remaining in this service. | |
10 | "<Message sequence> <CR> <ESC> <EOT> <CR>" followed by dropping of carrier and hang up. | Optional message sequence before <ESC> <EOT> below denotes degree of acceptability of information in all transactions on this service.
<ESC> <EOT> = Begin disconnect. | |
11 | Drops carrier and hangs up. |
The standard protocol will be ASCII with X-ON, X-OFF either direction using a 10 bit code (1 start, 7 data, 1 parity, 1 stop) with even parity. |
The following is an example of how the checksum is derived for the message <STX>123<CR>ABC<CR><ETX>.
|
STX | 000 | 0010 | |
1 | 011 | 0001 | |
2 | 011 | 0010 | |
3 | 011 | 0011 | |
CR | 000 | 1101 | |
A | 100 | 0001 | |
B | 100 | 0010 | |
C | 100 | 0011 | |
CR | 000 | 1101 | |
ETX | 000 | 0011 | |
------------------ | ----------------- | ||
1 0111 | 1011 | ||
Sum: | 1 7 | ; | Checksum = 17 ; |
Each checksum is computed by performing the simple arithmetic sum of the 7-bit values of all characters preceding it in that block. (This means that STX and ETB/ETX are included in the sum.) The checksum is then the least significant 12 bits of this resulting sum. |
Therefore, an example of a complete block containing a correct checksum is: "<STS> 123 <CR> ABC <CR> <ETX> 17; <CR>" |
Return to Brad Dye's Paging Information Resource