Что такое неиспользуемый адрес памяти?

Прочитав эту страницу HTML о распределении памяти Commodore 64, потому что меня интересует старое компьютерное оборудование, я споткнулся через ячейку в таблице, которая утверждает, что адрес памяти не используется. Что именно это влечет за собой? Означает ли это, что если вы хотите поместить что-то в этот адрес, вы можете указать все, что хотите? Смущен и был бы признателен за все ответы. Спасибо. введите здесь описание изображения


person wardialer    schedule 12.10.2018    source источник
comment
Если источник является авторитетным и окончательным (читайте: вы можете ему доверять, и он знает все о карте памяти), чем да, вы можете его использовать (при условии, что он читаем и доступен для вашего кода).   -  person Margaret Bloom    schedule 12.10.2018
comment
@Amy sta.c64.org/cbm64mem.html   -  person wardialer    schedule 12.10.2018
comment
Наверное, лучше спросить @ retrocomputing.stackexchange.com   -  person Alex K.    schedule 12.10.2018


Ответы (3)


Карты памяти обычно должны указывать, какие программы используют эту память. Если они говорят «не используется», это означает, что указанные программы не используют этот адрес. Здесь это лучше видно: https://www.c64-wiki.com/wiki/Zeropage < / а>:

Эти адреса нулевой страницы полезны и важны при программировании C64 - настолько полезны, что внутренние ПЗУ системы KERNAL и BASIC используют большинство из них, оставляя лишь небольшую часть, которые полностью «безопасны» для программистов на машинном языке, чтобы использовать их в своих целях. без риска сбоя системы.

Таким образом, карта памяти действительна только для KERNAL и BASIC.

Другие программы, включая вашу, могут без риска получить доступ к неиспользуемым адресам. Если загружены другие программы, вы должны выяснить, какие адреса они принимают. Вы также можете получить доступ к другим адресам - даже если они используются другими программами - если вы знаете точно, что происходит тогда ...

person rkhb    schedule 12.10.2018

LT;DR.

Он относится к адресу рабочей памяти, который не используется BASIC или KERNAL подпрограммами и свободен для использования в программировании общего назначения.

Длинное объяснение:

Страница, на которую вы ссылаетесь, является действительно хорошим ресурсом, но она будет слишком подробной, если вы не знакомы с самой системой. Я рекомендую разобраться в общей структуре памяти, прежде чем вдаваться в подробности.

Ниже представлена ​​общая карта памяти, взятая из COMPUTE! номер журнала 32

введите здесь описание изображения

Карта памяти c64 легко настраивается. Вы можете видеть области ввода-вывода и ПЗУ, расположенные поверх области ОЗУ. В архитектуре C64 всегда есть скрытая RAM под областями ROM. Вы можете отключить области ПЗУ, которые вам не нужны, чтобы добраться до ОЗУ внизу, и при необходимости переключиться обратно в ПЗУ (или ввод-вывод). Вы также можете переместить экранную рамку в любое место.

Только область между 0000–0400 долларов США, которая называется рабочим плунжером, является фиксированной, поскольку эта область используется операционной системой (интерпретатором BASIC и подпрограммами KERNAL). Если вы хотите использовать память в рабочей оперативной памяти без странных побочных эффектов, вы должны закрыть BASIC или KERNAL ROM.

например: если вы закроете BASIC rom, вы можете безопасно использовать адреса нулевой страницы от 2 до 90 долларов.

Однако есть умные решения. Как и служебные инструменты, при условии, что вы не будете использовать набор данных, находится в буфере набора данных ($ 033C- $ 03FB) или использует оперативную память экрана в качестве временного буфера и эффективно заполняет экран искаженными символами.

Напомню также, что первая страница памяти (от $ 0000 до $ 00FF) чрезвычайно важна для CPUS семейства 6502. Эта область называется нулевой страницей. Инструкции, работающие с нулевой страницей, занимают в памяти на один байт меньше и выполняются на один цикл быстрее. Дополнительно режимы индексированной косвенной и косвенной индексируемой памяти доступны только для нулевой страницы.

Если вам нужно сохранить конфигурацию памяти по умолчанию и по-прежнему нужны переменные нулевой страницы, вам нужно найти неиспользуемый адрес внутри нулевой страницы. Это основная причина, по которой на подробной карте памяти они обозначены как «Неиспользуемые».

Также обратите внимание: программы машинного обучения, написанные пользователем, обычно помещаются в $ C000- $ D000, которые не затрагиваются интерпретатором BASIC, и называются 'Free Ram'.

person wizofwor    schedule 22.10.2018

BASIC и KERNAL используют большую часть нулевой страницы (адреса с $0000 по $00FF), оставляя мало для использования вами в ваших собственных программах. Неиспользуемые адреса - от $0002 и с $00FB до $00FE.

Zero-page - это особенность 6502 и связанных с ним процессоров. Считайте инструкцию:

LDA $1234

При этом в аккумулятор (один из регистров) загружается содержимое адреса $1234. Для адресов нулевой страницы есть более быстрая версия этой инструкции:

LDA $02

Пока это не имеет большого значения, но есть два режима косвенной адресации, которые требуют нулевой страницы. Например:

LDA ($FB),y

читает содержимое $FB и $FC, рассматривая их как 16-битные адреса с прямым порядком байтов, добавляет значение регистра Y к этому 16-битному адресу, а затем загружает аккумулятор с этого адреса. Обратите внимание, что в нулевой странице используются два соседних байта. Это делает четыре неиспользуемых байта в конце нулевой страницы намного более полезными, чем один неиспользованный байт в $02.

Если вы только начинаете, вы можете обойтись всего четырьмя байтами нулевой страницы. Позже вы можете подумать о сохранении и восстановлении части нулевой страницы, используемой BASIC. Вы захотите избежать части, используемой KERNAL, если вы вызываете какие-либо процедуры KERNAL из своей программы.

Если вы программируете на BASIC, все это не имеет значения. Вероятно, вы будете использовать PEEK и POKE только для управления видео, аудио и вводом-выводом. Вы можете использовать переменные и массивы BASIC для хранения данных вашей программы.

person depstein    schedule 10.10.2019