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.
- data/bin/ripxplore.rb +188 -0
- data/doc/classes/A2Dsk.html +226 -0
- data/doc/classes/A2Dsk.src/M000005.html +18 -0
- data/doc/classes/A2Dsk.src/M000006.html +18 -0
- data/doc/classes/A2Dsk.src/M000007.html +18 -0
- data/doc/classes/A2Dsk.src/M000008.html +18 -0
- data/doc/classes/A2Dsk.src/M000009.html +18 -0
- data/doc/classes/A2Dsk.src/M000010.html +22 -0
- data/doc/classes/A2DskDosOrder.html +139 -0
- data/doc/classes/A2DskDosOrder.src/M000242.html +18 -0
- data/doc/classes/A2DskPhysicalOrder.html +139 -0
- data/doc/classes/A2DskPhysicalOrder.src/M000019.html +18 -0
- data/doc/classes/Apple2.html +187 -0
- data/doc/classes/Apple2.src/M000128.html +18 -0
- data/doc/classes/Apple2.src/M000129.html +18 -0
- data/doc/classes/Apple2.src/M000130.html +18 -0
- data/doc/classes/Apple2.src/M000131.html +19 -0
- data/doc/classes/AppleBinary.html +193 -0
- data/doc/classes/AppleBinary.src/M000089.html +20 -0
- data/doc/classes/AppleBinary.src/M000090.html +18 -0
- data/doc/classes/AppleBinary.src/M000091.html +18 -0
- data/doc/classes/AppleBinary.src/M000092.html +18 -0
- data/doc/classes/AppleCPM.html +228 -0
- data/doc/classes/AppleCPM.src/M000243.html +18 -0
- data/doc/classes/AppleCPM.src/M000244.html +18 -0
- data/doc/classes/AppleCPM.src/M000245.html +21 -0
- data/doc/classes/AppleCPM.src/M000246.html +40 -0
- data/doc/classes/AppleDos.html +275 -0
- data/doc/classes/AppleDos.src/M000161.html +18 -0
- data/doc/classes/AppleDos.src/M000162.html +18 -0
- data/doc/classes/AppleDos.src/M000163.html +18 -0
- data/doc/classes/AppleDos.src/M000164.html +86 -0
- data/doc/classes/AppleHiResPic.html +279 -0
- data/doc/classes/AppleHiResPic.src/M000083.html +22 -0
- data/doc/classes/AppleHiResPic.src/M000084.html +18 -0
- data/doc/classes/AppleHiResPic.src/M000085.html +22 -0
- data/doc/classes/AppleHiResPic.src/M000086.html +57 -0
- data/doc/classes/AppleHiResPic.src/M000087.html +18 -0
- data/doc/classes/AppleHiResPic.src/M000088.html +18 -0
- data/doc/classes/AppleText.html +156 -0
- data/doc/classes/AppleText.src/M000142.html +21 -0
- data/doc/classes/AppleText.src/M000143.html +20 -0
- data/doc/classes/AppleWorksWP.html +160 -0
- data/doc/classes/AppleWorksWP.src/M000081.html +20 -0
- data/doc/classes/AppleWorksWP.src/M000082.html +45 -0
- data/doc/classes/Applesoft.html +169 -0
- data/doc/classes/Applesoft.src/M000175.html +21 -0
- data/doc/classes/Applesoft.src/M000176.html +75 -0
- data/doc/classes/Atari800.html +169 -0
- data/doc/classes/Atari800.src/M000177.html +23 -0
- data/doc/classes/Atari800.src/M000178.html +18 -0
- data/doc/classes/Atari800.src/M000179.html +19 -0
- data/doc/classes/AtariBasic.html +215 -0
- data/doc/classes/AtariBasic.src/M000204.html +20 -0
- data/doc/classes/AtariBasic.src/M000205.html +108 -0
- data/doc/classes/AtariBinary.html +193 -0
- data/doc/classes/AtariBinary.src/M000238.html +20 -0
- data/doc/classes/AtariBinary.src/M000239.html +18 -0
- data/doc/classes/AtariBinary.src/M000240.html +18 -0
- data/doc/classes/AtariBinary.src/M000241.html +18 -0
- data/doc/classes/AtariDos.html +186 -0
- data/doc/classes/AtariDos.src/M000047.html +18 -0
- data/doc/classes/AtariDos.src/M000048.html +43 -0
- data/doc/classes/AtariText.html +159 -0
- data/doc/classes/AtariText.src/M000002.html +20 -0
- data/doc/classes/AtariText.src/M000003.html +18 -0
- data/doc/classes/Atr.html +271 -0
- data/doc/classes/Atr.src/M000208.html +18 -0
- data/doc/classes/Atr.src/M000209.html +18 -0
- data/doc/classes/Atr.src/M000210.html +19 -0
- data/doc/classes/Atr.src/M000211.html +18 -0
- data/doc/classes/Atr.src/M000212.html +18 -0
- data/doc/classes/Atr.src/M000213.html +19 -0
- data/doc/classes/Atr.src/M000214.html +19 -0
- data/doc/classes/C64.html +206 -0
- data/doc/classes/C64.src/M000020.html +18 -0
- data/doc/classes/C64.src/M000021.html +31 -0
- data/doc/classes/C64.src/M000022.html +22 -0
- data/doc/classes/C64.src/M000023.html +19 -0
- data/doc/classes/C64.src/M000024.html +19 -0
- data/doc/classes/C64BasicPrg.html +201 -0
- data/doc/classes/C64BasicPrg.src/M000035.html +20 -0
- data/doc/classes/C64BasicPrg.src/M000036.html +59 -0
- data/doc/classes/C64Prg.html +190 -0
- data/doc/classes/C64Prg.src/M000169.html +20 -0
- data/doc/classes/C64Prg.src/M000170.html +18 -0
- data/doc/classes/C64Prg.src/M000171.html +18 -0
- data/doc/classes/C64Prg.src/M000172.html +20 -0
- data/doc/classes/C64PrgText.html +139 -0
- data/doc/classes/C64PrgText.src/M000237.html +18 -0
- data/doc/classes/C64Seq.html +156 -0
- data/doc/classes/C64Seq.src/M000013.html +20 -0
- data/doc/classes/C64Seq.src/M000014.html +18 -0
- data/doc/classes/CPMFile.html +156 -0
- data/doc/classes/CPMFile.src/M000108.html +20 -0
- data/doc/classes/CPMFile.src/M000109.html +18 -0
- data/doc/classes/CbmDos.html +172 -0
- data/doc/classes/CbmDos.src/M000182.html +18 -0
- data/doc/classes/CbmDos.src/M000183.html +42 -0
- data/doc/classes/CbmFile.html +156 -0
- data/doc/classes/CbmFile.src/M000235.html +20 -0
- data/doc/classes/CbmFile.src/M000236.html +18 -0
- data/doc/classes/D64.html +247 -0
- data/doc/classes/D64.src/M000037.html +18 -0
- data/doc/classes/D64.src/M000038.html +18 -0
- data/doc/classes/D64.src/M000039.html +18 -0
- data/doc/classes/D64.src/M000040.html +22 -0
- data/doc/classes/D64.src/M000041.html +18 -0
- data/doc/classes/D64.src/M000042.html +21 -0
- data/doc/classes/D65.html +170 -0
- data/doc/classes/D65.src/M000049.html +22 -0
- data/doc/classes/D65.src/M000050.html +68 -0
- data/doc/classes/DumpUtilities.html +152 -0
- data/doc/classes/DumpUtilities.src/M000077.html +33 -0
- data/doc/classes/DumpUtilities.src/M000078.html +27 -0
- data/doc/classes/FileCache.html +210 -0
- data/doc/classes/FileCache.src/M000135.html +18 -0
- data/doc/classes/FileCache.src/M000136.html +20 -0
- data/doc/classes/FileCache.src/M000137.html +22 -0
- data/doc/classes/FileCache.src/M000138.html +32 -0
- data/doc/classes/FileCacheItem.html +152 -0
- data/doc/classes/FileCacheItem.src/M000165.html +18 -0
- data/doc/classes/FileCacheItem.src/M000166.html +18 -0
- data/doc/classes/FileContainer.html +146 -0
- data/doc/classes/FileContainer.src/M000232.html +26 -0
- data/doc/classes/FileSystem.html +252 -0
- data/doc/classes/FileSystem.src/M000069.html +18 -0
- data/doc/classes/FileSystem.src/M000070.html +18 -0
- data/doc/classes/FileSystem.src/M000071.html +18 -0
- data/doc/classes/FileSystem.src/M000072.html +18 -0
- data/doc/classes/FileSystem.src/M000073.html +18 -0
- data/doc/classes/FileSystem.src/M000074.html +18 -0
- data/doc/classes/FileSystem.src/M000075.html +20 -0
- data/doc/classes/FileSystem.src/M000076.html +25 -0
- data/doc/classes/FileSystemImage.html +430 -0
- data/doc/classes/FileSystemImage.src/M000215.html +19 -0
- data/doc/classes/FileSystemImage.src/M000216.html +41 -0
- data/doc/classes/FileSystemImage.src/M000217.html +27 -0
- data/doc/classes/FileSystemImage.src/M000218.html +18 -0
- data/doc/classes/FileSystemImage.src/M000219.html +18 -0
- data/doc/classes/FileSystemImage.src/M000220.html +18 -0
- data/doc/classes/FileSystemImage.src/M000221.html +22 -0
- data/doc/classes/FileSystemImage.src/M000222.html +19 -0
- data/doc/classes/FileSystemImage.src/M000223.html +18 -0
- data/doc/classes/FileSystemImage.src/M000224.html +18 -0
- data/doc/classes/FileSystemImage.src/M000225.html +18 -0
- data/doc/classes/FileSystemImage.src/M000226.html +18 -0
- data/doc/classes/FileSystemImage.src/M000227.html +20 -0
- data/doc/classes/FileSystemImage.src/M000228.html +22 -0
- data/doc/classes/FileSystemImage.src/M000229.html +22 -0
- data/doc/classes/FileSystemImage.src/M000230.html +18 -0
- data/doc/classes/FileSystemImage.src/M000231.html +23 -0
- data/doc/classes/G64.html +257 -0
- data/doc/classes/G64.src/M000093.html +30 -0
- data/doc/classes/G64.src/M000094.html +18 -0
- data/doc/classes/G64.src/M000095.html +18 -0
- data/doc/classes/G64.src/M000096.html +17 -0
- data/doc/classes/G64.src/M000097.html +18 -0
- data/doc/classes/G64.src/M000098.html +18 -0
- data/doc/classes/G64.src/M000099.html +21 -0
- data/doc/classes/GenericFile.html +157 -0
- data/doc/classes/GenericFile.src/M000167.html +20 -0
- data/doc/classes/GenericFile.src/M000168.html +18 -0
- data/doc/classes/HostSystem.html +225 -0
- data/doc/classes/HostSystem.src/M000025.html +22 -0
- data/doc/classes/HostSystem.src/M000026.html +18 -0
- data/doc/classes/HostSystem.src/M000027.html +18 -0
- data/doc/classes/HostSystem.src/M000028.html +22 -0
- data/doc/classes/HostSystem.src/M000029.html +33 -0
- data/doc/classes/HostSystem.src/M000030.html +18 -0
- data/doc/classes/ImageFormat.html +415 -0
- data/doc/classes/ImageFormat.src/M000144.html +18 -0
- data/doc/classes/ImageFormat.src/M000145.html +18 -0
- data/doc/classes/ImageFormat.src/M000146.html +18 -0
- data/doc/classes/ImageFormat.src/M000147.html +18 -0
- data/doc/classes/ImageFormat.src/M000148.html +18 -0
- data/doc/classes/ImageFormat.src/M000149.html +22 -0
- data/doc/classes/ImageFormat.src/M000150.html +19 -0
- data/doc/classes/ImageFormat.src/M000151.html +18 -0
- data/doc/classes/ImageFormat.src/M000152.html +18 -0
- data/doc/classes/ImageFormat.src/M000153.html +18 -0
- data/doc/classes/ImageFormat.src/M000154.html +18 -0
- data/doc/classes/ImageFormat.src/M000155.html +18 -0
- data/doc/classes/ImageFormat.src/M000156.html +18 -0
- data/doc/classes/ImageFormat.src/M000157.html +18 -0
- data/doc/classes/ImageFormat.src/M000158.html +20 -0
- data/doc/classes/ImageFormat.src/M000159.html +26 -0
- data/doc/classes/ImageFormat.src/M000160.html +18 -0
- data/doc/classes/ImageSniffing.html +152 -0
- data/doc/classes/ImageSniffing.src/M000051.html +57 -0
- data/doc/classes/ImageSniffing.src/M000052.html +131 -0
- data/doc/classes/IntegerBASIC.html +247 -0
- data/doc/classes/IntegerBASIC.src/M000206.html +20 -0
- data/doc/classes/IntegerBASIC.src/M000207.html +86 -0
- data/doc/classes/MBasic.html +182 -0
- data/doc/classes/MBasic.src/M000011.html +20 -0
- data/doc/classes/MBasic.src/M000012.html +22 -0
- data/doc/classes/NADOLDos.html +187 -0
- data/doc/classes/NADOLDos.src/M000180.html +18 -0
- data/doc/classes/NADOLDos.src/M000181.html +52 -0
- data/doc/classes/NADOLFile.html +157 -0
- data/doc/classes/NADOLFile.src/M000045.html +20 -0
- data/doc/classes/NADOLFile.src/M000046.html +18 -0
- data/doc/classes/NADOLTokens.html +170 -0
- data/doc/classes/NADOLTokens.src/M000018.html +41 -0
- data/doc/classes/NativeFileType.html +444 -0
- data/doc/classes/NativeFileType.src/M000110.html +22 -0
- data/doc/classes/NativeFileType.src/M000111.html +18 -0
- data/doc/classes/NativeFileType.src/M000112.html +18 -0
- data/doc/classes/NativeFileType.src/M000113.html +18 -0
- data/doc/classes/NativeFileType.src/M000114.html +18 -0
- data/doc/classes/NativeFileType.src/M000115.html +18 -0
- data/doc/classes/NativeFileType.src/M000116.html +18 -0
- data/doc/classes/NativeFileType.src/M000117.html +23 -0
- data/doc/classes/NativeFileType.src/M000118.html +18 -0
- data/doc/classes/NativeFileType.src/M000119.html +18 -0
- data/doc/classes/NativeFileType.src/M000120.html +24 -0
- data/doc/classes/NativeFileType.src/M000121.html +35 -0
- data/doc/classes/NativeFileType.src/M000122.html +24 -0
- data/doc/classes/NativeFileType.src/M000123.html +18 -0
- data/doc/classes/NativeFileType.src/M000124.html +18 -0
- data/doc/classes/NativeFileType.src/M000125.html +18 -0
- data/doc/classes/NativeFileType.src/M000126.html +20 -0
- data/doc/classes/NativeFileType.src/M000127.html +27 -0
- data/doc/classes/PNG/Canvas.html +273 -0
- data/doc/classes/PNG/Canvas.src/M000196.html +20 -0
- data/doc/classes/PNG/Canvas.src/M000197.html +20 -0
- data/doc/classes/PNG/Canvas.src/M000198.html +20 -0
- data/doc/classes/PNG/Canvas.src/M000199.html +22 -0
- data/doc/classes/PNG/Canvas.src/M000200.html +18 -0
- data/doc/classes/PNG/Canvas.src/M000201.html +73 -0
- data/doc/classes/PNG/Color.html +338 -0
- data/doc/classes/PNG/Color.src/M000189.html +18 -0
- data/doc/classes/PNG/Color.src/M000190.html +16 -0
- data/doc/classes/PNG/Color.src/M000191.html +16 -0
- data/doc/classes/PNG/Color.src/M000192.html +16 -0
- data/doc/classes/PNG/Color.src/M000193.html +16 -0
- data/doc/classes/PNG/Color.src/M000194.html +21 -0
- data/doc/classes/PNG/Color.src/M000195.html +18 -0
- data/doc/classes/PNG.html +229 -0
- data/doc/classes/PNG.src/M000185.html +18 -0
- data/doc/classes/PNG.src/M000186.html +21 -0
- data/doc/classes/PNG.src/M000187.html +26 -0
- data/doc/classes/PNG.src/M000188.html +26 -0
- data/doc/classes/PascalDos.html +203 -0
- data/doc/classes/PascalDos.src/M000132.html +18 -0
- data/doc/classes/PascalDos.src/M000133.html +21 -0
- data/doc/classes/PascalDos.src/M000134.html +62 -0
- data/doc/classes/PascalFile.html +169 -0
- data/doc/classes/PascalFile.src/M000173.html +20 -0
- data/doc/classes/PascalFile.src/M000174.html +18 -0
- data/doc/classes/ProDos.html +164 -0
- data/doc/classes/ProDos.src/M000102.html +18 -0
- data/doc/classes/ProDos.src/M000103.html +22 -0
- data/doc/classes/ProDosFile.html +187 -0
- data/doc/classes/ProDosFile.src/M000015.html +20 -0
- data/doc/classes/ProDosFile.src/M000016.html +18 -0
- data/doc/classes/ProDosFile.src/M000017.html +19 -0
- data/doc/classes/Proc.html +315 -0
- data/doc/classes/Proc.src/M000053.html +21 -0
- data/doc/classes/Proc.src/M000054.html +19 -0
- data/doc/classes/Proc.src/M000055.html +22 -0
- data/doc/classes/Proc.src/M000056.html +22 -0
- data/doc/classes/Proc.src/M000057.html +22 -0
- data/doc/classes/Proc.src/M000058.html +19 -0
- data/doc/classes/Proc.src/M000059.html +16 -0
- data/doc/classes/Proc.src/M000060.html +20 -0
- data/doc/classes/Proc.src/M000061.html +18 -0
- data/doc/classes/Proc.src/M000062.html +16 -0
- data/doc/classes/Proc.src/M000063.html +16 -0
- data/doc/classes/ProcSource.html +146 -0
- data/doc/classes/ProcSource.src/M000248.html +38 -0
- data/doc/classes/ProcSource.src/M000249.html +109 -0
- data/doc/classes/RDoc.html +135 -0
- data/doc/classes/RDoc.src/M000247.html +40 -0
- data/doc/classes/RawDisk.html +157 -0
- data/doc/classes/RawDisk.src/M000100.html +18 -0
- data/doc/classes/RawDisk.src/M000101.html +18 -0
- data/doc/classes/RipXplore.html +124 -0
- data/doc/classes/RipXploreLog.html +167 -0
- data/doc/classes/RipXploreLog.src/M000139.html +18 -0
- data/doc/classes/RipXploreLog.src/M000140.html +20 -0
- data/doc/classes/RipXploreLog.src/M000141.html +18 -0
- data/doc/classes/ScAsm.html +145 -0
- data/doc/classes/ScAsm.src/M000004.html +45 -0
- data/doc/classes/SubclassTracking.html +138 -0
- data/doc/classes/SubclassTracking.src/M000250.html +23 -0
- data/doc/classes/TestFileCache.html +137 -0
- data/doc/classes/TestFileCache.src/M000184.html +21 -0
- data/doc/classes/Trs80.html +157 -0
- data/doc/classes/Trs80.src/M000043.html +18 -0
- data/doc/classes/Trs80.src/M000044.html +18 -0
- data/doc/classes/Trs80Cmd.html +217 -0
- data/doc/classes/Trs80Cmd.src/M000104.html +19 -0
- data/doc/classes/Trs80Cmd.src/M000105.html +24 -0
- data/doc/classes/Trs80Cmd.src/M000106.html +20 -0
- data/doc/classes/Trs80Cmd.src/M000107.html +35 -0
- data/doc/classes/Trs80Jcl.html +156 -0
- data/doc/classes/Trs80Jcl.src/M000233.html +20 -0
- data/doc/classes/Trs80Jcl.src/M000234.html +18 -0
- data/doc/classes/Trs80Jv1Dsk.html +211 -0
- data/doc/classes/Trs80Jv1Dsk.src/M000064.html +18 -0
- data/doc/classes/Trs80Jv1Dsk.src/M000065.html +18 -0
- data/doc/classes/Trs80Jv1Dsk.src/M000066.html +18 -0
- data/doc/classes/Trs80Jv1Dsk.src/M000067.html +18 -0
- data/doc/classes/Trs80Jv1Dsk.src/M000068.html +19 -0
- data/doc/classes/Trs80LevelIIBasic.html +169 -0
- data/doc/classes/Trs80LevelIIBasic.src/M000079.html +20 -0
- data/doc/classes/Trs80LevelIIBasic.src/M000080.html +43 -0
- data/doc/classes/Trs80PascalSource.html +156 -0
- data/doc/classes/Trs80PascalSource.src/M000202.html +20 -0
- data/doc/classes/Trs80PascalSource.src/M000203.html +30 -0
- data/doc/classes/TrsDos.html +255 -0
- data/doc/classes/TrsDos.src/M000031.html +18 -0
- data/doc/classes/TrsDos.src/M000032.html +18 -0
- data/doc/classes/TrsDos.src/M000033.html +18 -0
- data/doc/classes/TrsDos.src/M000034.html +62 -0
- data/doc/created.rid +1 -0
- data/doc/files/bin/ripxplore_rb.html +150 -0
- data/doc/files/lib/DumpUtilities_rb.html +101 -0
- data/doc/files/lib/FileCache_rb.html +110 -0
- data/doc/files/lib/FileContainer_rb.html +101 -0
- data/doc/files/lib/FileSystemImage_rb.html +109 -0
- data/doc/files/lib/FileSystem_rb.html +111 -0
- data/doc/files/lib/HostSystem_rb.html +110 -0
- data/doc/files/lib/ImageFormat_rb.html +111 -0
- data/doc/files/lib/NativeFileType_rb.html +111 -0
- data/doc/files/lib/PatchedPNG_rb.html +116 -0
- data/doc/files/lib/RipXploreLog_rb.html +108 -0
- data/doc/files/lib/RipXplore_rb.html +114 -0
- data/doc/files/lib/SubclassTracking_rb.html +108 -0
- data/doc/files/lib/disassemblers/D65_rb.html +101 -0
- data/doc/files/lib/file_systems/AppleCPM_rb.html +108 -0
- data/doc/files/lib/file_systems/AppleDos_rb.html +108 -0
- data/doc/files/lib/file_systems/AtariDos_rb.html +108 -0
- data/doc/files/lib/file_systems/CbmDos_rb.html +108 -0
- data/doc/files/lib/file_systems/NADOLDos_rb.html +108 -0
- data/doc/files/lib/file_systems/PascalDos_rb.html +108 -0
- data/doc/files/lib/file_systems/ProDos_rb.html +108 -0
- data/doc/files/lib/file_systems/RawDisk_rb.html +108 -0
- data/doc/files/lib/file_systems/TrsDos_rb.html +108 -0
- data/doc/files/lib/host_systems/Apple2_rb.html +109 -0
- data/doc/files/lib/host_systems/Atari800_rb.html +109 -0
- data/doc/files/lib/host_systems/C64_rb.html +109 -0
- data/doc/files/lib/host_systems/Trs80_rb.html +108 -0
- data/doc/files/lib/image_formats/A2Dsk_rb.html +108 -0
- data/doc/files/lib/image_formats/Atr_rb.html +108 -0
- data/doc/files/lib/image_formats/D64_rb.html +108 -0
- data/doc/files/lib/image_formats/G64_rb.html +108 -0
- data/doc/files/lib/image_formats/Trs80Jv1Dsk_rb.html +108 -0
- data/doc/files/lib/native_file_types/apple2/AppleBinary_rb.html +108 -0
- data/doc/files/lib/native_file_types/apple2/AppleHiResPic_rb.html +108 -0
- data/doc/files/lib/native_file_types/apple2/AppleText_rb.html +108 -0
- data/doc/files/lib/native_file_types/apple2/AppleWorksWP_rb.html +108 -0
- data/doc/files/lib/native_file_types/apple2/Applesoft_rb.html +108 -0
- data/doc/files/lib/native_file_types/apple2/IntegerBASIC_rb.html +108 -0
- data/doc/files/lib/native_file_types/apple2/NADOLFile_rb.html +108 -0
- data/doc/files/lib/native_file_types/apple2/PascalFile_rb.html +108 -0
- data/doc/files/lib/native_file_types/apple2/ProDosFile_rb.html +108 -0
- data/doc/files/lib/native_file_types/apple2/ScAsm_rb.html +101 -0
- data/doc/files/lib/native_file_types/atari800/AtariBasic_rb.html +108 -0
- data/doc/files/lib/native_file_types/atari800/AtariBinary_rb.html +108 -0
- data/doc/files/lib/native_file_types/atari800/AtariText_rb.html +108 -0
- data/doc/files/lib/native_file_types/c64/C64BasicPrg_rb.html +109 -0
- data/doc/files/lib/native_file_types/c64/C64PrgText_rb.html +109 -0
- data/doc/files/lib/native_file_types/c64/C64Prg_rb.html +109 -0
- data/doc/files/lib/native_file_types/c64/C64Seq_rb.html +109 -0
- data/doc/files/lib/native_file_types/c64/CbmFile_rb.html +108 -0
- data/doc/files/lib/native_file_types/cpm/CPMFile_rb.html +108 -0
- data/doc/files/lib/native_file_types/cpm/MBasic_rb.html +108 -0
- data/doc/files/lib/native_file_types/generic/GenericFile_rb.html +101 -0
- data/doc/files/lib/native_file_types/trs80/Trs80Cmd_rb.html +108 -0
- data/doc/files/lib/native_file_types/trs80/Trs80Jcl_rb.html +108 -0
- data/doc/files/lib/native_file_types/trs80/Trs80LevelIIBasic_rb.html +108 -0
- data/doc/files/lib/native_file_types/trs80/Trs80PascalSource_rb.html +108 -0
- data/doc/files/lib/proc_source_rb.html +182 -0
- data/doc/files/lib/proc_source_rb.src/M000001.html +24 -0
- data/doc/files/lib/rdoc_patch_rb.html +108 -0
- data/doc/files/test/tc_file_cache_rb.html +108 -0
- data/doc/files/test/tc_image_sniffing_rb.html +108 -0
- data/doc/files/test/testhelper_rb.html +129 -0
- data/doc/files/test/ts_test_all_rb.html +108 -0
- data/doc/fr_class_index.html +26 -0
- data/doc/fr_file_index.html +27 -0
- data/doc/fr_method_index.html +26 -0
- data/doc/index.html +24 -0
- data/doc/rdoc-style.css +208 -0
- data/lib/DumpUtilities.rb +34 -0
- data/lib/FileCache.rb +84 -0
- data/lib/FileContainer.rb +45 -0
- data/lib/FileSystem.rb +83 -0
- data/lib/FileSystemImage.rb +176 -0
- data/lib/HostSystem.rb +84 -0
- data/lib/ImageFormat.rb +127 -0
- data/lib/NativeFileType.rb +168 -0
- data/lib/PatchedPNG.rb +303 -0
- data/lib/RipXplore.rb +77 -0
- data/lib/RipXploreLog.rb +63 -0
- data/lib/SubclassTracking.rb +11 -0
- data/lib/disassemblers/D65.rb +181 -0
- data/lib/file_systems/AppleCPM.rb +123 -0
- data/lib/file_systems/AppleDos.rb +211 -0
- data/lib/file_systems/AtariDos.rb +80 -0
- data/lib/file_systems/CbmDos.rb +75 -0
- data/lib/file_systems/NADOLDos.rb +110 -0
- data/lib/file_systems/PascalDos.rb +131 -0
- data/lib/file_systems/ProDos.rb +155 -0
- data/lib/file_systems/RawDisk.rb +45 -0
- data/lib/file_systems/TrsDos.rb +148 -0
- data/lib/host_systems/Apple2.rb +57 -0
- data/lib/host_systems/Atari800.rb +57 -0
- data/lib/host_systems/C64.rb +82 -0
- data/lib/host_systems/Trs80.rb +48 -0
- data/lib/host_systems/a2_symbols.yaml +199 -0
- data/lib/host_systems/atari_800_symbols.yaml +496 -0
- data/lib/host_systems/c64_symbols.yaml +636 -0
- data/lib/image_formats/A2Dsk.rb +77 -0
- data/lib/image_formats/Atr.rb +83 -0
- data/lib/image_formats/D64.rb +87 -0
- data/lib/image_formats/G64.rb +174 -0
- data/lib/image_formats/Trs80Jv1Dsk.rb +65 -0
- data/lib/native_file_types/apple2/AppleBinary.rb +51 -0
- data/lib/native_file_types/apple2/AppleHiResPic.rb +166 -0
- data/lib/native_file_types/apple2/AppleText.rb +43 -0
- data/lib/native_file_types/apple2/AppleWorksWP.rb +68 -0
- data/lib/native_file_types/apple2/Applesoft.rb +115 -0
- data/lib/native_file_types/apple2/IntegerBASIC.rb +217 -0
- data/lib/native_file_types/apple2/NADOLFile.rb +205 -0
- data/lib/native_file_types/apple2/PascalFile.rb +48 -0
- data/lib/native_file_types/apple2/ProDosFile.rb +112 -0
- data/lib/native_file_types/apple2/ScAsm.rb +110 -0
- data/lib/native_file_types/atari800/AtariBasic.rb +396 -0
- data/lib/native_file_types/atari800/AtariBinary.rb +53 -0
- data/lib/native_file_types/atari800/AtariText.rb +49 -0
- data/lib/native_file_types/c64/C64BasicPrg.rb +333 -0
- data/lib/native_file_types/c64/C64Prg.rb +57 -0
- data/lib/native_file_types/c64/C64PrgText.rb +45 -0
- data/lib/native_file_types/c64/C64Seq.rb +47 -0
- data/lib/native_file_types/c64/CbmFile.rb +41 -0
- data/lib/native_file_types/cpm/CPMFile.rb +40 -0
- data/lib/native_file_types/cpm/MBasic.rb +311 -0
- data/lib/native_file_types/generic/GenericFile.rb +43 -0
- data/lib/native_file_types/trs80/Trs80Cmd.rb +130 -0
- data/lib/native_file_types/trs80/Trs80Jcl.rb +43 -0
- data/lib/native_file_types/trs80/Trs80LevelIIBasic.rb +201 -0
- data/lib/native_file_types/trs80/Trs80PascalSource.rb +58 -0
- data/lib/proc_source.rb +238 -0
- data/lib/rdoc_patch.rb +32 -0
- data/test/tc_file_cache.rb +11 -0
- data/test/tc_image_sniffing.rb +165 -0
- data/test/testhelper.rb +14 -0
- data/test/testlog.txt +30755 -0
- data/test/ts_test_all.rb +3 -0
- metadata +601 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
$:.unshift(File.dirname(__FILE__)) unless
|
|
2
|
+
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
|
3
|
+
|
|
4
|
+
$:.unshift(File.dirname(__FILE__+"\\..")) unless
|
|
5
|
+
$:.include?(File.dirname(__FILE__+"\\..")) || $:.include?(File.expand_path(File.dirname(__FILE__+"\\..")))
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
require 'FileSystem'
|
|
9
|
+
#TRSDOS (and compatables, e.g. LDOS, NEWDOS)
|
|
10
|
+
#Reference - http://www.classic-computers.org.nz/system-80/software-manuals/manuals-NewDOS-80_v2.0_manual.pdf pages 99-101
|
|
11
|
+
#sectors 2-9 of the directory track (17) contain File Primary Directory Entries, which are 32 bytes made up of:
|
|
12
|
+
# byte $00:
|
|
13
|
+
# bit 7 : 0 = FPDE, 1 = FXDE
|
|
14
|
+
# bit 6 : 1 means a SYSTEM file
|
|
15
|
+
# bit 5 : undefined
|
|
16
|
+
# bit 4 : 1 = in use, 0 = entry empty
|
|
17
|
+
# bit 3 : 1 = file is hidden
|
|
18
|
+
# bit 2 - 0 : access level code
|
|
19
|
+
# byte $01:
|
|
20
|
+
# bit 7 : 0 = file may be allocated more space when necessary
|
|
21
|
+
# bit 6 : 0 = any excess space past the EOF may be deallocated
|
|
22
|
+
# bit 5 : 1 = at least one sector of the file has been written to since this bit was last reset
|
|
23
|
+
# bit 4 - 0 : undefined
|
|
24
|
+
# byte $02: undefined
|
|
25
|
+
# byte $03: low order byte of the file's EOF (position of the EOF within the EOF sector)
|
|
26
|
+
# byte $04: logical record length
|
|
27
|
+
# byte $05-$0C : file name (right padded with blanks)
|
|
28
|
+
# byte $0D-$0F: file extension (right padded with blanks)
|
|
29
|
+
# byte $10-$11 : encode of the upate password
|
|
30
|
+
# byte $12-$13 : encode of the access password
|
|
31
|
+
# byte $14 : middle order byte of the EOF
|
|
32
|
+
# byte $15 : high order byte of the EOF
|
|
33
|
+
# byte $16 - $1F : 5 pairs of extent elements, each pair made up of:
|
|
34
|
+
# byte $00 : if $FF, then end of extent elements for this file. if $FE, then next byte contains the DEC for the first (or next) FXDE assigned to this file.
|
|
35
|
+
# any other value ($00-$FD) equals the number of the diskette's lump in which the area starts.
|
|
36
|
+
# byte $01 : bits 7-5 = number of granules (0-7) from the start of the lump to the start of the area
|
|
37
|
+
# : bits 4- 0 = number less one of contiguous granules assigned to this area.
|
|
38
|
+
#
|
|
39
|
+
# when a file has more than 4 space areas assigned, the additional extent elements are contained in FXDE's assigned to the file.
|
|
40
|
+
# the format of a FXDE is:
|
|
41
|
+
# byte $00: bits 7 and 4 are both 1 to indicate this entry is a FXDE, all other bits are 0
|
|
42
|
+
# bute $01: the DEC for the previous FPDE or FXDE of this file. This is a backward chain. the previous entry's byte $1E will be $FD, and it's byte $1F will contain the DEC of this FXDE
|
|
43
|
+
#
|
|
44
|
+
# the EOF value (bytes $03, $14, $15) is decoded as:
|
|
45
|
+
# if low order byte ($03) = 0, then EOF is in RBA format
|
|
46
|
+
# if low order byte ($03) != 0, then EOF in the FPDE is equal to the RBA value plus 256 (the value in the high two bytes is incremented by 1)
|
|
47
|
+
#
|
|
48
|
+
# RBA = Relative Byte Address : a method of addressing where addressing starts at 0 rather than 1
|
|
49
|
+
#
|
|
50
|
+
# DEC = Directory Entry Code - a one byte code used to specify a particular FDE. Format is rrrssss, where sssss+2 = the relative
|
|
51
|
+
# number within the directory of the sector containing the FDE, and rrr times $20 = the relative byte address within the sector
|
|
52
|
+
# of the FDE.
|
|
53
|
+
class TrsDos<FileSystem
|
|
54
|
+
|
|
55
|
+
def self.host_system
|
|
56
|
+
Trs80
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
#standard TRSDOS has directory on track 17
|
|
60
|
+
def self.directory_track
|
|
61
|
+
0x11
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
#for now, only SSSD images are supported
|
|
65
|
+
def self.sectors_per_granule(file_system_image)
|
|
66
|
+
5
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
is_valid_file_system_if lambda {
|
|
70
|
+
file_system_image.image_format.instance_of?(Trs80Jv1Dsk)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
FDE_SIZE=0x20
|
|
74
|
+
|
|
75
|
+
def self.files(file_system_image)
|
|
76
|
+
files=FileContainer.new
|
|
77
|
+
granule_allocation_table=file_system_image.get_sector(directory_track,0)
|
|
78
|
+
return files if granule_allocation_table.nil?
|
|
79
|
+
file_system_image.volume_name=granule_allocation_table[0xd0,8].unpack("A*")
|
|
80
|
+
(file_system_image.sectors_in_track(directory_track)-[0,1]).each do |sector_no|
|
|
81
|
+
fde_sector=file_system_image.get_sector(directory_track,sector_no)
|
|
82
|
+
(fde_sector.length/FDE_SIZE).times do |fde_number|
|
|
83
|
+
fde=fde_sector[fde_number*FDE_SIZE,FDE_SIZE]
|
|
84
|
+
attributes=fde[0x00]
|
|
85
|
+
|
|
86
|
+
#for a valid FPDE, bit 7 is 0 and bite 4 is 1
|
|
87
|
+
is_fpde = ((attributes & 0b10010000)==(0b00010000))
|
|
88
|
+
next if !is_fpde
|
|
89
|
+
eof_low=fde[0x03]
|
|
90
|
+
filename_base=fde[0x05,8].unpack("A8")
|
|
91
|
+
filename_extension=fde[0x0D,3].unpack("A8")
|
|
92
|
+
filename="#{filename_base}/#{filename_extension}"
|
|
93
|
+
contents=""
|
|
94
|
+
eof_mid=fde[0x14]
|
|
95
|
+
eof_high=fde[0x15]
|
|
96
|
+
file_length=(eof_high<<16)+(eof_mid<<8)+eof_low
|
|
97
|
+
if (eof_low>0) then
|
|
98
|
+
file_length-=0x100
|
|
99
|
+
end
|
|
100
|
+
# byte $16 - $1F : 5 pairs of extent elements, each pair made up of:
|
|
101
|
+
# byte $00 : if $FF, then end of extent elements for this file. if $FE, then next byte contains the DEC for the first (or next) FXDE assigned to this file.
|
|
102
|
+
# any other value ($00-$FD) equals the number of the diskette's lump in which the area starts.
|
|
103
|
+
# byte $01 : bits 7-5 = number of granules (0-7) from the start of the lump to the start of the area
|
|
104
|
+
# : bits 4- 0 = number less one of contiguous granules assigned to this area.
|
|
105
|
+
5.times do |extent_no|
|
|
106
|
+
extent=fde[(extent_no*2)+0x16,2]
|
|
107
|
+
break if extent[0]==0xFF
|
|
108
|
+
raise "FXDE's not implemented yet" if extent[0]==0xFE
|
|
109
|
+
track_no=extent[0]
|
|
110
|
+
granule_offset=extent[1]>>5
|
|
111
|
+
number_of_granules=1+(extent[1] & 0b00011111)
|
|
112
|
+
start_sector=granule_offset*sectors_per_granule(file_system_image)
|
|
113
|
+
number_of_sectors=number_of_granules*sectors_per_granule(file_system_image)
|
|
114
|
+
number_of_sectors.times {|i| contents<<file_system_image.get_sector(track_no,start_sector+i)}
|
|
115
|
+
end
|
|
116
|
+
contents=contents[0,file_length]
|
|
117
|
+
files<<NativeFileType.best_fit(file_system_image,filename,contents,filename_extension)
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
files
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
# == Author
|
|
126
|
+
# Jonno Downes (jonno@jamtronix.com)
|
|
127
|
+
#
|
|
128
|
+
# == Copyright
|
|
129
|
+
# Copyright (c) 2008 Jonno Downes (jonno@jamtronix.com)
|
|
130
|
+
#
|
|
131
|
+
#Permission is hereby granted, free of charge, to any person obtaining
|
|
132
|
+
#a copy of this software and associated documentation files (the
|
|
133
|
+
#"Software"), to deal in the Software without restriction, including
|
|
134
|
+
#without limitation the rights to use, copy, modify, merge, publish,
|
|
135
|
+
#distribute, sublicense, and/or sell copies of the Software, and to
|
|
136
|
+
#permit persons to whom the Software is furnished to do so, subject to
|
|
137
|
+
#the following conditions:
|
|
138
|
+
|
|
139
|
+
# The above copyright notice and this permission notice shall be
|
|
140
|
+
# included in all copies or substantial portions of the Software.
|
|
141
|
+
|
|
142
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
143
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
144
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
145
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
146
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
147
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
148
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
$:.unshift(File.dirname(__FILE__)) unless
|
|
2
|
+
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
|
3
|
+
|
|
4
|
+
$:.unshift(File.dirname(__FILE__+"\\..")) unless
|
|
5
|
+
$:.include?(File.dirname(__FILE__+"\\..")) || $:.include?(File.expand_path(File.dirname(__FILE__+"\\..")))
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
require 'HostSystem'
|
|
9
|
+
#
|
|
10
|
+
#
|
|
11
|
+
class Apple2<HostSystem
|
|
12
|
+
|
|
13
|
+
def Apple2.to_ascii(byte)
|
|
14
|
+
(byte%128).chr
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
#Apple 2 disks start at track 0
|
|
18
|
+
def Apple2.start_track
|
|
19
|
+
0
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
@@annotations=nil
|
|
23
|
+
def Apple2.annotations
|
|
24
|
+
@@annotations=YAML::load(File.open(File.dirname(__FILE__)+"/a2_symbols.yaml")) if @@annotations.nil?
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def Apple2.disassemble(buffer,start_address=0)
|
|
28
|
+
require 'D65'
|
|
29
|
+
D65.disassemble(buffer,start_address,annotations)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
# == Author
|
|
35
|
+
# Jonno Downes (jonno@jamtronix.com)
|
|
36
|
+
#
|
|
37
|
+
# == Copyright
|
|
38
|
+
# Copyright (c) 2008 Jonno Downes (jonno@jamtronix.com)
|
|
39
|
+
#
|
|
40
|
+
#Permission is hereby granted, free of charge, to any person obtaining
|
|
41
|
+
#a copy of this software and associated documentation files (the
|
|
42
|
+
#"Software"), to deal in the Software without restriction, including
|
|
43
|
+
#without limitation the rights to use, copy, modify, merge, publish,
|
|
44
|
+
#distribute, sublicense, and/or sell copies of the Software, and to
|
|
45
|
+
#permit persons to whom the Software is furnished to do so, subject to
|
|
46
|
+
#the following conditions:
|
|
47
|
+
|
|
48
|
+
# The above copyright notice and this permission notice shall be
|
|
49
|
+
# included in all copies or substantial portions of the Software.
|
|
50
|
+
|
|
51
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
52
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
53
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
54
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
55
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
56
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
57
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
$:.unshift(File.dirname(__FILE__)) unless
|
|
2
|
+
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
|
3
|
+
|
|
4
|
+
$:.unshift(File.dirname(__FILE__+"\\..")) unless
|
|
5
|
+
$:.include?(File.dirname(__FILE__+"\\..")) || $:.include?(File.expand_path(File.dirname(__FILE__+"\\..")))
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
require 'HostSystem'
|
|
9
|
+
#
|
|
10
|
+
#
|
|
11
|
+
class Atari800<HostSystem
|
|
12
|
+
|
|
13
|
+
def self.to_ascii(b)
|
|
14
|
+
if b==0x9b then
|
|
15
|
+
"\n"
|
|
16
|
+
else
|
|
17
|
+
b.chr
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
@@annotations=nil
|
|
23
|
+
def self.annotations
|
|
24
|
+
@@annotations=YAML::load(File.open(File.dirname(__FILE__)+"/atari_800_symbols.yaml")) if @@annotations.nil?
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.disassemble(buffer,start_address=0)
|
|
28
|
+
require 'D65'
|
|
29
|
+
D65.disassemble(buffer,start_address,annotations)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
# == Author
|
|
35
|
+
# Jonno Downes (jonno@jamtronix.com)
|
|
36
|
+
#
|
|
37
|
+
# == Copyright
|
|
38
|
+
# Copyright (c) 2008 Jonno Downes (jonno@jamtronix.com)
|
|
39
|
+
#
|
|
40
|
+
#Permission is hereby granted, free of charge, to any person obtaining
|
|
41
|
+
#a copy of this software and associated documentation files (the
|
|
42
|
+
#"Software"), to deal in the Software without restriction, including
|
|
43
|
+
#without limitation the rights to use, copy, modify, merge, publish,
|
|
44
|
+
#distribute, sublicense, and/or sell copies of the Software, and to
|
|
45
|
+
#permit persons to whom the Software is furnished to do so, subject to
|
|
46
|
+
#the following conditions:
|
|
47
|
+
|
|
48
|
+
# The above copyright notice and this permission notice shall be
|
|
49
|
+
# included in all copies or substantial portions of the Software.
|
|
50
|
+
|
|
51
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
52
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
53
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
54
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
55
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
56
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
57
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
$:.unshift(File.dirname(__FILE__)) unless
|
|
2
|
+
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
|
3
|
+
|
|
4
|
+
$:.unshift(File.dirname(__FILE__+"\\..")) unless
|
|
5
|
+
$:.include?(File.dirname(__FILE__+"\\..")) || $:.include?(File.expand_path(File.dirname(__FILE__+"\\..")))
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
require 'HostSystem'
|
|
9
|
+
#
|
|
10
|
+
#
|
|
11
|
+
class C64<HostSystem
|
|
12
|
+
|
|
13
|
+
#C64 disks start at track # 1
|
|
14
|
+
def C64.start_track
|
|
15
|
+
1
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
#convert PETSCII to ASCII
|
|
19
|
+
#algorithm taken from VICE http://www.viceteam.org/
|
|
20
|
+
def C64.to_ascii(b)
|
|
21
|
+
if (b==0xa) || (b==0x0d)
|
|
22
|
+
return "\n"
|
|
23
|
+
elsif (b==0x40) || (b==0x60)
|
|
24
|
+
return b.chr
|
|
25
|
+
elsif (b==0xA0) || (b==0xE0) #shifted space
|
|
26
|
+
return " "
|
|
27
|
+
else
|
|
28
|
+
case (b & 0XE0)
|
|
29
|
+
when 0x40,0x60 then return (b^0x20).chr
|
|
30
|
+
when 0xc0 then return (b^0x80).chr
|
|
31
|
+
else
|
|
32
|
+
return (b.chr)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def C64.s_to_ascii(s)
|
|
38
|
+
r=""
|
|
39
|
+
s.each_byte do |b|
|
|
40
|
+
r+=to_ascii(b)
|
|
41
|
+
end
|
|
42
|
+
r
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
@@symbols=nil
|
|
46
|
+
def C64.symbols
|
|
47
|
+
@@symbols=YAML::load(File.open(File.dirname(__FILE__)+"/c64_symbols.yaml")) if @@symbols.nil?
|
|
48
|
+
@@symbols
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def C64.disassemble(buffer,start_address=0)
|
|
52
|
+
require 'D65'
|
|
53
|
+
D65.disassemble(buffer,start_address,symbols)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
# == Author
|
|
60
|
+
# Jonno Downes (jonno@jamtronix.com)
|
|
61
|
+
#
|
|
62
|
+
# == Copyright
|
|
63
|
+
# Copyright (c) 2008 Jonno Downes (jonno@jamtronix.com)
|
|
64
|
+
#
|
|
65
|
+
#Permission is hereby granted, free of charge, to any person obtaining
|
|
66
|
+
#a copy of this software and associated documentation files (the
|
|
67
|
+
#"Software"), to deal in the Software without restriction, including
|
|
68
|
+
#without limitation the rights to use, copy, modify, merge, publish,
|
|
69
|
+
#distribute, sublicense, and/or sell copies of the Software, and to
|
|
70
|
+
#permit persons to whom the Software is furnished to do so, subject to
|
|
71
|
+
#the following conditions:
|
|
72
|
+
|
|
73
|
+
# The above copyright notice and this permission notice shall be
|
|
74
|
+
# included in all copies or substantial portions of the Software.
|
|
75
|
+
|
|
76
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
77
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
78
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
79
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
80
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
81
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
82
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
$:.unshift(File.dirname(__FILE__)) unless
|
|
2
|
+
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
|
3
|
+
|
|
4
|
+
$:.unshift(File.dirname(__FILE__+"\\..")) unless
|
|
5
|
+
$:.include?(File.dirname(__FILE__+"\\..")) || $:.include?(File.expand_path(File.dirname(__FILE__+"\\..")))
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
require 'HostSystem'
|
|
9
|
+
|
|
10
|
+
#
|
|
11
|
+
class Trs80<HostSystem
|
|
12
|
+
|
|
13
|
+
#C64 disks start at track # 1
|
|
14
|
+
def Trs80.start_track
|
|
15
|
+
0
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def Trs80.to_ascii(b)
|
|
19
|
+
b.chr
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# == Author
|
|
26
|
+
# Jonno Downes (jonno@jamtronix.com)
|
|
27
|
+
#
|
|
28
|
+
# == Copyright
|
|
29
|
+
# Copyright (c) 2008 Jonno Downes (jonno@jamtronix.com)
|
|
30
|
+
#
|
|
31
|
+
#Permission is hereby granted, free of charge, to any person obtaining
|
|
32
|
+
#a copy of this software and associated documentation files (the
|
|
33
|
+
#"Software"), to deal in the Software without restriction, including
|
|
34
|
+
#without limitation the rights to use, copy, modify, merge, publish,
|
|
35
|
+
#distribute, sublicense, and/or sell copies of the Software, and to
|
|
36
|
+
#permit persons to whom the Software is furnished to do so, subject to
|
|
37
|
+
#the following conditions:
|
|
38
|
+
|
|
39
|
+
# The above copyright notice and this permission notice shall be
|
|
40
|
+
# included in all copies or substantial portions of the Software.
|
|
41
|
+
|
|
42
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
43
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
44
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
45
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
46
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
47
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
48
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
---
|
|
2
|
+
0x20: WNDLFT - Text window left-edge (0-39)
|
|
3
|
+
0x21: WNDWDTH - Text window width (1-40)
|
|
4
|
+
0x22: WNDTOP -Text window top-edge (0-23)
|
|
5
|
+
0x23: WNDBTM - Text window bottom (1-24)
|
|
6
|
+
0x24: CH - Horizontal cursor-position (0-39)
|
|
7
|
+
0x25: CV - Vertical cursor-position (0-23)
|
|
8
|
+
0x26: GBASL - low byte of screen address of left end point of line
|
|
9
|
+
0x27: GBASH - high byte of screen address of left end point of line
|
|
10
|
+
0x28: BASL - low byte of left end char position of current line
|
|
11
|
+
0x29: BASH - high byte of left end char position of current line
|
|
12
|
+
0x2B: Boot slot * $10 (after boot only)
|
|
13
|
+
0x2C: H2 - Lo-res line end-point
|
|
14
|
+
0x2E: MASK / CHKSUM
|
|
15
|
+
0x2F: LASTIN - last byte read from cassette
|
|
16
|
+
0x30: COLOR - Lo-res COLOR * $11
|
|
17
|
+
0x32: INVFLAG - Text output format [$3F=INVERSE $FF=NORMAL $7F=FLASH]
|
|
18
|
+
0x33: PROMPT - Prompt-character used by GETLN
|
|
19
|
+
0x34: YSAV
|
|
20
|
+
0x35: YSAV1
|
|
21
|
+
0x36: CSWL - low byte of stdout routine
|
|
22
|
+
0x37: CSWH - high byte of stdout routine
|
|
23
|
+
0x38: KSWL - low byte of stdin routine
|
|
24
|
+
0x39: KSWH - high byte of stdin routine
|
|
25
|
+
0x3A: PCL - saved program counter (low byte)
|
|
26
|
+
0x3B: PCH - saved program counter (high byte)
|
|
27
|
+
0x45: ACC - saved A
|
|
28
|
+
0x46: XREG - saved X
|
|
29
|
+
0x47: YREG - saved Y
|
|
30
|
+
0x48: STATUS - saved STATUS register
|
|
31
|
+
0x49: SPNT - saved stack pointer
|
|
32
|
+
0x4A: LOMEM address (INT) (low byte)
|
|
33
|
+
0x4B: LOMEM address (INT) (high byte)
|
|
34
|
+
0x4C: HIMEM address (INT) (low byte)
|
|
35
|
+
0x4D: HIMEM address (INT) (high byte)
|
|
36
|
+
0x4E: Random-Number Field (low byte)
|
|
37
|
+
0x4F: Random-Number Field (high byte)
|
|
38
|
+
0x67: LOMEM - Start of Applesoft program (low byte)
|
|
39
|
+
0x68: LOMEM - Start of Applesoft program (high byte)
|
|
40
|
+
0x69: HIMEM - Start of varible space & end of Applesoft program (low byte)
|
|
41
|
+
0x6A: HIMEM - Start of varible space & end of Applesoft program (high byte)
|
|
42
|
+
0x6B: Start of array space (FP) (low byte)
|
|
43
|
+
0x6C: Start of array space (FP) (high byte)
|
|
44
|
+
0xCA: Start of Program Address (INT) (low byte)
|
|
45
|
+
0xCB: Start of Program Address (INT) (high byte)
|
|
46
|
+
0xCC: End of Varible Storage (INT) (low byte)
|
|
47
|
+
0xCD: End of Varible Storage (INT) (high byte)
|
|
48
|
+
0xD6: RUN Flag (set to $FF turns Applesoft into run only.)
|
|
49
|
+
0xD8: ONERR Flag (set to $00 cancels ONERR)
|
|
50
|
+
0xDA: "Line# of ONERR Error (low byte)"
|
|
51
|
+
0xDB: "Line# of ONERR Error (high byte)"
|
|
52
|
+
0xDE: ONERR Error Codes
|
|
53
|
+
0xE0: X Coordinate of last HPLOT (0-279) (low byte)
|
|
54
|
+
0xE1: X Coordinate of last HPLOT (0-279) (high byte)
|
|
55
|
+
0xE2: Y Coordinate of last HPLOT (0-191)
|
|
56
|
+
0xE4: HCOLOR codes:$00=0 $2A=1 $85=2 $7F=3 $80=4 $AA=5 $D5=6 $FF=6
|
|
57
|
+
0xE6: "Hi res plotting page (32=page 1, 64=page 2, 96=page 3)"
|
|
58
|
+
0xE7: SCALE (NOTE:SCALE=0 is equivalent to a SCALE of $FF.)
|
|
59
|
+
0xE8: Shape table start address. (low byte)
|
|
60
|
+
0xE9: Shape table start address. (high byte)
|
|
61
|
+
0xEA: Hi-Res Collision-Check
|
|
62
|
+
0xF1: SPEED (NOTE:PEEK(241) is 256 minus the current SPEED.)
|
|
63
|
+
0xF3: FLASH Mask
|
|
64
|
+
0xF9: ROT (rotation) value
|
|
65
|
+
0x3F0: BRK handler vector (low byte)
|
|
66
|
+
0x3F1: BRK handler vector (high byte)
|
|
67
|
+
0x3F2: RESET handler vector (low byte)
|
|
68
|
+
0x3F3: RESET handler vector (high byte)
|
|
69
|
+
0x3F4: "Powerup indicator (if not == EOR of #$A5 and $3F3 then RESET leads to cold-start)"
|
|
70
|
+
0x3F5: Applesoft & vector handler - byte 1
|
|
71
|
+
0x3F6: Applesoft & vector handler - byte 2
|
|
72
|
+
0x3F7: Applesoft & vector handler - byte 3
|
|
73
|
+
0x3F8: Control-y handler - byte 1
|
|
74
|
+
0x3F9: Control-y handler - byte 2
|
|
75
|
+
0x3FA: Control-y handler - byte 3
|
|
76
|
+
0x3FB: NMI handler - byte 1
|
|
77
|
+
0x3FC: NMI handler - byte 2
|
|
78
|
+
0x3FD: NMI handler - byte 3
|
|
79
|
+
0x3FE: IRQ vector address - (low byte)
|
|
80
|
+
0x3FB: IRQ vector address - (high byte)
|
|
81
|
+
0xC000: KEYBOARD/CLR80COL - read = latched keyboard data, write=disable 80 column memory mapping
|
|
82
|
+
0xC001: SET80COL - enable 80 column memory mapping
|
|
83
|
+
0xC002: RAMRDOFF - Read enable main memory from $0200-$BFFF
|
|
84
|
+
0xC003: RAMDRON - Read enable aux memory from $0200-$BFFF
|
|
85
|
+
0xC004: RAMWRTOFF - Write enable main memory from $0200-$BFFF
|
|
86
|
+
0xC005: RAMWRTON - Write enable aux memory from $0200-$BFFF
|
|
87
|
+
0xC006: INTCXROMOFF - Enable slot ROM from $C100-$CFFF
|
|
88
|
+
0xC007: INTCXROMON - Enable main ROM from $C100-$CFFF
|
|
89
|
+
0xC008: ALZTPOFF - Enable main memory from $0000-$01FF & avl BSR
|
|
90
|
+
0xC009: ALTZPON - Enable aux memory from $0000-$01FF & avl BSR
|
|
91
|
+
0xC00A: SLOTC3ROMOFF - Enable main ROM from $C300-$C3FF
|
|
92
|
+
0xC00B: SLOTC3ROMON - Enable slot ROM from $C300-$C3FF
|
|
93
|
+
0xC00C: 80COLOFF - Turn off 80 column display
|
|
94
|
+
0xC00D: 80COLON - Turn on 80 column display
|
|
95
|
+
0xC00E: ALTCHARSETOFF - Turn off alternate characters
|
|
96
|
+
0xC00F: ALTCHARSETON - Turn on alternate characters
|
|
97
|
+
0xC010: AKD - 1=key pressed 0=keys free (clears strobe)
|
|
98
|
+
0xC011: BSRBANK2 - 1=bank2 available 0=bank1 available
|
|
99
|
+
0xC012: BSRREADRAM - 1=BSR active for read 0=$D000-$FFFF active
|
|
100
|
+
0xC013: RAMRD - 0=main $0200-$BFFF active reads 1=aux active
|
|
101
|
+
0xC014: RAMWRT - 0=main $0200-$BFFF active writes 1=aux writes
|
|
102
|
+
0xC015: INTCXROM - 1=main $C100-$CFFF ROM active 0=slot active
|
|
103
|
+
0xC016: ALTZP - 1=aux $0000-$1FF+auxBSR 0=main available
|
|
104
|
+
0xC017: SLOTC3ROM - 1=slot $C3 ROM active 0=main $C3 ROM active
|
|
105
|
+
0xC018: 80STORE - 1=page2 switches main/aux 0=page2 video
|
|
106
|
+
0xC019: VERTBLANK - 1=vertical retrace on 0=vertical retrace off
|
|
107
|
+
0xC01A: TEXT - 1=text mode is active 0=graphics mode active
|
|
108
|
+
0xC01B: MIXED - 1=mixed graphics & text
|
|
109
|
+
0xC01C: PAGE2 - 1=video page2 selected or aux
|
|
110
|
+
0xC01D: HIRES - 1=high resolution graphics 0=low resolution
|
|
111
|
+
0xC01E: ALTCHARSET - 1=alt character set on 0=alt char set off
|
|
112
|
+
0xC01F: 80COL - 1=80 col display on 0=80 col display off
|
|
113
|
+
0xC020: TAPEOUT - toggle the cassette output
|
|
114
|
+
0xC030: SPEAKER - toggle speaker diaphragm
|
|
115
|
+
oxC040: STROBE - generate .5 uS low pulse @ Game pin 5
|
|
116
|
+
0xC050: TEXTOFF - Select graphics mode
|
|
117
|
+
0xC051: TEXTON - Select text mode
|
|
118
|
+
0xC052: MIXEDOFF - Use full screen for graphics
|
|
119
|
+
0xC053: MIXEDON - Use graphics with 4 lines of text
|
|
120
|
+
0xC054: PAGE2OFF - Select panel display (or main video memory)
|
|
121
|
+
0xC055: PAGE2ON - Select page2 display (or aux video memory)
|
|
122
|
+
0xC056: HIRESOFF - Select low resolution graphics
|
|
123
|
+
0xC057: HIRESON - Select high resolution graphics
|
|
124
|
+
0xC058: SETAN0 - annunciator-0 output to 0
|
|
125
|
+
0xC059: CLRAN0 - annunciator-0 output to 1
|
|
126
|
+
0xC05A: SETAN1 - annunciator-1 output to 0
|
|
127
|
+
0xC05B: CLRAN1 - annunciator-1 output to 1
|
|
128
|
+
0xC05C: SETAN2 - annunciator-2 output to 0
|
|
129
|
+
0xC05D: CLRAN2 - annunciator-2 output to 1
|
|
130
|
+
0xC05E: SETDHIRES - turn on double hi-res
|
|
131
|
+
0xC05F: CLRDHIRES - turn off double hi-res
|
|
132
|
+
0xC060: TAPEIN - bit 7 = data from cassete
|
|
133
|
+
0xC061: OPNAPPLE - open apple (command) key data
|
|
134
|
+
0xC062: CLSAPPLE - closed apple (option) key data (read)
|
|
135
|
+
0xC07E: SETIOUDIS - enable DHIRES & disable $C058-5F (W)
|
|
136
|
+
0xC07F: CLRIOUDIS - disable DHIRES & enable $C058-5F (W)
|
|
137
|
+
0xC080: RD LC RAM bank2, WR-protect LC RAM
|
|
138
|
+
0xC081: ROMIN - RD ROM, WR-enable LC RAM
|
|
139
|
+
0xC082: RD ROM, WR-protect LC RAM
|
|
140
|
+
0xC083: LCBANK2 - RD LC RAM bank2, WR-enable LC RAM
|
|
141
|
+
0xC084: RD LC RAM bank2, WR-protect LC RAM
|
|
142
|
+
0xC085: RD ROM, WR-enable LC RAM
|
|
143
|
+
0xC086: RD ROM, WR-protect LC RAM
|
|
144
|
+
0xC087: RD LC RAM bank2, WR-enable LC RAM
|
|
145
|
+
0xC088: RD LC RAM bank1, WR-protect LC RAM
|
|
146
|
+
0xC089: RD ROM, WR-enable LC RAM
|
|
147
|
+
0xC08A: RD ROM, WR-protect LC RAM
|
|
148
|
+
0xC08B: LCBANK1 - RD LC RAM bank1, WR-enable LC RAM
|
|
149
|
+
0xC08C: RD LC RAM bank1, WR-protect LC RAM
|
|
150
|
+
0xC08D: RD ROM, WR-enable LC RAM
|
|
151
|
+
0xC08E: RD ROM, WR-protect LC RAM
|
|
152
|
+
0xC08F: LCBANK1 - RD LC RAM bank1, WR-enable LC RAM
|
|
153
|
+
0xC0E8: Turn on disk motor (slot 6)
|
|
154
|
+
0xC0E9: Turn off disk motor (slot 6)
|
|
155
|
+
0xCFFD: CLRC8ROM - disable Slot card C8 ROM
|
|
156
|
+
0xF800: "PLOT - draw block on low res screen - vert position in A, horizontal position in Y"
|
|
157
|
+
0xF819: "HLINE - draw horizontal line - vertical address in A, start horizontal position in Y, end horizontal position in $2C"
|
|
158
|
+
0xF828: "VLINE - draw vertical line of blocks. horizintal coordinate in Y, top vertical coordinate in A, bottom vertical coordinate in $2D"
|
|
159
|
+
0xF832: "CLRSCR - clear the low res screen"
|
|
160
|
+
0xF836: "CLRTOP - clear top 40 rows of low res screen"
|
|
161
|
+
0xF85F: "NEXTCOL - incriment colour by 3"
|
|
162
|
+
0xF864: "SETCOL - set low res gfx colour to value in A"
|
|
163
|
+
0xF871: "SCRN - read the low res screen. on input, A is vertical position, Y is horizontal. on return, A is color of block"
|
|
164
|
+
0xF941: "PRNTAX - print A & X in hex to stdout"
|
|
165
|
+
0xF948: "PRBLNK - print 3 blank spaces to stdout"
|
|
166
|
+
0xF94A: "PRBL2 - print many blank spaces - X holds count"
|
|
167
|
+
0xFB1E: "PREAD - read a hand control - on input X is control (0..3), on return Y holds value"
|
|
168
|
+
0xFB2F: "INIT - set STATUS in zero page to 0"
|
|
169
|
+
0xFC42: "CLREOP - clear to end of window"
|
|
170
|
+
0xFC58: "HOME - home cursor and clear"
|
|
171
|
+
0xFC9C: "CLREOL - clear to end of line from cursor"
|
|
172
|
+
0xFC9E: "CLREOLZ - clear to end of line, starting from BASL,Y"
|
|
173
|
+
0xFCA8: "WAIT - wait for period of time specified by A. delay is 1/2(26+27A+5A^2) microseconds"
|
|
174
|
+
0xFD0C: "RDKEY - get an input char, using routine at ($38/$39)"
|
|
175
|
+
0xFD1B: "KEYIN - wait for keypress, keycode returned in A"
|
|
176
|
+
0xFD35: "RDCHAR - read a char from stdin"
|
|
177
|
+
0xFD67: "GETLNZ - print CR, then call GETLN"
|
|
178
|
+
0xFD6A: "GETLN - get an input line - uses char in $36 as prompt, input stored in $200, length in X"
|
|
179
|
+
0xFD6F: "GETLN1 - get input line, no prompt"
|
|
180
|
+
0xFD75: "NEXTCHAR - process next char in input buffer"
|
|
181
|
+
0xFD8B: "CROUT1 - return with clear"
|
|
182
|
+
0xFD8E: "CROUT - send a CR to stdout"
|
|
183
|
+
0xFDDA: "PRBYTE - print A to stdout as hex digits"
|
|
184
|
+
0xFDE3: "PRHEX - print low nibble of A to stdout as a hex digit"
|
|
185
|
+
0xFDED: "COUT - output char in A (uses routine at ($36/$37) for output)"
|
|
186
|
+
0xFDF0: "COUT1 - output char in A to screen"
|
|
187
|
+
0xFE2C: "MOVE - destination address in $42/$43, start source in $3C/$3D, end source in $3E/$3F"
|
|
188
|
+
0xFE36: "VERIFY - compare 2 blocks of memory, destination is in $42/$43, start source in $3C/$3D, end address in $3E/3F"
|
|
189
|
+
0xFE80: "SETINV - set inverse mode"
|
|
190
|
+
0xFE84: "SETNORM - set normal mode"
|
|
191
|
+
0xFE89: "SETKBD - set port #0(keyboard) for input"
|
|
192
|
+
0xFE93: "SETVID - set port #0(video) for output"
|
|
193
|
+
0xFECD: "WRITE - write data to cassete. Address of first byte in $3C/$3D, last byte in $3D/$3E"
|
|
194
|
+
0xFEFD: "READ - read from tape. address of first byte in $3C/$3D, end address in $3E/$3D"
|
|
195
|
+
0xFF2D: "PRERR - print ERR to stdout"
|
|
196
|
+
0xFF3A: "BELL - writes a ^G to stdout"
|
|
197
|
+
0xFF3F: "IOREST - load registers with locations $45 to $49"
|
|
198
|
+
0xFF4A: "IOSAVE - save all registers to locations $45 to $49 in order A,X,Y,P,S"
|
|
199
|
+
0xFFBD: "BELL1 - send a beep to the speaker"
|