dsktool 0.1.6 → 0.2.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/dskexplorer.rb +213 -147
- data/bin/dsktool.rb +7 -7
- data/doc/classes/AppleSoftFile.html +15 -15
- data/doc/classes/AppleSoftFile.src/M000011.html +18 -0
- data/doc/classes/AppleSoftFile.src/M000012.html +18 -0
- data/doc/classes/AppleSoftFile.src/M000013.html +18 -0
- data/doc/classes/AppleSoftFile.src/M000014.html +18 -0
- data/doc/classes/AppleSoftFile.src/M000020.html +18 -0
- data/doc/classes/AppleSoftFile.src/M000021.html +18 -0
- data/doc/classes/AppleSoftFile.src/M000022.html +18 -0
- data/doc/classes/AppleSoftFile.src/M000026.html +18 -0
- data/doc/classes/AppleSoftFile.src/M000027.html +18 -0
- data/doc/classes/AppleSoftFile.src/M000028.html +18 -0
- data/doc/classes/AppleSoftFile.src/M000032.html +18 -0
- data/doc/classes/AppleSoftFile.src/M000033.html +18 -0
- data/doc/classes/AppleSoftFile.src/M000034.html +18 -0
- data/doc/classes/AppleSoftFile.src/M000035.html +18 -0
- data/doc/classes/AppleSoftFile.src/M000036.html +18 -0
- data/doc/classes/AppleSoftFile.src/M000038.html +18 -0
- data/doc/classes/AppleSoftFile.src/M000039.html +18 -0
- data/doc/classes/AppleSoftFile.src/M000040.html +18 -0
- data/doc/classes/BinaryFile.html +15 -15
- data/doc/classes/BinaryFile.src/M000023.html +18 -0
- data/doc/classes/BinaryFile.src/M000024.html +18 -0
- data/doc/classes/BinaryFile.src/M000025.html +18 -0
- data/doc/classes/BinaryFile.src/M000026.html +19 -0
- data/doc/classes/BinaryFile.src/M000029.html +18 -0
- data/doc/classes/BinaryFile.src/M000030.html +18 -0
- data/doc/classes/BinaryFile.src/M000031.html +19 -0
- data/doc/classes/BinaryFile.src/M000039.html +18 -0
- data/doc/classes/BinaryFile.src/M000040.html +18 -0
- data/doc/classes/BinaryFile.src/M000041.html +19 -0
- data/doc/classes/BinaryFile.src/M000045.html +18 -0
- data/doc/classes/BinaryFile.src/M000046.html +18 -0
- data/doc/classes/BinaryFile.src/M000047.html +19 -0
- data/doc/classes/BinaryFile.src/M000052.html +18 -0
- data/doc/classes/BinaryFile.src/M000053.html +18 -0
- data/doc/classes/BinaryFile.src/M000054.html +18 -0
- data/doc/classes/BinaryFile.src/M000055.html +18 -0
- data/doc/classes/BinaryFile.src/M000056.html +19 -0
- data/doc/classes/BinaryFile.src/M000059.html +18 -0
- data/doc/classes/BinaryFile.src/M000060.html +18 -0
- data/doc/classes/BinaryFile.src/M000061.html +19 -0
- data/doc/classes/CatalogServlet.html +147 -0
- data/doc/classes/CatalogServlet.src/M000015.html +20 -0
- data/doc/classes/CatalogServlet.src/M000021.html +20 -0
- data/doc/classes/CatalogServlet.src/M000024.html +20 -0
- data/doc/classes/CatalogServlet.src/M000027.html +20 -0
- data/doc/classes/D65.html +10 -10
- data/doc/classes/D65.src/M000009.html +18 -0
- data/doc/classes/D65.src/M000010.html +18 -0
- data/doc/classes/D65.src/M000011.html +64 -0
- data/doc/classes/D65.src/M000018.html +18 -0
- data/doc/classes/D65.src/M000019.html +64 -0
- data/doc/classes/D65.src/M000024.html +18 -0
- data/doc/classes/D65.src/M000025.html +64 -0
- data/doc/classes/D65.src/M000030.html +18 -0
- data/doc/classes/D65.src/M000031.html +18 -0
- data/doc/classes/D65.src/M000032.html +64 -0
- data/doc/classes/D65.src/M000035.html +18 -0
- data/doc/classes/D65.src/M000036.html +64 -0
- data/doc/classes/DOSDisk.html +15 -15
- data/doc/classes/DOSDisk.src/M000014.html +20 -0
- data/doc/classes/DOSDisk.src/M000015.html +20 -0
- data/doc/classes/DOSDisk.src/M000016.html +19 -0
- data/doc/classes/DOSDisk.src/M000017.html +76 -0
- data/doc/classes/DOSDisk.src/M000023.html +20 -0
- data/doc/classes/DOSDisk.src/M000024.html +19 -0
- data/doc/classes/DOSDisk.src/M000025.html +76 -0
- data/doc/classes/DOSDisk.src/M000029.html +20 -0
- data/doc/classes/DOSDisk.src/M000030.html +19 -0
- data/doc/classes/DOSDisk.src/M000031.html +76 -0
- data/doc/classes/DOSDisk.src/M000035.html +20 -0
- data/doc/classes/DOSDisk.src/M000036.html +20 -0
- data/doc/classes/DOSDisk.src/M000037.html +20 -0
- data/doc/classes/DOSDisk.src/M000038.html +19 -0
- data/doc/classes/DOSDisk.src/M000039.html +76 -0
- data/doc/classes/DOSDisk.src/M000041.html +20 -0
- data/doc/classes/DOSDisk.src/M000042.html +19 -0
- data/doc/classes/DOSDisk.src/M000043.html +76 -0
- data/doc/classes/DOSFile.html +20 -20
- data/doc/classes/DOSFile.src/M000026.html +22 -0
- data/doc/classes/DOSFile.src/M000027.html +22 -0
- data/doc/classes/DOSFile.src/M000028.html +17 -0
- data/doc/classes/DOSFile.src/M000029.html +18 -0
- data/doc/classes/DOSFile.src/M000032.html +22 -0
- data/doc/classes/DOSFile.src/M000033.html +17 -0
- data/doc/classes/DOSFile.src/M000034.html +18 -0
- data/doc/classes/DOSFile.src/M000042.html +22 -0
- data/doc/classes/DOSFile.src/M000043.html +18 -0
- data/doc/classes/DOSFile.src/M000044.html +18 -0
- data/doc/classes/DOSFile.src/M000048.html +22 -0
- data/doc/classes/DOSFile.src/M000049.html +18 -0
- data/doc/classes/DOSFile.src/M000050.html +18 -0
- data/doc/classes/DOSFile.src/M000051.html +31 -0
- data/doc/classes/DOSFile.src/M000057.html +22 -0
- data/doc/classes/DOSFile.src/M000058.html +22 -0
- data/doc/classes/DOSFile.src/M000059.html +22 -0
- data/doc/classes/DOSFile.src/M000060.html +18 -0
- data/doc/classes/DOSFile.src/M000061.html +18 -0
- data/doc/classes/DOSFile.src/M000062.html +31 -0
- data/doc/classes/DOSFile.src/M000064.html +22 -0
- data/doc/classes/DOSFile.src/M000065.html +18 -0
- data/doc/classes/DOSFile.src/M000066.html +18 -0
- data/doc/classes/DOSFile.src/M000067.html +31 -0
- data/doc/classes/DSK.html +75 -42
- data/doc/classes/DSK.src/M000021.html +19 -0
- data/doc/classes/DSK.src/M000022.html +18 -0
- data/doc/classes/DSK.src/M000023.html +40 -0
- data/doc/classes/DSK.src/M000024.html +23 -0
- data/doc/classes/DSK.src/M000027.html +18 -0
- data/doc/classes/DSK.src/M000028.html +22 -0
- data/doc/classes/DSK.src/M000029.html +22 -0
- data/doc/classes/DSK.src/M000030.html +34 -0
- data/doc/classes/DSK.src/M000031.html +19 -0
- data/doc/classes/DSK.src/M000032.html +18 -0
- data/doc/classes/DSK.src/M000033.html +18 -0
- data/doc/classes/DSK.src/M000034.html +22 -0
- data/doc/classes/DSK.src/M000035.html +22 -0
- data/doc/classes/DSK.src/M000036.html +34 -0
- data/doc/classes/DSK.src/M000037.html +19 -0
- data/doc/classes/DSK.src/M000038.html +18 -0
- data/doc/classes/DSK.src/M000039.html +18 -0
- data/doc/classes/DSK.src/M000040.html +18 -0
- data/doc/classes/DSK.src/M000041.html +18 -0
- data/doc/classes/DSK.src/M000042.html +22 -0
- data/doc/classes/DSK.src/M000043.html +19 -0
- data/doc/classes/DSK.src/M000044.html +22 -0
- data/doc/classes/DSK.src/M000045.html +18 -0
- data/doc/classes/DSK.src/M000046.html +22 -0
- data/doc/classes/DSK.src/M000047.html +19 -0
- data/doc/classes/DSK.src/M000048.html +22 -0
- data/doc/classes/DSK.src/M000049.html +40 -0
- data/doc/classes/DSK.src/M000050.html +19 -0
- data/doc/classes/DSK.src/M000051.html +18 -0
- data/doc/classes/DSK.src/M000052.html +37 -0
- data/doc/classes/DSK.src/M000053.html +24 -0
- data/doc/classes/DSK.src/M000054.html +24 -0
- data/doc/classes/DirectoryServlet.html +147 -0
- data/doc/classes/DirectoryServlet.src/M000017.html +20 -0
- data/doc/classes/DirectoryServlet.src/M000023.html +20 -0
- data/doc/classes/DirectoryServlet.src/M000026.html +20 -0
- data/doc/classes/DirectoryServlet.src/M000030.html +20 -0
- data/doc/classes/IntegerBasicFile.html +15 -15
- data/doc/classes/IntegerBasicFile.src/M000006.html +18 -0
- data/doc/classes/IntegerBasicFile.src/M000007.html +18 -0
- data/doc/classes/IntegerBasicFile.src/M000008.html +18 -0
- data/doc/classes/IntegerBasicFile.src/M000012.html +18 -0
- data/doc/classes/IntegerBasicFile.src/M000013.html +18 -0
- data/doc/classes/IntegerBasicFile.src/M000014.html +18 -0
- data/doc/classes/IntegerBasicFile.src/M000018.html +18 -0
- data/doc/classes/IntegerBasicFile.src/M000019.html +18 -0
- data/doc/classes/IntegerBasicFile.src/M000020.html +18 -0
- data/doc/classes/IntegerBasicFile.src/M000021.html +18 -0
- data/doc/classes/IntegerBasicFile.src/M000022.html +18 -0
- data/doc/classes/IntegerBasicFile.src/M000023.html +18 -0
- data/doc/classes/IntegerBasicFile.src/M000024.html +18 -0
- data/doc/classes/IntegerBasicFile.src/M000025.html +18 -0
- data/doc/classes/IntegerBasicFile.src/M000026.html +18 -0
- data/doc/classes/NADOLBinaryFile.html +153 -0
- data/doc/classes/NADOLBinaryFile.src/M000033.html +19 -0
- data/doc/classes/NADOLBinaryFile.src/M000037.html +19 -0
- data/doc/classes/NADOLDisk.html +189 -0
- data/doc/classes/NADOLDisk.src/M000018.html +20 -0
- data/doc/classes/NADOLDisk.src/M000019.html +19 -0
- data/doc/classes/NADOLDisk.src/M000020.html +50 -0
- data/doc/classes/NADOLDisk.src/M000021.html +20 -0
- data/doc/classes/NADOLDisk.src/M000022.html +19 -0
- data/doc/classes/NADOLDisk.src/M000023.html +50 -0
- data/doc/classes/NADOLFile.html +216 -0
- data/doc/classes/NADOLFile.src/M000027.html +19 -0
- data/doc/classes/NADOLFile.src/M000028.html +18 -0
- data/doc/classes/NADOLFile.src/M000029.html +18 -0
- data/doc/classes/NADOLFile.src/M000030.html +31 -0
- data/doc/classes/NADOLFile.src/M000031.html +19 -0
- data/doc/classes/NADOLFile.src/M000032.html +18 -0
- data/doc/classes/NADOLFile.src/M000033.html +18 -0
- data/doc/classes/NADOLFile.src/M000034.html +31 -0
- data/doc/classes/NADOLTokenisedFile.html +217 -0
- data/doc/classes/NADOLTokenisedFile.src/M000061.html +28 -0
- data/doc/classes/NADOLTokenisedFile.src/M000062.html +28 -0
- data/doc/classes/NADOLTokenisedFile.src/M000063.html +28 -0
- data/doc/classes/NADOLTokenisedFile.src/M000064.html +18 -0
- data/doc/classes/NADOLTokenisedFile.src/M000065.html +18 -0
- data/doc/classes/NADOLTokenisedFile.src/M000068.html +28 -0
- data/doc/classes/NADOLTokenisedFile.src/M000069.html +18 -0
- data/doc/classes/NADOLTokenisedFile.src/M000070.html +18 -0
- data/doc/classes/RDoc.html +141 -0
- data/doc/classes/RDoc.src/M000032.html +40 -0
- data/doc/classes/RDoc.src/M000033.html +40 -0
- data/doc/classes/RDoc.src/M000038.html +40 -0
- data/doc/classes/RDoc.src/M000048.html +40 -0
- data/doc/classes/RDoc.src/M000055.html +40 -0
- data/doc/classes/RDoc.src/M000066.html +40 -0
- data/doc/classes/RDoc.src/M000068.html +40 -0
- data/doc/classes/RDoc.src/M000069.html +40 -0
- data/doc/classes/RDoc.src/M000074.html +40 -0
- data/doc/classes/SCAsmFile.html +226 -0
- data/doc/classes/SCAsmFile.src/M000025.html +18 -0
- data/doc/classes/SCAsmFile.src/M000026.html +18 -0
- data/doc/classes/SCAsmFile.src/M000027.html +18 -0
- data/doc/classes/SCAsmFile.src/M000028.html +36 -0
- data/doc/classes/SCAsmFile.src/M000035.html +18 -0
- data/doc/classes/SCAsmFile.src/M000036.html +18 -0
- data/doc/classes/SCAsmFile.src/M000037.html +18 -0
- data/doc/classes/SCAsmFile.src/M000038.html +36 -0
- data/doc/classes/SCAsmFile.src/M000041.html +18 -0
- data/doc/classes/SCAsmFile.src/M000042.html +18 -0
- data/doc/classes/SCAsmFile.src/M000043.html +18 -0
- data/doc/classes/SCAsmFile.src/M000044.html +36 -0
- data/doc/classes/SCAsmFile.src/M000048.html +18 -0
- data/doc/classes/SCAsmFile.src/M000049.html +18 -0
- data/doc/classes/SCAsmFile.src/M000050.html +18 -0
- data/doc/classes/SCAsmFile.src/M000051.html +18 -0
- data/doc/classes/SCAsmFile.src/M000052.html +18 -0
- data/doc/classes/SCAsmFile.src/M000053.html +36 -0
- data/doc/classes/SCAsmFile.src/M000055.html +18 -0
- data/doc/classes/SCAsmFile.src/M000056.html +18 -0
- data/doc/classes/SCAsmFile.src/M000057.html +18 -0
- data/doc/classes/SCAsmFile.src/M000058.html +39 -0
- data/doc/classes/ShowFileServlet.html +147 -0
- data/doc/classes/ShowFileServlet.src/M000026.html +21 -0
- data/doc/classes/ShowFileServlet.src/M000032.html +22 -0
- data/doc/classes/ShowFileServlet.src/M000038.html +22 -0
- data/doc/classes/ShowFileServlet.src/M000039.html +22 -0
- data/doc/classes/ShowFileServlet.src/M000040.html +22 -0
- data/doc/classes/ShowFileServlet.src/M000044.html +22 -0
- data/doc/classes/ShowSectorServlet.html +147 -0
- data/doc/classes/ShowSectorServlet.src/M000029.html +22 -0
- data/doc/classes/TestDOSDisks.html +46 -31
- data/doc/classes/TestDOSDisks.src/M000004.html +41 -0
- data/doc/classes/TestDOSDisks.src/M000005.html +27 -0
- data/doc/classes/TestDOSDisks.src/M000006.html +24 -0
- data/doc/classes/TestDOSDisks.src/M000007.html +19 -0
- data/doc/classes/TestDOSDisks.src/M000008.html +19 -0
- data/doc/classes/TestDOSDisks.src/M000009.html +25 -0
- data/doc/classes/TestDOSDisks.src/M000010.html +41 -0
- data/doc/classes/TestDOSDisks.src/M000011.html +27 -0
- data/doc/classes/TestDOSDisks.src/M000012.html +24 -0
- data/doc/classes/TestDOSDisks.src/M000013.html +19 -0
- data/doc/classes/TestDOSDisks.src/M000014.html +24 -0
- data/doc/classes/TestDOSDisks.src/M000015.html +19 -0
- data/doc/classes/TestDOSDisks.src/M000016.html +22 -0
- data/doc/classes/TestDOSDisks.src/M000017.html +19 -0
- data/doc/classes/TestDOSDisks.src/M000018.html +25 -0
- data/doc/classes/TestDOSDisks.src/M000019.html +41 -0
- data/doc/classes/TestDOSDisks.src/M000020.html +27 -0
- data/doc/classes/TestDisassembly.html +6 -6
- data/doc/classes/TestDisassembly.src/M000007.html +19 -0
- data/doc/classes/TestDisassembly.src/M000008.html +19 -0
- data/doc/classes/TestDisassembly.src/M000009.html +19 -0
- data/doc/classes/TestDisassembly.src/M000016.html +19 -0
- data/doc/classes/TestDisassembly.src/M000022.html +19 -0
- data/doc/classes/TestDisassembly.src/M000025.html +19 -0
- data/doc/classes/TestDisassembly.src/M000028.html +19 -0
- data/doc/classes/TestNADOLDisks.html +159 -0
- data/doc/classes/TestNADOLDisks.src/M000055.html +19 -0
- data/doc/classes/TestNADOLDisks.src/M000056.html +19 -0
- data/doc/classes/TestNADOLDisks.src/M000057.html +19 -0
- data/doc/classes/TestNADOLDisks.src/M000058.html +34 -0
- data/doc/classes/TestNADOLDisks.src/M000062.html +19 -0
- data/doc/classes/TestNADOLDisks.src/M000063.html +34 -0
- data/doc/classes/TextFile.html +15 -15
- data/doc/classes/TextFile.src/M000029.html +18 -0
- data/doc/classes/TextFile.src/M000030.html +18 -0
- data/doc/classes/TextFile.src/M000031.html +18 -0
- data/doc/classes/TextFile.src/M000032.html +20 -0
- data/doc/classes/TextFile.src/M000035.html +18 -0
- data/doc/classes/TextFile.src/M000036.html +18 -0
- data/doc/classes/TextFile.src/M000037.html +20 -0
- data/doc/classes/TextFile.src/M000045.html +18 -0
- data/doc/classes/TextFile.src/M000046.html +18 -0
- data/doc/classes/TextFile.src/M000047.html +20 -0
- data/doc/classes/TextFile.src/M000052.html +18 -0
- data/doc/classes/TextFile.src/M000053.html +18 -0
- data/doc/classes/TextFile.src/M000054.html +20 -0
- data/doc/classes/TextFile.src/M000063.html +18 -0
- data/doc/classes/TextFile.src/M000064.html +18 -0
- data/doc/classes/TextFile.src/M000065.html +18 -0
- data/doc/classes/TextFile.src/M000066.html +18 -0
- data/doc/classes/TextFile.src/M000067.html +18 -0
- data/doc/classes/TextFile.src/M000068.html +20 -0
- data/doc/classes/TextFile.src/M000071.html +18 -0
- data/doc/classes/TextFile.src/M000072.html +18 -0
- data/doc/classes/TextFile.src/M000073.html +20 -0
- data/doc/created.rid +1 -1
- data/doc/dot/f_0.dot +71 -0
- data/doc/dot/f_0.png +0 -0
- data/doc/dot/f_1.dot +14 -0
- data/doc/dot/f_1.png +0 -0
- data/doc/dot/f_10.dot +32 -0
- data/doc/dot/f_10.png +0 -0
- data/doc/dot/f_11.dot +32 -0
- data/doc/dot/f_11.png +0 -0
- data/doc/dot/f_12.dot +14 -0
- data/doc/dot/f_12.png +0 -0
- data/doc/dot/f_2.dot +23 -0
- data/doc/dot/f_2.png +0 -0
- data/doc/dot/f_3.dot +32 -0
- data/doc/dot/f_3.png +0 -0
- data/doc/dot/f_4.dot +88 -0
- data/doc/dot/f_4.png +0 -0
- data/doc/dot/f_5.dot +23 -0
- data/doc/dot/f_5.png +0 -0
- data/doc/dot/f_6.dot +32 -0
- data/doc/dot/f_6.png +0 -0
- data/doc/dot/f_7.dot +49 -0
- data/doc/dot/f_7.png +0 -0
- data/doc/dot/f_8.dot +30 -0
- data/doc/dot/f_8.png +0 -0
- data/doc/dot/f_9.dot +32 -0
- data/doc/dot/f_9.png +0 -0
- data/doc/dot/m_0_0.dot +30 -0
- data/doc/dot/m_0_0.png +0 -0
- data/doc/dot/m_6_0.dot +30 -0
- data/doc/dot/m_6_0.png +0 -0
- data/doc/dot/m_8_0.dot +30 -0
- data/doc/dot/m_8_0.png +0 -0
- data/doc/files/bin/dskexplorer_rb.html +364 -0
- data/doc/files/bin/dskexplorer_rb.src/M000001.html +21 -0
- data/doc/files/bin/dskexplorer_rb.src/M000002.html +21 -0
- data/doc/files/bin/dskexplorer_rb.src/M000003.html +22 -0
- data/doc/files/bin/dskexplorer_rb.src/M000004.html +20 -0
- data/doc/files/bin/dskexplorer_rb.src/M000005.html +20 -0
- data/doc/files/bin/dskexplorer_rb.src/M000006.html +22 -0
- data/doc/files/bin/dskexplorer_rb.src/M000007.html +18 -0
- data/doc/files/bin/dskexplorer_rb.src/M000008.html +20 -0
- data/doc/files/bin/dskexplorer_rb.src/M000009.html +43 -0
- data/doc/files/bin/dskexplorer_rb.src/M000010.html +55 -0
- data/doc/files/bin/dskexplorer_rb.src/M000011.html +49 -0
- data/doc/files/bin/dskexplorer_rb.src/M000012.html +61 -0
- data/doc/files/bin/dskexplorer_rb.src/M000013.html +34 -0
- data/doc/files/bin/dskserver_rb.html +247 -0
- data/doc/files/bin/dskserver_rb.src/M000001.html +22 -0
- data/doc/files/bin/dskserver_rb.src/M000002.html +19 -0
- data/doc/files/bin/dskserver_rb.src/M000003.html +62 -0
- data/doc/files/bin/dskserver_rb.src/M000004.html +39 -0
- data/doc/files/bin/dskserver_rb.src/M000005.html +26 -0
- data/doc/files/bin/dsktool_rb.html +4 -4
- data/doc/files/lib/DOSDisk_rb.html +1 -1
- data/doc/files/lib/DOSFile_rb.html +1 -1
- data/doc/files/lib/DSK_rb.html +3 -1
- data/doc/files/lib/NADOLDisk_rb.html +115 -0
- data/doc/files/lib/NADOLFile_rb.html +117 -0
- data/doc/files/lib/rdoc_patch_rb.html +114 -0
- data/doc/files/test/tc_disassembly_rb.html +1 -1
- data/doc/files/test/tc_dos_disks_rb.html +2 -2
- data/doc/files/test/tc_nadol_disks_rb.html +122 -0
- data/doc/files/test/ts_test_all_rb.html +3 -2
- data/doc/fr_class_index.html +6 -0
- data/doc/fr_file_index.html +3 -0
- data/doc/fr_method_index.html +68 -49
- data/lib/DOSDisk.rb +14 -14
- data/lib/DOSFile.rb +7 -1
- data/lib/DSK.rb +41 -21
- data/lib/NADOLDisk.rb +97 -0
- data/lib/NADOLFile.rb +242 -0
- data/test/nadol.dsk +0 -0
- data/test/tc_dos_disks.rb +8 -0
- data/test/tc_nadol_disks.rb +36 -0
- data/test/ts_test_all.rb +1 -0
- data/test/white_11a.dsk +0 -0
- metadata +408 -65
- data/bin/dskexplorer.rb~ +0 -275
- data/bin/dsktool.rb~ +0 -150
- data/lib/DSK.rb~ +0 -134
- data/test/tc_dos_disks.rb~ +0 -79
data/lib/DOSDisk.rb
CHANGED
@@ -99,10 +99,10 @@ class DOSDisk < DSK
|
|
99
99
|
|
100
100
|
def read_vtoc
|
101
101
|
vtoc_sector=get_sector(17,0)
|
102
|
-
|
103
102
|
catalog_sector=get_sector(vtoc_sector[01],vtoc_sector[02])
|
104
103
|
done=false
|
105
|
-
while !done
|
104
|
+
while !done
|
105
|
+
break if catalog_sector.nil?
|
106
106
|
(0..6).each {|file_number|
|
107
107
|
file_descriptive_entry_start=11+file_number*35
|
108
108
|
file_descriptive_entry=catalog_sector[file_descriptive_entry_start..file_descriptive_entry_start+35]
|
@@ -133,19 +133,19 @@ class DOSDisk < DSK
|
|
133
133
|
end
|
134
134
|
}
|
135
135
|
end
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
# when 0x08 then "S" #S type file
|
143
|
-
# when 0x10 then "R" #RELOCATABLE object module file
|
144
|
-
# when 0x20 then "a" #??
|
145
|
-
# when 0x40 then "b" #??
|
146
|
-
|
136
|
+
if contents.length>0 then
|
137
|
+
@files[filename]= case file_type_code
|
138
|
+
when 0x00 then TextFile.new(filename,locked,sector_count,contents)
|
139
|
+
when 0x01 then SCAsmFile.can_be_scasm_file?(contents)? SCAsmFile.new(filename,locked,sector_count,contents): IntegerBasicFile.new(filename,locked,sector_count,contents)
|
140
|
+
when 0x02 then AppleSoftFile.new(filename,locked,sector_count,contents)
|
141
|
+
when 0x04 then BinaryFile.new(filename,locked,sector_count,contents)
|
142
|
+
# when 0x08 then "S" #S type file
|
143
|
+
# when 0x10 then "R" #RELOCATABLE object module file
|
144
|
+
# when 0x20 then "a" #??
|
145
|
+
# when 0x40 then "b" #??
|
146
|
+
else DOSFile.new(filename,locked,sector_count,contents,sprintf("$%02X",file_type_code))
|
147
|
+
end
|
147
148
|
end
|
148
|
-
|
149
149
|
end
|
150
150
|
}
|
151
151
|
next_track=catalog_sector[1]
|
data/lib/DOSFile.rb
CHANGED
@@ -327,6 +327,8 @@ private
|
|
327
327
|
s=""
|
328
328
|
while (index<length)
|
329
329
|
index+=2 #skip over the "next address" field
|
330
|
+
break if buffer[index].nil?
|
331
|
+
break if buffer[index+1].nil?
|
330
332
|
line_no=buffer[index]+buffer[index+1]*256
|
331
333
|
index+=2 #skip over the "line number" field
|
332
334
|
s+=sprintf("%u",line_no)
|
@@ -334,6 +336,7 @@ private
|
|
334
336
|
last_char_space=false
|
335
337
|
while (!done_line)
|
336
338
|
b=buffer[index]
|
339
|
+
break if b.nil?
|
337
340
|
if b>=0x80 then
|
338
341
|
if !last_char_space then
|
339
342
|
s+=" "
|
@@ -388,7 +391,10 @@ class SCAsmFile < DOSFile
|
|
388
391
|
".asm"
|
389
392
|
end
|
390
393
|
|
391
|
-
def SCAsmFile.can_be_scasm_file(buffer)
|
394
|
+
def SCAsmFile.can_be_scasm_file?(buffer)
|
395
|
+
if buffer.length<2 then
|
396
|
+
return false
|
397
|
+
end
|
392
398
|
length=buffer[0]+buffer[1]*256
|
393
399
|
index=2
|
394
400
|
s=""
|
data/lib/DSK.rb
CHANGED
@@ -22,6 +22,11 @@ class DSK
|
|
22
22
|
|
23
23
|
(@file_bytes[0x11001]<=34) && (@file_bytes[0x11002]<=15) && (@file_bytes[0x11003]==3)
|
24
24
|
end
|
25
|
+
|
26
|
+
def is_nadol?
|
27
|
+
# track $00, sector $02 , bytes $11 - "NADOL"
|
28
|
+
(@file_bytes[0x00211..0x00215]=="NADOL")
|
29
|
+
end
|
25
30
|
|
26
31
|
|
27
32
|
#create a new DSK structure (in memory, not on disk)
|
@@ -51,6 +56,12 @@ class DSK
|
|
51
56
|
require 'DOSDisk'
|
52
57
|
dsk=DOSDisk.new(file_bytes)
|
53
58
|
end
|
59
|
+
|
60
|
+
if (dsk.is_nadol?)
|
61
|
+
require 'NADOLDisk'
|
62
|
+
dsk=NADOLDisk.new(file_bytes)
|
63
|
+
end
|
64
|
+
|
54
65
|
dsk
|
55
66
|
end
|
56
67
|
|
@@ -63,47 +74,56 @@ class DSK
|
|
63
74
|
@files
|
64
75
|
end
|
65
76
|
|
66
|
-
#
|
77
|
+
#return a formatted hex dump of a single 256 byte sector
|
67
78
|
def dump_sector(track,sector)
|
68
|
-
|
69
|
-
|
70
|
-
s
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
(0..15).each {|x| printf("%02X ",x) }
|
77
|
-
puts
|
78
|
-
print_hline
|
79
|
+
start_byte=track.to_i*16*256+sector.to_i*256
|
80
|
+
s=hline
|
81
|
+
s<<sprintf("TRACK: $%02X SECTOR $%02X\ OFFSET $%04X\n",track,sector,start_byte)
|
82
|
+
s<< "\t"
|
83
|
+
sector_data=get_sector(track,sector)
|
84
|
+
(0..15).each {|x| s<<sprintf("%02X ",x) }
|
85
|
+
s<<"\n"
|
86
|
+
s<<hline
|
79
87
|
(0..15).each {|line_number|
|
80
88
|
lhs=""
|
81
89
|
rhs=""
|
82
90
|
start_byte=line_number*16
|
83
|
-
line=
|
91
|
+
line=sector_data[start_byte..start_byte+15]
|
84
92
|
line.each_byte {|byte|
|
85
|
-
lhs
|
86
|
-
rhs
|
93
|
+
lhs<< sprintf("%02X ", byte)
|
94
|
+
rhs<< (byte%128).chr.sub(/[\x00-\x1f]/,'.')
|
87
95
|
}
|
88
|
-
|
96
|
+
s<<sprintf("%02X\t%s %s\n",start_byte,lhs,rhs)
|
89
97
|
}
|
98
|
+
s
|
99
|
+
end
|
90
100
|
|
101
|
+
#return a formatted hex dump of a single 256 byte sector
|
102
|
+
def disassemble_sector(track,sector)
|
103
|
+
require 'D65'
|
104
|
+
sector_data=get_sector(track,sector)
|
105
|
+
if (track==0) && (sector==0) then
|
106
|
+
return D65.disassemble(sector_data[1..255],0x801)
|
107
|
+
else
|
108
|
+
return D65.disassemble(sector_data)
|
109
|
+
end
|
91
110
|
end
|
92
111
|
|
93
|
-
#
|
112
|
+
#return a formatted hex dump of all sectors on all tracks
|
94
113
|
def dump_disk
|
95
|
-
|
114
|
+
s=""
|
96
115
|
(0..34).each {|track|
|
97
116
|
(0..15).each {|sector|
|
98
|
-
dump_sector(track,sector)
|
117
|
+
s<<dump_sector(track,sector)
|
99
118
|
}
|
100
119
|
}
|
120
|
+
s
|
101
121
|
end
|
102
122
|
|
103
123
|
private
|
104
124
|
|
105
|
-
def
|
106
|
-
|
125
|
+
def hline
|
126
|
+
"-"*79+"\n"
|
107
127
|
end
|
108
128
|
|
109
129
|
|
data/lib/NADOLDisk.rb
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__)) unless
|
2
|
+
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
|
+
|
4
|
+
# Disk image in NADOL format
|
5
|
+
#
|
6
|
+
#CATALOG will be at track $00, sector $03 to track $00, sector $09
|
7
|
+
#each entry consists of $10 bytes, which are:
|
8
|
+
# 00-0B - filename - if file is deleted, first byte will be FF
|
9
|
+
# 0C-0D - filesize (low byte first)
|
10
|
+
# 0E - track of track sector list sector
|
11
|
+
# 0F - sector of track sector list sector
|
12
|
+
|
13
|
+
#TRACK/SECTOR LIST FORMAT
|
14
|
+
# pairs of track/sectors in order. up to 128 entries [assumes that no file can be > 128 sectors]
|
15
|
+
|
16
|
+
require 'NADOLFile'
|
17
|
+
|
18
|
+
class NADOLDisk < DSK
|
19
|
+
|
20
|
+
def dump_catalog
|
21
|
+
files.each_value { |file|
|
22
|
+
puts "#{sprintf('% 6d',file.contents.length)} #{file.filename}"
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
26
|
+
def initialize(file_bytes)
|
27
|
+
super(file_bytes)
|
28
|
+
self.read_catalog
|
29
|
+
end
|
30
|
+
|
31
|
+
#reads the catalog, and populate the "files" array with files
|
32
|
+
#CATALOG will be at track $00, sector $03 to track $00, sector $09
|
33
|
+
#each entry consists of $10 bytes, which are:
|
34
|
+
# 00-0B - filename - if file is deleted, first byte will be FF
|
35
|
+
# 0C-0D - filesize (low byte first)
|
36
|
+
# 0E - track of track sector list sector
|
37
|
+
# 0F - sector of track sector list sector
|
38
|
+
def read_catalog
|
39
|
+
0x300.step(0x9FF,0x10) do |file_descriptive_entry_start|
|
40
|
+
file_descriptive_entry=@file_bytes[file_descriptive_entry_start..file_descriptive_entry_start+0x0F]
|
41
|
+
break if (file_descriptive_entry[0]==0xFF) # skip deleted files
|
42
|
+
filename=""
|
43
|
+
file_descriptive_entry[0..11].to_s.each_byte{|b| filename+=(b.%128).chr} #strip off high bit
|
44
|
+
filename.sub!(/ *$/,"") #strip off trailing spaces
|
45
|
+
full_sectors=file_descriptive_entry[0x0D]
|
46
|
+
bytes_in_last_sector=file_descriptive_entry[0x0C]
|
47
|
+
file_size=full_sectors*256+bytes_in_last_sector
|
48
|
+
if (file_size>0) then
|
49
|
+
contents=""
|
50
|
+
ts_list_track_no=file_descriptive_entry[0x0E]
|
51
|
+
ts_list_sector_no=file_descriptive_entry[0x0F]
|
52
|
+
ts_list=get_sector(ts_list_track_no,ts_list_sector_no)
|
53
|
+
entry_number=0
|
54
|
+
while entry_number<full_sectors do
|
55
|
+
data_track_no=ts_list[entry_number*2]
|
56
|
+
data_sector_no=ts_list[entry_number*2+1]
|
57
|
+
contents+=get_sector(data_track_no,data_sector_no)
|
58
|
+
entry_number+=1
|
59
|
+
end
|
60
|
+
if (bytes_in_last_sector>0) then
|
61
|
+
data_track_no=ts_list[entry_number*2]
|
62
|
+
data_sector_no=ts_list[entry_number*2+1]
|
63
|
+
contents+=get_sector(data_track_no,data_sector_no)[0..bytes_in_last_sector-1]
|
64
|
+
end
|
65
|
+
if (NADOLTokenisedFile.can_be_nadol_tokenised_file?(contents)) then
|
66
|
+
@files[filename]= NADOLTokenisedFile.new(filename,contents)
|
67
|
+
else
|
68
|
+
@files[filename]= NADOLFile.new(filename,contents)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
# == Author
|
75
|
+
# Jonno Downes (jonno@jamtronix.com)
|
76
|
+
#
|
77
|
+
# == Copyright
|
78
|
+
# Copyright (c) 2007 Jonno Downes (jonno@jamtronix.com)
|
79
|
+
#
|
80
|
+
#Permission is hereby granted, free of charge, to any person obtaining
|
81
|
+
#a copy of this software and associated documentation files (the
|
82
|
+
#"Software"), to deal in the Software without restriction, including
|
83
|
+
#without limitation the rights to use, copy, modify, merge, publish,
|
84
|
+
#distribute, sublicense, and/or sell copies of the Software, and to
|
85
|
+
#permit persons to whom the Software is furnished to do so, subject to
|
86
|
+
#the following conditions:
|
87
|
+
|
88
|
+
# The above copyright notice and this permission notice shall be
|
89
|
+
# included in all copies or substantial portions of the Software.
|
90
|
+
|
91
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
92
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
93
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
94
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
95
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
96
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
97
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/lib/NADOLFile.rb
ADDED
@@ -0,0 +1,242 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__)) unless
|
2
|
+
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
|
+
|
4
|
+
require 'D65'
|
5
|
+
|
6
|
+
#NADOL (Nibbles Away Disk Optimized Language) file
|
7
|
+
class NADOLFile
|
8
|
+
attr_accessor(:filename,:contents)
|
9
|
+
def initialize(filename,contents)
|
10
|
+
@filename=filename
|
11
|
+
@contents=contents
|
12
|
+
end
|
13
|
+
|
14
|
+
def to_s
|
15
|
+
@contents
|
16
|
+
end
|
17
|
+
|
18
|
+
def file_extension
|
19
|
+
".bin"
|
20
|
+
end
|
21
|
+
def hex_dump
|
22
|
+
#assumes file is a multiple of 16 bytes, which it always should be
|
23
|
+
s=""
|
24
|
+
(0..(@contents.length/16)-1).each {|line_number|
|
25
|
+
lhs=""
|
26
|
+
rhs=""
|
27
|
+
start_byte=line_number*16
|
28
|
+
line=@contents[start_byte..start_byte+15]
|
29
|
+
line.each_byte {|byte|
|
30
|
+
lhs+= sprintf("%02X ", byte)
|
31
|
+
rhs+= (byte%128).chr.sub(/[\x00-\x1f]/,'.')
|
32
|
+
}
|
33
|
+
s+=sprintf("%02X\t%s %s\n",start_byte,lhs,rhs)
|
34
|
+
}
|
35
|
+
s
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
#a file on a NADOL dsk that does not appear to be in NADOL tokenised format
|
40
|
+
class NADOLBinaryFile<NADOLFile
|
41
|
+
def disassembly(start_address=0x8000)
|
42
|
+
require 'D65'
|
43
|
+
D65.disassemble(@contents,start_address)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
#file packed by the NADOL EDITOR application.
|
49
|
+
#format is a series of unnumbered lines, where each line has the following format:
|
50
|
+
# <Length> (8-bit: including length byte, line no, contents, zero>
|
51
|
+
# <Tokens and/orCharacters>
|
52
|
+
# <Zero byte> ($00, to mark the end of the S-C Asm source line)
|
53
|
+
# each byte in the line is interpreted as follows:
|
54
|
+
# $00 - end of line marker
|
55
|
+
# $01 - $64 - NADOL tokens
|
56
|
+
# $65-$70 - ??? unknown
|
57
|
+
# $71 - $7f - 1 to F spaces
|
58
|
+
# $80-$FF - ASCII character with high bit set
|
59
|
+
class NADOLTokenisedFile < NADOLFile
|
60
|
+
NADOL_EDITOR_TOKENS = [
|
61
|
+
"?", #00 (so we can use token as an index in to this array)
|
62
|
+
"READ(", #01
|
63
|
+
"FREE(", #02
|
64
|
+
"NOT(", #03
|
65
|
+
"LENGTH(", #04
|
66
|
+
"PDL(", #05
|
67
|
+
"SIZEOF(", #06
|
68
|
+
"LSCRN(", #07
|
69
|
+
"HSCRN(", #08
|
70
|
+
"CHECK(", #09
|
71
|
+
"MAKE(", #0a
|
72
|
+
"SCREEN(", #0b
|
73
|
+
"HEXPACK ",#0c
|
74
|
+
"PROCEDURE ",#0d
|
75
|
+
"ENDPROC", #0e
|
76
|
+
"FUNCTION ",#0f
|
77
|
+
"ENDFUNC", #10
|
78
|
+
"IF ", #11
|
79
|
+
"ELSE", #12
|
80
|
+
"ENDIF", #13
|
81
|
+
"WHILE ", #14
|
82
|
+
"ENDWHILE",#15
|
83
|
+
"DEFINE ", #16
|
84
|
+
"RESULT=", #17
|
85
|
+
"PRINT", #18
|
86
|
+
"PRINTHEX",#19
|
87
|
+
"PRINTBYTE",#1a
|
88
|
+
"LABEL ", #1b
|
89
|
+
"GOTO ", #1c
|
90
|
+
"INVERSE", #1d
|
91
|
+
"NORMAL", #1e
|
92
|
+
"FLASH", #1f
|
93
|
+
"CASE ", #20
|
94
|
+
"GOTOXY(", #21
|
95
|
+
"CLEAR", #22
|
96
|
+
"NEW", #23
|
97
|
+
"HOME", #24
|
98
|
+
"CLREOL", #25
|
99
|
+
"CLREOP", #26
|
100
|
+
"PRBLOCK(",#27
|
101
|
+
"STOP", #28
|
102
|
+
"COPY(", #29
|
103
|
+
"FILL(", #2a
|
104
|
+
"MASK(", #2b
|
105
|
+
"RSECT(", #2c
|
106
|
+
"WSECT(", #2d
|
107
|
+
"RBLOCK(", #2e
|
108
|
+
"WBLOCK(", #2f
|
109
|
+
"WTRACK(", #30
|
110
|
+
"WSYNC(", #31
|
111
|
+
"RECAL(", #32
|
112
|
+
"DISPLAY(",#33
|
113
|
+
"RTRACK(", #34
|
114
|
+
"RSYNC(", #35
|
115
|
+
"BEEP(", #36
|
116
|
+
"DISASM(", #37
|
117
|
+
"TEXT", #38
|
118
|
+
"FORMAT(", #39
|
119
|
+
"SETFORMAT(",#3a
|
120
|
+
"WORKDRIVE ",#3b
|
121
|
+
"INIT ", #3c
|
122
|
+
"LOAD ", #3d
|
123
|
+
"SAVE ", #3e
|
124
|
+
"CATALOG", #3f
|
125
|
+
"DELETE ", #40
|
126
|
+
"RENAME ", #41
|
127
|
+
"PACK ", #42
|
128
|
+
"CONVERT(",#43
|
129
|
+
"INPUT(", #44
|
130
|
+
"LORES", #45
|
131
|
+
"PLOT(", #46
|
132
|
+
"HLINE(", #47
|
133
|
+
"VLINE(", #48
|
134
|
+
"COLOR=", #49
|
135
|
+
"FIND(", #4a
|
136
|
+
"HIRES", #4b
|
137
|
+
"HCOLOR=", #4c
|
138
|
+
"HPLOT", #4d
|
139
|
+
"CALL(", #4e
|
140
|
+
"PR#", #4f
|
141
|
+
"IN#", #50
|
142
|
+
"FILTER(", #51
|
143
|
+
"LIST", #52
|
144
|
+
"RUN", #53
|
145
|
+
"AUXMOVE(",#54
|
146
|
+
"LCMOVE(", #55
|
147
|
+
"DELAY(", #56
|
148
|
+
"INTEGER", #57
|
149
|
+
"BYTE", #58
|
150
|
+
" AND ", #59
|
151
|
+
" OR ", #5a
|
152
|
+
" MOD ", #5b
|
153
|
+
" XOR ", #5c
|
154
|
+
" WITH ", #5d
|
155
|
+
" TO ", #5e
|
156
|
+
" AT ", #5f
|
157
|
+
"TAB(", #60
|
158
|
+
"ENDCASE", #61
|
159
|
+
"MON:", #62
|
160
|
+
"EDIT", #63
|
161
|
+
"SAVE@" #64
|
162
|
+
]
|
163
|
+
|
164
|
+
|
165
|
+
#check whether a given series of bytes can be a valid NADOL tokenised file
|
166
|
+
#heuristics are:
|
167
|
+
# - bytes
|
168
|
+
def NADOLTokenisedFile.can_be_nadol_tokenised_file?(buffer)
|
169
|
+
r=true
|
170
|
+
i=0
|
171
|
+
while i<buffer.length
|
172
|
+
line_length=buffer[i]
|
173
|
+
if buffer[i+line_length-1]!=0 then
|
174
|
+
r=false
|
175
|
+
break
|
176
|
+
end
|
177
|
+
i+=line_length
|
178
|
+
end
|
179
|
+
r
|
180
|
+
end
|
181
|
+
|
182
|
+
def to_s
|
183
|
+
NADOLTokenisedFile.buffer_as_tokenised_file(@contents)
|
184
|
+
end
|
185
|
+
def file_extension
|
186
|
+
".nad"
|
187
|
+
end
|
188
|
+
|
189
|
+
private
|
190
|
+
def NADOLTokenisedFile.buffer_as_tokenised_file(buffer)
|
191
|
+
s=""
|
192
|
+
index=0
|
193
|
+
while (index<buffer.length)
|
194
|
+
line_length=buffer[index]
|
195
|
+
index+=1
|
196
|
+
end_of_line=index+line_length-2
|
197
|
+
while(index<end_of_line)
|
198
|
+
b=buffer[index]
|
199
|
+
if (b<=0x64) then
|
200
|
+
s+=NADOL_EDITOR_TOKENS[b]
|
201
|
+
elsif(b>0x70 and b<0x80) then
|
202
|
+
s+=" "*(b-0x70)
|
203
|
+
elsif(b>=0x80) then
|
204
|
+
s+=(b-0x80).chr
|
205
|
+
else
|
206
|
+
raise sprintf("unknown token %02X at offset %04X",b,index)
|
207
|
+
end
|
208
|
+
index+=1 #move to next char
|
209
|
+
end
|
210
|
+
index+=1 #skip over end-of-line marker
|
211
|
+
s+="\n"
|
212
|
+
end
|
213
|
+
s
|
214
|
+
end
|
215
|
+
|
216
|
+
end
|
217
|
+
|
218
|
+
|
219
|
+
# == Author
|
220
|
+
# Jonno Downes (jonno@jamtronix.com)
|
221
|
+
#
|
222
|
+
# == Copyright
|
223
|
+
# Copyright (c) 2007 Jonno Downes (jonno@jamtronix.com)
|
224
|
+
#
|
225
|
+
#Permission is hereby granted, free of charge, to any person obtaining
|
226
|
+
#a copy of this software and associated documentation files (the
|
227
|
+
#"Software"), to deal in the Software without restriction, including
|
228
|
+
#without limitation the rights to use, copy, modify, merge, publish,
|
229
|
+
#distribute, sublicense, and/or sell copies of the Software, and to
|
230
|
+
#permit persons to whom the Software is furnished to do so, subject to
|
231
|
+
#the following conditions:
|
232
|
+
|
233
|
+
# The above copyright notice and this permission notice shall be
|
234
|
+
# included in all copies or substantial portions of the Software.
|
235
|
+
|
236
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
237
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
238
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
239
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
240
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
241
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
242
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|