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/lib/NADOLDisk.rb CHANGED
@@ -9,25 +9,186 @@ $:.unshift(File.dirname(__FILE__)) unless
9
9
  # 0C-0D - filesize (low byte first)
10
10
  # 0E - track of track sector list sector
11
11
  # 0F - sector of track sector list sector
12
-
12
+ #
13
13
  #TRACK/SECTOR LIST FORMAT
14
14
  # pairs of track/sectors in order. up to 128 entries [assumes that no file can be > 128 sectors]
15
+ #
16
+ #SECTOR USAGE BITMAP
17
+ #is at Track $00, Sector $2, from bytes $20 .. $65
18
+ #bitmap is of form:
19
+ #
20
+ # ----hi bit--
21
+ # | |
22
+ # 01234567 89ABCDEF
23
+ # ^^^^^^ ^^^^^^^
24
+ # low byte hi byte
15
25
 
16
26
  require 'NADOLFile'
17
27
 
18
28
  class NADOLDisk < DSK
19
29
 
20
- def dump_catalog
21
- files.each_value { |file|
22
- puts "#{sprintf('% 6d',file.contents.length)} #{file.filename}"
23
- }
30
+ def dump_catalog
31
+ s=""
32
+ files.keys.sort.each { |file_name|
33
+ file=files[file_name]
34
+ s<< "#{sprintf('% 6d',file.contents.length)} #{file.filename}\n"
35
+ }
36
+ s
24
37
  end
25
38
 
26
- def initialize(file_bytes)
27
- super(file_bytes)
39
+ def initialize(file_bytes,sector_order)
40
+ super(file_bytes,sector_order)
28
41
  self.read_catalog
42
+ end
43
+
44
+ def file_system
45
+ :nadol
29
46
  end
30
-
47
+
48
+
49
+ def set_sector(track,sector,contents)
50
+ super(track,sector,contents)
51
+
52
+ #now mark sector as used in sector usage list
53
+ #don't bother marking the 'system' sectors used
54
+ if ((track>0) || (sector>9)) then
55
+ sector_usage_bitmap_sector=get_sector(0,2)
56
+ offset_of_byte_containing_this_sector=0x20+(track*2)+(sector/8)
57
+ byte_containing_this_sector=sector_usage_bitmap_sector[offset_of_byte_containing_this_sector]
58
+ byte_containing_this_sector=byte_containing_this_sector|(2**(7-(sector%8)))
59
+ sector_usage_bitmap_sector[offset_of_byte_containing_this_sector]=byte_containing_this_sector
60
+ set_sector(0,2,sector_usage_bitmap_sector)
61
+ end
62
+ end
63
+
64
+
65
+ #iterate through the CATALOG to find either the named file or (if nil is passed in) an empty slot
66
+ def find_catalog_slot(filename)
67
+ track=0
68
+ sector=3
69
+ catalog_filename=NADOLFile.catalog_filename(filename.upcase) unless filename.nil?
70
+ while (sector<=9) do
71
+ sector_data=get_sector(track,sector)
72
+ (0..15).each do |slot_no|
73
+ slot_start=slot_no*0x10
74
+ if (filename.nil? && (sector_data[slot_start]==0x00)|| (sector_data[slot_start]==0xFF)) then
75
+ return DSKTrackSector.new(track,sector,slot_start)
76
+ end
77
+ if (!filename.nil?) && (sector_data[slot_start..slot_start+0x0B]==catalog_filename) then
78
+ return DSKTrackSector.new(track,sector,slot_start)
79
+ end
80
+ end
81
+ sector+=1
82
+ end
83
+ nil
84
+ end
85
+
86
+ #iterate through the sector usage bitmap, return a list of [track,sector] for sectors marked available
87
+ def free_sector_list
88
+ sector_usage_bitmap=get_sector(0,2)[0x20..0x65]
89
+ free_sectors=[]
90
+ (0..(sector_usage_bitmap.length/2)-1).each do |track|
91
+ track_bitmap_lo=sector_usage_bitmap[track*2]
92
+ track_bitmap_hi=sector_usage_bitmap[1+track*2]
93
+ (0..7).each do |sector|
94
+ if ((track_bitmap_lo & (2**(7-sector)))==0) then
95
+ free_sectors<<DSKTrackSector.new(track,sector)
96
+ end
97
+ if ((track_bitmap_hi & (2**(7-sector)))==0) then
98
+ free_sectors<<DSKTrackSector.new(track,sector+8)
99
+ end
100
+ end
101
+ end
102
+ free_sectors.sort
103
+ end
104
+
105
+ def make_file(filename,contents,file_options={})
106
+ if (file_options[:tokenise]) then
107
+ return NADOLTokenisedFile.new(filename,NADOLTokenisedFile.tokenise(contents))
108
+ else
109
+ return NADOLFile.new(filename,contents)
110
+ end
111
+ end
112
+
113
+ def delete_file(filename)
114
+ this_files_catalog_slot=find_catalog_slot(filename)
115
+ #if file not in catalog, do nothing
116
+ return if this_files_catalog_slot.nil?
117
+ file_descriptive_entry=get_sector(this_files_catalog_slot.track_no,this_files_catalog_slot.sector_no)[this_files_catalog_slot.offset..this_files_catalog_slot.offset+0x0f]
118
+
119
+ #mark sector as free in sector usage list
120
+ sector_usage_bitmap_sector=get_sector(0,2)
121
+ sectors_to_mark_available=get_track_sector_list(file_descriptive_entry[0x0E],file_descriptive_entry[0x0F])
122
+ sectors_to_mark_available<<DSKTrackSector.new(file_descriptive_entry[0x0E],file_descriptive_entry[0x0F])
123
+ sectors_to_mark_available.each do |ts|
124
+ offset_of_byte_containing_this_sector=0x20+(ts.track_no*2)+(ts.sector_no/8)
125
+ byte_containing_this_sector=sector_usage_bitmap_sector[offset_of_byte_containing_this_sector]
126
+ byte_containing_this_sector=byte_containing_this_sector&(0xff-(2**(7-(ts.sector_no%8))))
127
+ sector_usage_bitmap_sector[offset_of_byte_containing_this_sector]=byte_containing_this_sector
128
+ end
129
+ set_sector(0,2,sector_usage_bitmap_sector)
130
+
131
+ #mark slot as available in catalog
132
+ catalog_sector=get_sector(this_files_catalog_slot.track_no,this_files_catalog_slot.sector_no)
133
+ catalog_sector[this_files_catalog_slot.offset]=0xFF
134
+ set_sector(this_files_catalog_slot.track_no,this_files_catalog_slot.sector_no,catalog_sector)
135
+ end
136
+
137
+
138
+ #given a track and sector, treat it as a track/sector list and return an array containing track/sector pairs
139
+ def get_track_sector_list(ts_list_track_no,ts_list_sector_no)
140
+ ts_list_sector=get_sector(ts_list_track_no,ts_list_sector_no)
141
+ ts_list=[]
142
+ for entry_number in 0..0x7f
143
+ data_track_no=ts_list_sector[entry_number*2]
144
+ data_sector_no=ts_list_sector[entry_number*2+1]
145
+ if( (data_track_no!=0 || data_sector_no!=0) && data_track_no<track_count && data_sector_no<=0x0f) then
146
+ ts_list<<DSKTrackSector.new(data_track_no,data_sector_no)
147
+ end
148
+ end
149
+ ts_list
150
+ end
151
+
152
+ #add a file to the in-memory image of this DSK
153
+ def add_file(file)
154
+ raise "only NADOLFiles may be added to NADOL format disks!" unless file.kind_of?(NADOLFile)
155
+
156
+ delete_file(file.filename) unless files[file.filename].nil?
157
+ catalog_slot=find_catalog_slot(nil)
158
+ raise "CATALOG IS FULL!" if catalog_slot.nil?
159
+
160
+ free_sectors=free_sector_list
161
+
162
+ sectors_needed=1+file.length_in_sectors
163
+ raise "not enough free space - #{sectors_needed} sectors needed, #{free_sector_list.length} available " unless sectors_needed<=free_sectors.length
164
+
165
+ #for each sector in the file, copy it to disk and then record it in the track/sector list
166
+ track_sector_list="\0"*256
167
+ track_sector_list_sector=free_sectors[0]
168
+ (0..sectors_needed-2).each do |sector_in_file|
169
+ sector_to_use=free_sectors[sector_in_file+1]
170
+ track_sector_list[sector_in_file*2]=sector_to_use.track_no
171
+ track_sector_list[(sector_in_file*2)+1]=sector_to_use.sector_no
172
+ sector_contents=file.contents[(sector_in_file*256)..(sector_in_file*256)+255] || ""
173
+ set_sector(sector_to_use.track_no,sector_to_use.sector_no,sector_contents)
174
+ end
175
+ #write the track/sector list
176
+ set_sector(track_sector_list_sector.track_no,track_sector_list_sector.sector_no,track_sector_list)
177
+
178
+ #update the catalog
179
+ catalog_sector=get_sector(catalog_slot.track_no,catalog_slot.sector_no)
180
+ catalog_sector[catalog_slot.offset..catalog_slot.offset+0x0B]=file.catalog_filename
181
+ catalog_sector[catalog_slot.offset+0x0C]=file.contents.length % 0x100
182
+ catalog_sector[catalog_slot.offset+0x0D]=file.contents.length / 0x100
183
+ catalog_sector[catalog_slot.offset+0x0E]=track_sector_list_sector.track_no
184
+ catalog_sector[catalog_slot.offset+0x0F]=track_sector_list_sector.sector_no
185
+ set_sector(catalog_slot.track_no,catalog_slot.sector_no,catalog_sector)
186
+
187
+ raise "catalog not updated correctly!" if find_catalog_slot(file.filename).nil?
188
+ #reread the catalog to populate the files list
189
+ read_catalog
190
+ end
191
+
31
192
  #reads the catalog, and populate the "files" array with files
32
193
  #CATALOG will be at track $00, sector $03 to track $00, sector $09
33
194
  #each entry consists of $10 bytes, which are:
@@ -36,40 +197,36 @@ class NADOLDisk < DSK
36
197
  # 0E - track of track sector list sector
37
198
  # 0F - sector of track sector list sector
38
199
  def read_catalog
39
- 0x300.step(0x9FF,0x10) do |file_descriptive_entry_start|
40
- file_descriptive_entry=@file_bytes[file_descriptive_entry_start..file_descriptive_entry_start+0x0F]
41
- break if (file_descriptive_entry[0]==0xFF) # skip deleted files
42
- filename=""
43
- file_descriptive_entry[0..11].to_s.each_byte{|b| filename+=(b.%128).chr} #strip off high bit
44
- filename.sub!(/ *$/,"") #strip off trailing spaces
45
- full_sectors=file_descriptive_entry[0x0D]
46
- bytes_in_last_sector=file_descriptive_entry[0x0C]
47
- file_size=full_sectors*256+bytes_in_last_sector
48
- if (file_size>0) then
49
- contents=""
50
- ts_list_track_no=file_descriptive_entry[0x0E]
51
- ts_list_sector_no=file_descriptive_entry[0x0F]
52
- ts_list=get_sector(ts_list_track_no,ts_list_sector_no)
53
- entry_number=0
54
- while entry_number<full_sectors do
55
- data_track_no=ts_list[entry_number*2]
56
- data_sector_no=ts_list[entry_number*2+1]
57
- contents+=get_sector(data_track_no,data_sector_no)
58
- entry_number+=1
59
- end
60
- if (bytes_in_last_sector>0) then
61
- data_track_no=ts_list[entry_number*2]
62
- data_sector_no=ts_list[entry_number*2+1]
63
- contents+=get_sector(data_track_no,data_sector_no)[0..bytes_in_last_sector-1]
64
- end
65
- if (NADOLTokenisedFile.can_be_nadol_tokenised_file?(contents)) then
66
- @files[filename]= NADOLTokenisedFile.new(filename,contents)
67
- else
68
- @files[filename]= NADOLFile.new(filename,contents)
69
- end
70
- end
71
- end
72
- end
200
+ @files={}
201
+ track=0
202
+ sector=3
203
+ while (sector<=9) do
204
+ sector_data=get_sector(track,sector)
205
+ (0..15).each do |slot_no|
206
+ slot_offset=slot_no*0x10
207
+ file_descriptive_entry=sector_data[slot_offset..slot_offset+0x10]
208
+ if (file_descriptive_entry[0]!=0xFF && file_descriptive_entry[0]!=0x00) then # skip deleted /empty files
209
+ filename=""
210
+ file_descriptive_entry[0..11].to_s.each_byte{|b| filename+=(b.%128).chr} #strip off high bit
211
+ filename.sub!(/ *$/,"") #strip off trailing spaces
212
+ file_size=file_descriptive_entry[0x0D]*256+file_descriptive_entry[0x0C]
213
+ if (file_size>0) then
214
+ contents=""
215
+ get_track_sector_list(file_descriptive_entry[0x0E],file_descriptive_entry[0x0F]).each do |ts|
216
+ contents<<get_sector(ts.track_no,ts.sector_no)
217
+ end
218
+ contents=contents[0..file_size-1]
219
+ if (NADOLTokenisedFile.can_be_nadol_tokenised_file?(contents)) then
220
+ @files[filename]= NADOLTokenisedFile.new(filename,contents)
221
+ else
222
+ @files[filename]= NADOLBinaryFile.new(filename,contents)
223
+ end
224
+ end
225
+ end
226
+ end
227
+ sector+=1
228
+ end
229
+ end
73
230
  end
74
231
  # == Author
75
232
  # Jonno Downes (jonno@jamtronix.com)
data/lib/NADOLFile.rb CHANGED
@@ -2,38 +2,32 @@ $:.unshift(File.dirname(__FILE__)) unless
2
2
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
3
 
4
4
  require 'D65'
5
-
5
+ require 'DSKFile'
6
+ require 'HGR'
6
7
  #NADOL (Nibbles Away Disk Optimized Language) file
7
- class NADOLFile
8
- attr_accessor(:filename,:contents)
9
- def initialize(filename,contents)
10
- @filename=filename
11
- @contents=contents
12
- end
13
-
14
- def to_s
15
- @contents
16
- end
17
-
8
+ class NADOLFile < DSKFile
18
9
  def file_extension
19
10
  ".bin"
20
11
  end
21
- def hex_dump
22
- #assumes file is a multiple of 16 bytes, which it always should be
23
- s=""
24
- (0..(@contents.length/16)-1).each {|line_number|
25
- lhs=""
26
- rhs=""
27
- start_byte=line_number*16
28
- line=@contents[start_byte..start_byte+15]
29
- line.each_byte {|byte|
30
- lhs+= sprintf("%02X ", byte)
31
- rhs+= (byte%128).chr.sub(/[\x00-\x1f]/,'.')
32
- }
33
- s+=sprintf("%02X\t%s %s\n",start_byte,lhs,rhs)
34
- }
35
- s
36
- end
12
+
13
+ def catalog_filename
14
+ NADOLFile.catalog_filename(filename)
15
+ end
16
+
17
+ #render the filename in form suitable for inclusion in a NADOL catalog
18
+ def NADOLFile.catalog_filename(filename)
19
+ s=""
20
+ for i in 0..0X0B
21
+ c=(filename[i])
22
+ if c.nil? then
23
+ c=0xA0
24
+ else
25
+ c=(c|0x80)
26
+ end
27
+ s+=c.chr
28
+ end
29
+ s
30
+ end
37
31
  end
38
32
 
39
33
  #a file on a NADOL dsk that does not appear to be in NADOL tokenised format
@@ -41,21 +35,29 @@ class NADOLBinaryFile<NADOLFile
41
35
  def disassembly(start_address=0x8000)
42
36
  require 'D65'
43
37
  D65.disassemble(@contents,start_address)
38
+ end
39
+
40
+ def can_be_picture?
41
+ HGR.can_be_hgr_screen?(@contents)
42
+ end
43
+
44
+ def to_png(pallete_mode=:amber)
45
+ HGR.buffer_to_png(@contents)
44
46
  end
45
47
  end
46
48
 
47
49
 
48
50
  #file packed by the NADOL EDITOR application.
49
51
  #format is a series of unnumbered lines, where each line has the following format:
50
- # <Length> (8-bit: including length byte, line no, contents, zero>
51
- # <Tokens and/orCharacters>
52
- # <Zero byte> ($00, to mark the end of the S-C Asm source line)
52
+ # <Length> (8-bit: including length byte, contents, zero>
53
+ # <Tokens and/or Characters>
54
+ # <Zero byte> ($00, to mark the end of the line)
53
55
  # each byte in the line is interpreted as follows:
54
56
  # $00 - end of line marker
55
57
  # $01 - $64 - NADOL tokens
56
- # $65-$70 - ??? unknown
58
+ # $65 - $70 - ??? unknown
57
59
  # $71 - $7f - 1 to F spaces
58
- # $80-$FF - ASCII character with high bit set
60
+ # $80 - $FF - ASCII character with high bit set
59
61
  class NADOLTokenisedFile < NADOLFile
60
62
  NADOL_EDITOR_TOKENS = [
61
63
  "?", #00 (so we can use token as an index in to this array)
@@ -164,7 +166,7 @@ class NADOLTokenisedFile < NADOLFile
164
166
 
165
167
  #check whether a given series of bytes can be a valid NADOL tokenised file
166
168
  #heuristics are:
167
- # - bytes
169
+ #that each line starts with a line length and ends with a "0"
168
170
  def NADOLTokenisedFile.can_be_nadol_tokenised_file?(buffer)
169
171
  r=true
170
172
  i=0
@@ -178,10 +180,46 @@ class NADOLTokenisedFile < NADOLFile
178
180
  end
179
181
  r
180
182
  end
181
-
183
+ #
184
+ def NADOLTokenisedFile.tokenise(buffer)
185
+
186
+ s=""
187
+ buffer.each("\n") do |line|
188
+ #trim the trailing \n
189
+ line.chomp!
190
+ #first set the high bit in each char
191
+ for i in 0..line.length-1
192
+ line[i]=line[i]|0x80
193
+ end
194
+
195
+ #now replace token strings with token number
196
+ for i in 1..0x64
197
+ token=" "*NADOL_EDITOR_TOKENS[i].length
198
+ for j in 0..token.length-1
199
+ token[j]=NADOL_EDITOR_TOKENS[i][j]|0x80
200
+ end
201
+ line.gsub!(token,i.chr)
202
+ end
203
+
204
+ #replace 2 to 15 spaces with a run-length-encoding
205
+ 0x0f.downto(2) do |i|
206
+ line.gsub!(" "*i,(0x70+i).chr)
207
+ end
208
+
209
+ #now add length to each line
210
+ s+=((line.length+2).chr)+line+"\0"
211
+ end
212
+
213
+ if ! NADOLTokenisedFile.can_be_nadol_tokenised_file?(s)
214
+ raise "tokenisation appears to have failed!"
215
+ end
216
+ s
217
+ end
218
+
182
219
  def to_s
183
220
  NADOLTokenisedFile.buffer_as_tokenised_file(@contents)
184
221
  end
222
+
185
223
  def file_extension
186
224
  ".nad"
187
225
  end
data/lib/PascalDisk.rb ADDED
@@ -0,0 +1,121 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+ # Disk image with Pascal File System
5
+ #catalog will be at block 2.
6
+ #each entry consists of $1A bytes, which are:
7
+ #VOLUME HEADER
8
+ # 00..01 FIRST BLOCK (word)
9
+ # 02..03 LAST BLOCK+1 (word)
10
+ # 04 FILE TYPE (byte) = untypedfile,xdskfile,codefile,textfile,infofile,datafile,graffile,fotofile,securdir
11
+ # 05 FILLER
12
+ # 06 VOLUME NAME LENGTH (1 byte)
13
+ # 07..0D VOLUME NAME (17 bytes)
14
+ # 0E..0F VOLUME SIZE (WORD)
15
+ # 10 NUMBER OF FILES (BYTE)
16
+ # 11..1A FILLER
17
+ #
18
+ #FILES
19
+ # 00..01 FIRST BLOCK (word)
20
+ # 02..03 LAST BLOCK+1 (word)
21
+ # 04 FILE TYPE (byte) = untypedfile,xdskfile,codefile,textfile,infofile,datafile,graffile,fotofile,securdir
22
+ # 05 STATUS (byte)
23
+ # 06 FILENAME LENGTH (1 byte)
24
+ # 07..16 FILENAME (15 bytes)
25
+ # 17..18 BYTES IN LAST BLOCK (word)
26
+ # 19..1A FILE ACCESS DATE
27
+
28
+ require 'PascalFile'
29
+ class PascalDisk < DSK
30
+ attr_accessor :volume_name
31
+
32
+ def dump_catalog
33
+ s=""
34
+ files.keys.sort.each { |file_name|
35
+ file=files[file_name]
36
+ s<< "#{sprintf('% 6d',file.contents.length)}\t #{file.file_type}\t#{file.filename}\n"
37
+ }
38
+ s
39
+ end
40
+
41
+
42
+ def initialize(file_bytes,sector_order)
43
+ super(file_bytes,sector_order)
44
+ self.read_catalog
45
+ end
46
+
47
+ def file_system
48
+ :pascal
49
+ end
50
+
51
+ #reads the catalog, and populate the "files" array with files
52
+ def read_catalog
53
+ catalog=get_block(2)
54
+ #we've read the first block in the catalog, now read the rest
55
+ catalog_size=catalog[2]
56
+ 3.upto(catalog_size-1) do |i|
57
+ catalog<<get_block(i)
58
+ end
59
+ # 06 VOLUME NAME LENGTH (1 byte)
60
+ # 07..0D VOLUME NAME (17 bytes)
61
+ # 0E..0F VOLUME SIZE (WORD)
62
+ # 10 NUMBER OF FILES (BYTE)
63
+ volume_name_length=catalog[6]
64
+ self.volume_name=catalog[7..6+volume_name_length]
65
+ files_in_volume=catalog[0x10]
66
+ #read in all the files
67
+
68
+ # 00..01 FIRST BLOCK (word)
69
+ # 02..03 LAST BLOCK+1 (word)
70
+ # 04 FILE TYPE (byte) = untypedfile,xdskfile,codefile,textfile,infofile,datafile,graffile,fotofile,securdir
71
+ # 05 STATUS (byte)
72
+ # 06 FILENAME LENGTH (1 byte)
73
+ # 07..15 FILENAME (15 bytes)
74
+ # 16..17 BYTES IN LAST BLOCK (word)
75
+ # 18.1A FILE ACCESS DATE
76
+ 1.upto(files_in_volume) do |file_no|
77
+ file_record=catalog[file_no*0x1a..(file_no*0x1a+0x19)]
78
+ first_block=file_record[0]+file_record[1]*0x100
79
+ first_block_in_next_file=file_record[2]+file_record[3]*0x100
80
+ last_block=first_block_in_next_file-1
81
+ file_type=file_record[4]
82
+ file_name_length=file_record[6]
83
+ file_name=file_record[7..6+file_name_length]
84
+ bytes_in_last_block=file_record[0x16]+file_record[0x17]*0x100
85
+ file_contents=""
86
+ first_block.upto(last_block) do |block_no|
87
+ this_block=get_block(block_no)
88
+ if block_no==last_block then
89
+ file_contents<<this_block[0..bytes_in_last_block-1]
90
+ else
91
+ file_contents<<this_block
92
+ end
93
+ files[file_name]=PascalFile.new(file_name,file_contents,file_type)
94
+ end
95
+ end
96
+ end
97
+ end
98
+ # == Author
99
+ # Jonno Downes (jonno@jamtronix.com)
100
+ #
101
+ # == Copyright
102
+ # Copyright (c) 2007 Jonno Downes (jonno@jamtronix.com)
103
+ #
104
+ #Permission is hereby granted, free of charge, to any person obtaining
105
+ #a copy of this software and associated documentation files (the
106
+ #"Software"), to deal in the Software without restriction, including
107
+ #without limitation the rights to use, copy, modify, merge, publish,
108
+ #distribute, sublicense, and/or sell copies of the Software, and to
109
+ #permit persons to whom the Software is furnished to do so, subject to
110
+ #the following conditions:
111
+
112
+ # The above copyright notice and this permission notice shall be
113
+ # included in all copies or substantial portions of the Software.
114
+
115
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
116
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
117
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
118
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
119
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
120
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
121
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/lib/PascalFile.rb ADDED
@@ -0,0 +1,62 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+ require 'DSKFile'
5
+ require 'HGR'
6
+ #Pascal file
7
+ class PascalFile < DSKFile
8
+ attr_accessor :file_type
9
+
10
+ PASCAL_FILE_TYPES=[:untyped,:xdsk,:code,:text,:info,:data,:graf,:foto,:securedir]
11
+
12
+ def initialize(filename,contents,file_type)
13
+ raise "filename too long - #{filename}" unless filename.length<=15
14
+ @filename=filename
15
+ @contents=contents
16
+ @file_type=PASCAL_FILE_TYPES[file_type]
17
+ end
18
+
19
+ def to_s
20
+ s=""
21
+ @contents.each_byte{|b| s<<(b%0x80).chr.tr(0x0D.chr,"\n")}
22
+ s
23
+ end
24
+
25
+ def file_extension
26
+ return "."+@file_type.downcase
27
+ end
28
+
29
+ def can_be_picture?
30
+
31
+ file_type==:foto && HGR.can_be_hgr_screen?(@contents)
32
+ end
33
+
34
+ def to_png(pallete_mode=:amber)
35
+ HGR.buffer_to_png(@contents,pallete_mode)
36
+ end
37
+ end
38
+
39
+ # == Author
40
+ # Jonno Downes (jonno@jamtronix.com)
41
+ #
42
+ # == Copyright
43
+ # Copyright (c) 2007 Jonno Downes (jonno@jamtronix.com)
44
+ #
45
+ #Permission is hereby granted, free of charge, to any person obtaining
46
+ #a copy of this software and associated documentation files (the
47
+ #"Software"), to deal in the Software without restriction, including
48
+ #without limitation the rights to use, copy, modify, merge, publish,
49
+ #distribute, sublicense, and/or sell copies of the Software, and to
50
+ #permit persons to whom the Software is furnished to do so, subject to
51
+ #the following conditions:
52
+
53
+ # The above copyright notice and this permission notice shall be
54
+ # included in all copies or substantial portions of the Software.
55
+
56
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
57
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
58
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
59
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
60
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
61
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
62
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.