CARDIAC (CARDIAC) - это учебное пособие, разработанное Bell Telephone Laboratories и для него в 1968 году, чтобы научить старшеклассников, как работают компьютеры. В комплект входит инструкция по эксплуатации и высеченный из картона «компьютер».
Компьютер «работает» с помощью карандаша и скользящих карточек. Любая арифметика производится в голове человека, работающего на компьютере. Компьютер работает с базой 10 и имеет 100 ячеек памяти, которые могут содержать числа со знаком от 0 до ± 999. Он имеет набор из 10 инструкций, который позволяет CARDIAC складывать, вычитать, тестировать, сдвигать, вводить, выводить и переходить.
«ЦП » компьютера состоит из 4 слайдов, на которых перемещаются различные числа и стрелки, чтобы поток реального ЦП (мозг пользователя) двигался в правильном направлении. У них есть один флаг (+/-), на который влияет результат в аккумуляторе.
Память состоит из второй половины картонного выреза. Есть 100 ячеек. Ячейка 0 - это «ROM », всегда содержащая числовую «1»; ячейки с 1 по 98 - «RAM »; доступны для инструкций и данных; а ячейку 99 лучше всего описать как «EEPROM ».
Ячейки памяти содержат знаковые десятичные числа от 0 до ± 999 и записываются карандашом. Клетки стираются ластиком. Предусмотрен «жучок», который действует как счетчик программы, и помещается в отверстие рядом с текущей ячейкой памяти.
CARDIAC имеет 10 инструкций машинного языка. Инструкция состоит из трех десятичных цифр (знак игнорируется) в форме OAA
. Первая цифра - это код операции (O
); вторая и третья цифры - это адрес (AA
). Адресация представляет собой одно из: абсолютная память - абсолютная память, абсолютная память - аккумулятор, ввод - абсолютная память и абсолютная память - вывод.
Языки высокого уровня никогда не разрабатывались для CARDIAC, поскольку они нарушили бы одну из целей устройства: представить концепции программирования на языке ассемблера.
Программы собираются вручную, а затем заносятся в соответствующие ячейки памяти.
Opcode | Mnemonic | Instruction | Описание |
---|---|---|---|
0 | INP | Вход | взять номер с карты ввода и поместить его в указанную ячейку памяти. |
1 | CLA | Очистить и добавить | очистить аккумулятор и добавить содержимое ячейки памяти в аккумулятор. |
2 | ADD | Добавить | добавить содержимое ячейки памяти в аккумулятор. |
3 | TAC | Проверка содержимого аккумулятора | выполняет проверку знака содержимого аккумулятора; если минус, переход к указанной ячейке памяти. |
4 | SFT | Shift | сдвигает аккумулятор на x позиций влево, затем на y позиций вправо, где x - это верхняя цифра адреса, а y - нижняя. |
5 | OUT | Выход | берет число из указанной ячейки памяти и записывает его на карту вывода. |
6 | STO | Store | копирует содержимое аккумулятора в указанную ячейку памяти. |
7 | SUB | Subtract | вычитает содержимое указанной ячейки памяти из аккумулятора. |
8 | JMP | Перейти | перейти к указанной ячейке памяти. Текущий номер ячейки записывается в ячейку 99. Это позволяет использовать один уровень подпрограмм, имея в качестве возврата инструкцию в ячейке 99 (первая цифра которой жестко запрограммирована как «8». |
9 | HRS | Halt и сбросить | переместить ошибку в указанную ячейку, затем остановить выполнение программы. |
Программы запускаются, сначала сдвигая три слайда так, чтобы число в регистре инструкций было равно числу в ячейка памяти, в которой находится ошибка. После этого ошибка перемещается в следующую ячейку памяти. Затем пользователь следует за стрелкой, которая затем сообщает ему, что делать дальше. Это продолжается для всего выполнения программы.