ripxplore 0.0.1 → 0.0.2

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 (712) hide show
  1. data/bin/ripxplore.rb +5 -25
  2. data/doc/classes/A2Dsk.html +9 -0
  3. data/doc/classes/A2DskDosOrder.html +9 -0
  4. data/doc/classes/A2DskPhysicalOrder.html +9 -0
  5. data/doc/classes/Apple2.html +171 -21
  6. data/doc/classes/Apple2.src/M000187.html +18 -0
  7. data/doc/classes/Apple2.src/M000188.html +18 -0
  8. data/doc/classes/Apple2.src/M000189.html +18 -0
  9. data/doc/classes/Apple2.src/M000190.html +19 -0
  10. data/doc/classes/Apple2.src/M000191.html +19 -0
  11. data/doc/classes/Apple2.src/M000192.html +18 -0
  12. data/doc/classes/Apple2.src/M000193.html +18 -0
  13. data/doc/classes/Apple2.src/M000194.html +18 -0
  14. data/doc/classes/Apple2.src/M000195.html +18 -0
  15. data/doc/classes/Apple2.src/M000196.html +18 -0
  16. data/doc/classes/Apple2.src/M000197.html +18 -0
  17. data/doc/classes/Apple2.src/M000198.html +18 -0
  18. data/doc/classes/Apple2.src/M000199.html +18 -0
  19. data/doc/classes/Apple2.src/M000200.html +18 -0
  20. data/doc/classes/AppleBinary.html +21 -21
  21. data/doc/classes/AppleBinary.src/M000153.html +20 -0
  22. data/doc/classes/AppleBinary.src/M000154.html +18 -0
  23. data/doc/classes/AppleBinary.src/M000155.html +18 -0
  24. data/doc/classes/AppleBinary.src/M000156.html +18 -0
  25. data/doc/classes/AppleCPM.html +7 -0
  26. data/doc/classes/AppleDos.html +7 -0
  27. data/doc/classes/AppleDosPic.html +186 -0
  28. data/doc/classes/AppleDosPic.src/M000291.html +20 -0
  29. data/doc/classes/AppleDosPic.src/M000292.html +18 -0
  30. data/doc/classes/AppleDosPic.src/M000293.html +18 -0
  31. data/doc/classes/AppleDosPic.src/M000294.html +18 -0
  32. data/doc/classes/AppleDosPrintShopMiniPix.html +120 -0
  33. data/doc/classes/AppleHiResPic.html +43 -43
  34. data/doc/classes/AppleHiResPic.src/M000147.html +18 -0
  35. data/doc/classes/AppleHiResPic.src/M000148.html +18 -0
  36. data/doc/classes/AppleHiResPic.src/M000149.html +53 -0
  37. data/doc/classes/AppleHiResPic.src/M000150.html +18 -0
  38. data/doc/classes/AppleHiResPic.src/M000151.html +18 -0
  39. data/doc/classes/AppleHiResPic.src/M000152.html +18 -0
  40. data/doc/classes/ApplePrintShopMiniPix.html +204 -0
  41. data/doc/classes/ApplePrintShopMiniPix.src/M000313.html +38 -0
  42. data/doc/classes/ApplePrintShopMiniPix.src/M000314.html +18 -0
  43. data/doc/classes/ApplePrintShopMiniPix.src/M000315.html +18 -0
  44. data/doc/classes/ApplePrintShopMiniPix.src/M000316.html +18 -0
  45. data/doc/classes/AppleText.html +32 -10
  46. data/doc/classes/AppleText.src/M000215.html +21 -0
  47. data/doc/classes/AppleText.src/M000216.html +20 -0
  48. data/doc/classes/AppleText.src/M000217.html +23 -0
  49. data/doc/classes/AppleWorksWP.html +7 -0
  50. data/doc/classes/Applesoft.html +7 -0
  51. data/doc/classes/Atari800.html +165 -15
  52. data/doc/classes/Atari800.src/M000250.html +18 -0
  53. data/doc/classes/Atari800.src/M000251.html +23 -0
  54. data/doc/classes/Atari800.src/M000252.html +18 -0
  55. data/doc/classes/Atari800.src/M000253.html +19 -0
  56. data/doc/classes/Atari800.src/M000254.html +18 -0
  57. data/doc/classes/Atari800.src/M000255.html +18 -0
  58. data/doc/classes/Atari800.src/M000256.html +18 -0
  59. data/doc/classes/Atari800.src/M000257.html +18 -0
  60. data/doc/classes/Atari800.src/M000258.html +18 -0
  61. data/doc/classes/Atari800.src/M000259.html +18 -0
  62. data/doc/classes/Atari800.src/M000260.html +18 -0
  63. data/doc/classes/Atari800.src/M000261.html +18 -0
  64. data/doc/classes/Atari800.src/M000262.html +18 -0
  65. data/doc/classes/AtariBasic.html +7 -0
  66. data/doc/classes/AtariBinary.html +9 -2
  67. data/doc/classes/AtariBinary.src/M000241.html +2 -2
  68. data/doc/classes/AtariDos.html +7 -0
  69. data/doc/classes/AtariText.html +17 -10
  70. data/doc/classes/AtariText.src/M000011.html +20 -0
  71. data/doc/classes/AtariText.src/M000012.html +18 -0
  72. data/doc/classes/Atr.html +7 -0
  73. data/doc/classes/C64.html +175 -25
  74. data/doc/classes/C64.src/M000043.html +18 -0
  75. data/doc/classes/C64.src/M000044.html +18 -0
  76. data/doc/classes/C64.src/M000045.html +31 -0
  77. data/doc/classes/C64.src/M000046.html +22 -0
  78. data/doc/classes/C64.src/M000047.html +19 -0
  79. data/doc/classes/C64.src/M000048.html +19 -0
  80. data/doc/classes/C64.src/M000049.html +18 -0
  81. data/doc/classes/C64.src/M000050.html +18 -0
  82. data/doc/classes/C64.src/M000051.html +18 -0
  83. data/doc/classes/C64.src/M000052.html +18 -0
  84. data/doc/classes/C64.src/M000053.html +18 -0
  85. data/doc/classes/C64.src/M000054.html +18 -0
  86. data/doc/classes/C64.src/M000055.html +18 -0
  87. data/doc/classes/C64.src/M000056.html +18 -0
  88. data/doc/classes/C64.src/M000057.html +18 -0
  89. data/doc/classes/C64BasicPrg.html +7 -0
  90. data/doc/classes/C64Prg.html +7 -0
  91. data/doc/classes/C64PrgText.html +7 -0
  92. data/doc/classes/C64Seq.html +7 -0
  93. data/doc/classes/CPMFile.html +7 -0
  94. data/doc/classes/CacheAndCollections.html +167 -0
  95. data/doc/classes/CacheAndCollections.src/M000005.html +21 -0
  96. data/doc/classes/CacheAndCollections.src/M000006.html +26 -0
  97. data/doc/classes/CacheAndCollections.src/M000007.html +22 -0
  98. data/doc/classes/CbmDos.html +7 -0
  99. data/doc/classes/CbmFile.html +7 -0
  100. data/doc/classes/Coco.html +337 -0
  101. data/doc/classes/Coco.src/M000095.html +18 -0
  102. data/doc/classes/Coco.src/M000096.html +18 -0
  103. data/doc/classes/Coco.src/M000097.html +18 -0
  104. data/doc/classes/Coco.src/M000098.html +18 -0
  105. data/doc/classes/Coco.src/M000099.html +18 -0
  106. data/doc/classes/Coco.src/M000100.html +18 -0
  107. data/doc/classes/Coco.src/M000101.html +18 -0
  108. data/doc/classes/Coco.src/M000102.html +18 -0
  109. data/doc/classes/Coco.src/M000103.html +18 -0
  110. data/doc/classes/Coco.src/M000104.html +18 -0
  111. data/doc/classes/Coco.src/M000105.html +18 -0
  112. data/doc/classes/Coco.src/M000106.html +18 -0
  113. data/doc/classes/Coco.src/M000107.html +55 -0
  114. data/doc/classes/CocoBasic.html +178 -0
  115. data/doc/classes/CocoBasic.src/M000126.html +20 -0
  116. data/doc/classes/CocoBasic.src/M000127.html +72 -0
  117. data/doc/classes/CocoMachineLanguage.html +171 -0
  118. data/doc/classes/CocoMachineLanguage.src/M000008.html +20 -0
  119. data/doc/classes/CocoMachineLanguage.src/M000009.html +18 -0
  120. data/doc/classes/CocoMachineLanguage.src/M000010.html +19 -0
  121. data/doc/classes/CocoScreen.html +191 -0
  122. data/doc/classes/CocoScreen.src/M000122.html +18 -0
  123. data/doc/classes/CocoScreen.src/M000123.html +18 -0
  124. data/doc/classes/CocoScreen.src/M000124.html +18 -0
  125. data/doc/classes/CocoScreen.src/M000125.html +18 -0
  126. data/doc/classes/CocoText.html +156 -0
  127. data/doc/classes/CocoText.src/M000145.html +20 -0
  128. data/doc/classes/CocoText.src/M000146.html +18 -0
  129. data/doc/classes/D64.html +7 -0
  130. data/doc/classes/D65.html +6 -0
  131. data/doc/classes/DumpUtilities.html +6 -0
  132. data/doc/classes/FileCache.html +140 -30
  133. data/doc/classes/FileCache.src/M000201.html +18 -0
  134. data/doc/classes/FileCache.src/M000202.html +20 -0
  135. data/doc/classes/FileCache.src/M000203.html +24 -0
  136. data/doc/classes/FileCache.src/M000204.html +22 -0
  137. data/doc/classes/FileCache.src/M000205.html +32 -0
  138. data/doc/classes/FileCache.src/M000206.html +21 -0
  139. data/doc/classes/FileCache.src/M000207.html +22 -0
  140. data/doc/classes/FileCache.src/M000208.html +23 -0
  141. data/doc/classes/FileCache.src/M000209.html +27 -0
  142. data/doc/classes/FileCache.src/M000210.html +24 -0
  143. data/doc/classes/FileCache.src/M000211.html +21 -0
  144. data/doc/classes/FileCacheItem.html +10 -10
  145. data/doc/classes/FileCacheItem.src/M000235.html +18 -0
  146. data/doc/classes/FileCacheItem.src/M000236.html +18 -0
  147. data/doc/classes/FileContainer.html +7 -0
  148. data/doc/classes/FileSystem.html +41 -41
  149. data/doc/classes/FileSystem.src/M000134.html +18 -0
  150. data/doc/classes/FileSystem.src/M000135.html +18 -0
  151. data/doc/classes/FileSystem.src/M000136.html +18 -0
  152. data/doc/classes/FileSystem.src/M000137.html +18 -0
  153. data/doc/classes/FileSystem.src/M000138.html +18 -0
  154. data/doc/classes/FileSystem.src/M000139.html +18 -0
  155. data/doc/classes/FileSystem.src/M000140.html +20 -0
  156. data/doc/classes/FileSystem.src/M000141.html +25 -0
  157. data/doc/classes/FileSystemImage.html +131 -86
  158. data/doc/classes/FileSystemImage.src/M000269.html +20 -0
  159. data/doc/classes/FileSystemImage.src/M000270.html +41 -0
  160. data/doc/classes/FileSystemImage.src/M000271.html +27 -0
  161. data/doc/classes/FileSystemImage.src/M000272.html +18 -0
  162. data/doc/classes/FileSystemImage.src/M000273.html +18 -0
  163. data/doc/classes/FileSystemImage.src/M000274.html +18 -0
  164. data/doc/classes/FileSystemImage.src/M000275.html +22 -0
  165. data/doc/classes/FileSystemImage.src/M000276.html +19 -0
  166. data/doc/classes/FileSystemImage.src/M000277.html +18 -0
  167. data/doc/classes/FileSystemImage.src/M000278.html +18 -0
  168. data/doc/classes/FileSystemImage.src/M000279.html +18 -0
  169. data/doc/classes/FileSystemImage.src/M000280.html +18 -0
  170. data/doc/classes/FileSystemImage.src/M000281.html +20 -0
  171. data/doc/classes/FileSystemImage.src/M000282.html +22 -0
  172. data/doc/classes/FileSystemImage.src/M000283.html +22 -0
  173. data/doc/classes/FileSystemImage.src/M000284.html +18 -0
  174. data/doc/classes/FileSystemImage.src/M000285.html +23 -0
  175. data/doc/classes/FileSystemImage.src/M000286.html +18 -0
  176. data/doc/classes/FileSystemImage.src/M000287.html +18 -0
  177. data/doc/classes/FileSystemImage.src/M000288.html +18 -0
  178. data/doc/classes/G64.html +7 -0
  179. data/doc/classes/GenericFile.html +7 -0
  180. data/doc/classes/GenericGIF.html +193 -0
  181. data/doc/classes/GenericGIF.src/M000308.html +18 -0
  182. data/doc/classes/GenericGIF.src/M000309.html +18 -0
  183. data/doc/classes/GenericGIF.src/M000310.html +18 -0
  184. data/doc/classes/GenericGIF.src/M000311.html +18 -0
  185. data/doc/classes/GenericGIF.src/M000312.html +18 -0
  186. data/doc/classes/HostSystem.html +249 -31
  187. data/doc/classes/HostSystem.src/M000058.html +18 -0
  188. data/doc/classes/HostSystem.src/M000059.html +22 -0
  189. data/doc/classes/HostSystem.src/M000060.html +18 -0
  190. data/doc/classes/HostSystem.src/M000061.html +18 -0
  191. data/doc/classes/HostSystem.src/M000062.html +22 -0
  192. data/doc/classes/HostSystem.src/M000063.html +33 -0
  193. data/doc/classes/HostSystem.src/M000064.html +18 -0
  194. data/doc/classes/HostSystem.src/M000065.html +19 -0
  195. data/doc/classes/HostSystem.src/M000066.html +18 -0
  196. data/doc/classes/HostSystem.src/M000067.html +18 -0
  197. data/doc/classes/HostSystem.src/M000068.html +18 -0
  198. data/doc/classes/HostSystem.src/M000069.html +18 -0
  199. data/doc/classes/HostSystem.src/M000070.html +18 -0
  200. data/doc/classes/HostSystem.src/M000071.html +18 -0
  201. data/doc/classes/HostSystem.src/M000072.html +18 -0
  202. data/doc/classes/HostSystem.src/M000073.html +18 -0
  203. data/doc/classes/HostSystem.src/M000074.html +29 -0
  204. data/doc/classes/HostSystem.src/M000075.html +18 -0
  205. data/doc/classes/ImageFormat.html +85 -85
  206. data/doc/classes/ImageFormat.src/M000218.html +18 -0
  207. data/doc/classes/ImageFormat.src/M000219.html +18 -0
  208. data/doc/classes/ImageFormat.src/M000220.html +18 -0
  209. data/doc/classes/ImageFormat.src/M000221.html +18 -0
  210. data/doc/classes/ImageFormat.src/M000222.html +18 -0
  211. data/doc/classes/ImageFormat.src/M000223.html +22 -0
  212. data/doc/classes/ImageFormat.src/M000224.html +19 -0
  213. data/doc/classes/ImageFormat.src/M000225.html +18 -0
  214. data/doc/classes/ImageFormat.src/M000226.html +18 -0
  215. data/doc/classes/ImageFormat.src/M000227.html +18 -0
  216. data/doc/classes/ImageFormat.src/M000228.html +18 -0
  217. data/doc/classes/ImageFormat.src/M000229.html +18 -0
  218. data/doc/classes/ImageFormat.src/M000230.html +18 -0
  219. data/doc/classes/ImageFormat.src/M000231.html +18 -0
  220. data/doc/classes/ImageFormat.src/M000232.html +20 -0
  221. data/doc/classes/ImageFormat.src/M000233.html +26 -0
  222. data/doc/classes/ImageFormat.src/M000234.html +18 -0
  223. data/doc/classes/ImageSniffing.html +94 -14
  224. data/doc/classes/ImageSniffing.src/M000052.html +2 -2
  225. data/doc/classes/ImageSniffing.src/M000109.html +102 -0
  226. data/doc/classes/ImageSniffing.src/M000110.html +36 -0
  227. data/doc/classes/ImageSniffing.src/M000111.html +43 -0
  228. data/doc/classes/ImageSniffing.src/M000112.html +46 -0
  229. data/doc/classes/ImageSniffing.src/M000113.html +59 -0
  230. data/doc/classes/ImageSniffing.src/M000114.html +74 -0
  231. data/doc/classes/IntegerBASIC.html +7 -0
  232. data/doc/classes/JvcDsk.html +231 -0
  233. data/doc/classes/JvcDsk.src/M000263.html +18 -0
  234. data/doc/classes/JvcDsk.src/M000264.html +39 -0
  235. data/doc/classes/JvcDsk.src/M000265.html +18 -0
  236. data/doc/classes/JvcDsk.src/M000266.html +18 -0
  237. data/doc/classes/JvcDsk.src/M000267.html +18 -0
  238. data/doc/classes/JvcDsk.src/M000268.html +22 -0
  239. data/doc/classes/MBasic.html +7 -0
  240. data/doc/classes/NADOLDos.html +7 -0
  241. data/doc/classes/NADOLFile.html +8 -0
  242. data/doc/classes/NADOLPic.html +156 -0
  243. data/doc/classes/NADOLPic.src/M000289.html +20 -0
  244. data/doc/classes/NADOLPic.src/M000290.html +18 -0
  245. data/doc/classes/NADOLTokens.html +8 -0
  246. data/doc/classes/NativeFileType.html +91 -91
  247. data/doc/classes/NativeFileType.src/M000169.html +22 -0
  248. data/doc/classes/NativeFileType.src/M000170.html +18 -0
  249. data/doc/classes/NativeFileType.src/M000171.html +18 -0
  250. data/doc/classes/NativeFileType.src/M000172.html +18 -0
  251. data/doc/classes/NativeFileType.src/M000173.html +18 -0
  252. data/doc/classes/NativeFileType.src/M000174.html +18 -0
  253. data/doc/classes/NativeFileType.src/M000175.html +18 -0
  254. data/doc/classes/NativeFileType.src/M000176.html +23 -0
  255. data/doc/classes/NativeFileType.src/M000177.html +18 -0
  256. data/doc/classes/NativeFileType.src/M000178.html +18 -0
  257. data/doc/classes/NativeFileType.src/M000179.html +24 -0
  258. data/doc/classes/NativeFileType.src/M000180.html +41 -0
  259. data/doc/classes/NativeFileType.src/M000181.html +24 -0
  260. data/doc/classes/NativeFileType.src/M000182.html +18 -0
  261. data/doc/classes/NativeFileType.src/M000183.html +18 -0
  262. data/doc/classes/NativeFileType.src/M000184.html +18 -0
  263. data/doc/classes/NativeFileType.src/M000185.html +20 -0
  264. data/doc/classes/NativeFileType.src/M000186.html +27 -0
  265. data/doc/classes/PNG/Canvas.html +7 -0
  266. data/doc/classes/PNG/Color.html +7 -0
  267. data/doc/classes/PNG.html +7 -0
  268. data/doc/classes/PackedAppleDosPic.html +145 -0
  269. data/doc/classes/PackedAppleDosPic.src/M000128.html +59 -0
  270. data/doc/classes/PascalDos.html +7 -0
  271. data/doc/classes/PascalFile.html +7 -0
  272. data/doc/classes/PascalPic.html +156 -0
  273. data/doc/classes/PascalPic.src/M000240.html +20 -0
  274. data/doc/classes/PascalPic.src/M000241.html +18 -0
  275. data/doc/classes/Pc99DD.html +250 -0
  276. data/doc/classes/Pc99DD.src/M000035.html +18 -0
  277. data/doc/classes/Pc99DD.src/M000036.html +18 -0
  278. data/doc/classes/Pc99DD.src/M000037.html +18 -0
  279. data/doc/classes/Pc99DD.src/M000038.html +18 -0
  280. data/doc/classes/Pc99DD.src/M000039.html +18 -0
  281. data/doc/classes/Pc99DD.src/M000040.html +18 -0
  282. data/doc/classes/Pc99DD.src/M000041.html +18 -0
  283. data/doc/classes/Pc99DD.src/M000042.html +18 -0
  284. data/doc/classes/Pc99Dsk.html +120 -0
  285. data/doc/classes/Pc99SD.html +250 -0
  286. data/doc/classes/Pc99SD.src/M000242.html +18 -0
  287. data/doc/classes/Pc99SD.src/M000243.html +18 -0
  288. data/doc/classes/Pc99SD.src/M000244.html +18 -0
  289. data/doc/classes/Pc99SD.src/M000245.html +18 -0
  290. data/doc/classes/Pc99SD.src/M000246.html +18 -0
  291. data/doc/classes/Pc99SD.src/M000247.html +18 -0
  292. data/doc/classes/Pc99SD.src/M000248.html +18 -0
  293. data/doc/classes/Pc99SD.src/M000249.html +18 -0
  294. data/doc/classes/ProDos.html +25 -12
  295. data/doc/classes/ProDos.src/M000161.html +18 -0
  296. data/doc/classes/ProDos.src/M000162.html +22 -0
  297. data/doc/classes/ProDosBinPic.html +171 -0
  298. data/doc/classes/ProDosBinPic.src/M000237.html +20 -0
  299. data/doc/classes/ProDosBinPic.src/M000238.html +18 -0
  300. data/doc/classes/ProDosBinPic.src/M000239.html +18 -0
  301. data/doc/classes/ProDosFile.html +16 -16
  302. data/doc/classes/ProDosFile.src/M000032.html +20 -0
  303. data/doc/classes/ProDosFile.src/M000033.html +18 -0
  304. data/doc/classes/ProDosFile.src/M000034.html +19 -0
  305. data/doc/classes/ProDosPrintShopMiniPix.html +149 -0
  306. data/doc/classes/ProDosPrintShopMiniPix.src/M000013.html +18 -0
  307. data/doc/classes/Proc.html +7 -0
  308. data/doc/classes/ProcSource.html +6 -0
  309. data/doc/classes/RDoc.html +6 -0
  310. data/doc/classes/RawDisk.html +11 -11
  311. data/doc/classes/RawDisk.src/M000159.html +18 -0
  312. data/doc/classes/RawDisk.src/M000160.html +23 -0
  313. data/doc/classes/RipXplore.html +1 -1
  314. data/doc/classes/RipXploreLog.html +6 -0
  315. data/doc/classes/RsDos.html +229 -0
  316. data/doc/classes/RsDos.src/M000023.html +18 -0
  317. data/doc/classes/RsDos.src/M000024.html +18 -0
  318. data/doc/classes/RsDos.src/M000025.html +18 -0
  319. data/doc/classes/RsDos.src/M000026.html +62 -0
  320. data/doc/classes/ScAsm.html +7 -0
  321. data/doc/classes/ScreenDump.html +131 -0
  322. data/doc/classes/ScreenDump.src/M000307.html +24 -0
  323. data/doc/classes/ScreenDumps.html +180 -0
  324. data/doc/classes/ScreenDumps.src/M000027.html +22 -0
  325. data/doc/classes/ScreenDumps.src/M000028.html +24 -0
  326. data/doc/classes/ScreenDumps.src/M000029.html +30 -0
  327. data/doc/classes/SubclassTracking.html +6 -0
  328. data/doc/classes/TestFileCache.html +7 -0
  329. data/doc/classes/Ti99.html +304 -0
  330. data/doc/classes/Ti99.src/M000295.html +18 -0
  331. data/doc/classes/Ti99.src/M000296.html +18 -0
  332. data/doc/classes/Ti99.src/M000297.html +18 -0
  333. data/doc/classes/Ti99.src/M000298.html +18 -0
  334. data/doc/classes/Ti99.src/M000299.html +18 -0
  335. data/doc/classes/Ti99.src/M000300.html +18 -0
  336. data/doc/classes/Ti99.src/M000301.html +18 -0
  337. data/doc/classes/Ti99.src/M000302.html +18 -0
  338. data/doc/classes/Ti99.src/M000303.html +18 -0
  339. data/doc/classes/Ti99.src/M000304.html +18 -0
  340. data/doc/classes/Ti99.src/M000305.html +18 -0
  341. data/doc/classes/Ti99.src/M000306.html +18 -0
  342. data/doc/classes/Ti99BasicFile.html +161 -0
  343. data/doc/classes/Ti99BasicFile.src/M000108.html +72 -0
  344. data/doc/classes/Ti99Dsk.html +276 -0
  345. data/doc/classes/Ti99Dsk.src/M000014.html +18 -0
  346. data/doc/classes/Ti99Dsk.src/M000015.html +18 -0
  347. data/doc/classes/Ti99Dsk.src/M000016.html +18 -0
  348. data/doc/classes/Ti99Dsk.src/M000017.html +18 -0
  349. data/doc/classes/Ti99Dsk.src/M000018.html +18 -0
  350. data/doc/classes/Ti99Dsk.src/M000019.html +22 -0
  351. data/doc/classes/Ti99Dsk.src/M000020.html +22 -0
  352. data/doc/classes/Ti99Dsk.src/M000021.html +22 -0
  353. data/doc/classes/Ti99Dsk.src/M000022.html +27 -0
  354. data/doc/classes/Ti99File.html +156 -0
  355. data/doc/classes/Ti99File.src/M000167.html +20 -0
  356. data/doc/classes/Ti99File.src/M000168.html +18 -0
  357. data/doc/classes/Ti99Fms.html +163 -0
  358. data/doc/classes/Ti99Fms.src/M000157.html +18 -0
  359. data/doc/classes/Ti99Fms.src/M000158.html +77 -0
  360. data/doc/classes/Ti99TextFile.html +154 -0
  361. data/doc/classes/Ti99TextFile.src/M000030.html +33 -0
  362. data/doc/classes/Ti99TextFile.src/M000031.html +18 -0
  363. data/doc/classes/TiArtistColours.html +113 -0
  364. data/doc/classes/TiArtistPattern.html +209 -0
  365. data/doc/classes/TiArtistPattern.src/M000080.html +50 -0
  366. data/doc/classes/TiArtistPattern.src/M000081.html +18 -0
  367. data/doc/classes/TiArtistPattern.src/M000082.html +18 -0
  368. data/doc/classes/TiArtistPattern.src/M000083.html +18 -0
  369. data/doc/classes/TiRLE.html +197 -0
  370. data/doc/classes/TiRLE.src/M000118.html +22 -0
  371. data/doc/classes/TiRLE.src/M000119.html +22 -0
  372. data/doc/classes/TiRLE.src/M000120.html +43 -0
  373. data/doc/classes/TiRLE.src/M000121.html +18 -0
  374. data/doc/classes/Trs80.html +145 -13
  375. data/doc/classes/Trs80.src/M000084.html +18 -0
  376. data/doc/classes/Trs80.src/M000085.html +18 -0
  377. data/doc/classes/Trs80.src/M000086.html +18 -0
  378. data/doc/classes/Trs80.src/M000087.html +18 -0
  379. data/doc/classes/Trs80.src/M000088.html +18 -0
  380. data/doc/classes/Trs80.src/M000089.html +18 -0
  381. data/doc/classes/Trs80.src/M000090.html +18 -0
  382. data/doc/classes/Trs80.src/M000091.html +18 -0
  383. data/doc/classes/Trs80.src/M000092.html +18 -0
  384. data/doc/classes/Trs80.src/M000093.html +18 -0
  385. data/doc/classes/Trs80.src/M000094.html +18 -0
  386. data/doc/classes/Trs80BasicListing.html +174 -0
  387. data/doc/classes/Trs80BasicListing.src/M000212.html +20 -0
  388. data/doc/classes/Trs80BasicListing.src/M000213.html +18 -0
  389. data/doc/classes/Trs80BasicListing.src/M000214.html +18 -0
  390. data/doc/classes/Trs80Cmd.html +20 -20
  391. data/doc/classes/Trs80Cmd.src/M000163.html +19 -0
  392. data/doc/classes/Trs80Cmd.src/M000164.html +24 -0
  393. data/doc/classes/Trs80Cmd.src/M000165.html +20 -0
  394. data/doc/classes/Trs80Cmd.src/M000166.html +35 -0
  395. data/doc/classes/Trs80Jcl.html +7 -0
  396. data/doc/classes/Trs80Jv1Dsk.html +25 -25
  397. data/doc/classes/Trs80Jv1Dsk.src/M000129.html +18 -0
  398. data/doc/classes/Trs80Jv1Dsk.src/M000130.html +18 -0
  399. data/doc/classes/Trs80Jv1Dsk.src/M000131.html +18 -0
  400. data/doc/classes/Trs80Jv1Dsk.src/M000132.html +18 -0
  401. data/doc/classes/Trs80Jv1Dsk.src/M000133.html +21 -0
  402. data/doc/classes/Trs80LevelIIBasic.html +28 -10
  403. data/doc/classes/Trs80LevelIIBasic.src/M000142.html +20 -0
  404. data/doc/classes/Trs80LevelIIBasic.src/M000143.html +18 -0
  405. data/doc/classes/Trs80LevelIIBasic.src/M000144.html +43 -0
  406. data/doc/classes/Trs80PascalSource.html +7 -0
  407. data/doc/classes/Trs80Text.html +181 -0
  408. data/doc/classes/Trs80Text.src/M000115.html +20 -0
  409. data/doc/classes/Trs80Text.src/M000116.html +18 -0
  410. data/doc/classes/Trs80Text.src/M000117.html +18 -0
  411. data/doc/classes/TrsDos.html +24 -22
  412. data/doc/classes/TrsDos.src/M000076.html +18 -0
  413. data/doc/classes/TrsDos.src/M000077.html +18 -0
  414. data/doc/classes/TrsDos.src/M000078.html +18 -0
  415. data/doc/classes/TrsDos.src/M000079.html +64 -0
  416. data/doc/classes/V9T9Dsk.html +120 -0
  417. data/doc/created.rid +1 -1
  418. data/doc/dot/f_0.dot +14 -0
  419. data/doc/dot/f_0.png +0 -0
  420. data/doc/dot/f_1.dot +23 -0
  421. data/doc/dot/f_1.png +0 -0
  422. data/doc/dot/f_10.dot +32 -0
  423. data/doc/dot/f_10.png +0 -0
  424. data/doc/dot/f_11.dot +32 -0
  425. data/doc/dot/f_11.png +0 -0
  426. data/doc/dot/f_12.dot +32 -0
  427. data/doc/dot/f_12.png +0 -0
  428. data/doc/dot/f_13.dot +32 -0
  429. data/doc/dot/f_13.png +0 -0
  430. data/doc/dot/f_14.dot +32 -0
  431. data/doc/dot/f_14.png +0 -0
  432. data/doc/dot/f_15.dot +32 -0
  433. data/doc/dot/f_15.png +0 -0
  434. data/doc/dot/f_16.dot +23 -0
  435. data/doc/dot/f_16.png +0 -0
  436. data/doc/dot/f_17.dot +32 -0
  437. data/doc/dot/f_17.png +0 -0
  438. data/doc/dot/f_18.dot +32 -0
  439. data/doc/dot/f_18.png +0 -0
  440. data/doc/dot/f_19.dot +32 -0
  441. data/doc/dot/f_19.png +0 -0
  442. data/doc/dot/f_2.dot +23 -0
  443. data/doc/dot/f_2.png +0 -0
  444. data/doc/dot/f_20.dot +32 -0
  445. data/doc/dot/f_20.png +0 -0
  446. data/doc/dot/f_21.dot +23 -0
  447. data/doc/dot/f_21.png +0 -0
  448. data/doc/dot/f_22.dot +58 -0
  449. data/doc/dot/f_22.png +0 -0
  450. data/doc/dot/f_23.dot +32 -0
  451. data/doc/dot/f_23.png +0 -0
  452. data/doc/dot/f_24.dot +32 -0
  453. data/doc/dot/f_24.png +0 -0
  454. data/doc/dot/f_25.dot +32 -0
  455. data/doc/dot/f_25.png +0 -0
  456. data/doc/dot/f_26.dot +32 -0
  457. data/doc/dot/f_26.png +0 -0
  458. data/doc/dot/f_27.dot +23 -0
  459. data/doc/dot/f_27.png +0 -0
  460. data/doc/dot/f_28.dot +32 -0
  461. data/doc/dot/f_28.png +0 -0
  462. data/doc/dot/f_29.dot +32 -0
  463. data/doc/dot/f_29.png +0 -0
  464. data/doc/dot/f_3.dot +41 -0
  465. data/doc/dot/f_3.png +0 -0
  466. data/doc/dot/f_30.dot +32 -0
  467. data/doc/dot/f_30.png +0 -0
  468. data/doc/dot/f_31.dot +32 -0
  469. data/doc/dot/f_31.png +0 -0
  470. data/doc/dot/f_32.dot +32 -0
  471. data/doc/dot/f_32.png +0 -0
  472. data/doc/dot/f_33.dot +32 -0
  473. data/doc/dot/f_33.png +0 -0
  474. data/doc/dot/f_34.dot +45 -0
  475. data/doc/dot/f_34.png +0 -0
  476. data/doc/dot/f_35.dot +32 -0
  477. data/doc/dot/f_35.png +0 -0
  478. data/doc/dot/f_36.dot +32 -0
  479. data/doc/dot/f_36.png +0 -0
  480. data/doc/dot/f_37.dot +32 -0
  481. data/doc/dot/f_37.png +0 -0
  482. data/doc/dot/f_38.dot +32 -0
  483. data/doc/dot/f_38.png +0 -0
  484. data/doc/dot/f_39.dot +32 -0
  485. data/doc/dot/f_39.png +0 -0
  486. data/doc/dot/f_4.dot +32 -0
  487. data/doc/dot/f_4.png +0 -0
  488. data/doc/dot/f_40.dot +32 -0
  489. data/doc/dot/f_40.png +0 -0
  490. data/doc/dot/f_41.dot +32 -0
  491. data/doc/dot/f_41.png +0 -0
  492. data/doc/dot/f_42.dot +32 -0
  493. data/doc/dot/f_42.png +0 -0
  494. data/doc/dot/f_43.dot +32 -0
  495. data/doc/dot/f_43.png +0 -0
  496. data/doc/dot/f_44.dot +32 -0
  497. data/doc/dot/f_44.png +0 -0
  498. data/doc/dot/f_45.dot +32 -0
  499. data/doc/dot/f_45.png +0 -0
  500. data/doc/dot/f_46.dot +32 -0
  501. data/doc/dot/f_46.png +0 -0
  502. data/doc/dot/f_47.dot +32 -0
  503. data/doc/dot/f_47.png +0 -0
  504. data/doc/dot/f_48.dot +32 -0
  505. data/doc/dot/f_48.png +0 -0
  506. data/doc/dot/f_49.dot +32 -0
  507. data/doc/dot/f_49.png +0 -0
  508. data/doc/dot/f_5.dot +23 -0
  509. data/doc/dot/f_5.png +0 -0
  510. data/doc/dot/f_50.dot +32 -0
  511. data/doc/dot/f_50.png +0 -0
  512. data/doc/dot/f_51.dot +32 -0
  513. data/doc/dot/f_51.png +0 -0
  514. data/doc/dot/f_52.dot +32 -0
  515. data/doc/dot/f_52.png +0 -0
  516. data/doc/dot/f_53.dot +32 -0
  517. data/doc/dot/f_53.png +0 -0
  518. data/doc/dot/f_54.dot +39 -0
  519. data/doc/dot/f_54.png +0 -0
  520. data/doc/dot/f_55.dot +30 -0
  521. data/doc/dot/f_55.png +0 -0
  522. data/doc/dot/f_56.dot +23 -0
  523. data/doc/dot/f_56.png +0 -0
  524. data/doc/dot/f_57.dot +23 -0
  525. data/doc/dot/f_57.png +0 -0
  526. data/doc/dot/f_58.dot +30 -0
  527. data/doc/dot/f_58.png +0 -0
  528. data/doc/dot/f_59.dot +32 -0
  529. data/doc/dot/f_59.png +0 -0
  530. data/doc/dot/f_6.dot +23 -0
  531. data/doc/dot/f_6.png +0 -0
  532. data/doc/dot/f_60.dot +32 -0
  533. data/doc/dot/f_60.png +0 -0
  534. data/doc/dot/f_7.dot +32 -0
  535. data/doc/dot/f_7.png +0 -0
  536. data/doc/dot/f_8.dot +32 -0
  537. data/doc/dot/f_8.png +0 -0
  538. data/doc/dot/f_9.dot +32 -0
  539. data/doc/dot/f_9.png +0 -0
  540. data/doc/dot/m_54_0.dot +30 -0
  541. data/doc/dot/m_54_0.png +0 -0
  542. data/doc/files/bin/ripxplore_rb.html +4 -4
  543. data/doc/files/lib/DumpUtilities_rb.html +6 -0
  544. data/doc/files/lib/FileCache_rb.html +3 -2
  545. data/doc/files/lib/FileContainer_rb.html +7 -0
  546. data/doc/files/lib/FileSystemImage_rb.html +2 -2
  547. data/doc/files/lib/FileSystem_rb.html +4 -4
  548. data/doc/files/lib/HostSystem_rb.html +4 -3
  549. data/doc/files/lib/ImageFormat_rb.html +3 -3
  550. data/doc/files/lib/NativeFileType_rb.html +3 -3
  551. data/doc/files/lib/PatchedPNG_rb.html +7 -0
  552. data/doc/files/lib/RipXploreLog_rb.html +6 -0
  553. data/doc/files/lib/RipXplore_rb.html +1 -1
  554. data/doc/files/lib/SubclassTracking_rb.html +6 -0
  555. data/doc/files/lib/disassemblers/D65_rb.html +6 -0
  556. data/doc/files/lib/file_systems/AppleCPM_rb.html +7 -0
  557. data/doc/files/lib/file_systems/AppleDos_rb.html +7 -0
  558. data/doc/files/lib/file_systems/AtariDos_rb.html +7 -0
  559. data/doc/files/lib/file_systems/CbmDos_rb.html +7 -0
  560. data/doc/files/lib/file_systems/NADOLDos_rb.html +7 -0
  561. data/doc/files/lib/file_systems/PascalDos_rb.html +7 -0
  562. data/doc/files/lib/file_systems/ProDos_rb.html +1 -1
  563. data/doc/files/lib/file_systems/RawDisk_rb.html +1 -1
  564. data/doc/files/lib/file_systems/RsDos_rb.html +108 -0
  565. data/doc/files/lib/file_systems/Ti99Fms_rb.html +108 -0
  566. data/doc/files/lib/file_systems/TrsDos_rb.html +1 -1
  567. data/doc/files/lib/host_systems/Apple2_rb.html +2 -2
  568. data/doc/files/lib/host_systems/Atari800_rb.html +2 -2
  569. data/doc/files/lib/host_systems/C64_rb.html +2 -2
  570. data/doc/files/lib/host_systems/Coco_rb.html +108 -0
  571. data/doc/files/lib/host_systems/Ti99_rb.html +108 -0
  572. data/doc/files/lib/host_systems/Trs80_rb.html +1 -1
  573. data/doc/files/lib/image_formats/A2Dsk_rb.html +9 -0
  574. data/doc/files/lib/image_formats/Atr_rb.html +7 -0
  575. data/doc/files/lib/image_formats/D64_rb.html +7 -0
  576. data/doc/files/lib/image_formats/G64_rb.html +7 -0
  577. data/doc/files/lib/image_formats/JvcDsk_rb.html +108 -0
  578. data/doc/files/lib/image_formats/Ti99Dsk_rb.html +134 -0
  579. data/doc/files/lib/image_formats/Ti99Dsk_rb.src/M000001.html +18 -0
  580. data/doc/files/lib/image_formats/Trs80Jv1Dsk_rb.html +1 -1
  581. data/doc/files/lib/native_file_types/apple2/AppleBinary_rb.html +1 -1
  582. data/doc/files/lib/native_file_types/apple2/AppleHiResPic_rb.html +1 -1
  583. data/doc/files/lib/native_file_types/apple2/ApplePrintShopMiniPix_rb.html +109 -0
  584. data/doc/files/lib/native_file_types/apple2/AppleText_rb.html +2 -1
  585. data/doc/files/lib/native_file_types/apple2/AppleWorksWP_rb.html +7 -0
  586. data/doc/files/lib/native_file_types/apple2/Applesoft_rb.html +7 -0
  587. data/doc/files/lib/native_file_types/apple2/IntegerBASIC_rb.html +7 -0
  588. data/doc/files/lib/native_file_types/apple2/NADOLFile_rb.html +8 -0
  589. data/doc/files/lib/native_file_types/apple2/PackedAppleDosPic_rb.html +101 -0
  590. data/doc/files/lib/native_file_types/apple2/PascalFile_rb.html +7 -0
  591. data/doc/files/lib/native_file_types/apple2/ProDosFile_rb.html +1 -1
  592. data/doc/files/lib/native_file_types/apple2/ScAsm_rb.html +7 -0
  593. data/doc/files/lib/native_file_types/atari800/AtariBasic_rb.html +7 -0
  594. data/doc/files/lib/native_file_types/atari800/AtariBinary_rb.html +8 -1
  595. data/doc/files/lib/native_file_types/atari800/AtariText_rb.html +2 -1
  596. data/doc/files/lib/native_file_types/c64/C64BasicPrg_rb.html +7 -0
  597. data/doc/files/lib/native_file_types/c64/C64PrgText_rb.html +7 -0
  598. data/doc/files/lib/native_file_types/c64/C64Prg_rb.html +7 -0
  599. data/doc/files/lib/native_file_types/c64/C64Seq_rb.html +7 -0
  600. data/doc/files/lib/native_file_types/c64/CbmFile_rb.html +7 -0
  601. data/doc/files/lib/native_file_types/coco/CocoBasic_rb.html +108 -0
  602. data/doc/files/lib/native_file_types/coco/CocoMachineLanguage_rb.html +108 -0
  603. data/doc/files/lib/native_file_types/coco/CocoScreen_rb.html +108 -0
  604. data/doc/files/lib/native_file_types/coco/CocoText_rb.html +108 -0
  605. data/doc/files/lib/native_file_types/cpm/CPMFile_rb.html +7 -0
  606. data/doc/files/lib/native_file_types/cpm/MBasic_rb.html +7 -0
  607. data/doc/files/lib/native_file_types/generic/GenericFile_rb.html +7 -0
  608. data/doc/files/lib/native_file_types/generic/GenericGIF_rb.html +101 -0
  609. data/doc/files/lib/native_file_types/generic/ScreenDump_rb.html +101 -0
  610. data/doc/files/lib/native_file_types/ti99/Ti99BasicFile_rb.html +108 -0
  611. data/doc/files/lib/native_file_types/ti99/Ti99File_rb.html +108 -0
  612. data/doc/files/lib/native_file_types/ti99/Ti99TextFile_rb.html +108 -0
  613. data/doc/files/lib/native_file_types/ti99/TiArtistColours_rb.html +108 -0
  614. data/doc/files/lib/native_file_types/ti99/TiArtistPattern_rb.html +109 -0
  615. data/doc/files/lib/native_file_types/ti99/TiRLE_rb.html +109 -0
  616. data/doc/files/lib/native_file_types/trs80/Trs80BasicListing_rb.html +108 -0
  617. data/doc/files/lib/native_file_types/trs80/Trs80Cmd_rb.html +1 -1
  618. data/doc/files/lib/native_file_types/trs80/Trs80Jcl_rb.html +7 -0
  619. data/doc/files/lib/native_file_types/trs80/Trs80LevelIIBasic_rb.html +1 -1
  620. data/doc/files/lib/native_file_types/trs80/Trs80PascalSource_rb.html +7 -0
  621. data/doc/files/lib/native_file_types/trs80/Trs80Text_rb.html +108 -0
  622. data/doc/files/lib/proc_source_rb.html +7 -0
  623. data/doc/files/lib/rdoc_patch_rb.html +6 -0
  624. data/doc/files/test/tc_apple_2_rb.html +108 -0
  625. data/doc/files/test/tc_atari_800_rb.html +108 -0
  626. data/doc/files/test/tc_c64_rb.html +108 -0
  627. data/doc/files/test/tc_cache_and_collections_rb.html +108 -0
  628. data/doc/files/test/tc_coco_rb.html +108 -0
  629. data/doc/files/test/tc_file_cache_rb.html +7 -0
  630. data/doc/files/test/tc_image_sniffing_rb.html +8 -1
  631. data/doc/files/test/tc_screen_dumps_rb.html +108 -0
  632. data/doc/files/test/tc_ti99_rb.html +108 -0
  633. data/doc/files/test/tc_trs80_rb.html +108 -0
  634. data/doc/files/test/testhelper_rb.html +57 -1
  635. data/doc/files/test/testhelper_rb.src/M000002.html +21 -0
  636. data/doc/files/test/testhelper_rb.src/M000003.html +18 -0
  637. data/doc/files/test/testhelper_rb.src/M000004.html +61 -0
  638. data/doc/files/test/ts_test_all_rb.html +5 -0
  639. data/doc/files/website/index_rb.html +107 -0
  640. data/lib/FileCache.rb +80 -13
  641. data/lib/FileSystem.rb +1 -1
  642. data/lib/FileSystemImage.rb +16 -2
  643. data/lib/HostSystem.rb +124 -1
  644. data/lib/NativeFileType.rb +11 -1
  645. data/lib/RipXplore.rb +2 -2
  646. data/lib/file_systems/ProDos.rb +1 -0
  647. data/lib/file_systems/RawDisk.rb +7 -2
  648. data/lib/file_systems/RsDos.rb +146 -0
  649. data/lib/file_systems/Ti99Fms.rb +123 -0
  650. data/lib/file_systems/TrsDos.rb +8 -5
  651. data/lib/host_systems/Apple2.rb +53 -9
  652. data/lib/host_systems/Atari800.rb +40 -1
  653. data/lib/host_systems/C64.rb +42 -1
  654. data/lib/host_systems/Coco.rb +145 -0
  655. data/lib/host_systems/TRS81-3.FNT +0 -0
  656. data/lib/host_systems/Ti99.rb +86 -0
  657. data/lib/host_systems/Trs80.rb +40 -5
  658. data/lib/host_systems/apple_2_font.bin +0 -0
  659. data/lib/host_systems/atari-800-font.bin +0 -0
  660. data/lib/host_systems/c64-font.bin +0 -0
  661. data/lib/host_systems/coco-font.bin +0 -0
  662. data/lib/host_systems/ti99-font.bin +0 -0
  663. data/lib/image_formats/JvcDsk.rb +101 -0
  664. data/lib/image_formats/Ti99Dsk.rb +213 -0
  665. data/lib/image_formats/Trs80Jv1Dsk.rb +5 -3
  666. data/lib/native_file_types/apple2/AppleBinary.rb +2 -2
  667. data/lib/native_file_types/apple2/AppleHiResPic.rb +101 -57
  668. data/lib/native_file_types/apple2/ApplePrintShopMiniPix.rb +99 -0
  669. data/lib/native_file_types/apple2/AppleText.rb +16 -0
  670. data/lib/native_file_types/apple2/PackedAppleDosPic.rb +85 -0
  671. data/lib/native_file_types/apple2/ProDosFile.rb +2 -3
  672. data/lib/native_file_types/atari800/AtariBinary.rb +1 -1
  673. data/lib/native_file_types/atari800/AtariText.rb +7 -1
  674. data/lib/native_file_types/coco/CocoBasic.rb +230 -0
  675. data/lib/native_file_types/coco/CocoMachineLanguage.rb +47 -0
  676. data/lib/native_file_types/coco/CocoScreen.rb +54 -0
  677. data/lib/native_file_types/coco/CocoText.rb +42 -0
  678. data/lib/native_file_types/generic/GenericGIF.rb +50 -0
  679. data/lib/native_file_types/generic/ScreenDump.rb +43 -0
  680. data/lib/native_file_types/ti99/Ti99BasicFile.rb +223 -0
  681. data/lib/native_file_types/ti99/Ti99File.rb +40 -0
  682. data/lib/native_file_types/ti99/Ti99TextFile.rb +62 -0
  683. data/lib/native_file_types/ti99/TiArtistColours.rb +40 -0
  684. data/lib/native_file_types/ti99/TiArtistPattern.rb +109 -0
  685. data/lib/native_file_types/ti99/TiRLE.rb +91 -0
  686. data/lib/native_file_types/trs80/Trs80BasicListing.rb +51 -0
  687. data/lib/native_file_types/trs80/Trs80Cmd.rb +3 -1
  688. data/lib/native_file_types/trs80/Trs80LevelIIBasic.rb +15 -3
  689. data/lib/native_file_types/trs80/Trs80Text.rb +49 -0
  690. data/test/native_files/42d0d52047a748022d2aacef60cc5271-0.png +0 -0
  691. data/test/native_files/6ac562d2d099dc31213e97b8fe08ffbf-1.png +0 -0
  692. data/test/screendumps/0.png +0 -0
  693. data/test/screendumps/1.png +0 -0
  694. data/test/screendumps/2.png +0 -0
  695. data/test/screendumps/3.png +0 -0
  696. data/test/screendumps/4.png +0 -0
  697. data/test/screendumps/5.png +0 -0
  698. data/test/screendumps/6.png +0 -0
  699. data/test/screendumps/7.png +0 -0
  700. data/test/tc_apple_2.rb +94 -0
  701. data/test/tc_atari_800.rb +28 -0
  702. data/test/tc_c64.rb +35 -0
  703. data/test/tc_cache_and_collections.rb +33 -0
  704. data/test/tc_coco.rb +38 -0
  705. data/test/tc_screen_dumps.rb +42 -0
  706. data/test/tc_ti99.rb +51 -0
  707. data/test/tc_trs80.rb +66 -0
  708. data/test/testhelper.rb +59 -1
  709. data/test/testlog.txt +123423 -30232
  710. metadata +595 -14
  711. data/test/tc_file_cache.rb +0 -11
  712. data/test/tc_image_sniffing.rb +0 -165
@@ -0,0 +1,223 @@
1
+
2
+ $:.unshift(File.dirname(__FILE__)) unless
3
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
4
+
5
+ require 'Ti99File'
6
+ #http://nouspikel.group.shef.ac.uk//ti99/basic.htm
7
+ #http://groups.google.com.au/group/comp.sys.ti/browse_frm/thread/d58a8f0ff2fb9210/e33fc780cba5df90
8
+ class Ti99BasicFile<Ti99File
9
+
10
+
11
+ is_valid_file_if lambda {
12
+ file_type<0x80 && (file_type%02==01) #FIXED/VARIABLE flag set to 0 -> fixed, PROGRAM/DATA file 1 -> program
13
+ }
14
+
15
+ #BYTES 0/1 should be a checksum of bytes 2/3 XOR bytes 4/5
16
+ is_valid_file_if lambda {
17
+ (contents[0]==contents[2] ^ contents[4]) && (contents[1]==contents[3] ^ contents[5])
18
+ }
19
+
20
+ # a file that is all zeros does pass the above XOR test, so let's exclude those
21
+ is_valid_file_if lambda {
22
+ (contents[2]+contents[3]+contents[4]+contents[5]) !=0
23
+ }
24
+
25
+ TI_BASIC_TOKENS={
26
+ #0x00 => end of line marker
27
+ 0x81=>'ELSE',
28
+ 0x82=>'::',
29
+ 0x83=>'!',
30
+ 0x84=>'IF',
31
+ 0x85=>'GO',
32
+ 0x86=>'GOTO',
33
+ 0x87=>'GOSUB',
34
+ 0x88=>'RETURN',
35
+ 0x89=>'DEF',
36
+ 0x8A=>'DIM',
37
+ 0x8B=>'END',
38
+ 0x8C=>'FOR',
39
+ 0x8D=>'LET',
40
+ 0x8E=>'BREAK',
41
+ 0x8F=>'UNBREAK',
42
+ 0x90=>'TRACE',
43
+ 0x91=>'UNTRACE',
44
+ 0x92=>'INPUT',
45
+ 0x93=>'DATA',
46
+ 0x94=>'RESTORE',
47
+ 0x95=>'RANDOMIZE',
48
+ 0x96=>'NEXT',
49
+ 0x97=>'READ',
50
+ 0x98=>'STOP',
51
+ 0x99=>'DELETE',
52
+ 0x9A=>'REM',
53
+ 0x9B=>'ON',
54
+ 0x9C=>'PRINT',
55
+ 0x9D=>'CALL',
56
+ 0x9E=>'OPTION',
57
+ 0x9F=>'OPEN',
58
+ 0xA0=>'CLOSE',
59
+ 0xA1=>'SUB',
60
+ 0xA2=>'DISPLAY',
61
+ 0xA3=>'IMAGE',
62
+ 0xA4=>'ACCEPT',
63
+ 0xA5=>'ERROR',
64
+ 0xA6=>'WARNING',
65
+ 0xA7=>'SUBEXIT',
66
+ 0xA8=>'SUBEND',
67
+ 0xA9=>'RUN',
68
+ 0xAA=>'LINPUT',
69
+ 0xB0=>'THEN',
70
+ 0xB1=>'TO',
71
+ 0xB2=>'STEP',
72
+ 0xB3=>',',
73
+ 0xB4=>';',
74
+ 0xB5=>':',
75
+ 0xB6=>')',
76
+ 0xB7=>'(',
77
+ 0xB8=>'&',
78
+ 0xBA=>'OR',
79
+ 0xBB=>'AND',
80
+ 0xBC=>'XOR',
81
+ 0xBD=>'NOT',
82
+ 0xBE=>'=',
83
+ 0xBF=>'<',
84
+ 0xC0=>'>',
85
+ 0xC1=>'+',
86
+ 0xC2=>'-',
87
+ 0xC3=>'*',
88
+ 0xC4=>'/',
89
+ 0xC5=>'^',
90
+ #0xC7=> QUOTED STRING (following byte indicates length of string)
91
+ #0xC8=>UNQUOTED STRING (following byte indicates length of string)
92
+ #0xC9=>LINE NUMBER (16 bit word)
93
+ 0xCA=>'EOF',
94
+ 0xCB=>'ABS',
95
+ 0xCC=>'ATN',
96
+ 0xCD=>'COS',
97
+ 0xCE=>'EXP',
98
+ 0xCF=>'INT',
99
+ 0xD0=>'LOG',
100
+ 0xD1=>'SGN',
101
+ 0xD2=>'SIN',
102
+ 0xD3=>'SQR',
103
+ 0xD4=>'TAN',
104
+ 0xD5=>'LEN',
105
+ 0xD6=>'CHR$',
106
+ 0xD7=>'RND',
107
+ 0xD8=>'SEG$',
108
+ 0xD9=>'POS',
109
+ 0xDA=>'VAL',
110
+ 0xDB=>'STR$',
111
+ 0xDC=>'ASC',
112
+ 0xDD=>'PI',
113
+ 0xDE=>'REC',
114
+ 0xDF=>'MAX',
115
+ 0xE0=>'MIN',
116
+ 0xE1=>'RPT$',
117
+ 0xE8=>'NUMERIC',
118
+ 0xE9=>'DIGIT',
119
+ 0xEA=>'UALPHA',
120
+ 0xEB=>'SIZE',
121
+ 0xEC=>'ALL',
122
+ 0xED=>'USING',
123
+ 0xEE=>'BEEP',
124
+ 0xEF=>'ERASE',
125
+ 0xF0=>'AT',
126
+ 0xF1=>'BASE',
127
+ 0xF3=>'VARIABLE',
128
+ 0xF4=>'RELATIVE',
129
+ 0xF5=>'INTERNAL',
130
+ 0xF6=>'SEQUENTIAL',
131
+ 0xF7=>'OUTPUT',
132
+ 0xF8=>'UPDATE',
133
+ 0xF9=>'APPEND',
134
+ 0xFA=>'FIXED',
135
+ 0xFB=>'PERMANENT',
136
+ 0xFC=>'TAB',
137
+ 0xFD=>'#',
138
+ 0xFE=>'VALIDATE',
139
+ #0xFF=>'end of file marker',
140
+ }
141
+ def to_listing
142
+ buffer=contents
143
+ end_of_line_number_table=(buffer[2]<<8)+buffer[3]
144
+ start_of_line_number_table=(buffer[4]<<8)+buffer[5]
145
+ number_of_lines=(1+end_of_line_number_table-start_of_line_number_table)/4
146
+ relocation_offset=start_of_line_number_table-7
147
+ # puts "START %x END %x LINES %x RELOC OFFSET %x" % [start_of_line_number_table,end_of_line_number_table,number_of_lines,relocation_offset]
148
+ line_number_table=buffer[8,(number_of_lines*4)]
149
+ detokenised_lines={}
150
+ number_of_lines.times do |i|
151
+ line_number_data=line_number_table[i*4,4]
152
+ line_number=(line_number_data[0]<<8)+line_number_data[1]
153
+ location_of_line_in_memory=(line_number_data[2]<<8)+line_number_data[3]
154
+ location_of_line_in_buffer=location_of_line_in_memory-relocation_offset
155
+ # puts "#{line_number} MEM %x FILE %x " % [location_of_line_in_memory,location_of_line_in_buffer]
156
+ line_length=buffer[location_of_line_in_buffer]
157
+ detokenised_line="#{line_number} "
158
+ p=location_of_line_in_buffer+1
159
+ last_byte_was_token=false
160
+ while (p<location_of_line_in_buffer+line_length) && (!buffer[p].nil?) && (buffer[p]!=0) do
161
+ token=buffer[p]
162
+ token_text=TI_BASIC_TOKENS[token]
163
+ if (token_text.nil?) then
164
+ detokenised_line<<" " if ((detokenised_line=~/\w$/) && (last_byte_was_token))
165
+ if token==0xC7 then #quoted string
166
+ detokenised_line<<"\"#{buffer[p+2,buffer[p+1]]}\""
167
+ p+=buffer[p+1]+1
168
+ elsif token==0xC8 then #unquoted string
169
+ detokenised_line<<"#{buffer[p+2,buffer[p+1]]}"
170
+ p+=buffer[p+1]+1
171
+ elsif token==0xC9 then #line number
172
+ detokenised_line<<"#{(buffer[p+1]<<8)+buffer[p+2]}"
173
+ p+=2
174
+ else
175
+ detokenised_line<<token.chr
176
+ end
177
+ last_byte_was_token=false
178
+ else
179
+ last_byte_was_token=true
180
+ detokenised_line<<" " if detokenised_line=~/(\w|:|")$/ && token_text=~/^(\w|:|")/
181
+ detokenised_line<<token_text
182
+ end
183
+ p+=1
184
+ end
185
+ detokenised_lines[line_number]=detokenised_line
186
+
187
+ end
188
+ result=""
189
+ detokenised_lines.keys.sort.each do |line_number|
190
+ result << "#{detokenised_lines[line_number]}\n"
191
+ end
192
+ # puts result
193
+
194
+ result
195
+ end
196
+
197
+ end
198
+
199
+
200
+ # == Author
201
+ # Jonno Downes (jonno@jamtronix.com)
202
+ #
203
+ # == Copyright
204
+ # Copyright (c) 2008 Jonno Downes (jonno@jamtronix.com)
205
+ #
206
+ #Permission is hereby granted, free of charge, to any person obtaining
207
+ #a copy of this software and associated documentation files (the
208
+ #"Software"), to deal in the Software without restriction, including
209
+ #without limitation the rights to use, copy, modify, merge, publish,
210
+ #distribute, sublicense, and/or sell copies of the Software, and to
211
+ #permit persons to whom the Software is furnished to do so, subject to
212
+ #the following conditions:
213
+
214
+ # The above copyright notice and this permission notice shall be
215
+ # included in all copies or substantial portions of the Software.
216
+
217
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
218
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
219
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
220
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
221
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
222
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
223
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,40 @@
1
+ require 'NativeFileType'
2
+ class Ti99File<NativeFileType
3
+
4
+ def self.file_system_file_types
5
+ {
6
+ Ti99Fms=>:any
7
+ }
8
+ end
9
+
10
+ def type_description
11
+ "#{self.class}:%02x" % file_type
12
+ end
13
+
14
+ end
15
+
16
+
17
+ # == Author
18
+ # Jonno Downes (jonno@jamtronix.com)
19
+ #
20
+ # == Copyright
21
+ # Copyright (c) 2008 Jonno Downes (jonno@jamtronix.com)
22
+ #
23
+ #Permission is hereby granted, free of charge, to any person obtaining
24
+ #a copy of this software and associated documentation files (the
25
+ #"Software"), to deal in the Software without restriction, including
26
+ #without limitation the rights to use, copy, modify, merge, publish,
27
+ #distribute, sublicense, and/or sell copies of the Software, and to
28
+ #permit persons to whom the Software is furnished to do so, subject to
29
+ #the following conditions:
30
+
31
+ # The above copyright notice and this permission notice shall be
32
+ # included in all copies or substantial portions of the Software.
33
+
34
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
35
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
36
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
37
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
38
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
39
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
40
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,62 @@
1
+
2
+ $:.unshift(File.dirname(__FILE__)) unless
3
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
4
+
5
+ require 'Ti99File'
6
+ class Ti99TextFile<Ti99File
7
+
8
+
9
+ is_valid_file_if lambda {
10
+ file_type>=0x80 #FIXED/VARIABLE flag set to 1 -> variable
11
+
12
+ }
13
+
14
+ def to_text
15
+ s=""
16
+ i=0
17
+ while i<contents.length do
18
+ record_length=contents[i]
19
+ i+=1
20
+ if record_length==0xff then
21
+ while ((i<contents.length) && (i%256!=0)) do
22
+ i+=1
23
+ end
24
+ else
25
+ s+=contents[i,record_length]
26
+ s+="\n"
27
+ i+=record_length
28
+ end
29
+ end
30
+ s
31
+ end
32
+
33
+ def text_for_screendump
34
+ to_text.gsub("\n",0x0D.chr)
35
+ end
36
+ end
37
+
38
+
39
+ # == Author
40
+ # Jonno Downes (jonno@jamtronix.com)
41
+ #
42
+ # == Copyright
43
+ # Copyright (c) 2008 Jonno Downes (jonno@jamtronix.com)
44
+ #
45
+ #Permission is hereby granted, free of charge, to any person obtaining
46
+ #a copy of this software and associated documentation files (the
47
+ #"Software"), to deal in the Software without restriction, including
48
+ #without limitation the rights to use, copy, modify, merge, publish,
49
+ #distribute, sublicense, and/or sell copies of the Software, and to
50
+ #permit persons to whom the Software is furnished to do so, subject to
51
+ #the following conditions:
52
+
53
+ # The above copyright notice and this permission notice shall be
54
+ # included in all copies or substantial portions of the Software.
55
+
56
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
57
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
58
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
59
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
60
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
61
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
62
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,40 @@
1
+
2
+ $:.unshift(File.dirname(__FILE__)) unless
3
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
4
+
5
+ require 'Ti99File'
6
+
7
+ class TiArtistColours<Ti99File
8
+
9
+ is_valid_file_if lambda {
10
+ file_type%4==0x01 && filename=~/_C$/ && contents.length==0x1800
11
+ }
12
+
13
+
14
+ end
15
+
16
+
17
+ # == Author
18
+ # Jonno Downes (jonno@jamtronix.com)
19
+ #
20
+ # == Copyright
21
+ # Copyright (c) 2008 Jonno Downes (jonno@jamtronix.com)
22
+ #
23
+ #Permission is hereby granted, free of charge, to any person obtaining
24
+ #a copy of this software and associated documentation files (the
25
+ #"Software"), to deal in the Software without restriction, including
26
+ #without limitation the rights to use, copy, modify, merge, publish,
27
+ #distribute, sublicense, and/or sell copies of the Software, and to
28
+ #permit persons to whom the Software is furnished to do so, subject to
29
+ #the following conditions:
30
+
31
+ # The above copyright notice and this permission notice shall be
32
+ # included in all copies or substantial portions of the Software.
33
+
34
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
35
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
36
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
37
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
38
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
39
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
40
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,109 @@
1
+
2
+ $:.unshift(File.dirname(__FILE__)) unless
3
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
4
+
5
+ require 'Ti99File'
6
+ require 'PatchedPNG'
7
+ class TiArtistPattern<Ti99File
8
+
9
+ is_valid_file_if lambda {
10
+ file_type%4==0x01 && filename=~/_P$/ && contents.length==0x1800
11
+ }
12
+
13
+
14
+ #pallete taken from
15
+ #http://www.msx.org/forumtopic7147.html
16
+ #http://ragozini.googlepages.com/dithering
17
+
18
+ TMS9918_PALLETE=[
19
+ PNG::Color.new(0,0,0,0xFF), #color=$00 Transparent
20
+ PNG::Color.new(0,0,0,0xFF), #color=$01 black
21
+ PNG::Color.new(38,229,0,0xFF), #color=$02 medium green
22
+ PNG::Color.new(100,240,49,0xFF), #color=$03 light green
23
+ PNG::Color.new(93,57,255,0xFF), #color=$04 dark blue
24
+ PNG::Color.new(132,94,255,0xFF), #color=$05 light blue
25
+ PNG::Color.new(214,104,20,0xFF), #color=$06 dark red
26
+ PNG::Color.new(64,228,255,0xFF), #color=$07 cyan
27
+ PNG::Color.new(253,111,15,0xFF), #color=$08 medium red
28
+ PNG::Color.new(255,245,49,0xFF), #color=$09 light red
29
+ PNG::Color.new(216,230,0,0xFF), #color=$0A dark yellow
30
+ PNG::Color.new(232,233,14,0xFF), #color=$0B light yellow
31
+ PNG::Color.new(40,202,0,0xFF), #color=$0C dark green
32
+ PNG::Color.new(205,86,255,0xFF), #color=$0D magenta
33
+ PNG::Color.new(208,208,208,0xFF), #color=$0E grey
34
+ PNG::Color.new(255,255,255,0xFF), #color=$0F white
35
+ ]
36
+
37
+ #formula taken from http://www.digitalstratum.com/programming/yinyang_ti_asm
38
+ def to_picture
39
+ canvas = PNG::Canvas.new picture_width, picture_height, TMS9918_PALLETE[0]
40
+ colour_attributes_filename=filename.sub(/_P$/,'_C')
41
+ colour_attributes_file=file_system_image.files[colour_attributes_filename]
42
+ if colour_attributes_file.nil? || colour_attributes_file.contents.length<6144 then
43
+ #colour_attributes=(0x4E.chr)*6144
44
+ colour_attributes=(0x0F.chr)*6144
45
+ else
46
+ colour_attributes=colour_attributes_file.contents
47
+ end
48
+
49
+ picture_width.times do |x|
50
+ picture_height.times do |y|
51
+ byte_offset=y<<5
52
+ byte_offset|=y
53
+ byte_offset&=0xFF07
54
+ bit_offset=x % 0x08
55
+ byte_offset+=x
56
+ byte_offset-=bit_offset
57
+ bitmask=1<<(7-bit_offset)
58
+ bitmap_byte=contents[byte_offset]
59
+ colour_byte=colour_attributes[byte_offset]
60
+ foreground_colour=TMS9918_PALLETE[colour_byte>>4]
61
+ background_colour=TMS9918_PALLETE[colour_byte%16]
62
+ if ((bitmap_byte & bitmask)==bitmask) then
63
+ canvas[x, y]= foreground_colour
64
+ else
65
+ canvas[x, y]= background_colour
66
+ end
67
+ end
68
+ end
69
+ png = PNG.new canvas
70
+ result=png.raw_bytes
71
+ result
72
+ end
73
+
74
+ def picture_width
75
+ 256
76
+ end
77
+ def picture_height
78
+ 192
79
+ end
80
+ def picture_format
81
+ :png
82
+ end
83
+ end
84
+
85
+
86
+ # == Author
87
+ # Jonno Downes (jonno@jamtronix.com)
88
+ #
89
+ # == Copyright
90
+ # Copyright (c) 2008 Jonno Downes (jonno@jamtronix.com)
91
+ #
92
+ #Permission is hereby granted, free of charge, to any person obtaining
93
+ #a copy of this software and associated documentation files (the
94
+ #"Software"), to deal in the Software without restriction, including
95
+ #without limitation the rights to use, copy, modify, merge, publish,
96
+ #distribute, sublicense, and/or sell copies of the Software, and to
97
+ #permit persons to whom the Software is furnished to do so, subject to
98
+ #the following conditions:
99
+
100
+ # The above copyright notice and this permission notice shall be
101
+ # included in all copies or substantial portions of the Software.
102
+
103
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
104
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
105
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
106
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
107
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
108
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
109
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,91 @@
1
+
2
+ $:.unshift(File.dirname(__FILE__)) unless
3
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
4
+
5
+ require 'Ti99File'
6
+ require 'PatchedPNG'
7
+ class TiRLE<Ti99File
8
+
9
+ is_valid_file_if lambda {
10
+ (contents[0]==0x1B && contents[1]==0x47) && ( contents[2]==0x48 || contents[2]==0x4D)
11
+ }
12
+
13
+
14
+
15
+
16
+ def picture_width
17
+ case contents[2]
18
+ when 0x48 then return 256 #H=High Resolution
19
+ when 0x4D then return 128 #M=Medium Resolution
20
+ end
21
+ raise "invalid RLE graphic mode #{buffer[2].chr}"
22
+ end
23
+ def picture_height
24
+ case contents[2]
25
+ when 0x48 then return 192 #H=High Resolution
26
+ when 0x4D then return 96 #M=Medium Resolution
27
+ end
28
+ raise "invalid RLE graphic mode #{buffer[2].chr}"
29
+ end
30
+
31
+
32
+ RLE_COLOURS=[PNG::Color::Black,PNG::Color::White]
33
+ def to_picture
34
+ buffer=contents
35
+ cols=picture_width
36
+ rows=picture_height
37
+ canvas = PNG::Canvas.new cols, rows, PNG::Color::Black
38
+ p=3
39
+ colour_index=0
40
+ done=false
41
+ bit_index=0
42
+ while !(buffer[p]).nil?
43
+ if buffer[p]>=0x20 then #skip over any control characters
44
+ run_length=(buffer[p]-0x20)
45
+ run_length.times do
46
+ x=bit_index % cols
47
+ y=bit_index / cols
48
+ break if y>=rows
49
+ canvas[x, y]= RLE_COLOURS[colour_index]
50
+ bit_index+=1
51
+ end
52
+ colour_index=((colour_index+1)%2)
53
+ end
54
+ p+=1
55
+ end
56
+
57
+ png = PNG.new canvas
58
+ result=png.raw_bytes
59
+ result
60
+ end
61
+
62
+ def picture_format
63
+ :png
64
+ end
65
+ end
66
+
67
+
68
+ # == Author
69
+ # Jonno Downes (jonno@jamtronix.com)
70
+ #
71
+ # == Copyright
72
+ # Copyright (c) 2008 Jonno Downes (jonno@jamtronix.com)
73
+ #
74
+ #Permission is hereby granted, free of charge, to any person obtaining
75
+ #a copy of this software and associated documentation files (the
76
+ #"Software"), to deal in the Software without restriction, including
77
+ #without limitation the rights to use, copy, modify, merge, publish,
78
+ #distribute, sublicense, and/or sell copies of the Software, and to
79
+ #permit persons to whom the Software is furnished to do so, subject to
80
+ #the following conditions:
81
+
82
+ # The above copyright notice and this permission notice shall be
83
+ # included in all copies or substantial portions of the Software.
84
+
85
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
87
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
88
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
89
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
90
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
91
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,51 @@
1
+ require 'NativeFileType'
2
+
3
+
4
+ class Trs80BasicListing<NativeFileType
5
+
6
+ def self.file_system_file_types
7
+ {
8
+ TrsDos=>"BAS"
9
+ }
10
+ end
11
+
12
+ #file should start with a line number
13
+ is_valid_file_if lambda {!(contents[0,5]=~/^\s*\d/).nil?}
14
+
15
+ #make sure if we match, we override CMD
16
+ def matching_score
17
+ Trs80Cmd.matching_score+1
18
+ end
19
+
20
+ def to_text
21
+ contents
22
+ end
23
+
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.
@@ -22,7 +22,9 @@ require 'NativeFileType'
22
22
 
23
23
  class Trs80Cmd<NativeFileType
24
24
 
25
- is_valid_file_if lambda {contents[0].between?(1,0x15)}
25
+ is_valid_file_if lambda {(contents[0].between?(1,0x15))}
26
+
27
+ is_valid_file_if lambda {!(filename=~/\/(BAS|)$/) }
26
28
  @records=nil
27
29
 
28
30
  def records
@@ -9,11 +9,23 @@ def self.file_system_file_types
9
9
  }
10
10
  end
11
11
 
12
- #BASIC files should start with 0xFF
12
+ #BASIC files should start with 0xFF
13
13
  is_valid_file_if lambda {contents[0]==0xFF}
14
14
 
15
- #filename should either have no extension, or end /BAS
16
- is_valid_file_if lambda {filename=~/\/(BAS|)$/}
15
+ #eliminate some false positives
16
+ is_valid_file_if lambda {
17
+ !(filename=~/\/SYS$/)
18
+ }
19
+ #filename should either have no extension, or end /BAS, or if it has any other extension, check the file ends with 00 00
20
+ is_valid_file_if lambda {
21
+ (filename=~/\/(BAS|)$/) || (contents[-2,2]=="\000\000")
22
+ }
23
+
24
+ #make sure if we match, we override CMD
25
+ def matching_score
26
+ Trs80Cmd.matching_score+1
27
+ end
28
+
17
29
 
18
30
  SINGLE_BYTE_TOKENS={
19
31
  0x80=>'END',