Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Mick
На чем логику делать будешь (на дискретах или что-то более современном)?
Если на чем-то современном, то может одним портом не ограничиваться?
Это без переделки машины не получится. Доступ во вне имеется только два окна 4000h....7FFFh и 8000h....BFFFh. Вот и отсюда и пляшем. И то окна имеют выборку на два разных разъема. Первое окно выбирается на системном разъеме X1, а второе окно на разъеме X2. Причем второй разъем не распаян на Весте. Значит для совместимости надо подключать в первое окно. Но оно еще может быть занято картриджем(ПЗУ), тобишь необходимо ввести схему разрешения и запрещения доступа к квазидиску.
Добавлено через 1 минуту
Статический вариант можно и на рассыпухе - там микрух мало выйдет, а на счет динамике - пока не думал.
Последний раз редактировалось Mick; 06.10.2008 в 20:38. Причина: Добавлено сообщение
Может стоит три порта сделать?
1. Управляющий - определяет режим доступа - КД отключен/вкл для чтения/вкл для записи/вкл для записи и чтения
2. Номер страницы для чтения
3. Номер страницы для записи
Хотя в принципе под вкл/выкл можно порт не городить а выделить битик в портах под №2 и 3.
Теоретически можно было бы еще извраты со стеком в векторовском духе присобачить, т.е. отдельно задавать страницы для чтения/записи стеком (выводится ли на X1 сигнал STEC не смотрел).
Все вышеизложенное носит умозрительный характер, будут ли такие навороты кому-то нужны - это вопрос. Наверно стоит действительно ограничиться одним портом.
Последний раз редактировалось Mick; 06.10.2008 в 21:10.
Mick,
Смогут ли сосуществовать Квазидиск и AY?
Или скажем на квазидиске будет IDE-подобный разъем, шлейфом будет соединен с и одной стороны на X1, а с другой стороны на AY - реально ли так?
то есть схематично
X1
[:::::::::::::::::::]
||||||||||||||||| \
....................... - Shleif-Kabel
||||||||||||||||| /
[:::::::::::::::::::] IDE (IDC) \
<Kvazidisk> | Plata Kvazidisk
[:::::::::::::::::::] IDE (IDC) /
||||||||||||||||| \
....................... - Shleif-Kabel
||||||||||||||||| /
[::::::::::::::::::] \
<AY > | Plata AY
/
Тогда Веста с одним портом смогла бы тоже работать
(может тогда и ПЗУ с Досом и Квазидиск тоже подключить)
Если это технически решаемо.
Последний раз редактировалось XobbiMan; 06.10.2008 в 21:16.
ХОББИ ПК8000: http://pk8000.narod.ru, http://pk8000.8bit.lt
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Конечно смогут. Я потом нарисую совмещенную схему. Но пока исследование квазидиска. Квазидиск будет иметь тоже разъем под шлейф IDC40
Итак предварительное управление квазидиском порт 10h:
bit0 - виртуальный адрес A14 (32кб)
bit1 - виртуальный адрес A15 (64кб)
bit2 - виртуальный адрес A16 (128кб)
bit3 - виртуальный адрес A17 (256кб)
bit4 - виртуальный адрес A18 (512кб)
bit7 - разрешение доступа к квазидиску.
Изначально доступ будет запрещен и установлена 0 страница.
Всего 32 страницы.
Например, читаем из КД, записываем в основное ОЗУ и можно чтобы адреса были одинаковые. Например
org 8000h
lxi h,4000h
mov a,m ;прочитали из КД
mov m,a ;записали в основное ОЗУ
inx h
и т.д.
Можно тоже самое только наоборот - прочитали из ОЗУ и записали в КД.
Ну и появляется возможность копирования из одной страницы КД в другую.
Другой вариант использования такой штуки - "эмуляция ПЗУ" (название условное).
Например выполняем программу с КД (со страницы включенной на чтение) и можем писать в основное ОЗУ "под себя".
На векторе можно было отдельно задать номер "банка" КД для обращения к нему стеком. Т.е. те команды, которые читают или записывают в стек обращались к КД. Иногда это довольно удобная штука (например при выводе графики читаем с КД используя pop). Правда потом, когда на вектор начали ставить z80, который не генерирует STEC, это сигнал пришлось генерировать отлавливая коды команд обращения к стеку (примерно так, как в орионе в одном из адаптеров z80 отлавливали ei/di для извлечения звука).
Да, и еще вопрос - на X1 выведены только 14 адресных линий? Не совсем понял, почему отлавливается именно обращение к области 4000-7FFF? Может все-таки обращением к X1 считается обращение к области, для которой в порте 80h задано 01 (а для X2 - 10)? Просто если наружу выходят только 14 линий (это точно?), то все области для которых в 80h будет записано 01 будут "отзеркалены" (для X2 соответсвенно где 10).
Т.е. после
mvi a,01010101b
out 80h
содержимое областей 0000-3FFF, 4000-7FFF, 8000-BFFF, C000-FFFF будет одинаковым?
Просто я помню прокол с основным ПЗУ, когда я (вслед за b2m ) считал что оно "отзеркалится" во любом окне, если задать 00 в соотетствующие биты порта 80h, а оказалось не так.
Последний раз редактировалось ivagor; 06.10.2008 в 21:33.
Это конечно хорошо, но опять же у нас главный сигнал - выбор слота, иначе мы не сможем заблокировать страницу ОЗУ в основной памяти.
Посему мы не можем копировать из одной страницы в другую находясь в квазидиске. Для этого нужен буте копировщик, который будет сидеть где нибудь в адресах F000h или других - смысл понятен надеюсь.
Разъем расширения - это не полная шина со всеми сигналами, а толко окно во вне.
Но ПЗУ же пишет в основное ОЗУ "под собой". Не знаю как насчет X1 и X2, но если рассматривать только внутреннее ПЗУ и ОЗУ, то запись 00 или 11 в соответствующее место 80h определяют подключение в соответствующую область страницы на чтение, на запись там всегда основное ОЗУ.
Не получится ли так, что с подключенной к X1 или X2 памяти можно только читать (известно, что ПЗУ туда подключали, а ОЗУ)?
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)