середу, 20 вересня 2023 р.

Про мобільну розробку в СРСР

Якось я знайшов у себе в сараї старі носії інформації з програмами для радянського мобільного девайсу. Пустивши скупу чоловічу сльозу за старими-добрими часами я вирішив розповісти читачам про мої перші кроки в галузі ІТ. 

ТТХ

Девайс, про який я писав – це програмований мікрокалькулятор (ПМК) Електроніка МК-61. Цей калькулятор використав зворотний польський запис (привіт, Forth!), тому майже всі, хто його вперше бачив, запитував: "А де тут знак равно". Також у калькулятора було 15 регістрів для зберігання даних та 105 байт оперативної пам'яті.
Тож у моєму дитинстві іграшки були навіть не кілобайтними.

Після вимкнення живлення оперативна пам'ять очищалося і при наступному включенні програму доводилося знову вводити. Пізніше з'явилася Електроніка МК-52, яка мала не тільки енергонезалежну пам'ять, а й можливість підключати блоки розширення пам'яті (БРП) з додатковими програмами.

ПМК Store/Play

У СРСР було випущено кілька десятків книг про ПМК та програми для них. Наприклад, першою моєю книжкою-підручником була Калькулятор – твой помощник и соперник в играх. Вона в мене з'явилася раніше, ніж сам калькулятор. Також випустили кілька БРП для МК-52.

Але, мабуть, найбільший внесок у популяризацію ПМК та програмування внесли ряд радянських журналів. Одним із перших став писати про ПМК журнал "Наука и жизнь". Також низка статей опублікувала журнал "Квант". За рідкісним винятком розглядалися переважно прикладні програми. Ігор було досить мало. Кардинально ситуація змінилася з появою у журналі "Техника молодежи" ("ТМ") рубрики "Клуб электронных игр". За роки існування рубрики в ній не тільки було опубліковано безліч найрізноманітніших ігрових програм, а й багато уваги приділяли недокументованим можливостям ПМК. Ще одним журналом, який приділяв увагу ігровим програмам, була українська "Піонерія".

У 1988 р. виник Клуб любителів ігрових програм (КЛІП) своєрідна соціальна мережа (а точніше BBS) з листування. Клуб об'єднав до 600 користувачів ПМК із усього СРСР. 

Класифікація ігор

Незважаючи на досить обмежені ресурси ПМК, для них було розроблено велику кількість ігрових програм. Можна виділити кілька жанрів ігор.

Сімулятори

Існувала безліч різноманітних симуляторів. Як правило, процес гри виглядав наступним чином. Гравець вводив нові значення ряду параметрів (витрата палива, нова швидкість, кут нахилу, період часу, протягом якого ці параметри діяли) і запускав обчислення. Через якийсь час ПМК показував нове положення та параметри об'єкта, що симулюється (висота або пройдена відстань, нова швидкість і т.д.). Так як за часів СРСР дуже популярною була тема космосу, то існувала низка симуляторів космічних літальних симуляторів. У "ТМ" було надруковано фантастичну повість "Шлях до Землі", в якій герої на маленькому лунолеті здійснюють переліт з Місяця на Землю. Кожен розділ описував якийсь із етапів подорожі. Крім цього, глави також супроводжувалися однією або декількома програмами, за допомогою яких читачі могли переконатися, що все описане - істинна правда. Таким чином, автори ТМ створювали художній твір за програмами для комп'ютерів (або програми за книгою) задовго до того, як це стало мейнстримом.

Карта моїх польотів на околицях орбітальної станції "Юрій Гагарін":


(на жаль, до станції потрапив метеорит).

Стратегії

Першою економічною стратегією, в яку я грав був Веселий фермер симулятор колгоспу: треба було садити різноманітні агрокультури і збирати врожай. Після того, як у СРСР дозволили громадянам займатися індивідуальною трудовою діяльністю (тоді це так називалося), з'явився симулятор кооперативного кафе.

Також були воєнні стратегії. Наприклад, можна було повторити битву під Фермопілами.

Настільні

Очевидно, що навчити ПМК грати у шашки, а тим більше у шахи неможливо. Однак розіграти деякі ендшпілі цілком реально.
Фото шахівниці, розміченої для гри з ПМК:


Найцікавішою для мене грою була Вовк та вівці. Швидко з'ясувалося, що на звичайній шахівниці 8x8 грати не цікаво: чотири вівці завжди виграють, а три - програють. Тому було розроблено варіант гри на полі 9x9. І хоча реалізувати мінімаксний алгоритм не можна було, підсумкова програма вийшла досить сильною. Ця гра мене настільки вразила, що пізніше я зробив варіант для MS-DOS, а пізніше для Android.

Динамичні відеоігри

Дві особливості ПМК дозволяли реалізувати динамічні відеоігри. По-перше, під час обчислень на індикаторі відображалися якісь поточні значення. Таким чином, можна було демонструвати динамічну "картинку". По-друге, у перших моделях калькуляторів був кумедний апаратний баг. ПМК мали перемикач "Р-Г" для обчислень тригонометричних функцій у радіанах та градусах  відповідно. Незабаром з'ясувалося, що якщо не встановлювати перемикач у крайні положення, а зафіксувати по центру, він виконуватиме обчислення в градах (100 градів - це 90 градусів). Незабаром цей баг перетворили на фічу: у перемикача з'явився третій стан "ГРД". Якщо обчислити значення cos 100, можна визначити положення перемикача: для градусів отримаємо значення -0,17, тобто. негативне значення, для градів – природно, 0, для радіан 0,19 – позитивне число. Всі ігри даного жанру будувалися за одним принципом: ПМК якийсь час показував на екрані поточну ситуацію, даючи можливість гравцю прийняти рішення. Потім визначав положення перемикача "Р-ГРД-Г" та виконував обчислення. Збоку це виглядало досить кумедно: гравець вдивлявся в миготливий екран і судомно смикав перемикач.

Еггогологія

Як будь-який комп'ютер, що поважає себе, ПМК міг відображати шістнадцятковий числа. Але через обмеження індикатора вони виглядали трохи дивно. Наприклад, "A" позначалася як "-", "B" - "L". У разі помилок калькулятор виводив слово "Error", але виглядало воно як "ЕГГОГ", що й назвало процесу вивчення недокументованих можливостей ПМК. Виконуючи хитрі операції над дуже великими числами (які калькулятор теоретично не міг відображати) або звертаючись до великих адрес програмної пам'яті можна було отримувати різноманітні написи.

Наприклад, у грі "Лунолет-3" з повісті "Шлях до Землі" положення місяцеліта щодо Землі та Місяця відображалося таким чином:


"E" - Земля, "0" - Місяць, "-" - місяцеліт.

Калькулятори МК-61/52 підтримували операції булевої алгебри. Але їх зазвичай використовували лише для формування ряду повідомлень: "8CE" - гра закінчена, "6-L6EC" - людина програла:


Також було кілька ігор, які використовували ці операції кодування лабіринтів.


Сімулятори и емулятори ПМК

Існує кілька симуляторів ПМК, наприклад, "Калькулятори-3000". Існує також реальний емулятор emu145. Автор емулятора – Фелікс Лазарєв – навіть купував професійний мікроскоп для фотографування мікроконтролерів серії 145/745.

Мій шлях

У мене калькулятор МК-61 з'явився у 1989р. Вийшло так, що про існування КЛІПу я не знав. Основну масу програм черпав з "ТМ" - або переписував у бібліотеці (ксероксів тоді ще не було), або брав у товаришів (зазвичай, потім вже назад не віддавав). У нас були журнали "Наука та життя" за кілька років. Але в ньому друкувалися переважно прикладні програми, що мене мало цікавило. Однак більше, ніж грати мені подобалося писати програми. Я до речі ніколи не розумів принад типу Dendy - адже їх не можна було програмувати в домашніх умовах. Першою моєю іграшкою був космічний симулятор, написаний під впливом "Лунолетів". Це було у 6 класі, на уроках фізики ми до цього часу вивчили лише рівномірний прямолінійний рух. Тому грати у нього було не дуже цікаво. На програмування я витратив більше часу, ніж на саму гру. Потім була ще низка програм. Найбільш серйозною моєю програмою була реалізація калаха (манкали). Незважаючи на обмежені ресурси ПМК, він вигравав у мене досить часто. Я навіть не знаю, коли більше радів: коли вигравав сам або коли програвав своїй програмі. Нещодавно я зробив версію манкали для Android з кількома варіантами ігор. Тепер можна просто грати, а не страждати. А оскількі я робив її вже на Flutter, то можна спробувати навіть просто в web lite-версію.

Декілька фото згаданих раніше носіїв інформації:




Спробувати

Звичайно, справжній задрот чоловік із задоволенням витратить півгодини на вбивання коду програми для того, щоб потім п'ять хвилин пограти. Для тих, що слабкий духом, я приготував спеціальну версію емулятора з підтримкою експорту/імпорту програм (я розмістив це емулятор від свого імені з дозволу Станіслава). Спочатку я просто хотів додати мождивість імпорту та експорту, але потім додав ряд корисних функцій. Наприклад, емулятор має вбудовану інструкцію (це відсканована офіціальна інструкція) та опис недокументованих можливостей:

також можна створювати інструкції до програм у вигляді html-файлів, які емулятор буде показувати і більше не буде потреби записувати програми в зошити, як я робив колись:


Також додав можливість відображення на індікаторі вмісту двох регістрив: не лише X, а й Y. Це корисно для програм, які виводять при останові в регистр X основну інформація, а в Y - допоміжну. Так роблять, зокрема програми-місяцельоти:


Також я підготував кілька програм для цього емулятора. Достатньо скопіювати *pmk та * html файли на смартфон та імпортувати його в емулятор.

 Приємного занурення в історію!