home *** CD-ROM | disk | FTP | other *** search
/ HomeWare 14 / HOMEWARE14.bin / os2 / cenv2_19.arj / CENVI.DOC < prev    next >
Text File  |  1994-03-09  |  54KB  |  1,014 lines

  1.                     CEnvi Shareware Manual, Chapter 1:
  2.                        CEnvi Unregistered Shareware
  3.  
  4.                      CEnvi unregistered version 1.009
  5.                                9 March 1994
  6.  
  7.                        CEnvi Shareware User's Manual
  8.  
  9.           Copyright 1993, Nombas, All Rights Reserved.
  10.           Published by Nombas, P.O. Box 875, Medford, MA 02155 USA
  11.           (617)391-6595
  12.  
  13.           Thank you for trying this shareware version of CEnvi from Nombas,
  14.           a member of the Association of Shareware Professionals (ASP).
  15.  
  16. 1.  CEnvi Unregistered Shareware
  17.  
  18. 1.1.  Introduction to Cmm and CEnvi
  19.  
  20.           Cmm (C minus minus) is 'C' for the rest of us.  CEnvi runs Cmm
  21.           programs in the DOS, Windows, OS/2, NT, Unix, etc...
  22.           environments.  Together, CEnvi and Cmm make the power and
  23.           flexibility of the C programming language part of every computer
  24.           user's environment, without the hardware, time, and programmer
  25.           resources needed for developing full-blown C programs.
  26.  
  27.           With CEnvi and Cmm, anyone can take control of their computer
  28.           environment.  C is not just for programming nerds anymore.  CEnvi
  29.           utilites, macros, batch files, and scripts can quickly be
  30.           created, shared, and modified among all computer users,
  31.           professional and amateur alike.
  32.  
  33.           CEnvi can be incorporated at a pace that is comfortable to you:
  34.           you may only want to use CEnvi code set up by a more experienced
  35.           user, you may want to enhance existing batch files with a line or
  36.           two of CEnvi code, or you may write complete utilities using
  37.           CEnvi.
  38.  
  39. 1.2.  CEnvi unregistered shareware version
  40.  
  41.           This package is the unregistered shareware version of CEnvi.
  42.           Nombas provides this unregistered shareware version of CEnvi so
  43.           that you can try the program for a while before deciding whether
  44.           to buy.  If, after a few weeks of using using this product, you
  45.           think CEnvi will be useful to you and/or your organization then
  46.           use the registration form at the end of this document (or see the
  47.           file: REGISTER.DOC) to register CEnvi.
  48.  
  49. 1.2.1   Why you should register
  50.  
  51.           If you register, then you will receive:
  52.             *The latest version of CEnvi for all supported platforms
  53.               (currently DOS, OS/2, and Windows, with NT support expected
  54.               soon) without the annoying "Please Register" reminder.
  55.             *The CEnvi user's manual (almost 100 pages, including a
  56.               description of the Cmm programming language, a tutorial for
  57.               those who have never programmed, and descriptions and
  58.               examples of the nearly 150 functions included in the CEnvi
  59.               library).
  60.             *Free incremental electronic downloads for new versions of
  61.               CEnvi for all supported operating systems.
  62.             *Unlimited support from Nombas and CEnvi/Cmm users through
  63.               CompuServe (72212,1622), internet (bsn@world.std.com), the
  64.               cenvi-cmm e-mail mailing list (cenvi-cmm@world.std.com), and
  65.               the Nombas BBS (617-391-6595).
  66.             *Access to the growing list of CEnvi utilities and libraries
  67.               (some of which are included in this unregistered shareware
  68.               package, and others are contributed by Nombas and CEnvi/Cmm
  69.               users to the electronic locations described above).
  70.             *Discounts for additional registered version of CEnvi to use
  71.               within your organization.
  72.  
  73. 1.2.2   How to register
  74.  
  75.           See the REGISTER.DOC document that is included with this package
  76.           (and is also duplicated at the end of this document), to purchase
  77.           a registered version of CEnvi.
  78.  
  79. 1.3.  Installing CEnvi, documents, and sample files
  80.  
  81.           To install this package for evaluation
  82.             * Create a directory and then copy all of these files into that
  83.               directory.
  84.             * From within that directory execute CEnvi.exe.
  85.             * At the CEnvi "Code:" prompt enter "Install.cmm" to execute
  86.               the Install program (which is written in Cmm).
  87.             * You may then test CEnvi by trying out the included example
  88.               files and by creating CEnvi code of your own.
  89.  
  90.           For DOS and OS/2 versions, the install.cmm program will set up
  91.           the PATH environment variable to include the directory you
  92.           installed the files in, and will also set the CMMPATH environment
  93.           variable to this directory.  For Windows, install will add the
  94.           CMMPATH profile value in WIN.INI (in the [CEnvi] section), and
  95.           will also add the CMM file extension to the [Extensions] section
  96.           in WIN.INI.
  97.  
  98. 1.3.1   4DOS and 4OS2 users - .cmm executable extension
  99.  
  100.           4DOS and 4OS2 users can directly execute .cmm files by
  101.           associating the .cmm file extension with your CEnvi executable.
  102.           Assuming the CEnvi.exe is in the c:\CENVID directory, then a 4DOS
  103.           user would want to add this line to AUTOEXEC.BAT:
  104.               SET .cmm=C:\CENVID\CEnvi.exe
  105.  
  106. 1.4.  Removing CEnvi unregistered shareware
  107.  
  108.           If, after testing CEnvi for a few weeks, you choose not to
  109.           register this version of CEnvi, then you should remove the
  110.           program from your computer.  (Also please consider telling Nombas
  111.           why CEnvi did not suit your needs; we need such feedback if we
  112.           are to improve the product.)
  113.  
  114.           For all operating systems, the first step for removing CEnvi is
  115.           to delete all the CEnvi files and the directory that you copied
  116.           the files to.  The next step depends on your operating system:
  117.  
  118. 1.4.1   DOS de-installation
  119.  
  120.           Install.cmm made two changes to C:\AUTOEXEC.BAT: the directory
  121.           that CEnvi was in will have been added to your PATH statement,
  122.           and the CMMPATH environment variable will have been added.  To
  123.           de-install CEnvi you must remove the CEnvi directory from the
  124.           PATH statement and you must also delete the "SET CMMPATH=..."
  125.           line.
  126.  
  127. 1.4.2   OS/2 de-installation
  128.  
  129.           Install.cmm made two changes to C:\CONFIG.SYS: the directory that
  130.           CEnvi was in will have been added to your PATH statement, and the
  131.           CMMPATH environment variable will have been added.  To de-install
  132.           CEnvi you must remove the CEnvi directory from the PATH statement
  133.           and you must also delete the "SET CMMPATH=..." line.
  134.  
  135. 1.4.3   Windows de-installation
  136.  
  137.           Install.cmm made two changes to WIN.INI: the CMM profile
  138.           extension was added and the CMMPATH profile string was created.
  139.           To de-install CEnvi you must edit WIN.INI (with NOTEPAD.EXE for
  140.           example) and remove from the [Extensions] section a line similar
  141.           to this:
  142.                CMM=C:\CENVI\CENVI.EXE ^.CMM
  143.           and also remove these line (or lines much like these) from
  144.           WIN.INI:
  145.                [CEnvi]
  146.                CMMPATH=E:\NOMBAS\CENVI\EXAMPLES.WIN
  147.  
  148. 1.5.  Using this package
  149.  
  150. 1.5.1   Unregistered CEnvi shareware executable
  151.  
  152.           The executable in this package, named CEnvi.EXE, is identical to
  153.           the registered version of CEnvi at the time this package was
  154.           created with one exception: this unregistered shareware version
  155.           will occasionally put up a screen to remind you to register your
  156.           copy of CEnvi (see the bottom of this document or REGISTER.DOC).
  157.           Nombas has spent, and will continue to spend, time and resources
  158.           developing and supporting CEnvi and Cmm.  Without your honest
  159.           support Nombas cannot improve and support CEnvi (and pay
  160.           mortgage, feed the kids, pay the doctor, etc...).
  161.  
  162.           It is likely that months have elapsed since this shareware
  163.           package has been put together (see date at the top of this file).
  164.           If so, then the version of CEnvi you receive will be an updated
  165.           version of this one.  At the time of this release, incremental
  166.           improvements have been planned in memory use, speed of execution,
  167.           debugging tools, developer tools, and documentation.
  168.  
  169. 1.5.2   Example programs
  170.  
  171.           The following example programs are included with this shareware
  172.           version of CEnvi.  Those files with a batch extension (.BAT for
  173.           DOS and .CMD for OS/2) can be run by invoking the batch file
  174.           directly.  Those files with the CEnvi source file extension
  175.           (.CMM) are invoked by executing CEnvi with the file name as the
  176.           first argument (e.g. CENVI FranTick.cmm).  Files with different
  177.           (e.g., *.LIB, *.H, *.DAT) are files used by CEnvi some of the
  178.           example programs.
  179.  
  180.           Many of the files will provide help for how to use them if they
  181.           are invoked with "/?" as the only parameter.
  182.  
  183.           All of these example files are here for you to view, study,
  184.           experiment with, and alter for your own use.  The Nombas BBS will
  185.           continue to gather CEnvi and Cmm example files created by Nombas
  186.           or uploaded by CEnvi and Cmm users; so registered users will have
  187.           a large library to choose from (maybe some other CEnvi user has
  188.           already solved your need, or perhaps their need is close to yours
  189.           and you will only have to make small modifications to someone
  190.           else's uploaded CEnvi program). 
  191.  
  192. 1.5.3   DOS example files:
  193.             *AllDirs.bat: Perform a command in this directory and all
  194.               sub-directories
  195.             *AllFiles.bat: Perform a command on all files matching a given
  196.               file specification
  197.             *Ascii.bat: Display the ascii character table
  198.             *BatLoops.bat: Examples of various methods CEnvi can use to
  199.               allow looping within batch files
  200.             *BattMem.cmm: Show values stored in a PC's battery-protected
  201.               memory
  202.             *Border.cmm: Draw a simple border on the screen
  203.             *CmmEdit.cmm: VERY simple text editor; developed step-by-step
  204.               in the tutorial chapter of the Registered CEnvi Manual.
  205.             *DelTree.bat: Delete a directory tree
  206.             *DirStat.bat: Extract specific fields from a DOS "DIR" listing
  207.             *DiskFree.bat: Display free space on a disk drive
  208.             *DosTime.bat: Show time according to computer's internal clock
  209.             *ErrLev.bat: Execute a command and set the ERRLEV value as the
  210.               return code, which makes ERRORLEVEL a variable
  211.             *Fibonacc.cmm: Two methods for generating the Fibonacci
  212.               sequence
  213.             *FileFind.bat: Wildcard search for files on current drive or on
  214.               all drives
  215.             *Find#.cmm: Extract a number from wordy output; used by
  216.               DirStat.bat
  217.             *FranTick.cmm: Animated tick who drank too much coffee
  218.             *GetUKey.cmm: Display a choice prompt and then set an
  219.               environment variable based on user's selection 
  220.             *Hello.cmm: My first Cmm program. Used to begin the Cmm
  221.               tutorial.
  222.             *HexDump.bat: Display hexadecimal dump of a file
  223.             *Install.cmm: Install this registered version of CEnvi.
  224.             *Int16.bat: Display key code from keyboard interrupt 16 hex
  225.             *IsDay_1.bat: One method to check if it is a specific day of
  226.               the week
  227.             *IsDay_2.bat: Another method to check if it's a specific day of
  228.               the week
  229.             *IsItFri.bat: Is it Friday?
  230.             *KbdBuf.bat: Alter the size of the keyboard buffer
  231.             *KbdRate.bat: Alter the typematic rate of the keyboard
  232.             *KeyCode.bat: Display keycode of any key pressed
  233.             *KeyState.bat: Get or set the state of the NumLock, CapsLock,
  234.               or Insert keys
  235.             *KeyStuff.bat: Stuff characters into the keyboard buffer
  236.             *MemBlock.bat: Trace through DOS's allocated memory blocks
  237.             *Mouse.bat: Demonstrate reading a mouse's position and state
  238.             *MultiDir.bat: DOS's "DIR" command allowing multiple file
  239.               specifications
  240.             *NumLock.bat: Set the NumLock key on
  241.             *OneADay.bat: Perform any command(s) no more than once per day
  242.             *OptParms.lib: Library of routines for parsing the optional
  243.               parameters for executing a program. #included in other files
  244.             *PathAdd.bat: Add a directory to your PATH environment
  245.               variable.
  246.             *PathDel.bat: Remove a directory from your PATH environment
  247.               variable
  248.             *PathStak.bat: Multi-level save or restore of current drive and
  249.               directory so that you can change drives and directories and
  250.               still return to this one
  251.             *PathSubs.bat: Use DOS's SUBST command to shorten your PATH
  252.               environment variable so that more paths can be fit with DOS'
  253.               127-byte limit
  254.             *Primes.bat: Demonstrate automatic array allocation for
  255.               calculating prime numbers
  256.             *PrmptDay.bat: Change command-line-prompt to display today's
  257.               date
  258.             *Quote.bat: Choose a "profound" quote at random
  259.             *REBOOT_1.BAT: One method to reboot your computer
  260.             *REBOOT_2.BAT: Another method to reboot your computer
  261.             *Restrict.cmm: Allow a limited subset of DOS commands
  262.             *RunTime.bat: Rudimentary scheme for executing a command at a
  263.               certain time of day.
  264.             *Scrandom.bat: Use Screen.lib to draw randomly colored squares
  265.               around the screen
  266.             *Screen.lib: Library, #included in other files, for screen
  267.               output: colors, boxes, lines, etc...
  268.             *ScrnSave.bat: Use Screen.lib to save screen to a file
  269.             *SortLen.bat: Sort any file based on line length
  270.             *Sound.bat: Play a frequency for a given time period
  271.             *Tee.cmm: Save screen output to a file while it is being
  272.               displayed on the screen
  273.             *ValidDir.bat: Verify if a directory is valid
  274.             *Wait.bat: Pause and do not return for specified number of
  275.               seconds
  276.             *WinShell.bat: Start windows with a specific shell.  Run
  277.               Windows for a single program.
  278.  
  279. 1.5.4   OS/2 example files:
  280.  
  281.           For many of these functions, you must ensure that CEnvi2PM.exe is
  282.           accessible (in the current directory or in a directory in the
  283.           search PATH).  CEnvi2PM.exe is a small program used transparently
  284.           by CEnvi.exe when the PMxxxxx() calls are used to PM-specific
  285.           functions.
  286.             *AllDirs.cmd: Perform a command in this directory and all
  287.               sub-directories
  288.             *AllFiles.cmd: Perform a command on all files matching a given
  289.               file specification
  290.             *Ascii.cmd: Display the ascii character table
  291.             *BatLoops.cmd: Examples of various methods CEnvi can use to
  292.               allow looping within batch files
  293.             *BattMem.cmm: Show values stored in a PC's battery-protected
  294.               memory
  295.             *BckGrnd.cmd: Specify a new file as your desktop background
  296.               image
  297.             *BigFont.cmd: Chooses the largest font for a Windowed OS/2
  298.               session.  Uses KeyPush.lib.
  299.             *Border.cmm: Draw a simple border on the screen
  300.             *Bouncy.cmd: Start a bouncy OS/2 Command Window. This
  301.               demonstrates moving windows and silliness.
  302.             *BoxFont.cmd: Show and alter default font for DOS and OS/2
  303.               command-line windows
  304.             *BugHunt.cmd: Example for using the ClipBrd.lib routines.
  305.               Constantly scan clipboard for "bug" in clipboard text
  306.             *CBPrint.cmd: Send contents of the clipboard to the printer
  307.             *CEnviSet.cmd: This file can be used instead of CEnvi.exe if
  308.               you are using environment variables as Cmm variables and need
  309.               them to be changed in the current OS/2 environment.
  310.             *ClipBrd.lib: Library of routines for reading from or writing
  311.               to the Windows clipboard
  312.             *CmmEdit.cmm: VERY simple text editor; developed step-by-step
  313.               in the tutorial chapter of the Registered CEnvi Manual.
  314.             *Comm.lib: Serial communications routines
  315.             *DelTree.cmd: Delete a directory tree
  316.             *Devices.cmd: Show status of system devices.
  317.             *DevIOCtl.lib: Function library for OS/2's DosDevIOCTL
  318.               functions
  319.             *DirStat.cmd: Extract specific fields from an OS/2 "DIR"
  320.               listing
  321.             *DiskFree.cmd: Display free space on a disk drive
  322.             *DlgCtrl.lib: Library of routines for interactive with PM
  323.               dialog boxes and other windows with sub-windows - this
  324.               library is only in its early stages
  325.             *DoFiles.cmd: Perform any command on a list of files selected
  326.               from a file dialog box
  327.             *DoMenu.cmd: Execute any menu selection of a PM application,
  328.               based on the name of the window and the menu text
  329.             *DOS.cmd: Perform DOS command from an OS/2 session, with the
  330.               option to "see" output of the command; mirrors OS2.BAT
  331.             *DosCalls.lib: Example library of "wrapper" function calls to
  332.               OS/2 API calls in the DosCalls library.  This file is
  333.               "#include"ed in many of the other example files.
  334.             *DOSslave.cmd: Works with OS2.BAT to allow DOS session to
  335.               perform OS/2 commands, and even "see" the output
  336.             *DOS_BOSS.lib: Library of routines to interactively control DOS
  337.               windows applications: can work with ServeOS2.com
  338.             *DOS_Echo.cmd: Demonstrate DOS_BOSS.LIB by shadowing a DOS box
  339.               from and OS/2 box
  340.             *DumpIni.cmd: Display profile settings from a .INI file; uses
  341.               Profile.lib
  342.             *EditCmd.cmd: Use PM's file dialog (via FileDlg.lib) to select
  343.               a *.cmd file to edit.
  344.             *EPM.cmd: Wrapper for EPM.EXE for C programmers which will
  345.               bring in related *.c, *.H and *.asm files
  346.             *ErrLev.cmd: Execute a command and set the ERRLEV value as the
  347.               return code, which makes ERRORLEVEL a variable
  348.             *ExamineW.cmd: Display lots of data about any PM window on the
  349.               desktop, and sub-windows (this file in early stages)
  350.             *Fibonacc.cmm: Two methods for generating the Fibonacci
  351.               sequence
  352.             *FileDlg.lib: A simple interface to the WinFileDlg() PM
  353.               function.  This library file is #include'd in some of the
  354.               other CEnvi sample files.
  355.             *FileFind.cmd: Wildcard search for files on current drive or on
  356.               all drives
  357.             *FileIO.lib: Function to interface directly with OS/2's File IO
  358.             *Find#.cmm: Extract a number from wordy output; used by
  359.               DirStat.bat
  360.             *FranTick.cmm: Animated tick who drank too much coffee
  361.             *GetUKey.cmd: Display a choice prompt and then set an
  362.               environment variable based on user's selection 
  363.             *GiveMem.lib: Library of routines for shareing memory with
  364.               other applications whose memory is otherwise "protected"
  365.             *Hello.cmm: My first Cmm program. Used to begin the Cmm
  366.               tutorial.
  367.             *HexDump.cmd: Display hexadecimal dump of a file
  368.             *IDLE.cmd: Change process priority to run a CEnvi program only
  369.               during system idle time.
  370.             *IdleProg.cmd: Execute a program in the background; i.e., run
  371.               only during system idle time.
  372.             *Install.cmm: Install this registered version of CEnvi.
  373.             *IsDay_1.cmd: One method to check if it is a specific day of
  374.               the week
  375.             *IsDay_2.cmd: Another method to check if it's a specific day of
  376.               the week
  377.             *IsItFri.cmd: Is it Friday?
  378.             *KbdRate.cmd: Alter the typematic rate of the keyboard; in many
  379.               cases faster than OS/2 Keyboard tool can set it
  380.             *KeyCode.cmd: Display keycode of any key pressed
  381.             *KeyGhost.cmd: Sample for using KeyPush.lib to determine if
  382.               CEnvi is worth the price of registration.
  383.             *KeyPush.cmd: Send keystroke commands directly to a window by
  384.               window title; a quick interface into KeyPush.lib
  385.             *KeyPush.lib: Library of routines for sending keystrokes to PM
  386.               or Windowed applications.
  387.             *KeyState.cmd: Get or set the state of the NumLock, CapsLock,
  388.               or Insert keys for current session or for the whole WPS
  389.             *Kill.cmd: Terminate a running process by Process ID, Window
  390.               title, full name, or partial name
  391.             *MenuCtrl.lib: Library of routines for interactive with PM
  392.               menus
  393.             *MsgBox.lib: A wrapper library for the PM WinMessageBox()
  394.               function.  This file is #include'd in other CEnvi sample
  395.               files.
  396.             *MsgBoxes.cmd: Show various message box types using the
  397.               function in MsgBox.lib.
  398.             *MultiDir.cmd: OS/2's "DIR" command allowing multiple file
  399.               specifications
  400.             *NamePipe.lib: Library for OS/2 Named Pipes
  401.             *NekoSavr.cmd: This basic screen saver program runs NEKO.EXE,
  402.               OS/2's cat & mouse game, when the mouse keys and keyboard
  403.               have been idle.
  404.             *NumLock.cmd: Turn on NUMLOCK key once, or maintain NUMLOCK ON.
  405.               A shadow of NumLock.cmd can be put in startup folder to
  406.               default computer to NumLock ON. "NumLock 1000" will check
  407.               every second to make sure that NUMLOCK is still set.
  408.             *OneADay.cmd: Perform any command(s) no more than once per day
  409.             *OptParms.lib: Library of routines for parsing the optional
  410.               parameters for executing a program. #included in other files
  411.             *OS2.bat: Work with DOSslave.cmd to allow DOS session to
  412.               execute OS/2 commands, with an option to "see" the result
  413.             *OS2Demo.cmd: Combine many of CEnvi's utilities to create a
  414.               standalone demo of the OS/2 operating system: multiple
  415.               windows, configurations, sharing, etc...  This program takes
  416.               a little bit of work to set up BUT IT'S WORTH IT!
  417.             *OS2Time.cmd: Show time according to computer's internal clock
  418.             *Parents.cmd: Show hierarchical list of ancestor's process ID's
  419.               and names
  420.             *PathAdd.cmd: Add a directory to your PATH environment
  421.               variable.
  422.             *PathDel.cmd: Remove a directory from your PATH environment
  423.               variable
  424.             *PathStak.cmd: Multi-level save or restore of current drive and
  425.               directory so that you can change drives and directories and
  426.               still return to this one
  427.             *PMdll.lib: Example library of "wrapper" routines to function
  428.               in the PM DLL (Presentatiom Manager Dynamic Link Library).
  429.               This file is "#include"ed in many of the other example files.
  430.             *Primes.cmd: Demonstrate automatic array allocation for
  431.               calculating prime numbers
  432.             *PrmptDay.cmd: Change command-line-prompt to display today's
  433.               date
  434.             *ProcList.cmd: Show list of all running processes; their names
  435.               and ID's
  436.             *Profile.lib: Function library for accessing Profiles; i.e.
  437.               .INI files
  438.             *Quote.cmd: Choose a text-mode "profound" quote at random
  439.             *QuotePM.cmd: Choose a PM-mode "profound" quote at random
  440.             *RndBckgr.cmd: Randomly select desktop background, at specified
  441.               interval, from a list of graphic file specifications
  442.             *RunTime.cmd: Rudimentary scheme for executing a command at a
  443.               certain time of day.
  444.             *ServeOS2.com: DOS TSR to work with DOS_BOSS.LIB or complete
  445.               keyboard control of DOS sessions
  446.             *Session.cmd: Replace OS/2's START command for greater control
  447.               of starting sessions, including name, position, font,
  448.               notebook settings, etc...
  449.             *Sessions.cmd: batch file to demonstarte various uses of
  450.               Session.cmd
  451.             *ShutDown.cmd: Automated shutdown of OS/2 system; you should
  452.               edit this file to match your system setup
  453.             *SortLen.cmd: Sort any file based on line length
  454.             *Sound.cmd: Play a frequency for a given time period
  455.             *Switch.cmd: Switch foreground application to another process
  456.               base on process ID, full name, or partial name
  457.             *SysSetup.cmd: Open the OS/2 Setup folder on the desktop
  458.             *Terminal.cmd: A VERY basic terminal program; demonstrates
  459.               COMM.LIB
  460.             *Threads.cmd: Display list of all threads in all running
  461.               processes
  462.             *UnHang.cmm: Monitor your system to detect OS/2 "hangs", where
  463.               the workplace shell stops responding, then kill or otherwise
  464.               handle the application that is causing the problem
  465.             *ValidDir.cmd: Verify if a directory is valid
  466.             *Wait.cmd: Pause and do not return for specified number of
  467.               seconds
  468.             *WinList.cmd: Display list of all PM windows
  469.             *WinMsg.lib: Routines to send or post messages to PM windows
  470.             *WinSet.cmd: Set the position, size, state, etc... of a PM
  471.               Window
  472.             *WinTools.cmd: Demonstrate many of the capabilities of
  473.               WinTools.lib
  474.             *WinTools.lib: Library of routines for manipulating PM windows
  475.               by name or by handle
  476.             *WIN_Boss.lib: work with CEnvi for Windows' ServeOS2.cmm
  477.               program to all full control of Windows applications from an
  478.               OS/2 script
  479.             *WPFolder.cmd: Open a desktop folder for any specified
  480.               directory and optionally switch to that window
  481.  
  482. 1.5.5   Windows example files:
  483.  
  484.           The following CEnvi source programs can be run by associating the
  485.           .cmm file extension with CEnvi.exe.  This can be done by using
  486.           the File Manager: select one of these .cmm files then choose
  487.           File/Association and select the full path to CEnvi.exe.  After
  488.           this, you can run any of these exmple files simply by
  489.           double-clicking on it.
  490.             *Ascii.cmm: Display the ascii character table
  491.             *BattMem.cmm: Show values stored in a PC's battery-protected
  492.               memory
  493.             *BootEd1.cmm: Start NotePad to edit c:\AutoExec.bat and
  494.               C:\Config.sys using Windows DLL's.
  495.             *BootEd2.cmm: Start NotePad to edit c:\AutoExec.bat and
  496.               C:\Config.sys using CEnvi's spawn() function.
  497.             *Border.cmm: Draw a simple border on the screen
  498.             *BugHunt.cmm: Example for using the ClipBrd.lib routines.
  499.               Constantly scan clipboard for "bug" in clipboard text
  500.             *ClipBrd.lib: Library of routines for reading from or writing
  501.               to the Windows clipboard
  502.             *CmmEdit.cmm: VERY simple text editor; developed step-by-step
  503.               in the tutorial chapter of the Registered CEnvi Manual.
  504.             *CmmGroup.cmm: Create a CEnvi Programs group in Presentation
  505.               Manager with all of the .CMM files in it
  506.             *Comm.lib: Simplified function interface into Windows' serial
  507.               communication routines
  508.             *DDE.lib: Library of common routines and definitions for
  509.               Dynamic Data Exchange (DDE)
  510.             *DDEcli.lib: Library of routines for a DDE client
  511.             *DDEsrv.lib: Library of routines for a DDE server
  512.             *DlgCtrl.lib: Library of routines for interactive with Windows
  513.               dialog boxes and other windows with sub-window
  514.             *DosTime.cmm: Show time according to computer's internal clock
  515.             *ExamineW.cmd: Display lots of data about any active window and
  516.               its sub-windows
  517.             *Fibonacc.cmm: Two methods for generating the Fibonacci
  518.               sequence
  519.             *FranTick.cmm: Animated tick who drank too much coffee
  520.             *GDI.cmm: Demonstrate some of Windows' graphics functions from
  521.               GDI.lib
  522.             *GDI.lib: Library of a few of Windows' graphics routines
  523.             *Hello.cmm: My first Cmm program. Used to begin the Cmm
  524.               tutorial.
  525.             *HexDump.cmm: Display hexadecimal dump of a file
  526.             *Icons.cmm: Minimize all windows.  Demonstrate PostMessage()
  527.               from Message.lib.
  528.             *IdleTime.cmm: "ScreenSaver" - Show clock if computer is idle
  529.             *Install.cmm: Install this registered version of CEnvi.
  530.             *KeyCode.cmm: Display keycodes returned by getch().
  531.             *KeyGhost.cmm: Demonstrate how to use KeyPush.lib to control
  532.               other applications.
  533.             *KeyPush.lib: Library of routines created for passing
  534.               keystrokes to a window with the current focus.
  535.             *MenuCtrl.lib: Library of routines for interactive with menus
  536.             *Message.lib: Wrapper for Windows' PostMessage() and
  537.               SendMessage() function to send commands to windows.
  538.             *MsgBox.lib: A wrapper library for Windows' MessageBox()
  539.               function.  This file is #include'd in other CEnvi sample
  540.               files.
  541.             *MsgBoxes.cmm: Show various message box types using the
  542.               function in MsgBox.lib.
  543.             *NumLock.cmm: Set the NUMLOCK key ON
  544.             *OpenCmm.cmm: Use Windows' common dialog (via PickFile.lib) to
  545.               select a *.cmm file to edit.
  546.             *OptParms.lib: Library of routines for parsing the optional
  547.               parameters for executing a program. #included in other files
  548.             *PGroups.cmm: list all of the groups and items Program Manager;
  549.               uses ProgMan.lig
  550.             *PickFile.lib: A simple interface to the GetOpenFileName()
  551.               function in the Windows Common Dialog DLL.  This library file
  552.               is #include'd in some of the other CEnvi sample files.
  553.             *PMCorner.cmm: Minimize Program Manager and then move its icon
  554.               to the lower-right corner of the screen.
  555.             *PMItems.cmm: Replace Program Manager with a tiny button in
  556.               upper-left corner for access to all PM items
  557.             *PongTime.cmm: Bounce the Windows clock mini-app around
  558.             *Profile.lib: Function library for accessing Profiles; i.e.
  559.               .INI files
  560.             *ProgMan.lib: Library of routines using DDE to communication
  561.               with Program Manager
  562.             *Quote.cmm: Choose a "profound" quote at random
  563.             *RunTime.cmm: Schedule a command to execute at a specified hour
  564.               and minute.
  565.             *ServeOS2.cmm: Work with CEnvi for OS/2 and WIN_BOSS.LIB to
  566.               control Windows sessions from OS/2
  567.             *Terminal.cmm: A simple terminal program; demonstrate some of
  568.               the functions in COMM.lib
  569.             *WhoRYou.cmm: Design and implement a dialog box using CEnvi's
  570.               MakeWindow() and DoWindows() functions
  571.             *WinBeep.cmm: Call Windows' MessageBeep() function.
  572.             *Window.lib: A few functions and many defined values useful for
  573.               CEnvi's MakeWindow(), BreakWindow(), and DoWindows()
  574.               functions
  575.             *WinExec.lib: A wrapper library for Windows' WinExec()
  576.               function.  This file is #include'd in other CEnvi sample
  577.               files.
  578.             *WinExecs.cmm: Demonstration of Windows' WinExec() function
  579.               using the wrapper from WinExec.lib.
  580.             *WinList.cmm: Show a list of all Windows, their handles, and
  581.               their children.
  582.             *WinMsg.cmm: Demonstrate how to make a window, and show all the
  583.               messages that go to that window
  584.             *WinShell.bat: Start windows with a specific shell.  Run
  585.               Windows for a single program.  This use CENVI.EXE for DOS.
  586.             *WinTools.cmm: Demonstrate many of the capabilities of
  587.               WinTools.lib
  588.             *WinTools.lib: Library of routines for directly manipulating
  589.               windows by name or by handle
  590.             *WinUtil.lib: A small selection of utilities that may be
  591.               #include'd in CEnvi code to get simple access to Windows DLL
  592.               functions.
  593.  
  594. 1.6.  CEnvi - A Cmm Interpreter
  595.  
  596.           This section describes the CEnvi program, and describes the
  597.           various methods for use CEnvi.exe to execute Cmm programs.
  598.  
  599. 1.6.1   What is CEnvi?
  600.  
  601.           CEnvi is the first (and so far only) application to implement the
  602.           Cmm programming language.  CEnvi is a Command-line version of a
  603.           Cmm interpreter, and it can use Environment variables as if they
  604.           were global Cmm variables.  CEnvi contains a reasonable facsimile
  605.           of the standard C library, and can link at runtime to external
  606.           Cmm libraries.
  607.  
  608.           The "Envi" and the "C" in CEnvi reflects the envy that computer
  609.           professionals often feel when they are working on a computer that
  610.           does not have a complete C programming environment.  "Envi" also
  611.           refers to the environment variables that CEnvi attempts to work
  612.           with as if they were regular Cmm variables.
  613.  
  614.           Like all implementations for Cmm, CEnvi is portable between
  615.           operating systems.  It is currently testing under DOS, OS/2, and
  616.           Windows, and other OS ports are in the works.
  617.  
  618. 1.6.2   Environment Variables
  619.  
  620.           Variables in all UPPERCASE letters are taken from the environment
  621.           variables.  Environment variables are treated like other
  622.           variables except that they don't need quotes around them to
  623.           default to being strings if they don't match another type.
  624.  
  625.           To the source code, the only difference between a variable and an
  626.           environment variable is that environment variables are all
  627.           UPPER_CASE letters.  When the environment variable is first used
  628.           it is read from the environment block and some assumptions are
  629.           made about what kind of variable it is; this can lead to problems
  630.           when I=666 is interpreted as the number 666 when really it maybe
  631.           should have been the string "666".  Before the program exits, all
  632.           environment variables used by the code are then written to the
  633.           environment block.
  634.  
  635.           In some implementations (CEnvi for DOS, for example) the
  636.           environment variables remain changed even after the Cmm
  637.           interpreter exits.  In other cases, special kludges must be added
  638.           to alter a parent process' environment variables (see ESet() for
  639.           OS/2).
  640.  
  641. 1.6.3   Special Environment Variables
  642.  
  643.           These environment variables affect where CEnvi looks for source
  644.           files:
  645.             *CMMPATH: This environment will be checked for directories to
  646.               search for include files if the include file is not in the
  647.               current directory.  For Windows, this value may come from the
  648.               CMMPATH profile value in WIN.INI (in the [CEnvi] section).
  649.             *PATH: Batch-file source files (see below) will be searched in
  650.               these directories if not found in the current directory.
  651.             *CENVI_ESET: In those environment for which CEnvi cannot
  652.               covertly alter the environment variables of the command
  653.               interpreter (e.g., OS/2), this environment variable specifies
  654.               a file name.  CEnvi will write the strings necessary for the
  655.               command interpreter to set environment variables as altered
  656.               by your Cmm code.  See the description of ESet() for more
  657.               information about this command.
  658.  
  659. 1.6.4   Executing Code as command-line Input Parameters
  660.  
  661.           If a Cmm program is very short, then it can be executed wholly
  662.           from the command line.  For example, here is the famous hello
  663.           world program executed from the cli prompt:
  664.               CEnvi main() { printf("Hello world!"); }
  665.           which can be written more conisely under Cmm rules as:
  666.               CEnvi printf("Hello world!")
  667.  
  668.           You may have to keep in mind bahavior of the cli when inputting
  669.           code.  It is sometimes necessary to put quotes around code to
  670.           keep symbols from being interpreted by the cli, as in this
  671.           example:
  672.               CEnvi "for(i=0;i<10;i++) printf("%d\n",i)"
  673.           where the quotes are necessary to prevent the cli from
  674.           interpreting the "<" as file redirection.
  675.  
  676.           Also, in batch files (DOS, OS/2) you need to remember that "%"
  677.           has special meaning for the batch file processor, and so the
  678.           above line in a batch would have to be written as:
  679.               CEnvi "for(i=0;i<10;i++) printf("%%d\n",i)"
  680.  
  681. 1.6.5   Executing *.CMM Source File Code
  682.  
  683.           A file with the extension ".CMM", if the file name is given as
  684.           the first parameter to CEnvi.exe, is considered by CEnvi to be
  685.           pure CMM source code.  This file with the .CMM extension is
  686.           expected to be a plain Cmm source file, just as a C compiler
  687.           expects a file with the .C extension to be C source code.  CEnvi
  688.           will check the current directory for the .CMM file, and then
  689.           check directories in the PATH environment variable.  Any
  690.           arguments passed to CEnvi.exe after the .CMM source name are
  691.           given to the main(argc,argv) function in the source, if there is
  692.           one.  So the hellow.cmm program can look identical to the
  693.           hellow.c program, and when you run CEnvi.exe hellow.cmm you get
  694.           the same output.  If you run
  695.               CEnvi.exe FOO.CMM One Two Three
  696.           the main function in FOO.CMM would get argc=4 and
  697.           argv[0]="FOO.CMM" and argv[3]="THREE".
  698.  
  699.           This all means that if you were to have an executable FOO.EXE
  700.           that is similar to FOO.CMM, then "FOO.EXE" is interchangeable
  701.           with "CENVI FOO.CMM", i.e.,
  702.               FOO.EXE arg1 arg2 arg3
  703.           is the same as:
  704.               CENVI FOO.CMM arg1 arg2 arg3
  705.  
  706.           In OS/2 or windows or other environments where file extensions
  707.           can be associated with programs, you may want to associate the
  708.           .CMM extension with CEnvi.exe, so that double-clicking on
  709.           HELLOW.CMM will act identically to double-clicking on the
  710.           compiled-and-linked HELLOW.EXE.
  711.  
  712. 1.6.6   Batch-File Kludge
  713.  
  714.           The most convenient method for executing Cmm source code from the
  715.           DOS or OS/2 command line is sort of a kludge: if the first
  716.           argument to CEnvi is the name of a batch file, then CEnvi reads
  717.           that batch file and accepts as source all the code between the
  718.           lines "GOTO CENVI_EXIT" and ":CENVI_EXIT", and passes the command
  719.           line arguments to main(argc,argv).  This is very similar to
  720.           executing:
  721.               CEnvi.exe #include'foo,bat,,GOTO CENVI_EXIT,:CENVI_EXIT'
  722.           except that the '#include' statement is handled automatically by
  723.           CEnvi, and the rest of the command-line arguments are passed to
  724.           main().
  725.  
  726.           Note that ".bat" is the DOS version of the batch file name
  727.           extension.  This name is different for different operating
  728.           systems.
  729.  
  730.           In this way, a batch file can be run exactly like a .EXE file,
  731.           and the command arguments are passed to main in the same way.  If
  732.           the full path of the batch file is not supplied, then CENvi will
  733.           look in the current directory and then in directories in the
  734.           PATH.
  735.  
  736.           Here is an example of an OS/2 batch file that expects any number
  737.           (up to 9) of integers and sets the SUM environment variable to
  738.           the values added together.  (It calls CEnviSet instead of CEnvi
  739.           directly in order to set the environment variable.)
  740.  
  741.               @echo off
  742.               REM *********************************************************
  743.               REM *** SUM.BAT - Use CEnvi to sum lots of numbers together,*
  744.               REM ***           setting the SUM environment variable to   *
  745.               REM ***           the result of adding all the numbers.     *
  746.               REM *********************************************************
  747.               call CEnviSet %0.bat %1 %2 %3 %4 %5 %6 %7 %8 %9
  748.               GOTO CENVI_EXIT
  749.  
  750.               main(argc,argv)
  751.               {
  752.                 SUM = 0;
  753.                 for ( i = 1; i < argc; i++ )
  754.                 SUM += atoi(argv[i])
  755.               }
  756.  
  757.               :CENVI_EXIT
  758.  
  759. 1.6.7   EXTPROC: *.CMD Source file (For OS/2)
  760.  
  761.           Under the OS/2 command processor, you can define an external
  762.           processor to process a batch (*.cmd) file if the first statement
  763.           is EXTPROC.  EXTPROC is followed by the name of the processor,
  764.           which in this case will be "CEnvi".  This is an example file,
  765.           ARGS.CMD, of a program to display all input parameters:
  766.  
  767.               EXTPROC CEnvi
  768.  
  769.               main(argc,argv)
  770.               {
  771.                 for ( i = 0; i < argc; i++ )
  772.                 printf("Input argument %d = \%s\n",i,argv[i]);
  773.               }
  774.  
  775. 1.6.8   REXX-File Kludge (For OS/2)
  776.  
  777.           Similar to the Batch-File Kludge described above, if the first
  778.           argument to CEnvi is the name of a REXX source file then CEnvi
  779.           automatically executes the code between "SIGNAL CENVI_EXIT" and
  780.           "CENVI_EXIT:".  This example Rexx file for OS/2 behaves the same
  781.           as the previous batch program example (CEnviSet.cmd is an OS/2
  782.           batch file that helps run Cmm files if environment variables need
  783.           to be altered--see ESet in the OS2Lib appendix):
  784.               /***********************************************************
  785.                *** SUM.CMD - Use CEnvi to sum lots of numbers together,***
  786.                ***           setting the SUM environment variable to   ***
  787.                ***           the result of adding all the numbers.     ***
  788.                ***********************************************************/
  789.               'call CEnviSet %0.cmd %1 %2 %3 %4 %5 %6 %7 %8 %9'
  790.               SIGNAL CENVI_EXIT
  791.  
  792.               main(argc,argv)
  793.               {
  794.                 SUM = 0;
  795.                 for ( i = 1; i < argc; i++ )
  796.                 SUM += atoi(argv[i])
  797.               }
  798.  
  799.               CENVI_EXIT:
  800.  
  801. 1.6.9   CMM File Association and Drag-and-Drop (OS/2)
  802.  
  803.           You can associate CEnvi.exe with .cmm files through the settings
  804.           notebook of CEnvi.exe.  This lets you executed any CEnvi *.cmm
  805.           file simply by double-clicking its icon in the desktop.
  806.  
  807.           A Cmm program can be set up as a Workplace Shell program that
  808.           accepts drag and drop.  To do this, drag a program template out
  809.           of the templates folder and place it on the desktop where you
  810.           want your Cmm program to run from.  In program settings for this
  811.           program object set the program name to the path and file
  812.           specification for CEnvi.exe (e.g., "C:\CMM\CEnvi.exe").  Set
  813.           Parameters to the full source and file name of the Cmm file
  814.           (e.g., "C:\CMM\CZIP.cmm").  Then rename the program object to
  815.           whatever you want (e.g., "CZIP").  Then whenever you drag a file
  816.           onto that object then the filename will be the second argument to
  817.           main().
  818.  
  819. 1.6.10  CMM File Association and Drag-and-Drop (Windows)
  820.  
  821.           You can associate Cmm files with CEnvi.exe by using the File
  822.           Manager: select a .cmm file then choose File/Association and
  823.           select the full path to CEnvi.exe.  After this, you can run any
  824.           of *.cmm program simply by double-clicking on it.
  825.  
  826. 1.6.11  /BIND= Create Stand-Alone Cmm Executables
  827.  
  828.           The CEnvi /BIND option allows you to create stand-alone,
  829.           royalty-free executables from your Cmm code.  The result of /BIND
  830.           is a binary executable file that operates the same as if CEnvi
  831.           were invoked as an interpreter, except that CEnvi.exe is not
  832.           needed to execute the bound file, because CEnvi.exe and your Cmm
  833.           code are bound together in the created executable.
  834.  
  835.           The following example creates an executable named HELLOW.EXE that
  836.           would print "Hello world!".
  837.  
  838.               CEnvi /BIND=HELLOW printf("Hello world!");
  839.  
  840.           As another example, you could create a stand-alone editor, which
  841.           we'll call CMMEDIT.EXE, from the result of the CEnvi tutorial
  842.           with the following command:
  843.  
  844.               CEnvi /BIND=CMMEDIT.EXE CMMEDIT.CMM
  845.  
  846.           Now running "CMMEDIT.EXE C:\AUTOEXEC.BAT" from the command line
  847.           would be identical to executing "CENVI.EXE CMMEDIT.CMM
  848.           C:\AUTOEXEC.BAT".
  849.  
  850. 1.6.12  /BIND for OS/2 and CEnvi2PM.EXE
  851.  
  852.           When you /BIND Cmm source code that contains calls to
  853.           PMDynamicLink(), or other PMxxx() calls that invoke CEnvi2PM.exe,
  854.           the resulting executable will still require CEnvi2PM.exe.  So
  855.           users running the bound executable will still need CEnvi2PM.exe
  856.           in a directory of their search path.  CEnvi2PM.exe may be
  857.           distributed royalty-free.
  858.  
  859. 1.6.13  /BIND for Windows
  860.  
  861.           The simplest method for using /BIND in Windows is to execute
  862.           CEnvi.exe, and then to enter the /BIND statement and Cmm source
  863.           name from the CEnvi command prompt.  For example, to turn
  864.           WhoRYou.cmm into the stand-alone WhoRYou.exe, you would execute
  865.           CEnvi.exe and then enter the following at the CEnvi "Code:"
  866.           prompt:
  867.  
  868.               Code: /BIND=WhoRYou WhoRYou.cmm
  869.  
  870. -------------------------------- FILE LIST --------------------------------
  871. The CEnvi Unregistered Shareware package includes the files in the
  872. following list.  You are not permitted to upload or otherwise transfer
  873. copies of any registered version of CEnvi that does not include all of the
  874. files in this list.
  875.  
  876. *CENVI.EXE: CEnvi shareware executable for DOS, OS/2, or Windows.
  877. *CENVI2PM.EXE: Gateway program, executed trasnparently by CEnvi, for access
  878.   to PM-dependent system calls (OS/2 version only).
  879. *CENVI.DOC: CEnvi Shareware Manual, Chapter 1: CEnvi Unregistered Shareware
  880. *CMMTUTOR.DOC: CEnvi Shareware Manual, Chapter 2: Cmm Language Tutorial
  881. *CMM_VS_C.DOC: CEnvi Shareware Manual, Chapter 3: Cmm versus C, for C
  882.   Programmers
  883. *CENVILIB.DOC: CEnvi Shareware Manual, Chapter 4: Function Library
  884. *LICENSE.DOC: CEnvi Unregistered Shareware License Agreement
  885. *README.DOC: Introductory file. Read this first for quick intallation.
  886. *REGISTER.DOC: CEnvi registration form
  887. *INSTALL.CMM: Cmm source file for installing this shareware version
  888. * *.CMM, *.CMD, *.BAT, *.LIB: Many many sample programs using CEnvi.  See
  889.   CENVI.DOC for a complete list.
  890.  
  891. ----------------------------- REGISTRATION -------------------------------
  892. This is a shareware release.  Please register.  As a registered CEnvi user
  893. you will receive:
  894. *The latest version of CEnvi for all supported platforms (currently DOS,
  895.   OS/2, and Windows).
  896. *The CEnvi user's manual (almost 100 pages, including a description of the
  897.   Cmm programming language, a tutorial for those who have never programmed,
  898.   and descriptions and examples of the over 150 functions included in the
  899.   CEnvi library).
  900. *Free incremental electronic downloads for new versions of CEnvi for all
  901.   supported operating systems.
  902. *Unlimited support from Nombas and CEnvi/Cmm users through CompuServe
  903.   (72212,1622), internet (bsn@world.std.com), the cenvi-cmm e-mail mailing
  904.   list (cenvi-cmm@world.std.com), and the Nombas BBS
  905.   (ATDT16173916595,,,,,44444).
  906. *Access to the growing list of CEnvi utilities and libraries (some of which
  907.   are included in this unregistered shareware package, and others are
  908.   contributed by Nombas and CEnvi/Cmm users to the electronic locations
  909.   described above).
  910.  
  911. There are three ways to register CEnvi version 1.009: 
  912.  
  913. ***************************************************************************
  914. ********* REGISTRATION METHOD 1: CENVI MAIL-IN REGISTRATION FORM **********
  915. ***************************************************************************
  916. Please fill out and mail in this form, along with payment.
  917.  
  918. Where did you get CEnvi? ______________________________________________
  919.  
  920. Name: _________________________________________________________________
  921.  
  922. Company: ______________________________ Position: _____________________
  923.  
  924. Address: ______________________________________________________________
  925.  
  926. _______________________________________________________________________
  927.  
  928. ______________________________________________________________________
  929.  
  930. Country: _________________________   (add ZIP code if applicable)
  931.  
  932. Phone: ___________________________  EMail: ______________________________
  933.  
  934.           Diskette size: [  ] 3.5"   [  ] 5.25"
  935.  
  936. CEnvi Registered License & Manual ... Quantity _____ x $38.00 = $ _________
  937. License fee for additional CEnvi users at your
  938. organization (does not include additional manual
  939. or diskettes)... Additional simultaneous users _____ x $15.00 = $ _________
  940. Additional CEnvi Manuals ............ Quantity _____ x $10.00 = $ _________
  941. Shipping outside USA, Canada, or Mexico  $4.00 ................ $ _________
  942.                                                        Subtotal $ _________
  943. Massachusetts residents please add 5% sales tax ............... $ _________
  944.  
  945.                                                           Total $ _________
  946.  
  947. Include a check or money order for this total, IN U.S. FUNDS AND DRAWN ON A
  948. U.S. BANK, payable to Nombas, or supply the following credit card payment
  949. information.  Credit cards orders will be processed through a distributor:
  950. Custom Computer Systems of Medford, MA.
  951.  
  952. Credit card orders (circle one): MasterCard / Visa / American Express
  953.  
  954.                                  Discover / Carte Blanche / Diners Club
  955.  
  956.     Card Number _____________________________________  Expires ____________
  957.  
  958.     Exact name on card (print) ____________________________________________
  959.  
  960.     Signature (REQUIRED) __________________________________________________
  961.  
  962. Mail this form, along with payment or credit information, to:
  963.                Nombas
  964.                P.O. Box 875
  965.                Medford, MA  02155   USA
  966.  
  967.  
  968. ***************************************************************************
  969. ******** REGISTRATION METHOD 2: COMPUSERVE ELECTRONIC REGISTRATION ********
  970. ***************************************************************************
  971. CompuServe members may register directly through the CompuServe
  972. Registration Service.  To use this service enter GO SWREG at your CI$
  973. prompt.  Registration ID is 1354 for CEnvi for DOS, 1355 for CEnvi for
  974. OS/2, and 1356 for CEnvi for Windows (you only need to register ONE
  975. version).  Nombas will immediately be informed of your registration, and
  976. the CEnvi registration fee will automatically be added to your CompuServe
  977. bill.
  978. ***************************************************************************
  979. ************ REGISTRATION METHOD 3: Public (software) Library *************
  980. ***************************************************************************
  981. CREDIT CARD ORDERS ONLY -
  982.  
  983. You can order with MC, Visa, Amex, or Discover from Public (software)
  984. Library by calling 800-2424-PsL or 713-524-6394 or by FAX to 713-524-6398
  985. or by CIS EMail to 71355,470. You can also mail credit card orders to PsL
  986. at P.O.Box 35705, Houston, TX 77235-5705.
  987.  
  988. THE ABOVE NUMBERS ARE FOR ORDERS ONLY.
  989.  
  990. Any questions about the status of the shipment of the order, refunds,
  991. registration options, product details, technical support, volume discounts,
  992. dealer pricing, site licenses, etc., must be directed to Nombas (see phone
  993. number and addresses below).
  994.  
  995. To insure that you get the latest version, PsL will notify Nombas the day
  996. of your order and we will ship the product directly to you.
  997.  
  998. CEnvi (all versions) is PsL product #11069.  Prices (including shipping and
  999. handling) are: $42 US/Canada and $45 overseas.
  1000.  
  1001.  
  1002. ***************************************************************************
  1003. Thank you for trying this shareware copy of CEnvi.  Mail inquires and other
  1004. correspondences to:
  1005.      Nombas
  1006.      P.O. Box 875
  1007.      Medford, MA  02155   USA
  1008.  
  1009. Nombas may also be contacted at:
  1010.      Phone: (617)391-6595
  1011.      Internet: bsn@world.std.com
  1012.      CompuServe: 72212,1622
  1013.      BBS: (617)391-6595 ext. 44 (e.g., ATDT16173916595,,,,,44444)
  1014.