Просмотр полной версии : SMUC на дискретах и ПЛИС
За создание данной схемы выражаю благодарность следующим людям:
CityAceE – за создание форума, на котором родился этот девайс;
Conan – за предоставленные схемы SMUC v1.2 и v1.3;
Prusak – за предоставленные материалы по работе RTC;
Ewgeny7 – за поддержку идеи, а в последующем изготовление опытного образца и его бета-тестирование;
Mick - за исследование "прошивки" ПрофПЗУ.
Отдельная благодарность SMT, который, несмотря ни на что, помог и помогает мне разобраться в программной части SMUC!
Также, отдельная благодарность,Trident, за исследования реального SMUC и раскрытие его тайн!
Материалы по "ПрофПЗУ на дискретах" находятся тут:
http://zx.pk.ru/showpost.php?p=32108&postcount=206
Схемы SMUC и ПрофПЗУ (дискретные) полностью рабочие! Проверены лично. Ewgeny7.
Схемы и прошивки нового "клона" СМУКа на Альтере, на основе схемы Spensor'a:
Вариант на EPM3032ALC44 с поддержкой CMOS-часов от ewgeny7 (рабочая, проверено):
http://www.zx.pk.ru/showpost.php?p=208517&postcount=370
Добавлено: прошивка, распиновка и исходник на Verilog для ПрофПЗУ от LVD (рабочая, проверено).
http://zx.pk.ru/showpost.php?p=78051&postcount=14
Добавлено: прошивки ПрофПЗУ, версий 4.0х, 128 и 256кб.:
http://www.zx.pk.ru/showpost.php?p=173003&postcount=35
Эту плату сейчас программно поддерживает только проф-ПЗУ от Scorpiona или есть еще какой нить TR-DOS?
Эту плату сейчас программно поддерживает только проф-ПЗУ от Scorpiona или есть еще какой нить TR-DOS?
О какой плате речь???
О какой плате речь???
Ну не о плате, а схеме - тема данного форума. :cool:
Сабж, в принципе должен поддерживать то-же что и оригинальный, разработанный фирмой Скорпион, SMUC.
Если не считать прикладного ПО (CD-Walk, PerfectCommnder1.7, STS6.2(в конце есть еще буква версии, но я ее не помню, возможно STS6.2HDD), наверняка еще что-то есть), то кроме ПрофПЗУ пока ничего нет, хотя ПП не такая уж и слабая вещь. Но, не кто не запрещает Вам адаптировать прошивки от KAY-1024, ATM или прошивку Влада Матлаша под SMUC - работа сравнимая с написанием демы:) А польза от такого дела будет куда значительней!
Сабж, в принципе должен поддерживать то-же что и оригинальный, разработанный фирмой Скорпион, SMUC.
Если не считать прикладного ПО (CD-Walk, PerfectCommnder1.7, STS6.2(в конце есть еще буква версии, но я ее не помню, возможно STS6.2HDD), наверняка еще что-то есть), то кроме ПрофПЗУ пока ничего нет, хотя ПП не такая уж и слабая вещь. Но, не кто не запрещает Вам адаптировать прошивки от KAY-1024, ATM или прошивку Влада Матлаша под SMUC - работа сравнимая с написанием демы:) А польза от такого дела будет куда значительней!
Для этого мне надо свой ZX-777 переделать под один из этих компов :confused: , а потом где эти прошивки взять-то?
где эти прошивки взять-то?
ПрофПЗУ недавно выкладывал SMT в теме по Unreal'у - http://zx.pk.ru/showpost.php?p=23615&postcount=233.
Для KAY-1024 легко находится в приложениях к эмуляторам, поищи на trd.speccy.cz. Для ATM - спроси у Чунина Романа, но однозначно оно есть у них на сайте. Прошивка Матлаша была в теме, которую ведет, Wlodek - "UUE файлы из FidoNet".
Только вопрос - у кого есть желание адаптировать?
Это возможно тот шанс оставновится на стандартной железке и написать для неё вместо ПП что-то похожее на ось (или набор сервисов, ну вобщем понятно) - ТО ЕСТЬ УСТАКАНИТЬ СТАНДАРТ!
Не знаю как кому, но мне этот девайс необходим как составная часть "Спектрума моей мечты". Дело в том, что как не был бы распространен NemoIDE, но его простота приводит к тому, что старшие процессоры Zilog к Спектруму с таким контроллером "прикрутить" не удасться. Но, это так, отступление от темы.
что старшие процессоры Zilog к Спектруму с таким контроллером "прикрутить" не удасться.
Это речь идет о Z180...
Тогда другой вопрос - его кто нить пытался схему включения набросать?
По роду работы я сталкивался с ним, когда попался в руки чудо буржуйской техники - биоидентификатор HANDKEY. Могу сказать - хоть возможностей у него и больше, но адресация там по моему уже не такая линейная, скорее сегментная.
Это речь идет о Z180...Могу сказать - хоть возможностей у него и больше, но адресация там по моему уже не такая линейная, скорее сегментная.
Она может быть линейной только в случае расположения Common Areas и Bank Area друг за другом. С другой стороны, методы кодинга на #7FFD очень даже подойдут для Z180 (я имею в виду расположение кода и данных), только вот чуточку удобнее будут (хотя бы из-за железного стандартного ММУ). Ну а если ещё вспомнить ДМА с линейным доступом ко всему мегу, а так же прикрутить на место собственную голову :) (т.е. правильно и логично применять возможности ММУ) можно хорошие real time вещи делать, о которых на связке Z80+#7FFD мечтать не приходится.
Дополнение: в принципе я только после разъяснений spensor'а обратил внимание на smuc именно в свете использования старших процессоров. Кстати, вопрос к Mick - работал именно с Z180, не с HD64180?
Дополнение: в принципе я только после разъяснений spensor'а обратил внимание на smuc именно в свете использования старших процессоров. Кстати, вопрос к Mick - работал именно с Z180, не с HD64180?
В HANDKEY II, которые у нас были стояли именно Z180. Ну насчет работы - я там только разбирался с программным обеспечением интересно же - написано вроде бы на Сях. Ну и попутно попытался краем глаза железку посмотреть. А так я ни чего для него не писал. А на счет сегментации - там так и сделано. ROM 0 страница 0000-8FFFh, ROM 1..... 9000h - CFFFh, а страницы RAM 0...... D000h - FFFFh. Переключение станиц происходило через внутренний порт страниц(номер я сейчас не помню). Вот и все что я узнал тогда.
Вспомнил номера регистров 38h, 39h, 3Ah.
А вопрос собственно к кому?
Тут на форуме лишь пару человек найдется, которым такая идея могла в голову прийти. А сделали бы в три раза меньше:(
Этот вопрос тем, кто собирается сделать "Спектрум моей мечты" :) я так понимаю.
И еще тут я взял профПЗУ и немного прошелся по нему дизассемблером - так вот - что за порт F6BEh и F7BEh?
Этот вопрос тем, кто собирается сделать "Спектрум моей мечты" :) я так понимаю.
Z180 это тема icebear, а моя eZ80:) Я принципиальной схемы пока не рисовал:(
И еще тут я взял профПЗУ и немного прошелся по нему дизассемблером - так вот - что за порт F6BEh и F7BEh?
Это порты ATA-IDE устройства, как и весь диапазон (F8BE-FFBE), какие точно на вскидку сказать не могу. При сброшенном бите 7 регистра FFBA, обрабатывается основной блок регистров (тот в котором есть все регистры, или по PC это 1F0-1F7), при установленом - дополнительный блок регистров (3F6,3F7).
Это порты ATA-IDE устройства, как и весь диапазон (F8BE-FFBE), какие точно на вскидку сказать не могу. При сброшенном бите 7 регистра FFBA, обрабатывается основной блок регистров (тот в котором есть все регистры, или по PC это 1F0-1F7), при установленом - дополнительный блок регистров (3F6,3F7).
А понятно, а то что то в doc файле не нашел описания(или смотрел невнимательно :confused: ).
И еще попутно мысль на счет голосования. Жаль там нет пункта воздержался. Охоту голосовать за отбивает слабой программной поддержкой. Против голосовать то же как то не хочется.
Лично мое мнение - я бы не стал повторять в том виде схему, какая она сейча есть. Кривизна адресов портов меня просто добивает :mad: И кто их только придумывает.
И еще тут я взял профПЗУ и немного прошелся по нему дизассемблером - так вот - что за порт F6BEh и F7BEh?
Прошу прощения за свой предыдущий ответ на этот вопрос – отвечал в спешке и не вник:(. Поэтому предыдущий ответ ошибочен:(
Откровенно говоря, и самому интересно, что это за порты. Если не затруднит, дайте адреса процедур обращения к этим портам и версию ПрофПЗУ, в которой они были найдены. Дело в том, что в “SMUC на дискретах”, равно как и в оригинальных SMUC v1.2 и v1.3, таких портов попросту нет! В дешифрировании портов адресная линия А3, а именно через нее могут быть получены эти порты, не участвует. Возможно, такие порты были в более ранних реализациях SMUC (v1.1, v1.0 и др.), но об этом информации у меня нет. Это вполне возможно, по той причине, что люди находили и более экзотические атавизмы-рудименты в ПрофПЗУ. По всему видно, что данные порты являются портами обращения ко второй половине регистров ATA-IDE (3F6, 3F7 по “PC-шному”). Но, повторюсь, в SMUC v1.2 и v1.3 таких портов нет – из-за неполной дешифрации они будут отображаться на FEBEh и FFBEh. В принципе, то что обращение ко второй половине регистров ATA-IDE включается битом D7 порта FFBA тоже не доказано – информация получена на основании сообщения Кирилла Фролова и больше ничем не подтверждена:(. Так что, как я сказал раньше – в схеме могут быть глюки. Требуется участие обладателей реальных SMUC, но то ли они игнорируют вопросы от меня и SMT, то ли на самом деле информация в подписи пользователя не соответствует действительности, то есть заведомо ложна.
И еще попутно мысль на счет голосования. Жаль там нет пункта воздержался. Охоту голосовать за отбивает слабой программной поддержкой. Против голосовать то же как то не хочется.
Ну тогда, IMHO, воздержавшиеся просто игнорируют тему.
Лично мое мнение - я бы не стал повторять в том виде схему, какая она сейча есть. Кривизна адресов портов меня просто добивает И кто их только придумывает.
IMHO, из всех имеющихся, и более-менее поддержанных устройств SMUC имеет наиболее оптимальную раскладку адресов. Покажите другой контроллер с 16-битными портами, имеющий более оптимальную их раскладку, и поддержку в виде прикладного и системного софта. То, что в SMUC действительно плохо, так это избыточность в виде регистров версий и регистра-ячейки виртуальных дисководов. Все это придумал легендарный MOA и другие:)
Как стало известно из ПС, в процессе повторения схемы, возникла проблема с приобретением микросхемы КР1533ИР15. Ее можно заменить на КР1533ИР16, по предлагаемой схеме.
Кроме того, эквиваленты элементов ИЛИ (<VD15,VD16,R13> и <VD17,VD18,R14>), можно заменить обычными элементами ИЛИ микросхем КР1533ЛЛ1 или КР1533ЛЛ2.
Откровенно говоря, и самому интересно, что это за порты. Если не затруднит, дайте адреса процедур обращения к этим портам и версию ПрофПЗУ, в которой они были найдены.
Прошивка, по которой прошлись дизассемблером: - scorp_prof.rom.(из пакета, ссылка приведена выше)
Порт 0F6BEh - адрес 1CFA4h
Порт 0F7BEh - адреса 1CEBCh, 1CECCh, 1CEDFh,1CF5Eh,1CFAFh и т.д.
Там еще есть ссылка на порт F4BEh.
Наверное это все таки и есть порты ATA-интерфейса.
IMHO, из всех имеющихся, и более-менее поддержанных устройств SMUC имеет наиболее оптимальную раскладку адресов. Покажите другой контроллер с 16-битными портами, имеющий более оптимальную их раскладку, и поддержку в виде прикладного и системного софта.
Да я так спорсил - кто же их такие придумывает. Ответ узнал.
В приципе если кто нить придумает железку и программу облуживающую ее, выкинет на рынок. Кто же потом будет противиться.(Другой альтернативы нет). :)
Прошивка, по которой прошлись дизассемблером: - scorp_prof.rom.(из пакета, ссылка приведена выше)
А какая собственно (128,256 или 512К)?
Там еще есть ссылка на порт F4BEh.
Наверное это все таки и есть порты ATA-интерфейса.
Вроде бы так.
То, что это ATA, вопросов не вызывает, но вот каким регистрам "винта" эти порты соответствуют это отдельная проблема.
А какая собственно (128,256 или 512К)?
Ну в том пакете она с таким названием одна - 256кб.
Ну так как будете ставить автографы на плате или нет?
А кто сказал, что я буду SMUC производить? Мне сувениры делать неинтересно, да и не окупится оно, в виде фетишей:( А желающих приобрести для работы хоть в таком виде, хоть на Altera не видно:( Если удасться реализовать "Спектрум моей мечты", то SMUC окажется в его составе. Но, это тоже идея не для серийного производства.
А сабж, в предложенном мною виде нужен для повторения всеми желающими. Надеюсь это будет полезно. Лично для себя я его тоже повторю в таком виде на монтажной платке, исключительно в единичном экземпляре, под монокорпусный (classic) Спектрум на основе Т34ВГ1.
Схема есть только на бумаге, на ее отработку потребуется какое-то время и самое главное необходимо участие обладателей реальных SMUC, чтобы можно было однозначно ответить на все возникающие вопросы. Пока эта схема (теоретически) делает то-же, что и виртуальный SMUC в Unreal'е. Совсем не факт, что в схеме и эмуляторе учтеты все особенности оригинального SMUC.
Вот я еще раз посмотрел на схему, контроллер прерываний вы выкинули а куда теперь приходят цепи /INT0 - от часов и IRQ1 от ATA или я плохо смотрел :( .
Попутно раз все равно вывели 16 битную шину, может не стоит ее отдавать только под ATA.
куда теперь приходят цепи /INT0 - от часов и IRQ1 от ATA
Они никуда не идут. На оригинальном SMUC IRQ1 заходит в Altera, как он там обрабатывается не знаю:( Возможно его можно прочитать через биты порта #FFBA. Вот для разрешения этого вопроса и нужно содействие обладателей реальных SMUC!
Попутно раз все равно вывели 16 битную шину, может не стоит ее отдавать только под ATA.
Я не хочу играться с 16-битностью. В проекте, сделать аппаратное преобразование 16бит>8бит, чтобы к регистру данных IDE можно было обращаться через один регистр. А дальше DMA и прочие блага жизни.
Они никуда не идут. На оригинальном SMUC IRQ1 заходит в Altera, как он там обрабатывается не знаю Возможно его можно прочитать через биты порта 7FBA. Вот для разрешения этого вопроса и нужно содействие обладателей реальных SMUC!
Понятно! Надо в ПЗУ Scorpiona искать ответ. Реальные обладатели SMUC если только программеры и железячники - game-ры вряд ли чем тебе помогут. Прерывания от часов они наверняка использовались - счетчиками секунду обрабатывать глупо.
Попутно вопрос а контроллер прерываний какой диапазон адресов имел?
Надо в ПЗУ Scorpiona искать ответ.
В слепую это не найти и не понять:(
game-ры вряд ли чем тебе помогут.
Было бы желание, что надо и "на пальцах" объяснить можно. А с другой стороны это Spectrum-геймеры, а это более продвинутые люди чем PC-шные. Да и нет сейчас идиотов на Спектруме!
Прерывания от часов они наверняка использовались - счетчиками секунду обрабатывать глупо.
Контроллер прерываний (PIC), не был штатным элементом SMUC и в оболочке ПрофПЗУ "часики" тикали с и без него. Обработка скорее всего шла по стандартным (50Гц) INT'ам, а время корректировалось/сверялось с RTC. С другой стороны, /INT0 это не тактирование от часов, а сигнал будильника, срабатывающий раз в сутки:)
контроллер прерываний какой диапазон адресов имел?
PIC (i8259A) занимал адреса #7FBE и #7EBE.
Контроллер прерываний (PIC), не был штатным элементом SMUC и в оболочке ПрофПЗУ "часики" тикали с и без него. Обработка скорее всего шла по стандартным (50Гц) INT'ам, а время корректировалось/сверялось с RTC. С другой стороны, /INT0 это не тактирование от часов, а сигнал будильника, срабатывающий раз в сутки
Вам то виднее, я только предположил. А за адреса портов спасибо, загляну для интереса в проф ПЗУ!
А за адреса портов спасибо, загляну для интереса в проф ПЗУ!
Большая просьба, если удасться что-то интересное выудить из ПП сообщить!
Вопрос задаю всем, кто может помочь. В частности интересуют такие вопросы:
1. Доступны ли порты версий (#5FBA и #5FBE) на запись? Возможно можно туда вносить какие-то данные.
2. Используются ли биты D3 и D7 порта чтения #FFBA? Если да, то за что они отвечают?
3. Используется ли бит D3 порта #7FBA?
4. Есть ли в ПП подтверждение того, что полукомплекты регистров ATA-IDE переключаются битом D7 порта записи #FFBA?
Отдельная просьба, если есть, закинуть в форум проги под SMUC. Был бы очень признателен. Очень интересует сколько прог поддерживало SMUC RTC? Может стоит отказаться от параллельного RTC и применить последовательное (I2C), а ПП подпатчить?
Orionsoft
09.09.2005, 16:29
ПП надо тоже делать на дискретах =)
надеюсь скоро добуду прошивку альтеры
кидаю эскиз печатной платы профпзу
4. Есть ли в ПП подтверждение того, что полукомплекты регистров ATA-IDE переключаются битом D7 порта записи #FFBA?
Вот что пока(когда есть время :( ) по данной теме. Маленький листинг из файла scorp512.rom смещение 1c000h:
Бит 7 в регистре 0ffbah(регистр управления) переключает оновной набор регистров HDD на альтернативный и наоборот.
В HDD основные регистры 1f0h-1f7h, альтернативные 3f6h,3f7h.
Т.е. обращение к 0febeh(1f6h в HDD) c установленым 7 битом в 0ffbаh приведет к записи в альтенативный регистр HDD 3f6h.
P.S. Обслуживание SMUC профпзу началось с 3 версии, посему файл scorp_prof.rom - не дейстителен(версия 2.XX) Там включены некоторые процедуры наверно для предверительной отладки.
И в продолжении предыдущего письма вот еще два фрагмента кода.
Здесь порт 0d8beh - чтение старшего байта из HDD, 0d9beh - запись старшего байта.
И еще по схеме сигнал RTC, разрешающий работу дешифратора 74LS139 никуда не идет - его нужно подтягивать либо к нулю, либо нужна схема выборки.
Вот что пока(когда есть время) по данной теме.
Спасибо за информацию! Пока видно, что догадки подтверждаются. Это радует:)
Здесь порт 0d8beh - чтение старшего байта из HDD, 0d9beh - запись старшего байта.
А вот это уже огорчает:( Ну все равно спасибо за просветление. А это действительно так?
Хотя, тем которые повторяют схему (надеюсь такие все-таки есть), расстраиваться нечего - старший байт читается/пишется в весь диапазон адресов #D8BE-#DFBE (имеется неполная дешифрация), так что работать будет! Надо будет только подправить описание.
И еще по схеме сигнал RTC, разрешающий работу дешифратора 74LS139 никуда не идет - его нужно подтягивать либо к нулю, либо нужна схема выборки.
Что значит никуда не идет? Не стоит делать замечание, если неуверен:( Сигнал выборки RTC можно увидеть вблизи микросхемы DD13! Там сигнал с выводов 15 и 14 дешифратора пропускается через аналог элемента "И" (VD5,VD6,R12) и выходит сигналом RTC.
Жду дополнительных результатов поиска!
Что значит никуда не идет? Не стоит делать замечание, если неуверен Сигнал выборки RTC можно увидеть вблизи микросхемы DD13! Там сигнал с выводов 15 и 14 дешифратора пропускается через аналог элемента "И" (VD5,VD6,R12) и выходит сигналом RTC.
Извини, я ошибся! Вчера в упор разглядывал, когда профпзу копал и не увидел(наверно я заглючил в тот момент :( ).
Вот фрагмент работы с часами RTC.
Бит 7 в 0ffbah кроме перключения альтернативных регистров HDD служит для разрешения записи в память RTC.
Извини, я ошибся!
Бывает. Поиск ошибок одобряю!
Бит 7 в 0ffbah кроме перключения альтернативных регистров HDD служит для разрешения записи в память RTC.
Это известный момент,сабж именно так это и обрабатывает, но за листинг, в очередной раз, спасибо. Кстати, речь все время идет именно о scorp512.rom? А кстати где в прошивке можно увидеть ее версию?
Это известный момент,сабж именно так это и обрабатывает, но за листинг, в очередной раз, спасибо. Кстати, речь все время идет именно о scorp512.rom? А кстати где в прошивке можно увидеть ее версию?
Да о той прошивке. Версию пока не нашел. О поддержки SMUC профпзу недавно ввычитал, что поддержка его включена начиная с версии 3.xx. А я копал другую.
1. Доступны ли порты версий (#5FBA и #5FBE) на запись? Возможно можно туда вносить какие-то данные.
Пока потдверждения не нашел, но то что читает - да. Во сей пример.
Доступны ли порты версий (#5FBA и #5FBE) на запись? Возможно можно туда вносить какие-то данные.
Пока потдверждения не нашел, но то что читает - да. Во сей пример.
Это понятно, что читает. По заверению SMT, если их не реализовать, ПП просто не найдет SMUC:(
Это понятно, что читает. По заверению SMT, если их не реализовать, ПП просто не найдет SMUC:(
В принципе так оно и есть - ПЗУ принимает решение о наличии SMUC по прочтению версии либо установит флаг ошибки - тогда дальше смысла проверять нет.
Продолжаем по теме. Вот фрагмент.
Вопрос что за порты 0fefeh, 0effeh.
LAB_0B3B: ld bc,0fefeh
0b3e ed78 in a,(c) ;порт 0fefeh
0b40 0f rrca
0b41 3815 jr c,LAB_0B58 ;уход на проверку SMUC
0b43 06ef ld b,0efh ;порт 0effeh
0b45 ed78 in a,(c)
0b47 cb57 bit 2,a
0b49 200d jr nz,LAB_0B58 уход на проверку SMUC
Cсылка LAB_0B58 - оттуда программа уходит на чтение портов 5fbah, 5fbeh. (фрагмент описан выше).
Вопрос что за порты 0fefeh, 0effeh.
Если мне не изменяет память, то самая что ни на есть обычная клавиатура:)
Если мне не изменяет память, то самая что ни на есть обычная клавиатура:)
Тогда я уже торможу. :) Все пора домой.
Нашел в ПрофПЗУ процедуру теста - разберу до конца потом кину.
Mick, ты не прав насчёт порта #D9BE. учитывай, что при outi/outd сначала уменьшается b, а потом bc используется в качестве адреса порта
Mick, ты не прав насчёт порта #D9BE. учитывай, что при outi/outd сначала уменьшается b, а потом bc используется в качестве адреса порта
Согласно datasheet на Z80
OUTD (BC) <- (HL)
B = B-1
HL = HL -1
OUTI (BC) <- (HL)
B = B-1
HL = HL +1
А теперь смотрим пример
LAB_1C98: push hl
1c99 0ebe ld c,0beh
1c9b 11f9d9 ld de,0d9f9h ;старшие байты портов
1c9e af xor a
LAB_1C9F: ld b,d
1ca0 23 inc hl
1ca1 edab outd ;запись в порт 0d9beh - сигнал WR_HI
1ca3 43 ld b,e
1ca4 eda3 outi ;запись в порт 0f9beh HDD
1ca6 23 inc hl
1ca7 3d dec a ;повторяем 255 раз
1ca8 20f5 jr nz,LAB_1C9F
1caa e1 pop hl
1cab c9 ret
Ну и кто здесь не прав на счет 0d9beh
Mick, ты не прав насчёт порта #D9BE. учитывай, что при outi/outd сначала уменьшается b, а потом bc используется в качестве адреса порта
А теперь смотрим пример...
Так кто все-таки прав? Может STS'ом для правильности "обкатать" этот кусок?
даташиты врут. это уже давно известный факт, что в командах outi/otir и outd/otdr сначала декрементируется B, а потом BC выставляется на ША в качестве номера порта.
даташиты врут. это уже давно известный факт, что в командах outi/otir и outd/otdr сначала декрементируется B, а потом BC выставляется на ША в качестве номера порта.
Что все? Z80,Z180? Да фирма Zilog оказывается большой вруньей.
А я верил :) .
Я хочу услышать тоже, мнение професионального программера. Есть такие?
Я хочу услышать тоже, мнение професионального программера. Есть такие?
Ну возмите, да STS'ом протрассируйте, то что оно правильно сработает сомнений не вызывет! Думаю, что профессионализм Stalker'а сомнений не вызывет?
Продолжим разбираться на счет OUTD
Вот выдержка из статьи Ивана Рощина о влиянии флага переноса в процедуре OUTD
"При написании одной программы мне понадобилось наиболее оптимально (по объёму) реализовать запись данных в первые 11 регистров музыкального сопроцессора из области памяти #8000—#800A. Сначала я сделал это так:
LD HL,#800A
M1 LD BC,#FFFD
OUT (C),L
LD B,#BF
OUTD
BIT 7,L
JR Z,M1 "
Теперь обясните мне, в свете ваших утверждений каким образом он записывает в порт #BF.
И еще приведите мне документально всеми известный факт - иначе не поверю в вранье фирмы Zilog.
Alone Coder проверял на Z80 и КР1858ВМ1. так же он сообщал, что некий Т34ВМ1 реализует поведение outd/outi по даташитам (то есть неправильное)
Mick, порты #BFFD и #BEFD - одно и то же, A8 не участвует в дешифрации. не хочешь верить - проверь на живом спектруме, что ld bc,#80FD/OUTI нормально пишет в #7FFD
По твоей просьбе, spensor, вот еще пример из ПрофПЗУ процедуры работы с NRAM (смещение все тоже - 7 страница 1с000h)
Попытлся прокомментировать, что -то сам запутался. Короче там все как на схеме ни чего лишнего.
Еще нашел инициализацию контроллера прерываний. Если надо кину.
Кидай. Лишняя инфа не повредит:)
Тогда вот кусочек. Прокоментировать не могу - не знаком с работой ВН59. Там в регистре 0ffbah очищается 3 bit.
Ну и в догонку кусок определения конфигурации компьютера - страница 20 (14h).
Оттуда все и вызывается.
Внимание! Всплыл первый bug - в перечне к схеме должно быть следующее:
"DD13 КР1533ИД7
DD14 КР1533ИД14".
2 ewgeny7. Спасибо, за найденную опечатку!
Тут возникли следующие вопросы, может я чего упустил.
1. Определенность с командой OUTD и портом #D9BE/#D8BE (запись старшего байта в ATA-IDE) найдена?
2. Дамп NVRAM уже был найден и разобран?
2. Дамп NVRAM уже был найден и разобран?
Пример 4 тому свидетельтсво - мож я что в коментариях напутал, но это точно работа с NVRAM.
И еще один кусочек, мне совсем не понятно, предположительно модем или порт какой то( 78feh, 79feh,7afeh, 7bfeh).
Дамп NVRAM уже был найден и разобран?
Пример 4 тому свидетельтсво - мож я что в коментариях напутал, но это точно работа с NVRAM.
Я имел в виду дамп Flash - массив чисел в NVRAM.
Я имел в виду дамп Flash - массив чисел в NVRAM.
Может тогда вот это. Там в инициализации NVRAM есть ссылка на подпрограмму. И там есть операция XOR (наверно самая любимая операция автора). :D
Тут возникли следующие вопросы, может я чего упустил.
1. Определенность с командой OUTD и портом #D9BE/#D8BE (запись старшего байта в ATA-IDE) найдена?
2. Дамп NVRAM уже был найден и разобран?
1. ох, тяжко... столько реальщиков и НИКОМУ нет дела. давно бы уже записали в память по любому адресу байты 1,253,128,97,54,24,237,163,201 через POKE, сделали PRINT USR этот адрес, если включается 2-й экран, прав я с AlCo и jtn, если нет - то caro со своим мануалом к Z80
2. нет никакой практической необходимости это делать, потому что при неверной контрольной сумме ProfROM инициализирует NVRAM самостоятельно. нафига подписывать ячейки с точностью до байта, если эта информация можнт плавать от версии к версии NVRAM. вряд ли кто-то возьмётся делать эту нудную и кропотливую работу по описанию всех двух килобайт, когда пользы от неё - ноль.
может сам попробуешь? :)
Я не понял в чем мы не сошлись
в документации опечатка в псевдокоде инструкции:
(С)<-(HL); BC <- B-1;
а надо
B <- B-1; (С)<-(HL);
в документации опечатка в псевдокоде инструкции:
(С)<-(HL); BC <- B-1;
а надо
B <- B-1; (С)<-(HL);Кто не грешен :)
Надеюсь теперь все прояснилось?
Кстати по поводу ошибок в документации.
Мне тут попался интересный документ, который называется "The Undocumented Z80 Documented"
последняя редакция которого (у меня) датируется
20 ноября 2003 года.
Этот труд составлен Sean Young в процессе его работы над эмулятором MSX и содержит выявленные им недокументированные особенности процессора Z80.
Думаю этот текст будет полезен нашим программистам.
Весит чуть меньше 300 кб в PDF.
Да, так в этом документе по поводу команд, о которых мы спорим, написано с точностью до наоборот.
2 Mick
А ты случайно не выяснил, при каких условиях система считает, что СМУК установлен?
У меня собраны порты версии, порт виртуальных дисководов, но Скорп не видит контроллера :(
При включении компьютера происходит какое-то "шебуршание" на портах, но на экране это никак не отображается.
Возможна ли такая ситуевина по причине отсутствия NVRAM?
Orionsoft
18.09.2005, 00:19
А ты случайно не выяснил, при каких условиях система считает, что СМУК установлен?
у меня как-то оторвался провод M1/ который участвовал в дешифрации порта тр-дос и если в это т скорп всавить профпзу то оно находило несуществующий смук ver.5 rev 5.
2 Mick
А ты случайно не выяснил, при каких условиях система считает, что СМУК установлен?
У меня собраны порты версии, порт виртуальных дисководов, но Скорп не видит контроллера :(
При включении компьютера происходит какое-то "шебуршание" на портах, но на экране это никак не отображается.
Возможна ли такая ситуевина по причине отсутствия NVRAM?
В каком то из примеров была процедура "обнаружения SMUC" и его конфигурации. Контроллер считается найденным если прочитался порт версий. Если же нет, выход по флагу CY - т.e. контроллера нет. Только по этому признаку, больше по моему нет.
Вот, собственно, документация на ВН59.
Спасибо, для общего образования не повредит.
И еще в примере 8, там где содержимое(наверное) NVRAM я только указал половину дампа. На самом деле я тут обнаружил еще одну половину(судя по логике программы).
И еще в примере 8, там где содержимое(наверное) NVRAM я только указал половину дампа. На самом деле я тут обнаружил еще одну половину(судя по логике программы).
Когда определишся, просьба внести изменения.
А как насчет вопроса ewgeny7? Явно ПП для определения факта наличия SMUC нужны дополнительные элементы, кроме портов версии. Нет ли в прошивке дополнительных проверок?
Вот опять пример(надеюсь еще не достал своим мусором ;) ). Полный дамп(около 200h) предположительно содержимое NVRAM.
И еще вопрос к ewgeny7: По подробнее опиши, что происходит на экране, особенно после появления надписи *fast test of computer*. Это хоть даст приблизительное место, где искать (профПЗУ большое). И еще посмотри версию профПЗУ. Если она ниже 3.00 то SMUC не потдерживается.
может сам попробуешь?
Нет у меня сейчас реала, уже пару лет как нет:( Есть только рабочие 48-ки, но на них такой фокус не провернешь:(
Убил 3 часа и проверил работу этих команд на реале.
Большое человеческое спасибо! Очень убидительно.
Только не могу понять, почему такое поведение "известное всем и давно", на самом деле оказалось совсем неизвестным многим?
И еще один кусочек, мне совсем не понятно, предположительно модем или порт какой то( 78feh, 79feh,7afeh, 7bfeh).
Понятия не имею:( По младшему байту адреса это ISA-устройство, но какое конкретно надо выяснять. В PC оно должно (если я не ошибся в расчетах) находиться по адресам 3F8h-3FBh. По памяти вроде один из COM'ов. И то это только часть регистров, там их, опять же по памяти, штук 6-8.
Только не могу понять, почему такое поведение "известное всем и давно", на самом деле оказалось совсем неизвестным многим?Потому что эти команды не предполагалось использовать для работы с 16-битным адресом I/O.
Лично я применял их только при работе с 8-разрядным адресом порта.
Здесь их применение действительно оправдано и никак не зависит от того,
перед операцией происходит декремент регистра B или после.
Потому что эти команды не предполагалось использовать для работы с 16-битным адресом I/O.
Кем не предполагалось? Ларченко, если не ошибаюсь, он же МОА, применил эту команду в прошивке ПрофПЗУ. И в тоже время в его книге "ZX-Spectrum для пользователей...", правда написаной несколькими годами ранее, команда OUTD (OUTI) описана неверно (в свете последних данных). Подозрительно это как-то:(
Кем не предполагалось?Я имел ввиду разработчиков Z80 :)
Ларченко, если не ошибаюсь, он же МОА, применил эту команду в прошивке ПрофПЗУ.У меня такое впечатление, что в данном месте ее применение не оправдано и служит только для запутывания тех, кто сейчас пытается разобраться в коде ПрофПЗУ :).
Основное назначение этих команд - работа с табличными данными при операциях ввода/вывода.
Я имел ввиду разработчиков Z80 :)
У меня такое впечатление, что в данном месте ее применение не оправдано и служит только для запутывания тех, кто сейчас пытается разобраться в коде ПрофПЗУ :).
Да запутывать он мастер. Если все путлялки :D выкинуть глядишь профПЗУ и не понадобится ;). Код там сильно избыточен, либо виной всему макроассемблер, либо намеренные действия.
Вопрос к ewgeny7: Что читается из портов версий?
2 all
Заданные мной вопросы уже морально устарели :)
СМУК-2 стоит на самом пороге своего рождения :) , на экране уже присутствуют надписи:
ROM 256k
RAM 256k
SMUC ver.5 rev.7
CMOS not found
NVRAM found
Serial controller not found
Interrupt controller not found
IDE...
По поводу IDE хотелось бы сообщить подробнее уже сегодня, осталось всего один провод, но... я не вижу, куда он идет (IRQ1 c IDE), а Spensor куда-то пропал
По поводу IDE хотелось бы сообщить подробнее уже сегодня, осталось всего один провод, но... я не вижу, куда он идет (IRQ1 c IDE), а Spensor куда-то пропал
Тут я:( IRQ1 в оригинальной схеме заводился параллельно на PIC и Altera. PIC вещь необязательная, а вот как обрабатывается запрос в Altera мне неизвестно:( Пока можно никуда не подключать. Предположительно этот сигнал шел на один из бит порта #FFBA. "Свободные" там биты D7 и D3. Поскольку проверить это я не имею возможности, поэтому либо пока не подключать, либо параллельно завести на выводы 11 и 17 DD10.2. В любом случае, IMHO, оно будет работать - в остальных схемах адаптеров-контроллеров ATA-IDE этот сигнал никуда не заводился.
Когда появиться определенность с этим сигналом схема перейдет из разряда "альфа" в разряд "бета".
Тут я:( IRQ1 в оригинальной схеме заводился параллельно на PIC и Altera. PIC вещь необязательная, а вот как обрабатывается запрос в Altera мне неизвестно:( Пока можно никуда не подключать. Предположительно этот сигнал шел на один из бит порта #FFBA. "Свободные" там биты D7 и D3. Поскольку проверить это я не имею возможности, поэтому либо пока не подключать, либо параллельно завести на выводы 11 и 17 DD10.2. В любом случае, IMHO, оно будет работать - в остальных схемах адаптеров-контроллеров ATA-IDE этот сигнал никуда не заводился.
Когда появиться определенность с этим сигналом схема перейдет из разряда "альфа" в разряд "бета".
В рулении PIC D3 там точно используется, о чем документально было выше подтверждено.
А теперь еще кусок работы с HDD.
В рулении PIC D3 там точно используется, о чем документально было выше подтверждено.
В прошивке PIC обрабатывается, но IMHO, если его не будет на плате, то работать и так должно, разве что немного медленнее. Или я в корне неправ? Ведь работал же SMUC без RTC и PIC? Иначе тогда PIC надо было ставить не в панельку, а запаивать намертво!
В прошивке PIC обрабатывается, но IMHO, если его не будет на плате, то работать и так должно, разве что немного медленнее. Или я в корне неправ? Ведь работал же SMUC без RTC и PIC? Иначе тогда PIC надо было ставить не в панельку, а запаивать намертво!
Кстати нашел подтверждение нелогичности нахождения SMUC. Действительно сначало пытается залесть в NVRAM, а потом в порт версий. И если ответа от первой нет - флаг CY, то и порт версий не опрашивается. Тогда на кой нужна надпись NVRAM not found непонятно - нелогично как то!!! :(
А на счет PIC, я думаю не шибко сильно должен тормозить - я почитал доку на ВН59 - попробую разобраться как она в SMUC работает.
А на счет PIC, я думаю не шибко сильно должен тормозить - я почитал доку на ВН59 - попробую разобраться как она в SMUC работает.
Насчет тормозов это предположение. Может даже наоборот, без него быстрее - не надо будет прерывание обрабатывать, а лишь производить пуллинг устройства.
Небольшое слайдшоу о пресловутом изделии :)
Первое фото - СМУК в "связке" со "Скорпионом"
Второе - что в этот момент происходит на экране
Третье - вид сего устройства сверху
Четвертое - снизу
На данный момент работают порт версий (чтение), порт виртуальных дисководов (чтение и запись), NVRAM (также чтение и запись, ПО находится в ПрофПзу).
To be continued... :)
Полный пример для RTC из профПЗУ.
Вот решил систематизировать примеры Mick'а, за которые ему нижайший поклон, по работе со SMUC. Может кроме меня еще кому-то будет нужно.
primer - процедуры работы с альтернативными регистрами IDE
primer1 - процедуры работы с регистром старшего байта IDE - HI
primer2 - процедуры работы с RTC
primer3 - автодетект SMUC
primer4 - процедуры работы с NVRAM
primer5 - процедуры инициализации PIC
primer6 - пороцедуры инициализации SMUC
primer7 - процедуры инициализации COM
primer8 - процедуры работы с NVRAM2
primer9 - процедуры работы с NVRAM3
primer0a - процедуры инициализации IDE-HDD
primer0b - процедуры инициализации RTC
Часто задают вопрос по раскладке портов SMUC. Вот ответ.
Вот часть профПЗУ - TR-DOS: Там есть много мест, где идет обращение к порту 7FBAh. Похоже MOA чуть поправил TRDOS. Я еще не все разобрал, но кому надо, тот уже может понять как что работает.
Кстати - если вместо пустышек (там наверно 4кб) наберется - запихнуть всю поддержку платы SMUC, то в полне реально - и без профПЗу обходиться. Короче у господ разработчиков TR-DOS и MOA зарплата зависила от размера написанного кода. :D :D
Отловлены кой-какие глюки при работе с Real Commander+HDDMONT.
Хитрость глюков заключается в непроизвольном "демонтировании" виртуальных дисков при переключении дисков в вышеупомянутом коммандере (Во сказал, сам себя аж едва понял :) ). При обычной работе из Васика - все нормально. Подключил сигнал WAIT (когда-то отключенный за ненадобностью), вроде бы все стало нормально.
При перезагрузке "пропадают" примонтированные диски C и D. В документации ничего про это не говорится, но просмотрев распечатки, любезно предоставленные Mick-ом, обнаружил что программа проверяет только 6 и 7 биты порта FDC, поэтому рискну предположить, что это не глюк в железе, а "недокументированное ограничение :) " только на два виртуальных дисковода. А и В после перезагрузки сохраняют свои "дорожки" и претензий к ним нет. Народ, у кого есть SMUC, подтвердите или опровергните мои предположения, что-бы закрыть этот вопрос.
RTC до сих пор молчит. Качнул документацию на К512ВИ1. Появилось сразу два вопроса.
Первое - в даташите значится, что вывод 20 имеет, мягко скажем, несколько другое назначение по сравнению со схемой. В документации он описывается как вход, определяющий... м-м-м... коэффициент деления тактовой частоты для выдачи оной на вывод 21. Про то, что на него подается питание с батареи - даташит молчит, прям как партизан.
Второе - Сравнив диаграммы работы RTC согласно документации и согласно схемы, возникло предположение, что на схеме перепутаны выводы DS и R/W. По крайней мере, при чтении-записи байта они должны быть в противофазе. Завтра попробую проверить.
To be continued...
RTC до сих пор молчит. Качнул документацию на К512ВИ1. Появилось сразу два вопроса.
Первое - в даташите значится, что вывод 20 имеет, мягко скажем, несколько другое назначение по сравнению со схемой. В документации он описывается как вход, определяющий... м-м-м... коэффициент деления тактовой частоты для выдачи оной на вывод 21. Про то, что на него подается питание с батареи - даташит молчит, прям как партизан.
Второе - Сравнив диаграммы работы RTC согласно документации и согласно схемы, возникло предположение, что на схеме перепутаны выводы DS и R/W. По крайней мере, при чтении-записи байта они должны быть в противофазе. Завтра попробую проверить.
У меня тоже возникало предположение по этому поводу - я уже о нем spensor'у говорил. Но он сейчас в отпуске, поэтому ты как первый и единственный естествоиспытатель ;) можешь его подтвердить, или опровергнуть.
Вот такое предположение:
Сигнал R/W - выв 11 DD14.2(вместо DS)
Сигнал DS - выв 9 DD14.2
Помоему так. :)
ПС от CityAceE:
Если речь идёт о вопросе только 2-х виртуальных дисков, то на моём контроллере практически всегда примонтированы одновременно все 4 образа и они рабортают нормально...
Мдя... Проверил порт на ИР15. Молчит, собака. Из Васика запись-чтение не работает, всегда выдает 255. Для ехидных специалистов уточню - сигнал DOS отключен, вместо него "прибита земля". Ходили слухи, что этот порт лучше делать на другом регистре?
Мдя... Проверил порт на ИР15. Молчит, собака. Из Васика запись-чтение не работает, всегда выдает 255. Для ехидных специалистов уточню - сигнал DOS отключен, вместо него "прибита земля". Ходили слухи, что этот порт лучше делать на другом регистре?
Слух связан, если не изменяет память, с недоступностью покупки ИР15. Эта тема где то была выше. Другие причины, кажется, не указывались.
а вот ещё любопытный фрагмент, выключающий ожидание INTRQ/DRQ при сброшенном D2
0000CC01: 01BA7F (1) ld bc,7FBA
0000CC04: ED78 in a,(c)
0000CC06: E604 and 04 ; '♦'
0000CC08: 2812 (2) jr z,0000CC1C
0000CC0A: 017F04 (3) ld bc,047F
0000CC0D: DBFF in a,(FF) ; '*'
0000CC0F: E6C0 and C0 ; '└'
0000CC11: C2D13F (4) jp nz,3FD1
0000CC14: 13 inc de
0000CC15: 7B ld a,e
0000CC16: B2 or d
0000CC17: 20F4 (5) jr nz,0000CC0D
0000CC19: 10F2 (6) djnz 0000CC0D
0000CC1B: C9 ret
0000CC1C: C9 ret
видимо, какие-то задатки на будущее...
Не значит ли сие, что этот порт состоит не только из битов 6 и 7
во-первых, на альтеру идут d3,d6,d7. остальные биты должны читаься в 1. то есть код cp 01, cp 04 jr z/nc никогда не выполнится. с другой стороны, поискал запись в #7FBA - нашёл только либо запись #FF, либо код вида
0001DB23: 01BA7F (1) ld bc,7FBA
0001DB26: CB43 bit 0,e
0001DB28: FD56DA ld d,(iy-26)
0001DB2B: 280A (2) jr z,0001DB37
0001DB2D: CBF2 set 6,d
0001DB2F: CB6E bit 5,(hl)
0001DB31: 280C (3) jr z,0001DB3F
0001DB33: CBB2 res 6,d
0001DB35: 1808 (4) jr 0001DB3F
0001DB37: CBFA set 7,d
0001DB39: CB6E bit 5,(hl)
0001DB3B: 2802 (5) jr z,0001DB3F
0001DB3D: CBBA res 7,d
0001DB3F: FD72DA ld (iy-26),d
0001DB42: ED51 out (c),d
0001DB44: C9 ret- на вывод осмыслены (меняются) лишь биты 6,7. другие биты пзу не пытается изменить (если только логика другая - D6,D7 - регистр, а D3 - порт на чтение ;))
Вот и закончился мой отпуск:( За это время с моим проектом произошли кое-какие изменения. Есть и приятные, и не совсем. Из неприятных, это три ошибки в схеме SMUC0.0a! И если две из них относятся к категории "очепятка", то третья серьезная ошибка.
Итак bugreport:
1. В перечне перепутаны наименования микросхем D13 и D14, должно быть так:
D13 К1533ИД7
D14 К1533ИД14
(ранее, в трейде, ошибка уже была упомянута);
2. Сигналы DS и R/W формируемые DD14.2 действительно перепутаны:( Должно быть так:
выв. 11 DD14.2 - R/W;
выв. 10 DD14.2 - DS;
Предполагаю, что на этапе черчения, "на ходу", поменял сигналы на выводах 13 и 14 DD14.2, а вот подкорректировать сигналы на выходе дешифратора забыл:(
3. Грубая ошибка - при чтения порта #DFBA (RTC) на шину данных одновременно выдают данные и DD3 (RTC) и DD2 (буфер данных) :(
Лечится подачей на вывод 12 DD16.4 проинвертированного сигнала RTC вместо /CSM. Либо подключением шины данных RTС не непосредственно к шине данных Z80, а через буфер DD2 (вместо D0-D7 на RTС заводятся сигналы DB0-DB7).
А СМУК-2 меж тем перешел из стадии альфы в бету...
Ну для начала SMUCv0.0a пока только в состоянии перехода в альфу второй версии (SMUCv0.0a2) - RTС пока не тикают:( Бетой он станет только после запуска оных. А вот из стадии 0.0 SMUC выйдет, когда все "белые пятна" с расбитовкой портов будут закрашены, в частности следует понять почему "пропадают" примонтированные диски C и D. Возникло предподожение - возможно диски C и D отображаются через порт #7FBA, но с установленным битом D7 порта #FFBA. Просьба к умеющим "производить вскрытие" ПрофПЗУ, в частности Mick, проверить это продположение.
P.S. Дабы не было безсмысленных дискуссий о ИР15, скажу, что в ПС по ошибке, было сказано, что сложно достать ИР13. Поскольку такой в схеме вообще нет, я предположил, что речь шла о ИР15, а оказалось, что затруднения с ИР23:) Последнюю (ИР23) запросто можно заменять на ИР37 - функционально они аналогичны, а различаются только разводкой выводов.
Возникло предподожение - возможно диски C и D отображаются через порт #7FBA, но с установленным битом D7 порта #FFBA. Просьба к умеющим "производить вскрытие" ПрофПЗУ, в частности Mick, проверить это продположение.
Раз вернулся вот тебе кусочек из 7 окна профПЗУ. Там похоже какие то функции относящиеся к дисководу и упоминается также 7fbah.
Упоминание о 7fbah были в стрнице TRDOS, которую я кидал недавно или давно я уже не помню.
Ранее был задан вопрос, и хотя автору я уже ответил на него, для остальной части повторюсь (может еще кому-то интересно).
RTC до сих пор молчит. Качнул документацию на К512ВИ1. Появилось сразу два вопроса.
Первое - в даташите значится, что вывод 20 имеет, мягко скажем, несколько другое назначение по сравнению со схемой. В документации он описывается как вход, определяющий... м-м-м... коэффициент деления тактовой частоты для выдачи оной на вывод 21. Про то, что на него подается питание с батареи - даташит молчит, прям как партизан.
По поводу назначения выводов вопрос довольно скользкий. Проблема в том, что MC146818 и ее клоны (КР512ВИ1, BQ3287, DS1285, DS12885, DS1287, DS12887, DS1685, DS1687…) на вопрос применения выводов 16, 20, 21 имеют свое, далеко нескромное, IMHO:( И в частности выводы 20 и 16 гораздо чаще используются как Vbat и GND батарейки, соответственно. Вывод 21, опять же, чаще используется как вход RAM CLEAR, для обнуления ячеек памяти. При разработке схемы пришлось идти на компромисс и делать более-менее универсально. По идее “спарка” CKFS (20) и CKOUT (21) является автономным узлом (делителем частоты) микросхемы и такое включение на работу часов влиять не должно.
Попробую "отловить" времянку этих сигналов.
На всякий случай разовью свою мысль. В общем то надо понять возникают ли сигналы DS и R/W одновременно, или поочередно в при операции чтения порта IN #DFBA. Тоесть отлавливаем с помощью элемента "ИЛИ".
У меня их три штуки, вствляются в панельку, при каждом эксперименте я их меняю
Ясно. Чистота эксперемента соблюдена.
Получается, Spensor очень даже вовремя "накаркал" про альфу и бету... :)
64 bytes CMOS found
NVRAM found
Interrupt controller not found
IDE Hard Disc found at 270Mb
Если мне скромность не изменяет, то SMUC-2 в принципе уже состоялся, так как пользоваться им можно уже в полном объеме. Почти в полном. Остались только некоторые "неудобства" с дисками C и D...
Итак, в изменения схемы в плане часов:
1. инвертор с /RTC на 12 ногу DD16.4
2. уже известная история с "перекидыванием" сигналов /DS и /R\W
3. конденсатор С3 - 10н. Он выполняет функцию сохранения памяти (или что-то около этого) при сбросе часов по /RES. Заметил нестабильность при инициализации часов при быстром включении-выключении компьютера. С новым конденсатором вроде все нормально, часы не сбрасываются.
4. и самое главное. батарейка должна быть не менее 4.5 вольт. При меньшем напряжении достаточно отключить компьютер секунд на 10 и получаем опять "CMOS checksum error".
Сейчас выключал комп на 15 минут, включил - часики тикают как миленькие, только кукушки не хватает!
Сейчас выключал комп на 15 минут, включил - часики тикают как миленькие, только кукушки не хватает!
Не совсем понятно - проблема исчезла? Тоесть неприятности были в батарейке?
И в батарейке тоже (в первую очередь). Получается, что если часы были "пустые" после пропадания напряжения, то всегда получим "CMOS checked error". Поэтому при низком напряжении батареи такая надпись появлялась всегда. Кстати, проверил DS - тоже "раздвоение личности" у этого сигнала осталось. Но, получается, это не так уж и критично.
Пару раз часы все-таки клинило. В первый раз я заметил что они просто стоят (кварц хреновый?), при этом в мониторе нет строчки внизу экрана о текущем времени. Тыкнув в кварц отверткой, часы снова пошли. Второй раз случился, когда я возился паяльником на ИР15. Наводка, чтоли?
Сейчас разбирался с FDC.
Подключены биты 7.6.5.3 (как на схеме).
В мониторе "отключаем" все виртуальные диски. IN 32698 (FDC) = 255.
Подключаем диск А. Читаем - 127. Вроде, логично...
Подключаем диск В. Читаем - 63. Понятно...
Подключаем диск С. Читаем - 63. Приехали...
Подключаем диск D. Читаем - 63. Занавес.
Отключаем все диски. Читаем порт - 255. Пишем в порт из Васика 127. Читаем - 127. Лезем в монитор - все диски отключены. Пробуем просмотреть каталог диска А (помним, что в порту - 127) - висим, диска нет. Сброс. Читаем порт - 255.
Судя по логике работы, монитор использует порт для быстрой проверки, подключены ли диски, и если подключены то уже считывает "путь" с самого винчестера (или спец. области памяти). Но каким же образом он "запоминает диски C и D? Пока непонятно.
Подключены биты 7.6.5.3 (как на схеме).
В мониторе "отключаем" все виртуальные диски. IN 32698 (FDC) = 255.
Подключаем диск А. Читаем - 127. Вроде, логично...
Подключаем диск В. Читаем - 63. Понятно...
Подключаем диск С. Читаем - 63. Приехали...
Подключаем диск D. Читаем - 63. Занавес.
Не совсем понятно - диски по одному подключаются или по принципу A+B+C+D?
Но каким же образом он "запоминает диски C и D? Пока непонятно.
Есть такое же предположение. А "запоминание" дисков C и D ясное дело происходит в NVRAM. Не совсем понятно в этом случае только дублирование информации в NVRAM и #7FBA. Есть ли ощутимый выиграш при работе с A/B в сравнении с С/D? Также непонятно почему же "отваливаются" C и D если информация в NVRAM.
А может состояние подключение дисков еще и в RTC хранится? Люди имеющие реальный SMUC, не в службу, а в дружбу, вынте RTC из панельки и проверьте как это отразиться на дисках С и D!
Не совсем понятно - диски по одному подключаются или по принципу A+B+C+D?
Диски подключаются по схеме "плюс". Но закономерность видна. Диск А - бит 7, диск В - бит 6... а вот далее эта закономерность теряется. При подключении С должен сброситься бит 5, но этого не происходит. Я готов был поверить, что так и должно было быть, но согласно письму City Ace SMUC хранит настройки всех четырех дисков. В то же время, для ПП сейчас доступны и NVRAM и CMOS, тоесть в этом плане отличий от оригинального SMUC никаких нет. Скорее всего, это вопрос "железный". Может стоит заменить ИР15 на ИР23? Хотя, навряд ли... :(
Насчет бита D5 можно не выдумывать он в оригинальной схеме на Altera не заводится, а вот назначение D3 пока не ясно, как и не ясно задействован ли он вообще в порту #7FBA. Стоит провести эксперимент с подключением дисков по "или", хотя думаю ничего нового мы не увидим, но всеже.
Есть предположение, что есть switch организовывающий теневой регистр #7FBA (для дисков C/D), как это происходит с портом #DFBA (переключение битом D7 #FFBA). Но, пока надо анализировать последний пример Mick'а.
Проверил только диск В. Как и ожидалось, из порта читается 191.
Насколько я понимаю, возможно придется навесить еще одну ИР15 с выборкой от /FD + Bit7 TM9?
Есть предположение, что есть switch организовывающий теневой регистр #7FBA (для дисков C/D), как это происходит с портом #DFBA (переключение битом D7 #FFBA). Но, пока надо анализировать последний пример Mick'а.
Кстати очень часто этот порт дергается в TRDOS, пример где то выше.Там кстати проверяются bit6 и bit7 после чтения из порта. Здесь же похоже перекочевала часть функций TRDOSа ну и плюс нововведения.
Пришла в голову грустная мысль. Поскольку порт FDC сейчас выбирается при любом состоянии бита 7, то введение еще одного порта ничего не изменит. Если бы при установленном "диске А" сразу же выбирался бы и "диск С", тогда идея с "теневым" FDC имела бы право на жизнь. но этого не происходит... :o
Кста, по поводу хранения информации о подключенных дисках. При "выставлении" дисков, равно как и при их "демонтаже" происходит обмен непосредственно с винчестером (винт жужжит долю секунды). На запись в NVRAM нет никаких признаков, т.к. эта процедура занимает пару секунд и эта задержка была бы заметна. Даже если специально сохранить дамп настроек в NVRAM, а затем по быстрому переназначить "дорожки" и выключить Скорп, при запуске он восстановит только последние подключения. И прямое чтение из NVRAM эти подключения не изменит.
По поводу сохранения в RTC - ботва другая, но такая же :)
Микросхема часов - весчь опциональная, и в инструкции никаких изменений в работе с дисками не указано. Тем более, что по умолчанию эта МС даже не ставилась.
Почему-то вспомнился до сих пор не изученный DB3. Может он и есть тот "ключ" (или "переключатель")... Жалко, схемы оригинального СМУКа под рукой нет :(
Насколько я понимаю, возможно придется навесить еще одну ИР15 с выборкой от /FD + Bit7 TM9?
Если реально используется вышепредположенный принцип, то либо так, либо ИР26/ИР32 (1шт на два порта).
Пришла в голову грустная мысль. Поскольку порт FDC сейчас выбирается при любом состоянии бита 7, то введение еще одного порта ничего не изменит. Если бы при установленном "диске А" сразу же выбирался бы и "диск С", тогда идея с "теневым" FDC имела бы право на жизнь. но этого не происходит...
Трудно сказать, в приведенном ниже примере (взято из primer0c.rar), видно нечто похожее на вариант предложенный мной:
LAB_0CFF: ld bc,0ffbah ; выставляем в порте SYS D7=1
0d02 3ef7 ld a,0f7h
0d04 32f0df ld (0dff0h),a
0d07 ed79 out (c),a
0d09 01ba7f ld bc,7fbah ; обращаемся к порту FDC
0d0c 3eff ld a,0ffh
0d0e 32eedf ld (0dfeeh),a
0d11 ed79 out (c),a
Вот и пойди-разберись что это значит.
Микросхема часов - весчь опциональная, и в инструкции никаких изменений в работе с дисками не указано. Тем более, что по умолчанию эта МС даже не ставилась.
Это правда, но в жизни бывает много сюрпризов:)
Почему-то вспомнился до сих пор не изученный DB3. Может он и есть тот "ключ" (или "переключатель")...
Всякое может быть. Попробуй "поиграть" с ним, может что-то прояснится.
Жалко, схемы оригинального СМУКа под рукой нет
IMHO, не поможет, но если уж так надо, то смотрите в прототеме этой темы "Порты SMUC".
Вот ссылка на тему:http://zx.pk.ru/showthread.php?t=456&highlight=SMUC
Пересмотрел тему "Порты SMUC":( Похоже там схем уже давно нет:( Ладно, думаю не будет нарушением правил если я перезалью схему еще раз уже в эту тему.
Сейчас разбирался с FDC.
Подключены биты 7.6.5.3 (как на схеме).
В мониторе "отключаем" все виртуальные диски. IN 32698 (FDC) = 255.
Подключаем диск А. Читаем - 127. Вроде, логично...
Подключаем диск В. Читаем - 63. Понятно...
Подключаем диск С. Читаем - 63. Приехали...
Подключаем диск D. Читаем - 63. Занавес.
Отключаем все диски. Читаем порт - 255. Пишем в порт из Васика 127. Читаем - 127. Лезем в монитор - все диски отключены. Пробуем просмотреть каталог диска А (помним, что в порту - 127) - висим, диска нет. Сброс. Читаем порт - 255.
Судя по логике работы, монитор использует порт для быстрой проверки, подключены ли диски, и если подключены то уже считывает "путь" с самого винчестера (или спец. области памяти). Но каким же образом он "запоминает диски C и D? Пока непонятно.
Все подключения хранятся на винчестере в секторе 3 и в памяти в 8 странице.
Порт 7FBA используется в тр-досе для быстрого определения, что подключено -
реальный дисковод и образ на винчестере. А дисководов у Скорпиона только 2.
Люди, может кто нибудь проверить, а как обстоят дела с C/D в Unreal Spectrum? Эмулятор совпадает с этой схемой практически полностью, вот и хотелось бы понять есть ли там данная проблема.
Обращение к дисководам C/D через 3D13 всегда идет на винчестер. Проверка реальный диск или образ идет только на драйвах A и B (7,6 биты порта 7FBA).
Обращение к дисководам C/D через 3D13 всегда идет на винчестер. Проверка реальный диск или образ идет только на драйвах A и B (7,6 биты порта 7FBA).
На самом деле если смотреть переделанные исходники TRDOSа перед обращением к порту он сначала берет номер дисковода для временных операций(текущего). затем уходит в теневой сервис монитор по rst 08h(закамуфлированный вызов по адресу 0826 - в моем примере LAB_0826) с функцией 81h.
Кстати говоря подсказка. В последенем примере есть таблица адресов функций. Так вот функция 22h - IdHdd - идентификация жесткого диска, 23h - монтирование подразделов диска.
Обращение к дисководам C/D через 3D13 всегда идет на винчестер
Откуда у Вас такая информация? Монтируются все ЧЕТЫРЕ диска A,B,C,D.
Другое дело, что диски C и D запоминаются только на текущую сессию, т.е. после выключения-включения питания восстанавливаются только диски А и В.
Все это я проверяю сам, на реальном Скорпи, на ПрофПЗУ и тестовом СМУК.
А обращение к три дэ тринадцать инициирует обращение к внутренним п/п ПрофПЗУ, которые уже сами смотрят, реальный ли это диск или виртуальный. Нужно учитывать, что тыр-дос в Скорпи и в ... скажем так, оригинальном Спекки - отличаются, в основном за счет выноса части процедур и доп. доработок в теневой монитор.
Откуда у Вас такая информация? Монтируются все ЧЕТЫРЕ диска A,B,C,D.
Другое дело, что диски C и D запоминаются только на текущую сессию, т.е. после выключения-включения питания восстанавливаются только диски А и В.
Должны запоминаться все 4 диска. Так было в смуке 1.2, 1.3. Unreal 0.32 с Проф-ПЗУ 4.01 также запоминает все диски.
А обращение к три дэ тринадцать инициирует обращение к внутренним п/п ПрофПЗУ, которые уже сами смотрят, реальный ли это диск или виртуальный. Нужно учитывать, что тыр-дос в Скорпи и в ... скажем так, оригинальном Спекки - отличаются, в основном за счет выноса части процедур и доп. доработок в теневой монитор.
Не совсем так. вот кусок дизассемблера:
LAB_0A01: ld a,(5cf6h)
0a04 c5 push bc
0a05 01ba7f ld bc,7fbah
0a08 ed48 in c,(c)
0a0a fe01 cp 01h
0a0c 2808 jr z,LAB_0A16
0a0e 300a jr nc,LAB_0A1A
0a10 cb79 bit 7,c
0a12 2019 jr nz,LAB_0A2D
0a14 1808 jr LAB_0A1E
LAB_0A16: bit 6,c
0a18 2013 jr nz,LAB_0A2D
LAB_0A1A: cp 04h
0a1c 300f jr nc,LAB_0A2D
LAB_0A1E: pop bc
0a1f 51 ld d,c
0a20 c5 push bc
0a21 0e02 ld c,02h
0a23 cd2608 call LAB_0826 ; RST 8
0a26 81 db #81
0a27 c1 pop bc
0a28 dae73e jp c,LAB_3EE7
0a2b e1 pop hl
0a2c c9 ret
LAB_0A2D: pop bc
0a2e c3eb1f jp LAB_1FEB
Это из функций 5/6 3D13. Берется текущий диск, читается 7FBA, если диск А - проверяется бит 7, если диск B - проверяется бит 6. Если они установлены - переход на процедуры работы с ВГ93, если сброшены - RST8: DB #81. Для дисков С и D сразу идет переход на RST8.
Если в Unreale включить Проф-ПЗУ и СМУК, то 3D13 никогда не обращается к реальным диководам C и D.
Должны запоминаться все 4 диска.
Млин... Как раз над этим мы сейчас и бьемся... :(
По поводу остального - каюсь, информация была из весьма разносторонних источников. Достоверность сертификатом Майкрософт, разумеется, не подтверждена. :)
Но идреный батон, каким же образом происходит восстановление информации о "путях" подключения 3 и 4-го дисков при старте компа "с нуля"?
Сможешь ли ты подтвердить или опровергнуть наши предположения о том, что C и D прописаны в "альтернативном" #7fba, задействуемом при: вер.1: Бит 7 системного порта СМУК, вер.2: Каким-то образом управляет этой "раскладкой" бит 3, который технически заведен на Альтеру, но его функциональное назначение до сих пор не известно :(
Для добывания правды-матки выход только один - копание ПрофПЗУ. Или вариант номер два - ловля сигнала на Бит3 на реальном СМУКе. Но помочь нам никто не торопится...
CityAceE
12.11.2005, 03:46
Может быть это письмо хоть чем-то поможет?
─ REAL.SPECCY (2:5045/78.4) ───────────────────────────────────── REAL.SPECCY ─
Сооб : 969 из 1000 -947 +976 Rcv
От : Ilya Vinogradov 2:5054/37.26 27 Июл 01 23:53:52
Кому : Stanislav Udin 28 Июл 01 20:46:18
Тема : SMUC
────────────────────────────────────────────────── ─────────────────────────────
Вижу тебя как наяву, Stanislav!
ЧТ, 26 Июля 2001, 21:56:42, Stanislav Udin -> Vlad Sotnikov
subj: SMUC
VS>> Может, плохо копал?
SU> Искал по началy таблицы пеpвые 6 байт, соответствия не
SU> нашел. ПЗУ веpсии 4.01, именно ПЗУ-шка с моего Скоpпиона
SU> входит в комплект эмyля Z80stealth (я в свое вpемя Киpиллy
SU> Колпаковy высылал ROM-файл), так что обpаз полностью
SU> pабочий. И тем не менее я не нашел нyжной
SU> последовательности...
Если таблицы нет, можно предположить что CRC рассчитывается без нее, если
так, то для того чтобы найти эту процедуру (и расколоть алгоритм) можно сделать
следующее:
В 8-ой странице найти место где лежит mount-сектор (вероятно, там лежат
первые 22*4=88 байт) и поискать обращение к этому адресу из ПЗУ.
SU> А вот оффтопик меня меньше всего волнyет. Я пытаюсь
SU> написать пpогpаммy дпpежде всего для своего pеального
SU> Скоpпа и для pеальных обладателей SMUC'а.
Это хорошо ;) Hа эмуле и так все быстро, и подключать там все это никчему
;)
VS>> Самый yнивеpсальный способ - меняй сектоp чеpез
VS>> поpты, как я в ньюске описал.
SU> Согласен.
Можно преспокойно менять этот сектор и не через порты, а через стандарный
рестарт ld c=36/37:rst 8:db #81, просто предварительно нужно подключить
"произвольный раздел" по дескриптору:
ld a,номер_дисковода (0..3)
or #20 ;(%00100000)подключение по дескриптору (DE)
ld de,desc1
ld c,35:rst 8:db #81
ret
desc1 db #01 ;тип раздела db #00,#00,#00,#00 ;начальный сектор
фиктивного раздела
db #04,#00,#01,#00 ;конечный сектор фиктивного раздела
db "Name01" ;тут фиктивные имена...
db "Name02 ; -//-
ds #04 ;четыре пустых байта
;итого 25 байт
Подключая таким способом "фиктивные" разделы я, помнится, обшарил весь
винт, и самостоятельно открыл для себя сектор автонастроек ;)
SU>>> Как мне pешить этy пpоблемy? Ждy советов.
VS>> Вот так и pешай. :)
SU> Я понимаю что едиснственно веpный способ все-таки вpyчнyю
SU> менять сектоp на винте, но вот pассчет сyммы не годится...
SU> А может наши гении кода все-таки смогyт пеpеписать
SU> подпpогpаммy без таблицы? В конце-концов хочется веpить, не
SU> мне одномy этот коммандp (TRDN) нyжен.
Imho, лучше отобрать 2к у буфера для копирования, но доделать коммандер
используя табличный подсчет CRC (сама процедура может вообще в страничке
где-нить сидеть, ее же не очень часто вызывать надо будет).
SU> Stanislav
SU> -+- ZX-Spectrum
SU> + Origin: Speccy rulez forever!!! (2:5045/78.4)
Stanislav, не скучай! WbW, .i┌i└/4D.
--- └a┌a (┌o╒╘ 4.50 -=- [I.ZX] [GoA] [А у моего Speccy 2-х гиговый винт!] -=-
* Origin: Everyone in the world is doing something without me...
(2:5054/37.26)
Вот возникло предположение на счет 7fbah. Используемые биты 6 и 7 означают только лишь то, что дисководы А и В
могут быть физическими(установлен бит), либо логическими (сброшен бит).Диски C и D считаются всегда логическими. Посему этот регистр похоже функционирует как надо(его задача сохранить два бита).
Причина не сохранения информации о монтруемости дисков, думается мне, кроется в энергонезависимой памяти. Из которой после старта пзу не может
прочитать о конфигурации текущего диска и соответсвтенно принимается по умолчанию физический привод А (ну как в обычном Speccy).
А памяти на SMUCе две CMOS и NVRAM.
Ну вот, чагото срисовал!
На экране видно неважно, поэтому возможны ошибки (типа 8=В).
Итак, начало третьего сектора:
01 20 00 00 00 01 01 05
00 00 53 79 73 74 65 6D
44 69 73 6B 30 31 01 61
FF 00 00 01 01 05 00 00
47 61 6D 65 73 20 44 69
73 6B 30 31 01 2D 05 00
00 01 01 05 00 00 53 79
73 74 65 6D 44 69 73 6B
30 32 01 62 04 01 00 01
01 05 00 00 47 61 6D 65
73 20 44 69 73 6B 30 32
21 00 DB EB 11 07 00 C3
На днях я сравнивал TR DOS моего ZX-777 и профПЗУ и обнаружил, что процедуры не выносились из TR-DOSа а наооборот добавились: обработка 7fbah, шрифт, изменена обработка rst 8 и rst 66. Так что места там остается еще много. Посему вопрос есть таблица функций по 3d13h - так вот там есть функции, которые неиспользуются. Используются они вообще где нибудь? Версия TR-DOS 5.03
есть таблица функций по 3d13h - так вот там есть функции, которые неиспользуются. Используются они вообще где нибудь?
Если речь идет о функциях номера которых передаются в регистре C, то есть несколько функций, которые действительно являются "пустышками". Можно предположить, что они были задействованы в TR-DOS версиях v1.00-v5.00. Но найти ROM-файл таковых не удается, а думаю было бы интересно многим.
Если речь идет о функциях номера которых передаются в регистре C, то есть несколько функций, которые действительно являются "пустышками". Можно предположить, что они были задействованы в TR-DOS версиях v1.00-v5.00. Но найти ROM-файл таковых не удается, а думаю было бы интересно многим.
Кстати, а использовалась ли TR-DOS в Delta Disk Interface? И если да - то какая версия? Ведь эта версия отличалась от BDI наличием 128К памяти (согласно ZX-Ревю). Может эти функции там использовались?
Выражаю благодарность следующим людям за помощь в создании схемы “ПрофПЗУ на дискретах”:
SMT – неоценимая помощь в понимании алгоритмов функционирования оригинальной схемы ПрофПЗУ (арбитра страниц ПрофПЗУ) фирмы Scorpion;
Orionsoft и Ewgeny7 – предоставление документации (схем, фотографий) на два варианта плат ПрофПЗУ.
PS: Ewgeny7 за сборку и отладку схемы на живом Scorpion!
P.S. Раз СМУК уже собран и работает, купил сегодня микрухи для ПрофПЗУ "на дискретах". Не мешало бы опровать и этот супердевайс, точнее, сравнить его с "оригинальным" Профом :)
P.S. Раз СМУК уже собран и работает, купил сегодня микрухи для ПрофПЗУ "на дискретах". Не мешало бы опровать и этот супердевайс, точнее, сравнить его с "оригинальным" Профом :)
Тоесть, если я тебя правильно понял, это предложение стать бета-тестером и ПрофПЗУ? Очень нужно! Родина тебя не забудет!
На протяжении нескольких месяцев переписываюсь с Trident. Он помог открыть многие секреты SMUC и подтвердить предположения уже реализованные в схеме. К сожелению, он не зарегистрирован на форуме. Поэтому информацию, которая может быть интересна не только мне я просто процитирую.
Spensor: А кому оно (SMUC) надо? Желающих это иметь 1,5 человека, не считая меня...
Trident: Всем надо. Оно никому не надо пока его нет, по крайней мере, пока нет доступной схемы в плане повторения (не на экзотике как оригинал). Нет распространенной железки - нет много софта под неё. Нет много софта под неё - нет особой надобности. Надеюсь, цепочка понятна?
Trident: И потом, почему все воспринимают SMUC как очередной IDE контроллер?! И без конца сравнивают с NEMO IDE?! NEMO IDE это всего-навсего банальный 16-ти разрядный порт для связи с внутренним контроллером HDD и все! SMUC же представляет собой намного более мощное устройство... У меня складывается впечатление, что большинство людей вообще весьма смутно представляют предмет разговора и соответственно ценность данной разработки оценить не в состоянии, отсюда и такая вялая заинтересованность...
Spensor: В сущности такое сравнение недалеко от истины, по той причине, что в настоящее время основное применение SMUC состоит именно в работе с IDE-устройствами. Подсистема работы с виртуальными дисководами не востребована,
Trident: Востребована, просто она реализована через одно место…Неудобно.
Spensor: по той причине, что работа идет только через #3D13 (#3D2F не обрабатывается),
Trident: По идее, оно и должно так быть. Чтобы поддержать #3D2F придется эмулировать ВГ93, а это уже слишком... К тому же Максогор сказал, что на практике оказалось невозможным сымитировать ВГ при работе с винчестера. Поэтому в ATMке это делается с RAM-диска, который практически всю память и занимает.
Spensor: да и собственная файловая система несет некоторые проблемы - на PC TRD-образы на такой HDD не насыплешь.
Trident: Ну о файловой системе разговор особый…
Spensor: Есть такой вопрос - а ты когда-нибудь видел SMUC, который бы показывал версию 1.2?
Trident: Нет.
Spensor: Используется ли бит D3 порта #7FBA? Надо прочесть состояние бита, записав в этот же порт число с обнуленным битом D3.
Trident:
#7FBA:
7 - 0 = HDD вместо дисковода B: / 1 = реальный дисковод B:
6 - 0 = HDD вместо дисковода A: / 1 = реальный дисковод A:
5 - всегда 1
4 - всегда 1
3 - 0 = нет HDD / 1 = HDD присутствует
2 - всегда 1
1 - всегда 1
0 - всегда 1
Все задействованные биты нужны непосредственно для эмуляции дисководов А: и B: (на скорпе их всего два). Причем ПП не отслеживает их состояние. И если, например, вручную отключить HDD - out (#7FBA),#x7, то теневик так и будет показывать настройки HDD, а вот TR-DOS будет обращаться к реальным дисководам. По всей видимости, состояние этого бита изменяется только один раз, сразу после RESET при поиске HDD.
То есть, я именно так и делал, включал машину, винчестер определялся, из #7FBA читалось #xF, заносил руками число #x7 в #7FBA, и TR-DOS начинал работать с реальными дисководами, даже, несмотря на то, что в ПП были подключены виртуальные диски c которыми TR-DOS только что работал. Примечательно, что ПП даже не рухнулся из-за того, что бит изменился! Меню HDD так и осталось активным, хотя должно было стать заблокированным. По-моему, вот отсюда и баги с дисководами, TR-DOS ориентируется на порт, а ПП на какие-то свои настройки.
Spensor: Есть ли в реальном SMUC подтверждение того, что полукомплекты регистров ATA-IDE переключаются битом D7 порта записи #FFBA? Надо в этот порт послать число с установленным битом D7 и проверить уровни сигналов на CS0 и CS1 (выводы 37 и 38 разъема IDE соответственно).
Trident: Провел тут ряд экспериментов, как с реалом, так и с эмулем, выяснилось следующее - бит 7 системного регистра SMUC имеет двойное назначение:
1. он управляет сигналом RD/WR микросхемы CMOS;
2. он действительно переключает регистры HDD!
Но! B ПП есть процедура работы с HDD (ROMDSK03:#1E74). Она выставляет в 1 бит 7 порта #FFBA, после чего производит запись #00 в регистр DeviceControl HDD (порт SMUC - #FEBE) и восстанавливает 0 в бите 7 #FFBA. Так вот, исходя из документации, альтернативных регистра у HDD всего два - AlternateStatus и DeviceControl. Первый доступен только на чтение, а второй только на запись, по одному и тому же адресу для SMUC это получается порт #FEBE.
Провел следующий эксперимент, для краткости пишу инструкциями Асма:
OUT (#FFBA),#7F ; включаю основной набор (бит 7 = 0)
OUT (#FEBE),#FF ; записываю произвольное число, сейчас это должен быть регистр
номера головки HDD
IN (#FEBE) ; читается #FF - все правильно
OUT (#FFBA),#FF ; переключаю на альтернативный набор (бит 7 = 1)
IN (#FEBE) ; читается #FF - значит, это тот же самый регистр номера головки, a должен был быть AlternateStatus, и считаться должен был #00
OUT (#FFBA),#FF ; включаю альтернативный набор (бит 7 = 1)
OUT (#FEBE),#55 ; записываю произвольное число, сейчас это должен быть регистр DeviceControl
IN (#FEBE) ; читается #FF - записи в регистр головки не произошло, значит, всё верно
OUT (#FFBA),#FF ; переключаю на альтернативный набор (бит 7 = 1)
IN (#FEBE) ; читается #FF - тот же самый регистр номера головки.
Отсюда вывод - бит 7 порта #FFBA переключает только на запись в альтернативные регистры HDD, на чтение регистров HDD он никак не влияет, читаются всегда основные.
В общем-то, ничего удивительного - можно легко обойтись и без AlternateStatus.
Spensor: Используются ли биты D3 и D7 порта чтения #FFBA? Если да, то за что они отвечают? Надо почитать этот порт, заземлив вывод IRQ разъема IDE (вывод 31), не подключая HDD.
Trident: Насчет чтения бита 7 порта #FFBA:
Разобрал машину, прицепил провод к GND и прощупал им весь разъем HDD. Результат несколько странноватый…
Первое число - номер прощупываемого контакта разъема HDD (в скобках - назначение контакта разъема), второе – значение, читающееся в это время из #FFBA. Заранее кинул в порт число #FF оно оттуда и читается, если ничего не щупать.
3 - #7F (D7)
5 - #BF (D6)
7 - #DF (D5)
9 - #EF (D4)
11 - #F7 (D3)
13 - #FB (D2)
15 - #FE (D1)
17 - #FE (D0)
31 - #7F (IRQ14)
все остальные - #FF
В общем IRQ14 действительно читается через порт #FFBA, это бит 7!
А вот почему стали отзываться D0-D7 HDD для меня загадка - получается, что D7 и IRQ14 перекрывают друг друга. Как оно тогда работает?..
Схема обновлена до v0.0beta. В файле имеется описание портов устройства. Смотреть тут: http://zx.pk.ru/showpost.php?p=23900&postcount=1
Может быть, это комуто покажется интересным: поэкпериментировав с сигналом /DOS, я в конце концов оставил его неподключенным. Теперь время в микросхеме RTC неплохо читается даже из Бейсика :)
В теории конечно возможны конфликты с некоторыми программами, но пока мне такие не попадались.
Кой какие свежести про СМУК бета.
Потестировал работу СМУКА в двух режимах - с включенным LBA и без него.
В режиме LBA имеют место присутствовать все давно перечисленные глюки ("залипание" дисков попарно при Mount/Dismount, невозможность примонтировать диск если до этого небыл подключен хоть один диск и т.д.).
При отключенном LBA все работает чисто, глюки уходят "курить за дверь".
Уже в который раз возникает предположение о глючности прошивки ПП.
Имею на борту 4.1.
Может кто-нить проверить вышеописанную информацию?
Может кто-нить проверить вышеописанную информацию?
Неужели нет тех кто смог бы помочь ewgeny7 (и мне тоже)?! Сочувствующие проекту, проверте пожалуйста предположение ewgeny7! Это нужно для доведения девайса до завершенного состояния - уже почти год SMUC v0.0 в состоянии beta... Познаний в программинге тут не требуется, все проверяется на пользовательском уровне средствами ПрофПЗУ.
Вчера состоялся торжественный запуск ПрофПЗУ по схеме Влада Семченко (Spensor).
http://www.zx.pk.ru/showpost.php?p=32108&postcount=206
Полет нормальный, глюков не замечено :)
Таким образом, схема проскочила стадию "беты" сразу до готового к употреблению продукта.
Желающие могут повторить эту несложную в исполнении схему.
deathsoft
17.09.2006, 11:16
Анализ двух схем оригинальных (фирменных) плат ПрофПЗУ заставил предположить, что существует/предполагался механизм работы с 32-мя страницами – в обеих схемах вывод 31 (для 27C040 это А18) заведен/может заводится на ПЛИС и через балластный резистор подключен к +5В. Верна ли догадка неизвестно.
В одном из руководств фирмы "скорпион" (не помню на какое изделие, вроде на профПЗУ), было написано, что для микросхем 27040 выбор половинок микросхем осуществляется выключателем (который подавал на старший адрес либо 0, либо 1), поэтому если посмотреть прошивку ПЗУ, то видно что страницы с бейсиком trdos и монитором присутствуют в обоих половинках. Отличие половинок ПЗУ заключалось только в программах прошитых в ROMдиск.
В каком сейчас состоянии положения дел со SMUC,удалось ли решить
вопросы с монтированием?можно ли уже разводить плату,собирать и
нормально пользоваться оным?
На схеме есть разъём под CompactFlash.Я правильно понимаю что
если подключить только одну карточку и работа с ней будет в точности
как с винтом без всяких изменений в ПО?
Спасибо что интересуетесь, а то возникает впечатление, что кроме двух-трех человек это уже никому не нужно...
В каком сейчас состоянии положения дел со SMUC,удалось ли решить вопросы с монтированием?можно ли уже разводить плату,собирать и
нормально пользоваться оным?
Собирать и пользоваться можно. А вот разводить наверное не стоит - логика работы вроде угадана, поэтому можно перейти опять на ПЛИС, но с открытыми "исходными кодами". Вопрос с монтированием дисков вроде как разрешен о чем сообщил ewgeny7 (некоректная работа ПрофПЗУ в LBA-режиме): http://zx.pk.ru/showpost.php?p=54927&postcount=220. Вполне возможно что эта проблема наблюдается только в его версии прошивки, но протестить больше не на чем и некому.
На схеме есть разъём под CompactFlash.Я правильно понимаю что
если подключить только одну карточку и работа с ней будет в точности
как с винтом без всяких изменений в ПО?
В теории да (система команд совместима с ATA и работать должно без проблем), на практике надо проверять. В общем-то это можно было бы проверить, но увы проблема с CF-разъемом (неизвестно где разъем купить, а курочить Card-reader рука не поднимется).
И с нетерпением ожидаю завершения этого столь нужного проекта.
Пользуюсь SMUCse уже довольно давно. Могу сказать, что "дискретный вариант" вполне работоспособный. С тех пор, как отключил ЛБА - контроллер работает безупречно. Разницы в скорости я не заметил. Собирайте смело, или ждите последующей версии с ПЛИС :)
Единственное отличие от схемы Влада Семченко - я отрубил сигнал DOS.
Теперь "читаю" часы даже из Барсика.
Ещё интересно для чего скорпионовцы для
микрухи часиков сделали внешний генератор на ЛН2 ? :v2_conf2:
А в оригинальном тоже нельзя было читать из басика?
Да, потому что доступ к портам SMUC открывался только из TR-DOS, и работать с портами можно было только через две точки входа в прошивке TR-DOS (которые используют процедуры прошивки ПрофПЗУ). Одним словом прочитать/записать порты можно было только из кода, BASIC на это неспособен. SMUCse в этом плане (в первичной реализации) идентичен оригинальной схеме.
Ещё интересно для чего скорпионовцы для микрухи часиков сделали внешний генератор на ЛН2?
В принципе этого генератора не было ни на одной фотографии SMUC которую мне приходилось видеть. Для чего его ввели в схему не знаю, возможно были какие-то микросхемы RTC без блока генератора, или были известны случаи с плохим запуском встроенного генератора.
Люди, может кто-нибудь помочь с разборкой и переделкой прошивки ПрофПЗУ?! Поскольку я и ewgeny7 железячники, нам подобную работу провести крайне сложно и результат если и будет, то будет на детском уровне...
Evgeny Muchkin
10.11.2006, 14:37
spensor, Ты основные цели разборки ПЗУ обозначь, тогда и народу будет легче сказать хватит у них сил или нет. Обязательно кто-нибудь откликнется, а как узнает, что от него требуется :v2_eek: , пойдет в отказку.
Насколько серьёзное копание прошивки имеется ввиду?
Ты основные цели разборки ПЗУ обозначь, тогда и народу будет легче сказать хватит у них сил или нет. Насколько серьёзное копание прошивки имеется ввиду?
Нужно понять где там что - пока это массив в котором нет четких ориентиров на подпрограммы. В идеале вообще ее надо полностью дезассемблировать и написать заново. А что туда втиснуть думаю идеи у всех найдутся.
deathsoft
20.11.2006, 22:06
небольшое описание новых функций rst 8 есть в книжке про smuc с сайта scorpion (раздел "4. Новые подпрограммы Теневого Сервис-Монитора (RST 8) для работы с контроллером периферии SMUC"). Если посомтреть на скриншоты в этой книжке, то большинство скриншотов версии 3.9e (jan 97), но некоторые есть версии 4.02 (aug 97)
А где можно найти инфу по версиям выше 3.9f, ибо они нас в первую очередь интересуют? ... странно что скорпионщики выпустив ПП v5.0 под GMX не позаботились о ревизии книги...
В имеющемся у меня упоминавшемся описании (версии 1.3) "Краткое описание функций Профессионального Расширения Теневого сервис Монитора компьютера Scorpion ZS 256 Turbo" про версии 3.9f и выше написано следующее:
3.9f (94 от 01.03.97) Пункт Sound в меню. (10.08.97) Быстрое определение отсутствия SMUC. Обнаружены ошибки в анализаторе.
4.00 (96 от 09.06.97) Работа жесткого диска в режиме LBA. Исправлены ошибки анализатора.
4.01 (97 от 09.07.97) Исправлена ошибка при трассировании команды RET cc.В дате компиляции версии 4.01 наверное опечатка, потому-что моя имеет дату 05.07.97.
deathsoft
24.03.2007, 14:11
Объясните, микросхема DD15 так и должна быть завернута сама на себя или в схеме есть ошибка.
Посмотри схему оригинального смука, там 2 регистра включены встречно параллельно. Т.е. входы одного соединены с выходами второго, а входы второго с выходами первого. С обозначениями сигналов в схеме на дискретах путаница.
deathsoft
24.03.2007, 18:32
а DD15 здесь выполняет другую роль
D15 скорее всего нужен для врЕменного запоминания отдельных разрядов выходной шины данных (которая к IDE идет). Дискретный смук собирал ewgeny7. В этом топике даже фотка гдето была.
deathsoft
25.03.2007, 01:27
Эта микросхема имеет выход с тремя состояниями, поэтому она замкнута сама на себя не все время, а только когда выход активен. В данном случае это позволяет не использовать внешний мультиплексор. В этот регистр пишутся либо внешние данные, либо то что в нем уже находится (режим хранения). Выводы 1 и 2 управляют Z состоянием.
Объясните, микросхема DD15 так и должна быть завернута сама на себя или в схеме есть ошибка.
DD15 связана с портами виртуальных дисководов, мне интересно почему замкнута сама на себя.
Да, ибо по сути это аппаратная ячейка ОЗУ - запись и чтение 2 бит данных (D6 и D7). Разряды D3 и D5 были введены на начальной стадии, когда не было известно используются ли они в оригинальном SMUC или нет. Реально D5 точно не использовался, поскольку в ПЛИС он не заходит, но D3 и D5 юзаются при детекте версии SMUC, а микросхема ИР15 и так 4-битная. В общем резюме - в DD15 все правильно, но сигналы DB3 и DB5 можете и не заводить на микросхему, дело вкуса.
У микросхемы DD10.2 выводы 11,13 куда должны быть поданы, и по схеме какие все ли правильно?
С этим понятно, а как с микросхемой DD10.2 выводы 11,13. Что на них должно заходить, а то в схеме они не подключены?
Подключать никуда не нужно, также как и выводы 9 и 7 этой микросхемы, опять же было заложенно на стадии исследования. Как показала практика эти биты данных не используются в оригинальном SMUC.
Кто-то все-таки реально ее делал?
Делал Ewgeny7, схема в настоящий момент полностью работоспособна. Остался только вопрос со сбросом часов при включении Scorpion, но как выяснилось это болезнь и оригинального SMUC - нужно четкий сигнал сброса формировать.
Посмотри схему оригинального смука, там 2 регистра включены встречно параллельно. Т.е. входы одного соединены с выходами второго, а входы второго с выходами первого. С обозначениями сигналов в схеме на дискретах путаница.
Купи очки - ИР15 нет в оригинальном SMUC, эта микросхема повторяет внутреннюю структуру ПЛИС.
D15 скорее всего нужен для врЕменного запоминания отдельных разрядов выходной шины данных (которая к IDE идет).
Не знаешь, не говори. Слово серебро, а молчание золото;)
deathsoft
26.03.2007, 15:06
Купи очки - ИР15 нет в оригинальном SMUC, эта микросхема повторяет внутреннюю структуру ПЛИС.
Не хами, у меня не было схемы под рукой.
Добавлено через 4 минуты
Надо ломать прошивку.
Ничего не надо ломать, надо сделать как у перы путника, только сделать дешифрацию доп портов и все. Возможно еще внешний регистр надо поставить, если триггеров в ГАЛ не хватит, или вообще max7032S как в оригинале, а ненужную часть схемы выкинуть.
Black_Cat
16.12.2008, 06:48
Вопрос: при инициализации системного порта какое значение по умолчанию прописывается в разряды D1-D2, т.е. что по умолчанию выставляется на адресных линиях SA7,SA8 ISA? Господа, тыкнитесь тестером пож.
Сие изделие есть SMUC по схеме Spensor`a.
Первый экземпляр был собран полностью на дискретах и за долгое время показал безглючную работу. Следует, вероятно, убрать из названия этого варианта СМУКа всякие "альфы" и "беты".
СМУК на фото делается на базе Альтеры 3032. За ненадобностью убраны часы. Платка собирается МГТФом, 70% монтажа уже готово. За выходные накропаю пробную прошивку.
т.е. фактически остался токо IDE и виртуальный флоп?
+NVRAM (хранит системные настройки)
+регистр версии
Пробная прошивка готова. Пришлось добавить на плату одну АП5 в качестве буфера Альтера <-> IDE
а проект как таковой открытый?
"А кто ж его закроет":)
Дискретка и так открытой создавалась, а ewgeny7 просто перенес схему в ПЛИС.
Добавлено через 36 секунд
А я так погляжу тема не потеряла своей актуальности;)
ну по идее на плисине интереснее собрать :) да и проводков паять поменьше... а мож и плату одностороннюю развести - потому как изготовить плату на заводе без маски, сверловки, переходных отверстий - проще договорится.
вот вопрос - а можно ли прикрутить смук например к пентагону? понятно, что профпзу туда тоже прикручивать придется.
вот вопрос - а можно ли прикрутить смук например к пентагону?
Согласно информации из "Скорпион"а, можно любой 128к спек доработать до совместимости с ПрофПЗУ+СМУК. Подробная инструкция от самих скорпионщиков была в ZX-Ревю какогото года.
Black_Cat
19.12.2008, 17:34
и часы ставить... не очень рекомендую. Надежность их работы зависит от самой 512ВИ1.А в чём выражается проблема с надёжностью?
Evgeny Muchkin
19.12.2008, 19:10
Нах эти ВИ1? Сейчас далласы продаются везде.
Сейчас далласы продаются везде.
Честно, не пробовал. И вроде бы там есть минимальные отличия по резервному питанию. Покурив даташит можно и далласы воткнуть.
Нестабильность была связана с "несбросом" RTC при запуске компьютера.
Это вызывало галиматью в РАМе часов, и замечалась неустойчивая работа генератора на кварце. Пробовал два разных кварца - та же беда.
Потом выяснилось, что на оргинальных СМУКах такие же проблемы. Не на всех и не всегда, но...
Краткое содержание предыдущих 30 страниц темы:)
При непосредственном участии форумчан был разработан клон схемы SMUC и диспечера страниц ПрофПЗУ. Схемы находятся во вложениях в теме. Схемы обоих девайсов проверены на работоспособность ewgeny7, все "косяки" исправлены. Почему "бета", ну скорее всего потому что не захотелось поставить окончательную точку, документ желательно бы дополнить полезной информацией, и осталась неразрешеной проблема с RTC.
SMUC может работать на любом спектрум-клоне, и не обязательно Scorpion или KAY. Но работать можно только предварительно загрузив с дискеты программу способную работать со SMUC (CD-Walk by Vega, DNA OS by ZED9, WDC by Budder, IS-DOS, etc). Если такой вариант не устраивает необходимо доработать клон до совместимости со Scorpion, иначе говоря сделать из компа клон Скорпа - установить на комп минимум 256кб ОЗУ, реализовать порт #1FFD, а ПЗУ заменить на прошивку ПрофПЗУ с арбитром памяти.
По просьбе ewgeny7 выкладываю кусочки дизассемблерованого кода ПрофПЗУ, которые делал Mick.
2 Black Cat. Похоже ответ на заданный вопрос находится в примере №7.
Black_Cat
22.12.2008, 11:54
Похоже ответ на заданный вопрос находится в примере №7.Как понимаю там прописываются единицы в D1,D2. Если это кусок кода инициализации системного регистра, то это то что надо :) . Но всё же обладатели SMUC, тнитесь пож тестером для верности в SA7 SA8 на ISA, стоят там единицы по умолчанию или нет?
Кстати, там ниже вроде проверяется наличие модема чтением порта 7afeh а потом он инится.. оказывается какая-никакая поддержка ISA всёж была.. т.е. при переделке ISA придётся переписывать и код инициализации модема, а мож и ещё чего..
Сегодня подключал СМУК к Скорпи.
Система увидела его, признав в нем версию 1.0 :)
Работу IDE еще не проверял, разъем распаян только наполовину.
Подкорректировал прошивку (FDC, NVRAM).
В функции регистра номера версии вместо бита D5 включил D6. Типа, поставил версию 2.0 :)
СМУК передает всем привет. Бодро заявляет, что он 2.0, что я и хотел :)
ИДЕ интерфейс готов, данные по High и Low шинам гоняет исправно.
Есть пока затыка в работе с NVRAM
Возможно, не зря скорпионовцы вынесли сист. порт наружу альтеры, работа с NVRAM у них сделана через внешний ТМ9. Но я хочу пока обойтись без нее.
Блин, был бы ПЦ на работе, было бы все побыстрее...
На фотках - мое рабочее место со Скорпом и типа Справочник по Альтерам на его экране :)
Оно заработало!
Начинаем бета-тестинг :)
Orionsoft
24.12.2008, 19:30
Присобачить КМОС нетрудно. Только зачем?
а разве не там теневой монитор хранит настройки автозапуска ?
Нет. Пункт меню "Save to CMOS" подразумевает запись в NVRAM 24С16.
Тут гдето писали, что есть фатальные ошибки в прошивке, в том числе с автозапуском.
Ничего подобного не заметил. Все работает. Прошивка 4.01.
Black_Cat
24.12.2008, 20:10
Присобачить КМОС нетрудно. Только зачем? Часы по Глюку практически стандарт...Дык может тоды изменить процедуры работы с часами в Проф ПЗУ на Глюк RTC стоит?
Дык может тоды изменить процедуры работы с часами в Проф ПЗУ на Глюк RTC стоит?
ИМХО разумеется стоит. А кто возьмется?
Расположение процедур и их содержимое вроде бы известно, частичный дизасм монитора несколькими постами выше. Засунуть порт глюка в СМУК тоже не проблема.
Black_Cat
25.12.2008, 11:46
Женя Мучкин, ты можешь тнуться тестером в SA7 SA8 на ISA, стоят там единицы по умолчанию или нет?
Добавлено через 1 час 14 минут
Приделывать же на смук часы по глюку тож фигня, т.к. они в ZXMC2 реализованы.А изменять Проф ПЗУ под глюк?
"NEMO IDE практически стандарт"
Сравнивать НемоИДЕ и СМУК небуду. Я не представляю себе удобной работы с Немо.
По поводу часов Глюка - я также думаю что они в СМУКе не уперлись, т.к. есть на то мультикарта. По этой причине я и не захотел делать вторые часы на одном Скорпионе, мне и глюковских на мультикарте хватает.
Но тут уже как народ захочет. Впрочем, СМУК сам по себе нужен двум-трем.
Если бы новые клоны поддерживали режим Скорпи, то тогда и следовало бы городить огород на СМУКе.
Evgeny Muchkin
25.12.2008, 14:44
Женя Мучкин, ты можешь тнуться тестером в SA7 SA8 на ISA, стоят там единицы по умолчанию или нет?
Ой. Забыл совсем, извини. ;) SA7 SA8 это какие номера контактов на слоте? Единица это скока вольтов? :)
А изменять Проф ПЗУ под глюк?
А это то зачем? Пусть и работает со смуковыми часами... только их поставить на смук надо :)
Куда проще водрузить на смук его родные часы, чем делать по глюку, а потом трахаться с переделкой ПЗУ еще в довесок... а потом еще перешивать... как будто у всех есть программаторы дома...
Добавлено через 5 минут
Сравнивать НемоИДЕ и СМУК небуду. Я не представляю себе удобной работы с Немо.
А чего тут сравнивать то? Одна фигня. Разница только в том, что скорпионовцы не поленились и адаптировали TR-DOS для своего контроллера более-менее прилично, а неме толи пох было, толи силёнок не хватило.
А часы быть должны, иначе это уже не Scorpion Moa Universal Controller, а просто E7_IDE интерфейс...
Black_Cat
25.12.2008, 15:33
SA7 SA8 это какие номера контактов на слоте? Единица это скока вольтов?издеваесся? контакты А24,А23 на ISA, ттл единица это 2-5в.. юморист
Evgeny Muchkin
25.12.2008, 15:54
А24,А23
А где на смаке ряд A находится? Не шутю :)
Black_Cat
25.12.2008, 16:21
Куда проще водрузить на смук его родные часы, чем делать по глюку, а потом трахаться с переделкой ПЗУ еще в довесок... а потом еще перешивать... как будто у всех есть программаторы дома...вопрос немного не в этом, а в том, чтоб уменьшить разнообразие зоопарка.. как говорил В.И. Ленин:"..лучше меньше, да лучше". :)
А касательно Проф ПЗУ, дык давай разберёмся что ею поддержано из железа и насколько серьёзно. На смуке есть четыре основные девайса - IDE, RTC, ISA, PIC. Как понимаю, наиболее глубоко поддержан IDE, боюсь что поддержка IDE размазана очень в многих местах и трогать его на предмет переделки под чтото ещё очень геморно и не стоит того, а вот всё остальное практически поддержки не имеет и на него ничего особо не завязано, а потому если подменить родные процедурки альтернативными, то собсно ни на чём это не должно отразиться. По крайней мере у RTC и ISA есть альтернативные варианты, при том хорошо поддержаные, дык что хуже от такой подмены не будет, а вот лучше должно быть - как минимум благодаря использованию уже имеющейся софтовой поддержки, да и поддерживать один стандарт проще.
Добавлено через 17 минут
А где на смаке ряд A находится?на В1, В31 - земля, а сторона А - с противоположной стороны :) Если на разъём смотреть со стороны установки деталей, и если слева сторона В, то ближе к тебе 31 контакт :)
Благодаря помощи Spensor'a СМУК вроде бы полностью готов.
У альтеры время задержки сигнала в несколько раз меньше чем у рассыпухи, поэтому пришлось изрядно покувыркаться со времянками.
Для коррекции сигналов очень удачно вписалась АП5. Она же выполняет функции буфера между альтерой и винчестером.
Итого на борту СМУКа имеется:
EPM3032ALC44 адын штука
К555ИР23 (74LS374) две штуки
К555АП6 (74LS245) одна штука
К555АП5 (74LS244) одна штука
К555ЛА2 (74LS30) одна штука.
24С16 одна штука.
В общем, самый минимальный набор.
Для варианта с штатными смуковскими часами добавляется
КР512ВИ1 (МС146818) одна штука, при этом альтеру придется заменить на EPM7064SLC44. Вариант с часами еще не опробован, т.к. 7064 под рукой нету. Но у меня запланирован "поход" в магазин :)
Забыл добавить - не все винчестеры одинаково хорошо работают со СМУКом. Это правило действует для всех вариантов СМУКа. Например, вариант на дискретах у меня хорошо работает с WD Caviar 84AA, а варианту на альтере уже подавай SAMSUNG WN310820A :)
Плюс, для большей надежности работы лучше применять в схеме регистры и АП6 пошустрей (К1533, 74ALS) а буфер АП5 помедленней (К555, 74LS).
Black_Cat
26.12.2008, 23:40
Например, вариант на дискретах у меня хорошо работает с WD Caviar 84AA, а варианту на альтере уже подавай SAMSUNG WN310820A
Плюс, для большей надежности работы лучше применять в схеме регистры и АП6 пошустрей (К1533, 74ALS) а буфер АП5 помедленней (К555, 74LS).а чем объясняется?
Времянки.
По сигналу чтения, например, должен сработать селектор адресов, выдать запрос на винт, какое-то время проходит пока винт выдаст данные, которые пойдут через регистр. При этом, если винт будет "думать" дольше чем регистр ИР23, то получим в регистре не байт информации а нечто.
При записи информации на винт таже каша. Только теперь медленный регистр не успеет выдать информацию как винт уже успеет записать информацию на шине.
Плюс не забыть задержку сигнала на "крутилке" АП6.
Все винты, судя по всему, работают в этом плане по разному.
Схема в .dch +.pdf + прошивка.
Три варианта - для 3032 и 3064 без часов и для 7064 с часами.
Схема для 3032 (3064) реально работает, стоит на моем Скорпионе. Можете делать.
Вариант с 7064 не проверялся. Куплю 7064 и Даллас - проверю в работе.
Я собрал вот такой аппарат. Немного логики засунул в Алтеру.
Здорово!
А кучка диодов с ДИП-переключателем для любителей выставить свою версию? :v2_lol:
А что не завел на 74173 db3? (наличие винчестера/его отсутствие).
Здорово!
А кучка диодов с ДИП-переключателем для любителей выставить свою версию? :v2_lol:
А что не завел на 74173 db3? (наличие винчестера/его отсутствие).
1. Да диоды с переключателями - это выставление версии.
2. Это что за схема? Свою схему я стрепял по описаной логике в начале этой темы. Если 74173 войдет в Алтеру, то перепрошью, не поделишься схемой?
3. В своей схеме я использовал DS1287 - микросхема часов с внутренним кварцем и батарейкой.
4. Я смотрю от ЛА2 тоже не смог избавиться (не запихнул в Алтеру)?
ewgeny7, в силу своих малых знаний по альтерам попрошу вас добавить прошивку под 3064, так как не уверен что смогу перекомпилить самостоятельно правильно. и если не трудно - схему именно вашего программатора ( ну если он у вас самодельный) :)
Я собрал вот такой аппарат. Немного логики засунул в Алтеру.
2 fifanСпасибо, порадовал креатив!:v2_thumb:
А что не завел на 74173 db3? (наличие винчестера/его отсутствие).
Странно... Я и сам почему-то про этот бит не помню:v2_confu: Жень, если знаешь подскажи где была такая инфа?
В схеме этот бит (D3) реализован, аналогично D6 и D7 порта #7FBA, микруха ИР15 (74LS173) 4-битная и в предварительной схеме была заюзана по полной, а вот в описании к схеме не отражен...
По порядку поступления заявок :)
1. Прошивку перекомпилю через часик.
2. 74173 и так стоит у тебя внутри Альтеры. На нее заведены db6, db7 (дисководы А и В) и db3 (1-нет винчестера, 0-есть). Про бит db3 сообщалось в письме, которое выкладывал в этом топике многоуважаемый Spensor. :) И он реально "щелкается" Скорпи. Приведенный в схеме бит db5 как раз не нужен.
3. DS1287 - вот это здорово, я часами практически не интересовался. Перерисую свою схему применительно к этим часам. Спасибо за наводку!
4. ЛА2 можно пихнуть в альтеру, если у нее ног поболее 44-х :)
5. эээ... про сегодняшний тест-драйв (6 винчестеров!!!) расскажу попозже :)
Хм, таки правда, склероз... Кому интересно читать тут:
http://zx.pk.ru/showpost.php?p=32792&postcount=208
Прошивка для 3064 добавлена в общую кучу:
http://www.zx.pk.ru/showpost.php?p=172859&postcount=325
Сегодня я решил помучить на СМУКе кучку винчестеров, любезно подогнанных мне знакомым за 200руб. :)
Винты произведены в 1994-1999 годах.
К сожалению, список названий остался на работе. Завтра принесу и подкорректирую список. А пока - по памяти :)
Итого, полностью работающие со СМУКом:
Seagate ST3xxx 1.07Гб
Seagate ST317x 1.7Гб
Quantum Pro 250мб
WD AT105 100мб
WD Caviar 84AA 8.5Гб
Не заработали:
WD Caviar какойто 600мб ваапще не виден. И шпиндель не вращается :(
WD какойто 400мб виден, но не хочет создавать разделы.
Вот такая вот статистика.
Технически, не подошел только один винт, один просто дохлый и пять работают нормально.
Лучше всего ИМХО Сигейты. Работают потише (и заработали все).
Black_Cat
30.12.2008, 03:00
Про бит db3 сообщалосьт.е. этот бит прописывает программа при тестировании винта?
Хм, таки правда, склероз... Кому интересно читать тут:
http://zx.pk.ru/showpost.php?p=32792&postcount=208наверно имелось ввиду всёж это: http://www.zx.pk.ru/showpost.php?p=32794&postcount=208
Ничего не понял. DB6 и 7 я завел на вход и выход 74173. Разъясните мне пожалуйста, что мне делать с DB3 на этом же порту?
Вот например, пост http://zx.pk.ru/showpost.php?p=28568&postcount=144 вообще ничего не делают с этими битами.
В схему к посту http://zx.pk.ru/showpost.php?p=23900&postcount=1 вообще заведены на входы и выходы DD15 биты DB3, 5, 6, 7.
Разъясните мне пожалуйста, что мне делать с DB3 на этом же порту?
Тоже самое, что и с битами 6 и 7. На третий разряд порта.
На кой черт оно надо - наверное, толком не знает никто. Возможно этот битик просто в какие-то моменты ускоряет работу монитора, типа, винт есть и проверять это не надо.
Ну один бит я смогу в Алтере завести. Сообщите у кого нормально на дисретах работает схема с первого поста.
Рабочие версии даной железя у кого-нибудь есть?
НУ, у меня. Еще в первом посте об этом написано :)
Black_Cat
31.12.2008, 02:38
Дополнительная просьба владельцам оригинального смука - остались несколько невыясненных вопросов, которые при наличии тестера легко проверяются:
1) Что устанавливается на старших адресах ISA SA8, SA7 (контакты А24,А23 на ISA) после инициализации смука? Предположительно там единицы.
2) Не установлена точно связь между сигналом INT59 на выходе 8259А (17 нога) и сигналом /INT на ZXBUS. Предположительно /INT это инвертированный INT59. Проверить можно подавая 0/1 на 17 ногу кроватки при вынутом 8259А и измеряя сигнал /INT на ZXBUS. Кроме того возможно что прохождение INT59 на ZXBUS зависит от значения записанного в D3 #FFBA, 0-запрет, 1-разрешение.
3) Не установлена точно связь между записью в D3 #FFBA и входным сигналом /INTA 8259А (26 нога). Предположительно с D3 #FFBA сигнал напрямую идёт на 26 ногу 8259А. Это можно проверить прописывая 0/1 в D3 #FFBA и измеряя сигнал на 26 выводе /INTA. Так же возможно что D3 #FFBA отвечает за блокировку прохождения INT59 на ZXBUS.
4) На оригинальной схеме SMUC на схему не заведён /IORQ, это правда, или это старая схема, или очепятка схемы?
Буду признателен всем, кто поможет внести определённость в эти вопросы.
1) Что устанавливается на старших адресах ISA SA8, SA7 (контакты А24,А23 на ISA) после инициализации смука? Предположительно там единицы.
Подозреваю, что проще будет самому собрать схему и выяснить собственый вопрос;)
4) На оригинальной схеме SMUC на схему не заведён /IORQ, это правда, или это старая схема, или очепятка схемы?
Он реально не заведен, смотрел по фотке платы, сигнал IORQ холостой. Подозреваю, что схема идентифицирует порты SMUC просто по сигналу /DOS. Говоря простым языком портов ниже 3FFF у SMUC нет, и ПЗУ из которого в оригинале происходило обращение к портам выше 3FFF тоже нет. Мысль пока на стадии обдумывания, надо посмотреть логику формирования /DOS на матринской плате, но кажется /DOS сбрасывается только при обращении к памяти выше 3FFF, обращение к портам 4000-FFFF не повлияет на триггер TR-DOS. Хм, спасибо за наводку, раньше не задумывался над этим вопросом;)
5) На оригинальной схеме SMUC на ПЛИС не заведён IRQ0, IRQ1, тем не менее как выяснилось, из D7 #FFBA читается значение IRQ1. Возможно это разные версии плат, и соответственно должны быть разные схемы? В этой связи хотелось бы выяснить а не связан ли тогда D5 #FFBA с IRQ0 (18 нога 8259А)? Это можно проверить вынув часы и подавая 0/1 на 10 ногу кроватки часов, и считывая D5 #FFBA. Если они связаны, то должно читаться инверсное подаваемому значение.
Со 100% уверенностью скажу - не связан! Наводка - найди D5 на ПЛИС в оригинальной схеме;) Более того, с /IRQ0 та же история.
на моей схеме нет, но на ней нет и IRQ1, но как выяснилось он таки туда заведён! Поэтому я и спрашиваю, вдруг есть другая схема, другой версии..
Кидаю схемы, которые давал Conan: http://ifolder.ru/9827357
Хотелось бы увидеть твой вариант;)
Black_Cat
31.12.2008, 15:29
Всё, 5 вопрос отпал :) , удаляю. На своей никудышного качества схеме я его просто не разобрал.
Тоды ещё вопрос на засыпку: зачем там на ПЛИС заводится тактовая частота процессора?
собрал байт бластер, прошил альтеру.
ребята, подскажите, это процесс быстро проходит? а то что то как то непривычно - в течении 2х-3х секунд и прошивка и проверка проходит. это нормально?
ps. сорри за явно вопросы новичка ;)
Добавлено через 1 час 34 минуты
все. доигрался. сдохла микросхемка.... возможно что ей все таки от 5 вольт становится хреновато ((((
Sorry for translit, i'm in Sweden :)
Proshivaetsa altera ochen bystro, paru sekund vmeste s verifikaciey.
Chtob ne palit altery, stav pered ney po pitaniyu kondensator 100-200Mkf. I obyazatelno posle vyklucheniya pitaniya ne vkluchay sekund 10.
Ya tak nenarokom spalil 7064 (5-voltovuyu). Stala bystro nagrevatsa v centre korpusa, hot bliny zhar :(
5 volt na 3064 ne pri chem.
про нагрев - в самую точку! палец малехо пострадал :)
про конденсатор - поставить параллельно питанию около самой микрухи? я прально понял?
ps:
про конденсатор - поставить параллельно питанию около самой микрухи? я прально понял?
Yes. 100Mkf+0.1Mkf.
Немного изменил схему и прошивку касательно /DOS.
На эти подвиги меня сподвигло :) описание драйвера HDD специально для СМУКа из пакета Real Commander 2.6.
Там белым по черному пишется примерно это: "после подключения драйвера коммандер будер работать с ХДД напрямую через порты...".
Возможно я что-то недопонял, но после того как я придушил /DOS для выбора СМУКа, глюки с коммандером прекратились.
ewgeny7, за неимением пока реала с проф пзу и со смуком не расскажете ли вы вкратце по шагам как происходит старт компа, в какой момент появляется доступ к винту - ну то есть хочется понять как все это происходит. с немо иде я так понял пока с дискетки чо нить не подгрузишь - фиг винт увидишь. а как тут происходит?
В реале у меня SMUC еще не работает и выдает вот такую картинку.
Из описания работы SMUC'а:
...При включении компьютера встроенное программное обеспечение производит следующие действия:
1. Тестирование основных узлов машины. В случае каких - либо неисправностей компьютер останавливается с зеленым или красным бордюром.
2. Поиск, идентификацию и тестирование универсального контроллера периферийных устройств SMUC. На плате контроллера проверяются все установленные устройства и по результатам тестов на экран выводятся ряд надписей.
Текст сообщений говорит сам за себя. Если контроллер не найден ряд (или все) сообщения могут не появляться.
В зависимости от считанных из NVRAM значений, дальнейшие действия могут быть другими.
3. Тестирование дисковода «А» и попытка считывания с дискеты сектора настроек параметров монитора.
4. Запуск стандартной программы Бейсик - 128. В случае если разрешен режим «автостарта» произойдет автоматический вход в TR - DOS и выполнение команды «boot».
5. На экран монитора выводится главное меню, которое предоставит Вам возможность выбрать желаемую функцию простым нажатием курсорных клавиш и ENTER...
Пожалуйста архивчики, с описанием на английском. Запускается файлом realspec.exe в полноэкранном режиме. Сначала подставляется файл scorpion.rom без ПрофППЗУ. Последовательным двойным нажатием F3 заходим в меню выбора прошивки, меняем на Scorp402_.rom, SMUC отключаем (DISABLE), Последовательное двойное нажатие Esc. Некоторые клавиши: Alt+F2 - сброс, F2 - Magic, F1 - помощь в клавишах, Alt+F1 - набираем токены, F6 - подставляем дискеты, F10 - выход.
Сегодня закончил тестирование новой прошивки.
Меня всё устраивает.
Вариант схемы/прошивки выложенные выше можно использовать для повторения.
Поскольку остаются невыясненными некоторые вопросы с оригинальным СМУКом (/DOS vs /IORQ, RAS) то эксперименты продолжаются :v2_conf2::v2_wacko:
P.S. Мож кто печатку разведет, а? :v2_wink2::v2_laugh:
P.P.S. Мою "боевую" EPM3032 я мучаю уже два года... Перепрошивал ее уже раз под тысячу. И при этом в даташите стоит количество "до 100"... Вот что значит 5 вольт питания вместо 3.3 :)
Попробую... :v2_conf2:
Реал Коммандер замечателен своей системой подключаемых модулей.
В частности, кроме модулей проигрывателя музыки, просмотра текста, дискдоктора, даже тетриса :), есть модуль HDDmount и прицепом к нему HDD_0.1. Сии модули позволяют рулить виртуальными дисками без залезания каждый раз в теневой монитор.
Итого под коммандером мы можем иметь сразу одновременно 5 "дисководов" (включая RAM-диск "Е").
Две панели коммандера позволяют с удобством копировать/переносить файлы между дисками.
При работе с винтом перенос файлов происходит очень быстро, едва успеваешь видеть названия файлов в окошке :)
Усли нужно изменить подключенный диск на другой, нажатием кнопочки "F" выбранная панель превращается в навигатор по винчестеру (с возможностью поиска). Сначала оказываемся в партиции где был ранее подключенный "диск". Их там может быть до 51 штуки. Каждый "диск" может иметь собственное имя. Перемещая курсорную строку подключаем новый диск.
Если требуемый "диск" находится в другой партиции, то в навигаторе жмем "Caps+Symbol" и вываливаемся в менеджер партиций. У меня, к примеру, их четыре "System", "Games", "Misc" и "Librar". По названиям понятно где что лежит :). В Librar и в самом деле лежит довольно много книг, которые я читаю прямо на Скорпи.
Всего партиций может быть (вроде бы) 63.
Итого можно иметь на винте 63*51=3213 дискет.
Максимально ПрофПЗУ видит под 2 гигабайта на винчестере, но можно использовать и меньшие и большие. На моем винте 8Гб, там живут одновременно и Скорпион и Выньдос 98 :v2_finge::v2_laugh:
Подключение/отключение реальных дисковводов А и В делается также из под коммандера кнопками "Z" и "F".
Включив "автостарт" в меню теневика, коммандер будет сам стартовать после включения компьютера и сам подгружать свои модули.
Попробую...
отлично получилось! Спасибо! вот теперь я себе представляю наконец то спек с винтом :)
в догонку: например инсульт мегадемо работает хотя бы с виртуального ( винчестерского) дисковода "А"?
в догонку: например инсульт мегадемо работает хотя бы с виртуального ( винчестерского) дисковода "А"?
Не знаю, не пробовал. Но по любому есть ограничение - программы работающие с дисководом не через #3D13 а напрямую с ВГ93 с винта работать не будут :(
Для этого приходится переносить их на реальный диск. К примеру - основная масса демок и игры типа "НЛО". Более-менее современные игры (и очень старые) работают без проблем.
Black_Cat
12.01.2009, 23:02
Немного изменил схему и прошивку касательно /DOS.а что конкретно?
после того как я придушил /DOS для выбора СМУКа, глюки с коммандером прекратилисьэто в чё придушил, в прошивке ПрофПЗУ?
а что конкретно?
Для селекта портов смука убрал /iorq и подвел /dos.
это в чё придушил, в прошивке ПрофПЗУ?
Не, убрал из селекта сигнал /dos насовсем.
В результате - на базе дискретной схемы без /iorq не обойтись, скорп даже не стартует. При запуске скорпа сигнал /dos активен, и обращения к памяти конфликтуют со СМУКом судя по всему.
А убирал я /dos (оставляя /iorq) для запуска RC с драйвером СМУКа HDD_0.1. Как это ни странно, но сей софт работает напрямую с портами не через тыр-дос. В результате если в селекте использовать /dos то нифига не работает. Интересно, в оригинале порты HDD открыты для любого состояния сигнала /dos? Судя по схеме оригинала 1.3 такого быть не могёт...
Black_Cat
13.01.2009, 15:43
А убирал я /dos (оставляя /iorq) для запуска RC с драйвером СМУКа HDD_0.1. Как это ни странно, но сей софт работает напрямую с портами не через тыр-дос.
не понял.. если RC работает со смуком через тр-дос, то сигнал /dos полюбому генерится при входе в тр-дос.. и зачем его убирать?
Что-то я вообще не понимаю о чем вы. Вроде все в курсе, даже в описании на дискретку есть упоминание. Но ладно, повтрюсь. Кажется Vega предложил вариант "доработки", суть которой заключалась в том, что сигнал /DOS на SMUC заменяется на /IORQ.
Если по "правильному" порты SMUC должны быть доступны только из под TR-DOS, тоесть должна быть включена прошивка TR-DOS по адресам #0000-#3FFF, а обращение к портам из программ пользователя ведется через две точки в ПЗУ TRDOS. Никаким другим способом обратится к устройствам SMUC невозможно.
После "доработки" порты открываются на доступ из любого адресного пространства, и кроме того чтение-запись портов происходит значительно быстрее.
Практически все программы юзающие SMUC ориентируются на то что порты открыты на прямой доступ. "Правильным" способом к SMUC обращается похоже только ПрофПЗУ.
Black_Cat
13.01.2009, 17:12
Практически все программы юзающие SMUC ориентируются на то что порты открыты на прямой доступ.а сколько этих программ вообще?
"Правильным" способом к SMUC обращается похоже только ПрофПЗУ.т.е. если смук работает без DOS/, то он доступен и прогам и ПрофПЗУ одновременно, верно? Т.е. на сигнале DOS/ поставили окончательный крест, или всё же без него что-то не идёт (про ISA речи нет)?
Я видел описание этой "доработки" в виде сообщения из FIDO. Знал бы где искать привел бы.
а сколько этих программ вообще?
Достаточно много я бы сказал. CD-Walk и CD-Player от Vega, Wild Disk Copier от Budder, RealComander, DNA OS... Думаю есть и другие.
т.е. если смук работает без DOS/, то он доступен и прогам и ПрофПЗУ одновременно, верно? Т.е. на сигнале DOS/ поставили окончательный крест, или всё же без него что-то не идёт (про ISA речи нет)?
Вот как раз с ISA не скажу. Если порт на ISA шине перекроется с портом на ZX шине, будет конфликт. Из под TRDOS вроде бы это не должно произойти. Я эту тему особо не копал.
Black_Cat
13.01.2009, 18:41
С ISA там понятно всё - конфликты есть, но и сама ISA на смуке сделана через задницу, поэтому о её такой реализации можно просто забыть. Меня интересует другое - можно ли сказать, что DOS/ для смука себя окончательно изжил, или он где-то ещё нужен?
С имеющимся окружением (включая мультикарту) конфликтов вроде нет. Если только GS, его порты я незнаю.
Black_Cat
14.01.2009, 18:09
С имеющимся окружением (включая мультикарту) конфликтов вроде нет.я не об этом, а о конфликтах ISA с клавиатурой.
Короче, по актуальности сигнала DOS/ я так и не услышал замечаний, поэтому, чтоб не рубить с плеча этот сигнал, хочу предложить компромиссное решение - заводить на вход смука DOS/ & iorq/, тогда смук будет работать и так и эдак без конфликтов и со 100% совместимостью.
покорячившись впихнул таки в EPM3032 управление микросхемой RTC (512ви1 или Далласы).
Задействовал для этого ноги global input. Свободных ног у альтеры не осталось совсем. Кроме JTAG, конечно.
Свободной ноги для входа /DOS также не осталось :v2_tong2::v2_devil:
Black_Cat
14.01.2009, 19:56
Свободной ноги для входа /DOS также не осталосьпоставь на вход два диода и резистор :)
поставь на вход два диода и резистор
:v2_lol:
Все равно ты своего добился!
Ладно, пускай желающие ставят :)
Усё готово, шеф :v2_yahoo:
СМУК работает нормально, часики фунциклируют. В альтерку больше ничего ни впихнуть, да собсна и не надо.
Без часов я чувствовал, что чего-то в работе коммандера не то... Потом уже вспомнил, что в СМУКовых часах коммандер хранит настройки панелей. Типо включил комп - открылись ранее оставленные тобой панели :v2_finge:
Схему подкорректирую и выложу сегодня-завтра. Туда же приложу краткие рекомендации по RTC и исходники с прошивкой.
:v2_yahoo::v2_clap2:
Добавлено через 1 минуту
вопрос встал - реал коммандер берет настройки винта из проф пзу?
Добавлено через 33 минуты
ewgeny7, я собственно к чему: я не понял как вот это дружит "Gluck/SMUC 2.0/ProfROMse "
Добавлено через 1 минуту
вопрос встал - реал коммандер берет настройки винта из проф пзу?
Добавлено через 33 минуты
ewgeny7, я собственно к чему: я не понял как вот это дружит "Gluck/SMUC 2.0/ProfROMse "
1. Фиг его знает, чесслово. Вроде бы он работает при "монтировании" через стандартные процедуры монитора, т.е. посредством RST8 (расширенный набор процедур сервис-монитора) и #3D13. При переносе-копировании он явно обращается прямо к портам СМУКа. В общем, не знаю :( Лучше спросить про это у bugsy
2. А что тут странного? Весь этот огород друг другу не мешает. :v2_conf2:
тогда так - смук работает без проф пзу?
СМУК вполне работоспособен и без ПрофПЗУ. В таком случае он работает подобно NemoIDE, большинство софта для винчестеров и CDROM также имеет драйверы для СМУКа. Я, например, проверял работу DNA OS, WDC, CD-Walk. Они не требуют для своей работы ПрофПЗУ.
Из краткого описания работы со SMUC'ом::cool:
Если к компьютеру подключена плата контроллера SMUC, то в микросхеме энергонезависимой памяти (NVRAM) TM способен сохранять часть своих настроек. При инициализации происходит автоматическое конфигурирование компьютера по этим настройкам.
В случае первого включения с платой SMUC в энергонезависимую память «прописываются» параметры «по умолчанию», при этом на экране возникают следующее сообщение:
CMOS checksum error
NVRAM checksum error
Эти же сообщения появляются в случае «забывания» по каким - либо причи¬нам данных в NVRAM (и CMOS).
При последующих инициализациях компьютера сообщение о наличие микросхемы NVRAM будет таким:
NVRAM found
Уточним, на контроллере SMUC могут быть установлены две микросхемы энергонезависимой памяти, способные хранить параметры ТМ, Это NVRAM и CMOS. Микросхема NVRAM является приоритетной по отношению к CMOS. Кроме энергонезависимой памяти микросхема CMOS содержит еще часы реального времени, текущая дата и время постоянно выводятся в нижней части экрана меню монитора, а также указываются при распечатке каталога дискет.
Для работы с энергонезависимой памятью служат пункты из меню Set Up/Monitor:
Save CMOS
Load CMOS
Выбор пункта Save CMOS приводит к записи в микросхемы CMOS & NVRAM текущих значений режимов работы монитора. Отметим, что запись в CMOS & NVRAM может происходить только в двух случаях - при начальной инициализации микросхемы (о чем было сказано выше) и при выборе этого пункта меню. При изменении режимов монитора автоматической записи не происходит. Восстановление данных из NVRAM - памяти происходит всякий раз при сбросе компьютера или при выборе пункта Load CMOS. Таким образом можно вернуть измененные режимы монитора не перегружая компьютер.
Нажатие кнопки RESET или MAGIC во время процедуры занесения значений в энергонезависимую память может привести к потере данных в ней!
Для установки текущей даты и времени служит меню Set Up/Date & Time, заполнение пунктов которого не представляют особых сложностей, возможно, за исключением следующего:
Indicator
Этот пункт включает (ON) или отключает (OFF) индикацию текущей даты и времени в меню сервис - монитора.:v2_clap2:
Выкладываю вариант СМУКа для ЕРМ3064SLC44.
В архиве исходник в схематике, схема девайса и сама прошивка .pof
Желающие могут перекомпиливать под свои нужды (и альтеры).
Добавлено: исходник в VHDL (рабочий).
Прикрутить можно к чему угодно с ZXBUS шиной, SMUC не имеет критических моментов в плане железа. Но без доработки клона (придания совместимости со Scorpion) теряется основной плюс этой железки - встроенное программное обеспечение - ПрофПЗУ. Дело в том, что ПрофПЗУ исспользует для собственных нужд 8 банк ОЗУ (тоесть необходимо как минимум 128К+16К ОЗУ) и при этом этот банк ОЗУ и 4-я страница ПЗУ должны рулится по порту 1FFD. Последнюю проблему можно было бы разрешить (проблема кроется только в кодах прошивки), если бы на руках оказались исходники ПрофПЗУ, а они есть только у MOA.
Добавлено через 12 минут
Собственно что есть ПрофПЗУ. Это расширенный Теневой монитор Scorpion'а, с комплектом дополнительных функций. Основной упор отведен на управления HDD и работой с TRD-образами на нем - форматирование разделов, дисковые операции, система подмены физических дисков виртуальными, автозагрузка с TRD-образа. Кроме того ПрофПЗУ контроллирует RTC, ISA8-шину с контроллером прерываний (врят-ли актуально, но поддержка есть). Кроме того ПрофПЗУ включает в себя ROM-диск со SNA-подобными образами программ. Толку с ROM-диска правда мало, опять же из-за того что нет исходников в свободном доступе, а без этого проблематично заменить его содержимое.
Добавлено через 15 минут
Что то до меня никак не доходит. Что это за устройство?
http://scorpion.ru/spectrum/hard/kontroller_SMUC.htm
http://scorpion.ru/spectrum/hard/prof_rom.htm
А в теме opensource-клоны устройств.
у микрухи MC12887 есть аналоги? совместима ли она с 512ВИ1? А то ценник на нее злой, а ви-шка еще с 90х годов лежит, ждет своего часа.
Какой микрухи?!
В природе существует MC146818 - RTC с параллельным интрефейсом. Также существует целый набор "гибридных микросхем" (микросхема с батарейкой залитых в единый конструктив) фирмы Dallas основанных на клонах MC146818 - DS1287,DS12887, DS1285, DS1387...
512ВИ1 по сути клон MC146818, но совместимость не полная. Гораздо грубее электрические параметры (не работает ниже 3V) и кажется с нумерацией дней недели дела обстоят иначе, это некретично, но имеет место быть.
Работать будет все, но импорт кушает меньше, часы пропашут дольше.
Какой микрухи?!
Эту микруху встретил в тутошней схеме... как понимаю имеется ввиду DS12887... Она у нас стоит 85 грн = ~10$, дорого однако.
Работать будет все, но импорт кушает меньше, часы пропашут дольше.
Это понятно... просто если уже ВИ1 имеется, то наверное все ж ее и имеет смысл воткнуть.
Встречал DS12887 на старинных платах - стоит ли их брать под распайку для извлечения этой микрухи? Там внутренний источник питания, он мог уже умереть... а внешнюю батарейку к ней можно прикрутить?
Эту микруху встретил в тутошней схеме... как понимаю имеется ввиду DS12887... Она у нас стоит 85 грн = ~10$, дорого однако.
Конечно дорого, тем более он нее толку... Так только душу порадовать. Более рационально было бы юзать спарку ATTiny2313+RTC8583.
Это понятно... просто если уже ВИ1 имеется, то наверное все ж ее и имеет смысл воткнуть.
Имеет, если правда есть куда:)
Встречал DS12887 на старинных платах - стоит ли их брать под распайку для извлечения этой микрухи? Там внутренний источник питания, он мог уже умереть... а внешнюю батарейку к ней можно прикрутить?
IMHO, смысл имеет. Внешнюю - запросто, делается два отверстия в районе где положено быть ножкам питания (они есть, но вывернуты во внутрь) и туда припаиваются два проводничка идущих на внешнюю батарейку. Технология работает, проверенно Trident'ом;)
и еще настораживает - пзушки в керамике (27512) - работают - а флешка нифига. (((
На Pentagon2.2 тоже флешки не работали - лечили конденсаторами... может и на скорпе это подойдет? посмотри ветку про пентагон.
molodcov_alex
09.02.2009, 10:48
Вот 1.5й диптрейс (полный) с кряком: http://ifolder.ru/10462627
Страшилка для собирающих :v2_wink:
ПыСы: ТМ9 и транзюк - не задействованы, сидят для мебели...
Страшилка для собирающих :v2_wink:
Ага, сам писал 512ВИ1 ацтой, ацтой - а сам на ней собрал. :) А я тут типа на них собрался опыты ставить.
Ну а по девайсу респект и уважуха. Сам мгтфчиком временами балуюсь.
ewgeny7, платка с ВИ1 и кондюками - это типа т.н. дискретный даллас? :)
ewgeny7, платка с ВИ1 и кондюками - это типа т.н. дискретный даллас?
Вот блин, уже догадались! А я хотел это в тайне оставить! :v2_lol:
Извиняюсь за ламерский вопрос, я еще только начинаю знакомиться со скорпом...
СМУК без ПрофПЗУ будет полезен? или лучше сделать для начала ПрофПЗУ, а уж потом СМУК?
ewgeny7, tr-dos в профпзу волшебная или туда можно прошить 504Т?
СМУК без ПрофПЗУ будет полезен?
Ровно настолько же, как и НемоИДЕ. Т.е. несколько программ для работы с винчестером в FAT32 и CD-ROMом. Для "прочувствования" СМУКа нужно ПрофПЗУ.
Делать можно в любой последовательности. Без ПрофПЗУ также получишь много полезного и приятного от ИДЕ-интерфейса :)
tr-dos в профпзу волшебная или туда можно прошить 504Т?
В тырдосе сделана поддержка RST8 (расширенного набора функций #3D13). Теневик работает с дисками через RST8. Поэтому - замена не прокатит.
ewgeny7, нашел 3 схемы ПрофПЗУ, две из них на альтерах, но прошивок под них нету в архивах... ткни носом, плиз...
Дмитрий, вот то, что я собрал. работает. http://zx.pk.ru/showpost.php?p=78051&postcount=14
так же я собрал и на дискретах. тоже работает.
прошивка 29с020 выложена в этой теме.
ПрофПЗУ на GAL (плюс турбинка)
Black_Cat
11.02.2009, 13:05
А если посмотреть в докуда, память уж не та, в схеме там ЛИ1+ЛА3, был не прав
Схему перезалил, перемычка там всётаки в другом положении должна быть.
Значит КАЙ легко доделать до Скорпиона, примерно так:
На Кай-1024 однозначна, там наблюдается не совместимость с 256 каем, у них ПЗУ разные, как форумчане говорят, хотя схему 256 кая я не видел.
А по ссылке: http://www.zxspectrum.it/other.htm ходил? Там две версии прошивки под KAY-1024, с разной раскладкой.
Там две версии прошивки под KAY-1024, с разной раскладкой.
Первую я не смог скрестить со схемой KAY1024SL ревизии v1.5, который у меня дома... вторая более соответствует действительности. Программатора нет - можно было бы слить прошивку с моего кая
ewgeny7, разъемы штыревые/угловые только в пятницу привезли - туго у нас с экзотикой в деревне (( . сижу прилаживаю макетку что б в слот вставлялась... так что типа начал :)
ps: вообще весь день опять с елкой бодался. мало того что глюк с пзушками + я еще не прально представил вначале распайку разъема... вообщем поменял местами А и В шины... zxmc слава богу выжил :) еще пободался с глюками самой елки - контакт ни на что не вызванивается, а скорп с елкой не работает. пришлось по проводку отпаивать обратно и вычислять контакт...
макетка для смука.
2 недели ожидания углового разъема
3 часа неторопливого изготовления. в основном куска со слотом.
~230рублей денег затрачено.
А я вот уже почти отдиптрейсил ее :v2_smile:
сколько блокировочников ставить?
в идеале по одному на корпус микросхемы. рядом с альтерой лучше повесить еще и 100мкФ. а то выше по теме евгений7 рассказал как ее удачно можно спалить, что я благополучно и сделал :)
Добавлено через 2 минуты
Какие-то еще пожелания/замечания имеются на счет печатки, чтоб потом не переделывать?
разъем под программатор сделать стандартным - http://www.msclub.ce.cctpu.edu.ru/MCS51-PLD/blaster1.htm - может там найдется место....
Насчет АП по желанию, а вот на ПЛИС блокировочные конденсаторы точно необходимы. Еще на входе карты по питанию, хотябы 10мкФ. На 24 тоже не помешает.
Да, и шины питания пошире сделай, плата надежнее работать будет.
Кстати, зазор от борта до самой крайней дорожки желательно выдержать в 1мм.
Добавлено через 8 минут
Дмитрий, выложи финальный релиз платы на обозрение в формате редактора, более конкретные замечания можно будет дать.
spensor, вечером поправлю и выложу.
Добавлено через 3 минуты
Плата заточена под возможности местного производителя плат:
Минимальная ширина дорожки - 0.3
Минимальный зазор - 0.25
Минимальный диаметр отверсия - 0.7
Потому на сегодняшнее утро было: сигнальная шина - 0.3, питание - 0.6.
При увеличении ширины питания придется уже двигать корпуса, увеличивать площадь платы... Хотя это и так придется делать вечером :-D
0.25 можно с уверенностью сказать не сделают, ориентируйся на 0.3.
Питание хотябы не все, а в свободных местах увеличь. 0.6 для питающих шин это очень мало, оптимально 1,5-2мм.
Вопрос по zx-bus слоту. Как лучше сделать:
1. Как у Камиля - 31 контакт, но 31е не вытравлены. Но в таком случае, придется подружиться с напильником тем, у кого стоят перепиленные под 30 контактов ISA гребенки.
2. Как Немовский BetaTurbo и НеоГС - 30 контактный нож с ключом. Но у меня нет информации по размерам распила.
Так что советы в студию! ;)
Добавлено через 2 минуты
0.6 для питающих шин это очень мало, оптимально 1,5-2мм.
постараюсь, но и у Камиля питающие шины меньше 1мм и не глючит ;)
1. Как у Камиля - 31 контакт, но 31е не вытравлены. Но в таком случае, придется подружиться с напильником тем, у кого стоят перепиленные под 30 контактов ISA гребенки.
С расчетом на 31 контакт. Как вариант, можно и с наличием ламельных контактов и пропилом между 30 и 31, кому вдруг понадобится выламают.
постараюсь, но и у Камиля питающие шины меньше 1мм и не глючит
У Камиля блокировочных конденсаторов в достатке присутствует, шины варируются в ширине. А в деле питания электрокомпонентов есть правило - чем меньше плотность тока в проводнике, тем лучше, надежнее. Объясняется достаточно просто, проводник это низкоомный резистор, чем выше в нем ток, тем выше сопротивление, есть сопротивление не будет подавляться помеха по питанию (порождаемая микросхемой).
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot