Почему старшие биты 53280 $D020 всегда установлены (c64)

По крайней мере, работает VICE 2.4:

PRINT PEEK(53280)
 254

POKE 53280,14

PRINT PEEK(53280)
 254

Ясно, что используются только биты #0-#3, и что "правильное" значение получается с AND 15, но почему 6510 устанавливает верхние биты в 1?

1 ответ

Решение

CPU 6510 не устанавливает неиспользуемые старшие биты в 1; скорее нет памяти, поддерживающей старшие биты в соответствующих регистрах VIC. Так что происходит, когда процессор записывает 8-битное значение на шину данных при записи, а микросхема VIC хранит только младшие 4 бита; затем, когда процессор пытается прочитать с этого адреса, он помещает 53280 в адресную шину, а чип VIC должен поместить все 8 битов в шину данных. Но он сохранил только младшие 4 бита; старшие 4 бита должны быть подделаны как 1.

Конечно, он может также выбрать другие ложные значения для этих дополнительных битов (например, он может использовать все 0); Дело в том, что это должно быть фиксированное значение, поскольку реальные 4 бита никогда нигде не хранились.

Другие вопросы по тегам