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

User Tag List

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

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

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

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    и Орион
    480/512 точек - одна из первейших доработок что делал каждый второй CP/M-щик, а в Орионе-ПРО оно уже из коробки есть
    Отлично, шрифты 5x7 можно дернуть с Ориона

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

    По умолчанию

    А вот еще интересное из мира Корвета: https://zx-pk.ru/threads/24900-korvet-rezhim-80x25.html

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

    По умолчанию

    (обожаю эксгумировать лежалые топики)

    Цитата Сообщение от b2m Посмотреть сообщение
    встроенная команда DIR, которую они подправили, чтобы она размер свободной области выдавала
    Пришлось вспомнить, как работать с ghidra (спойлер: весьма комфортно) и заново отдизелить океанские MONITOR, BIOS, BDOS и CCP.

    Монитор (0xe000-0xffff) после минимальной инициализации смотрит, прошит ли CPM (0xc0000-0xdfff), и передает управление загрузчику по адресу 0xd600.
    Загрузчик немножечко колдует, затем копирует CCP из ПЗУ (0xc000-0xc809) в RAM по адресу 0xb200, куда после недолгих раздумий прыгает сам.

    CCP почти один-в-один соответствует исходникам CP/M 2.2, за несколькими мелкими исключениями:

    - процедура проверки серийного номера на месте, но аварийный выход из нее забит NOP-ами
    - встроенных команд 6 ($DIR, ERA, TYPE, SAVE, REN, USER), к имени команды DIR добавлен доллар. Интересно, будет ли работать, если написать $DIR
    - после адресов обработчиков встроенных команд обычно идет адрес обработчика транзитных команд userfunc. В нашем случае там вбит адрес обработчика дополнительных команд из ПЗУ CP/M (0xdb00)
    - каковой добавляет еще 4 встроенные команды (DIR, READ, WRITE, EXIT). Ну и в конце ссылается обратно на штатный обработчик userfunc (0xb8a5).
    Последний раз редактировалось tnt23; 14.04.2023 в 10:44.

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

    dk_spb (30.12.2023)

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

    По умолчанию

    Цитата Сообщение от tnt23 Посмотреть сообщение
    (обожаю эксгумировать лежалые топики)
    Интересно, будет ли работать, если написать $DIR
    Нажмите на изображение для увеличения. 

Название:	dirdollar.jpg 
Просмотров:	72 
Размер:	13.3 Кб 
ID:	79994

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

    dk_spb (30.12.2023)

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

    По умолчанию

    Цитата Сообщение от tnt23 Посмотреть сообщение
    достаточно поправить пару команд в процедурах чтения-записи блока с "ANI 1; ORI 2" на "ANI 3; ADI 2", и сможем нормально щелкать линиями A16 и A17
    В Мониторе неизвестной версии, который подогнали коллеги из Североморска, процедуры уже пропатчены:

    Код:
    WBLOCK                                    XREF[2]:   ram:e01e(c), RAM2TAP:fa61(c)  
          ram:fb43 e5                PUSH      HL
          ram:fb44 d5                PUSH      DE
          ram:fb45 7a                MOV       A,D
          ram:fb46 e6 07             ANI       0x7
          ram:fb48 c6 02             ADI       0x2
          ram:fb4a f6 00             ORI       0x0
    Последний раз редактировалось tnt23; 04.01.2024 в 21:45.

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

    По умолчанию

    В версии "ОКЕАН-240 CP/M (V2.2) REL.8'" DPT длиной 57 байт (три DPB по 19 байт каждый) копируется загрузчиком из ПЗУ с адреса 0xd9f8 в ОЗУ по адресу 0xbade.

    DPB 1 задает параметры RAM-диска А: (192 блока по 1К), итого 192К.

    Код:
    DPB_1_rom                                 XREF[1]:   ram:d715(*)  
    ram:d9af 10 00 03          struct 
                   07 00 bf 
                   00 1f 00
    ram:d9af 10 00         dw       16             SPT      Number of 128-byte Sectors Pe  XREF[1]:   ram:d715(*)  
    ram:d9b1 03            db       3              BSH      Block Shift. 3=1K, 4=2K, 5=4K
    ram:d9b2 07            db       7h             BLM      Block Mask. 7=1K, f=2K, 1f=4K
    ram:d9b3 00            db       0h             EXM      Extent Mask
    ram:d9b4 bf 00         dw       191            DSM      Number of blocks on disk - 1
    ram:d9b6 1f 00         dw       31             DRM      Number of directory entries - 1
    ram:d9b8 80            db       80h            AL0      Directory allocation bitmap, 
    ram:d9b9 00            db       0h             AL1      Directory allocation bitmap, 
    ram:d9ba 08 00         dw       8h             CKS      Checksum vector size, 0 for a
    ram:d9bc 00 00         dw       0h             OFF      Offset, number of reserved tr
    DPB 2 и 3 для дисков B: и C: определяются в зависимости от плотности как 180 или 360 блоков по 2К, итого 360К или 720К.

    Код:
    d725 21 26 bb          LXI       HL,DPB_2
    d728 0e 0f             MVI       C,15
    d72a 11 dc d9          LXI       DE,DPB_2_rom_Single
    d72d 3a 48 d6          LDA       (Drive_B)              
    d730 fe 01             CPI       0x1
    d732 ca 38 d7          JZ        LAB_ram_d738
    d735 11 cd d9          LXI       DE,DPB_2_rom_Double
    Я не прошивал соответствующую версию BIOS, поэтому стартовый экран выглядит забавно. Встроенная команда SDIR исправно поддерживает 192К рам-диска, уж не знаю, подсчитывает или захардкожено, как в ранних версиях.

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

Название:	r81.jpg 
Просмотров:	37 
Размер:	19.2 Кб 
ID:	80036
    Последний раз редактировалось tnt23; 05.01.2024 в 15:24.

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

    По умолчанию

    Взял на посмотреть Rel.6. Подправил константы в DPB и у встроенной команды DIR для 128К.

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

Название:	rel6patched.jpg 
Просмотров:	51 
Размер:	17.6 Кб 
ID:	80038

    Но как XDIR умудряется нащупать 256К?

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

    По умолчанию

    При прописанных в DPT для квазидиска А: 447 1-килобайтных блоках имеем следующую картину:

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

Название:	stat.jpg 
Просмотров:	39 
Размер:	18.0 Кб 
ID:	80095

    Встроенный DIR пропатчен показывать 448К свободных, но записать очередной CHUNK5 весом 64К не получается. На диске образуется его обрезок весом 32К и выдается сообщение NO SPACE.

    Внешняя команда STAT, по-видимому, показывает более похожий на правду результат.

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

    По умолчанию

    Есть подозрение, что для размеров квазидиска более 192К (а конкретно DSM больше 256К) нужно переходить на другой размер BLS (2,048 байт) и, соответственно, указывать BSH = 4 и BLM = 15, ну и EXM = 0.

    Собственно, как это и сделано для дискет:
    Код:
    DPB_2_rom_Double
    d9cd 24 00         dw       36             SPT      Number of 128-byte Sectors Pe 
    d9cf 04            db       4h             BSH      Block Shift. 3=1K, 4=2K, 5=4K
    d9d0 0f            db       Fh             BLM      Block Mask. 7=1K, f=2K, 1f=4K
    d9d1 00            db       0h             EXM      Extent Mask
    d9d2 67 01         dw       359            DSM      Number of blocks on disk - 1
    d9d4 7f 00         dw       127            DRM      Number of directory entries - 1
    d9d6 c0            db       C0h            AL0      Directory allocation bitmap, 
    d9d7 00            db       0h             AL1      Directory allocation bitmap, 
    d9d8 20 00         dw       20h            CKS      Checksum vector size, 0 for a
    d9da 00 00         dw       0h             OFF      Offset, number of reserved tr
    Прописываем BSH=4, BLM=15, EXM=0, DSM=223:

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

Название:	DPB_4_F_DF.jpg 
Просмотров:	35 
Размер:	19.8 Кб 
ID:	80099

    Забиваем квазидиск мусором (SAVE позволяет сохранять в файл максимум 255 блоков):

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

Название:	DPB_4_F_DF_chunks.jpg 
Просмотров:	32 
Размер:	19.7 Кб 
ID:	80100
    Последний раз редактировалось tnt23; 13.01.2024 в 18:39.

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

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

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

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

Ваши права

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