6502

MOS Technology / Commodore / Apple II / NES etc.

Moderator: Lavr

User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

А что там приводить то? Первое - это операции с ZP, когда задается только младший адрес, а старший всегда равен 0. Второе - это индексная адресация, когда младший адрес только в X или Y, старший же всегда равен 0. И вся соль в том, что помимо "короткого" (в плане длины опкода) обращения, байт из ZP можно использовать как второй операнд непосредственно (первый всегда [A], как у i8080). Отсюда и такое убеждение.

PS ZP - Zero Page.
PPS Чел на Эмураши разбирает кристал для низкоуровневой симуляции ядра 6502, который присутствует в процессоре NES в несколько усеченном виде. Фишка в том, что чел все объясняет открыто, а не тарит как у Visual6502.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

HardWareMan wrote:А что там приводить то? Первое - это...
Хардыч, ну в теории - это вроде как понятно, но я просил нехитрозадумчивый
пример
, чтобы поковыряться с ним в эмуляторе 6502 под отладчиком.

На мой взгляд - это самый полезный способ разобраться с процессором
без лишних словесных пересказов.


PS. Немного не понял я затею мужика по ссылке. Зачем ему по-новой
делать реверс 6502? Ведь его схема на MOSFET-ах известна, да и на
логических вентилях - я видел...
iLavr
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Lavr wrote:Хардыч, ну в теории - это вроде как понятно, но я просил нехитрозадумчивый пример, чтобы поковыряться с ним в эмуляторе 6502 под отладчиком.
Нуу, я не писал под 6502 столько. Но думаю, если ты возьмешь ИДу, плагин для NES и любую игру для NES то все поймешь и так. Тем более, что простых игр уже дизасмы есть дофига (марио, танчики) и с комментами.
Lavr wrote:PS. Немного не понял я затею мужика по ссылке. Зачем ему по-новой делать реверс 6502? Ведь его схема на MOSFET-ах известна, да и на логических вентилях - я видел...
Just for fun наверное.
User avatar
MC68k
Retired
Posts: 1328
Joined: 25 Jul 2011 00:14
Location: WWW

Post by MC68k »

Nerdy nights или как-то так.

три глобальных вещи есть у 6502

1) короткая адресация через нулевую страницу. каждая команда занимает 2 байта и выполняется быстрее. STA #xx/LDA #xx
2) по иксу
3) по игреку

второй и третий случай работает, как ссылка(?) на указатель(?) 2 байта плюс смещение. вот тебе внезапно 128 16битных регистров.

черт, а мнемоники то я подзабыл.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

6502 based projects

Post by Lavr »

6502 based projects

Это микро-презент для MC68k...

http://mycorner.no-ip.org/6502/index.html

http://mycorner.no-ip.org/68k/index.html

Там много всяких 6502- и др. вкусностей... :wink:
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

А где бы посмотреть хотя бы программную модель Apple ][ ?

А то MC68k столько убеждал нас, что это чуть ли не прототип "Специалиста"...

А кроме исторического славословия, что-то мало полезного гуглится...
http://apple2history.org/history/ah03/
Меня интересует карта памяти и структура экрана...

У С64 экран, похоже что на БИС видеокотроллера организован - это не так интересно...

А вот как он устроен у Apple ][ ?

Так, судя по вот этой статье, Apple ][ был организован значительно сложнее,
нежели "Специалист".
Судя по тому, что в нижних 4К у Apple ][ мог быть текстовый "экран", похоже,
что также была заюзана БИС видеокотроллера...

В "Специалисте" так не поколбасишься - графический экран с прозрачным доступом.
В "Орионе" он хоть по памяти "запрыгал"...




PS.
Lavr wrote:А ссылочка-то померла... :( http://www.6502asm.com/
Авторы выпустили новую версию эмулятора, и ссылка вновь рабочая! :kruto:
iLavr
User avatar
MC68k
Retired
Posts: 1328
Joined: 25 Jul 2011 00:14
Location: WWW

Post by MC68k »

невероятно толстый вброс. :o
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

MC68k wrote:невероятно толстый вброс. :o
невероятно полезный и содержательный пост!
пешы таких больше! :lol:
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Lavr wrote:Image
Особенностью микроЭВМ УМПК-589, построенной на основе секционированных БИС МПК серии К589, является реализация на микропрограммном уровне системы команд микропроцессора К580ВМ80 и формирование внешних магистралей, совместимых с УМПК-80.
С.74.
Интересно, что в первых "Агатах" расширенный аналог 6502 также был выполнен
на этих самых "секционированных БИС" (как пишут).

Поэтому по системе команд он был расширен, а по скорости - проигрывал реальному 6502.

Я почему-то предполагал, что 6502 "на рассыпухе" делали с помощью БИС АЛУ и
мелкой логики, как это любители делают, оказалось, что нет...
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Странный несколько вопрос меня озадачил: у 6502 последние 6 байт (или 3 слова)
в старших адресах памяти - это три вектора прерывания по сути...

А как он поймёт эти 6 байт, если "наедет" на эти адреса, выполняя программу -
как коды операций?
iLavr
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

А почему нет? Это обычная память же. Исполняет же он программу в ZP и SP (ZeroPage & StackPage).
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

HardWareMan wrote:А почему нет? Это обычная память же. Исполняет же он программу в ZP и SP (ZeroPage & StackPage).
Ну ZP и SP (ZeroPage & StackPage) - это никаких вопросов не вызывает...

Просто я не знаю его механизма - у i8080 по прерыванию должна поступить команда.
А 6502 - получается, просто берет адрес перехода из этих ячеек, вот я и задумался,
как он среагирует, если скушает JMP [ADDR NMI], к примеру.
iLavr
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Ну, мы юзаем JMP ($FFFC) чтобы запустить игру в своем картридже, но эта команда логически не отличается от отработки ресета. А вот если подать JMP $FFFC, то он однозначно прыгнет в этот адрес. Ну а так как туда все равно нужно писать адрес обработки, то что-то полезное там хранить тяжело. Разве что подгадать адрес так, чтобы получилась полезная команда.
User avatar
MC68k
Retired
Posts: 1328
Joined: 25 Jul 2011 00:14
Location: WWW

Post by MC68k »

Lavr wrote: А 6502 - получается, просто берет адрес перехода из этих ячеек, вот я и задумался,
как он среагирует, если скушает JMP [ADDR NMI], к примеру.
среагирует прикольно, ибо в конце обработчика прерываний обычо используют команду RTI.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

А вот такой вопрос у меня возник по ходу моих разборок с 6502:
популярные компьютеры, построенные на 6502, имели ну хоть как-то стандартизированные
подпрограммы своих системных ПЗУ?

Ну типа, как был негласный стандарт в наших популярных поделках на i8080:
- ввод символа с клавиатуры с ожиданием;
- ввод символа с клавиатуры без ожидания;
- вывод символа на экран;
- вывод строки на экран.

Ну я имею в виду:

Code: Select all

0F803H
...
0F809H
...
0F812H
...
0F818H
...
0F81BH
и т.д.
В книжке про ассемблер "Аппле" пара стандартных вызовов упоминается, но по имени,
а не по адресу функции...
(Морер У. Язык Ассемблера для персонального компьютера ЭПЛ: Пер. с англ. -М.: 1987, -430с.)

Или у них для компактности кода были только вызовы по внутренним адресам системной ПЗУ,
как у "Спецтрума"?
iLavr