home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / c128 / rampakd.ark / READMS.DOC < prev    next >
Encoding:
Text File  |  1987-07-06  |  11.0 KB  |  265 lines

  1.        Notes RDMS23 - a program to read MS-DOS disks under CP/M.
  2.  
  3.                            John Hastwell-Batten
  4.                                   SYSOP
  5.                              Tesseract RCPM+
  6.                                P.O. Box 242
  7.                              Dural, NSW 2158
  8.                                 AUSTRALIA
  9.  
  10.        RDMS23 is a program which uses the CP/M BIOS to read files
  11.        from MS-DOS diskettes and the CP/M BDOS to write the files
  12.        to a CP/M disk.
  13.  
  14.        RDMS23 is derived from RDMSDOS.C which was written by Bob
  15.        Alverson.  The version released into the public domain was
  16.        1.1 written for compilation with small-C and for operation
  17.        under CP/M 2.2.
  18.  
  19.        Since then I have done a lot of work on this program. 
  20.        Apart from fixing a few significant bugs, the major
  21.        changes have been to make it run under CP/M version 3.1
  22.        which is the operating system that I now use.  I also
  23.        added a stack of comments including some notes on
  24.        implementation.  Hopefully, the latest revision can also
  25.        run under CP/M 2.2.
  26.  
  27.        RDMS23 is written in Hi-Tech C but just about any "K&R" C
  28.        compiler can be used providing it supports the malloc()
  29.        function or equivalent.  Even that is no real obstacle;
  30.        you could make the dynamically allocated memory static
  31.        instead at the cost of increased program size.  (The
  32.        program was originally written that way.)
  33.  
  34.        The operation of the program is somewhat dependent on the
  35.        way that the BIOS of the host CP/M system handles double-
  36.        sided diskettes.  Although I have tried to cater for some
  37.        of the more commonly used methods you may have to modify
  38.        the program.  In some cases you may have to modify your
  39.        BIOS if you really want to use this program.  Some notes
  40.        on adapting the program appear later in this
  41.        documentation.
  42.  
  43.        Pre-requisites:  
  44.        ---------------
  45.  
  46.        There are some absolute requirements which must be met
  47.        before you can use this program:
  48.  
  49.        1.   Your system must have a 40-track 5.25" disk drive
  50.        which can read double-sided, double-density diskettes.
  51.  
  52.        2.   The BIOS must be capable of reading at least nine 512-
  53.        byte sectors from each track.
  54.  
  55.        Future development:   
  56.        -------------------
  57.  
  58.        v2.x      Preserve CRC integrity (maybe).
  59.  
  60.        v3.x      Allow writing to MS-DOS disks.
  61.  
  62.     ============================================================
  63.  
  64.     How to use RDMS23 
  65.     =================
  66.  
  67.     Activating the program
  68.     ----------------------
  69.  
  70.     Park RDMS23.COM on any convenient disk.  On my system I put
  71.     it on drive A: in user area 0 and made it a system file so
  72.     that I can run it from any disk & user area.  ZCPR users will
  73.     be able to do the same trick.
  74.  
  75.     It is probably worthwhile renaming the program to something
  76.     like RDMS.COM to save unnecesary typing.  These notes assume
  77.     that name from now on.
  78.  
  79.     Now log into the disk/user where you want to put the files
  80.     which you are going to copy from the MS-DOS disk.
  81.  
  82.     Activate the program by typing its name.  RDMS needs to be
  83.     told the disk drive where the MS-DOS diskette is loaded.  You
  84.     can include the drive letter on the command line if you wish,
  85.     otherwise RDMS will prompt for it.  
  86.  
  87.     The command-line forms are:
  88.  
  89.            rdms         -or-         rdms d
  90.  
  91.     where 'd' is the MS-DOS drive letter.
  92.     [Other command-line options are discussed later.]
  93.  
  94.     RDMS will read the File Allocation Table and the root
  95.     directory from the MS-DOS disk and will display the root
  96.     directory.  You are then in a position to copy files from the
  97.     MS-DOS diskette to a CP/M disk.
  98.  
  99.     Copying files
  100.     -------------
  101.  
  102.     All that is required to copy a file from the MS-DOS diskette
  103.     to the logged-in CP/M disk/user is to type the name of one of
  104.     the files displayed from the MS-DOS directory.  Multiple
  105.     files can be copied by using the usual "wildcard" naming
  106.     conventions.
  107.  
  108.     At any time you may get a new directory display by supplying
  109.     no file name at all, i.e. by just pressing the <CR> key.
  110.  
  111.     Subdirectories
  112.     --------------
  113.  
  114.     In the directory listing, subdirectory files are identified
  115.     with a "type" of ".dir".  If you type the name of a
  116.     subdirectory (without the ".dir") then instead of copying the
  117.     file, RDMS switches to that subdirectory and displays its
  118.     contents.  You can then continue copying files, but be a
  119.     little bit careful because there might be two different files
  120.     on the MS-DOS diskette with the same name in different
  121.     directories.  If you copy a second file it will overwrite the
  122.     first.
  123.  
  124.     In any subdirectory the first two entries will themselves be
  125.     directories.  One will be identified with a single dot,
  126.     another with two dots.  The double-dot entry is the only
  127.     interesting one.  If you enter ".." as a file name then RDMS
  128.     will switch back to the previous MS-DOS directory level. 
  129.     This gives you the ability to traverse the entire MS-DOS
  130.     directory heirarchy.
  131.  
  132.     Ending the program
  133.     ------------------
  134.  
  135.     By far the cleanest way to end the program is to respond to
  136.     an "Enter filename: " prompt with ^Z<cr> (i.e. control-Z and
  137.     carriage return).  If you do that then the program will
  138.     properly re-log the CP/M disk.
  139.  
  140.     On some systems it MAY be OK to terminate the program with
  141.     control-C but don't complain to me if you have to cold-boot
  142.     your computer after doing that.
  143.  
  144.     ============================================================
  145.  
  146.     Technical notes
  147.     ===============
  148.  
  149.     MS-DOS disks come in four flavours; single- and double-sided
  150.     disks with either eight or nine sectors of 512 bytes each per
  151.     track.  Double-sided MS-DOS disks are recorded in "cylinder"
  152.     mode.  Sectors 1 to 8/9 are written on side 0, then sectors 1
  153.     to 8/9 are written on side 1 before stepping to the next
  154.     track.  There is no standard way to tell a CP/M BIOS which
  155.     side of the disk should be accessed.  All you can do is to
  156.     set the track and sector numbers before doing a disk I/O
  157.     operation.  You have to make the program calculate the track
  158.     and sector such that your BIOS will access the right part of
  159.     the disk.  You may even have to modify your BIOS!
  160.  
  161.     In the simplest case, your BIOS may also assume/use
  162.     "cylinder" mode recording and decode the side number from the
  163.     low-order bit of the track number.
  164.  
  165.           BIOS TRACK               CYLINDER       SIDE
  166.                0                       0            0
  167.                1                       0            1
  168.                2                       1            0
  169.                3                       1            1
  170.                4                       2            0
  171.                .                       .            .
  172.               77                      38            1
  173.               78                      39            0
  174.               79                      39            1
  175.  
  176.     Another common method of telling the BIOS which side of the
  177.     disk to access is that of setting the high-order bit of the
  178.     sector number so that requesting a sector in the range  1 to
  179.     8/9 accesses side 0, requesting a sector in the range 129 to
  180.     136/137 accesses side 1.  The program is currently set up to
  181.     use this method.
  182.  
  183.     Some BIOS's assume that all tracks below the number of
  184.     cylinders on the disk are on side 0, all higher-numbered
  185.     tracks are on side 1.
  186.  
  187.     None of the above presents any real problem.  If your BIOS
  188.     uses any of those methods then you can modify the program to
  189.     cope.  You will be in real trouble if your BIOS uses the
  190.     "long track" method of handling double sideded setors where 1-
  191.     8/9 are, as usual, on side 0 but where the sectors on side 1
  192.     are assumed to be physically recorded with different numbers
  193.     from the corresponding sectors on side 0.  There is NO WAY
  194.     OUT except to change your BIOS!  Likewise your BIOS must
  195.     either expect the sector id bytes on side 1 to actually have
  196.     side 1 encoded, or NOT action a side-select verify when
  197.     seeking to a sector on side 1.
  198.  
  199.     I hope all that makes sense.
  200.  
  201.     There are some command-line options which actually tell
  202.     RDMS23 which method to use on two-sided diskettes.  You might
  203.     like to try these before attempting to recompile the program.
  204.  
  205.      -h   (for "high bit) tells RDMS23 that your BIOS uses the
  206.           high-order bit of the sector number to signal a read 
  207.           from side 1.
  208.  
  209.      -c   (for "cylinder mode") tells RDMS23 that your BIOS
  210.           regards all even-numbered tracks of a double-sided 
  211.           diskette as being on side 0 and all odd-numbered tracks 
  212.           as being on side 1.
  213.  
  214.      -x   (for "extended surface") tells RDMS23 that your BIOS
  215.           regards tracks 0-39 as being on side 0 and tracks 40-79 
  216.           as being on side 1.
  217.  
  218.     Just include the appropriate option somewhere on the command
  219.     line if your BIOS uses one of the above methods, e.g.
  220.  
  221.                rdms23 d -x    -or-    rdms23 -x d
  222.  
  223.     Remember, if you don't tell RDMS which method to use, it
  224.     assumes "-c".  You may wish to change that assumption once
  225.     you know which method is used by your own BIOS so that you
  226.     don't have to keep telling RDMS the same thing every time you
  227.     run it.  You can recompile the program if you have an
  228.     appropriate C compiler but you can also patch RDMS.COM with
  229.     DDT, ZSID or whatever.  To do that, load RDMS.COM under ZSID
  230.     and use the ASCII/HEX "dump" command to scan through the
  231.     program.  Look for the string of characters "Method=H",
  232.     change the "H" to "C" or "X" and save the modified program. 
  233.     The string will be a fair way into the program and to save
  234.     time I suggest you start looking at around 3000h. 
  235.  
  236.     ============================================================
  237.  
  238.     Known bugs
  239.     ----------
  240.  
  241.     A CRC calculated under MS-DOS will not be the same as the CRC
  242.     calculated for the file once it has been copied to CP/M.  The
  243.     file itself is OK and I think the difference arises from the
  244.     mechanisms for detecting end-of-file under the two operating
  245.     systems.
  246.  
  247.     Under CP/M+ and CCP/M there is a mechanism for saving the
  248.     exact file length so this problem may yet be solved.
  249.  
  250.     =============================================================
  251.  
  252.     Copyright
  253.     ---------
  254.          (C)1984   Bob Alverson
  255.          (C)1985   John Hastwell-Batten
  256.  
  257.     This is a PUBLIC DOMAIN program.  You are free to distribute,
  258.     copy and use this program for non-commercial purposes.  We
  259.     didn't charge you anything for it.  It is not fair for you to
  260.     make money or to steal the credit for our efforts.
  261.  
  262.     
  263.     If you fix any bugs or make any enhancements please re-submit
  264.     the modified SOURCE code to the public domain.
  265.