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,247 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: IntegerBASIC</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">IntegerBASIC</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/lib/native_file_types/apple2/IntegerBASIC_rb.html">
59
+ lib/native_file_types/apple2/IntegerBASIC.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ <a href="NativeFileType.html">
69
+ NativeFileType
70
+ </a>
71
+ </td>
72
+ </tr>
73
+ </table>
74
+ </div>
75
+ <!-- banner header -->
76
+
77
+ <div id="bodyContent">
78
+
79
+
80
+
81
+ <div id="contextContent">
82
+
83
+
84
+
85
+ </div>
86
+
87
+ <div id="method-list">
88
+ <h3 class="section-bar">Methods</h3>
89
+
90
+ <div class="name-list">
91
+ <a href="#M000206">file_system_file_types</a>&nbsp;&nbsp;
92
+ <a href="#M000207">to_listing</a>&nbsp;&nbsp;
93
+ </div>
94
+ </div>
95
+
96
+ </div>
97
+
98
+
99
+ <!-- if includes -->
100
+
101
+ <div id="section">
102
+
103
+
104
+ <div id="constants-list">
105
+ <h3 class="section-bar">Constants</h3>
106
+
107
+ <div class="name-list">
108
+ <table summary="Constants">
109
+ <tr class="top-aligned-row context-row">
110
+ <td class="context-item-name">IB_REM_TOKEN</td>
111
+ <td>=</td>
112
+ <td class="context-item-value">0x5D</td>
113
+ </tr>
114
+ <tr class="top-aligned-row context-row">
115
+ <td class="context-item-name">IB_UNARY_PLUS</td>
116
+ <td>=</td>
117
+ <td class="context-item-value">0x35</td>
118
+ </tr>
119
+ <tr class="top-aligned-row context-row">
120
+ <td class="context-item-name">IB_UNARY_MINUS</td>
121
+ <td>=</td>
122
+ <td class="context-item-value">0x36</td>
123
+ </tr>
124
+ <tr class="top-aligned-row context-row">
125
+ <td class="context-item-name">IB_QUOTE_START</td>
126
+ <td>=</td>
127
+ <td class="context-item-value">0x28</td>
128
+ </tr>
129
+ <tr class="top-aligned-row context-row">
130
+ <td class="context-item-name">IB_QUOTE_END</td>
131
+ <td>=</td>
132
+ <td class="context-item-value">0x29</td>
133
+ </tr>
134
+ <tr class="top-aligned-row context-row">
135
+ <td class="context-item-name">INTEGER_BASIC_TOKENS</td>
136
+ <td>=</td>
137
+ <td class="context-item-value">[ # $00-$0F &quot;HIMEM:&quot;,&quot;&lt;$01&gt;&quot;, &quot;_&quot;, &quot; : &quot;, &quot;LOAD&quot;, &quot;SAVE&quot;, &quot;CON&quot;, &quot;RUN&quot;, # Direct commands &quot;RUN&quot;, &quot;DEL&quot;, &quot;,&quot;, &quot;NEW&quot;, &quot;CLR&quot;, &quot;AUTO&quot;, &quot;,&quot;, &quot;MAN&quot;, # $10-$1F &quot;HIMEM:&quot;,&quot;LOMEM:&quot;,&quot;+&quot;, &quot;-&quot;, # Binary ops &quot;*&quot;, &quot;/&quot;, &quot;=&quot;, &quot;#&quot;, &quot;&gt;=&quot;, &quot;&gt;&quot;, &quot;&lt;=&quot;, &quot;&lt;&gt;&quot;, &quot;&lt;&quot;, &quot;AND&quot;, &quot;OR&quot;, &quot;MOD&quot;, # $20-$2F &quot;^&quot;, &quot;+&quot;, &quot;(&quot;, &quot;,&quot;, &quot;THEN&quot;, &quot;THEN&quot;, &quot;,&quot;, &quot;,&quot;, &quot;\&quot;&quot;, &quot;\&quot;&quot;, &quot;(&quot;, &quot;!&quot;, &quot;!&quot;, &quot;(&quot;, &quot;PEEK&quot;, &quot;RND&quot;, # $30-$3F &quot;SGN&quot;, &quot;ABS&quot;, &quot;PDL&quot;, &quot;RNDX&quot;, &quot;(&quot;, &quot;+&quot;, &quot;-&quot;, &quot;NOT&quot;, # Unary ops &quot;(&quot;, &quot;=&quot;, &quot;#&quot;, &quot;LEN(&quot;, &quot;ASC(&quot;, &quot;SCRN(&quot;, &quot;,&quot;, &quot;(&quot;, # $40-$4F &quot;$&quot;, &quot;$&quot;, &quot;(&quot;, &quot;,&quot;, &quot;,&quot;, &quot;;&quot;, &quot;;&quot;, &quot;;&quot;, &quot;,&quot;, &quot;,&quot;, &quot;,&quot;, &quot;TEXT&quot;, # Statements &quot;GR&quot;, &quot;CALL&quot;, &quot;DIM&quot;, &quot;DIM&quot;, # $50-$5F &quot;TAB&quot;, &quot;END&quot;, &quot;INPUT&quot;, &quot;INPUT&quot;, &quot;INPUT&quot;, &quot;FOR&quot;, &quot;=&quot;, &quot;TO&quot;, &quot;STEP&quot;, &quot;NEXT&quot;, &quot;,&quot;, &quot;RETURN&quot;, &quot;GOSUB&quot;, &quot;REM&quot;, &quot;LET&quot;, &quot;GOTO&quot;, # $60-$6F &quot;IF&quot;, &quot;PRINT&quot;, &quot;PRINT&quot;, &quot;PRINT&quot;, &quot;POKE&quot;, &quot;,&quot;, &quot;COLOR=&quot;,&quot;PLOT&quot;, &quot;,&quot;, &quot;HLIN&quot;, &quot;,&quot;, &quot;AT&quot;, &quot;VLIN&quot;, &quot;,&quot;, &quot;AT&quot;, &quot;VTAB&quot;, # $70-$7F &quot;=&quot;, &quot;=&quot;, &quot;)&quot;, &quot;)&quot;, &quot;LIST&quot;, &quot;,&quot;, &quot;LIST&quot;, &quot;POP&quot;, &quot;NODSP&quot;, &quot;DSP&quot;, &quot;NOTRACE&quot;,&quot;DSP&quot;, &quot;DSP&quot;, &quot;TRACE&quot;, &quot;PR#&quot;, &quot;IN#&quot;, ]</td>
138
+ </tr>
139
+ </table>
140
+ </div>
141
+ </div>
142
+
143
+
144
+
145
+
146
+
147
+
148
+ <!-- if method_list -->
149
+ <div id="methods">
150
+ <h3 class="section-bar">Public Class methods</h3>
151
+
152
+ <div id="method-M000206" class="method-detail">
153
+ <a name="M000206"></a>
154
+
155
+ <div class="method-heading">
156
+ <a href="IntegerBASIC.src/M000206.html" target="Code" class="method-signature"
157
+ onclick="popupCode('IntegerBASIC.src/M000206.html');return false;">
158
+ <span class="method-name">file_system_file_types</span><span class="method-args">()</span>
159
+ </a>
160
+ </div>
161
+
162
+ <div class="method-description">
163
+ </div>
164
+ </div>
165
+
166
+ <h3 class="section-bar">Public Instance methods</h3>
167
+
168
+ <div id="method-M000207" class="method-detail">
169
+ <a name="M000207"></a>
170
+
171
+ <div class="method-heading">
172
+ <a href="IntegerBASIC.src/M000207.html" target="Code" class="method-signature"
173
+ onclick="popupCode('IntegerBASIC.src/M000207.html');return false;">
174
+ <span class="method-name">to_listing</span><span class="method-args">()</span>
175
+ </a>
176
+ </div>
177
+
178
+ <div class="method-description">
179
+ <pre>
180
+ Adapted from FID.C -- a utility to browse Apple II .DSK image files by Paul Schlyter (pausch@saaf.se)
181
+ </pre>
182
+ <p>
183
+ Integer Basic file format:
184
+ </p>
185
+ <pre>
186
+ &lt;Length_of_file&gt; (16-bit little endian)
187
+ &lt;Line&gt;
188
+ ......
189
+ &lt;Line&gt;
190
+
191
+ where &lt;Line&gt; is:
192
+ 1 byte: Line length
193
+ 2 bytes: Line number, binary little endian
194
+ &lt;token&gt;
195
+ &lt;token&gt;
196
+ &lt;token&gt;
197
+ ......
198
+ &lt;end-of-line token&gt;
199
+
200
+ &lt;token&gt; is one of:
201
+ $12 - $7F: Tokens as listed below: 1 byte/token
202
+ $80 - $FF: ASCII characters with high bit set
203
+ $B0 - $B9: Integer constant, 3 bytes: $B0-$B9,
204
+ followed by the integer value in
205
+ 2-byte binary little-endian format
206
+ (Note: a $B0-$B9 byte preceded by an
207
+ alphanumeric ASCII(hi_bit_set) byte
208
+ is not the start of an integer
209
+ constant, but instead part of a
210
+ variable name)
211
+
212
+ &lt;end-of-line token&gt; is:
213
+ $01: One byte having the value $01
214
+ (Note: a $01 byte may also appear
215
+ inside an integer constant)
216
+
217
+ Note that the tokens $02 to $11 represent commands which
218
+ can be executed as direct commands only -- any attempt to
219
+ enter then into an Integer Basic program will be rejected
220
+ as a syntax error. Therefore, no Integer Basic program
221
+ which was entered through the Integer Basic interpreter
222
+ will contain any of the tokens $02 to $11. The token $00
223
+ appears to be unused and won't appear in Integer Basic
224
+ programs either. However, $00 is used as an end-of-line
225
+ marker in S-C Assembler source files, which also are of
226
+ DOS file type &quot;I&quot;.
227
+
228
+ (note here a difference from Applesoft Basic, where there
229
+ are no &quot;direct mode only&quot; commands - any Applesoft commands
230
+ can be entered into an Applesoft program as well).
231
+ </pre>
232
+ </div>
233
+ </div>
234
+
235
+
236
+ </div>
237
+
238
+
239
+ </div>
240
+
241
+
242
+ <div id="validator-badges">
243
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
244
+ </div>
245
+
246
+ </body>
247
+ </html>
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>file_system_file_types (IntegerBASIC)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/native_file_types/apple2/IntegerBASIC.rb, line 4</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-constant">IntegerBASIC</span>.<span class="ruby-identifier">file_system_file_types</span>
15
+ {
16
+ <span class="ruby-constant">AppleDos</span>=<span class="ruby-operator">&gt;</span><span class="ruby-value">0x01</span>
17
+ }
18
+ <span class="ruby-keyword kw">end</span></pre>
19
+ </body>
20
+ </html>
@@ -0,0 +1,86 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>to_listing (IntegerBASIC)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/native_file_types/apple2/IntegerBASIC.rb, line 58</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_listing</span>
15
+ <span class="ruby-identifier">length</span>=<span class="ruby-identifier">contents</span>[<span class="ruby-value">0</span>]<span class="ruby-operator">+</span><span class="ruby-identifier">contents</span>[<span class="ruby-value">1</span>]<span class="ruby-operator">*</span><span class="ruby-value">256</span>
16
+ <span class="ruby-identifier">index</span>=<span class="ruby-value">2</span>
17
+ <span class="ruby-identifier">s</span>=<span class="ruby-value str">&quot;&quot;</span>
18
+
19
+ <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">index</span><span class="ruby-operator">&lt;</span><span class="ruby-identifier">length</span>)
20
+ <span class="ruby-identifier">in_REM</span> = <span class="ruby-keyword kw">false</span>
21
+ <span class="ruby-identifier">in_QUOTE</span> = <span class="ruby-keyword kw">false</span>
22
+ <span class="ruby-identifier">lead_SP</span> = <span class="ruby-keyword kw">false</span>
23
+ <span class="ruby-identifier">last_AN</span> = <span class="ruby-keyword kw">false</span>
24
+ <span class="ruby-identifier">last_TOK</span> = <span class="ruby-keyword kw">false</span>
25
+
26
+ <span class="ruby-identifier">line_length</span>=<span class="ruby-identifier">contents</span>[<span class="ruby-identifier">index</span>]
27
+ <span class="ruby-identifier">index</span><span class="ruby-operator">+=</span><span class="ruby-value">1</span> <span class="ruby-comment cmt">#skip over the &quot;line length&quot; field</span>
28
+ <span class="ruby-identifier">line_no</span>=<span class="ruby-identifier">contents</span>[<span class="ruby-identifier">index</span>]<span class="ruby-operator">+</span><span class="ruby-identifier">contents</span>[<span class="ruby-identifier">index</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>]<span class="ruby-operator">*</span><span class="ruby-value">256</span>
29
+ <span class="ruby-identifier">index</span><span class="ruby-operator">+=</span><span class="ruby-value">2</span> <span class="ruby-comment cmt">#skip over the &quot;line number&quot; field</span>
30
+ <span class="ruby-identifier">s</span><span class="ruby-operator">+=</span><span class="ruby-identifier">sprintf</span>(<span class="ruby-value str">&quot;%u &quot;</span>,<span class="ruby-identifier">line_no</span>)
31
+ <span class="ruby-identifier">done_line</span>=<span class="ruby-keyword kw">false</span>
32
+ <span class="ruby-keyword kw">while</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">done_line</span>)
33
+ <span class="ruby-identifier">lead_SP</span> = <span class="ruby-identifier">lead_SP</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">last_AN</span>
34
+ <span class="ruby-identifier">b</span>=<span class="ruby-identifier">contents</span>[<span class="ruby-identifier">index</span>]
35
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">b</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">0x80</span> ) <span class="ruby-keyword kw">then</span>
36
+ <span class="ruby-keyword kw">if</span> ( <span class="ruby-operator">!</span><span class="ruby-identifier">in_REM</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">in_QUOTE</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">last_AN</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">b</span><span class="ruby-operator">&gt;=</span> <span class="ruby-value">0x</span><span class="ruby-constant">B0</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">b</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">0x</span><span class="ruby-constant">B9</span>) ) <span class="ruby-keyword kw">then</span>
37
+ <span class="ruby-identifier">integer</span> = <span class="ruby-identifier">contents</span>[<span class="ruby-identifier">index</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>]<span class="ruby-operator">+</span><span class="ruby-identifier">contents</span>[<span class="ruby-identifier">index</span><span class="ruby-operator">+</span><span class="ruby-value">2</span>]<span class="ruby-operator">*</span><span class="ruby-value">256</span>
38
+ <span class="ruby-identifier">index</span><span class="ruby-operator">+=</span><span class="ruby-value">2</span>
39
+ <span class="ruby-identifier">s</span><span class="ruby-operator">+=</span><span class="ruby-identifier">sprintf</span>( (<span class="ruby-identifier">last_TOK</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">lead_SP</span> ) <span class="ruby-operator">?</span> <span class="ruby-value str">&quot; %d&quot;</span> <span class="ruby-operator">:</span> <span class="ruby-value str">&quot;%d&quot;</span>, <span class="ruby-identifier">integer</span> )
40
+ <span class="ruby-identifier">lead_SP</span> = <span class="ruby-keyword kw">true</span>
41
+ <span class="ruby-keyword kw">else</span>
42
+
43
+ <span class="ruby-identifier">c</span> = <span class="ruby-identifier">b</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x7</span><span class="ruby-constant">F</span>
44
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">in_REM</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">in_QUOTE</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">last_TOK</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">lead_SP</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">is_alnum</span>(<span class="ruby-identifier">c</span>)) <span class="ruby-keyword kw">then</span>
45
+ <span class="ruby-identifier">s</span><span class="ruby-operator">+=</span><span class="ruby-value str">&quot; &quot;</span>
46
+ <span class="ruby-keyword kw">end</span>
47
+ <span class="ruby-keyword kw">if</span> ( <span class="ruby-identifier">c</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">0x20</span> ) <span class="ruby-keyword kw">then</span>
48
+ <span class="ruby-identifier">s</span><span class="ruby-operator">+=</span><span class="ruby-identifier">c</span>.<span class="ruby-identifier">chr</span>
49
+ <span class="ruby-keyword kw">else</span>
50
+ <span class="ruby-identifier">s</span><span class="ruby-operator">+=</span><span class="ruby-value str">&quot;^&quot;</span><span class="ruby-operator">+</span>(<span class="ruby-identifier">c</span><span class="ruby-operator">+</span><span class="ruby-value">0x40</span>).<span class="ruby-identifier">chr</span>
51
+ <span class="ruby-keyword kw">end</span>
52
+ <span class="ruby-identifier">last_AN</span> = <span class="ruby-identifier">is_alnum</span>(<span class="ruby-identifier">c</span>)
53
+ <span class="ruby-keyword kw">end</span>
54
+ <span class="ruby-identifier">last_TOK</span> =<span class="ruby-keyword kw">false</span>
55
+ <span class="ruby-keyword kw">else</span>
56
+
57
+ <span class="ruby-identifier">token</span> = <span class="ruby-constant">INTEGER_BASIC_TOKENS</span>[<span class="ruby-identifier">b</span>]
58
+ <span class="ruby-identifier">lastchar</span> = <span class="ruby-identifier">token</span>[<span class="ruby-identifier">token</span>.<span class="ruby-identifier">length</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>]
59
+ <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">b</span>
60
+ <span class="ruby-keyword kw">when</span> <span class="ruby-constant">IB_REM_TOKEN</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">in_REM</span> = <span class="ruby-keyword kw">true</span>
61
+ <span class="ruby-keyword kw">when</span> <span class="ruby-constant">IB_QUOTE_START</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">in_QUOTE</span> = <span class="ruby-keyword kw">true</span>
62
+ <span class="ruby-keyword kw">when</span> <span class="ruby-constant">IB_QUOTE_END</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">in_QUOTE</span> = <span class="ruby-keyword kw">false</span>
63
+ <span class="ruby-keyword kw">end</span>
64
+
65
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">lead_SP</span> <span class="ruby-operator">&amp;&amp;</span> ( <span class="ruby-identifier">is_alnum</span>(<span class="ruby-identifier">token</span>[<span class="ruby-value">0</span>]) <span class="ruby-operator">||</span>
66
+ <span class="ruby-identifier">b</span> <span class="ruby-operator">==</span> <span class="ruby-constant">IB_UNARY_PLUS</span> <span class="ruby-operator">||</span>
67
+ <span class="ruby-identifier">b</span> <span class="ruby-operator">==</span> <span class="ruby-constant">IB_UNARY_MINUS</span> <span class="ruby-operator">||</span>
68
+ <span class="ruby-identifier">b</span> <span class="ruby-operator">==</span> <span class="ruby-constant">IB_QUOTE_START</span> ) <span class="ruby-keyword kw">then</span>
69
+ <span class="ruby-identifier">s</span><span class="ruby-operator">+=</span><span class="ruby-value str">&quot; &quot;</span>
70
+ <span class="ruby-keyword kw">end</span>
71
+ <span class="ruby-identifier">s</span><span class="ruby-operator">+=</span><span class="ruby-identifier">token</span>
72
+ <span class="ruby-identifier">last_AN</span> = <span class="ruby-keyword kw">false</span>
73
+ <span class="ruby-identifier">lead_SP</span> = <span class="ruby-identifier">is_alnum</span>(<span class="ruby-identifier">lastchar</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">lastchar</span> <span class="ruby-operator">==</span> <span class="ruby-value str">')'</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">lastchar</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'\&quot;'</span>
74
+ <span class="ruby-identifier">last_TOK</span> = <span class="ruby-keyword kw">true</span>
75
+ <span class="ruby-keyword kw">end</span>
76
+ <span class="ruby-identifier">index</span><span class="ruby-operator">+=</span><span class="ruby-value">1</span>
77
+ <span class="ruby-identifier">done_line</span>=(<span class="ruby-identifier">index</span><span class="ruby-operator">&gt;</span><span class="ruby-identifier">length</span>)<span class="ruby-operator">||</span>(<span class="ruby-identifier">contents</span>[<span class="ruby-identifier">index</span>]<span class="ruby-operator">==</span><span class="ruby-value">0x01</span>)
78
+ <span class="ruby-keyword kw">end</span>
79
+ <span class="ruby-identifier">s</span><span class="ruby-operator">+=</span><span class="ruby-value str">&quot;\n&quot;</span>
80
+ <span class="ruby-identifier">index</span><span class="ruby-operator">+=</span><span class="ruby-value">1</span> <span class="ruby-comment cmt"># skip over &quot;end of line&quot; marker</span>
81
+ <span class="ruby-keyword kw">end</span>
82
+ <span class="ruby-identifier">s</span>
83
+
84
+ <span class="ruby-keyword kw">end</span></pre>
85
+ </body>
86
+ </html>
@@ -0,0 +1,182 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: MBasic</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">MBasic</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/lib/native_file_types/cpm/MBasic_rb.html">
59
+ lib/native_file_types/cpm/MBasic.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ <a href="CPMFile.html">
69
+ CPMFile
70
+ </a>
71
+ </td>
72
+ </tr>
73
+ </table>
74
+ </div>
75
+ <!-- banner header -->
76
+
77
+ <div id="bodyContent">
78
+
79
+
80
+
81
+ <div id="contextContent">
82
+
83
+ <div id="description">
84
+ <p>
85
+ the CP/M MBASIC file format is very similar to the MS-DOS BASICA/GWBASIC
86
+ formats, described at <a
87
+ href="http://www.chebucto.ns.ca/~af380/GW-BASIC-tokens.html">www.chebucto.ns.ca/~af380/GW-BASIC-tokens.html</a>
88
+ </p>
89
+
90
+ </div>
91
+
92
+
93
+ </div>
94
+
95
+ <div id="method-list">
96
+ <h3 class="section-bar">Methods</h3>
97
+
98
+ <div class="name-list">
99
+ <a href="#M000011">file_system_file_types</a>&nbsp;&nbsp;
100
+ <a href="#M000012">to_listing</a>&nbsp;&nbsp;
101
+ </div>
102
+ </div>
103
+
104
+ </div>
105
+
106
+
107
+ <!-- if includes -->
108
+
109
+ <div id="section">
110
+
111
+
112
+ <div id="constants-list">
113
+ <h3 class="section-bar">Constants</h3>
114
+
115
+ <div class="name-list">
116
+ <table summary="Constants">
117
+ <tr class="top-aligned-row context-row">
118
+ <td class="context-item-name">SINGLE_BYTE_TOKENS</td>
119
+ <td>=</td>
120
+ <td class="context-item-value">{ 0x81=&gt;'END', 0x82=&gt;'FOR', 0x83=&gt;'NEXT', 0x84=&gt;'DATA', 0x85=&gt;'INPUT', 0x86=&gt;'DIM', 0x87=&gt;'READ', 0x88=&gt;'LET', 0x89=&gt;'GOTO', 0x8A=&gt;'RUN', 0x8B=&gt;'IF', 0x8C=&gt;'RESTORE', 0x8D=&gt;'GOSUB', 0x8E=&gt;'RETURN', 0x8F=&gt;'REM', 0x90=&gt;'STOP', 0x91=&gt;'PRINT', 0x92=&gt;'CLEAR', 0x93=&gt;'LIST', 0x94=&gt;'NEW', 0x95=&gt;'ON', 0x96=&gt;'DEF', 0x97=&gt;'POKE', 0x98=&gt;'CONT', 0x9B=&gt;'LPRINT', 0x9C=&gt;'LLIST', 0x9D=&gt;'WIDTH', 0x9E=&gt;'ELSE', 0x9F=&gt;'TRACE', 0xA0=&gt;'NOTRACE', 0xA1=&gt;'SWAP', 0xA2=&gt;'ERASE', 0xA3=&gt;'EDIT', 0xA4=&gt;'ERROR', 0xA5=&gt;'RESUME', 0xA6=&gt;'DEL', 0xA7=&gt;'AUTO', 0xA8=&gt;'RENUM', 0xA9=&gt;'DEFSTR', 0xAA=&gt;'DEFINT', 0xAB=&gt;'DEFSNG', 0xAC=&gt;'DEFDBL', 0xAD=&gt;'LINE', 0xAE=&gt;'POP', 0xAF=&gt;'WHILE', 0xB0=&gt;'WEND', 0xB1=&gt;'CALL', 0xB2=&gt;'WRITE', 0xB3=&gt;'COMMON', 0xB4=&gt;'CHAIN', 0xB5=&gt;'OPTION', 0xB6=&gt;'RANDOMIZE', 0xB7=&gt;'SYSTEM', 0xB8=&gt;'OPEN', 0xB9=&gt;'FIELD', 0xBA=&gt;'GET', 0xBB=&gt;'PUT', 0xBC=&gt;'CLOSE', 0xBD=&gt;'LOAD', 0xBE=&gt;'MERGE', 0xBF=&gt;'FILES', 0xC0=&gt;'NAME', 0xC1=&gt;'KILL', 0xC2=&gt;'LSET', 0xC3=&gt;'RSET', 0xC4=&gt;'SAVE', 0xC5=&gt;'RESET', 0xC6=&gt;'TEXT', 0xC7=&gt;'HOME', 0xC8=&gt;'VTAB', 0xC9=&gt;'HTAB', 0xCA=&gt;'INVERSE', 0xCB=&gt;'NORMAL', 0xCC=&gt;'GR', 0xCD=&gt;'COLOR', 0xCE=&gt;'HLIN', 0xCF=&gt;'VLIN', 0xD0=&gt;'PLOT', 0xD1=&gt;'HGR', 0xD2=&gt;'HPLOT', 0xD3=&gt;'HCOLOR', 0xD4=&gt;'BEEP', 0xD5=&gt;'WAIT', 0xDD=&gt;'TO', 0xDE=&gt;'THEN', 0xDF=&gt;'TAB(', 0xE0=&gt;'STEP', 0xE1=&gt;'USR', 0xE2=&gt;'FN', 0xE3=&gt;'SPC(', 0xE4=&gt;'NOT', 0xE5=&gt;'ERL', 0xE6=&gt;'ERR', 0xE7=&gt;'STRING$', 0xE8=&gt;'USING', 0xE9=&gt;'INSTR', 0xEA=&gt;&quot;'&quot;, 0xEB=&gt;'VARPTR', 0xEC=&gt;'SCRN', 0xED=&gt;'HSCRN', 0xEE=&gt;'INKEY$', 0xEF=&gt;'&gt;', 0xF0=&gt;'=', 0xF1=&gt;'&lt;', 0xF2=&gt;'+', 0xF3=&gt;'-', 0xF4=&gt;'*', 0xF5=&gt;'/', 0xF6=&gt;'^', 0xF7=&gt;'AND', 0xF8=&gt;'OR', 0xF9=&gt;'XOR', 0xFA=&gt;'EQV', 0xFB=&gt;'IMP', 0xFC=&gt;'MOD', 0xFD=&gt;'\\', }</td>
121
+ </tr>
122
+ <tr class="top-aligned-row context-row">
123
+ <td class="context-item-name">DOUBLE_BYTE_TOKENS</td>
124
+ <td>=</td>
125
+ <td class="context-item-value">{ 0x81=&gt;'LEFT$', 0x82=&gt;'RIGHT$', 0x83=&gt;'MID$', 0x84=&gt;'SGN', 0x85=&gt;'INT', 0x87=&gt;'SQR', 0x88=&gt;'RND', 0x89=&gt;'SIN', 0x8A=&gt;'LOG', 0x8B=&gt;'EXP', 0x8C=&gt;'COS', 0x8D=&gt;'TAN', 0x8E=&gt;'ATN', 0x8F=&gt;'FRE', 0x90=&gt;'POS', 0x91=&gt;'LEN', 0x92=&gt;'STR$', 0x93=&gt;'VAL', 0x94=&gt;'ASC', 0x95=&gt;'CHR$', 0x96=&gt;'PEEK', 0x97=&gt;'SPACE$', 0x98=&gt;'OCT$', 0x99=&gt;'HEX$', 0x9A=&gt;'LPOS', 0x9B=&gt;'CINT', 0x9C=&gt;'CSNG', 0x9D=&gt;'CDBL', 0x9E=&gt;'FIX', 0xAA=&gt;'CVI', 0xAB=&gt;'CVS', 0xAC=&gt;'CVD', 0xAE=&gt;'EOF', 0xAF=&gt;'LOC', 0xB0=&gt;'LOF', 0xB1=&gt;'MKI$', 0xB2=&gt;'MKS$', 0xB3=&gt;'MKD$', 0xB4=&gt;'VPOS', 0xB5=&gt;'PDL', 0xB6=&gt;'BUTTON', }</td>
126
+ </tr>
127
+ </table>
128
+ </div>
129
+ </div>
130
+
131
+
132
+
133
+
134
+
135
+
136
+ <!-- if method_list -->
137
+ <div id="methods">
138
+ <h3 class="section-bar">Public Class methods</h3>
139
+
140
+ <div id="method-M000011" class="method-detail">
141
+ <a name="M000011"></a>
142
+
143
+ <div class="method-heading">
144
+ <a href="MBasic.src/M000011.html" target="Code" class="method-signature"
145
+ onclick="popupCode('MBasic.src/M000011.html');return false;">
146
+ <span class="method-name">file_system_file_types</span><span class="method-args">()</span>
147
+ </a>
148
+ </div>
149
+
150
+ <div class="method-description">
151
+ </div>
152
+ </div>
153
+
154
+ <h3 class="section-bar">Public Instance methods</h3>
155
+
156
+ <div id="method-M000012" class="method-detail">
157
+ <a name="M000012"></a>
158
+
159
+ <div class="method-heading">
160
+ <a href="MBasic.src/M000012.html" target="Code" class="method-signature"
161
+ onclick="popupCode('MBasic.src/M000012.html');return false;">
162
+ <span class="method-name">to_listing</span><span class="method-args">()</span>
163
+ </a>
164
+ </div>
165
+
166
+ <div class="method-description">
167
+ </div>
168
+ </div>
169
+
170
+
171
+ </div>
172
+
173
+
174
+ </div>
175
+
176
+
177
+ <div id="validator-badges">
178
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
179
+ </div>
180
+
181
+ </body>
182
+ </html>
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>file_system_file_types (MBasic)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/native_file_types/cpm/MBasic.rb, line 8</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-constant">MBasic</span>.<span class="ruby-identifier">file_system_file_types</span>
15
+ {
16
+ <span class="ruby-constant">AppleCPM</span>=<span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;BAS&quot;</span>,
17
+ }
18
+ <span class="ruby-keyword kw">end</span></pre>
19
+ </body>
20
+ </html>
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>to_listing (MBasic)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/native_file_types/cpm/MBasic.rb, line 178</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_listing</span>
15
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@contents</span>[<span class="ruby-value">0</span>]<span class="ruby-operator">==</span><span class="ruby-value">0x</span><span class="ruby-constant">FF</span> <span class="ruby-keyword kw">then</span>
16
+ <span class="ruby-identifier">buffer_as_gbasic</span>(<span class="ruby-ivar">@contents</span>)
17
+ <span class="ruby-keyword kw">else</span>
18
+ <span class="ruby-ivar">@contents</span>
19
+ <span class="ruby-keyword kw">end</span>
20
+ <span class="ruby-keyword kw">end</span></pre>
21
+ </body>
22
+ </html>