Кіріспе
CARDIAC (CARDboard Illustrative Aid to Computation) – 1968 жылы Дэвид Хагельбаргер мен Саул Фингерманның Bell Телефон зертханалары үшін жоғары сынып оқушыларына компьютерлердің қалай жұмыс істейтінін үйрету мақсатында әзірлеген оқу құралы. Жинаққа пайдалану жөніндегі нұсқаулық және кескішпен қиылған картоннан жасалған "компьютер" кіреді. Бұл "компьютер" қарындаш пен жылғалатын карточкалар арқылы "жұмыс істейді". Кез келген есептеулерді компьютерді басқаратын адам өз басында жасайды. Компьютер 10-дық санау жүйесінде жұмыс істейді және 0-ден ±999-ға дейінгі таңбалы сандарды сақтай алатын 100 жад ұяшығына ие. Оның 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 слайдтан тұрады, олар әртүрлі сандар мен жебелерді жылжытып, нағыз CPU (пайдаланушының миы) ағынының дұрыс бағытта жұмыс істеуін қамтамасыз етеді. Оларда аккумулятордағы нәтижеге әсер ететін бір белгі (+/ ) бар. Жадының екінші жартысы картоннан жасалған. Барлығы 100 ұяшық бар. 0-шы ұяшық – "ROM", онда әрдайым сандық "1" болады; 1-ден 98-ге дейінгі ұяшықтар – "RAM", олар нұсқаулар мен деректерді сақтауға арналған; ал 99-шы ұяшықты ең дұрысы "EEPROM" деп атауға болады. Жады ұяшықтары 0-ден ±999-ға дейінгі ондық сандарды сақтайды және қарындашпен жазылады. Ұяшықтарды өшіргішпен тазалауға болады. "Bug" бағдарламалық тізілім рөлін атқарады және ағымдағы жады ұяшығының жанындағы тесікке орналастырылады.
Бағдарламалау
CARDIAC-тың 10 нұсқаулық машина тілі бар. Нұсқаулық – үш ондық сан (таңбасы ескерілмейді) OAA түрінде болады. Бірінші цифр операциялық кодты (O) білдіреді; екінші және үшінші цифрлар мекенжайды (AA) көрсетеді. Адрестеу тәсілдері: аккумулятордан жадқа абсолютті, жадтан аккумуляторға абсолютті, кірістен жадқа абсолютті және жадтан шығысқа абсолютті. CARDIAC үшін жоғары деңгейдегі тілдер ешқашан жасалмаған, себебі бұл құрылғының мақсатының бірін – ассемблерлік бағдарламалау тілінің негізгі ұғымдарын таныстыруды жояды. Бағдарламалар қолмен құрастырылып, содан кейін тиісті жад жасушаларына қарындашпен түсіріледі.
Нұсқаулар жиынтығы
+ CARDIAC нұсқаулар жиынтығы Opcode Mnemonic нұсқаулар сипаттамасы 0 INP Input кіріс картасынан санды алып, оны белгіленген жад ұяшығына салады. 1 CLA Акумуляторды тазалап, жад ұяшығының мазмұнын аккумуляторға қосады. 2 ADD Add жад ұяшығының мазмұнын аккумуляторға қосу. 3 TAC Тест Аккумулятордың мазмұнына таңба тестісін жасайды; егер минус болса, көрсетілген жад ұяшығына секіру. 4 SFT Shift аккумуляторды x орынға солға, содан кейін y орынға оңға жылдырады, мұнда x – жоғарғы мекенжай цифры, ал y – төменгісі. 5 OUT Output көрсетілген жад ұяшығынан санды алып, оны шығару картасына жазады. 6 STO Сақтау Аккумулятордың мазмұнын белгіленген жад ұяшығына көшіріп сақтау. 7 SUB Азайту Белгілі бір жад ұяшығының мазмұнын аккумулятордан азайту. 8 JMP Секіру Белгіленген жад ұяшығына секіру. Ағымдағы ұяшық нөмірі 99 ұяшыққа жазылады. Бұл 99 ұяшықтағы нұсқауға қайта оралу арқылы бір деңгейлі қосалқы бағдарламаларды жүзеге асыруға мүмкіндік береді (бірінші цифры "8" болып қатаң түрде бағдарламаланған). 9 HRS Тоқтату және қайта орнату қателік белгісін көрсетілген ұяшыққа жылжыту, содан кейін бағдарламаның орындалуын тоқтату.
Операция
Бағдарламалар алдымен үш слайдты жылжыту арқылы іске қосылады, осылайша нұсқау тізіліміндегі сан қате орналасқан жад ұяшығындағы санмен сәйкес келеді. Бұл аяқталғаннан кейін, қате келесі жад жасушасына жылжытылады. Содан кейін пайдаланушы көрсетілген жебе бойынша келесі қадамды орындайды. Бұл бағдарламаның орындалуы аяқталғанға дейін жалғаса береді.