Важная информация

User Tag List

Страница 7 из 15 ПерваяПервая ... 34567891011 ... ПоследняяПоследняя
Показано с 61 по 70 из 145

Тема: ImageUtils

  1. #61
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    6,996
    Спасибо Благодарностей отдано 
    285
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Попались в руки XXDP образы, снятые с MSCP дисков. И оказалось, что в плане работы по крайне мере с такими образами и исходный код и мой вариант ведут себя.. не совсем правильно. Подправил ImageUtils. Вроде стал более адекватно извлекать инфу и более правильно показывает распределение блоков. Но поскольку таких образов у меня всего несколько - проверять проверять и проверять

    - - - Добавлено - - -

    Один из образов достаточно интересный. На нём нашлись файлы, отсутствующие на широко ходящих образах. Например, начало файла FILES.TXT
    Код:
         This is an unsupported file which lists the diagnostic
         & utilities, found on the TK25 Tape, RC25 Disk and the
         2 UFD & 6 Field Service Diskettes, for the MICRO PDP11
         (LCP-5) & MICRO 11/73/74 (ORION). LAST UPDATE: 5/21/85
    ------------------------------------------------------------------
    Product  Number  &  Name		Object Media	Kit Number
    ------------------------------------------------------------------
    		TK25 TAPE
    CZUTK??  MICRO-11 TK25 USR TST		AU-T995?-MC     ZYA03-P6
    -----------------------------------------------------------------
    		RC25 DISK
    CZURC??  MICRO-11 RC25 USR TST		BK-T996?-MC     ZYA03-P4
    -----------------------------------------------------------------
    		RX50 DISKETTES
    CZUF1C0  MICRO-11 USER TSTS #1          BL-T993?-MC     ZYA04-P3 & ZYA03-P3
    CZUF2C0  MICRO-11 USER TSTS #2          BL-T994?-MC     "          "
    
    CZXD1??  FIELD SERVICE TESTS 1		BL-T541?-MC	ZYA04-P3
    CZXD2??  FIELD SERVICE TESTS 2		BL-T542?-MC 	"
    CZXD3??  FIELD SERVICE TESTS 3		BL-T565?-MC 	"
    CZXD4??  FIELD SERVICE TESTS 4		BL-T583?-MC 	"
    CZXD5??  FIELD SERVICE TESTS 5		BL-T959?-MC	"
    CZXD6??  FIELD SERVICE TESTS 6		BL-U131?-MC	"

  2. #61
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #62
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    6,996
    Спасибо Благодарностей отдано 
    285
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Попался необычный образ дискеты
    (там и фото есть)
    Геометрия - специфическая (диск односторонний, но я буду использовать понятие цилиндр).

    Первый цилиндр - ака RX01 - то есть 26 секторов по (видимо) 128 байт. Видимо - потому как вычитывалось программой, которая их записала как 512-байтные сектора. Ну и как принято это на RX01/RX02 - драйвер угоняет этот цилиндр в конец дискеты.

    Дальше идут цилиндры 16-ти секторные по 512 байт. По крайне мере так они смотрятся в обрбазе - как оно реально... Хтож его знать?.. При это есть интерлив в 4 сектора при переходе между цилиндрами. То есть первый цилиндр - сектора 0..15, второй цилиндр - 4..15-0..3 и так далее.

    На раскалывание формата ушло.. Примерно с час - сначаля общая геометрия, потом интрелив.

    А на добавление этого варинта в ImageUtils - нуу.... минут 5 Описать новое устройство и добавить метод, работающий с интерливом. Если бы ещё не посадил тупую ошибку - управился бы за пару минут

    А, да, с неделю(!) искал прогу (и наткнулся случайно!), которая смогла бы распаковать .IMD Под Windows, ессвенно С прогой повезло - есть исходники (да ещё и на С# !! ) - так что опять всплыла давняя мысль - добавить в ImageUtils функционал работы не только с простыми образами, но и со всякими .IMD, .TD0 и т.п. Когда получится - не знаю, но теперь стало реальней - с чем-то уже написанным (и доработкой под себя) мне всегда было проще работать, чем начинать писать с нуля
    Последний раз редактировалось Hunta; 22.07.2023 в 22:11.

  4. #63
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    6,996
    Спасибо Благодарностей отдано 
    285
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    "В общественном парижском туалете
    Есть надписи на русском языке!"

    Особо не пугаться, ссылка ведёт на архив на bitsaver-е

  5. #64
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    6,996
    Спасибо Благодарностей отдано 
    285
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Закопался в DisAsm, но понадобилось мне (для дизасма прог от DOS-11) распаковывать и образы DOS-11, а там... оставалась с давних пор недоделка.

    У них с XXDP очень похожие файловые системы, но XXDP хранит всё в одном каталоге (и не показывает его), а вот DOS-11 позволяет иметь двухуровневую. Что, собственно, и не было доделано в ImageUtils (брался только первый подкаталог). Допилил - теперь посмотрим - не слетит ли на каком DOS-11 образе

  6. #65
    Master
    Регистрация
    12.04.2009
    Адрес
    Одесса
    Сообщений
    617
    Спасибо Благодарностей отдано 
    311
    Спасибо Благодарностей получено 
    82
    Поблагодарили
    60 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    от надо бы и экстрактор из .hfe тоже в простом виде исходники где-то нацапать, у меня такое ощущение, что у COPY2.MAC
    с дискеты "FW_Installation_and_Test_V17.0_for_FW_Series_ 6-15-1988_RX02.img" ( http://bitsavers.org/bits/SMS/ )
    первые четыре сектора в нулях, как бы узнать что в потоковом .hfe по этим местам

  7. #66
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    6,996
    Спасибо Благодарностей отдано 
    285
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от anasana Посмотреть сообщение
    у меня такое ощущение, что у COPY2.MAC
    Цитата Сообщение от anasana Посмотреть сообщение
    первые четыре сектора в нулях,
    Ну, там не ощущение, там нули и именно 4 сектора. Уже успел забыть, как вскрывал этот образ. И да, надо будет попробовать покопаться с hfe.

    Пока же копался с рефакторингом, исправлением ошибок и допиливанием функционала.

    Из существенного - доделал мапинг структуры home блока ФС RT11 на класс C#, так что весь парсинг home блока занимает одну строчку кода Плюс всякие проверки - что там в полях класса получилось.

    И ещё - началось интересное - я начал добавлять-доделывать генерацию образов в ImageUtils. Причём, собираюсь сделать это по той же схем, что и с маппингом сырых данных на классы - изменение значения члена класса будет приводить к изменению сырых данных. Часть работы (описание маппинга) уже сделана. Осталось (подумать и) сделать сохранение.

    Первоначальная отработка механизма будет сделана на ФС RT-11 - в силу её, с одной стороны, её простоты, а с другой - в некоторых местах структура данных несколько более сложно описана в маппинге - в частности, это позволило исправить одну существенную ошибку (которая на написанные ранее код не влияла). Возможно, эту часть работы успею сделать за остаток отпуска (январские праздники), но... это - непредказуемо..
    Последний раз редактировалось Hunta; 02.01.2024 в 01:29.

  8. Этот пользователь поблагодарил Hunta за это полезное сообщение:

    anasana (30.12.2023)

  9. #67
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    6,996
    Спасибо Благодарностей отдано 
    285
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Первый вариант в первом приближении есть. Выглядит всё примерно так:
    Код:
          HomeBlock_S hbtest = new(ImageData[1].Bytes);
          int test = hbtest.CheckSum;
          hbtest.CheckSum = 123;
          hbtest.VolumeID = "Demo";
          hbtest.BUPHomeBlock.BackupName = "TESTEST";
    ImageData - образ (считанный или формируемый для записи) с поддержкой, где требуется, интерлейса. Из него можно получить данные блочно, в примере формируется образ блока 1, из которого получаем данные для доступа к байтам (ещё сделан вариант словного (16 бит) доступа). И эти данные связываются с классом, где описана раскладка полей. Всё - дальше типизированный доступ к полям на чтение и запись. Если какое-то поле - тоже в свою очередь класс со своими полями (на примере BUPHomeBlock) - всё прозрачно уходит туда.

    Не все преобразования ещё сделаны (отталкиваюсь от принципа - когда понадобиться) и не всё ещё проверено, но более менее работает.

    Этот первый вариант не очень нравится (описание маппер-класса получилось громоздким), но по крайне мере не пришлось лезть глубоко в .NET. Учитывая, для потребителя всё это скрыто - на этапе экспериментов - пойдёт. Хотелось сделать с созданием объекта динамического прокси-класса (где были бы скрыты все сложности описания), но с этим надо ещё разобраться..

  10. #68
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    6,996
    Спасибо Благодарностей отдано 
    285
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не всё оказалось работающим - код спотыкался на полях-массивах (типа Bad Block Replacement Table - 65 слов)

    Проблемма была в том, что считанный образ - это массив байт, а тут надо было отобразить на массив слов и первая реализация кода для данного сценария оказалась неправильной.

    Побившись головой о всякое, почесав всё возможное почесуемое - вариант два в первом приближении есть

    Опять тестирование - всё ли работает как надо Особенно учитываю большое количество общего кода между ImageUtils и DisAsm-11X Ну и - рефакторинг
    Последний раз редактировалось Hunta; 04.01.2024 в 02:58.

  11. #69
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    6,996
    Спасибо Благодарностей отдано 
    285
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Создание образа RT-11 в первом приближении работает. В процессе отладки исправлены найденные ошибки, неточности и недоработки преобразований.
    Основная цель - сделать возможным создание (при наличии всей необходимой информации и файлов) идентичного исходному образа - сделалась немного ближе
    Последний раз редактировалось Hunta; 06.01.2024 в 19:30.

  12. #70
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    6,996
    Спасибо Благодарностей отдано 
    285
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Поигрался в первым вариантом реализации - понял, какие куски кода будут повторяться, а так же - чего ещё будет полезным.
    Пример - как инициализируется home блок:
    Код:
        private void InitHomeBlock()
        {
          // homeblock
          ImageData.SetBlk(val: 0, startBlock: 1);
    
          // defaults for home block, according to [VFFM91], page 1-3
    
          // write the bad block replacement table, no idea about it, took from TU58 and RL02 image and from Don North
          homeBlock.BadBlockReplacementTable.Clear();
    
          homeBlock.DWAreaInHomeBlock.DWH_C0 = "000000".Octal();
          homeBlock.DWAreaInHomeBlock.DWH_C1 = "170000".Octal();
          homeBlock.DWAreaInHomeBlock.DWH_C2 = "007777".Octal();
    
          homeBlock.Reserved1 = 0;
    
          // INITIALIZE/RESTORE data area 0204-0251 - leave blank
    
          homeBlock.InitRestoreArea.SavedDirectoryHeader.TotalNumberOfSegments = 0;
          homeBlock.InitRestoreArea.SavedDirectoryHeader.NextSegment = 0;
          homeBlock.InitRestoreArea.SavedDirectoryHeader.HighestExtent = 0;
          homeBlock.InitRestoreArea.SavedDirectoryHeader.ExtraBytePerEntry = 0;
          homeBlock.InitRestoreArea.SavedDirectoryHeader.StartDataBlock = 0;
    
          DirectoryEntry_S temp = new()
          {
            Status = F_ESTAT.E_EMPTY,
            FullName = "",
            //Name = "",
            //Extension = "",
            FileSize = 0,
            Time = 0,
            Used = 0,
            Channel = 0,
            JobNum = 0,
            Date = new(0)
          };
    
          homeBlock.InitRestoreArea.Saved1DirectoryEntry = temp;
          homeBlock.InitRestoreArea.Saved2DirectoryEntry = temp;
    
          // BUP information area 0252-0273 as 0's
          homeBlock.BUPHomeBlock.BUPTag = "";
          homeBlock.BUPHomeBlock.BackupName = "";
          homeBlock.BUPHomeBlock.BackupType = "";
          homeBlock.BUPHomeBlock.CurrentVolumeNumber = 0;
          homeBlock.BUPHomeBlock.MaximumVolumeNumber = 0;
          homeBlock.BUPHomeBlock.SmallestVolumeSize = 0;
          homeBlock.BUPHomeBlock.TotalVolumeSize = 0;
    
          homeBlock.Reserved2.Clear();
          homeBlock.UserArea.Clear();
          homeBlock.FirstDataBlockNumber = 0;
          homeBlock.RTE = 0;
          homeBlock.Reserved3.Clear();
    
          homeBlock.ClusterSize = 1;
          homeBlock.DirectoryFirstBlockNumber = 6;
          homeBlock.SystemVersion = "V05";         // 12 char volume id. V3A, or V05, ...
          homeBlock.VolumeID = "RT11A";            // always 12 chars long, right padded with spaces
          homeBlock.OwnerName = "";                // 12 char owner name
          homeBlock.SystemID = "DECRT11A";         // 12 char system id
          homeBlock.Reserved4 = 0;
    
          homeBlock.UpdateCheckSumms();            // build checksum over all words
        }

Страница 7 из 15 ПерваяПервая ... 34567891011 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •