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

User Tag List

Результаты опроса: вам нужен плагин для работы с .dsk файлами?

Голосовавшие
66. Вы ещё не участвовали в этом опросе
  • да, read-only

    4 6.06%
  • да, read-write

    44 66.67%
  • нет

    7 10.61%
  • душа просит чего-то другого

    11 16.67%
Страница 9 из 9 ПерваяПервая ... 56789
Показано с 81 по 83 из 83

Тема: вам нужен плагин для работы с образами +3 dos?

  1. #81
    Guru Аватар для Vadim
    Регистрация
    24.07.2008
    Адрес
    г. Курган
    Сообщений
    2,062
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от vinxru Посмотреть сообщение
    Все равно не понял, про "+15 1 Кол-во записей"
    Кол-во записей в последнем экстенте. Если при размере блока 2К, файл имеет размер 16К, то это один описатель файла и ровно 1 экстент. 15-й байт будет 80h.


    Цитата Сообщение от vinxru Посмотреть сообщение
    Решил поставить эксперимент.
    +3DOS неверно интерпретирует размеры блока менее 1К. Нигде не говорится что она может с ними корректно работать. Т.е. она понимает какие-то частные случаи из формата CP/M и не более того. Так что стоит эксперименты делать в других системах.

    Цитата Сообщение от vinxru Посмотреть сообщение
    Короче, размер кластера в 256 байт не поддерживается в +3DOS.
    В крайнем случае можно работать с файлами до 8 Кб.
    Да да. И не стоит заморачиваться. Нужна поддержка стандартных дискет 180К и 720К.
    Цитата Сообщение от vinxru Посмотреть сообщение
    Наверное экстент рассчитывается по формуле:

    экстент = номер_записи_в_каталоге*(ра� �мер_блока/1024) + (длина+16383)/16384
    Я посмотрю доки на выходных и дам точную формулу.

    Скрытый текст

    Profi 5.06 1024K 12Mhz (кварц на 24), палитра, COM-порт, часы, hdd, covox, программатор
    ZX-Spectrum +3, ZX-Spectrum +2B, ZX-Spectrum +2, ZX Spectrum 48, ZX Spectrum 48+
    ZX Evolution Rev B.
    Color 48 + Beta Disk Interface +FDD+YM2149F
    Орель-08БК
    Pentagon-48 (недоссобранный кем-то)
    Pentagon-128 (полуубитый)
    Кворум-128 (в ремонте)
    Магик-05 (в ремонте)
    Robotron 1715
    Корвет ПК8020 и ПК8010
    Amstrad CPC 464
    Amstrad CPC 6128
    [свернуть]

  2. #82
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я вот так сделал, надеюсь правильно.

    ``// needWrite128 - Размер файла в 128 байтных блоках
    ``// bi, be - Массив номеров блоков (кластеров)
    ``// dirSector, dirEntry - Место в каталоге для записи
    ``// entrySize128 - Размер в 128 байтных блоках полностью заполненного элемента каталога
    ``// needDirectoryEntries - Необходимое количество элементов каталога

    ``for(int i=0; i<needDirectoryItems; i++) {
    ````Directory& d = getSector(dirSector)[dirEntry];

    ````// Заполняем каталог
    ````memset(&d, 0, 32);
    ````memcpy(d.name, name, 11);
    ````if(mode2) {
    ``````for(int n=0; bi<be && n<8; n++)
    ````````d.allocation2[n] = *bi++;
    ````} else {
    ``````for(int n=0; bi<be && n<16; n++)
    ````````d.allocation1[n] = *bi++;
    ````}

    ````// Расчитываем длину и экстент
    ````d.extentCounter = (entrySize128/128)*i;
    ````int writeNow128 = min(entrySize128, needWrite128);
    ````if(writeNow128>0) {
    ``````d.extentCounter += (writeNow128-1)>>7;
    ``````d.recordCount = writeNow128&0x7F;
    ``````if(d.recordCount==0) d.recordCount=0x80;
    ``````needWrite128 -= writeNow128;
    ````}

    ````// Следующая запись каталога
    ````dirEntry++;
    ````if(dirEntry==16) dirEntry=0, dirSector++; // 16 это sectorSize/sizeof(Directory)
    ``}

    UPD 22-05-2011: Я каждый день помню о программе. Но писать её на маленьком ноутбуке в командировке оказалось не удобно
    Последний раз редактировалось vinxru; 22.05.2011 в 13:41.

  3. #83
    Veteran Аватар для Nuts_
    Регистрация
    13.07.2009
    Адрес
    Дзержинск
    Сообщений
    1,006
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    кажется мне что все размеры экстентов и блоков брались портирователями cpm по принципу "а мне вот такой нраится"
    недаром в программе 22disk
    используются 100ни (!) описателей под разные виды сp/m от разных компов
    может стоит сделать подержку таких описателей (они там в текстовом виде хранятсья)
    http://www.gaby.de/newdisks.def

    BEGIN SIN1 Sinclair ZX Spectrum+3 DOS - DSDD 3.5"
    DENSITY MFM ,LOW CYLINDERS 80 SIDES 2 SECTORS 9,512 SKEW 2
    SIDE1 0 1,2,3,4,5,6,7,8,9
    SIDE2 1 1,2,3,4,5,6,7,8,9
    ORDER SIDES LABEL AMS1
    BSH 4 BLM 15 EXM 0 DSM 356 DRM 255 AL0 0F0H AL1 0 OFS 1
    END

    BEGIN SIN2 Sinclair ZX Spectrum+3 CP/M 3.0 - SSDD 3.5"
    DENSITY MFM ,LOW CYLINDERS 80 SIDES 1 SECTORS 9,512
    SIDE1 0 1,2,3,4,5,6,7,8,9
    BSH 3 BLM 7 EXM 0 DSM 175 DRM 63 AL0 0C0H AL1 0 OFS 1
    END

Страница 9 из 9 ПерваяПервая ... 56789

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

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

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

Похожие темы

  1. РАБОТЫ С CC'2006!!!
    от C-jeff в разделе Софт
    Ответов: 136
    Последнее: 14.09.2006, 19:11
  2. Утилиты для работы с дисками iS DOS из Windows NT
    от Alexandr Medvedev в разделе Утилиты
    Ответов: 0
    Последнее: 07.09.2006, 13:17
  3. работа с образами HDD в Unreal Speccy
    от elf в разделе Эмуляторы
    Ответов: 15
    Последнее: 30.03.2005, 18:22
  4. ALASM - удобство работы
    от ASMAN в разделе Программирование
    Ответов: 20
    Последнее: 19.03.2005, 21:09

Ваши права

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