-
Наконец добрались руки сделать переключение тактовой (быстро или 1 Гц) по правильному, раньше при попытке переключиться с высокой на низкую проц зависал, а с медленной на быструю - часто зависал - ибо переключатель на плате без устранения дребезга. Теперь работает веру гуд :)
- - - Добавлено - - -
Гы :) Поймал на выводе строки в тесте - по одной буковке - шлёп шлёп шлёп :):)
- - - Добавлено - - -
Хренушки, не всё так просто - на обработке прерываний - застревает... Но всё равно - уже лучше, чем было :)
-
Судя по экспериментам, застревает на подтверждении прерывания от проца.
Перещёлкивание во время ПДП не сказывается - cop/dev/ver проходит без проблем, главное, перещёлкнуть на быстрый клок до того, как процессору зачешется выдать подтверждение прерывания.
Да и то, вроде критический момент - снятие устройством своего запроса на прерывание.
- - - Добавлено - - -
Поигрался с тактовой устройств на шине (снизил с 50 до 20 МГц) - работают. Попробовал снизить тактовую проца до 20 МГц - частично работает (система, например, не загрузилась). Ну, в общем, ожидаемо - я начал с того, что попроще - и перепахал обмен с шиной у периферии. Проц пока не трогал. Значит, надо и его потрогать :)
-
Война с в/в со стороны процессора (в первую очередь - из памяти) продолжается. Пока счёт сколько то там : 1 не в мою пользу. Пока не знаю, как (лучше) определить, что запрос на в/в - это уже выставленный новый, а не ещё не снятый старый. Штуки три вариантов попробовал, но всё они правильно отработали только если или память работает медленней проца или проц очень сильно медленней (1 Гц) памяти. Да и то в варианте явного шага - закончить в/в. Пока плюнул. Попричёсывал код в процессоре и перешёл к разборкам с ДП.
Думаю, как его аккуратно прицепить к процессору, корзине и 18 битным устройствам с ПДП (читай - UMR).
Задачу усложняет то, автор PDP2011 обращение со стороны процессора к верхним 256 кб памяти (минус страница в/в) пропускает то же через блок UMR.
- В доках этот момент пока не попадался,
- Unibus процессора под рукой, на котором можно было провести натурную проверку нет,
- логические рассуждения пока приводят к выводу - вполне возможно, что оно действительно так,
- но вот PDP-11/84 и PDP-11/94 с PMI памятью, опять же, логическими рассуждениями, а так же один из вопросов в SYSGEN от RSX-11M-Plus говорят, что, по крайне мере на этих машинах - возможно, что и не так.
Можно было бы, конечно, в описании процессоров сделать ещё один флажок - как идёт обращение в область UMR со стороны проца - напрямую в память или через UMR, но пока это не только не упростит задачу, но и усложнит. Хотя, опять же, по логическим рассуждениям, это будет самый правильный вариант.
В общем, надо подумать.
-
Потихоньку клепаю (точнее, переделываю под моё видение) ДП.
На неделе было мало свободного времени, плюс ещё влетел во взаимное непонимание с синтезатором - то, что я ему нарисовал - приводило к странному результату и сбоях при работе ПДП. На ПДП сидит RK2011, так что - системы не грузились.
В пятницу вечером не то, что бы осенило, но очередной вариант соединения сигналов вдруг взлетел - то есть и результат синтеза понятен и системы грузятся (ДП ещё не рабочий). Так что некоторое количество кода (чтение из PAR регистров) было написано быстро.
Утром днём субботы постараюсь доделать запись в PAR и чтение-запись в PDR.
Если всё пойдёт нормально - может и до управляющих регистров доберусь и тогда можно будет попробовать включить ДП :)
-
Некоторое количество косяков, некоторое количество не понимания, почему так (понял), исправление того, что красиво для программиста на то, что красиво для синтезатора и...
Есть полный набор PAR-ов и PDR-ов с чтением и записью. Для PDR-ов функционал битов реализован не совсем полностью - есть два бита, которые для программиста только читаемые - их сбрасывает и устанавливает сам MMU. Поскольку MMU ещё не работает (точнее, работает только на преобразование адреса с выключенным MMU), то и эти биты - тоже не работают. И пока не учитывается размер PAR-ов и функционал пары битов в PDR, зависящие от модели процессора.
Ещё не проверял работоспособность регистров, в зависимости от того, какой процессоров выбран, но этим займусь завтра, благо, что при благоприятном стечении обстоятельств всё, что понадобиться - выставить флажки, пересинтезировать, прошить и прогнать тесты. Это если всё окажется работоспособным.
Потом добью биты, которые работают или нет в зависимости от модели процессора.
А потом можно будет попробовать добавить регистр включения функционала MMU :)
-
Очередной шаг - почти все регистры реализованы.
SR0 реализован, но пока не работает как SR0, просто можно читать и писАть.
UMR пока не реализованы, но есть реализация как самостоятельный модуль, думаю прикруть оттуда.
Доскональной проверки, что все они работают в соответствии с манаюлом - пока не делал.
Теперь, собственно, включение работы SR0 и MMU.
Из занимательного. Думал, из за того, что SR0 есть, но не работает, RT-11 не загрузится. Однако, SB монитору это не помешало. Пусть и с приколами :)
Код:
@DK3
RT-11SB (S) V05.07
?KMON-F-File not found DK:STRTSB.COM
.SHO CONF
RT-11SB (S) V05.07
Booted from RK3:RT11SB
USR is set SWAP
EXIT is set SWAP
KMON is set NOIND
MODE is set NOSJ
TT is set NOQUIET
ERROR is set ERROR
SL is set OFF
EDIT is set KED
FORTRAN is set FORTRA
KMON nesting depth is 3
Global .SCCA flag is disabled
CLI is set DCL, CCL, UCL, NO UCF
PDP 11/34 Processor
4088KB of memory
Extended Instruction Set (EIS)
Memory Management Unit
50 Hertz System Clock
Device I/O time-out support
SB timer support
Global .SCCA support
Extended unit support
.
- - - Добавлено - - -
Вдогонку - на самом деле памяти 128 кб :):):)
-
О как я умею :D
Код:
Flow Status In progress - Thu Dec 10 17:06:51 2020
Quartus Prime Version 20.1.0 Build 711 06/05/2020 SJ Lite Edition
Revision Name PDP2011
Top-level Entity Name PDP2011
Family Cyclone V
Device 5CSXFC6D6F31C6
Timing Models Final
Logic utilization (in ALMs) 3,333 / 41,910 ( 8 % )
Total registers 2453
Total pins 155 / 499 ( 31 % )
Total virtual pins 3
Total block memory bits 1,058,880 / 5,662,720 ( 19 % )
Total DSP Blocks 1 / 112 ( < 1 % )
Total HSSI RX PCSs 0 / 9 ( 0 % )
Total HSSI PMA RX Deserializers 0 / 9 ( 0 % )
Total HSSI TX PCSs 0 / 9 ( 0 % )
Total HSSI PMA TX Serializers 0 / 9 ( 0 % )
Total PLLs 2 / 15 ( 13 % )
Total DLLs 0 / 4 ( 0 % )
-
Ещё шаг вперёд. Уже учитывается длина и защита страниц. Насколько всё правильно - пока не знаю, но прерывания по защите страниц уже видел. Не весь функционал по обратной инфе о прерывании операций реализован, но двигаюсь :)
И, похоже, возникла какая то проблема в модуле ПДП (длительные задержки сигналов?), поэтому пока всё перестало грузиться.
Самописный тест прошивается прямо в ОЗУ синтез-прошивки, так что какие никакие тесты есть.
-
Ещё шаг. Проверил отработку прерывания по недоступной странице, по длине страницы и по записи в только читаемую страницу. Отрабатывается, в регистре сообщает.
Борьба с ПДП...
-
Чёт я подустал.. Решил малость отвлечься.
Сделал так называемый display register - который выводит записанное в него значение на линейку светодиодов. К сожалению, на моей DE10 нет линейки из 16-ти светодиодов, а есть 6 семисегментных цифровых индикаторов. Почесав, как обычно, почесуемое, я придумал, как можно сделать на них :) Как ни странно, заработало с первой попытки - есть только один маленький косяк - на один из битов зажигаются два светодиода.
Так что теперь у меня PDP2011 показывает не только содержимое PC, но и - если была выполнена команда WAIT - покажет содержимое Display Register.
Когда получится загрузить RSX - посмотрим, она вроде как отображает бегущие огоньки при простое :)
Тестовая программа (проверка работы прерывания от часов и клавиатуры) теперь не только рисует плюсы и введённое с клавиатуры на экран, но и рисует бегущую строку из светодиодов. Чуть позже запищу и выложу видео :)
- - - Добавлено - - -
Ошибку поправил, сделал немного другой вариант показа простоя :)