Как я могу переместить CP/M BDOS на пользовательский адрес памяти?

Может быть, это новый вопрос о CP/M, но в любом случае... Возможно ли переместить CP/M BDOS? У меня есть аппаратное обеспечение, для которого я написал BIOS, для использования с CPM 2.2. Тем не менее, эта BDOS (как видно из разборки) использует фиксированные адреса. Поскольку я не очень хорошо знаю CP/M, я не знаю, как разместить CP/M BDOS по другому начальному адресу. Единственное (несколько уродливое!) Решение, которое я смог найти: я нашел список разборки CP/M, поэтому я просто изменил директиву ORG и собрал ее заново. Есть ли другой способ, например, утилита CP/M? И если да, то как это можно сделать, поскольку BDOS использует коды операций JP, CALL и т. Д. (Извините, я просто знаком с Z80, не так уж много с оригинальной сборкой 8080), поэтому он не просто независим от ПК. Спасибо!

1 ответ

Нет необходимости в разборке; доступен исходный код CP/M (и, да, BDOS и все остальное, что является резидентом, является сборкой, а не PL/M). В предложенном "CP/M 2.2 ORIGINAL SOURCE" вы должны найти как OS3BDOS.ASM, так и OS3BDOS1.ASM. Обе они являются разными выпущенными версиями источника BDOS CP/M 2.2 (см. README.TXT); Вы должны быть в состоянии настроить org и восстановите любой из них, используя ассемблер, также предоставленный в архиве.

В качестве альтернативы вы можете использовать инструмент MOVCPM (также входит в архив). Он предназначен для перемещения BDOS и поставляемого BIOS, но ничто не помешает вам заменить BIOS после свершившегося факта.

Возможно, вас заинтересует, если вы предпочтете написать кросс-локатор: из небольшого исследования, интересным является то, что это из источника BDOS:

if  test
org 0dc00h
else
org 0800h
endif

Почему BDOS когда-либо 0800 на какой-нибудь полезной машине? Почему dc00 "тестовый" адрес? Поскольку перемещение выполняется очень тривиально: BDOS создается один раз в 0800 и однажды в dc00, Посредством двоичного сравнения этих двух сборок любые различия должны заключаться в том, где необходимо вставить правильные адреса, и в отличие от оригинала. org Значение говорит вам, как рассчитать значение для вставки.

Другие вопросы по тегам