Введение

Учебное пособие CARDIAC (CARDboard Illustrative Aid to Computation) – это учебное пособие, разработанное Дэвидом Хагельбаргером и Саулом Фингерманом в Bell Telephone Laboratories в 1968 году для обучения старшеклассников принципам работы компьютеров. Комплект состоит из руководства по эксплуатации и вырезанного из картона "компьютера". "Работа" компьютера осуществляется с помощью карандаша и сдвигаемых карт. Все арифметические вычисления выполняются оператором мысленно. Компьютер работает в десятичной системе и имеет 100 ячеек памяти, способных хранить целые числа со знаком от 0 до ±999. Набор его инструкций включает 10 команд, позволяющих CARDIAC выполнять сложение, вычитание, проверку условий, сдвиг, ввод, вывод и переход.

Оборудование

CPU компьютера состоит из 4 слайдов, которые перемещают различные числа и стрелки, чтобы обеспечить правильное направление потока, подобного реальному процессору (мозгу пользователя). У них есть один флаг (+/-), на который влияет результат в аккумуляторе. Память состоит из другой половины картонной вырезки. В ней 100 ячеек. Ячейка 0 – это ПЗУ, всегда содержащая число "1"; ячейки с 1 по 98 – это ОЗУ, доступные для инструкций и данных; а ячейка 99 лучше всего описывается как EEPROM. В ячейках памяти хранятся знаковые десятичные числа от 0 до ±999, которые записываются карандашом. Ячейки стираются ластиком. Специальный маркер ("bug") используется в качестве счетчика команд и помещается в отверстие рядом с текущей ячейкой памяти.

Программирование

В CARDIAC существует машинный язык, состоящий из 10 инструкций. Инструкция представлена тремя десятичными цифрами (знак игнорируется) в формате OAA. Первая цифра – это код операции (O), вторая и третья цифры – адрес (AA). Адресация может быть выполнена от аккумулятора к абсолютной ячейке памяти, от абсолютной ячейки памяти к аккумулятору, из входного устройства в абсолютную ячейку памяти и из абсолютной ячейки памяти в выходное устройство. Языки высокого уровня для CARDIAC никогда не разрабатывались, так как это противоречило бы одной из целей устройства: ознакомлению с концепциями программирования на языке ассемблера. Программы собираются вручную, а затем записываются карандашом в соответствующие ячейки памяти.

Набор инструкций

+ CARDIAC Набор команд Код операции Мнемоника Инструкция Описание 0 INP Ввод взять число с входной карты и поместить его в указанную ячейку памяти. 1 CLA Очистить и добавить очистить аккумулятор и добавить содержимое ячейки памяти к аккумулятору. 2 ADD Добавить добавить содержимое ячейки памяти к аккумулятору. 3 TAC Проверка аккумулятора выполнить проверку знака содержимого аккумулятора; если отрицательное, перейти к указанной ячейке памяти. 4 SFT Сдвиг сдвинуть аккумулятор на x позиций влево, затем на y позиций вправо, где x – старшая цифра адреса, а y – младшая. 5 OUT Вывод взять число из указанной ячейки памяти и записать его на выходную карту. 6 STO Сохранить скопировать содержимое аккумулятора в указанную ячейку памяти. 7 SUB Вычитание вычесть содержимое указанной ячейки памяти из аккумулятора. 8 JMP Переход перейти к указанной ячейке памяти. Номер текущей ячейки записан в ячейке 99. Это позволяет реализовать один уровень подпрограмм, возвращаясь к инструкции в ячейке 99 (в которой первая цифра жестко задана как "8"). 9 HRS Остановка и сброс переместить ошибку в указанную ячейку, затем остановить выполнение программы.

Операция

Программы выполняются путем последовательного сдвига трех слайдов до тех пор, пока число в регистре команд не совпадет с числом в ячейке памяти, где находится жук. После этого жук перемещается в следующую ячейку памяти. Пользователь затем следует по стрелке, которая указывает, что нужно сделать дальше. Этот процесс повторяется на протяжении всего выполнения программы.