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

User Tag List

Страница 11 из 23 ПерваяПервая ... 789101112131415 ... ПоследняяПоследняя
Показано с 101 по 110 из 221

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

  1. #101
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,121
    Записей в дневнике
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    10 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Макросы у MADS отличаются немного. Хотелось бы узнать о них, потому что не нашел описания, я в них путаюсь иногда.

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

    По умолчанию

    Здравствуйте, Шинни!

    Рад, что Вы не устали ещё от ассемблера.

    Дело в том, что идея макропрограммирования - сама собой, принципиально, маленько ущербна.

    Все макросы АБСОЛЮТНО зависят от ПРОГРАММИСТА, который рожал их парсинг!

    Макросы на Лиспе - это не то, что макросы на Си, а макросы на ассемблере наличиствуют в количестве штук, равном макроассемблерам.

    Просто, нет ОБЩЕГО понимания того, что есть макрос.
    Принципиально, дело в том, что MADS - кроссассемблер.
    Это важно, так как он работает в нативном режиме на машине в миллион раз более мощной, чем Атари.

    Но, ведь, существует разница и в родных Макроассемблерах Атари!
    Например Макроассемблер Ассемблера MAC/65 намного более мощный, чем Макроассемблер МАЕ.
    Однако, есть большие затруднения в том, чтобы программисту ассемблера понять, по какому пути ему идти!!!
    Должен признать, я принципиально, не знаю ни одного программиста на MAC/65, который работал бы с макросами.
    Их просто понять никто не может. А дебаггировать тем более.

    Да, это - по сути, и не важно.
    Джон Харрис выбрал путь прямой подстановки!!!

    Разумеется, прямая подстановка не используется в кроссассемблерах, так как парсинг кода позволяет получать описания ошибок даже ещё при макроассемблировании (в PC), что в МАЕ недоступно.

    Вот Вам пример ЭЛЕГАНТНОГО макрокода в MAC/65.
    В нём НИЧЕГО не вычисляется во время исполнения кода!!! Всё вычисления заданы в макросе, а значит, проводятся при первом проходе ассемблера.

    Код просто проходит по изменяемым адресам в Программном Счётчике и в результате получаем ВОЛШЕБСТВО!
    Код:
    2470 ;-----------------------------
    2480 ; MACRO #2 "NEWPAGE"
    2490 ; Этот макрос устанавливает программныё счётчик
    2500 ; на следующую чётную страниуц.
    2510 ; EXAMPLE:
    2520 ;  (Пусть PC сейчас установлен на $4322)
    2530 ;      NEWPAGE
    2540 ;  (По выполнении станет $4400)
    2550 ;
    2560 ;Follow:          *=$4322
    2570     .MACRO NEWPAGE 
    2580     *=  *&$FF00 ; *=$4300
    2590     *=  */$0100 ; *=$0043
    2600     *=  *&$FF   ; *=$43
    2610     *=  *+1     ; *=$44
    2620     *=  **$0100 ; *=$4400
    2630     .ENDM 
    2640 ;Follow:          *=$4400
    2650 ;
    Напомню:
    &FF00 - в разрядах, где FF - всё остаётся, где 00 - стирается.
    /0100 - получаем точное число страниц с недостатком. В МЛАДШЕМ байте.
    &$FF - всё, что было - остаётся, но в старшем байте ничего.
    *+1 - Число страниц увеличивается на 1.
    **$0100 - и при умножении на 256, становится старшим байтом!!!

    Как бы это лучше объяснить...
    Просто, САМ Ассемблер всё считает, а Результат ВОЛШЕБНО появляется в виде числа в коде.

    Также можно определить 1кб-отступ для нового шрифта(он обязан начинаться на границе 1кб), отступы для PM-графики и так далее...

    Этот макрос ОЧЕНЬ нужен!

    Уже двое суток не могу перевести его в МАЕ...
    Базарная документация и нет примеров.
    (В доках Харрис хотел описать ВСЁ СРАЗУ для 6502 и 65816.
    Так как 65816 сложнее, 6502 затерялся! А так, всё понятно... Кто ищет - тот найдёт.)

    Проблема здесь не в том, что я не понимаю Атари.
    Проблема в том, что я не понимаю Харриса (Его Дзена описания Макросов.)
    Так, на то он - Босс!
    ez
    MAC и PC - это всего лишь периферия для Атари...
    130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|

  3. #103
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,121
    Записей в дневнике
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    10 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ezswift Посмотреть сообщение
    Напомню:
    &FF00 - в разрядах, где FF - всё остаётся, где 00 - стирается.
    /0100 - получаем точное число страниц с недостатком. В МЛАДШЕМ байте.
    &$FF - всё, что было - остаётся, но в старшем байте ничего.
    *+1 - Число страниц увеличивается на 1.
    **$0100 - и при умножении на 256, становится старшим байтом!!!
    хм. я видел выравнивание при использовании z80:

    (adres+$FF)/256

    к тому же директива align 256 выравнивает код по "правильному" адресу.

    Макросы мне не нравились, потому что есть масса ассемблеров и каждый использует макросы по-своему или не использует вообще.

    в журнале Analog я встретил интересное применение:
    Код:
    *=$2000
    AUDF1=$D200
    AUDC1=$D201
    AUDCTL=$D208
    SKCTL=$D20F
    
    .MACRO SOUND ; voice,pitch,dist,vol;,dur
    	lda #%2
    	sta AUDF1+2*%1
        lda #[[%3 * 16] | %4] ;lda #[[%3 shl 4] or %4]
        sta AUDC1+2*%1
    .ENDM
    
     lda #0
     sta AUDCTL
     lda #3
     sta SKCTL
    
     SOUND 0,121,10,8
    
     jmp *
    это по-нашему xD

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

    По умолчанию

    Ещё одно видео залил с программкой вывода директории
    https://youtu.be/65dlc4G_CNY
    ez
    MAC и PC - это всего лишь периферия для Атари...
    130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|

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

    По умолчанию

    перечитываю ветку, мало по мальски проясняется, давайте продолжать ?
    ATARI 65XE|130XE|XEGS|4-XC12|(2-TURBO2000)|SIO2SD

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

    По умолчанию

    В общем страсти по АСМ у меня кипят, время 5:30 Мск идти на работу, а я по видеоурокам перегоняю из mac65 в mae )))
    нашёл hello world под mac65

    05 .OPT OBJ
    10 *= $0600
    0100 ; CIO
    0110 ICHID = $0340 ;IOCB 0 S:
    0120 ICCOM = $0342 ;IOCB Command
    0130 ICBAL = $0344 ;Xfer Buffer Adr
    0140 ICBAH = $0345
    0150 ICPTL = $0346 ;PutByte Adr
    0160 ICPTH = $0347
    0170 ICBLL = $0348 ;Buffer Len
    0180 ICBLH = $0349
    0190 CIOV = $E456 ; CIO Vector
    0500 ; Setup CIO Call
    0510 LDX #0 ;IOCB 0
    0520 LDA #9 ;Put Cmd Val
    0530 STA ICCOM,X ;Set it as the cmd
    0540 LDA #HELLO&255 ;Str low byte
    0550 STA ICBAL,X
    0560 LDA #HELLO/256 ;Str high byte
    0570 STA ICBAH,X
    0580 LDA #0 ;Str Len low byte
    0590 STA ICBLL,X
    0600 LDA #$FF ;Str Len high byte
    0610 STA ICBLH,X
    0620 ; Call CIO
    0630 JSR CIOV
    0640 RTS
    1000 HELLO .BYTE "Hello World!",$9B
    переделал его в mae

    ; hello world !
    .ou hello.com
    .or $0600
    ; CIO

    ICHID = $0340 ;IOCB 0 S:
    ICCOM = $0342 ;IOCB Command
    ICBAL = $0344 ;Xfer Buffer Adr
    ICBAH = $0345
    ICPTL = $0346 ;PutByte Adr
    ICPTH = $0347
    ICBLL = $0348 ;Buffer Len
    ICBLH = $0349
    CIOV = $E456 ; CIO Vector

    ; Setup CIO Call

    LDX #0 ;IOCB 0
    LDA #9 ;Put Cmd Val
    STA ICCOM,X ;Set it as the cmd
    LDA #HELLO&255 ;Str low byte
    STA ICBAL,X
    LDA #HELLO/256 ;Str high byte
    STA ICBAH,X
    LDA #0 ;Str Len low byte
    STA ICBLL,X
    LDA #$FF ;Str Len high byte
    STA ICBLH,X
    ; Call CIO
    JSR CIOV
    RTS
    HELLO .BYTE "Hello World!",$9B

    .or $0600
    .en
    как я понял:
    строчка в начале .ou filename.com, обязательна для компиляции файла в исполняемый.
    так же как и в конце
    .or $0600
    .en
    обязательны к запуску.

    Заработало. Но что там в программе я так до конца не понимаю.
    Куча кода вместо:
    10 PRINT "HELLO WORLD !!!"
    Последний раз редактировалось atariki; 27.02.2017 в 05:40.
    ATARI 65XE|130XE|XEGS|4-XC12|(2-TURBO2000)|SIO2SD

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

  8. #107
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,121
    Записей в дневнике
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    10 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от atariki Посмотреть сообщение
    Куча кода вместо:
    10 PRINT "HELLO WORLD !!!
    для atasm есть директива SBYTE, которая преобразует текст в Internal коды, так что печать реализуется проще, но не столько сложнее.

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

    По умолчанию

    label :20 как заменить чтобы работало ? в мае этот ярлык не прокатывает.
    ATARI 65XE|130XE|XEGS|4-XC12|(2-TURBO2000)|SIO2SD

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

    По умолчанию

    Привет всем Атаристам-Восьмибитникам!

    Метки в МАЕ Ассемблере начинаются с буквы, или символов @, _, или ?.
    ? - означает, что метка локальная, то есть видна только в данном блоке.
    Они не должны содержать пробелоа и в тексте метки могут содержать цифры и знак точки.
    Длина метки может быть до 15 символов.

    Обычно я заканчиваю файл следующей конструкцией:

    Код:
    ; ====================
    ; Setup Run Address
            .or RUNAD
            .wo start
    ;
            .en
    Директива .SBYTE в МАЕ Ассемблере заменена на трёхсимвольную .sb .

    Залил ещё видео: https://youtu.be/gUt6qpD1xi0
    ez
    MAC и PC - это всего лишь периферия для Атари...
    130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|

  11. #110
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,121
    Записей в дневнике
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    10 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ezswift Посмотреть сообщение
    Обычно я заканчиваю файл следующей конструкцией:
    Кстати, а прокатит подобная инструкция?

    Код:
    *=$2E0
    .word start
    ?

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

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

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

Эту тему просматривают: 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

Ваши права

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