PROGRAM INFORMATION

This page is the closest thing to a manual there is for using the program.


Featured Highlights

The main purpose of this program is to allow the reception of FLEX paging messages on your computer using your scanner and an interface circuit. You have the option of using a very simple Hamcomm type interface (useful for a large number of other shareware programs!) at the expense of missing some messages, or you can build a somewhat more complicated 4 level FSK interface to maximize your pager message harvesting capabilities.

It is common practice for a paging service provider to interleave FLEX transmissions with POCSAG transmissions for older pagers. Therefore, this program automatically detects and displays POCSAG pages also. However, if you are only interested in POCSAG paging you will get more features by looking at other other shareware decoders (notably the PD203 paging decoder for DOS and POC32 for WIN95/NT).

This program can also display some of the new personal communications services (PCS) transmissions that utilize Motorola's ReFLEX 25 protocol. This will require use of the 4 level FSK interface to avoid missing every other 3 character message chunk.

The program can be configured to search for up to 30 different text strings or up to 400 different pager addresses. Any messages meeting those criteria can be sent to a special "filtered" log file and/or shown in their own window on screen.


Some areas that need improvement

First, I'm still missing some sync ups for several ReFLEX modes and one FLEX mode. See the interface section for more details.

Next, I'm still having some problems deciding whether a POCSAG message is alphanumeric or numeric. Apparently, paging service providers do not adhere to the original POCSAG standard and its specifications on message types. Instead, I use the following to decide what the message type is: if the message is shorter than 7 words I count the number of characters greater than 31 (assuming alphanumeric) and the number of words less than 10 (assuming numeric); the message type will then be assumed to be the one with the greatest proportion of "good" characters. All messages longer than seven words are assumed to be alphanumeric. It's not perfect but works most of the time.

ReFLEX messages should be processed a little better than the current raw character dump onto the display.


System & Hardware Requirements

You will need a PC compatable computer with a free serial port. I can't know what clock speed you need to get this program to work; all I can say is that I've not encountered any problems running this on a 133MHz Pentium.

The scanner to computer interface is described in a different section of this web site. I would strongly urge you to start out with a basic 2 level FSK interface (Hamcomm type) - that way you quickly see what this program does and how well it works.

Your scanner definitely needs a discriminator output; you can find the information at Bill Cheek's web page; similar information is also somewhere on the Hoka Electronics web site.

Also, you must run this program from DOS; it will not work under a Windows operating system.


The first thing you'll notice when you start the program is the status line at the top of the screen. The following explains what the various fields are.

STATUS LINE FIELDS

FIELD SCREEN APPEARANCE EXPLANATION
SPINNER / or | or \ or - This spins around to let you know that
data is coming in over the interface.
FLEX mode FLEX ABCD This field is highlighted in yellow when FLEX messages are
being received. The ABCD shows which phases are active (yellow
if it's being received or lightred if interface cannot decode).
Cycle &
Frame INFO
CY:- FR:-- Shows last received FLEX or REFLEX cycle and frame number
REFLEX mode REFLEX ABCD Similar to FLEX ABCD indicator except for REFLEX systems
POCSAG mode POCSAG ---- Highlighted in yellow when POCSAG messages are being
received; baud rate is also shown (512/1200/2400 baud)
Log file mode LOG ON Shows log file status: OFF, ON, or PAU
Receive / Filter mode 4INMA first character: interface type; (2 or 4 Level)
I: receive mode inverted (yellow) or normal (lightgray)
N: yellow indicates numeric messages are shown/logged
M: yellow indicates misc FLEX message types are shown/logged
A: yellow indicates alpha messages are shown (always true)
HANGUP COUNTER 0002 Counts number of com port interrupt hangups
LOG FILE NAME LOG TO: PAGERAA.AAA Shows filename of log file. Displayed if there's enough
space on the status line (132 column display modes).

The spinner should be going around when you start the program. It changes each time one of the serial port input lines is toggled (2 level interface mode) or when all three input lines change to the same state (4 level interface mode). The spinner is therefore a basic interface test. If it isn't moving you may have the wrong com port selected or some error in your interface circuit.

The log file allows later processing and analysis of the collected traffic. It is an almost direct echo of the character writes to the display. The only change is that any characters that came from a word that did not pass the error detection test (shown in LIGHTGRAY) are preceded by a character that shows up as a small, centered dot. This logfile capability is intended to allow unattended message collection; later one can search the logfile with an editor or post processing program for messages of interest to the user. Each time the program starts, a new and unique log file name of the form pager**.*** will be selected; you never have to worry about previous data being accidentally overwritten.

What's the hangup counter? It counts the number of times two serial interrupts occur so close together that the interrupt service routine hasn't had a chance to finish servicing the previous interrupt (this is basically only a problem with the 4 level interface). The result is a hangup where no further serial port interupts are processed and no further traffic is intercepted. The system timer interrupt has been reprogrammed to recognize and clear these hung states; however there will always be some data loss caused by these hang ups. This information is shown on the screen to let you know how bad the problem is on your particular machine. An excessive hangup rate probably means your interface needs some better low pass filtering.


KEYBOARD COMMANDS

KEY FUNCTION
P Toggle receive data Polarity
L Activate / Pause log file
M Toggle misc. FLEX message display mode
N Toggles numeric message display mode
1 Set screen mode: Standard 40col by 25row
2 Set screen mode: Standard 80col by 25row
3 Set screen mode: VESA 80col by 60row
4 Set screen mode: VESA 132col by 25row
5 Set screen mode: VESA 132col by 43row
6 Set screen mode: VESA 132col by 50row
7 Set screen mode: VESA 132col by 60row
Up Arrow Decrease filtered message window size
Down Arrow Increase filtered message window size
SPACE Exit program
Esc Exit program

Note: standard display modes 1 and 2 should work on any computer. The VESA modes may or may not. The program should refuse to switch to any VESA modes not supported on your machine. However, if you switch modes and end up staring at a blank screen without a status line then you need to press 1 or 2 to return to a video mode supported by your machine. This kind of screwup might happen because the program accesses video RAM directly and might not be using the correct addresses for your video card.

Note: You cannot change the com port or the interface type using keyboard commands; these can only be configured using command line arguements

Depending on your scanner and interface, you may or may not need to invert the receive data polarity - otherwise you will not see any data being collected.

The filtered message window will only appear if you have enabled either text string filtering or pager address filtering. You can decrease the window to display only 1 line or increase until it reaches 3 or 4 lines from the bottom of the screen.


PROGRAM COLOR SCHEME

COLOR FUNCTION
YELLOW On status line: Indicates highlighted item is active
Yellow is also the alphanumeric message color
WHITE In filtered message window: white highlights the text
string or pager adress that passed the filtering tests.
LIGHTRED On status line: indicates an active phase that cannot
be decoded with current 2 level interface.
LIGHTRED is also the numeric message color
PURPLE This is the miscellaneous message color
LIGHTGRAY Any information derived from words that did not pass
an error detection check are shown in lightgray
GREEN All pager address information is shown in green
CYAN A FLEX message's phase is shown in CYAN
RED Any error messages show up in RED
LIGHTBLUE Date & Time stamps
LIGHTCYAN Startup message

Note: both POCSAG and FLEX addresses are shown in green. You can distinguish the two types (in the latest program revision) since the FLEX addresses are enclosed in [] and the POCSAG address information is enclosed in {}.


DEFAULT PROGRAM SETTINGS
AND THE COMMAND LINE ARGUEMENTS USED TO MODIFY THEM

NOTE: All of these options and more can be set in the pocflex.ini file. The command line arguements are still processed and take priority over the pocflex.ini settings (just for backwards compatability).

ARGUEMENT FUNCTION
C1
C2
C3
C4
Interface on COM1 (Default)
Interface on COM2
Interface on COM3
Interface on COM4
+L Program automatically starts log file at startup
(Default: user must activate log file by pressing "L")
+N Program will start in numeric message display mode
(Default: numeric message display mode off)
+M Program will start in miscellaneous message display mode
(Default: misc. message display mode off)
+P Program starts with receive data polarity inverted
(Default: receive data polarity not inverted)
+I Program set to run with 4 level interface
(Default: 2 level interface)
-T Supress date/time stamping
+C Print line feeds to log files.
1,2,3,4,5,6,7 Sets initial video mode that program starts

The idea behind processing these command line arguements is to allow the user to set up a batch file that starts the program according to his or her individual preferences. Example: suppose you have a batch called GO.BAT; and GO.BAT consists of the following single line:

POCFLEX +I +P 1 C2 +L

The program will expect to see a 4 level FSK interface with receive data inverted on COM 2, the startup video mode is 40 col by 25 rows, and the log file is automatically started.

Note: setting program options now really should be done with the pocflex.ini file.


Configuring the text & address filtering functions

All the filtering options are set in the "filter.ini" file. This file includes a number of comments in it so I think you should be able to go in and edit the options to your own tastes. The general section allows one to set the default filtered message window size, and toggle the log file/text filtering/address filtering options. The beep section allows you to set the length and frequency of the beep that is heard when message passes the filtering tests. Finally, the "strings" and "capcodes" sections let you enter the information to be searched for. The capcodes can include up to a 30 character description which will be shown on screen (and in the special log file).

Note: if you would like to include numeric messages in the filtering process you must enable the scannumeric option in the "filter.ini" file AND make sure the option to display numeric messages on the screen is set. If numeric messages are not shown on the screen then the numeric messages will not be passed to the filtering routines.

Except for the filtered message window size, filtering options cannot be changed by command line or keyboard parameters.

If enabled, the filtered log file output is written to a file whose name is of the form "filteraa.aaa". A unique filename is selected each time the program starts so there is no danger of over-writing previous data.


Revision History

First Revision: FLEX addresses are now shown as capcodes (short addresses = 7 digits and long addresses = 9 digits) - see the FLEX info section on how to convert the hex information shown previously to a capcode. POCSAG addresses are now shown in decimal, the resulting number still MAY NOT BE the correct RIC code (finally corrected in fourth revision). The superfluous line feeds that occured in POCSAG mode have been eliminated. The program will now correctly decode frames with more than one BIW. The receive clock timing routine has been changed a little bit for FLEX mode.

Second Revision: text and pager address filtering functions added. Some minor changes to log file writes - only address and the message text is written to the file now; errors are now indicated as a sequence of dots instead of the alternating dot/bad character sequence. Additional checksum checks on block information word & vector fields to cut down displayed "garbge eruptions".

Third Revision: POCSAG capcodes are now shown almost correctly; POCSAG processing routine made a little more error tolerant (shouldn't switch back to FLEX in the middle of a transmission as often now); POCSAG function type now shown next to address. Hangup counter now checks to make sure serial interrupt is pending, it will no longer trigger when no status lines are being toggled (as may occur when some transmitters key up). Line Feeds are replaced by | in the data sent to the log files ensuring you have one message per line. Date/Time stamp option added. Filtered output filename form changed to filter**.*** (note extra r).

Fourth revision: POCSAG tone only ghosting problem fixed; MSB of POCSAG capcode now processed; fiddled around with algorithmn that decides if a POCSAG page is alpha or numeric. Added command line option (+L to write line feeds) to let you specify if line feeds should be written to the kill file or replaced by character 175. On screen line feeds always displayed as character 175. Receive clock routine now uses a "coarse" mode to look for sync ups and a "fine" mode for data.

Revision of fourth revision (Rev. 0.004b): Corrected FLEX long address capcode screwup. It turns out that the binary to capcode conversion given in U.S. patent #5555183 is out of date; the correct conversion is the one shown in the MC68175 datasheet. (If you found interesting long FLEX capcodes using previous program editions you need to add 1024 decimal to them).

Revision Five: Added option to send received messages straight to printer. Diddled with sync up routines to try to cut down on missed FLEX frames (espcially when FLEX transmission comes right after a POCSAG one).


To Do List

Hopefully coming sometime soon in version 1.000: indicate POCSAG speed on screen, detect inverted sync sequences so that normal/invert mode is automatically set. A lot of the code needs to be cleaned up; parts of it need to be just outright rewritten. The top priority will be to seperate the log file functions from the screen display routines. The screen display will also be rewritten to allow you to scroll back through the captured messages. New options will allow user to set his/her own colors, allow new log files to be opened automatically after the old one has been running a certain time, a pager capcode reject list should be added, and multiple filter.ini files should allow the user to setup and use a different filter file for each frequency being monitored. Possible: adding the option of splitting the main log files up into a swarm of smaller ones where all traffic to a given pager capcode in stored in its own file.

When will I get all this done? At least a few weeks... But when most of that stuff on the to do list gets done I'll post a quick message to rec.radio.scanner so you don't have to check this web page every couple of days.


Well, I hope that's enough information to let you figure out what the program is displaying, how to run it, and how to configure it to your own tastes.

Download program & information files: POCFLEX.ZIP (about 115k)


NAVIGATION

INTERFACE INFORMATION- - - - - FLEX INFORMATION