Atariki, Здравствуйте.
Значит, до сих пор мы решили только одну задачу.
Применили наш кастомный Дисплей лист к читанию консоли.
1. Мы показали, что он работает.
2. Мы показали, что он НЕ ТРОГАЕТ РАБОТУ АТАРИ, так как там можно и вызывать программы (Которые своего дисплей-листа не имеют и работать с ДОСом и т.д.)
Мы показали, что программировать ВЕСЕЛО! Работает-же!
Надо далее.
Задача - считать содержимое регистра Консоли отличается от задачи - вывести ТО, ЧТО хотим, на нашу статусную строку.
Когда не можешь запрыгнуть на следующую лестничную площадку, надо идти по ступенькам.
Не будем трогать то, что уже работает.
Начнём новую программку, которая будет работать и чтобы это можно было бы проверить!
Как в первой.
Вот мы имеем Разные статусные строки в количестве 8. (Они ВСЕ могут быть правильно выведены нашей предыдущей программой!)
Заглавные буквы будут означать ИНВЕРТИРОВАНИЕ символов (высветление).
Статусные строки:
L7 .SBYTE " Consol: /Start/ /Select/ /Option/ "
L6 .SBYTE " Consol: /START/ /Select/ /Option/ "
L5 .SBYTE " Consol: /Start/ /SELECT/ /Option/ "
L4 .SBYTE " Consol: /START/ /SELECT/ /Option/ "
L3 .SBYTE " Consol: /Start/ /Select/ /OPTION/ "
L2 .SBYTE " Consol: /START/ /Select/ /OPTION/ "
L1 .SBYTE " Consol: /Start/ /SELECT/ /OPTION/ "
L0 .SBYTE " Consol: /START/ /SELECT/ /OPTION/ "
Других выборов из этого списка у нас нет.
Я забыл раньше сказать, что в Атари (Это её особенность!) .SBYTE - это команда прорисовать экранный байт. Экран=Screen.
О работе Ассемблера.
MAC/65 Двухпроходный!
В первый проход он запоминает ВСЕ!!! (По Адресам!) метки, поэтому наши метки L* ему ВСЕ известны.
Правило Little Endian указывает, что там берётся младший байт двухбайтового слова.
...
Это было исследование.
А вот теперь перейдём к Ассемблированию.
Так как мы знаем, что Ассемблер УЖЕ (в первый проход прочёл все метки, мы уже можем обращаться с ними как с ДАННЫМИ.)
Давайте сделаем таблицу сдвига по нашей таблице Статусных строк.
TXTTAB
.WORD L7,L6,L5,L4
.WORD L3,L2,L1,L0
Что мы видим?
.WORD - означает двухбайтовое СЛОВО в порядке LSB/MSB
Значит мы создали АССЕМБЛЕРОМ - он же вычисляет это в первом проходе!!! Таблицу адресов.
А взять из таблички адреса и подставить их в место где происходит LMS - сканирование (и, конечно, прорисовка) экранной памяти,
это - не наша забота. Этим ANTIC занимается.
Мы - меняем Адреса!
Ну, и давайте...
Сначала теория.
Если я делаю ASL - значит я умножаю маленькое число на два.
Спросите для чего?
Ответ один .
Адреса хранятся в ДВУХ ячейках и мы просто должны перескакивать на 2 байта.
Маленькое число - это то, которое между 0 и 127.
ПРОШУ ВАС ПРОВЕРЬТЕ!
На виндосном калькуляторе.
Над любым МАЛЕНЬКИМ числом сделайте ASL и нажмите равно.
Вы получите это число, умноженное на два.
А у нас цифра - всего 7!
Поэтому без обиняков и смело!
Вот тут мы и начнём программировать!
...
Я жутко устал...
Спокоси Носи!




Ответить с цитированием