Важная информация

User Tag List

Страница 4 из 23 ПерваяПервая 12345678 ... ПоследняяПоследняя
Показано с 31 по 40 из 221

Тема: Атари ассемблер

  1. #31
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,773
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    1,179
    Поблагодарили
    775 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    я честно говоря в атарях не-разбираюсь.
    (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.

  2. #31
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #32
    Veteran Аватар для dosikus
    Регистрация
    29.03.2005
    Адрес
    Ярославль
    Сообщений
    1,102
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    я честно говоря в атарях не-разбираюсь.
    Гы. И я так же.


    atariki, счас разберусь с очередным завалом. Обновлю инстрУмент и вас догоню.
    Насколько помниться denpopov хорошо в асме атари разбирается...
    ZXM-Phoenix 1024+PROF ROM+SMUC+VGA
    Profi 1024+CF+CPM+VGA
    ATARI 800XL+SIO2PC+SIO2SD
    RK86@Maximite

  4. #33
    Activist Аватар для ezswift
    Регистрация
    26.02.2011
    Адрес
    Москва
    Сообщений
    258
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    25
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    То, что программа выполняется чисто, я проверил в мониторе.
    Вот старый 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|

  5. #34
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от atariki Посмотреть сообщение
    на железном ATARI верх и низ экрана смещены в сторону, вобщем отображается некорректно, в эмуляторе после загрузки уходит в self test
    Вложение 56334

    - - - Добавлено - - -

    да, rts в конце убрал скомпилил и на "железе" всё стало норм.

    естественно, rts - выход в Бейсик или в никуда. Какой-то левый DLIST у тебя

    сначала три по 112 - пустые или blank линии,
    потом это байт из $40+режим ANTICтаблица
    вслед за байтом идет слово - адрес, где в памяти хранятся данные.

    следующие байты - это режимы ANTIC, например 23 байта 2 - текстовый режим

    последние $41 и слово - адрес начала инструкции DLIST

    Адреса инструкций помещаются в ячейки $230(мл. байт адреса) и в $231(ст. байт)

    Читай memory mapping или кинь мне в личку, если надо, я залью, сидеть на форуме некогда.

    В общем, непонятно с кодом и лево сделано.

    проще сделать .XEX в atasm так:



    .bank
    *=$2000
    ;
    тут весь код
    lda #dliadr&255
    sta $230

    lda #dliadr/256
    sta $231

    jmp * ;зациклили на время
    dliadr
    .byte $70,$70,$70
    .byte $42;режим стандартный GR.0
    .word $3000 ; данные берутся с адреса $3000
    .byte 2,2,2;всего 23
    .byte $41;инструкция ожидания и перехода к началу
    .word dliadr
    .bank
    *= $02E0
    .word $2000

    $2E0 - адрес автостарта программы. Как сделать в MADS - я не знаю

  6. #35
    Activist Аватар для ezswift
    Регистрация
    26.02.2011
    Адрес
    Москва
    Сообщений
    258
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    25
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    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|

  7. #36
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ezswift Посмотреть сообщение
    У меня прекрасно и в эмуле и в HW всё работает до сих пор
    Вы просто счастливчик) я до сих пор не могу подключить рабочую Атари 130ХЕ к ТВ.


    Цитата Сообщение от ezswift Посмотреть сообщение
    Ну Вы же знаете, что команды Ассемблера к Бейсику не могут иметь НИКАКОГО отношения.
    RTS - Это выход в вызывающую подпрограммуу, а именно, на тот адрес, который следует за вызовом, то есть в случае загрузки программы DOS-ом, мы остаёмся в Цикле исполнения DOS-а!!!
    что Вы говорите?
    при вызове USR из Бейсика на стеке помещаются: номер параметров и параметры, т.е A=USR(1536,8,7) на стеке даст 2,8,7.
    поэтому обычно ассемблерная часть выглядит как
    PLA
    ..
    немножко кода
    ..
    RTS

    Вызов ассемблерных процедур из Бейсика реализуем, например можно перевести опкоды в символы ATASCII и вызвать как мы делали A=USR(ADR("строка"))

    g0blinish писал подобный пример.

    Заодно выполнять RTS на непонятной среде - это моветон.

  8. #37
    Activist Аватар для ezswift
    Регистрация
    26.02.2011
    Адрес
    Москва
    Сообщений
    258
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    25
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я всё думал, что же Вы спрашиваете.

    Пришёл к выводу, что Вас интересует не программирование, которое Вы знаете, а сама работа с MAC/65.
    Ну там команд-то, конечно много... как в Ворде.

    Я использую пару из них.

    Я работаю в эмуле Atari800WinPlus 4.1
    Помаленьку пользуюсь его преимуществами, которых (Don't kill me ZEman!!!) нет у Altirra.
    (Я печатаю свои программы, когда мне нужно подумать над кодом.)

    Загрузка кодов в ТЕКСТОВОМ ФОРМАТЕ.
    ENTER #H6:CONSOL.LST - Загрузка файла листинга в текстовом формате с устройства, которое само перекодирует ASCII в ATASCII.
    и для сохранения ТЕКСТА: LIST #H6:CONSOL.LST
    (Реально есть устройство H1:, которое НЕ ПЕРЕКОДИРУЕТ. С него *.com можно загрузить. и его Зеркальное устройство, которое ПЕРЕКОДИРУЕТ различия в кодировках - H6:.)
    Надо задать настройки, например C:\ATARI\HDD -> H1:
    И всё.

    Загружать данные с жесткого диска могут всего несколько ДОСов.
    AtariDOS 3, или 4 (не помню), Sparta (Все версии, с которыми я встречался.) и по моему OSS DOSXL или ДОС XE (тоже не помню). Больше ничего!

    Естесственно забыл MyDOS!
    Он ТОЖЕ МОЖЕТ работать с жестким диском. Лучше многих!

    Я работаю со SPARTA3.3A, потому-что к нему есть Shell33а- та программка, которая ДЕРЖИТ в ОЗУ 2 директории, которые я сам задаю.
    В этом случае я обращаюсь и к системным утилитам и к программам, которые мне нужны без определения путей доступа.

    Для быстрой загрузки и быстрого программирования я использую команды:
    SAVE D1:CONSOL.M65
    LOAD D1:CONSOL.M65

    Эти команды работают не с текстом, а с токенами.
    ВСЁ!
    Последний раз редактировалось ezswift; 23.03.2016 в 21:27.
    MAC и PC - это всего лишь периферия для Атари...
    130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|

  9. #38
    Activist Аватар для atariki
    Регистрация
    22.01.2011
    Адрес
    г. Кирово - Чепецк
    Сообщений
    308
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а видео запилить по этому поводу можно ?
    ATARI 65XE|130XE|XEGS|4-XC12|(2-TURBO2000)|SIO2SD

  10. #39
    Activist Аватар для ezswift
    Регистрация
    26.02.2011
    Адрес
    Москва
    Сообщений
    258
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    25
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    2Denpopov
    Да никакой я не счастливчик.

    Когда у меня моя родная Атарька сдохла, из-ха недостатка времени и кривых рук, я не стал с ней возиться и у B&C купил материнку.
    Они при правильном моём обращении не засунули меня в стоплист, что любят делать, и прислали мне счастье.

    Я не очень понимаю, почему у Вас страдает вывод на экран.
    Мне пришлось купить монитор, SONY PVM, чтобы как-то беспроблеммно с Атарькой работать.
    Я сигнал по S-Video вывожу.
    Всё чисто.

    Поверьте, работу со стеком в Бейсике я знаю.
    Знаю также интерфейсы к многим Си-языкам.

    В любом случае возврат из подпрограммы ведётся куда-то!
    Ну, в случае с xex, он ведётся в... Да-а-а!!! в ЭМУЛЯТОР!
    Доса и Бейсика-то НЕТУ! Ну, не загружены они!

    - - - Добавлено - - -

    2Atariki

    Да, можно, но я ваще никогда его не делал.

    У меня есть SnagIt, который, вроде позволяет.

    Моя Атарьская PC-шка очень слабенькая она вообще полуживёт.

    Давайте думать об этом, как о проекте.
    MAC и PC - это всего лишь периферия для Атари...
    130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|

  11. #40
    Activist Аватар для ezswift
    Регистрация
    26.02.2011
    Адрес
    Москва
    Сообщений
    258
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    25
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    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!
    Поэтому без обиняков и смело!

    Вот тут мы и начнём программировать!
    ...
    Я жутко устал...
    Спокоси Носи!
    Последний раз редактировалось ezswift; 23.03.2016 в 21:39.
    MAC и PC - это всего лишь периферия для Атари...
    130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|

Страница 4 из 23 ПерваяПервая 12345678 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. ПК8000 - Ассемблер
    от scaraby в разделе ПК8000
    Ответов: 9
    Последнее: 16.12.2018, 11:00
  2. Ассемблер для 48к на ленте
    от newart в разделе Программирование
    Ответов: 37
    Последнее: 20.09.2015, 22:48
  3. Переведите на ассемблер
    от Руслан в разделе Программирование
    Ответов: 2
    Последнее: 06.08.2012, 23:41
  4. Ассемблер Z-80
    от sergey2b в разделе Пресса
    Ответов: 12
    Последнее: 11.07.2011, 23:41

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •