Все ноги растут из СР/М
Из CP/M Били стартонул (смотрим чуть выше) и программил он бейсик на Altair (а может и нет).
Да и основа всего линейка логарифмическая (это мой видимо старт. Двигал двигал ребенком и поломал. Значит, был интерес).
Уходим от темы друзья.
Последний раз редактировалось OrionExt; 07.07.2017 в 21:45.
Электроника КР-02, MSX YIS-503IIR, Орион-128, Ленинград-2, Pentagon-128k, MSX2 YIS-503IIIR, MSX-EXT, ...
Речь идёт о выборе наиболее удобного аппаратного диспетчера памяти.Сообщение от Xrust
В чистом виде цельнобанковая коммутация по 64 кб невозможна, даже если для переключения использовать команду OUT. Потому что тогда нет никакого способа как программе или данным попасть из основной банки в дополнительные. Коммутацию можно делать только если дополнительные банки имеют хоть немного ПЗУ или некоммутируемый фрагмент ОЗУ (или хотя-бы имитацию некоммутируемости участка ОЗУ, путём загрузки в банки одинаковых кодов).
Чтобы всё-же получить диспетчер с коммутацией в 64К, необходимо разбить 64К на несколько коммутируемых окон, что позволяет одновременно включить в адресное пространство фрагмент основной банки памяти и фрагмент дополнительной банки. После загрузки в дополнительные банки подпрограммы для коммутации (для имитации некоммутируемого участа) в дальнейшем можно коммутировать ОЗУ уже не в окне, а целыми банками по 64К. Кстати, первый в СССР диспетчер памяти был применён в ИРИШЕ (1984) и он был именно такого типа. В нём коммутировалось всё адресное пространство в 64К, но оно было разбито на 4 независимо коммутируемых окна по 16К, что позволяет осуществить начальную произвольную загрузку доп.банок, и после загрузки в доп.банку небольшого куска кода (программы коммутации) можно использовать и цельнобанковую коммутацию по 64К.
Таким образом без некоммутируемого ПЗУ (или имитацией этого в ОЗУ) невозможно переключать банки целиком. В то же время наличие некоммутируемого фрагмента ОЗУ, как это сделано в ОРИОНЕ, совершенно не является обязательным, хотя и упрощает жизнь программисту (освобождает от необходимости переставлять стек при включении очередной банки). Исходя из этого, а также установившихся в бытовых ЭВМ стандартов на входы в ПЗУ и по принципу, что "чем проще, тем лучше", самой удобной будет коммутация с окном в 62 кб, оставляя окно F800...FFFF некоммутируемым в виде ПЗУ. Особенно это справедливо, если доп.банки используются только как VDISK, а не как полноценное ОЗУ для хранения программ или данных.
Что касается того, чтобы установить границу окна коммутации на уровне C400, CC00 или D000 (т.е на уровне BDOS CP/M), чтобы при переключениях памяти сам код CP/M не изменялся, отчего вызов функций CP/M был бы возможен из любой банки, то это также совершенно не требуется. Во-первых, уровень BDOS в разных версиях ДОС меняется, а во-вторых, даже если это и требуется, то легко скопировать в доп.банки весь код CP/M BDOS+BIOS, с'имитировав тем самым некоммутируемость.
Ещё одной идеей для коммутируемости может быть некоммутируемость ZERO-page CP/M, т.е 256 байт ОЗУ 0000...00FF. Это позволяет получить, как максимально высокий TPA до FF00 (перегрузив исполняемый код CP/M 2.2 в доп.банки), так и позволяет использовать в каждой банке максимум, а именно - 63.75 килобайт памяти.
Последний раз редактировалось barsik; 08.07.2017 в 12:00.
barsik, есть еще возможность перемещать данные между банками при помощи ПДП или одновременная запись в несколько банков.
Это свежая идея.Сообщение от Xrust
Хорошую экономию деталей и удобство программирования эта идея даёт, если иметь ПЗУ F800 только в основной банке 0, т.е имея в банке 1 FULL RAM, и заносить туда "программу коммутации" путём записи байтов в адреса F800...FFFF нулевой банки (т.к в этой области в банке 0 ПЗУ, так что запись сюда ничего не испортит). Это позволяет тратить на "интерфейс" в каждой дополнительной банке только 16 байтов (FFF0...FFFF), оставляя для полезного использования всё основное пространство каждой доп.банки.
Тогда исполнительные части подпрограммы RDBYTE (FFF0) и WRBYTE (FFF8) для чтения и записи байтов в доп.банках, удобно сделать аналогично подпрограммам ПЗУ ОРИОНА F836/39, но только с учётом их фатальной ошибки (не позволяющей вызывать эти п/п-ммы из других банок кроме нулевой). Для этого достаточно в регистре 'B' передавать номер банки, откуда был вызов и куда надо сделать возврат.
А вот идея использовать ПДП для межбанкового обмена не годится.Сообщение от Xrust
Определитесь какого грамматического рода у Вас банки памяти. Женского или мужского? То есть "банка памяти" или "банк памяти". Я всегда применяю термин женского рода - банка (потому что слово "банк" в предложении менее информативно, т.к хуже склоняется).
Последний раз редактировалось barsik; 08.07.2017 в 15:57.
Личка заполнена! И чистить я ее не буду! Пользуйтесь адекватными средствами связи! Спасибо.
Seamos realistas y hagamos lo imposible!
Ernesto Che GuevaraПереехал сюда: SteinBlume (ex ATM CP/M Explorer)
http://era-cg.su
Нет смысла ставить БИС ПДП и кучу микросхем обрамления для реализации логики, что к тому же бесполезно нагружает шину, если ту же задачу решает просто наличие общего ПЗУ в банках. Это ПЗУ в доп.банке может быть размером не в 2 кб, а всего в 16 байт, где и располагаются всего две п/п-ммы RDBYTE и WRBYTE, похожие на п/п-ммы ОРИОНА F836/39.Сообщение от Xrust
Сообщение от XrustСогласен, что причину я придумал неудачную. Т.к речь идёт о пересылках, имелось ввиду, что слово банк в ответе на вопрос куда, звучит точно также как в именительном падеже, т.е не склоняется. Тогда вот другая причина, - чтобы не путать с финансовым понятием банк. А что общего у микросхем памяти со скамейками?Сообщение от Википедия
Последний раз редактировалось barsik; 08.07.2017 в 16:12.
Личка заполнена! И чистить я ее не буду! Пользуйтесь адекватными средствами связи! Спасибо.
Seamos realistas y hagamos lo imposible!
Ernesto Che GuevaraПереехал сюда: SteinBlume (ex ATM CP/M Explorer)
http://era-cg.su
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)