С этой парты не видно! (с)
А с этой видно? https://yadi.sk/d/_9nnSLCv3Gs9Cz
Последний раз редактировалось ABRAMKA0; 11.04.2017 в 17:13.
Выложить все файлы в виде архива. Так ничего не разобрать.
Последний раз редактировалось АлександрПП; 11.04.2017 в 18:07.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Выложил на Яндекс диск,ссылка в предыдущем посте.
- - - Добавлено - - -
Можете посмотреть https://yadi.sk/d/_9nnSLCv3Gs9Cz
- - - Добавлено - - -
Выложил по просьбе DIMKA55
Схема и ПО (ORDOS) разрабатывалась и с возможностью применения и адаптации для Ориона-128
Просто у меня на ходу был ПРО который почти все время работал в режиме 128 на 10 Mhz (оно же быстрее чем ВМ80 на 2,5)
при компиляции указываешь ключ для чего собирать и всё
Правда для 128 предполагалось использовать монитор версии 4.10
Вопрос к знатокам устройства часиков (512ВИ1) на плате IDE-RTC. Дошли руки пописать под них ПО, всё прекрасно работает, но есть большой и неприятный глюк! Если после любого обращения к часам выключить питание компа, то комп не стартует (на экране хаотично мигающий мусор). Аппаратный сброс не помогает. Помогает только выключить и подождать 20+ секунд. После (видимо глубокой разрядки кондёров по питанию) комп стартует и работает нормально. Глюк стабильный. Если не обращаться к ВИ1, то комп выключается-включается нормально. Пробником в железку пока не лазил, но по симптомам полное ощущение, что эта самая ВИ1 при старте "светит в ШД" и т.о. мешает работе ЦПУ. Вероятно, после обращения к ВИ1, её нужно как-то специально переводить в сон, но как?
Я перерисовал с "китайского" на "русский" причинный участок схемы:
Вижу некий "рассыпной" триггер на рулёжку чипселектом ВИ1, активируется он похоже стробом адреса ВИ1 (AS), а вот с деактивацией я не понимаю что там наворочено...
Никакой документации по программированию нет (или у кого-то есть?). Есть чужая утилита работы с этими часами, там никаких откровений, и с ней глюк тот же самый. Как понять задумку авторов?
Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел
В 90-х я запускал ВИ1 по инструкции из Радиоежегодника-89 (легко прогугливается в djvu), в т.ч. и начальную программу использовал сначала именно ту что публиковалась там, только перевел в мнемоники Z80, она потом "обросла мясом", перетекла в драйвер для CP/M и т.п. Но инициализация и режимы скорее всего остались "как в учебнике", и описываемой проблемы я не припоминаю. Кстати, режимы используются другие чем например в VC Ориона-ПРО (например режим BCD-счета, возможно и другие). А проблема на всех экземплярах ВИ1 воспроизводится?
Вот как оно в коде инициализируется:
Скрытый текст
Код:ADDRVI EQU 0F760H ; ; инициализация апп. часов LD BC,270AH ; ПИШЕМ В РЕГ. А Q=32768 Гц SQW=512 Гц call VIset LD BC,860BH ; ЗАПРЕТИТЬ СЧЕТ, ДВОИЧНЫЙ ФОРМАТ call VIset LD C,0 ; УСТАНОВИТЬ СЧЕТЧИКИ: LD A,(SEC) LD B,A ; СЕКУНД call VIset LD C,2 LD A,(MIN) LD B,A ; МИНУТ call VIset LD C,4 LD A,(HOUR) LD B,a ; ЧАСОВ call VIset LD BC,060Bh ; РАЗРЕШИТЬ СЧЕТ ; ; Set byte to 512VI1 CMOS. Inp: C=register(address), B=value ; VIset: SetVI128: ld (ADDRVI),bc ret[свернуть]
И далее так используется:
Скрытый текст
Код:; получить дату в формате ДД:ММ:ГГ IGETDT: ld hl,BUFFER+17 ld de,BUFFER+20 ld bc,17 lddr CALL GETDAT0 ld hl,DAY ld de,BUFFER ld bc,3 ldir ld a,3 jp ADDNBF GETDAT0:LD A,(VI1) ; 0 - программ., 1 - 512ВИ1 OR A RET Z ; выход, если прогр. часы GETDAT1:LD C,0Ah call VIget RLCA JR C,GETDAT1 ; цикл, если идет обновление LD C,7 call VIget ld (DAY),a ld C,8 call VIget ld (MON),a ld C,9 call VIget ld (YEAR),a ret ; установить дату в формате ДД:ММ:ГГ ISETDT: ld hl,PARBUF ld de,DAY ld bc,3 ldir LD A,(VI1) ; 0 - програм., 1 - 512ВИ1 OR A RET Z ; установка даты апп. часов SETDAT1:LD C,0Ah call VIget RLCA JR C,SETDAT1 ; цикл, если идет обновление LD C,7 ; УСТАНОВИТЬ СЧЕТЧИКИ: LD A,(DAY) LD B,A ; дней месяца call VIset LD C,8 LD A,(MON) LD B,A ; месяцев call VIset LD C,9 LD A,(YEAR) LD B,a ; лет jp VIset ; ; Get byte from 512VI1 CMOS. Inp: C=register(address), Out:A=value ; VIget: GetVI128: ld a,c ld (ADDRVI),a ld a,(ADDRVI+1) ret[свернуть]
Из того что еще вспоминается: никак не работало тогда корректное определение сбоя регистров часов по пропаданию питания (в ВИ1 есть спец бит в каком-то регистре). Не работало как описано: то нормально определит, то глюк, так и не понял почему. И в итоге стали тупо писать в некоторые ячейки пользовательского ОЗУ ВИ1 некий хеш, и при старте ОС проверять его как флаг того что данные валидны. Т.е. в реальной ВИ1 не всё может быть как оно в теории в даташите.
Что забавно: работы с ВИ1 начал только потому, что случайно купил этот Радиоежегодник (в 89г. у меня еще не было Ориона, я тогда тупо скупал в книжном все интересные журналы по радиотехнике, и должен заметить, во Владимире их было очень мало, даже приходилось посидеть в библиотеке в охотку) и также случайно году в 93-94 когда Орион у меня уже был, в магазе что-то очень задешево продавались сами ВИ1.
Последний раз редактировалось Error404; 01.08.2017 в 13:28.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)