Наступний крок 6502 комп'ютера — це запуск керуючої програми — wozmon. Ця програма написана нашим співвітчизником Степаном Возняком для комп'ютера Apple I. Її мета полягає в тому, щоб полегшити роботу з комп'ютером. Вона дає можливість читати і писати в пам'ять, а також виконувати програми. Wozmon вміщається в 256 байтів пам'яті, що дуже мало в порівнянні з тим, що він вміє.
Цією програмою я можу читати ділянки пам'яті (тут в мене трохи кончений термінал і CR затер першу літеру адреси, тому перепрошую):

Можна читати окремі байти чи записувати в них:

Тут надрукована тестова програма, що виводить символи. В порівнянні з оригінальною, я змінив півбайта адреси, бо трохи переписав wozmon (далі буде про це). Ось результат виконання:

Тобто все працює. Тодішня ціна цього комп'ютера була приблизно рівна медіанній зарплаті в Злучених Штатах Америки. Якби Ви жили у той час, чи були б Ви готові віддати за це свою місячну зарплату? Я б ні.
Та вернімося назад. Оригінальний возмон працює з монітором і клавіатурою. Бен Ітер переписав це для роботи з юартом, але вона стала на 2 байти більше. Степан ввічливо залишив Бену лишніх два байти, і переписана програма все ще вміщалася у 256 байт. Це обмеження за розміром зроблено тому, що Бен хотів, щоб запускалася оригінальна демка з виведенням символів, яку я щойно показав.
Я ж трохи поправив возмон у цьому місці: я читаю біт статусу чи надіслано байт:
ECHO:
PHA ; Save A.
STA ACIA_DATA ; Output character.
tx_wait:
lda ACIA_STATUS
and #$10 ; check tx buffer status flag
beq tx_wait ; loop if tx buffer not empty
PLA ; Restore A.
RTS ; Return.
В Бена тут затримки в петлі, бо він має чіп із проблемою у залізі (див. мій попередній запис). Його код має довжину 11 байтів, і він вміщується у 256 байтів. Мій же код — 13 байт, і мені бракує 2 байта, а тому я змістив початок програми з FF00 на 16 байт уверх до FEF0 (мені не муляє). Програма працює так само, але в демці треба змінити півбайта, а саме адресу функції ECHO із EF FF на DF FF.
Я додав в репозиторій змінені програми: возмон, тестовий код та інше.
Окрім того я повторив приклад Бена з LCD. Результат можна побачити на обкладинці, а код і пітон функцію для перетворення формату можна знайти на тому ж гітхабі.
Для компіляції використовується та є команда що і до цього:

Ось та сама програма введена у RAM 6502 комп'ютера:

При натисканні 1000 R починає виконуватися код, починаючи з 1000 адреси: реініціалізуються LCD і виводиться повідомлення.
