home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / ENTERPRS / CPM / UTILS / A / CONVERTB.ARC / CONVERTB.TXT < prev   
Text File  |  1988-09-12  |  3KB  |  64 lines

  1. CONVERTING TURBO PASCAL DATA FILES FROM CP/M TO MS\PC-DOS
  2.  
  3. by William Meacham                                 8/27/87
  4.  
  5.      This is for Turbo Pascal programmers who are moving from
  6. CP/M to DOS; I am one of them.  One of the nifty things about
  7. Turbo Pascal is that it was so easy!  My source code was almost
  8. completely transportable; I only had to change a couple of BDOS
  9. calls.  (The transition the other way would not be so easy; you
  10. can do a lot of things on the IBM clones that you can't on a CP/M
  11. machine.)  However, I had a bit more trouble transporting my data
  12. files.  I could not just transfer the files to the DOS machine
  13. and use them.
  14.  
  15.      A CP/M Turbo Pascal data file (other than a text file)
  16. differs from its DOS equivalent in two important ways:  (1) it is
  17. longer, and (2) it contains extra information.  This means that
  18. you cannot simply read the CP/M file from a DOS program; you have
  19. to convert the file format.
  20.  
  21.      The CP/M file is longer than its DOS equivalent because it
  22. is rounded up to a 128-byte boundary.  In CP/M the logical length
  23. of a file is different from its physical length.  By "logical
  24. length" I mean the number of bytes in all the records in the file
  25. as defined in your Turbo Pascal program.  By "physical length" I
  26. mean the file length recorded in the operating system directory. 
  27. CP/M does not keep track of the logical length of a file.  Every
  28. file is rounded up to the next 128-byte boundary (or 256 or 1K
  29. byte, depending on your BIOS).  DOS, however, keeps the exact
  30. file length in its directory.
  31.  
  32.      The CP/M file contains four bytes at its beginning not found
  33. in the equivalent DOS file.  These are two integers giving the
  34. number of records and the record length.  They are used for the
  35. FileSize function, which works differently in CP/M from the way
  36. it works in DOS.  The CP/M FileSize function reads the first four
  37. bytes of the file and computes its logical length.  The DOS
  38. function finds out from the directory.  It does not need the
  39. extra four bytes at the beginning, and the DOS data file does not
  40. contain them.
  41.  
  42.      This means you've got trouble when you transfer a CP/M file
  43. to DOS, whether by modem or direct serial transfer or by using
  44. a disk compatability program.  If you recompile your source code
  45. and then run it against the CP/M data file you either bomb out or
  46. get erroneous results.  Your Turbo program does not recognize the
  47. extra four bytes at the beginning of the file, so all your
  48. records are now four bytes off.
  49.  
  50.      I wrote the program CONVERTB.PAS to fix this problem.  It
  51. will work on any CP/M data file that has been transferred to a
  52. DOS machine.  What it does is read the first four bytes and
  53. compute the logical length of the file by multiplying the number
  54. of records times the record length.  Then it reads that many
  55. bytes from the CP/M file and writes a new DOS file that many
  56. bytes long.  When you are done, the DOS file's logical and
  57. physical length are the same.
  58.  
  59.      The program, in source and executable form, and some
  60. additional documentation are in the file CONVERTB.ARC on the
  61. Kaypro Club Bulletin Board, 258-8328.  This is an MS-DOS Archive
  62. file, since the whole point of it is to run on MS-DOS computers.
  63. Those of you who have such, download and enjoy!
  64. µî«╙å2ì7ECM┐Ω8╔±!