home *** CD-ROM | disk | FTP | other *** search
/ ftp.update.uu.se / ftp.update.uu.se.2014.03.zip / ftp.update.uu.se / pub / rainbow / msdos / decus / RB141 / varug04a.arj / V4N3ASC.ASC < prev   
Text File  |  1990-05-20  |  64KB  |  1,026 lines

  1.  
  2.                                   Vancouver Area Rainbow Users Group
  3.  
  4.                                     N  e  w  s  l  e  t  t  e  r
  5.  
  6.          May and June, 1990; Volume 4, Number 3
  7.  
  8.          Editor:  David P. Maroun, 9395 Windsor Street, Chilliwack, BC, Canada  V2P 6C5;
  9.                   telephone (604) 792-4071
  10.  
  11.          Publisher:  DECUS Canada, 505 University Avenue, 15th Floor, Toronto,
  12.                      Ontario, Canada  M5G 2H2; telephone (416) 597-3437
  13.          -----------------------------------------------------------------------------------
  14.          Unless the contrary is indicated, any part of this newsletter may be freely copied
  15.          or distributed unaltered and with credit given to the original source.
  16.  
  17.          While the information provided is believed accurate, the editor cannot take
  18.          responsibility for contributions of other writers.
  19.          -----------------------------------------------------------------------------------
  20.          Deadlines:  For our July and August issue:  June 30, 1990
  21.                      For our September and October issue:  August 31, 1990
  22.  
  23.          Almost any legible format is acceptable for submissions, but the ideal is ASCII
  24.          form on diskette.  Diskettes should be accompanied by covering letters describing
  25.          the files and indicating disk format.  We can handle Rainbow CP/M, Rainbow MS-DOS,
  26.          IBM PC-DOS single-sided, and some others as well (check about them).
  27.          -----------------------------------------------------------------------------------
  28.  
  29.                                Editorial:  Are We Really So Different?
  30.  
  31.                                          by David P. Maroun
  32.  
  33.          Several months ago, I was a guest speaker at a BC VAXLUG meeting.  I spoke on
  34.          microcomputer communications.  The VAXLUG chose the topic.
  35.  
  36.          I was surprised that a nominally VAX-oriented group wanted to hear about
  37.          microcomputers, but I was told BC VAXLUG members deal with a great variety of
  38.          machines, so the group gave attention to personal computers and UNIX workstations
  39.          as well as VAXes.
  40.  
  41.          Our own group is supposed to be a personal computer group, but its members also
  42.          deal with VAXes, PDPs, and IBM mainframes.  So, there is a fair overlap with the
  43.          interests of the VAXLUG.
  44.  
  45.          Computers and their users are not so disparate as some people would have us
  46.          believe.
  47.          -----------------------------------------------------------------------------------
  48.  
  49.                                      Messages To The Membership
  50.  
  51.          Mr. J.R. Parent, a resident of Dollard des Ormeaux in Quebec and a contributor to
  52.          this newsletter on several occasions, telephoned recently.  Mr. Parent mentioned
  53.          that our newsletter is appreciated in more eastern parts of the country.
  54.  
  55.          Tony Klanchar would like to hear from users of DEC Professional 300 series
  56.          computers, and offers help to them.  Interested parties can contact
  57.  
  58.               Tony Klanchar
  59.               914 Sycamore Drive
  60.               Kamloops, BC
  61.               V2B 6S2
  62.               Telephone (604) 579 8345 (home)
  63.                         (604) 374-9717 (work)
  64.          -----------------------------------------------------------------------------------
  65.  
  66.                                    Corrections And Clarifications
  67.  
  68.          We have sometimes recommended the CP/M-80 utility LHRD.COM for removing files from
  69.          archives created by LHARC under MS-DOS.  We recently ran into a limitation of LHRD:
  70.          It would not extract a very large text file from an LHARC archive.  When
  71.          extracting, LHRD reports on the screen the amount of the file it has expanded.  In
  72.          our case, LHRD put '150 k' on the screen, then the computer stopped responding
  73.          until the user did a system reset.  The computer was a Rainbow, but someone else
  74.          said he had the same problem on a different machine.  That person also suggested
  75.          something similar might occur with a companion CP/M-80 utility, UNZIP, which
  76.          handles ZIP libraries.  We ourselves have yet to run into trouble with UNZIP.
  77.  
  78.          We do not consider this difficulty severe enough to make us stop using LHRD or
  79.          UNZIP altogether, but we do advise some caution.
  80.          -----------------------------------------------------------------------------------
  81.  
  82.                                 Recent Additions To The VARUG Library
  83.  
  84.          Our library of shareware and public domain software grows continually.  Here is a
  85.          list of some files added within the past few months:
  86.                                   ----------------------------------
  87.  
  88.          4DOS221  ZIP   COMMAND.COM replacement.  On Rainbows, works best with Code Blue.
  89.          ACV      ZIP   Converts IBM characters to DEC or vice versa.
  90.          AME86-72 ZIP   CP/M-86 emulator with source code
  91.          BROWSE22 ZIP   Paging, scrolling text viewer for Rainbows
  92.          CAD      ZIP   Drawing program for Rainbows
  93.          CLEANP60 LZH   Eliminates virus-infected programs.
  94.          CSHELL   ARC   COMMAND.COM substitute; works best on Rainbows with Code Blue.
  95.          FAMTREE  LBR   A family tree program for Rainbows; with C source code
  96.          FANFOLD  LBR   Prepares text for both sides of fanfold paper.  Can reformat and
  97.                         delete blank spaces.
  98.          GPDB     EXE   Database for Rainbows; self-extracts; requires RUNGPDB.
  99.          GW_DUMP  ARC   Fast screen dump from Rainbow GW-BASIC to an LA50 printer
  100.          ITAX89   LZH   Lotus 1-2-3 version 2 Canadian income tax sheet for 1989
  101.          KEDTMS   ARC   A text editor for the Rainbow
  102.          LH114B   EXE   LHARC version 1.14 beta archiver; self-extracts
  103.          MSVRB1   ZIP   Rainbow KERMIT communications version 3.00
  104.          PI-COMP  LZH   Compares groups of files; may conflict with RAM drives.
  105.          PKZ110   EXE   The PKZIP archiving family, version 1.10; self-extracts.
  106.          QBX300A  LZH   Cross-reference for QuickBASIC; use with Code Blue on Rainbows.
  107.          RBHIST80 ZIP   Expanded command history for Rainbow MS-DOS; version 8.0
  108.          RUNGPDB  LZH   Allows running GPDB on Rainbows.
  109.          SCANV60  LZH   Scans disks and memory for viruses; version 6.0
  110.          SCRIVNER LBR   CP/M-80 mathematical text processor
  111.          TCL      ARC   Digital Command Language for MS-DOS
  112.          UTEV2    ZIP   A drawing program for Rainbows
  113.          V3N6ASC  ZIP   VARUG newsletter, volume 3, number 6
  114.          V4N1ASC  ZIP   VARUG newsletter, volume 4, number 1
  115.          V4N2ASC  ZIP   VARUG newsletter, volume 4, number 2
  116.          VIEWANSI ZIP   Paging, scrolling text viewer for ANSI systems
  117.          XTRACC11 LZH   Extracts specified characters from files.
  118.                                   ----------------------------------
  119.  
  120.          FAMTREE.LBR, FANFOLD.LBR, and SCRIVNER.LBR are designed for CP/M.  All other files
  121.          are set up for MS-DOS.  Please note that GPDB.EXE and RUNGPDB.LZH go together.
  122.          Most files are generic and can be run on a variety of computers.  Those which are
  123.          not are indicated in the preceding list.
  124.  
  125.          For more information, contact
  126.  
  127.               Ken Alger
  128.               6001 Pine Park Place
  129.               Nanaimo, BC
  130.               V9T 3B6
  131.               Telephone (604) 390-4482
  132.          -----------------------------------------------------------------------------------
  133.  
  134.                                  Charlie's Museum Of MS-DOS Horrors
  135.  
  136.                               Does Anybody Really Know What Time It Is?
  137.                                     (Does Microsoft Really Care?)
  138.  
  139.                                           by Charlie Gibbs
  140.  
  141.          One thing that becomes apparent after working with MS-DOS for awhile is that it's
  142.          designed to be used for awhile during the day, then switched off when you go home.
  143.          Not that you can't leave an MS-DOS machine running 24 hours a day, but there are a
  144.          few things you have to watch out for, such as the clock.
  145.  
  146.          MS-DOS machines use a number of different battery-backed-up clocks--especially XT
  147.          clones, many of which have no built-in clock and need some sort of add-on clock.
  148.          These add-on clocks are many and varied, and some (such as the ones which need a
  149.          driver specification in CONFIG.SYS) might not get along too well with other
  150.          software.  But once the machine has been booted and the time read, I would think
  151.          (although I might be wrong) that the operating system itself should take care of
  152.          maintaining the time of day internally.
  153.  
  154.          DOS's internal clock (which is distinct from the battery-backed clock from which
  155.          it's initially set) is not necessarily too reliable around midnight.  Try typing in
  156.          and running the following BASIC program:
  157.  
  158.               10 TIME$ = "23:59:55"
  159.               20 OLDX$ = ""
  160.               30 X$ = DATE$ + "  " + TIME$
  161.               40 IF X$ = OLDX$ THEN 30
  162.               50 PRINT X$
  163.               60 OLDX$ = X$
  164.               70 IF RIGHT$(X$,2) <> "05" THEN 30
  165.               80 END
  166.  
  167.          Each time the returned date and time changes, it will display the new value.  You
  168.          might be surprised at what comes out.  Here's what the program displayed when run
  169.          on my system:
  170.  
  171.               12-05-1989  23:59:55
  172.               12-05-1989  23:59:56
  173.               12-05-1989  23:59:57
  174.               12-05-1989  23:59:58
  175.               12-05-1989  23:59:59
  176.               12-05-1989  00:00:00
  177.               12-06-1989  00:00:00
  178.               12-06-1989  00:00:01
  179.               12-06-1989  00:00:02
  180.               12-06-1989  00:00:03
  181.               12-06-1989  00:00:04
  182.               12-06-1989  00:00:05
  183.  
  184.          Note that on the stroke of midnight, it briefly returned the old date before
  185.          rolling it into the next day.
  186.  
  187.          Other systems can give other results.  I have seen a time of 24:00:00 returned on
  188.          the stroke of midnight, before it resets to 00:00:00.  One machine only advanced
  189.          the date about half the time, so after a week its date would be three days or so
  190.          behind (although the time was, for the most part, correct).  Other systems don't
  191.          advance the date at all.
  192.  
  193.          I discovered these lovely things when I wrote a real-time data collection routine
  194.          which does date and time stamping in addition to kicking off special processing at
  195.          midnight.  For it to run properly on all systems, I've had to add some fairly
  196.          sophisticated code to check for the above problems and, if necessary, advance the
  197.          date itself if the system doesn't bother to do so.  Note that it's a good idea to
  198.          wait a second or so after midnight before checking the date.  One system took long
  199.          enough to advance the date that my program decided it wasn't going to.  Taking the
  200.          matter into its own hands, my program advanced the date, only to have DOS then
  201.          advance it as well.  As a result, the date would jump two days every midnight.
  202.  
  203.          Personally, I don't think it's asking too much for a system to always return a
  204.          valid, proper date and time.  How many extra microseconds would it really take for
  205.          the system to finish updating them before handing me a value which is otherwise
  206.          half-baked and useless?  But there it is.  I hope this little description of the
  207.          difference between what is and what should be can help others write programs that
  208.          work correctly in real time--all the time.
  209.          -----------------------------------------------------------------------------------
  210.  
  211.                                              In The News
  212.  
  213.          Suitable Solutions Plans To Discontinue Its Rainbow Business
  214.          ------------------------------------------------------------
  215.  
  216.          Suitable Solutions has announced that effective May 31, 1990, it will discontinue
  217.          providing products for the DEC Rainbow.  In a letter dated April 23, 1990, Julie
  218.          Starr, Suitable Solution's business manager, said, "We will be closing June 1 for
  219.          an indefinite period of time while our company makes plans for a new business
  220.          direction.  . . .  The demand for Rainbow add-on and upgrade products is no longer
  221.          able to support our business."  She further indicated that the company has reduced
  222.          prices on most of its inventory of Rainbow accessories.
  223.  
  224.          For more information, interested parties can contact
  225.  
  226.               Suitable Solutions
  227.               1700 Wyatt Drive
  228.               Suite 12
  229.               Santa Clara, CA  95054
  230.               Telephone (408) 727-9090
  231.  
  232.          Lotus On The VAX
  233.          ----------------
  234.  
  235.          Lotus Development Company has announced two new versions of its 1-2-3 spreadsheet,
  236.          one for VAX/VMS and one for All-In-1.  Both are based on Release 3 of the program.
  237.          The new versions provide links between work on a VAX and on personal computers in a
  238.          network.
  239.  
  240.          DEC Takes Steps To Protect The Ozone Layer
  241.          ------------------------------------------
  242.  
  243.          Digital Equipment Corporation has announced it will change its process of cleaning
  244.          circuit boards to avoid freeing chemicals which are likely to damage the ozone
  245.          layer.  Details of the new procedure will be passed on to the Industry Cooperative
  246.          For Ozone Layer Protection.
  247.  
  248.          DEC And Concordia Agree To Collaborate
  249.          --------------------------------------
  250.  
  251.          The Management Information System of Concordia University of Montreal has agreed to
  252.          purchase computer equipment from Digital Equipment Corporation of Canada.  The
  253.          agreement is valued at millions of dollars.  DEC and Concordia have also agreed on
  254.          a long-term partnership to develop the university's computing and communications
  255.          facilities.
  256.          -----------------------------------------------------------------------------------
  257.  
  258.                                     Another Look At Disk Caching
  259.  
  260.                                         By Wilson C.Y. Chang
  261.  
  262.          My review of the Mace utilities in the last issue of this newsletter included a
  263.          discussion of disk caching and concluded that they were of little help, at least on
  264.          a Rainbow.  However, I drew a conclusion about caching under MS-DOS 3.10 although
  265.          my tests were all done under MS-DOS 2.11-1.  With some encouragement from certain
  266.          other people, I made more tests.  This time I did not use the Mace disk caching
  267.          systems but only the BUFFERS assignment in CONFIG.SYS.  The computer was the same
  268.          as before:  A Rainbow 100A equipped with an NEC V20 microprocessor, 852 000
  269.          characters of random access memory, and floppy drives but no hard disk.  My main
  270.          purpose was to compare disk caching under MS-DOS 2.11-1 with caching under 3.10.
  271.  
  272.          There are several versions of MS-DOS 3.10 for the Rainbow.  The one I used was the
  273.          original from Suitable Solutions, not one of the pre-production models that have
  274.          been passed around nor the more recent 3.10b from Suitable Solutions.
  275.  
  276.          Let me review first the meaning of the BUFFERS assignment.  MS-DOS allows setting
  277.          aside part of memory for temporary storage during access to disks.  Information is
  278.          written to this part of memory, for example, before being written to disk.  The
  279.          purpose of using memory this way is to speed up access to the information.  The
  280.          size of the section of memory set aside is determined by the BUFFERS assignment.
  281.          If you write
  282.  
  283.               BUFFERS=10
  284.  
  285.          in a CONFIG.SYS, and boot your computer, you set aside some 5 100 characters of
  286.          memory as an intermediary between a disk and the program you are running.  You
  287.          should not put too much faith in that number 5 100; the actual amount varies from
  288.          one system to another.  Roughly 512 characters of memory for each unit in the
  289.          BUFFERS assignment seems correct for the Rainbow I was using.
  290.  
  291.          Under Rainbow MS-DOS 2.11-1, the minimum number for the BUFFERS assignment is zero;
  292.          under Rainbow MS-DOS 3.10, the minimum is one.  If no BUFFERS assignment is made in
  293.          a CONFIG.SYS file, the system chooses a default value.  I have not checked on what
  294.          it is, but I am told two (corresponding to 1 024 characters of memory).  The
  295.          maximum is said to be 99, but I have not checked on that either.
  296.  
  297.          The Mace utility CACHCTRL.EXE is designed to test disk caching systems.  The
  298.          program creates a large file on disk and then reads it sequentially forward,
  299.          sequentially backward, and randomly.  I used CACHCTRL.EXE to test different BUFFERS
  300.          assignments under the two Rainbow operating systems.  CACHCTRL runs directly under
  301.          Rainbow MS-DOS, but does not give a screen display.  The IBM emulator Code Blue is
  302.          needed to get the display.  Code Blue's '/V' option is not needed--and a good
  303.          thing, too, since it slows a Rainbow down by about a third.  I used CACHCTRL first
  304.          without Code Blue and then with Code Blue version 1 to get details of the runs.
  305.  
  306.          To do a test without Code Blue, I loaded an operating system and set up a RAM drive
  307.          E: containing a batch file and some auxiliary files, then ran the batch file.  The
  308.          batch file read
  309.  
  310.               TIME > E:TESTDSK.DOC < E:CR
  311.               E:CACHCTRL TEST B: < E:Y
  312.               TIME >> E:TESTDSK.DOC < E:CR
  313.  
  314.          E:CR was a file containing just a carriage return.  E:Y contained a 'Y' for 'YES'.
  315.          These two auxiliary files responded automatically to prompts.
  316.  
  317.          The batch file put the starting system time into a file E:TESTDSK.DOC, made
  318.          CACHCTRL.EXE run a test on disk B:, then put the ending time into TESTDSK.DOC.
  319.  
  320.          Since I used a RAM drive for the batch file and its helpers, little time was used
  321.          up by the batch file itself.
  322.  
  323.          I made several runs, sometimes with MS-DOS 2.11-1 and sometimes with 3.10, with
  324.          different BUFFERS assignments in the CONFIG.SYS files
  325.  
  326.          Here are the results:
  327.  
  328.               ------------------------------------------------------------------
  329.               | Operating system   |         3.10         |        2.11-1      |
  330.               ------------------------------------------------------------------
  331.               | Buffers            |    1     |   20      |     0     |   20   |
  332.               | Time (minutes)     |  58.7242 | 16.3825   |   15.991  | 15.569 |
  333.               ------------------------------------------------------------------
  334.  
  335.          The table is evidence for what I said in my last article:  Under MS-DOS 2.11-1,
  336.          using buffers for disk caching makes little difference.  But here also is proof I
  337.          was wrong in extending the conclusion to MS-DOS 3.10.  Under that operating system,
  338.          disk access was much faster with a BUFFERS assignment of 20 than with one.
  339.  
  340.          Please note that even with 20 buffers, MS-DOS 3.10 took longer to run the test than
  341.          MS-DOS 2.11-1 took with no buffers.  On floppy disks at least, speed is sacrificed
  342.          in going from MS-DOS 2.11-1 to 3.10.
  343.  
  344.          Now for a few details of the runs.  I installed RNP, a memory-resident utility
  345.          which allows saving screen displays to a file, and ran CACHCTRL.EXE under Code
  346.          Blue.  With MS-DOS 3.10 and 20 buffers, CACHCTRL reported:
  347.  
  348.                               Record map of test file CACHETST.FIL
  349.  
  350.                         Sequential write:    218.73
  351.                Sequential read (forward):    119.82
  352.               Sequential read (backward):    261.27
  353.                              Random Read:    379.10
  354.                         Free base memory:    355200
  355.  
  356.          The times given by CACHCTRL are in seconds.  Under MS-DOS 2.11-1 with 0 buffers:
  357.  
  358.                               Record map of test file CACHETST.FIL
  359.  
  360.                         Sequential write:    219.31
  361.                Sequential read (forward):    119.85
  362.               Sequential read (backward):    223.54
  363.                              Random Read:    406.79
  364.                         Free base memory:    377568
  365.  
  366.          With MS-DOS 2.11-1 and 20 buffers:
  367.  
  368.                               Record map of test file CACHETST.FIL
  369.  
  370.                         Sequential write:    218.73
  371.                Sequential read (forward):    119.85
  372.               Sequential read (backward):    229.19
  373.                              Random Read:    369.44
  374.                         Free base memory:    369120
  375.  
  376.          Evidently, for random reads, MS-DOS 2.11-1 is faster with the extra buffers, and
  377.          MS-DOS 3.10 with 20 buffers beats MS-DOS 2.11-1 and no buffers.  The other
  378.          operations offset these results.
  379.  
  380.          I hope this article sets the record straight.
  381.          -----------------------------------------------------------------------------------
  382.  
  383.                                Program Autoloading Under Rainbow CP/M
  384.  
  385.                                             by Paul Olson
  386.  
  387.          (Editor's note:  This article is taken from one that appeared in "Rainbow News",
  388.          September, 1988.  The utilities AUTO.CMD, DU.COM, and BOOT.CMD which Mr. Olson
  389.          mentions are available from our own VARUG library as well as from the WARUG
  390.          [Washington Area Rainbow Users Group] library.)
  391.  
  392.          One function which users of MS-DOS are afforded is the ability to run a batch job
  393.          at system boot time.  The file used for this is called AUTOEXEC.BAT.  I am sure
  394.          that if you have used DOS at all, you have encountered such a file.  It can contain
  395.          things such as directory path specifications, system buffer set-ups, device
  396.          set-ups, and prompt specifications.  It is found in the root directory of the
  397.          system disk.  Each time the system is booted under DOS, the AUTOEXEC.BAT file is
  398.          run in batch mode before the user is presented with the system prompt.
  399.          Unfortunately, CP/M does not have this type of functionality, at least it is not
  400.          readily obtainable.  CP/M users can get around this problem with a slight
  401.          variation.
  402.  
  403.          At system boot time, one thing the loader does is move the file CPM.SYS into
  404.          memory.  This file, you may remember, contains the base page information as well as
  405.          the code for the CCP (Console Command Processor), the BDOS (Basic Disk Operating
  406.          System), and the BIOS (Basic I/O System).  One thing contained within the base
  407.          page, an area reserved in memory for system data structures, is the Direct Memory
  408.          Access buffer, otherwise known as the DMA buffer.
  409.  
  410.          The DMA buffer is used by the system as a temporary storage area for keyboard input
  411.          as well as disk I/O operations.  Each command entered from the keyboard at a
  412.          system-level prompt is placed into the DMA buffer for processing.  Once a carriage
  413.          return is pressed, the system parses this information, looking for a command, such
  414.          as 'TYPE', 'PIP', and so on, and any command tail information.  All we need to do
  415.          to autoload a command is to place the command into the DMA area within the CPM.SYS
  416.          file.  When CPM.SYS is loaded into memory at boot time, a command will already be
  417.          in the DMA buffer and the system will automatically execute it.
  418.  
  419.          Adding Autoload Commands
  420.          ------------------------
  421.  
  422.          Adding a command to CPM.SYS is actually easier than you might think.  There are a
  423.          few different utilities you can use to add the command information to the CPM.SYS
  424.          file.  These include DDT86, DU, AUTO, and AUTOEXE.  DDT86 is supplied with the CP/M
  425.          distribution.  If your current system disk does not contain DDT86.CMD, look for it
  426.          on your distribution disk copy.  The next two utilities which I mentioned are
  427.          available from the WARUG library (DU.COM and AUTO.CMD are both contained in volume
  428.          3).  For the sake of this example, I will discuss modifying CPM.SYS with DDT86.
  429.  
  430.          As described in one of my previous articles, the DMA buffer is formatted as shown
  431.          in Figure 1.  If you are familiar with Turbo Pascal, the DMA buffer has the same
  432.  
  433.          -----------------------------------------------------------------------------------
  434.          |    offset 0080 hex                                                              |
  435.          |         +----+----+----+----+----+->                    >--+----+----+----+     |
  436.          |         |    |    |    |    |    | >                    >  |    |    |    |     |
  437.          |         +----+----+----+----+----+->                    >--+----+----+----+     |
  438.          |   byte    0    1    2    3    4                             125  126  127       |
  439.          |           ^    ^                                                       ^        |
  440.          |           |    +- These bytes contain the command and its tail.                 |
  441.          |           |                                                                     |
  442.          |           +--------Contains the total length of the command and command tail.   |
  443.          |                                                                                 |
  444.          -----------------------------------------------------------------------------------
  445.          Figure 1.  The DMA buffer format
  446.  
  447.          format which a variable of type STRING[127] has, that is, it is 128 bytes long,
  448.          with the first byte containing the length of the string the variable contains.   In
  449.          our case, the first byte of the DMA buffer contains the length of the command and
  450.          any optional command tail.  The remaining 127 bytes contain the command and command
  451.          tail as entered at the keyboard.
  452.  
  453.          In memory, the location of the DMA buffer within the base page is 0080 hex (128
  454.          decimal), with the text of the command beginning at 0081 hex.  In the CPM.SYS file,
  455.          the DMA buffer begins at position 008A hex offset from the beginning of the file,
  456.          with the command and command tail characters beginning at position 008B hex.
  457.          Therefore, the positions we want to modify begin at position 008A hex offset from
  458.          the beginning of the CPM.SYS file.
  459.  
  460.          Because everyone has a copy of DDT86 on the distribution diskette, I will use it in
  461.          the example which follows.  DU.CMD basically has a superset of the functionality of
  462.          DDT86, and has documentation on WARUG volume 3.  AUTO uses a single command line to
  463.          insert a command into CPM.SYS.  Unfortunately, it will only allow a single word to
  464.          be inserted, not a command with a command tail.  AUTOEXE.CMD is a menu-driven
  465.          program and its operation is rather obvious.  I will not discuss it further other
  466.          than to mention that the copy which I used did not place the length of the command
  467.          in position 008A.  Instead, it placed a letter 'P' in that position for unknown
  468.          reasons.  This caused the SUBMIT command which it inserted not to work properly.  I
  469.          had to change the value at 008A via DDT86 to be the length of the command.
  470.          Otherwise, AUTOEXE functions as expected.
  471.  
  472.          The first step in performing the modification is to create a copy of your
  473.          distribution diskette or the diskette which you are currently using as your system
  474.          diskette.  If you are using a hard disk, create a copy of CPM.SYS on a floppy.
  475.          Once the modifications are made and verified, you can copy CPM.SYS to your working
  476.          diskette or hard drive.  Be sure to copy the CPM.SYS file and the .CMD or .COM file
  477.          which will be invoked at boot time, if a transient command is being used.  Also,
  478.          make the CPM.SYS file writable.  Otherwise, you will receive an error when you
  479.          attempt to write the modified version of the file back to disk.  This can be done
  480.          by the MAINT utility.  If you want to invoke an eight-bit program, you will also
  481.          have to copy the Z80CNF.SYS file to your test diskette.
  482.  
  483.          The other thing you should have is an ASCII character set table which lists the
  484.          character codes in hexadecimal format.   DDT86 requires hex values when modifying
  485.          bytes within a file.  For example, the letter 'L' is represented as '4C' in hex
  486.          format code.  If you are able to convert from octal or decimal, any ASCII chart
  487.          will do.
  488.  
  489.          For the first example, assume we want to obtain a directory listing of the
  490.          non-system files on the system disk immediately upon booting.  The 'DIR' built-in
  491.          command performs this function.  Also assume the copy of CPM.SYS to be modified is
  492.          located on the diskette in drive B:.  The first step is to determine the
  493.          hexadecimal equivalents of the letters 'D', 'I', and 'R'.  Referring to our ASCII
  494.          table, we determine the hex values for the letters to be 44 for 'D', 49 for 'I',
  495.          and 52 for 'R'.  To flag the end of the command for the autoloading procedure, we
  496.          must place a null (00 hex) at the end of the command.  We must also enter the
  497.          length of the command in the first byte of the DMA area.  The length is four, the
  498.          letters 'D', 'I', and 'R', and the null.
  499.  
  500.          (Editor's note:  For the length of the command, I have entered various numbers from
  501.          01 through 0F hex--that is, 15--into the first byte of the DMA area and noticed no
  502.          problems.  Apparently, CP/M allows much leeway in the entry at location 008A.)
  503.  
  504.          Now we are ready to modify CPM.SYS by using DDT86.  In the examples that follow,
  505.          all user entries are underscored.  Example 1 shows the first step in performing the
  506.          modification; DDT86 is invoked and CPM.SYS read into memory by the read file 'R'
  507.          command entered after the DDT86 hyphen (-) prompt.  In the example, the file name
  508.          'B:CPM.SYS' immediately follows the 'R' command.
  509.  
  510.          -----------------------------------------------------------------------------------
  511.          |E>DDT86                                                                          |
  512.          |  -----                                                                          |
  513.          |DDT86 1.1                                                                        |
  514.          |-RB:CPM.SYS                                                                      |
  515.          | ----------                                                                      |
  516.          |  START       END                                                                |
  517.          |3AFD:0000  3AFD:5C7F                                                             |
  518.          -----------------------------------------------------------------------------------
  519.          Example 1.  Reading the CPM.SYS file
  520.  
  521.          Once the file is read into memory, DDT86 reports the beginning and ending memory
  522.          positions of the file.  The number following the colon is the offset value in hex
  523.          format.  Thus the CPM.SYS file was loaded into memory segment 3AFD and occupied
  524.          positions 0000 through 5C7F within that segment.  If all this is gibberish to you,
  525.          don't worry.  If you follow the examples, you shouldn't have any problems modifying
  526.          your own copies of CPM.SYS.  Just remember that your segment number will be
  527.          different from those shown in the examples.  (This is because I used Concurrent
  528.          CP/M to obtain the screens.  Concurrent CP/M uses a memory allocation scheme
  529.          different from CP/M-86/80's.)
  530.  
  531.          The next step is to dump the contents of the memory locations.  This is done via
  532.          the dump command 'D'.  Example 2 shows the contents of the memory locations.
  533.          Because we are interested only in positions after 0080, the dump command issued is
  534.          for positions 0080 through 010F.  DDT86 displays three groups of information.  The
  535.          first group, on the far left, indicates the beginning memory position of the first
  536.          16 bytes of information displayed on the line.  The second group, the double
  537.          characters, are the hex representations of the 16 bytes of memory contents.  The
  538.          third group, located on the far right, is the ASCII equivalent of the hex values.
  539.          Notice that for values falling outside the printable ASCII character range, DDT86
  540.          uses a period to represent the value.  As can be seen in the example, the memory
  541.          contents at positions 009B through 00BF contain the copyright notice.  If the
  542.  
  543.          -----------------------------------------------------------------------------------
  544.          |-D0080,010F                                                                      |
  545.          | ---------                                                                       |
  546.          |3AFD:0080 E9 2A 03 E9 21 03 E9 02 03 7F 00 20 20 20 20 20 .*..!......            |
  547.          |                                        --                                       |
  548.          |3AFD:0090 20 20 20 20 20 20 20 20 20 20 20 43 4F 50 59 52            COPYR       |
  549.          |3AFD:00A0 49 47 48 54 20 28 43 29 20 31 39 38 30 2C 20 44 IGHT (C) 1980, D       |
  550.          |3AFD:00B0 49 47 49 54 41 4C 20 52 45 53 45 41 52 53 58 20 IGITAL RESEARCH        |
  551.          |3AFD:00C0 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ...............       |
  552.          |3AFD:00D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................       |
  553.          |3AFD:00E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................       |
  554.          |3AFD:00F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................       |
  555.          |3AFD:0100 00 00 00 00 00 00 00 00 00 00 00 CD E0 8C CD 8E ................       |
  556.          -----------------------------------------------------------------------------------
  557.          Example 2.  Dumping the contents of the memory locations
  558.  
  559.          command to be autoloaded is long, the copyright notice will be overwritten.  Don't
  560.          worry about it.
  561.  
  562.          So if the copyright notice is located in the DMA buffer area, why doesn't CP/M
  563.          attempt to run it as a command upon booting?  If you look closely at the dump in
  564.          Example 2, you will notice two zeros underscored in the line beginning with
  565.          3AFD:0080.  The underscore will not appear in your own dump.  I just put it there
  566.          for emphasis.  This 00 hex value is located at position 008A.  (if you count
  567.          positions to the right beginning from the E9 in the example, and use 'A' for 10,
  568.          'B' for 11 through 'F' for 1, the 00 is located at position 008A.)  This indicates
  569.          to CP/M that the length of the command in the DMA buffer is zero, and therefore,
  570.          CP/M ignores everything contained in the DMA buffer.  This value will be reset when
  571.          the modifications are made.
  572.  
  573.          Example 3 shows how the set memory command 'S' is used to modify memory locations.
  574.          This is the command which is used to insert the hex values of the characters of the
  575.          commands we want to autoload.
  576.  
  577.          -----------------------------------------------------------------------------------
  578.          |-S008A                                                                           |
  579.          | -----                                                                           |
  580.          |3AFD:008A 00 04    {This is the length of our command.}                          |
  581.          |             --                                                                  |
  582.          |3AFD:008B 20 44    {This is the hex value of the character 'D'.}                 |
  583.          |             --                                                                  |
  584.          |3AFD:008C 20 49    {This is the hex value of the character 'I'.}                 |
  585.          |             --                                                                  |
  586.          |3AFD:008D 20 52    {This is the hex value of the character 'R'.}                 |
  587.          |             --                                                                  |
  588.          |3AFD:008E 20 00    {This is the hex value of the null character.}                |
  589.          |             --                                                                  |
  590.          |3AFD:008F 20 .     {This is an invalid hex code to terminate input.}             |
  591.          |             -                                                                   |
  592.          |-D0080,00AF                                                                      |
  593.          | ----------                                                                      |
  594.          |3AFD:0080 E9 2A 03 E9 21 03 E9 02 03 7F 04 44 49 52 00 20 .*..!......DIR.        |
  595.          |                                        -- -- -- -- --               ----        |
  596.          |3AFD:0090 20 20 20 20 20 20 20 20 20 20 20 43 4F 50 59 52            COPYR       |
  597.          |3AFD:00A0 49 47 48 54 20 28 43 29 20 31 39 38 30 2C 20 44 IGHT (C) 1980, D       |
  598.          |-WB:CPM.SYS                                                                      |
  599.          | ----------                                                                      |
  600.          |-^C                                                                              |
  601.          | --                                                                              |
  602.          |E>                                                                               |
  603.          -----------------------------------------------------------------------------------
  604.          Example 3.  Modifying the memory contents and writing the file back to disk
  605.  
  606.          The CP/M-86 Programmer's Guide, which contains the description of DDT86, states
  607.              --------------------------
  608.          that the 'S' command should be followed by the memory location of the first byte to
  609.          be modified.  In our case, the first memory location to be modified is 008A, the
  610.          command length byte of the DMA buffer.  As can be seen in the example, this memory
  611.          position immediately follows the 'S' command.  DDT86 then presents the memory
  612.          location followed by the current position's byte value in the hex format.  After
  613.          DDT86 presents this information, it expects one of three things to be input:  1) a
  614.          carriage return indicating no change; 2) a hex value followed by a carriage return
  615.          indicating the new value for the memory position; or 3) an invalid hex value
  616.          followed by a carriage return indicating the termination of the 'S' command.  In
  617.          the listing shown in Example 2, I have underscored the input values.  Each value is
  618.          followed by a <Return>.  I have also commented the example to indicate what is
  619.          being input.  For your purposes, the input will not be underscored.  Also, do not
  620.          attempt to put in the comments.
  621.  
  622.          To double check the work, the dump command 'D' was used again, this time dumping
  623.          memory locations 0080 through 009F.  As can be seen, the  new byte values have been
  624.          inserted.  I have underscored the modified positions in the example.  Both the hex
  625.          values and their ASCII representations are marked.
  626.  
  627.          With the modifications now complete, the only task left is to write the modified
  628.          CPM.SYS back to disk.  The write command under DDT86 is 'W' followed by the file
  629.          specification.  Memory contents between the start and end locations are written to
  630.          the file.  We'll replace the CPM.SYS file in drive B:.  A <Ctrl> <C> returns
  631.          control to the CCP, the 'E>' prompt is issued; the DDT86 session ends.
  632.  
  633.          Now that the modifications are complete, the only remaining task is to reboot the
  634.          system to verify the modifications.  Once the changes are proven to operate as
  635.          expected, copy the new version of CPM.SYS to the system disk.  If you are running a
  636.          floppy-based system, you can customize the various versions of CPM.SYS for each
  637.          system application floppy.
  638.  
  639.          An Example--Autobooting A 100A From The Hard Drive
  640.          --------------------------------------------------
  641.  
  642.          All this is fine and good, but does it have a real application?  If you have a 100A
  643.          with a hard drive, it sure does.
  644.  
  645.          One advantage of owning a 100B system is that it allows the user to boot directly
  646.          from the hard drive partitions.  In addition, 100B users can specify an autoboot
  647.          partition to be used at system power-up time.  Because this is a firmware function,
  648.          users of 100A systems do not have this option.  By using the command autoloading
  649.          capability of CP/M, 100A users can simulate the 100B functionality.
  650.  
  651.          Volume 41 of the WARUG library contains a DEC-written utility called 'BOOT'.  BOOT
  652.          allows a user to boot the system from any hard disk partition which has had the
  653.          loader information copied to it.  The utility LDCOPY included with the CP/M-86/80
  654.          distribution is used to copy the information contained on the load tracks of one
  655.          disk to the load tracks of another disk.  Once this information is copied to the
  656.          load or boot tracks of the hard drive partition, a floppy can be created to boot
  657.          the system from the hard drive.  The only other information which needs to be
  658.          copied to the floppy are the CPM.SYS and BOOT.CMD files.  The CPM.SYS file will be
  659.          used for the initial boot.  The BOOT.CMD file is needed as it will be executed
  660.          during the initial boot autoload operation.
  661.  
  662.          To do this, follow the examples above to insert the 'BOOT' command into the DMA
  663.          area of the CPM.SYS file located on the floppy.  Use the help information provided
  664.          by BOOT to determine the proper command tail for the BOOT command.  You can list
  665.          this information by running BOOT and pressing the <Help> key.  Each time you boot
  666.          the system from the floppy, the system will reboot itself from the specified hard
  667.          drive.  This way, you will no longer be tied to the floppy drive to perform your
  668.          work.  My use of floppies has become quite limited since I set up a floppy to
  669.          perform the system reboot.
  670.  
  671.          AUTO.CMD is also included on Volume 41, so if you do not wish to use DDT86 to patch
  672.          CPM.SYS, AUTO is readily available.  AUTOEXE.CMD is available on many of the
  673.          Rainbow-oriented Fido BBS systems.  I will add it to the WARUG library soon.
  674.  
  675.          Summary
  676.          -------
  677.  
  678.          True AUTOEXEC.BAT functionality can be obtained by inserting the 'SUBMIT' command
  679.          into the DMA area of the CPM.SYS file.  SUBMIT will parse a .SUB file and execute
  680.          the commands which the .SUB file contains before placing you at the system prompt.
  681.          This is directly analogous to the MS-DOS capability.
  682.  
  683.          With the information provided in this article, you should be able to create your
  684.          own custom applications system disks.  I have found the autoloading capability of
  685.          CP/M to be quite useful in my activities.  I am sure you will find it useful in
  686.          yours.
  687.          -----------------------------------------------------------------------------------
  688.  
  689.                                           What Is Available
  690.  
  691.          (This section provides information on products likely to interest users of personal
  692.          computers.  Information presented here is based on that given by suppliers, with
  693.          some editorial comments.)
  694.  
  695.          PRO-C:  The C Source Code Applications Generator
  696.          ------------------------------------------------
  697.  
  698.          Vestronix Incorporated's PRO-C is designed to automate the generation of C-language
  699.          source code.  For example, if you wish to create a pop-up window in a C application
  700.          program, PRO-C will allow you to paint the window on the screen, and will generate
  701.          the C source code for the programmer.  PRO-C works with C compilers, not entirely
  702.          on its own.
  703.  
  704.          PRO-C requires MS-DOS 3 or later, 640 000 characters of random access memory, and
  705.          3.5 million characters of hard disk space.  A VMS version has been introduced
  706.          recently.  Also needed is a compatible C compiler.  Microsoft C, Turbo C, Lattice
  707.          C, Watcom C, and Zortech C are all acceptable.
  708.  
  709.          A demonstration version of PRO-C was supplied to this newsletter.  The demo ran on
  710.          a Rainbow 100B equipped with a hard disk, over 917 000 characters of memory, MS-DOS
  711.          3.10b, and Code Blue 2.01 patched to take advantage of the operating system.  Code
  712.          Blue's '/V' option was needed.  Some 600 000 characters of hard disk space were
  713.          used up by the program.
  714.  
  715.          PRO-C provides an interactive menu-driven environment for developing C programs.
  716.          Some 500 000 characters of context-sensitive help is available at the press of a
  717.          key.  Generated code is available for inspection and includes comments.  Debugging
  718.          (getting rid of errors) is largely eliminated.
  719.  
  720.          PRO-C uses prompts in plain English.
  721.  
  722.          PRO-C can generate accounting systems, payroll programs, sale and order processing
  723.          software, tax computations, and stock control programs.
  724.  
  725.          PRO-C can create data files compatible with dBASE III, ORACLE, C-ISAM, and C-TREE.
  726.          PRO-C comes with two file managers, PRO-TREE and Btrieve 5.0.  PRO-TREE's source
  727.          code is included.  Vestronix has recently offered PRO-C Work Bench, the C source
  728.          code libraries for customizing applications, at no extra cost.
  729.  
  730.          From the PRO-C main menu, the user can go to any of six modules:  Data definition,
  731.          menus, screens, reports, batches, and the compilation and testing module.
  732.  
  733.          The data definition module allows defining each field in the data file.  Each
  734.          definition is stored in a template file.  PRO-C requires a primary key for each
  735.          data file, and also supports alternate duplicate and alternate unique keys.  Each
  736.          file may have up to 64 keys.  Available data types include any characters,
  737.          alphabetic, alphanumeric, floating point, double precision floating point, short
  738.          integer, long integer, and date.  Cross references between files are permitted.
  739.  
  740.          The menu module lets you create menus in your application.  You can define the
  741.          prompt that will appear on the screen and the associated action, which may involve
  742.          running an independent program not necessarily created by PRO-C.  You can specify
  743.          hot keys--keys that a user can press to call up an option or menu quickly.  You can
  744.          also specify what happens when an exit is made from a menu.  A menu painter allows
  745.          controlling the appearance of the menu.  Work in the menu module is stored in two
  746.          files, one which contains the relationships between prompts and action, and one
  747.          which stores the appearances of the menus.
  748.  
  749.          The screen module allows creating screen programs related to the data.  You can
  750.          create conditional expressions with the operators '(', ')', '+', '-', '*', or '/'.
  751.          String and numeric constants, all fields in the template file, and all fields in
  752.          cross-referenced files are available.  You can filter data through validation
  753.          routines or create computed fields; set a field to a constant value; move a value
  754.          from another field, including computed fields and fields from cross-referenced
  755.          files; or auto-increment a field.  You can use a screen painter to design the
  756.          appearance of the screen.  If you want a sub-screen, you just draw it in a box.
  757.  
  758.          The report module permits generating programs for mailing labels, form letters,
  759.          columnar reports, or page reports.  Each report is based on the template file.  You
  760.          can define mathematical calculations and computed fields for reports.  A screen
  761.          painter permits designing the appearance of the report entry screen.  If you wish,
  762.          you can include a C-language routine written outside PRO-C.
  763.  
  764.          The batch processing module allows manipulating all related records in the system.
  765.          A primary data file controls the process.  Four options are available:  Inputting
  766.          information without changing it, updating information, appending records, and
  767.          creating a new data file.  You can impose conditions for the choice of records to
  768.          be processed, move information between records, set fields to constants, or delete
  769.          records.
  770.  
  771.          A final module allows compiling the files generated by other modules, edit with the
  772.          user's favorite text editor, or run a compiled program as a test.  On systems that
  773.          have Intel 80x86 chips, PRO-C uses the large memory model for compiling, but the
  774.          user can change this feature.
  775.  
  776.          For more information, contact
  777.  
  778.               Vestronix
  779.               Allen Square
  780.               180 King St. S. Suite 550
  781.               Waterloo, Ontario, Canada
  782.               Telephone (519) 745-2700
  783.                         (800) 265-2682 (toll free)
  784.                     Fax (519) 745-3660
  785.  
  786.          DECstation 210/316/320 Personal Computers
  787.          -----------------------------------------
  788.  
  789.          The DECstation 200 and 300 personal computers from Digital Equipment Corporation
  790.          are industry-standard machines based on the Intel 80286 or 80386 microprocessor.
  791.          The three machines are compatible with the IBM PC, use MS-DOS 3.3, and can be
  792.          integrated into a Digital network.
  793.  
  794.          The DECstation 210 uses a 10-MHz 80286 microprocessor; has a built-in 3.5-inch,
  795.          1.44-megabyte disk drive; has 640 000 characters of random access memory; and has
  796.          four front-panel device slots for floppy disks, hard disks, or tape cartridges.
  797.          There are five 16-bit and two 8-bit industry-standard expansion slots, a dedicated
  798.          16-bit memory expansion slot, a keyboard and chassis lock, and a 101-key industry-
  799.          standard keyboard.
  800.  
  801.          The DECstation 316 and 320 use the Intel 80386 microprocessor with a 32-bit data
  802.          path.  The model 316 has a 16-MHz clock, while the 320 runs at 20 MHz.  Each
  803.          machine has a 3.5-inch 1.44-megabyte floppy disk drive, six AT option slots and two
  804.          XT-style option slots, and a dedicated 32-bit memory expansion slot.  Each has room
  805.          for two more 5.25-inch front panel devices.  The 316 has a million characters of
  806.          random access memory standard; the 320 has two million.  Either computer can have
  807.          up to 16 million characters of RAM.
  808.  
  809.          Any of the three computers comes with a vector graphics adapter (VGA), a 9-pin
  810.          RS-232C serial port, and a parallel printer port.  Any of the machines can use
  811.          Digital's Ethernet controller and personal computer integration package for
  812.          networking.
  813.  
  814.          Any of the three machines can be purchased with a small computer systems (SCSI)
  815.          interface; a 40-, 80-, or 170-megabyte hard disk; or a 150-megabyte SCSI tape
  816.          cartridge system that uses quarter-inch tape.
  817.  
  818.          80286 and 80386 mathematical coprocessors are available.
  819.  
  820.          Fourteen-inch monochrome and color red-green-blue (RGB) monitors are available.
  821.          The RGB monitor displays 320 by 200 picture elements (pixels) with 256 colors, or
  822.          640 by 480 pixels with 16 colors.  Both monitors are compatible with a VGA.
  823.  
  824.          A serial-parallel adapter allows adding a second printer or communications port.
  825.  
  826.          For more information, contact your Digital dealer.
  827.          -----------------------------------------------------------------------------------
  828.  
  829.                                         Questions And Answers
  830.  
  831.          Do you have a computer-related problem?  Send it to us.  We can publish it, and if
  832.          we do not know a solution, perhaps someone else in the users group can provide one.
  833.  
  834.          QUESTION:  A Rainbow has a serial printer port.  Which serial printers will work
  835.          with a Rainbow?
  836.  
  837.  
  838.          ANSWER:  A Rainbow will work with any serial printer that uses XON-XOFF or ready-
  839.          busy protocol.  That covers any serial printer we know of; if any reader knows of
  840.          an exception, we would like to hear about it.
  841.  
  842.          A Rainbow uses XON-XOFF protocol by default.  To enable ready-busy control, just
  843.          run the SETPORT utility (provided with recent versions of MS-DOS and available free
  844.          for CP/M) and enable the data terminal ready signal.
  845.  
  846.          There are, of course, details to arrange.  You must have a suitable cable to
  847.          connect the computer and printer--and serial connections are notoriously variable.
  848.          Then you must set the transmission rate (the "baud" rate), the parity, and the
  849.          number of data bits so that the computer and printer agree.  You can use the
  850.          Rainbow's set-up mode or SETPORT for these characteristics.  You will likely have
  851.          to set so-called DIP switches on the printer.  Finally, you must have your software
  852.          agree with the printer's codes.  You may need a special driver, for example, to
  853.          make your favorite word processor print as you wish on the printer.
  854.  
  855.          By the way:  If you get a serial-to-parallel interface, you can use a Rainbow with
  856.          a printer that has a parallel port.  Depending on the design of the interface, you
  857.          may still have to run SETPORT to enable ready-busy protocol.
  858.  
  859.          QUESTION:  Is there a shareware or public domain spreadsheet which is compatible
  860.          with Lotus 1-2-3?  On what machines will it run?
  861.  
  862.          ANSWER:  The shareware AS EASY AS spreadsheet is similar to Lotus 1-2-3 and saves
  863.          its data files in a compatible format.  Versions 3.01 and later of AS EASY AS are
  864.          compatible with version 2 of Lotus 1-2-3, and allow three-dimensional spreadsheets.
  865.          Version 4 claims to permit linking the current spreadsheet with others on disk.
  866.          The VARUG library has versions 3.0 and 3.01.
  867.  
  868.          AS EASY AS will run on MS-DOS machines compatible with the IBM PC.  Rainbows
  869.          equipped with Code Blue 1 and enough memory for that program's '/V' option can run
  870.          AS EASY AS 3.0 or 3.01, but without graphics.  We have seen version 4 running on a
  871.          Rainbow that had 852 000 characters of random access memory, MS-DOS 3.10b, and Code
  872.          Blue version 2.01 (with its '/V' option) modified to take advantage of that
  873.          operating system.
  874.  
  875.          QUESTION:  Which archiving utility produces the smallest archives?  Should I use
  876.          LHARC, PAK, or PKZIP?
  877.  
  878.          ANSWER:  The results vary depending upon the files being archived.  We have usually
  879.          found that LHARC compresses binary-coded files (.COM or .EXE files, for example)
  880.          the most, while PKZIP compresses medium-sized to large text files the most.
  881.          However, there are exceptions, so do not be surprised if you see PAK compressing
  882.          .COM files more than either of its competitors.  On one occasion, we compressed a
  883.          group of small text files the most by putting them uncompressed into a .LBR file
  884.          and then applying the CP/M-80 utility CRLZH.COM to the .LBR file.
  885.  
  886.          As for which compression utility you should use, that may depend on other factors
  887.          besides the amount of compression produced.  If you are passing compressed files to
  888.          another party, that party must be able to decompress your files, so you may be
  889.          required to use a particular utility.  Some bulletin boards standardize on one
  890.          compression format.  For example, Computing Canada On-Line uses PAK archives, while
  891.          a Chilliwack board specializes in LHARC's .LZH files.  Another consideration is the
  892.          time taken by the compression utility.  PKZIP is noticeably faster than PAK and
  893.          still faster than LHARC, so if you have much archiving to do, you may prefer PKZIP.
  894.          On the other hand, PAK is compatible with older .ARC files; if you have many of
  895.          them, PAK may be your archiver of choice.  Finally, LHARC is not shareware, but
  896.          free (the VARUG library has the source code).  If you deal with an organization
  897.          which insists on public domain software, LHARC may become your favorite.  Still
  898.          more:  There are CP/M-80 de-archivers for dealing with PKZIP and LHARC archives,
  899.          but (as far as we know) none for handling PAK's crushing and distilling techniques
  900.          (but PAK can also use crunching and squashing, and CP/M's UNARC is compatible with
  901.          those).
  902.  
  903.          If all this bewilders you, be assured that many other people feel as you do!
  904.  
  905.          QUESTION:  Does PC-FILE allow mathematical calculations?  If so, how?
  906.  
  907.          ANSWER:  PC-FILE permits calculations in special calculation records and also as
  908.          parts of reports.  The documentation gives details.
  909.  
  910.          QUESTION:  What is shadow RAM?
  911.  
  912.          ANSWER:  Shadow RAM is random access memory into which routines are loaded from
  913.          read-only memory (ROM).  Having these routines in shadow RAM is supposed to provide
  914.          quicker access to them.
  915.  
  916.          QUESTION:  Can I send a file to the printer during an SEDT editing session without
  917.          leaving SEDT?
  918.  
  919.          ANSWER:  Recent versions of SEDT have a ':PR' command for just that.  This command
  920.          may or may not be incorporated in a key definition file.  Your editor's custom key
  921.          definition file uses <Gold> <Ctrl> <P> to send a file directly to the printer
  922.          without leaving SEDT.
  923.  
  924.          Note, however, that if you use a Rainbow 100A with MS-DOS 2.05 or later, SEDT 3.3
  925.          and later is overly sensitive to incoming signals.  Turning a printer or modem on
  926.          or off while SEDT is loaded causes the computer to reset itself, or to stop
  927.          functioning until the user turns it off.  If you try to print and the printer sends
  928.          an XOFF or busy signal when its buffer fills, you will get a similar crash.  This
  929.          problem seems to be absent on a 100A under MS-DOS 2.01, and also absent on a 100B
  930.          under any version of MS-DOS, as well as on other MS-DOS machines we have tried.  If
  931.          you use SEDT on a 100A under (say) MS-DOS 2.11, we suggest you save your file to
  932.          disk first, leave SEDT, and then copy the file to the printer.
  933.          -----------------------------------------------------------------------------------
  934.  
  935.                                          Buy, Sell, Or Swap
  936.  
  937.          This section is presented as a service to members.  There is no charge for
  938.          advertizements placed here, though donations will be accepted.  Only items related
  939.          to computing will be advertized; if you wish to sell an old car, we respectfully
  940.          suggest that you publicize elsewhere.  Advertizements are not accepted from
  941.          suppliers.  In accordance with DECUS policy on commercialism, we do not print
  942.          prices.  Ads should preferably be submitted to the editor in writing or as ASCII
  943.          computer files, but may also be phoned in.
  944.  
  945.                                   ----------------------------------
  946.  
  947.          FOR SALE:  VAX 11/730 unlimited user with MicroVAX II as end node
  948.                     Rainbow 100Bs with keyboards, monochrome or color monitors, 10 megabyte
  949.                         hard disks, and 256 k or more of RAM
  950.                     DEC Rainbow version of dBASE III version 1.0, unopened
  951.  
  952.          Contact Charles Haynes at (604) 985-6125 during business hours.
  953.  
  954.          FOR SALE:  Poly-XFR CP/M communications software for Rainbow 100; CP/M-86/80
  955.          operating system version 2.0.  Both software items are in the original packages and
  956.          have documentation included.  One AC fan for a Rainbow 100A (also fits many other
  957.          computers).  7.6 cm (3 inch) adding machine rolls.  Three 65 536-character DRAM
  958.          (memory) chips.   These items are just taking up space now, so all offers will be
  959.          considered.  Telephone David P. Maroun at (604) 792-4071.
  960.  
  961.          WANTED:  The manual for version 1.5 of the WPS-80 word processor.  Any information
  962.          about the communications sub-menu would be welcome.  Telephone Doug Nicol at (604)
  963.          792-0025.
  964.  
  965.          FOR SALE:  Peachtree business modules for MS-DOS:  PeachCalc spreadsheet, general
  966.          ledger, accounts payable, accounts receivable, personal calendar, job cost system,
  967.          and inventory control.  Any offer will be seriously considered.  Note:  These
  968.          modules require Code Blue and maximum memory to run on Rainbows.  Contact David P.
  969.          Maroun at (604) 792-4071.
  970.  
  971.          FOR SALE:  One 192 k memory expansion board for a DEC Rainbow.  Contact Ken Alger
  972.          at (604) 390-4482.
  973.  
  974.          FOR SALE:  One 3-high and one 4-high cabinet (suitable for Ra81s) with power
  975.          distribution.  Numerous Qume and VT102 terminals.  Contact Marcus Schack at
  976.          Vancouver Wharves, telephone (604) 985-3177.
  977.          -----------------------------------------------------------------------------------
  978.  
  979.          What Do You Think Of This Issue?
  980.  
  981.          Please tell us what you liked and did not like.
  982.  
  983.          The best articles were:__________________________________________________________
  984.  
  985.          _________________________________________________________________________________
  986.  
  987.          _________________________________________________________________________________
  988.  
  989.          _________________________________________________________________________________
  990.  
  991.          The worst articles were:_________________________________________________________
  992.  
  993.          _________________________________________________________________________________
  994.  
  995.          _________________________________________________________________________________
  996.  
  997.          _________________________________________________________________________________
  998.  
  999.          Comments or suggestions:
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.          Send your opinions to The Editor, VARUG Newsletter, 9395 Windsor Street,
  1025.          Chilliwack, BC, Canada   V2P 6C5.
  1026.