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 / ANYDISK.ZIP / ANYDISK.OUT < prev   
Text File  |  1990-11-24  |  8KB  |  264 lines

  1.  
  2.  
  3. ANYDISK                                        July 27, 1982
  4.  
  5.  
  6. The authors  
  7.  
  8.    The original  version  of  this  program  was  written by
  9. Richard Damon. Robert Ward rewrote the  program  and  called
  10. it  DDNDISK.  Edward  K.  Ream  further  modified DDNDISK to
  11. produce ANYDISK. Please send all reports of bugs to: 
  12.  
  13.         Edward K. Ream 
  14.         1850 Summit Ave.  
  15.         Madison, WI 53705 
  16.         (608) 231 - 2952 
  17.  
  18.  
  19. The commands 
  20.  
  21.    This program allows the operator to examine and modify  a
  22. CP/M disk.  The commands available are: 
  23.  
  24. Bn  Set  current  track  and  sector to point at block n and
  25.     enter block mode.  
  26. Cn  Fill buffer with SIGNED value n.  
  27. Dn  Set current disk number to  n  (0--#  of  drives-1)  and
  28.     print disk information.  
  29. Ea n n ... n    Edit buffer starting from location a. 
  30. Fn  Fill buffer with UNSIGNED value n.  
  31. H   Print help message.  
  32. I   Convert  block  to  track  and  sector  and enter sector
  33.     mode.  
  34. M   Print the directory and the disk allocation map.  
  35. N   Go to next block or track/sector.  
  36. P   Print contents of buffer. 
  37. R   Read sector or block into buffer (depending on mode).  
  38. Sn  Set current sector to n (0--# of  sectors  per  track-1)
  39.     and enter sector mode.  
  40. Tn  Set  current  track  to  n  (0--# of tracks  per disk-1)
  41.     and enter sector mode.  
  42. W   Write sector or block from buffer (depending on mode).  
  43. X   Exit program.  
  44.  
  45. Notes: 
  46. 1. Multiple commands may be specified on a line  except  for
  47.    the  X  command  which  must  be  the only command on the
  48.    line.  
  49. 2. Commands may be in upper or lower case letters.  
  50. 3. Spaces are ignored except in the  E  command  where  they
  51.    are used as separaters for the numbers.  
  52.  
  53. Typical commands: 
  54.  
  55. d0t0s1rp        read in the track 0 sector 1 of 
  56.                 disk 0 (drive A) and print it.  
  57.  
  58. e1A 4F          set buffer location 1A to 4F and 
  59.                 set buffer location 1B to 20.  
  60.  
  61.  
  62.  
  63.                             -1-
  64.  
  65.  
  66.  
  67.  
  68. ANYDISK                                        July 27, 1982
  69.  
  70.  
  71. e0a  00w        Set  buffer  location  0a  to  0 and write
  72.                 buffer.  Note no space after last data byte.
  73.  
  74. b0rp            print the entire first block.  
  75.  
  76. b0irp           print the first sector of the first block.  
  77.  
  78.  
  79. The disk allocation map 
  80.  
  81.    The M command  prints  the  directory  in  two  sections.
  82. Section  1  is  a  listing  of  each  directory  entry.  For
  83. instance, entry 15 in the directory would be listed as: 
  84.  
  85.         15 = DDNDISK C:0 
  86.  
  87. The equal sign means the entry is valid.  A star  (*)  would
  88. be  printed  instead  of  the  equal  sign if the entry were
  89. deleted.  The number  following  the  colon  is  the  extent
  90. number.  
  91.  
  92.    The second  section  is  a disk allocation map.  There is
  93. one entry in this map for every block on the disk.   If  the
  94. block  is  not  allocated  to any file, the characters "..."
  95. appear. Otherwise, a number appears.  This number refers  to
  96. the  number  of  the  directory  entry  which  allocated the
  97. block.  Refer back to section 1 to see which file  allocated
  98. the block.  
  99.  
  100.  
  101. The structure of a CP/M 2.x disk 
  102.  
  103.    Here is  a brief description of the CP/M 2.x disk format.
  104. Several tracks are typically reserved for the bootstrap  and
  105. a  copy  of  CCP and BDOS.  The number of reserved tracks is
  106. determined by BIOS for each type of disk.   This  number  is
  107. called  the  track  offset; it is printed by the 'D' command
  108. when a disk is selected.  
  109.  
  110.    Most commands deal with the track  offset  automatically.
  111. The  only  exception is the 'T' command.  When using the 'T'
  112. command, you must add the offset yourself.   Thus,  you  can
  113. access ANY track with the 'T' command.  
  114.  
  115.    Tracks following  the  reserved  tracks  store  data.  To
  116. speed  up  disk  access,  CP/M  does  not  store   data   in
  117. consecutive  sectors.   The  sector translate table converts
  118. from logically consecutive sectors to the order  that  those
  119. sectors  are  actually  stored  on the disk.  (This table is
  120. used only on CP/M 2.x versions.) 
  121.  
  122.    All commands deal with LOGICAL sector numbers.   This  is
  123. what  you almost always want.  Whenever a sector is printed,
  124. both the logical and  physical  sector  numbers  are  shown.
  125. Thus, if you can find any physical sector if you must.  
  126.  
  127.  
  128.                             -2-
  129.  
  130.  
  131.  
  132.  
  133. ANYDISK                                        July 27, 1982
  134.  
  135.  
  136.  
  137.    A block  is  the  smallest  unit  of  a disk which can be
  138. allocated to a file.  The size of a block is a  multiple  of
  139. 128  bytes.   The  block size is determined by BIOS for each
  140. type of  disk.   The  block  size  is  printed  by  the  'D'
  141. command.  
  142.  
  143.    Several blocks  are reserved at the beginning of the disk
  144. for the directory.  Again, the number of reserved blocks  is
  145. determined  by  BIOS  for each type of disk.  This number is
  146. also printed by the 'D' command.  
  147.  
  148.    The format  of  each  entry  of  the  directory   is   as
  149. follows.  Each entry describes one extent of a file.  
  150.  
  151. byte   0    : file code : 0 if file exists, 0xe5 if deleted
  152. bytes  1- 8 : file name : file name (ascii)
  153. bytes  9-11 : file type : file type (ascii)
  154. byte   12   : file ext  : extent number (binary)
  155. bytes  13,14: unused
  156. bytes  15   : rec count : count of number of sectors in extent
  157. bytes  16-31: map       : list of blocks used by this extent
  158.  
  159.    Please note  that  byte 15 is NOT a reliable guide to the
  160. number of blocks allocated to a file.  The way  to  tell  is
  161. simply  to  count  the  blocks in the map.  Block 0 is never
  162. allocated to any file and it signals the  end  of  the  map.
  163. Remember  that  block  numbers  take  either  1  or  2 bytes
  164. depending on whether there  are  less  than  256  blocks  or
  165. not.  
  166.  
  167.  
  168. Differences between DDNDISK and ANYDISK 
  169.  
  170. o  ANYDISK  uses  the  CP/M  2.x BIOS select disk routine to
  171.    get the characteristics of the disk  dynamically.   Thus,
  172.    different  kinds of disks may be used without recompiling
  173.    the program.  
  174.    
  175. o  ANYDISK  will  work  even  with  hard   disks.    Several
  176.    arithmetic  statements  have been converted into loops in
  177.    order to avoid overflow problems.  This also  means  that
  178.    a  single  index variable can NOT be used.  Instead,  the
  179.    current block, track and sector  numbers  are  maintained
  180.    separately.  
  181.    
  182. o  The  code  that computes the disk map now needs lots less
  183.    memory.  Only one disk block at  a  time  is  now  loaded
  184.    into memory.  
  185.    
  186. o  The  disk map now is more readable.  The format is useful
  187.    even for hard disks.  Directory entries which  have  0xe5
  188.    for a file name are completely ignored.  
  189.    
  190.  
  191.  
  192.  
  193.  
  194.                             -3-
  195.  
  196.  
  197.  
  198.  
  199. ANYDISK                                        July 27, 1982
  200.  
  201.  
  202. o  The   'D'   command   now   prints   a   summary  of  the
  203.    characteristics of the selected disk.  
  204.    
  205. o  The 'H' command is new.  It prints a help message.  
  206.    
  207. o  The 'I' command is now useful for  printing  parts  of  a
  208.    block.   For  example,  to  print just the 5'th record of
  209.    block 20 use: 
  210.    
  211.            b20i nnnn rp 
  212.    
  213. o  The 'W' command now tells BIOS that  all  writes  are  to
  214.    the  directory.   This  forces  BIOS  to  do the write at
  215.    once.  
  216.    
  217. o  You get a more informative prompt if  you  type  a  value
  218.    which is out of range.  
  219.    
  220. o  The  ptmap  routine  contains  two  constants,  M1COL and
  221.    M2COL which control how many entries will be put on  each
  222.    line  for  the  directory  list  and  the disk allocation
  223.    map.  I use fairly small values because  my  screen  only
  224.    has 64 columns.  Choose the constants you like best. 
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.                             -4-
  261.  
  262.  
  263.  
  264.