Пример #1
0
        static void ShowDir(string imagePathFilename)
        {
            byte[]    bamBlock;
            ArrayList dirEntryList = new ArrayList();

            //string imagePathFilename = @"free.d64";
            byte[] imageData     = DiskImageFile.ReadFile(imagePathFilename);
            int    imageDataType = DiskImageFile.GetImageDataType(imagePathFilename);

            bamBlock = DOSDisk.ReadBAMBlock(imageData, imageDataType);
            Console.Write("0 \"{0}\" {1} {2}"
                          , Core.ConvertPETSCII2ASCII(DOSDisk.GetDiskName(bamBlock, imageDataType))
                          , Core.ConvertPETSCII2ASCII(DOSDisk.GetDiskID(bamBlock, imageDataType))
                          , Core.ConvertPETSCII2ASCII(DOSDisk.GetDOSType(bamBlock, imageDataType)));
            Console.Write("    ");
            Console.Write("|{0}", "DirIndex");
            Console.Write("|{0}", "  GEOS  ");
            Console.Write("|{0}", "MD5");
            Console.WriteLine();
            dirEntryList = DOSDisk.GetDirEntryList(bamBlock, imageData, imageDataType);
            int dirIndex = 0;

            foreach (byte[] de in dirEntryList)
            {
                dirIndex++;
                if (!DOSDisk.IsDirEntryEmpty(de))
                {
                    string filename = Core.ConvertPETSCII2ASCII(DOSDisk.GetFilename(de));
                    Console.Write("{0,-5}\"{1}\"{2}{3}{4}{5}"
                                  , DOSDisk.GetFileSizeInBlocks(de).ToString()
                                  , filename
                                  , Core.ConvertPETSCII2ASCII(DOSDisk.GetPartAfterFilename(de))
                                  , DOSDisk.GetSplatFileSign(de)
                                  , DOSDisk.GetFileTypeExt(de)
                                  , DOSDisk.GetLockFlagSign(de)
                                  );
                    Console.Write("  ");
                    Console.Write("|{0,8}", dirIndex.ToString());
                    Console.Write("|{0} {1}"
                                  , (GEOSDisk.IsGeosFile(de) ? GEOSDisk.GetGEOSFiletypeName(de) : "   ")
                                  , (GEOSDisk.IsGeosFile(de) ? GEOSDisk.GetGEOSFileStructureName(de) : "    ")
                                  );
                    Console.Write("|{0}"
                                  , DOSDisk.GetMD5ByCBMFile(de, imageData, imageDataType)
                                  );
                    Console.WriteLine();


                    //if (GEOSDisk.IsGeosFile(de))
                    //{
                    //    DiskImageFile.WriteCVTFile(de, imagePathFilename, filename);
                    //}
                    //else
                    //{
                    //    DiskImageFile.WriteFileBlockChain(de[1], de[2], imagePathFilename, filename);
                    //}
                }
            }
            Console.WriteLine("{0} BLOCKS FREE."
                              , DOSDisk.GetFreeBlocks(bamBlock).ToString()
                              );
        }