User Tag List

Страница 15 из 27 ПерваяПервая ... 111213141516171819 ... ПоследняяПоследняя
Показано с 141 по 150 из 266

Тема: ImageUtils

  1. #141

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Тестирование и фикс ошибок.
    Из существенного - доработал работу с версионностью файлов в ФС Windows для файлов, извлечённых из образов ODS-1. Пока полноценно проверить не получится - создание ODS-1 образов только в планах.
    Поправил специфическую ошибку в Mapper-е - всё таки налетел на неё Вообще Mapper надо бы причесать по полной (хак на хаке костылём подгоняет), но больно неохото туда соваться
    Ради интереса - образ ODS-1 с P/OS записал на ленту в формате DOS-11 Ну, вестимо, все именованные каталоги оно послало к бабушке, но остальное вроде всё записало Надо с получвшейся ленты файлы слить и сравнить с оригиналом

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

    Ещё одно не совсем корректную настройку нашел.
    Идея была в том, что если файл расположен в корневом каталоге (прицел был на ODS-1 с его [0,0], а также на корневой каталог типа RT-11, у которого нет имени), то в DOS-11 такие файлы будут класться в каталог [1,1]. Нуу... Для RT-11 всё ок, а в ODS-1 мне накидали почти всё содержимое [0,0], что практически бесполежно. Добавил проверку - кидаться файлы будут только из корневого каталога без имени.

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

    Ну... Если образ распакован в Windows ФС - то фиг вам.. А из образа ODS-1 берётся ок. Думать надо...

  2. #142

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Переделал обработку [0,0] в ODS-1 и определение целевого каталога при добавлении файла в Windows ФС.
    Теперь и ODS-1 структура в распакованном каталоге выглядит логичней и кода поменьше стало и полученный образ ленты одинаков - независимо от того, берутся файлы из образа ODS-1 или из каталога, куда образ распакован

  3. #143

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вроде требуемый функционал (запись на ленты в формате DOS-11) получен, попутные доработки - прямо, косвенно и не связанные с ним сделаны, на тестировании ошибки и проблемы выявлены и пофиксины, так что возвращаюсь к первоначальному развлечению - поиграться в DOS-11 и, в частности, сделать драйвер и образ для HD

  4. #144

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как обычно, ложился спать - и в засыпании вспомнил.
    Итак, встречаем новую команду в ImageUtils - sq ака squeeze

    Код:
    >ImageUtilsX -dir m013.dsk rx01 rt11  1>m013.dsk.Dir.txt 
    >ImageUtilsX -sq  m013.dsk rx01 rt11  1>m013.dsk.Squeeze.txt 
    >ImageUtilsX -dir m013.dsk rx01 rt11  1>>m013.dsk.Dir.txt 
    
    >type m013.dsk.Dir.txt
    
    FDF331.DOC   302      27-OCT-1989      FDF333.DOC   118      27-OCT-1989
     EMPTY.FIL    61 D    06-FEB-1990      FILE  .BAD     1      09-FEB-1990
    NNGAME.DSK     4 D    29-OCT-1989
     5 files, 421 blocks
     65 Free blocks
    
    
    FDF331.DOC   302      27-OCT-1989      FDF333.DOC   118      27-OCT-1989
    FILE  .BAD     1      09-FEB-1990       EMPTY.FIL    72 D               
     4 files, 421 blocks
     72 Free blocks
    Реализация (включая тестирование) заняла порядка 10 минут - ибо всё сделано через (!!!) конвертирование образа из выбранной ФС в неё же саму с записью в тот же образ То есть по сути - SQUEEZE можно сделать и в другой файл командой

    ImageUtilsX -from m013.dsk rx01 rt11 -to m013.new.dsk rx01 rt11

    Осталось разобраться - почему показывает разное количество свободных блоков - с одной стороны, это объясняется тем, что метод создания образа ФС RT-11 в настоящее время динамически вычисляет - сколько блоков будет отведено под каталог, но с другой стороны - разница должна быть чётном в этом случае.

    Чуть позже - исследую процесс - возможно - есть ошибка в создании описания свободной области в конце ФС

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

    Проверил под RT-11 - получается, что в моём методе создания ФС RT-11 есть ошибка - количество сегментов каталога одинаковое (4) и правильно количество свободных блоков - 65. Нуштош - осталось пофиксить

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

    Другое дело
    Код:
    >ImageUtilsX -dir m013.dsk rx01 rt11  1>m013.dsk.Dir.txt 
    >ImageUtilsX -sq  m013.dsk rx01 rt11  1>m013.dsk.Squeeze.txt 
    >ImageUtilsX -dir m013.dsk rx01 rt11  1>>m013.dsk.Dir.txt 
    
    >type m013.dsk.Dir.txt
    
    FDF331.DOC   302      27-OCT-1989      FDF333.DOC   118      27-OCT-1989
     EMPTY.FIL    61 D    06-FEB-1990      FILE  .BAD     1      09-FEB-1990
    NNGAME.DSK     4 D    29-OCT-1989
     5 files, 421 blocks
     65 Free blocks
    
    
    FDF331.DOC   302      27-OCT-1989      FDF333.DOC   118      27-OCT-1989
    FILE  .BAD     1      09-FEB-1990       EMPTY.FIL    65 D               
     4 files, 421 blocks
     65 Free blocks
    Не учёл описания того, сколько блоков на конкретном устройства испоользует конкретная ФС. На DX - 2002 физических секторов, 501 логический блок (по 512 байт), но RT использует только 494 - где то вроде попадалось объяснение, что первая физическая дорожка (26 секторов) в Interchange формате используется для чего-то, вот поэтому первые 7 блоков (28 секторов), которые сдвинуты через интерлив в конец дискеты (ЕМНИП) и не используются

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

    Немного ошибся. 26 секторов в начале (сдвиг на дорожку) и 2 сектора в конце (так как 2002 на 4 нацело не делится, так что для RT-11 на дискете 500 блоков или 200 секторов)

  5. #145

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Следующая большая доделка - поддержка лент в формате BRU и, скорей всего - его же диски

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

    А, да, ещё поддержку лент в формате tpc скорей всего добавлю

  6. #146

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Планы строим, планы ломаются
    Очередная доработка (пока в некоторой степени ещё концепт) - для DOS-11 (и для XXDP) добавил сохранение блоков, которые помечены как свободные, в файлы. Аналог LostAndFound из ФС RT-11. В чём то задача посложней (файлы могут быть не непрерывными), в чём то - проще - есть понятие linked файлов - блоки у такие файлов связаны в цепочку - по сути - прообраз механизма таблицы FAT. Ну и специфический вариант - образы TU56, которое умеет писать блоки не только в прямом, но и в обратном направлении.

  7. #147

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Доработка вывода информации о ODS-1 (привёл к общему формату) и вывод информации о диапазонах блоков - если диапазон относится к одному и тому же файлу и в диапазон нет плохих секторов - иначе диапазон бьётся на части
    Выглядит так.
    Код:
    # $VOLUM.INF - info about ODS-1 volume on RX50 device.
    # Produced by ODS1FileSystem
    
    # Volume name                          : CBISIS
    # Volume structure level               : ODS-1 (402)
    # Volume owner's UIC                   : [200,200]
    # Volume protection                    : [RWCD,RWCD,RWCD,RWCD]
    # Default file protection              : [RWED,RWED,RWED,RWED]
    # Default extension                    : 5
    # Volume creation date                 : 30-DEC-1985 04:54:34
    # Volume serial number                 : 0
    
    # System independent volume name       : CBISIS      
    # System independent volume owner name : [128,128]   
    # System independent format type       : DFCFILE11A  
    
    # Index file bitmap size               : 1 block(s)
    # Index file bitmap LBN #              : 2
    # Maximum number                       : 200 of files allowed
    # Storage bitmap cluster factor        : 1
    # Disk device type                     : 0
    # Volume characteristics               : CH_NDC, CH_NAT
    # Default window size                  : 7
    # Directory pre-access limit           : 3
    
    # Block size  : 512
    # Block Count : 800
    
    # File  1 [0,0]INDEXF.SYS;1
    # File  2 [0,0]BITMAP.SYS;1
    # File  3 [0,0]BADBLK.SYS;1
    # File  4 [0,0]000000.DIR;1
    # File  5 [0,0]CORIMG.SYS;1
    # File  6 [0,0]USERFILES.DIR;1
    # File  7 [0,0]PROCBI.DIR;1
    # File  8 [PROCBI]GRAIL.TSK;1
    # File  9 [PROCBI]PROCBI.MSG;3
    # File 10 [PROCBI]PROCBI.INS;1
    # File 11 [PROCBI]PROCBI.MSG;2
    # File 12 [0,0]BASIC.DIR;1
    # File 13 [BASIC]BASCLU.TSK;1
    # File 14 [BASIC]BASTSK.TSK;1
    # File 15 [BASIC]PROBASIC.ERR;1
    # File 16 [BASIC]BASIC.INS;1
    
    
    Logical blocks N   0     -> 1:[0,0]INDEXF.SYS;1 - BootBlock
    Logical blocks N   1     -> 1:[0,0]INDEXF.SYS;1 - HomeBlock
    Logical blocks N   2     -> 1:[0,0]INDEXF.SYS;1 - Index file headers bitmap
    Logical blocks N   3     -> 1:[0,0]INDEXF.SYS;1 - Header of 1:INDEXF.SYS;1
    Logical blocks N   4     -> 1:[0,0]INDEXF.SYS;1 - Header of 2:BITMAP.SYS;1
    Logical blocks N   5     -> 1:[0,0]INDEXF.SYS;1 - Header of 3:BADBLK.SYS;1
    Logical blocks N   6     -> 1:[0,0]INDEXF.SYS;1 - Header of 4:000000.DIR;1
    Logical blocks N   7     -> 1:[0,0]INDEXF.SYS;1 - Header of 5:CORIMG.SYS;1
    Logical blocks N   8     -> 1:[0,0]INDEXF.SYS;1 - Header of 6:USERFILES.DIR;1
    Logical blocks N   9     -> 1:[0,0]INDEXF.SYS;1 - Header of 7:PROCBI.DIR;1
    Logical blocks N  10     -> 1:[0,0]INDEXF.SYS;1 - Header of 8:GRAIL.TSK;1
    Logical blocks N  11     -> 1:[0,0]INDEXF.SYS;1 - Header of 9:PROCBI.MSG;3
    Logical blocks N  12     -> 1:[0,0]INDEXF.SYS;1 - Header of 10:PROCBI.INS;1
    Logical blocks N  13     -> 1:[0,0]INDEXF.SYS;1 - Header of 11:PROCBI.MSG;2
    Logical blocks N  14     -> 1:[0,0]INDEXF.SYS;1 - Header of 12:BASIC.DIR;1
    Logical blocks N  15     -> 1:[0,0]INDEXF.SYS;1 - Header of 13:BASCLU.TSK;1
    Logical blocks N  16     -> 1:[0,0]INDEXF.SYS;1 - Header of 14:BASTSK.TSK;1
    Logical blocks N  17     -> 1:[0,0]INDEXF.SYS;1 - Header of 15:PROBASIC.ERR;1
    Logical blocks N  18     -> 1:[0,0]INDEXF.SYS;1 - Header of 16:BASIC.INS;1
    Logical blocks N  19- 47 -> 1:[0,0]INDEXF.SYS;1 - Index file header - not used
    Logical blocks N  48     -> 4:[0,0]000000.DIR;1
    Logical blocks N  49- 50 -> 2:[0,0]BITMAP.SYS;1
    Logical blocks N  51     -> 6:[0,0]USERFILES.DIR;1
    Logical blocks N  52     -> 7:[0,0]PROCBI.DIR;1
    Logical blocks N  53- 58 -> 8:[PROCBI]GRAIL.TSK;1
    Logical blocks N  59     -> 8:[PROCBI]GRAIL.TSK;1  !! bad block !!
    Logical blocks N  60- 76 -> 8:[PROCBI]GRAIL.TSK;1
    Logical blocks N  77     -> 8:[PROCBI]GRAIL.TSK;1  !! bad block !!
    Logical blocks N  78- 94 -> 8:[PROCBI]GRAIL.TSK;1
    Logical blocks N  95     -> 8:[PROCBI]GRAIL.TSK;1  !! bad block !!
    Logical blocks N  96-148 -> 8:[PROCBI]GRAIL.TSK;1
    Logical blocks N 149     -> 9:[PROCBI]PROCBI.MSG;3
    Logical blocks N 150     -> 10:[PROCBI]PROCBI.INS;1
    Logical blocks N 151     -> 11:[PROCBI]PROCBI.MSG;2
    Logical blocks N 152     -> 12:[0,0]BASIC.DIR;1
    Logical blocks N 153-182 -> 13:[BASIC]BASCLU.TSK;1
    Logical blocks N 183-194 -> 14:[BASIC]BASTSK.TSK;1
    Logical blocks N 195     -> 14:[BASIC]BASTSK.TSK;1  !! bad block !!
    Logical blocks N 196-321 -> 14:[BASIC]BASTSK.TSK;1
    Logical blocks N 322     -> 14:[BASIC]BASTSK.TSK;1  !! bad block !!
    Logical blocks N 323-329 -> 14:[BASIC]BASTSK.TSK;1
    Logical blocks N 330-358 -> 15:[BASIC]PROBASIC.ERR;1
    Logical blocks N 359     -> 16:[BASIC]BASIC.INS;1
    Logical blocks N 360-798
    Logical blocks N 799     -> 3:[0,0]BADBLK.SYS;1
    
    Physical blocks N   0-  6
    Physical blocks N   7     -> 3:[0,0]BADBLK.SYS;1
    Physical blocks N   8-  9
    Physical blocks N  10     -> 1:[0,0]INDEXF.SYS;1 - BootBlock
    Physical blocks N  11     -> 1:[0,0]INDEXF.SYS;1 - Header of 3:BADBLK.SYS;1
    Physical blocks N  12     -> 1:[0,0]INDEXF.SYS;1 - HomeBlock
    Physical blocks N  13     -> 1:[0,0]INDEXF.SYS;1 - Header of 4:000000.DIR;1
    Physical blocks N  14     -> 1:[0,0]INDEXF.SYS;1 - Index file headers bitmap
    Physical blocks N  15     -> 1:[0,0]INDEXF.SYS;1 - Header of 5:CORIMG.SYS;1
    Physical blocks N  16     -> 1:[0,0]INDEXF.SYS;1 - Header of 1:INDEXF.SYS;1
    Physical blocks N  17     -> 1:[0,0]INDEXF.SYS;1 - Header of 6:USERFILES.DIR;1
    Physical blocks N  18     -> 1:[0,0]INDEXF.SYS;1 - Header of 2:BITMAP.SYS;1
    Physical blocks N  19     -> 1:[0,0]INDEXF.SYS;1 - Header of 7:PROCBI.DIR;1
    Physical blocks N  20     -> 1:[0,0]INDEXF.SYS;1 - Header of 12:BASIC.DIR;1
    Physical blocks N  21     -> 1:[0,0]INDEXF.SYS;1 - Index file header - not used
    Physical blocks N  22     -> 1:[0,0]INDEXF.SYS;1 - Header of 8:GRAIL.TSK;1
    Physical blocks N  23     -> 1:[0,0]INDEXF.SYS;1 - Header of 13:BASCLU.TSK;1
    Physical blocks N  24     -> 1:[0,0]INDEXF.SYS;1 - Header of 9:PROCBI.MSG;3
    Physical blocks N  25     -> 1:[0,0]INDEXF.SYS;1 - Header of 14:BASTSK.TSK;1
    Physical blocks N  26     -> 1:[0,0]INDEXF.SYS;1 - Header of 10:PROCBI.INS;1
    Physical blocks N  27     -> 1:[0,0]INDEXF.SYS;1 - Header of 15:PROBASIC.ERR;1
    Physical blocks N  28     -> 1:[0,0]INDEXF.SYS;1 - Header of 11:PROCBI.MSG;2
    Physical blocks N  29     -> 1:[0,0]INDEXF.SYS;1 - Header of 16:BASIC.INS;1
    Physical blocks N  30- 54 -> 1:[0,0]INDEXF.SYS;1 - Index file header - not used
    Physical blocks N  55     -> 4:[0,0]000000.DIR;1
    Physical blocks N  56     -> 1:[0,0]INDEXF.SYS;1 - Index file header - not used
    Physical blocks N  57     -> 2:[0,0]BITMAP.SYS;1
    Physical blocks N  58- 59 -> 1:[0,0]INDEXF.SYS;1 - Index file header - not used
    Physical blocks N  60     -> 2:[0,0]BITMAP.SYS;1
    Physical blocks N  61     -> 8:[PROCBI]GRAIL.TSK;1
    Physical blocks N  62     -> 6:[0,0]USERFILES.DIR;1
    Physical blocks N  63     -> 8:[PROCBI]GRAIL.TSK;1
    Physical blocks N  64     -> 7:[0,0]PROCBI.DIR;1
    Physical blocks N  65- 68 -> 8:[PROCBI]GRAIL.TSK;1
    Physical blocks N  69     -> 8:[PROCBI]GRAIL.TSK;1  !! bad block !!
    Physical blocks N  70- 88 -> 8:[PROCBI]GRAIL.TSK;1
    Physical blocks N  89     -> 8:[PROCBI]GRAIL.TSK;1  !! bad block !!
    Physical blocks N  90-108 -> 8:[PROCBI]GRAIL.TSK;1
    Physical blocks N 109     -> 8:[PROCBI]GRAIL.TSK;1  !! bad block !!
    Physical blocks N 110-156 -> 8:[PROCBI]GRAIL.TSK;1
    Physical blocks N 157     -> 9:[PROCBI]PROCBI.MSG;3
    Physical blocks N 158-159 -> 8:[PROCBI]GRAIL.TSK;1
    Physical blocks N 160     -> 10:[PROCBI]PROCBI.INS;1
    Physical blocks N 161     -> 13:[BASIC]BASCLU.TSK;1
    Physical blocks N 162     -> 11:[PROCBI]PROCBI.MSG;2
    Physical blocks N 163     -> 13:[BASIC]BASCLU.TSK;1
    Physical blocks N 164     -> 12:[0,0]BASIC.DIR;1
    Physical blocks N 165-190 -> 13:[BASIC]BASCLU.TSK;1
    Physical blocks N 191-195 -> 14:[BASIC]BASTSK.TSK;1
    Physical blocks N 196     -> 13:[BASIC]BASCLU.TSK;1
    Physical blocks N 197     -> 14:[BASIC]BASTSK.TSK;1
    Physical blocks N 198     -> 13:[BASIC]BASCLU.TSK;1
    Physical blocks N 199-208 -> 14:[BASIC]BASTSK.TSK;1
    Physical blocks N 209     -> 14:[BASIC]BASTSK.TSK;1  !! bad block !!
    Physical blocks N 210-337 -> 14:[BASIC]BASTSK.TSK;1
    Physical blocks N 338     -> 14:[BASIC]BASTSK.TSK;1  !! bad block !!
    Physical blocks N 339     -> 14:[BASIC]BASTSK.TSK;1
    Physical blocks N 340-368 -> 15:[BASIC]PROBASIC.ERR;1
    Physical blocks N 369     -> 16:[BASIC]BASIC.INS;1
    Physical blocks N 370-799
    Теперь проверки-разборки изменений для других ФС
    Потом проверки-разборки с потерянными файлами в ODS-1

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

    anasana(08.07.2024)

  8. #148

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Казалось, не сильно сложный процесс, для RT-11 и DOS-11 уже сделал, но.. вылезли НЮАНСЫ Воюю с ними

  9. #149

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как ни странно, на тестировании работы с потерянными файлами - выловил косяк для файлов большОго, если быть точнее - бОльшего 65535 блоков размера.

    По началу вообще не мог понять - ОДИН и ровно ОДИН блок показывался, как принадлежащий двум файлам. Ну, такое бывает, когда том с повреждениями, только вот, по идее, этот том не должен был иметь повреждений Да и прикол в том, что он показывался, что принадлежит ДВАЖДЫ ОДНОМУ и ТОМУ ЖЕ файлу В общем - долгое гоняние под отладчиком с постепенным сужением подозрительного куска кода, пока наконец все не сошлось в методе, который по виртуальному номера блока (файла) не вычисляет логической номер блока (тома). И оказало, что переменная цикла (счётчик сегментов файла) была описана как байтовая - да, в принципе если файл не слишком большой или не слишком сегментированный, то норм, но для этого файла байта как счётчика просто не хватало, байт после значения 255 уходил в ноль и цикл начинал смотреть сегоменты опять с нулевого В общем, с ходу по внешним признакам понять - где накосячил... Не получилось Пришлось долго исследовать программу под микроскопом

  10. #150

    Регистрация
    16.07.2021
    Адрес
    г. Черкесск
    Сообщений
    124
    Спасибо Благодарностей отдано 
    56
    Спасибо Благодарностей получено 
    14
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    байт после значения 255 уходил в ноль
    Известная ошибка, многие "нарывались". В Канаде куча людей получила большую дозу радиации (программеры использовали байтовый счетчик без тормозов для управления диафрагмой аппарата лучевой терапии).

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

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

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

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

Ваши права

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