User Tag List

Показано с 1 по 10 из 238

Тема: Самодельный комп на i8080

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #9

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sayman
    Интересно, откуда вы взяли, что у CP/M были организации секторов в группы (кластера?). Если я верно помню, то у CP/M в классическом виде сектор был 128 байт и только позднее каждый производитель наделал свои стандарты этой ФС, по которым сектор мог быть увеличен до 1 кб.
    Совсем не понял этот абзац. И терминология тоже неясная. Кластер это терминология из MSDOS и это совсем не то, что CP/M-группы. CP/M-группа это англоязычный термин, в отечественой литературе обычно это заменяют словом CP/M-блок. Иными словами, это минимально расходуемый фрагмент диска, и его используют для того, чтобы сократить число записей в каталоге.

    Под блоком понимается минимальный размер участка диска, который можно занять, т.е отметить занятым. Размер блока может быть 1, 2, 4, 8 или 16 килобайт. И так это было даже в самой первой CP/M версии 1.3. Таким образом, даже, если CP/M-файл имеет размер всего один логический сектор в 128 байт, то на диске всё-равно занимается целый блок.

    Физический сектор может быть увеличен или уменьшен до любого размера. Именно это и есть свойство CP/M, что позволило ей победить. CP/M вообще наплевать, как физически устроен диск и на размер физического сектора, тем более. BDOS работает через всего 2 подпрограммы - считать 128 байт и записать 128 байт. 128 байт называют логическим сектором, чтобы говорить, что CP/M имеет обмен логическими секторами. А BDOS занимает пространство диска с кратностью в блок, т.е в минимальном случае - это 8 логических секторов (1 кб).

    Исторически первым форматом дисков был формат дисковода ЭВМ MDS-800, что также применён в СМ-1800. Этот дисковод называется ЕС-5074 и имеет формат 77 треков, 26 физических секторов по 256 байт в каждом. Чем больше размер сектора, тем меньше пространства диска впустую тратится на межсекторные гапы. Поэтому у СИНКЛЕРА с секторами в 256 байт на диске всего 640 кб, в MSDOS с секторами 512 на диск влезает 720К, а у КОРВЕТА с секторами в 1024 байта размер диска 800 кб (а у MAC - 880 кб, т.к там 1 сектор на весь трек). ВГ93 не может иметь сектора большего размера, а вот РК-КНГМД может иметь 1 сектор на весь трек. За счет чего ёмкость увеличивается на 20%).

    Цитата Сообщение от Sayman
    У ПРОФИ - диск DD, 160 треков, 5 секторов на трек, сектор 1024 байта.
    Это обычный формат. Он у всех компьютеров с контроллером от КОРВЕТА. Гораздо сложнее найти компьютер, у которого был бы иной формат.

    Цитата Сообщение от Sayman
    корень диска это список юзеров от 0 до 15
    В CP/M нет корня диска. А если есть, то это не CP/M.

    Цитата Сообщение от Sayman
    у Вадима была своя версия DOS изначально полностью совместимая с CP/M, но с FAT в качестве ФС.
    FAT это не файловая система, хотя иногда ошибочно так говорят. FAT это область на диске.

    Если есть FAT, то это файловая система MSDOS. И она "полностью совместима с CP/M" никак быть не может. Только частичная совместимость, хотя для многих программ этого хватает. Если есть FAT, то значит не строится Allocation Table и часть функций BDOS не работают. Такая ДОС по работе дисководных функций близка к MSX-DOS. В MSX-DOS 1.0 (1984), как и в MSDOS 1.0, не было подкаталогов, хотя уверен, что изначально они были задуманы, т.к без подкаталогов формат MSDOS с FAT даёт лишь небольшой выигрыш (за счёт того, что не надо строить в ОЗУ Allocation Table).

    А вот введение подкаталогов, отчего каталоги нижнего уровня размещены в файлах, для винта даёт существенный выигрыш, т.к для поиска файла, не надо сканировать общий каталог размером в 200 кб. Но FAT, т.к он один для всего диска, при больших дисках имеет очень большой объём (обычно сколько мегабайтов, столько килобайтов FAT) и тем самым, или TPA для 8-ми разрядки становится маленьким или надо сканировать FAT по кусочкам, что также тормозит.

    Речи о гигабайтных дисках для 8-ми разрядки - это просто сказки для дураков. Такого в природе не бывает.

    Цитата Сообщение от Sayman
    CP/M софт не умеет работать с каталогами, каждый каталог для CP/M софта выставлялся как текущий, грубо говоря, юзер. Это сильно накладывало ограничения на работу с софтом, но зато было проще хранить, т.к. был винт и FAT16.
    Смысла абзаца не понял. Возможно Вы пытались сказать, что, т.к CP/M работает только с юзерами, то какими-то средствами чтение/запись секторов каталога, заменялось на чтение/запись файла подкаталога, отчего CP/M работала с файлами подкаталога, как с юзером CP/M. Так и должна работать MSX-DOS 2.0.

    Цитата Сообщение от Sayman
    TPA в 58 кб - это реальность
    Не для базовой CP/M 2.2. Это другая ДОС на основе BDOS CP/M. Понятно, что основная часть кода ДОС в другой банке. Но больший размер TPA оплачивается быстродействием, т.к считанные данные приходится пересылать из банки в банку.

    Цитата Сообщение от Sayman
    У "Спринтера" TPA в 4 метра. Если в CP/M размер COM-файла ограничен размером TPA, то у DOS на "Спринтере" нет такого ограничения, EXE-файл может быть хоть 100 мб.
    Это не CP/M. ОЗУ в других банках, это не TPA, это просто какое-то ОЗУ. Если так считать, то в ОРИОНЕ с 256К, TPA в CP/M - тоже большое, но это же не так. TPA это только то, что в адресном пространстве DOS. Незачем грузить COM-файл в другие банки. Для больших файлов в CP/M грузят оверлеи или организуют "сокеты" для динамической подкачки кусков кода. И если есть RAM-диск и оверлеи подгружаются оттуда, то это ничуть не тормозит. Если бы был компилятор ЯВУ, что поддерживает банки ОЗУ, тогда это имело бы смысл, т.к для кода созданного ЯВУ как раз не хватает объёма TPA. Без этого от излишнего ОЗУ польза только для организации эл.диска.

    Цитата Сообщение от Sayman
    MSX-DOS. Во-первых, есть исходники. Во-вторых, есть куча документации по этой ДОС и есть весьма не маленькое комьюнити на msx.org.
    Естественно, когда начинаешь искать что-то по MSX, то находишь кучу сайтов про MSX-компьютер. Но где исходники? Чтобы писать, что где-то есть - дайте ссылку на скачивание исходника.

    Цитата Сообщение от Sayman
    Сама MSX-DOS явно писалась под впечатлением от MSDOS и она сильно на неё похожа
    Естественно. Её писал тот же Тим Паттерсон, что написал MSDOS. Он написал её по заказу Microsoft за 3 месяца 1984-го за 200.000 USD. Но он написал только MSX-DOS 1.0, где нет подкаталогов. Подкаталоги ввела уже сама фирма Microsoft 4 года спустя (видимо тогда на 8-ми разрядках появились винты и стали актуальны подкаталоги).

    Все функции MSX-DOS для КР580 реализовал в 1997 С.Коровкин. Он сначала хотел написать полноценную ДОС с форматом MSDOS. Но в итоге сделал только программу обмена файлами между MSDOS и ОЗУ (под ОЗУ имею ввиду ORDOS, т.к по сути это тоже самое). Но он говорил мне, что он реализовал все функции нужные для MSDOS. Так что желающие могут дизассемблировать и получить нечто подобное MSX-DOS.

    Цитата Сообщение от Sayman
    Что за маленькие каталоги? Почему они маленькие? Скажем 256 или 512 файлов на каталог, это много или мало? Или они маленькие по объёму в байтах?
    Я писал о маленьких каталогах безотносительно к их размеру, а чтобы сказать что есть не один общий каталог винта в 200 кб, а он разделен на много частей, со средним размером в 4 кб и числом экстентов до 256 (или даже 128). Поэтому поиск в подкаталоге занимает не 10 секунд, а 1 секунду.

    Так сделано в моей TURBO-DOS. Там на части разбивается не только общий каталог, но и само пространство диска. При организации подкаталога, для него сразу выделяется сплошной кусок диска. В начале этого куска есть свой каталог. Для корневого каталога (корневого диска) все блоки входящие в подкаталог заняты. Но программе, находясь в подкаталоге не приходится работать с огромным каталогом. Она работает с маленьким каталогом. А с учётом того, что работа идёт не логическими секторами, а физическими и нет ненужных копирований, то скорость с винтом получается в 20 раз больше, чем в CP/M. Однако, если выделенное при создании подкаталога место закончилось, то для увеличения размера области для файлов в подкаталоге нужна специальная программа (освобождающая блоки за концом области выделенной подкаталогу). Но даже такая структура диска намного лучше, чем жёсткое разбиение винта на кучу мелких партиций, т.к такие подкаталоги можно оперативно создавать и удалять. В этой ДОС для больших файлов в каталоге не создаётся моря экстентов, как в CP/M, причём при сохранениии дефрагментации файлов, а размер блока - разный для разных файлов. Не знаю, поняли ли идею, но не важно.

    При ускорении CP/M надо решить 3 задачи (но почти всё это полностью или частично лишает совместимости с CP/M)

    - замена работы логическими секторами на физические
    - устранение построения Alloccation Table (хранение её в готовом виде)
    - разбиение общего гигантского каталога на много маленьких подкаталогов

    Вариант использования структуры диска MSDOS я не рассматривал, т.к мне интересно было сделать что-то своё. К тому же я не уверен, что из-за низкой скорости CPU и малости ОЗУ, эта идеология лучшая для 8-ми разрядки. Совместимость с CP/M меня не волновала, т.к я давно убедился что от ЯВУ пользы нет.

    Цитата Сообщение от error404
    была неудачная реализация в прошлом... надо еще раз попробовать.
    Желательно попробовать, но я сомневаюсь, что можно что-то ускорить без ПДП.

    Посмотрел свои старые листинги CP/M-BIOS винчестера и хотя ничего уже не понял, но всё-же увидел, что приняты меры ускорения (линейные участки для чтения-записи в одной итерации цикла сразу 16 байтов). Цикл чтения из флоповода существенно проще и короче. Поэтому так и должно было получиться, что скорость обмена вдвое ниже, чем с контроллером НГМД на ВГ93.

    Во вложении привожу include-файл c подпрограммами для винта (петли чтения-записи это метки: 're_loo' и 'wrs_loo'). В 1990 я видел американский CP/M компьютер с винчестером и он тоже был тормозной.

    Цитата Сообщение от error404
    Максимальный размер диска для CP/M, если мне не изменяет память, - 1 гигабайт, а максимальный размер файла - 4 Mб.
    Максимальный размер диска определяется максимальным размером блока (16 кб) умноженным на 65536 (номер блока двухбайтовый). Т.о это 1 Гб, т.е тут память не подвела. Максимальный размер файла определяется максимальным числом байтов описываемый одним экстентом умноженным на максимально допустимое число экстентов. В одном экстенте описывается 8 блоков по 16 кб. Указатель номера экстента (RC) может быть до 128. Итого максимальный размер файла: 8 * 16 кб * 128 = 16 мб.

    Цитата Сообщение от error404
    кластеров под каталог можно отвести до 16 штук - умножьте сами
    16 блоков по 16 кб каждый, дают размер каталога в 256 кб. Такой каталог при реальных скоростях CPU будет сканироваться до минуты. При построении Allocation Table сканируется весь каталог в 256 кбайт, что займёт 1 минуту. То же самое произойдёт, если дать DIR. При запуске файлов, если файлов мало, то поиск будет быстрый. Но если ошибиться и задать имя файла, которого нет, то тоже будет сканироваться весь каталог целиком, и система будет читать каталог целую минуту. Будет ли такая система приемлемой?

    Раз у Вас есть CP/M для винта и есть мнение, что она сохранится быстрой и при больших дисках, давайте узнаем, сколько будет читаться каталог в 256 кб. Для этого скопируйте файл размером в 256 кб и засеките время копирования. Результат не надо делить пополам, т.к CPU тратит время не только на само считывание, но и на просмотр экстентов. А при копировании просматривается весь каталог целевого диска в поиске есть ли файл с таким же именем. А затем строится Allocation Table целевого диска. В итоге копирование одного файла займёт ~3 минуты.
    Вложения Вложения
    Последний раз редактировалось barsik; 27.11.2017 в 19:16.

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

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

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

Похожие темы

  1. PMI-80 - одноплатник на i8080
    от rw6hrm в разделе Разное
    Ответов: 72
    Последнее: 02.09.2022, 12:27
  2. Самодельный комп на х386 и выше. Обсуждение
    от Ghost в разделе Разработка электроники
    Ответов: 26
    Последнее: 10.04.2019, 01:38
  3. Мнемоники i8080 vs Z80
    от Vladimir_S в разделе Разное
    Ответов: 153
    Последнее: 20.12.2016, 13:02
  4. Квадратный корень на i8080
    от shoorick в разделе Разное
    Ответов: 31
    Последнее: 25.08.2016, 14:04
  5. Эмулятор i8080
    от Higgins в разделе Разное
    Ответов: 2
    Последнее: 20.05.2011, 11:43

Ваши права

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