Важная информация

User Tag List

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 26

Тема: Модульный "Орион"

  1. #11
    Activist
    Регистрация
    09.11.2011
    Адрес
    Москва
    Сообщений
    207
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    Я планирую вместо мапперов разместить ПЛИС на каждом модуле. Т.е. RAM, ROM, YAMAHA, ATMEGA ДЛЯ SD, ATMEGA ДЛЯ PS/2, ВГ93, ВВ55 и т.п. БОЛЬШИЕ МИКРОСХЕМЫ, которые есть в обоих компьютерах подключать к общей шине через свои ПЛИС. А микроконтроллер на модуле управления будет при включении переконфигурировать ПЛИС для нужной схемы соединений больших микросхем по нужным адресам. Также будет переконфигурироваться FPGA в видеокарте METEOR. Не перешиваться, а настраиваться несколько битов в каждой ПЛИС, а уже в них с помощью мультиплексоров будет происходить переключение режимов, адресов и т.п.
    И будет все это работать, как DIVIDE RUS....
    Интересная разработка была...

  2. #12
    Guru Аватар для zx-kit
    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    65
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от petrov1962 Посмотреть сообщение
    И будет все это работать, как DIVIDE RUS....
    Интересная разработка была...
    Киты очень меееедленнно все делают.
    "L-256"

  3. #13
    Banned
    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Потребительные качества Вашего ZX-ОРИОНА можно существенно улучшить, если ввести 2 простейшие доработки базовой архитектуры ОРИОНА. Т.к всё делается на базе ПЛИС, предлагаемые изменения почти не требуют расхода ресурсов. При добавлении железа в новодел ОРИОНА следует добавлять только такие доработки, которые дают реальную пользу, по возможности уже поддержаны программами и главное, - реализуются на реальном базовом ОРИОНЕ любым человеком имеющим электропаяльник за 1 час труда.

    Реализация режима базового ОРИОНА в клоне ZX очень мало улучшает потребительные качества, ибо играми ОРИОН пользователей не потрясёт, а текстообработка в базовом ОРИОНЕ с маленьким и плющенным экраном с некачественным шрифтом не добавит пользователю много удобств. В то же время ОРИОН при простейших доработках в состоянии стать приемлемым компьютером для текстообработки, дополнив тем самым возможности ZX.

    1. Желательно расширить растр на весь экран, чтобы исправить "плющенность" экрана ОРИОНА. В базовом ОРИОНЕ это было невозможно, т.к НГМД работает только при CPU с тактом 2.5 МГЦ и выше (уже 2.4 МГЦ не работает). Поэтому такое улучшение растра делали только имея в ОРИОНЕ Z80 на двойном такте. Остальным, увы, приходилось мучиться с плющеным экраном и уменьшенным размером букв. Расширение растра достигается изменением частоты сдвига в выходном видео регистре с 10 МГЦ на 8 МГЦ или 9 МГЦ.

    2. Расширение экрана с 12К до 16К (ширина в пикселях 512 вместо 384), что даёт качественный шрифт 8*10 вместо некрасивого и медленного 6*10. Это имеет смысл потому, что решает проблему текстообработки. Несмотря на больший размер экранного ОЗУ, байтовый драйвер работает в 2-3 раза быстрее, чем небайтовый. Я имею 6 драйверов использующих такой режим. Да и переделка любых текстовых драйверов, рассчитанных на экран 384 на расширенный экран выполняется за 5 минут и заключается в замене 1-2 байт. Такая доработка используется с 1993 года, поддержана программами и хорошо себя зарекомендовала. Включение режима 512 происходит при записи 1 по биту D7 в порт FA. Т.к при установке обычных режимов, в этом бите записывается 0, то совместимость никак не нарушается.

    Можно подумать и о режиме 448 точек (экран 14К), что даёт 64 символа в строке более качественным фонтом 7*10, что удобно для текстообработки. Драйвер такой же не быстрый, но шрифт намного красивее. Такой режим у меня был много лет при кварце 9 МГЦ, растр растянут на весь экран. Такой режим был поддержан в моём эмуляторе ОРИОНА до 1999 (затем нет, т.к исходник погиб, а последующие версии продолжились из исходника более ранней версии, только с экраном 384) и зарекомендовал себя очень хорошо. Более часто я использовал в этом режиме шрифт 8*8 с 56 символами в строке, т.к шрифт здесь крупнее и красивее, что для меня важно (а в текстовом адаптере в начале 90-х я использовал растр 53*21, т.к более качественный и крупный шрифт мне важнее числа символов в строке).

    3. Введение быстрого режима цвета. Предлагается заимствовать идею цвета СПЕЦИАЛИСТА. Такой цвет в первую очередь удобен для текстовых программ и идеально сочетается с экраном в 512 точек (не 384 или 448). Доработка заключается в добавлении 8-ми разрядного регистра цвета, подключенного на входы РУ5-тых банки 1 (где хранится цвет). В реальном ОРИОНЕ это "выливается" в 4-ре корпуса 1533. ИР22 - регистр цвета, две КП11 переключают входы ОЗУ, чтобы сохранить совместимость и ТМ2 (или ЛА3) для формирования старта в ПЗУ F800. Для управления режимом используется бит D3 порта F8. В базовой схеме этот бит в порту F8 физически уже есть, но занят на сброс. Для того, чтобы этот бит освободить, надо ввести RS-триггер. Он сбрасывается по /RESET, а взводится по /MEMR (или /WR КР580). Тогда по сбросу с адреса 0 читается ПЗУ, но при первой же команде записи (куда угодно) ПЗУ отключается. В качестве адреса регистра цвета когда-то предполагался адрес F7E0 (хотя базовый ОРИОН имеет один свободный адрес регистра по 'STA FB00', но обычно этот порт занимают на программное переключение ТУРБО-НЕТУРБО).

    Быстрый режим цвета позволяет выводить текст в цвете с той же самой скоростью, как и в монохроме. Достаточно записать цвет в регистр цвета и все последующие выводы графики на экран будут раскрашивать экран в нужный цвет. Кроме того, такой цвет позволяет очень легко раскрашивать старые монохромные текстовые программы. Использование такого режима на СПЕЦИАЛИСТЕ показало его высочайшую эффективность. Для тормозной 8-ми разрядки именно такой цвет - это то, что надо. Короче, - это гениальная идея Волкова, как и всё остальное в СПЕЦИАЛИСТЕ. Если бы эту идею вовремя заметили и использовали авторы других бытовых ЭВМ, то качество их системных программ существенно улучшилось бы. К сожалению, журнал МК в 1987 читали только судо- и авиа-моделисты, а не продвинутые разработчики бытовых ЭВМ.
    Последний раз редактировалось barsik; 06.01.2017 в 15:39.

  4. #14
    Guru Аватар для zx-kit
    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    65
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от barsik Посмотреть сообщение
    1. Желательно обеспечить растр на весь экран, чтобы исправить "плющенность" экрана ОРИОНА. В базовом ОРИОНЕ это было невозможно, т.к НГМД работает только при CPU с тактом 2.5 МГЦ и выше (уже 2.4 МГЦ не работает). Поэтому такое улучшение растра делали только имея в ОРИОНЕ Z80 на двойном такте. Остальным, увы, приходилось мучиться с плющеным экраном и уменьшенным размером букв. Расширение растра достигается изменением частоты сдвига в выходном видео регистре с 10 МГЦ на 8 МГЦ или 9 МГЦ.
    Видеовыход будет VGA FULL HD 1920x1080 60Hz с масштабированием в целое число по X и по Y. Может не заморачиваться с частотой точек а просто растянуть картинку но нужного размера и выводить 60 раз в секунду из буфера графики на монитор?
    2. Расширение экрана с 12К до 16К (ширина в пикселях 512 вместо 384). Это имеет смысл потому, что решает проблему текстообработки. Несмотря на больший размер экранного ОЗУ, байтовый драйвер работает в 2-3 раза быстрее, чем небайтовый. Я имею 6 драйверов использующих такой режим. Да и переделка любых текстовых драйверов, рассчитанных на экран 384 на расширенный экран выполняется за 5 минут и заключается в замене 1-2 байт. Такая доработка используется с 1993 года, поддержана программами и хорошо себя зарекомендовала. Включение режима 512 происходит при записи 1 по биту D7 в порт FA. Т.к при установке обычных режимов, в этом бите записывается 0, то совместимость никак не нарушается.
    Хорошая идея. У нас в Орионе будет русская клавиатура, в отличии от Спектрума и возможность писать тексты. И это будет разборчиво на экране.
    Можно подумать и о режиме 448 точек (экран 14К), что даёт 64 символа в строке более качественным фонтом 7*10, что удобно для текстообработки. Такой режим у меня был много лет при кварце 9 МГЦ, растр растянут на весь экран. Такой режим был поддержан в моём эмуляторе ОРИОНА до 1999 (затем нет, т.к исходник погиб, а последующие версии продолжились из исходника более ранней версии, только с экраном 384) и зарекомендовал себя очень хорошо. Более часто я использовал в этом режиме шрифт 8*8 с 56 символами в строке, т.к шрифт здесь крупнее и красивее, что для меня важно (а в текстовом адаптере в начале 90-х я использовал растр 53*21, т.к более качественный и крупный шрифт мне важнее числа символов в строке).
    Дополнительный режим. Пока не будем.
    3. Введение быстрого режима цвета. Предлагается заимствовать идею цвета СПЕЦИАЛИСТА. Такой цвет в первую очередь удобен для текстовых программ и идеально сочетается с экраном в 512 точек (не 448). Доработка заключается в добавлении 8-ми разрядного регистра цвета, подключенного на входы РУ5-тых банки 1 (где хранится цвет). В реальном ОРИОНЕ это "выливается" в 4-ре корпуса 1533. ИР22 - регистр цвета, две КП11 переключают входы ОЗУ, чтобы сохранить совместимость и ТМ2 (или ЛА3) для формирования старта в ПЗУ F800. Для управления режимом используется бит D3 порта F8. В базовой схеме этот бит в порту F8 физически уже есть, но занят на сброс. Для того, чтобы этот бит освободить, надо ввести RS-триггер. Он сбрасывается по /RESET, а взводится по /MEMR (или /WR КР580). Тогда по сбросу с адреса 0 читается ПЗУ, но при первой же команде записи (куда угодно) ПЗУ отключается. В качестве адреса регистра цвета когда-то предполагался адрес F7E0 (хотя базовый ОРИОН имеет один свободный адрес регистра по 'STA FB00', но обычно этот порт занимают на программное переключение ТУРБО-НЕТУРБО).
    Мне нравится. В новом режиме "Метеор" для Спектрума будет также рисовать текущим набором цветов. Не каждый атрибут расчитывать адрес и записывать, а записать один раз в регистр и он затем будет записываться автоматически.

    А как сделать, чтобы дисковод работал при частоте Z80 5 MHz или выше ? Поможет торможение сигналом WAIT при обращении к дисководу ?

    У меня появилать идея подключить к ZX Spectrum 48K картридж. При этом вместо родного ПЗУ появится до 32 страниц по 16К ПЗУ и до 32 страниц по 16К ОЗУ. Как такой картридж можно использовать в Орионе ?
    Последний раз редактировалось zx-kit; 06.01.2017 в 15:51.
    "L-256"

  5. #15
    Banned
    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zst
    У нас в ОРИОНЕ будет русская клавиатура, в отличие от Спектрума и возможность писать тексты. И это будет разборчиво на экране.
    Удобно, если можно подключать реальную клавиатуру ОРИОНА, клавиатуру от IBM PC и промышленную аппаратную рэтро клавиатуру типа 15ВВВВ-97-6 (или совместимые - клавиатуру от APPLE-II, клавиатуру CONSUL или клавиатуру от ИРИШИ, т.е клавиатуры выдающие готовый ASCII-код, сопровождаемый нулевым стробом).

    Цитата Сообщение от zst
    448*256 - дополнительный режим. Пока не будем.
    Правильное решение. Режим 512 быстрее и на практике полезнее. Нельзя распыляться и всё делать надо по-минимуму. Лучше быть лентяем, чем идиотом. Я упомянул экран 448, чтобы похвастаться, что имел такое и что давно уже есть такой драйвер для всех ДОС (даже для ORDOS).

    Цитата Сообщение от zst
    Быстрый цвет мне нравится. В режиме Спектрума "Метеор" будет также рисовать текущим цветом. Не нужно записывать атрибут каждого знакоместа, достаточно записать один раз и далее он будет записываться автоматически.
    Для Спектрума это даёт очень небольшую пользу. Т.к игр это использующих - нет, и текстовые драйвера в ZX не используются. И главное, знакоместный цвет тормозит мало, т.к раскраска записью одного байта в той же банке, намного быстрее, чем запись 10 байт с запрещением прерываний и переключением банок.

    Цитата Сообщение от zst
    А как сделать, чтобы дисковод работал при частоте Z80 5 MHz или выше ? Поможет торможение сигналом WAIT при обращении к дисководу ?
    Конечно поможет, и именно так и делали. Но при Z80 на 2.5 МГЦ КНГМД обычно хорошо работал и без WAIT. Если было ТУРБО, то сигналом HLDA из ВГ93 (что выдаётся пока вращается колесо), ОРИОН автоматически переключался в НЕТУРБО. Такая мера была проще и эффективнее, чем добавлять 1 такт WAIT.

    Один такт WAIT при Z80 добавляется без проблем (расход деталей один ТМ2). Если хотелось добавлять 2 такта WAIT, а это надо при такте Z80 в 10 МГЦ и при такте 5 МГЦ, если используется HD-дисковод, отчего нельзя переключать в НЕТУРБО. Т.к при HD-формате дисковода, скорость потока данных очень высока и нужно иметь 5 МГЦ реального такта (т.е нельзя использовать автоматическое переключение на 2.5 МГЦ). В этом случае вводят 2 такта WAIT. Что в свою очередь имеет следствием появление "снега" на экране (такая же проблема почему-то возникает и при использовании КНГМД от ОРИОНСОФТ, если процессор Z80). В этом случае приходится использовать простейшую схемку "снегогашения".

    Но я не понимаю зачем в наше время поддерживать реальный КНГМД. Дисководы сдохли от времени, а дискет не достать. Ради трёх дискет, что ещё подают признаки жизни, нет смысла паять КНГМД на ВГ93. А если уж очень надо, тогда уж лучше сделать РК-КНГМД. Он понадёжнее, хотя даёт меньший объём диска.

    Винчестер, - вот это дело. Иногда винчестеры дохнут и уже не годятся для IBM PC (вероятно не читается MBR или загрузочные сектора). Но иногда их ещё можно использовать для 8-ми разрядки (если на винте написано сколько в нём плоскостей и цилиндров). У меня за 25 лет сдохло 6 винтов. 3 из них оказались пригодны для РК86, остальные сдохли насмерть. Кстати, если винт сдох, попробуйте перезаписать MBR, это иногда помогает (или сделайте низкоуровневый формат) и винт прослужит Вам ещё пару месяцев.

    Цитата Сообщение от zst
    Есть идея сделать порт картриджа для Спектрума. Допустим вставляем картридж в ZX Spectrum 48K. И у нас вместо родного ПЗУ подключается до 32 страниц ПЗУ и до 32 страниц ОЗУ. Как такое можно совместить с Орионом ?
    Вообще-то я слышал, что в картриджах игра хранилась в ПЗУ. Но мысль про ОЗУ в картридже тоже можно использовать. В принципе, ОЗУ должно быть перенесено в сам компьютер (глупо его дублировать в каждом катридже). Но в случае, если ОЗУ в самом компьютере мало (и не хватает для целей RAM-диска), то разумно катридж содержащий ДОС, оснастить ОЗУ из которого эта ДОС и организует RAM-диск. Что и позволяет пользоваться ЭВМ без массовой внешней памяти, - перекачивать по RS-232 из IBM PC со скоростью 14.400 (больше ВВ51, вероятно, не потянет) программы и затем долго хранить их на RAM-диске (особенно, если это статическое КМОП ОЗУ с пуговичной батарейкой для резервного питания).

    О катриджах на ОРИОНЕ не слышал. Внешнее ПЗУ можно включить любым способом (причём желательно не в микропроцессорное ядро, а через порт). Один способ подключения внешнего ПЗУ уже использован, - это ROM-диск. ROM-диск физически - это и есть катридж. К сожалению, ROM-диск был занят системой ORDOS. Отчего никому и в голову не пришло использовать его в роли катриджа. Чтобы такую схемотехнику превратить в катридж, достаточно на разьём катриджа вывести однобитовый порт чтения (например, подав сигнал с разъёма на вход МГ, или через диоды на входы всех 3-х клавиш УС,СС,РУСЛАТ). И заменить прошивку ROM-BIOS F800.

    Тогда, когда выполняется старт ОРИОНА (по кнопке СБРОС), программа проверяет вышеуказанный бит (биты). И если в слот воткнут катридж, то катридж этот сигнал закорачивает на землю. Это является знаком для программы в ПЗУ F800, что надо стартовать катридж - т.е отключить видео (чёрный экран) скачать в 0-ю банку 61 кб кода и сделать JMP 0. Это хорошая идея, жаль, что я сам не додумался до этого в 1991 и всё время возился с ROM-диском в формате ORDOS.

    А именно, - я имел прошитыми в ROM-диск кучу разных ДОС в виде файлов ORDOS. Т.е ORDOS использовалась у меня лишь в роли стартёра. В этом случае выгоднее было бы вместо ORDOS разместить программу меню - наподобие стартового меню ИРИШИ. Тогда не надо было бы набирать имя программы - удобнее курсором переместить "балку подсветки" на нужный файл и нажать <ВК>. Фанаты ORDOS использовали для этих целей VC$, но у меня в ROM-диске VC$ никогда не было. Такую программу меню стоило сделать где-то в 1995, когда стало ясно, что новых программ для ORDOS уже не будет, отчего нужда иметь саму ORDOS в ROM-диске отпала полностью.
    Последний раз редактировалось barsik; 06.01.2017 в 22:53.

  6. #16
    Guru Аватар для zx-kit
    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    65
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от barsik Посмотреть сообщение
    Удобно, если можно подключать реальную клавиатуру ОРИОНА, клавиатуру от IBM PC и промышленную аппаратную рэтро клавиатуру типа 15ВВВВ-97-6 (или совместимые - клавиатуру от APPLE-II, клавиатуру CONSUL или клавиатуру от ИРИШИ, т.е клавиатуры выдающие готовый ASCII-код, сопровождаемый нулевым стробом).
    PS/2 клавиатуру я смогу подключить, если подскажете, какие коды она должна выдавать.

    Но я не понимаю зачем в наше время поддерживать реальный КНГМД.

    Винчестер, - вот это дело.
    Понятно.
    О катриджах на ОРИОНЕ не слышал. Внешнее ПЗУ можно включить любым способом (причём желательно не в микропроцессорное ядро, а через порт). Один способ подключения внешнего ПЗУ уже использован, - это ROM-диск. ROM-диск физически - это и есть катридж. К сожалению, как и всё на ОРИОНЕ, он был погублен системой ORDOS. Отчего никому и в голову не пришло использовать его в роли катриджа. Чтобы такую схемотехнику превратить в катридж, достаточно на разьём катриджа вывести однобитовый порт чтения (например, подав сигнал с разъёма на вход МГ, или на вход всех 3-х клавиш УС,СС,РУСЛАТ). И заменить прошивку ROM-BIOS F800.

    Тогда, когда выполняется старт ОРИОНА (по кнопке СБРОС), программа проверяет вышеуказанный бит (биты). И если в слот воткнут катридж, то катридж этот сигнал закорачивает на землю. Это является знаком для программы в ПЗУ F800, что надо отключить видео (чёрный экран) скачать в 0-ю банку 61 кб кода и сделать JMP 0. Это хорошая идея, жаль, что я сам не додумался до этого в 1991 и всё время возился с ROM-диском в формате ORDOS. А именно, имел прошитыми в ROM-диск кучу разных ДОС в виде файлов ORDOS.
    Я планирую в режиме Спектрума более быстрый доступ к дополнительному ОЗУ и ПЗУ. Просто добавляем один порт номера страницы и подключаем блоки ОЗУ или ПЗУ по 16 К. Можно какую-нибудь FLASH-OS придумать для хранения нескольких файлов. Но это подходит только для исполняемых файлов, для текста и других файлов, которые надо записать лучше использовать HDD.
    "L-256"

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17
    Banned
    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    PS/2 клавиатуру я смогу подключить, если подскажете, какие коды она должна выдавать
    .
    У базового ОРИОНА матричная клавиатура 8*8 от РК86. Но есть альтернативная клавиатура с матрицей 11*8, называемая MS7007.

    Если MS7007 подключать совместимо (по ж.РАДИО 12.91), то возникает уникальное совпадение, - у клавиатур РК86 и MS7007 клавиша <УС> (или Control на вражеском языке) оказываются на одной линии ППА (порта C). А так как в CP/M общеприняты коды курсорных клавиш отличные от кодов курсорных клавиш РК86, то полученные от подпрограммы F81B коды требуется подменять. Но коды курсорных клавиш совпадают с кодами полученными от нажатия какой-то символьной клавиши в сочетании с клавишей <УС>. Нам не важна какая эта клавиша. Важно, что если код получен сочетанием УС+клавиша, подмена кодов делаться не должна.

    И вот тут нас выручает счастливое совпадение линий порта C, на котором стоит клавиша <УС> (или Control). Тогда, драйвер CP/M, получив от F81B код курсорной клавиши, читает порт C и узнаёт тем самым нажата клавиша <УС> или нет, т.е получен код от курсорной клавиши или сочетанием с <УС>. Если <УС> нажата, то подмена не делается. А благодаря тому, что клавиша <УС> стоит в обоих клавиатурах в том же разряде порта C, то драйвер оказывается универсальным для MS7007- и РК-клавиатур. А т.к драйверов много, то для М2 надо иметь все драйвера в двойном количестве, что просто глупо. Проще поменять М2-MS на M3-MS. Здесь дело не в коде ПЗУ F800, а в схеме подключения матрицы. Поэтому пользователи М2-MS страшно мучились в CP/M с кодами курсорных клавиш. Им были недоступны драйвера.

    Матричная клавиатура не выдаёт кодов. Она вообще пассивная. Её должен обслуживать процессор.

    Коды выдаёт аппаратная рэтро клавиатура. Она выдаёт сразу код ASCII, и пока Вы держите клавишу, - сигнал /STB равен 0. Подключается такая клавиатура к РК86 и ОРИОНУ следующим образом. Т.к выдаваемый код 7-ми битовый, то по 8-му биту можно читать бит /STB. Это используется в ОРИОНЕ и РК86, чтобы читать апп.клавиатуру через ППА клавиатуры. В такой схеме, если процессор не опрашивает, то код от нажатия может быть потерян. Впрочем, это не проблема, в матричной клавиатуре тоже нажатия теряются, если CPU в этот момент не читает клавиатуру.

    Такая простая схема удобна, если по сигналу STB происходят аппаратные прерывания. При этом потерь нажатий не происходит никогда. Фактически отличие рэтро аппаратной клавиатуры от клавиатуры IBM PC - лишь в интерфейсе, параллельный или последовательный (и SCAN-код вместо готового ASCII).

    В грамотных компьютерах апп.клавиатуру подключают более грамотно - ASCII читают через регистр ИР23, где ASCII-код клавиши защелкивается по фронту сигнала STB. А по биту D7 читается готовность формируемая триггером ТМ2, который взводится по тому же фронту. Тогда, даже когда клавишу уже отпустили, программа проконтроллировав бит D7 узнаёт, что в паузе между опросами произошло нажатие и считывает из ИР23 защёлкнутый код клавиши, триггер готовности сбрасывается и компьютер готов принять новый код. Так работает рэтро аппаратная клавиатура. Чтобы проэмулировать такую клавиатуру надо проэмулировать (или просто включить в схему реальный) 8-ми разрядный регистр и триггер.

    Не знаю как на ПЛИС сделана эмуляция матричной клавиатуры РК86 на клавиатуре PS/2, но я предполагаю, что ПЛИС должна делать то же самое, что делает мой контроллер, позволяющий подключать к ОРИОНУ апп.клавиатуру вместо матричной. Этот проект был реализован мной в 1998 и оказался немного неудачным по идее, но работал отлично. Контроллер содержал простейшее ядро на КМОП SU880 на такте 4 МГЦ, РФ2, 1 кб ОЗУ на 6514 и несколько 8-ми разрядных регистров. Общее число корпусов - около 10. При более грамотном программировании можно было бы обойтить и без ОЗУ в 1 кб. Задача стояла обеспечить 100%-ную имитацию матричной клавиатуры, чтобы работали ROM-BIOS, драйвера и игры опрашивающие напрямую матрицу РК86.

    Программа опроса клавиатуры работает так. В порт А в цикле выводится бегущий ноль. Порт B считывается в ожидании того, чтобы на одном из разрядов появился 0. По обнаружению 0, программа знает номер ряда по вертикали и горизонтали матрицы.

    В контроллере по записи бегущего нуля в порт A ППА, автоматически взводится триггер WAIT и Z80 в ОРИОНЕ надолго останавливается, предоставляя контроллеру время для обслуживания. Контроллер читает порт А ППА (по которому драйвер опроса выдал бегущий ноль по одной из 8 линий). Затем, в зависимости от кода нажатой клавиши и разряда порта A, по которому выдан 0, контроллер выбрасывает в регистр выводящий на порт B ППА ноль по одному из битов. По записи в этот регистр автоматически сбрасывается сигнал WAIT и Z80 в ОРИОНЕ продолжает прогон драйвера опроса клавиатуры. И далее по программе считывает порт B и узнаёт тем самым какая клавиша в матрице была нажата. Без WAIT не обойтись, т.к скорости контроллера не хватает.

    Такой контроллер обеспечивает 100% эмуляцию матричной клавиатуры на аппаратной и работают все отечественные игры ОРИОНА, т.к эти игры не используют нажатие двух клавиш одновременно. К сожалению, в процессе эксплуатации такого контроллера, выяснилось, что некоторые игры от СИНКЛЕРА используют нажатие двух клавиш, что рэтро аппарататная клавиатура не может обеспечить. Что сделало саму идею контроллера бессмысленной (для системных программ проще заменить п/п в драйвере, а для ZX-игр контроллер бесполезен).

    Для использования в качестве матричной клавиатуры 8*8 - клавиатуры от PS/2, я предполагаю, что ПЛИС контроллер должен делать то же самое. Хотя скоростей ПЛИС вероятно хватит, чтобы работать без WAIT основного процессора. При использовании клавиатуры PS/2 можно имитировать РК-матрицу или ZX-матрицу полноценно, т.е имитировать нажатие сразу на две клавиши.

    Кстати, вскоре я собираюсь сделать контроллер эмулирующий рэтро аппаратную клавиатуру на клавиатуре IBM PC. Т.к в ПЛИС ничего не понимаю, то сделаю простой контроллер на КМОП SU880, который будет принимать от IBM клавиатуры по последовательному интерфейсу SCAN-код и выдавать на выходе ASCII-код, сопровождаемый сигналом STB. Такой контроллер намного проще, чем родной контроллер клавиатуры ИРИШИ (не только по сложности схемы, но главное, - не нужна матрица клавиш 8*8). Это пока "не горит", т.к для ИРИШИ у меня есть даже несколько клавиатур, хотя они уступают качеством клавиатуре от IBM PC.
    Последний раз редактировалось barsik; 06.01.2017 в 22:31.

  9. #18
    Guru Аватар для zx-kit
    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    65
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    У Спектрума все серьезней. Там ничего изменить нельзя. Нет никаких драйверов. Имитировать надо в реальном режиме все комбинации нажатых клавиш и нет никакой гарантии, что в игре выдается только один ноль на порт клавиатуры. Поэтому я наставил много регистров сдвига и выдавал с них код через диоды. А в регистры состояние всех кнопок записывал из Атмеги.

    В модульном компьютере будет FPGA в видеокарте или ПЛИС на плате портов, поэтому регистры сдвига и диоды я размещу в них, а Атмега останется. Соединение будет по 3-4 проводам.

    Почитал тут, что делают электронные диски с батарейкой. Тогда и в картридж можно будет батарейки добавить. Например, для сохранения настроек или SAVE в играх. В Орионе можно временно хранить текстовые файлы, а потом сохранять через UART на PC.

    Раз у Ориона такая гибкая конфигурация, можем мы загрузиться с картриджа, выбрать в меню версию монитора или операционной системы, потом скопировать монитор в адрес F800, выключить программно картридж и запустить монитор с адреса F800 ? Только тут разница со Спектрумом. Там при отключении включается родное ПЗУ, а в Орионе родное ОЗУ. В Спектруме есть сигнал отключения ПЗУ, а в Орионе есть сигнал отключения ОЗУ ?

    - - - Добавлено - - -

    Хотя один раз я к Спектруму тоже подключил герконовую клавиатуру от какого-то терминала и написал драйвер для IS-DOS. С этой клавиатуры в последовательном коде передавались состояния всех кнопок. Конечно в играх ничего не работало. Зато в IS-DOS можно было по-русски писать курсовые и другие тексты.

    - - - Добавлено - - -

    Я для Спектрума в адаптере PS/2 клавиатуры cделал, так, чтобы символы нарисованные на клавиатуре и появляющиеся на экране в BASICe совпадали. Естественно только английские буквы.

    - - - Добавлено - - -

    Распределить биты порта картриджа CARIC_PORT можно следующим образом:
    CP7...CP6 - выбор 00 - ПЗУ картриджа, 01 - ОЗУ картриджа, 10 - ПЗУ компьютера, 11 - ОЗУ компьютера.
    CP5...CP0 - номер страници ОЗУ или ПЗУ

    Адрес порта в режиме Спектрума может быть, например, 7E. В режиме ОРИОНА - адрес памяти F780.
    Последний раз редактировалось zx-kit; 06.01.2017 в 20:46.
    "L-256"

  10. #19
    Junior
    Регистрация
    12.01.2017
    Адрес
    г. Смоленск
    Сообщений
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от barsik Посмотреть сообщение
    Кстати, вскоре я собираюсь сделать контроллер эмулирующий рэтро аппаратную клавиатуру на клавиатуре IBM PC. Т.к в ПЛИС ничего не понимаю, то сделаю простой контроллер на КМОП SU880, который будет принимать от IBM клавиатуры по последовательному интерфейсу SCAN-код и выдавать на выходе ASCII-код, сопровождаемый сигналом STB. Такой контроллер намного проще, чем родной контроллер клавиатуры ИРИШИ (не только по сложности схемы, но главное, - не нужна матрица клавиш 8*8). Это пока "не горит", т.к для ИРИШИ у меня есть даже несколько клавиатур, хотя они уступают качеством клавиатуре от IBM PC
    А я в свое время подключал PS/2 клавиатуру через стандартный контроллер i8042 который раньше стоял на многих материнках времен 286/486 причем часто на панельке.
    У меня даже сохранилась макетка от экспериментов. И не надо ничего только контроллер и один корпус инверторов с открытым коллектором.
    Эмуляцию матрицы (если надо предполагалось делать по прерыванию).

  11. #20
    Guru Аватар для zx-kit
    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    65
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Наверно Орион не стоит улучшать. Также как и ZX Spectrum. Потребуется повторить все, что есть в стандартном Орионе. Лучше делать компьютер, который исправляет ошибки этих компьютеров. И не дублировать графические режимы этих компьютеров, а делать новый компьютер с новыми режимами. При этом старые программы работать не будут, вернее сделать так, чтобы работали программы CP/M. А под новые графические режимы переделать игры с ZX Spectrum. Пока не знаю, в каком разделе лучше создать тему. Но мне нравится проектироват онлайн. Если кто поможет - хорошо. Главное, если не согласны - не мешайте и не пишите. Язвительные замечания только тормозят разработку.
    "L-256"

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. DSDOS для ПРК "Орион-128"
    от Denn в разделе Орион
    Ответов: 555
    Последнее: 23.03.2024, 12:21
  2. Сборка ПК "Орион-Про" версии 3.20
    от АлександрПП в разделе Орион
    Ответов: 552
    Последнее: 20.03.2024, 15:05
  3. Ответов: 189
    Последнее: 15.04.2017, 23:32
  4. Платы ром-диска "Орион-128"
    от AL.EX в разделе Барахолка (архив)
    Ответов: 45
    Последнее: 10.06.2012, 12:54
  5. Куплю плату "Орион-ПРО"
    от АлександрПП в разделе Барахолка (архив)
    Ответов: 3
    Последнее: 15.05.2011, 20:48

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •