Очень жаль. Ибо пока НИКТО не сфоткал реал в работе)
Вид для печати
Очень жаль. Ибо пока НИКТО не сфоткал реал в работе)
Так у меня и работы-то нет, где-то почти за границей видимой области ч/б экрана считает память и всё. Дальше пока не починено
Да хоть что-то для начала)
...
Есть примитивный отладчик консольный.
>А как дебаггер поможет оживить реал?
Может у меня там получится посмотреть почему рекалибровка дисковода зацикливается.
хотя бы посмотреть кучок кода где происходит рекалиброка.
...
Разлочил отладчик.
Пользоваться на свой страх и риск) Если приспособиться, то можно пользоваться)
Кстати, версия эмулятора тут новее, с более правильными бордюрами между областями с разным разрешением.
F8 - останов и переход в отладчик. Желательно делать это в режиме разлоченной мышки, иначе есть шанс остаться без нее.
В отладчике:
rNNNN - запустить до адреса NNNN (все адреса только шестнадцатиричные).
если нужно просто запустить, то обычно я делаю r1 (т.к. адрес '1' нечетный, и совпадений с ним никогда не будет).
e0 - запустить процессор до команды RTS.
f0 - выполнить 1 фрейм
dNNNN MMMM - записать в файл PK11DisDump.txt дизассемблированный фрагмент с адреса nnnn по адрес mmmm
l0 - записывать дамп исполняемых инструкций в файл UKNCDebugDump.txt
m0 - записать на диск дамп памяти
Примерно где-то так.
...
Пуск ВМ2 ( сразу после перепада ACLO с 0v до +5v ) :
SYNC- +5v.
DIN - 0v.
SEL - 0v.
AD - что выдал РНП, старший байт - начало таблицы векторов, первый вектор ( адрес совпадает с началом таблицы ) - адрес первой исполняемой инструкции .
Первый запрос МПИ :
AD - адрес первого слова в таблице векторов по адресу из регистра начального пуска.
SEL - 0v ( т.е. таблица векторов всегда скрытая, "на теневой стороне" )
Примерный формат таблицы векторов описан в ТО на ВМ2, или в кратком ТО на КЦГД ( из инструкции к ДВК ). Например, для БК0011М первые слова таблицы векторов :
140000 000340 - пуск с 140000 адреса.
...
На самом деле для 1801ВМ1 ждать не нужно. Я подозреваю, что когда писалась заводская документация, то имелось ввиду ждать 70 мс после установления питающего напряжения +5V, а не именно после снятия nDCLO. У меня 1801ВМ1 успешно запускался если nACLO снят примерно через 1 мкс после nDCLO (меньше я просто не пробовал). По деактивации nACLO у BM1/BM2 запускается автомат микрокоманд, поэтому если снятие nACLO как-то не так отдетектируется, то ножки шины просто дергаться не будут - процессор в полном останове.
Обратил внимание что AD8-AD14 ВСЕГДА +5v. Может в этом проблема.......
Да вроде бы процессор делает все правильно - РНП читается по процедуре "безадресное чтение", там nRPLY не используется и процессором не ожидается. Старший байт РНП (прочитанный 100xxx) используется как адрес вектора прерывания - двух слов с адресом точки входа и начальным PSW. Дальше процессор и пытается считать первое слово этого вектора (смещение +0), но не получает RPLY и вероятно пытается перейти на обработку исключения "зависание шины при получении вектора прерывания".
...
Была ли машинка когда-нибуть рабочей ?!
Вообще все ИС серии КР580 дохнут как мухи, их по определению надо в колодках держать.
*
Что можно сделать - срезать ВАшкки, поставить вместо них колодки, и закоротить проволочками входы-выходы ВАшек. Тактовую камня поделить на 2 или 4 - т.к. звон на шине усилится конкретно. В самом 1806ВМ2 на МПИ стоят 1564АП6.
Фокус не пройдет - ВАшки инвертирующие.
*
А схемы нет ? ( а то советы типа о "коне в вакууме" )
там ВАшки с инверсией
...
Ну раз РНП=000000, то он может просто отсуствовать.
И еще забавно что AD15=SEL. Всегда. Явно где-то косяк.
--
Опа, они у процессора на соседних ножках. Пошел ковырять плату
если AD15=SEL то рнп по адресу где а15=1
тоесть 1000000
схема для 1801вм1 тут МПСС ¹2 1986г. стр. 33-37
Там нет ниччег по такому адресу. Да и не может быть всегда ad15=sel
А если взять китайский тестер, включить диодик Д9/Д310/Шоттки в прямом направлении ( что бы ток между щупами шел непрерывно, через диод ) и измерить сопротивление между АД15 и SEL процессора, для начала на плате ?
( Критическое напряжение для советских выключенных ИС - 0.5 в, пробивное ~ 1.0 в , т.к. нет диода от вывода на питание ).
Подчистил дорожки. Теперь процессор стартует нормально, но через небольшое время пишет в никуда, валится по трап4 и дальше внутри обработчика трап4 читает ниоткуда-юснова в трап4
Мрак.
- - - Добавлено - - -
Не работает.
Срабатывает через раз и всегда пишет только одну команду с адреса MMMM.
Может какие-то хитрости есть?
- - - Добавлено - - -
И в эмуляторе и в исходниках имеем вот такой код обработчика trap4:
- - - Добавлено - - -Код:tr4h: mov #v.tr4h,r0 ; и в эмуляторе и у меня v.tr4h почему-то равно 100066
br int4 ;
.......
int4: mov (r0)+, r3 ;+2 и вот тут мы радостно пробуем читать с адреса 100066 и снова входим в трап4
beq supr ;
То есть где-то не отрабатывает диспетчер памяти, а это полный мрак...... Водки что ли выпить.....
да, перед этим мы заносим в регистр 161210 значение 40.
Соответственно, адрес 100066 должен отмапироваться на 20066 и попасть в ПЗУ.
Таки водки, без неё с мапером не разобраться........
Вопрос авторам эмуляторов (Titus'у как автору рабочего эмулятора и тем кто еще писал):
регистры диспетчера памяти (HR0-7 они же 161200-161216) они w или rw?
Если я сделаю тестовую ПЗУ и буду в них писать и читать - должно записанное и прочитанное совпадать?
- - - Добавлено - - -
Titus, В Вашем эмуляторе в отладчике, насколько я понял, читать/писать память по адресу нельзя?
RW
- - - Добавлено - - -
Специально команды такой нет. Если очень нужна, могу сделать.
Команда 'm' же делает дамп памяти всей.
Только одно замечание - у безаргументных команд все равно должен быть фальшивый первый аргумент. Например в данном случае следует писать 'm0'.
...
То что в "стандартном" отладчике выглядит так
xxxxxx/
Можно раздельными командами rXXXXXX и wXXXXXX YYYYYY
Для того чтобы посмотреть адрес (тот же регистр маппера или статус FDC) ну и поменять.
Ну и если уж я настолько обнаглел - было бы еще здорово команду сброса (например, включил вывод в файл командой l и сделал сброс, чтобы отлогировать все команды с самого начала). Или это как-то иначе можно сделать?