NXM для процессора уже работает, а вот RK11 сопротиваляется. Отладка-доработка.
Вид для печати
NXM для процессора уже работает, а вот RK11 сопротиваляется. Отладка-доработка.
Нуу... Последняя ошибка - прямо таки из разряда - Это не ошибка! Это - фича!! :D И RK11 честно говорил - дааа, я всё прочитал! Да, по адресу 160000 (машина без ДП :) )! Да, все 256 слов :D
В общем - у меня так память генерировалась, что её было 64 кб :) Вот в последние 8 кб RK11 и писал :) Всё по чесноку :) Как только выставил адрес 200000 - всё, NXM прилетел и был обработан :)
Но - для теста нужно всё таки 56 кб :) Пришлось немного хакнуть модуль памяти :)
Ну вот - по крайне мере теперь ZRKK не сваливается, а идёт (пусть и с ошибками - разберусь) по всем восьми дискам :)
Устал от RK11 (там уже надо выполнение команд причёсывать плюс более точно синхронизировать внутренние изменения и видимость снаружи - некоторые процессы опаздывают - и тесты валятся).
Сцепился с MMU - процесс тот же - распиливание монолита. Есть задумки по ускорению его работы, но посмотрим.
В "отладке", если это можно так назвать про FPGA :) В очередной раз проверяю работу проца на низкой (1 Гц) тактовой. После переделки модуля в/в процессора - теперь каждый микротакт (даже связанный с в/в) процессора - ровно один такт тактовой :)
То есть, если бы это дело так же взлетело бы на 100 МГц тактовой - то скорострельность была бы до 100 мипсов :)
Развлекаюсь разным - из разряда - на что глаз упадёт. Появились мысль по расширению "PLM", но на текущий момент с файлом-описанием "PLM" было уже не удобно работать - 27 полей плюс комментарий - слишком широкий текст, плюс ещё некоторые специфические тормоза в Far-е. В голову пришла мысль распилить его на части - вертикально - то есть разные поля в разных файлах. Плюс скрипт, который бы всё объединял. Но с учётом того, что файл-описание уже есть, первым пришлось набросать скрипт, который его монолит распилил на составляющие. А потом уже скрипт, которые бы части объединил.
Первый вариант (каждое поле в своём файле, скрипт для объединения) (за обеденный перерыв) - готов.
Но есть логически связанные поля, которые хотелось бы иметь в одном файле. Так что следующая доработка - возможность брать из файла описания для нескольких полей. Это уже вечером, после работы.
Ну и всё это началось с мыслей о добавлении ещё полей в "PLM". Что будет сделано уже после написания скрипта версии 2 - ибо будет две добавки по 9 (или 10-11-12 - пока нет понимания - сколько) полей.
Всё это мне напомнило мне мой любимый подход - управление логикой работы программы через описатель с данными :) Получается - горизонтальное микропрограммирование я уже давно освоил - в несколько другой области. Но с существенным отличием - в электронике все микрооперации при горизонтальном микропрограммировании выполняюся одновременно :)
Ну и попутно добавил в свою программу поиска (и удаления) дублей файлов добавил так же расчёт и сохранение SHA256. Плюс наконец-то (не прошло и 30 лет с момента первой версии) добавился подсчёт простейшего варианта КС (простое суммирование) и CRC32 :) Так что теперь вероятность совпадения всей информации о файле (длина плюс 5 КС) - крайне мала
На доработку скрипта с возможностью размещения нескольких полей в одном файле ушло меньше получаса. Продолжаю развлекаться с процесором :)
Продолжаю ковыряться внутри процессора и для упрощения исследования (исходно не я писал и с ходу переходы между "микрокомандами" не скажу) всё таки допили заготовку "Ручной тактовый генератор" (осталась ещё от ранних времён возни с PDP-11 в FPGA) до рабочего состояния :) Теперь у меня есть генератор тактовой для сверхнизких частот :)
Ещё небольшая доработка скрипта слияния частей "PLM" - пропуск пустых строк и строк с только комментарием - для более удобного чтения файла человеком.
Добавил новые поля и попробовал их использовать в командах RTI и RTT. Вполне работает, но пока это эксперименты с удобством и работоспособностью новых полей.
Продолжаются эксперименты, уточнения, исправления, расширение набора полей (в том числе для специфически обрабатываемых ситуаций и команд). На текущий момент правильно отрабатываются всё (но не всё пока оптимально), переделанное на новый механизм - отработка прерываний, RTI и RTS. Очень помогает ручной тактовый режим :)
Один из ключевых моментов - у автора PDP-2011 чтение регистров было асинхронным. Я уже не раз налетал на то, что не всегда работает (на повышенной тактовой) правильно. И поскольку заманался бороться с этим - одна из целей переделки внутрянки - сделать чтение регистров синхронным. Ну а что бы несколько ускорить процесс (так как часто нужно читать не один регистр в процессе выполнения команды или отработки прерывания) - реализовал подсмотренную в PDP-11/70 технику :)