home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol073 / dd6.doc < prev    next >
Text File  |  1984-04-29  |  13KB  |  274 lines

  1.                        --- DISK DUMP ---
  2.  
  3.                        -- Version 2.15 --
  4.  
  5.                                         By Bill Bolton
  6.                                         Software Tools,
  7.                                         P.O. Box 80,
  8.                                         Newport Beach,
  9.                                         NSW, 2106,
  10.                                         AUSTRALIA
  11.  
  12. Introduction
  13. ------------
  14.  
  15.     This program is an improved disk dump utility for CP/M.  Any 
  16. CP/M  file may be dumped to the console.  In addition any sector 
  17. or  group  of  sectors may be dumped in  the  same  format.  The 
  18. utility  can  be  made to handle any CP/M  2.X  disk  system  as 
  19. outlined later.
  20.  
  21.      The  program  is referred to as DD6 when  refering  to  the 
  22. latest    implementation   or   DDX   when   refering   to   all 
  23. implementations including the latest one.
  24.  
  25.                         --- OPERATION ---
  26.  
  27.     The program may be run either by typing DD6, or DD6 followed 
  28. by  the  file  name or track and sector.  If DD6  is  typed  the 
  29. program responds with a heading, followed by a '*' and waits for 
  30. more  user  input.  Operation in this mode is similar  to  other 
  31. utilities such as PIP or DDT.
  32.  
  33.      The operation desired may then be typed in as follows:
  34.  
  35.           DD6 file.nam
  36.           DD6 A:file.nam
  37.           DD6 C:file.nam
  38.  
  39.      or may be typed separately as:
  40.  
  41.           DD6
  42.  
  43.           *file.nam      (the * is the program prompt)
  44.           *B:file.nam
  45.  
  46.     The  file  is  dumped by examining its  directory  entry  to 
  47. obtain   block  allocation,   number  of  records   and   extent 
  48. information.  The file is then dumped on a block by block basis, 
  49. this allows display of the track and sector numbers as a file is 
  50. dumped.  The  last block of a file is only dumped up to the last 
  51. sector actually used by the file.
  52.  
  53.     All   sector dumps display hex addresses in the range 00  to 
  54. 7F  as a 2 digit hex number,   except in the case of a COM  file 
  55. dump.  When  a  COM file is being dumped,   the first sector  is 
  56. assumed  to  start  at 0100H and all  subsequent  addresses  are 
  57. incremented  from this base address and displayed as a  4  digit 
  58. hex number.  
  59.  
  60.     A sector dump heading is displayed at the top of each sector 
  61. dumped   and  indicates  the drive selected,   whether  1  or  2  
  62. sided,  its  physical  sector size,  the track  number,  logical  
  63. sector number and a dump count:
  64.  
  65.  Drive A: 1S/2D/1024 - Track 2  Logical Sector 14  Dump Count 1
  66.  
  67.     The  dump count displays the running total of sectors dumped 
  68. from  a  single  command line.  This is useful  for  locating  a 
  69. particular sector of a file or block.  A modified version of the 
  70. CP/M  User's Group binary COMPARE utility,  which indicates file  
  71. differences   with  decimal  sector numbers that   are  directly  
  72. equivalent    to DDX Dump Count numbers,   is   available   from  
  73. Software Tools.
  74.  
  75.     The  program may also be used to dump disk sectors  directly 
  76. and  dump  any  CP/M  sector  block  (or  group)  - block   size 
  77. information  is  obtained from the CP/M 2.X DPB (Disk  Parameter 
  78. Block)  of  the  drive concerned.  The  sectors  containing  the 
  79. directory  may dumped with a simple single command and a map  of 
  80. the block allocations may be likewise displayed.
  81.  
  82.           DD6 TRACK 3 SECTOR 7
  83.           DD6 TRACK 5   SECTOR 3 - 9
  84.           DD6 TRACK 6  (dumps all sectors on the track)
  85.           DD6 GROUP 19
  86.           DD6 DIR
  87.           DD6 MAP
  88.  
  89.      The  words  TRACK,  SECTOR and GROUP may be abbreviated  as 
  90.  follows:
  91.  
  92.           DD6 T 7 S 3-4
  93.           DD6 G 4
  94.           *TRACK 5 S 6
  95.           *SECTOR 2-9 T 14
  96.           DD6 B:    TRACK 3
  97.           DD6 A: T 9    S 4-6
  98.           DD6 B:   G    5
  99.           DD6 B:MAP
  100.  
  101.     Note  that  the format is quite  free.  Spaces  are  usually 
  102. ignored.  They  are only required after the words TRACK,  SECTOR 
  103. and GROUP or T, S and G and after the word DD6.
  104.  
  105.      In  previous  versions  of DDX the  block  or  cluster  was 
  106. refered  to as a "group" as this term is still used as a command 
  107. to  maintain  compatibility  with  previous  versions.   Digital 
  108. Research  now  use the term "block" instead of "group" and  this 
  109. file   and most of the comments in the source file use the  term 
  110. "block".
  111.  
  112.                          -- EDITING ---
  113.  
  114.     A limited editing feature is included in the dump utility to 
  115. allow changing of data on disk.  The edit works as follows - any 
  116. single  logical sector of any drive may be edited by  requesting 
  117. display of the sector followed by the word EDIT.
  118.  
  119.           DD6 D:TRACK 4 SECTOR 2  EDIT
  120.  
  121.     The   requested   sector will be displayed  followed  by  an  
  122. edit prompt:
  123.  
  124.      EDIT -
  125.  
  126.     Enter  the  address of the first byte  to  be  changed.  The 
  127. program  will respond by typing back the address entered and the 
  128. present contents of that address.  To change the contents, enter 
  129. the  new byte followed by a carriage return.  The  program  will 
  130. display the next address and its contents. To stop entering data 
  131. type  a period,  the sector will then be redisplayed showing the 
  132. changes.  The  edit  feature works almost exactly like  the  'S' 
  133. command in DDT, typing only a carriage return omits entry.
  134.  
  135.     The  change is not made permanent until it is  written  back 
  136. onto the disk, you exit the edit mode by typing;
  137.  
  138.         WRITE  (write the changed sector back onto disk)
  139.         STOP   (stop the edit without writing to disk)
  140.  
  141.     All  edit  entries  must be made in hex.  Entering  non  hex 
  142. characters results in an error message.  The permissable address 
  143. range is from 00 to 7F,  larger addresses give an error message. 
  144. When entering a block of bytes the addresses are computed modulo 
  145. 128, the next address after 7F is 00.
  146.  
  147.     The  edit  feature  should be used with  caution  as  it  is 
  148. possible to edit CP/M to "death" by changing a single byte.  One 
  149. occasionally  valuable  use is to restore files which have  been 
  150. accidentally erased.  Erasing a file using the ERA command  does 
  151. not erase the data from the disk, but only writes an E5 into the 
  152. first byte of its directory entry.  To restore the file, display 
  153. the  directory  using  the  DD6 DIR  command.  Find  the  sector 
  154. containing  the entry in question and display it using the  EDIT 
  155. feature.  Change the byte preceeding the file name from E5 to 00 
  156. and  write the sector back on disk.  This will restore the  file 
  157. provided that you have not used any programs which write data to 
  158. disk since erasing the file. *** BE WARNED *** If you have run a 
  159. program that writes data to disk since erasing the file you  may 
  160. find  that the erased file's allocated blocks have been used for 
  161. another  file  and the integrity of the  erased  file  therefore 
  162. destroyed.
  163.  
  164.                         --- CP/M 2.X ---
  165.  
  166.      This latest version of DDX benefits from running under CP/M 
  167. 2.X.  As the DPB location is now accessable via BIOS calls it is 
  168. possible to extract nearly all the  information needed to  allow 
  169. dynamic  determination  of a drives characteristics.
  170.  
  171.      There  are only two hardware dependent subroutines,  one is 
  172. optional  and simply sets up the sector display header  to  suit 
  173. your requirements. As it is not possible to determine the actual 
  174. density  or  number  of sides directly from  the  DPB,  as  CP/M 
  175. doesn't care about that information,   you must write the  code.  
  176. The 1791  controller chip has this available as  status  inform
  177. ation  and  most other controller chips seem to  have  something 
  178. similar.
  179.  
  180.      The  other hardware dependent routine concerns the handling 
  181. of  Track  0.  In all IBM compatible formats Track 0  is  always 
  182. single  density  3740 format.  You must be able to  overide  all 
  183. dynamically    set  parameters  of  DD6  and  force  your   disk 
  184. controller  to  read Track 0 as single density,  26 x  128  byte 
  185. sectors.  The  Morrow Disk Jockey 2D and Godbout Disk 1 do  this 
  186. automatically  so it was simply a matter of feeding the  correct 
  187. sector  numbers to the controller.  Fortunately Track 0  is  not 
  188. involved  in file or block dumps  so  it is easy to treat it  as 
  189. an exception and  only  one subroutine needs to be altered.
  190.  
  191.     SECTOR  NUMBERING   - Single density CP/M maintains  a  skew 
  192. factor  of  6 on 8" IBM 3741 compatible disks (i.e the  standard 
  193. implementation).  This means that logical sector 1 on a track is 
  194. physical sector 1 while logical sector 2 is physical sector 7 on 
  195. that  track  etc.  This  is done to  provide  greatest  internal 
  196. efficency of operation for CP/M in accessing disks.
  197.  
  198.     CP/M  sees each 128 byte sector on a single density disk  as 
  199. one  logical  record so there is a direct  relationship  between 
  200. sector  size  and  data block size.  With  double  density  disk 
  201. recording  systems there are several possible sizes for sectors. 
  202. The IBM 2D standard allows for sector sizes of 256,  512 or 1024 
  203. bytes.  Double  density and Hard disk implementations which  use 
  204. physical  sectors sizes that are multiples of 128 bytes have  to 
  205. DEBLOCK the physical sector into  128 byte logical sectors.
  206.  
  207.      The BIOS handles all blocking and deblocking, so that legal 
  208. sector  numbers  for BIOS set sector calls are 1 to the  maximum 
  209. number  of 128 byte sectors for the track size,  the  BIOS  then 
  210. does  the deblocking and translation to physical sectors on  the 
  211. disk.  The  BIOS accesses all data bytes of a physical sector by 
  212. reading  them  into a buffer in memory and then  accessing   the 
  213. required 128 byte section of the buffer to give 128 byte logical 
  214. sectors. 
  215.  
  216.     BLOCK  SIZE  - Standard CP/M 1.4 is set up to recognise  243 
  217. blocks per disk.  The block is the smallest amount of disk space 
  218. which  can  be allocated and disk space is allows  allocated  in 
  219. blocks.  In  a  standard  single  density  system  on  IBM  3741 
  220. compatible  8" disk the block size is 1K bytes or 8  sectors  of 
  221. 128 bytes each.
  222.  
  223.      Block sizes for double density and hard disks vary but  are 
  224. always  a  multiple of 1K bytes.  The actual size is  determined 
  225. form the DPB.
  226.  
  227.     When  using  the DD6 GROUP N command a  calculation  of  the 
  228. sector  numbers  covered by any particular block is made  and  a 
  229. look  up  of the XLT (sector translation tables) in the BIOS  is 
  230. used to take into account the skew factor in use on the specific 
  231. CP/M implementation. 
  232.  
  233.     The   current  source listing is for a Godbout "Disk 1" based 
  234. CP/M 2.X system and a 24 x 80 video display.  If you have a 16  x 
  235. 64  video  display  you will need to remove some  of  the  spaces 
  236. inserted in the dump display by the PRTSEC routine. 
  237.  
  238.  
  239.      DD6 should be readily adaptable to other CP/M 2.X  systems, 
  240. including hard disk systems. As far as possible all values which 
  241. might  reasonably  be expected to exceed 256 in  any  realisable 
  242. disk  system  are manipulated as 16 bit  values.  Therefore  the 
  243. large  sectors  sizes,   sector numbers and track numbers likely  
  244. to  be found  on  a hard disks should present no  problem.   The  
  245. program  does  make  a few assumptions  about the way  CP/M  2.X 
  246. handles  the disk parameter block allocation,   it assumes  that 
  247. it  is all done dynamically  in the BIOS.   As all the  multiple 
  248. density  CP/M  2.X systems   that  I have come across manage  to 
  249. do  this (some  more elegently than others !) I think that it is 
  250. a safe assumption.
  251.  
  252.                      --- OTHER DETAILS ---
  253.  
  254.     As with other CP/M utilities a ^S 'freezes' the display  and 
  255. ^C returns to CP/M.  Hitting the 'space bar' will abort the dump 
  256. currently  in  progress  and either exit or  return  to  command 
  257. level,  depending  on  how you entered the utility.  Dump  cont
  258. ains   many  error  and  consistancy  checks.    The   resulting  
  259. messages  are generally self explanatory.
  260.  
  261.     DD6  was assembled using the CP/M MAC assembler and  uses  a 
  262. large  library  of macros called MACRO3.LIB which  is  available 
  263. from  Software  Tools.   (N.B.   MACRO3.LIB  is an  revision  of 
  264. MACRO.LIB, as used by Sam Singer's single density version,  with 
  265. extensions  to  the CALLBIOS  and DISKIO macros to  handle  CP/M 
  266. 2.2,  and several new macros added).
  267.  
  268.     This disk dumper is in a continuing state of development and 
  269. refinement.  There  is now a version for the Morrow Designs Hard 
  270. Disk  controller  with a DJ2D or a Godbout  Disk  1  controller,  
  271. called DDH.   Many new features are planned and will be added in 
  272. the towards the end of 1981.
  273.  
  274.