Вход

Просмотр полной версии : ZX_Multi_Card



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

SoftFelix
21.03.2012, 10:50
Сообщение от SoftFelix
Готов протестировать такую прошивку.
Попробуй.
Перешил сегодня ATF этой прошивкой без дешифрации часов по Глюку.

еще перешей мегу на новую прошиву v2.7 из 877 сообщения.
8515 тоже сегодня перешил на 2.7

Попробуй на вход /WAIT Z80 (24-ая ножка) поставить небольшой кондер, пикофарад на 47..100.
Сегодня вечером дома сперва попробую с новыми прошивками, а потом уже буду конденсатор вешать.

SoftFelix
21.03.2012, 21:05
Перешил сегодня ATF этой прошивкой без дешифрации часов по Глюку.
С этой прошивкой ATF всё заработало. И Test v4.30, и Real Commander v2.6

Но я ж ещё и 8515 перешил с 2.6 на 2.7, но это вряд ли повлияло.

p.s. А часики по Глюку хочется... :v2_wink2:

---------- Post added at 20:59 ---------- Previous post was at 20:40 ----------

caro, мне тут подумалось по-поводу неработоспособности некоторых программ с часами по Глюку. Ведь был какой-то стандарт на использование внутренней памяти микросхемы часов? Может этот Test v4.30 и Real Commander читают что-то из какой-то конкретной ячейки памяти часов и пытаются управлять каким-то железом (портом) или запустить что-то с какого-то адреса?

---------- Post added at 21:04 ---------- Previous post was at 20:59 ----------

Точно! Вот отрывок описания от самогО Mr.Gluk'а оригинальной схемы часов:

#0E-#3F - озу пользователя.

Озу пользователя мною частично использовано:

#0E - режим запуска boot'ов (48/128/вся память)
#0F - сейчас не использую (в ранних версиях был атрибут часов)
#10 - номер дисковода
#11 - байт #АА - контроль наличия м/с и необходимости вывода
часов. Кнопка "9" в Глюке инвертирует этот байт
#12 - флаг "user message", если = "G", то вместо стандартного
"MR GLUK RESET SERVICE V5.1" будет выводится мессага из часов.

Она начинается с адреса #13 и заканчивается байтом #ff, длина
не более 27 байт, контрольные коды не допускаются (будут взяты
из пзу-шного знакогенератора и выведены).

Alone> Real Commander 2.x плюёт на это с высокой колокольни:
"Текущий дисковод активной панели сохраняется в #10 ячейку CMOS,
конфигурация панелей и дисковод, выбранный на пассивной панели,
сохраняются в ячейку #15".

Spectre> QC и RC используют одинаковые ячейки. Порядок действий:
1) Читаем из #16 позицию курсора в каталоге (позиция на единицу
больше реальной, то есть 1..128).
2) Проверяем на равенство 0, если ноль то выход, иначе уменьшаем
на 1. Также еще проверяем, чтобы не больше 127 было.
3) Читаем #15 ячейку с конфигурацией коммандера (RC или QC)
4) По 5-му биту определяем чья инфа - RC или QC, берем из 0-2
бит output дисковод.
5) Читаем из #10 текущий дисковод, делаем and 3.

RC 2.x конфиг:
PK>>>>>> Конфигурация панелей:
PK>>>>>> биты 0-2 дисковод пассивной панели
PK>>>>>> бит 3 - вкл-на ли Basic маска на актив.панели
PK>>>>>> бит 4 - ... Basic маска на пассивной панели
PK>>>>>> бит 5 - 0
PK>>>>>> бит 6 - какая панель активна
PK>>>>>> бит 7 - информация вкл/выкл.
PK>>>>>> Эта переменная записывается в #15 ячейку CMOS

QC v3.10 конфиг:
0-2: output drive
3: 1 - pack with LE, 0 - simple pack.
4: 1 - fullcat off, 0 - fullcat on.
5: 1 - QC config ID, 0 - RC config ID.
6: 1 - play without loop, 0 - loop on.
7: 1 - boot mode, 0 - commander mode.


---------- Post added at 21:05 ---------- Previous post was at 21:04 ----------


Не работает Quick Commander.
Вот и ещё одно подтверждение.

caro
21.03.2012, 21:18
caro, мне тут подумалось по-поводу неработоспособности некоторых программ с часами по Глюку. Ведь был какой-то стандарт на использование внутренней памяти микросхемы часов?Это привязка ячеек ОЗУ RTC:

Содержимое ячеек CMOS:
0Ah - 20h
0bH - 02h b2=noBCD,b1=24hour,b0=season
0Ch - 00h int bits (b4=1 new time)
0Dh - 80h b7-battery low
0Eh - 00h b7-Turbo/b1,b0-mem mode
0Fh - 00h
10h - 00h drv (b7=off)
11h - 0AAh flag CMOS
12h - 47h(G) - message(FF)
Поскольку в ZXMC2 содержимое CMOS отображается на внутреннюю EEPROM ATMega8515,
рекомендую при записи прошивки записать в EEPROM эти данные.
Возможно именно отсутствие этой информации, вернее ее отличие от этих значений
и приводит к такой реакции программ, использующих эти ячейки.

SoftFelix
21.03.2012, 21:26
Поскольку в ZXMC2 содержимое CMOS отображается на внутреннюю EEPROM ATMega8515
Про эту особенность я в курсе.

Значит с дешифрацией часов всё нормально и в ATF можно вернуть изначальную прошивку? Но в EEPROM АТМЕГИ надо заранее прописать определённые значения. Прописать значения от 0Аh до 12h значениями из твоей мессаги?

caro
21.03.2012, 21:30
Про эту особенность я в курсе.

Значит с дешифрацией часов всё нормально и в ATF можно вернуть изначальную прошивку? Но в EEPROM АТМЕГИ надо заранее прописать определённые значения. Прописать значения от 0Аh до 12h значениями из твоей мессаги?Да, именно так.
Что-то мне подсказывает, что после этого всё заработает :)
Честно говоря я EEPROM всегда прописывал этими значениями по умолчанию.

SoftFelix
21.03.2012, 21:33
Что-то мне подсказывает, что после этого всё заработает
Я тоже так думаю, но...

Честно говоря я EEPROM всегда прописывал этими значениями по умолчанию.
Вот это не понятно. Программа в АТМЕГЕ это делает при первом запуске?

caro
21.03.2012, 21:40
Я тоже так думаю, но...
Вот это не понятно. Программа в АТМЕГЕ это делает при первом запуске?Нет не делает.
Прописать надо при записи прошивки или из программы установки CMOS,
которая есть в GLUK-сервисе и вызывается не помню какой клавишей.

SoftFelix
21.03.2012, 22:01
Нет не делает.
Теперь понятно. Может ввести эту инициализацию?

Прописать надо при записи прошивки или из программы установки CMOS,
которая есть в GLUK-сервисе и вызывается не помню какой клавишей.
А альтернативный софт-конфигуратор есть?

caro
21.03.2012, 22:07
Теперь понятно. Может ввести эту инициализацию?Сейчас понял, что видимо надо было это сделать.


А альтернативный софт-конфигуратор есть?Я вырезал из GLUK-сервиса эту часть и сделал бинарник,
который можно встроенной терминалкой ZXMC загрузить через нуль-модемный кабель,
а затем запустить и скорректировать содержимое EEPROM.
Если интересно, могу скинуть.

SoftFelix
21.03.2012, 22:22
Я вырезал из GLUK-сервиса эту часть и сделал бинарник,
который можно встроенной терминалкой ZXMC загрузить через нуль-модемный кабель,
а затем запустить и скорректировать содержимое EEPROM.
Если интересно, могу скинуть.
Спасибо, Камиль, но у меня сейчас всё равно нет кабеля, а завтра на работе программатором перешьюсь.

p.s. А может сразу сделаешь 2.71 с инициализацией? Хотя, нет... Надо сперва проверить.

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

Еще вопрос. Вот это дано смещение относительно 0-ой ячейки EEPROM АТМЕГИ?

Содержимое ячеек CMOS:
0Ah - 20h
0bH - 02h b2=noBCD,b1=24hour,b0=season
0Ch - 00h int bits (b4=1 new time)
0Dh - 80h b7-battery low
0Eh - 00h b7-Turbo/b1,b0-mem mode
0Fh - 00h
10h - 00h drv (b7=off)
11h - 0AAh flag CMOS
12h - 47h(G) - message(FF)

caro
21.03.2012, 22:26
Еще вопрос. Вот это дано смещение относительно 0-ой ячейки EEPROM АТМЕГИ?Да.
Ячейки EEPROM с 00h до 09h не используются.

SoftFelix
21.03.2012, 23:59
caro, завтра перешьюсь (EEPROM и ATF) и вечером отчитаюсь.

---------- Post added at 23:59 ---------- Previous post was at 22:30 ----------


caro, завтра перешьюсь (EEPROM и ATF) и вечером отчитаюсь.
Не утерпел, перешился дома. Все значения в EEPROM АТМЕГИ прописал, согласно таблице. К сожалению, ничего не заработало, всё тоже самое. :(

Blade
22.03.2012, 00:24
Мне кажется дело не в содержимом ячеек CMOS. Все эти программы (TEST4.30, RC, QC) вешаются во время определения количества памяти. Они активно пишут в порт #FFF7, а QC еще в #AFF7. Как мультикарта обрабатывает обращения к этим портам?

newart
22.03.2012, 00:27
Blade, чего на личку не отвечаешь? :(

SoftFelix
22.03.2012, 08:18
Мне кажется дело не в содержимом ячеек CMOS. Все эти программы (TEST4.30, RC, QC) вешаются во время определения количества памяти. Они активно пишут в порт #FFF7, а QC еще в #AFF7. Как мультикарта обрабатывает обращения к этим портам?
Я вчера, перед тем как записать в ячейки EEPROM АТМЕГИ (они же проецируются как память часов), считал EEPROM. Он весь содержал #FF. Такое впечатление, что туда никогда и ничего не писалось.

caro
22.03.2012, 08:59
Я вчера, перед тем как записать в ячейки EEPROM АТМЕГИ (они же проецируются как память часов), считал EEPROM. Он весь содержал #FF. Такое впечатление, что туда никогда и ничего не писалось.Посмотри внимательно, как минимум 0-ая ячейка не должна содержать #FF.
Она хранит информацию о состоянии индикатора Scroll Lock и Num Lock при включении питания.
Если при программировании контроллера EEPROM не записывалась (все = 0FFh), то при первом включении
PS/2 клавиатура будет заблокирована - Scroll Lock будет гореть.
Для того, что бы она заработала, надо выключить Scrooll Lock нажатием соответствующей клавиши на клавиатуре,
что запомнится в EEPROM (ячейка 0, бит 0).
При последующих включениях это состояние будет считыватся из EEPROM, и клавиатура будет работать.
Сам контроллер ни одну из других ячеек EEPROM модифицировать не будет.
Ячейки EEPROM с 00h до 09h не проецируются на ячейки часов, где хранится именно время, а сразу пишутся в память RTC.

SoftFelix
22.03.2012, 09:48
Посмотри внимательно, как минимум 0-ая ячейка не должна содержать #FF.
Там точно было #FF, но я вчера клаву вообще не подключал.


Ячейки EEPROM с 00h до 09h не проецируются на ячейки часов, где хранится именно время, а сразу пишутся в память RTC.

Это понятно - ни какого ресурса не хватит.

Внутренняя программа АТМЕГИ точно эмулирует память RTC? У меня идеи кончились. Надо или что-то действительно правильное прописывать в память RTC (начальная инициализация), или ковырять код того же TEST v4.30 или Real Commander'а.

Можно ещё вынуть ПРОФ-РОМ и впихнуть туда ПЗУ с Глюк Резет Сервис и в нём уже настроить (и проверить RTC).

John North
22.03.2012, 09:51
А я вот меняю содержимое CMOS (часы подвожу, но там можно и другие ячейки менять) с помощью MadRom. Её можно грузить с диска, как обычную прогу. Ну или с немо_иде)
Образ прилагаю.

SoftFelix
22.03.2012, 09:56
John North, О! Вот это сегодня попробую!

---------- Post added at 09:56 ---------- Previous post was at 09:54 ----------

John North, а у тебя ZXMC2 установлена?

John North
22.03.2012, 09:58
у тебя ZXMC2 установлена?
ну да, установлена.
в смысле, да, вторая.
но прога и с первой картой норм работает.

caro
22.03.2012, 10:07
SoftFelix, насчет тест4.30 - на профи всё пашет. клава и мышь, я правда пробовал всё вместе, т.е. клава+мышь, ну и клаву отдельно - всё работает отлично. мультикарта стоит первая в слоте расширителя, за ней неогс (наоборот тож пробовал, пашет одинаково)Почему на Профи работает, а на KAY нет? Не понятно.

---------- Post added at 11:07 ---------- Previous post was at 11:01 ----------


Мне кажется дело не в содержимом ячеек CMOS. Все эти программы (TEST4.30, RC, QC) вешаются во время определения количества памяти. Они активно пишут в порт #FFF7, а QC еще в #AFF7. Как мультикарта обрабатывает обращения к этим портам?Если это только запись, и адрес соответствует портам часов, то модифицируется соответствующий регистр.
Иначе операция просто игнорируется.
Но контроллер в любом случае WAITит процессор.
А что за порты #AFF7 и #FFF7?

SoftFelix
22.03.2012, 10:09
Почему на Профи работает, а на KAY нет? Не понятно.
У КАЯ есть порт #1ffd, порт #ff и ПРОФ-РОМ. А у меня ещё есть 4МБ РАМ. Но верхние 3МБ я могу полностью отключить рубильником, что и делаю - остаётся обычный КАЙ-1024. Единственное, остаётся разблокированным 5-ый бит порта #7FFD, т.е. он идёт не на защёлку #7ffd, а на маппер Пентагон-512.

caro
22.03.2012, 11:13
CMOS_SET - утилита, предназначенная для начальной
установки содержимого CMOS-памяти GLUK-часов.
Это процедура - часть GLUK-сервиса.
В архиве представлена в виде бинарника, который
можно загрузить через нуль-модемный кабель по
COM-порту с помощью встроенной терминалки ZXMC.
А также в формате SCL, для запуска c дискеты.
В архиве лежит исходник.

SoftFelix
22.03.2012, 11:20
А также в формате SCL, для запуска c дискеты.
Сегодня попробую.

Blade
22.03.2012, 20:10
Если это только запись, и адрес соответствует портам часов, то модифицируется соответствующий регистр.
Иначе операция просто игнорируется.
Но контроллер в любом случае WAITит процессор.
А что за порты #AFF7 и #FFF7?
На порт AFF7 кто-то вешал 4Мб на Пентагоне, QuickCommander про это знает. FFF7 это порт АТМ7.10. Если при записи в эти порты формируется WAIT, может что-то с WAIT'ом не то?

SoftFelix, А программка из вложения работает, или тоже вешается?

SoftFelix
22.03.2012, 21:15
А программка из вложения работает, или тоже вешается?
Запускается и выдаёт вот такое, вываливаясь в BASIC:
http://photo.qip.ru/photo/softfelix/3868246/large/97070857.jpg (http://photo.qip.ru/users/softfelix/3868246/97070857/)


CMOS_SET - утилита, предназначенная для начальной
Запускал. Ноль на массу. :(


А я вот меняю содержимое CMOS (часы подвожу, но там можно и другие ячейки менять) с помощью MadRom.
Тоже запускал. Да, меняет настройки CMOS'а более наглядно, но результат тот же - TEST v4.30 и Real Commander не запускаются. Real Commander виснет с таким экраном:
http://photo.qip.ru/photo/softfelix/3868246/large/97070865.jpg (http://photo.qip.ru/users/softfelix/3868246/97070865/)

solegstar
22.03.2012, 21:17
SoftFelix, получится вручную заблокировать порт 1ffd?

SoftFelix
22.03.2012, 21:21
получится вручную заблокировать порт 1ffd?
Да. Только тогда не будет работать ПРОФ-РОМ и СМУК. С винта не получится ничего запустить.

solegstar
22.03.2012, 21:34
Да. Только тогда не будет работать ПРОФ-РОМ и СМУК. С винта не получится ничего запустить.

попробуй. если будет всё нормально, то надо будет дорабатывать дешифрацию 1ffd в кае.

---------- Post added at 19:30 ---------- Previous post was at 19:25 ----------

а вообще я в таких случаях ставлю самое стандартное и безглючное ПЗУ, которое 100% проверено - 128бейсик, 48бейсик 1982г., трдос 5.04т, ну в первую банку можно прошить допустим тот же крамис или глюк, и начинаю тестить... чтоб хоть содержимое ПЗУ откинуть из вариантов глюкодрома...

---------- Post added at 19:34 ---------- Previous post was at 19:30 ----------

ну и ессно ручную блокировку порта дффд профи, благо кнопка есть на плате.

SoftFelix
22.03.2012, 21:39
попробуй. если будет всё нормально, то надо будет дорабатывать дешифрацию 1ffd в кае.
Но _без_ карты ZXMC2 или с ней, но _без_ дешифратора Глюк-часов - всё работает замечательно.

---------- Post added at 21:39 ---------- Previous post was at 21:38 ----------


ну и ессно ручную блокировку порта дффд профи, благо кнопка есть на плате.
Вот это не совсем понял. У меня такого порта для памяти нет.

Blade
22.03.2012, 21:41
Запускается и выдаёт вот такое, вываливаясь в BASIC:
Значит проблема с портом FFF7. Программа в бесконечном цикле пишет в порт FFF7 - 64 записи, пауза 10 прерываний и опять запись.

SoftFelix
22.03.2012, 21:43
Значит проблема с портом FFF7
Ага...


Программа в бесконечном цикле пишет в порт FFF7 - 64 записи, пауза 10 прерываний и опять запись.
А что пишет? Разные байты или один и тот же?

solegstar
22.03.2012, 21:44
Вот это не совсем понял. У меня такого порта для памяти нет.

это я к тому, что отключаю порты расширения, все, кроме 7ffd.

SoftFelix
22.03.2012, 21:49
p.s. Если кратко, #FFF7 это что за порт?

---------- Post added at 21:49 ---------- Previous post was at 21:44 ----------

Посмотрел сейчас описание Глюковых часов, так там вообще нет порта #FFF7. Есть #EFF7.


Доступ к часам осуществляется посредством установки 7-го бита
порта #EFF7, иначе в адресном пространстве портов компа часов
нет.

После установки вышеозначенного бита в 1 возможен доступ к
портам микросхемы: #BFF7 - регистр данных, #DFF7 - регистр
адреса.

В регистр адреса записывается адрес необходимох ячейки, в
регистр данных записываются данные для записи в установленную
ячейку м/с, а также считываются данные из выбранной ячейки.

Следует помнить, что после сброса 7-го бита #EFF7 м/с забудет,
какой регистр вы установили, поэтому работу с часами рекомендую
проводить по нижеприведенному алгоритму.

Пример 1, он же последний.
;запись в регистр
;H - номер регистра, L - число для записи
LD BC,#EFF7
LD A,#80
OUT (C),A
;включили доступ к м/с и устанавливаем рег-ры
LD BC,#DFF7
OUT (C),H; устанавливаем ячейку.
LD B,#BF
OUT (C),L; заносим значение в ячейку.
;все выключаем
XOR A
LD BC,#EFF7
OUT (C),A
RET

Blade
22.03.2012, 21:49
А что пишет? Разные байты или один и тот же?
Разные: 0..63


p.s. Если кратко, #FFF7 это что за порт?
Переключает страницы с #C000 в АТМ2.

SoftFelix
22.03.2012, 21:51
p.s. Если кратко, #FFF7 это что за порт?
Переключает страницы с #C000 в АТМ2.
И что нам это даёт?

Blade
22.03.2012, 21:58
SoftFelix, А если конденсатор на WAIT поставить, как caro советовал? Резистор R20 в КАЕ какого номинала стоит?

SoftFelix
22.03.2012, 22:21
А если конденсатор на WAIT поставить, как caro советовал?
Пока не пробовал. Там тяжело подобраться. Но придётся...


Резистор R20 в КАЕ какого номинала стоит?
680 Ом (слева от ИР10).
http://photo.qip.ru/photo/softfelix/3868246/xlarge/92745945.jpg (http://photo.qip.ru/users/softfelix/3868246/92745945/)

caro
23.03.2012, 13:16
CMOS_SET - утилита, предназначенная для начальной ....
-----
Запускал. Ноль на массу. :(Не понял, не работает что-ли?
Если так, то надо разбираться с портами GLUK-часов, причем именно в твоем варианте конфигурации.

SoftFelix
23.03.2012, 13:26
Не понял, не работает что-ли?
Она запускается и работает. Дает менять значения в памяти часов. Но там и так всё выставлено правильно (?) - как по твоей таблице вчера позавчера выставил (программатором 8515), так оно там и сидит.

caro
23.03.2012, 13:46
Она запускается и работает.А программа от BLADE как я понял сбрасывает комп?
Похоже надо копать в сторону анализа работы ZXMC2 с портами #FFF7 и #AFF7,
которые не задействованы в GLUK-часах, но вызывают прерывания ZXMC2.

SoftFelix
23.03.2012, 13:49
А программа от BLADE как я понял сбрасывает комп?
Не совсем так: http://zx.pk.ru/showpost.php?p=483524&postcount=1026.
Я ещё сегодня вечером кондёр на /WAIT повешу.

caro
23.03.2012, 14:02
Не совсем так:Да, я видел, что тест выходит в BASIC с сообщением об ошибке, причем на первом же проходе.
Сейчас гляну, что там выполняется и где может быть проблема.


Я ещё сегодня вечером кондёр на /WAIT повешу.Не думаю что это что-либо изменит в твоем случае.
Конденсатор нужен, если комп время от времени самопроизвольно выдает символы с клавиатуры,
либо при работе с мышкой курсор дергается.
У тебя не тот случай.

Blade
23.03.2012, 14:34
Да, я видел, что тест выходит в BASIC с сообщением об ошибке, причем на первом же проходе.
Сейчас гляну, что там выполняется и где может быть проблема.

Там имитируется тест памяти ATM2. В порт FFF7 записываются числа в диапазоне 0..63 (в ATM2 надо немного другие значения писать, но так как в КАЕ нет его диспетчера памяти, это неважно), потом пауза 10 кадров и все сначала. Порт FFF7 в TR-DOS. Я дописал еще 3 варианта: 2 - число в порт пишется 1 раз за прерывание, 3, 4 - тоже, что и 1 и 2, но порт FFF7 не в области TR-DOS.

SoftFelix
23.03.2012, 17:16
Я дописал еще 3 варианта:
Сегодня вечером проверю.

SoftFelix
23.03.2012, 21:39
2 - число в порт пишется 1 раз за прерывание,
Не работает.


3, 4 - тоже, что и 1 и 2, но порт FFF7 не в области TR-DOS.
Оба работают. PASS #00...#FF

Какие выводы?

Blade
23.03.2012, 21:59
Какие выводы?
Зависание происходит только при попытке обращения к портам в области TR-DOS. И судя по зависанию второй программы достаточно одного обращения к порту. А турборежим в каком состоянии в это время был?
---
Семен, Семеныч! Кажется я понял в чем дело. Если посмотреть схему Nemo BDI, то узел включения/выключения DOS один в один содран с желтого Скорпиона, а там выключение DOS происходит по сигналу WAIT. Программа приходит на #2A53, делает out (c),a, мультикарта выставляет WAIT, пзу переключается на BASIC48 и программа вместо RET улетает куда-то в 48 бейсик. На желтом Скорпионе скорее всего тоже самое будет.
Лечить можно двумя способами: или резать NemoBDI, чтобы там нормально узел переключения работал, или поставить мультикарту в слот после NemoBDI, он все порты в области DOS блокирует и до мультикарты IORQ не дойдет.

SoftFelix
23.03.2012, 23:27
А турборежим в каком состоянии в это время был?
И включено, и выключено. ТУРБО не влияет на результат работы программ.

---------- Post added at 22:52 ---------- Previous post was at 22:10 ----------


Семен, Семеныч! Кажется я понял в чем дело. Если посмотреть схему Nemo BDI, то узел включения/выключения DOS один в один содран с желтого Скорпиона, а там выключение DOS происходит по сигналу WAIT. Программа приходит на #2A53, делает out (c),a, мультикарта выставляет WAIT, пзу переключается на BASIC48 и программа вместо RET улетает куда-то в 48 бейсик. На желтом Скорпионе скорее всего тоже самое будет.
Лечить можно двумя способами: или резать NemoBDI, чтобы там нормально узел переключения работал, или поставить мультикарту в слот после NemoBDI, он все порты в области DOS блокирует и до мультикарты IORQ не дойдет.
Звучит очень правдоподобно. Завтра проверю.

Вот только мне будет очень проблематично конструктивно поменять текущее положение NEMO-FDC и ZXMC2 для долговременного использования. В качестве эксперимента, конечно, получится.

---------- Post added at 23:01 ---------- Previous post was at 22:52 ----------


Лечить можно двумя способами: или резать NemoBDI, чтобы там нормально узел переключения работал, или поставить мультикарту в слот после NemoBDI, он все порты в области DOS блокирует и до мультикарты IORQ не дойдет.
А если попробовать завести сигнал /DOS в ZXMC2?

---------- Post added at 23:27 ---------- Previous post was at 23:01 ----------


Завтра проверю.
Опять не удержался. :)

Короче, вытащил NEMO-FDC из слота КАЯ с самым низким приоритетом и воткнул его в ZX-BUS_TEE. Получилось так (приоритет плат от высокого к низкому):

1. General Sound
2. NEMO-FDC
3. ZXMC2
4. NEMO-IDE
5. SMUC2 Rev.B

Т.е. NEMO-FDC перекрывает /IORQ с 3-ей по 5-ую позиции. Но... Опять не работает.

http://photo.qip.ru/photo/softfelix/3868246/xlarge/97082130.jpg (http://photo.qip.ru/users/softfelix/3868246/97082130/)

Blade
23.03.2012, 23:36
А перемычка на NEMO-FDC в каком положении стоит? И если у SMUC приоритет ниже, чем у NEMO-FDC, то он работать не будет.

SoftFelix
23.03.2012, 23:41
перемычка на NEMO-FDC в каком положении стоит?
4-5.

Если поставить 3-4, то по MAGIC'у перестаёт выходить в ТЕНЕВИК.

---------- Post added at 23:41 ---------- Previous post was at 23:40 ----------


И если у SMUC приоритет ниже, чем у NEMO-FDC, то он работать не будет.
Работает. :)

Blade
23.03.2012, 23:42
Если 4-5, то не работает блокировка по IORQGE, он просто IORQ через себя пропускает.


Работает. :)
Это потому, что перемычка 4-5 стоит :)

SoftFelix
23.03.2012, 23:50
Короче, переставляю всё назад и перемычку в 3-4. А если заработает, тогда как же MAGIC?

Blade
23.03.2012, 23:55
Теневик похоже не будет работать. Когда перемычка в положении 3-4, блокируются все порты, в том числе и на плате КАЯ. А теневик пытается страницы переключать.

SoftFelix
24.03.2012, 00:00
Работает.
Это потому, что перемычка 4-5 стоит


Короче, переставляю всё назад и перемычку в 3-4.
Ты прав - SMUC перестал работать. Сорри, у меня глаза слипаются, завтра буду платы в слотах тусовать. Но надо как-то, имхо, без этого решить проблему.

SoftFelix
25.03.2012, 00:50
Сегодня только подметил, что очень сильно бегут часы в сабже - на час в сутки. Кварц снимал с какой-то материнской платы в районе южного моста, где батарейка и обвязка соответствующая. Конденсатор С11 на 6.8 пФ.

caro
25.03.2012, 06:13
Сегодня только подметил, что очень сильно бегут часы в сабже - на час в сутки. Кварц снимал с какой-то материнской платы в районе южного моста, где батарейка и обвязка соответствующая. Конденсатор С11 на 6.8 пФ.Лучше поставить чуть побольше, например на 15..22 пф.

caro
25.03.2012, 13:22
Семен, Семеныч! Кажется я понял в чем дело. Если посмотреть схему Nemo BDI, то узел включения/выключения DOS один в один содран с желтого Скорпиона, а там выключение DOS происходит по сигналу WAIT.Да, это точно приводит к нарушению нормальной работы компа.
Никаким тасованием карт по слотам это не исправить. Надо переделывать эту часть схемы NEMO BDI.

John North
25.03.2012, 14:33
Nemo BDI это те, которые zst распространяет?
Если да, то нарисуйте плиз схему доработки.

SoftFelix
25.03.2012, 18:22
Лучше поставить чуть побольше, например на 15..22 пф
Завтра на работе перепаяю.


Надо переделывать эту часть схемы NEMO BDI.
Может ZXMC2 как-нить малой кровью доработать?

savelij
25.03.2012, 18:32
Для работы с картами SD и MMC собрал небольшую "дочку" для ZXMC.

Каким образом осуществляется доступ к SD карточке?

caro
25.03.2012, 19:24
Может ZXMC2 как-нить малой кровью доработать?Только если /WAIT с ZXMC напрямую подавать на вход /WAIT Z80 (24 нога) в обход ZX_BUS.

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


Каким образом осуществляется доступ к SD карточке?Предполагалось, что с картой по SPI-интерфейсу будет работать ATMega,
а доступ со стороны Z80 будет по одному из вариантов IDE-интерфейса Спекки.
Но для работы в таком режиме желательно иметь больший обьем ОЗУ, чем у ATMega8515.

savelij
25.03.2012, 19:56
Предполагалось, что с картой по SPI-интерфейсу будет работать ATMega,
а доступ со стороны Z80 будет по одному из вариантов IDE-интерфейса Спекки.
Но для работы в таком режиме желательно иметь больший обьем ОЗУ, чем у ATMega8515.

А если просто прокинуть через атмегу доступ до карточки?

caro
25.03.2012, 20:02
А если просто прокинуть через атмегу доступ до карточки?Возможен и такой вариант, но надо придумать алгоритм такой "прокидки".

savelij
25.03.2012, 20:06
И еще вопрос. За счет буферов которые на дочке стоят удастся удалить карточку от контроллера хотя бы на длину шлейфов клавы/мыши? Или с карточкой этот номер не пройдет?

caro
25.03.2012, 20:11
И еще вопрос. За счет буферов которые на дочке стоят удастся удалить карточку от контроллера хотя бы на длину шлейфов клавы/мыши? Или с карточкой этот номер не пройдет?Не знаю, не пробовал.

SoftFelix
25.03.2012, 20:40
Только если /WAIT с ZXMC напрямую подавать на вход /WAIT Z80 (24 нога) в обход ZX_BUS.
А если вообще не вырабатывать /WAIT при обращении к портам Глюка? Быстродействия АТМЕГи не хватает?

caro
25.03.2012, 20:50
А если вообще не вырабатывать /WAIT при обращении к портам Глюка? Быстродействия АТМЕГи не хватает?Если бы хватало, то и проблем бы не было.

solegstar
25.03.2012, 21:03
а если завести сигнал /dos на мультикарту в дешифратор?

---------- Post added at 20:03 ---------- Previous post was at 19:59 ----------

к /M1 по "И"?

caro
25.03.2012, 21:05
а если завести сигнал /dos на мультикарту в дешифратор?Да, наверное это рабочий вариант.
Но при этом ни один из портов ZXMC не будет доступен из ПЗУ TRDOS. Может это и не надо?

savelij
25.03.2012, 21:09
а если завести сигнал /dos на мультикарту в дешифратор?

А зачем он там?

solegstar
25.03.2012, 21:15
Да, наверное это рабочий вариант.
Но при этом ни один из портов ZXMC не будет доступен из ПЗУ TRDOS.

ну впринципе /dos в "0", когда отрабатываются команды трдос, на клавиатуру недолжно повлиять, ведь после отработки команд, /dos возвращается в "1".

---------- Post added at 20:14 ---------- Previous post was at 20:11 ----------


А зачем он там?

глюки просто в КАЕ из-за NEMO FDC+ZXMC2. а точнее при обращении к глюкочасам. чуть выше выяснялось.

---------- Post added at 20:15 ---------- Previous post was at 20:14 ----------

только вот из сервис-меню глюка тогда часики ненастроить... неподходит вариант. :(

caro
25.03.2012, 21:22
глюки просто в КАЕ из-за NEMO FDC+ZXMC2. а точнее при обращении к глюкочасам. чуть выше выяснялось.Наверное всё таки лучше поправить NEMO FDC.
Это переключение триггера DOS по /WAIT мне кажется не логичным.

solegstar
25.03.2012, 22:22
Наверное всё таки лучше поправить NEMO FDC.
Это переключение триггера DOS по /WAIT мне кажется не логичным.

может помогут мои эксперименты. вот, что я доделал в NemoFDC, чтобы контроллер запустился на Профи в расширителе шины Profi_ZX-BUS без верхней платы...

PS: проверялось только в трдос, для запуска CP/M схему надо дорабатывать как минимум одним элементом "И", но для Вашей ситуации это несущественно.
PPS: wait от контроллера Nemo FDC я отключил. перемычка в положении 3-4. это была пробная часть схемы из контроллера профи и для Вашего варианта наверняка можно модифицировать в более простую.

UPD - пока доработку оставлю здесь, может модераторы перенесут её в другое место...

Blade
25.03.2012, 22:54
solegstar, С такой доработкой перестанет работать кнопка Magic. Чтобы работала и кнопка Magic и ZXMC2, надо вместо сигнала WAIT на D14.3 и D14.11 подать сигнал RAMM1. Формируется он примерно так:

solegstar
25.03.2012, 23:23
solegstar, С такой доработкой перестанет работать кнопка Magic. Чтобы работала и кнопка Magic и ZXMC2, надо вместо сигнала WAIT на D14.3 и D14.11 подать сигнал RAMM1. Формируется он примерно так:

ну, Magic при доработке меня интересовал в последнюю очередь, так что запускал вот так, т.к. хотел проверить хотя бы возможность удачного запуска этого контроллера на машинах без торможения памяти и знал, что буду дорабатывать схему для CP/M. за схему спасибо, попробую как-нибудь.

Дмитрий
25.03.2012, 23:26
только вот из сервис-меню глюка тогда часики ненастроить... неподходит вариант.
сервис-меню работает в РАМе, там фиолетово до /DOS

SoftFelix
01.04.2012, 11:20
Сообщение от SoftFelix Посмотреть сообщение
Сегодня только подметил, что очень сильно бегут часы в сабже - на час в сутки. Кварц снимал с какой-то материнской платы в районе южного моста, где батарейка и обвязка соответствующая. Конденсатор С11 на 6.8 пФ.
Лучше поставить чуть побольше, например на 15..22 пф.
Поменял на 22 пФ - часы пошли точно.

SoftFelix
02.04.2012, 22:20
В середине 90-ых покупал прямо у Немо NEMO-FDC для апгрейда компа племянника. Так вот тогда мне выдалась такая бумажка для подключения контроллера к другим клонам. Обратите внимание на п.7, где показано формирование нового /WAIT'а специально для контроллера:

http://photo.qip.ru/photo/softfelix/3868246/xlarge/97223197.jpg (http://photo.qip.ru/users/softfelix/3868246/97223197/)

caro
02.04.2012, 22:37
В середине 90-ых покупал прямо у Немо NEMO-FDC для апгрейда компа племянника. Так вот тогда мне выдалась такая бумажка для подключения контроллера к другим клонам. Обратите внимание на п.7, где показано формирование нового /WAIT'а специально для контроллера:
Там еще написано, что этот сигнал не надо подключать к /WAIT Z80, так что это никакой не /WAIT, а сигнал сброса тригера /DOS, когда идет выполнение команды Z80 вне 0-ой страницы памяти.
Так это обычно и делается в других контроллерах.

SoftFelix
02.04.2012, 22:42
caro, да это понятно. Я просто этот "новый /WAIT" в кавычки не взял. Как я понял, если добавить эту схемку на ЛЛ1 в плату NEMO-FDC, то проблема с /WAIT'от от ZXMC2 пропадёт?

caro
02.04.2012, 22:45
caro, да это понятно. Я просто этот "новый /WAIT" в кавычки не взял. Как я понял, если добавить эту схемку на ЛЛ1 в плату NEMO-FDC, то проблема с /WAIT'от от ZXMC2 пропадёт?Надеюсь что да.
Там правда еще сигнал H1 зачем то добавлен. Его на шине нет, но мне кажется он и не нужен.

SoftFelix
02.04.2012, 22:52
caro, попробую как-нить на досуге вот по этой схеме доработать NEMO-FDC: http://zx.pk.ru/showpost.php?p=484756&postcount=1074. А использование сигнала /DOS в ZXMC2 никак не исправит ситуацию (без доработки NEMO-FDC)?

caro
03.04.2012, 05:24
А использование сигнала /DOS в ZXMC2 никак не исправит ситуацию (без доработки NEMO-FDC)?Даже если бы и исправил, я бы так не стал делать.

Black_Cat
30.04.2012, 12:51
вопрос по перемножателю http://zx.pk.ru/showpost.php?p=500373&postcount=24

SoftFelix
09.06.2012, 22:17
ZXMC2 окончательно нормально заработала в КАЕ-1024_SL4_v2010. Все проблемы совместимости были исключительно из-за особенности схемотехники NEMO-FDC (http://zx.pk.ru/showpost.php?p=514434&postcount=1164).

SoftFelix
14.06.2012, 14:17
Народ, а кто-нить подключал к ZXMC2 внешний COM'овский модем? Полноценно работать будет? А то в сабже некоторых сигналов RS-232 не хватает. Без RI, наверное, входящие звонки не будет принимать, а без DCD коннект не определит? Завалялся у меня тут внешний ZYXEL OMNI 56EE. Сейчас на работе спаял к нему полный кабель DB-9 <-> DB-9 - на ПЦ в XP работает.

caro
14.06.2012, 14:26
Народ, а кто-нить подключал к ZXMC2 внешний COM'овский модем?Я подключал US Robotics.

Полноценно работать будет?В рамках того, что я хотел получить работал полноценно.

А то в сабже некоторых сигналов RS-232 не хватает. Без RI, наверное, входящие звонки не будет принимать, а без DCD коннект не определит?Для работы компьютера с модемом вполне достаточно и трех линий RX,TX,GND.
Дополнительные сигналы конечно желательны, но не обязательны.
Всё определяется тем, что вы хотите от этой системы получить.

SoftFelix
14.06.2012, 14:43
Дополнительные сигналы конечно желательны, но не обязательны.
Всё определяется тем, что вы хотите от этой системы получить.
Полноценную работу модема. Хочу ФИДОшку в КАЕ возродить. На компе с аватарки у меня подключен внутренний ISA'шный модем по схеме Кондратьева. Там ещё прерывания с модема на /NMI Z80 заведены. Работало замечательно.

---------- Post added at 14:43 ---------- Previous post was at 14:30 ----------

Кстати, а какой кабель RS-232 нужно для соединения ZXMC2 и модема? Для МОДЕМ <-> PC спаял "прямой" кабель (1-1, 2-2,...,9-9). А для ZXMC2 такой подойдёт или надо на другом конце переворачивать RxD-TxD и RTS-CTS?

caro
14.06.2012, 15:04
Кстати, а какой кабель RS-232 нужно для соединения ZXMC2 и модема? Для МОДЕМ <-> PC спаял "прямой" кабель (1-1, 2-2,...,9-9). А для ZXMC2 такой подойдёт или надо на другом конце переворачивать RxD-TxD и RTS-CTS?Не надо ничего переворачивать, все линии идут один в один.
Нуль-модемный кабель с перекрутками сигналов нужен когда два активных COM-порта соединяются.

---------- Post added at 17:04 ---------- Previous post was at 16:48 ----------


Полноценную работу модема. Хочу ФИДОшку в КАЕ возродить.Да, для этой задачки желательно RI добавить, для отслеживания входящих звонков.
В принципе решаемо и аппаратно и программно.

SoftFelix
15.06.2012, 15:11
Вчера подключил модем к сабжу. В старом-добром Melon'е v1.90 заработал сразу и без проблем. Потратил только время на понимание того, что Melon не дружит со SMUC'ом и его надо грузить строго с дискеты. Единственное, скорость лочки порта 57600 работает только в при TURBO_ON - оно и понятно, на обычной частоте Z80 вышибает символы. Пока только в терминалке баловался, реальный коннект не делал. Теперь очередь за Dickie Mailer в iS-DOS'е. Но там, скорее всего, не заработает. DOSX для схемы Кондратьева есть только с обработчиком NMI.

zorel
05.07.2012, 19:41
Запустил и я ZXMC2, у меня заработал сразу после включения. Только пока нет конденсатора для часиков, протестировал на скорпионе, клавиатура работает. :) Мышку не тестировал, думаю что тоже должна работать.

http://photo.qip.ru/photo/zorel/4014779/middle/99344323.jpg (http://photo.qip.ru/users/zorel/4014779/99344323/)


Только была проблема с прошивкой АТФки, мой программатор GALblast, не захотел прошивать, зато ГАЛку прошить без проблем.
мегу прошил программатором, USBTiny (http://www.getchip.net/posts/056-usb-programmator-legko-usbtiny/) из набора платок программаторов, софтом AVRDUDEPROG, програмку скачал от сюда (http://yourdevice.net/projekt/gui-avrdude-2).

caro, спасибо большое за контроллер :)

SoftFelix
05.07.2012, 20:26
Только пока не впаял конденсатор для часиков,
При 6.8 пФ у меня сильно убегали вперёд, поставил 22 пФ - идут очень точно.

zorel
05.07.2012, 20:32
SoftFelix, жесть, на 22 pf , у меня есть, только в корпусе 0603 :) попробую запаять.

---------- Post added at 21:02 ---------- Previous post was at 20:58 ----------

SoftFelix, площадки рядом расположены, запаял, а как теперь часики можно проверить?

SoftFelix
05.07.2012, 20:43
а как теперь часики можно проверить?
Так это... На первой странице топика: встроенный макрос проверки - 1) Тест RTC - вызов <WinMenu> + <F1> (набирать в BASIC 48!).

---------- Post added at 20:43 ---------- Previous post was at 20:37 ----------

p.s. Вот этим можно время выставить: http://zx.pk.ru/showpost.php?p=483274&postcount=1018.

zorel
05.07.2012, 21:03
SoftFelix, спасибо, часики идут, проверил, не могу зайти в теневой монитор, попадаю в бейсик.

SoftFelix
05.07.2012, 21:08
не могу зайти в теневой монитор, попадаю в бейсик.
Сабж генерит импульс только на /NMI, а надо на MAGIC.

zorel
05.07.2012, 21:29
SoftFelix, жалко конечно, придется кнопку выводить отдельно, ну да ладно, в принципе не проблема.

Ewgeny7
06.07.2012, 10:23
zorel, режешь дорожку идущую на NMI слота. И проводком соединяешь выход MNI карты со входом MAGIC платы скорпа. Я напаял "золотые штырьки" на мультикарту и на Скорп, и при установке нацепляю провод.

solegstar
06.07.2012, 10:30
zorel, режешь дорожку идущую на NMI слота. И проводком соединяешь выход MNI карты со входом MAGIC платы скорпа. Я напаял "золотые штырьки" на мультикарту и на Скорп, и при установке нацепляю провод.

или можно анод диода, идущего на NMI поднять.

solegstar
14.09.2012, 17:26
Добрый день, Сaro. Возможно интегрировать в прошивку ZXMC2 эмуляцию курсорных клавиш вверх/вниз на колесо мыши по переключению с фиксацией режима какой либо из функциональных кнопок (как Scroll Lock)?

Уже когда-то проскакивало в этой теме, но всё же очень хочется включать турбо режим профи кнопкой с клавиатуры с запоминанием состояния в zxmc2. возможно для этого задействовать сигнал PB2, и низким уровнем включать турборежим?

И если есть возможность объясните как переделать прошивку zxmc2 для полноценной расширенной клавиатуры профи с использованием 6-го бита порта FE.
Спасибо заранее.

caro
14.09.2012, 18:08
Возможно интегрировать в прошивку ZXMC2 эмуляцию курсорных клавиш вверх/вниз на колесо мыши по переключению с фиксацией режима какой либо из функциональных кнопок (как Scroll Lock)?Сделать можно, только индикацию текущего состояния такого режима сделать не на чем. Надо подумать.


Уже когда-то проскакивало в этой теме, но всё же очень хочется включать турбо режим профи кнопкой с клавиатуры с запоминанием состояния в zxmc2. возможно для этого задействовать сигнал PB2, и низким уровнем включать турборежим?Попробую.


И если есть возможность объясните как переделать прошивку zxmc2 для полноценной расширенной клавиатуры профи с использованием 6-го бита порта FE.Я уже об этом думал и в принципе придумал как это сделать, но только модификацией таблицы раскладки клавиатуры тут не обойтись, надо и в кодовой части кое-что переделать.
В течении недели постараюсь покопатся.

caro
30.09.2012, 10:28
Прошивка ATMega8515 версии 2.8 для работы
карты ZXMC2 в составе Profi.

Особенности:
1) В файле раскладки клавиатуры (TABKBD_p.asm)
добавлена таблица tab_b6 для клавиш, у которых
в скан-коде присутствует 0 в бите 5 порта
клавиатуры. Под эту таблицу пока выделено
16 байт, что достаточно для эмуляции клавиш,
которые имеют такой признак в прошивке
исходного контроллера клавиатуры Профи.
Привязку клавиш смотри в исходнике.

2) Клавиша F11 переключает состояние выхода 2 порта B
(вывод 3 ATMega8515 и пин 9(PB2) разьема X3).
Этот вывод можно использовать для переключения
режима TURBO в компьютере Профи.
Состояние вывода сохраняется в EEPROM Меги.
Для индикации состояния этой линии желательно
подключить к ней светодиод через соответствующий
резистор.

Проверьте на реальном Профи и сообщите результаты.

solegstar
30.09.2012, 16:44
Проверьте на реальном Профи и сообщите результаты.

Результаты проверки на Profi 5.02:
1. Включение турборежима на F11 работает.
2. Раскладка клавиатуры чуть не соответствует:
- <TAB> определяется как CS+1, должен быть CS+I;
- <ESC> определяется как CS+SS, должен быть CS+1;
- <Caps Lock> определяется как CS+2, должен быть CS+SS; (вот с этой кнопкой я не знаю, что делать, по назначению вроде отлично подходит, но если делать раскладку под Profi, то в спектрум-режиме всё отлично, а если работать в CP/M, то получается несоответствие.)
- F1-F7 определяются как A-G, F9 как I, Ins как O, Del как P, PageUp как M, PageDn как N, но без 6-го бита.
- F8, F10, Home, End отрабатываются правильно, с 6-м битом.

Спасибо Камиль за прошивку!!!

caro
30.09.2012, 17:10
Спасибо за проверку, сейчас попробую разобраться в чем тут проблемы.

Клавиши TAB и ESC исправляются элементарно, я их просто пока оставил как было в прошлой прошивке ZXMC2.
По поводу клавиши Caps Lock, тоже можно исправить, но мне кажется стоит оставить как есть.

Проверяю работу клавиши F1, ее нажатие должно выдавать код клавиши A и бит 5 порта клавиатуры = 0.
На BASICе для этого надо читать порт 0FDFEh (65022), поскольку клавиша A находится на линии A9.

1 PRINT AT 0,0; IN 65022;" ";: GOTO 1
После запуска програмки получаем на экране число 191 (0BFh), что соответствует одному 0-му биту на линии 6 порта клавиатуры (вход с магнитофона).
Все остальные биты равны 1, как и должно быть.
При нажатии клавиши A видим, что число меняется на 190 (0BEh). Это правильно, поскольку клавиша A подключена к входу 0, порта клавиатуры.
При нажатии клавиши F1 вижу число 158 (09Eh). Это говорит о том, что бит 5 стал равен 0, а младшие 5 бит соответствуют нажатию клавиши A.
Проверь еще раз, а то у меня вроде отрабатывается правильно.
Или может еще кто подключится к тестированию на реальном Профи, а то я вынужден проверять на своем Кворуме.

solegstar
30.09.2012, 18:33
Спасибо за проверку, сейчас попробую разобраться в чем тут проблемы.

Клавиши TAB и ESC исправляются элементарно, я их просто пока оставил как было в прошлой прошивке ZXMC2.
По поводу клавиши Caps Lock, тоже можно исправить, но мне кажется стоит оставить как есть.

Проверяю работу клавиши F1, ее нажатие должно выдавать код клавиши A и бит 5 порта клавиатуры = 0.
На BASICе для этого надо читать порт 0FDFEh (65022), поскольку клавиша A находится на линии A9.

1 PRINT AT 0,0; IN 65022;" ";: GOTO 1
После запуска програмки получаем на экране число 191 (0BFh), что соответствует одному 0-му биту на линии 6 порта клавиатуры (вход с магнитофона).
Все остальные биты равны 1, как и должно быть.
При нажатии клавиши A видим, что число меняется на 190 (0BEh). Это правильно, поскольку клавиша A подключена к входу 0, порта клавиатуры.
При нажатии клавиши F1 вижу число 158 (09Eh). Это говорит о том, что бит 5 стал равен 0, а младшие 5 бит соответствуют нажатию клавиши A.
Проверь еще раз, а то у меня вроде отрабатывается правильно.
Или может еще кто подключится к тестированию на реальном Профи, а то я вынужден проверять на своем Кворуме.

у меня на клавишу F1 реагирует так же, с числом 158, но в тесте XT-клавиатуры Профи на F1 пишет активную кнопку А, и если зажать кнопку клавиатуры и нажать ресет (тест обычной клавиатуры выход из которого только по ресету) надпись 6-й бит появляется только на клавишах F8, F10, Home, End.

caro
30.09.2012, 18:41
у меня на клавишу F1 реагирует так же, с числом 158, но в тесте XT-клавиатуры Профи на F1 пишет активную кнопку А, и если зажать кнопку клавиатуры и нажать ресет (тест обычной клавиатуры выход из которого только по ресету) надпись 6-й бит появляется только на клавишах F8, F10, Home, End.Да, я знаю про этот тест.
Хорошо бы проверить еще какой-либо программой, либо в самой CP/M проверить работу этих клавиш.

solegstar
30.09.2012, 20:46
В CopyK также работают только F8 и F10, на остальные функциональные клавиши реагирует, как на нажатие обычных буквенных кнопок.

caro
30.09.2012, 20:54
В CopyK также работают только F8 и F10, на остальные функциональные клавиши реагирует, как на нажатие обычных буквенных кнопок.Это уже интересно. Надо подумать.
Интересно, что работают только те клавиши, которые сканируются линией A14 - K(HOME), L(END), H(F8), J(F10).

newart
01.10.2012, 10:03
caro, А можешь рассказать как запрограмиирована работа с ps/2 мышкой?

Протокол програмно обрабатывается?

Blade
01.10.2012, 10:15
newart, работу с мышью можно посмотреть в исходниках Пентевы. avr\current\ps2.c

caro
01.10.2012, 10:26
caro, А можешь рассказать как запрограмиирована работа с ps/2 мышкой?При включении питания проверяется тип подключенной мышки:

;************************************************* ***
; проверка подключения мышки
; на выходе:
; mous_ID = 0 - простая, = 3 - 3D-mouse
; = 0ffh - мышка не подключена
tst_mouse:
; 1) передать команду сброса мышке (код = 0xFF)
ldi data,0xff ;Команда сброс
rcall trans_ack_mous ;передать и ждать ACK
brcs no_tst ;истек тайм-аут, мышка не подключена
; или неисправна
; иначе принять код AAh и код идентификатора мышки
; (время внутреннего теста 300 мсек для KeyMouse)
; (время внутреннего теста 350 мсек для Genius)
rcall time_1s ; тайм-аут 1000 мсек
rcall rec_mous ; принять код теста (0AAh)
brcs no_tst ; истек тайм-аут
rcall rec_mous ; принять идентификатор мышки
; 2) переключить мышку если получится в режим Intelimouse
ldi data,0xf3 ;Set Sample Ret
rcall trans_ack_mous
brcs no_tst
ldi data,200 ;200
rcall trans_ack_mous
brcs no_tst
ldi data,0xf3 ;Set Sample Ret
rcall trans_ack_mous
brcs no_tst
ldi data,100 ;100
rcall trans_ack_mous
brcs no_tst
ldi data,0xf3 ;Set Sample Ret
rcall trans_ack_mous
brcs no_tst
ldi data,80 ; 80
rcall trans_ack_mous
brcs no_tst
; 3) прочитать, что получилось
ldi data,0xf2 ;Read Device ID
rcall trans_ack_mous
brcs no_tst
rcall rec_mous_20 ;data=ID
brcs no_tst
sts mous_ID,data
; 4) передать команду активизации мышке (код = 0xF4)
ldi data,0xf4 ;
rjmp trans_ack_mous ;передать
;\----
no_tst: ldi data,0xff ;признак отсутствия мышки
sts mous_ID,data
ret
;================================================= ====


Протокол програмно обрабатывается?В зависимости от типа мышки принимается либо три (mous_ID=0), либо четыре (mous_ID=3) байта,
из которых программно формируются сигналы для передачи в Спектрум.

newart
01.10.2012, 13:22
В зависимости от типа мышки принимается либо три (mous_ID=0), либо четыре (mous_ID=3) байта,
из которых программно формируются сигналы для передачи в Спектрум.
У меня такое ощущение что пентева на ID=3 Не реагирует и желает всегда 4 байта.

Так как все таки програмно реализован интерфейс? Все хардкодингом на асме? Ножки клок-даты подтянуты к прерываниям?

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

У меня почему то не хочет дружить AVR ни с пентевой по ps/2 ни с твоей картой.
Заработала только на Speccy 2010.

caro
01.10.2012, 13:44
У меня такое ощущение что пентева на ID=3 Не реагирует и желает всегда 4 байта.Судя по исходнику от пентевы ps2.c, считается, что подключена может быть только мышка с колесом, поэтому всегда инициируется переключение в режим Intelli Mouse и всегда ожидается 4 байта.


Так как все таки програмно реализован интерфейс? Все хардкодингом на асме? Ножки клок-даты подтянуты к прерываниям?Нет работаем без прерываний, а синхронизацию обеспечиваю опусканием в 0 сигнала CLK, на то время когда контроллер занят.
По прерываниям в ZXMC работает только интерфейс связи с шиной Спектрума, прием/передача по RS232 и часы.


У меня почему то не хочет дружить AVR ни с пентевой по ps/2 ни с твоей картой.
Заработала только на Speccy 2010.Если бы еще мне знать что за устройство на AVR ты пробуешь подключать к ZXMC :)

newart
01.10.2012, 14:00
Судя по исходнику от пентевы ps2.c, считается, что подключена может быть только мышка с колесом, поэтому всегда инициируется переключение в режим Intelli Mouse и всегда ожидается 4 байта.
Lamers Must Die! :(


Если бы еще мне знать что за устройство на AVR ты пробуешь подключать к ZXMC
Комовскую мышку через Ардуину. Я повесил колёсики от шарика на прерывания, всё отлично считается и определяется направление. Но... в пентеве данные почему то не стабильно принимались. А на твоей карте не принимаются вовсе. Точнее софт никак не реагирует на мою полу-мышь.

Blade
01.10.2012, 14:15
Судя по исходнику от пентевы ps2.c, считается, что подключена может быть только мышка с колесом, поэтому всегда инициируется переключение в режим Intelli Mouse и всегда ожидается 4 байта.

Без колеса мышь тоже понимается.

switch( ps2mouse_resp_count )
{
case 1:
//byte 1: Y overflow | X overflow | Y sign bit | X sign bit | 1 | Middle Btn | Right Btn | Left Btn
zx_mouse_button = (zx_mouse_button&0xF0) + ((b^0x07)&0x0F);
break;
case 2:
//byte 2: X movement
zx_mouse_x += b;
break;
case 3:
//byte 3: Y movement
zx_mouse_y += b;
if ( !(flags_register&FLAG_PS2MOUSE_TYPE) )
{
//classical mouse
ps2mouse_resp_count = 0;
flags_register |= FLAG_PS2MOUSE_ZX_READY;
}
break;
case 4:
//byte 4: wheel movement
zx_mouse_button += ((b<<4)&0xF0);
flags_register |= FLAG_PS2MOUSE_ZX_READY;
ps2mouse_resp_count = 0;
}
break;

Если FLAG_PS2MOUSE_TYPE = 0, то от мыши принимается 3 байта.

caro
01.10.2012, 14:15
Комовскую мышку через Ардуину. Я повесил колёсики от шарика на прерывания, всё отлично считается и определяется направление. Но... в пентеве данные почему то не стабильно принимались. А на твоей карте не принимаются вовсе. Точнее софт никак не реагирует на мою полу-мышь.Судя по всему, протокол работы PS/2 мышки реализован тобой не полностью.
У меня, если ты посмотришь на мой исходник начального тестирования мышки, при старте на нее выдается команда СБРОС (код 0FFh), и мышка не позже чем в течении 1 сек. должна выдать код нормального завершения внутреннего теста (0AAh) и свой идентификатор.
Если этого не происходит, то считается что мышка либо не исправна, либо не подключена, что блокирует ее опрос в основном цикле работы прошивки.

newart
01.10.2012, 14:21
Мм.. возможно, вот код:






Старт:

while(mouse.write(0xAA)!=0);
while(mouse.write(0x00)!=0);


Потом в цикле:


if( (digitalRead(7)==LOW) || (digitalRead(8) == LOW)) {
while(mouse.read(&c)) ;
mousecommand(c);
}

if (enabled) {

//
write_packet();

}

......


int mousecommand(int command) {
unsigned char val;

//This implements enough mouse commands to get by, most of them are
//just acked without really doing anything

switch (command) {
case 0xFF: //reset
ack();
//the while loop lets us wait for the host to be ready
while(mouse.write(0xAA)!=0);
while(mouse.write(0x00)!=0);

break;
case 0xFE: //resend
ack();
break;
case 0xF6: //set defaults
//enter stream mode
ack();
break;
case 0xF5: //disable data reporting
//FM
ack();
break;
case 0xF4: //enable data reporting
//FM
enabled = HIGH;
ack();
digitalWrite(13, HIGH);

break;
case 0xF3: //set sample rate
ack();
mouse.read(&val); // for now drop the new rate on the floor
// Serial.print("#");
// Serial.println(val,HEX);
ack();
break;
case 0xF2: //get device id
ack();
mouse.write(0);
break;
case 0xF0: //set remote mode
ack();
break;
case 0xEE: //set wrap mode
ack();
break;
case 0xEC: //reset wrap mode
ack();
break;
case 0xEB: //read data
ack();
write_packet();
break;
case 0xEA: //set stream mode
ack();
break;
case 0xE9: //status request
ack();
// send_status();
break;
case 0xE8: //set resolution
ack();
mouse.read(&val);
// Serial.println(val,HEX);
ack();
break;
case 0xE7: //set scaling 2:1
ack();
break;
case 0xE6: //set scaling 1:1
ack();
break;




---------- Post added at 14:21 ---------- Previous post was at 14:19 ----------

Получается мне просто надо убрать "while(mouse.write(0xAA)!=0);
while(mouse.write(0x00)!=0);" в самом начале.

caro
01.10.2012, 14:21
Без колеса мышь тоже понимается.
Если FLAG_PS2MOUSE_TYPE = 0, то от мыши принимается 3 байта.Виноват, действительно есть такой флаг, не внимательно посмотрел.

newart
01.10.2012, 14:25
а синхронизацию обеспечиваю опусканием в 0 сигнала CLK
Наверное все таки в 1?

http://www.computer-engineering.org/ps2protocol/waveform1.jpg

caro
01.10.2012, 14:31
Получается мне просто надо убрать "while(mouse.write(0xAA)!=0);
while(mouse.write(0x00)!=0);" в самом начале.Нет, это правильно, поскольку мышка при подаче на нее питания всегда выполняет внутренний тест и выдает код 0AAh - как признак прохождения внутреннего теста и код своего идентификатора - 00h (простая мышь).
Судя по твоему исходнику все нужные команды реализованы.
Надо подумать, в чем тут может быть проблема.

---------- Post added at 16:31 ---------- Previous post was at 16:29 ----------


Наверное все таки в 1?
Нет именно в 0, поскольку иначе мышка считает, что шина свободна и можно опустить шину данных в 0 (СТАРТ), и начать передачу.

newart
01.10.2012, 15:06
Судя по твоему исходнику все нужные команды реализованы.
Надо подумать, в чем тут может быть проблема.
Может дело во всяких там открытых коллекторах?

Вот например, я подключил обычную мышку к пентеве, и линии клок и даты подал на вход звуковой карты. Мышка работать перестала (не ползает в программах), однако звуковуха зафиксировала передачу данных пентевой в мышку. То есть видимо дело в сопротивлении входа звуковухи.

Возможно у AVR тоже как то не согласованы входы-выходы? Ведь в случае пентевы получается я стыкую напрямую два AVR.

---------- Post added at 15:01 ---------- Previous post was at 14:59 ----------

В Speccy 2010 есть некие стабилитроны, а в Пентеве нету... может в этом дело?

---------- Post added at 15:06 ---------- Previous post was at 15:01 ----------

Подача 1 реализована так:


pinMode(pin, INPUT);
digitalWrite(pin, HIGH);

То есть используется "There are also convenient 20K pullup resistors built into the Atmega chip that can be accessed from software. These built-in pullup resistors are accessed in the following manner.
pinMode(pin, INPUT); // set pin to input
digitalWrite(pin, HIGH); // turn on pullup resistors"

Однако pull down резисторов у меня на ардуине нет. Или их достаточно на стороне пентевы/zxmc?

Ничего не понимаю. :)

caro
01.10.2012, 15:08
Может дело во всяких там открытых коллекторах?На линиях CLK и DAT должны быть подтягивающие резисторы, как правило от 1 до 4.7 кОм.


Возможно у AVR тоже как то не согласованы входы-выходы? Ведь в случае пентевы получается я стыкую напрямую два AVR.Ничего страшного, если AVR-ки работают синхронно и в режиме с активным нулем.


В Speccy 2010 есть некие стабилитроны, а в Пентеве нету... может в этом дело?Защитные стабилитроны рекомендуемы, но не обязательны.

newart
01.10.2012, 15:31
caro, что же делать? :)

---------- Post added at 15:31 ---------- Previous post was at 15:20 ----------

caro, а что можно подпалить в ходе эксперементов?

Просто Speccy 2010 у меня теперь и нормальной мышкой натужно работает. :)

Как бы объяснить... он как будто не реагирует на скорость ее движения, а всегда сдвигает мышку на 1 пиксель.

caro
02.10.2012, 10:27
caro, что же делать? :)Проверь, соответствует ли твоя реализацию вот этому описанию:
http://www.networktechinc.com/ps2-prots.html
Особенно в части блокировки работы шины низким уровнем на линии CLK.


а что можно подпалить в ходе эксперементов?В принципе можно подпалить выходы AVR-ки, если в процессе работы и приемник и передатчик будут работать на выход и один из них выдаст 1, а другой 0.


Просто Speccy 2010 у меня теперь и нормальной мышкой натужно работает. :)
Как бы объяснить... он как будто не реагирует на скорость ее движения, а всегда сдвигает мышку на 1 пиксель.Это скорее драйвер виноват. Если бы что-то сгорело на аппаратном уровне, наверное совсем бы не работало.

newart
02.10.2012, 11:29
В принципе можно подпалить выходы AVR-ки, если в процессе работы и приемник и передатчик будут работать на выход и один из них выдаст 1, а другой 0.
В Speccy 2010 мышка и клава идут сразу на альтеру.


Это скорее драйвер виноват. Если бы что-то сгорело на аппаратном уровне, наверное совсем бы не работало.
Драйвер чего?

Вот есть вполне конкретный зеленый boot от RealSoft. Есть вполне конкретная Antique Toy 2007 - там обычная ps/2 мышка работала нормально - шустро бегала.
Теперь эта же мышка в тех же программах ползает как черепаха и с дискретностью 1 пиксель.

solegstar
02.10.2012, 12:52
Это уже интересно. Надо подумать.
Интересно, что работают только те клавиши, которые сканируются линией A14 - K(HOME), L(END), H(F8), J(F10).

Попробую сегодня "поднять" контроллер XT-клавиатуры, и на нем посмотреть программу в бейсике... странно, но в последний раз почему-то не заработал. буду выяснять, то ли контроллер, то ли сама клавиатура.

Evgeny Muchkin
25.12.2012, 20:33
Caro, спасибо за v25 для ZXMC1. Работает как надо!

SoftFelix
04.05.2013, 20:26
ZXMC2: самовольное отрабатывание press any key только в TURBO-режиме.
caro, мысли есть? (у меня ZXMC2 v2.7).

http://zx-pk.ru/showpost.php?p=558376&postcount=1249
http://zx-pk.ru/showpost.php?p=598027&postcount=1260
http://zx-pk.ru/showpost.php?p=598199&postcount=1261
http://zx-pk.ru/showpost.php?p=598225&postcount=1262
http://zx-pk.ru/showpost.php?p=598251&postcount=1263

caro
04.05.2013, 20:47
ZXMC2: самовольное отрабатывание press any key только в TURBO-режиме.
caro, мысли есть? (у меня ZXMC2 v2.7).Почитал сообщения по ссылкам.
Я так понял, что проблема возникает при совместной работе двух контроллеров клавиатуры, встроенного на Mega48, и внешнего на ZXMC2.
А к какому из них подключена клавиатура?

SoftFelix
04.05.2013, 20:58
Я так понял, что проблема возникает при совместной работе двух контроллеров клавиатуры, встроенного на Mega48, и внешнего на ZXMC2.
Не совсем так. Проблема возникает только от одной ZXMC2, т.к. встроенный я отключал полным выниманием атмеги48 из панельки, а у John North в Профи интегрированного вообще нет.

А к какому из них подключена клавиатура?
У меня клава подключена к встроенному (там отрабатывается MAGIC для теневика), а к ZXMC2 подключена только мышь. У меня глюк возникает ещё и на не прогретом компе, а у John North он постоянный, как я понял.

caro
04.05.2013, 21:58
У меня клава подключена к встроенному (там отрабатывается MAGIC для теневика), а к ZXMC2 подключена только мышь. У меня глюк возникает ещё и на не прогретом компе, а у John North он постоянный, как я понял.Надо подумать.

SoftFelix
05.05.2013, 13:52
Надо подумать.
Вот тут (http://youtu.be/E-0Mshtn0cI) видео добавил.

solegstar
07.05.2013, 15:47
caro, может поможет вот это решение по удлинению iorq из Вашего сообщения? - http://www.zx-pk.ru/showpost.php?p=359486&postcount=61

caro
07.05.2013, 15:58
caro, может поможет вот это решение по удлинению iorq из Вашего сообщения? - http://www.zx-pk.ru/showpost.php?p=359486&postcount=61Эта схема нужна для корректной работы без-WAITового контроллера в турбированном компе,
поскольку иначе МК не успевает выставить данные на шину процессора.
Но поскольку ZXMC WAITит компьютер, эта схема как "мертвому припарки", но попробовать можно.

John North
07.05.2013, 16:46
caro, у СофтФеликс Кай и схема торможения ИОРК там уже есть..
так что, вряд ли поможет и мне (на Профи).
кстати, подключил щас первую версию карты.
с ней всё работает идеально!

John North
07.05.2013, 19:20
Вобщем так..
по совету SoftFelix-a попробовал посадить на линию WAIT кондер.
сначала посадил емкость 270 пФ - комп не включился..
потом посадил 20 пФ - глюки почти пропали, но не до конца.
методом подбора емкости до 30 пФ вроде удалось от глюков избавиться)
больше нет ложных нажатий эникея)
и еще, тест UMC сбрасывался при загрузке в турбо режиме. теперь норм.
единственное, что осталось - глючная работа клавы в Quick Commander-e.
но он глючит даже БЕЗ турбо режима.
хотя на zxmc-1 работал норм. тока мышь иногда выдавала ложное срабатывание средней кнопки.
глюк в QC проявляется в следующем: кнопки как будто "залипают". например нажил курсор вниз раз или два (когда как) и кнопка сама ведет себя как будто нажата.
пс: SoftFelix-у огромное спасибо за наводку))

SoftFelix
07.05.2013, 19:39
SoftFelix-у огромное спасибо за наводку))
Да мне-то не за что, это мне caro как-то советовал, но тогда, в моём случае, это не помогло. :) Попробую тоже ёмкость кинуть, но отчитаюсь только завтра - коробка с кондёрами на работе.

SoftFelix
26.05.2013, 15:28
Попробую тоже ёмкость кинуть, но отчитаюсь только завтра - коробка с кондёрами на работе.
Вчера цеплял кондёры от 33 пФ до 220 пФ с обоих сторон диода VD6 в сабже - не помогает. Хотя в один момент было ощущение, что помогло с 33 пФ, но это была случайность или комп уже успел чуть прогреться и глюк ушел сам. На холодном компе в ТУРБО срабатывание эни кей и сброс.

Gutten
05.06.2013, 15:55
Хотел бы уточнить такой момент. При совместной работе SMUC (распаяна микросхема часов) и ZXMC2 имеет смысл распаивать кусок схемы с часами на ZXMC2? Как они будут себя вести при совместной работе двух часов? Да и как я понял, от глюк-часов больше проблем можно поймать, чем пользы.

caro
05.06.2013, 16:09
При совместной работе SMUC (распаяна микросхема часов) и ZXMC2 имеет смысл распаивать кусок схемы с часами на ZXMC2?Даже если не распаивать, часы в ZXMC будут работать (программные), но только естественно начальную установку придется каждый раз после выключения питания делать заново.

Как они будут себя вести при совместной работе двух часов?Проблем не замечено, поскольку адресация не пересекается.

Да и как я понял, от глюк-часов больше проблем можно поймать, чем пользы.Всё зависит от того, какое ПО будет использоватся.

Gutten
19.06.2013, 09:38
Хотел бы уточнить для ZX-MC2, каков номинал С5,С6? 22мкФ или 22пФ? Для первой версии платы в схеме указано "22", а в списке "22 пФ", для второй в схеме указано "22", но у нас в продаже таких нигде нет. И второй вопрос: можно ли R8 поставить 240 Ом?

SoftFelix
19.06.2013, 09:42
каков номинал С5,С6

22пФ?
Именно. 22 пФ. Они же на кварц идут. Там больших емкостей не надо.

можно ли R8 поставить 240 Ом?
Имхо - да.

caro
19.06.2013, 09:49
Хотел бы уточнить для ZXMC2, каков номинал С5,С6? 22мкФ или 22пФ? Для первой версии платы в схеме указано "22", а в списке "22 пФ", для второй в схеме указано "22", но у нас в продаже таких нигде нет.От 18 до 27 пикофарад.

И второй вопрос: можно ли R8 поставить 240 Ом?От 180 до 270 Ом.

John North
19.06.2013, 11:17
можно ли в прошивке поменять значения кнопок "таб" и "эскейп" при помощи хекс-редактора какого нибудь?
напишите плиз адреса и новые значения.
интересует и для первой версии карты и для второй.
заранее спасибо.

caro
19.06.2013, 11:55
можно ли в прошивке поменять значения кнопок "таб" и "эскейп" при помощи хекс-редактора какого нибудь?
напишите плиз адреса и новые значения.
интересует и для первой версии карты и для второй.
Поскольку коды для обеих клавиш находятся в одной строке HEX-файла, поменять их местами можно в любом текстовом редакторе (только не в WORDE :) )
Поменять нужно в строке:
:10170000FF51BA747171B199C052FF013AFFD01103

Код BA - соответствует клавише ESC и означает нажатие CapSh+Kl_SS;
Код 99 - соответствует клавише TAB и означает нажатие CapSh+Kl_1.

Поменяйте их местами, ничего больше не трогая, вот так:
:10170000FF5199747171B1BAC052FF013AFFD01103

И всё :)

PS. Это справедливо для обеих версий ZXMC.

John North
19.06.2013, 13:08
caro, спасибо!
всё получилось)

Gutten
26.06.2013, 12:48
Снова вопрос по замене. Нет в продаже конденсаторов 0,1 (1206). Есть либо 0,1 (0805), либо 0,22 (1206). Подойдёт ли больший номинал, ведь блокировочных конденсаторов советуют ставить больше?

caro
26.06.2013, 14:28
Снова вопрос по замене. Нет в продаже конденсаторов 0,1 (1206). Есть либо 0,1 (0805), либо 0,22 (1206). Подойдёт ли больший номинал, ведь блокировочных конденсаторов советуют ставить больше?Да, конечно. Ставьте любые от 0.047 uF и выше.

pavel_1977
03.07.2013, 17:00
caro, Здравствуйте.

А можно увеличить длительность NMI, а то у меня на Скорпионе не всегда с первого нажатия F12 входит в теневик?

Спасибо.

caro
03.07.2013, 22:34
А можно увеличить длительность NMI, а то у меня на Скорпионе не всегда с первого нажатия F12 входит в теневик?Я сейчас в отпуске в деревне, напомните мне, лучше по e-mail, через месяц.

John North
03.07.2013, 23:28
caro, если возможно увеличить длительность НМИ, то значит возможно увеличить и длительность WAIT ?
может быть это поможет с проблемой ложного нажатия "эни кея" ?

caro
04.07.2013, 07:03
caro, если возможно увеличить длительность НМИ, то значит возможно увеличить и длительность WAIT ?
может быть это поможет с проблемой ложного нажатия "эни кея" ?Длительность WAIT конечно можно увеличить, но подозреваю, что это не поможет.

Gutten
19.08.2013, 20:28
А как фузы выставлять для атмега8515? Хлопотно всю тему лопатить, не мешало бы в шапку закрепить эти сведения.
Нашёл:

Для UNIPROF FUSES надо установить так:

[v] CKSEL0 ;\
[v] CKSEL1 ; \
[v] CKSEL2 ; / - внешний кварц на 11.0592 Мгц
[v] CKSEL3 ;/
[v] SUT0
[ ] SUT1
[v] BODEN
[v] BODLEVEL
[ ] BOOTRST ;Запуск с адреса 1E00h
[ ] BOOTSZ0 ;\
[v] BOOTSZ1 ;/ Boot Size = 512 байт
[v] EESAVE
[ ] CKOPT
[ ] SPIEN
[v] WDTON
[v] S8515C

SoftFelix
19.08.2013, 20:37
Gutten, из шапки скачать архив zxmc_all.zip, в нем архив boot_ld.zip, в нём файл fuses.txt. "...Игла в яйце, яйцо в утке, утка в зайце, а заяц..." (с) Ну как-то так. :)

Gutten
01.10.2013, 13:55
Вставил zx-mc2 в скорпион. получил на экране матрас и зависание. Перед этим прошил обе м/с. с чего можно начать в поисках причины?

caro
01.10.2013, 14:07
Вставил zx-mc2 в скорпион. получил на экране матрас и зависание. Перед этим прошил обе м/с. с чего можно начать в поисках причины?Проверь правильность включения диодов, идущих на шину ZXBUS.
Их очень часто включают наоборот, из-за того, что у нашего диода КД522 черточка на корпусе означает не КАТОД, как у импортного, а АНОД.

Gutten
01.10.2013, 21:34
Да, диоды были перепутаны. Всё работает. Спасибо за разработку.

Gutten
02.10.2013, 09:27
Напомню про запрос от pavel_1977 про увеличение NMI. Тоже в скорпионе не всегда заходит в теневик.

Gutten
04.10.2013, 15:03
А есть где-нибудь информация по созданию прошивки с кастомными раскладками клавиатуры? К примеру, я б хотел себе прошить Ctrl=SShift, Shift=CShift, Tab=EMode, Esc=Edit, Alt ещё бы задействовал... Один вариант я уже понял - ковырять hex-файл в поисках скан-кодов, но это не самый удобный способ.

caro
04.10.2013, 15:18
А есть где-нибудь информация по созданию прошивки с кастомными раскладками клавиатуры? К примеру, я б хотел себе прошить Ctrl=SShift, Shift=CShift, Tab=EMode, Esc=Edit, Alt ещё бы задействовал... Один вариант я уже понял - ковырять hex-файл в поисках скан-кодов, но это не самый удобный способ.
Раскладка клавиатуры выполнена в виде отдельного Ассемблерного файла, компилируемого с помощью ASM51-Компилятора (оказался наиболее удобным для использования).
Исходник вместе с самим компилятором, если я не запамятовал, есть в первом посте этой темы.
Сейчас гляну, если не найду, залью заново.

PS. Только надо иметь ввиду, что привязка клавиш Ctrl и Shift не модифицируется.

caro
04.10.2013, 15:49
Сейчас гляну, если не найду, залью заново.Когда-то заливал файл ZXMC_KBD.zip, сейчас не вижу и в первый пост он не грузится.
Выложу здесь:

caro
04.10.2013, 16:07
Напомню про запрос от pavel_1977 про увеличение NMI. Тоже в скорпионе не всегда заходит в теневик.Мне честно говоря не совсем понятно почему длительность NMI так влияет на процедуру входа в Монитор.
Сейчас длительность NMI формируется программно и равна 10 мс.
А сколько должно быть?

Gutten
04.10.2013, 16:18
Не знаю. Но нажатие срабатывает не всегда. Иногда надо кнопку подержать, иногда нажать несколько раз. А иногда всё сразу работает. Правда у меня на Magic сигнал подаётся прямо с ножки Атмеги, без диода. Может в этом причина?

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


Только надо иметь ввиду, что привязка клавиш Ctrl и Shift не модифицируется.

Это что значит?

John North
04.10.2013, 22:11
caro, сделай плиз тестовую прошивку для первой и второй версий плат с увеличенным сигналом вайт все-таки..
давай попробуем. ни чего же не теряем от этого)

Ewgeny7
05.10.2013, 11:31
Мне честно говоря не совсем понятно почему длительность NMI так влияет на процедуру входа в Монитор.
Сейчас длительность NMI формируется программно и равна 10 мс.
А сколько должно быть?
У меня нормально входит в теневик, скорпы классический 256-ой и новодел 1024.

caro
06.10.2013, 14:18
Это что значит?Клавиши Ctrl и Shift хотя и входят в таблицу раскладки клавиатуры, но в прошивке контроллеров их скан-коды жестко привязаны к кодам клавиш Spectrum Caps Shift и Symb Shift соответственно.

alvis
19.10.2013, 07:27
Проверяю работу клавиши F1, ее нажатие должно выдавать код клавиши A и бит 5 порта клавиатуры = 0.
На BASICе для этого надо читать порт 0FDFEh (65022), поскольку клавиша A находится на линии A9.

Код:
1 PRINT AT 0,0; IN 65022;" ";: GOTO 1После запуска програмки получаем на экране число 191 (0BFh), что соответствует одному 0-му биту на линии 6 порта клавиатуры (вход с магнитофона).
Все остальные биты равны 1, как и должно быть.
При нажатии клавиши A видим, что число меняется на 190 (0BEh). Это правильно, поскольку клавиша A подключена к входу 0, порта клавиатуры.
При нажатии клавиши F1 вижу число 158 (09Eh). Это говорит о том, что бит 5 стал равен 0, а младшие 5 бит соответствуют нажатию клавиши A.
Проверь еще раз, а то у меня вроде отрабатывается правильно.
Или может еще кто подключится к тестированию на реальном Профи, а то я вынужден проверять на своем Кворуме.

У кого Профи с обычной (механической) клавиатурой, проверьте какое значение данная програмка выдает у вас при ненажатых клавишах???

сегодня завел свой Профи с родным контроллером ХТ-клавиатуры. При ненажатых клавишах из этого порта читается значение 255 а не 191. Дальше приведу значения для кнопок на нажатие каких эта програмка реагировала:
ничего не нажато - 255
F1 254
F4 251
F6 247
F7 239
\ 251
A 254
S 253
D 251
F 247
G 239

P.S. В тестировании участвовала оригинальная нижняя плата версии 5.02 и оргинальный контроллер ХТ-клавиатуры. При отключении контроллера клавиатуры читаемое значение 255 не меняется. Верхняя плата при тестировании не устанавливалась.

P.P.S. Только что проверил с контроолером АТ-клавиатуры от Caro на Attiny2313 - результаты теста идентичны. С ZXMC2 на шине PROFI_ZX-BUS и встроенным в новую верхнюю плату проверю немного позже.

doc_fbi
01.11.2013, 20:52
Плюс прошивка и схема подключения к Пентагону:
Подскажите , сигнал magic для пентагона обязательно заводить вместо кнопки?

doc_fbi
02.11.2013, 11:27
Набросал тут платку контроллера в yaout под планар
рассчитана под pentagon, все остальное ненужное изъял

может кому пригодиться

Ewgeny7
02.11.2013, 12:18
Малое занание опастно, впрочем, как и большое....
В общем верно, но грамотность - не опасна.

caro
02.11.2013, 13:21
Подскажите , сигнал magic для пентагона обязательно заводить вместо кнопки?Не обязательно.

doc_fbi
03.11.2013, 09:43
а что это вообще за кнопка такая что она делает?

solegstar
15.01.2014, 15:54
Камиль, ответьте пожалуйста на мои письма. я посылал их в ЛС и на Вашу электронную почту. Интеграция zxmc2 в новую верхушку Профи 5.06 прошла успешно, осталось только сделать доступ к микросхеме часов по портам Профи. На данный момент пауза в написании прошивки только в этом - т.е. или возвращать обратно 512ВИ1 на верхнюю плату, как в оригинальном контроллере, или всё таки попробовать организовать доступ на ZXMC2. Если на данный момент это сделать не получится, прошу всё равно дать ответ, будем думать тогда дальше и возвращать 512ВИ1 на плату. Спасибо за помощь.

caro
15.01.2014, 17:05
Камиль, ответьте пожалуйста на мои письма. я посылал их в ЛС и на Вашу электронную почту.Ответил на e-mail.

Lion17
23.02.2014, 15:30
В процессе сборки ZXM-Phoenix 5.0 возникла проблема с портом Kempston-джойстика. Прошивку для АтМеги брал версии 2.8 (http://micklab.narod.ru/file/zxm_zxmc2v28.rar) с сайта http://micklab.narod.ru/ZXMPhoenix.htm.

Данные с порта 1F поступали, но не стабильно. Периодически сыпался мусор. Сначала я грешил на дешифратор портов, но проверка показала, что все в порядке. Пришлось изучать код АтМеги. В обработчике прерывания джойстика была обнаружена ошибка.


ROM:02CD wait: ; CODE XREF: Read1FINT2_+Ej
ROM:02CD 9B83 sbis PIND, PIND3
ROM:02CE CFFE rjmp wait ; while(INT1==0) {}


Код который должен был ожидать конца импульса INT2, ожидает конца импульса INT1. Так как сигнал INT1 в этот момент вообще не активен, то данные джойстика убираются с шины до момента окончания инструкции чтения. Поэтому Z80 не всегда успевает считать правильные значения.

После изменения прошивки ROM:02CD 9B83 на 9B28 джойстик стал работать стабильно.
Патч для бинарного файла 0x059A 83 => 28


---------- Post added at 15:30 ---------- Previous post was at 15:25 ----------

Также на этой (2.8ph) прошивке возникла проблема с работой мыши. При включении теста мыши курсор двигался только по диагонали от нижнего левого угла к верхнему правому.

При изучении кода также была выявлена ошибка.


ROM:037B 9110 0077 lds r17, MouseXPosition ; Ошибка!!! Должно быть MouseYPosition
ROM:037D 0F19 add r17, r25
ROM:037E 9310 0078 sts MouseYPosition, r17 ; MouseYPosition=MouseXPosition+r25

Обработчик в качестве предыдущего положения по оси Y брал положение по оси X. Был произведен патч ROM:037B 9110 0077 => 9110 0078.
Патч для бинарного файла 0x06F8 77 => 78
После этого мышка заработала как надо.

dosikus
23.02.2014, 16:15
Lion17, Адреса даны для ковыряния в IDA , реальные другие . Надо поправить .
А так же для 8515 ?

Lion17
23.02.2014, 16:22
Lion17, Адреса даны для ковыряния в IDA , реальные другие . Надо поправить .
А так же для 8515 ?

Ида считает словами. Для бинарного файла умножать на два. В исходный пост добавил адреса для бинарного файла.

Да, это для прошивки ATMEGA8515.

Если надо могу кинуть hex файл с исправлениями.

dosikus
23.02.2014, 16:27
Ида считает словами. Для бинарного файла умножать
В курсе
Дело в том что многие будут патчить в окнах дампа прогеров . А там не во всех словами . Файлики пригодились бы и не только мне.

А за патч огромное мерси !!!

Lion17
23.02.2014, 16:38
Выкладываю HEX файл.
Для отличия от оригинального файла по Menu+V выдает "zxmc2 v.2.8.1ph".

Gutten
23.02.2014, 16:41
я так понимаю, что это актуально только для феникса? для дискретной мультикарты патчить не надо?

dosikus
23.02.2014, 16:41
Также на этой (2.8ph) прошивке возникла проблема с работой мыши. При включении теста мыши курсор двигался только по диагонали от нижнего левого угла к верхнему правому.


Вот блин , а у меня мыша и на 2.7 не работала - скакала как сумасшедшая .
Пока не воткнул Z84C020 . Может те же грабли ?

Lion17
23.02.2014, 16:48
я так понимаю, что это актуально только для феникса? для дискретной мультикарты патчить не надо?

Другие прошивки не изучал. Так что сказать не могу.

---------- Post added at 16:48 ---------- Previous post was at 16:47 ----------


Вот блин , а у меня мыша и на 2.7 не работала - скакала как сумасшедшая .
Пока не воткнул Z84C020 . Может те же грабли ?

Нет, тут четко по диагонали работает - Y всегда отличается от X на величину последнего смещения по Y. А если скачет, то тут что-то другое.

Mick
25.02.2014, 09:21
Выкладываю HEX файл.
Для отличия от оригинального файла по Menu+V выдает "zxmc2 v.2.8.1ph".

Надеюсь не будешь против, если я выложу ее на свой сайт.
Кстати, мог бы и обозвать версию как 2.9 - было бы наверное проще. Но и так спасибо, что разобрался.


И еще не скромный вопрос, а где такие IDA обитают с поддержкой AVRки. Торренты не предлогать :)

caro
25.02.2014, 16:32
Вот блин , а у меня мыша и на 2.7 не работала - скакала как сумасшедшая .Так бывает когда шумит линия WAIT на входе процессора. Помогает небольшой конденсатор порядка 47-100 пф на входе /WAIT Z80.
Или:

Пока не воткнул Z84C020.

---------- Post added at 18:32 ---------- Previous post was at 18:29 ----------


Нет, тут четко по диагонали работает - Y всегда отличается от X на величину последнего смещения по Y.Я эту ошибку исправлял и отсылал исправленную прошивку Mick, но ответа не дождался.

Mick
25.02.2014, 16:36
Я эту ошибку исправлял и отсылал исправленную прошивку Mick, но ответа не дождался.

Прошу прощения если так. Видимо где то я ее потерял и забыл. :v2_dizzy_facepalm:

caro
25.02.2014, 16:40
Прошу прощения если так. Видимо где то я ее потерял и забыл. :v2_dizzy_facepalm:Ничего удивительного, я уже сам теряюсь в текущих прошивках, учитывая их количество.

Lion17
25.02.2014, 23:39
Надеюсь не будешь против, если я выложу ее на свой сайт.
Кстати, мог бы и обозвать версию как 2.9 - было бы наверное проще. Но и так спасибо, что разобрался.


И еще не скромный вопрос, а где такие IDA обитают с поддержкой AVRки. Торренты не предлогать :)

Если автор прошивки не против, то я тоже.

Насчет версии, привык. Первое число - глобальные изменения, второе - новые возможности, третья - исправления ошибок.

IDA обычная, 5.2.0.908.
New -> Various files -> Binary/Raw file
Потом выбираешь процессор AVR

Quest
27.02.2014, 03:43
Подскажите пожалуйста, где приобрести ZX_Multi_Card ?

Gutten
25.03.2014, 20:03
Является ли данная карта "безвайтовой"? Тормозит ли она процессор во время работы? Если да, то можно ли сдалеть на пробу прошивку без торможения?

---------- Post added at 20:03 ---------- Previous post was at 19:54 ----------

Встречал сведения, что исходники прошивки Атмеги в свободном доступе, но не смог найти. Это точные сведения?

caro
25.03.2014, 20:19
Является ли данная карта "безвайтовой"? Тормозит ли она процессор во время работы?Она не безWAITовая, поэтому всегда тормозит процессор.


Если да, то можно ли сделать на пробу прошивку без торможения?Это затруднительно.


Встречал сведения, что исходники прошивки Атмеги в свободном доступе, но не смог найти. Это точные сведения?Нет в свободный доступ я прошивку не выкладывал, но паре форумчан я ее давал, да и как я понял, некоторые просто дизассемблировали прошивку.

Gutten
22.06.2014, 03:15
В файлике boot_ld.zip указаны такие фюзы:
[ ] CKSEL0 ;\
[ ] CKSEL1 ; \
[ ] CKSEL2 ; / - внешний кварц на 11.0592 Мгц
[ ] CKSEL3 ;/
[ ] SUT0
[x] SUT1
[ ] BODEN
[ ] BODLEVEL
[x] BOOTRST ;Запуск с адреса 1E00h
[x] BOOTSZ0 ;\
[ ] BOOTSZ1 ;/ Boot Size = 512 байт
[ ] EESAVE
[x] CKOPT
[x] SPIEN
[ ] WDTON
[ ] S8515C


На странице ZX-Phoenix'a указаны такие:
[x] CKSEL0 ;\
[x] CKSEL1 ; \
[x] CKSEL2 ; / - внешний генератор 14.0 Мгц
[x] CKSEL3 ;/
[ ] SUT0
[x] SUT1
[ ] BODEN
[ ] BODLEVEL
[x] BOOTRST ;Запуск с адреса 1E00h
[x] BOOTSZ0 ;\
[ ] BOOTSZ1 ;/ Boot Size = 512 байт
[ ] EESAVE
[x] CKOPT
[x] SPIEN
[ ] WDTON
[ ] S8515C ;совместимость с AT90S8515 отключена


Так чему верить? Как выставлять CKSEL0...CSEL3?

---------- Post added at 02:59 ---------- Previous post was at 02:50 ----------

И ещё - у меня на клавиатуре вместо [,{,],},\,| печатаются токены AND, TO, OR, THEN, STEP, NOT. Проблема в клавиатуре?

---------- Post added at 03:15 ---------- Previous post was at 02:59 ----------

И в догонку - состав файлика "ZXMC_KBD.zip" - какая из раскладок соответсвует прошивке 2.27?А то там куча файлов и не совсем понятно какой из них актуален.

HardWareMan
22.06.2014, 10:13
Верить следует официальному датащиту.

SoftFelix
22.06.2014, 11:57
Gutten, а ты собираешь именно сабж или в составе Феникса? Если дискретную, то какую версию? ZXMC или ZXMC2? Если дискретную ZXMC2, то таблица:


[x] CKSEL0 ;\
[x] CKSEL1 ; \
[x] CKSEL2 ; / - внешний генератор 14.0 Мгц
[x] CKSEL3 ;/

И ещё - у меня на клавиатуре вместо [,{,],},\,| печатаются токены AND, TO, OR, THEN, STEP, NOT. Проблема в клавиатуре?
Вот это непонятно, не подскажу.


И в догонку - состав файлика "ZXMC_KBD.zip" - какая из раскладок соответсвует прошивке 2.27?А то там куча файлов и не совсем понятно какой из них актуален.
Так это... Просто шьешь zxmc2v27.hex, в нём уже встроена раскладка.

Gutten
22.06.2014, 12:11
Не, ещё в прошлом году собрал ZXMC2, но прочитал про доработку прошивки для феникса, решил посмотреть по нему подробности, и нашёл такие разночтения.
Т.е. получается, что для отдельной ZXMC2 надо тоже отметить все CSEL и табличка в boot_ld.zip неверная?

Как раз разбирался почему у меня скобки не печатаюся, хотел посмотреть исходник раскладки для прошивки 2.27, а там куча файликов и ни один не совпадает с тем, что я вижу фактически.

SoftFelix
22.06.2014, 12:16
Не, ещё в прошлом году собрал ZXMC2, но прочитал про доработку прошивки для феникса, решил посмотреть по нему подробности, и нашёл такие разночтения.
Т.е. получается, что для отдельной ZXMC2 надо тоже отметить все CSEL и табличка в boot_ld.zip неверная?
Если честно, я сам уже мало чего помню. Два года назад собирал. Но по фъюзам тут (http://zx-pk.ru/showpost.php?p=477112&postcount=962) спрашивал и далее по топику.

Gutten
22.06.2014, 12:28
Ну вот по тому обсуждению и получается, что CSEL все должны быть не такие как в фениксе.

solegstar
22.06.2014, 14:25
Gutten, потому-что в фениксе мега тактируется от 14мгц генератора компа, а в zxmc2 - от кварца!

---------- Post added at 13:25 ---------- Previous post was at 13:19 ----------

я так понимаю не обязательно 11 мегагерц кварц, главное что от кварца, а не от генератора. видимо раньше карты caro делал на 11мгц кварце(ну или пробовал), вот и в доке осталось 11мгц, надо ставить номинал по схеме, а фьюзы по файлу fuses.txt в прошивке лоадера.

gdv2002
22.07.2014, 06:15
Собираю Феникса.
Подскажите разброс номинала конденсатора С13 (6,8пФ) в схеме ZXM (или С11 в схеме Феникса).
Не поверите, но в закромах такого не нашлось, а в местных радиолавках пикушные емкости вообще не продают!

С учетом допустимых разбросов параметров, думаю поставить 2+5 пФ.

John North
22.07.2014, 18:20
gdv2002, это на часы который?
ставь приблизительно.
я вот подбирал долго потом еще, ибо часики то вперед бежали, то назад..
где то в этой теме есть обсуждение этого момента.

gdv2002
23.07.2014, 06:31
gdv2002, это на часы который?
ставь приблизительно.
я вот подбирал долго потом еще, ибо часики то вперед бежали, то назад..
где то в этой теме есть обсуждение этого момента.

Спасибо!
Чет поиском у меня ничего путнего не находит, буду искать.
Посмотрю в загашниках exUSSR, помню подстроечных кондеров было у меня, такие керамические еще.

Gutten
14.08.2014, 01:40
Можно ли выложить исходник (.asm) раскладки клавиатуры из прошивки ZXMC2V27?
Хотел бы понять каким клавишам что назначено.

caro
14.08.2014, 08:37
Можно ли выложить исходник (.asm) раскладки клавиатуры из прошивки ZXMC2V27?
Хотел бы понять каким клавишам что назначено.Можно:

Gutten
14.08.2014, 14:03
Возвращаясь к вопросу о фигурных скобках (сообщение №191): Скобочки должны выводится при режиме ExtMode и нажатом SShift+кнопка. НО происходит только нажатие SShift+кнопка, т.е. переход в режим ExtMode не эмулируется. Можно ли в прошивке (раскладке) добавить этот переход перед вводом символа?
Нужна ли пауза после него или сработает и "CapSh+SymSh+SymSh+Kl_Y,CapSh+SymSh+SymSh+Kl_F" для "[/{"?

И вообще, может это просто у меня с клавиатурой такая проблема и надо поискать другую?

Gutten
14.08.2014, 22:38
Попробовал скомпилировать файл TABKBD10.ASM в AVR Studio 5.0, получил 2 ошибки:
1 ORG: Unknown instruction or macro
2 syntax error, unexpected INTEGER

Чем правильно компилировать под Windows 7 x64?

caro
15.08.2014, 14:58
Попробовал скомпилировать файл TABKBD10.ASM в AVR Studio 5.0, получил 2 ошибки:
1 ORG: Unknown instruction or macro
2 syntax error, unexpected INTEGER
Скачай вот это:
http://zx-pk.ru/attachment.php?attachmentid=43450&d=1380887228


Чем правильно компилировать под Windows 7 x64?
Для компиляции в AVR Studio надо немного подправить исходник.

Gutten
15.08.2014, 17:36
через asm51 компилирую только под виртуалку и WinXP. На Win7x64 оно не работает. Не удобно, но терпимо.
А все же что можно сделать с сообщением #1203 про ExtMode и скобочки?

Вбивание "CapSh+SymSh+SymSh+Kl_Y,CapSh+SymSh+SymSh+Kl_F " для "[/{" не сработало, т.к. получается переполнение байта. "Kl_CS+Kl_SS+SymSh+Kl_Y" хоть и не переполнил байт, но и не сработал.

John North
17.08.2014, 22:12
УРРААААААА!!!!!!!
благодаря solegstar-у (за что ему огромнейшее спасибо!!) удалось победить глюк эни-кея в турбо режиме!!!!
попутно устранились ВСЕ глюки в турбе!!!
вот схема http://sderni.ru/239509
вместо сигнала CSAP6 у меня подается сигнал с 6-го вывода D3 (тм2). это для профи 4-ой версии.
сигнал READY - это сигнал WAIT процессора (24-я нога).

John North
17.08.2014, 22:14
пс: to SoftFelix: пробуй давай тоже! должно всё получится!

SoftFelix
17.08.2014, 23:09
SoftFelix: пробуй давай тоже!
Как я понял из схемы, при возникновении /IORQ увеличивается длительность /WAIT для Z80. А зачем сигнал CSAP6 и как он формируется? Это схема именно для PROFI?

Просто в КАЕ при возникновении /IORQ (или /DOS) аппаратно ВЫКЛЮЧАЕТСЯ ТУРБО-режим, если он включен. А у меня проблемы с any key именно в ТУРБО, если помнишь, и только на холодном (включен 0...15 минут) компе.

И вот ещё что. Я тут недавно собрал ZXM-Soundcard Extreme и засунул её в последний свободный слот ёлки ZX BUS TEE. В неё же воткнул доп.питание с БП через имеющийся на плате Extreme молекс...

И не глючит оно теперь в ТУРБО! Даже на "холодном" компе. Правда в комнате около +30С, а последний раз я боролся с этим глюком в конце декабря прошлого года...

В общем, смысл схемы понятен, вот только где брать в КАЕ сигнал CSAP6?

Gutten
17.08.2014, 23:37
Коллеги, а как у вас вводятся с клавиатуры [,{,},] ? Достаточно ли нажатия клавиши или требуется перейти в режим ExtMode? Может зря волнуюсь?

SoftFelix
17.08.2014, 23:49
а как у вас вводятся с клавиатуры [,{,},] ? Достаточно ли нажатия клавиши или требуется перейти в режим ExtMode?
Только через Ext. Попробовал на обоих контроллерах: встроенном в КАЕ на Атмега48 и на сабжевой карте.

John North
17.08.2014, 23:49
SoftFelix, сигнал можно попробовать по аналогии найти.
смысл схемы, как пояснил solegstar, в том, что при определенных условиях генерится сигнал WAIT, тем самым удлиняя сигнал IORQ.
помнишь, наверно, как я боролся с глюками в турбе? в том числе с глюком эни-кея. кондер ставил на WAIT и еще один на IORQ.
и кстати щас тоже имею карту ZXM-Extreme.
когда её воткнул , снова начались глюки в турбе. эни-кеевский тоже.
поэтому убрал все свои "доработки" и сделал эту на АГ3.
щас всё идеально стало!

Gutten
18.08.2014, 00:12
Ну тогда дело не в моей клавиатуре или раскладке. Тут только прошивку атмеги менять.

solegstar
18.08.2014, 10:43
Как я понял из схемы, при возникновении /IORQ увеличивается длительность /WAIT для Z80.
немного не так, при возникновении /iorq начинает генерится сигнал /wait одновибратором на АГ3, длительностью 400ns, увеличивая длину /iorq, /wr и /rd (вроде еще что-то, надо циклограммы проца смотреть), тем самым давая возможность всей периферии, в том числе и дешифраторам, нормально выставлять сигналы на выходе, так и реагировать на входы управления.

А зачем сигнал CSAP6 и как он формируется? Это схема именно для PROFI?
этот сигнал наподобии /iorqge всей периферии на верхней плате. сначала схема была описана в доработках одного из спектрафонов для профи, но она изначально была немного другой - вместо сигнала CSAP6, было подключено +5В и одновибратор генерил вайты при любом приходе /iorq. сигнал csap6 был введен специально (собсно сама доработка), чтобы вайты генерились только при обращении к периферии верхней платы.
т.к. у John North`a была доработка профи под пентагоновскую развертку, такая схема вносила бы рассинхронизацию мультиколора в демах. поэтому вместо сигнала csap6 я предложил завести сигнал TURBO (0-выкл., 1-вкл.). когда турборежим выключен, то одновибратор заблокирован, а когда турборежим включен вайты начинают генерится в любом случае при обращении к памяти, ессно идет рассинхронизация в мультиколорах и в принципе уже всё равно на доп. вайты от АГ3. при включеном турборежиме начинают генерится доп. вайты от АГ3 удлиняя /iorq, /wr и /rd для периферии на достаточное время, для реакции периферии. кстати caro предлагал тоже генерить вайти в турборежиме при приходе /iorq, только у него одновибратор был собран на обычной логике. схема есть в этой теме.

SoftFelix
18.08.2014, 12:24
solegstar, так по каким критериям надо искать в КАЕ-2010 замену сигнала CSAP6? У него, как я понял, активный уровень высокий? Т.е. при CSAP6=1 разрешена генерация /WAIT'ов на Z80?

В схемотехнике КАЯ, как я понял и уже писал выше, при /IORQ=0 (или /DOS=0) принудительно отключается ТУРБО-режим, т.е., в принципе, реализована идея "длинного" /IORQ в ТУРБО. Но, видимо, это работает не совсем чётко.

http://photo.qip.ru/photo/softfelix/3868246/xlarge/108149283.jpg (http://photo.qip.ru/users/softfelix/3868246/108149283/)

Попробовать собрать эту схемку и вместо CSAP6 подать /IORQG, "1" на котором отключает все порты на основной плате?

http://photo.qip.ru/photo/softfelix/3868246/xlarge/96438820.jpg (http://photo.qip.ru/users/softfelix/3868246/96438820/)

solegstar
18.08.2014, 12:33
так по каким критериям надо искать в КАЕ-2010 замену сигнала CSAP6? У него, как я понял, активный уровень высокий? Т.е. при CSAP6=1 разрешена генерация /WAIT'ов на Z80?
для начала попробуй собрать схему на АГ3 и вместо csap6 подать +5В. посмотри, будет эффект или нет, если будет, то будем дальше думать. возможно, даже так и оставишь, т.к. под кай мультиколоров нет, можно еще в тесте 4.30 глянуть насколько упадет производительность компа. наверное это лучше обсуждать в теме кая...

Gutten
23.08.2014, 21:51
Уважаемый caro, можно ли добавить в прошивку мультикарты возможность подключать Sinclair-джойстик 1 и 2 (как в ZXM-фениксе сделан Kempston)? И можно ли изменить работу индикатора ScrollLock наоборт - т.е. когда активна клавиатура, то он горит (сейчас наоборот)?

John North
04.10.2014, 17:44
вобщем возвращусь к старой теме.
Quick Commander не работает нормально с ZXMC-2.
вернее работает, но пользоваться невозможно((
со стандартной клавиатурой всё ок.
вобщем вот видео, чтоб наглядно было.
http://sderni.ru/244883
кто что думает?

Gutten
07.10.2014, 23:02
Если уж совсем в данной карте нельзя избавится от /WAIT без изменения закрытой прошивки, то можно ли уменьшить их заменой кварца до 16МГц или на 20МГц? не очень удобно в демках с мультиколорами периодически жать кнопку ScrolLock.

John North
07.10.2014, 23:11
Gutten, дык кварц там используется вроде только для прошивки меги.
или я путаю?

Gutten
07.10.2014, 23:23
Не, атмега тактируется от внешнего кварца 14,7456 МГц.

John North
27.10.2014, 17:28
caro, опять вопрос про колесо мыши)
можно ли изменить прошивку меги так, чтобы колесо эмулировало нажатия курсорных клавиш (вверх/вниз) ?
как в эмуляторе Unreal Speccy..
очень удобно бы было.

caro
28.10.2014, 07:44
caro, опять вопрос про колесо мыши)
можно ли изменить прошивку меги так, чтобы колесо эмулировало нажатия курсорных клавиш (вверх/вниз)?Сделать то можно, но мне кажется тебе одному это надо :)
Правильней было бы придумать как такой режим включать/выключать при необходимости.

John North
28.10.2014, 17:14
caro, не понял, а зачем отключать то? типа совместимость с текущим положением дел?
колесо же сейчас реально не задействовано..
или есть проги, в которых оно поддержано?
пс: если тебе не очень трудно, то сделай плиз для меня одного. я буду её тестировать и скажу как оно на практике работает. юзабельность там и прочее..

caro
28.10.2014, 17:51
caro, не понял, а зачем отключать то? типа совместимость с текущим положением дел?
колесо же сейчас реально не задействовано..
или есть проги, в которых оно поддержано?Что-то по моему было. И главное это как бы уже давно стандартизовано но правда мало кто использует.

пс: если тебе не очень трудно, то сделай плиз для меня одного. я буду её тестировать и скажу как оно на практике работает. юзабельность там и прочее..Не помню, у тебя ZXMC-2 или 1? И какую версию прошивки используешь?
Посмотрю, если не сложно попробую сделать.

John North
28.10.2014, 18:15
caro, у меня обе версии ZXMC.
и первая и вторая)) первую ты сам паял))
прошивки вроде самые последние ( 2.7 вроде для ZXMC-2). (последнее изменение вроде такое-ScrollLock-ом отключать ПЦ-клаву и подключать стандартную).

и заранее спасибо!
а если еще и на обе карты сделаешь, вообще супер будет.

John North
28.11.2014, 20:50
caro, ну как там успехи то?

caro
29.11.2014, 07:20
caro, ну как там успехи то?Пока никак, времени нет.

Gutten
07.12.2014, 14:42
А выложить исходники прошивок в открытый доступ никак нельзя? Чтоб если кому что потребовалось тот сам и попробовал добавить-убрать? Ну или договорился с кем-нить.

Gutten
24.01.2015, 15:21
Жаль, что ув. caro ничего не отвечает.
Кто-нибудь пробовал ставить на атмегу8515 кварц на 20МГц? Можел получится таким разгоном добиться noWait работы. А то не очень хочется к этой мультикарте ещё добавлять контроллер клавиатуры на atmege48.

Mick
24.01.2015, 15:26
А в чем такая необходимость noWait режима. Доказать сможешь?

Gutten
24.01.2015, 15:32
Ммм.. вот бордерные мультиколоры съезжают к примеру. Если мультикарту не отключить, можно и не узнать, что на экране мультиколор, который работает нормально на моём компе.

Mick
25.01.2015, 12:34
Ммм.. вот бордерные мультиколоры съезжают к примеру. Если мультикарту не отключить, можно и не узнать, что на экране мультиколор, который работает нормально на моём компе.

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

По этому поводу скажу вот что :
1) Исходники прошивки caro можно получить простым дизассамблированием. Кто хотел, тот это уже сделал.
2) В принципе каждый может написать свою прошивку, какая ему будет нужна. Было бы желание.

Gutten
25.01.2015, 14:46
1)дизассемблировал я уже исходник, только IDA не определила где и что, где кода, а где данные.
2)написать с нуля - знаний и опыта нет.

Исходник явно понятнее дизасма, в т.ч. для редактирования. И если можно добиться noWait удалением части со скриптами, портом RS232 и (возможно) часами, оставив только клаву и мышь и (возможно) добавив опрос Sinclair-джойстиков - мне было бы идеально. Думаю, и не только мне.

---------- Post added at 14:46 ---------- Previous post was at 13:11 ----------

К примеру дизасм прошивки сделан IDAPro, обратная компиляция через AVR Studio - сотня ошибок ".byte not allowed in .CSEG".

Mick
25.01.2015, 18:40
И если можно добиться noWait удалением части со скриптами, портом RS232 и (возможно) часами, оставив только клаву и мышь и (возможно) добавив опрос Sinclair-джойстиков - мне было бы идеально. Думаю, и не только мне.

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

shurik-ua
25.01.2015, 19:00
Непонятно зачем закрывать исходники такой несложной железки.

Gutten
25.01.2015, 19:30
Я ж и говорю, что опыта нет, потому обратился с вопросом к caro ещё 23.08.2014. Но он не отвечает.

---------- Post added at 19:30 ---------- Previous post was at 19:01 ----------

Спековский дизассемблер не будет предупреждать, что в сегменте кода есть данные. Если они там есть, значит так надо и всё равно скомпилируется. Тут же такой фокус не проходит.

James DiGreze
26.01.2015, 11:10
shurik-ua, "открывать" или "закрывать" исходники - личное дело, и нет смысла это обсуждать.

Gutten, вычищение кода не сделает карту безвейтовой, даже если повысить скорость отклика. Зато можно клавиатуру отключить с самой клавиатуры с прошивкой 2.4 - жмем ScrollLock и получаем безвайтовость для дем. ;)

Gutten
26.01.2015, 11:53
Я в курсе про ScrolLock, именно это я и писал про отключение. Вопрос в другом.
Что может сделать ЭТУ карту безвейтовой? Замена кварца на 20МГц без изменения прошивки что даст?
ДА и не очень удобно Синклер-джойстиками пользоваться, было бы полезнее их в карту завести (хотя бы один). Ведь в феникс-прошивке кемпстон поддержан, значит это реально.

Mick
26.01.2015, 12:41
Что может сделать ЭТУ карту безвейтовой? Замена кварца на 20МГц без изменения прошивки что даст?


Простая замена кварца не даст тебе безвайтовости. Я же сказал что сначала бы изучил сей вопрос, а именно схему. И увидел, что при выборе порта FE формируется сигнал вайт. А мега по мере необходимости его удлиняет или нет.
Чтобы не было вайтовости, нужно чтобы чтение порта не влияло на сигнал WAIT, тоесть его либо совсем исключить из формирователя, либо завязать с сигналом Турбо. Но есть ли этот сигнал на карте - я полагаю нет.
В прошивке есть фиксированные временные константы опросника клавиатуры, если ты поменяешь кварц, то клава у тебя возможно начнет глючить, либо перестанет работать совсем. Ну и не факт, что эта мега потянет 20МГц и не пошлет тебя раньше :)

Gutten
26.01.2015, 13:01
В инете встречаются упоминания, что эта атмега на 20 МГц может работать, заработает так хорошо, нет - так и вопросов больше нет.
Схему смотрел, wait выдаётся с атмеги. Что будет, если Wait не подавать с карты на комп, может ответить caro.
Вот про эти констатны я и спрашиваю, значит надо и прошивку менять, и кварц.

James DiGreze
28.01.2015, 12:19
Что может сделать ЭТУ карту безвейтовой? Замена кварца на 20МГц без изменения прошивки что даст?
40 триггеров. Но это будет не "эта карта". Замена кварца теоретически может уменьшить длину вейта.

Gutten
28.01.2015, 19:48
Тогда ещё вопрос - что позволило сделать noWait прошивку клавиатуры для Atmega8/16/48? Рассматривая оба варианта при 20МГц. Не более короткая программа?

zx-kit
28.01.2015, 20:17
Тогда ещё вопрос - что позволило сделать noWait прошивку клавиатуры для Atmega8/16/48? Рассматривая оба варианта при 20МГц. Не более короткая программа?

Я не специалист по разработке PS2 адаптеров, я только начал и я делаю на регистрах. Но предполагаю, что в ATMEGA48 RAM достаточно, чтобы просчитать заранее данные для 256 вариантов старшего байта адреса. При чтении выбирается готовое значение из RAM. Это быстрее, чем рассчитывать это значение на ходу.

James DiGreze
28.01.2015, 20:25
Сомневаюсь, что более короткая программа. Конечно, лучше, если на этот вопрос ответит сам Камиль.

Как предположение - контролер на atmega48 не отображается в адресное пространство z80, т.е. он подключается как обычная клавиатура к уже существующим портам компьютера, а не как универсальное устройство ввода-вывода непосредственно на шину. Также этот контролер не комутирует на один свой порт, и шину адреса, и шину данных. На мой взгляд, это принципиальные отличия, не решаемые временем выполнения подпрограмм прошивки - принцип взаимодействия с компьютером разный.

zx-kit
28.01.2015, 20:37
Сомневаюсь, что более короткая программа. Конечно, лучше, если на этот вопрос ответит сам Камиль.

Как предположение - контролер на atmega48 не отображается в адресное пространство z80, т.е. он подключается как обычная клавиатура к уже существующим портам компьютера, а не как универсальное устройство ввода-вывода непосредственно на шину. Также этот контролер не комутирует на один свой порт, и шину адреса, и шину данных. На мой взгляд, это принципиальные отличия, не решаемые временем выполнения подпрограмм прошивки - принцип взаимодействия с компьютером разный.

Да, в ZXMC1 через один порт читается и старший адрес и выдаются данные. Что будет несколько тормозить при переключении. Кроме этого тут кварц на 11,0592 МГц. Но в схеме на ATMEGA48 тоже есть проблемы, так как нет целого порта для чтения старшего адреса и его приходится собирать из разных портов и склеивать, что тоже тормозит. Однако скорости на 25 МГц достаточно, чтобы работало без WAIT даже в режиме TURBO. Возможно ATMEGA8515 на частоте 16 МГц c доработкой схемы и сменой прошивки и успел бы. Ведь тут есть преимуществро - целый порт для чтения старшего адреса. Что быстрее, чем собирать из двух поротов. Но тут так много входных сигналов опрашивается и выдается, что на это требуется время. Конечно же Камилю виднее. Для ускорения потребуется доработка, а это уже будет другой контроллер.

Gutten
28.01.2015, 21:18
Да что-то Камиль не хочет отвечать в этой теме больше, видно мои вопросы слишком глупые.
Много сигналов , но не все они уже актуальны в текущий исторический момент - много ли кто пользуется rs322 или часами? А ведь на часы тоже уходят ресурсы программного изменения времени и записи в порты.
Хотя вариант "модернизации" ZXMC2 с заменой ATMEGA8515 на какую-то более быструю атмегу с установкой через панельку-переходник DIP40-DIP40 было бы интересно.
Ведь в чём плюс данной карты перед другими аналогами? Не надо мгтфинга, редких м/с и программаторов; вставил в слот, прошил простейшим программатором и работает.

Не менее интересен был бы вариант слотовой карты для ps/2-usb клавиатуры и мышки и поддержкой джойстиков в режиме noWait.

zx-kit
28.01.2015, 21:36
Я хочу сделать новую карту IN-OUT для своего модульного компьютера.

Gutten
28.01.2015, 21:39
Если она будет поддерживать ps/2+USB клавиатуру и мыкшу + KEMPSTON+SINCLAIR1+SINCLAIR2+CURSOR+по кнопкам REST и NMI, да всё это на ZX-BUS - будет очень ценный продукт.

zx-kit
28.01.2015, 21:48
Если она будет поддерживать ps/2+USB клавиатуру и мыкшу + KEMPSTON+SINCLAIR1+SINCLAIR2+CURSOR+по кнопкам REST и NMI, да всё это на ZX-BUS - будет очень ценный продукт.

Идея похожа на вашу. На шине ZX-BUS можно сделать простейшие порты механической клавиатуры и кемпстон джойстика. Например, как в LENINGRAD, на двух 555КП11 и нескольских микросхемах логики.

Это позволит, как и следует из назначения, подключить механическую клавиатуру и SEGA джойстик как KEMPSTON. Но также будет возможность подключить в эти разъемы плату SUPER JOYSTICK PORT 2 (http://zx-pk.ru/showthread.php?t=20322), которая уже в процессе производства. Там уже будет два разъема под SEGA джойстики с произвольным выбором типа (KEMPSTON/SINCLAIR1/SINCLAIR2/CURSOR). Там предусмотрены дополнительные сигналы для управления Z80: RESET, WAIT, NMI и разъем для подключения через шлейф PS2 клавиатуры или USB-клавиатуры через UART с внешнего контроллера с USB (ARM, PIC, AVR, VNC2 и т.д.).

Если надо мышку - то можно добавить на плату IN-OUT еще пару мультиплексторов для выбора тумблером KEMPSTON JOYSTICK / KEMPSTON MOUSE, так как у них одинаковые адреса портов и в оригинальном компьютере они подключались по-очереди. К одному входу мультиплексора подключить SEGA джойстик или SJP-2, а к другому - контроллер мышки типа контроллера caro.

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