dsktool 0.2.1 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
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