
Навіщо збирати компʼютер на Motorola 68010 у 2026 році?
30 вересня 2026 р.
Навіщо збирати комп'ютер на базі Motorola 68010 в епоху потужних мікроконтролерів? Розповідаємо про платформу rosco_m68k, низькорівневу архітектуру та створення власних плат розширення.
Це 2026 рік. За $5 можна купити мікроконтролер, який в одному корпусі буде мати процесор, RAM, Flash, USB, Wi-Fi, Bluetooth і ще купу периферії. При цьому він буде швидшим за Motorola 68010 у багато разів. Так для чого тоді взагалі складати rosco_m68k?
Точно не через продуктивність і не через практичність. Для мене основний сенс подібного комп'ютера в тому, що його реально можна зрозуміти майже повністю. Не просто писати під нього код, а розібратися, що відбувається від моменту reset до моменту, коли CPU звертається до RAM, UART або якоїсь твоєї власної плати розширення.
Що таке Motorola 68010?
Motorola 68010 — це процесор сімейства 68k і наступник Motorola 68000. Основні характеристики процесора:
16-bit external data bus
32-bit registers
24-bit address space
16-bit external data bus означає, що процесор має 16 фізичних ліній даних і за один цикл шини може передати до 16 біт між CPU та пам'яттю або периферією.
32-bit registers означає, що всередині процесора можна зберігати та оперувати 32-бітними значеннями.
24-bit address space дає процесору приблизно 16 MB адресного простору, в який вже можна розкласти RAM, ROM, UART та інші девайси.
Зараз 16 MB виглядає смішно. Стільки може займати одна картинка або кілька секунд відео. Але для такого комп'ютера цього вже більш ніж достатньо, а головне — весь цей адресний простір ти реально можеш відкрити memory map й зрозуміти, що де знаходиться і чому.

Сучасні комп'ютери працюють за слоями абстракцій
У дуже спрощеному вигляді сучасний комп'ютер можна представити приблизно так:
Application
↓
Runtime
↓
OS
↓
Drivers
↓
Firmware
↓
Chipset
↓
CPUДодаток працює з API runtime або операційної системи. Операційна система працює з драйверами, драйвери вже взаємодіють із залізом, а ще нижче знаходяться прошивка, чіпсет, CPU і купа інших речей. Це нормально. Саме завдяки цим абстракціям ми можемо відкрити редактор, написати кілька строк коду і взагалі не думати про те, як CPU отримує дані з RAM.
Проблема з'являється тоді, коли ти хочеш зрозуміти, як комп'ютер реально працює. Можна прочитати, що таке переривання, стек, memory map, віртуальна пам'ять або драйвери, але якщо ти просто прочитав концепцію і ніде її не використав, через кілька днів половина цього вилетить з голови. На подібному комп'ютері більшість цих речей можна попробувати руками.
Треба UART — розбираєшся, як CPU до нього звертається. Треба переривання — налаштовуєш переривання. Треба власнук карту розширення — виділяєш область memory map, робиш декодування адрес і пишеш код, який з ним працює. Можна пройти шлях від найпростішого софту до написання драйверів, прошивки або навіть своєї маленької ОС. І в якийсь момент всі ці концепції перестають бути просто текстом з книжки.
Якщо хочеться швидко щось попробувати, зараз ще є AI. Можна попросити накидати простий драйвер, шматок асемблеру або допомогти розібрати даташит, а далі вже запустити це і дивитися, чому воно працює або чому не працює. Якщо цікава саме розробка з AI, можна подивитися на цей проект. Я пробував зробити фреймворк для розробки під rosco_m68k за допомогою LLM. При поточному розвитку проекту він вже не повністю актуальний, але потикати можна.
На rosco_m68k модель системи вже виглядає набагато простіше:
CPU
↓
Address / Data bus
↓
RAM / ROM / UART / peripheralsПроцесор виконує код і через адресну шину та шину даних взаємодіє з усім іншим. CPU хоче прочитати RAM — виставляє адресу. Хоче записати байт в UART — виставляє адресу UART і дані. Логіка декодування адрес визначає, який саме девайс зараз має відповісти. І все це можна відкрити на схемі та буквально пройти від CPU до потрібної мікросхеми.

Для розробки я все одно рекомендую використовувати емулятор. Немає сенсу після кожної маленької зміни витягувати ROM, прошивати його і вставляти назад. Прошивку можна спочатку потестити в емуляторі, а вже потім прошити в реальну машину. Якщо це звичайний софт, його можна перекинути через SD-карту або Kermit. Тобто емулятор тут не заміняє реальний комп'ютер, а просто робить розробку менш болючою.Ти можеш зрозуміти всю машину
Ти можеш зрозуміти всю машину
Оце, напевно, головний момент. На rosco_m68k реально можна розібратися з більшою частиною системи:
reset sequence;
звідки CPU бере першу інструкцію;
memory map;
декодування адрес;
як CPU читає та записує RAM;
як працює UART;
interrupts;
exceptions;
stack;
ROM;
процес завантаження;
цикли шини.
І це не означає, що спочатку треба сісти та вивчити все це, а вже потім починати щось робити. Навпаки, ти починаєш з якоїсь простої задачі, впираєшся в проблему і вже по дорозі розбираєшся, що таке переривання, навіщо потрібен stack pointer або чому конкретний девайс знаходиться саме за цією адресою.
Щоб почати писати код, все одно доведеться трохи почитати про програмування під конкретний процесор. Assembler, регістри, набір інструкцій та загальна філософія можуть досить сильно відрізнятися між 6502, 68k, x86 або ARM. Але базові принципи переважно ті самі: CPU виконує інструкції, є регістри, RAM, stack, interrupts, периферія і якийсь механізм взаємодії між усім цим.
Якщо ти інженер, який все життя працював з Python, JS або іншою high-level мовою, робота з подібним комп'ютером може досить сильно відкрити очі. Я це говорю зі свого першого знайомства з такими системами. Після цього я почав трохи по-іншому дивитися на софт, операційні системи, пам'ять і взагалі на те, що відбувається під всіма цими API.
Написання коду стає відчутним
Коли ти пишеш JavaScript:
let a = 10;тобі в більшості випадків взагалі не цікаво, де фізично знаходиться це значення, який регістр зараз використовується і що CPU робить з пам'яттю. І так і має бути. Але на такій машині ти можеш піти значно нижче і побачити, що стоїть за простою операцією.
Наприклад, ти хочеш відправити символ через UART. Софт записує значення у конкретну адресу, CPU виставляє цю адресу на адресну шину, логіка декодування визначає, що вона належить UART, активується сигнал chip select, а саме значення передається через шину даних. UART отримує його і вже фізично відправляє назовні.
Тобто одна проста операція перестає бути якоюсь магією. Ти можеш відкрити схему і побачити, якими лініями проходять адреса, дані та керуючі сигнали. А якщо хочеться піти ще нижче — підключити логічний аналізатор і побачити ці сигнали вже вживу.

Після такого адресна шина, шина даних, chip select або сигнали читання та запису вже сприймаються зовсім інакше, ніж після одного абзацу в книжці.
68010 достатньо складний, щоб бути цікавим
Все це можна було б робити і на 6502, і для навчання це прекрасний процесор. Але він дуже простий: регістрів мало, набір інструкцій досить специфічний, і багато речей приходиться робити вручну. 68010 вже помітно складніший, але ще не настільки, щоб у ньому було тяжко розібратися.
У тебе є вісім регістрів даних D0-D7, вісім адресних регістрів A0-A7, 32-бітні операції, supervisor mode, exceptions і значно багатший набір інструкцій. Тобі не приходиться постійно бавитися навколо одного accumulator, і система вже значно більше відчувається як повноцінний комп'ютер.
При цьому це ще не сучасний CPU, де під тобою знаходиться настільки багато заліза та прошивок, що повністю зрозуміти всю систему одній людині вже майже нереально.

Ви насправді можете створювати для цього речі
Ще одна причина, чому мені подобаються такі комп'ютери — під них реально можна робити своє залізо. Якщо тобі не вистарчає якоїсь плати розширення, ти не мусиш чекати, поки хтось її зробить. Можеш зробити сам.
Хочеш більше RAM — робиш RAM board. Хочеш GPIO — робиш GPIO card. Хочеш звук — sound card. Хочеш відео — video card. А якщо є якась дивна власна ідея, яка потрібна тільки тобі, ніщо не заважає реалізувати і її.
У тебе є адресна шина, шина даних і керуючі сигнали. Далі треба вирішити, за якими адресами буде жити твоя карта, зробити декодування адрес і написати софт, який з нею працює.
Зі своєї сторони ми поступово робимо набір стандартних карт для rosco_m68k:
bus board;
RAM board;
sound card;
GPIO card;
video card.
Але сам сенс платформи не в тому, щоб користуватися тільки готовими картами. Навпаки, було б цікаво, якби люди почали робити свої. Можна взяти схему існуючої карти, подивитися, як вона працює, щось змінити або зробити повністю свою.
І тут залізо та софт вже нормально перетинаються. Ти спроектував карту, припаяв компоненти, підключив її до шини, виділив їй адресу і написав драйвер. Воно або запрацювало, або ти кілька вечорів шукаєш, чому ні. В обох випадках щось з цього винесеш.
А чому не просто емулятор?
Якщо вся ціль — написати софт під 68010, то емулятор реально зручніший. Не треба нічого паяти, прошивати ROM або навіть мати сам rosco_m68k.
Але тоді зникає велика частина сенсу. Емулятор може відтворити поведінку машини, але він не дасть тобі саму машину. Ти не побачиш реальну шину, не зробиш власну карту, не отримаєш проблему через неправильний chip select, не будеш шукати, чому RAM відповідає не там, де повинна, і не підключиш логічний аналізатор.
Тому я взагалі не бачу емулятор та реальне залізо як конкурентів. Емулятор зручний для швидкої розробки, а залізо потрібне для того, щоб реально побачити, що відбувається під кодом.
Так навіщо збирати rosco_m68k у 2026?
Якщо потрібен просто швидкий комп'ютер — не треба. Якщо треба дешево запустити якийсь embedded проект — теж не треба. Купи ESP32 або щось подібне, і воно майже точно буде практичнішим.
Але якщо тобі цікаво, як комп'ютер працює нижче рівня операційної системи та фреймворків, тоді подібна машина має сенс. Ти можеш пройти шлях від першої інструкції після reset до власної плати розширення, написати софт, драйвер, прошивку або свою маленьку ОС. Можеш відкрити схему і зрозуміти, куди йде конкретний сигнал, або щось зламати і потім розібратися, чому воно зламалося.
Motorola 68010 давно застарів як процесор. Але більшість базових концепцій, які можна на ньому нормально побачити та попробувати руками, нікуди не зникли.
І для мене саме в цьому весь сенс.