Введение
Учебное пособие CARDIAC (CARDboard Illustrative Aid to Computation) – это учебное пособие, разработанное Дэвидом Хагельбаргером и Саулом Фингерманом в Bell Telephone Laboratories в 1968 году для обучения старшеклассников принципам работы компьютеров. Комплект состоит из руководства по эксплуатации и вырезанного из картона "компьютера". "Работа" компьютера осуществляется с помощью карандаша и сдвигаемых карт. Все арифметические вычисления выполняются оператором мысленно. Компьютер работает в десятичной системе и имеет 100 ячеек памяти, способных хранить целые числа со знаком от 0 до ±999. Набор его инструкций включает 10 команд, позволяющих CARDIAC выполнять сложение, вычитание, проверку условий, сдвиг, ввод, вывод и переход.
CARDIAC (CARDboard Illustrative Aid to Computation) is a learning aid developed by David Hagelbarger and Saul Fingerman for Bell Telephone Laboratories in 1968 to teach high school students how computers work. The kit consists of an instruction manual and a die cut cardboard "computer". The computer "operates" by means of pencil and sliding cards. Any arithmetic is done in the head of the person operating the computer. The computer operates in base 10 and has 100 memory cells which can hold signed numbers from 0 to ±999. It has an instruction set of 10 instructions which allows CARDIAC to add, subtract, test, shift, input, output and jump.
Оборудование
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 Остановка и сброс переместить ошибку в указанную ячейку, затем остановить выполнение программы.
Операция
Программы выполняются путем последовательного сдвига трех слайдов до тех пор, пока число в регистре команд не совпадет с числом в ячейке памяти, где находится жук. После этого жук перемещается в следующую ячейку памяти. Пользователь затем следует по стрелке, которая указывает, что нужно сделать дальше. Этот процесс повторяется на протяжении всего выполнения программы.