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/DOSDisk.rb CHANGED
@@ -84,23 +84,58 @@ require 'DOSFile'
84
84
 
85
85
  class DOSDisk < DSK
86
86
 
87
- def dump_catalog
88
- files.each_value { |file|
89
- puts "#{file.locked ? '*':' '}#{file.file_type} #{sprintf('%03X',file.sector_count)} #{file.filename}"
90
- }
87
+ def dump_catalog
88
+ s=""
89
+ files.keys.sort.each { |file_name|
90
+ file=files[file_name]
91
+ s<< "#{file.locked ? '*':' '}#{file.file_type} #{sprintf('%04d',file.contents.length)} #{file.filename}\n"
92
+ }
93
+ s
94
+ end
95
+
96
+ def file_system
97
+ :dos
91
98
  end
92
99
 
93
100
 
94
- def initialize(file_bytes)
95
- super(file_bytes)
101
+ def initialize(file_bytes,sector_order)
102
+ super(file_bytes,sector_order)
96
103
  self.read_vtoc
97
104
  end
98
- #reads the VTOC, and populate the "files" array with files
105
+
106
+ #default file type is TextFile
107
+ #Tokenisation not currently implemented
108
+ def make_file(filename,contents,file_options={})
109
+ raise "Tokenisation not currently supported for DOS files" if (file_options[:tokenise])
110
+ file_type = case file_options[:filetype]
111
+ when nil then 0x00
112
+ when 'T' then 0x00
113
+ when 'I' then 0x01
114
+ when 'A' then 0x02
115
+ when 'B' then 0x04
116
+ else file_options[:filetype].tr("$","").hex
117
+ end
118
+ if file_type==4 && !(file_options[:base].nil?) then
119
+ base=file_options[:base].tr("$","").hex
120
+ s="\0\0\0\0"
121
+ s[0]=base%256
122
+ s[1]=base/256
123
+ s[2]=contents.length%256
124
+ s[3]=contents.length/256
125
+ contents=s+contents
126
+ end
127
+ new_file=DOSFile.new(filename,contents,false,file_type)
128
+ return new_file
129
+ end
99
130
 
131
+
132
+ #reads the VTOC, and populate the "files" array with files
100
133
  def read_vtoc
134
+ @files={}
101
135
  vtoc_sector=get_sector(17,0)
102
136
  catalog_sector=get_sector(vtoc_sector[01],vtoc_sector[02])
103
- done=false
137
+ done=false
138
+ visited_sectors={}
104
139
  while !done
105
140
  break if catalog_sector.nil?
106
141
  (0..6).each {|file_number|
@@ -108,8 +143,9 @@ class DOSDisk < DSK
108
143
  file_descriptive_entry=catalog_sector[file_descriptive_entry_start..file_descriptive_entry_start+35]
109
144
  break if (file_descriptive_entry[0]==0xFF) # skip deleted files
110
145
  filename=""
111
- file_descriptive_entry[3..32].to_s.each_byte{|b| filename+=(b.%128).chr}
112
- filename.sub!(/ *$/,"") #strip off trailing spaces
146
+ file_descriptive_entry[3..32].to_s.each_byte{|b| filename+=(b.%128).chr}
147
+ filename.gsub!(/ *$/,"") #strip off trailing spaces
148
+ filename.tr!("\x00-\x1f","\x40-\x5f") #convert non-printable chars to corresponding uppercase letter
113
149
  locked=(file_descriptive_entry[2]>=0x80)
114
150
  sector_count=file_descriptive_entry[0x21]+file_descriptive_entry[0x22]*256
115
151
 
@@ -135,30 +171,224 @@ class DOSDisk < DSK
135
171
  end
136
172
  if contents.length>0 then
137
173
  @files[filename]= case file_type_code
138
- when 0x00 then TextFile.new(filename,locked,sector_count,contents)
139
- when 0x01 then SCAsmFile.can_be_scasm_file?(contents)? SCAsmFile.new(filename,locked,sector_count,contents): IntegerBasicFile.new(filename,locked,sector_count,contents)
140
- when 0x02 then AppleSoftFile.new(filename,locked,sector_count,contents)
141
- when 0x04 then BinaryFile.new(filename,locked,sector_count,contents)
174
+ when 0x00 then TextFile.new(filename,contents,locked)
175
+ when 0x01 then SCAsmFile.can_be_scasm_file?(contents)? SCAsmFile.new(filename,contents,locked): IntegerBasicFile.new(filename,contents,locked)
176
+ when 0x02 then AppleSoftFile.new(filename,contents,locked)
177
+ when 0x04 then BinaryFile.new(filename,contents,locked)
142
178
  # when 0x08 then "S" #S type file
143
179
  # when 0x10 then "R" #RELOCATABLE object module file
144
180
  # when 0x20 then "a" #??
145
181
  # when 0x40 then "b" #??
146
- else DOSFile.new(filename,locked,sector_count,contents,sprintf("$%02X",file_type_code))
182
+ else DOSFile.new(filename,contents,locked,file_type_code)
147
183
  end
148
184
  end
149
185
  end
150
186
  }
151
187
  next_track=catalog_sector[1]
152
- next_sector=catalog_sector[2]
188
+ next_sector=catalog_sector[2]%0x10
153
189
  if (next_track==0) &&( next_sector==0) then
154
190
  done=true
155
- else
156
- catalog_sector=get_sector(next_track,next_sector)
191
+ else
192
+ #check we haven't got into an endless loop
193
+ s="#{next_track}/#{next_sector}"
194
+ if (!visited_sectors[s].nil?) then
195
+ done=true
196
+ end
197
+ visited_sectors[s]=true
198
+ catalog_sector=get_sector(next_track,next_sector)
157
199
  end
158
200
  end
159
201
 
160
202
  end
203
+ #iterate through the CATALOG to find either the named file or (if nil is passed in) an empty slot
204
+ def find_catalog_slot(filename)
205
+ vtoc_sector=get_sector(17,0)
206
+ catalog_filename=DOSFile.catalog_filename(filename.upcase) unless filename.nil?
207
+ catalog_track_no=vtoc_sector[01]
208
+ catalog_sector_no=vtoc_sector[02]
209
+
210
+ while (catalog_track_no+catalog_sector_no>0) do
211
+ catalog=get_sector(catalog_track_no,catalog_sector_no)
212
+ (0..7).each do |slot_no|
213
+ slot_start=slot_no*0x23+0x0B
214
+ if filename.nil? && (catalog[slot_start]==0x00)|| (catalog[slot_start]==0xFF) then
215
+ return DSKTrackSector.new(catalog_track_no,catalog_sector_no,slot_start)
216
+ end
217
+ if (!filename.nil?) && (catalog[slot_start+0x03..slot_start+0x20]==catalog_filename) then
218
+ return DSKTrackSector.new(catalog_track_no,catalog_sector_no,slot_start)
219
+ end
220
+ end
221
+ catalog_track_no=catalog[01]
222
+ catalog_sector_no=catalog[02]
223
+ end
224
+ nil
225
+ end
226
+
227
+
228
+ #iterate through the sector usage bitmap, return a list of [track,sector] for sectors marked available
229
+ def free_sector_list
230
+ end_of_sector_usage_bitmap=(track_count*4+0x38)-1
231
+ sector_usage_bitmap=get_sector(0x11,0)[0x38..end_of_sector_usage_bitmap]
232
+ free_sectors=[]
233
+ #skip track 0 - even if sectors there are unused, we can't include them in a catalog or track/sector list
234
+ (1..track_count-1).each do |track|
235
+ track_bitmap_lo=sector_usage_bitmap[track*4+1]
236
+ track_bitmap_hi=sector_usage_bitmap[track*4]
237
+ (0..7).each do |sector|
238
+ if ((track_bitmap_lo & (2**(sector)))!=0) then
239
+ free_sectors<<DSKTrackSector.new(track,sector)
240
+ end
241
+ if ((track_bitmap_hi & (2**(sector)))!=0) then
242
+ free_sectors<<DSKTrackSector.new(track,sector+8)
243
+ end
244
+ end
245
+ end
246
+ free_sectors.sort
247
+ end
248
+
249
+
250
+ #given a track and sector, treat it as a track/sector list and return an array containing track/sector pairs
251
+ def get_track_sector_list(ts_list_track_no,ts_list_sector_no)
252
+ ts_list_sector=get_sector(ts_list_track_no,ts_list_sector_no)
253
+ ts_list=[]
254
+ for entry_number in 0..121
255
+ data_track_no=ts_list_sector[entry_number*2+0x0C]
256
+ data_sector_no=ts_list_sector[entry_number*2+0x0D]
257
+ if( (data_track_no!=0 || data_sector_no!=0) && data_track_no<track_count && data_sector_no<=0x0f) then
258
+ ts_list<<DSKTrackSector.new(data_track_no,data_sector_no)
259
+ end
260
+ end
261
+ ts_list
262
+ end
263
+
264
+ def delete_file(filename)
265
+ this_files_catalog_slot=find_catalog_slot(filename)
266
+ #if file not in catalog, do nothing
267
+ return if this_files_catalog_slot.nil?
268
+ 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+0x22]
269
+
270
+ #mark sector as free in sector usage list
271
+ sector_usage_bitmap_sector=get_sector(0x11,0)
272
+ sectors_to_mark_available=get_track_sector_list(file_descriptive_entry[0x00],file_descriptive_entry[0x01])
273
+ sectors_to_mark_available<<DSKTrackSector.new(file_descriptive_entry[0x01],file_descriptive_entry[0x00])
274
+
275
+ sectors_to_mark_available.each do |ts|
276
+ offset_of_byte_containing_this_sector=0x38+(ts.track_no*4)
277
+ if ts.sector_no<8 then
278
+ offset_of_byte_containing_this_sector+=1
279
+ end
280
+ byte_containing_this_sector=sector_usage_bitmap_sector[offset_of_byte_containing_this_sector]
281
+ byte_containing_this_sector=byte_containing_this_sector|(2**(ts.sector_no%8))
282
+ sector_usage_bitmap_sector[offset_of_byte_containing_this_sector]=byte_containing_this_sector
283
+ end
284
+ set_sector(0x11,0,sector_usage_bitmap_sector)
285
+
286
+ #mark slot as available in catalog
287
+ catalog_sector=get_sector(this_files_catalog_slot.track_no,this_files_catalog_slot.sector_no)
288
+ catalog_sector[this_files_catalog_slot.offset+0x20]=catalog_sector[this_files_catalog_slot.offset] #save the current "first track no" in last byte of filename
289
+ catalog_sector[this_files_catalog_slot.offset]=0xFF
290
+ set_sector(this_files_catalog_slot.track_no,this_files_catalog_slot.sector_no,catalog_sector)
291
+ end
292
+
293
+
294
+ def set_sector(track,sector,contents)
295
+ super(track,sector,contents)
296
+
297
+ #now mark sector as used in sector usage list
298
+ if ((track!=0x11) || (sector!=00)) then #don't bother marking the VTOC sectors used
299
+ sector_usage_bitmap_sector=get_sector(0x11,0)
300
+ offset_of_byte_containing_this_sector=0x38+(track*4)
301
+ if sector<8 then
302
+ offset_of_byte_containing_this_sector+=1
303
+ end
304
+ byte_containing_this_sector=sector_usage_bitmap_sector[offset_of_byte_containing_this_sector]
305
+ byte_containing_this_sector=byte_containing_this_sector&(0xff-(2**(sector%8)))
306
+ sector_usage_bitmap_sector[offset_of_byte_containing_this_sector]=byte_containing_this_sector
307
+ set_sector(0x11,0,sector_usage_bitmap_sector)
308
+ end
309
+ end
310
+
311
+
312
+ def add_file(file)
313
+ raise "only DOSFiles may be added to DOS format disks!" unless file.kind_of?(DOSFile)
314
+
315
+ #if this file exists, delete it first
316
+ delete_file(file.filename) unless files[file.filename].nil?
317
+ catalog_slot=find_catalog_slot(nil)
318
+ raise "CATALOG IS FULL!" if catalog_slot.nil?
319
+ free_sectors=free_sector_list
320
+ sectors_needed=1+file.length_in_sectors
321
+ raise "not enough free space - #{sectors_needed} sectors needed, #{free_sector_list.length} available " unless sectors_needed<=free_sectors.length
322
+
323
+ #TODO - allow files of more than 122 sectors
324
+ raise "only files up to 122 sectors currently supported " if sectors_needed>122
325
+
326
+ #TRACK/SECTOR LIST FORMAT (from Beneath Apple DOS p 4-6)
327
+ # 00 Not used
328
+ # 01 Track number of next T/S list of one is needed or zero if no more t/s list
329
+ # 02 Sector number of next T/S list (if one is present)
330
+ # 03-04 Not used
331
+ # 05-06 Sector offset in file of the first sector described by this list
332
+ # 07-oB Not used
333
+ # 0C-0D Track and sector of first data sector or zeros
334
+ # 0E-0F Track and sector of second data sector or zeros
335
+ # 10-FF Up to 120 more track and sector pairs
336
+ track_sector_list="\0"*256
337
+ track_sector_list_sector=free_sectors[0]
338
+
339
+ (0..sectors_needed-2).each do |sector_in_file|
340
+ sector_to_use=free_sectors[sector_in_file+1]
341
+ track_sector_list[(sector_in_file*2)+0x0C]=sector_to_use.track_no
342
+ track_sector_list[(sector_in_file*2)+0X0D]=sector_to_use.sector_no
343
+ sector_contents=file.contents[(sector_in_file*256)..(sector_in_file*256)+255] || ""
344
+ set_sector(sector_to_use.track_no,sector_to_use.sector_no,sector_contents)
345
+ end
346
+ #write the track/sector list
347
+ set_sector(track_sector_list_sector.track_no,track_sector_list_sector.sector_no,track_sector_list)
348
+
349
+ #update the catalog file descriptive entry
350
+ #FILE DESCRIPTIVE ENTRY (from Beneath Apple DOS p 4-6)
351
+ # 00 Track of first track/sector list sector, if this is a deleted file this contains FF
352
+ # and the original track number is copied to the last byte of the file name (BYTE 20)
353
+ # If this byte contains a 00, the entry is assumed to never have been used and is
354
+ # available for use. (This means track 0 can never be used for data even if the DOS image
355
+ # is 'wiped' from the disk)
356
+ #
357
+ # 01 Sector of first track/sector list sector
358
+ # 02 File type and flags:
359
+ # 80+file type - file is locked
360
+ # 00+file type - file is not locked
361
+ #
362
+ # 00 - TEXT file
363
+ # 01 - INTEGER BASIC file
364
+ # 02 - APPLESOFT BASIC file
365
+ # 04 - BINARY file
366
+ # 08 - S type file
367
+ # 10 - RELOCATABLE object module file
368
+ # 20 - a type file
369
+ # 40 - b type file
370
+ #
371
+ # 03-20 File Name (30 characters)
372
+ # 21-22 Length of file in sectors (LO/HI format)
373
+
374
+ catalog_sector=get_sector(catalog_slot.track_no,catalog_slot.sector_no)
375
+ file_descriptive_entry="\0"*0x23
376
+ file_descriptive_entry[0]=track_sector_list_sector.track_no
377
+ file_descriptive_entry[1]=track_sector_list_sector.sector_no
378
+ file_descriptive_entry[2]=file.file_type_byte
379
+ file_descriptive_entry[3..0x20]=file.catalog_filename
380
+ file_descriptive_entry[0x21]=(sectors_needed-1)%256
381
+ file_descriptive_entry[0x22]=(sectors_needed-1)/256
382
+
383
+ catalog_sector[catalog_slot.offset..catalog_slot.offset+0x22]=file_descriptive_entry
384
+
385
+ set_sector(catalog_slot.track_no,catalog_slot.sector_no,catalog_sector)
386
+
387
+ raise "catalog not updated correctly!" if find_catalog_slot(file.filename).nil?
388
+ #reread the catalog to populate the files list
389
+ read_vtoc
161
390
 
391
+ end
162
392
  end
163
393
  # == Author
164
394
  # Jonno Downes (jonno@jamtronix.com)
data/lib/DOSFile.rb CHANGED
@@ -2,44 +2,48 @@ $:.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
+ require 'DSKFile'
6
+ require 'HGR'
5
7
 
6
8
  #Apple DOS 3.3 file
7
- class DOSFile
9
+ class DOSFile < DSKFile
8
10
 
9
- attr_accessor(:filename,:locked,:file_type,:sector_count,:contents)
10
- def initialize(filename,locked,sector_count,contents,file_type=nil)
11
+ attr_accessor(:filename,:contents,:locked,:file_type_byte)
12
+ def initialize(filename,contents,locked=false,file_type_byte=nil)
11
13
  @filename=filename
12
14
  @locked=locked
13
- @sector_count=sector_count
14
- @file_type= file_type
15
15
  @contents=contents
16
- end
16
+ @file_type_byte=file_type_byte
17
+ @file_type=sprintf("$%02X",file_type_byte)
18
+ end
19
+
17
20
 
18
21
  #File type as displayed in Apple DOS 3.3 Catalog
19
22
  def file_type
20
23
  @file_type
24
+ end
25
+ def file_type_byte
26
+ @file_type_byte
21
27
  end
22
-
23
- def to_s
24
- @contents
25
- end
26
-
27
- def hex_dump
28
- #assumes file is a multiple of 16 bytes, which it always should be
29
- s=""
30
- (0..(@contents.length/16)-1).each {|line_number|
31
- lhs=""
32
- rhs=""
33
- start_byte=line_number*16
34
- line=@contents[start_byte..start_byte+15]
35
- line.each_byte {|byte|
36
- lhs+= sprintf("%02X ", byte)
37
- rhs+= (byte%128).chr.sub(/[\x00-\x1f]/,'.')
38
- }
39
- s+=sprintf("%02X\t%s %s\n",start_byte,lhs,rhs)
40
- }
41
- s
42
- end
28
+
29
+ #render a filename in form suitable for inclusion in a DOS catalog
30
+ def DOSFile.catalog_filename(filename)
31
+ s=""
32
+ for i in 0..29
33
+ c=(filename[i])
34
+ if c.nil? then
35
+ c=0xA0
36
+ else
37
+ c=(c|0x80)
38
+ end
39
+ s+=c.chr
40
+ end
41
+ s
42
+ end
43
+
44
+ def catalog_filename
45
+ DOSFile.catalog_filename(filename)
46
+ end
43
47
 
44
48
  end
45
49
 
@@ -47,6 +51,10 @@ class TextFile < DOSFile
47
51
  def file_type
48
52
  "T"
49
53
  end
54
+
55
+ def file_type_byte
56
+ 0x00
57
+ end
50
58
 
51
59
  def file_extension
52
60
  ".txt"
@@ -54,23 +62,41 @@ class TextFile < DOSFile
54
62
 
55
63
  def to_s
56
64
  s=""
57
- @contents.each_byte{|b| s+=(b%0x80).chr.tr(0x0D.chr,"\n")}
58
- s
65
+ @contents.each_byte{|b| s+=(b%0x80).chr.tr(0x0D.chr,"\n")}
66
+ return s.sub(/\0*$/,"")
59
67
  end
68
+
60
69
  end
61
70
 
62
71
  class BinaryFile < DOSFile
63
72
  def file_type
64
73
  "B"
65
74
  end
66
-
75
+
76
+ def file_type_byte
77
+ 0x04
78
+ end
79
+
67
80
  def file_extension
68
81
  ".bin"
69
82
  end
70
-
83
+
84
+ def contents_without_header
85
+ file_length=contents[2]+contents[3]*256
86
+ @contents[4..file_length+3]
87
+ end
71
88
  def disassembly
72
- start_address=(@contents[0]+@contents[1]*256)
73
- D65.disassemble(@contents[2..@contents.length-1],start_address)
89
+ start_address=(@contents[0]+@contents[1]*256)
90
+ D65.disassemble(contents_without_header,start_address)
91
+ end
92
+
93
+ def can_be_picture?
94
+ start_address=(@contents[0]+@contents[1]*256)
95
+ HGR.can_be_hgr_screen?(contents_without_header,start_address)
96
+ end
97
+
98
+ def to_png(pallete_mode=:amber)
99
+ HGR.buffer_to_png(contents_without_header,pallete_mode)
74
100
  end
75
101
  end
76
102
 
@@ -130,6 +156,10 @@ class IntegerBasicFile < DOSFile
130
156
  ".bas"
131
157
  end
132
158
 
159
+ def file_type_byte
160
+ 0x01
161
+ end
162
+
133
163
  #display file with all INTEGER BASIC tokens expanded to ASCII
134
164
  def to_s
135
165
  buffer_as_integer_basic_file(@contents)
@@ -270,25 +300,18 @@ INTEGER_BASIC_TOKENS= [
270
300
 
271
301
  end
272
302
 
273
- # Adapted from FID.C -- a utility to browse Apple II .DSK image files by Paul Schlyter (pausch@saaf.se)
274
- #
275
- #Applesoft file format:
276
- # <Length_of_file> (16-bit little endian)
277
- # <Line>
278
- # ......
279
- # <Line>
280
- # where <Line> is:
281
- # <Next addr> (16-bit little endian)
282
- # <Line no> (16-bit little endian: 0-65535)
283
- # <Tokens and/or characters>
284
- # <End-of-line marker: $00 >
285
- #
303
+
286
304
  class AppleSoftFile < DOSFile
287
305
 
288
306
 
289
307
  def file_type
290
308
  "A"
291
309
  end
310
+
311
+ def file_type_byte
312
+ 0x02
313
+ end
314
+
292
315
  #display file with all AppleSoft BASIC tokens expanded to ASCII
293
316
  def to_s
294
317
  buffer_as_applesoft_file(@contents)
@@ -298,64 +321,7 @@ class AppleSoftFile < DOSFile
298
321
  ".bas"
299
322
  end
300
323
 
301
- private
302
-
303
- APPLESOFT_TOKENS = [
304
- "END","FOR","NEXT","DATA","INPUT","DEL","DIM","READ",
305
- "GR","TEXT","PR#","IN#","CALL","PLOT","HLIN","VLIN",
306
- "HGR2","HGR","HCOLOR=","HPLOT","DRAW","XDRAW","HTAB",
307
- "HOME","ROT=","SCALE=","SHLOAD","TRACE","NOTRACE",
308
- "NORMAL","INVERSE","FLASH","COLOR=","POP","VTAB",
309
- "HIMEM=","LOMEM=","ONERR","RESUME","RECALL","STORE",
310
- "SPEED=","LET","GOTO","RUN","IF","RESTORE","&","GOSUB",
311
- "RETURN","REM","STOP","ON","WAIT","LOAD","SAVE","DEF",
312
- "POKE","PRINT","CONT","LIST","CLEAR","GET","NEW",
313
- "TAB(","TO","FN","SPC(","THEN","AT","NOT","STEP","+",
314
- "-","*","/","^","AND","OR",">","=","<","SGN","INT",
315
- "ABS","USR","FRE","SCRN(","PDL","POS","SQR","RND",
316
- "LOG","EXP","COS","SIN","TAN","ATN","PEEK","LEN",
317
- "STR$","VAL","ASC","CHR$", "LEFT$","RIGHT$","MID$","?",
318
- "?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?"
319
- ]
320
-
321
-
322
-
323
- def buffer_as_applesoft_file(buffer)
324
-
325
- length=buffer[0]+buffer[1]*256
326
- index=2
327
- s=""
328
- while (index<length)
329
- index+=2 #skip over the "next address" field
330
- break if buffer[index].nil?
331
- break if buffer[index+1].nil?
332
- line_no=buffer[index]+buffer[index+1]*256
333
- index+=2 #skip over the "line number" field
334
- s+=sprintf("%u",line_no)
335
- done_line=false
336
- last_char_space=false
337
- while (!done_line)
338
- b=buffer[index]
339
- break if b.nil?
340
- if b>=0x80 then
341
- if !last_char_space then
342
- s+=" "
343
- end
344
- s+=APPLESOFT_TOKENS[b-0x80]+" "
345
- last_char_space=true
346
- else
347
- s+=b.chr
348
- last_char_space=false
349
- end
350
- index+=1
351
- done_line=(index>=length)||(buffer[index]==0)
352
- end
353
- s+="\n"
354
- index+=1 # skip over "end of line" marker
355
- end
356
- s
357
- end
358
- end
324
+
359
325
 
360
326
  # Adapted from FID.C -- a utility to browse Apple II .DSK image files by Paul Schlyter (pausch@saaf.se)
361
327
  #
@@ -382,6 +348,11 @@ class SCAsmFile < DOSFile
382
348
  def file_type
383
349
  "I"
384
350
  end
351
+
352
+ def file_type_byte
353
+ 0x01
354
+ end
355
+
385
356
  #display file with all tokens expanded
386
357
  def to_s
387
358
  SCAsmFile.buffer_as_scasm_file(@contents)