PDA

Просмотр полной версии : Орион-2010. Hard & Soft



Страницы : [1] 2 3 4 5

Error404
18.01.2009, 16:18
Значит пока не стал ты заморачиваться с переделкой диспечера памяти, а сделать пока оригинал?

Диспетчер переделать не трудно (делов-то, коммутировать пару старших адресных линий), только смысла в этом никакого нет. Если не будет диспетчера по 64к (с некоммутируемой областью f000-ffff), не будет работать ВСЁ ПО Ориона (а нового написать некому). А диспетчер по 16к (по принципу действия - аналог spectrum128, но в окне 0..3FFF) уже есть в Z80 Card-II (которую единственно и имеет смысл внедрять если речь о варианте установки Z80).
А вот регенерация/видеовыход могут быть любыми аппаратно, но совместимыми программно (но экраны и атрибуты цвета в тех же страницах памяти и адресах) - тут поле для творчества непаханное, но это и сложнее, чем диспетчер. С Wait или без - несущественно, в Oрионе не было ни одно программы, привязанной к особенностям регенерации или видеовыхода.

Вот, в помощь умельцам. Третьего дня прочитал ПЗУ-шку с ROM_BIOS тестом, заточенным для Z80 Card-II (проверяет прерывания, диспетчер, порты ВВ55). В файлах этого пока нет ни на одном Орионовском ресурсе.


Добавлено модератором:
Ссылки на релиз бета-версии от Ewgeny7 - http://www.zx.pk.ru/showpost.php?p=265177&postcount=727
Мануал по прошиванию ПЛИС Ориона - http://www.zx.pk.ru/showpost.php?p=263572&postcount=678
Страничка Орион-2010 - http://orion-2010-support.narod.ru/

Error404
14.03.2009, 09:13
Договорились :)
Сейчас методом научного тыка отлажена работа со статической РАМой.
Маленько откорректировал времянки видеогенератора.
Поставил буфера и на адреса и на данные. Проц жужжит и весьма рад жизни.
Ваяю переключалку rom_oe для старта компьютера (после ресета РОМ выбирается по нулевым А14 и А15. Далее только по А14=1 и А15=1).

Ежемесячный ping. :) Как успехи на фронте борьбы с FPGA и Орионом?

Ewgeny7
14.03.2009, 13:45
Ежемесячный отчет :)
Ваяю помаленьку, в свободное от суеты время.
Переделываю проект на первый циклон, ибо ресурс перезаписей 7128 закончился :(
Зато теперь получается в 2-3 раза дешевле за альтеру и экономия на проце (использую T80 он-чип).
Чип имеет 65 ног туды/сюды. Вроде хватает, даже с запасом. Считал так - 17 адреса, 8 данные, 4 на руление РАМ-РОМ, около 5 на руление внешними портами. 4 видео, 1 на клок + 1 кнопка "рестарт". Запас большой остается.
На фото еще не установлена RAM DT71024 (128кб) и flash-ROM 29ЕЕ010. Это у меня как раз занятие на выходные.

Ewgeny7
17.03.2009, 19:23
Модель памяти и видео сделал.
Запустив проц можно будет стартануть компьютер.
Случилась затыка - http://www.zx.pk.ru/showpost.php?p=189498&postcount=164
Ищу решения...
В качестве забавного фото - кварц кердыкнулся и заработал с частотой втрое большей, получилось девять Орионов на одном экране:

fifan
17.03.2009, 20:17
Я понял, что проект на EPM7128 пришлось бросить из-за нехватки ног? А я вот пытаюсь Специалист_МХ весь на данной Алтере сделать. Правда прийдется 1-2 ГАЛки наружу выставить, тоже селектор адресов и подключение страниц RAM диска не влазеет в Алтеру (в смысле ножек последней). Пишу на VHDL языке. Чуть меньше половины вентилей не задействовано, жаль. Вот ссылка (схема внизу) http://www.newretropc.ru/Spetsialist_mx_plm.pdf
Я к чему пишу. Я с схемой не решился. Разграничить шину адреса на видео ОЗУ через буфер обязательно и для чего это нужно? На схеме поста http://zx.pk.ru/showpost.php?p=183860&postcount=87 видео данные никуда не идут?

Ewgeny7
17.03.2009, 20:41
На схеме поста http://zx.pk.ru/showpost.php?p=183860&postcount=87 видео данные никуда не идут?
Почему же? На ПЛИСину. На проц пошли позднее (через еще один буфер).


Я понял, что проект на EPM7128 пришлось бросить из-за нехватки ног?
Не только. Начала плохо прошиваться, ресурс поджимает. До конца домучивать ее не стал, лучше в Speccy2007 воткну :)
И тут весьма кстати подвалило циклонами. Грех было не воспользоваться.
Сегодня подключил к циклону конфПЗУ. Думал, ФПГА загружаться из ПЗУ будет пару секунд :) Ни фига подобного, доля секунды.

Ewgeny7
18.03.2009, 22:48
Запустил Т80. Как говорится, дело было не в бобине :)
Для проверки работы компа (УЖЕ компа!) написал коротенькую прогу

ld a,#aa
ld hl,#c000
ld de,#c001
ld bc,12000
ld (hl),a
ldir
jr -2

разместил ее в адресах ПЗУ и получил симпатичный такой полосатый матрасик с мусором по правому краю (мне лень было считать сколько будет 12*1024) :)

Теперь кумекаю, каким макаром перекинуть бинарник ПЗУ Ориона в формат VHDL. Готовые модули в сети встречал, а как они туды перегоняются... Буду думать дальше. Ибо сейчас разместив коды ПЗУ Орион должен стартануть.

Error404
18.03.2009, 23:11
Теперь кумекаю, каким макаром перекинуть бинарник ПЗУ Ориона в формат VHDL. Готовые модули в сети встречал, а как они туды перегоняются... Буду думать дальше. Ибо сейчас разместив коды ПЗУ Орион должен стартануть.

А как это и зачем - "перекинуть бинарник ПЗУ Ориона в формат VHDL". Отдельного Пзу не будет что ли ?

Какая сейчас конфигурация? Насколько близко к стандартному Ориону - сколько страниц озу, есть цвет?

Ewgeny7
18.03.2009, 23:27
Какая сейчас конфигурация? Насколько близко к стандартному Ориону - сколько страниц озу, есть цвет?
Не гоните лошадей, сдохнут :)
Пока 64к, монохром. Обычный Ори с процессором Z80 5Мгц.
Все навороты будут попозже, в том числе и безумства Z80-Card.


А как это и зачем - "перекинуть бинарник ПЗУ Ориона в формат VHDL". Отдельного Пзу не будет что ли ?
Может и будет. Я хочу пока что вставить ПЗУ в саму альтеру, чтоб огород из МГТФа не городить.

Error404
19.03.2009, 09:17
Не гоните лошадей, сдохнут :)
Пока 64к, монохром. Обычный Ори с процессором Z80 5Мгц.


Ну и все равно интересно. Вот к примеру сказал бы что 2,5 Мгц - не было бы вопросов. А 5 Мгц - как сделано? Чтобы синхронизировать с ВГ? Схема с Wait? Или ОЗУ видеогенератором опрашивается в двое чаще?

fifan
19.03.2009, 12:47
ewgeny7, дай ссылку, где брал исходники на T80.
Мое мнение: лучше не ставить ПЗУ в Циклон. Это клон только одного компа - Ориона 128 и пусть ПЗУ будет именно его и снаружи. Или ты думаешь в последствии делать загружаемые конфигурации как в Scorpion'е, Sprinter'е или Aeon'е?

Ewgeny7
19.03.2009, 15:48
ewgeny7, дай ссылку, где брал исходники на T80.
Мое мнение: лучше не ставить ПЗУ в Циклон. Это клон только одного компа - Ориона 128 и пусть ПЗУ будет именно его и снаружи. Или ты думаешь в последствии делать загружаемые конфигурации как в Scorpion'е, Sprinter'е или Aeon'е?
Ссылку не дам, лучше дам сам архив.
ПЗУ уже вынес из альтеры, решил сделать так - разместить в одном внешнем ПЗУ (128кб) и монитор(ы) и Flash-диск. Сейчас буду проверять что я там наваял на работе :)
В принципе, менять конфигурацию совсем несложно. У кого есть программаторы - могут обычным байтбластером перезалить конфиг.
Для тех, кому лениво (не умеет, боится) можно просто заменять конфигПЗУ на панельке. А в случае со связкой микроконтроллер+ПЗУ можно просто джамперами переключать сегменты конфигПЗУ. Варианта с заливкой конфигурации с "дискетки" не будет. По крайней мере, не с моим участием (я даже не представляю как).
Вариант со Специалистом не исключается :)


Вот к примеру сказал бы что 2,5 Мгц - не было бы вопросов. А 5 Мгц - как сделано? Чтобы синхронизировать с ВГ? Схема с Wait? Или ОЗУ видеогенератором опрашивается в двое чаще?
Просто сделано. безвайтово, в "окне" описанном alost'ом. ВидеоОЗУ опрашивается в середине полупериода тактовой процессора. Этот метод пригоден как раз для быстрых SRAM (я использую 128кб DT71024 15нс). Я хочу разогнаться ещё, но тогда окна уже не хватит, придется вейтить. Но в таком случае можно гнать Т80 далеко за 30Мгц.

Error404
19.03.2009, 16:44
Просто сделано. безвайтово, в "окне" описанном alost'ом. ВидеоОЗУ опрашивается в середине полупериода тактовой процессора. Этот метод пригоден как раз для быстрых SRAM (я использую 128кб DT71024 15нс). Я хочу разогнаться ещё, но тогда окна уже не хватит, придется вейтить. Но в таком случае можно гнать Т80 далеко за 30Мгц.

Мда. Такие ОЗУ хрен достанешь. В магазинах ОЗУ достаточной емкости (128к и более) в-основном 70нс и тормознее. А в случае DT71024 это еще и SOJ :v2_conf2:

Ewgeny7
19.03.2009, 21:50
Такие ОЗУ хрен достанешь.
Дык самое смешное, что я ее выдрал из старого винта Сигейта :)

falanger
20.03.2009, 00:07
Юзайте КЕШи с 486-Р1 плкт.

Error404
20.03.2009, 09:40
Юзайте КЕШи с 486-Р1 плкт.

Из старого винта или из 486-мамки одинаково недоставаемо.
Просеивать помойки или прочесывать рынки в надежде авось подвернется - это нереально. Надо ориентироваться на магазинный ассортимент. Вчера специально посмотрел каталоги Березки и Чипадипа - нету ничего подходящего.

Как бы там ни было - ewgeny7, доделывай что есть, а дальше может руки дойдут и до нормальной схемы прозрачного ОЗУ, когда для ВГ дается 2 полных такта (как оно и есть на журнальном Орионе), что позволяет пользовать на 5МГц даже тормозные 120ns чипы ОЗУ. А на 15ns тогда вообще в космос улетим. :)

Keeper
20.03.2009, 10:07
Вчера специально посмотрел каталоги Березки и Чипадипа - нету ничего подходящего.

621024 (http://chip-dip.ru/search.aspx?searchtext=621024)

UT621024PC-70LL =628128 PDIP32 (http://chip-dip.ru/product0/31742.aspx) - от 1шт. 280,00р. от 10шт. 240,00р.
Есть еще CY7C1049D-10VXI (http://chip-dip.ru/product1/1885344237.aspx) 512Кх8 SOJ или TSOP-II 10нс, но они дороже - 450р.

Error404
20.03.2009, 11:23
621024 (http://chip-dip.ru/search.aspx?searchtext=621024)

UT621024PC-70LL =628128 PDIP32 (http://chip-dip.ru/product0/31742.aspx) - от 1шт. 280,00р. от 10шт. 240,00р.
Есть еще CY7C1049D-10VXI (http://chip-dip.ru/product1/1885344237.aspx) 512Кх8 SOJ или TSOP-II 10нс, но они дороже - 450р.

Ладно, непаябельное есть (хотя обычно для таких единичных номенклатурных исключений обычно - сегодня есть, завтра только под заказ). В принципе, для единичного экземпляра при помощи хорошего паяльника и такой-то матери и soj можно впаять, хотя лично я связываться не стану - буду искать DIP. А первое по ссылке - оно на 70 ns, и как я понял не подойдет. На 70 ns 512х8 у меня в запасе и у самого есть, они много где продаются.

Keeper
20.03.2009, 11:32
буду искать DIP

Если что Вам я могу выслать W24512 или ICS61512 64Kx8 15ns. У меня в городе материнок для извлечения кэша найти можно. :)

Error404
20.03.2009, 12:13
Если что Вам я могу выслать W24512 или ICS61512 64Kx8 15ns. У меня в городе материнок для извлечения кэша найти можно. :)

Спасибо, буду иметь ввиду :)

Ewgeny7
23.03.2009, 21:37
Тэкс... Пересаживаемся на SRAM 70-80 ns. Все равно времянки подгоняю под флеш 70ns. Правда, с "окном" возникли проблемы :(
Выхода два - или тактовую понижать до 2.5Мгц, или вейтить. Второе предпочтительней, тем более там можно еще увеличить тактовую дабы компенсировать вейт. Примерно можно выбрать для памяти 100ns - 10Мгц. На задержках потеряем 1/8 примерно, итого получается средняя 8.75Мгц. Чушь, конечно, но... может быть, это новый стандарт? :)
Извините что долго копаюсь, но я пока сам ещё учусь этому делу. Написать код - дело пары часов. Но чтобы оно заработало с учетом всех реальных задержек сигналов в кристалле... Speccy2007 год с лишним делался. К тому же семейному человеку всё свободное время под это не выделить. Но занимаюсь Ори каждый день помаленьку.

Ewgeny7
23.03.2009, 23:55
Ну вот, результаты начали проявляться.
Надпись на экране соответствует поставленной цели :v2_yahoo:

Error404
24.03.2009, 13:59
Ну вот, результаты начали проявляться.
Надпись на экране соответствует поставленной цели :v2_yahoo:

Круто! :)
Это с внешним ПЗУ? Т.е. и с времянками 70ns?
А буквы действительно отображены на экране с вкраплением "лишних точек" или это мне показалось?

Ewgeny7
24.03.2009, 15:31
Это с внешним ПЗУ? Т.е. и с времянками 70ns?
А буквы действительно отображены на экране с вкраплением "лишних точек" или это мне показалось?
Да, с внешним.
С буквами есть косячок, объясняется моей ошибкой. Видеобуфер не успевает в одном такте и записать байт и вывести бит на экран. Но это лечится или прямым выводом первого бита (минуя буфер) или предварительным чтением байта и выводом его в следующем знакоместе. Интересно, а как это сделано в оригинале?

Добавлено через 6 минут
А теперь, господа, нужна ваша помощь. :v2_blush:
Прежде чем переходить к 128кб, мне нужно точно знать работу с портами ВВ55.
Как я понимаю, никакого суперпрограммирования ВВшек там не производится? Есть ли смысл запихивать в альтеру образы ВВ55 (нехилые кстати) или можно просто приспособить несколько регистров для работы конкретно с ROM-диском и клавиатурой? :v2_conf2:

Error404
24.03.2009, 16:22
Прежде чем переходить к 128кб, мне нужно точно знать работу с портами ВВ55.
Как я понимаю, никакого суперпрограммирования ВВшек там не производится? Есть ли смысл запихивать в альтеру образы ВВ55 (нехилые кстати) или можно просто приспособить несколько регистров для работы конкретно с ROM-диском и клавиатурой? :v2_conf2:

Для нескольких ВВ55 "внутри CPLD", думаю, тупо не хватит внешних ножек матрицы (наружу - 24 ноги для каждой эмулируемой ВВ55).

Суперпрограммирования не производится.

Однако порт F400 в зависимости от примененной схемы включения клавиатуры (rk86/ms7007) настраивается на прием\передачу по отличающимся портам (т.е. в одном случае: A-передача, B-прием, а в другом зеркально: B-передача, А-прием), порт С используется на разных линиях - при надобности 3-х линий, выводить придется все 8. При этом ПО проверяя содержимое конфигурационого регистра (F403) определяет тип клавиатуры.

Аналогично порт F500 для работы c ROM-диском и он же для работы с IDE настраивается на прием\передачу по отличающимся портам (аналогично как для клавиатур).

Т.е. для каждой из ВВ55 тремя обычными регистрами (+схемой их выборки) не обойтись по-любому, надо как минимум четыре (что уже нивелирует замену ВВ55 на набор из нескольких мелкосхем, не говоря уже о потере универсальности) и при этом двунаправленных.

В принципе, при некоторой потере универсальности решения можно договориться "используем только клавиатуру рк86" - тогда надо только 19 ножек CPLD (матрица 8х11) и можно сделать на регистрах внутри CPLD. Чтение из порта F403 используют только для определения клавиатуры ms7007 по схеме Сугоняко, для рк86 прокатит если этого регистра вообще не будет, и читаться из него (как и любого отсутствующего регистра) будет 0FFh.

Для ППА ROM-диска / IDE такое не прокатит - надо ставить "честный" ВВ55.

Ewgeny7
24.03.2009, 16:23
В упрощенном виде так.
Полосы исчезнут в 128кб варианте.

b2m
24.03.2009, 16:23
Если ограничиться только установкой режимов ввод/вывод и отбросить режимы со стробированием приёма/передачи, то ВВ55 должен быть не такой уж и большой. Ну, ещё наверное нужны команды установки битов порта С. Остальное вроде-бы не используется.

Ewgeny7
24.03.2009, 16:29
ВВшки в альтере не требуют внешних ног...
РОМ-диск, например, располагается в той же ПЗУ что и монитор. Просто при обращении к портам ВВ будем выставлять адрес с выходов ВВ и читать данные в порт ВВ.
Клавиатуру я пока ставлю "реальную" - контроллер Камиля с живой ВВ55. Позже запихну это хозяйство на кристалл, исходники (требующие переработки) есть.

Добавлено через 28 минут

Для ППА ROM-диска / IDE такое не прокатит - надо ставить "честный" ВВ55.
Спасибо, учтем.

Error404
24.03.2009, 18:50
В принципе, можно IDE пересадить на F600 ("порт принтера"). В софте поправить equ-константу да перекомпилить :)

Просто мне казалось, что ORDOS и соответственно ROMDISK настолько малоинтересны, что я изначально использовал порт F500 под что угодно кроме ROMDISK-а, а третьей ВВ55 у меня на реале не было вовсе. :)

Ewgeny7
24.03.2009, 21:46
В принципе, можно IDE пересадить на F600 ("порт принтера").
Ну вы блин, даете :)
Разумеется, надо разделить. Я на "Скорпионе" без РОМ-диска не представляю себе работы. А для "карманного" Ориона ROM (Flash)-диск тем более актуален. Я даже хотел ввести еще один порт для переключения выбора диска.
Сделай пжжжалллста!

Добавлено через 23 минуты
Разогнал до 10Мгц (на внеэкранной области). Курсор просто колбасит :v2_walkm:
Нужна ли такая скорость? или ограничиться 5Мгц?
Если верить симулятору, то при внешней памяти 70нс можно попробовать гнать до 20Мгц. :v2_blink:

Error404
25.03.2009, 12:11
Ну вы блин, даете :)
Разумеется, надо разделить. Я на "Скорпионе" без РОМ-диска не представляю себе работы. А для "карманного" Ориона ROM (Flash)-диск тем более актуален. Я даже хотел ввести еще один порт для переключения выбора диска.
Сделай пжжжалллста!


ОК, про IDE буду иметь ввиду.
Но для "порта принтера" F600 все равно надо подключать "честную" внешнюю 82с55. Хошь - для принтера, хошь - для орионовского программатора ПЗУ, хошь - для IDE.

Что касается ROM-disk-а, я рассуждал так: В отсутствии НГМД он теряет ценность, т.к. содержимое квазидисков ОЗУ (при работе с ORDOS) просто некуда сохранить, и неоткуда загрузить. Если же у нас в качестве "устройства куда сохранить" уже есть дисковод или IDE-устройство (например CompactFlash), то с него можно сразу грузить CPM - куда как лучшую ОС. ORDOS же в этом случае (т.е. и ROM-disk) представляет только естественнонаучный интерес - типа "вот оно как было по бедности то".
Большое ПЗУ (а еще лучше - FLASH) с выборкой более 2к можно более рационально применить, например адаптировавав CP/M для загрузки из ПЗУ, а возможность работы с НГМД и IDE в ней останется.
Более того, такие разработки уже были (хотя и не получили распространение из за отсутствия "в массах" больших ПЗУ), и в архитектуре Z80Card-II даже был порт страниц ПЗУ - порт 0FCh.



Разогнал до 10Мгц (на внеэкранной области). Курсор просто колбасит :v2_walkm:
Нужна ли такая скорость? или ограничиться 5Мгц?
Если верить симулятору, то при внешней памяти 70нс можно попробовать гнать до 20Мгц. :v2_blink:

Можно будет сделать переключатель (аппаратно или программно каким-то портом)? По-умолчанию 5MHz (с Wait или "честных"), при включени Turbo - гнать по максимуму. Это нужно т.к. большинство ПО не умеет подстраиваться на частоту, и ввод с клавиатуры на высоких частотах станет нереальным. В наиболее продвинутой версии CP/M Ориона (которую надо откуда-то еще загрузить, т.е. только в варианте с НГМД или IDE) есть драйвер, где ввод с клавиатуры синхронизируется на прерываниях 50Гц и не завивит от частоты CPU. Для такой ОС Турба категорически приветствуется. Но это только для архитектуры Z80Card-II, ее пока как я понимаю еще нет. А в стандартном Орионе прерываний нет вообще (зато есть тупой звук по EI/DI - зла не хватает :) )

Чуть не забыл - на частотах более 5МГц возможно будет не успевать контроллер клавиатуры PS/2 (если используем версию caro на основе меги48). Хотя это в принципе решаемо вводом нескольких тактов ожидания (/WAIT CPU) при обращении на чтение к порту клавиатуры.

Ewgeny7
25.03.2009, 15:35
Error404, давай сделаем так. Ты продумай, какую периферию лучше оставить (придумать), будем плясать от твоих идей, ибо я пользователем Ориона небыл.
Монитор-1 и ромдиск я пока поставил для "посмотреть" и в целях отладки.
Честную ВВ55 можно поставить, можно хоть все три. Дополнительных пинов уйдет немного (WR_55, RD_55, F4_sel, F5_sel, F6_sel), ибо шины данных и адреса итак уже выведены.
Я ради эксперимента прицепил к проекту файлы от igor_t работающие с ПС/2 клавиатурой. Сижу, разбираюсь что куда цеплять и как оно работает (ВВ55 - программная).
Кстати, реальные ВВ55 держат 10Мгц?

Keeper
25.03.2009, 17:49
Кстати, реальные ВВ55 держат 10Мгц?

Не держат, но на 5 МГц заработает КР1834ВВ55

Ewgeny7
25.03.2009, 18:19
Не держат, но на 5 МГц заработает КР1834ВВ55
Насколько я знаю, на 5Мгц работают и 580ВВ55А. И некоторые экземпляры должны работать на 10Мгц (из публикаций в "Радио").

Error404
25.03.2009, 18:41
Насколько я знаю, на 5Мгц работают и 580ВВ55А. И некоторые экземпляры должны работать на 10Мгц (из публикаций в "Радио").

на 5Мгц (но не более, на 10М запустятся только единицы) работают почти все 580ВВ55 выпуска не ранее второй половины 80-х и свежее. Но в магазине их уже не купить, да и нафиг не надо когда в любом магазине есть 82с55 (которые суть КР1834ВВ55 ) - эти и на 10 запустятся, а цоколевка одинаковая. И стоят дешево.

Ewgeny7
25.03.2009, 23:20
когда в любом магазине есть 82с55
Ну значит и не буду мозги парить. Так и сделаю.

П.С. Засунул 82С55 в альтеру. вроде нормально прижилась. Чтобы ПС/2 привинтить, надо информацию какой порт используется на выход (на клавиатуру) и какой на вход. Клава от РК, офкоз.

Error404
26.03.2009, 11:30
П.С. Засунул 82С55 в альтеру. вроде нормально прижилась. Чтобы ПС/2 привинтить, надо информацию какой порт используется на выход (на клавиатуру) и какой на вход. Клава от РК, офкоз.


Картинка клавиатуры РК-86 тут:
http://retro.bip.ru/RK86/CPU/KeyBoard.html
На Орионе она подключается абсолютно к тем же ножкам ВВ55.
На порт А (F400) выдается сканкод (т.е. этот порт работает на вывод), с портов B и C (F401, F402) считывается результат сканирования в зависимости от нажатых кнопок, т.е. они работают на вход.

С другой стороны, если полностью встроена 8255, то она сама устанавливает выходы (направление передачи) в нужное состояние, когда пользовательская программа запишет в регистр конфигурации (F403) нужное значение.

Ewgeny7
28.03.2009, 01:13
Вот, типа клавиатуру подключил...
Работает...
Теперь можно цеплять все остальные порты.

Gryphon
28.03.2009, 02:12
А когда примерно выйдет уже полностью готовая схема?

fifan
28.03.2009, 07:09
ewgeny7, возникли вопросы по сыркам по T80:
1. Какие файлы использовать? Запускаю T80.vhd мой Max не может найти T80_Pack.vhd (вернее библиотеки work) - в какой директорий его ложить?
2. А если присвоить Mode значение 2, то будет эмуляция процессора 8080?
3. Сколько в макроячейках занимает откомпилированный код T80?

Ewgeny7
28.03.2009, 12:28
1. Какие файлы использовать?
Используй шесть файлов:
T80s
T80
T80_ALU
T80_MCode
T80_Pack
T80_Reg
Обрати внимание, что Т80s - головной файл, он описывает Z80 как синхронный, т.е. процессор имеет две шины данных - на вход DI и на выход DO. Так в самом деле проще и удобней. Можешь вместо T80s использовать T80a - асинхронный, с одной шиной данных (как и у реального процессора). Дело вкуса. :)



2. А если присвоить Mode значение 2, то будет эмуляция процессора 8080?
Верно. Я пробовал и его. Работает нормально и места занимает в два раза меньше.



3. Сколько в макроячейках занимает откомпилированный код T80?
Зависит от используемых функций процессора. Полный Z80 - около 2100, если не использовать прерывания, захват шин, рефрешь - около 2000.
В режиме 8080 - точно не помню, но около 1200. В АСЕХ запихнуть можно, в циклоны тем более. Я использую наипростейший первый циклон пятибаксовый EP1C3T100-8N, 2910 ячеек. весь орион (сделанный на сегодня) занял 2057 ячеек вместе с Z80.

Добавлено через 10 минут

А когда примерно выйдет уже полностью готовая схема?
Когда преальфа перейдет в бету :)
Пока использованы:
EP1C3T100 сама альтера
EPCS1 конфПЗУ (кстати, цена упала до 2,68$)
DT71024 ОЗУ статика, желательно 15-30нс, будут проблемы с доставанием - используем 70нс, но тогда две микросхемы с раздельными шинами данных.
29F010 флеш. Просто флешь. от 2 килобайт и до бесконечности.
74HC00 тактовый генератор.
КР580ВВ55А ёжику понятно.
ATMega48 контроллер клавиатуры от caro.
рассыпуха конденсаторов, резисторов и пока один транзистор КТ3102 (КТ315).

Павел Рябцов
28.03.2009, 12:48
DT71024 ОЗУ статика, желательно 15-30нс, будут проблемы с доставанием - используем 70нс, но тогда две микросхемы с раздельными шинами данных.

Есть память HM628128A , цена 200 рубликов,штук 5 осталось.

Gryphon
28.03.2009, 14:06
В принципе все можно найти, кроме DT71024. А, вопрос к ewgeny7: вот ты сбацал видеосистему Ориона, а как она работает? Т.е. ее прям в схемку можно притулить и он автономно (без ие5 и др. счетчиков и регистров) будет считывать значения ОЗУ.

Ewgeny7
28.03.2009, 15:22
вот ты сбацал видеосистему Ориона, а как она работает? Т.е. ее прям в схемку можно притулить и он автономно (без ие5 и др. счетчиков и регистров) будет считывать значения ОЗУ.
Не совсем понял о чем речь. В какую схемку? Ты имеешь ввиду использовать ПЛИС как видеокарту чтобы не использовать ИЕ5, а остальное делать на дискретах?

Ewgeny7
28.03.2009, 15:36
Может кому интересно будет...
На осцилограммах симулятора видно импульсы чтения ОЗУ видеогенератором и саму тактовую идущую на процессор. Видно как она "притормаживает" в моменты чтения видеоОЗУ. Частота тактовой - 5Мгц, я решил остановиться на ней ибо с клавой работать на 10Мгц вообще нереально.

Ewgeny7
28.03.2009, 23:39
Сделал порты F900 и FA00.
Что нужно сделать из Z80-Card?

Gryphon
29.03.2009, 10:39
Не совсем понял о чем речь. В какую схемку? Ты имеешь ввиду использовать ПЛИС как видеокарту чтобы не использовать ИЕ5, а остальное делать на дискретах?
Вроде да. Что может такая видеосистема заменить в оригинальной схеме?

fifan
29.03.2009, 21:07
Вопросы ewgeny7'у:
1. Эксперементировал по t80 в Quartus'е, результаты таковы: Z80 - 2185 ячеек, 8080 - 1255 ячеек. В обоих случаях задействовано 63 пина. В последнем случае очень много предупреждений дает Quartus, наверное нужно лишние пины убирать - а какие?
2. Можно ли задествовать внутреннее ОЗУ в случае EP1C3T144C6 59904 байт (58,5 кБайт)? И как это сделать? Хочу применить в Специалисте 12 кБайт в качестве ОЗУ цвета.
3. Не попадались ли ссырки на К580ВИ53 - 8253? А то только есть сырки на 8254.

Error404
29.03.2009, 21:34
DT71024 ОЗУ статика, желательно 15-30нс, будут проблемы с доставанием - используем 70нс, но тогда две микросхемы с раздельными шинами данных.

Есть память HM628128A , цена 200 рубликов,штук 5 осталось.

Они в самом быстродействующем варианте - 55ns.

Вообще, нужно обсудить вопрос о памяти, т.к. лично для меня доставаемо только то, что в магазине. И еще два критерия: хочется иметь в Орионе как минимум 512к памяти (на 128к только в игрушки играться, да в ORDOS). При этом поскольку предполагается монтаж на МГТФ, то желательно решить задачу одним-двумя корпусами ОЗУ максимум. Т.е. оптимально было бы 1мсх 512к х 8 или 2мсх 512к х 8.

Error404
29.03.2009, 23:09
Сделал порты F900 и FA00.
Что нужно сделать из Z80-Card?

Из карда нужно делать всё! Итак, рекомендую примерно в такой последовательности (по значимости доработки):
0. Порт 0FBh все 8 бит (сразу заложи дешифрацию и выборку всех портов [0F8h..0FFh] как по IN/OUT, так и по STA/LDA 0F8xxh...0FAxxh)
1. начни с прерываний 50Гц - тут напомню, что шина данных на Орионе должна быть терминированной к +5В (с "подвешенной" шины должно читаться 0FFh), т.к. не все программы при работе с перерываниями IM2 готовят полную таблицу векторов IM2, а только одно слово по адресу 0xxFFh.
2. Диспетчер 16к в окне 0...3FFFh адресуется только младшими четырьмя битами (только 256к)
3. Выключение ПЗУ/портов из адресного пространства F400...FFFF (FULL RAM mode)

Защиту ОЗУ под ПЗУ [от порчи при обращении к портам как к памяти командами STA/LDA] можно пока не делать, оно не крайне важно, уже считается расширением карда. Хотя если будет не лень, то...

Еще очень хотел бы видеть в конечном варианте ОЗУ 512к (или более), из которых первые 256к попадают под диспетчер 16к, все вместе (вся память) - под диспетчер страницами 64к (порт 0F9h). Также хочу экран 480 точек (тупо "удлинняется" экранное поле с 12 до 15 килобайт - вместо экрана 0..2FFF становится 0..3BFFh, 4000h..6FFFh -> 0..7BFFh и т.д.). Этот режим включается портом F8 = F800 (D7=1). Необходимо для получения "читабельного" режима 80х25 символов.

Вообще, все доработки типового Орион+Z80 до Z80-CardII можно посмотреть тут:
http://zx.pk.ru/showpost.php?p=180097&postcount=69
Дублирую в архиве во вложении.

Проверять этим тестом:
http://zx.pk.ru/showpost.php?p=177618&postcount=21

Еще процитирую сам себя:



=============== ОРИОН - 128 + Z80 Card II ====================

Порт F8 (F800) - Управление цветом. Если в порт записывается байт с
битом D2, равным 0, дисплей работает в монохромном
(двуцветном) режиме. Если бит D1=0, устанавливается
16-цветный режим работы дисплея, а если D1=1 -
дисплей переходит в четырехцветный режим.

Последний триггер DD30 меняет палитру цветов в двух-
(монохромный на цветном дисплее) и четырехцветных режимах.

D7=1 - включить экран 480 точек

Порт F9 (F900) - Упр.страницами для режима "Орион-128".
Порт FA (FA00) - Упр.экранами
"1" D0,D1 - номер экрана (0-3)
D2-D5 - резерв
D6 - выкл.регенерации ОЗУ (чтоб ОЗУ сдохло)
D7 - экран 384/512 точек (по горизонтали)

Порт FB - УПРАВЛЕНИЕ ПРЕРЫВАНИЯМИ И ДИСПЕТЧЕРОМ:

D7 D6 D5 D4 D3 D2 D1 D0
! ! ! ! ! ! ! !
MZ INT XMEM RZRV BS1 BS0 SS1 SS0
! ! ! ! ! ! ! !
! ! ! ! ! ! !______!____ SEGMENT SELECT
! ! ! ! !______!__________________ BANK SELECT
! ! ! !
! ! ! !________ РЕЗЕРВ ДЛЯ BANK SELECT (ВСЕГДА = 0)
! ! !_______________ FULL RAM MEMORY (ПРИ D5=1 0-FFFF - ОЗУ)
! !______________________ INT ENABLE (ПРИ D5=0 ЗАПРЕЩЕНЫ)
!_____________________________ DISPATCHER OFF (ПРИ D7=1 ОТКЛЮЧЕН !)

БИТЫ BS1,BS0 ОПРЕДЕЛЯЮТ НОМЕР БАНКИ ОЗУ, А БИТЫ SS1,SS0 ОПРЕДЕЛЯЮТ КАКОЙ
16-ТИ КИЛОБАЙТОВЫЙ УЧАСТОК ИЗ ЭТОЙ БАНКИ БУДЕТ ДОСТУПЕН ПО АДРЕСАМ 0-3FFF.
ДАННЫЕ, ЗАПИСАННЫЕ В ПОРТ, МОЖНО СЧИТАТЬ С ПОРТА FB (АЛЬТАИР,SUPER-3)

Порт FC - УПРАВЛЕНИЕ ТЕНЕВЫМ ПЗУ. НА ПЛАТАХ "СУПЕР-3" БИТОМ D7 ВКЛ-СЯ ТЕНЕВОЕ ПЗУ

Порт FD - Резерв адреса для двухбайтовых
адресов портов расширений "ZX".
Порт FE - В ЭМУЛЯТОРЕ "СИНКЛЕРА" ЗВУК И КЛАВИАТУРА (ПРОГРАМНЫЙ ЗВУК ПО БИТУ D4)
Порт FF - "ПРОГРАМНЫЙ КЛЮЧ" ДЛЯ ВЫВОДА ЗВУКА (ПЕРЕКЛЮЧАЕТСЯ ПО КАЖДОМУ ОБРАЩЕНИЮ)


Порты 0F8H...0FAH работают только на запись, в режиме "Orion-128" они доступны
также как ячейки памяти 0F800H, 0F900H, 0FA00H.


АДРЕСАЦИЯ ВНЕШНИХ УСТРОЙСТВ

В ОБЛАСТИ ПАМЯТИ (НЕДОСТУПНЫ В РЕЖИМЕ FULL RAM MEMORY):
F400..F403 - ППА КЛАВИАТУРЫ
F500..F503 - ППА ROM-Disk
F600..F603 - ППА Printer
F700/F720 - КОНТРОЛЛЕР ДИСКОВОДА (F720/D3,D6 - ПЛОТНОСТЬ ЗАПИСИ)
F760 ЧАСЫ 512ВИ1



Часы 512 ВИ1 потом поставим. Схему я тут уже публиковал - 4 ножки CPLD потребуется + собственно 512ВИ1 с обвязкой.

Порт ВВ55 предлагаю ставить только один - 0F600h (для компактности).

ПЗУ нужно планировать 32 ножек - flash 2xС010...2xC040 (128к...512к). На CPLD заводится всё (включая /WR) кроме старшего адресного разряда (адресуем только 256к + перемычка для ручного переключения "половинки" - защита от порчи). Пока делай как и планировал - ROM-disk, потом, если еще останется порох в пороховницах, сделаем 1к диспетчер на 256 страниц в окне 0FC00h..0FFFFh включаемый портом 0FCh.

Ewgeny7
29.03.2009, 23:43
fifan,
1. Не знаю. А тебе надо все выводы проца наружу тащить? Тогда может лучше внешний поставить? А предупреждения могут быть о том что задействовано только часть кода.
2. Можно, конечно. А памяти хватит? Там вроде 58 килобит, т.е. 7 килобайт всего выходит, да и сам проц 128 бит займет под регистры.
3. надо глянуть в opencores.com

Добавлено через 4 минуты
Error404, блин, ну наворотил то... до зимних холодов ваять придется :)

Добавлено через 5 минут

Порт ВВ55 предлагаю ставить только один - 0F600h (для компактности)
Поздно, сигналы выведены для всех трёх, на F400 уже висит клавиатура.

Добавлено через 7 минут

(сразу заложи дешифрацию и выборку всех портов [0F8h..0FFh] как по IN/OUT, так и по STA/LDA 0F8xxh...0FAxxh)
От F400 и выше сделал доступ и по IORQ и по MREQ.

Добавлено через 9 минут

шина данных на Орионе должна быть терминированной к +5В (с "подвешенной" шины должно читаться 0FFh)
Это было сделано изначально, ибо по другому нельзя.

Добавлено через 10 минут

Выключение ПЗУ/портов из адресного пространства F400...FFFF (FULL RAM mode)
Каким портом выключать? Стоп, торможу, пойду твои доки покурю... :)

fifan
30.03.2009, 20:13
2. Можно, конечно. А памяти хватит? Там вроде 58 килобит, т.е. 7 килобайт всего выходит, да и сам проц 128 бит займет под регистры.

Вообще-то 4 штуки не полные 565РУ6 это будит 12/2=6 кБайт - должно хватить...

Error404
31.03.2009, 12:24
Поздно, сигналы выведены для всех трёх, на F400 уже висит клавиатура.



Т.е. для ROM-disk и клавиатуры все же решил применить отдельные BB55?

Ewgeny7
31.03.2009, 17:01
Т.е. для ROM-disk и клавиатуры все же решил применить отдельные BB55?
Да, сделать порты как в оригинале. Благо, четыре штуки ВВ55 имеется.
Небольшая затыка в дальнейшем продвижении - переделываю платку под другую память, заодно ставлю парочку ВВ55. Короче, порядок навожу, а то уже страшно лишний раз с паяльником влезть.

Ewgeny7
01.04.2009, 18:00
Достал по дешевке две микросхемы ОЗУ.
CY7C1021 (64к 16бит 12нс) и K6X4016 (256кб 16бит 70нс). Т.е. первая дает 128кб, вторая 512кб. Брошу монетку, какую ставить :)

Error404
01.04.2009, 21:17
Достал по дешевке две микросхемы ОЗУ.
CY7C1021 (64к 16бит 12нс) и K6X4016 (256кб 16бит 70нс). Т.е. первая дает 128кб, вторая 512кб. Брошу монетку, какую ставить :)

Вторую. Или обе. Ибо "128к only" - это несерьезно.

Error404
17.04.2009, 19:28
Ну как, есть сдвиги? :)

Ewgeny7
19.04.2009, 00:18
Эээ... Пока буду молчать аки партизан.
Но прошу уточнить кой-чего.

Винчестер с СР/М болтается на F600 (надеюсь), порт представляет из себя ВВ55+ЛН1, схема приводилась. Винчестер имеем Сам_сунь, 1Гиг. Образ Орионовского винта с СР/М содержимым тоже есть. Заливаем образ на винт, ставим требуемую прошивку ПЗУ и вроде должно пахать. Правильно? Какая прошивка актуальна для этой процедуры, и как (объясните на пальцах) залить образ на винт.
Спасибо :)

Gryphon
19.04.2009, 11:07
Вот у меня вопрос. Как при подключении HDD к ориону перенести на него ORDOS или CPM. Да, а какой монитор надо ставить, чтоб грузиться с HDD. И вообще, у кого есть побольше инфы по подключению HDD к ориону.

Ewgeny7
19.04.2009, 12:13
Дополнительные вопросы :) на тему правильно ли я сделал:
1. В режиме фуллрам область F000-FFFF остается подключенной постоянно "0" банка. Независимо от подключенной банки.
2. При обращении к внешним устройствам по IORQ младший октет адресов копируется в старший и селект порта ведется по А15 downto А8.
3. 640кб памяти надеюсь хватит для счастья? (128 экранка + 512 рамдиск)

Error404
19.04.2009, 22:41
Эээ... Пока буду молчать аки партизан.


Значит, будем пытать :)


Вот у меня вопрос. Как при подключении HDD к ориону перенести на него ORDOS или CPM. Да, а какой монитор надо ставить, чтоб грузиться с HDD. И вообще, у кого есть побольше инфы по подключению HDD к ориону.


Винчестер с СР/М болтается на F600 (надеюсь), порт представляет из себя ВВ55+ЛН1, схема приводилась. Винчестер имеем Сам_сунь, 1Гиг. Образ Орионовского винта с СР/М содержимым тоже есть. Заливаем образ на винт, ставим требуемую прошивку ПЗУ и вроде должно пахать. Правильно? Какая прошивка актуальна для этой процедуры, и как (объясните на пальцах) залить образ на винт.
Спасибо :)

Правильно, должно пахать. Отдельная прошивка ПЗУ пока существует только для загрузки с F500. Эта прошивка есть в составе эмулятора в .\ROM\ (который можно скачать [если повезет :D] на моей странице). Монитор с IDE можно в принципе перекомпилить на F600, но он не поддерживает ни магнитофон, ни загрузку ORDOS с ROM-DISKa, т.е. для "классического" дремучего ;) орионщика малоинтересен.

Поэтому сегодня я пол-дня потратил чтобы слепить утилиту-загрузчик HddF600$.ord (ее можно прошить в ROM-DISK и использовать для загрузки с IDE c порта F600 под ORDOS, с любым Монитором), которая использует загрузчик, аналогичный Мониторам M35ZRKH.BIN и M35ZMSD.BIN. Читайте во вложении, там же и HddF600$.ord.

Старею, производительность - 500 байт кода за полдня. :D
В эмуляторе все работает. Проверяйте на реале.

В качестве образа диска рекомендую диск с игрушками (на нем более-менее свежая [читай работоспособная] версия ОС с поддержкой IDE), да и лучшего теста для Z80CardII чем игры - не придумать :D :
http://orion-z.hoter.ru/file/337/4431_GAMES.zip

Залить образ на реальный IDE-диск под Windows можно утилитой HddUtil.exe:
http://orion-z.hoter.ru/file/355/4538_HddUtil.zip

Утилита консольная (т.е. запускать из CMD - оно напишет подсказку). Я ее тестировал на чтении/заливке образов с/на как реальных винтов (подключенных к IDE материнской платы), так и для CompactFlash в обычном китайском USB-адаптере (CardReader).

Error404
19.04.2009, 23:03
Дополнительные вопросы :) на тему правильно ли я сделал:
1. В режиме фуллрам область F000-FFFF остается подключенной постоянно "0" банка. Независимо от подключенной банки.
2. При обращении к внешним устройствам по IORQ младший октет адресов копируется в старший и селект порта ведется по А15 downto А8.
3. 640кб памяти надеюсь хватит для счастья? (128 экранка + 512 рамдиск)

1. не знаю. Это нужно в-основном для Z80-игр, которые работают в 0 странице, так что мы наверное не заметим разницы даже если это и неправильный вариант.
2. Не понял. Это как в московской Z80Card, где лишние 2 КП11 стоят для псевдосовместимости с i8080 по OUT? Если да, то это совершенно лишнее.
3. Хватит. :)

ПЗУ-Тест (см. по ссылке) запускал? Что пишет?
http://zx.pk.ru/showpost.php?p=177618&postcount=21

Gryphon
20.04.2009, 00:53
Вопрос к ERROR404: Как в одну EEPROM запихнуть все биосы и тест ОЗУ? А вообще у меня возникла такая мысль-написать ORION-BIOS, который будет при каждой загрузке будет тестировать ОЗУ, поставить туда драйвер HDD и проч, примерно как в ATM turbo. ДА, и последний вопрос: вот у меня "голый" Орион, даже клавы нет. Я не хочу собирать РОМ-диск, а хочу привинтить HDD, так-этак на 800 Мб. Я вот у тебя на сайте видел твой орион, хочется сделать также. Как ты сделал ПЗУ как раз для HDD, и ,вообще, какой предел должен быть у HDD?
Если что, извините за глупые вопросы :)

Error404
20.04.2009, 09:19
Вопрос к ERROR404: Как в одну EEPROM запихнуть все биосы и тест ОЗУ? А вообще у меня возникла такая мысль-написать ORION-BIOS, который будет при каждой загрузке будет тестировать ОЗУ, поставить туда драйвер HDD и проч, примерно как в ATM turbo. ДА, и последний вопрос: вот у меня "голый" Орион, даже клавы нет. Я не хочу собирать РОМ-диск, а хочу привинтить HDD, так-этак на 800 Мб. Я вот у тебя на сайте видел твой орион, хочется сделать также. Как ты сделал ПЗУ как раз для HDD, и ,вообще, какой предел должен быть у HDD?
Если что, извините за глупые вопросы :)

У меня для выбора ПЗУ пока просто используется dip-переключатель, переключающий старшие (более 2к) адреса ПЗУ к лог 0 или 1. Использую 28с512 куда последовательно прошиты несколько прошивок. В части IDE без ром-диска самое сложное - поставить Z80 card II :) . Т.к. единственная из известных мне (в предыдущем посте по ссылке) CPM с IDE расчитана на эту платформу. На ВМ80 не запустятся ни Монитор, ни эта CPM. В остальном все просто - шьем в ПЗУ Монитор M35ZRKH.BIN (можно взять из дистрибутива эмулятора), собираем схемку для IDE (где-то здесь была), записываем на диск образ диска (лишь бы диск был с поддержкой LBA и не менеее файла образа), грузимся.

Текущая реализация этой CPM поддерживает размер файловой системы в одной партиции не более 64M, либо две общим размером не более 64М (это не ограничение CPM, а ограничение из-за размера дискового буфера, размер которого компромисно выбирает сам разработчик).

Gryphon
20.04.2009, 13:34
Текущая реализация этой CPM поддерживает размер файловой системы в одной партиции не более 64M, либо две общим размером не более 64М (это не ограничение CPM, а ограничение из-за размера дискового буфера, размер которого компромисно выбирает сам разработчик).
Ого!!! Это где такой жестак достать.


У меня для выбора ПЗУ пока просто используется dip-переключатель, переключающий старшие (более 2к) адреса ПЗУ к лог 0 или 1. Использую 28с512 куда последовательно прошиты несколько прошивок.
А как программировать такой ПЗУ (кстати, у меня полно таких со старых компов)
Вообще, надо перекодировать BIOS с Орион-ПРО на ОРИОН-128, там почти есть все: и диагностика, и загрузочник, и т.п. Или переделать с IBM PC.

Error404
20.04.2009, 14:16
Ого!!! Это где такой жестак достать.


64M (мегабайт) это по современным меркам очень немного - много меньше любого даже несовременного винта или карточки памяти. Хотя на эти 64М влезает в архиве всё наследие Ориона :)



А как программировать такой ПЗУ (кстати, у меня полно таких со старых компов)
Вообще, надо перекодировать BIOS с Орион-ПРО на ОРИОН-128, там почти есть все: и диагностика, и загрузочник, и т.п. Или переделать с IBM PC.

ПЗУ программирую программатором Willem v4.5 (покупал почтой из Тайланда, аналогичный фабричный в России стоит в 5 и более раз дороже).
А постоянное наличие меню, диагностики и т.п. в ПЗУ дело спорное. Оно обычно только при наладке нужно, а при загрузке необходимость дополнительных нажатий кнопок только раздражает.

На Орион-ПРО, кстати, тоже была схема подключения IDE (контроллер из десятка мелких ИМС, как кстати и схема для 512ВИ1 - если кому-то интересно, могу приаттачить схемы), но мне неизвестно никаких программ это поддерживающих, поэтому я не стал это эмулировать (не на чем проверить) и никак и не могу охарактеризовать.

Добавлено через 21 минуту


Эээ... Пока буду молчать аки партизан.


Напиши чего-нибудь, порадуй...

Gryphon
21.04.2009, 13:16
В части IDE без ром-диска самое сложное - поставить Z80 card II . Т.к. единственная из известных мне (в предыдущем посте по ссылке) CPM с IDE расчитана на эту платформу. На ВМ80 не запустятся ни Монитор, ни эта CPM.
Т.е. на кр580вм80а не потянет HDD (просто я даже не представляю, где достать Z80 card II)

Error404
21.04.2009, 14:16
Т.е. на кр580вм80а не потянет HDD (просто я даже не представляю, где достать Z80 card II)

Просто я исторически пишу в коде Z80 не задумываясь о совместимости с i8080 (т.к. его дурацкие мнемоники вызывают почти физическое отторжение). При этом не использую каких-то особенных "фич" z80. Вполне вероятно, что если заменить jr, ldir и djnz в моем коде на соответствующие конструкции i8080 и перекомпилить, то все заработает и на i8080, но я это не проверял. На аппаратном уровне нет каких-то особенных привязок к z80 из-за чего не было бы возможности использовать i8080.

Т.е. по факту, сейчас на Орионе нет ни одной программы в коде i8080 с интерфейсом к IDE по схеме на ВВ55. Все что есть у меня, я делал сам, и соответственно все для Z80.

Ewgeny7
21.04.2009, 22:20
Напиши чего-нибудь, порадуй...
Порт HDD сделал, буду подключать винт с СР/М.
А сейчас изобреДаю схему формирования цвета (до сих пор комп был черно-белый, хоть и с двумя видеобанками).
Вопрос на засыпку - а в Орионе вообще использовалось работа с портами именно как с портами (через IORQ)? Ибо я эту лабуду с перемещением младших адресов в старшие убрал нафик...
Да, INT поставил примерно 8 мкс, нормально?

Error404
21.04.2009, 22:51
Порт HDD сделал, буду подключать винт с СР/М.
А сейчас изобреДаю схему формирования цвета (до сих пор комп был черно-белый, хоть и с двумя видеобанками).
Вопрос на засыпку - а в Орионе вообще использовалось работа с портами именно как с портами (через IORQ)? Ибо я эту лабуду с перемещением младших адресов в старшие убрал нафик...
Да, INT поставил примерно 8 мкс, нормально?

Конечно, работа с портами именно как с портами (по OUT) практиковалась для портов F8...FF, в т.ч. 16-битных (типа BFFD, FFFD). С нимим же (8-битными F8...FA) и по STA/LDA.

Длительность INT - какая разница? Лишь бы T80 этого хватало на "среагировать".

Gryphon
30.04.2009, 00:26
ewgeny7, Ну что, как успехи?

fifan
07.05.2009, 17:24
ewgeny7, не подскажишь как подключать/прошивать и использовать конфПЗУ, например EPCS1?

Ewgeny7
07.05.2009, 19:21
ewgeny7, не подскажишь как подключать/прошивать и использовать конфПЗУ, например EPCS1?
http://www.zx.pk.ru/attachment.php?attachmentid=10379&d=1232832345

fifan
10.05.2009, 07:37
А как на счет схемы сабжа можно даже невполне работоспособную, чисто для поверхностного ознакомления...

caro
10.05.2009, 13:01
А как на счет схемы сабжа можно даже невполне работоспособную, чисто для поверхностного ознакомления...Здесь есть схемы:http://www.ldm-systems.ru/price_plis.htm

Ewgeny7
10.05.2009, 21:19
А как на счет схемы сабжа
В ссылке, которую я давал есть схема, я по ней делал и прошивал.

fifan
11.05.2009, 06:55
Еще вопросик. Схема питается от 3,3 и 1,5 вольт. Как насчет совместимости с TTL уровнем 5 вольт? Или применяются внешние ИМС совместимого (3,3 вольта) уровня?

Ewgeny7
12.05.2009, 22:15
Как насчет совместимости с TTL уровнем 5 вольт?
Ядро питаем 1,5в, буфера альтеры - 3,3 - 3,8в. Я подаю 3.6в.
Амплитуды выходных сигналов вполне хватает для внешних ТТЛ-микросхем (для них единица выше 2.4в), вход альтеры нормально терпит 4-5 вольт от внешних сигналов ТТЛ.
Поэтому можно не заморачиваться с дополнительными буферами. Если хочешь перестраховаться - ставь в разрыв резисторы ом по 150.

Black_Cat
12.05.2009, 22:51
(для них единица выше 2.4в)вообще, ТТЛ единица, это выше 2В, поэтому выходы 3,3 В логики полностью совместимы с ТТЛ входами по уровням сигналов, но не наоборот. Для наоборот надо ставить ограничительные резисторы.

Ewgeny7
12.05.2009, 22:55
вообще, ТТЛ единица, это выше 2В
Дык никто и не спорит, просто в даташитах можно встретить и цифирьку 2,4 :) Где - не пмню, вроде ТТЛШ элементы...

Black_Cat
12.05.2009, 23:14
просто в даташитах можно встретить и цифирьку 2,4не путай Uвх1 и Uвых1. Минимальное значение Uвх1=2В ВСЕГДА! и для всех серий ТТЛ! А вот минимальное значение Uвых1 для разных серий разное и находится в диапазоне 2,4-2,7В

Ewgeny7
12.05.2009, 23:20
не путай Uвх1 и Uвых1. Минимальное значение Uвх1=2В ВСЕГДА! и для всех серий ТТЛ! А вот минимальное значение Uвых1 для разных серий разное и находится в диапазоне 2,4-2,7В
Хорошо, уговорил! А о чем спор то? :)

Black_Cat
12.05.2009, 23:40
о совместимости 3,3В и ТТЛ логики - они полностью совместимы, с условием ограничения Uвых1ТТЛ=3,3В

Ewgeny7
13.05.2009, 07:19
о совместимости
О том что конкретные чипы альтеры будут работать с ТТЛ уровнями без танцев с бубном. Вопрос закрыт.

fifan
13.05.2009, 19:17
Всем спасибо! Все понял!

Error404
27.05.2009, 18:08
ewgeny7, как дела на ниве орионостроения? :)

fifan
28.05.2009, 16:40
Верно, что-то заглохло или в отпуске?

Ewgeny7
02.06.2009, 21:39
Эээ... Отвлекся я на спектрумовские темы. Собираю серийно Спекки-2007 под заказ :) Проект застрял на пункте "припаять десяток проводочков к ВВ55 и посмотреть как работает винчестер под СР/М". :v2_conf2: Продолжу наверное только с начала июля, отпуск начнется...

LeBohdan
28.06.2009, 16:24
ewgeny7, а исходники планируете опубликовать. Или это такой личный проект ? ;)

Error404
03.07.2009, 12:38
Эээ... Отвлекся я на спектрумовские темы. Собираю серийно Спекки-2007 под заказ :) Проект застрял на пункте "припаять десяток проводочков к ВВ55 и посмотреть как работает винчестер под СР/М". :v2_conf2: Продолжу наверное только с начала июля, отпуск начнется...

Ну как, припаял проводочки?
Июль уже в разгаре. :)

aviator
11.07.2009, 11:46
А мне так девборд альтеры по почте и не приехал. Потерялся, как в черной дыре, чесслово...
Ну а по "Ориону". Однозначно, чтобы нормально использовать нужно добавить и контроллер прерываний и последовательный порт, встроенные часы и энергонезависимую память, аппаратный программируемый таймер, контроллер ПДП, в общем получается почти "Орион-про". Но последний содержит в себе массу такой кривизны, что "я чешусь в тех местах, о которых и не подозревал". Кстати, неплохо было бы и USB 1.1 прикрутить :)

fifan
11.07.2009, 17:12
...неплохо было бы и USB 1.1 прикрутить :)
Если толко для программатора плисины. А для самого Ориона зачем?

aviator
11.07.2009, 22:01
Если толко для программатора плисины. А для самого Ориона зачем?
Как зачем? Клавиатура, мыша и прочая периферия, принтер например. Я тут присмотрел Ethernet PHY, полностью с "железным" TCP/IP, так что и сеть сделать реально для ориона.
Но! Во-первых, плата и схемотехника: доделывать стандартную журнальную смысла нет. Во-вторых, FPGA подходит идеально. Я бы сделал специализированный "девборд" с 3-мя ПЛИС: процессорная часть (возможно например с некоторым сопроцессором), контроллер памяти, видеоадаптера и высокоскоростной периферии, контроллер шины расширения и прочей периферии.

P.S. А, еще, забыл сказать: все из-за "любви к искусству". :)

Error404
12.07.2009, 11:08
Как зачем [USB]? Клавиатура, мыша и прочая периферия, принтер например.


С точки зрения "тру-орионщика" ;) [не меня, а с какими общался, хотя и я пожалуй согласен] - это не стоит выделки пока есть девасы с интерфейсами, подключаемые "напрямую" (т.е. с минимумом доработок и преимущественно на схемах малой степени интеграции) - PS/2, RS-232, Centronix, IDE=CopactFlash и т.д.
Т.к. в противном случае система уже выглядит как "недокомпьютер подключенный за каким-то хреном к современному навороченному контроллеру куда десяток таких недокомпьютеров в эмуляторе можно положить".

Хотя с точки зрения реальности реализации - нет ничего проще: есть кучи контроллеров реализующих RS-232<->USB, их к Спеку подключали неоднократно.



Я тут присмотрел Ethernet PHY, полностью с "железным" TCP/IP, так что и сеть сделать реально для ориона.


Какой именно? Интересно.



Но! Во-первых, плата и схемотехника: доделывать стандартную журнальную смысла нет. Во-вторых, FPGA подходит идеально. Я бы сделал специализированный "девборд" с 3-мя ПЛИС: процессорная часть (возможно например с некоторым сопроцессором), контроллер памяти, видеоадаптера и высокоскоростной периферии, контроллер шины расширения и прочей периферии.


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



P.S. А, еще, забыл сказать: все из-за "любви к искусству". :)


На самом деле - это основное. И если есть порох в пороховницах, не слушай никаких "тру-орионщиков". :v2_thumb:

Black_Cat
12.07.2009, 11:53
Правда там совсем нет системной шины (Автор принципиально уперся, что ее там нет, и никогда не будет), поэтому расширяемо оно только тем, что сумеешь впихнуть в ПЛИС (а это - мизер).Этого "мизера" пожалуй будет достаточно для десятка Орионов со свей периферией :)

Error404
12.07.2009, 12:25
Этого "мизера" пожалуй будет достаточно для десятка Орионов со свей периферией :)

Нельзя впихнуть невпихуемое. Дело даже не в количестве вентилей в CPLD, а в том, что либо большинство тут озвученных хотелок реализуется внешней именно математикой, которую проще добавить с готовым контроллером (а аппаратные TCPIP еще и закрытой математикой), либо даже в жирной, а следовательно и дорогой, CPLD тупо не хватит ножек (например, только для CF\IDE надо 24 (!) ножки). В том треде у автора на вполне себе нормальной матрице после реализации весьма небогатого фукционала осталось всего ножки три-четыре (не помню точно), т.к. много уходит под ОЗУ и тому подобные корпуса, без которых никак.

А десять обособленных орионов (или спектрумов) одновременно на одной борде даже не знаю кому надо. :)

Black_Cat
12.07.2009, 13:09
В том треде у автора на вполне себе нормальной матрице после реализации весьма небогатого фукционала осталось всего ножки три-четыреон уже давно на другую ПЛИС перешёл, и ног там хватает

aviator
12.07.2009, 13:11
С точки зрения "тру-орионщика" ;) [не меня, а с какими общался, хотя и я пожалуй согласен] - это не стоит выделки пока есть девасы с интерфейсами, подключаемые "напрямую" (т.е. с минимумом доработок и преимущественно на схемах малой степени интеграции) - PS/2, RS-232, Centronix, IDE=CopactFlash и т.д.
У меня, к сожалению таких не осталось - везде USB, поэтому мысли и появились.


Какой именно? Интересно.
Freescale MC9S12NE64, SMSC LAN91C111 и прочие контроллеры с MAC+PHY. Их много, вопрос в том, что смогу достать в своей деревне.



Такой проект тут в соседней ветке уже делается (для Спека, но упоминался и Орион и куча других платформ). Правда там совсем нет системной шины (Автор принципиально уперся, что ее там нет, и никогда не будет), поэтому расширяемо оно только тем, что сумеешь впихнуть в ПЛИС (а это - мизер).
Интересно именно построить с максимум открытой и гибкой архитектурой, поэтому хочу разделить также и узлы по различным FPGA, небольшого объема достать легче, дешевле, а если место и останется, то пускай, для дальнейших экспериментов.

Насчет "тру-орионщиков": меня волнует только совместимость CP/M-программ, а из OrDOS-ных только те, которые не лезут к железу напрямую, а работают через функции монитора. Да и то, это все постольку-поскольку, потому что интересует больше posix-совместимое ядро.

Ewgeny7
12.07.2009, 13:15
Здрасьте! Я вернулось! :)
Вчера весь вечер ковырял прогу для циклона, устранил вейт проца полностью.
Проводки к HDD так и не припаял, увлекся привинчиванием РОМ-диска.

Error404
13.07.2009, 09:24
Здрасьте! Я вернулось! :)
Вчера весь вечер ковырял прогу для циклона, устранил вейт проца полностью.
Проводки к HDD так и не припаял, увлекся привинчиванием РОМ-диска.

Ждем-ждем. :) Что решил на счет применяемых МСХ ОЗУ? надо будет 10ns искать?
И сколько будет общий объем?

Ewgeny7
13.07.2009, 15:36
И сколько будет общий объем?
Сейчас 128кб на борту:
CY7C1021CV33-10V 1-MBIT (64K x 16) STATIC RAM 10ns SOJ44 74.80руб.
и параллельно будет подключена еще на 512 кб.
Но это не принципиально, лишний адрес можно вывести, ноги есть.
Тайминг чтения-записи допустимый - 60нс.
Озушки можно любые в принципе. Оптимальней наверное выбрать две по 256кб или по 512кб. (86-112руб. за штуку).
Выбрал режим 16 бит (или две по 8 бит) для увеличения допустимой тормознутости ОЗУ. Ибо на одной линейке нужно будет по 30нс. (изза прозрачного доступа).
Сажусь ковырять дальше.

Ewgeny7
17.07.2009, 23:57
РОМ-диск заработал. И как обычно, новые дополнения создают проблемы с отлаженным старым. Рисуется рамка экрана VC (не полностью) и комп виснет.
На процессоре Z80 вообще должен работать монитор M34ZRK с ромдиском ROMDISK4?

Error404
18.07.2009, 11:43
РОМ-диск заработал. И как обычно, новые дополнения создают проблемы с отлаженным старым. Рисуется рамка экрана VC (не полностью) и комп виснет.
На процессоре Z80 вообще должен работать монитор M34ZRK с ромдиском ROMDISK4?

Да, на процессоре Z80, включенном по любой схеме, должен работать монитор M34ZRK с ромдиском ROMDISK4. Все Мониторы с индексом "Z" работают только на Z80. Все мониторы с индексом "D" не будут грузить ORDOS, а сразу грузят cp/m c дисковода. Все мониторы с индексом "H" не будут грузить ORDOS, а сразу грузят cp/m c IDE с порта F500. Индекс "RK" обозначает что клавиатура должна быть RK-86.

Такое ощущение, что неправильно читается с ROM-диска. К примеру, читаются только первые 4к.

А Z80 по какой схеме включен?
Может у тебя наступает прерывание 50Гц, которое сносит крышу процессору (если не работает регистр, которым запрещается прохождение прерываний). Вот он и успевает отрисовать только чуть-чуть.
Монитор (и тем паче Ордос) никак не обрабатывают прерывания. При холодном старте Монитор только запрещает их битом D6 порта FB:



Порт FB - УПРАВЛЕНИЕ ПРЕРЫВАНИЯМИ И ДИСПЕТЧЕРОМ:

D7 D6 D5 D4 D3 D2 D1 D0
! ! ! ! ! ! ! !
MZ INT XMEM RZRV BS1 BS0 SS1 SS0
! ! ! ! ! ! ! !
! ! ! ! ! ! !______!____ SEGMENT SELECT
! ! ! ! !______!__________________ BANK SELECT
! ! ! !
! ! ! !________ РЕЗЕРВ ДЛЯ BANK SELECT (ВСЕГДА = 0)
! ! !_______________ FULL RAM MEMORY (ПРИ D5=1 0-FFFF - ОЗУ)
! !______________________ INT ENABLE (ПРИ D5=0 ЗАПРЕЩЕНЫ)
!_____________________________ DISPATCHER OFF (ПРИ D7=1 ОТКЛЮЧЕН !)

БИТЫ BS1,BS0 ОПРЕДЕЛЯЮТ НОМЕР БАНКИ ОЗУ, А БИТЫ SS1,SS0 ОПРЕДЕЛЯЮТ КАКОЙ
16-ТИ КИЛОБАЙТОВЫЙ УЧАСТОК ИЗ ЭТОЙ БАНКИ БУДЕТ ДОСТУПЕН ПО АДРЕСАМ 0-3FFF.
ДАННЫЕ, ЗАПИСАННЫЕ В ПОРТ, МОЖНО СЧИТАТЬ С ПОРТА FB (АЛЬТАИР,SUPER-3)

Ewgeny7
18.07.2009, 13:48
А Z80 по какой схеме включен?
Самая простая схема.
Сейчас попробую обрисовать.
Сигнал IORQ (работа с портами) не используется, ибо все порты (F400, F500, FA00, F900) видятся Орионом как ячейки памяти, работа с ними идет по принципу LD (порт),А.
Память на сегменты не разбивал. Имеем две линейки памяти "0" и "1" (остальные добавляются просто добавлением микросхемы ОЗУ). Длина сегментов - 60кб для страниц "1" и выше.
Проц подключен напрямую к шинам адреса (имею ввиду без шаманства на мультиплексорах сделанного в ЗХ-кард 1). Это в принципе отклонение от классического Ориона.
РОМ диск размещается в ПЗУ Монитора, я использую 29C020, там помещается четыре "страницы" по 64 кб. В странице размещен монитор (F800-FFFF) и РОМдиск (0-F7FF). Сам порт F500 эмулирован в альтере. Порт F600 - реальная ВВ55.
Прерывания я пока убрал нафик чтобы не путались под ногами.
Вот такое состояние на сегодня.
Да, чтобы отменить автозагрузку VC надо изменить его имя? Имею ввиду чтобы просто запустить ОРДОС без запуска прог с диска.

balu_dark
18.07.2009, 17:50
там мультиплексоры ставились по моему для реализации IORQ или програмного вектора инт (аналог RST в z80) без этих мультиплексоров не все заводилось ибо зетник лез иногда не по тем адрсам что нужны.

Ewgeny7
18.07.2009, 22:58
там мультиплексоры ставились по моему для реализации IORQ или програмного вектора инт (аналог RST в z80) без этих мультиплексоров не все заводилось ибо зетник лез иногда не по тем адрсам что нужны.
Да, там мультики использовались для устранения различий в работе с портами I/O у ВМ80 и Z80. У ВМ80 только 256 внешних адресов, при этом старшая восьмерка адресов повторяет младшую.

Error404
18.07.2009, 22:59
Самая простая схема.
Сейчас попробую обрисовать.
Сигнал IORQ (работа с портами) не используется, ибо все порты (F400, F500, FA00, F900) видятся Орионом как ячейки памяти, работа с ними идет по принципу LD (порт),А.


Это так, но большинство Мониторов-3 работает с портами F8...FF командами OUT (т.к. это на 1 байт короче) и IORQ поэтому обязательно надо задействовать наряду с MREQ. Для этого на лениградском Z80 карде2 стоял дешифратор, а его выход по "или" смешивался на ле1 с тем, что давал стандартный Орион по sta/lda. Вот кусок монитора-3:


getbyte:OUT (0F9H),A
LD (HL),C
JR RET0_F9
putbyte: OUT (0F9H),A
LD C,(HL)
RET0_F9:XOR A
OUT (0F9H),A
RET


А getbyte и putbyte - стандартные пп Монитора через которые всем программерам предлагалось работать с дополнительным страницами памяти. Т.е. если у тебя не задействован IORQ и используется М3, то в принципе ничего нормально и не заработает.



Память на сегменты не разбивал. Имеем две линейки памяти "0" и "1" (остальные добавляются просто добавлением микросхемы ОЗУ). Длина сегментов - 60кб для страниц "1" и выше.
Проц подключен напрямую к шинам адреса (имею ввиду без шаманства на мультиплексорах сделанного в ЗХ-кард 1). Это в принципе отклонение от классического Ориона.


Мультиплексоры (2х КП11) ставились в московском варианте (тот, что публиковали в Радио в 96 году) исключительно для того, чтобы при выполнении команды OUT (n),a на шину адреса выдавалось "nn" (пример: F4F4, F8F8), как это происходит у i8080, а не an, как у Z80. Из-за этих КП11 в московском карде искажались комады Z80 "out (bc), a" , и поэтому их нафиг не надо ставить.

В лениградском варианте КП11 ставилась одна и использовалась для диспетчера памяти, аналогичного Спектруму128, но в окне 0000...3FFF. Полезная штука, и в перспективе нужна (вообще, нужно брать и полностью делать лениградский вариант). Но на начальном этапе можно и обойтись без диспетчера по 16к.



РОМ диск размещается в ПЗУ Монитора, я использую 29C020, там помещается четыре "страницы" по 64 кб. В странице размещен монитор (F800-FFFF) и РОМдиск (0-F7FF). Сам порт F500 эмулирован в альтере. Порт F600 - реальная ВВ55.
Прерывания я пока убрал нафик чтобы не путались под ногами.
Вот такое состояние на сегодня.


При использовании IDE на порту F600 прочитай внимательно этот пост:
http://zx.pk.ru/showpost.php?p=196003&postcount=153



Да, чтобы отменить автозагрузку VC надо изменить его имя? Имею ввиду чтобы просто запустить ОРДОС без запуска прог с диска.

Это не помню. Вроде бы файл автозапуска в Ордос должен называться EXT$

Хотя переименование VC наверняка тоже сработает

Ewgeny7
18.07.2009, 23:13
Это так, но большинство Мониторов-3 работает с портами F8...FF командами OUT
О, вот это ценно!


Из-за этих КП11 в московском карде искажались комады Z80 "out (bc), a" , и поэтому их нафиг не надо ставить.
Ага, я примерно так и думал :)


Хотя переименование VC наверняка тоже сработает
Оч хорошо.
Ну ладно, значит во-первых организовываю работу по IORQ. Только объяни пожалуйста такую затыку. Значит, мультиплексоры на адрес не ставим, ибо они искажают работу с "длинными" портами. Но при этом работая с "короткими" мы получаем адрес порта на младшей восьмерке адресов. При этом дешифрация портов делается по старшей восьмерке. Как быть?

Error404
18.07.2009, 23:22
О, вот это ценно!


Ага, я примерно так и думал :)


Оч хорошо.
Ну ладно, значит во-первых организовываю работу по IORQ. Только объяни пожалуйста такую затыку. Значит, мультиплексоры на адрес не ставим, ибо они искажают работу с "длинными" портами. Но при этом работая с "короткими" мы получаем адрес порта на младшей восьмерке адресов. При этом дешифрация портов делается по старшей восьмерке. Как быть?

Я запросто мог ошибиться, пишу по памяти а столько лет прошло. :)
Значит на самом деле "na", а не "an". Помню принцип, а детали пожрал склероз. :)
Делай как в штатном орионе + как на схеме (D5):
http://orion-z.hoter.ru/images/Z80CardII.gif

Ewgeny7
18.07.2009, 23:32
Значит на самом деле "na", а не "an".
Не, склероз у тебя правильный, Z80 выдаст "an". :)
За схему спасибо, ответ сразу прояснился. На Д5 собран дешифратор работающий параллельно основному в Орионе. Так и сделаю. Если третий монитор работает через OUT то VC у меня и не должен был запускаться. А только отрисовать рамку, обратиться через OUT неизвестно куда и зависнуть. Что я и наблюдаю :)
Спасибо! Делаю дальше.

Error404
19.07.2009, 09:06
При использовании IDE на порту F600 прочитай внимательно этот пост:
http://zx.pk.ru/showpost.php?p=196003&postcount=153


Вспомнилось: СРМ с поддержкой ИДЕ работает во 2-й странице, т.е. ей нужно как минимум 3 страницы памяти (0,1,2) - 192к.

Ewgeny7
19.07.2009, 21:12
Ну, типа вот:

Ewgeny7
19.07.2009, 21:12
ей нужно как минимум 3 страницы памяти (0,1,2) - 192к.
Учтем. "Полирую" новые возможности :)

Error404
19.07.2009, 22:50
Ну, типа вот:

Круто. Пока ч\б?
Доделывай. Становится уже на что-то похоже. :)
Надо ленградский Z80 card II полностью внедрить (та схема которая парой постов раньше). Проверить его правильность можно тестом из этого поста:
http://zx.pk.ru/showpost.php?p=177618&postcount=21

Ewgeny7
19.07.2009, 23:49
Пока ч\б?
Ага. Я еще не задумывался как буду цвет делать. В плисине я поставил два регистра на изображение (как в "настоящей" схеме), оба читают видеоинфу каждый из своей страницы. Но цвета я пока не "замешивал".


Надо ленградский Z80 card II полностью внедрить
Да, уже занимаюсь этим.
Днем-вечером сидел лечил глюки с клавиатурой. Работала только после нескольких сбросов. Теперь всё нормально.
Есть проблемка. Во многих программах на РОМдиске клавиатура работает черти-как. Просто непредсказуемо. Это может быть от того, что проги работают с другой клавиатурой? Или это локальные проблемы контроллера Камиля? Или проблемы у меня с головой? В Мониторе-1 всё пашет как часы. Швейцарские.

Error404
20.07.2009, 00:04
Ага. Я еще не задумывался как буду цвет делать. В плисине я поставил два регистра на изображение (как в "настоящей" схеме), оба читают видеоинфу каждый из своей страницы. Но цвета я пока не "замешивал".


Да, уже занимаюсь этим.
Днем-вечером сидел лечил глюки с клавиатурой. Работала только после нескольких сбросов. Теперь всё нормально.
Есть проблемка. Во многих программах на РОМдиске клавиатура работает черти-как. Просто непредсказуемо. Это может быть от того, что проги работают с другой клавиатурой? Или это локальные проблемы контроллера Камиля? Или проблемы у меня с головой? В Мониторе-1 всё пашет как часы. Швейцарские.

Все ордосовские проги работают через Монитор. Я не замечал проблем, но я не проверял "старый хлам" - т.е. с ROM-диском и Ордос - только в мониторе1 на самом раннем этапе.
Зато я массированно проверял с Монитором-3 в CP/M (оно работает через Монитор и на прерываниях 50Гц) и в играх, которые лезут к матрице клавиатуры напрямую, что наиболее критично. Везде работало нормально.

Напиши что конкретно происходит, какие проги, какой именно используешь Монитор. Какая тактовая частота процессора (реальная, с вейт или без)? Уже на 5Мгц реальных в М-3 слишком быстро происходит автоповтор. Как реализована ВВ55 порта F400 (в матрице или внешняя?), как подключен контроллер (хотя тут врядли что-то) и какая версия прошивки контроллера. Может, получится вычислить что может такое происходить.

Также, можно попробовать Монитор-2, у них с М-3 сильно по-разному написаны п\п работы с клавиатурой. Монитор-3 вообще написан лениградскими хакерами :) , поэтому он в том же объеме умеет в разы больше и лучше.

Ewgeny7
20.07.2009, 00:41
Да, я тут подумал. что может монитор-3 не тот залил...
Кинься пожалуйста вторым, попробую его.
А косяки... Ну, например программа EDIT. Курсор в нижней строке. Жмем стрелку вверх, появляется двоеточие, потом перерисовка экрана. S рисуется, A - нет, просто очищается строка.

Error404
20.07.2009, 10:26
Да, я тут подумал. что может монитор-3 не тот залил...
Кинься пожалуйста вторым, попробую его.
А косяки... Ну, например программа EDIT. Курсор в нижней строке. Жмем стрелку вверх, появляется двоеточие, потом перерисовка экрана. S рисуется, A - нет, просто очищается строка.

А в VC нормально стрелки вверх\вниз работают? Попробовал в эмуляторе - Edit нормально работает.
Какая версия прошивки контроллера?
Во вложении все имеющиеся у меня ромы для Ориона. Монитор2 в файле М2rk.bin.

Ewgeny7
20.07.2009, 11:04
Вот спасибо! :)
Залил М2rk, и всё заработало! Такое очучение, что M34zrk расчитано на МС клавиатуру. Щас помучаю прошивки в твоем эмуляторе :)
Не посоветуешь, какой Бейсик стОит попытаться запустить с моей конфигурацией?

ivagor
20.07.2009, 12:13
Извините, что влезаю, но вот добавил к образу ROM-DISKа BASIC 2.4 Пушкова, который работает и на Z80
12614
В эмуляторе Errora404 работает и с M2rk, а в b2m удалось запустить с M34zrk.

Ewgeny7
20.07.2009, 12:46
ivagor, спасибо огромное!
Я, собственно, ради бейсика этим и занимаюсь :)
Сейчас проверю как оно работает.

Ewgeny7
20.07.2009, 13:14
Заработало! :)
Теперь мне нужна помощь в разборках с портом FA и прерываниями.
Какие проги активно используют порт FA, управляя им посредством OUT(FA),x?
Аналогично, нужна прога использующая прерывания.
Условия для работы - ч/б режим или палитра. И запуск с РОМ-диска.

Ewgeny7
20.07.2009, 15:32
ewgeny7, а исходники планируете опубликовать. Или это такой личный проект ?
Конечно планиую. Когда будет что публиковать.

ivagor
20.07.2009, 17:46
Пока Error404 не выложил какой-нибудь нормальный тест, можно попробовать вот это
12616
Проверял только в эмуле.

Ewgeny7
20.07.2009, 18:56
можно попробовать вот это
Попробовал...
Экспертиза показала, что это был первый вирус на платформе Ориона. :)
Флешь-ПЗУ убило напрочь... :( Пошел искать другую.

ivagor
20.07.2009, 19:02
Экспертиза показала, что это был первый вирус на платформе Ориона.
Флешь-ПЗУ убило напрочь... Пошел искать другую.
В процессе работы?
Или это типа черный юмор и ПЗУшка сдохла при прошивке?

Ewgeny7
20.07.2009, 19:13
Или это типа черный юмор и ПЗУшка сдохла при прошивке?
Ну разумеется :)
Небольшой перерыв и попробую снова.

Error404
20.07.2009, 23:25
Заработало! :)
Теперь мне нужна помощь в разборках с портом FA и прерываниями.
Какие проги активно используют порт FA, управляя им посредством OUT(FA),x?
Аналогично, нужна прога использующая прерывания.
Условия для работы - ч/б режим или палитра. И запуск с РОМ-диска.

Зависит от характера обращения к портам. Безотоносительно OUT это или STA (т.к. скорее всего STA):

- Если просто визуально проверить факт работы портов, то проще всего запускать в ПЗУ F800 вместо Монитора тест TestZ80.bin (для проверки фишек лениградского Z80 card-II, как то диспетчера ОЗУ и прерываний), и
RAM_TEST.bin или test128.bin или test256.bin (они по завершении теста ОЗУ рисуют цветной коврик) для проверки порта цветности (F8). Все эти файлы есть в ранее опубликованном здесь архиве rom.zip.

Если же надо проверить конкретную реакцию на конкретный байт, выводимый в конкретный порт, то проще всего запустить из ROM-диска программу M128$ или M256$ или подобную, и тупо записать директивой DUMP MODIFYпо адресу F800 или FA00 нужный байт и пронаблюдать что получится. Так можно проверить порт FA (переключить экранную область), только тогда для наглядности сначала заполнить ее специфическим содержимым (например, некой константой) - директивой FILL.

Ewgeny7
20.07.2009, 23:49
Да, М128 нормально щелкает экраны по FA.
С прерываниями пока прерываюсь :) Альтера упорно сопротивляется. Чем больше пихаешь в прошивку тем труднее "пригладывать шерстку". Продолжу завтра.
Тут еще интересная штука. ОЗУ на КМОС статике замечательно хранит информацию при наличии небольшого "поддерживающего" напряжения. Например, батарейки от старой писюковой платы. Очень полезная особенность, не правда ли :)

Error404
30.07.2009, 11:01
Ну как, есть успехи? :)

Ewgeny7
11.08.2009, 17:21
Ну как, есть успехи?
Вернулся я с отпуска. Кавказ - это конечно, прекрасно. Но дома лучше :)
Про Орион - долго пихал порты F9 FA FB в схему, глюки задолбали. Порты умудрялись конфликтовать друг с другом. Полностью перелопатил схему с портами. Вроде справился.
Спасибо ivagor'у за его тест, он пока мой рулевой. Но прерывания толком не работают. Порт FB принимает команду от бита D6, включает подачу на вход INT старшего разряда счетчика строк изображения. Надо бы этот сигнал проинвертировать, тогда прерывание запустится сразу после отрисовки экрана...
Меня терзают смутные с длительностью INT. Слишком длинный будет мешать работе?
Сейчас его длина 312-256=56 строк растра, или 56*64мкс=3,6мс.

ivagor
11.08.2009, 18:46
Меня терзают смутные с длительностью INT. Слишком длинный будет мешать работе?
Сейчас его длина 312-256=56 строк растра, или 56*64мкс=3,6мс.
Пара слов (без изучения схемы Ориона и Z80 Card II, так что вполне можно дальше не читать)
3,6 мс - это ОЧЕНЬ долго, за это время произойдет многократное выполнение обработчика прерываний, который вобще-то должен выполняться 1 раз в 20 мс. Длительности INT 32 такта вполне хватило бы, чтобы дождаться конца самой длинной команды и перейти к обработке прерывания, а с другой стороны это не слишком много и повторного захвата прерывания не произойдет.

---------- Post added at 20:46 ---------- Previous post was at 20:16 ----------

Еще такой момент - с шины данных при выборке вектора прерывания читается 0FFh (в какой-то доке читал, что на Z80 Card II должно быть именно так)? А то в testFA.asm используется режим IM2 и задействован только один вектор.

Ewgeny7
11.08.2009, 18:52
Мне, собственно вот такой вопрос неизвестен - возврат из прерывания выполняется по RETI. Соответственно, если ИНТ при этом все еще активен, то будет повторный вызов?

---------- Post added at 18:52 ---------- Previous post was at 18:51 ----------


задействован только один вектор.
Может поэтому у меня только один раз экран и переключился? :)

ivagor
11.08.2009, 19:12
Сейчас посмотрел орионовскую игрушку (для Z80 Card II) - там забита полная таблица для IM2, возврат из прерывания по RET (и на спектруме и на MSX видел возврат из подпрограммы через RET и вроде все нормально).


Соответственно, если ИНТ при этом все еще активен, то будет повторный вызов?
А почему нет, что этому помешает?

Вопрос - имеет смысл сделать вариант теста для IM2 с полной таблицей или вобще для IM1 (или ну нафиг самопальные тесты)?

Ewgeny7
11.08.2009, 19:18
Вопрос - имеет смысл сделать вариант теста для IM2 с полной таблицей
Если у тебя есть желание и время - то это здорово облегчит мне метания :) Хоть будет видно, работает ли прерывание ВООБЩЕ.

Error404
11.08.2009, 19:25
Пара слов (без изучения схемы Ориона и Z80 Card II, так что вполне можно дальше не читать)
3,6 мс - это ОЧЕНЬ долго, за это время произойдет многократное выполнение обработчика прерываний, который вобще-то должен выполняться 1 раз в 20 мс. Длительности INT 32 такта вполне хватило бы, чтобы дождаться конца самой длинной команды и перейти к обработке прерывания, а с другой стороны это не слишком много и повторного захвата прерывания не произойдет.


Пожалуй, подпишусь.
Вообще, сложно сказать какова была в точности длительность импульса на ноге запроса прерывания Z80 на "железном" Орионе с Z80 cardII - там стояла примитивная дифференцирующая RC-цепочка, по кадровому бланку формировавшая короткий импульс. Даже номиналы резюка/кондера были такие же как в примитивных Спектрумах (откуда это "решение" и заимствовано).




Еще такой момент - с шины данных при выборке вектора прерывания читается 0FFh (в какой-то доке читал, что на Z80 Card II должно быть именно так)? А то в testFA.asm используется режим IM2 и задействован только один вектор.

В Орионе как и в Векторе тоже положено было (хотя и без того работало в случае i8080 где не поддерживались прерывания) иметь на шине данных резисторы терминирующие к +5В (чтобы с пустой шины читалось 0FFh). Эта особенность часто используется в случае с Z80 cardII (чтобы не тратить впустую 254 байта дефицитного ОЗУ на полную таблицу IM2)

ivagor
11.08.2009, 19:49
К слову, если в tstim1.asm заменить команду im1 на im 0 и если с шины все же приходит FF, то можно проверить и режим im 0.

Ewgeny7
11.08.2009, 23:28
ivagor, еще раз спасибо. Запустил таки прерывания. Работают и на IM2 и на IM1 (с полной таблицей векторов). Старый вариант с одним вектором не работает. Курю мануалы по Z80, ищу когда нужно FF на шину выдавать. Проще резисторы на шину повесить (ШД постоянно подключена к T80), но мы легких путей не ищем :)
Да, длину прерывания уменьшил, занимает теперь 16 пикселов развертки. Сколько это в мс считать лень :)

---------- Post added at 23:28 ---------- Previous post was at 22:54 ----------

Уррра! Заработало!!! :)
На сегодня пожалуй хватит, а чем завтра заниматься? На очереди вроде как сегментирование памяти?

Снял микровидео на 10Мб. Качество плохое, ибо фотоаппарат, плюс одной рукой (вторая в это время кнопки коряво давила) :
http://narod.ru/disk/11890594000/Orion.rar.html

Error404
12.08.2009, 00:10
Уррра! Заработало!!! :)


зер гут. :)



На сегодня пожалуй хватит, а чем завтра заниматься? На очереди вроде как сегментирование памяти?


Что еще хочется для счастья:
-диспетчер памяти по 16к
-цветность
-экран 480 по горизонтали...

ну и по мелочи - всякие там 512ви1, AY (их наверное можно уже готовые найти на verilog и подлить в проект?)

Ewgeny7
12.08.2009, 00:23
-диспетчер памяти по 16к
Вот про него я и упоминал. Этим и займусь.


-цветность
Это самое печальное... Пока не очень представляю как это буду делать. Надо на бумажке сначала раскидать...

-экран 480 по горизонтали...
Ну, это уже в последнюю очередь. Точнее, в предпоследнюю. Последней будет клавиатура встроенная в ПЛИС.

Ewgeny7
12.08.2009, 14:59
Вот фотоотчет.
Galax работает без нареканий.
Panama Joe в ч/б варианте смотрится оригинально :) Обратите внимание на непонятные полосочки в левой части экрана. В цветном варианте на эмуле их нет. Скрыты раскраской, чтоли? И в ней проблемы с управлением. Указанные Z H J F Space не работают. зато вверх/вниз почему-то управляется стрелками вниз/вправо :v2_blink: Как идти влево/вправо - так и не нашел. Нет ли в программе опроса порта клавиатуры по IN (F4) ? Такой дурдом я еще не привинчивал :)
Тэкс, нашел лево/право. Это оказались Enter/TAB

Error404
12.08.2009, 15:34
Вот фотоотчет.
Galax работает без нареканий.
Panama Joe в ч/б варианте смотрится оригинально :) Обратите внимание на непонятные полосочки в левой части экрана. В цветном варианте на эмуле их нет. Скрыты раскраской, чтоли? И в ней проблемы с управлением. Указанные Z H J F Space не работают. зато вверх/вниз почему-то управляется стрелками вниз/вправо :v2_blink: Как идти влево/вправо - так и не нашел. Нет ли в программе опроса порта клавиатуры по IN (F4) ? Такой дурдом я еще не привинчивал :)
Тэкс, нашел лево/право. Это оказались Enter/TAB

C клавиатурой может быть путаница если игра заточена под МС7007 по лениградской схеме (или неверно настраивается на тип клавиатуры при старте - обычно по нажатию указываемой на экране кнопки), т.к. у лениградской МС7007 и РК86 одинаково настраивается и опрашивается порт F400, а матрица кнопок отличается.

Прикручивай IDE - там больше тестового материала :)

ivagor
12.08.2009, 16:11
ewgeny7, опрос клавиатуры там с 3000h, посмотри в эмуляторе (отладчик лучше в b2m, хотя точность эмуляции лучше у orion-z). IN при опросе клавиатуры не используется. Похоже в этой игре есть настройка под тип клавиатуры (РК86/МС7007), про которую упоминал Error404.
Черточки слева - это ячейки промежуточного хранения состояния клавиатуры, в цветном варианте они, понятное дело, спрятаны.

---------- Post added at 18:11 ---------- Previous post was at 18:06 ----------

Точно, там для РК86 ANDы с одними константами, а для МС7007 - с другими.

Ewgeny7
12.08.2009, 17:56
Не получается выбрать нормальное управление...
Тут, кстати, есть еще одно - я пользуюсь монитором М2. Ибо с M34zrk также наблюдаются проблемы.
Контроллер клавиатуры у меня стоит Камилевский, через реальную ВВ55.
Error404, у тебя вроде стоит точно такой же?

---------- Post added at 17:56 ---------- Previous post was at 17:55 ----------


Прикручивай IDE - там больше тестового материала
Это точно. Но так лень полсотни проводов паять :)

ivagor
12.08.2009, 18:00
Тут, кстати, есть еще одно - я пользуюсь монитором М2.
В orionz выложенный ROMдиск работает с M2, управление как написано при старте игры.

Ewgeny7
12.08.2009, 21:07
Готов диспетчер памяти. Расклад таков (мало ли я неправильно понял идею):
В младшее окно памяти 0-3FFF впечатываем любой сегмент памяти 16кб, в зависимости от битов 0 и 1 порта FB. При этом в странице 0 сегменты впечатываются при условии, что бит 2 порта FB равен 0. Если же он равет 1, то "миксуются" сегменты в странице 1, при этом в странице 0 всё находится в своем изначальном положении. Проверял работу диспетчера в Мониторе.
Вот, высказался. Аж вспотел :)
Да, длину импульса прерывания увеличил от греха подальше в два раза (32 пиксела).
Теперь не мешало бы проверить программно работу диспетчера. Иван, я тебя еще не очень задолбал? :)

ivagor
12.08.2009, 22:18
Теперь не мешало бы проверить программно работу диспетчера. Иван, я тебя еще не очень задолбал?
Мне самому интересно, тем более я пока в отпуске.
Вот EXOLON, затолканый в ROM-диск, он использует диспетчер
12834
Теперь о плохом - он вроде еще и Full RAM использует. По-моему практически все игры, использующие диспетчер, требуют еще и Full RAM.

Ewgeny7
12.08.2009, 22:37
Значит, фулрам буду делать... не совсем пока понятно некоторые нюансы. Например, как обстоят дела с портами проецируемыми на память. Ведь они "занимают" область памяти от F400 и до упора...

Error404
13.08.2009, 00:35
Готов диспетчер памяти. Расклад таков (мало ли я неправильно понял идею):
В младшее окно памяти 0-3FFF впечатываем любой сегмент памяти 16кб, в зависимости от битов 0 и 1 порта FB. При этом в странице 0 сегменты впечатываются при условии, что бит 2 порта FB равен 0. Если же он равет 1, то "миксуются" сегменты в странице 1, при этом в странице 0 всё находится в своем изначальном положении. Проверял работу диспетчера в Мониторе.
Вот, высказался. Аж вспотел :)


Чего-то я нифига не понял, но смутно ощущаю какую-то неправильность. :)
Изложу моими словами. Итак, что вообще известно про порт FB (про прерывания не пишу):



Порт FB - УПРАВЛЕНИЕ ПРЕРЫВАНИЯМИ И ДИСПЕТЧЕРОМ:

D7 D6 D5 D4 D3 D2 D1 D0
! ! ! ! ! ! ! !
MZ INT XMEM RZRV BS1 BS0 SS1 SS0
! ! ! ! ! ! ! !
! ! ! ! ! ! !______!____ SEGMENT SELECT
! ! ! ! !______!__________________ BANK SELECT
! ! ! !
! ! ! !________ РЕЗЕРВ ДЛЯ BANK SELECT (ВСЕГДА = 0)
! ! !_______________ FULL RAM MEMORY (ПРИ D5=1 0-FFFF - ОЗУ)
! !______________________ INT ENABLE (ПРИ D5=0 ЗАПРЕЩЕНЫ)
!_____________________________ DISPATCHER OFF (ПРИ D7=1 ОТКЛЮЧЕН !)

БИТЫ BS1,BS0 ОПРЕДЕЛЯЮТ НОМЕР БАНКИ ОЗУ, А БИТЫ SS1,SS0 ОПРЕДЕЛЯЮТ КАКОЙ
16-ТИ КИЛОБАЙТОВЫЙ УЧАСТОК ИЗ ЭТОЙ БАНКИ БУДЕТ ДОСТУПЕН ПО АДРЕСАМ 0-3FFF.


Биты D0..D3 - фактически обычный шестнадцатиричный 4-битный номер 16-k сегментa в пространстве первых 256k ОЗУ (0,1,2,3,4,...,14,15) - сегмента, включаемого в окне 0000...3FFF (если по начальному адресу - это сегменты 0:0000, 0:4000, 0:8000, 0:C000, 1:0000,...,3:8000, 3:C000 соответственно). Окно 0000...3FFF лучше рассматривать как кусок адресного пространства процессора куда что-то проецируется. Т.е. без привязки к 60к-страницам памяти, т.к. 16к и 60к диспетчеры работают независимо друг от друга как физически, так и "в понятиях".

бит D4 пока никак не используем

Если включен дипетчер 16к (если бит D7 порта FB =0 ! т.е. инверсно), то в адресное пространство Z80 в диапазоне 0...3FFF попадает 16-к сегмент адресуемый как я описал выше, в адресное пространство 4000...EFFF попадает та страница ОЗУ, номер которой указан в порте F9.

Если выключен дипетчер 16к (если бит D7 порта FB =1 ! т.е. инверсно), то в адресное пространство Z80 в диапазоне 0...EFFF попадает та страница ОЗУ, номер которой указан в порте F9.

Если бит D5 порта FB =1 (FULL RAM ON), то в в адресное пространство Z80 в диапазоне F000...FFFF попадает область F000...FFFF страницы ОЗУ, номер которой указан в порту F9 (т.е. область F000...FFFF НЕ "СКЛЕЕННАЯ" ). Порты F400..F7FF, F8,F9,FA как память недоступны (недоступны по MREQ, но доступны по IORQ), ПЗУ F800...FFFF - недоступно, вся память - ОЗУ.

Если бит D5 порта FB =0 (FULL RAM OFF, как в стандартном Орионе128), то в в адресное пространство Z80 в диапазоне F000...F3FF независимо от содержимого порта F9 попадает область F000...F3FF физически_ПЕРВОЙ страницы ОЗУ (с номером 0, если считать с нуля), т.е. область F000...F3FF "склеенная" , F400..F7FF, F8,F9,FA - порты (и по MREQ и по IORQ), F800...FFFF - ПЗУ на чтение и порты на запись.

По умолчанию (по RESET и при включении питания) порт FB содержит значение 80h (старший разряд как я уже писал - нормальноинвертированный).

Как-то так...

Ewgeny7
13.08.2009, 23:57
Порты F400..F7FF, F8,F9,FA как память недоступны (недоступны по MREQ, но доступны по IORQ
Порта F4 для чтения клавиатуры как такового по IN быть не может. Ибо он состоит из 4 портов физически, с адресами F400, F401, F402... Значит, только проекция на память (или просто комп остается без клавиатуры). F5-F6 аналогично. Ибо поддержки команды LD A,(BC) я в Z-Card не заметил...


Биты D0..D3 - фактически обычный шестнадцатиричный 4-битный номер 16-k сегментa в пространстве первых 256k ОЗУ (0,1,2,3,4,...,14,15) - сегмента, включаемого в окне 0000...3FFF (если по начальному адресу - это сегменты 0:0000, 0:4000, 0:8000, 0:C000, 1:0000,...,3:8000, 3:C000 соответственно). Окно 0000...3FFF лучше рассматривать как кусок адресного пространства процессора куда что-то проецируется. Т.е. без привязки к 60к-страницам памяти, т.к. 16к и 60к диспетчеры работают независимо друг от друга как физически, так и "в понятиях".
Начало правильно, так я и сделал. НО! То самое окно 0-3FFF у каждой банки своё или независимо от состояния F9 "впечатывается" в одну и ту же банку? (в какую?)


По умолчанию (по RESET и при включении питания) порт FB содержит значение 80h (старший разряд как я уже писал - нормальноинвертированный).
Не проблема. Но смысл? Если прочие биты равны 0, то диспетчер и так ничего не изменяет на "раскладке" окон...

Error404
14.08.2009, 00:17
Порта F4 для чтения клавиатуры как такового по IN быть не может. Ибо он состоит из 4 портов физически, с адресами F400, F401, F402... Значит, только проекция на память (или просто комп остается без клавиатуры). F5-F6 аналогично. Ибо поддержки команды LD A,(BC) я в Z-Card не заметил...


наверное так... Была отдельная доработка для работы с клавой по IN\OUT, но это уже избыточное.
И видимо имелось в виду IN A, (BC) ?



Начало правильно, так я и сделал. НО! То самое окно 0-3FFF у каждой банки своё или независимо от состояния F9 "впечатывается" в одну и ту же банку? (в какую?)


Скажем так - если диспетчер включен (D7=0), окно 0-3FFF "впечатывается" в любую банку в которую сейчас смотрит процессор, т.е. в абстрактное 64к-шное адресное пространство процессора независимо от порта F9. И видно через это окно тот сегмент, адрес которого - 4 младших бита порта FB (нумеруя кусками по 16к, т.е. из первых 256к "сплошного" ОЗУ Ориона - 0...N*64 к).



Не проблема. Но смысл? Если прочие биты равны 0, то диспетчер и так ничего не изменяет на "раскладке" окон...

Меняет. Если диспетчер включен (D7=0) и D0...D3=0000b, то во всех 60к-страницах (т.е. если расматривать адресное пространство относительно порта F9, чего я пытался не делать для понятности) в окне 0..3FFF будет одно и тоже - 16к сегмент номер 0 (0:0000), а должно быть в каждой странице разное - 16к сегмент (F9)*4 ( (F9):0000 ): диспетчер должен быть выключен, иначе многое не заработает.

Ewgeny7
14.08.2009, 00:37
Да, кой-чего прояснилось... Осталось разобраться с клавиатурой в фулраме...

Error404
14.08.2009, 08:58
Да, кой-чего прояснилось... Осталось разобраться с клавиатурой в фулраме...

Насколько я понял в FULL RAM, к портам F400...F7FF (т.е. и клавиатуры) доступа нет вообще - по MREQ там просто ОЗУ, по IORQ - ничего (для дешифрации IORQ к портам F400...F7FF в FULL_RAM нужно было делать дополнительную доработку, которую мало кто делал).

А при выключенном FULL RAM как и в любом стандартном Орионе128 IORQ для области F400...F7FF работало и на чтение и на запись как MREQ. Т.е. по IN a, (F4) можно было читать с клавиатуры (порта А ВВ55 - за счет неполной дешифраци F4F4 = F400), по OUT - писать в этот порт как командой LD (F4F4),a.

ivagor
14.08.2009, 12:58
Осталось разобраться с клавиатурой в фулраме
Обобщать не буду, скажу только про EXOLON - перед опросом клавиатуры FULL RAM выключают, потом сразу включают.

---------- Post added at 14:58 ---------- Previous post was at 14:44 ----------

Еще пара слов про EXOLON - IN при чтении клавиатуры не используется. Процедурка опроса с адреса 561Fh (это уже рабочий адрес, чтобы смотреть в эмуляторе).

Error404
14.08.2009, 18:43
Обобщать не буду, скажу только про EXOLON - перед опросом клавиатуры FULL RAM выключают, потом сразу включают.

---------- Post added at 14:58 ---------- Previous post was at 14:44 ----------

Еще пара слов про EXOLON - IN при чтении клавиатуры не используется. Процедурка опроса с адреса 561Fh (это уже рабочий адрес, чтобы смотреть в эмуляторе).

Да, это согласуется и с моими остаточными знаниями :) : в FULL RAM, к портам F400...F7FF (т.е. и клавиатуры) доступа нет вообще, для чтения с клавиатуры FULL RAM выключали.

Ewgeny7
15.08.2009, 22:06
Я не пропал, я просто сидел два дня без интернета :)
Режимы диспетчера памяти и фулрам близки к завершению. Много нервов отняла матрица переключения банок ОЗУ, ибо условия выбора сильно усложнились. Добиваю это дело. Как всегда, код написать несложно, сложно потом ковыряться в мелочах чтобы это заработало :) После каждой переделки приходится с таймингами воевать. Сейчас бьюсь с "пропадающей" клавиатурой.

Error404
15.08.2009, 22:41
Много нервов отняла матрица переключения банок ОЗУ, ибо условия выбора сильно усложнились.


А казалось бы - всего одна КП11 в Z80 card II. ;)

А сколько сейчас ОЗУ применено? Диспетчер по 16к должен адресовать 256к. А по 64к в максимуме - 16M.
Спроектируешь возможность расширения ОЗУ без смены прошивки CPLD - просто добавлением мсх ОЗУ?
До какого объема и какимим корпусами?

Ewgeny7
15.08.2009, 23:09
А казалось бы - всего одна КП11 в Z80 card II.
Да не, другое. Диспетчер теперь позволяет писать данные в банку "1" и более, даже если пишешь в "0". По адресам 0-3FFF разумеется. Фулрам добавил условий выбора.
И всё это барахло, насколько я знаю, в реальном железе стоИт не на ЗХ-кард :)


Спроектируешь возможность расширения ОЗУ без смены прошивки CPLD - просто добавлением мсх?
Так и есть. ОЗУ используется 16-битная, увеличение объема делается за счет использования старших адресов на выходах ПЛИС (А16', А17'). Итого 512кб на одном чипе ОЗУ. СтОит микросхемка 118 рэ. Вроде недорого? Можно привинтить еще один чип, если добавить еще один адрес. А нужно ли???

Error404
15.08.2009, 23:58
Так и есть. ОЗУ используется 16-битная, увеличение объема делается за счет использования старших адресов на выходах ПЛИС (А16', А17'). Итого 512кб на одном чипе ОЗУ. СтОит микросхемка 118 рэ. Вроде недорого? Можно привинтить еще один чип, если добавить еще один адрес. А нужно ли???

хочется от 512 до 1024к (при наличии $$$ на доп. мсх). Более 1024к закладываться думаю не имеет смысла.


Да не, другое. Диспетчер теперь позволяет писать данные в банку "1" и более, даже если пишешь в "0". По адресам 0-3FFF разумеется. Фулрам добавил условий выбора.
И всё это барахло, насколько я знаю, в реальном железе стоИт не на ЗХ-кард :)


писать данные в банку "1" и более, даже если пишешь в "0"
в банки 0...3 если быть точным, независимо от порта F9 (ну, я тут уже описывал). К примеру, если порт FB содержит 00001110b, то обращение на запись/чтение, к примеру к 0:1234h или 3:1234h или 7:1234h или AF:1234h или ..., будет всегда приводить к обращению к ячейке 3:9234h.

А КП11 стоит все же на Z80-card II - мсх D4, схема тут:
http://zx.pk.ru/showpost.php?p=208811&postcount=201

На плате Ориона128 для диспетчера 16к делается только 4 пореза как показано на картинке (здесь КП11 и ТМ9 - это D4 и D5 на Z80-card II), обрезки дорожек A14, A15, A16, A17 заводятся на кард.

Ewgeny7
16.08.2009, 00:27
А КП11 стоит все же на Z80-card II - мсх D4, схема тут:
Да, действительно, недоглядел :)
Тут один форумчанин предлагает свою помощь в разводке печатной платы для Ориона. Это очень гуд.
На сегодня хватит. Задолбался я уже глюки отлавливать... Вроде вручную всё работает, а игрушки (под диспетчер и фулрам) не запускаются.
И остается непонятным клавиатура. В ОРДОСе, Бейсике, Galaxian всё нормально. В прочих играх ну нифига не работает как на эмуляторе. Логика непонятна :(

Error404
16.08.2009, 01:08
На сегодня хватит. Задолбался я уже глюки отлавливать... Вроде вручную всё работает, а игрушки (под диспетчер и фулрам) не запускаются.
И остается непонятным клавиатура. В ОРДОСе, Бейсике, Galaxian всё нормально. В прочих играх ну нифига не работает как на эмуляторе. Логика непонятна :(

Надо прогнать подобные тесты: "если порт FB содержит 00001110b, то обращение на запись/чтение, к примеру к 0:1234h или 3:1234h или 7:1234h или AF:1234h или ..., будет всегда приводить к обращению к ячейке 3:9234h." - проверить правильность их выполнения в М256$

На счет клавиатуры - может, контроллер не успевает за Z80? ОРДОС и Бейсик опрашивают клаву через Монитор - там много тактов между "ld (0F401), a" и "ld a, (F400)". В играх же чтение идет сразу после записи скан-кода. Попробуй тактировать Z80 тактом 2.5 Мгц. Если действительно не успевает, то на частотах выше 2.5 Мгц при чтении с порта клавиатуры надо вводить для процессора несколько тактов /WAIT

ivagor
16.08.2009, 15:45
И остается непонятным клавиатура. В ОРДОСе, Бейсике, Galaxian всё нормально. В прочих играх ну нифига не работает как на эмуляторе.


На счет клавиатуры - может, контроллер не успевает за Z80? ОРДОС и Бейсик опрашивают клаву через Монитор - там много тактов между "ld (0F401), a" и "ld a, (F400)". В играх же чтение идет сразу после записи скан-кода.

Galaxian - в нем для опроса клавиатуры "на заставках" используются вызовы монитора, а в самой игре
5D12 LD (F400),A
5D15 LD A,(F401)

Panama - там при опросе HL=F400 ; DE=F401
используется конструкция
LD (HL),xx
LD A,(DE)
т.е. времени между выбором линейки и ее опросом значительно меньше, чем в GALAXIANе и, тем более, чем в мониторе. Можно попробовать добавить как min 6 тактов ожидания после записи в F400.

В exolone используется "медленный" опрос, но, возможно FULL RAM или диспетчер еще не совсем точно работают.

Ewgeny7
16.08.2009, 15:57
возможно FULL RAM или диспетчер еще не совсем точно работают.
Да, нашел я грабли. Биты 0 и 1 порта FB ни фига не рулят адресом в режиме диспетчера. На tehnology map хрень какая-то вместо вместо этого регистра... Блин, компилятор VHDL непредсказуем своими "оптимизациями" :(

Error404
16.08.2009, 16:03
Galaxian - в нем для опроса клавиатуры "на заставках" используются вызовы монитора, а в самой игре
5D12 LD (F400),A
5D15 LD A,(F401)

Panama - там при опросе HL=F400 ; DE=F401
используется конструкция
LD (HL),xx
LD A,(DE)
т.е. времени между выбором линейки и ее опросом значительно меньше, чем в GALAXIANе и, тем более, чем в мониторе. Можно попробовать добавить как min 6 тактов ожидания после записи в F400.


IMHO логичнее придерживать процессор при чтении с F401 (и F402 ?) , вводить WAIT на 5-10 мкс.

А еще лучше при записи в F400 взводить некий триггер, который сбрасывается через 5-10 мкс. И уже по его состоянию (если не сброшен) при чтении с F401 (и F402 ?) вводить WAIT на 5-10 мкс.

Ewgeny7
16.08.2009, 16:34
Вы наверное будете смеяццо, но тактовая частота 2.5Мгц. Не должно быть томозов с клавиатурой. Если только контроллер Камиля не успевает...

---------- Post added at 16:34 ---------- Previous post was at 16:24 ----------

Диспетчер памяти вроде заработал. Проверял на М128.
Теперь добиваю бит 5(фуллрам). С ним теже грабли.

Error404
16.08.2009, 16:47
Вы наверное будете смеяццо, но тактовая частота 2.5Мгц. Не должно быть томозов с клавиатурой. Если только контроллер Камиля не успевает...


На частоте 3,5М (5М по схеме с WAIT) контроллер работал нормально на реальном орионе. По крайней мере конструкции вида
5D12 LD (F400),A
5D15 LD A,(F401)
успевали нормально. Прошивка атмеги последняя? Должна быть orkb_01d.hex или orkb_01dr.hex (эта с поддержкой "русской раскладки"). Цитирую Камиля: "время реакции контроллера на смену адреса сканирования составляет от 1.2 до 1.5 мксек"

Ewgeny7
16.08.2009, 16:50
Дело в том, что на турбе 5Мгц у меня результат похожий.
У меня есть клава МС7007. Мож, её привинтить? :)

Error404
16.08.2009, 18:20
Дело в том, что на турбе 5Мгц у меня результат похожий.
У меня есть клава МС7007. Мож, её привинтить? :)

можно и привинтить - как временное решение. Сразу ответишь - глюк в компе или в контроллере PS2 клавы.
Привинчивать надо по такой методике:
http://retro.bip.ru/RK86/KeyBrd/KeyMC7007.html
И использовать мониторы М3 с суффиксом "MS" в названии.

У тебя ВВ55 порта F400 "честная" или эмулируется в ПЛМ-ке?

Я не случайно спрашиваю про прошивки атмеги: на промежуточных версиях прошивки был как раз такой эффект: через Монитор все работало, а быстрый скан (LD (F400),A ; LD A,(F401)) не выполнялся. Я специально тестировал этот момент на игрухах, где такой алгоритм скана, и даже сам писал на асме тест этого. Глюк 100% воспроизводился, и на последней прошивке (orkb_01d*.hex) это было устранено и стопудово работало.

Ewgeny7
16.08.2009, 18:38
Я не случайно спрашиваю про прошивки атмеги
orkb_01d.hex


У тебя ВВ55 порта F400 "честная" или эмулируется в ПЛМ-ке?
Честная. На эмулирование не хватило бы ног альтеры.

Error404
16.08.2009, 18:43
orkb_01d.hex
Честная. На эмулирование не хватило бы ног альтеры.

Ну, тогда не знаю. :v2_conf2:
Тогда идея прикрутить для проверки механическую клаву уже не кажется чуднОй. :)

ivagor
16.08.2009, 18:54
быстрый скан (LD (F400),A ; LD A,(F401)) не выполнялся
Раз Galaxian работает, значит такой скан у ewgeny7 сейчас проходит.

Если в Panamе Joe есть глюки, значит "супербыстрый" скан

там при опросе HL=F400 ; DE=F401
используется конструкция
LD (HL),xx
LD A,(DE)
не проходит

я так понимаю

Error404
16.08.2009, 19:20
Раз Galaxian работает, значит такой скан у ewgeny7 сейчас проходит.

Если в Panamе Joe есть глюки, значит "супербыстрый" скан не проходит
я так понимаю

Евгений писал, что работаю обе, просто у него почему-то определилась клава МС7007 вместо РК86 - а такое бывает с автоопределением и на реале, если при старте игры по приглашению "Press Enter" вместо Enter ляпнуть какую-нить другую клавишу:


Вот фотоотчет.
Galax работает без нареканий.
Panama Joe в ч/б варианте смотрится оригинально :) Обратите внимание на непонятные полосочки в левой части экрана. В цветном варианте на эмуле их нет. Скрыты раскраской, чтоли? И в ней проблемы с управлением. Указанные Z H J F Space не работают. зато вверх/вниз почему-то управляется стрелками вниз/вправо :v2_blink: Как идти влево/вправо - так и не нашел. Нет ли в программе опроса порта клавиатуры по IN (F4) ? Такой дурдом я еще не привинчивал :)
Тэкс, нашел лево/право. Это оказались Enter/TAB

Евгений, напиши что же все-таки работает, а что - нет.

ivagor
16.08.2009, 19:29
Евгений писал, что работаю обе, просто у него почему-то определилась клава МС7007 вместо РК86 - а такое бывает с автоопределением и на реале, если при старте игры по приглашению "Press Enter" вместо Enter ляпнуть какую-нить другую клавишу:
я под "глюками" в paname и имел ввиду проблемы с клавиатурой. Если я правильно понял, "вместо РК86 самоопределилась МС7007" - это было неподтвержденное предположение, его надо проверить - можно ли нажав какую-то левую клавишу (даже в эмуляторе) на РК86 заставить panamу подумать что подключена МС7007? При этом будут совпадать клавиши, которые получились у Евгения и то, что получится в эмуляторе?

Error404
16.08.2009, 19:37
я под "глюками" в paname и имел ввиду проблемы с клавиатурой. Если я правильно понял, "вместо РК86 самоопределилась МС7007" - это было неподтвержденное предположение, его надо проверить - можно ли нажав какую-то левую клавишу (даже в эмуляторе) на РК86 заставить panamу подумать что подключена МС7007? При этом будут совпадать клавиши, которые получились у Евгения и то, что получится в эмуляторе?

Я такое поведение автоопределения неоднократно наблюдал в игровую бытность в середине 90-х в играх, адаптированных в SP-Computer Club. В самых разных их Z80-играх. На экране-заставке если где-то написано сбоку мелким шрифтом "нажмите enter", то жать надо стого enter, а не пробел или что-то еще.

Ewgeny7
16.08.2009, 19:41
Принял решение о привинчивании клавы МС.
В Панама Джо хоть убейся, но запустить игру кнопками Интер или Пробел невозможно, игра их "не видит". Запускает игру только кнопка "стрелка вниз".
Управление в основном Enter (влево), Caps Lock (вниз), стрелка вниз (прыжок), ТАВ (вправо). "В основном" - потому что некоторые иногда всё равно не работают.

Error404
16.08.2009, 19:56
Принял решение о привинчивании клавы МС.
В Панама Джо хоть убейся, но запустить игру кнопками Интер или Пробел невозможно, игра их "не видит". Запускает игру только кнопка "стрелка вниз".
Управление в основном Enter (влево), Caps Lock (вниз), стрелка вниз (прыжок), ТАВ (вправо). "В основном" - потому что некоторые иногда всё равно не работают.

Это у тебя что-то с портом клавиатуры. Либо контроллер не успевает, либо что-то неправильно собрано.
Я сейчас проверил в эмуляторе (клавиатура РК - т.е. как и с контроллером PS2), Монитор - хоть М2, хоть М3 - Панама запускается ТОЛЬКО по кнопке "пробел" (до того хоть тресни идет заставка), управление в игре такое же, как показано на первом экране заставки. Автонастройка в Панаме, похоже, отсутствует как класс...

Ewgeny7
16.08.2009, 20:01
Error404, достал клавиатуру с антресолей :)
К ней прилагается платка с резюками и диодами. Замечательно, но...
Если верить твоей схеме, то диоды и резисторы стоят "наоборот". Т.е. имееи 8 резисторов и 11 диодов. Эта клава от рабочего Ориона. Был такой вариант подключения клавиатуры?

Error404
16.08.2009, 20:21
Error404, достал клавиатуру с антресолей :)
К ней прилагается платка с резюками и диодами. Замечательно, но...
Если верить твоей схеме, то диоды и резисторы стоят "наоборот". Т.е. имееи 8 резисторов и 11 диодов. Эта клава от рабочего Ориона. Был такой вариант подключения клавиатуры?

Было 2 варианта, один ленинградский ( http://retro.bip.ru/RK86/KeyBrd/KeyMC7007.html ) и один от Сугоняко. Они различались направлением обмена по портам F400/F401, и соответственно количеством диодов и резисторов. Делать надо так:
http://retro.bip.ru/RK86/KeyBrd/KeyMC7007.html
потому что так круче (поддерживается более интересным софтом). Игры от ZX работают только с этим вариантом.

Можешь ввести /WAIT для процессора длительностью 2мкс для каждого чтения с порта F401 ? Это может решить проблему с неуспеванием контроллера клавы...

ivagor
16.08.2009, 20:38
Блин, узнал про орион много всяких не нужных для меня вещей, но не хочется оставлять на середине.

В PANAMе тип клавиатуры определяется ДО нажатия клавиши на заставке. Делается это автоматом, по содержимому ячейки F3F2h. Монитор с РК86 записывает туда при старте 2F, а монитор с МС7007 (spb) - CF (при старте оба монитора переписывают 48 (десятичное число) байт из адресов FA1F-... в адрес F3C3-...).

На заставке можно нажимать ENTER и не только, просто не всегда реагирует с первого раза (в этом месте странновато сделан опрос, но его результаты на тип клавиатуры, подчеркну еще раз, НЕ ВЛИЯЮТ)

---------- Post added at 22:38 ---------- Previous post was at 22:26 ----------

Дополнение-поправка, вышесказанное справедливо для Питерских мониторов с суффиксами rk и ms соответвенно.
Оригинальный монитор M2, похоже, ничего не переписывает в ячейку F3F2 при старте и там будет 0 - т.к. PANAMA проверяет только старший бит, это будет соответсвовать РК86.

Error404
16.08.2009, 21:16
Блин, узнал про орион много всяких не нужных для меня вещей, но не хочется оставлять на середине.

В PANAMе тип клавиатуры определяется ДО нажатия клавиши на заставке. Делается это автоматом, по содержимому ячейки F3F2h. Монитор с РК86 записывает туда при старте 2F, а монитор с МС7007 (spb) - CF (при старте оба монитора переписывают 48 (десятичное число) байт из адресов FA1F-... в адрес F3C3-...).

На заставке можно нажимать ENTER и не только, просто не всегда реагирует с первого раза (в этом месте странновато сделан опрос, но его результаты на тип клавиатуры, подчеркну еще раз, НЕ ВЛИЯЮТ)

---------- Post added at 22:38 ---------- Previous post was at 22:26 ----------

Дополнение-поправка, вышесказанное справедливо для Питерских мониторов с суффиксами rk и ms соответвенно.
Оригинальный монитор M2, похоже, ничего не переписывает в ячейку F3F2 при старте и там будет 0 - т.к. PANAMA проверяет только старший бит, это будет соответсвовать РК86.

В-общем, по Панаме ориентироваться не надо. Чего оно там будет в F3F2h на разных Мониторах одному богу известно. У меня в M35 там 04FH

ivagor
16.08.2009, 21:22
У меня в M35 там 04FH
В M34zrk - тоже 4F, раз старший бит 0 - PANAMA определит, что клавиатура РК86. Но проблема, IMHO, не в панаме, а в том, почему у ewgeny7 в ячейке F3F2 не то значение.

Error404
16.08.2009, 22:09
В M34zrk - тоже 4F, раз старший бит 0 - PANAMA определит, что клавиатура РК86. Но проблема, IMHO, не в панаме, а в том, почему у ewgeny7 в ячейке F3F2 не то значение.

Потому что у него, как я понимаю, M2, а там эта ячейка не инициализируется (и по включении там мусор)

Ewgeny7
16.08.2009, 22:11
Потому что у него, как я понимаю, M2
Да, у него М2rk.rom
Ибо М34zrk глючат с вводом с клавы.
Завтра попробую вставить вайт после F400

Зато сегодня получилась вполне себе stable версия. Убрал мелкие глючки.

ivagor
16.08.2009, 22:26
Ибо М34zrk глючат с вводом с клавы.
В M34zrk основной опрос такой:
(к этому моменту HL=F400)
LD (HL),B
INC HL
LD A,(HL)
т.е. получается, что между записью в F400 и чтением из F401 проходит столько же времени, как и при
LD (F400),A
LD A,(F401)
Т.к. последняя конструкция работает в GALAXIANе, то может дело и не в задержке и у меня мысли иссякли.

Error404
16.08.2009, 22:35
Да, у него М2rk.rom
Ибо М34zrk глючат с вводом с клавы.


Это очень странно. Реалы только с ним (М34zrk и М34zrkd) у нас и работали, причем на 3,5...5 МГц реального такта. Ну и с M35 разными (но там нет ordos).
Предлагаю еще раз попробовать, на стабильной версии.



Завтра попробую вставить вайт после F400
Зато сегодня получилась вполне себе stable версия. Убрал мелкие глючки.


Красивше притормаживать ЦПУ непосредственно при попытке чтения с F401 ... :v2_rolley

Ewgeny7
16.08.2009, 22:46
Красивше притормаживать ЦПУ непосредственно при попытке чтения с F401
Может и так. зато мой вариант даст время Меге обработать запрос ВВшки. Я уже думаю - не перепрошить ли мне фузы на Меге, мож она не на 8Мгц работает...

Error404
16.08.2009, 23:30
Может и так. зато мой вариант даст время Меге обработать запрос ВВшки. Я уже думаю - не перепрошить ли мне фузы на Меге, мож она не на 8Мгц работает...

Оба варианта дадут время меге, т.к. фактически чтение будет происходить гарантированно после некоторого периода /WAIT. Просто поскольку проблема в том, что чтение с порта наступает до того, как контроллер подготовил данные, то и задержку выдержать логично перед/во_время чтениия, а не задолго то того.

Впрочем, при равном количестве записей сканкода и чтений результата, эффект будет одинаковый.

А ты фьюзы изначально прошивал так как в инструкции Камиля?

Ewgeny7
17.08.2009, 14:59
А ты фьюзы изначально прошивал так как в инструкции Камиля?
Вроде да, но... "и про старуху бывает порнуха" :)

Error404
17.08.2009, 18:34
Вроде да, но... "и про старуху бывает порнуха" :)

А программатор использовал UNIPROF? А то я что-то смутно помню, что бывают другие программы-программаторы, и не у всех них фьюзы выставляются одинаково (у некоторых инверсно). Или глючу?
Глупый вопрос - а блокировочные кондеры развешены?

И еще уточни пожалуйста, все же периодически клавиатура PS2 с этим контроллером не работает вообще, или глюки связаны только с тем , что все работает, но в некоторых играх кнопки управления "на на тех клавишах", но вместе с тем "не теми клавишами" эти игры нормально управляются?

Ewgeny7
17.08.2009, 22:47
А программатор использовал UNIPROF?
Нет. я пользую Algorithm Builder. Про фузы я знаю, сам других учу :) Но и сам иногда "ушами хлопаю".


Глупый вопрос - а блокировочные кондеры развешены?
Даже больше чем надо, плата всётаки на МГТФ.


И еще уточни пожалуйста, все же периодически клавиатура PS2 с этим контроллером не работает вообще, или глюки связаны только с тем , что все работает, но в некоторых играх кнопки управления "на на тех клавишах", но вместе с тем "не теми клавишами" эти игры нормально управляются?
Второе.

Error404
18.08.2009, 00:12
Второе.

Ну, значит это не глюк контроллера PS2. Это вообще не глюк, а фича - следствие криворукого программирования любителей, адаптировавших игры. К примеру, как тупая идея определять тип клавиатуры по ячейке F3F2 в PanamaJoe.

Пробовал снова использовать M34zrk?

Ewgeny7
18.08.2009, 15:11
Пробовал снова использовать M34zrk?
Не работает. Зато - о чудо, заработал Soldier of Fortune. Я так понял, фуллрам заработал.

ivagor
18.08.2009, 15:33
Зато - о чудо, заработал Soldier of Fortune. Я так понял, фуллрам заработал.
Заработал диспетчер (по крайней мере в степени достаточной для игрушек), использования Full RAM в этой игрушке я не заметил (из тех, что я выкладывал, FULL RAM есть в EXOLONе).
Опрос клавиатуры в ней сделан примерно как в мониторах zrk
00A1 LD BC,F400
00A4 LD (BC),A
00A5 INC BC
00A6 LD A,(BC)

Ewgeny7
18.08.2009, 16:18
Опрос клавиатуры в ней сделан примерно как в мониторах zrk
В игре оригинально получилось управление. На "Keyboard" всё как обычно, "через копенгаген", зато "Sinclair" неплохо рулится положенными кнопками 6...0.

Error404
18.08.2009, 18:10
Да, действительно, недоглядел :)
Тут один форумчанин предлагает свою помощь в разводке печатной платы для Ориона. Это очень гуд.


Было бы здорово "плясать" от микро-АТХ формфактора (как у Мick в Фениксе), плата правда очевидно получится меньше по площади. Может, он даже помог бы "на готовеньком" сделать - скопипастить (чтобы попасть по размерам со слотами, разъемами и т.д.)

---------- Post added at 18:10 ---------- Previous post was at 18:01 ----------



Не работает m34zrk.


Это очень странно. Нет там ничего "такого", чтобы даже игры работали, а Монитор - нет. Более того, m34zrk работает на Z80 по любой схеме - даже на московской, где нет ни прерываний, ни диспетчера, ни FullRam. А что конкретно не работает в m34zrk - в принципе не запускается комп, или какие-то отдельные заморочки?



Зато - о чудо, заработал Soldier of Fortune. Я так понял, фуллрам заработал.

Кстати, пропали все вложения с игрушками в треде. :mad:

Mick
18.08.2009, 18:14
Было бы здорово "плясать" от микро-АТХ формфактора (как у Мick в Фениксе), плата правда очевидно получится меньше по площади. Может, он даже помог бы "на готовеньком" сделать - скопипастить (чтобы попасть по размерам со слотами, разъемами и т.д.)

Ах вы плагиаторы :) Зачем копипастить, если нужно я вам и так дам pcb файл с установленными разъемами.
Если стремится попасть в корпус ATX, то для уменьшения платы можно смело ее урезать ширине. Для уменьшения по высоте надо смотреть куда попадет в реальном корпусе.

Error404
18.08.2009, 18:46
Ах вы плагиаторы :) Зачем копипастить, если нужно я вам и так дам pcb файл с установленными разъемами.
Если стремится попасть в корпус ATX, то для уменьшения платы можно смело ее урезать ширине. Для уменьшения по высоте надо смотреть куда попадет в реальном корпусе.

да, по ширине. Оставить шириной в ширину слотов. По высоте оставить как есть

Ewgeny7
18.08.2009, 20:00
А есть смысл лепить под xATX? Плата размером около 100х150, при этом на ней уместится CF-карта. Лучше уж микрокоробочки какие нибудь поискать.

---------- Post added at 20:00 ---------- Previous post was at 19:58 ----------


или какие-то отдельные заморочки?
Запускается нормально, по меню VC можно курсором побегать и даже что-то запустить. А далее - клавиатура вообще "улетает" в черти-какие символы.

Error404
18.08.2009, 22:36
А есть смысл лепить под xATX? Плата размером около 100х150, при этом на ней уместится CF-карта. Лучше уж микрокоробочки какие нибудь поискать.

100х150 + пару слотов + монтажный слепыш на "неудобицах" = вот уже и 100х250
т.е. речь фактически только о том, чтобы разъемы видео, PS\2, COM, муз сопроцессора по обрезу платы размещать в соответствии с ATX. А лишнее (по мне так и не лишнее) всегда можно отрезать, и получатся те самые 100х150 :)



Запускается нормально, по меню VC можно курсором побегать и даже что-то запустить. А далее - клавиатура вообще "улетает" в черти-какие символы.

Очень странно - причин то казалось бы нету (кроме разве тех, что M2 полностью в коде i8080). А, к примеру, М32ZRK?

Надо разбираться, сильно неохота на недоделанный М2 пересаживаться.

Ewgeny7
21.08.2009, 22:41
Заработала клавиатура. Та, которая через ВВ55 с контроллером.
В смысле - заработала во ВСЕХ программах/играх. Теперь надо проверить её с монитором М34zrk.

---------- Post added at 22:39 ---------- Previous post was at 22:19 ----------


Теперь надо проверить её с монитором М34zrk
Работает, прекрасно работает :)
Итак, вторая stable версия готова :)
Пора уже нумеровать чтоли... Пускай будет, например, ORION-2009 v0.02 alfa

---------- Post added at 22:41 ---------- Previous post was at 22:39 ----------

Большая просьба, сделайте кто-нибудь РОМ-диск с EXOLONом или чем-нибудь, активно использующим и диспетчер памяти и фуллрам. Чтобы уже закрыть этот этап и перейти к цвету.

Error404
21.08.2009, 23:35
Заработала клавиатура. Та, которая через ВВ55 с контроллером.
В смысле - заработала во ВСЕХ программах/играх. Теперь надо проверить её с монитором М34zrk.

---------- Post added at 22:39 ---------- Previous post was at 22:19 ----------


Работает, прекрасно работает :)
Итак, вторая stable версия готова :)
Пора уже нумеровать чтоли... Пускай будет, например, ORION-2009 v0.02 alfa

---------- Post added at 22:41 ---------- Previous post was at 22:39 ----------

Большая просьба, сделайте кто-нибудь РОМ-диск с EXOLONом или чем-нибудь, активно использующим и диспетчер памяти и фуллрам. Чтобы уже закрыть этот этап и перейти к цвету.

А на 5 МГц успевает клавиатура (контроллер на меге)?

Ewgeny7
21.08.2009, 23:52
А на 5 МГц успевает клавиатура (контроллер на меге)?
Успевает :) Сижу играюсь в Soldier of fortune.

Error404
21.08.2009, 23:58
Успевает :) Сижу играюсь в Soldier of fortune.

А сколько сейчас у тебя оперативки?
Припаивай IDE, чего с ромдисками перебиваться.

Ewgeny7
22.08.2009, 00:02
А сколько сейчас у тебя оперативки?
Припаивай IDE, чего с ромдисками перебиваться.
128 рабочих, впаяна 512 но еще не подключена.
СР/М требует 192?
Винт работает через СР/М?
Винту достаточно будет для работы стандартного экрана?
Где брать BRU - образы файлов для заливки на РОМ-диск?
:)

Error404
22.08.2009, 00:08
128 рабочих, впаяна 512 но еще не подключена.
СР/М требует 192?
Винт работает через СР/М?
Винту достаточно будет для работы стандартного экрана?
Где брать BRU - образы файлов для заливки на РОМ-диск?
:)

CP/M, которая умеет IDE, требует 192к и прерывания.
Экран - пофиг, просто вместо 25х80 будет 25х64 (часть утилит "частично уедет за экран"), но запускать игрушки это никак не помешает.

Ewgeny7
22.08.2009, 00:24
Error404, я у тебя уже спрашивал... Объясни тупому еще раз, пожалуйста.
У меня приготовлен винт на 100Мб.
Я его подключу как диск D на ПЦ. Отформатирую (FAT32?).
Образ с твоего сайта у меня есть.
сижу под ХР.
Какой утилиткой заливать? Какая командная строка для утилиты?

---------- Post added at 00:24 ---------- Previous post was at 00:13 ----------

Монитор для винта - М35zrk?

Error404
22.08.2009, 00:39
Error404, я у тебя уже спрашивал... Объясни тупому еще раз, пожалуйста.
У меня приготовлен винт на 100Мб.
Я его подключу как диск D на ПЦ. Отформатирую (FAT32?).
Образ с твоего сайта у меня есть.
сижу под ХР.
Какой утилиткой заливать? Какая командная строка для утилиты?

Ничего форматировать не надо, файловая система все равно будет другая. Если винт исправен, то он уже отформатирован (размечен для работы с 512-байтными секторами), надо просто образ диска залить на винт. Но винт должен уметь работать в LBA-режиме. 100Мб это может быть очень старый винт, который "только-CHS".

Делать надо так:
- Качаем образ диска в каталог C:\tmp:
http://orion-z.hoter.ru/file/337/4431_GAMES.zip
распаковываем

- Качаем утилиту в каталог C:\tmp:
http://orion-z.hoter.ru/file/355/4538_HddUtil.zip
распаковываем
Утилита консольная, поэтому переходим в cmd
Из-под cmd запускаем hddutil.exe без параметров и читаем справку

- Подключаем диск, куда писать образ, к PC, проверяем\ищем его индекс (номер) в системе командой:
C:\tmp\hddutil.exe /list
допустим, это номер 1 (номер 0 скорее всего это "c:")

- Пишем наш образ на реальный диск:
C:\tmp\hddutil.exe C:\tmp\games.ohi 1:
Оно обругается, что размер образа не соответствует размеру диска (защита от дурака), и напишет, что если образ не соответствует, надо указывать сколько секторов писать - "/c=12345678", ну и указываем:
C:\tmp\hddutil.exe C:\tmp\games.ohi 1: /c=12345678
Начинается запись. Когда счетчик дойдет до 12345678, образ записан.
Выполняем:
C:\tmp\hddutil.exe /list
должно показать, что на диске 2 партиции (раздела)

Винда в диск-манагере тоже должна видеть 2 партиции + пустое место, но партиции она не распoзнает (unknown)

Ewgeny7
22.08.2009, 00:45
Винда в диск-манагере тоже должна видеть 2 партиции + пустое место, но партиции она не распoзнает (unknown)
Ога, понятно. Завтра (уже сегодня) попробую.
Как я понял, доступ к файлам из винды невозможен? :(
Я надеялся, что получится простой доступ к содержимому ХДД, ведь далее он будет заменен на CF. Я расчитывал добавлять/удалять файло из винды...

Error404
22.08.2009, 01:05
Ога, понятно. Завтра (уже сегодня) попробую.
Как я понял, доступ к файлам из винды невозможен? :(
Я надеялся, что получится простой доступ к содержимому ХДД, ведь далее он будет заменен на CF. Я расчитывал добавлять/удалять файло из винды...

Пофайловый доступ из винды возможен только к файлам, которые лежат в образе *.ohi. Для этого используются плагины для Far и Total COmmander:
http://orion-z.hoter.ru/file/336/4433_OdiWcx.zip
В архиве есть read-me.

Ewgeny7
22.08.2009, 23:40
Делаю цвет на Орике. IDE переносим на будни, ибо паяло находится на работе.
Сделал режим 16 цветов. Игрушки преобразились. Класс! А я так боялся... :)
Ковыряю цвета дальше.
Интересно, а режим 2/4 цвета хоть где-нибудь используется?

Ewgeny7
23.08.2009, 16:08
Записал на винт образ GAME.OHI. Точнее, надеюсь, что записал. Хддутил сообщил что "комплит", но винда ничего подозрительного на диске не видит...
строка была типо такой - hddutil c:\temp\games.ohi 1: /c=131072
На вопрос ответил "Йес". цифирьки побежали.

Error404
23.08.2009, 19:30
Записал на винт образ GAME.OHI. Точнее, надеюсь, что записал. Хддутил сообщил что "комплит", но винда ничего подозрительного на диске не видит...
строка была типо такой - hddutil c:\temp\games.ohi 1: /c=131072
На вопрос ответил "Йес". цифирьки побежали.

после записи образа, команда
hddutil /list
для привода 1: должен показывать наличие двух СРМ партиций

Ну, скорее всего все нормально записалось. Пробуй подключить :)

Ewgeny7
23.08.2009, 19:51
Готова версия 0.03.
Все цветные режимы, манагер памяти расширен до 512кб (256кб х 16бит). Использовал для этого бит D2 порта F9 и прицепом D4 порта FB диспетчера страниц.

Звук делаем? Типа, FE, или нуно с EI/DI заморачиваться?

Винчестер проверю уже на Орике, но на буднях. Нужно ОЗУ перепаять, ВВ55 подключить. И ЛН1 не забыть :)

---------- Post added at 19:51 ---------- Previous post was at 19:43 ----------

Да, забыл сказать. Режим "нетурбо" теперь визуально более похож на 3.5Мгц где-то... Сказался режим fastZ80. :)

Ewgeny7
23.08.2009, 20:10
Отчёт:

Mick
23.08.2009, 20:27
Отчёт:
Круто конечно :v2_thumb: , а что так экран сплющен?

Ewgeny7
23.08.2009, 20:35
а что так экран сплющен?
Это как? :)
Самый настоящий орионовский экран. А то, что маленько "овальный" - дык съемка с близкого расстояния :)

Mick
23.08.2009, 20:47
Это как? :)
Самый настоящий орионовский экран. А то, что маленько "овальный" - дык съемка с близкого расстояния :)

Вроде, когда ты собирал рассыпушечный - вроде экран был более пропорциональным по горизонтали. А сейчас он сплющен.

Ewgeny7
23.08.2009, 20:50
Вроде, когда ты собирал рассыпушечный - вроде экран был более пропорциональным по горизонтали. А сейчас он сплющен.
Неа, это кажется. Экран у Ори почти квадратный, несмотря на 384х256 точек. Просто ТИ у него 10Мгц а не 7Мгц как на спектруме, потому и кажется "сжатым" по бокам. При рисовании окружностей на Орионе используют корректирующий коэффициент. Вроде 0,8 ЕМНИП...

Mick
23.08.2009, 20:59
Неа, это кажется. Экран у Ори почти квадратный, несмотря на 384х256 точек. Просто ТИ у него 10Мгц а не 7Мгц как на спектруме, потому и кажется "сжатым" по бокам. При рисовании окружностей на Орионе используют корректирующий коэффициент. Вроде 0,8 ЕМНИП...

Ну на телике раньше могли и растянуть в таком случае. А сейчас это уже не айс такой экран. А ты на ТИ сильно завязан? Может как в Специалисте до 8МГц опустить - ну это чисто теоретически :)

Ewgeny7
23.08.2009, 21:13
Специалисте до 8МГц опустить - ну это чисто теоретически
В принципе можно, конечно. Счетчик строчный укоротить, кварц на 16 вместо 20, синхру перенести... :)

---------- Post added at 21:13 ---------- Previous post was at 21:07 ----------

Если Error404 прикажет - буду переделывать :)

Error404
23.08.2009, 21:51
Готова версия 0.03.
Все цветные режимы,


Вот это действительно круто. По экрану осталось только 480 точек прикрутить. Как раз по горизонтали займет всю видимую часть растра.
См. тут:
http://zx.pk.ru/showpost.php?p=212461&postcount=1



манагер памяти расширен до 512кб (256кб х 16бит). Использовал для этого бит D2 порта F9 и прицепом D4 порта FB диспетчера страниц.


А это как? F9.D2 & FB.D4 ? Т.е. логическим "И"? Тогда не совсем понятно как это будет работать, ведь диспетчеры 16к и 64к независимо друг от друга переключаются.
Тут еще дело в том, что во многих играх при работе с диспетчером в FB.D4 выводится нестатический мусор, поэтому если диспетчер расширен до 512к тупо добавлением "зарезервированного как раз для этого" FB.D4, то те игрухи не работают. Поэтому в идеале для диспетчера по 16к (только для него) нужен джампер переключения "адресуем 256к \ 512к". Или что-то придумывать. Или игрухи переделывать (таких больше десятка, самые интересные)



Звук делаем? Типа, FE, или нуно с EI/DI заморачиваться?


Да, обязательно. Звук по OUT FE.D4 как в Спектруме (можно записать туда 0\1 как в порт) и одновременно по OUT FF - триггерно, т.е. явно записать туда нельзя, при каждом OUT FF состояние порта звука инвертируется.
EI/DI никак не трогаем - это для прерываний, священная корова. :) А то будет трещать при работе прерываний. Или надо отключать джампером или каким-то портом. Не, нафиг EI/DI.




Винчестер проверю уже на Орике, но на буднях. Нужно ОЗУ перепаять, ВВ55 подключить. И ЛН1 не забыть :)[COLOR="Silver"]

Да, забыл сказать. Режим "нетурбо" теперь визуально более похож на 3.5Мгц где-то... Сказался режим fastZ80. :)

Пускай. Родные 2,5М это слишком уныло. :)

Ewgeny7
23.08.2009, 21:57
А это как? F9.D2 & FB.D4 ? Т.е. логическим "И"?
Нет. Они независимы. F9 - страницы, FB - диспетчер.
Как я понимаю, диспетчер не следовало расширять на ВСЮ память, а оставить только для страниц 0-3 ? Тогда бит D4 освободится.

Error404
23.08.2009, 22:01
Нет. Они независимы. F9 - страницы, FB - диспетчер.
Как я понимаю, диспетчер не следовало расширять на ВСЮ память, а оставить только для страниц 0-3 ? Тогда бит D4 освободится.

Да, проще оставить так.
Экран 480 - тупо расширяется экранная область с 12к "вправо" до 15к
(0000...2FFF -> 0000...3BFF и.т.д.)

Ewgeny7
23.08.2009, 23:11
Экран 480 - тупо расширяется экранная область с 12к "вправо" до 15к
Не проблема. Проблема - полноценно проверить :)
Ты не мог бы РОМ-диск с какой-нить программулиной на 480 пикселей закатать? ;)

---------- Post added at 22:07 ---------- Previous post was at 22:07 ----------


Да, проще оставить так.
переделал.

---------- Post added at 23:11 ---------- Previous post was at 22:07 ----------

Сделал звук.
Порт FE <= D4,
порт FF <= NOT FF.
SOUND <= FE xor FF, т.е. уровень на Sound изменится при изменении на портах FE или FF, все равно на каком.
Опробовал на Soldier of fortune. Играет нормально :)

Error404
24.08.2009, 12:41
Не проблема. Проблема - полноценно проверить :)
Ты не мог бы РОМ-диск с какой-нить программулиной на 480 пикселей закатать? ;)[COLOR="Silver"]


Во вложении ромдиск с программой scr480$ - она включает монохром, режим 480 точек и экран 3 (0...3BFF), на котором лежит немудреная (уж что было под рукой) картинка во все 480 точек - должны быть полностью видны рамки панелей.

Режим 480 точек включается при записи "1" в старший бит ( D7 ) порта 0FAh, иначе (FA.D7=0) - режим 384 точки в строке.
Цветовые атрибуты выводятся одинаково в обоих режимах.

Других программ под Ордос с 480 точками у меня нет - этот режим поддерживается главным образом драйверами экрана CPM.

Ewgeny7
24.08.2009, 17:17
Припаял на плату баззер (бипер) от древней ПЦ-мамы, вывел на него звук. Пищит противно, но вполне удобоваримо.
Почти полностью спаял IDE интерфейс. Проверил работу порта F6 через Монитор. Щелкается нормально :)
Впаял новую память. Но, поскольку я идиот и не лечусь, придется переделывать маленько менеджер памяти. Чип оказался не 256х16 как я думал, а 512х8... :(
Даташиты надо вовремя читать...

---------- Post added at 17:17 ---------- Previous post was at 15:51 ----------

Привинтил новую память. Память медленная, 60нс. Но работает хорошо. И это хорошо :)

Error404
24.08.2009, 17:32
Привинтил новую память. Память медленная, 60нс. Но работает хорошо. И это хорошо :)

А что конкретно за память?
И на какой частоте Z80?

Ewgeny7
24.08.2009, 18:12
Память самсунг, K6X4008C1F-GF55.
Частота 2.5 расчетная, реальная скорость - фиг знает, чуть повыше.
Делаю режим wide screen :)
Точнее, сделал уже. Экран "развертывается". Но я делаю чтобы параллельно сдвигался синхроимпульс, дабы "отценторовать" изображение автоматически.
На телевизоре всё прекрасно, а ТВ-тюнер на компе "срывается". Ищу глюки :)

Ewgeny7
24.08.2009, 18:33
Готово, отладил и для тюнера (значит, на ПАЛ-кодере тоже работать будет) :)
Твою картинку еще не смотрел, щас прошью флешку...

Error404
24.08.2009, 18:41
Готово, отладил и для тюнера (значит, на ПАЛ-кодере тоже работать будет) :)
Твою картинку еще не смотрел, щас прошью флешку...

На моей картинке не на много интереснее :)

А 70нс на 5 Мгц потянет?
А то у меня таких есть пара штук (512к х 8). Планировал как-нить к реалу прикрутить.

Ewgeny7
24.08.2009, 19:11
Ага, посмотрел картинку :)
Всё получилось!
Завтра проверим в работе СР/М и винчестер :)

---------- Post added at 18:44 ---------- Previous post was at 18:41 ----------


А 70нс на 5 Мгц потянет?
Уверен, что потянет. Ибо в режимах работы Ориона реальные задержки этих чипов делятся на два. 70нс задержки получается только при смене адреса не выключая сигнала "чтение". А у нас такого нет :)
Возник последний глючок. На турбе почемуто сразу после запуска "срывается" Soldier of Fortune. Поиграю длиной INT'а...

---------- Post added at 18:48 ---------- Previous post was at 18:44 ----------

Да, а какой Монитор прошивать для винчестера? M35zrkh ?

---------- Post added at 19:00 ---------- Previous post was at 18:48 ----------

Запускал тесты Test256 и Z80card. Первый всё нормально, второй показал бэды в порту F500 и ram protect. Это нормально, ибо F500 у меня практически отсутствует, ибо заменен двумя регистрами в альтере, а по поводу ram protect указаний не поступало :)

---------- Post added at 19:11 ---------- Previous post was at 19:00 ----------


Да, а какой Монитор прошивать для винчестера? M35zrkh ?
Ога, разобрался... http://www.zx.pk.ru/showpost.php?p=212349&postcount=9

Error404
24.08.2009, 19:42
Всё получилось!
Завтра проверим в работе СР/М и винчестер :)

Да, а какой Монитор прошивать для винчестера? M35zrkh

Ога, разобрался... http://www.zx.pk.ru/showpost.php?p=212349&postcount=9

Грузиться с HDD c порта F600 надо
- ИЛИ при помощи Монитора M36ZRKH.BIN (в этом случае ромдиск не нужен),
- ИЛИ с любым Монитором (кроме мониторов с суффиксами "*D.*", "*H.*" - они не грузят Ордос) программой HDDF600$ из ромдиска

На всякий случай: во вложении оба - и M36ZRKH.BIN, и образ ромдиска с HDDF600$ (Монитор к нему не прилагается)

Ewgeny7
24.08.2009, 21:45
На всякий случай: во вложении оба - и M36ZRKH.BIN, и образ ромдиска с HDDF600$ (Монитор к нему не прилагается)
Залил на флешку. Завтра увидим кто ест ху :)

Error404
24.08.2009, 22:40
Запускал тесты Test256 и Z80card. Первый всё нормально, второй показал бэды в порту F500 и ram protect. Это нормально, ибо F500 у меня практически отсутствует, ибо заменен двумя регистрами в альтере


А почему двумя регистрами? Должно быть как минимум 3 (т.к. матрица 8x11)

Ewgeny7
24.08.2009, 22:53
А почему двумя регистрами? Должно быть как минимум 3 (т.к. матрица 8x11)
Какая матрица в РОМ-диске? :)
Два регистра на адрес - и читаем данные напрямую в проц из ПЗУ.

Error404
24.08.2009, 23:11
Какая матрица в РОМ-диске? :)
Два регистра на адрес - и читаем данные напрямую в проц из ПЗУ.

Аааа. Попутал с F400 :v2_wacko:

Интересно - сколько сейчас в % CPLD занимает текущие навороты? И какая CPLD используется?

Ewgeny7
25.08.2009, 16:39
Интересно - сколько сейчас в % CPLD занимает текущие навороты? И какая CPLD используется?
Я же говорил - Циклон I. Емкость чипа - 2910 LE.
Всего использовано 2200 LE, из них сам процессор занимает около 1900 LE. Т.е. туда еще можно черта в ступе и с избушкой засунуть. Правда, чем больше "пихаешь" тем больше взглюков появляется. Ядро на 1.5 вольта, наверное к "наводкам" более чувствительно, чем трех-пятивольтовые MAX. Но у максов и емкость в 20 раз меньше :)

В общем, винт не заработал. Я так и думал :)
Получаем error 46. И сам винт как-то не торопится раскручиваться при подключенном кабеле. В прошивке случаем не используется IN/OUT для порта F6, а то я забыл эту опцию Орион добавить? :)
Подключал винт к Скорпиону, он увидел две партиции - 1 и 31Мб... Шо цэ сие???
Переписываю винт заново и добавляю в прошивку Ори работу с F6 по IN/OUT...

Error404
25.08.2009, 17:58
Я же говорил - Циклон I. Емкость чипа - 2910 LE.
Всего использовано 2200 LE, из них сам процессор занимает около 1900 LE. Т.е. туда еще можно черта в ступе и с избушкой засунуть. Правда, чем больше "пихаешь" тем больше взглюков появляется. Ядро на 1.5 вольта, наверное к "наводкам" более чувствительно, чем трех-пятивольтовые MAX. Но у максов и емкость в 20 раз меньше :)

В общем, винт не заработал. Я так и думал :)
Получаем error 46. И сам винт как-то не торопится раскручиваться при подключенном кабеле. В прошивке случаем не используется IN/OUT для порта F6, а то я забыл эту опцию Орион добавить? :)
Подключал винт к Скорпиону, он увидел две партиции - 1 и 31Мб... Шо цэ сие???
Переписываю винт заново и добавляю в прошивку Ори работу с F6 по IN/OUT...

IN/OUT для порта F6 не используется, только LD.
А error 46 кто пишет?

С HDD-дисками, да еще старинными, я мало экспериментировал - только на начальной стадии (потом поломались переходники 2,5"->3,5", а винты у меня были ноутбучные), далее в основном с CompactFlash. Винт должен поддерживать LBA. CHS для простоты я не поддерживал.
Глупый вопрос: схема правильно собрана?

А Скорпион точно MBR-схему поддерживает? Не свою ли "уникальную" (и соответственно увидит абы что)? Там 2 партиции + свободное место (если диск более 64М, то свободного места тоже будет более чем 30М). Вот что действительно в образе games.ohi (смотрим орионовским fdisk-ом):

Ewgeny7
25.08.2009, 19:35
А error 46 кто пишет?
Твой драйвер (или как его там назвать?) :)


Винт должен поддерживать LBA.
HddUtil пишет - supported.



Глупый вопрос: схема правильно собрана?
Проверял в первую очередь. Потом записал 80Н в F603 и пощелкал все три порта, проверял тестером. Всё вроде фунциклирует изюмительно.



А Скорпион точно MBR-схему поддерживает? Не свою ли "уникальную" (и соответственно увидит абы что)?
Ессественно. MBR у него во главе угла :)
Он увидел две uncknown партиции, 31 и 1 Мб. И одну большую unused. Смотря на твою картинку - увидел он правильно. Ведь фактический раздел СР/М на образе диска 31Мб? + мелочь какая-то чуть больше 1 мегабайта.


IN/OUT для порта F6 не используется, только LD.
А вот это напрягает... Я рассчитывал на ЭТУ ошибку...

---------- Post added at 18:55 ---------- Previous post was at 18:53 ----------

Драйвер видит и master и slave?

---------- Post added at 19:35 ---------- Previous post was at 18:55 ----------

Залил образ на винт снова.
По hddutil /list вижу "СР/М, СР/М". Размеров к сожалению не указывает.

Наконец-то запаял стационарную батарейку на плату Ори. После защитных диодов напряжение на ОЗУ в режиме stand by около 1,8 вольт. На диске D получился замечательный NVRAM-диск для хранения мелочевки :) При токе потребления 12 микроампер (при пониженном напряжении должно быть еще меньше) стандартной литиевой батарейки хватит на очень долго.

Error404
25.08.2009, 19:41
Он увидел две uncknown партиции, 31 и 1 Мб. И одну большую unused. Смотря на твою картинку - увидел он правильно. Ведь фактический раздел СР/М на образе диска 31Мб? + мелочь какая-то чуть больше 1 мегабайта.


Похоже что так. Там "неровные" размеры, если в мегабайтах - то с дробями. fdisk округляет по арифметическому правилу, в данном случае в большую сторону. Оба раздела (и 32М и 1,8М) содержат CPM, оба загрузочные. На большом - игры адаптированные от ZX, на маленьком - старые орионовские.


Драйвер видит и master и slave?


Загрузка только с Мастера. А уже загрузившись, можно одновременно работать с двумя любыми партициями: на Мастере или на Рабе - не принципиально, номера партиций (0,2,4,6=Мастер ; 1,3,5,7=Slave) настраиваются в config.sys.

Ewgeny7
25.08.2009, 22:18
Error404, а как (чем) можно редактировать ромдиски?
На твоем эмуляторе можно выдергивать отдельные файлы из диска В и сохранять их как .ord
Для "склейки" отдельных файлов, как я понял, нужны файлики .bru или .rom.
В orion_software я нашел кучку .bru файлов, но не все, что мне нужны.
Каким образом можно конвертануть файлы .ord в .bru для дальнейшей склейки?

P.S. Может стоит завести отдельную тему "ОРИОН для начинающих"? :)
В спектрумовских файлах и форматах я чувствую себя как рыба в воде, а в орионовских... :(

Error404
26.08.2009, 01:34
Error404, а как (чем) можно редактировать ромдиски?
На твоем эмуляторе можно выдергивать отдельные файлы из диска В и сохранять их как .ord
Для "склейки" отдельных файлов, как я понял, нужны файлики .bru или .rom.
В orion_software я нашел кучку .bru файлов, но не все, что мне нужны.
Каким образом можно конвертануть файлы .ord в .bru для дальнейшей склейки?

P.S. Может стоит завести отдельную тему "ОРИОН для начинающих"? :)
В спектрумовских файлах и форматах я чувствую себя как рыба в воде, а в орионовских... :(

bru и ord - это одно и тоже, только с разным расширением. Файл состоит из 16 байт заголовка (8=имя + 2=старт + 2=длина + 00FFFFFF) и собственно данных количеством байт как указано в поле "длина". Хорошим тоном считается выравнивать длину файла кратно 16. В ромдиске или рамдиске Ордос файлы хранятся последовательно (как в ТРДОС). Конец цепочки файлов - байт FF в первом байте очередного заголовка. Первые 2к ромдиска - код самой ORDOS, далее файлы. Символ "$" в имени - признак исполняемого файла. Расширения как такового нет, содержится в имени (если оно нужно по смыслу).

Я формирую ромдиск просто копируя в MSDOS:
copy /b ordos.bru + vc.ord + prog1.bru + prog2.ord + FF.bin romdisk.bin

Error404
26.08.2009, 10:13
Я же говорил - Циклон I. Емкость чипа - 2910 LE.
Всего использовано 2200 LE, из них сам процессор занимает около 1900 LE. Т.е. туда еще можно черта в ступе и с избушкой засунуть.


В идеале, засунуть бы туда адаптер клавы PS2 (как ты и планировал), и муз. сопроцессор AY8910. AY=YM в CPLD по-моему тоже уже есть реализованное, можно позаимствовать. Чтобы на плате лишнего не надо было делать. 512ВИ1 наверное не получится туда впихнуть, т.к. оно должно иметь батарейное питание и работать при выключенных прочих подсистемах.



В общем, винт не заработал. Я так и думал :)
Получаем error 46. И сам винт как-то не торопится раскручиваться при подключенном кабеле.


Загрузчик при неуспехе возвращает FE (нет диска), FF (диск занят - BUSY), C3 (если МБР не в коде Z80), либо код ATA-ошибки из регистра ошибки. Надо спеки на ATA курить, чтобы найти что означает "46". А чего-то спецификацию я пока не нагуглил.

Попробуй загрузиться с HDD при помощи HDDF60R$.ord (оно есть в ромдиске во вложении этого сообщения). Я там при инициализации добавил ATA-команду recalibrate (говорят, помогает престарелым винтам) и некий вывод на экран, чтобы понять на каком шаге сваливается.

Ewgeny7
26.08.2009, 15:50
Загрузчик при неуспехе
Вчера добавил в прошивку работу с портом F6 как портом I/O и перезаписал винт.
Сегодня был сдвиг - винт прочитался. На экране появилось что-то вроде "boot loader... тра-та-та quantum maverik 270а..." и две партиции диска. И таймер тикал :)
Но далее глюк. При выборе партиции (любой) светодиод винта еще на секунду загорается, с винта что-то читается... и висим. Экран не очищается, в правом нижнем углу экрана появляется полосочка (FF в каком-то байте экрана). И всё :(
картина одинаковая и при M36zrkh и при M34zrk + драйвер. Что там происходит после выбора партиции и перед началом работы теста памяти не припомнишь? ;)



AY=YM в CPLD по-моему тоже уже есть
Ээээ.... А каким образом там аналоговые выходы АУ реализованы на цифровых выходах альтеры? :) Если и есть. то наверное не для первого циклона :(


В идеале, засунуть бы туда адаптер клавы PS2 (как ты и планировал)
Да, буду делать. Для этого понадобтся помощь igor_t. Надеюсь, не откажет :)

ZEK
26.08.2009, 16:01
А каким образом там аналоговые выходы АУ реализованы на цифровых выходах альтеры?
Простейший вариант PWM (ШИМ), второй вариант I2S на оба варианта для стерео необходимо 2 ноги

Ewgeny7
26.08.2009, 16:05
Простейший вариант PWM (ШИМ), второй вариант I2S на оба варианта для стерео необходимо 2 ноги
На опенсорсах искать?

ZEK
26.08.2009, 16:13
На опенсорсах искать?
PWM I2S они очень просто реализуются
первый на основе счетчика второй это фактически сдвиговый регистр

в принципе так (http://www.google.com.ua/search?hl=ru&source=hp&q=HDL+PWM&btnG=Поиск+в+Google&meta=&aq=f&oq=)находится много чего.

Вообще если понять как работает сделать можно за 20 минут.
I2S есть например в NeoGS
PWM по моему в One Chip MSX посмотреть можно

Error404
26.08.2009, 18:17
Вчера добавил в прошивку работу с портом F6 как портом I/O и перезаписал винт.
Сегодня был сдвиг - винт прочитался. На экране появилось что-то вроде "boot loader... тра-та-та quantum maverik 270а..." и две партиции диска. И таймер тикал :)


Это означает, что MBR-сектор (сектор с LBA=0) и identify с винта читаются.
В меню партиций были надписи "ALTAIR-GAMES-ZX", "ALTAIR-GAMES-OLD"?
Эти строчки - метка дисков (партиций) - volume label. Если да, то значит читаются и правильно адресуются по LBA boot-секторы партиций (это первый сектор каждой из партиций). Значит чтение с винта должно проходить нормально и далее - при чтении (загрузке) кода операционки.



Но далее глюк. При выборе партиции (любой) светодиод винта еще на секунду загорается, с винта что-то читается... и висим. Экран не очищается, в правом нижнем углу экрана появляется полосочка (FF в каком-то байте экрана). И всё :(
картина одинаковая и при M36zrkh и при M34zrk + драйвер. Что там происходит после выбора партиции и перед началом работы теста памяти не припомнишь? ;)


А далее начинается жесткач. :)

Во-первых, программный код загрузчика ОС и холодного старта ОС (включая тест памяти, до которого пока не доходит) работает из первой страницы (1-й , если считать с 0). После теста памяти вообще работаем в-основном из 2-й страницы (считая с 0).
До этого весь код, что запускается из-под Ордос у тебя работал в нулевой странице, а доступ к остальным страницам получал через п\п ПЗУ F800 (эти п\п работают только внутри кода ПЗУ и только на регистрах Z80). Поэтому, если нормально описано ПЗУ, но неточно описано "слипшееся" ОЗУ области F000...F3FF (в этом адресном пространстве процессора независимо ни от каких портов, как то F9 и FB, ВСЕГДА область ОЗУ F000...F3FF нулевой страницы), то деффект мог ранее быть незаметен.

За счет "слипшегося" ОЗУ области F000...F3FF применяется практика написания такого кода: размещаем небольшие куски "кода взаимодействия" и стек процессора в области F000...F3FF, щелкаем "банками" ОЗУ портом F9, но не теряем при этом выполняемость, т.к. выполнение кода в области F000...F3FF не прерывается, в отличие от того как если разместить код ниже F000 и вывести в порт F9 значение, отличное от текущего.

0EFFFH - МАРКЕР БАНКА. Специфическая для этой версии CPM ячейка. С записи в нее FF во все страницы ОЗУ (переключаемся по порту F9 даже в несуществующие страницы !!! - нам то пофиг, мы в области F000...F3FF, т.е. гарантированно в существующей нулевой странице, а определить сколько ОЗУ присутствует - надо) начинается инициализация ОС перед тестом ОЗУ (сидящий опять же в F000...F3FF), который потом много и часто щелкает портом F9 (до этого порт F9 ставится в "1" только один раз - перед чтением MBR, котороый кладется с адреса 0 соответственно в первую страницу считая с 0). А у тебя F9 не щелкает, видимо все заканчивается на инициализации в 0FFh ячейки 0EFFFH (МАРКЕРа БАНКА) второй страницы или первой из несуществующих (0FFh в EFFFH нулевой страницы ты на экране все же видишь).

Т.е. где-то в самом начале увисает еще до теста, иначе оно писало бы в левом верхнем углу количество найденного и проверенного ОЗУ, а по экрану промелькнула бы "сверху-вниз слева-направо" очередная тестируемая ячейка. По мере прохождения теста значение в 0EFFFH - МАРКЕР БАНКА становится равным номеру страницы ОЗУ (это нужно чтобы по прерыванию определять - в какой страница мы есть, т.к. порт F9 на чтение не доступен).

Ну, и конечно много раз при холодном старте ОС из 1-й станицы (считая с 0) вызываются команды вида (нормальные для реала):


LD A,80H
OUT (0FBh),A ; выключили диспетчер 16к
; .........................................
LD HL,0F3CFH
LD (HL),0C0H ; экран с C000
INC HL
LD (HL),30H ; ширина экрана
INC HL
LD (HL),B ; B=0. фонт на F000
INC HL
LD (HL),0F0H
inc hl
ld (hl),B ; B=0. откл. инверсию
CALL 0F82DH ; распаковать фонт
;
; вызвали п\п из ПЗУ, а сами при этом в странице 1 (не 0 !)
;

pop hl ; HL=NTAB
LD DE,BPROC
LD BC,AVECEND-AVECBEG
LDIR ; МЕЖБАНКОВЫЙ СЕРВИС
;
; куча LDIR-ов в область F000...F3FF - куда оно реально попадет?
; инициализация неких переменных Монитора, опят же в области ;F000...F3FF
;
JP MMTEST ; MEMORY TEST
;
MMTEST:
; ........................
LD BC,80FFH
LD HL,MARKER
CALL INITEST ; инициализация ячейки EFFF всех страниц в значение 0FFh
; goto F000...F3FF area !!!
; ........................
CALL 0F812H ; console status (keypressed)
; вызвали п\п из ПЗУ, а сами при этом в странице 1 (не 0 !)
;
CALL TESTMEM ; тест очередного 4к-фрагмента goto F000...F3FF area !!!
; ........................
;

; ........................
; БЕЗВРЕДНЫЙ ТЕСТ ПАМЯТИ. ВХОД: HL = 0EFFFH - МАРКЕР БАНКА.
; DE = НАЧАЛЬНЫЙ АДРЕС, BC = ДЛИНА ТЕСТИРУЕМОГО ФРАГМЕНТА
; ВЫХОД: ФЛАГ Z=TRUE ЕСЛИ НОРМАЛЬНО, Z=FALSE(NZ) ЕСЛИ BAD
;
TESTMEM:OUT (PF9),A
CP (HL)
JR Z,TESTM0
JR NC,RETT ; ПЕРЕХОД ЕСЛИ (MARKER)<AKK
LD (HL),A ; МЕНЯЕМ 0FFH НА НОМЕР СТР.
TESTM0: EX DE,HL
TESTM1: LD A,(HL)
CPL
LD (HL),A
CP (HL)
JR NZ,RETT
CPL
LD (HL),A
CP (HL)
JR NZ,RETT
INC HL
DEC BC
LD A,B
OR C
Jr NZ,TESTM1
RETT: LD A,WORKPAGE
OUT (PF9),A
RET
;
; ; инициализация ячейки EFFF всех страниц в значение 0FFh
;
INITEST:OUT (PF9),A
LD (HL),C
INC A
DJNZ INITEST
JR RETT
;



Некокторые подрограммы Монитора (типа статуса клавиатуры, рапаковки фонта) можно вызывать из любой страницы, т.к. они не лезут в ОЗУ ниже F000, другие, которые лезут в ОЗУ ниже F000 надо вызывать только из положения port_F9=0.

---------- Post added at 18:17 ---------- Previous post was at 17:52 ----------

Резюмирую предыдущий пост: считаю, надо проверить, как описано "слипшееся" ОЗУ области F000...F3FF, особенно в случае, если в порт F9 занесен номер физически несуществующей страницы ОЗУ - в этом случае ниже F000 должна быть видна одна из существующих страниц. К примеру, если у тебя 512к ОЗУ (т.е. 8 страниц по 64к) и в порт F9 выведено значение 25, то в области 0000...EFFF с учетом "игнорирования старших линий адреса" должно быть видно ОЗУ страницы (25 mod 8)=1, а в области F000...F3FF - ОЗУ страницы 0 (как и во всех случаях).

Не надо закладываться на некий фиксированный объем ОЗУ (чтобы не отрезать возможность расширения простым добавлением ОЗУ) - оно должно автоматически получиться когда "не задействованы старшие линии адреса- A19, A20,...". Просто надо это уточнить.

Ewgeny7
26.08.2009, 21:29
F000...F3FF (в этом адресном пространстве процессора независимо ни от каких портов, как то F9 и FB, ВСЕГДА область ОЗУ F000...F3FF нулевой страницы
Тэкс, кажется косяк нашелся...
Как я понял, область F000 - F3FF нулевой страницы всегда видна на любой странице. Область F400 - FFFF занята портами и ПЗУ. F9 переключает страницы, но верхняя область от F000 остается видна всегда. А что происходит при fullram? F000-F3FF остается из нулевой страницы, а то что выше этой области? Тоже нулевая страница или уже своя, назначенная F9?

---------- Post added at 21:29 ---------- Previous post was at 20:36 ----------

НАШЕОООЛ!!!
Ошибка в коде руления выборкой памяти. Исправил.

Error404
26.08.2009, 21:43
Тэкс, кажется косяк нашелся...
Как я понял, область F000 - F3FF нулевой страницы всегда видна на любой странице. Область F400 - FFFF занята портами и ПЗУ. F9 переключает страницы, но верхняя область от F000 остается видна всегда. А что происходит при fullram? F000-F3FF остается из нулевой страницы, а то что выше этой области? Тоже нулевая страница или уже своя, назначенная F9?


Все что я писал постом ранее к fullram не относится!
В fullram каждая страница относительно порта F9 - сплошные обособленные 64к ОЗУ без каких-либо склеиваний, портов или ПЗУ.



НАШЕОООЛ!!!
Ошибка в коде руления выборкой памяти. Исправил.

Так теперь CPM запускается или нет?