
Сообщение от
xintrea
Благодарю, но не совсем понял.
Значит, изначально имеем:
7630H - 30H
7631H - 1FH
Вы говорите, что при работе директивы I берется значение из ячейки 7631H равное 24H. Как так, если в ней изначально 1FH?
И второй вопрос - за что конкретно отвечают эти три значения? Насколько я понял, 7631H - это скорость чтения для I и скорость записи для O. А ячейки 7630H и 762FH за что отвечают?
Точно. Опечатался когда набирал текст. Адреса для I - $7632 и $762f.
Вот оригинальный фрагмент инициализации этих ячеек в Мониторе:
Код:
adr_$f878:
lxi h, $762f
mvi m, $38
inx h
mvi m, $30
inx h
mvi m, $1f
inx h
mvi m, $24
Работает это дело так. В РК86 процедуры save_byte и load_byte используют две разные константы для записи и чтения. Пока при записи или чтении байта не достигнут последний бит, то используются сами константы. Если бит последний, то используя команду вычитания значение константы уменьшается на некоторое число. В Микроше для уменьшения констант вычитание не применяется, а берётся меньшее значение из соседних ячеек.
Итого.
Для директивы O используются ячейки $7631 и $7630, в которых изначально $1f и $30.
Для директивы I используются ячейки $7632 и $762f, в которых изначально $24 и $38.