https://en.wikipedia.org/wiki/ANTIC
у процессора в-атари нет команд ввода/вывода в-порты для командования устройствами.
поэтому девайсы ввода/вывода сами забирают нужные данные/команды из фиксированных ячеек в-памяти
https://en.wikipedia.org/wiki/ANTIC
у процессора в-атари нет команд ввода/вывода в-порты для командования устройствами.
поэтому девайсы ввода/вывода сами забирают нужные данные/команды из фиксированных ячеек в-памяти
Последний раз редактировалось goodboy; 08.03.2016 в 14:54.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
как я понимаю можно вместо этого SDMCTL = $022F записать DMACTL = 54272, будет то же самое и правильно ?
ATARI 65XE|130XE|XEGS|4-XC12|(2-TURBO2000)|SIO2SD
нет.
как я понял из статьи значение в (DMACTL) может намеренно измениться, а потом оно снова возмётся из (SDMCTL)
goodboy, Если я правильно помню SDMCTL это теневые Shadow регистры и копируется из них в регистры ANTIC c синхронизацией (к чему не помню)
Не соврал ?
И еще адрес этих теневых вроде как так же изменяется .
Блин надо все вспоминать- читал же...
Зы. Надо же - еще и помню:
Operating System Shadow registers are copied from RAM to the hardware registers during the vertical blank.
Последний раз редактировалось dosikus; 08.03.2016 в 18:47.
ZXM-Phoenix 1024+PROF ROM+SMUC+VGA
Profi 1024+CF+CPM+VGA
ATARI 800XL+SIO2PC+SIO2SD
RK86@Maximite
я честно говоря в атарях не-разбираюсь.
(xe продал поскольку почти не-было софта, ST лежит на антресолях).
The operating system also maintains copies of these color registers in RAM memory. These are called shadow color registers. They are maintained because the hardware locations are "write only" locations. Since they can't be read, we need RAM locations where they can be read. At the beginning of each refresh cycle, these five shadowed registers are copied into the hardware locations.
То, что программа выполняется чисто, я проверил в мониторе.
Вот старый DLIST
> dlist
9C20: 3x 8 BLANK
9C23: LMS 9C40 MODE 2
9C26: 23x MODE 2
9C3D: JVB 9C20
Вот новый DLIST
> dlist
202B: 8 BLANK
202C: 7 BLANK
202D: LMS 2003 MODE 2
2030: 1 BLANK
2031: JMP 9C23
9C23: LMS 9C40 MODE 2
9C26: 23x MODE 2
9C3D: JVB 202B
Как видно, всё как мы и хотели.
- - - Добавлено - - -
2Atariki.
Отвечая на Ваш вопрос, скажу следующее.
Да, в Атари существуют поименованные ячейки памяти.
Каждая такая ячейка имеет уникальное имя и связанную с ней функцию.
Из таких мы в программке использовали только две.
SDMCTL - Shadowed Direct Memory Control Теневой регистр управления Прямым Доступом к памяти.
Если в него внести число #$00 - прямой доступ к памяти выключается.
Если внести число #$22 - прямой доступ к памяти включается.
SDLSTL/SDLSTH - Shadowed Display LiST Это системный указатель на начало Дисплейного Листа.
По поводу Ассемблирования скажу честно. Пока не напишешь тыщу тонн кода - не научишься.
Раньше программировали в Машинных Кодах.
Вот наша программа в машинных кодах:
> m 2000 (Смотрю в мониторе начиная с адреса загрузки программы, то есть $2000)
2000: 4C 34 20 00 00 23 6F 6E 73 6F 6C 1A 00 0F 33 74 L4 ..#onsol...3t
2010: 61 72 74 0F 00 0F 33 65 6C 65 63 74 0F 00 0F 2F art...3elect.../
2020: 70 74 69 6F 6E 0F 00 00 00 00 00 70 60 42 03 20 ption......p.B.
2030: 00 01 23 9C A9 00 8D 2F 02 AD 30 02 85 C0 18 69 ..#..../..0....i
2040: 03 8D 32 20 AD 31 02 85 C1 8D 33 20 A9 2B 8D 30 ..2 .1....3 .+.0
2050: 02 A0 1E 91 C0 A9 20 8D 31 02 A0 1F 91 C0 A9 22 ...... .1......"
2060: 8D 2F 02 60 00 00 00 00 00 00 00 00 00 00 00 00 ./..............
Ничего утешительного, не правда ли?
Тем не менее, идея ассемблирования очень проста - заменить цифры Машинного Кода запоминающимися знако-сочетаниями.
Проделаем эту процедуру.
$4C $34 $20 - Это и есть наша первая команда JMP INIT
Здесь $4C - JMP, а адрес $2034 (в памяти лежит наоборот, то есть младший байт первый.) это вычесленный ассемблером адрес INIT.
Проверим так ли это?
По этому адресу лежат байты $A9 $00, а это и есть LDA #$00, как в нашей программе.
Да, кстати, впервые вижу книжку по Атари на Русском. Здорово.
MAC и PC - это всего лишь периферия для Атари...
130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|
denpopov, привет!
Ну Вы же знаете, что команды Ассемблера к Бейсику не могут иметь НИКАКОГО отношения.
RTS - Это выход в вызывающую подпрограммуу, а именно, на тот адрес, который следует за вызовом, то есть в случае загрузки программы DOS-ом, мы остаёмся в Цикле исполнения DOS-а!!!
Я так понимаю, что Вы все Балуетесь со XEX-ами, но файлы XEX - Это просто переименованые файлы COM. АБСОЛЮТНО ничего более.
То есть, если у Вас не загружен сам ВЫЗЫВАЮЩИЙ программу ДОС, а вызывает её ЭМУЛЯТОР, к чему же Вы можете вернуться?
У меня прекрасно и в эмуле и в HW всё работает до сих пор.
MAC и PC - это всего лишь периферия для Атари...
130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|
Вы просто счастливчик) я до сих пор не могу подключить рабочую Атари 130ХЕ к ТВ.
что Вы говорите?
при вызове USR из Бейсика на стеке помещаются: номер параметров и параметры, т.е A=USR(1536,8,7) на стеке даст 2,8,7.
поэтому обычно ассемблерная часть выглядит как
PLA
..
немножко кода
..
RTS
Вызов ассемблерных процедур из Бейсика реализуем, например можно перевести опкоды в символы ATASCII и вызвать как мы делали A=USR(ADR("строка"))
g0blinish писал подобный пример.
Заодно выполнять RTS на непонятной среде - это моветон.
а видео запилить по этому поводу можно ?
ATARI 65XE|130XE|XEGS|4-XC12|(2-TURBO2000)|SIO2SD
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)