ripxplore 0.0.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 (454) hide show
  1. data/bin/ripxplore.rb +188 -0
  2. data/doc/classes/A2Dsk.html +226 -0
  3. data/doc/classes/A2Dsk.src/M000005.html +18 -0
  4. data/doc/classes/A2Dsk.src/M000006.html +18 -0
  5. data/doc/classes/A2Dsk.src/M000007.html +18 -0
  6. data/doc/classes/A2Dsk.src/M000008.html +18 -0
  7. data/doc/classes/A2Dsk.src/M000009.html +18 -0
  8. data/doc/classes/A2Dsk.src/M000010.html +22 -0
  9. data/doc/classes/A2DskDosOrder.html +139 -0
  10. data/doc/classes/A2DskDosOrder.src/M000242.html +18 -0
  11. data/doc/classes/A2DskPhysicalOrder.html +139 -0
  12. data/doc/classes/A2DskPhysicalOrder.src/M000019.html +18 -0
  13. data/doc/classes/Apple2.html +187 -0
  14. data/doc/classes/Apple2.src/M000128.html +18 -0
  15. data/doc/classes/Apple2.src/M000129.html +18 -0
  16. data/doc/classes/Apple2.src/M000130.html +18 -0
  17. data/doc/classes/Apple2.src/M000131.html +19 -0
  18. data/doc/classes/AppleBinary.html +193 -0
  19. data/doc/classes/AppleBinary.src/M000089.html +20 -0
  20. data/doc/classes/AppleBinary.src/M000090.html +18 -0
  21. data/doc/classes/AppleBinary.src/M000091.html +18 -0
  22. data/doc/classes/AppleBinary.src/M000092.html +18 -0
  23. data/doc/classes/AppleCPM.html +228 -0
  24. data/doc/classes/AppleCPM.src/M000243.html +18 -0
  25. data/doc/classes/AppleCPM.src/M000244.html +18 -0
  26. data/doc/classes/AppleCPM.src/M000245.html +21 -0
  27. data/doc/classes/AppleCPM.src/M000246.html +40 -0
  28. data/doc/classes/AppleDos.html +275 -0
  29. data/doc/classes/AppleDos.src/M000161.html +18 -0
  30. data/doc/classes/AppleDos.src/M000162.html +18 -0
  31. data/doc/classes/AppleDos.src/M000163.html +18 -0
  32. data/doc/classes/AppleDos.src/M000164.html +86 -0
  33. data/doc/classes/AppleHiResPic.html +279 -0
  34. data/doc/classes/AppleHiResPic.src/M000083.html +22 -0
  35. data/doc/classes/AppleHiResPic.src/M000084.html +18 -0
  36. data/doc/classes/AppleHiResPic.src/M000085.html +22 -0
  37. data/doc/classes/AppleHiResPic.src/M000086.html +57 -0
  38. data/doc/classes/AppleHiResPic.src/M000087.html +18 -0
  39. data/doc/classes/AppleHiResPic.src/M000088.html +18 -0
  40. data/doc/classes/AppleText.html +156 -0
  41. data/doc/classes/AppleText.src/M000142.html +21 -0
  42. data/doc/classes/AppleText.src/M000143.html +20 -0
  43. data/doc/classes/AppleWorksWP.html +160 -0
  44. data/doc/classes/AppleWorksWP.src/M000081.html +20 -0
  45. data/doc/classes/AppleWorksWP.src/M000082.html +45 -0
  46. data/doc/classes/Applesoft.html +169 -0
  47. data/doc/classes/Applesoft.src/M000175.html +21 -0
  48. data/doc/classes/Applesoft.src/M000176.html +75 -0
  49. data/doc/classes/Atari800.html +169 -0
  50. data/doc/classes/Atari800.src/M000177.html +23 -0
  51. data/doc/classes/Atari800.src/M000178.html +18 -0
  52. data/doc/classes/Atari800.src/M000179.html +19 -0
  53. data/doc/classes/AtariBasic.html +215 -0
  54. data/doc/classes/AtariBasic.src/M000204.html +20 -0
  55. data/doc/classes/AtariBasic.src/M000205.html +108 -0
  56. data/doc/classes/AtariBinary.html +193 -0
  57. data/doc/classes/AtariBinary.src/M000238.html +20 -0
  58. data/doc/classes/AtariBinary.src/M000239.html +18 -0
  59. data/doc/classes/AtariBinary.src/M000240.html +18 -0
  60. data/doc/classes/AtariBinary.src/M000241.html +18 -0
  61. data/doc/classes/AtariDos.html +186 -0
  62. data/doc/classes/AtariDos.src/M000047.html +18 -0
  63. data/doc/classes/AtariDos.src/M000048.html +43 -0
  64. data/doc/classes/AtariText.html +159 -0
  65. data/doc/classes/AtariText.src/M000002.html +20 -0
  66. data/doc/classes/AtariText.src/M000003.html +18 -0
  67. data/doc/classes/Atr.html +271 -0
  68. data/doc/classes/Atr.src/M000208.html +18 -0
  69. data/doc/classes/Atr.src/M000209.html +18 -0
  70. data/doc/classes/Atr.src/M000210.html +19 -0
  71. data/doc/classes/Atr.src/M000211.html +18 -0
  72. data/doc/classes/Atr.src/M000212.html +18 -0
  73. data/doc/classes/Atr.src/M000213.html +19 -0
  74. data/doc/classes/Atr.src/M000214.html +19 -0
  75. data/doc/classes/C64.html +206 -0
  76. data/doc/classes/C64.src/M000020.html +18 -0
  77. data/doc/classes/C64.src/M000021.html +31 -0
  78. data/doc/classes/C64.src/M000022.html +22 -0
  79. data/doc/classes/C64.src/M000023.html +19 -0
  80. data/doc/classes/C64.src/M000024.html +19 -0
  81. data/doc/classes/C64BasicPrg.html +201 -0
  82. data/doc/classes/C64BasicPrg.src/M000035.html +20 -0
  83. data/doc/classes/C64BasicPrg.src/M000036.html +59 -0
  84. data/doc/classes/C64Prg.html +190 -0
  85. data/doc/classes/C64Prg.src/M000169.html +20 -0
  86. data/doc/classes/C64Prg.src/M000170.html +18 -0
  87. data/doc/classes/C64Prg.src/M000171.html +18 -0
  88. data/doc/classes/C64Prg.src/M000172.html +20 -0
  89. data/doc/classes/C64PrgText.html +139 -0
  90. data/doc/classes/C64PrgText.src/M000237.html +18 -0
  91. data/doc/classes/C64Seq.html +156 -0
  92. data/doc/classes/C64Seq.src/M000013.html +20 -0
  93. data/doc/classes/C64Seq.src/M000014.html +18 -0
  94. data/doc/classes/CPMFile.html +156 -0
  95. data/doc/classes/CPMFile.src/M000108.html +20 -0
  96. data/doc/classes/CPMFile.src/M000109.html +18 -0
  97. data/doc/classes/CbmDos.html +172 -0
  98. data/doc/classes/CbmDos.src/M000182.html +18 -0
  99. data/doc/classes/CbmDos.src/M000183.html +42 -0
  100. data/doc/classes/CbmFile.html +156 -0
  101. data/doc/classes/CbmFile.src/M000235.html +20 -0
  102. data/doc/classes/CbmFile.src/M000236.html +18 -0
  103. data/doc/classes/D64.html +247 -0
  104. data/doc/classes/D64.src/M000037.html +18 -0
  105. data/doc/classes/D64.src/M000038.html +18 -0
  106. data/doc/classes/D64.src/M000039.html +18 -0
  107. data/doc/classes/D64.src/M000040.html +22 -0
  108. data/doc/classes/D64.src/M000041.html +18 -0
  109. data/doc/classes/D64.src/M000042.html +21 -0
  110. data/doc/classes/D65.html +170 -0
  111. data/doc/classes/D65.src/M000049.html +22 -0
  112. data/doc/classes/D65.src/M000050.html +68 -0
  113. data/doc/classes/DumpUtilities.html +152 -0
  114. data/doc/classes/DumpUtilities.src/M000077.html +33 -0
  115. data/doc/classes/DumpUtilities.src/M000078.html +27 -0
  116. data/doc/classes/FileCache.html +210 -0
  117. data/doc/classes/FileCache.src/M000135.html +18 -0
  118. data/doc/classes/FileCache.src/M000136.html +20 -0
  119. data/doc/classes/FileCache.src/M000137.html +22 -0
  120. data/doc/classes/FileCache.src/M000138.html +32 -0
  121. data/doc/classes/FileCacheItem.html +152 -0
  122. data/doc/classes/FileCacheItem.src/M000165.html +18 -0
  123. data/doc/classes/FileCacheItem.src/M000166.html +18 -0
  124. data/doc/classes/FileContainer.html +146 -0
  125. data/doc/classes/FileContainer.src/M000232.html +26 -0
  126. data/doc/classes/FileSystem.html +252 -0
  127. data/doc/classes/FileSystem.src/M000069.html +18 -0
  128. data/doc/classes/FileSystem.src/M000070.html +18 -0
  129. data/doc/classes/FileSystem.src/M000071.html +18 -0
  130. data/doc/classes/FileSystem.src/M000072.html +18 -0
  131. data/doc/classes/FileSystem.src/M000073.html +18 -0
  132. data/doc/classes/FileSystem.src/M000074.html +18 -0
  133. data/doc/classes/FileSystem.src/M000075.html +20 -0
  134. data/doc/classes/FileSystem.src/M000076.html +25 -0
  135. data/doc/classes/FileSystemImage.html +430 -0
  136. data/doc/classes/FileSystemImage.src/M000215.html +19 -0
  137. data/doc/classes/FileSystemImage.src/M000216.html +41 -0
  138. data/doc/classes/FileSystemImage.src/M000217.html +27 -0
  139. data/doc/classes/FileSystemImage.src/M000218.html +18 -0
  140. data/doc/classes/FileSystemImage.src/M000219.html +18 -0
  141. data/doc/classes/FileSystemImage.src/M000220.html +18 -0
  142. data/doc/classes/FileSystemImage.src/M000221.html +22 -0
  143. data/doc/classes/FileSystemImage.src/M000222.html +19 -0
  144. data/doc/classes/FileSystemImage.src/M000223.html +18 -0
  145. data/doc/classes/FileSystemImage.src/M000224.html +18 -0
  146. data/doc/classes/FileSystemImage.src/M000225.html +18 -0
  147. data/doc/classes/FileSystemImage.src/M000226.html +18 -0
  148. data/doc/classes/FileSystemImage.src/M000227.html +20 -0
  149. data/doc/classes/FileSystemImage.src/M000228.html +22 -0
  150. data/doc/classes/FileSystemImage.src/M000229.html +22 -0
  151. data/doc/classes/FileSystemImage.src/M000230.html +18 -0
  152. data/doc/classes/FileSystemImage.src/M000231.html +23 -0
  153. data/doc/classes/G64.html +257 -0
  154. data/doc/classes/G64.src/M000093.html +30 -0
  155. data/doc/classes/G64.src/M000094.html +18 -0
  156. data/doc/classes/G64.src/M000095.html +18 -0
  157. data/doc/classes/G64.src/M000096.html +17 -0
  158. data/doc/classes/G64.src/M000097.html +18 -0
  159. data/doc/classes/G64.src/M000098.html +18 -0
  160. data/doc/classes/G64.src/M000099.html +21 -0
  161. data/doc/classes/GenericFile.html +157 -0
  162. data/doc/classes/GenericFile.src/M000167.html +20 -0
  163. data/doc/classes/GenericFile.src/M000168.html +18 -0
  164. data/doc/classes/HostSystem.html +225 -0
  165. data/doc/classes/HostSystem.src/M000025.html +22 -0
  166. data/doc/classes/HostSystem.src/M000026.html +18 -0
  167. data/doc/classes/HostSystem.src/M000027.html +18 -0
  168. data/doc/classes/HostSystem.src/M000028.html +22 -0
  169. data/doc/classes/HostSystem.src/M000029.html +33 -0
  170. data/doc/classes/HostSystem.src/M000030.html +18 -0
  171. data/doc/classes/ImageFormat.html +415 -0
  172. data/doc/classes/ImageFormat.src/M000144.html +18 -0
  173. data/doc/classes/ImageFormat.src/M000145.html +18 -0
  174. data/doc/classes/ImageFormat.src/M000146.html +18 -0
  175. data/doc/classes/ImageFormat.src/M000147.html +18 -0
  176. data/doc/classes/ImageFormat.src/M000148.html +18 -0
  177. data/doc/classes/ImageFormat.src/M000149.html +22 -0
  178. data/doc/classes/ImageFormat.src/M000150.html +19 -0
  179. data/doc/classes/ImageFormat.src/M000151.html +18 -0
  180. data/doc/classes/ImageFormat.src/M000152.html +18 -0
  181. data/doc/classes/ImageFormat.src/M000153.html +18 -0
  182. data/doc/classes/ImageFormat.src/M000154.html +18 -0
  183. data/doc/classes/ImageFormat.src/M000155.html +18 -0
  184. data/doc/classes/ImageFormat.src/M000156.html +18 -0
  185. data/doc/classes/ImageFormat.src/M000157.html +18 -0
  186. data/doc/classes/ImageFormat.src/M000158.html +20 -0
  187. data/doc/classes/ImageFormat.src/M000159.html +26 -0
  188. data/doc/classes/ImageFormat.src/M000160.html +18 -0
  189. data/doc/classes/ImageSniffing.html +152 -0
  190. data/doc/classes/ImageSniffing.src/M000051.html +57 -0
  191. data/doc/classes/ImageSniffing.src/M000052.html +131 -0
  192. data/doc/classes/IntegerBASIC.html +247 -0
  193. data/doc/classes/IntegerBASIC.src/M000206.html +20 -0
  194. data/doc/classes/IntegerBASIC.src/M000207.html +86 -0
  195. data/doc/classes/MBasic.html +182 -0
  196. data/doc/classes/MBasic.src/M000011.html +20 -0
  197. data/doc/classes/MBasic.src/M000012.html +22 -0
  198. data/doc/classes/NADOLDos.html +187 -0
  199. data/doc/classes/NADOLDos.src/M000180.html +18 -0
  200. data/doc/classes/NADOLDos.src/M000181.html +52 -0
  201. data/doc/classes/NADOLFile.html +157 -0
  202. data/doc/classes/NADOLFile.src/M000045.html +20 -0
  203. data/doc/classes/NADOLFile.src/M000046.html +18 -0
  204. data/doc/classes/NADOLTokens.html +170 -0
  205. data/doc/classes/NADOLTokens.src/M000018.html +41 -0
  206. data/doc/classes/NativeFileType.html +444 -0
  207. data/doc/classes/NativeFileType.src/M000110.html +22 -0
  208. data/doc/classes/NativeFileType.src/M000111.html +18 -0
  209. data/doc/classes/NativeFileType.src/M000112.html +18 -0
  210. data/doc/classes/NativeFileType.src/M000113.html +18 -0
  211. data/doc/classes/NativeFileType.src/M000114.html +18 -0
  212. data/doc/classes/NativeFileType.src/M000115.html +18 -0
  213. data/doc/classes/NativeFileType.src/M000116.html +18 -0
  214. data/doc/classes/NativeFileType.src/M000117.html +23 -0
  215. data/doc/classes/NativeFileType.src/M000118.html +18 -0
  216. data/doc/classes/NativeFileType.src/M000119.html +18 -0
  217. data/doc/classes/NativeFileType.src/M000120.html +24 -0
  218. data/doc/classes/NativeFileType.src/M000121.html +35 -0
  219. data/doc/classes/NativeFileType.src/M000122.html +24 -0
  220. data/doc/classes/NativeFileType.src/M000123.html +18 -0
  221. data/doc/classes/NativeFileType.src/M000124.html +18 -0
  222. data/doc/classes/NativeFileType.src/M000125.html +18 -0
  223. data/doc/classes/NativeFileType.src/M000126.html +20 -0
  224. data/doc/classes/NativeFileType.src/M000127.html +27 -0
  225. data/doc/classes/PNG/Canvas.html +273 -0
  226. data/doc/classes/PNG/Canvas.src/M000196.html +20 -0
  227. data/doc/classes/PNG/Canvas.src/M000197.html +20 -0
  228. data/doc/classes/PNG/Canvas.src/M000198.html +20 -0
  229. data/doc/classes/PNG/Canvas.src/M000199.html +22 -0
  230. data/doc/classes/PNG/Canvas.src/M000200.html +18 -0
  231. data/doc/classes/PNG/Canvas.src/M000201.html +73 -0
  232. data/doc/classes/PNG/Color.html +338 -0
  233. data/doc/classes/PNG/Color.src/M000189.html +18 -0
  234. data/doc/classes/PNG/Color.src/M000190.html +16 -0
  235. data/doc/classes/PNG/Color.src/M000191.html +16 -0
  236. data/doc/classes/PNG/Color.src/M000192.html +16 -0
  237. data/doc/classes/PNG/Color.src/M000193.html +16 -0
  238. data/doc/classes/PNG/Color.src/M000194.html +21 -0
  239. data/doc/classes/PNG/Color.src/M000195.html +18 -0
  240. data/doc/classes/PNG.html +229 -0
  241. data/doc/classes/PNG.src/M000185.html +18 -0
  242. data/doc/classes/PNG.src/M000186.html +21 -0
  243. data/doc/classes/PNG.src/M000187.html +26 -0
  244. data/doc/classes/PNG.src/M000188.html +26 -0
  245. data/doc/classes/PascalDos.html +203 -0
  246. data/doc/classes/PascalDos.src/M000132.html +18 -0
  247. data/doc/classes/PascalDos.src/M000133.html +21 -0
  248. data/doc/classes/PascalDos.src/M000134.html +62 -0
  249. data/doc/classes/PascalFile.html +169 -0
  250. data/doc/classes/PascalFile.src/M000173.html +20 -0
  251. data/doc/classes/PascalFile.src/M000174.html +18 -0
  252. data/doc/classes/ProDos.html +164 -0
  253. data/doc/classes/ProDos.src/M000102.html +18 -0
  254. data/doc/classes/ProDos.src/M000103.html +22 -0
  255. data/doc/classes/ProDosFile.html +187 -0
  256. data/doc/classes/ProDosFile.src/M000015.html +20 -0
  257. data/doc/classes/ProDosFile.src/M000016.html +18 -0
  258. data/doc/classes/ProDosFile.src/M000017.html +19 -0
  259. data/doc/classes/Proc.html +315 -0
  260. data/doc/classes/Proc.src/M000053.html +21 -0
  261. data/doc/classes/Proc.src/M000054.html +19 -0
  262. data/doc/classes/Proc.src/M000055.html +22 -0
  263. data/doc/classes/Proc.src/M000056.html +22 -0
  264. data/doc/classes/Proc.src/M000057.html +22 -0
  265. data/doc/classes/Proc.src/M000058.html +19 -0
  266. data/doc/classes/Proc.src/M000059.html +16 -0
  267. data/doc/classes/Proc.src/M000060.html +20 -0
  268. data/doc/classes/Proc.src/M000061.html +18 -0
  269. data/doc/classes/Proc.src/M000062.html +16 -0
  270. data/doc/classes/Proc.src/M000063.html +16 -0
  271. data/doc/classes/ProcSource.html +146 -0
  272. data/doc/classes/ProcSource.src/M000248.html +38 -0
  273. data/doc/classes/ProcSource.src/M000249.html +109 -0
  274. data/doc/classes/RDoc.html +135 -0
  275. data/doc/classes/RDoc.src/M000247.html +40 -0
  276. data/doc/classes/RawDisk.html +157 -0
  277. data/doc/classes/RawDisk.src/M000100.html +18 -0
  278. data/doc/classes/RawDisk.src/M000101.html +18 -0
  279. data/doc/classes/RipXplore.html +124 -0
  280. data/doc/classes/RipXploreLog.html +167 -0
  281. data/doc/classes/RipXploreLog.src/M000139.html +18 -0
  282. data/doc/classes/RipXploreLog.src/M000140.html +20 -0
  283. data/doc/classes/RipXploreLog.src/M000141.html +18 -0
  284. data/doc/classes/ScAsm.html +145 -0
  285. data/doc/classes/ScAsm.src/M000004.html +45 -0
  286. data/doc/classes/SubclassTracking.html +138 -0
  287. data/doc/classes/SubclassTracking.src/M000250.html +23 -0
  288. data/doc/classes/TestFileCache.html +137 -0
  289. data/doc/classes/TestFileCache.src/M000184.html +21 -0
  290. data/doc/classes/Trs80.html +157 -0
  291. data/doc/classes/Trs80.src/M000043.html +18 -0
  292. data/doc/classes/Trs80.src/M000044.html +18 -0
  293. data/doc/classes/Trs80Cmd.html +217 -0
  294. data/doc/classes/Trs80Cmd.src/M000104.html +19 -0
  295. data/doc/classes/Trs80Cmd.src/M000105.html +24 -0
  296. data/doc/classes/Trs80Cmd.src/M000106.html +20 -0
  297. data/doc/classes/Trs80Cmd.src/M000107.html +35 -0
  298. data/doc/classes/Trs80Jcl.html +156 -0
  299. data/doc/classes/Trs80Jcl.src/M000233.html +20 -0
  300. data/doc/classes/Trs80Jcl.src/M000234.html +18 -0
  301. data/doc/classes/Trs80Jv1Dsk.html +211 -0
  302. data/doc/classes/Trs80Jv1Dsk.src/M000064.html +18 -0
  303. data/doc/classes/Trs80Jv1Dsk.src/M000065.html +18 -0
  304. data/doc/classes/Trs80Jv1Dsk.src/M000066.html +18 -0
  305. data/doc/classes/Trs80Jv1Dsk.src/M000067.html +18 -0
  306. data/doc/classes/Trs80Jv1Dsk.src/M000068.html +19 -0
  307. data/doc/classes/Trs80LevelIIBasic.html +169 -0
  308. data/doc/classes/Trs80LevelIIBasic.src/M000079.html +20 -0
  309. data/doc/classes/Trs80LevelIIBasic.src/M000080.html +43 -0
  310. data/doc/classes/Trs80PascalSource.html +156 -0
  311. data/doc/classes/Trs80PascalSource.src/M000202.html +20 -0
  312. data/doc/classes/Trs80PascalSource.src/M000203.html +30 -0
  313. data/doc/classes/TrsDos.html +255 -0
  314. data/doc/classes/TrsDos.src/M000031.html +18 -0
  315. data/doc/classes/TrsDos.src/M000032.html +18 -0
  316. data/doc/classes/TrsDos.src/M000033.html +18 -0
  317. data/doc/classes/TrsDos.src/M000034.html +62 -0
  318. data/doc/created.rid +1 -0
  319. data/doc/files/bin/ripxplore_rb.html +150 -0
  320. data/doc/files/lib/DumpUtilities_rb.html +101 -0
  321. data/doc/files/lib/FileCache_rb.html +110 -0
  322. data/doc/files/lib/FileContainer_rb.html +101 -0
  323. data/doc/files/lib/FileSystemImage_rb.html +109 -0
  324. data/doc/files/lib/FileSystem_rb.html +111 -0
  325. data/doc/files/lib/HostSystem_rb.html +110 -0
  326. data/doc/files/lib/ImageFormat_rb.html +111 -0
  327. data/doc/files/lib/NativeFileType_rb.html +111 -0
  328. data/doc/files/lib/PatchedPNG_rb.html +116 -0
  329. data/doc/files/lib/RipXploreLog_rb.html +108 -0
  330. data/doc/files/lib/RipXplore_rb.html +114 -0
  331. data/doc/files/lib/SubclassTracking_rb.html +108 -0
  332. data/doc/files/lib/disassemblers/D65_rb.html +101 -0
  333. data/doc/files/lib/file_systems/AppleCPM_rb.html +108 -0
  334. data/doc/files/lib/file_systems/AppleDos_rb.html +108 -0
  335. data/doc/files/lib/file_systems/AtariDos_rb.html +108 -0
  336. data/doc/files/lib/file_systems/CbmDos_rb.html +108 -0
  337. data/doc/files/lib/file_systems/NADOLDos_rb.html +108 -0
  338. data/doc/files/lib/file_systems/PascalDos_rb.html +108 -0
  339. data/doc/files/lib/file_systems/ProDos_rb.html +108 -0
  340. data/doc/files/lib/file_systems/RawDisk_rb.html +108 -0
  341. data/doc/files/lib/file_systems/TrsDos_rb.html +108 -0
  342. data/doc/files/lib/host_systems/Apple2_rb.html +109 -0
  343. data/doc/files/lib/host_systems/Atari800_rb.html +109 -0
  344. data/doc/files/lib/host_systems/C64_rb.html +109 -0
  345. data/doc/files/lib/host_systems/Trs80_rb.html +108 -0
  346. data/doc/files/lib/image_formats/A2Dsk_rb.html +108 -0
  347. data/doc/files/lib/image_formats/Atr_rb.html +108 -0
  348. data/doc/files/lib/image_formats/D64_rb.html +108 -0
  349. data/doc/files/lib/image_formats/G64_rb.html +108 -0
  350. data/doc/files/lib/image_formats/Trs80Jv1Dsk_rb.html +108 -0
  351. data/doc/files/lib/native_file_types/apple2/AppleBinary_rb.html +108 -0
  352. data/doc/files/lib/native_file_types/apple2/AppleHiResPic_rb.html +108 -0
  353. data/doc/files/lib/native_file_types/apple2/AppleText_rb.html +108 -0
  354. data/doc/files/lib/native_file_types/apple2/AppleWorksWP_rb.html +108 -0
  355. data/doc/files/lib/native_file_types/apple2/Applesoft_rb.html +108 -0
  356. data/doc/files/lib/native_file_types/apple2/IntegerBASIC_rb.html +108 -0
  357. data/doc/files/lib/native_file_types/apple2/NADOLFile_rb.html +108 -0
  358. data/doc/files/lib/native_file_types/apple2/PascalFile_rb.html +108 -0
  359. data/doc/files/lib/native_file_types/apple2/ProDosFile_rb.html +108 -0
  360. data/doc/files/lib/native_file_types/apple2/ScAsm_rb.html +101 -0
  361. data/doc/files/lib/native_file_types/atari800/AtariBasic_rb.html +108 -0
  362. data/doc/files/lib/native_file_types/atari800/AtariBinary_rb.html +108 -0
  363. data/doc/files/lib/native_file_types/atari800/AtariText_rb.html +108 -0
  364. data/doc/files/lib/native_file_types/c64/C64BasicPrg_rb.html +109 -0
  365. data/doc/files/lib/native_file_types/c64/C64PrgText_rb.html +109 -0
  366. data/doc/files/lib/native_file_types/c64/C64Prg_rb.html +109 -0
  367. data/doc/files/lib/native_file_types/c64/C64Seq_rb.html +109 -0
  368. data/doc/files/lib/native_file_types/c64/CbmFile_rb.html +108 -0
  369. data/doc/files/lib/native_file_types/cpm/CPMFile_rb.html +108 -0
  370. data/doc/files/lib/native_file_types/cpm/MBasic_rb.html +108 -0
  371. data/doc/files/lib/native_file_types/generic/GenericFile_rb.html +101 -0
  372. data/doc/files/lib/native_file_types/trs80/Trs80Cmd_rb.html +108 -0
  373. data/doc/files/lib/native_file_types/trs80/Trs80Jcl_rb.html +108 -0
  374. data/doc/files/lib/native_file_types/trs80/Trs80LevelIIBasic_rb.html +108 -0
  375. data/doc/files/lib/native_file_types/trs80/Trs80PascalSource_rb.html +108 -0
  376. data/doc/files/lib/proc_source_rb.html +182 -0
  377. data/doc/files/lib/proc_source_rb.src/M000001.html +24 -0
  378. data/doc/files/lib/rdoc_patch_rb.html +108 -0
  379. data/doc/files/test/tc_file_cache_rb.html +108 -0
  380. data/doc/files/test/tc_image_sniffing_rb.html +108 -0
  381. data/doc/files/test/testhelper_rb.html +129 -0
  382. data/doc/files/test/ts_test_all_rb.html +108 -0
  383. data/doc/fr_class_index.html +26 -0
  384. data/doc/fr_file_index.html +27 -0
  385. data/doc/fr_method_index.html +26 -0
  386. data/doc/index.html +24 -0
  387. data/doc/rdoc-style.css +208 -0
  388. data/lib/DumpUtilities.rb +34 -0
  389. data/lib/FileCache.rb +84 -0
  390. data/lib/FileContainer.rb +45 -0
  391. data/lib/FileSystem.rb +83 -0
  392. data/lib/FileSystemImage.rb +176 -0
  393. data/lib/HostSystem.rb +84 -0
  394. data/lib/ImageFormat.rb +127 -0
  395. data/lib/NativeFileType.rb +168 -0
  396. data/lib/PatchedPNG.rb +303 -0
  397. data/lib/RipXplore.rb +77 -0
  398. data/lib/RipXploreLog.rb +63 -0
  399. data/lib/SubclassTracking.rb +11 -0
  400. data/lib/disassemblers/D65.rb +181 -0
  401. data/lib/file_systems/AppleCPM.rb +123 -0
  402. data/lib/file_systems/AppleDos.rb +211 -0
  403. data/lib/file_systems/AtariDos.rb +80 -0
  404. data/lib/file_systems/CbmDos.rb +75 -0
  405. data/lib/file_systems/NADOLDos.rb +110 -0
  406. data/lib/file_systems/PascalDos.rb +131 -0
  407. data/lib/file_systems/ProDos.rb +155 -0
  408. data/lib/file_systems/RawDisk.rb +45 -0
  409. data/lib/file_systems/TrsDos.rb +148 -0
  410. data/lib/host_systems/Apple2.rb +57 -0
  411. data/lib/host_systems/Atari800.rb +57 -0
  412. data/lib/host_systems/C64.rb +82 -0
  413. data/lib/host_systems/Trs80.rb +48 -0
  414. data/lib/host_systems/a2_symbols.yaml +199 -0
  415. data/lib/host_systems/atari_800_symbols.yaml +496 -0
  416. data/lib/host_systems/c64_symbols.yaml +636 -0
  417. data/lib/image_formats/A2Dsk.rb +77 -0
  418. data/lib/image_formats/Atr.rb +83 -0
  419. data/lib/image_formats/D64.rb +87 -0
  420. data/lib/image_formats/G64.rb +174 -0
  421. data/lib/image_formats/Trs80Jv1Dsk.rb +65 -0
  422. data/lib/native_file_types/apple2/AppleBinary.rb +51 -0
  423. data/lib/native_file_types/apple2/AppleHiResPic.rb +166 -0
  424. data/lib/native_file_types/apple2/AppleText.rb +43 -0
  425. data/lib/native_file_types/apple2/AppleWorksWP.rb +68 -0
  426. data/lib/native_file_types/apple2/Applesoft.rb +115 -0
  427. data/lib/native_file_types/apple2/IntegerBASIC.rb +217 -0
  428. data/lib/native_file_types/apple2/NADOLFile.rb +205 -0
  429. data/lib/native_file_types/apple2/PascalFile.rb +48 -0
  430. data/lib/native_file_types/apple2/ProDosFile.rb +112 -0
  431. data/lib/native_file_types/apple2/ScAsm.rb +110 -0
  432. data/lib/native_file_types/atari800/AtariBasic.rb +396 -0
  433. data/lib/native_file_types/atari800/AtariBinary.rb +53 -0
  434. data/lib/native_file_types/atari800/AtariText.rb +49 -0
  435. data/lib/native_file_types/c64/C64BasicPrg.rb +333 -0
  436. data/lib/native_file_types/c64/C64Prg.rb +57 -0
  437. data/lib/native_file_types/c64/C64PrgText.rb +45 -0
  438. data/lib/native_file_types/c64/C64Seq.rb +47 -0
  439. data/lib/native_file_types/c64/CbmFile.rb +41 -0
  440. data/lib/native_file_types/cpm/CPMFile.rb +40 -0
  441. data/lib/native_file_types/cpm/MBasic.rb +311 -0
  442. data/lib/native_file_types/generic/GenericFile.rb +43 -0
  443. data/lib/native_file_types/trs80/Trs80Cmd.rb +130 -0
  444. data/lib/native_file_types/trs80/Trs80Jcl.rb +43 -0
  445. data/lib/native_file_types/trs80/Trs80LevelIIBasic.rb +201 -0
  446. data/lib/native_file_types/trs80/Trs80PascalSource.rb +58 -0
  447. data/lib/proc_source.rb +238 -0
  448. data/lib/rdoc_patch.rb +32 -0
  449. data/test/tc_file_cache.rb +11 -0
  450. data/test/tc_image_sniffing.rb +165 -0
  451. data/test/testhelper.rb +14 -0
  452. data/test/testlog.txt +30755 -0
  453. data/test/ts_test_all.rb +3 -0
  454. metadata +601 -0
@@ -0,0 +1,77 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+ $:.unshift(File.dirname(__FILE__+"\\..")) unless
5
+ $:.include?(File.dirname(__FILE__+"\\..")) || $:.include?(File.expand_path(File.dirname(__FILE__+"\\..")))
6
+
7
+ require 'ImageFormat'
8
+
9
+ #A2 DSK with "physical" ordering
10
+ class A2Dsk < ImageFormat
11
+
12
+ def A2Dsk.possible_extensions
13
+ ['.dsk','.do','.po']
14
+ end
15
+
16
+ def A2Dsk.host_system
17
+ Apple2
18
+ end
19
+
20
+ #to be overriden in each subclass with a table showing what order logical sectors are stored
21
+ def A2Dsk.interleave
22
+ nil
23
+ end
24
+
25
+ def sectors_in_track(track_no)
26
+ (0..0x0f).collect
27
+ end
28
+
29
+ def track_count
30
+ file_bytes.length/4096
31
+ end
32
+
33
+ def get_sector(track,sector)
34
+ return nil if self.class.interleave.nil?
35
+ return nil unless sector.between?(0,0x0F)
36
+ physical_sector=self.class.interleave[sector]
37
+ start_byte=track*16*256+physical_sector*256
38
+ file_bytes[start_byte,256]
39
+ end
40
+
41
+ end
42
+
43
+ class A2DskPhysicalOrder < A2Dsk
44
+ def A2DskPhysicalOrder.interleave
45
+ [0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F]
46
+ end
47
+ end
48
+
49
+ class A2DskDosOrder < A2Dsk
50
+ def A2DskDosOrder.interleave
51
+ [0x00,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x0F]
52
+ end
53
+ end
54
+ # == Author
55
+ # Jonno Downes (jonno@jamtronix.com)
56
+ #
57
+ # == Copyright
58
+ # Copyright (c) 2007 Jonno Downes (jonno@jamtronix.com)
59
+ #
60
+ #Permission is hereby granted, free of charge, to any person obtaining
61
+ #a copy of this software and associated documentation files (the
62
+ #"Software"), to deal in the Software without restriction, including
63
+ #without limitation the rights to use, copy, modify, merge, publish,
64
+ #distribute, sublicense, and/or sell copies of the Software, and to
65
+ #permit persons to whom the Software is furnished to do so, subject to
66
+ #the following conditions:
67
+
68
+ # The above copyright notice and this permission notice shall be
69
+ # included in all copies or substantial portions of the Software.
70
+
71
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
72
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
73
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
74
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
75
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
76
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
77
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,83 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+ $:.unshift(File.dirname(__FILE__+"\\..")) unless
5
+ $:.include?(File.dirname(__FILE__+"\\..")) || $:.include?(File.expand_path(File.dirname(__FILE__+"\\..")))
6
+
7
+ require 'ImageFormat'
8
+
9
+ #Atari ATR format - http://pages.suddenlink.net/wa5bdu/readme.txt
10
+ class Atr < ImageFormat
11
+
12
+ ATR_HEADER_LENGTH=0x10
13
+ ATR_SECTORS_PER_TRACK=18
14
+
15
+ def self.possible_extensions
16
+ ['.atr']
17
+ end
18
+
19
+ is_valid_image_if lambda {
20
+ file_system_image.file_bytes[0,2]==[0x96,0x02]
21
+ }
22
+
23
+ def self.host_system
24
+ Atari800
25
+ end
26
+
27
+ #Atari disks actually don't use tracks, just a single flat list of sectors
28
+ #however for ease of use with utilities that assume there are tracks & sectors
29
+ #we will assign 18 sectors per track
30
+ def sectors_in_track(track_no)
31
+ first_sector=track_no*ATR_SECTORS_PER_TRACK
32
+ (first_sector..first_sector+ATR_SECTORS_PER_TRACK-1).collect
33
+ end
34
+
35
+ # how many tracks could be interpreted by this image format?
36
+ def track_count
37
+ (@file_bytes.length-ATR_HEADER_LENGTH)/(@sector_size*ATR_SECTORS_PER_TRACK)
38
+ end
39
+
40
+
41
+ # how many sectors could be interpreted by this image format?
42
+ def sector_count
43
+ (@file_bytes.length-ATR_HEADER_LENGTH)/(@sector_size)
44
+ end
45
+
46
+ #we ignore the track no, but keep the paramater for compatability with other image formats
47
+ def get_sector(track_no,sector_no)
48
+ offset_of_sector=(sector_no-1)*@sector_size+ATR_HEADER_LENGTH
49
+ return @file_bytes[offset_of_sector,@sector_size]
50
+ end
51
+
52
+ def initialize(file_bytes)
53
+ @file_bytes=file_bytes
54
+ @sector_size=file_bytes[4,2].unpack("v")[0]
55
+ end
56
+
57
+
58
+ end
59
+
60
+ # == Author
61
+ # Jonno Downes (jonno@jamtronix.com)
62
+ #
63
+ # == Copyright
64
+ # Copyright (c) 2007 Jonno Downes (jonno@jamtronix.com)
65
+ #
66
+ #Permission is hereby granted, free of charge, to any person obtaining
67
+ #a copy of this software and associated documentation files (the
68
+ #"Software"), to deal in the Software without restriction, including
69
+ #without limitation the rights to use, copy, modify, merge, publish,
70
+ #distribute, sublicense, and/or sell copies of the Software, and to
71
+ #permit persons to whom the Software is furnished to do so, subject to
72
+ #the following conditions:
73
+
74
+ # The above copyright notice and this permission notice shall be
75
+ # included in all copies or substantial portions of the Software.
76
+
77
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
78
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
79
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
80
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
81
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
82
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
83
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,87 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+ $:.unshift(File.dirname(__FILE__+"\\..")) unless
5
+ $:.include?(File.dirname(__FILE__+"\\..")) || $:.include?(File.expand_path(File.dirname(__FILE__+"\\..")))
6
+
7
+ require 'ImageFormat'
8
+
9
+ class D64 < ImageFormat
10
+
11
+ #
12
+ # For manipulating D64 files, as used by many C64 emulators.
13
+ #
14
+ # References:
15
+ # http://www.unusedino.de/ec64/technical/formats/d64.html
16
+ # http://www.baltissen.org/newhtm/1541c.htm
17
+ # http://www.scribd.com/doc/40438/The-Commodore-1541-Disk-Drive-Users-Guide
18
+ #
19
+
20
+ D64_BYTES_PER_SECTOR=256
21
+
22
+ @@sectors_in_track=[]
23
+ @@offset_of_track=[]
24
+ 1.upto(17) {|t| @@sectors_in_track[t]=21}
25
+ 18.upto(24) {|t| @@sectors_in_track[t]=19}
26
+ 25.upto(30) {|t| @@sectors_in_track[t]=18}
27
+ 31.upto(40) {|t| @@sectors_in_track[t]=17}
28
+ @@offset_of_track[1]=0
29
+ 1.upto(39) {|t| @@offset_of_track[t+1]=@@offset_of_track[t]+(@@sectors_in_track[t]*D64_BYTES_PER_SECTOR)}
30
+
31
+ def self.possible_extensions
32
+ ['.d64']
33
+ end
34
+
35
+ def self.host_system
36
+ C64
37
+ end
38
+
39
+ def sectors_in_track(track_no)
40
+ (0..@@sectors_in_track[track_no]-1).collect
41
+ end
42
+
43
+ #for a given byte stream, how many tracks could be interpreted by this image format?
44
+ def track_count
45
+ track_count=0
46
+ 1.upto(@@offset_of_track.length-1) do |t|
47
+ track_count=t if file_bytes.length>@@offset_of_track[t]
48
+ end
49
+ track_count
50
+ end
51
+
52
+ def end_track
53
+ return track_count
54
+ end
55
+
56
+ def get_sector(track_no,sector_no)
57
+ return nil if @@sectors_in_track[track_no].nil?
58
+ return nil unless sector_no.between?(0,@@sectors_in_track[track_no]-1)
59
+ start_byte=@@offset_of_track[track_no]+(D64_BYTES_PER_SECTOR*(sector_no))
60
+ file_bytes[start_byte,D64_BYTES_PER_SECTOR]
61
+ end
62
+
63
+ end
64
+ # == Author
65
+ # Jonno Downes (jonno@jamtronix.com)
66
+ #
67
+ # == Copyright
68
+ # Copyright (c) 2008 Jonno Downes (jonno@jamtronix.com)
69
+ #
70
+ #Permission is hereby granted, free of charge, to any person obtaining
71
+ #a copy of this software and associated documentation files (the
72
+ #"Software"), to deal in the Software without restriction, including
73
+ #without limitation the rights to use, copy, modify, merge, publish,
74
+ #distribute, sublicense, and/or sell copies of the Software, and to
75
+ #permit persons to whom the Software is furnished to do so, subject to
76
+ #the following conditions:
77
+
78
+ # The above copyright notice and this permission notice shall be
79
+ # included in all copies or substantial portions of the Software.
80
+
81
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
82
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
83
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
84
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
85
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
86
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
87
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,174 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+ $:.unshift(File.dirname(__FILE__+"\\..")) unless
5
+ $:.include?(File.dirname(__FILE__+"\\..")) || $:.include?(File.expand_path(File.dirname(__FILE__+"\\..")))
6
+
7
+ require 'ImageFormat'
8
+
9
+ class G64 < ImageFormat
10
+
11
+ #
12
+ # raw GCR binary representation of a 1541 diskette
13
+ #
14
+ # References:
15
+ # http://www.unusedino.de/ec64/technical/formats/g64.html
16
+ # http://www.baltissen.org/newhtm/1541c.htm
17
+ # http://www.scribd.com/doc/40438/The-Commodore-1541-Disk-Drive-Users-Guide
18
+ #
19
+
20
+ CBM_GCR_CODES={
21
+ "01010"=>0x00,
22
+ "01011"=>0x01,
23
+ "10010"=>0x02,
24
+ "10011"=>0x03,
25
+ "01110"=>0x04,
26
+ "01111"=>0x05,
27
+ "10110"=>0x06,
28
+ "10111"=>0x07,
29
+ "01001"=>0x08,
30
+ "11001"=>0x09,
31
+ "11010"=>0x0A,
32
+ "11011"=>0x0B,
33
+ "01101"=>0x0C,
34
+ "11101"=>0x0D,
35
+ "11110"=>0x0E,
36
+ "10101"=>0x0F
37
+ }
38
+
39
+ #G64 format starts with a signature
40
+ is_valid_image_if lambda {
41
+ file_system_image.file_bytes[0,8]=="GCR-1541"
42
+ }
43
+
44
+
45
+ def initialize(file_bytes)
46
+ @file_bytes=file_bytes
47
+ @tracks={}
48
+ @end_track=0
49
+ signature,version,raw_track_count,track_length=file_bytes.unpack("A8ccv")
50
+
51
+ 0.upto(raw_track_count-1) do |raw_track_no|
52
+ cbm_track_no=(raw_track_no+2.0)/2
53
+ track_offset=file_bytes[0x0c+4*raw_track_no,4].unpack("V")[0]
54
+ if track_offset>0 then
55
+ @end_track=cbm_track_no
56
+ end
57
+ end
58
+
59
+ end
60
+ def self.possible_extensions
61
+ ['.g64']
62
+ end
63
+
64
+ def self.host_system
65
+ C64
66
+ end
67
+
68
+ def sectors_in_track(track_no)
69
+ end
70
+
71
+ def track_count
72
+ @end_track
73
+ end
74
+
75
+ def end_track
76
+ @end_track
77
+ end
78
+
79
+ def get_sector(track_no,sector_no)
80
+ #puts "TR #{track_no} : #{sector_no}"
81
+ parse_raw_track((track_no-1)*2) if @tracks[track_no].nil?
82
+ @tracks[track_no][sector_no]
83
+
84
+ end
85
+
86
+ private
87
+
88
+ def parse_raw_track(raw_track_no)
89
+
90
+ # cbm_track_no=(raw_track_no+2.0)/2
91
+ track_offset=file_bytes[0x0c+4*raw_track_no,4].unpack("V")[0]
92
+ if track_offset>0 then
93
+ track_length=file_bytes[track_offset,2].unpack("v")[0]
94
+ track_bytes=file_bytes[track_offset+2,track_length]
95
+ # puts "RAW #{raw_track_no} CBM #{cbm_track_no} OFFSET #{track_offset} #{track_bytes.length}"
96
+ s=""
97
+ track_bytes.each_byte do |byte|
98
+ s+="%08b" % byte
99
+ end
100
+
101
+ raw_blocks=s.split(/1{10,200}/)
102
+ decoded_blocks=[]
103
+
104
+ raw_blocks.each do |raw_block|
105
+ this_byte=0
106
+ high_nibble=true
107
+ decoded_block_bytes=""
108
+ 0.upto([(raw_block.length/5-1),518].min) do |i|
109
+ gcr_bits=raw_block[i*5,5]
110
+ this_nibble=CBM_GCR_CODES[gcr_bits]
111
+ if this_nibble.nil? then
112
+ # puts "invalid GCR bits #{gcr_bits} in #{raw_block} offset #{i*5}"
113
+ else
114
+ if (high_nibble) then
115
+ this_byte=this_nibble*0x10
116
+ high_nibble=false
117
+ else
118
+ this_byte+=this_nibble
119
+ high_nibble=true
120
+ decoded_block_bytes<<this_byte
121
+ end
122
+ end
123
+
124
+ end
125
+ decoded_blocks<<decoded_block_bytes
126
+ #puts ">>>>"
127
+ #puts raw_block
128
+ #puts "ID BYTE %02X %02X " % [decoded_block_bytes[0],decoded_block_bytes.length]
129
+ #decoded_block_bytes.each {|x| print "%02x " % x}
130
+ #puts "<<<<"
131
+ #puts
132
+ end
133
+ 0.upto(decoded_blocks.length-2) do |i|
134
+ if (decoded_blocks[i][0]==0x08) && (decoded_blocks[i+1][0]==0x07) then
135
+ header_block=decoded_blocks[i]
136
+ data_block=decoded_blocks[i+1]
137
+ sector_no=header_block[2]
138
+ track_no=header_block[3]
139
+ format_id=header_block[4]+header_block[5]
140
+ @tracks[track_no]={} if @tracks[track_no].nil?
141
+ # puts "TRACK %02X SECTOR %02X ID #{format_id} LENGTH %02x" % [track_no,sector_no,data_block.length]
142
+ sector_data=data_block[1,data_block.length-1]
143
+ @tracks[track_no][sector_no]=sector_data
144
+ #puts hex_dump(data_block[1,256])
145
+ end
146
+ end
147
+ end
148
+ end
149
+
150
+ end
151
+ # == Author
152
+ # Jonno Downes (jonno@jamtronix.com)
153
+ #
154
+ # == Copyright
155
+ # Copyright (c) 2008 Jonno Downes (jonno@jamtronix.com)
156
+ #
157
+ #Permission is hereby granted, free of charge, to any person obtaining
158
+ #a copy of this software and associated documentation files (the
159
+ #"Software"), to deal in the Software without restriction, including
160
+ #without limitation the rights to use, copy, modify, merge, publish,
161
+ #distribute, sublicense, and/or sell copies of the Software, and to
162
+ #permit persons to whom the Software is furnished to do so, subject to
163
+ #the following conditions:
164
+
165
+ # The above copyright notice and this permission notice shall be
166
+ # included in all copies or substantial portions of the Software.
167
+
168
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
169
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
170
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
171
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
172
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
173
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
174
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,65 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+ $:.unshift(File.dirname(__FILE__+"\\..")) unless
5
+ $:.include?(File.dirname(__FILE__+"\\..")) || $:.include?(File.expand_path(File.dirname(__FILE__+"\\..")))
6
+
7
+ require 'ImageFormat'
8
+
9
+ #TRS80 DSK in JV1 format - http://tim-mann.org/trs80/dskspec.html
10
+ class Trs80Jv1Dsk < ImageFormat
11
+
12
+ def self.possible_extensions
13
+ ['.dsk']
14
+ end
15
+
16
+ #JV1 format has no header, and a variable number of tracks, each with 10 sectors, each with 256 bytes.
17
+ #for the moment, we only handle SSSD 80 track images (204800 bytes)
18
+ is_valid_image_if lambda {
19
+ file_system_image.file_bytes.length==204800
20
+ }
21
+
22
+ def self.host_system
23
+ Trs80
24
+ end
25
+
26
+ def sectors_in_track(track_no)
27
+ (0..0x09).collect
28
+ end
29
+
30
+ # how many tracks could be interpreted by this image format?
31
+ def track_count
32
+ file_bytes.length/(2560)
33
+ end
34
+
35
+ def get_sector(track,sector)
36
+ start_byte=track*10*256+sector*256
37
+ file_bytes[start_byte,256]
38
+ end
39
+
40
+ end
41
+
42
+ # == Author
43
+ # Jonno Downes (jonno@jamtronix.com)
44
+ #
45
+ # == Copyright
46
+ # Copyright (c) 2007 Jonno Downes (jonno@jamtronix.com)
47
+ #
48
+ #Permission is hereby granted, free of charge, to any person obtaining
49
+ #a copy of this software and associated documentation files (the
50
+ #"Software"), to deal in the Software without restriction, including
51
+ #without limitation the rights to use, copy, modify, merge, publish,
52
+ #distribute, sublicense, and/or sell copies of the Software, and to
53
+ #permit persons to whom the Software is furnished to do so, subject to
54
+ #the following conditions:
55
+
56
+ # The above copyright notice and this permission notice shall be
57
+ # included in all copies or substantial portions of the Software.
58
+
59
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
60
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
61
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
62
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
63
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
64
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
65
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,51 @@
1
+ require 'NativeFileType'
2
+
3
+ class AppleBinary<NativeFileType
4
+
5
+ def self.file_system_file_types
6
+ {
7
+ AppleDos=>0x04
8
+ }
9
+ end
10
+
11
+ #Apple DOS Binary files have the load address stored in first two bytes of the file, in LO, HI order
12
+ def self.load_address(contents)
13
+ contents[0]+contents[1]*256
14
+ end
15
+
16
+ #header is 2 bytes for load address, then 2 bytes for file length
17
+ def header_length
18
+ 4
19
+ end
20
+
21
+ def to_disassembly
22
+ return Apple2.disassemble(data_without_header,load_address+header_length)
23
+ end
24
+
25
+ end
26
+
27
+
28
+ # == Author
29
+ # Jonno Downes (jonno@jamtronix.com)
30
+ #
31
+ # == Copyright
32
+ # Copyright (c) 2008 Jonno Downes (jonno@jamtronix.com)
33
+ #
34
+ #Permission is hereby granted, free of charge, to any person obtaining
35
+ #a copy of this software and associated documentation files (the
36
+ #"Software"), to deal in the Software without restriction, including
37
+ #without limitation the rights to use, copy, modify, merge, publish,
38
+ #distribute, sublicense, and/or sell copies of the Software, and to
39
+ #permit persons to whom the Software is furnished to do so, subject to
40
+ #the following conditions:
41
+
42
+ # The above copyright notice and this permission notice shall be
43
+ # included in all copies or substantial portions of the Software.
44
+
45
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
46
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
47
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
48
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
49
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
50
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
51
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,166 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+
5
+ require 'PatchedPNG'
6
+
7
+ class AppleHiResPic<NativeFileType
8
+
9
+ def self.file_system_file_types
10
+ {
11
+ AppleDos=>0x04,
12
+ NADOLDos=>:any,
13
+ PascalDos=>0x07
14
+ }
15
+ end
16
+
17
+ is_valid_file_if lambda {
18
+ is_valid=true
19
+ if file_system_image.file_system==AppleDos then
20
+ load_address=AppleBinary.load_address(contents)
21
+ is_valid=((contents.length>=8184) && (contents.length<=9000) && ((load_address==0x2000) || load_address==0x4000))
22
+ end
23
+ if file_system_image.file_system==NADOLDos then
24
+ is_valid=(contents.length==8192)
25
+ end
26
+ is_valid
27
+ }
28
+
29
+
30
+
31
+
32
+ #colours cribbed from http://groups.google.com.au/group/comp.sys.apple2/browse_thread/thread/b9aa36ead6935c42/faa0f4df3e89060f
33
+ HGR_BLACK=PNG::Color::Black #color=0,4
34
+ HGR_GREEN=PNG::Color.new(0x2F,0xB8,0x1F,0xFF) #color=1
35
+ HGR_VIOLET=PNG::Color.new(0xC8,0x47,0xE4,0xFF) #color=2
36
+ HGR_WHITE=PNG::Color::White #color=3,7
37
+ HGR_ORANGE=PNG::Color.new(0xC7,0x70,0x28,0xFF) #color=5
38
+ HGR_BLUE=PNG::Color.new(0x30,0x8F,0xE3,0xFF) #color=6
39
+
40
+ HGR_COLS=40*7
41
+ HGR_ROWS=8*8*3
42
+ SCALE=1
43
+
44
+ #per Apple // Reference Manual for //e chapter 2, pages 22-35
45
+ #also TechNote - Apple IIe #3 Double High-Resolution Graphics - http://web.pdx.edu/~heiss/technotes/aiie/tn.aiie.03.html
46
+ #HGR screen consists of 3 bands of 8 rows of 8 scanlines
47
+ #for each absolute scanline, what is the offset into screen ram that the 40 bytes for this scanline is stored?
48
+
49
+ @@scanline_offsets=Array.new(HGR_ROWS)
50
+
51
+ 0.upto(2) do |band|
52
+ 0.upto(7) do |row|
53
+ 0.upto(7) do |relative_scanline|
54
+ band_ram_offset=band*40
55
+ band_scanline_offset=band*64
56
+ scanline_ram_offset=relative_scanline*1024
57
+ scanline_scanline_offset=relative_scanline
58
+ row_ram_offset=128*row
59
+ row_scanline_offset=8*row
60
+ scanline_offset=band_scanline_offset+scanline_scanline_offset+row_scanline_offset
61
+ ram_offset=band_ram_offset+scanline_ram_offset+row_ram_offset
62
+ @@scanline_offsets[scanline_offset]=ram_offset
63
+ end
64
+ end
65
+ end
66
+
67
+
68
+ def self.matching_score
69
+ [AppleBinary.matching_score+1,NADOLFile.matching_score+1].max
70
+ end
71
+
72
+ #Apple DOS Binary files have the load address stored in first two bytes of the file, in LO, HI order
73
+ def load_address
74
+ if file_system_image.file_system==AppleDos then
75
+ return contents[0]+contents[1]*256
76
+ else
77
+ return 0x2000
78
+ end
79
+ end
80
+
81
+ def to_png
82
+ if file_system_image.file_system==AppleDos then
83
+ buffer=contents[4,contents.length-4]
84
+ else
85
+ buffer=contents
86
+ end
87
+
88
+ canvas = PNG::Canvas.new HGR_COLS*SCALE, HGR_ROWS*SCALE, PNG::Color::Black
89
+ 0.upto(HGR_ROWS-1) do |y|
90
+ last_bit_set=false
91
+ 0.upto(39) do |x_byte|
92
+ offset=@@scanline_offsets[y]+x_byte
93
+ current_byte=buffer[offset]
94
+ current_byte=0 if current_byte.nil? #if we overrun the buffer then assume it's black
95
+ 0.upto(6) do |x_bit|
96
+ x=x_byte*7+x_bit
97
+ bit_set=((current_byte & (2**x_bit))>0)
98
+ if (bit_set) then
99
+ if (last_bit_set) then
100
+ #adjacent pixels should both be white
101
+ AppleHiResPic.set_pixel(canvas,x-1,y,HGR_WHITE)
102
+ AppleHiResPic.set_pixel(canvas,x,y,HGR_WHITE)
103
+ else
104
+ if current_byte>=0x80 then
105
+ pallete=[HGR_BLUE,HGR_ORANGE]
106
+ else
107
+ pallete=[HGR_VIOLET,HGR_GREEN]
108
+ end
109
+ this_pixel_colour=pallete[x%2]
110
+ AppleHiResPic.set_pixel(canvas,x,y,this_pixel_colour)
111
+ AppleHiResPic.set_pixel(canvas,x+1,y,this_pixel_colour) unless x>=HGR_ROWS
112
+ end
113
+ end
114
+ last_bit_set=bit_set
115
+ end
116
+ end
117
+ end
118
+
119
+ png = PNG.new canvas
120
+ result=png.raw_bytes
121
+ result
122
+ end
123
+
124
+ def png_width
125
+ HGR_COLS*SCALE
126
+ end
127
+ def png_height
128
+ HGR_ROWS*SCALE
129
+ end
130
+
131
+ private
132
+ def self.set_pixel(canvas,x,y,colour)
133
+ 0.upto(SCALE-1) do |row|
134
+ 0.upto(SCALE-1) do |col|
135
+ canvas[x*SCALE+col, y*SCALE+row]= colour
136
+ end
137
+ end
138
+ end
139
+
140
+ end
141
+
142
+
143
+ # == Author
144
+ # Jonno Downes (jonno@jamtronix.com)
145
+ #
146
+ # == Copyright
147
+ # Copyright (c) 2008 Jonno Downes (jonno@jamtronix.com)
148
+ #
149
+ #Permission is hereby granted, free of charge, to any person obtaining
150
+ #a copy of this software and associated documentation files (the
151
+ #"Software"), to deal in the Software without restriction, including
152
+ #without limitation the rights to use, copy, modify, merge, publish,
153
+ #distribute, sublicense, and/or sell copies of the Software, and to
154
+ #permit persons to whom the Software is furnished to do so, subject to
155
+ #the following conditions:
156
+
157
+ # The above copyright notice and this permission notice shall be
158
+ # included in all copies or substantial portions of the Software.
159
+
160
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
161
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
162
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
163
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
164
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
165
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
166
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.