Поднаписал. Но всё равно failed (как мне уже надоело это слово)
Вид для печати
Поднаписал. Но всё равно failed (как мне уже надоело это слово)
Ну не хочет ROBOCOP ходить.
http://dl.dropbox.com/u/12408899/CVB...29ROBOCOP1.zip
При AF=#0012 дает AF=#FAAE вместо #FABE, т.е. ошибочно сбрасывается HF.
#12 значит взведены HF и NF, A=#00. Значит, идем по пункту 2a):
2a) Если флаг H до исполнения был взведен и четыре младших разряда регистра A меньше или равны 5, тогда после исполнения HF должен быть взведен.
Смотреть нужно на значение регистра A как оно было до исполнения инструкции. Может быть, в этом ошибка?
Что-то со стеком или с памятью вообще.
Смотрите со строки 6284:
Здесь вызывается подпрограмма обновления контрольной суммы по адресу #94fd. Это подпрограмма у вас вызывается успешно много раз. Но в очередной раз, начиная вызов со строки 6284, подпрограмма доходит до строкиЦитата:
8928 0092 0000 0000 0092 2000 2000
соответствующей инструкции RET, но возвращает управление не по адресу #8928 + 3 = #892B (адрес инструкции CALL + ее размер), а по адресу #8900.Цитата:
9526 0092 0000 0000 fabe 2000 2000
Если сразу ошибку не найдете, давайте попробуем сделать тот же трейсинг добавив в него значения регистра SP. Может быть, это наведет на нужную мысль.
Исправил. Добавил SPH:SPL в конце строки.