В РАБОЧЕМ РЕЖИМЕ
Итак, ПМ-ЭВМ собрана, реагирует на нажатия клавиш, индикация загорается и гаснет, по-видимому, так, как нужно. Но это еще не значит, что ПМ-ЭВМ полностью проверена и функционирует правильно. Гарантировать стопроцентную проверку вычислительной системы вообще невозможно, тем более с помощью имеющихся у читателя простейших средств. МП может неправильно выполнять некоторые операции и притом только для некоторых сочетаний кодов, микросхемы запоминающих устройств могут иметь неисправные или ненадежные ячейки, искажающие некоторые сочетания кодов. Отдельные элементы ЭВМ могут работать в предельных режимах по нагрузке, по временным допускам, по питанию, по уровню помех и выдавать сбои при изменении внешних условий. Рано или поздно это выявится в процессе эксплуатации. Однако надлежаще проведенные испытания в начале эксплуатации позволят выявить значительную часть дефектов и устранить их. Первое, что необходимо сделать, - это проверить работоспособность ОЗУ. Простейший способ - записывать в ячейки ОЗУ с помощью клавиатуры различные коды, а затем последовательно считывать их, проверяя совпадение. Такой метод очень трудоемок, так как ПМ-ЭВМ имеет 1024 ячейки ОЗУ, к тому же некоторые ячейки, надежные в статике, в динамике могут выдавать неверные коды. Приведенная ниже программа позволяет автоматически записать заданный код в произвольно заданную зону оперативной памяти. Программа записывается, начиная с ячейки ОЗУ с адресом 014Q OOOQ и занимает 24 ячейки. Зона памяти, в которую заносится код, может начинаться с ячейки 014Q 030Q. Этот адрес заносится в регистровую пару Н командой LXIH. Адрес конца зоны заносится в регистровую пару D командой LXID. Устанавливаемый код задается вторым байтом команды MVIM адреса 014Q 007Q и 014Q 024Q. Проверку правильности записи можно произвести вручную, последовательно просматривая память:
014000041 Ml: LXIH, 014Q 030Q
014001 030
014002014
014003021 LXI D, 017Q377Q
014 004 377
014005017
014006066 M2: MVIM, OOOQ
014 007 000
014010043 INXH
014011 174 MOV A, H
014012222 SUBD
014 013 302 JNZ M2
014014 006
014015 014
014016173 MOV A, E
014017225 SUBL
014 020 302 JNZ M2
014 021 006
014022014
014 023 066 MVI M, OOOQ
014 024 000
014025303 JMPM1
014 026 000
014027014
Путем незначительного усложнения программы можно автоматизировать проверку правильности записи:
014 000 006 MVI B, OOOQ
014 001 000
014002041 Ml: LXI H, 014Q 055Q
014003055
014 004 014
014 005 021 LXI D, 020Q OOOQ
014 006 000
014 007 020
014010160 M2: MOV M, В
014011 170 MOV А, В
014012226 SUBM
014013302 JNZM4
014014 035
014015 014
014016043 МЗ: INX H
014017174 MOV A, H
014 020 222 SUB D
014021302 JNZM2
014022010
014023 014
014024 173 MOV A, E
014025225 SUB L
014026302 JNZ M2
014027010
014030014
014031000 NOP
014032303 JMPM1
014033 002
014034 014
014035174 M4: MOV A. H
014036323 OUT 0010
014037 001
014040175 MOV A, L
014041323 OUT OOOQ
014 042 000
014043 176 MOV A, M
014044323 OUT002Q
014045 002
014046315 CALLSKL
014047 177
014050000
014051303 JMPM3
014052016
014053 014
В данной программе проверочный код заносится по адресу 014Q 001Q. Сверка кодов производится последовательно в порядке возрастания адресов. При обнаружении ошибки программа выводит адрес в порт 001 (старшие разряды) и в порт 000 (младшие разряды), содержимое ячейки — в порт 002 и переходит в режим опроса клавиатуры. Нажатие любой кнопки запускает программу на проверку следующих ячеек до новой ошибки, и так далее до конца проверяемой зоны. Для более полной проверки необходимо задавать различные проверочные коды, в предельном случае — от OOOQ до 377Q. Поставив на место команды NOP по адресу 014Q 031Q команду INRB (код 004Q), получим программу автоматической проверки памяти для всех кодов. Читатель" может сам оценить, какая программа удобнее в эксплуатации. Необходимо заметить, что ячейки ОЗУ, отведенные для программы проверки, должны быть заведомо исправными, и чем длиннее программа, тем труднее найти зону для ее размещения.
В результате проверки выясняется, какой частью ОЗУ можно располагать для работы. Лучше всего, когда все ячейки ОЗУ исправны и, значит, программы могут последовательно размещаться в ячейках памяти. Однако и при наличии дефектных ячеек (если их не слишком много) можно использовать почти весь оставшийся объем памяти, обходя дефектные места с помощью команды JMP.
С помощью простейших пробных программ необходимо также проверить исполнение всей системы команд МП.Например, программа MVI A, OPERA ADI, OPERB OUT PORT1 проверяет исполнение команд MVIA, ADI и OUT.