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

User Tag List

Страница 1 из 9 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 89

Тема: Потроха CP/M 2.2

  1. #1
    Guru Аватар для tnt23
    Регистрация
    28.03.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,634
    Спасибо Благодарностей отдано 
    392
    Спасибо Благодарностей получено 
    78
    Поблагодарили
    63 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Потроха CP/M 2.2

    В "океанской" CP/M 2.2 Rel.7 таблица DISK PARAMETER TABLE состоит из трех записей DPH (Disk Parameter Header) по числу поддерживаемых устройств A:, B: и C:, и располагается с адреса 0xd90d (ПЗУ):

    XLT - - - DIRBUF DPB CSV ALV
    DPH1 0000 0000 0000 0000 BB3F BB0E BBDE BBBF
    DPH2 0000 0000 0000 0000 BB3F BB1D BC05 BBEE
    DPH3 0000 0000 0000 0000 BB3F BB1D BC2C BC15

    DPB1 начинается с адреса 0xbb0e, DPB2 с адреса 0xbb1d (оба в ОЗУ):


    SPT BSH BLM EXM DSM DRM AL0 AL1 CKS OFF
    DPB1 (A:) 0010 03 07 00 003F 1F00 80 00 0800 0000
    DPB2 (B:,C:) 0024 04 0F 01 00B3 3F00 80 00 1000 0000

    Из DPB1 закономерно вытекает формат квазидиска A: - 16 секторов на дорожку (1 сектор = 128 байт), полная емкость 63Кбайт.
    Формат дисков B: и C: - 36 секторов на дорожку, 179 Кбайт.
    Последний раз редактировалось tnt23; 03.12.2018 в 17:24.

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

  3. #2
    Veteran Аватар для krotan
    Регистрация
    30.08.2010
    Адрес
    Санкт-Петербург
    Сообщений
    1,263
    Спасибо Благодарностей отдано 
    53
    Спасибо Благодарностей получено 
    192
    Поблагодарили
    159 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А я вроде как слышал, что логическая структура всех дисков CP/M одинакова сектора по 128 байт не помню сколько их...

  4. #3
    Guru Аватар для tnt23
    Регистрация
    28.03.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,634
    Спасибо Благодарностей отдано 
    392
    Спасибо Благодарностей получено 
    78
    Поблагодарили
    63 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Логический сектор да, 128 байт. С одной стороны, это удобно, потому что одинаково везде. С другой стороны, не всегда хорошо ложится на физический сектор, который на дискете может быть и 512 байт, и вообще 1024 байта. С третьей стороны, начинаются проблемы при поддержке дисков больших размеров.

    В "Океане-240" встроенные в БИОС процедуры переноса блока между основной памятью и квазидиском оперируют размером 128 байт.

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

    Полезная по многим причинам ссылка - https://zx-pk.ru/threads/23229-pk800...l=1#post900680

  5. #4
    Guru
    Регистрация
    15.09.2009
    Адрес
    SPb
    Сообщений
    7,163
    Спасибо Благодарностей отдано 
    230
    Спасибо Благодарностей получено 
    263
    Поблагодарили
    191 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Насколько я знаю почти ко всем вариантам CP/M в дистрибутиве идёт конфигуратор, который позволяет настраивать данную версию CP/M под конкретный экран и дисководы (например, в Роботроне 1715 вроде было именно так, потому что дисководы могли быть разные, да еще в том числе и внешние).
    Соответственно никто не мешает подредактировать DPB2 под используемые модели дисководов

    >36 секторов на дорожку, 179 Кбайт
    А разве число блоков (DSM+1=180) не надо умножить на размер блока, который для B: и C: по приведенным Вами данным виден как 2k?
    Итого объем диска 180*2=360 килобайт (без вычета под служебку).

    Код:
    BSH and BLM are determined by BLS, the block size or data allocation size
    
        BLS       BSH     BLM           EXM
       -----      ---     ---     DSM<256   DSM>=256
        1024       3       7         0        n/a
        2048       4      15         1         0
        4096       5      31         3         1
        8192       6      63         7         3
       16384       7     127        15         7
    - - - Добавлено - - -

    Мне было всегда интересно как CP/M отличает дисковод 40 дорожек 2 стороны от 80 дорожек одна сторона. Может кто подскажет.
    Последний раз редактировалось dk_spb; 03.12.2018 в 00:16.

  6. #5
    Guru Аватар для tnt23
    Регистрация
    28.03.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,634
    Спасибо Благодарностей отдано 
    392
    Спасибо Благодарностей получено 
    78
    Поблагодарили
    63 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от dk_spb Посмотреть сообщение
    Насколько я знаю почти ко всем вариантам CP/M в дистрибутиве идёт конфигуратор, который позволяет настраивать данную версию CP/M под конкретный экран и дисководы (например, в Роботроне 1715 вроде было именно так, потому что дисководы могли быть разные, да еще в том числе и внешние).
    Соответственно никто не мешает подредактировать DPB2 под используемые модели дисководов
    Океанические DPB да, хранятся в ОЗУ, но редактировать его придется ручками, так как дистрибутива океанского CP/M в видимой части Вселенной не наблюдается.

    Цитата Сообщение от dk_spb Посмотреть сообщение
    >36 секторов на дорожку, 179 Кбайт
    А разве число блоков (DSM+1=180) не надо умножить на размер блока, который для B: и C: по приведенным Вами данным виден как 2k?
    Итого объем диска 180*2=360 килобайт (без вычета под служебку).
    Очень может статься, что это так. Однако в ПЗУ жестко прошит размер дисковода 180К (как и квазидиска в 64К, но к этому мы еще вернемся).

  7. #6
    Guru
    Регистрация
    15.09.2009
    Адрес
    SPb
    Сообщений
    7,163
    Спасибо Благодарностей отдано 
    230
    Спасибо Благодарностей получено 
    263
    Поблагодарили
    191 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    >Очень может статься, что это так.
    36 секторов *128 байт * 40 дорожек=180К для одностороннего дисковода. И 360К для двухстороннего. И мы снова возвращаемся к вопросу как CP/M отличает односторонний дисковод от двухстороннего....
    Ну и в DPB явно прописано 180 блоков по 2К.

  8. #7
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,847
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    167 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от dk_spb Посмотреть сообщение
    И мы снова возвращаемся к вопросу как CP/M отличает односторонний дисковод от двухстороннего
    BDOS-у CP/M фиолетово, у него своя абстракция: номер диска / номер дорожки / номер сектора (128 байт, всегда). А вот BIOS CP/M должен уже сам решать. У Океана-240, насколько я помню, фиксированная привязка типа дисковода к букве диска. У Корвета (вроде бы) в первом секторе нулевой дорожки в самом начале есть информация о количестве дорожек, секторов, типе сектора (тут полагаемся на юзверя, который не должен совать не те дискеты в дисковод). А во многих реализациях - вообще только один тип поддерживается.

  9. #8
    Guru
    Регистрация
    15.09.2009
    Адрес
    SPb
    Сообщений
    7,163
    Спасибо Благодарностей отдано 
    230
    Спасибо Благодарностей получено 
    263
    Поблагодарили
    191 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да, похоже это именно BIOS'ом отрабатывается. У Роботрона есть отдельная табличка, в которой, кроме всего прочего есть два параметра: кол-во секторов на дороже и общее кол-во секторов на дорожке. Соответственно второй параметр как раз и будет отличаться от первого в два раза для двухстороннего дисковода.

  10. #9
    Guru Аватар для caro
    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,721
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    87 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код:
           В  начале 1-го сектоpа 0-ой доpожки  дисков, используемых
    в "КОРВЕТЕ" и "КВОРУМЕ" записывается таблица,  паpаметpы котоpой
    используются  начальным   загpузчиком   пpи  запуске,   и  самой
    опеpационной системой пpи pегистpации дискет.  Стpуктуpа таблицы
    пpиведена ниже.  В гpафе данные пpиведены значения для системной
    дискеты "КВОРУМА" фоpмата DS/DD/96 TPI, соответствующего фоpмату
    s6 "Robotron 1715".
    
     ┌──────────┬────────┬─────────────────────────────────────────────┐
     │ Смещение │ Данные │           Назначение                        │
     │  (HEX)   │ (HEX)  │                                             │
     ├──────────┼────────┼─────────────────────────────────────────────┤
     │ 00H..01H │ A880H  │ Начальный адpес в ОЗУ для загpузки ОС.      │
     ├──────────┼────────┼─────────────────────────────────────────────┤
     │ 02H..03H │ A980H  │ Адpес в ОЗУ точки входа для запуска ОС.     │
     ├──────────┼────────┼─────────────────────────────────────────────┤
     │ 04H..05H │ 0014H  │ Количество физических сектоpов отведенных   │
     │          │        │ под ОС на диске  ( < 256).                  │
     ├──────────┼────────┼─────────────────────────────────────────────┤
     │   06H    │  00H   │ 00H - Дискета фоpмата 5,25".                │     
     ├──────────┼────────┼─────────────────────────────────────────────┤
     │   07H    │  01H   │ 00H - одинаpная плотность записи (SD)       │        
     │          │        │ 01H - двойная плотность записи (DD)         │
     ├──────────┼────────┼─────────────────────────────────────────────┤
     │   08H    │  01H   │ 00H - 48 TPI                                │    
     │          │        │ 01H - 96 TPI                                │
     ├──────────┼────────┼─────────────────────────────────────────────┤
     │   09H    │  01H   │ 00H - Данные вектоpа пеpевода сектоpов      │
     │          │        │       используются.                         │
     │          │        │ 01H - Данные не используются.               │
     ├──────────┼────────┼─────────────────────────────────────────────┤
     │   0AH    │  03H   │ Объем физического сектоpа:                  │
     │          │        │     00H - 128 байт                          │
     │          │        │     01H - 256 байт                          │
     │          │        │     02H - 512 байт                          │
     │          │        │     03H - 1024 байта.                       │
     ├──────────┼────────┼─────────────────────────────────────────────┤
     │   0BH    │  01H   │ 00H - одностоpонний диск, сектоpа от 1 до N.│
     │          │        │ 01H - двухстоpонний диск.                   │
     ├──────────┼────────┼─────────────────────────────────────────────┤
     │ 0CH..0DH │ 0005H  │ Количество физических сектоpов на доpожке.  │
     ├──────────┼────────┼─────────────────────────────────────────────┤
     │ 0EH..0FH │ 0050H  │ Количество доpожек на одной стоpоне диска.  │
     ├──────────┼────────┼─────────────────────────────────────────────┤
     │ 10H..11H │ 0028H  │ Количество логических (128 байт) сектоpов   │
     │          │        │ на доpожке (SPT).                           │
     ├──────────┼────────┼─────────────────────────────────────────────┤
     │   12H    │  04H   │ Фактоp сдвига блока (BSH).                  │
     ├──────────┼────────┼─────────────────────────────────────────────┤
     │   13H    │  0FH   │ Маска блока данных (BLM).                   │
     ├──────────┼────────┼─────────────────────────────────────────────┤
     │   14H    │  00H   │ Маска pазмеpа блока (EXM).                  │
     ├──────────┼────────┼─────────────────────────────────────────────┤
     │ 15H..16H │ 0185H  │ Количество блоков данных на диске -1 (DSM). │
     ├──────────┼────────┼─────────────────────────────────────────────┤
     │ 17H..18H │ 007FH  │ Число элементов оглавления -1.              │
     ├──────────┼────────┼─────────────────────────────────────────────┤
     │ 19H..1AH │ 00C0H  │ Маска блоков оглавления.                    │
     ├──────────┼────────┼─────────────────────────────────────────────┤
     │ 1BH..1CH │ 0020H  │ Размеp вектоpа контpоля оглавления.         │
     ├──────────┼────────┼─────────────────────────────────────────────┤
     │ 1DH..1EH │ 0004H  │ Количество доpожек * количество стоpон      │
     │          │        │     отведенных под системную область.       │
     ├──────────┼────────┼─────────────────────────────────────────────┤
     │   1FH    │  4BH   │ Контpольная сумма таблицы.                  │
     └──────────┴────────┴─────────────────────────────────────────────┘

  11. #10
    Guru Аватар для tnt23
    Регистрация
    28.03.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,634
    Спасибо Благодарностей отдано 
    392
    Спасибо Благодарностей получено 
    78
    Поблагодарили
    63 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    b2m, небольшой оффтопик: по-моему, в эмуляторе неправильно отображаются цвета:

    Нажмите на изображение для увеличения. 

Название:	OKEAH240.png 
Просмотров:	207 
Размер:	17.0 Кб 
ID:	67189

Страница 1 из 9 12345 ... ПоследняяПоследняя

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

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

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

Ваши права

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