Нулевая страница (CP/M)
(Перенаправлено с CALL 5 (CP/M) )
Нулевая страница (или базовая страница) — это структура данных , используемая в системах CP/M для связи программ с операционной системой. В 8-битных версиях CP/M он расположен в первых 256 байтах памяти , отсюда и его название.
Эквивалентной структурой в DOS является префикс сегмента программы (PSP), 256-байтовая структура, которая, однако, по умолчанию расположена по смещению 0 в сегменте загрузки программы (а не в сегменте 0), непосредственно предшествующем загруженной программе.
В 8-битном CP/M он имеет следующую структуру:
Компенсировать | Размер | Содержание |
---|---|---|
00–02 | Код | Выход из программы (переход в BIOS , а также используется для поиска точек входа в BIOS). [ 1 ] |
03 | Байт | Байт ввода-вывода, дополнительная функция, позволяющая переназначение устройства в CP/M 2. |
04 | Байт | Текущий диск командного процессора (младшие 4 бита) и номер пользователя (старшие 4 бита). |
05–07 | Код | Переход к записи CP/M BDOS — точка входа основного системного вызова. Это также адрес первого байта памяти, не используемого программой. [ 1 ] |
08–3А | Код | 8080 векторов перезапуска/ прерывания . |
3Б–3Ф | Байты | Сдержанный |
40–4Ф | Байты | Зарезервировано для использования BIOS [ 2 ] |
50 | Байт | Диск, с которого была загружена программа (CP/M 3) |
51–52 | Слово | Адрес пароля для первого FCB (CP/M 3) |
53 | Байт | Длина пароля для первого FCB (CP/M 3) |
54–55 | Слово | Адрес пароля для второго FCB (CP/M 3) |
56 | Байт | Длина пароля для второго FCB (CP/M 3) |
57–5Б | Байты | Сдержанный |
5В–6Б | FCB по умолчанию 1 | |
6C–7F | FCB 2 по умолчанию (перезаписывается, если FCB 1 открыт) | |
80 | Байт | Количество символов в хвосте команды. |
81–ФФ | Байты | Хвост команды (все после названия программы). |
В CP/M-86 структура следующая:
Компенсировать | Размер | Содержание |
---|---|---|
00–02 | Байты | Длина группы кодов в байтах |
03–04 | Слово | Адрес сегмента кодовой группы |
05 | Байт | Флаг модели 8080 - устанавливается, если в программе только один сегмент. |
06–08 | Байты | Длина группы данных в байтах |
09–0А | Слово | Адрес сегмента группы данных |
0Б | Байт | Сдержанный |
0С–11 | Дескриптор дополнительной группы – тот же формат, что и для данных. | |
12–17 | Дескриптор группы стека | |
18–1Д | Дескриптор группы X1 | |
1Э–23 | Дескриптор группы X2 | |
24–29 | Дескриптор группы X3 | |
2А–2Ф | Дескриптор группы X4 | |
30–4Ф | Байты | Сдержанный |
50 | Байт | Диск, с которого была загружена программа (CP/M 3) |
51–52 | Слово | Адрес пароля для первого FCB (CP/M 3) |
53 | Байт | Длина пароля для первого FCB (CP/M 3) |
54–55 | Слово | Адрес пароля для второго FCB (CP/M 3) |
56 | Байт | Длина пароля для второго FCB (CP/M 3) |
57–5Б | Байты | Сдержанный |
5В–6Б | FCB по умолчанию 1 | |
6C–7F | FCB 2 по умолчанию (перезаписывается, если FCB 1 открыт) | |
80 | Байт | Количество символов в хвосте команды. |
81–ФФ | Байты | Хвост команды (все после названия программы). |
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Jump up to: а б Тейлор, Роджер; Леммонс, Фил (июнь 1982 г.). «Восходящая миграция. Часть 1: Переводчики. Использование программ перевода для перемещения программ CP/M-86 в CP/M и MS-DOS» [Использование программ перевода для перемещения программ CP/M в CP/M-86 и MS-DOS] (PDF) . БАЙТ . Том. 7, нет. 6. BYTE Publications Inc., стр. 321–322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344 [342, 344]. ISSN 0360-5280 . КОДЕН БАЙТЕДЖ . Архивировано (PDF) из оригинала 16 января 2020 г. Проверено 15 января 2020 г.
[…] Получение доступа к CP/M-86 […] Для получения доступа к CP/M-86 необходимо поместить код функции в регистр CL, поместить байтовый параметр в регистр DL или поместить словный параметр в регистр DX, помещение сегмента данных в регистр DS (сегмент данных обычно не изменяется для преобразованной программы) и выполнение программного прерывания INT #224 . Результат возвращается в регистр AL, если это байтовое значение; если результатом является словесное значение, оно возвращается как в регистры AX, так и в BX. Значения двойного слова возвращаются со смещением в регистрах BX и сегментом в регистре ES. Преобразование программ из CP/M-80 в CP/M-86 требует замены вызова ячейки 5 программным прерыванием INT #224. Еще одно необходимое изменение связано с « теплой» загрузкой . В CP/M-80 доступ к «горячей» загрузке можно получить с помощью системного вызова с кодом функции 0 для перехода в ячейку 0. Однако CP/M-86 не поддерживает переход в ячейку 0. В результате , вы должны изменить этот выход программы в переведенной программе, чтобы программа работала правильно. При условии, что вызов ячейки 5 заменен на INT #224, выполнено изменение «горячей» загрузки и что регистры сопоставлены правильно, не должно возникнуть особых проблем с получением транслированной программы доступа к системным функциям CP/M-86. . […] Получение доступа к MS-DOS […] Хотя MS-DOS имеет «предпочтительный» механизм доступа к системе через программное прерывание INT #33 , для «ранее существовавших» программ предусмотрен дополнительный механизм, совместимый с CP/M- 80 соглашений о вызовах, по крайней мере, для функций в диапазоне 0–36. Что касается системных вызовов в пределах разрешенного диапазона функций, программисту не нужно ничего делать с переведенными программами, чтобы заставить их работать под MS-DOS, кроме правильного сопоставления регистров. MS-DOS также поддерживает функцию «горячей» загрузки CP/M-80. Переход в позицию 0 в MS-DOS вызывает программное прерывание INT #32 , которое функционально является завершением программы и обычным способом выхода из программы. […]
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] (13 страниц) - ^ Руководство по изменению CP/M 2.0 (PDF) . Цифровые исследования. 1979. с. 23.
Дальнейшее чтение
[ редактировать ]- «Библиотека CP/M Мемориала Тима Олмстеда» . Архивировано из оригинала 20 августа 2017 г. Проверено 20 августа 2017 г. - в частности:
- «Руководство программиста CP/M 3» (PDF) . Архивировано (PDF) из оригинала 20 августа 2017 г. Проверено 20 августа 2017 г.
- «Руководство по системе CP/M-86» (PDF) . Архивировано (PDF) из оригинала 17 мая 2005 г. Проверено 20 августа 2017 г.