Есть задачка важная, может кто-то сможет помочь - очень нужно "починить" один файлик из набора автотеста, т.к. загрузка Э-85 затыкается на проверке КС одного модуля.
Разные цитаты:
;ПРОИЗВЕСТИ КОНТРОЛЬНОЕ СУММИРОВАНИЕ СОДЕРЖИМОГО ПЗУ МОДУЛЯ
;КОЛИЧЕСТВО СУММИРУЕМЫХ ЯЧЕЕК РАВНО СОДЕРЖИМОМУ БАЙТА 7 ПЗУ, УМНОЖЕННОМУ НА 200
В R0 - уже занесена емкость ПЗУ (из мл. и ст. байтов 6,7), это число известно заранее и прописано в этой же ПЗУ
Дописал, как, я понимаю, там проводится эта проверка:
В общем как можно узнать _какое именно_ значение КС (т.е. два байта) _должно быть записано_ в конец ПЗУ что бы TST 1020 в итоге дал 0?..Код:BIS #-1,1020 (либо MOV #177777,1020) ; начальное значение в рабочей ячейке КС 1S: MOV #200,R1 ; Начинаем новый цикл по 200 байт 2S: MOVB 174200,1022 ; каждое чтение по адресу слота 174200 даст следующий байт из содержимого ПЗУшки MOVB 174200,1023 ; (там аппаратно увеличивается внутренний указатель на данные) MOV 1022,R2 ; таким образом считали 2 байта из ПЗУ ; сама кухня КС: XOR R2,1020 ; "Исключающее ИЛИ" считанных 16 бит (R2) и накопительным значением текущей КС (содержимым 1020) CLC ; очистили флаг переноса ROL 1020 ; сдвинули влево накопительное значение текущей КС (повышаем надёжность?) ADC 1020 ; (зачем-то прибавили туда перенос) SOB R1,2S ; R1-- 200 раз пока не == 0 SOB R0,1S ; R0--, достигли окончания данных в ПЗУ? (зависит от емкости ПЗУ) TST 1020 ; КС=0? ДА - ОК, ЕСЛИ НЕТ - ОШИБКА КС СОДЕРЖИМОГО ПЗУ МОДУЛЯ
В идеале переписать бы на С пример для универсального подсчета по массиву байтов.
В аттаче - корректные файлы ПЗУ для примеров, ну и описание полей...




.
Ответить с цитированием