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/lib/DOSDisk.rb CHANGED
@@ -99,10 +99,10 @@ class DOSDisk < DSK
99
99
 
100
100
  def read_vtoc
101
101
  vtoc_sector=get_sector(17,0)
102
-
103
102
  catalog_sector=get_sector(vtoc_sector[01],vtoc_sector[02])
104
103
  done=false
105
- while !done
104
+ while !done
105
+ break if catalog_sector.nil?
106
106
  (0..6).each {|file_number|
107
107
  file_descriptive_entry_start=11+file_number*35
108
108
  file_descriptive_entry=catalog_sector[file_descriptive_entry_start..file_descriptive_entry_start+35]
@@ -133,19 +133,19 @@ class DOSDisk < DSK
133
133
  end
134
134
  }
135
135
  end
136
-
137
- @files[filename]= case file_type_code
138
- when 0x00 then TextFile.new(filename,locked,sector_count,contents)
139
- when 0x01 then SCAsmFile.can_be_scasm_file(contents)? SCAsmFile.new(filename,locked,sector_count,contents): IntegerBasicFile.new(filename,locked,sector_count,contents)
140
- when 0x02 then AppleSoftFile.new(filename,locked,sector_count,contents)
141
- when 0x04 then BinaryFile.new(filename,locked,sector_count,contents)
142
- # when 0x08 then "S" #S type file
143
- # when 0x10 then "R" #RELOCATABLE object module file
144
- # when 0x20 then "a" #??
145
- # when 0x40 then "b" #??
146
- else DOSFile.new(filename,locked,sector_count,contents,sprintf("$%02X",file_type_code))
136
+ if contents.length>0 then
137
+ @files[filename]= case file_type_code
138
+ when 0x00 then TextFile.new(filename,locked,sector_count,contents)
139
+ when 0x01 then SCAsmFile.can_be_scasm_file?(contents)? SCAsmFile.new(filename,locked,sector_count,contents): IntegerBasicFile.new(filename,locked,sector_count,contents)
140
+ when 0x02 then AppleSoftFile.new(filename,locked,sector_count,contents)
141
+ when 0x04 then BinaryFile.new(filename,locked,sector_count,contents)
142
+ # when 0x08 then "S" #S type file
143
+ # when 0x10 then "R" #RELOCATABLE object module file
144
+ # when 0x20 then "a" #??
145
+ # when 0x40 then "b" #??
146
+ else DOSFile.new(filename,locked,sector_count,contents,sprintf("$%02X",file_type_code))
147
+ end
147
148
  end
148
-
149
149
  end
150
150
  }
151
151
  next_track=catalog_sector[1]
data/lib/DOSFile.rb CHANGED
@@ -327,6 +327,8 @@ private
327
327
  s=""
328
328
  while (index<length)
329
329
  index+=2 #skip over the "next address" field
330
+ break if buffer[index].nil?
331
+ break if buffer[index+1].nil?
330
332
  line_no=buffer[index]+buffer[index+1]*256
331
333
  index+=2 #skip over the "line number" field
332
334
  s+=sprintf("%u",line_no)
@@ -334,6 +336,7 @@ private
334
336
  last_char_space=false
335
337
  while (!done_line)
336
338
  b=buffer[index]
339
+ break if b.nil?
337
340
  if b>=0x80 then
338
341
  if !last_char_space then
339
342
  s+=" "
@@ -388,7 +391,10 @@ class SCAsmFile < DOSFile
388
391
  ".asm"
389
392
  end
390
393
 
391
- def SCAsmFile.can_be_scasm_file(buffer)
394
+ def SCAsmFile.can_be_scasm_file?(buffer)
395
+ if buffer.length<2 then
396
+ return false
397
+ end
392
398
  length=buffer[0]+buffer[1]*256
393
399
  index=2
394
400
  s=""
data/lib/DSK.rb CHANGED
@@ -22,6 +22,11 @@ class DSK
22
22
 
23
23
  (@file_bytes[0x11001]<=34) && (@file_bytes[0x11002]<=15) && (@file_bytes[0x11003]==3)
24
24
  end
25
+
26
+ def is_nadol?
27
+ # track $00, sector $02 , bytes $11 - "NADOL"
28
+ (@file_bytes[0x00211..0x00215]=="NADOL")
29
+ end
25
30
 
26
31
 
27
32
  #create a new DSK structure (in memory, not on disk)
@@ -51,6 +56,12 @@ class DSK
51
56
  require 'DOSDisk'
52
57
  dsk=DOSDisk.new(file_bytes)
53
58
  end
59
+
60
+ if (dsk.is_nadol?)
61
+ require 'NADOLDisk'
62
+ dsk=NADOLDisk.new(file_bytes)
63
+ end
64
+
54
65
  dsk
55
66
  end
56
67
 
@@ -63,47 +74,56 @@ class DSK
63
74
  @files
64
75
  end
65
76
 
66
- #print to stdout a formatted hex dump of a single 256 byte sector
77
+ #return a formatted hex dump of a single 256 byte sector
67
78
  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
+ start_byte=track.to_i*16*256+sector.to_i*256
80
+ s=hline
81
+ s<<sprintf("TRACK: $%02X SECTOR $%02X\ OFFSET $%04X\n",track,sector,start_byte)
82
+ s<< "\t"
83
+ sector_data=get_sector(track,sector)
84
+ (0..15).each {|x| s<<sprintf("%02X ",x) }
85
+ s<<"\n"
86
+ s<<hline
79
87
  (0..15).each {|line_number|
80
88
  lhs=""
81
89
  rhs=""
82
90
  start_byte=line_number*16
83
- line=s[start_byte..start_byte+15]
91
+ line=sector_data[start_byte..start_byte+15]
84
92
  line.each_byte {|byte|
85
- lhs+= sprintf("%02X ", byte)
86
- rhs+= (byte%128).chr.sub(/[\x00-\x1f]/,'.')
93
+ lhs<< sprintf("%02X ", byte)
94
+ rhs<< (byte%128).chr.sub(/[\x00-\x1f]/,'.')
87
95
  }
88
- printf("%02X\t%s %s\n",start_byte,lhs,rhs)
96
+ s<<sprintf("%02X\t%s %s\n",start_byte,lhs,rhs)
89
97
  }
98
+ s
99
+ end
90
100
 
101
+ #return a formatted hex dump of a single 256 byte sector
102
+ def disassemble_sector(track,sector)
103
+ require 'D65'
104
+ sector_data=get_sector(track,sector)
105
+ if (track==0) && (sector==0) then
106
+ return D65.disassemble(sector_data[1..255],0x801)
107
+ else
108
+ return D65.disassemble(sector_data)
109
+ end
91
110
  end
92
111
 
93
- #print to stdout a formatted hex dump of all sectors on all tracks
112
+ #return a formatted hex dump of all sectors on all tracks
94
113
  def dump_disk
95
-
114
+ s=""
96
115
  (0..34).each {|track|
97
116
  (0..15).each {|sector|
98
- dump_sector(track,sector)
117
+ s<<dump_sector(track,sector)
99
118
  }
100
119
  }
120
+ s
101
121
  end
102
122
 
103
123
  private
104
124
 
105
- def print_hline
106
- puts "-"*79
125
+ def hline
126
+ "-"*79+"\n"
107
127
  end
108
128
 
109
129
 
data/lib/NADOLDisk.rb ADDED
@@ -0,0 +1,97 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+ # Disk image in NADOL format
5
+ #
6
+ #CATALOG will be at track $00, sector $03 to track $00, sector $09
7
+ #each entry consists of $10 bytes, which are:
8
+ # 00-0B - filename - if file is deleted, first byte will be FF
9
+ # 0C-0D - filesize (low byte first)
10
+ # 0E - track of track sector list sector
11
+ # 0F - sector of track sector list sector
12
+
13
+ #TRACK/SECTOR LIST FORMAT
14
+ # pairs of track/sectors in order. up to 128 entries [assumes that no file can be > 128 sectors]
15
+
16
+ require 'NADOLFile'
17
+
18
+ class NADOLDisk < DSK
19
+
20
+ def dump_catalog
21
+ files.each_value { |file|
22
+ puts "#{sprintf('% 6d',file.contents.length)} #{file.filename}"
23
+ }
24
+ end
25
+
26
+ def initialize(file_bytes)
27
+ super(file_bytes)
28
+ self.read_catalog
29
+ end
30
+
31
+ #reads the catalog, and populate the "files" array with files
32
+ #CATALOG will be at track $00, sector $03 to track $00, sector $09
33
+ #each entry consists of $10 bytes, which are:
34
+ # 00-0B - filename - if file is deleted, first byte will be FF
35
+ # 0C-0D - filesize (low byte first)
36
+ # 0E - track of track sector list sector
37
+ # 0F - sector of track sector list sector
38
+ def read_catalog
39
+ 0x300.step(0x9FF,0x10) do |file_descriptive_entry_start|
40
+ file_descriptive_entry=@file_bytes[file_descriptive_entry_start..file_descriptive_entry_start+0x0F]
41
+ break if (file_descriptive_entry[0]==0xFF) # skip deleted files
42
+ filename=""
43
+ file_descriptive_entry[0..11].to_s.each_byte{|b| filename+=(b.%128).chr} #strip off high bit
44
+ filename.sub!(/ *$/,"") #strip off trailing spaces
45
+ full_sectors=file_descriptive_entry[0x0D]
46
+ bytes_in_last_sector=file_descriptive_entry[0x0C]
47
+ file_size=full_sectors*256+bytes_in_last_sector
48
+ if (file_size>0) then
49
+ contents=""
50
+ ts_list_track_no=file_descriptive_entry[0x0E]
51
+ ts_list_sector_no=file_descriptive_entry[0x0F]
52
+ ts_list=get_sector(ts_list_track_no,ts_list_sector_no)
53
+ entry_number=0
54
+ while entry_number<full_sectors do
55
+ data_track_no=ts_list[entry_number*2]
56
+ data_sector_no=ts_list[entry_number*2+1]
57
+ contents+=get_sector(data_track_no,data_sector_no)
58
+ entry_number+=1
59
+ end
60
+ if (bytes_in_last_sector>0) then
61
+ data_track_no=ts_list[entry_number*2]
62
+ data_sector_no=ts_list[entry_number*2+1]
63
+ contents+=get_sector(data_track_no,data_sector_no)[0..bytes_in_last_sector-1]
64
+ end
65
+ if (NADOLTokenisedFile.can_be_nadol_tokenised_file?(contents)) then
66
+ @files[filename]= NADOLTokenisedFile.new(filename,contents)
67
+ else
68
+ @files[filename]= NADOLFile.new(filename,contents)
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
74
+ # == Author
75
+ # Jonno Downes (jonno@jamtronix.com)
76
+ #
77
+ # == Copyright
78
+ # Copyright (c) 2007 Jonno Downes (jonno@jamtronix.com)
79
+ #
80
+ #Permission is hereby granted, free of charge, to any person obtaining
81
+ #a copy of this software and associated documentation files (the
82
+ #"Software"), to deal in the Software without restriction, including
83
+ #without limitation the rights to use, copy, modify, merge, publish,
84
+ #distribute, sublicense, and/or sell copies of the Software, and to
85
+ #permit persons to whom the Software is furnished to do so, subject to
86
+ #the following conditions:
87
+
88
+ # The above copyright notice and this permission notice shall be
89
+ # included in all copies or substantial portions of the Software.
90
+
91
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
92
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
93
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
94
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
95
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
96
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
97
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/lib/NADOLFile.rb ADDED
@@ -0,0 +1,242 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+ require 'D65'
5
+
6
+ #NADOL (Nibbles Away Disk Optimized Language) file
7
+ class NADOLFile
8
+ attr_accessor(:filename,:contents)
9
+ def initialize(filename,contents)
10
+ @filename=filename
11
+ @contents=contents
12
+ end
13
+
14
+ def to_s
15
+ @contents
16
+ end
17
+
18
+ def file_extension
19
+ ".bin"
20
+ end
21
+ def hex_dump
22
+ #assumes file is a multiple of 16 bytes, which it always should be
23
+ s=""
24
+ (0..(@contents.length/16)-1).each {|line_number|
25
+ lhs=""
26
+ rhs=""
27
+ start_byte=line_number*16
28
+ line=@contents[start_byte..start_byte+15]
29
+ line.each_byte {|byte|
30
+ lhs+= sprintf("%02X ", byte)
31
+ rhs+= (byte%128).chr.sub(/[\x00-\x1f]/,'.')
32
+ }
33
+ s+=sprintf("%02X\t%s %s\n",start_byte,lhs,rhs)
34
+ }
35
+ s
36
+ end
37
+ end
38
+
39
+ #a file on a NADOL dsk that does not appear to be in NADOL tokenised format
40
+ class NADOLBinaryFile<NADOLFile
41
+ def disassembly(start_address=0x8000)
42
+ require 'D65'
43
+ D65.disassemble(@contents,start_address)
44
+ end
45
+ end
46
+
47
+
48
+ #file packed by the NADOL EDITOR application.
49
+ #format is a series of unnumbered lines, where each line has the following format:
50
+ # <Length> (8-bit: including length byte, line no, contents, zero>
51
+ # <Tokens and/orCharacters>
52
+ # <Zero byte> ($00, to mark the end of the S-C Asm source line)
53
+ # each byte in the line is interpreted as follows:
54
+ # $00 - end of line marker
55
+ # $01 - $64 - NADOL tokens
56
+ # $65-$70 - ??? unknown
57
+ # $71 - $7f - 1 to F spaces
58
+ # $80-$FF - ASCII character with high bit set
59
+ class NADOLTokenisedFile < NADOLFile
60
+ NADOL_EDITOR_TOKENS = [
61
+ "?", #00 (so we can use token as an index in to this array)
62
+ "READ(", #01
63
+ "FREE(", #02
64
+ "NOT(", #03
65
+ "LENGTH(", #04
66
+ "PDL(", #05
67
+ "SIZEOF(", #06
68
+ "LSCRN(", #07
69
+ "HSCRN(", #08
70
+ "CHECK(", #09
71
+ "MAKE(", #0a
72
+ "SCREEN(", #0b
73
+ "HEXPACK ",#0c
74
+ "PROCEDURE ",#0d
75
+ "ENDPROC", #0e
76
+ "FUNCTION ",#0f
77
+ "ENDFUNC", #10
78
+ "IF ", #11
79
+ "ELSE", #12
80
+ "ENDIF", #13
81
+ "WHILE ", #14
82
+ "ENDWHILE",#15
83
+ "DEFINE ", #16
84
+ "RESULT=", #17
85
+ "PRINT", #18
86
+ "PRINTHEX",#19
87
+ "PRINTBYTE",#1a
88
+ "LABEL ", #1b
89
+ "GOTO ", #1c
90
+ "INVERSE", #1d
91
+ "NORMAL", #1e
92
+ "FLASH", #1f
93
+ "CASE ", #20
94
+ "GOTOXY(", #21
95
+ "CLEAR", #22
96
+ "NEW", #23
97
+ "HOME", #24
98
+ "CLREOL", #25
99
+ "CLREOP", #26
100
+ "PRBLOCK(",#27
101
+ "STOP", #28
102
+ "COPY(", #29
103
+ "FILL(", #2a
104
+ "MASK(", #2b
105
+ "RSECT(", #2c
106
+ "WSECT(", #2d
107
+ "RBLOCK(", #2e
108
+ "WBLOCK(", #2f
109
+ "WTRACK(", #30
110
+ "WSYNC(", #31
111
+ "RECAL(", #32
112
+ "DISPLAY(",#33
113
+ "RTRACK(", #34
114
+ "RSYNC(", #35
115
+ "BEEP(", #36
116
+ "DISASM(", #37
117
+ "TEXT", #38
118
+ "FORMAT(", #39
119
+ "SETFORMAT(",#3a
120
+ "WORKDRIVE ",#3b
121
+ "INIT ", #3c
122
+ "LOAD ", #3d
123
+ "SAVE ", #3e
124
+ "CATALOG", #3f
125
+ "DELETE ", #40
126
+ "RENAME ", #41
127
+ "PACK ", #42
128
+ "CONVERT(",#43
129
+ "INPUT(", #44
130
+ "LORES", #45
131
+ "PLOT(", #46
132
+ "HLINE(", #47
133
+ "VLINE(", #48
134
+ "COLOR=", #49
135
+ "FIND(", #4a
136
+ "HIRES", #4b
137
+ "HCOLOR=", #4c
138
+ "HPLOT", #4d
139
+ "CALL(", #4e
140
+ "PR#", #4f
141
+ "IN#", #50
142
+ "FILTER(", #51
143
+ "LIST", #52
144
+ "RUN", #53
145
+ "AUXMOVE(",#54
146
+ "LCMOVE(", #55
147
+ "DELAY(", #56
148
+ "INTEGER", #57
149
+ "BYTE", #58
150
+ " AND ", #59
151
+ " OR ", #5a
152
+ " MOD ", #5b
153
+ " XOR ", #5c
154
+ " WITH ", #5d
155
+ " TO ", #5e
156
+ " AT ", #5f
157
+ "TAB(", #60
158
+ "ENDCASE", #61
159
+ "MON:", #62
160
+ "EDIT", #63
161
+ "SAVE@" #64
162
+ ]
163
+
164
+
165
+ #check whether a given series of bytes can be a valid NADOL tokenised file
166
+ #heuristics are:
167
+ # - bytes
168
+ def NADOLTokenisedFile.can_be_nadol_tokenised_file?(buffer)
169
+ r=true
170
+ i=0
171
+ while i<buffer.length
172
+ line_length=buffer[i]
173
+ if buffer[i+line_length-1]!=0 then
174
+ r=false
175
+ break
176
+ end
177
+ i+=line_length
178
+ end
179
+ r
180
+ end
181
+
182
+ def to_s
183
+ NADOLTokenisedFile.buffer_as_tokenised_file(@contents)
184
+ end
185
+ def file_extension
186
+ ".nad"
187
+ end
188
+
189
+ private
190
+ def NADOLTokenisedFile.buffer_as_tokenised_file(buffer)
191
+ s=""
192
+ index=0
193
+ while (index<buffer.length)
194
+ line_length=buffer[index]
195
+ index+=1
196
+ end_of_line=index+line_length-2
197
+ while(index<end_of_line)
198
+ b=buffer[index]
199
+ if (b<=0x64) then
200
+ s+=NADOL_EDITOR_TOKENS[b]
201
+ elsif(b>0x70 and b<0x80) then
202
+ s+=" "*(b-0x70)
203
+ elsif(b>=0x80) then
204
+ s+=(b-0x80).chr
205
+ else
206
+ raise sprintf("unknown token %02X at offset %04X",b,index)
207
+ end
208
+ index+=1 #move to next char
209
+ end
210
+ index+=1 #skip over end-of-line marker
211
+ s+="\n"
212
+ end
213
+ s
214
+ end
215
+
216
+ end
217
+
218
+
219
+ # == Author
220
+ # Jonno Downes (jonno@jamtronix.com)
221
+ #
222
+ # == Copyright
223
+ # Copyright (c) 2007 Jonno Downes (jonno@jamtronix.com)
224
+ #
225
+ #Permission is hereby granted, free of charge, to any person obtaining
226
+ #a copy of this software and associated documentation files (the
227
+ #"Software"), to deal in the Software without restriction, including
228
+ #without limitation the rights to use, copy, modify, merge, publish,
229
+ #distribute, sublicense, and/or sell copies of the Software, and to
230
+ #permit persons to whom the Software is furnished to do so, subject to
231
+ #the following conditions:
232
+
233
+ # The above copyright notice and this permission notice shall be
234
+ # included in all copies or substantial portions of the Software.
235
+
236
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
237
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
238
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
239
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
240
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
241
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
242
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.