В этой статье мы углубимся в захватывающую сферу программирования Commodore 64, отправимся в 80-е, чтобы раскрыть искусство создания машинного кода с использованием надежного языка BASIC.
Раскрывая вызов
Как упоминалось в предыдущей части, мои поиски привели меня к книге по ассамблее, вновь разжигая мои поиски знаний.
Первое, что меня впечатлило, это возможность запоминать машинные коды, а затем вызывать их для исполнения, используя только BASIC. Кому-то это может показаться банальным, но для меня это было открытием. В эпоху, когда дисководы и ассемблеры не всегда были под рукой, Бейсик был верным спутником.
Использование ОСНОВНОЙ магии
Чтобы продемонстрировать мастерство BASIC, я проведу вас через создание программы «HELLO WORLD» в машинном коде, и метод, лежащий в основе этого волшебства, удивительно прост.
Основные ОСНОВНЫЕ команды:
- PEEK(‹адрес памяти›): извлекает содержимое ячейки памяти по заданному адресу.
- POOKE ‹адрес памяти›, ‹значение›: Записывает значение в определенную ячейку памяти.
- READ, DATA: создает и последовательно читает массив данных.
Наш первоначальный проект включает в себя запись символа в видеопамять, что достигается за счет краткой структуры программы.
Часть BASIC здесь действует как загрузчик программ в машинных кодах.
- Используя команду READ, мы извлекаем значения машинного кода одно за другим до завершения.
- Оператор POKE старательно переносит эти сегменты в память, начиная с адреса 49152 с инкрементным смещением.
После завершения цикла инструкция SYS вызывает хранимую процедуру машинного кода, инициируя выполнение. Сам машинный код элегантно прост. Записываем код символа «x» (24) в аккумулятор, сохраняя его в начале видеопамяти (адрес 1024).
Наше исследование здесь не останавливается. Процесс распространяется на вывод целых слов, передачу данных из BASIC в машинный код и взаимодействие с динамической памятью.
Я также могу передавать данные из Бейсика в программу в машинных кодах.
Здесь буквенный код запрашивается через INPUT, а затем через POKE полученное значение записывается в определенную ячейку памяти.
Программа машинного кода берет данные из этой ячейки памяти.
Вот такое программирование в машинных кодах прямиком из бейсика.
Путешествие заново
Размышляя о своем первом знакомстве с BASIC на домашнем компьютере на базе Z80, я снова начал уважать его возможности. Методы BASIC плавно переходят к программированию на ассемблере, а сам язык становится мощным инструментом, особенно благодаря методологиям, подробно описанным в этой статье.
Продолжение Одиссеи
Вооружившись новыми знаниями, я готов продолжить свою одиссею 80-х. Поиск продолжается по мере того, как я все глубже погружаюсь в потенциал C64 и Assembly, особенно в решении интригующих математических задач.
Присоединяйтесь ко мне, когда мы путешествуем по захватывающим пейзажам программирования 80-х, раскапывая жемчужины из прошлого, чтобы обогатить наше настоящее путешествие.