dsktool 0.2.1 → 0.4.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 (663) hide show
  1. data/bin/dskexplorer.rb +79 -61
  2. data/bin/dsktool.rb +243 -142
  3. data/bin/romdump.rb +65 -0
  4. data/doc/classes/AppleSoftFile.html +97 -59
  5. data/doc/classes/AppleSoftFile.src/{M000005.html → M000113.html} +1 -1
  6. data/doc/classes/AppleSoftFile.src/M000114.html +18 -0
  7. data/doc/classes/AppleSoftFile.src/{M000013.html → M000115.html} +1 -1
  8. data/doc/classes/AppleSoftFile.src/{M000014.html → M000116.html} +1 -1
  9. data/doc/classes/AppleSoftFile.src/{M000010.html → M000117.html} +1 -1
  10. data/doc/classes/AppleSoftFile.src/M000118.html +18 -0
  11. data/doc/classes/AppleSoftFile.src/{M000006.html → M000119.html} +1 -1
  12. data/doc/classes/AppleSoftFile.src/{M000022.html → M000120.html} +1 -1
  13. data/doc/classes/BinaryFile.html +184 -26
  14. data/doc/classes/BinaryFile.src/{M000021.html → M000218.html} +1 -1
  15. data/doc/classes/{DOSFile.src/M000017.html → BinaryFile.src/M000219.html} +4 -3
  16. data/doc/classes/BinaryFile.src/{M000025.html → M000220.html} +1 -1
  17. data/doc/classes/BinaryFile.src/M000221.html +19 -0
  18. data/doc/classes/BinaryFile.src/M000222.html +19 -0
  19. data/doc/classes/BinaryFile.src/M000223.html +19 -0
  20. data/doc/classes/BinaryFile.src/M000224.html +18 -0
  21. data/doc/classes/BinaryFile.src/{M000015.html → M000225.html} +1 -1
  22. data/doc/classes/{AppleSoftFile.src/M000008.html → BinaryFile.src/M000226.html} +4 -4
  23. data/doc/classes/BinaryFile.src/{M000030.html → M000227.html} +1 -1
  24. data/doc/classes/BinaryFile.src/M000228.html +19 -0
  25. data/doc/classes/BinaryFile.src/M000229.html +19 -0
  26. data/doc/classes/BinaryFile.src/M000230.html +19 -0
  27. data/doc/classes/BinaryFile.src/M000231.html +18 -0
  28. data/doc/classes/CatalogServlet.html +5 -15
  29. data/doc/classes/CatalogServlet.src/{M000021.html → M000064.html} +1 -1
  30. data/doc/classes/D65.html +60 -18
  31. data/doc/classes/D65.src/{M000006.html → M000099.html} +0 -0
  32. data/doc/classes/D65.src/{M000032.html → M000100.html} +6 -6
  33. data/doc/classes/D65.src/{M000009.html → M000101.html} +1 -1
  34. data/doc/classes/D65.src/{M000011.html → M000102.html} +7 -7
  35. data/doc/classes/DOSDisk.html +291 -23
  36. data/doc/classes/DOSDisk.src/M000127.html +23 -0
  37. data/doc/classes/DOSDisk.src/M000128.html +18 -0
  38. data/doc/classes/DOSDisk.src/{M000012.html → M000129.html} +3 -3
  39. data/doc/classes/DOSDisk.src/M000130.html +37 -0
  40. data/doc/classes/DOSDisk.src/{M000043.html → M000131.html} +17 -8
  41. data/doc/classes/DOSDisk.src/M000132.html +37 -0
  42. data/doc/classes/DOSDisk.src/M000133.html +34 -0
  43. data/doc/classes/DOSDisk.src/M000134.html +27 -0
  44. data/doc/classes/DOSDisk.src/M000135.html +43 -0
  45. data/doc/classes/DOSDisk.src/M000136.html +31 -0
  46. data/doc/classes/DOSDisk.src/M000137.html +95 -0
  47. data/doc/classes/DOSDisk.src/M000138.html +23 -0
  48. data/doc/classes/{BinaryFile.src/M000023.html → DOSDisk.src/M000139.html} +4 -4
  49. data/doc/classes/DOSDisk.src/{M000016.html → M000140.html} +3 -3
  50. data/doc/classes/DOSDisk.src/M000141.html +22 -0
  51. data/doc/classes/DOSDisk.src/{M000017.html → M000142.html} +26 -17
  52. data/doc/classes/DOSDisk.src/M000143.html +37 -0
  53. data/doc/classes/DOSDisk.src/M000144.html +34 -0
  54. data/doc/classes/DOSDisk.src/M000145.html +92 -0
  55. data/doc/classes/DOSFile.html +135 -36
  56. data/doc/classes/DOSFile.src/{M000016.html → M000251.html} +5 -5
  57. data/doc/classes/DOSFile.src/{M000043.html → M000252.html} +1 -1
  58. data/doc/classes/DOSFile.src/M000253.html +18 -0
  59. data/doc/classes/DOSFile.src/M000254.html +28 -0
  60. data/doc/classes/DOSFile.src/M000255.html +18 -0
  61. data/doc/classes/DOSFile.src/{M000021.html → M000256.html} +4 -4
  62. data/doc/classes/DOSFile.src/{M000049.html → M000257.html} +1 -1
  63. data/doc/classes/DOSFile.src/M000258.html +18 -0
  64. data/doc/classes/DOSFile.src/M000259.html +28 -0
  65. data/doc/classes/DSK.html +735 -65
  66. data/doc/classes/DSK.src/{M000027.html → M000163.html} +3 -2
  67. data/doc/classes/{D65.src/M000003.html → DSK.src/M000164.html} +4 -4
  68. data/doc/classes/DSK.src/M000165.html +18 -0
  69. data/doc/classes/DSK.src/M000166.html +18 -0
  70. data/doc/classes/DSK.src/M000167.html +18 -0
  71. data/doc/classes/DSK.src/M000168.html +18 -0
  72. data/doc/classes/DSK.src/M000169.html +25 -0
  73. data/doc/classes/DSK.src/{M000043.html → M000170.html} +3 -2
  74. data/doc/classes/DSK.src/M000171.html +22 -0
  75. data/doc/classes/DSK.src/M000172.html +22 -0
  76. data/doc/classes/DSK.src/{M000035.html → M000173.html} +7 -3
  77. data/doc/classes/DSK.src/M000174.html +25 -0
  78. data/doc/classes/DSK.src/M000175.html +30 -0
  79. data/doc/classes/DSK.src/M000176.html +65 -0
  80. data/doc/classes/DSK.src/M000177.html +22 -0
  81. data/doc/classes/DSK.src/M000178.html +23 -0
  82. data/doc/classes/DSK.src/M000179.html +24 -0
  83. data/doc/classes/DSK.src/M000180.html +21 -0
  84. data/doc/classes/DSK.src/{M000012.html → M000181.html} +1 -1
  85. data/doc/classes/DSK.src/M000182.html +24 -0
  86. data/doc/classes/DSK.src/{M000053.html → M000183.html} +1 -1
  87. data/doc/classes/DSK.src/{M000054.html → M000184.html} +3 -3
  88. data/doc/classes/DSK.src/{M000033.html → M000185.html} +3 -2
  89. data/doc/classes/{DOSFile.src/M000018.html → DSK.src/M000186.html} +4 -4
  90. data/doc/classes/DSK.src/M000187.html +18 -0
  91. data/doc/classes/DSK.src/M000188.html +18 -0
  92. data/doc/classes/DSK.src/M000189.html +18 -0
  93. data/doc/classes/DSK.src/M000190.html +18 -0
  94. data/doc/classes/DSK.src/M000191.html +25 -0
  95. data/doc/classes/DSK.src/{M000047.html → M000192.html} +3 -2
  96. data/doc/classes/DSK.src/M000193.html +22 -0
  97. data/doc/classes/DSK.src/M000194.html +22 -0
  98. data/doc/classes/DSK.src/{M000015.html → M000195.html} +7 -3
  99. data/doc/classes/DSK.src/M000196.html +20 -0
  100. data/doc/classes/DSK.src/M000197.html +21 -0
  101. data/doc/classes/DSK.src/M000198.html +27 -0
  102. data/doc/classes/DSK.src/M000199.html +65 -0
  103. data/doc/classes/DSK.src/M000200.html +22 -0
  104. data/doc/classes/DSK.src/M000201.html +23 -0
  105. data/doc/classes/DSK.src/M000202.html +24 -0
  106. data/doc/classes/DSK.src/M000203.html +21 -0
  107. data/doc/classes/DSK.src/{M000022.html → M000204.html} +1 -1
  108. data/doc/classes/DSK.src/M000205.html +24 -0
  109. data/doc/classes/DSK.src/M000206.html +24 -0
  110. data/doc/classes/DSK.src/{M000024.html → M000207.html} +6 -5
  111. data/doc/classes/DSKFile.html +472 -0
  112. data/doc/classes/{NADOLFile.src/M000027.html → DSKFile.src/M000147.html} +2 -2
  113. data/doc/classes/{DOSFile.src/M000025.html → DSKFile.src/M000148.html} +2 -2
  114. data/doc/classes/DSKFile.src/M000149.html +25 -0
  115. data/doc/classes/{BinaryFile.src/M000040.html → DSKFile.src/M000150.html} +2 -2
  116. data/doc/classes/DSKFile.src/M000151.html +18 -0
  117. data/doc/classes/{BinaryFile.src/M000020.html → DSKFile.src/M000152.html} +4 -4
  118. data/doc/classes/DSKFile.src/M000153.html +18 -0
  119. data/doc/classes/DSKFile.src/M000154.html +50 -0
  120. data/doc/classes/{NADOLFile.src/M000031.html → DSKFile.src/M000155.html} +2 -2
  121. data/doc/classes/{DOSFile.src/M000029.html → DSKFile.src/M000156.html} +2 -2
  122. data/doc/classes/DSKFile.src/M000157.html +25 -0
  123. data/doc/classes/{BinaryFile.src/M000046.html → DSKFile.src/M000158.html} +2 -2
  124. data/doc/classes/DSKFile.src/M000159.html +18 -0
  125. data/doc/classes/DSKFile.src/M000160.html +18 -0
  126. data/doc/classes/DSKFile.src/M000161.html +18 -0
  127. data/doc/classes/DSKFile.src/M000162.html +50 -0
  128. data/doc/classes/DSKTrackSector.html +256 -0
  129. data/doc/classes/DSKTrackSector.src/M000093.html +20 -0
  130. data/doc/classes/DSKTrackSector.src/M000094.html +18 -0
  131. data/doc/classes/DSKTrackSector.src/M000095.html +21 -0
  132. data/doc/classes/DSKTrackSector.src/M000096.html +20 -0
  133. data/doc/classes/DSKTrackSector.src/M000097.html +18 -0
  134. data/doc/classes/DSKTrackSector.src/M000098.html +21 -0
  135. data/doc/classes/DirectoryServlet.html +5 -15
  136. data/doc/classes/DirectoryServlet.src/{M000023.html → M000086.html} +1 -1
  137. data/doc/classes/DumpUtilities.html +186 -0
  138. data/doc/classes/DumpUtilities.src/M000109.html +33 -0
  139. data/doc/classes/DumpUtilities.src/M000110.html +23 -0
  140. data/doc/classes/DumpUtilities.src/M000111.html +33 -0
  141. data/doc/classes/DumpUtilities.src/M000112.html +23 -0
  142. data/doc/classes/HGR.html +324 -0
  143. data/doc/classes/HGR.src/M000247.html +29 -0
  144. data/doc/classes/HGR.src/M000248.html +56 -0
  145. data/doc/classes/HGR.src/M000249.html +29 -0
  146. data/doc/classes/HGR.src/M000250.html +56 -0
  147. data/doc/classes/IntegerBasicFile.html +127 -26
  148. data/doc/classes/IntegerBasicFile.src/{M000001.html → M000056.html} +1 -1
  149. data/doc/classes/IntegerBasicFile.src/{M000007.html → M000057.html} +1 -1
  150. data/doc/classes/IntegerBasicFile.src/M000058.html +18 -0
  151. data/doc/classes/IntegerBasicFile.src/{M000008.html → M000059.html} +1 -1
  152. data/doc/classes/IntegerBasicFile.src/{M000004.html → M000060.html} +1 -1
  153. data/doc/classes/IntegerBasicFile.src/{M000013.html → M000061.html} +1 -1
  154. data/doc/classes/IntegerBasicFile.src/M000062.html +18 -0
  155. data/doc/classes/IntegerBasicFile.src/{M000014.html → M000063.html} +1 -1
  156. data/doc/classes/NADOLBinaryFile.html +84 -13
  157. data/doc/classes/NADOLBinaryFile.src/{M000033.html → M000103.html} +1 -1
  158. data/doc/classes/{NADOLFile.src/M000028.html → NADOLBinaryFile.src/M000104.html} +4 -4
  159. data/doc/classes/{NADOLFile.src/M000032.html → NADOLBinaryFile.src/M000105.html} +4 -4
  160. data/doc/classes/NADOLBinaryFile.src/{M000037.html → M000106.html} +1 -1
  161. data/doc/classes/{BinaryFile.src/M000055.html → NADOLBinaryFile.src/M000107.html} +4 -4
  162. data/doc/classes/NADOLBinaryFile.src/M000108.html +18 -0
  163. data/doc/classes/NADOLDisk.html +346 -23
  164. data/doc/classes/NADOLDisk.src/M000034.html +23 -0
  165. data/doc/classes/NADOLDisk.src/{M000019.html → M000035.html} +3 -3
  166. data/doc/classes/NADOLDisk.src/M000036.html +18 -0
  167. data/doc/classes/NADOLDisk.src/M000037.html +29 -0
  168. data/doc/classes/NADOLDisk.src/M000038.html +34 -0
  169. data/doc/classes/NADOLDisk.src/M000039.html +32 -0
  170. data/doc/classes/NADOLDisk.src/M000040.html +22 -0
  171. data/doc/classes/NADOLDisk.src/M000041.html +38 -0
  172. data/doc/classes/NADOLDisk.src/M000042.html +27 -0
  173. data/doc/classes/NADOLDisk.src/M000043.html +53 -0
  174. data/doc/classes/NADOLDisk.src/M000044.html +46 -0
  175. data/doc/classes/NADOLDisk.src/M000045.html +23 -0
  176. data/doc/classes/NADOLDisk.src/{M000022.html → M000046.html} +3 -3
  177. data/doc/classes/{AppleSoftFile.src/M000009.html → NADOLDisk.src/M000047.html} +4 -4
  178. data/doc/classes/NADOLDisk.src/M000048.html +29 -0
  179. data/doc/classes/NADOLDisk.src/M000049.html +34 -0
  180. data/doc/classes/NADOLDisk.src/M000050.html +32 -0
  181. data/doc/classes/NADOLDisk.src/M000051.html +22 -0
  182. data/doc/classes/NADOLDisk.src/M000052.html +38 -0
  183. data/doc/classes/NADOLDisk.src/M000053.html +27 -0
  184. data/doc/classes/NADOLDisk.src/M000054.html +53 -0
  185. data/doc/classes/NADOLDisk.src/M000055.html +46 -0
  186. data/doc/classes/NADOLFile.html +67 -51
  187. data/doc/classes/NADOLFile.src/{M000029.html → M000087.html} +1 -1
  188. data/doc/classes/NADOLFile.src/M000088.html +18 -0
  189. data/doc/classes/NADOLFile.src/M000089.html +28 -0
  190. data/doc/classes/NADOLFile.src/{M000033.html → M000090.html} +1 -1
  191. data/doc/classes/NADOLFile.src/M000091.html +18 -0
  192. data/doc/classes/NADOLFile.src/M000092.html +28 -0
  193. data/doc/classes/NADOLTokenisedFile.html +111 -32
  194. data/doc/classes/NADOLTokenisedFile.src/{M000068.html → M000276.html} +1 -1
  195. data/doc/classes/NADOLTokenisedFile.src/M000277.html +49 -0
  196. data/doc/classes/NADOLTokenisedFile.src/{M000064.html → M000278.html} +1 -1
  197. data/doc/classes/NADOLTokenisedFile.src/{M000065.html → M000279.html} +1 -1
  198. data/doc/classes/NADOLTokenisedFile.src/{M000061.html → M000280.html} +1 -1
  199. data/doc/classes/NADOLTokenisedFile.src/M000281.html +49 -0
  200. data/doc/classes/NADOLTokenisedFile.src/{M000069.html → M000282.html} +1 -1
  201. data/doc/classes/NADOLTokenisedFile.src/{M000070.html → M000283.html} +1 -1
  202. data/doc/classes/PNG.html +163 -0
  203. data/doc/classes/PNG.src/M000284.html +26 -0
  204. data/doc/classes/PNG.src/M000285.html +26 -0
  205. data/doc/classes/PascalDisk.html +274 -0
  206. data/doc/classes/PascalDisk.src/M000268.html +23 -0
  207. data/doc/classes/PascalDisk.src/M000269.html +19 -0
  208. data/doc/classes/PascalDisk.src/M000270.html +18 -0
  209. data/doc/classes/PascalDisk.src/M000271.html +60 -0
  210. data/doc/classes/PascalDisk.src/M000272.html +23 -0
  211. data/doc/classes/PascalDisk.src/M000273.html +19 -0
  212. data/doc/classes/PascalDisk.src/M000274.html +18 -0
  213. data/doc/classes/PascalDisk.src/M000275.html +60 -0
  214. data/doc/classes/PascalFile.html +322 -0
  215. data/doc/classes/{DOSFile.src/M000022.html → PascalFile.src/M000237.html} +5 -6
  216. data/doc/classes/{TextFile.src/M000027.html → PascalFile.src/M000238.html} +3 -3
  217. data/doc/classes/{AppleSoftFile.src/M000028.html → PascalFile.src/M000239.html} +3 -3
  218. data/doc/classes/PascalFile.src/M000240.html +19 -0
  219. data/doc/classes/PascalFile.src/M000241.html +18 -0
  220. data/doc/classes/{DOSFile.src/M000023.html → PascalFile.src/M000242.html} +5 -6
  221. data/doc/classes/{TextFile.src/M000032.html → PascalFile.src/M000243.html} +3 -3
  222. data/doc/classes/PascalFile.src/M000244.html +18 -0
  223. data/doc/classes/PascalFile.src/M000245.html +19 -0
  224. data/doc/classes/PascalFile.src/M000246.html +18 -0
  225. data/doc/classes/ProDOSDisk.html +414 -0
  226. data/doc/classes/ProDOSDisk.src/M000073.html +18 -0
  227. data/doc/classes/ProDOSDisk.src/M000074.html +23 -0
  228. data/doc/classes/{DOSDisk.src/M000030.html → ProDOSDisk.src/M000075.html} +5 -5
  229. data/doc/classes/ProDOSDisk.src/M000076.html +18 -0
  230. data/doc/classes/{DSK.src/M000052.html → ProDOSDisk.src/M000077.html} +8 -9
  231. data/doc/classes/ProDOSDisk.src/M000078.html +98 -0
  232. data/doc/classes/ProDOSDisk.src/M000079.html +18 -0
  233. data/doc/classes/ProDOSDisk.src/M000080.html +23 -0
  234. data/doc/classes/ProDOSDisk.src/M000081.html +19 -0
  235. data/doc/classes/ProDOSDisk.src/M000082.html +18 -0
  236. data/doc/classes/ProDOSDisk.src/M000083.html +36 -0
  237. data/doc/classes/ProDOSDisk.src/M000084.html +98 -0
  238. data/doc/classes/ProDOSFile.html +282 -0
  239. data/doc/classes/ProDOSFile.src/M000121.html +23 -0
  240. data/doc/classes/{AppleSoftFile.src/M000036.html → ProDOSFile.src/M000122.html} +3 -3
  241. data/doc/classes/ProDOSFile.src/M000123.html +30 -0
  242. data/doc/classes/ProDOSFile.src/M000124.html +23 -0
  243. data/doc/classes/ProDOSFile.src/M000125.html +18 -0
  244. data/doc/classes/ProDOSFile.src/M000126.html +30 -0
  245. data/doc/classes/RDoc.html +29 -12
  246. data/doc/classes/RDoc.src/{M000048.html → M000295.html} +0 -0
  247. data/doc/classes/RDoc.src/{M000032.html → M000296.html} +1 -1
  248. data/doc/classes/SCAsmFile.html +117 -31
  249. data/doc/classes/SCAsmFile.src/{M000048.html → M000208.html} +1 -1
  250. data/doc/classes/{DOSFile.src/M000024.html → SCAsmFile.src/M000209.html} +4 -3
  251. data/doc/classes/SCAsmFile.src/{M000026.html → M000210.html} +1 -1
  252. data/doc/classes/SCAsmFile.src/{M000027.html → M000211.html} +1 -1
  253. data/doc/classes/SCAsmFile.src/{M000058.html → M000212.html} +1 -1
  254. data/doc/classes/SCAsmFile.src/{M000025.html → M000213.html} +1 -1
  255. data/doc/classes/SCAsmFile.src/M000214.html +18 -0
  256. data/doc/classes/SCAsmFile.src/{M000036.html → M000215.html} +1 -1
  257. data/doc/classes/SCAsmFile.src/{M000037.html → M000216.html} +1 -1
  258. data/doc/classes/SCAsmFile.src/{M000053.html → M000217.html} +4 -1
  259. data/doc/classes/ShowFileServlet.html +5 -15
  260. data/doc/classes/ShowFileServlet.src/{M000040.html → M000146.html} +2 -2
  261. data/doc/classes/ShowPNGServlet.html +137 -0
  262. data/doc/classes/{ShowFileServlet.src/M000032.html → ShowPNGServlet.src/M000232.html} +10 -6
  263. data/doc/classes/ShowSectorServlet.html +5 -15
  264. data/doc/classes/ShowSectorServlet.src/{M000029.html → M000085.html} +1 -1
  265. data/doc/classes/TestDOSDisks.html +220 -28
  266. data/doc/classes/TestDOSDisks.src/M000014.html +1 -1
  267. data/doc/classes/TestDOSDisks.src/M000015.html +1 -1
  268. data/doc/classes/TestDOSDisks.src/M000016.html +32 -9
  269. data/doc/classes/TestDOSDisks.src/M000017.html +9 -6
  270. data/doc/classes/TestDOSDisks.src/M000018.html +5 -10
  271. data/doc/classes/TestDOSDisks.src/M000019.html +5 -27
  272. data/doc/classes/TestDOSDisks.src/M000020.html +8 -10
  273. data/doc/classes/TestDOSDisks.src/{M000010.html → M000021.html} +9 -3
  274. data/doc/classes/TestDOSDisks.src/{M000011.html → M000022.html} +5 -4
  275. data/doc/classes/TestDOSDisks.src/M000023.html +28 -0
  276. data/doc/classes/TestDOSDisks.src/{M000012.html → M000024.html} +2 -0
  277. data/doc/classes/TestDOSDisks.src/{M000001.html → M000025.html} +1 -1
  278. data/doc/classes/TestDOSDisks.src/M000026.html +62 -0
  279. data/doc/classes/TestDOSDisks.src/M000027.html +22 -0
  280. data/doc/classes/TestDOSDisks.src/M000028.html +20 -0
  281. data/doc/classes/TestDOSDisks.src/{M000008.html → M000029.html} +2 -2
  282. data/doc/classes/TestDOSDisks.src/{M000009.html → M000030.html} +2 -2
  283. data/doc/classes/TestDOSDisks.src/{M000004.html → M000031.html} +9 -3
  284. data/doc/classes/TestDOSDisks.src/{M000005.html → M000032.html} +5 -4
  285. data/doc/classes/TestDOSDisks.src/M000033.html +28 -0
  286. data/doc/classes/TestDisassembly.html +24 -12
  287. data/doc/classes/TestDisassembly.src/{M000008.html → M000071.html} +1 -1
  288. data/doc/classes/TestDisassembly.src/{M000007.html → M000072.html} +0 -0
  289. data/doc/classes/TestNADOLDisks.html +44 -17
  290. data/doc/classes/TestNADOLDisks.src/M000233.html +22 -0
  291. data/doc/classes/TestNADOLDisks.src/M000234.html +73 -0
  292. data/doc/classes/TestNADOLDisks.src/M000235.html +22 -0
  293. data/doc/classes/TestNADOLDisks.src/M000236.html +73 -0
  294. data/doc/classes/TestPascalDisks.html +216 -0
  295. data/doc/classes/TestPascalDisks.src/M000065.html +28 -0
  296. data/doc/classes/TestPascalDisks.src/M000066.html +24 -0
  297. data/doc/classes/TestPascalDisks.src/M000067.html +27 -0
  298. data/doc/classes/TestPascalDisks.src/M000068.html +28 -0
  299. data/doc/classes/TestPascalDisks.src/M000069.html +24 -0
  300. data/doc/classes/TestPascalDisks.src/M000070.html +27 -0
  301. data/doc/classes/TestProDOSDisks.html +246 -0
  302. data/doc/classes/TestProDOSDisks.src/M000260.html +28 -0
  303. data/doc/classes/TestProDOSDisks.src/M000261.html +28 -0
  304. data/doc/classes/TestProDOSDisks.src/M000262.html +41 -0
  305. data/doc/classes/TestProDOSDisks.src/M000263.html +28 -0
  306. data/doc/classes/TestProDOSDisks.src/M000264.html +28 -0
  307. data/doc/classes/TestProDOSDisks.src/M000265.html +28 -0
  308. data/doc/classes/TestProDOSDisks.src/M000266.html +41 -0
  309. data/doc/classes/TestProDOSDisks.src/M000267.html +28 -0
  310. data/doc/classes/TextFile.html +109 -26
  311. data/doc/classes/TextFile.src/{M000019.html → M000286.html} +1 -1
  312. data/doc/classes/{DOSFile.src/M000028.html → TextFile.src/M000287.html} +4 -3
  313. data/doc/classes/TextFile.src/{M000031.html → M000288.html} +1 -1
  314. data/doc/classes/TextFile.src/{M000020.html → M000289.html} +3 -3
  315. data/doc/classes/TextFile.src/{M000024.html → M000290.html} +1 -1
  316. data/doc/classes/TextFile.src/M000291.html +18 -0
  317. data/doc/classes/TextFile.src/{M000036.html → M000292.html} +1 -1
  318. data/doc/classes/TextFile.src/{M000037.html → M000293.html} +3 -3
  319. data/doc/classes/TextFile.src/M000294.html +18 -0
  320. data/doc/created.rid +1 -1
  321. data/doc/dot/f_0.dot +14 -1
  322. data/doc/files/bin/dskexplorer_rb.html +2 -12
  323. data/doc/files/bin/dskexplorer_rb.src/M000007.html +2 -4
  324. data/doc/files/bin/dskexplorer_rb.src/M000008.html +1 -1
  325. data/doc/files/bin/dskexplorer_rb.src/M000009.html +1 -1
  326. data/doc/files/bin/dskexplorer_rb.src/M000010.html +7 -3
  327. data/doc/files/bin/dskexplorer_rb.src/M000011.html +10 -6
  328. data/doc/files/bin/dskexplorer_rb.src/M000012.html +9 -12
  329. data/doc/files/bin/dskexplorer_rb.src/M000013.html +7 -4
  330. data/doc/files/bin/dsktool_rb.html +93 -41
  331. data/doc/files/bin/romdump_rb.html +184 -0
  332. data/doc/files/dsktool_web/dskexplorer_rb.html +107 -0
  333. data/doc/files/dsktool_web/index_rb.html +107 -0
  334. data/doc/files/lib/D65_rb.html +1 -7
  335. data/doc/files/lib/DOSDisk_rb.html +1 -8
  336. data/doc/files/lib/DOSFile_rb.html +3 -12
  337. data/doc/files/{test/test_dos_disks_rb.html → lib/DSKFile_rb.html} +5 -6
  338. data/doc/files/lib/DSK_rb.html +5 -7
  339. data/doc/files/lib/DumpUtilities_rb.html +101 -0
  340. data/doc/files/lib/HGR_rb.html +115 -0
  341. data/doc/files/lib/NADOLDisk_rb.html +1 -8
  342. data/doc/files/lib/NADOLFile_rb.html +3 -9
  343. data/doc/files/lib/PascalDisk_rb.html +108 -0
  344. data/doc/files/lib/PascalFile_rb.html +109 -0
  345. data/doc/files/lib/ProDOSDisk_rb.html +108 -0
  346. data/doc/files/lib/ProDOSFile_rb.html +108 -0
  347. data/doc/files/lib/rdoc_patch_rb.html +1 -7
  348. data/doc/files/test/backup/D65_rb.html +108 -0
  349. data/doc/files/test/backup/DOSDisk_rb.html +108 -0
  350. data/doc/files/test/backup/DOSFile_rb.html +110 -0
  351. data/doc/files/test/backup/DSKFile_rb.html +108 -0
  352. data/doc/files/test/backup/DSK_rb.html +116 -0
  353. data/doc/files/test/backup/DumpUtilities_rb.html +101 -0
  354. data/doc/files/test/backup/HGR_rb.html +115 -0
  355. data/doc/files/test/backup/NADOLDisk_rb.html +108 -0
  356. data/doc/files/test/backup/NADOLFile_rb.html +111 -0
  357. data/doc/files/test/backup/PascalDisk_rb.html +108 -0
  358. data/doc/files/test/backup/PascalFile_rb.html +109 -0
  359. data/doc/files/test/backup/ProDOSDisk_rb.html +108 -0
  360. data/doc/files/test/backup/ProDOSFile_rb.html +108 -0
  361. data/doc/files/test/backup/comp_rb.html +101 -0
  362. data/doc/files/test/backup/compress_dos_dsk_rb.html +114 -0
  363. data/doc/files/test/backup/extract_nadol_startup_rb.html +134 -0
  364. data/doc/files/test/backup/hgr_scanlines_rb.html +101 -0
  365. data/doc/files/test/backup/rdoc_patch_rb.html +108 -0
  366. data/doc/files/test/backup/tc_disassembly_rb.html +116 -0
  367. data/doc/files/test/backup/tc_dos_disks_rb.html +115 -0
  368. data/doc/files/test/backup/tc_nadol_disks_rb.html +115 -0
  369. data/doc/files/test/backup/tc_pascal_disks_rb.html +115 -0
  370. data/doc/files/test/backup/tc_prodos_disks_rb.html +115 -0
  371. data/doc/files/test/backup/ts_test_all_rb.html +112 -0
  372. data/doc/files/test/comp_rb.html +101 -0
  373. data/doc/files/test/compress_dos_dsk_rb.html +114 -0
  374. data/doc/files/test/extract_nadol_startup_rb.html +134 -0
  375. data/doc/files/test/hgr_scanlines_rb.html +101 -0
  376. data/doc/files/test/tc_disassembly_rb.html +1 -8
  377. data/doc/files/test/tc_dos_disks_rb.html +1 -8
  378. data/doc/files/test/tc_nadol_disks_rb.html +1 -8
  379. data/doc/files/test/tc_pascal_disks_rb.html +115 -0
  380. data/doc/files/test/tc_prodos_disks_rb.html +115 -0
  381. data/doc/files/test/ts_test_all_rb.html +3 -6
  382. data/doc/fr_class_index.html +12 -0
  383. data/doc/fr_file_index.html +40 -0
  384. data/doc/fr_method_index.html +281 -59
  385. data/lib/D65.rb +6 -6
  386. data/lib/DOSDisk.rb +248 -18
  387. data/lib/DOSFile.rb +75 -104
  388. data/lib/DSK.rb +198 -44
  389. data/lib/DSKFile.rb +141 -0
  390. data/lib/DumpUtilities.rb +30 -0
  391. data/lib/HGR.rb +136 -0
  392. data/lib/NADOLDisk.rb +199 -42
  393. data/lib/NADOLFile.rb +73 -35
  394. data/lib/PascalDisk.rb +121 -0
  395. data/lib/PascalFile.rb +62 -0
  396. data/lib/ProDOSDisk.rb +197 -0
  397. data/lib/ProDOSFile.rb +162 -0
  398. data/lib/a2_symbols.yaml +2 -2
  399. data/lib/dos33_blank.dsk.gz +0 -0
  400. data/lib/nadol_blank.po.gz +0 -0
  401. data/test/ADTPRO-1.0.1.DSK +0 -0
  402. data/test/ADTPRO-1.0.1.PO +0 -0
  403. data/test/Algebra Mentor (19xx)(John C. Miller)(Disk 1 of 7 Side A)(Student Disk 1).dsk.gz +0 -0
  404. data/test/Apple Works V5.0 (1993)(Beagle Bros)(Disks 5 of 6).dsk.gz +0 -0
  405. data/test/Geos (1988)(Berkeley Softworks)(Disk 1 of 4 Side A).dsk.gz +0 -0
  406. data/test/Zoom Grafix (1982)(Phoenix Software)[cr].dsk.gz +0 -0
  407. data/test/adventure_teacher_4.dsk.gz +0 -0
  408. data/test/camps.dsk.gz +0 -0
  409. data/test/dosmaster.po +0 -0
  410. data/test/hgr_scanlines.rb +194 -0
  411. data/test/nadol1.po +0 -0
  412. data/test/nadol_blank.po.gz +0 -0
  413. data/test/operation_frog1.dsk.gz +0 -0
  414. data/test/tc_dos_disks.rb +89 -14
  415. data/test/tc_nadol_disks.rb +47 -5
  416. data/test/tc_pascal_disks.rb +47 -0
  417. data/test/tc_prodos_disks.rb +78 -0
  418. data/test/test1.dsk +0 -0
  419. data/test/ts_test_all.rb +2 -0
  420. data/test/white_01b.dsk +0 -0
  421. data/test/white_03b.dsk +0 -0
  422. data/test/white_20a.dsk +0 -0
  423. metadata +400 -368
  424. data/doc/classes/AppleSoftFile.src/M000011.html +0 -18
  425. data/doc/classes/AppleSoftFile.src/M000012.html +0 -18
  426. data/doc/classes/AppleSoftFile.src/M000020.html +0 -18
  427. data/doc/classes/AppleSoftFile.src/M000021.html +0 -18
  428. data/doc/classes/AppleSoftFile.src/M000026.html +0 -18
  429. data/doc/classes/AppleSoftFile.src/M000027.html +0 -18
  430. data/doc/classes/AppleSoftFile.src/M000032.html +0 -18
  431. data/doc/classes/AppleSoftFile.src/M000033.html +0 -18
  432. data/doc/classes/AppleSoftFile.src/M000034.html +0 -18
  433. data/doc/classes/AppleSoftFile.src/M000035.html +0 -18
  434. data/doc/classes/AppleSoftFile.src/M000038.html +0 -18
  435. data/doc/classes/AppleSoftFile.src/M000039.html +0 -18
  436. data/doc/classes/AppleSoftFile.src/M000040.html +0 -18
  437. data/doc/classes/BinaryFile.src/M000022.html +0 -19
  438. data/doc/classes/BinaryFile.src/M000024.html +0 -18
  439. data/doc/classes/BinaryFile.src/M000026.html +0 -19
  440. data/doc/classes/BinaryFile.src/M000029.html +0 -18
  441. data/doc/classes/BinaryFile.src/M000031.html +0 -19
  442. data/doc/classes/BinaryFile.src/M000039.html +0 -18
  443. data/doc/classes/BinaryFile.src/M000041.html +0 -19
  444. data/doc/classes/BinaryFile.src/M000045.html +0 -18
  445. data/doc/classes/BinaryFile.src/M000047.html +0 -19
  446. data/doc/classes/BinaryFile.src/M000052.html +0 -18
  447. data/doc/classes/BinaryFile.src/M000053.html +0 -18
  448. data/doc/classes/BinaryFile.src/M000054.html +0 -18
  449. data/doc/classes/BinaryFile.src/M000056.html +0 -19
  450. data/doc/classes/BinaryFile.src/M000059.html +0 -18
  451. data/doc/classes/BinaryFile.src/M000060.html +0 -18
  452. data/doc/classes/BinaryFile.src/M000061.html +0 -19
  453. data/doc/classes/CatalogServlet.src/M000015.html +0 -20
  454. data/doc/classes/CatalogServlet.src/M000024.html +0 -20
  455. data/doc/classes/CatalogServlet.src/M000027.html +0 -20
  456. data/doc/classes/D65.src/M000002.html +0 -18
  457. data/doc/classes/D65.src/M000004.html +0 -64
  458. data/doc/classes/D65.src/M000005.html +0 -18
  459. data/doc/classes/D65.src/M000007.html +0 -18
  460. data/doc/classes/D65.src/M000008.html +0 -18
  461. data/doc/classes/D65.src/M000010.html +0 -18
  462. data/doc/classes/D65.src/M000018.html +0 -18
  463. data/doc/classes/D65.src/M000019.html +0 -64
  464. data/doc/classes/D65.src/M000024.html +0 -18
  465. data/doc/classes/D65.src/M000025.html +0 -64
  466. data/doc/classes/D65.src/M000030.html +0 -18
  467. data/doc/classes/D65.src/M000031.html +0 -18
  468. data/doc/classes/D65.src/M000035.html +0 -18
  469. data/doc/classes/D65.src/M000036.html +0 -64
  470. data/doc/classes/DOSDisk.src/M000007.html +0 -20
  471. data/doc/classes/DOSDisk.src/M000008.html +0 -77
  472. data/doc/classes/DOSDisk.src/M000010.html +0 -20
  473. data/doc/classes/DOSDisk.src/M000011.html +0 -20
  474. data/doc/classes/DOSDisk.src/M000013.html +0 -20
  475. data/doc/classes/DOSDisk.src/M000014.html +0 -20
  476. data/doc/classes/DOSDisk.src/M000015.html +0 -20
  477. data/doc/classes/DOSDisk.src/M000023.html +0 -20
  478. data/doc/classes/DOSDisk.src/M000024.html +0 -19
  479. data/doc/classes/DOSDisk.src/M000025.html +0 -76
  480. data/doc/classes/DOSDisk.src/M000029.html +0 -20
  481. data/doc/classes/DOSDisk.src/M000031.html +0 -76
  482. data/doc/classes/DOSDisk.src/M000035.html +0 -20
  483. data/doc/classes/DOSDisk.src/M000036.html +0 -20
  484. data/doc/classes/DOSDisk.src/M000037.html +0 -20
  485. data/doc/classes/DOSDisk.src/M000038.html +0 -19
  486. data/doc/classes/DOSDisk.src/M000039.html +0 -76
  487. data/doc/classes/DOSDisk.src/M000041.html +0 -20
  488. data/doc/classes/DOSDisk.src/M000042.html +0 -19
  489. data/doc/classes/DOSFile.src/M000026.html +0 -22
  490. data/doc/classes/DOSFile.src/M000027.html +0 -22
  491. data/doc/classes/DOSFile.src/M000032.html +0 -22
  492. data/doc/classes/DOSFile.src/M000033.html +0 -17
  493. data/doc/classes/DOSFile.src/M000034.html +0 -18
  494. data/doc/classes/DOSFile.src/M000042.html +0 -22
  495. data/doc/classes/DOSFile.src/M000044.html +0 -18
  496. data/doc/classes/DOSFile.src/M000048.html +0 -22
  497. data/doc/classes/DOSFile.src/M000050.html +0 -18
  498. data/doc/classes/DOSFile.src/M000051.html +0 -31
  499. data/doc/classes/DOSFile.src/M000057.html +0 -22
  500. data/doc/classes/DOSFile.src/M000058.html +0 -22
  501. data/doc/classes/DOSFile.src/M000059.html +0 -22
  502. data/doc/classes/DOSFile.src/M000060.html +0 -18
  503. data/doc/classes/DOSFile.src/M000061.html +0 -18
  504. data/doc/classes/DOSFile.src/M000062.html +0 -31
  505. data/doc/classes/DOSFile.src/M000064.html +0 -22
  506. data/doc/classes/DOSFile.src/M000065.html +0 -18
  507. data/doc/classes/DOSFile.src/M000066.html +0 -18
  508. data/doc/classes/DOSFile.src/M000067.html +0 -31
  509. data/doc/classes/DSK.src/M000009.html +0 -22
  510. data/doc/classes/DSK.src/M000010.html +0 -27
  511. data/doc/classes/DSK.src/M000011.html +0 -19
  512. data/doc/classes/DSK.src/M000013.html +0 -22
  513. data/doc/classes/DSK.src/M000014.html +0 -22
  514. data/doc/classes/DSK.src/M000016.html +0 -22
  515. data/doc/classes/DSK.src/M000017.html +0 -22
  516. data/doc/classes/DSK.src/M000018.html +0 -22
  517. data/doc/classes/DSK.src/M000019.html +0 -22
  518. data/doc/classes/DSK.src/M000020.html +0 -34
  519. data/doc/classes/DSK.src/M000021.html +0 -19
  520. data/doc/classes/DSK.src/M000023.html +0 -40
  521. data/doc/classes/DSK.src/M000028.html +0 -22
  522. data/doc/classes/DSK.src/M000029.html +0 -22
  523. data/doc/classes/DSK.src/M000030.html +0 -34
  524. data/doc/classes/DSK.src/M000031.html +0 -19
  525. data/doc/classes/DSK.src/M000032.html +0 -18
  526. data/doc/classes/DSK.src/M000034.html +0 -22
  527. data/doc/classes/DSK.src/M000036.html +0 -34
  528. data/doc/classes/DSK.src/M000037.html +0 -19
  529. data/doc/classes/DSK.src/M000038.html +0 -18
  530. data/doc/classes/DSK.src/M000039.html +0 -18
  531. data/doc/classes/DSK.src/M000040.html +0 -18
  532. data/doc/classes/DSK.src/M000041.html +0 -18
  533. data/doc/classes/DSK.src/M000042.html +0 -22
  534. data/doc/classes/DSK.src/M000044.html +0 -22
  535. data/doc/classes/DSK.src/M000045.html +0 -18
  536. data/doc/classes/DSK.src/M000046.html +0 -22
  537. data/doc/classes/DSK.src/M000048.html +0 -22
  538. data/doc/classes/DSK.src/M000049.html +0 -40
  539. data/doc/classes/DSK.src/M000050.html +0 -19
  540. data/doc/classes/DSK.src/M000051.html +0 -18
  541. data/doc/classes/DirectoryServlet.src/M000017.html +0 -20
  542. data/doc/classes/DirectoryServlet.src/M000026.html +0 -20
  543. data/doc/classes/DirectoryServlet.src/M000030.html +0 -20
  544. data/doc/classes/IntegerBasicFile.src/M000005.html +0 -18
  545. data/doc/classes/IntegerBasicFile.src/M000006.html +0 -18
  546. data/doc/classes/IntegerBasicFile.src/M000012.html +0 -18
  547. data/doc/classes/IntegerBasicFile.src/M000018.html +0 -18
  548. data/doc/classes/IntegerBasicFile.src/M000019.html +0 -18
  549. data/doc/classes/IntegerBasicFile.src/M000020.html +0 -18
  550. data/doc/classes/IntegerBasicFile.src/M000021.html +0 -18
  551. data/doc/classes/IntegerBasicFile.src/M000022.html +0 -18
  552. data/doc/classes/IntegerBasicFile.src/M000023.html +0 -18
  553. data/doc/classes/IntegerBasicFile.src/M000024.html +0 -18
  554. data/doc/classes/IntegerBasicFile.src/M000025.html +0 -18
  555. data/doc/classes/IntegerBasicFile.src/M000026.html +0 -18
  556. data/doc/classes/NADOLDisk.src/M000018.html +0 -20
  557. data/doc/classes/NADOLDisk.src/M000020.html +0 -50
  558. data/doc/classes/NADOLDisk.src/M000021.html +0 -20
  559. data/doc/classes/NADOLDisk.src/M000023.html +0 -50
  560. data/doc/classes/NADOLFile.src/M000030.html +0 -31
  561. data/doc/classes/NADOLFile.src/M000034.html +0 -31
  562. data/doc/classes/NADOLTokenisedFile.src/M000062.html +0 -28
  563. data/doc/classes/NADOLTokenisedFile.src/M000063.html +0 -28
  564. data/doc/classes/RDoc.src/M000033.html +0 -40
  565. data/doc/classes/RDoc.src/M000038.html +0 -40
  566. data/doc/classes/RDoc.src/M000055.html +0 -40
  567. data/doc/classes/RDoc.src/M000066.html +0 -40
  568. data/doc/classes/RDoc.src/M000068.html +0 -40
  569. data/doc/classes/RDoc.src/M000069.html +0 -40
  570. data/doc/classes/RDoc.src/M000074.html +0 -40
  571. data/doc/classes/SCAsmFile.src/M000028.html +0 -36
  572. data/doc/classes/SCAsmFile.src/M000035.html +0 -18
  573. data/doc/classes/SCAsmFile.src/M000038.html +0 -36
  574. data/doc/classes/SCAsmFile.src/M000041.html +0 -18
  575. data/doc/classes/SCAsmFile.src/M000042.html +0 -18
  576. data/doc/classes/SCAsmFile.src/M000043.html +0 -18
  577. data/doc/classes/SCAsmFile.src/M000044.html +0 -36
  578. data/doc/classes/SCAsmFile.src/M000049.html +0 -18
  579. data/doc/classes/SCAsmFile.src/M000050.html +0 -18
  580. data/doc/classes/SCAsmFile.src/M000051.html +0 -18
  581. data/doc/classes/SCAsmFile.src/M000052.html +0 -18
  582. data/doc/classes/SCAsmFile.src/M000055.html +0 -18
  583. data/doc/classes/SCAsmFile.src/M000056.html +0 -18
  584. data/doc/classes/SCAsmFile.src/M000057.html +0 -18
  585. data/doc/classes/ShowFileServlet.src/M000026.html +0 -21
  586. data/doc/classes/ShowFileServlet.src/M000038.html +0 -22
  587. data/doc/classes/ShowFileServlet.src/M000039.html +0 -22
  588. data/doc/classes/ShowFileServlet.src/M000044.html +0 -22
  589. data/doc/classes/TestDOSDisks.src/M000002.html +0 -19
  590. data/doc/classes/TestDOSDisks.src/M000003.html +0 -25
  591. data/doc/classes/TestDOSDisks.src/M000006.html +0 -24
  592. data/doc/classes/TestDOSDisks.src/M000007.html +0 -19
  593. data/doc/classes/TestDOSDisks.src/M000013.html +0 -19
  594. data/doc/classes/TestDisassembly.src/M000005.html +0 -19
  595. data/doc/classes/TestDisassembly.src/M000006.html +0 -19
  596. data/doc/classes/TestDisassembly.src/M000009.html +0 -19
  597. data/doc/classes/TestDisassembly.src/M000016.html +0 -19
  598. data/doc/classes/TestDisassembly.src/M000022.html +0 -19
  599. data/doc/classes/TestDisassembly.src/M000025.html +0 -19
  600. data/doc/classes/TestDisassembly.src/M000028.html +0 -19
  601. data/doc/classes/TestNADOLDisks.src/M000055.html +0 -19
  602. data/doc/classes/TestNADOLDisks.src/M000056.html +0 -19
  603. data/doc/classes/TestNADOLDisks.src/M000057.html +0 -19
  604. data/doc/classes/TestNADOLDisks.src/M000058.html +0 -34
  605. data/doc/classes/TestNADOLDisks.src/M000062.html +0 -19
  606. data/doc/classes/TestNADOLDisks.src/M000063.html +0 -34
  607. data/doc/classes/TextFile.src/M000025.html +0 -18
  608. data/doc/classes/TextFile.src/M000026.html +0 -18
  609. data/doc/classes/TextFile.src/M000029.html +0 -18
  610. data/doc/classes/TextFile.src/M000030.html +0 -18
  611. data/doc/classes/TextFile.src/M000035.html +0 -18
  612. data/doc/classes/TextFile.src/M000045.html +0 -18
  613. data/doc/classes/TextFile.src/M000046.html +0 -18
  614. data/doc/classes/TextFile.src/M000047.html +0 -20
  615. data/doc/classes/TextFile.src/M000052.html +0 -18
  616. data/doc/classes/TextFile.src/M000053.html +0 -18
  617. data/doc/classes/TextFile.src/M000054.html +0 -20
  618. data/doc/classes/TextFile.src/M000063.html +0 -18
  619. data/doc/classes/TextFile.src/M000064.html +0 -18
  620. data/doc/classes/TextFile.src/M000065.html +0 -18
  621. data/doc/classes/TextFile.src/M000066.html +0 -18
  622. data/doc/classes/TextFile.src/M000067.html +0 -18
  623. data/doc/classes/TextFile.src/M000068.html +0 -20
  624. data/doc/classes/TextFile.src/M000071.html +0 -18
  625. data/doc/classes/TextFile.src/M000072.html +0 -18
  626. data/doc/classes/TextFile.src/M000073.html +0 -20
  627. data/doc/dot/f_0.png +0 -0
  628. data/doc/dot/f_1.dot +0 -14
  629. data/doc/dot/f_1.png +0 -0
  630. data/doc/dot/f_10.dot +0 -32
  631. data/doc/dot/f_10.png +0 -0
  632. data/doc/dot/f_11.dot +0 -32
  633. data/doc/dot/f_11.png +0 -0
  634. data/doc/dot/f_12.dot +0 -14
  635. data/doc/dot/f_12.png +0 -0
  636. data/doc/dot/f_2.dot +0 -23
  637. data/doc/dot/f_2.png +0 -0
  638. data/doc/dot/f_3.dot +0 -32
  639. data/doc/dot/f_3.png +0 -0
  640. data/doc/dot/f_4.dot +0 -88
  641. data/doc/dot/f_4.png +0 -0
  642. data/doc/dot/f_5.dot +0 -23
  643. data/doc/dot/f_5.png +0 -0
  644. data/doc/dot/f_6.dot +0 -32
  645. data/doc/dot/f_6.png +0 -0
  646. data/doc/dot/f_7.dot +0 -49
  647. data/doc/dot/f_7.png +0 -0
  648. data/doc/dot/f_8.dot +0 -30
  649. data/doc/dot/f_8.png +0 -0
  650. data/doc/dot/f_9.dot +0 -32
  651. data/doc/dot/f_9.png +0 -0
  652. data/doc/dot/m_0_0.dot +0 -30
  653. data/doc/dot/m_0_0.png +0 -0
  654. data/doc/dot/m_6_0.dot +0 -30
  655. data/doc/dot/m_6_0.png +0 -0
  656. data/doc/dot/m_8_0.dot +0 -30
  657. data/doc/dot/m_8_0.png +0 -0
  658. data/doc/files/bin/dskserver_rb.html +0 -247
  659. data/doc/files/bin/dskserver_rb.src/M000001.html +0 -22
  660. data/doc/files/bin/dskserver_rb.src/M000002.html +0 -19
  661. data/doc/files/bin/dskserver_rb.src/M000003.html +0 -62
  662. data/doc/files/bin/dskserver_rb.src/M000004.html +0 -39
  663. data/doc/files/bin/dskserver_rb.src/M000005.html +0 -26
data/bin/dskexplorer.rb CHANGED
@@ -83,10 +83,7 @@ def make_absolute_path(relative_path)
83
83
  @@root_directory+relative_path
84
84
  end
85
85
  end
86
-
87
- def html_escape(s)
88
- s.gsub("&","&amp;").gsub("<","&lt;")
89
- end
86
+ def html_escape(s) s.gsub("&","&amp;").gsub("<","&lt;")end
90
87
  def uri_encode(s)
91
88
  #standard URI.escape appears to miss some important characters
92
89
  require 'uri'
@@ -121,7 +118,7 @@ def get_directories_and_files(relative_path)
121
118
  [directories,dsk_files]
122
119
  end
123
120
 
124
- def make_navigation_path(relative_path,filename=nil)
121
+ def make_navigation_path(relative_path,filename=nil,display_mode=nil)
125
122
  path_parts=relative_path.split("/")
126
123
  #make the cookie-crumb-trail
127
124
  partial_path=""
@@ -137,8 +134,12 @@ def make_navigation_path(relative_path,filename=nil)
137
134
  end
138
135
  end
139
136
 
137
+ mode_param=""
138
+ if !display_mode.nil? then
139
+ mode_param="&mode=#{display_mode}"
140
+ end
140
141
  if !filename.nil? then
141
- s<<"/<a href=/showfile/#{uri_encode(relative_path)+'?filename='+uri_encode(filename)}>#{filename}</a>"
142
+ s<<"/<a href=/showfile/#{uri_encode(relative_path)+'?filename='+uri_encode(filename)}#{mode_param}>#{filename}</a>"
142
143
  end
143
144
 
144
145
 
@@ -166,21 +167,25 @@ def make_catalog(relative_path)
166
167
  begin
167
168
  absolute_path=make_absolute_path(relative_path)
168
169
  dsk=get_dsk_from_cache(absolute_path)
170
+ s<<"<br>file system: #{dsk.file_system}<br>sector order: #{dsk.sector_order}<br>tracks: #{dsk.track_count}<br>"
169
171
  if (dsk.respond_to?(:files)) then
170
172
  s<<"<table>\n<th>TYPE</th><th>SIZE (BYTES)</th><th>NAME</th></tr>\n"
171
- dsk.files.each_value do |f|
172
- display_url="/showfile/#{uri_encode(relative_path)+'?filename='+uri_encode(f.filename)}"
173
+ dsk.files.keys.sort.each do |full_path|
174
+ f=dsk.files[full_path]
175
+ display_url="/showfile/#{uri_encode(relative_path)+'?filename='+uri_encode(full_path)}"
173
176
  if f.respond_to?(:file_type) then
174
177
  s<<"<td>#{f.file_type}</td>"
175
178
  else
176
179
  s<<"<td></td>"
177
180
  end
178
181
  s<<"<td>#{sprintf('%03d',f.contents.length)}</td>"
179
- s<<"<td>#{f.filename}</td>"
182
+ s<<"<td>#{full_path}</td>"
180
183
  s<<"<td><a href=#{display_url}&mode=hex>hex dump</a></td>"
181
- if f.respond_to?(:disassembly)
184
+ if f.can_be_picture? then
185
+ s<<"<td><a href=#{display_url}&mode=png>picture</a></td>"
186
+ elsif f.respond_to?(:disassembly)
182
187
  s<<"<td><a href=#{display_url}&mode=list>disassembly</a></td>"
183
- else
188
+ else
184
189
  s<<"<td><a href=#{display_url}&mode=text>text</a></td>"
185
190
  end
186
191
  s<<"</tr>\n"
@@ -195,51 +200,48 @@ def make_catalog(relative_path)
195
200
  end
196
201
  s
197
202
  end
198
- def show_sector(relative_path,track,sector)
199
- track="0" if track.nil?
200
- sector="0" if sector.nil?
201
- track=("0"+track).to_i
202
- sector=("0"+sector).to_i
203
- absolute_path=make_absolute_path(relative_path)
204
- dsk=get_dsk_from_cache(absolute_path)
205
- uri="/showsector/#{uri_encode(relative_path)}"
206
- s=""
207
- s<<"<table><tr><th colspan=16>TRACK</th></tr>"
208
- s<<"<tr>"
209
- 0.upto(0x22) do |track_no|
210
- if track_no==track then
211
- s<<"<td><b>$#{sprintf('%02X',track)}</b></td>"
212
- else
213
- s<<"<td><a href=#{uri}?track=#{track_no}&sector=0>$#{sprintf('%02X',track_no)}</a></td>"
214
- end
215
- if track_no==0x0f ||track_no==0x1f then
216
- s<<"</tr></tr>"
217
- end
218
- end
219
- s<<"</tr>"
220
- s<<"</table>"
221
-
222
- s<<"<table><tr><th colspan=16>SECTOR</th></tr>"
223
- s<<"<tr>"
224
- 0.upto(0x0F) do |sector_no|
225
- if sector_no==sector then
226
- s<<"<td><b>$#{sprintf('%02X',sector)}</b></td>"
227
- else
228
- s<<"<td><a href=#{uri}?track=#{track}&sector=#{sector_no}>$#{sprintf('%02X',sector_no)}</a></td>"
229
- end
230
- end
231
- s<<"</tr>"
232
- s<<"</table>"
233
-
234
-
235
- s<<"<pre>\n"
236
- s<<html_escape(dsk.dump_sector(track,sector))
237
- s<<"</pre>\n"
238
- s<<"<p>"
239
- s<<"<pre>\n"
240
- s<<html_escape(dsk.disassemble_sector(track,sector))
241
- s<<"</pre>\n"
242
-
203
+ def show_sector(relative_path,track,sector)
204
+ track="0" if track.nil?
205
+ sector="0" if sector.nil?
206
+ track=("0"+track).to_i
207
+ sector=("0"+sector).to_i
208
+ absolute_path=make_absolute_path(relative_path)
209
+ dsk=get_dsk_from_cache(absolute_path)
210
+ uri="/showsector/#{uri_encode(relative_path)}"
211
+ s=""
212
+ s<<"<table><tr><th colspan=16>TRACK</th></tr>"
213
+ s<<"<tr>"
214
+ 0.upto(dsk.track_count-1) do |track_no|
215
+ if track_no==track then
216
+ s<<"<td><b>$#{sprintf('%02X',track)}</b></td>"
217
+ else
218
+ s<<"<td><a href=#{uri}?track=#{track_no}&sector=0>$#{sprintf('%02X',track_no)}</a></td>"
219
+ end
220
+ if track_no>0 && track_no%0x10==0 then
221
+ s<<"</tr></tr>"
222
+ end
223
+ end
224
+ s<<"</tr>"
225
+ s<<"</table>"
226
+ s<<"<table><tr><th colspan=16>SECTOR</th></tr>"
227
+ s<<"<tr>"
228
+ 0.upto(0x0F) do |sector_no|
229
+ if sector_no==sector then
230
+ s<<"<td><b>$#{sprintf('%02X',sector)}</b></td>"
231
+ else
232
+ s<<"<td><a href=#{uri}?track=#{track}&sector=#{sector_no}>$#{sprintf('%02X',sector_no)}</a></td>"
233
+
234
+ end
235
+ end
236
+ s<<"</tr>"
237
+ s<<"</table>"
238
+ s<<"<pre>\n"
239
+ s<<html_escape(dsk.dump_sector(track,sector))
240
+ s<<"</pre>\n"
241
+ s<<"<p>"
242
+ s<<"<pre>\n"
243
+ s<<html_escape(dsk.disassemble_sector(track,sector))
244
+ s<<"</pre>\n"
243
245
  end
244
246
 
245
247
  def show_file(relative_path,filename,display_mode)
@@ -252,10 +254,13 @@ def show_file(relative_path,filename,display_mode)
252
254
  s="<hl><pre>"
253
255
  if display_mode=="hex" then
254
256
  s<<html_escape(file.hex_dump)
255
- elsif display_mode=="list" && file.respond_to?(:disassembly)
256
- then s<<html_escape(file.disassembly)
257
+ elsif display_mode=="list" && file.respond_to?(:disassembly) then
258
+ s<<html_escape(file.disassembly)
259
+ elsif display_mode=="png" && file.respond_to?(:to_png) then
260
+ png_url="/png/#{uri_encode(relative_path)}?filename=#{uri_encode(filename)}"
261
+ s<<"<IMG SRC=#{png_url} HEIGHT=384 WIDTH=560>"
257
262
  else
258
- s<< (file.to_s)
263
+ s<<html_escape(file.to_s)
259
264
  end
260
265
  s<<"\n</pre><hl>"
261
266
  end
@@ -284,10 +289,23 @@ class ShowFileServlet < HTTPServlet::AbstractServlet
284
289
  filename=URI.unescape(req.query['filename'])
285
290
  display_mode=req.query['mode']
286
291
  res['Content-Type']="text/html"
287
- res.body=common_header+make_navigation_path(relative_path,filename)+show_file(relative_path,filename,display_mode)+common_footer
292
+ res.body=common_header+make_navigation_path(relative_path,filename,display_mode)+show_file(relative_path,filename,display_mode)+common_footer
288
293
  end
289
294
  end
290
295
 
296
+ class ShowPNGServlet < HTTPServlet::AbstractServlet
297
+ def do_GET(req,res)
298
+ relative_path=URI.unescape(req.path).sub(/^\/png/,"")
299
+ filename=URI.unescape(req.query['filename'])
300
+ pallete_mode=req.query['pallete_mode']
301
+ pallete_mode=:"#{pallete_mode}" unless pallete_mode.nil? #convert string to symbol
302
+ absolute_path=make_absolute_path(relative_path)
303
+ dsk=get_dsk_from_cache(absolute_path)
304
+ file=dsk.files[filename]
305
+ res['Content-Type']="image/png"
306
+ res.body=file.to_png(pallete_mode)
307
+ end
308
+ end
291
309
  class ShowSectorServlet < HTTPServlet::AbstractServlet
292
310
  def do_GET(req,res)
293
311
  relative_path=URI.unescape(req.path).sub(/^\/showsector/,"")
@@ -308,7 +326,7 @@ s.mount("/dir",DirectoryServlet)
308
326
  s.mount("/catalog",CatalogServlet)
309
327
  s.mount("/showfile",ShowFileServlet)
310
328
  s.mount("/showsector",ShowSectorServlet)
311
-
329
+ s.mount("/png",ShowPNGServlet)
312
330
  #default page - for now, just redirect to the default dir page
313
331
  s.mount("/",DirectoryServlet)
314
332
 
data/bin/dsktool.rb CHANGED
@@ -1,150 +1,251 @@
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 and NADOL 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
1
+ #!/usr/bin/env ruby
35
2
 
36
- DSKTOOL_VERSION="0.2.1"
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","--") {extract_mode=:raw}
58
- opts.on("-c","--catalog") {catalog=true}
59
- opts.on("-x","--explode") {explode=true}
3
+ # dsktool.rb
4
+ #
5
+ # == Synopsis
6
+ #
7
+ # Manipulate DSK format files (as used by Apple 2 emulators)
8
+ #
9
+ # == Usage
10
+ #
11
+ # dsktool.rb [switches] <filename.dsk>
12
+ # -a | --add FILENAME (*) add file
13
+ # -b | --base BASE use BASE as address to load Binary File
14
+ # this will add 2 bytes to the start of file
15
+ # BASE should be a hex number
16
+ # (can be prefixed with $, 0x, or nothing)
17
+ # -B | --bootcode FILENAME FILENAME gets written to track 0, sector 0
18
+ # FILENAME should be compiled to run at $0801
19
+ # FILENAME can be up to 4Kb in size.
20
+ # -c | --catalog display catalog
21
+ # -d | --dump FILENAME hex dump
22
+ # -D | --diskdump hex dump of entire disk
23
+ # --delete FILENAME (*) delete named file
24
+ # -e | --extract FILENAME extract file by name (either to stdout,
25
+ # or file specified by --output)
26
+ # -h | --help display this message
27
+ # -I | --init FILESYSTEM initialise the disk with the specified filesytem
28
+ # DSK will be created if it doesn't exist.
29
+ # FILESYSTEM can be : prodos,dos33,nadol,pascal,none
30
+ # -l | --list FILENAME monitor style listing (disassembles 65C02 opcodes)
31
+ # -o | --output FILENAME specify name to save extracted file as
32
+ # -r | --raw don't convert files to ASCII
33
+ # -S | --showtrace show full stack trace on any error
34
+ # -t | --filetype FILETYPE file type for file being added.
35
+ # Can be a single letter (A/I/B/T) or number.
36
+ # Default for DOS 3.3 is 0x00 (Text)
37
+ # -T | --tokenise (*) tokenise input file before adding
38
+ # -v | --version show version number
39
+ # -x | --explode extract all files
40
+ #
41
+ # (*) options marked with an asterisk are only available for
42
+ # file systems that have READ/WRITE support.
43
+ #
44
+ # Currently supported filesystems:
45
+ # Apple Pascal (read only)
46
+ # DOS 3.3 (READ/WRITE)
47
+ # NADOL (READ/WRITE)
48
+ # ProDOS 8 (read only)
49
+ #
50
+ # Supports 16 sector DSK images
51
+ # files with extension .gz will be read & written using gzip
52
+ # input files can be URLs
53
+ #
54
+ # examples:
55
+ # dsktool.rb -c http://jamtronix.com/dsks/apshai.dsk.gz
56
+ # dsktool.rb --list fid -o fid.lst DOS3MASTR.dsk
57
+ # dsktool.rb --extract "COLOR DEMOSOFT" DOS3MASTR.dsk
58
+ # dsktool.rb -e HELLO -o HELLO.bas DOS3MASTR.dsk
59
+ # dsktool.rb -x DOS3MASTR.dsk.gz -o /tmp/DOS3MASTR/
60
+ # dsktool.rb --add STARTUP -T nadol.po
61
+ # dsktool.rb --add c:\src\dosdemo\a.out -t B -b $2000 dosdemo.dsk
62
+ # dsktool.rb --init dos33 new_dos_disk.dsk.gz
63
+ # dsktool.rb --I none -B /tmp/a.out demo1.dsk
64
+
65
+
66
+ DSKTOOL_VERSION="0.4.1"
67
+
68
+ #make sure the relevant folder with our libraries is in the require path
69
+ lib_path=File.expand_path(File.dirname(__FILE__)+"//..//lib")
70
+ $:.unshift(lib_path) unless $:.include?(lib_path)
71
+ require 'rubygems'
72
+ require 'optparse'
73
+ require 'rdoc_patch' #RDoc::usage patched to work under gem executables
74
+
75
+ catalog=false
76
+ explode=false
77
+ diskdump=false
78
+ show_trace=false
79
+ add_filename=nil
80
+ output_filename=nil
81
+ extract_filename=nil
82
+ delete_filename=nil
83
+ add_file_options={}
84
+ init_filesystem=nil
85
+ boot_filename=nil
86
+
87
+ extract_mode=:default
88
+ explode_directory=nil
89
+ opts=OptionParser.new
90
+ opts.on("-h","--help") {RDoc::usage_from_file(__FILE__)}
91
+ opts.on("-v","--version") do
92
+ puts File.basename($0)+" "+DSKTOOL_VERSION
93
+ exit
94
+ end
95
+ opts.on("-r","--raw") {extract_mode=:raw}
96
+ opts.on("-c","--catalog") {catalog=true}
97
+ opts.on("-D","--diskdump") {diskdump=true}
98
+ opts.on("-x","--explode") {explode=true}
60
99
  opts.on("-l","--list FILENAME",String) do |val|
61
100
  extract_filename=val.upcase
62
101
  extract_mode=:list
63
102
  end
103
+
104
+ opts.on("-S","--showtrace") {show_trace=true}
105
+
64
106
  opts.on("-d","--dump FILENAME",String) do |val|
65
107
  extract_filename=val.upcase
66
108
  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.respond_to?(:dump_catalog)) then
83
- dsk.dump_catalog
84
- else
85
- puts "#{filename} does not have a recognised file system"
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 (extract_mode==:raw) 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.respond_to?(:disassembly)
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.
109
+ end
110
+ opts.on("-e","--extract FILENAME",String) {|val| extract_filename=val.upcase}
111
+ opts.on("-o","--output FILENAME",String) {|val| output_filename=val}
112
+ opts.on("-a","--add FILENAME",String) {|val| add_filename=val}
113
+ opts.on("-I","--init FILESYSTEM",String) {|val| init_filesystem=val}
114
+ opts.on("-B","--bootcode FILENAME",String) {|val| boot_filename=val}
115
+ opts.on("-t","--filetype FILETYPE",String) {|val| add_file_options[:filetype]=val}
116
+ opts.on("-T","--tokenise") {add_file_options[:tokenise]=true}
117
+ opts.on("-delete","--delete FILENAME",String) {|val| delete_filename=val}
118
+ opts.on("-b","--base BASE",String) {|val| add_file_options[:base]=val}
119
+
120
+ filename=opts.parse(ARGV)[0] rescue RDoc::usage_from_file(__FILE__,'Usage')
121
+ RDoc::usage_from_file(__FILE__,'Usage') if (filename.nil?)
122
+
123
+
124
+ require 'DSK'
125
+
126
+ begin #to wrap a rescue clause
127
+
128
+ begin
129
+
130
+ if !init_filesystem.nil? then
131
+ dsk=DSK.create_new(:"#{init_filesystem}")
132
+ dsk.save_as(filename)
133
+ end
134
+
135
+
136
+ dsk=DSK.read(filename)
137
+ rescue
138
+ #if we run dsktool.rb in a batch or shell file iterating over a bunch of dsk files, we may not know what file
139
+ #has the error
140
+ STDERR << "error while parsing #{filename}\n"
141
+ raise
142
+ end
143
+
144
+ output_file= case
145
+ when (output_filename.nil?) || (explode) then STDOUT
146
+ else File.open(output_filename,"wb")
147
+ end
148
+
149
+ puts "#{filename}\nsector order:\t#{dsk.sector_order}\nfilesystem:\t#{dsk.file_system}"
150
+ if (dsk.respond_to?(:volume_name)) then
151
+ puts "volume name:\t#{dsk.volume_name}"
152
+ end
153
+ if (diskdump) then
154
+ puts dsk.hex_dump
155
+ end
156
+
157
+ if !boot_filename.nil? then
158
+ dsk.set_boot_track(File.open(boot_filename,"rb").read)
159
+ dsk.save_as(filename)
160
+ end
161
+
162
+ if (!delete_filename.nil?) then
163
+ if dsk.files[delete_filename].nil? then
164
+ puts "#{delete_filename.upcase} not found in #{filename}"
165
+ else
166
+ puts "deleting #{delete_filename}"
167
+ dsk.delete_file(delete_filename)
168
+ dsk.save_as(filename)
169
+ end
170
+ end
171
+
172
+ if (!add_filename.nil?) then
173
+ filecontents=File.open(add_filename,"rb").read
174
+ new_file=dsk.make_file(File.basename(add_filename).upcase,filecontents,add_file_options)
175
+ dsk.add_file(new_file)
176
+ dsk.save_as(filename)
177
+ end
178
+
179
+ if(catalog) then
180
+ if (dsk.respond_to?(:dump_catalog)) then
181
+ puts dsk.dump_catalog
182
+ else
183
+ puts "#{filename} does not have a recognised file system"
184
+ end
185
+ end
186
+
187
+ if(explode) then
188
+ output_dir=output_filename.nil??File.basename(filename,".*"):output_filename
189
+ if !(File.exists?(output_dir)) then
190
+ Dir.mkdir(output_dir)
191
+ end
192
+
193
+ dsk.files.each_value do |f|
194
+ if (extract_mode==:raw) then
195
+ output_filename=output_dir+"/"+f.filename+".raw"
196
+ File.open(output_filename,"wb") <<f.contents
197
+ else
198
+ output_filename=output_dir+"/"+f.filename+f.file_extension
199
+ File.open(output_filename,"wb") <<f
200
+ end
201
+ end
202
+ end
203
+
204
+
205
+ if (!extract_filename.nil?) then
206
+ file=dsk.files[extract_filename]
207
+ if file.nil? then
208
+ puts "'#{extract_filename}' not found in #{filename}"
209
+ else
210
+ output_file<< case extract_mode
211
+ when :raw then file.contents
212
+ when :hex then file.hex_dump
213
+ when :list then
214
+ if file.respond_to?(:disassembly)
215
+ file.disassembly
216
+ else
217
+ puts "'#{extract_filename}' is not a binary file"
218
+ exit
219
+ end
220
+ else file.to_s
221
+ end
222
+ end
223
+ end
224
+ rescue
225
+ puts $!
226
+ raise if show_trace
227
+ end
228
+ # == Author
229
+ # Jonno Downes (jonno@jamtronix.com)
230
+ #
231
+ # == Copyright
232
+ # Copyright (c) 2007 Jonno Downes (jonno@jamtronix.com)
233
+ #
234
+ #Permission is hereby granted, free of charge, to any person obtaining
235
+ #a copy of this software and associated documentation files (the
236
+ #"Software"), to deal in the Software without restriction, including
237
+ #without limitation the rights to use, copy, modify, merge, publish,
238
+ #distribute, sublicense, and/or sell copies of the Software, and to
239
+ #permit persons to whom the Software is furnished to do so, subject to
240
+ #the following conditions:
241
+ #
242
+ # The above copyright notice and this permission notice shall be
243
+ # included in all copies or substantial portions of the Software.
244
+ #
245
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
246
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
247
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
248
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
249
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
250
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
251
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/bin/romdump.rb ADDED
@@ -0,0 +1,65 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # romdump.rb
4
+ #
5
+ # == Synopsis
6
+ #
7
+ # display a BIN file assuming it is a Apple 2 ROM dump
8
+ #
9
+ # == Usage
10
+ #
11
+ # romdump.rb [switches] <filename.bin>
12
+ # -b | --base BASE use BASE as start of disassembly (implies --list)
13
+ # BASE will be interpreted as a hex number
14
+ # (can be prefixed with $, 0x, or nothing)
15
+ # -f | --font treat all bytes as 8 bit wide font
16
+ # -l | --list list disassembly of all bytes
17
+ # -x | --hex dump as hex and ASCII
18
+ # -h | --help display this message
19
+ # -v | --version show version number
20
+ #
21
+ # switchs can be combined, as in
22
+ # romdump.rb edm.bin -xl -b $D000
23
+
24
+
25
+ ROMDUMP_VERSION="0.0.1"
26
+
27
+ #make sure the relevant folder with our libraries is in the require path
28
+ lib_path=File.expand_path(File.dirname(__FILE__)+"//..//lib")
29
+ $:.unshift(lib_path) unless $:.include?(lib_path)
30
+ require 'rubygems'
31
+ require 'optparse'
32
+ require 'rdoc_patch' #RDoc::usage patched to work under gem executables
33
+ base_address=0
34
+ font=false
35
+ hex=false
36
+ list=false
37
+ opts=OptionParser.new
38
+ opts.on("-h","--help") {RDoc::usage_from_file(__FILE__)}
39
+ opts.on("-v","--version") do
40
+ puts File.basename($0)+" "+ROMDUMP_VERSION
41
+ exit
42
+ end
43
+ opts.on("-f","--font"){font=true}
44
+ opts.on("-x","--hex"){hex=true}
45
+ opts.on("-l","--list"){list=true}
46
+ opts.on("-b","--base BASE",String) do |val|
47
+ base_address=val.tr("$","").hex
48
+ list=true
49
+ end
50
+ filename=opts.parse(ARGV)[0] rescue RDoc::usage_from_file(__FILE__,'Usage')
51
+ RDoc::usage_from_file(__FILE__,'Usage') if (filename.nil?)
52
+
53
+ file_bytes=open(filename,"rb").read
54
+
55
+ require 'DumpUtilities'
56
+ require 'D65'
57
+ if (font) then
58
+ puts DumpUtilities.font_dump(file_bytes)
59
+ end
60
+ if (hex) then
61
+ puts DumpUtilities.hex_dump(file_bytes)
62
+ end
63
+ if (list) then
64
+ puts D65.disassemble(file_bytes,base_address)
65
+ end