От средата до края на 2000-те години във всяко едно училище на САЩ имаше дете, което записваше и играеше игри на своя графичен калкулатор. Днес това навярно няма да ви учуди, но някои от тези хора бяха много интересни. Тогава съществуваше една процъфтяваща сцена за хакери, които подчиняваха тези калкулатори на своята воля. Те пишеха игри за тях, математичен софтуер или просто хакваха тези платформи за собствено удоволствие и за да научат повече.
Тук ще се спрем върху някои проекти за калкулаторите на Texas Instruments, с което в миналото се занимавахме в продължение на цели 25 години и ще обясня защо тези проекти са толкова впечатляващи от техническа гледна точка.

Платформата
През 90-те и 2000-те години TI представи на пазара редица графични калкулатори базирани на процесора Z80. Може би сте чували за Z80 – значително подобрената версия на Intel 8080, която бе създадена от Zilog. Да, този процесор е наистина толкова стар. И до днес има цял клас от изключително популярни хоби-проекти за създаване на собствен компютър с процесора Z80, който се използва в най-различни устройства. Устройството на този чип е толкова опростено, че дава възможност съвсем лесно да се разберат основите на компютърните системи.
Когато тези процесори излязоха на пазара (преди цели 45 години!), те веднага се наложиха, защото имаха много добри характеристики. Всички калкулатори на Texas Instruments имаха почти едни и същи технически характеристики, като техните възможности към днешен ден изглежда твърде слаби.
Ето в основни линии какви са те:
- Процесор Z80, обикновено с тактова честота 8 или 10 MHz. Да уточним, че Z80 може да изпълнява по една процесорна команда само на всеки четири такта
- Черно-бял LCD дисплей с резолюция 96 X 64 пиксела. Някои модели имаха по-големи екрани, но този бе най-разпространеният. По-новите калкулатори вече имаха цветни екрани с по-голяма разделителна способност.
- Така нареченият линк порт за обмен на данни, който всъщност бе 2,5 милиметрово гнездо за слушалки
- Обикновено 32 KB RAM, а от версия 83+ и нагоре – от 100 KB до 2 MB флаш памет за запис на програмите и на данните
- Операционната система на Texas Instruments с с прякор TI-OS. Нейното официално име е EOS, но никой освен компанията не я наричаше така. TI-OS имаше:
- Енджин за извършване на аритметични изчисления и съставяне на графики
- Скриптовия език за програмиране TI-BASIC
- Моделите с флаш памет поддържаха стартирането на големи приложения, които изцяло бяха записани в тази памет
От казаното дотук навярно става ясно, че възможностите на тези устройства бяха доста ограничени.
Разбира се, най-популярният графичен калкулатор от това време бе TI-83/84 Plus, който със сигурност е държал в ръцете си всеки американски студент, учил през последните 25 години. В тази статия ще използвам TI-84 Plus, понеже този калкулатор навярно е известен на всички, тъй като бе по-разпространен заради наличието на USB порт и поради променения дизайн на корпуса.
Програмирането
Средата за програмиране на асемблер за Z80 бе доста спартанска: нямаше дебъгери, нямаше защита на паметта и при наличието на бъг, работата на калкулатора се сриваше и излизаше зловещото съобщение RAM Cleared. Да напомня, че Z80 е 8-битова машина с 16-битови указатели и се налагаше паметта да бъде разделена на страници от по 16 KB.

В тези години имаше редица ръководства за изучаване асемблера на Z80, но според мен най-доброто беше на Шон Маклафлин Learn TI-83 Plus Assembly in 28 Days. Самата TI предлагаше много добра документация за подпрограмите на TI-OS. Благодарение на всичко това получавахме пълната власт върху системата.
Програмните проекти
Всички, които следяха за новините относно хакинга на тези калкулатори навярно ще си спомнят споменатите по-долу хора по име или по никнейм.
Проектът Phoenix
Най-популярната игра за тези графични калкулатори бе Phoenix на Патрик Дейвидсън. Това бе космически шутър с поглед отгоре, който прилича на аркадната игра Galaxian. Ти бе популярна не затова, че бе много увлекателна (въпреки че си е увлекателна) и не заради качеството на реализацията (въпреки че реализацията бе много качествена). Тя стана знаменита просто понеже беше една от първите, а Патрик и другите я портнаха за почти всеки калкулатор с процесора Z80.
Нюанси на сивото в калкулатора TI-84 Plus
RPG играта на Патрик Прендъргаст (tr1p1ea) с име Desolate ме порази с това, че имаше четири нива на сивото. Тази игра не беше просто едно технологично демо. Тя си имаше пълноценен сценарий и много добра спрайтова графика. Тя се оказа толкова добра,че бе портната за ZX Spectrum и някои други компютри от това време.
Как може да бъде направено подобно нещо на устройство с черно-бял екран? Работата е в това, че ако пикселите бъдат включвани и изключвани достатъчно бързо, то те започват да изглеждат сиви. Наивните опити за реализирането на тази идея водеха до ужасно примигване и не можаха да дадат повече от три цвята – черен, бял и сив. Но библиотеката за нюанси на сивото на Дарк Кингъм, която се използва в Desolate, даваше възможност за получаване на красива графика с четири нива на сивото благодарение на точно подбраните тайминги и дитъринга на примигващите пиксели, за да не могат те да се включват и изключват едновременно. Тази графика консумираше по-голямата част от ресурсите на калкулатора, но такава е съдбата на повечето видеоигри.
Емулатор на Game Boy за TI-84 Plus
TI съвсем не е единствената компания, използвала процесора Z80. На този чип се базираше и първия Game Boy! Разбира се, всички се питаха дали има възможност да стартираме игрите за Game Boy на този калкулатор – може би в нещо като хипервайзор?
Брендън Флетчър (calc84maniac) приложи огромен брой инженерни решения за създаването на TI-Boy SE, който върши точно това. Касетката на Game Boy има доста големи ресурси – ROM-ът на Pokémon Red е с големина 1 MB, а TI-Boy реши този проблем като компресира ROM-а и след това го записва във флаш паметта на калкулатора, който счита това за една от своите библиотеки и я разкомресира. Компресията става с помощта на персонален компютър, като разбира се, по това време трябваше да се използва оригиналния ROM на касетата за Game Boy.
Другият по-важен проблем бе, че редица Game Boy касети имаха много оперативна памет (до 128 KB), а калкулаторът TI-84 Plus предлага само само 32 KB. Да напомня, че Game Boy има само 8 MB RAM, но касетките могат да добавят памет. Това ни се струваше задънена улица – как може да се емулира допълнителна RAM?
Ксавие Андреани забеляза, че калкулаторите на TI всъщност имат допълнителна RAM, понеже универсалният чип с интегриран процесор и други модули има собствена оперативна памет, което не се вижда в документацията на калкулатора. TI-Boy извърши реверсивно инженерство на специалните команди, използвани за работа с тази вградена памет и намери начин да я включи в адресното пространство на процесора във вид на банки памет.
Резултатът бе впечатляващ. По-горе се вижда как изглежда Legend of Zelda на този калкулатор.
USB драйвер за използването на TI-84+ като външен диск
Калкулаторът 84+ имаше твърде странен USB порт. Това бе порт On-the-Go и когато се появи, за него нямаше никаква информация. Казано най-общо, 84+ можеше да работи в качеството на USB хост. Програмата Usb8x на Дан Енглендър добавяше липсващия код в използвания от TI драйвер, и даваше възможност за използване на мишката (съмнително удоволствие), клавиатурата и най-важното – калкулатора като флаш диск.
Зареждащият код на калкулатора предоставя подпрограми от ниско ниво за работа с USB порта за обмен на данни. Но най-важен бе горният стек на USB. Това бе оригиналният драйвер на калкулатора плюс FAT16 благодарение на msd8x. Разбира се, всичко това бе написано на асемблер за Z80.
Програмата Usb8x разкри маса изключително интересни възможности и Майкъл Винсънт навярно е един от малкото хора, гледали Матрицата на калкулатор.
KnightOS
Дрю Деволт (SirCmpwn) представи своя проект за пълната замяна на TI-OS със съвършено нова многозадачна операционна система в стил Unix и име KnightOS. Интересното в тази ОС е че тя спазва парадигмата за многозадачна работа, която при Linux и MAC се разбира от само себе си, само че тук всичко е реализирано почти без хардуер – единствено на софтуерно ниво. Програмите можеха да бъдат премествани, вградена бе приоритетна многозадачност, имаше програмни библиотеки, които работят по съвсем същия начин като обектите в Unix. Имаше си и всъщност все още има файлова система с папки, съобразена с износването на флаш-паметта и протокол за свързване с компютър.
Разбира се, всичко това бе много внимателно написано на асемблер за Z80, а в подпрограмите на ядрото и библиотеките са документирани състоянията на всеки регистър на процесора.
Сорс кодовете вече са качени в GitHub. За съжаление, твърде широкия спектър от възможности, които трябваше да бъдат вградени в тази операционна система, не даде възможност за излизането на нейна стабилна версия. Но основните неща работеха и са прекрасни.
Аз също имам принос в този проект. Успях да въведа в KnightOS основните принципи на синхронизацията, мютексите и условните променливи.
Какво следва?
Паралелно с всеки показан тук проект има десетки други, които не са включени в този статия, но ширината и дълбочината на направеното са потресаващи.
В училищата и институтите Texas Instruments винаги е имала конкуренция, включително и няколко доста интересни устройства на Casio. За калкулаторите на Casio също има редица интересни подобни проекти.
Но процесорът Z80 се използва и днес в най-различни устройства за промишлеността и не само. След изтеклите толкова много години той вече е добре познат и е една стабилна основа за създаването на най-различни нови уреди. Създадените преди години проекти за калкулаторите с този процесор включват редица похвати и техники, които се използват и до днес.
Лично аз вярвам в духа на истинския хакер и съм на мнение, че хората ще продължат да разширяват възможностите на всяко оборудване, което им попадне в ръцете.
Всичко важно от света на технологиите, директно в пощата ти.
С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.
Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!























