F7xx это дисковод, часы, таймер, мышь - все то, что было подключено и поддержано в 90-х, а не просто какие-то мои более никому не понятные хотелки. Исключать это из компа с именем Орион-хххх - авантюризм, имхо.
Вид для печати
F7xx это дисковод, часы, таймер, мышь - все то, что было подключено и поддержано в 90-х, а не просто какие-то мои более никому не понятные хотелки. Исключать это из компа с именем Орион-хххх - авантюризм, имхо.
Error404, не кипешись. Будет тебе F7 в полном составе. Кроме F762-F76F, разумеется.
Ну, вот блин! Вместо чтения документации, надо спорить об очевидных вещах, но трактуемых каждым по своему.
Евгений! Я прекрасно знаю механизм работы прерывания Z80, в том числе и конкретно - IM2. В своей библиотека, мне кажется, я встречал этот текст, и могу ответить твоими же словами в первой части:http://zx.pk.ru/showpost.php?p=305397&postcount=358. Действительно, написано столько всякого говна для Спектрума, что встречаются абсолютно противоречивые моменты. Что хочешь, то и бери под свое понятие.
Но я о другом. Мне не очень приятно, что ты не счел нужным открыть файл "Z80-Central-Processor.pdf" и на первой странице, в третьем абзаце сверху прочитать:
"В микропроцессорном комплекте Z80 предусмотрено, что периферийные БИС могут выдавать в качестве вектора прерывания только чётные байты (D0=0) - для однозначности адресации ячеек таблицы."
Далее, на следующей странице в графическом виде разрисован сам механизм прерываний IM2, разъясняющий это утверждение.
Я хочу тебя спросить: где аргументация (на основании официальной информации Zilog, а не какой-то блевотины!) в недостоверности приведенной мною цитаты? Вот это?
Мне уже популярно объяснили, что "русские не читают инструкций". Ну, значит я чурка, раз читаю и пытаюсь доказать по "инструкциям"! Сегодня уже поздно искать, а завтра я выложу официальные даташиты Зилка, подтверждающие выше приведенную цитату. Потому, что для меня заявление:"А мы делали, и считали что так и надо" - не аргумент! Извини, caro!
Что ты сразу кидаешься, как бык на красную тряпку! Я высказал свое мнение, а не решение. Решение мы принимаем коллегиально.
И что я не прав? Все, что ты перечислил не должно быть внутри ПЛИС? Ты что, такой страстный поклонник паяльника, что будешь мудрить все это на рассипухе, в том числе и к этой платке? Ну всем уже понятно, что в эту платку дополнительные прибамбасы не влезают. Она получилась такая, какая получилась. Чтобы даже "одеть" то, что уже наваяли, работы выше крыши! Тогда чего постоянно отмалчиваешься или закипаешь? Что нельзя принимать постоянное участие в конструктивном диалоге?
Несправедливо. Я его открывал, более того, у меня есть эта книга в электронном виде.
Если ты не заметил, я выделял кусочек строки "В микропроцессорном комплекте...".
Нетрудно заметить, что "комплект" и "процессор" несколько разные вещи. Первое - всего лишь обслуживает второе, и может не использовать всех возможностей.
Механизм IM2 не запрещает использовать FF и FD. О чем я приводил фрагмент книги парой постов ранее.
Мне вообще-то не упёрлось использовать именно нечетные значения, я в первую очередь пользователь. Как железячник я сделаю так, как сочтете нужным вы с Сергеем.
Если внимательно перечитать "блевоту", то там даже намека нет на "недостоверность" фирменных даташитов. Она не отрицает их. Она дополняет. Орион-2010 архитектурно тоже далеко не шедевр инженерной мысли в смысле соблюдения рекомендаций даташитов. Но русские ракеты летают, а шаттлы взрываются.
Покажи мне это утверждение в даташитах Zilog! Плевал я на книжки домохозяек и кухарок. То, что вы "так делаете, и получается" - я объяснил почему. Да, шина подтягивается на +5 для того, чтобы иметь стабильный FF. Далее, из-за того, что механизм IM2 не воспринимает D0 в векторе, получается из FF ->FE, из FD->FC. И поэтому все работает. Но это не значит, что вектор в действительности должен быть FF и FD. Не нужно заблуждаться.
Все! Спокойной ночи! Больше нет сил спорить...
Хаос и анархия... Евгений, никого не слушайте, если устройство отсутствует на шине или не выставляет свой вектор прерывания с шины должно считываться #FF. Точка. Рекомендации зилога на счет четных векторов относятся к устройствам которые выставляют свой вектор прерывания и даны эти рекомендации для того что бы не было наложения адресов для четных и нечетных векторов, например, для вектора #00 будет вызвана процедура адрес (слово - 16 бит) которой храниться в ячейке I*256+0(и +1), для вектора #01 - I*256+1( и +2). Таким образом один из байтов адреса (старший или младший) будет общим для этих векторов. Вот чтоб такого не было зилог рекомендует использовать четные значения векторов. Если используются и четные и нечетные векторы, то их нужно раздавать таким образом чтобы подобных накладок с адресами не возникало...
---------- Post added at 00:11 ---------- Previous post was at 00:07 ----------
Механизму IM2 как микропрограммному автомату глубоко все равно к чему прибавлять единицу, к I*256+#FE или к I*256+#FF, табличка адресов для IM2 на спектруме всегда размером в 257 байт, т.к. для вектора #FF младший байт адреса береться по адресу I*256+#FF, а старший (I*256+#FF)+1
Вот такой примитивный принцип расчета адреса ISR придуман для домохозяек. Покажите мне все это в даташитах Zilog! Что за постоянное пережевывание только собственного мнения - "вот я так знаю, значит - это правильно". Такое корявое решение придумал господин Синклер, пытаясь максимально упростить (значит удешевить) схемотехнику своего детища.
Господа спектрумисты! Столько шума, а никаких доказательств нет, нет ссылок на документы - только собственное мнение. Я уже говорил - для меня это не аргумент в споре. Доказательством может служить только ссылка на даташиты Zilog. Все остальное болтовня.
Совершенно верно! В Спектруме стоит оригинальный Z80. Собственно, что Вам мешает посмотреть самому в памяти компьютера (у меня его просто нет!), как записывается в памяти ISR-адрес на прерывание "FF". Если судить по Вашим рассуждениям, то младший байт будет записан по FF, а старший в 00 следующего блока памяти? Что сложно посмотреть - одна строчка на Бейсике?
Спектрум - это не показатель для данного спора. Он такая же самоделка автора-одиночки, как и Орион, только более удачная в коммерческом плане. Господин Синклер так же, как и я мучился с упрощением и удешевлением своей конструкции, придумывая нестандартные решения. Для упрощения, в Орионе, к примеру, фронты подтягивались кондерами. Это неграмотное решение, но приходилось применять его для упрощения схемотехники. Иначе пришлось бы добавлять еще пару корпусов, чтобы развести фронты. А так, кондер сунул и... заработало. Для этого класса устройств - это приемлемо.
Вот как! Значит "тупо следовать рекомендациям Zilog" не для "трезво мыслящих" русских! У нас "свой путь"? Ну, Вы батенька...
Все, господа спектрумисты! Закончили беспочвенный спор, если нет аргументов!
В приложении выдержки из даташит Zilog и Mostek. У кого проблемы с английским - я переведу.
И что? У меня есть документация на 8080, где на каждом листке написано "Для служебного пользования". Какое отношение это имеет к нашему спору. Вам следовало бы привести в качестве примера не титульную страницу этого антиквариата, а те страницы, где рассказывается о прерываниях. Был бы смысл.
Разбираюсь с питанием. Пока не понятно откуда запитаться. :)
У меня вопрос: по схеме из архива http://orion-2010-support.narod.ru/Orion_v1_07.rar не понятно с какого контакта разъема X14 ("питалово дисковод 3,5") идет входное питание на 7805: на разъеме написано +5V, а по логике должно быть +12V.
А для чего нужен джампер j2 (у LM1086), и где он на плате?
У меня не было никаких проблем. Нашел старый блок питания от АОНа. Там внутри уже стояла КРЕНка на 5 вольт. Перепаял разъем. Подключил ЖКИ "Самсунг" и клаву. Включил питание - все работает! Сегодня прошил версию 1.11.
Молодец Евгений! Сделал все на совесть, профессионально. Огромное спасибо!
Проблема в другом. Под ОРДОС нет возможности где-то сохранять файлы, при выключении компьютера. "Вешать" батарейки не надежно - никогда не знаешь когда подсунет западло. Пришлось "освоить" USART. Правда, использовать CodeVisionAVR в качестве терминала гиморно, особенно если не работаешь с AVR. Нашел небольшую программулину PComm Terminal Emulator. Очень удобно. Теперь не успеешь и "моргнуть", а диск "С" Ориона уже на РС в виде bin-файла. Не очень удобно - не возможно подгружать файлы, но пока, выход.
Ну почему - невозможно?
Используй В как рабочий, а С как "перевалочный пункт". На С можно отправить любой файлик .ORD или .BRU. После того как терминалка покажет, что файлик отправлен (Орион при этом будет ждать "продолжения банкета"), просто нажми СБРОС (Scroll Lock). И на диске С появится файлик во всей красе :) Возможно появление "мусора" на С за нужным файлом, но это уже мелочи.
пробная версия 1.12
порт F766:
бит 6 - рулит прерываниями с клавиатуры
бит 5 - переключатель (несбрасываемый) бита 0 векторов прерываний.
запись "1" обнуляет нулевой бит векторов, "0" - наоборот, объединичивает :)
Так сделано намеренно, ибо после включения содержимое регистров равно нулю, а существующему софту требуются нечетные векторы прерываний.
Эксперименты показали, что ZX-игрушки запускаются с вектором FE для INT50. Правда, проверил только две имеющиеся на РОМдиске игрушки.
СР/М с такими векторами работать отказывается и глючит со страшной силой.
Какую хорошую новость ты сообщил! Думаю, и остальные игрушки будут работать - принцип адаптации у них одинаковый. Поэтому вводить порт F766(5) мы поспешили.
Евгений, ты уж прости, что морочу голову! У меня к тебе нижайшая просьба: давай оставим векторы как договаривались ранее, т.е. FE, FC, FA. Это позволит вести тестирование старого программного обеспечения по умолчанию - ничего не переключая. Иначе оно не будет оттестировано на новых векторах. Если со временем ситуация окажется "криминальной" - вернемся и восстановим бит переключения обнуления D0. Пожалуйста, поправь версию 1.12 и я ее сегодня прошью. На этом, думаю, надо будет временно успокоиться с версиями и поработать в прикладном плане, если, конечно, Сергей не обнаружит какую-нибудь проблему по своей линии.
Это не страшно! СРМ у нас под контролем Сергея, и ее, кроме как у тебя, ни у кого более нет. Я тоже жду от Сергея рабочую версию СРМ.
Все, что ты советуешь, я уже попробовал еще вчера. Мусор после загрузки отдельных файлов убирается установкой FF в нужном месте диска - в конце файла. А лучше это сделать еще на РС WinHEX'ом перед загрузкой. Тогда все грузится чисто!
В этом и дело. Штеккер есть (Евгений присылал в свое время с Орион-2009 :) ), но он на работе, а я третий день туда попасть не могу - тружусь на сайте у заказчика. Может, сегодня ближе к ночи туда зайду и заберу.
---------- Post added at 13:13 ---------- Previous post was at 13:11 ----------
Не понимаю, все же работало?
И как я понял, новые доработки бита D0 в прерывании IM2 по дефолту (пока не включено в F766) работают совместимо с тем как оно было всегда? Т.е. моих телодвижений не требуется...
Требуются! Порт F766(5) ввели с перепугу, из опасения, что не будут работать игрушки на векторе FE (Главный конструктор высказал предположение без проверки и... акции обвалились!).
Сейчас, оказывается, игрушки работают на векторе FE. Тогда зачем нам узаконивать на Орионе-2010 вектора, которые не стыкуются с даташит Зилог? Спектрумистам деваться некуда - их "стандарт" заложил (вынуждено!) господин Синклер, а нам зачем "резать нос" за компанию? Если игрушки работают на векторе FE, то никаких "переключателей" вводить не будем. Будут "правильные" вектора согласно даташит. Думаю нет большой проблемы в бутлоадере или биосе СРМ (где у тебя инициализируется INT50 в СРМ?) поправить адрес в одном месте и собрать ее заново. Возможно исправление можно внести на уровне дампа.
Ты это можешь сделать?
На FE будут работать только те игры от ZX, в которых область векторов IM2 проинициализирована одинаковой БАЙТОВОЙ (8бит) константой (тогда как целый адрес - это слово 16 бит) - чтобы работать как на FF, так и на FE.
.
Т.е. обработчик дожен быть для такого случая по адресу 1717h или 2121h или ADADh, но ни в коем случае не по адресу 1234h или 4567h и т.п. где младший байт не равен старшему.
.
Я не думаю, что так сделано везде, и что Евгений мог все по-быстрому проверить.
.
В настоящее время я не смогу быстро поправить CP/M, т.к. область под векторами (там обслуживаются 2 вектора - INT50 и RS232) у меня забита кодом, причем код в F-области заоптимизирован донельзя и сдвинуть вектора на байт ниже не выкинув чего-то нужного (что потянет правки в нескольких участках кода) пока не представляю как. А если придумаю, то на эти освобжденные байты у меня уже есть планы, которые пока не реализованы опять же оттого, что нет места либо много надо переделывать.
.
Более того я вообще не считаю хорошей идеей делать ОС, которая не заработает на стандартном Орионе с Z80 только оттого, что у Зилога написано что-то малоотносящеейся к компу на голом Z80 (в отсутствии полного комплекта чипов Z80 для которых может это что-то и решало).
Человек с форума зилога дал ссылку: http://www.z80.info/interrup2.htm
Цитата:
Consequently, contrary to stated documentation, bit zero is /not/ forced to zero, an IM2 interupt jumps to I*256+databus, not to (I*256+databus) AND 0xFFFE. If you want to reply on an even address, you must use hardware to supply an even address.
Отчет.
Сходил за штеккером.
Орион работает, Моник Iiyama (что не запускался на 50Гц) теперь пашет на 56Гц кадровой как зверь. :)
Ордос работает, не могу понять как переключать страницы РОМ-диска.
Почему-то не грузится CP/M, разбираюсь...
---------- Post added at 23:37 ---------- Previous post was at 22:42 ----------
Но иногда срывается в AutoSetup после которого картинка уезжает за экран влево. :v2_conf2:
Видимо оттого, что работаю с Орионом полностью выкрутив настройки на уменьшение (сжатие по горизонтали) увеличением клока на максимум - и все равно в CP/M (разрешение 480x256) один символ по горизонтали (6 точек) не влезает. Ну это мелочи, терпимо.
Разобрался: не работает SD-карточка Kingston micro-sd SDC/2G. Может, не работает оттого, что на ней написано "N0214-001.ADOLF" ? :v2_rolley
А Карточка Transcend 1G работает нормально.
В CP/M прогнал speed.com.
Показывает такой рейтинг (в коэффициенте к эталонным 2,5МГц):
F10 = 1.12
F11 = 2.25
F12 = 3.38
Интересно, 3.38 (это чуть менее 10МГц) - это предел?
Как-то странно работает клавиатура: при старте CP/M идет тест памяти, который можно прервать любой кнопкой (там анализируется только "нажато/не нажато что угодно" через диррективу Монитора). Так работает в эмуляторе и так же работает на Орионе-128. Но на Орионе-2010 тест памяти прерывается только кнопкой Enter почему-то. :v2_conf2:
На этом первый прогон закончил ибо завтра с самого с ранья идти зарабатывать на хлеб насущный. В целом доволен как слон. :)
Вопрос на засыпку: как определить версию прошивки ПЛИС?
У тебя 1.06 RTC.
Нет. предел - 4.51, но там будут глюки в СР/М. Разгонимся со временем.
Я уже не помню почему, вроде потому, что опрос там ведется не "построчно" а сразу всего поля клавиатуры, пришлось ввести "строку по дефолту" с кнопкой Интер. Иначе работа контроллера невозможна.
Нет, у тебя только одна :(
Сие мой косяк, не ту ПЗУ-ху тебе вставил (оставил). Отправлю письмом.
Виталий, спасибо! Это хороший материал!
Похоже фирма Zilog только декларирует и советует использовать четные адреса, но процессор, видимо, сам D0 не обнуляет. Чтобы в этом убедиться, необходимо на макетке спаять оригинальный процессор, пошаговый механизм выполнения программы, нацепить светодиоды на шину данных+адреса, а к шине данных прицепить регистр вектора прерываний. Только в этом случае, пошагово пройдя весь процесс можно однозначно что-то сказать.
А смысл? :) Оно же программируемое.
Давайте лучше программатор напишем (хотя что до меня, так я и в Willem могу прошить). Я просто думал - правильно ли я делаю выбор страницы ROM (ибо ничего не происходило) - кнопка F9, да?
На выходных буду паять LPT-кабель для прошиватора.
Error404, возможно мы будем выставляться на СС'2010.
Как точно назвать СР/М на нашем Орионе? Имею ввиду, точное название (на базе чего, автор адаптации ;) ).
---------- Post added at 23:29 ---------- Previous post was at 22:06 ----------
Уже точно будем.
Error404, гидэ инструмент для сохранения диска ОРДОС на SD? ;)
Кто-то там обещался, завтра на выставке показывать...
Ewgeny7, немножко не в теме, но всё же, лучше позже, чем никогда. Вопрос по схемотехнике Ориона2010, конкретнее выхода на SVGA монитор. Зачем нужны данные резисторы и конденсатор (выделены красным). Раньше эта цепь была нужна для вывода изображения через эмиттерный повторитель в схеме с RGB на чёрно-белый монитор. А сейчас для чего она в SVGA осталась?
Этой цепи (да и большей части с транзисторами) на плате уже нет. Есть только три диода и шесть резисторов.
По три резистора на канал цвета, а последовательно с диодом резистор убран?
fifan, типа вот: