Как запустить дизассемблированный код 6502?

Мне нужно программировать на ассемблере 6502. Я был вынужден использовать эмулятор Vice 128. Мне сказали, что Commodore 128 совместим с инструкциями 6502. Я новичок и мне сделали практическую демонстрацию, но я ничего не понял. Был интерфейс из 80 колонок, которые передавались командой (какой именно?). Инструкции на машинном языке или ассемблере (программе) вводились прямо на эту матрицу из 80 колонок. Также в эту матрицу вносятся данные. Так эта матрица память? Каждая строка представляет что? Мне сказали, что это дизассемблированный код 6502. Но я не знаю, что это значит, я очень запутался.

Я хочу запустить эту простую программу, которая вычисляет сумму двух чисел. Два числа хранятся на первой странице до слова ноль и до слова один. Я хочу сохранить результат во втором слове первой страницы. Я представил, что первая строка содержит 80 слов. Это правильно? Поэтому я помещаю здесь данные в шестнадцатеричном формате (3 и 2).

    $03 $02
    LDA $00
    ADC $01
    STA $02

Но у меня синтаксическая ошибка. Я надеюсь, что кто-то может мне помочь, потому что это ускользает от меня, как все работает. заранее спасибо


person Nicola    schedule 19.02.2015    source источник
comment
Полное обсуждение того, как запускать ассемблер 6502 или как вводить коды операций непосредственно в память, слишком обширно для этого сайта.   -  person antlersoft    schedule 19.02.2015
comment
В его нынешнем виде ваш вопрос затрагивает множество очень простых понятий и невероятно широк. Я рекомендую начать с базового руководства по сборке 6502 с помощью Commodore 64 (поскольку это более популярная машина и ресурсы для нее найти легче).   -  person Jeroen Mostert    schedule 19.02.2015
comment
Есть какое-то руководство, которое объясняет, как это сделать? Аргументы старые, и я ничего не мог найти. Я был вынужден программировать таким образом программу прямо в память, но у меня есть обзор. Мне нужен кто-то или какое-то руководство, которое скажет мне, как действовать дальше. проблема не в сборке, а в настройке   -  person Nicola    schedule 20.02.2015
comment
Я согласен с комментариями, что этот вопрос слишком широк, но я хотел бы дать несколько советов. Во-первых, у 128 есть два возможных отображения: 40-колоночное и 80-колоночное. В Vice они оба должны отображаться одновременно, но курсор находится только по одному. Чтобы переключиться на экран с 80 столбцами, введите graphic 5 с BASIC (когда машина загружается, вы находитесь в BASIC). Скорее всего, вы были в мониторе машинного языка, доступ к которому осуществляется с помощью команды monitor из BASIC. Вы наверняка видели разборку (в ML мониторе) какого-то участка памяти.   -  person echristopherson    schedule 09.04.2015
comment
Продолжение: Вы бы также ввели данные и инструкции в монитор. commodore.ca/manuals/128_system_guide/app-j.htm руководство к монитору. Что касается примечания, связанного с 6502, обратите внимание, что процессоры 64 и 128 не совсем 6502; они получены из собственного 6510 Commodore. 6510 не позволяет вам хранить байты в ячейках 0 или 1 без каких-либо проблем, как это делает обычный 6502.   -  person echristopherson    schedule 09.04.2015


Ответы (2)


Во-первых, в 6502 мы работаем с байтами, а не со словами. (это 8-битная архитектура)

Вы не указываете, какой ассемблер макросов вы используете, но я предполагаю, что он пытается интерпретировать $03 как код операции, а не данные. Я посмотрел два варианта в ca65, которые вы можете использовать

 .BYTE $03 $02

в dasm вы используете

 HEX 03 02

Кроме того, 6502 не имеет никакого понятия о 80 (словах, строках и т. д.). Единственные 80, о которых я могу думать, — это старые терминалы с 80 столбцами. Не понимаю, как это здесь уместно.

person Gadi    schedule 20.02.2015

Как запустить дизассемблированный код 6502?

Вы должны собрать обратно код.

Каждая инструкция 6502 обозначает 1, 2 или 3 байта, первый называется кодом операции, необязательный второй или третий — это данные, используемые инструкцией (операнд). .

Вам нужна программа для перевода мнемоники инструкций в байты. Таких программ на Commodore было много.

Commodore 128 имел встроенный монитор, который позволял вводить инструкции. собираться напрямую. Вы можете ввести его, набрав MONITOR в командной строке BASIC. Вам нужно будет сначала установить адрес, а затем использовать команды «собрать». Затем используйте команду «go» по начальному адресу, чтобы запустить его. Используйте команду BASIC POKE, чтобы установить местоположения, содержащие данные, прежде чем вы войдете в монитор. Адрес 0B00 является хорошим адресом для использования, так как это буфер ленты, который не используется, кроме как во время ввода/вывода ленты.

Удачи.

person LawrenceC    schedule 13.12.2016