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 / ZSYS / ZNODE-12 / I / PERILS.2 < prev    next >
Text File  |  2000-06-30  |  9KB  |  218 lines

  1.  
  2.              The Perils of Peggy
  3.                   (Part 2)
  4.                      by
  5.                   D.FOWLER2
  6.  
  7.      When last we saw our hero, he was 
  8. diddling Faithful Nurse Stella, while her 
  9. erstwhile paramour, Dr. Jameson was dallying 
  10. with her half-sister ...
  11.      Ooops, wrong plot line.
  12.      Let's see. In our last, suspense laden 
  13. episode Peggy, the Light of my Life, had lost 
  14. her camp Alumnae Newsletter in a litter of 
  15. tumbled bits and bytes. Our dauntless disk 
  16. diver had descended into the dolorous deeps 
  17. in a desperate dip to discern the dimensions 
  18. of the disastrous debacle.
  19.      Oh oh. Watch that alliteration.
  20.      Anyway, it turned out, at the very 
  21. least, that the directory track was succotash.
  22.      Reentering the data was feasible, but 
  23. not practical. Much of it had been 
  24. painstakingly extracted from letters and 
  25. journals sent to Peggy by her Faithful 
  26. Friends. Time, for our delectable heroine, 
  27. was in short supply. The deadline was bearing 
  28. down on her like a runaway D&H locomotive. 
  29. She was in the midst of three big projects.
  30.      It was all up to me. I was going to have 
  31. to troll the brinery deeps for those files.
  32.      The first thing I had to do was to see 
  33. if they were still there. Using DU, unrolling 
  34. a metaphorical string behind me so I could 
  35. find my way back out, I tip-toed delicately 
  36. through the disk to see what lurked in the 
  37. labyrinth.
  38.      A few spot checks revealed that (so far) 
  39. the damage was limited to the directory 
  40. track.  Everything else looked sound.
  41.      But the files were scattered in bits and 
  42. pieces all over the place. That, of course, 
  43. is the way a computer works. It looks for the 
  44. first free space in which to put a file.  If 
  45. the space isn't big enough to take the whole 
  46. file, it'll stick a bit there, another piece 
  47. in the next available slot, and log in the 
  48. directory where the bits and pieces are 
  49. located.
  50.      Complicating the hunt, Peggy's single largest 
  51. file had been worked on several times.  
  52. Pieces of old versions lurked as decoys 
  53. amongst the new. To DU and me they all looked 
  54. the same. Adding to the confusion were 
  55. fragments of even older files moldering like 
  56. the mummies in Raiders of the Lost Ark, files 
  57. that had long ago been erased (marked on the 
  58. directory track as no longer needed, freeing 
  59. up the space for re-use) but still on the 
  60. disk. Well, I consoled myself, at least the 
  61. data was still there.
  62.      So, I dug out a rusty old spear from my 
  63. armory called DOCTOR.COM. (I think I got it 
  64. from a buddy way back in his TRS 80 days.  
  65. And we know how long ago THAT was!)  The Old 
  66. Physician was supposed to be able to copy, 
  67. track by track, from a damaged disk to a 
  68. fresh one. He was not supposed to unscramble 
  69. the scrambled track, but it would (I hoped) 
  70. give me a backup disk to muck around in 
  71. without risking the main disk.
  72.      Sadly, either senility had weakened his 
  73. healing skills, or else a Grue got the good 
  74. DOCTOR. He plodded along until he hit Track 
  75. 28 and then started myopically insisting he 
  76. was getting "Hard Errors". DU had already 
  77. told me track 28 was in perfect shape. So 
  78. much for DOCTOR.
  79.      Obviously it was time to update my 
  80. armament.  Trashed disks being a common 
  81. hazard, the CP/M software library on GEnie 
  82. had a half dozen utilities to deal with the 
  83. problem. I took a chance on a couple, and 
  84. added the updated version (8.9) of DU to my 
  85. shopping list.
  86.      After downloading, un-librarying and 
  87. uncrunching and the like, I studied what I 
  88. had.
  89.      DIRREP21, it turned out, was useful only 
  90. if you had made a backup copy of your 
  91. directory ahead of time. So much for THAT one.
  92.      REPAIR.COM's documentation said it could 
  93. be used to recover from a trashed directory 
  94. by allowing me to assemble the file fragments 
  95. and move them to a new disk under new names.  
  96. Just what I needed!  So, I printed out its 
  97. documentation (only 2 pages, and reasonably 
  98. lucid), cranked it up and told it to go to 
  99. work on the disk in drive B.
  100.      Over the years I have heard my TEAC disk 
  101. drives make many different sounds. They whir. 
  102. They purr softly. They grunt, chuckle and 
  103. clack. Sometimes I get a disk that ticks.  
  104. Nice, workman-like sounds.
  105.      Drive B sounded off like a coffee 
  106. grinder encountering a pound of rivets. I 
  107. dislocated my elbow reaching for the reset 
  108. button.
  109.      So much for THAT program. I frisbeed the 
  110. disk across the room. If the window had been 
  111. open it would have wound up in the pond.
  112.      I was left with only that one copy of 
  113. the lost files to work on, and my new, 
  114. improved, turbo-charged, tail-finned and 
  115. chrome trimmed version of DU. Like it or not, 
  116. I was being upgraded from the band-aid and 
  117. iodine division into open skull neuro-surgery.
  118.      DU has a raft of talents in addition to 
  119. showing what is in each sector on a disk. A 
  120. list, with minimal explanation, of DU's 
  121. commands would take up two single spaced 
  122. pages.
  123.      For one thing, you can use it to change 
  124. individual bytes. Just for fun I've used it 
  125. to change WordStar's opening menu to be more 
  126. cheery on a bleary morning. Hacker fun.
  127.      Theoretically, by plugging the right 
  128. bytes in, I could reconstruct the ruined 
  129. Directory Track that was the source of all 
  130. our problems. All I needed was an intimate 
  131. understanding of how addresses are coded, and 
  132. to determine the address of every piece of 
  133. every needed file on the disk.
  134.      Now, the former I understand (I think).  
  135. Files are stored in Groups (identified by 
  136. hexadecimal numbers) of eight Sectors. There 
  137. are ten sectors per track, and 40 tracks on a 
  138. single sided disk (which this was). And then 
  139. there's something called Logical Extents, and 
  140. ...
  141.      Well, you get the idea. And hey, we're 
  142. talking getting addresses for fragments of 
  143. files scattered in 128 (hexadecimal) groups 
  144. over only 400 (decimal) sectors. And of 
  145. course, if I messed up ...
  146. I didn't waste much time on that approach.
  147.      An alternative was to suck a sector of 
  148. file at a time up into RAM (another of DU's 
  149. talents) and then unload it on to a new disk. 
  150. A sector holds 128 bytes, about one long 
  151. sentence. Of course, I had no idea just how 
  152. big any of the files were supposed to be.  
  153. Fortunately, files are stored in a logical 
  154. numerical sequence. DU's (M)ap command gave 
  155. me a chart of the group numbers under which 
  156. the files might be stored, but the map came 
  157. from the bad directory track.
  158.      Ah hmmm. And I thought Exxon had trouble 
  159. in Prince William Sound.
  160.      Well, there seemed nothing to do but to 
  161. go for it. I could tell DU to go to a Group 
  162. (the G command), (Y)ank it Sector by Sector 
  163. into memory, then (L)og on to a new disk in 
  164. drive A and (S)ave it. Tedious and 
  165. painstaking, but feasible.
  166.      And anyway, it was the only avenue still 
  167. open to me.
  168.      I automated the pickup stage by stacking 
  169. DU's commands: D (to display one sector); Z20 
  170. (take a nap for two seconds, Turkey, so I can 
  171. read the display); then, unless I stop you, 
  172. (Y)ank it into RAM; + (step forward one 
  173. sector); and repeat (/). The whole command 
  174. looked like this:
  175.  
  176.                 D;Z20;Y;+;/.
  177.  
  178.      As you've no doubt astutely observed, DU 
  179. uses the semi-colon to separate commands. To 
  180. speed the process up I tried Z10, but things 
  181. moved by too fast, making me dizzy.
  182.      By keeping track of the sectors before 
  183. they were slurped up, I hoped to hit "C" to 
  184. stop the process when I reached the end of 
  185. that section of the file and before I ran out 
  186. of runway.
  187.      Once I got a chunk of file in RAM, I 
  188. would give it a name and unload it on to a 
  189. brand new disk. Since not all the groups 
  190. holding the file were contiguous, I would 
  191. wind up with each one of Peggy's files in 
  192. several little heaps, but, if I was lucky, at 
  193. least it would all be there - I hoped. I was 
  194. still flying partly blind, thanks to the 
  195. unreliable map off the directory track.
  196.      Well, there was nothing to do but take a 
  197. deep breath, and go for it.
  198.      Mirabile Dictu!  It worked!  I looked on 
  199. the new disk and, Captain, there be files 
  200. here!
  201.      The battle was more than half won. Next 
  202. I simply used my text editor (VDE, of course) 
  203. to check the heaps out and reassemble them in 
  204. the right order.
  205.      The patient was in surgery for about 6 
  206. hours, but after a full data transplant he 
  207. made a complete recovery.
  208.      Backing up your data is like fastening 
  209. your seat belt when you get behind the wheel - 
  210. -you should always do it. Two minutes spent 
  211. backing up those files in the first place 
  212. would have avoided the whole problem. But 
  213. then, I wouldn't have had anything to write 
  214. about for the last two months, either.
  215.  
  216.         Keep the Faith, fans.
  217.  
  218.