Назад
Z80 REPL: інструкції асемблера Z80 просто у браузері
SiTech AI Team2 წთ. საკითხავი

Z80 REPL: інструкції асемблера Z80 просто у браузері

ABA Games опублікував z80-repl — браузерне середовище, у якому можна вводити окремі інструкції асемблера Z80, одразу виконувати їх і бачити зміни в регістрах, прапорцях і пам'яті. Проєкт під ліцензією MIT працює повністю на боці клієнта.

ABA Games опублікував z80-repl — невелике браузерне середовище для процесора Z80. Інструмент доступний за адресою abagames.github.io/z80-repl і перетворює класичний восьмибітний процесор на інтерактивне запрошення: ви вводите одну інструкцію асемблера, натискаєте Enter, і вона тут же збирається та виконується, а зміни в регістрах, прапорцях і пам'яті відображаються на екрані.

Рядок асемблера, а не вікно емулятора

Сторінка поділена на три текстові панелі. Верхня показує перші 256 байтів 64-кілобайтного адресного простору як сітку 16×16 у шістнадцятковому форматі з колонкою ASCII праворуч; значення, що збігаються з PC, SP, HL, BC, DE, IX та IY, виділені різними кольорами. Нижче розташована панель регістрів: A, B, C, D, E, H, L, IX, IY, PC, SP, регістри I та R і прапорці S Z Y H X P N C, кожен у стані встановлено чи скинуто. Третя панель — сам REPL, термінал xterm.js.

Рядок довідки пояснює модель роботи: “Input a Z80 instruction and press the [enter] to run it”, з прикладами ld c,20h, add a,c і push bc. Інструкція записується в пам'ять за адресою лічильника команд, після чого ядро емулятора її виконує, а REPL друкує отримані байти опкодів разом із кількістю тактів. Клавіша Tab показує список інструкцій, що відповідають уведеному тексту, а стрілки гортають історію команд.

Демо Z80 REPL: панель регістрів, пам'ять і рядок уведення інструкцій

Покрокове виконання, цикли й обмеження

Enter на порожньому рядку виконує ту інструкцію, яка вже стоїть за адресою PC, тож інструмент можна використовувати як налагоджувач для коротких підпрограм. Якщо інструкція не змінює лічильник команд — наприклад, HALT — REPL виконує її до 64 разів і повідомляє: “Looping 64 times. Press the [enter] to continue.” На невідому мнемоніку з'являється просте повідомлення “unknown instruction”.

Модель машини навмисно мінімальна: пам'ять — плаский масив на 64 КБ без банкування, а зворотні виклики введення-виведення нічого не роблять — читання повертає нуль, запис ігнорується. Тобто портів, відео- чи звукового обладнання тут немає. Під час запуску PC дорівнює 0x80, а SP — 0xF0.

На чому це зібрано

Проєкт написаний на TypeScript і використовує ядро емулятора Z80.js від DrGoldfire разом із xterm.js для рендерингу термінала; усе зібрано в один скрипт і роздається з GitHub Pages, тому на сервері не виконується жоден рядок коду. Репозиторій поширюється під ліцензією MIT і датується вереснем 2018 року.

Для ретро-розробників і студентів саме в цьому сенс. Z80 стояв у таких машинах, як ZX Spectrum, MSX, Amstrad CPC і Sega Master System, і можливість виконати одну інструкцію та побачити, як змінюються прапорці, — швидший шлях до архітектури, ніж читання довідника.

SSiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.