dsktool 0.1.6 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. data/bin/dskexplorer.rb +213 -147
  2. data/bin/dsktool.rb +7 -7
  3. data/doc/classes/AppleSoftFile.html +15 -15
  4. data/doc/classes/AppleSoftFile.src/M000011.html +18 -0
  5. data/doc/classes/AppleSoftFile.src/M000012.html +18 -0
  6. data/doc/classes/AppleSoftFile.src/M000013.html +18 -0
  7. data/doc/classes/AppleSoftFile.src/M000014.html +18 -0
  8. data/doc/classes/AppleSoftFile.src/M000020.html +18 -0
  9. data/doc/classes/AppleSoftFile.src/M000021.html +18 -0
  10. data/doc/classes/AppleSoftFile.src/M000022.html +18 -0
  11. data/doc/classes/AppleSoftFile.src/M000026.html +18 -0
  12. data/doc/classes/AppleSoftFile.src/M000027.html +18 -0
  13. data/doc/classes/AppleSoftFile.src/M000028.html +18 -0
  14. data/doc/classes/AppleSoftFile.src/M000032.html +18 -0
  15. data/doc/classes/AppleSoftFile.src/M000033.html +18 -0
  16. data/doc/classes/AppleSoftFile.src/M000034.html +18 -0
  17. data/doc/classes/AppleSoftFile.src/M000035.html +18 -0
  18. data/doc/classes/AppleSoftFile.src/M000036.html +18 -0
  19. data/doc/classes/AppleSoftFile.src/M000038.html +18 -0
  20. data/doc/classes/AppleSoftFile.src/M000039.html +18 -0
  21. data/doc/classes/AppleSoftFile.src/M000040.html +18 -0
  22. data/doc/classes/BinaryFile.html +15 -15
  23. data/doc/classes/BinaryFile.src/M000023.html +18 -0
  24. data/doc/classes/BinaryFile.src/M000024.html +18 -0
  25. data/doc/classes/BinaryFile.src/M000025.html +18 -0
  26. data/doc/classes/BinaryFile.src/M000026.html +19 -0
  27. data/doc/classes/BinaryFile.src/M000029.html +18 -0
  28. data/doc/classes/BinaryFile.src/M000030.html +18 -0
  29. data/doc/classes/BinaryFile.src/M000031.html +19 -0
  30. data/doc/classes/BinaryFile.src/M000039.html +18 -0
  31. data/doc/classes/BinaryFile.src/M000040.html +18 -0
  32. data/doc/classes/BinaryFile.src/M000041.html +19 -0
  33. data/doc/classes/BinaryFile.src/M000045.html +18 -0
  34. data/doc/classes/BinaryFile.src/M000046.html +18 -0
  35. data/doc/classes/BinaryFile.src/M000047.html +19 -0
  36. data/doc/classes/BinaryFile.src/M000052.html +18 -0
  37. data/doc/classes/BinaryFile.src/M000053.html +18 -0
  38. data/doc/classes/BinaryFile.src/M000054.html +18 -0
  39. data/doc/classes/BinaryFile.src/M000055.html +18 -0
  40. data/doc/classes/BinaryFile.src/M000056.html +19 -0
  41. data/doc/classes/BinaryFile.src/M000059.html +18 -0
  42. data/doc/classes/BinaryFile.src/M000060.html +18 -0
  43. data/doc/classes/BinaryFile.src/M000061.html +19 -0
  44. data/doc/classes/CatalogServlet.html +147 -0
  45. data/doc/classes/CatalogServlet.src/M000015.html +20 -0
  46. data/doc/classes/CatalogServlet.src/M000021.html +20 -0
  47. data/doc/classes/CatalogServlet.src/M000024.html +20 -0
  48. data/doc/classes/CatalogServlet.src/M000027.html +20 -0
  49. data/doc/classes/D65.html +10 -10
  50. data/doc/classes/D65.src/M000009.html +18 -0
  51. data/doc/classes/D65.src/M000010.html +18 -0
  52. data/doc/classes/D65.src/M000011.html +64 -0
  53. data/doc/classes/D65.src/M000018.html +18 -0
  54. data/doc/classes/D65.src/M000019.html +64 -0
  55. data/doc/classes/D65.src/M000024.html +18 -0
  56. data/doc/classes/D65.src/M000025.html +64 -0
  57. data/doc/classes/D65.src/M000030.html +18 -0
  58. data/doc/classes/D65.src/M000031.html +18 -0
  59. data/doc/classes/D65.src/M000032.html +64 -0
  60. data/doc/classes/D65.src/M000035.html +18 -0
  61. data/doc/classes/D65.src/M000036.html +64 -0
  62. data/doc/classes/DOSDisk.html +15 -15
  63. data/doc/classes/DOSDisk.src/M000014.html +20 -0
  64. data/doc/classes/DOSDisk.src/M000015.html +20 -0
  65. data/doc/classes/DOSDisk.src/M000016.html +19 -0
  66. data/doc/classes/DOSDisk.src/M000017.html +76 -0
  67. data/doc/classes/DOSDisk.src/M000023.html +20 -0
  68. data/doc/classes/DOSDisk.src/M000024.html +19 -0
  69. data/doc/classes/DOSDisk.src/M000025.html +76 -0
  70. data/doc/classes/DOSDisk.src/M000029.html +20 -0
  71. data/doc/classes/DOSDisk.src/M000030.html +19 -0
  72. data/doc/classes/DOSDisk.src/M000031.html +76 -0
  73. data/doc/classes/DOSDisk.src/M000035.html +20 -0
  74. data/doc/classes/DOSDisk.src/M000036.html +20 -0
  75. data/doc/classes/DOSDisk.src/M000037.html +20 -0
  76. data/doc/classes/DOSDisk.src/M000038.html +19 -0
  77. data/doc/classes/DOSDisk.src/M000039.html +76 -0
  78. data/doc/classes/DOSDisk.src/M000041.html +20 -0
  79. data/doc/classes/DOSDisk.src/M000042.html +19 -0
  80. data/doc/classes/DOSDisk.src/M000043.html +76 -0
  81. data/doc/classes/DOSFile.html +20 -20
  82. data/doc/classes/DOSFile.src/M000026.html +22 -0
  83. data/doc/classes/DOSFile.src/M000027.html +22 -0
  84. data/doc/classes/DOSFile.src/M000028.html +17 -0
  85. data/doc/classes/DOSFile.src/M000029.html +18 -0
  86. data/doc/classes/DOSFile.src/M000032.html +22 -0
  87. data/doc/classes/DOSFile.src/M000033.html +17 -0
  88. data/doc/classes/DOSFile.src/M000034.html +18 -0
  89. data/doc/classes/DOSFile.src/M000042.html +22 -0
  90. data/doc/classes/DOSFile.src/M000043.html +18 -0
  91. data/doc/classes/DOSFile.src/M000044.html +18 -0
  92. data/doc/classes/DOSFile.src/M000048.html +22 -0
  93. data/doc/classes/DOSFile.src/M000049.html +18 -0
  94. data/doc/classes/DOSFile.src/M000050.html +18 -0
  95. data/doc/classes/DOSFile.src/M000051.html +31 -0
  96. data/doc/classes/DOSFile.src/M000057.html +22 -0
  97. data/doc/classes/DOSFile.src/M000058.html +22 -0
  98. data/doc/classes/DOSFile.src/M000059.html +22 -0
  99. data/doc/classes/DOSFile.src/M000060.html +18 -0
  100. data/doc/classes/DOSFile.src/M000061.html +18 -0
  101. data/doc/classes/DOSFile.src/M000062.html +31 -0
  102. data/doc/classes/DOSFile.src/M000064.html +22 -0
  103. data/doc/classes/DOSFile.src/M000065.html +18 -0
  104. data/doc/classes/DOSFile.src/M000066.html +18 -0
  105. data/doc/classes/DOSFile.src/M000067.html +31 -0
  106. data/doc/classes/DSK.html +75 -42
  107. data/doc/classes/DSK.src/M000021.html +19 -0
  108. data/doc/classes/DSK.src/M000022.html +18 -0
  109. data/doc/classes/DSK.src/M000023.html +40 -0
  110. data/doc/classes/DSK.src/M000024.html +23 -0
  111. data/doc/classes/DSK.src/M000027.html +18 -0
  112. data/doc/classes/DSK.src/M000028.html +22 -0
  113. data/doc/classes/DSK.src/M000029.html +22 -0
  114. data/doc/classes/DSK.src/M000030.html +34 -0
  115. data/doc/classes/DSK.src/M000031.html +19 -0
  116. data/doc/classes/DSK.src/M000032.html +18 -0
  117. data/doc/classes/DSK.src/M000033.html +18 -0
  118. data/doc/classes/DSK.src/M000034.html +22 -0
  119. data/doc/classes/DSK.src/M000035.html +22 -0
  120. data/doc/classes/DSK.src/M000036.html +34 -0
  121. data/doc/classes/DSK.src/M000037.html +19 -0
  122. data/doc/classes/DSK.src/M000038.html +18 -0
  123. data/doc/classes/DSK.src/M000039.html +18 -0
  124. data/doc/classes/DSK.src/M000040.html +18 -0
  125. data/doc/classes/DSK.src/M000041.html +18 -0
  126. data/doc/classes/DSK.src/M000042.html +22 -0
  127. data/doc/classes/DSK.src/M000043.html +19 -0
  128. data/doc/classes/DSK.src/M000044.html +22 -0
  129. data/doc/classes/DSK.src/M000045.html +18 -0
  130. data/doc/classes/DSK.src/M000046.html +22 -0
  131. data/doc/classes/DSK.src/M000047.html +19 -0
  132. data/doc/classes/DSK.src/M000048.html +22 -0
  133. data/doc/classes/DSK.src/M000049.html +40 -0
  134. data/doc/classes/DSK.src/M000050.html +19 -0
  135. data/doc/classes/DSK.src/M000051.html +18 -0
  136. data/doc/classes/DSK.src/M000052.html +37 -0
  137. data/doc/classes/DSK.src/M000053.html +24 -0
  138. data/doc/classes/DSK.src/M000054.html +24 -0
  139. data/doc/classes/DirectoryServlet.html +147 -0
  140. data/doc/classes/DirectoryServlet.src/M000017.html +20 -0
  141. data/doc/classes/DirectoryServlet.src/M000023.html +20 -0
  142. data/doc/classes/DirectoryServlet.src/M000026.html +20 -0
  143. data/doc/classes/DirectoryServlet.src/M000030.html +20 -0
  144. data/doc/classes/IntegerBasicFile.html +15 -15
  145. data/doc/classes/IntegerBasicFile.src/M000006.html +18 -0
  146. data/doc/classes/IntegerBasicFile.src/M000007.html +18 -0
  147. data/doc/classes/IntegerBasicFile.src/M000008.html +18 -0
  148. data/doc/classes/IntegerBasicFile.src/M000012.html +18 -0
  149. data/doc/classes/IntegerBasicFile.src/M000013.html +18 -0
  150. data/doc/classes/IntegerBasicFile.src/M000014.html +18 -0
  151. data/doc/classes/IntegerBasicFile.src/M000018.html +18 -0
  152. data/doc/classes/IntegerBasicFile.src/M000019.html +18 -0
  153. data/doc/classes/IntegerBasicFile.src/M000020.html +18 -0
  154. data/doc/classes/IntegerBasicFile.src/M000021.html +18 -0
  155. data/doc/classes/IntegerBasicFile.src/M000022.html +18 -0
  156. data/doc/classes/IntegerBasicFile.src/M000023.html +18 -0
  157. data/doc/classes/IntegerBasicFile.src/M000024.html +18 -0
  158. data/doc/classes/IntegerBasicFile.src/M000025.html +18 -0
  159. data/doc/classes/IntegerBasicFile.src/M000026.html +18 -0
  160. data/doc/classes/NADOLBinaryFile.html +153 -0
  161. data/doc/classes/NADOLBinaryFile.src/M000033.html +19 -0
  162. data/doc/classes/NADOLBinaryFile.src/M000037.html +19 -0
  163. data/doc/classes/NADOLDisk.html +189 -0
  164. data/doc/classes/NADOLDisk.src/M000018.html +20 -0
  165. data/doc/classes/NADOLDisk.src/M000019.html +19 -0
  166. data/doc/classes/NADOLDisk.src/M000020.html +50 -0
  167. data/doc/classes/NADOLDisk.src/M000021.html +20 -0
  168. data/doc/classes/NADOLDisk.src/M000022.html +19 -0
  169. data/doc/classes/NADOLDisk.src/M000023.html +50 -0
  170. data/doc/classes/NADOLFile.html +216 -0
  171. data/doc/classes/NADOLFile.src/M000027.html +19 -0
  172. data/doc/classes/NADOLFile.src/M000028.html +18 -0
  173. data/doc/classes/NADOLFile.src/M000029.html +18 -0
  174. data/doc/classes/NADOLFile.src/M000030.html +31 -0
  175. data/doc/classes/NADOLFile.src/M000031.html +19 -0
  176. data/doc/classes/NADOLFile.src/M000032.html +18 -0
  177. data/doc/classes/NADOLFile.src/M000033.html +18 -0
  178. data/doc/classes/NADOLFile.src/M000034.html +31 -0
  179. data/doc/classes/NADOLTokenisedFile.html +217 -0
  180. data/doc/classes/NADOLTokenisedFile.src/M000061.html +28 -0
  181. data/doc/classes/NADOLTokenisedFile.src/M000062.html +28 -0
  182. data/doc/classes/NADOLTokenisedFile.src/M000063.html +28 -0
  183. data/doc/classes/NADOLTokenisedFile.src/M000064.html +18 -0
  184. data/doc/classes/NADOLTokenisedFile.src/M000065.html +18 -0
  185. data/doc/classes/NADOLTokenisedFile.src/M000068.html +28 -0
  186. data/doc/classes/NADOLTokenisedFile.src/M000069.html +18 -0
  187. data/doc/classes/NADOLTokenisedFile.src/M000070.html +18 -0
  188. data/doc/classes/RDoc.html +141 -0
  189. data/doc/classes/RDoc.src/M000032.html +40 -0
  190. data/doc/classes/RDoc.src/M000033.html +40 -0
  191. data/doc/classes/RDoc.src/M000038.html +40 -0
  192. data/doc/classes/RDoc.src/M000048.html +40 -0
  193. data/doc/classes/RDoc.src/M000055.html +40 -0
  194. data/doc/classes/RDoc.src/M000066.html +40 -0
  195. data/doc/classes/RDoc.src/M000068.html +40 -0
  196. data/doc/classes/RDoc.src/M000069.html +40 -0
  197. data/doc/classes/RDoc.src/M000074.html +40 -0
  198. data/doc/classes/SCAsmFile.html +226 -0
  199. data/doc/classes/SCAsmFile.src/M000025.html +18 -0
  200. data/doc/classes/SCAsmFile.src/M000026.html +18 -0
  201. data/doc/classes/SCAsmFile.src/M000027.html +18 -0
  202. data/doc/classes/SCAsmFile.src/M000028.html +36 -0
  203. data/doc/classes/SCAsmFile.src/M000035.html +18 -0
  204. data/doc/classes/SCAsmFile.src/M000036.html +18 -0
  205. data/doc/classes/SCAsmFile.src/M000037.html +18 -0
  206. data/doc/classes/SCAsmFile.src/M000038.html +36 -0
  207. data/doc/classes/SCAsmFile.src/M000041.html +18 -0
  208. data/doc/classes/SCAsmFile.src/M000042.html +18 -0
  209. data/doc/classes/SCAsmFile.src/M000043.html +18 -0
  210. data/doc/classes/SCAsmFile.src/M000044.html +36 -0
  211. data/doc/classes/SCAsmFile.src/M000048.html +18 -0
  212. data/doc/classes/SCAsmFile.src/M000049.html +18 -0
  213. data/doc/classes/SCAsmFile.src/M000050.html +18 -0
  214. data/doc/classes/SCAsmFile.src/M000051.html +18 -0
  215. data/doc/classes/SCAsmFile.src/M000052.html +18 -0
  216. data/doc/classes/SCAsmFile.src/M000053.html +36 -0
  217. data/doc/classes/SCAsmFile.src/M000055.html +18 -0
  218. data/doc/classes/SCAsmFile.src/M000056.html +18 -0
  219. data/doc/classes/SCAsmFile.src/M000057.html +18 -0
  220. data/doc/classes/SCAsmFile.src/M000058.html +39 -0
  221. data/doc/classes/ShowFileServlet.html +147 -0
  222. data/doc/classes/ShowFileServlet.src/M000026.html +21 -0
  223. data/doc/classes/ShowFileServlet.src/M000032.html +22 -0
  224. data/doc/classes/ShowFileServlet.src/M000038.html +22 -0
  225. data/doc/classes/ShowFileServlet.src/M000039.html +22 -0
  226. data/doc/classes/ShowFileServlet.src/M000040.html +22 -0
  227. data/doc/classes/ShowFileServlet.src/M000044.html +22 -0
  228. data/doc/classes/ShowSectorServlet.html +147 -0
  229. data/doc/classes/ShowSectorServlet.src/M000029.html +22 -0
  230. data/doc/classes/TestDOSDisks.html +46 -31
  231. data/doc/classes/TestDOSDisks.src/M000004.html +41 -0
  232. data/doc/classes/TestDOSDisks.src/M000005.html +27 -0
  233. data/doc/classes/TestDOSDisks.src/M000006.html +24 -0
  234. data/doc/classes/TestDOSDisks.src/M000007.html +19 -0
  235. data/doc/classes/TestDOSDisks.src/M000008.html +19 -0
  236. data/doc/classes/TestDOSDisks.src/M000009.html +25 -0
  237. data/doc/classes/TestDOSDisks.src/M000010.html +41 -0
  238. data/doc/classes/TestDOSDisks.src/M000011.html +27 -0
  239. data/doc/classes/TestDOSDisks.src/M000012.html +24 -0
  240. data/doc/classes/TestDOSDisks.src/M000013.html +19 -0
  241. data/doc/classes/TestDOSDisks.src/M000014.html +24 -0
  242. data/doc/classes/TestDOSDisks.src/M000015.html +19 -0
  243. data/doc/classes/TestDOSDisks.src/M000016.html +22 -0
  244. data/doc/classes/TestDOSDisks.src/M000017.html +19 -0
  245. data/doc/classes/TestDOSDisks.src/M000018.html +25 -0
  246. data/doc/classes/TestDOSDisks.src/M000019.html +41 -0
  247. data/doc/classes/TestDOSDisks.src/M000020.html +27 -0
  248. data/doc/classes/TestDisassembly.html +6 -6
  249. data/doc/classes/TestDisassembly.src/M000007.html +19 -0
  250. data/doc/classes/TestDisassembly.src/M000008.html +19 -0
  251. data/doc/classes/TestDisassembly.src/M000009.html +19 -0
  252. data/doc/classes/TestDisassembly.src/M000016.html +19 -0
  253. data/doc/classes/TestDisassembly.src/M000022.html +19 -0
  254. data/doc/classes/TestDisassembly.src/M000025.html +19 -0
  255. data/doc/classes/TestDisassembly.src/M000028.html +19 -0
  256. data/doc/classes/TestNADOLDisks.html +159 -0
  257. data/doc/classes/TestNADOLDisks.src/M000055.html +19 -0
  258. data/doc/classes/TestNADOLDisks.src/M000056.html +19 -0
  259. data/doc/classes/TestNADOLDisks.src/M000057.html +19 -0
  260. data/doc/classes/TestNADOLDisks.src/M000058.html +34 -0
  261. data/doc/classes/TestNADOLDisks.src/M000062.html +19 -0
  262. data/doc/classes/TestNADOLDisks.src/M000063.html +34 -0
  263. data/doc/classes/TextFile.html +15 -15
  264. data/doc/classes/TextFile.src/M000029.html +18 -0
  265. data/doc/classes/TextFile.src/M000030.html +18 -0
  266. data/doc/classes/TextFile.src/M000031.html +18 -0
  267. data/doc/classes/TextFile.src/M000032.html +20 -0
  268. data/doc/classes/TextFile.src/M000035.html +18 -0
  269. data/doc/classes/TextFile.src/M000036.html +18 -0
  270. data/doc/classes/TextFile.src/M000037.html +20 -0
  271. data/doc/classes/TextFile.src/M000045.html +18 -0
  272. data/doc/classes/TextFile.src/M000046.html +18 -0
  273. data/doc/classes/TextFile.src/M000047.html +20 -0
  274. data/doc/classes/TextFile.src/M000052.html +18 -0
  275. data/doc/classes/TextFile.src/M000053.html +18 -0
  276. data/doc/classes/TextFile.src/M000054.html +20 -0
  277. data/doc/classes/TextFile.src/M000063.html +18 -0
  278. data/doc/classes/TextFile.src/M000064.html +18 -0
  279. data/doc/classes/TextFile.src/M000065.html +18 -0
  280. data/doc/classes/TextFile.src/M000066.html +18 -0
  281. data/doc/classes/TextFile.src/M000067.html +18 -0
  282. data/doc/classes/TextFile.src/M000068.html +20 -0
  283. data/doc/classes/TextFile.src/M000071.html +18 -0
  284. data/doc/classes/TextFile.src/M000072.html +18 -0
  285. data/doc/classes/TextFile.src/M000073.html +20 -0
  286. data/doc/created.rid +1 -1
  287. data/doc/dot/f_0.dot +71 -0
  288. data/doc/dot/f_0.png +0 -0
  289. data/doc/dot/f_1.dot +14 -0
  290. data/doc/dot/f_1.png +0 -0
  291. data/doc/dot/f_10.dot +32 -0
  292. data/doc/dot/f_10.png +0 -0
  293. data/doc/dot/f_11.dot +32 -0
  294. data/doc/dot/f_11.png +0 -0
  295. data/doc/dot/f_12.dot +14 -0
  296. data/doc/dot/f_12.png +0 -0
  297. data/doc/dot/f_2.dot +23 -0
  298. data/doc/dot/f_2.png +0 -0
  299. data/doc/dot/f_3.dot +32 -0
  300. data/doc/dot/f_3.png +0 -0
  301. data/doc/dot/f_4.dot +88 -0
  302. data/doc/dot/f_4.png +0 -0
  303. data/doc/dot/f_5.dot +23 -0
  304. data/doc/dot/f_5.png +0 -0
  305. data/doc/dot/f_6.dot +32 -0
  306. data/doc/dot/f_6.png +0 -0
  307. data/doc/dot/f_7.dot +49 -0
  308. data/doc/dot/f_7.png +0 -0
  309. data/doc/dot/f_8.dot +30 -0
  310. data/doc/dot/f_8.png +0 -0
  311. data/doc/dot/f_9.dot +32 -0
  312. data/doc/dot/f_9.png +0 -0
  313. data/doc/dot/m_0_0.dot +30 -0
  314. data/doc/dot/m_0_0.png +0 -0
  315. data/doc/dot/m_6_0.dot +30 -0
  316. data/doc/dot/m_6_0.png +0 -0
  317. data/doc/dot/m_8_0.dot +30 -0
  318. data/doc/dot/m_8_0.png +0 -0
  319. data/doc/files/bin/dskexplorer_rb.html +364 -0
  320. data/doc/files/bin/dskexplorer_rb.src/M000001.html +21 -0
  321. data/doc/files/bin/dskexplorer_rb.src/M000002.html +21 -0
  322. data/doc/files/bin/dskexplorer_rb.src/M000003.html +22 -0
  323. data/doc/files/bin/dskexplorer_rb.src/M000004.html +20 -0
  324. data/doc/files/bin/dskexplorer_rb.src/M000005.html +20 -0
  325. data/doc/files/bin/dskexplorer_rb.src/M000006.html +22 -0
  326. data/doc/files/bin/dskexplorer_rb.src/M000007.html +18 -0
  327. data/doc/files/bin/dskexplorer_rb.src/M000008.html +20 -0
  328. data/doc/files/bin/dskexplorer_rb.src/M000009.html +43 -0
  329. data/doc/files/bin/dskexplorer_rb.src/M000010.html +55 -0
  330. data/doc/files/bin/dskexplorer_rb.src/M000011.html +49 -0
  331. data/doc/files/bin/dskexplorer_rb.src/M000012.html +61 -0
  332. data/doc/files/bin/dskexplorer_rb.src/M000013.html +34 -0
  333. data/doc/files/bin/dskserver_rb.html +247 -0
  334. data/doc/files/bin/dskserver_rb.src/M000001.html +22 -0
  335. data/doc/files/bin/dskserver_rb.src/M000002.html +19 -0
  336. data/doc/files/bin/dskserver_rb.src/M000003.html +62 -0
  337. data/doc/files/bin/dskserver_rb.src/M000004.html +39 -0
  338. data/doc/files/bin/dskserver_rb.src/M000005.html +26 -0
  339. data/doc/files/bin/dsktool_rb.html +4 -4
  340. data/doc/files/lib/DOSDisk_rb.html +1 -1
  341. data/doc/files/lib/DOSFile_rb.html +1 -1
  342. data/doc/files/lib/DSK_rb.html +3 -1
  343. data/doc/files/lib/NADOLDisk_rb.html +115 -0
  344. data/doc/files/lib/NADOLFile_rb.html +117 -0
  345. data/doc/files/lib/rdoc_patch_rb.html +114 -0
  346. data/doc/files/test/tc_disassembly_rb.html +1 -1
  347. data/doc/files/test/tc_dos_disks_rb.html +2 -2
  348. data/doc/files/test/tc_nadol_disks_rb.html +122 -0
  349. data/doc/files/test/ts_test_all_rb.html +3 -2
  350. data/doc/fr_class_index.html +6 -0
  351. data/doc/fr_file_index.html +3 -0
  352. data/doc/fr_method_index.html +68 -49
  353. data/lib/DOSDisk.rb +14 -14
  354. data/lib/DOSFile.rb +7 -1
  355. data/lib/DSK.rb +41 -21
  356. data/lib/NADOLDisk.rb +97 -0
  357. data/lib/NADOLFile.rb +242 -0
  358. data/test/nadol.dsk +0 -0
  359. data/test/tc_dos_disks.rb +8 -0
  360. data/test/tc_nadol_disks.rb +36 -0
  361. data/test/ts_test_all.rb +1 -0
  362. data/test/white_11a.dsk +0 -0
  363. metadata +408 -65
  364. data/bin/dskexplorer.rb~ +0 -275
  365. data/bin/dsktool.rb~ +0 -150
  366. data/lib/DSK.rb~ +0 -134
  367. data/test/tc_dos_disks.rb~ +0 -79
data/bin/dskexplorer.rb~ DELETED
@@ -1,275 +0,0 @@
1
- #!/usr/bin/ruby
2
- # dskserver.rb
3
- #
4
- # == Synopsis
5
- # A web-based DSK file explorer
6
- #
7
- # == Usage
8
- # dskserver.rb [switches]
9
- #
10
- # -h | --help display this message
11
- # -p | --port PORT_NUMBER port number to listen on (default is 6052)
12
- # -r | --root ROOT_DIR root directory to explore from (default is current directory)
13
- # -v | --version show version number
14
- #
15
- # Examples
16
- # dskexplorer.rb -r http://www.apple2.org.za/mirrors/
17
- # dskexplorer.rb -r c:\downloads\apple2\ -p 8080
18
-
19
-
20
- #make sure the relevant folder with our libraries is in the require path
21
- lib_path=File.expand_path(File.dirname(__FILE__)+"//..//lib")
22
- $:.unshift(lib_path) unless $:.include?(lib_path)
23
-
24
- require 'optparse'
25
- require 'rdoc_patch' #RDoc::usage patched to work under gem executables
26
- DSKSERVER_VERSION="0.1.0"
27
-
28
- @listening_port=6502
29
- @@root_directory="."
30
- opts=OptionParser.new
31
- opts.on("-h","--help") {RDoc::usage_from_file(__FILE__)}
32
- opts.on("-v","--version") do
33
- puts File.basename($0)+" "+DSKSERVER_VERSION
34
- exit
35
- end
36
- opts.on("-p","--port PORT_NUMBER",Integer) {|val| @listening_port=val%0xFFFF}
37
- opts.on("-r","--root ROOT_DIR",String) {|val| @@root_directory=val}
38
-
39
- filename=opts.parse(ARGV)[0] rescue RDoc::usage_from_file(__FILE__,'Usage')
40
-
41
- require 'webrick'
42
- require 'DSK'
43
- include WEBrick
44
-
45
- @@uri_cache={}
46
- @@dsk_cache={}
47
- def get_uri_from_cache(uri)
48
- if @@uri_cache[uri].nil? then
49
- @@uri_cache[uri]=open(uri).read
50
- end
51
- @@uri_cache[uri]
52
- end
53
-
54
- def get_dsk_from_cache(uri)
55
- if @@dsk_cache[uri].nil? then
56
- @@dsk_cache[uri]=DSK.read(uri)
57
- end
58
- @@dsk_cache[uri]
59
- end
60
-
61
- def common_header
62
- "
63
- <html>
64
- <body>
65
- <B>DSK Explorer</b><br>
66
- "
67
- end
68
- def common_footer
69
- "
70
- <p><i>this is alpha software - please send feedback using the <a href=http://rubyforge.org/tracker/?group_id=3844> dsktool.rb forum</a><p>
71
- "
72
- end
73
-
74
- def root_dir_is_website?
75
- require 'hpricot'
76
- require 'open-uri'
77
- @@root_directory=~/^http[s]?:/?true : false
78
- end
79
- def make_absolute_path(relative_path)
80
- if root_dir_is_website? then
81
- @@root_directory+uri_encode(relative_path)
82
- else
83
- @@root_directory+relative_path
84
- end
85
- end
86
-
87
- def uri_encode(s)
88
- #standard URI.escape appears to miss some important characters
89
- require 'uri'
90
- URI.escape(s).sub("[","%5b").sub("]","%5d")
91
- end
92
- def get_directories_and_files(relative_path)
93
- directories=[]
94
- dsk_files=[]
95
- absolute_path=make_absolute_path(relative_path)
96
- if root_dir_is_website? then
97
- html=get_uri_from_cache(absolute_path)
98
- doc=Hpricot(html)
99
- doc.search("a[@href]").each do |a|
100
- href=URI.unescape(a.attributes["href"])
101
- if (href=~/\w\/$/)
102
- if !(href=~/^\//) then #directories end with a /, but skip absolute paths
103
- directories<<(href)
104
- end
105
- elsif DSK.is_dsk_file?(href) then
106
- dsk_files<<(href)
107
- end
108
- end
109
- else
110
- if File.exist?(absolute_path) && (File.stat(absolute_path).directory?) then
111
- dir=Dir.new(absolute_path)
112
- dir.each do |f|
113
- directories<<f if (f[0].chr!=".") && (File.stat(absolute_path+"/"+f).directory?)
114
- dsk_files<<f if (DSK.is_dsk_file?(f))
115
- end
116
- end
117
- end
118
- [directories,dsk_files]
119
- end
120
-
121
- def make_navigation_path(relative_path,filename=nil)
122
- path_parts=relative_path.split("/")
123
- #make the cookie-crumb-trail
124
- partial_path=""
125
- s="<a href=/dir/>#{@@root_directory}</a>"
126
- path_parts.each do |p|
127
- if p.length>0 then
128
- partial_path+="/#{p}"
129
- if DSK.is_dsk_file?(partial_path) then
130
- s+="/<a href=/catalog#{uri_encode(partial_path)}>#{p}</a>"
131
- else
132
- s+="/<a href=/dir#{uri_encode(partial_path)}>#{p}</a>"
133
- end
134
- end
135
- end
136
-
137
- if !filename.nil? then
138
- s+="/<a href=/showfile/#{uri_encode(relative_path)+'?filename='+uri_encode(filename)}>#{filename}</a>"
139
- end
140
-
141
-
142
- #show the contents of the current directory
143
- directories,dsk_files=get_directories_and_files(relative_path)
144
-
145
- #list out the directories
146
-
147
- s+="<ul>"
148
- #s+="<li>[dir] <a href=/#{uri_encode('/dir/'+File.dirname(relative_path))}>..</a>\n"
149
- directories.sort.each do |d|
150
- s+="<li>[dir] <a href=/dir/#{uri_encode(relative_path)}/#{uri_encode(d)}>#{d}</a>\n"
151
- end
152
-
153
- #list out the DSK files
154
- dsk_files.sort.each do |f|
155
- s+="<li>[dsk] <a href=/catalog/#{uri_encode(relative_path)}/#{uri_encode(f)}>#{f}</a> [ <a href=#{uri_encode(@@root_directory+relative_path+'/'+f)}>download</a> ]\n"
156
- end
157
- s+="</ul>"
158
-
159
- s
160
- end
161
- def make_catalog(relative_path)
162
- s="<p>"
163
- begin
164
- absolute_path=make_absolute_path(relative_path)
165
- dsk=get_dsk_from_cache(absolute_path)
166
- if (dsk.is_dos33?) then
167
- s+="<table>\n<th>TYPE</th><th>SECTORS</th><th>NAME</th></tr>\n"
168
- dsk.files.each_value do |f|
169
- display_url="/showfile/#{uri_encode(relative_path)+'?filename='+uri_encode(f.filename)}"
170
- s+="<td>#{f.file_type}</td><td>#{sprintf('%03d',f.sector_count)}</td><td>#{f.filename}</td>"
171
- s+="<td><a href=#{display_url}&mode=hex>hex dump</a></td>"
172
- if f.file_type=="T" then
173
- s+="<td><a href=#{display_url}&mode=text>text</a></td>"
174
- else
175
- s+="<td><a href=#{display_url}&mode=list>listing</a></td>"
176
- end
177
-
178
- s+="</tr>\n"
179
- end
180
- s+="</table>"
181
- else
182
- s+="<i>not DOS 3.3 format</i>"
183
- end
184
- rescue Exception => exception
185
- s+="<i>ERROR:#{exception}</i>"
186
- end
187
- s
188
- end
189
- def show_file(relative_path,filename,display_mode)
190
- absolute_path=make_absolute_path(relative_path)
191
- dsk=get_dsk_from_cache(absolute_path)
192
- file=dsk.files[filename]
193
- if file.nil? then
194
- s="<i>#{filename} not found</i>"
195
- else
196
- s="<hl><pre>"
197
- if display_mode=="hex" then
198
- s+=file.hex_dump
199
- elsif display_mode=="list" && file.file_type=='B'
200
- then s+=file.disassembly
201
- else
202
- s+= file.to_s
203
- end
204
- s+="\n</pre><hl>"
205
- end
206
- s
207
- end
208
-
209
- class DirectoryServlet < HTTPServlet::AbstractServlet
210
- def do_GET(req,res)
211
- relative_path=URI.unescape(req.path).sub(/^\/dir/,"")
212
- res['Content-Type']="text/html"
213
- res.body=common_header+make_navigation_path(relative_path)+common_footer
214
- end
215
- end
216
-
217
- class CatalogServlet < HTTPServlet::AbstractServlet
218
- def do_GET(req,res)
219
- relative_path=URI.unescape(req.path).sub(/^\/catalog/,"")
220
- res['Content-Type']="text/html"
221
- res.body=common_header+make_navigation_path(relative_path)+make_catalog(relative_path)+common_footer
222
- end
223
- end
224
-
225
- class ShowFileServlet < HTTPServlet::AbstractServlet
226
- def do_GET(req,res)
227
- relative_path=URI.unescape(req.path).sub(/^\/showfile/,"")
228
- filename=URI.unescape(req.query['filename'])
229
- display_mode=req.query['mode']
230
- res['Content-Type']="text/html"
231
- res.body=common_header+make_navigation_path(relative_path,filename)+show_file(relative_path,filename,display_mode)+common_footer
232
- end
233
- end
234
-
235
-
236
-
237
- s=HTTPServer.new(
238
- :Port=>@listening_port
239
- )
240
- trap("INT") {s.shutdown}
241
-
242
- s.mount("/dir",DirectoryServlet)
243
- s.mount("/catalog",CatalogServlet)
244
- s.mount("/showfile",ShowFileServlet)
245
-
246
- #default page - for now, just redirect to the default dir page
247
- s.mount("/",DirectoryServlet)
248
-
249
- puts "point your browser at http://localhost:#{@listening_port}/"
250
- s.start
251
-
252
- # == Author
253
- # Jonno Downes (jonno@jamtronix.com)
254
- #
255
- # == Copyright
256
- # Copyright (c) 2007 Jonno Downes (jonno@jamtronix.com)
257
- #
258
- #Permission is hereby granted, free of charge, to any person obtaining
259
- #a copy of this software and associated documentation files (the
260
- #"Software"), to deal in the Software without restriction, including
261
- #without limitation the rights to use, copy, modify, merge, publish,
262
- #distribute, sublicense, and/or sell copies of the Software, and to
263
- #permit persons to whom the Software is furnished to do so, subject to
264
- #the following conditions:
265
- #
266
- # The above copyright notice and this permission notice shall be
267
- # included in all copies or substantial portions of the Software.
268
- #
269
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
270
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
271
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
272
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
273
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
274
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
275
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/bin/dsktool.rb~ DELETED
@@ -1,150 +0,0 @@
1
- #!/usr/bin/ruby
2
- # dsktool.rb
3
- #
4
- # == Synopsis
5
- #
6
- # Manipulate DSK format files (as used by Apple 2 emulators)
7
- #
8
- # == Usage
9
- #
10
- # dsktool.rb [switches] <filename.dsk>
11
- # -c | --catalog display catalog
12
- # -e | --extract FILENAME extract file by name (either to stdout,
13
- # or file specified by --output)
14
- # -h | --help display this message
15
- # -d | --dump FILENAME hex dump
16
- # -l | --list FILENAME monitor style listing (disassembles 65C02 opcodes)
17
- # -o | --output FILENAME specify name to save extracted file as
18
- # -r | --raw don't convert basic files to ASCII
19
- # -x | --explode extract all files
20
- # -v | --version show version number
21
- #
22
- # Currently only works with DOS 3.3 format DSK images
23
- # Will uncompress gzipped files (with extension .gz)
24
- # input files can be URLs
25
- #
26
- # examples:
27
- # dsktool.rb -c DOS3MASTR.dsk.gz
28
- # dsktool.rb -l FID DOS3MASTR.dsk
29
- # dsktool.rb --list fid -o fid.lst DOS3MASTR.dsk
30
- # dsktool.rb --extract "COLOR DEMOSOFT" DOS3MASTR.dsk
31
- # dsktool.rb -e HELLO -o HELLO.bas DOS3MASTR.dsk
32
- # dsktool.rb -x DOS3MASTR.dsk.gz
33
- # dsktool.rb -x DOS3MASTR.dsk.gz -o /tmp/DOS3MASTR/
34
- # dsktool.rb -c http://jamtronix.com/dsks/apshai.dsk.gz
35
-
36
- DSKTOOL_VERSION="0.1.5"
37
-
38
- #make sure the relevant folder with our libraries is in the require path
39
- lib_path=File.expand_path(File.dirname(__FILE__)+"//..//lib")
40
- $:.unshift(lib_path) unless $:.include?(lib_path)
41
-
42
- require 'optparse'
43
- require 'rdoc_patch' #RDoc::usage patched to work under gem executables
44
-
45
- catalog=false
46
- explode=false
47
- output_filename=nil
48
- extract_filename=nil
49
- extract_mode=:default
50
- explode_directory=nil
51
- opts=OptionParser.new
52
- opts.on("-h","--help") {RDoc::usage_from_file(__FILE__)}
53
- opts.on("-v","--version") do
54
- puts File.basename($0)+" "+DSKTOOL_VERSION
55
- exit
56
- end
57
- opts.on("-r","--raw") {extract_mode=:raw}
58
- opts.on("-c","--catalog") {catalog=true}
59
- opts.on("-x","--explode") {explode=true}
60
- opts.on("-l","--list FILENAME",String) do |val|
61
- extract_filename=val.upcase
62
- extract_mode=:list
63
- end
64
- opts.on("-d","--dump FILENAME",String) do |val|
65
- extract_filename=val.upcase
66
- extract_mode=:hex
67
- end
68
- opts.on("-e","--extract FILENAME",String) {|val| extract_filename=val.upcase}
69
- opts.on("-o","--output FILENAME",String) {|val| output_filename=val}
70
- filename=opts.parse(ARGV)[0] rescue RDoc::usage_from_file(__FILE__,'Usage')
71
- RDoc::usage_from_file(__FILE__,'Usage') if (filename.nil?)
72
-
73
-
74
- require 'DSK'
75
- dsk=DSK.read(filename)
76
- output_file= case
77
- when (output_filename.nil?) || (explode) then STDOUT
78
- else File.open(output_filename,"wb")
79
- end
80
-
81
- if(catalog) then
82
- if (dsk.is_dos33?) then
83
- dsk.dump_catalog
84
- else
85
- puts "#{filename} is not in DOS 3.3 format"
86
- end
87
- end
88
-
89
- if(explode) then
90
- output_dir=output_filename.nil??File.basename(filename,".*"):output_filename
91
- if !(File.exists?(output_dir)) then
92
- Dir.mkdir(output_dir)
93
- end
94
-
95
- dsk.files.each_value do |f|
96
- if (raw_mode) then
97
- output_filename=output_dir+"/"+f.filename+".raw"
98
- File.open(output_filename,"wb") <<f.contents
99
- else
100
- output_filename=output_dir+"/"+f.filename+f.file_extension
101
- File.open(output_filename,"wb") <<f
102
- end
103
- end
104
- end
105
-
106
-
107
- if (!extract_filename.nil?) then
108
- file=dsk.files[extract_filename]
109
- if file.nil? then
110
- puts "'#{extract_filename}' not found in #{filename}"
111
- else
112
- output_file<< case extract_mode
113
- when :raw then file.contents
114
- when :hex then file.hex_dump
115
- when :list then
116
- if file.instance_of?(BinaryFile)
117
- file.disassembly
118
- else
119
- puts "'#{extract_filename}' is not a binary file"
120
- exit
121
- end
122
- else file.to_s
123
- end
124
- end
125
- end
126
-
127
- # == Author
128
- # Jonno Downes (jonno@jamtronix.com)
129
- #
130
- # == Copyright
131
- # Copyright (c) 2007 Jonno Downes (jonno@jamtronix.com)
132
- #
133
- #Permission is hereby granted, free of charge, to any person obtaining
134
- #a copy of this software and associated documentation files (the
135
- #"Software"), to deal in the Software without restriction, including
136
- #without limitation the rights to use, copy, modify, merge, publish,
137
- #distribute, sublicense, and/or sell copies of the Software, and to
138
- #permit persons to whom the Software is furnished to do so, subject to
139
- #the following conditions:
140
- #
141
- # The above copyright notice and this permission notice shall be
142
- # included in all copies or substantial portions of the Software.
143
- #
144
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
145
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
146
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
147
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
148
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
149
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
150
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/lib/DSK.rb~ DELETED
@@ -1,134 +0,0 @@
1
- $:.unshift(File.dirname(__FILE__)) unless
2
- $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
- require 'open-uri'
4
-
5
- #
6
- # For manipulating DSK files, as created by ADT (http://adt.berlios.de) and ADTPRo (http://adtpro.sourceforge.net)
7
- # used by many Apple 2 emulators.
8
- #
9
- class DSK
10
-
11
- #does this filename have a suitable extension?
12
- def DSK.is_dsk_file?(filename)
13
- !(filename.upcase=~/\.DSK$|\.DSK\.GZ$|\.PO$|\.PO\.GZ$/).nil?
14
- end
15
- DSK_FILE_LENGTH=143360
16
- attr_accessor (:file_bytes)
17
- # does this DSK have a standard Apple DOS 3.3 VTOC?
18
- def is_dos33?
19
- # VTOC is at offset 0x11000
20
- # bytes 1/2/3 are a track number, sector number and DOS version number
21
- # see if these are reasonable values
22
-
23
- (@file_bytes[0x11001]<=34) && (@file_bytes[0x11002]<=15) && (@file_bytes[0x11003]==3)
24
- end
25
-
26
-
27
- #create a new DSK structure (in memory, not on disk)
28
- def initialize(file_bytes="\0"*DSK_FILE_LENGTH)
29
- if (file_bytes.length!=DSK_FILE_LENGTH) then
30
- raise "DSK files must be #{DSK_FILE_LENGTH} bytes long (was #{file_bytes.length} bytes)"
31
- end
32
- @file_bytes=file_bytes
33
- @files={}
34
- end
35
-
36
- #read in an existing DSK file (must exist)
37
- def DSK.read(filename)
38
- #is the file extension .gz?
39
- if !(filename=~/\.gz$/).nil? then
40
- require 'zlib'
41
- file_bytes=Zlib::GzipReader.new(open(filename,"rb")).read
42
- else
43
- file_bytes=open(filename,"rb").read
44
- end
45
- if (file_bytes.length!=DSK_FILE_LENGTH) then
46
- abort("#{filename} is not a valid DSK format file")
47
- end
48
-
49
- dsk=DSK.new(file_bytes)
50
- if (dsk.is_dos33?)
51
- require 'DOSDisk'
52
- dsk=DOSDisk.new(file_bytes)
53
- end
54
- dsk
55
- end
56
-
57
- def get_sector(track,sector)
58
- start_byte=track*16*256+sector*256
59
- @file_bytes[start_byte..start_byte+255]
60
- end
61
-
62
- def files
63
- @files
64
- end
65
-
66
- #print to stdout a formatted hex dump of a single 256 byte sector
67
- def dump_sector(track,sector)
68
-
69
- start_byte=track*16*256+sector*256
70
- s=@file_bytes[start_byte..start_byte+255]
71
-
72
- print_hline
73
- printf("TRACK: $%02X SECTOR $%02X\ OFFSET $%04X\n",track,sector,start_byte)
74
- printf "\t"
75
-
76
- (0..15).each {|x| printf("%02X ",x) }
77
- puts
78
- print_hline
79
- (0..15).each {|line_number|
80
- lhs=""
81
- rhs=""
82
- start_byte=line_number*16
83
- line=s[start_byte..start_byte+15]
84
- line.each_byte {|byte|
85
- lhs+= sprintf("%02X ", byte)
86
- rhs+= (byte%128).chr.sub(/[\x00-\x1f]/,'.')
87
- }
88
- printf("%02X\t%s %s\n",start_byte,lhs,rhs)
89
- }
90
-
91
- end
92
-
93
- #print to stdout a formatted hex dump of all sectors on all tracks
94
- def dump_disk
95
-
96
- (0..34).each {|track|
97
- (0..15).each {|sector|
98
- dump_sector(track,sector)
99
- }
100
- }
101
- end
102
-
103
- private
104
-
105
- def print_hline
106
- puts "-"*79
107
- end
108
-
109
-
110
- end
111
- # == Author
112
- # Jonno Downes (jonno@jamtronix.com)
113
- #
114
- # == Copyright
115
- # Copyright (c) 2007 Jonno Downes (jonno@jamtronix.com)
116
- #
117
- #Permission is hereby granted, free of charge, to any person obtaining
118
- #a copy of this software and associated documentation files (the
119
- #"Software"), to deal in the Software without restriction, including
120
- #without limitation the rights to use, copy, modify, merge, publish,
121
- #distribute, sublicense, and/or sell copies of the Software, and to
122
- #permit persons to whom the Software is furnished to do so, subject to
123
- #the following conditions:
124
-
125
- # The above copyright notice and this permission notice shall be
126
- # included in all copies or substantial portions of the Software.
127
-
128
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
129
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
130
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
131
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
132
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
133
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
134
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.