Как я могу переместить 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
Значение говорит вам, как рассчитать значение для вставки.