Почему старшие биты 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 бита никогда нигде не хранились.