Пардон! Не пишут, а написали и зарелизили! Смотри новости сайта http://atmturbo.narod.ru от 22 июля.Цитата:
Сообщение от acidrain
Вид для печати
Пардон! Не пишут, а написали и зарелизили! Смотри новости сайта http://atmturbo.narod.ru от 22 июля.Цитата:
Сообщение от acidrain
Ну, прямо скажу - не в тему ;)))) Хотя штука супер - ОГРОМНЫЙ шаг вперед рухляди под названием спектрум ;)))Цитата:
Сообщение от Максагор
слишком много заморочек и мало полезного результатаЦитата:
Сообщение от acidrain
ха-ха. нужно переключать не банки, а диспетчер, а у него не 1 байт, а 3 байта отвечают за стартовый адрес, то есть в 3 раза больше аутовЦитата:
Сообщение от acidrain
ну тут есть и свои плюсы. несколько программ, лежащих в осовном памяти или в одной банке, и уже настроенных на адрес, могут запросто вызывать друг друга. вызов другой банки - 1 out. а тут всегда, независимо от расположения, нужно перепрограммировать диспетчер (3 out'a?)Цитата:
Сообщение от acidrain
который переключает банки. я понимаю, можно сделать бит конфигурации, который включает или старую страничную организацию, или новый MMU. но делать одновременно - по одним портам MMU, по другим страницы - застрелишьсяЦитата:
Сообщение от acidrain
там процессор может напрямую адресовать 4gЦитата:
Сообщение от acidrain
тоже сравнил. виртуальный ВГ эмулирует чтение сектора. операция стандартная, выполняется за 1 раз (то есть можно полностью заменить своей, оптимизированной) и нечасто. один тормоз раз в сектор вполне уместен. а с памятью можно работать бесчисленным множеством способов и потери скорости недопустимы, и так z80 медленныйЦитата:
Сообщение от acidrain
Мне кажется это пустое
Пересылка байта займёт 16 тактов, при частоте 4МГц - 250000 байт
в секунду, а соответственно 1Мб - около 4-х секунд
Соответственно реальное использование памяти более 1Мб крайне
сомнительно.
мысль пришедшая в голову сходу:
расширить и кол-во команд и даже ввести новые регистры за счет недокументированых команд.
А именно, берем блок #C0-#FF с префиксом #ED. Если в памяти находится след. последовательность байтов: #ED,#C0,#AA,#BB пусть это будет загрузка номера сегмента, внешняя логика декодирует #ED,#C0 и след. два байта попадают не к Z80, а во внешние регистры, а Z80 в то время выполняет две команды NOP. Для косвеной адресации подобным образом (подменой) можно использовать команды LD (nn),HL и LD HL,(nn) или LD HL,nn.
Остальное додумайте сами!
jtn: это хорошая штука, если соединить с диспетчером памяти. можно сделать как в 8086. там ведь регистры 16-разрядные, но адресуется гораздо больше через префикс сегмента. лучше даже не пропускать 2 байта после #EDC0, а обойтись без них. просто использовать префиксы #EDCn для того, чтобы сказать диспетчеру, что следующая команды будет работать не с абсолютным адресом, а прибавит к нему смещение или неявно задаст выборку из другой банки. если использовать #EDC0-#EDFF, то диспетчер может хранить до 64 "закладок" на области в верхней памяти. эти закладки, будут похожи на сегментные регистры x86, только храниться вне процессора, инициализироваться через порты. ну или половину диапазона отвести на постоянное программирование смещения, а вторую половину - только на время выполнения следующей команды. плохо только, что прибавится 8 тактов на каждое обращение к верхней памяти
ADST: лишней памяти всегда можно найти применение. может, эмулятор дискеты будет с двумя дискетаи сразу работать... или видео/звук можно из памяти играть
По поводу расширения команд - лет ... я начинал мастерить такое,
потом осознал свои заблуждения и бросил :)
"лишней памяти всегда можно найти применение" - если
проц будет на 20Мгц, тогда возможно, но не надо забывать -
в память ещё загрузить надо что-то, проще прикрутить винт.
Помилуй, в худшем случае 1 аут - номер "банки" на 65к; в лучшем, как jtn предложил - дополнительные команды для адресов => 65К. Последний вариант предпочтительней.Цитата:
Сообщение от ASDT
Поймите, программист не должен знать, что у него 2 метра памяти (он конечно можен на них расчитывать), он просто действует в пределах 65к, плюс не хитрым переключением (худший вариант) остальная память или при помощи команд, например
всего лишь включит девятый банк и запишет в HL адрес $77fe. Дальше работай, как душе угодно. =)Код:LEA xhl, $977fe
LD a,(hl)
...
Проще цф карточку прикрутить ;). Вот и грузи сразу с винта 1 мег и работай. Причем можно задействовать мму для целей загрузки одним куском =)Цитата:
Сообщение от ASDT
Да карточку будет правильнее. Ну какое слово подвернулось,
то и написал :)