Для Z80 надо монитор переделывать.
Этот код будет неправильно выполняться:
Код:ROM:FCCC ld a, (7604h) ROM:FCCF dec a ROM:FCD0 jp m, loc_FCEE ROM:FCD3 jp z, loc_FD65 ROM:FCD6 jp po, loc_FD73 ROM:FCD9 ld a, c ROM:FCDA sub 20h ; ' '
Для Z80 надо монитор переделывать.
Этот код будет неправильно выполняться:
Код:ROM:FCCC ld a, (7604h) ROM:FCCF dec a ROM:FCD0 jp m, loc_FCEE ROM:FCD3 jp z, loc_FD65 ROM:FCD6 jp po, loc_FD73 ROM:FCD9 ld a, c ROM:FCDA sub 20h ; ' '
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Понятно. Спасибо. Ошибка возникла из-за того, что я использовал RK-DOS не на РК86, где код в ПЗУ, а на ОРИОНЕ, где код в ОЗУ и никаких ПДП нет. А экономить объём кода приходилось, чтобы выиграть TPA, т.к оконный драйвер занимает до 12 кб, RK-DOS 5 кб и экран ОРИОНА - 12 кб, что оставляет совсем мало места для программ, так что я экономил везде где мог. Естественно, для 80x86 самомодифицирующийся код считается неприличным, но на КР580/Z80 это повсеместно используется и считается нормальным, хотя и существенно затрудняет получение полноценного исходника примитивным дизассемблером (на IDA с этим проще, хотя время на получение полноценного исходника отнимает больше).
В моих неполноценных эмуляторах РК86 этот дефект было никак не обнаружить, т.к в одном моём эмуляторе вообще ничего невозможно выше 8000 (там код самого эмулятора), а в другом по адресу E000 - ОЗУ, а БИС ПДП вообще нигде и никак не эмулируется. Ведь ПДП для программ незаметен, отчего эмулировать его и не требуется - предполагается, что режим 78*30 "устанавливается сам по себе" (это изменить можно только вручную настроив параметры эмулятора). Для игр неиспользующих псевдографику этого хватало.
Если кому-то интересно, то я перетранслирую выложенную ранее версию для ОЗУ, так чтобы она работала и в ПЗУ (достаточно перенести все рабочие ячейки ниже 76D0, отчего код слегка разбухнет). Думаю, что никому RKDOS для Z80 "не горит", т.е не к спеху. Сейчас я занят, потому смогу сделать исправление через сколько-то дней.
- - - Добавлено - - -
https://yadi.sk/d/v_otxL6V3HMFgz - это исправленное вложение (RKDOS Z80, ужатая в 4 кб) из поста http://zx-pk.ru/threads/20887-radio-...l=1#post898490
как реакция на ошибку в коде RKDOS, которую нашел Pyk и описал в предыдущем посте. Здесь я изменил только адреса рабочих ячеек, что ранее были прямо в теле DOS (отчего этот код не мог работать в ПЗУ, только в ОЗУ).
Теперь эти ячейки перенесены в ОЗУ. Использованы ячейки:
POS - 762E, это ячейка флаг инверсии с МГ, явно не используется во время работы в RK-DOS, и
PSKFLG - 760C, это ячейка, которая вообще не используется в ПЗУ РК86 (забытая ячейка).
Последний раз редактировалось barsik; 25.04.2017 в 23:32.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)