/*****************************************************************************/
/*****************************************************************************/
      cP Ver 4.3  by Chris Conger
      July 31, 1994
/*****************************************************************************/
/*****************************************************************************/

cP is a DATA PLOTTING PROGRAM capable of plotting TWO DIMENSIONAL DATA in both
LINEAR or LOG space. The program runs from the CLI or from Workbench and
REQUIRES KICKSTART 37 or higher to run. There is no limit to the number of
points that the program can load except the amount of ram on your system.
There is also no limit to the number of sets. cP creates a  PUBLIC SCREEN,
so you can open other applications on its' screen. This version of cP sports
an AREXX interface for almost any function.

/*****************************************************************************/

 What next?
 
  This is the last release of cP.  Any new release will be a total rewrite and
  allow support for HDF/NetCDF type files.  The name will change then also.

/*****************************************************************************/

 Whats New?

4.3)
  
  Now does delta measurement when mouse select button is pressed and dragged.  
  cP will now attempt to CLONE the DisplayID of WORKBENCH thus allowing cP
  to work well with RTG type display boards. Added rexx commands TEXT and
  VERTTEXT to allow user placed text on screen display. Mostly for printing.
  Fixed bug in NOFN display which didn't center display when more than one
  data set loaded. Fixed old bug in LogAxis that caused display to move out
  one decade on redraw sometimes due to precision problem. Little of this and
  that.  Added UnZoom menu selection.

4.2)
  cP now stores all its numbers as double precision
  CrossHair feature for Identify Measurements
  Identify/CrossHair option can have significant digits set by menu/CLI/ENV
  Position Locking for CrossHair with spacebar
  Single column data will load with x = line number.
  Old draw break criterion changed to Realtime option (see below)
  Distribution now includes 020/881 version again by request
  Fixes bug where endless loop could occur when clicking grid if no sets were
    ever loaded
4.1)
  Fixes enforcer hits during Workbench launch (I don't do that very often)
4.0) 
  Arexx, Printing, Better redraw, and lots of other stuff

/*****************************************************************************/

EXAMPLE COMMAND:

      > cP SAMPLE.#?

/*****************************************************************************/

cP reads an ENVIRONMENTAL VARIABLE at startup which can be used to change the
default values of the settings. The NAME of the var is CPCONFIG. Any options
given on the command line will override the environmental variable.

	EX:
	  > setenv cpconfig "ID=32768 FONT helvetica SIZE 9 GRID SETDEF W=1000"

/*****************************************************************************/
/*****************************************************************************/

The template for BOTH command line and envvar is:

FILES=WILD/M,LX=LOGX/S,LY=LOGY/S,GRID/S,SYM/S,ID=DISPLAYID/N/K,FONT/K,FS=SIZE/N/K
LORES/S,HIRES/S,LACE/S,SETDEF/S,W=WIDTH/N/K,H=HEIGHT/N/K,P=POINTS/N/K,T=THIN/N/K
D=DEPTH/N/K,MONO/S,CPANEL/S,NOFN=NOFNBOXES/S,OB=OPENBEHIND/S,MYNAME/K
XLAB/K,YLAB/K,TITLE/K,REALTIME/S,SD=DIGITS/N/K

/*****************************************************************************/

FILES - This can be multiple args and includes WILDCARD patterns. The files
        must be ASCII NUMBERS DELIMITED BY WHITESPACE OR COMMAS. cP will ignore
        numbers after the first two colums. cP will also ignore text lines so
        that you can place a header in the file. See file sample.asc to see the
	   format.

/*****************************************************************************/

LOGX -  Switch to turn log XAxis on. If any values are less than or = to zero,
        sets back to LINX. ( Can't do log negative ). X HOTKEY.

/*****************************************************************************/

LOGY -  Switch to turn log YAxis on. If any values are less than or = to zero,
        sets back to LINY.  ( Can't do log negative ). Y HOTKEY.

/*****************************************************************************/

GRID -  Switch to turn on the grid. G HOTKEY

/*****************************************************************************/

SYM  -  Draw x SYMBOL AT EACH POINT. Amiga S hotkey.

/*****************************************************************************/

ID=DISPLAYID - ID number of the TYPE DISPLAY you wish to create.

           Default is HIRES LACE.

           EXAMPLES:
           ID=4     -> LORES LACE      320*400
           ID=32768 -> HIRES           640*200
           ID=0     -> LORES           320*200
		 ID=32804 -> SUPERHIRES LACE 1280*400

/*****************************************************************************/

FONT - Name of the font to use for the display. The default is topaz.
       cP adds '.font' to the string.
       EX:  FONT helvetica SIZE 12

/*****************************************************************************/

SIZE - Size of the font. Default 8. No more Max size

/*****************************************************************************/

LORES - Lores screen
HIRES - Hires screen
LACE  - combine with either LORES or HIRES this function OR's
        the LACE key over DISPLAYID and LORES/HIRES.

/*****************************************************************************/

SETDEF - Makes the new cP screen the DEFAULT PUBLIC SCREEN.

/*****************************************************************************/

W=WIDTH -  Set screen width in pixels. cP will open a VIRTUAL autoscroll screen
           if WIDTH is wider than display.
		 EX. W=1800

H=HEIGHT - Set screen height in pixels. cP will open a VIRTUAL autoscroll
           screen if HEIGHT is taller than display.
		 EX. H=800

/*****************************************************************************/

P=POINTS - Max Points to load in each set

/*****************************************************************************/

T=THIN   - depopulate set by number
           EX. THIN=3 loads every third point

/*****************************************************************************/

D=DEPTH - Screen depth in bitplanes.
		DEPTH=1 mono, DEPTH=2 four colors, DEPTH=3 eight colors,
		DEPTH=4 16 colors.  If you have two sets use DEPTH=3 more
		than two use DEPTH=4. One data set looks good either D=1 or D=2

MONO  -  black and white display. GREAT FOR BIG VIRTUAL SCREENS. Same as D=1.

/*****************************************************************************/

CPANEL - toggles CONTROL PANEL on or off. default on. Amiga-C hotkey

/*****************************************************************************/

NOFN=NOFNBOXES - dont place file name boxes on side of screen

/*****************************************************************************/

OB=OPENBEHIND - Opens Screen BEHIND ALL OTHER SCREENS

/*****************************************************************************/

MYNAME  - SETS WINDOW, PUBLIC SCREEN and REXX PORT NAMES to this. OpenScreen
		will fail if name already exists.

          EX: MYNAME JoMama

/*****************************************************************************/

XLAB  -  Label for xaxis
YLAB  -  Label for yaxis
TITLE -  Label at top

          EX: XLAB "Pullin NoseHairs"
          
/*****************************************************************************/

REALTIME - This switch tells cP that data is increasing. With large data sets,
           the redraw time after a zoom can be improved with this option. cP
           will break from the draw loop for each set if it believes the data
           is offscreen.  If x values are declining at any point in the data
           don't set this option.

/*****************************************************************************/

SD=DIGITS  Number of significant digits for CrossHair Measurements

/*****************************************************************************/
/*****************************************************************************/

/*****************************************************************************/

HOTKEYS
        X toggles lin / log axis for x values
        Y toggles lin / log axis for y values
        R Redraws screen
        A Add file
        K opens Kill requester
        F Full view
        Z Zoom
        G toggles grid on/off
        H Turns CrossHair on (spacebar locks x in Xhair)
        Q Death
        
        arrow keys page scroll virtual screens	

/*****************************************************************************/
/*****************************************************************************/

AREXX

cP now is almost entirely CONTROLABLE from AREXX. The program opens its rexx
port as CPLOT_REXX? where ? is a posssible number added because multiple cP tasks
are running. If lauched with the MYNAME arg, the REXX port will be arg.

/*****************************************************************************/

OPEN [FILENAME]    Empties SetList and reads datafile
ADD  [FILENAME]    Reads datafile
PRINT              Dump to PRINTER; Works best with Big Virtual Screens and MONO

FEED               Send FormFeed after print
NOFEED             No FormFeed after print(use to stack multiple plots on one page)

SCREENTOFRONT
SCREENTOBACK

FULL               Autoscales and redraws screen
REDRAW             Redraw screen
ERASE              Erase screen NO redraw

LINX               Set XAxis to lin
LOGX               Set XAxis to log
LINY               Set YAxis to lin
LOGY               Set YAxis to log

SYM                Draw SYMBOLS
NOSYM
CPANEL             Control Panel ON
NOCPANEL
GRID
NOGRID

XMIN   <#>         Specify Zoom or ZoomOUT
XMAX   <#>
YMIN   <#>
YMAX   <#>

POINTS <#>         Max number of points to read from each file
THIN   <#>         DEPOPULATE while reading
DELAY  <#>         SLEEP for # 50ths of a second , DOS Delay();

XLABEL <label>     XLAB also works
YLABEL <label>     YLAB also works
TITLE  <title>

TEXT     <xpos> <ypos> <my text string>
VERTTEXT <xpos> <ypos> <my text string>

/*****************************************************************************/
SAIC VERSION ONLY

REXX COMMANDS

LOGO [ON|OFF]      Display company Logo mostly for printing
RHP  <FILENAME> <CHANNEL>  Unpack binary file channel

CLI COMMANDS
C=BINARY/F/K  Load binary channels

/*****************************************************************************/

The archive contains both IEEE math and 020/881 versions. I find about 
20% improvement in draw speed for the 020/881 version on my A3000.
Also included is source code so you can recompile for whatever CPU and
math which you may like. There arn't many comments in the source, and I
don't really consider them to be great example code. Anyhow feel free
to use any of the functions in your own programs.

/*****************************************************************************/

SAIC and Chris Conger take no responsibility for any damage which this program
might cause to your system, use at your own risk.

/*****************************************************************************/
/*****************************************************************************/

This program is BeerWare - if you like it go and buy yourself a beer :-)
it's source code and executable are PUBLIC DOMAIN

I really would like to receive mail from people who use cp just so that I have
some idea what level of use it gets.  Does anyone use cP ???

Chris Conger

INET - congerc@abqa.saic.com

c/o SAIC
2109 AirPark Rd. SE
Albuquerque, NM 87106
/*****************************************************************************/
/*****************************************************************************/

       ,_mmms     ,z     gz  ,_mmm.
      iW~  ]@    g@K    i@` mA~  M@
      8W.      ,Wf8D   ,@!,@!
       VMW_   iW~ @[   WP WP
    _.   8D ,d@mmm@[  dA ]@    _.
    @b__mP`,Wf   -@| i@` !@b_gWf`
    '~~~   ~`    '~  ~`   '~~`

/*****************************************************************************/

