#1
|
|||
|
|||
Кворум 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 месяцев) |