forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > ZX.SPECTRUM

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 25.01.2018, 06:40
John Zaicev
Guest
 
Сообщений: n/a
По умолчанию Кворум CP/M

John Zaicev написал(а) к All в Jan 18 06:59:46 по местному времени:

[√] Приветствую, All !

Чтобы запустить CP/M, нужно было сделать лишь одно - освободить как можно больше RAM в нижней памяти. Для этого сделаны две вещи:

Экран может переключаться на #C000 (в 128 это штатно через 7ffd, в 48 через особый порт)
ПЗУ может отключаться и вместо него включается теневое ОЗУ.


В итоге память 0000...B27F оказывается свободной для программ пользователя. Выше находятся BDOS, экран и BIOS.
Распределение памяти

DB00-FFFF BIOS (уровень привязки к конкретному железу)
C000-DAFF Экран
B280-BFFF BDOS (уровень системных вызовов)
AA80-B27F CCP (командный процессор)
0100 Начало TPA (пространство под запущенную программу)
0000-00FF Системная область CP/M

Порты контроллера дисковода у Кворума нестандартные (#80, #81, #82, #83, #85). Зато прямой доступ к ним есть из любых адресов, а не как у бетадиска только из 3Dxx.

Формат дискеты

5 секторов на дорожку, сектора нумеруются с единицы. Размер сектора - 1024 байта. Итого 5 1024 * 80 дорожек 2 стороны = 800 килобайт на диске.
Первые 20 килобайт (два цилиндра) заняты системными дорожками. В них находятся загрузчик, CCP, BDOS и BIOS. Дальше следует 4-килобайтная таблица размещения файлов (32 байта на файл, итого 128 файлов максимум). Остальное место занято содержимым файлов.

Загрузка

Загрузка ОС происходит по нажатию NMI в Кворуме-64. В Кворуме-128 по сбросу или выбором пункта из меню.
Подробнее

5 шагов загрузки: ROM -> загрузчик -> инициализатор -> BIOS -> CCP.

ROM
По нажатию NMI (0x0066):

ROM грузит 1-ый сектор по адресу 0x8800
Проверяет, что по 0x8820 лежит 0xC3 - опкод JP.
Переходит по адресу 0x8820, передав в регистре E с какого дисковода грузимся.


Как видите, этот обработчик легко использовать для загрузки любой другой ОС. Вообще, в ROM Кворума нет ни единой привязки именно к CP/M. Просто грузим первый сектор (любого, причем, размера) и передаем ему управление.

Загрузчик

Грузим первые 0x14 секторов с адреса 0xA880. В них есть всё: и CCP, и BDOS, и загрузочная картинка, попадающая при загрузке в C000, и BIOS с двумя шрифтами (6x8 и 4x8) внутри.
Переходим на адрес 0xA980 (пропустив 0x100 байт самого загрузчика).


Инициализация CP/M

Проверяем объем доступной памяти. Если есть доп. страницы, настраиваем электронный диск.
Настраивается вектор INT (по адресу 0x38 кладется переход на обработчик в BIOS).
Выводим текстовое название диска.
Запускаем процедуру холодного старта (BOOT) из BIOS.


BIOS (BOOT)

Устанавливаем вектор BDOS (0x05), INT1 и INT2.
Запускаем CCP.


[свернуть]


Версии CP/M

1.0 (?) 1992 год?
https://github.com/atsidaev/quorum-cpm/tree/v1.0
BDOS и CCP практически не отличаются от стандартных для CP/M 2.2 (я брал с http://www.cpm.z80.de для сравнения). Все отличия связаны с оптимизацией под Z80: JR вместо JP, DJNZ, LD (NN), DE. Возможно, эти изменения были в CP/M для Robotron-1715, откуда, судя по всему, на "Кворум" и был портирован CP/M.
Процедура вертикального скроллинга в BIOS очень медленная. Звуковой сигнал клавиатуры высокий и звонкий (и бесячий).
QDI-образ пустой дискеты

2.0 (1995 год?)
https://github.com/atsidaev/quorum-cpm/tree/v2.0
Увеличено количество зон пользователя (USER) до 32. У CCP изменено приглашение на "A:\0>", где цифра - это номер зоны USER. Для того, чтобы упростить его вывод (ну и для удобства запоминания, наверное), зоны с номерами 10..32 заменены буквами A..V. Однако, в команду USER номер вводить нужно как и раньше, цифрами.
В BIOS много оптимизаций. Вертикальный скроллинг теперь быстрый. Звуковой сигнал заменен на тихий приятный "щелк".
QDI-образ пустой дискеты

3.0 (???) - вероятно была, раз есть 3.1

3.1 (1997)
Живьем не видел, лишь в виде образа.
BDOS полностью перелопачен, однако на BDOS от CP/M 3.0 не похож. Возможно, что это BDOS от какого-нибудь клона CP/M.
BIOS изменен. CCP тот же, что и в 2.0.
FDI-образ на сайте atmturbo.nedopc.com.

CP/M софт и образы дискет

Моя коллекция
Немного на atmturbo.nedopc.com

Эмуляторы и PC-утилиты

Кворум эмулируется лишь в двух эмуляторах. Это Unreal Speccy (спец. версия на основе v0.20 и последние версии от deathsoft начиная с 0.37.4) и ZXMAK2. Более-менее рабочая эмуляция ВГ93 есть только с включенной опцией "No Delay" (в Unreal включена по-умолчанию).

Для работы с образами QDI (формат кворумских дисков, представляющий собой полный образ всех секторов - 800 кб):

SteinBlume CP/M Disk Image Explorer - понимает QDI из коробки
Total Commander + плагин от Error404 (нужны odi.wcx и odi.ini. В последний нужно дописать "QDI = 01010301050050002800040F008E017F00C00020000400"). Однако, он не умеет работать с областями USER выше 16-ой.

Вроде бы ничего не забыл...
[√] До скорого, All !

▌║▐║│║▌║││║║ /http://92.248.128.222:8080/
2║5080▌244║0 /P2Pirates@Mail.ru_/ _DreamLand laboratory

--- Моему первому компьютеру 9583 дня (или 309 месяцев)
Ответить с цитированием
Ответ


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 21:36. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot