Репліка калькулятора Sinclair Scientific демонструє, як змусити дешевий чіп творити дива
Чи був калькулятор Sinclair Scientific елегантним? Він визначено став хітом, і після виходу в 1974 прикрасив обкладинки журналів - наприклад, Popular Mechanics. Хитромудра прошивка змушувала його вельми обмежений процесор, здатний лише на базові арифметичні дії, виходити за межі своїх можливостей. Це дозволило Sinclair продавати науковий калькулятор тисячам людей, які в іншому випадку просто не змогли б собі його дозволити. Він працював повільно, іноді видавав помилки, і його набору функцій ледь вистачало, щоб він вважався науковим калькулятором; крім того, непосвяченим користувачам було важко його використовувати.
Я чув про нього краєм вуха завдяки тому, що він став віхою на шляху до зародження британської індустрії мікрокомп'ютерів і такій обожнюваній багатьма машині, як Sinclair ZX Spectrum. І коли я побачив репліку калькулятора в магазині Tindie від Кріса Чанга, всередині у мене щось клацнуло. Потім я прочитав опис роботи оригінального калькулятора (науковий запис, і ніякої клавіші «одно»?), і як репліка відтворює його поведінку. Там використовується емулятор з прошивкою, яку отримали реверс-інжинірингом шляхом візуального вивчення металу оригінального процесора. І мені, звичайно, захотілося спробувати таку штуку.
Репліка після рефакторингу. До речі, оригінальний Sinclair Scientific теж продавали у вигляді моделі для складання. Версія Кріса Чанга менше, використовує менше компонентів, і може відтворювати поведінку відразу двох калькуляторів на чіпах сімейства TMS080x: TI Datamath, простого арифметичного калькулятора, і Sinclair Scientific. Тому трафарет на платі підходить під обидва калькулятори.
Спочатку розглянемо залізо. Набір являє собою один з декількох варіантів репліки Sinclair Scientific, однак це один з найбільш простих наборів. Всього один чіп і плата розміром з кредитку в комплекті з невеликою кількістю компонентів. Чанг пропонує два варіанти: оригінальний, розроблений в 2014 році і викладений на Tindie в кінці 2019, показує цифри за допомогою випуклих світлодіодних модулів QDSP-6064. Вони виглядають як цифри з класичних калькуляторів 1970-х, проте вже давно не випускаються і їх важко знайти. Його оновлення набору від 2020 року використовує сучасні семисегментні світлодіоди. Раритетна версія коштує дорожче: $79 проти $39 за варіант 2020 року. Однак оригінальна версія має одну приємну особливість: розміри отворів плати підібрані так, що світлодіоди вставляються просто з зусиллям, без пайки. Їх можна вийняти і використовувати в інших проектах.
Функціонально обидва варіанти однакові і засновані на мікроконтролері MSP430. Він усуває необхідність у використанні майже всіх інших компонентів, які використовувалися в Sinclair Scientific, і на ньому працює емулятор сімейства чіпів TMS080x. Сімейство TMS080x виробляла компанія Texas Instruments (TI), а конкретні версії чіпів, наприклад, TMS0805, що використовувався в Sinclair Scientific, відрізнялися вмістом їх ROM на 3520 біт.
У стилі 70-х: у ранніх калькуляторах часто використовувалися такі випуклі світлодіодні модулі. Сфери служили лінзами, що збільшували невеликі сегменти.
Багато років загадка того, як Sinclair змусила цей чіп творити чарівництво, залишалася замкненою в ROM чіпа TMS0805. Ситуація змінилася в 2013, коли Кен Ширріфф почув про Sinclair Scientific, поспілкувавшись з командою Visual 6502. Ця група займається реверс-інжинірингом класичних чіпів, оригінальні креслення яких вже втрачені. Іноді для цього доводиться розчиняти корпус чіпа кислотою і акуратно фотографувати кристали в мікроскоп, вивчаючи окремі транзистори. Ширрифф зміг створити узагальнений симулятор чіпів TMS080x на JavaScript, просто вивчаючи заявки на патенти від TI. Однак конкретний код від Sinclair, що використовувався в ROM чіпа TMS0805, йому не давався до тих пір, поки один з членів команди Visual 6502, Джон Макмастер, не зробив фотографії кристала в 2014.
Ширрифф активно вивчає і описує історію обчислювальних машин, тому я написав йому питання про те, як йому вдалося перейти від мікрофотографій до робочого коду. Він написав, що вивчаючи, як були розташовані вентилі на тій ділянці чіпа, де у нього був ROM, "я відразу зміг витягти необроблені біти. Філ Майнварінг, Ед Спіттлс і я ще один день витратили на те, щоб зрозуміти, як ці біти пов'язані з кодом. Код складався з 320 слів по 11 біт, проте фізично в ROM було 55 рядків і 64 стовпця. Вивчаючи схему, аналізуючи закономірності битів, пробуючи прямим перебором різні комбінації, ми розібралися в тому, як там все було влаштовано, і змогли витягти код ".
Коли Ширріф завантажив код у симулятор, він зміг розібратися в принципах його роботи. Він, по суті, використовував "найпростіші алгоритми перебору, здатні дати відповідь. Однак для більшої точності використовувалися деякі математичні хитрощі, не кажучи вже про програмні хитрощі ", - пояснив він. Ширрифф підтримує онлайн-версію симулятора, де можна зневадником йти за кодом прострочено.
Ось це поворот: Sinclair Scientific підраховував тригонометричні функції, послідовно повертаючи початковий вектор до тих пір, поки він не доходив до мети. Для більшості кутів це займало кілька секунд.
Sinclair Scientific змогли зменшити складність коду використовуючи зворотний польський запис, в якому математичні оператори йдуть після чисел, над якими проводиться дії - наприклад, дія «5 + 4» пишеться як «5 4 +». Тригонометричні функції використовували техніку ітераційного наближення, яка могла підраховувати результат по кілька секунд, і іноді давала точність максимум до третього числа після коми. Калькулятор використовував фіксований науковий запис для всього - десятковий роздільник ввести було не можна. Тобто, замість введення 521.4 потрібно вводити 5214, а на дисплеї це виглядає, як 5.214. Потім потрібно натиснути E і ввести 2, що дасть число 5.214 плечей 102. За один раз можна вводити тільки одне число.
У такому описі це виглядає жахливо. До такого можна було б звикнути, тільки якщо б ви не могли дозволити собі, припустимо, HP-35, творці якого пишалися його точністю і функціональністю (хоча HP-35 теж використовував зворотний польський запис, в ньому все було трохи хитріше).
Однак Sinclair намагалася конкурувати не з іншими калькуляторами, а з логарифмічною лінійкою. Я читав про це, але реально усвідомив тільки тоді, коли отримав набір. Випадково я нещодавно якраз купив вінтажну логарифмічну лінійку Pickett, і навчився виконувати на ній базові математичні операції з уроків, доступних на сайті міжнародного музею логарифмічних лінійок. Потім, спробувавши в справі Sinclair Scientific, я вразився тому, наскільки він був концептуально схожий на мою логарифмічну лінійку. Для неї точність до двох-трьох цифр після коми - річ нормальна, ви виставляєте ковзне віконце лінійки так, щоб між шкалами було всього одне число, без урахування порядку. Ви працюєте зі значущими цифрами, а потім проставляєте ком у кінцевого результату - тому, наприклад, 52 2 і 5200 20 обчислюються абсолютно однаково.
Тому набори для відтворення реплік так важливі - подібне розуміння принципів роботи пристрою можна отримати, тільки потримавши його в руках. Це нагадало мені висловлювання про те, що хороший дизайн - це не абстрактний ідеал, він існує тільки в конкретному контексті. То чи був калькулятор Sinclair Scientific елегантним? З моєї точки зору, ще яким.
Див. також:
- «Нейросетевий калькулятор для складання і віднімання не дуже великих чисел»
- "Розробка калькулятора HP-35: як створювалася інновація "
- «Впровадження в архітектуру радянських калькуляторів» Електроніка МК-52 «»
