PDA

Просмотр полной версии : МС1201.2018



Страницы : [1] 2

Hunta
11.04.2019, 22:00
Сайт с разным, относящимся к теме

Для русскоговорящих
http://www.KpXX.Ru/Днепр/МС1201
http://www.KpXX.Ru/Днепр/МИПК

For English speaking people
http://www.KpXX.Ru/Dnepr/MS1201
http://www.KpXX.Ru/Dnepr/MICB

Исходники прошивки для FPGA (графический вариант)

Прошивка ПЗУ и драйвера:

http://www.KpXX.Ru/Днепр/Софт/CF
http://www.KpXX.Ru/Dnepr/Soft/CF

https://github.com/1801VM3/MC1201_2018

512ВИ1 - это отдельная песня, возможно этой плате она так и не будет реализована. Посмотрим.
Я отвечаю за драйвера и софт для работы с RTC и, в какой то степени, за прошивку CPLD, в этой теме буду отписываться и давать ссылки.

Поскольку определённая работа с драйверами под IDE интерфейс для RSX уже была проделана и поскольку это моя любимая система - в первую очередь драйвера и софт будет сделаны под неё :)
Не срослось, первыми драйвера были сделаны под RT, но RSX в планах

Ждёмс :)

Некоторое количество информации для покупающих, раз плату выставили на продажу :)

В целом, многочисленные включения, загрузки и COPY/DEV/VER пока проблем не выявили. Была проблема с прерываниями от консоли (с несколько экзотическими последствиями), но благодаря зоркости некоторых и атлычного знакомства с электроникой других проблема была успешно (гарантии сложно дать, но я её не наблюдаю с 11.11.2019, когда пришла новая прошивка) устранена.

Модифицированная 134 прошивка знакома с CF под именем ZF. Есть драйвера под RT под все мониторы с поддержкой до 64 устройств. Текущий подход - карта бьётся на "разделы" по 32 мб. Пока никаких проверок на предмет размера карты и сколько там реально получилось ZF-ок - не делается. Для переноса инфы между картой и PC использую ISOBuster и самописную программу, которая умеет выдёргивать и запихивать разделы.

Теоретически есть драйвер под RSX, но практически он слегка недописан и в нём ТОЧНО есть ошибка, которая пока проявляется при копировании утилитой BRU

Ведутся работы по улучшению работы в пультовом режиме как со стороны firmware (прошивка для CPLD), так и со стороны ПЗУ пультового режима.

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

Добавление от 28.11.2019

Ошибка в драйвере для RSX проявляется не только при копировании утилитой BRU. Работы над поиском и устранением ошибки ведутся, но пока они не в приоритете

Добавление от 15.01.2020

Проблема с модулем uart оказалось не только в работе с прерываниями (и там было две проблемы, а не одна), на текущий момент есть прошивка, которая работает на.... не знаю, как померить в процентах, но пока из известных и не устранённых проблем - автоопределение терминала под RSX при настройке терминала на выдачу мультисимвольных последовательностей на максимальной скорости. Конкретно я налетел на это при подключении VT220. К сожалению, в использованной CPLD ресурсов не овердохрена, поэтому реализовать и попробовать разные варианты (учитывая, что там не только уарт) достаточно тяжело. Надеюсь, плата мультиконтроллера (там так же есть два модуля уарт-а) в этом плане поможет.

Решил слегка отдохнуть от этой платы, в ближайшее время (скорее всего в выходные) будут выложены текущие прошивки CPLD и ПЗУ, а так же драйвера под RT (те, что есть на текущий момент). GitHub не предлагать, у меня есть своя площадка.

А пока поиграюсь с платой мультиконтроллера

Как только будет получена рабочая прошивка для мультиконтроллера на VHDL, будет создана тема и про него, хотя, насколько я в курсе, плата существует в единственном экземпляре. При наличии заинтересованных лиц (на плате так же присутствуют порты Uart, Ethernet, SD и для прикола - цветомузыкальная приставка), возможно, будут сделаны ещё экземпляры, но это плата делалась под мои хотелки (спасибо автору за реализацию не только CF разъёмов :) ), так что, с учётом того, что есть третья версия платы 1201.2018 (условное название 1201.2020FE) с портом Ethernet, вполне возможно, что эта плата так и останется в количестве одного-трёх экземпляров :)

Поскольку я задолбался по теме выискивать, когда оно мне нать, прикреплю здесь:

Кварц - 5 МГц



.RUN ZF:SPEED

ТЕСТ БЫСТРОДЕЙСТВИЯ

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 1680

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-ПАМЯТЬ
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 416

КОМАНДА УМНОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 80

КОМАНДА ДЕЛЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 336




RT-11SB (S) V05.07
.RUN SY:TD3E
SUNDAY, 12-APR-2020 13:17:35
.@T0007
.TIME
13:17:39
.COPY/DEVICE/NOQUERY/VERIFY SY: SY7:
.TIME
13:29:10
.




RT-11XM (S) V05.07
.RUN SY:TD3E
SUNDAY, 12-APR-2020 13:29:50
.@T0007
.TIME
13:30:54
.COPY/DEVICE/NOQUERY/VERIFY SY: SY7:
.TIME
13:44:12
.


Время копирования под SB:
13:29:10
13:17:39
00:11:21

Время копирования под XM:
13:44:12
13:30:54
00:13:18

Alex
16.04.2019, 09:30
По поводу удобства работы с флеш-картой...
Делать одно устройство - одна карта, легче всего, но... Для RT11 большие потери по месту будут. Размер тома не более 32 мегабайт :-(

Первый способ сделать поддержку по образу и подобию MBR. Но не очень удобно с таковым работать на РС...
Придётся писать утилиты.

Поддержку файловой системы, каждый диск - отдельный файл. Идеально, но драйвер сложный будет.
Можно сделать промежуточный вариант, ограничится расположением файлов с томами на строго определённом месте. Типа с 2000 блока идёт первый том, далее другие... Пустым местом можно рулить как хош(обычная FAT)... Для РС будут выглядеть как обычная флешкарта. Сильно упрощается написание драйверов со стороны PDP-11. Из утилит - можно обойтись одной на РС, которая будет создавать группу файлов определённого размера лежащих в определённом месте карты. Можно все эти данные что да где лежит - впихнуть в файлик, который лежит в самом начале пространства данных FAT.
Ко всем томам будет спокойный доступ с РС.

Вариант сложнее и проблемнее:
Конечно, если уж очень есть время да желание - можно заставить работать операционку со стороны PDP-11... В теории написать файловый процессор для RSX-11 для FAT-16 - можно :-) Будет круть ;-)

Со стороны RT-11 тоже подход есть. В драйверах есть такой интересный битик - специальная файловая структура. То биш файловые операции выполняются драйвером, по факту используются в драйверах магнитных лент, но кто запрещает забубенить поддержку FAT? Но в RT-11 куча всяких НО... Главное НО - ограничение размера тома :-(
Я в своё время начал писать поддержку FAT-12 для RT-11, для работы с дискетами PC(с определёнными ограничениями конечно), но увы, не успел далеко продвинуться :-(

Hunta
16.04.2019, 10:30
Реализованный сейчас подход в загрузчике ПЗУ halt режима - карта бьётся на куски по 32 мб, было сделано два подварианта - в первом - из первых четырёх можно грузиться, во втором - из первых 64 можно грузиться.
Я пока в размышлениях. Учитывая, что на плате стоит ЭСППЗУ - технически можно залить что угодно. Вплоть до индивидуальных заказов.


Первый способ сделать поддержку по образу и подобию MBR
Технически - возможно, учитывая что последние версии RSX это дело поддерживают, но.. - неудобство работы с картой на PC в целом


Поддержку файловой системы, каждый диск - отдельный файл. Идеально, но драйвер сложный будет.
Учитывая дефицитный ресурс - память - более менее нормально реализуется на RSX и мониторах RT с нормальной поддержкой ДП. Без поддержки - даже не буду пробовать, ибо проги, которые попробуют рулить ДП на таких, могут разрушить всё и вся. Не совсем похожий по сути, но похожий по смыслу пример - проги, подгружаемые в ПП на УК-НЦ. Для RSX и RT с ДП - учитывая сложность работы - может быть когда нибудь, но как в том анекдоте - пообещали, но не уверенно


Можно сделать промежуточный вариант, ограничится расположением файлов с томами на строго определённом месте.
Что (почти) сейчас и сделано - карты бьётся (по некоему алгоритму) на куски


Со стороны RT-11 тоже подход есть.
Та же хрень, что и с поддержкой FAT, но вид с другого бока. Те же комментарии

То есть я, конечно, не собираюсь запрещать эти извращения - но за счёт сил, времени и ресурсов хотящего

В общем - пока платы ещё не пришли, поэтому - теоретические раздумья.

Ещё вариант, над которым я (пока ОЧЕНЬ теоретически) размышляю - поставить мощную FPGA и запихать работа с FAT32 в неё. Когда полностью раскручу PDP-2011 под своё видение того, как оно должно быть - попробую (возможно) реализовать такой подход. Но у него есть один очень существенный недостаток - у мощных FPGA до хренищща ног - многослойка и BGA - цена резко стремиться к неприличной.

В целом ещё зависит от того - какое количество народу наберётся на эти платы

Alex
16.04.2019, 11:12
Наверное с расположением на строго определённом месте - и есть самый удобно реализуемый вариант. Единственная хитрость в том, чтобы эти тома совпадали с файлами .DSK, в FAT. То есть cо стороны PDP-11 никакой работы с FAT. Только тупо с томом начиная с какого-то по какой-то сектора.

Всё остальное потребует сильно большего времени да усилий.

А оно надо через FPGA всё пропускать...??? Может быть для полноценной работы с файловыми системами использовать готовое что-то на x-86 или ARM???

Hunta
16.04.2019, 11:50
Я думал и над таким вариантом. Мне он не очень нравится - шаг влево шаг вправо - расстрел на месте, подпрыгнул - попытку улететь.
Есть ещё задумка - взять Gotek и сделать на его основе адаптер SD карт

В любом случае - тексты ПЗУ и драйверов будут открытыми - всё в руках владельцев платы.

В планах и другие платы (КЦГД реплика и - возможно - расширенная версия, возможно - третья версия МС1201, возможно - плата с четырьмя CF картами) - и пока в приоритете - КЦГД.

А вот когда будет самодостаточный набор плат (хотя плата проца и КЦГД) - тогда можно и поизвращаться

Alex
16.04.2019, 13:26
Реплика КЦГД - на мой взгляд реально, дорога проторена, можно и на полуплату если логику впихнуть в FPGA...

Расширенная версия КЦГД?? - реально, но вопрос в том, что это будут за расширения да где софт брать на эти расширения ???
Для того, чтобы был смысл, должны вкусности быть какие-либо(например, КЦГД + видеоадаптер Электроники-85 в одном флаконе, можно и КГД добавить... с помощью FPGA)

четыре флэшкарты??? а оно надо??? две ещё туда-сюда, для копирования, а более ??? Размер флэшкарт сейчас такой, что....
Ну не будут же HD-видео на PDP-11 обрабатывать :)

Hunta
16.04.2019, 13:51
С репликой КЦГД процесс вроде начат, но автор пока отходит от полуплаты версии 2.0

Расширенная - пока только - хочется :)

Четыре флешкарты - это я себе хочу. Будут ли сделаны платы кому то ещё, кроме меня.. А хто его знает. Собственно, проект уже есть, надо платы заказывать, но у меня пока лишних денег нет, может быть летом, а в заинтересованности кого то ещё в этом изделии даже я сомневаюсь. Поэтому - когда деньги будут. Делается это больше под резервное копирование и что бы в системе было больше, чем одна карта CF :) Ну а с учётом места на плате - получается 4 плюс ещё один ком порт.

Меня с выделением всей CF под один том (RSX это дело позволяет - до 8 гигов без особых извращений, больше - надо смотреть как с такой картой работать) вот ещё что смущает - когда я писал драйвер для Жекиного WQ - то сделал именно так - одна карта - один том. Для экспериментов использовал как раз 8-ми гиговую. Так вот, команда - показать свободное место на томе (PIP /FR) выполнялась, не соврать, минут 20 - можно было :v2_dizzy_sleep2: :) Я пока не знаю, с какой скоростью работает карта во второй версии платы, но по слухам - значительно быстрее. Сильно значительно :) Посмотрим, что будет на этой плате с командой PIP /FR :) Это тоже повлияет на принятие решение о разбивке :)

Alex
17.04.2019, 08:34
Если что написать под RSX. то возможно программу кэширования томов с обратной записью... По типу smartdrv...
Ну можно не всё кэшировать, хотя бы индекс-файл и битмап, Хотя полное кэширование круче было бы.
Если была бы такая программа(ведь ей вполне можно целый мегабайт выделить, а то и два ), то всё пролетело бы сильно быстрее ;-)
Причём, что примечательно, на реальном классическом диске, от неё проку было бы сильно более, чем на флэш-карте(хотя тоже прок будет, экономия ресурса флеш-карты по числу записей бонусом). Можно конечно драйвер дописать, но хотелось бы глобально вопрос решить :-) Возможно, что программа такого вида и существует, но я про неё просто не ведаю :-(

Hunta
17.04.2019, 08:57
В RSX+ кеширование есть (чего там с обратной записью - не помню, как и не помню принцип чистой обратной записи :) но отложенную записи - если есть - включать стоит только если подключать батарейку для питания памяти и настраивать плату на правильное поведение по восстановлению питания - пока в ней с этим - никак, насколько я знаю
Под RSX делать не буду - слишком много заморочек.
И самое главное - пока не увижу скорость работы CF на этой карте - говорить о кешировании особого смысле нет :)

Alex
17.04.2019, 15:22
Даже простая флэшкарта - быстрее дисков старых :-)
Но интересно, а каковы затраты процессора на обработку ввода-вывода по карте???
На старых дисках был DMA. в результате процессор был разгружен от операций ввода-вывода.
Я даже помню комплект из двух платок для СМ, которые позволяли на DMA посадить некоторые устройства. Например, принтер...
Подробностями особыми я тогда не поинтересовался :-(

Hunta
17.04.2019, 16:12
Но вариант реализации контроллера CF от Жеки был как то.. не сильно быстрым. Где то в 6 - 7 раз быстрее MY
На Кванте кроме как MY я не знаю других устройств, работающих по DMA
И не смотря на то, что процессор не занимается обслуживанием в/в - DMA тормозит доступ к памяти со стороны процессора, так что его работа замедляется. Вопрос только - на сколько :)

Alex
17.04.2019, 16:45
И сколько это было в килобайтах в секунду на чтение???
Да сколько на запись??
По разнице можно понять, на что затраты больше...
В ДВК не видел, но в других компьютерах на QBUS было... Видел диск СМ5400 на "Электронике-60", хотя какая там реализация была - точно не скажу.
Потом тут на форуме про контроллеры СМ5400 были упоминания... Про контроллеры ленты СМ5300 тоже упоминалось, хотя в живую сам я их не видел...
Вполне возможно, что на СМ1425 что-то по DMA работало... Хотя там конструктив свой был, хотя шина такая же...
Ещё на VAX совместимых могло что-то быть с DMA да на QBUS.
А так вполне могли быть ЦАПы и АЦП... Но это уж тираж маленький.

Hunta
17.04.2019, 17:34
COP/DEV MY: NL:

819200 55 c 14895 б/с

COP/DEV WQ: NL:

33553408 300 с 111845 б/с

Запись я так и не протестировал

Ну, я работал на СМ-3, СМ-4, СМ-1600, СМ-1420 и слегка на Электроника-79. Там этих DMA-шных устройств - завались. Я говорил конкретно про Квант-4С


там конструктив свой был
Конструктив фигня, главное - протокол

ЦАПы и АЦП видел-трогал на КАМАК-е, а так в принципе - DEC выпускала

- - - Добавлено - - -

Соврал - PIP минут 5 считал свободное место
http://www.kpxx.ru/KBAHT4C/Железо/WQ

- - - Добавлено - - -

Интересные, но объёмные видео

https://zx-pk.ru/threads/27816-ozhivlenie-kvant-4s.html?p=951302&viewfull=1#post951302

AFZ
18.04.2019, 06:25
Не морочьте головы себе и окружающим. Берите FPGA с ARM-ядром на борту и делайте нормальный контроллер псевдодиска, который будет предоставлять в качестве диска PDP-11 файл SD-шки.

Во-первых, разом снимутся все проблемы с размещением образов диска на любой SD-шке, разделами и прочей ерундой.

Во-вторых, если на FPGA, в качестве интерфейса с системой, эмулировать HD выделки Патрона, можно воспользоваться готовыми наработками Патрона и form'а как для RT-11, так и для RSX.

Ну, и, в третьих, если к этому ARM-ядру можно прицепить Ethernet, то достаточно просто организовать сетевые диски - отшариваем на писюке файл-образ PDP-шного диска, а на ARM организуем доступ к этой шаре точно так же, как и к локальному файлу на SD. То есть, конечно, затолкать в тот ARM, который на FPGA, современную самбу, скорее всего, не выйдет, но кто мешает тебе выдумать порох непромокаемый? сочинить свою программулю под писюк, которая организует через IP или UDP тот минимальный набор, который необходим для сетевого диска? Единственный момент - не делать ее сильно широкой, чтобы не организовать дыру в системе безопасности, и вперед!

Hunta
18.04.2019, 08:43
Не морочьте головы себе и окружающим
Себе мы (команда, клепающая эти платы) голову не морочим. Делаем то, что НАМ интересно, что МЫ хотим с учётом текущего уровня знания.
Более того - продажа этих плат окружающим - это побочный (по крайне мере пока) выхлоп проекта.

Поэтому - ВСЕМ СОВЕТЧИКАМ - делайте свой проект и пилите КАК ХОТИТЕ И КАКИЕ ХОТИТЕ фичи.


эмулировать HD выделки Патрона
Мне HD интерфейс не нравится. Текст 134 ПЗУ есть - кому надо - допиливайте, возражений нет


организовать сетевые диски - отшариваем на писюке файл-образ PDP-шного диска, а на ARM организуем доступ к этой шаре точно так же, как и к локальному файлу на SD
По крайне мере пока - не интересно. Кому надо - делайте, возражений нет.

- - - Добавлено - - -

Как подведение итогов.

Цель этих изделий - НЕ ОЩАСТЛИВЛИВАНИЕ всех и вся. Цель этих изделий - реализация определённого круга СВОИХ хотелок.

Например, я - получил лучше сделанные и с бОльшим доступным функционалом (в том числе - с возможностью менять содержимое ПЗУ) платы на замену (по крайне мере пока) платы процессора в своём Квант-е. Что снижает вероятность превращения его в кирпич из за выхода основной платы из строя и невозможности найти замену. Больше того, существует ненулевая вероятность появления новых редакций - более мощных и с большим функционалом.

Так что - меня эти платы вполне устраивают.

Alex
18.04.2019, 09:32
Если у МY основные потери времени на позиционирование головки и поиск сектора, то у флешки таковых потерь нет.
У меня есть подозрения, что по скорости записи на флешкарту, будут цифры примерно такого же порядка, хотя запись должна быть медленнее чтения в разы.
Основные потери идут на программную обработку ввода-вывода. Ещё хорошо, что процессор стоит 1801ВМ3, он сравнительно шустрый... На 1801ВМ1 было бы сильно медленнее. Вот если бы J-11 поставить, то всё бы сильно ускорилось... :-)

Насчёт использовать АRM-ядро в FPGA, идея хорошая, можно даже сэмулировать не только HD, но любой диск, даже с DMA, тогда можно будет запускать почти весь софт PDP-11. Я уверен, что если так поступить, то скорость обмена можно поднять в разы.
Насчёт сети - можно, но не стоит... Лучше сделать отдельный сетевой адаптер, иначе сложность разработки возрастёт. И если он ещё сможет прикинуться сетевой платой от DEC, то это вообще круть :-)

Я говорил про QBUS(МПИ), те которые хоть в теории подключаются к ДВК.
На СМ-3, СМ-4, СМ-1600, СМ-1420 и Электроника-79 - они UNIBUS. Просто так не подцепить. Хотя про платы переходников QBUS/UNIBUS слышал, и даже видел один раз на "Электронике-60", но там был подцеплен КАМАК, так что там с DMA не ведаю... Хотя прерывания шли :)
А из СМ семейства СМ-4(АРМ чертёжника, но по факту там чаще всего TS-монитор РАФОСа крутился, первый курс), СМ-1300 польская(c RSX-11; на ней узнал, что есть такая штука как DECNet :-). Ну немного СМ-1420(примечательна тем, что изначально было 256 кб памяти, потом расширили до 1 мб, но каким-то странным образом, но RSX работал).
И видел СМ-1700 в двух местах, но поработать на ней не сложилось :-(
Та, которая была в нашем институте на кафедре физики, работала в режиме совместимости с PDP-11, не знаю, под RTEM-11 или сразу RT-11 грузили...
И увсё ... :-( Другой операционки я за те несколько посещений - не углядел я. Терминал работал только один.
Хотя на доступ к ней много кто хотел получить, но они никого не пускали ...
Из UNIBUS "Электроник", живьём видел "Электронику-100/25", стояла этажом выше, я туда иногда заходил. Причём народ говорил, что СM-4, полная копия PDP-11, а в "Электронике-100/25" что-то недопилено, упрощено. Вот что именно...?? Интересно было бы узнать.

Hunta
18.04.2019, 09:56
Если у МY основные потери времени на позиционирование головки и поиск сектора, то у флешки таковых потерь нет.
У меня есть подозрения, что по скорости записи на флешкарту, будут цифры примерно такого же порядка, хотя запись должна быть медленнее чтения в разы.
Основные потери идут на программную обработку ввода-вывода. Ещё хорошо, что процессор стоит 1801ВМ3, он сравнительно шустрый... На 1801ВМ1 было бы сильно медленнее. Вот если бы J-11 поставить, то всё бы сильно ускорилось... :-)
Для проверки возможности работать по прерываниям на Жекиной плате и проверки скорости работы CF был написан такой код:


RESET

CLR R0
MOV #2, R1
MOV #100, R2
;на приход прерывания по любому вектору - останов по адресу вектор прерывания+4
10$: MOV R1, (R0)+
CLR (R0)+
CMP (R1)+, (R1)+
SOB R2, 10$
...
MOV #CS.RD,@R1 ; послать команду, начать выполнение

CLR R2
CLR R3
; цикл в цикле, максимум 65536*65536 повторений
32$:
34$: SOB R2,34$
SOB R3,32$

HALT


Второй раз открываю тотализатор :) Какие значения были в R2 и R3 (читай - сколько раз выполнился пустой цикл) до прихода сигнала от CF, что она готова отдать прочитанный сектор? :)

- - - Добавлено - - -


Насчёт использовать АRM-ядро в FPGA, идея хорошая, можно даже сэмулировать не только HD, но любой диск, даже с DMA, тогда можно будет запускать почти весь софт PDP-11. Я уверен, что если так поступить, то скорость обмена можно поднять в разы.
Насчёт сети - можно, но не стоит... Лучше сделать отдельный сетевой адаптер, иначе сложность разработки возрастёт. И если он ещё сможет прикинуться сетевой платой от DEC, то это вообще круть :-)

Ещё раз. В планах это не стоит. Основная проблема - дешёвые FPGA имеют мало ног, мало ресурсов и мне не попадались с ARM ядром. Если брать те, которые подходят - BGA, многослойка и цена хочет в стратосферу. Следующая плата в планах - КЦГД-реплика, скорее всего с одной переделкой - вывод на VGA (хотя, возможно, по некоторым причинам - HDMI) плюс, возможно, использования ВМ3 - и то не факт.


Насчёт использовать АRM-ядро в FPGA, идея хорошая, можно даже сэмулировать не только HD, но любой диск, даже с DMA, тогда можно будет запускать почти весь софт PDP-11.
Почти весь софт на PDP-11 в настоящее время это, по большей части RT-11 (смысла эмуляции чего то родного нет, проще написать драйвер) и немного RSX-11 (примерно те же мысли). Любые другие систему (включая Unix-о подобное) - сильная экзотика, поэтому, по крайне мере на данном этапе - делают заинтересованные в этом люди, тем более, интерфейс IDE не сильно замороченный.


даже с DMA
Пока я не пощупаю новую плату в деле, ничего не могу сказать по поводу DMA (и даже по поводу работы по прерываниям) - от автора платы, как я уже писал, была инфа, что оно работает с фантастической скоростью на уровне драйвера VM: - если оно так - то для ВМ3 может и прерывания будут лишними

Alex
18.04.2019, 09:58
Для того, чтобы ответить на вопрос - надо даташит контроллера - раз, схему подключения(в том числе и схему FPGA)...
Иначе угадайка чистой воды.
И ещё вопрос, при обмене с флешкартой обмен идёт побайтово(к чему я склоняюсь судя по скорости) или пословно???

Насчёт фантастической скорости, это именно если будет DMA или обмен без проверки готовности(ну почти как в VM, то есть готовность проверяется перед чтением блока )
По идее современная флэшкарта может выдавать данные быстрее, чем скорость передачи данных на QBUS

По поводу процессорного ядра в FPGA, так не обязательно туда АРМ запихивать... Можно что по-легче, типа 8051. Внешние выводы просто не нужны, всё внутри. Наружу только QBUS да интерфейс флэш-карты, плюс земля-питание.

Vslav
18.04.2019, 10:28
Я бы смотрел в сторону SD-карт и делал бы нормальный контроллер для них в ПЛИС.
Вы даже не представляете на что способны современные карты с хорошим контроллером :)
Я недавно тестил SDXC на ноуте - 75МБ/сек на запись и 90МБ/сек на чтение. И все это на 4-х битном интерфейсе, как я понял 4 бита x100МГц x 2 (DDR).
ARM ядро необязательно, у нас есть vm80a - всего 600 ячеек и 100МГц :). Операции с картой оно как-нибудь потянет :)

Hunta
18.04.2019, 10:37
Для того, чтобы ответить на вопрос - надо даташит контроллера - раз, схему подключения(в том числе и схему FPGA)...
Это Жекин контроллер, так что - ответов у меня нет. То, что я получил при реальном прогоне - я уже не помню, главное то, что в R3 был - НЕ НОЛЬ - то есть, внешний цикл выполнился несколько раз, то есть SOB прокрутился больше 65536 раз. И учитывая предполагаемую скорость работы флеш памяти - это НЕСКОЛЬКО странно. Поэтому я не склонен отбрасывать инфу о скорости работы с CF на скорости работы VM


при обмене с флешкартой обмен идёт побайтово(к чему я склоняюсь судя по скорости) или пословно???
Пословно


это именно если будет DMA
Во второй редакции платы DMA по прежнему не используется


По поводу процессорного ядра в FPGA, так не обязательно туда АРМ запихивать... Можно что по-легче, типа 8051...
Если я правильно понял AFZ - имелись ввиду кристаллы FPGA с ИНТЕГРИРОВАННЫМ ARM ядром (типа моей DE10), а не реализация процессора в FPGA

- - - Добавлено - - -


Я бы смотрел в сторону SD-карт и делал бы нормальный контроллер для них в ПЛИС.
Сейчас мы смотрим в сторону - платы-до-какой-то-степени-реплики для замены старых. Когда на таких платах можно будет собрать полноценный аналог ДВК (Квант-а, Э-85) - тогда можно будет думать о чём то ещё.


на что способны современные карты с хорошим контроллером
Его пока нет


ARM ядро необязательно
Я его (по крайне мере пока) в принципе не рассматриваю ни для каких целей. И постараюсь в принципе без него обойтись

- - - Добавлено - - -

Вдогонку по Жекиной плате контроллера IDE.
Есть предположение, что такая большая задержка была специально сделана для решения некоторым проблем (или из-за общей медлительности) ЖД IDE. Но поскольку внутренности прошивки FPGA на ней покрыты тайной... До получения в руки МС1201.2018 и получения скорости работы на ней.. не заморачиваюсь. Если же скорость на ней окажется значительно больше - вообще перестану думать на тему - что не так с Жекиным контроллером

Alex
18.04.2019, 10:52
Хорошо представляю скорость флэш-карт современных :-)
Ну к ядру 80а нужна ещё память и обрамление :-(
Я, как понял из интернета, 8051 в FPGA посадить - ничего особо сложного, ну для тех кто в теме FPGA. Типа есть готовое.
И тактовая там ломовая. Всё(по части флэшкарты и QBUS) можно успеть :-)
Может быть можно, что-то ещё проще :-)

- - - Добавлено - - -

И ещё вопрос, сколько тактов 1801ВМ3 обрабатывает прерывание? Мне так сдаётся, что очень много(Впихнуть в стек два регистра, переключить моду процессора, пользователь/ядро, считать вектор, запустить выполнение...), на DMA издержки меньше.
Большое число счётчика и объясняет сравнительно малую скорость обмена. А то, что обещает скорость поднять, значит автор понял, что можно улучшить :-)
И ему есть куда улучшать :-)

Hunta
18.04.2019, 10:53
Хорошо представляю скорость флэш-карт современных :-)
Ну я как бы тоже в курсе - сколько образ карты на PC читается-пишется - и это тоже в копилку фактов на согласие с разрабом платы о - das ist fantastisch о скорости :)


Всё(по части флэшкарты и QBUS)
Я в своём распиле-допиле PDP-2011 на эту тему думаю, но.. время свободное блин... а также творческие кризисы.. заставляют медленно двигаться прогресс. А так в принципе - посадить SPI интерфейс на плату - оно даже (по проводам) проще. Но нужен, как минимум, хороший аппаратный модуль работы с SD SPI в FPGA - а его (в нужном варианте) нет. Вариант с процессором (снаружи или внутри) не предлагать - стрельбы из пушки по воробьям. У меня уже (для проверки работы этого модуля) родилась идея - вывести его на шину напрямую - а не задействовать в реализация RK11, RL11 и DB - что бы протестировать и определиться с интерфейсом - потому как мне проще написать тестирующий модуль в командах PDP, чем сделать его в FPGA. Посмотрим. Может, кризис пройдёт и у меня опять попрёт - как было перед НГ :)

Alex
18.04.2019, 10:57
Как упрётся в скорость QBUS, так увсё... :-(

- - - Добавлено - - -

Я надеюсь, что попрёт :-)

Hunta
18.04.2019, 10:59
И ещё вопрос, сколько тактов 1801ВМ3 обрабатывает прерывание? Мне так сдаётся, что очень много(Впихнуть в стек два регистра, переключить моду процессора, пользователь/ядро, считать вектор, запустить выполнение...), на DMA издержки меньше.
А не важно. Ибо и там и там при чтении одного сектора прерывания будет (а значит и накладные расходы одинаковы) - просто в PIO нужно будет сектор перегнать в память - а по мои тестам WQ - тут задержек нет - цикл тупо пересылает из буфера без проверок готовности очередного слова (в R1 счётчик слов из запроса):


MOV #256.,R3
50$: TST R1
BEQ 60$
MOV @#WQDBUF,(R2)+
DEC R1
BR 70$
60$: TST @#WQDBUF
70$: SOB R3,50$
TST R1
BNE 40$
CLC
RETURN


- - - Добавлено - - -


Большое число счётчика и объясняет сравнительно малую скорость обмена. А то, что обещает скорость поднять, значит автор понял, что можно улучшить :-)
И ему есть куда улучшать :-)
Наоборот - низкая скорость обмена и объясняет большое значение счётчика
И если что - авторы платы WQ и МС 1201.2018 - разные люди :)

Alex
18.04.2019, 11:03
Правильнее было бы логику непосредственно контроллера в FPGA запихнуть.
Но, наличие ядра, например, 8051 в FPGA сильно облегчит программирование самой FPGA. То есть программировать надо будет больше 8051, чем FPGA, будет некая экономия времени.

Hunta
18.04.2019, 11:08
Как упрётся в скорость QBUS, так увсё... :-(
Ну таки да. И если использовать рОдные процы или платы - ничего с этим не сделать. Выход только один - проц в FPGA плюс свой вариант шины для новоделов (PMI 2.0 где M - это Module, а не Memory :) и переходник в QBUS - что бы старое можно было цеплять


Я надеюсь, что попрёт :-)
Я знаю, что попрёт, нужно только с мёртвой точки сдвинуться - то есть что бы хоть что то в новом коде заработало :) Но пока как то никак. Я уже с горя цвета настраива... Э.. сигналы и переменные переименовываю, что бы текст (для меня) более понятным сделать :)

- - - Добавлено - - -


Правильнее было бы логику непосредственно контроллера в FPGA запихнуть
Пока в обеих вариантах FPGA больше как посредник между QBUS и IDE. Но логика работы IDE достаточно нормальная, так что такой подход работает. Хочется DMA - и его можно реализовать двояко - или использовать DMA от IDE или запихать посредника DMA в FPGA


8051 в FPGA сильно облегчит программирование самой FPGA
И мы получим ещё один модуль на ещё одном языке программирования, который надо будет написать, отладить.. Нафик. Тогда уж лучше использовать подход, аналогичный микропрограммирования - понять, какие команды нужны, реализовать (микро)процессор только под них и его запрограммировать

Alex
18.04.2019, 11:19
А не важно. Ибо и там и там при чтении одного сектора прерывания будет (а значит и накладные расходы одинаковы) - просто в PIO нужно будет сектор перегнать в память - а по мои тестам WQ - тут задержек нет - цикл тупо пересылает из буфера без проверок готовности очередного слова (в R1 счётчик слов из запроса):


MOV #256.,R3
50$: TST R1
BEQ 60$
MOV @#WQDBUF,(R2)+
DEC R1
BR 70$
60$: TST @#WQDBUF
70$: SOB R3,50$
TST R1
BNE 40$
CLC
RETURN


- - - Добавлено - - -


Наоборот - низкая скорость обмена и объясняет большое значение счётчика
И если что - авторы платы WQ и МС 1201.2018 - разные люди :)
Нескромный вопрос... Эти люди меж собой общаются? ;-)

- - - Добавлено - - -

По коду, а если вместо @#WQDBUF использовать регистр... Может некое ускорение работы произойти.

- - - Добавлено - - -

С логикой IDE всё сравнительно просто, если провести ещё DMA. то будет конфетка...
А вот с путём в FPGA - согласен, других вариантов, для реализации(кроме симуляции программной) не вижу...
Ещё 10-20 лет и найти что-то в рабочем виде будет ну ни как :-(((((

Hunta
18.04.2019, 11:24
Нескромный вопрос... Эти люди меж собой общаются? ;-)
Теоретически - возможно всё, а практически - я ОЧЕНЬ сильно сомневаюсь. Такое впечатление, что Жека тщательно шифрует разработчиков (железячника и софтописателя), что бы никто не повторил (в лучшем варианте) WQ, а может им это уже не интересно - по заказу написали прошивку и драйвер, отдали заказчикам-правообладателя с подписанием - не делать-не распространять, деньги получили - и всё. Ходила какая то ещё (мутная) история (ЕМНИП), что типа все исходники утеряны.. В общем - WQ покрыт мраком


По коду, а если вместо @#WQDBUF использовать регистр... Может некое ускорение работы произойти.
Ну, какое то ускорение точно должно произойти, но приведённый кусок - это восстановленный текст официально поставлявшегося драйвера. Под RT я драйвер не успел переделать, а в RSX у меня (практически наверняка) адрес регистра буфера сидит в регистре. Пока тяжело до текста добраться - вечером скажу наверняка. Только (основная) проблема всё равно в другом :) В моём коде проверки (прерывания и скорости) - я только дожидаюсь ГОТОВНОСТИ CF к передачи сектора, но сам сектор НЕ СЧИТЫВАЕТСЯ. Так что счётчик - это сколько мы ждали ГОТОВНОСТИ от устройства :) А не скорости чтения :)

Alex
18.04.2019, 11:30
Хм, осталось-то тех, кто может чуть-чуть, но всё одно люди шифруются, хранят секреты.
Оно конечно понятно, если есть возможность заработать, но чего-то я не думаю, что тут большие деньги поднять можно.
И не думаю, что кто-то бросится делать копию для коммерции ;-)

Это-то и понятно, что дал команду на чтение - и ждёшь у моря погоды.... :-(

Hunta
18.04.2019, 11:44
Хм, осталось-то тех, кто может чуть-чуть, но всё одно люди шифруются, хранят секреты.
Поскольку я - не единственный владелец всего этого дела - однозначно сказать не могу, но вроде как пока - держать всё в секрете - планов нет.


Оно конечно понятно, если есть возможность заработать, но чего-то я не думаю, что тут большие деньги поднять можно.
Не я точно буду делать сами платы, но насколько я в курсе - стоимость плат для заказывающих будет близка к себестоимости компонент. Хотя я советую добавить ещё немного - стоимость времени на сборку - она как бы тоже - не нулевая :)


Это-то и понятно, что дал команду на чтение
В общем, когда я увидел эти разнообразные числа - я несколько встал в тупик - слишком уж разнилась скорость работы карты на Квант-е и на PC. Пробовал даже пытаться задавать режим работы (ака PIO1, PIO2 и т.п.) - но как то видел на выходе то же самое. То ли неправильно задавал, то ли это особенность этого контроллера...

Alex
18.04.2019, 13:13
Всё чисто для тех, кто в теме :-)
Ну WQ, как я понимаю, шустрее...
Видимо действительно, что-то не так с контроллером или с его подключением.
Возможно есть какая-то тонкость.

Hunta
18.04.2019, 13:26
Всё чисто для тех, кто в теме :-)
Всё чисто для тех, кто захочет использовать или повторить :)


Ну WQ, как я понимаю, шустрее
Тэкс, уточнение. Контроллер от Жеки - устройство WQ, контроллер на плате МС 1201.2018 носит имя ZF :)
По тому, что мне известно на сейчас, ZF шустрее :)


Видимо действительно, что-то не так с контроллером или с его подключением.
Возможно есть какая-то тонкость.
С авторами связаться как то не получилось, текста прошивки FPGA для него у меня нет - так что.. А хрен его знать..

Alex
18.04.2019, 13:42
Если там интерфейс IDE, то может быть написать утилитку, которая читать будет командой на чтение множества секторов...
И посмотреть, что будет??? Будет ли ускорение процесса?
Обмен же идёт посекторно... Так??

Hunta
18.04.2019, 13:55
Если там интерфейс IDE, то может быть написать утилитку, которая читать будет командой на чтение множества секторов...
И посмотреть, что будет??? Будет ли ускорение процесса?
Обмен же идёт посекторно... Так??
Когда платы доберутся до меня (он, бл.... застряли на выходе из Турции) - тогда посмотрим, чего и как. Щас гадать смысла нет, а WQ у меня сейчас не рабочие - сильно подозреваю не пропай, но аккуратно отпаять FPGA, почистить дорожки-контакты и заново запаять - струмента нет (отпаять) и руки не доходят :)

Alex
18.04.2019, 15:10
За месяц-то хоть дойдут платы?

Hunta
18.04.2019, 15:26
За месяц-то хоть дойдут платы?
Ну, когда он мне прошлым летом отсылал первую версию платы - она дошла примерно за две недели. Но. Основное путешествие было по России - на территорию России из Турции она пришло за три дня. Эта идёт уже неделю и всё ещё кажет, что на территории Турции..

AFZ
18.04.2019, 15:48
ARM ядро необязательно, у нас есть vm80a - всего 600 ячеек и 100МГцА FATFS под него соберётся без глубокой адаптации? Не сочинять же ее заново...

Vslav
18.04.2019, 21:18
А FATFS под него соберётся без глубокой адаптации? Не сочинять же ее заново...
Это которая ченятская? А почему нет - оно изначально для AVR было заточено.

Alex
19.04.2019, 09:21
По бумагам скорость IDE в:
PIO0 - 3,33 мБайт/с, но тактовая частота 1,67 Мгц, длительность цикла 600 нс.
PIO1 - 5,22 мБайт/с, но тактовая частота 2,61 Мгц, длительность цикла 383 нс.
PIO2 - 8,33 мБайт/с, но тактовая частота 4,17 Мгц, длительность цикла 240 нс.
PIO3 - 11,11 мБайт/с, но тактовая частота 5,56 Мгц, длительность цикла 180 нс.
PIO4 - 16,67 мБайт/с, но тактовая частота 8,33 Мгц, длительность цикла 120 нс.
однословный(8 бит ???) DMA0 - 2,08 мБайт/с, но тактовая частота 1,04 Мгц, длительность цикла 960 нс

многословный(16 бит ???) DMA0 - 4,17 мБайт/с, но тактовая частота 2,08 Мгц, длительность цикла 480 нс

При условии, что один цикл - 1 такт.
Однословные режимы ATA были удалены из спецификаций ATA3 и более поздних.

То есть скорее всего обмен может идти в PIO0... DMA скорее всего не светит :-(
и есть серьёзные подозрения, что даже тут могут быть ломовые задержки :-(

- - - Добавлено - - -

Для того, чтобы сильно не грузить мозги контроллера, можно записать файлы особым образом на карточку.
Так, чтобы они были одним куском и начиная с известного сектора. Тогда и поддержка FAT не нужна :-)
Достаточно контроллеру знать, например, что с 100 сектора начинается первый том устройства, с 15000 второй том и так далее...
При этом карточка остаётся для PC родной :-)
На PC будет виден файл 1.DSK, который начинается с 100 сектора , 2.DSK с 15000 сектора и так далее...
Их можно будет прочитать и скопировать, даже поправить :-)
С таким делом справится самый простейший контроллер, в том числе и 80А :-)
Можно ещё в начале пространства файлик сделать, на строго определённом месте, где и будет описана система файлов-устройств, по типу MBR, с какого сектора и по какой какой том.
Нам не обязательно ограничиваться одним сектором, то есть туда можно напихать таблицу на кучу томов на всё место карточки.

Hunta
19.04.2019, 09:57
Для того, чтобы сильно не грузить мозги контроллера, можно записать файлы особым образом на карточку.
Так, чтобы они были одним куском и начиная с известного сектора.
Какая прога в этом поможет?

- - - Добавлено - - -


По бумагам скорость IDE в:
И две не бумажные реализации, причём про одну практически нет инфы

- - - Добавлено - - -

Вдогонку - и контроллер WQ даже до начальных цифр не догоняет...

Alex
19.04.2019, 11:05
Любая, которая файл заданного размера на диске может создать.
Можно готовый(е) том(а) для системы с файлами для PDP-11 использовать.
Потом форматируется флэшкарта... И файлики копируются или создаются...
Потом, например, WinHex(там возможностей много), смотрится номера стартовых секторов.
Если носитель пустой, то системой отводится место в начале носителя непрерывным куском.
На следующий файл будет отведено место в начале свободной области. И так далее...
В общем надо просто облегчить жизнь мозгам :-)
Как вариант, таблицу параметров может держать и драйвер со стороны PDP-11. С контроллера только тупо прочти сектор да запиши сектор :-)
Были драйвера DW которые на одном винчестере несколько томов держали и даже несколько операционок позволяли запускать, как по номеру поверхности, так по номеру трека...
Тут достаточно номера стартового сектора да размера тома :)

AlexG
19.04.2019, 11:17
увы. это не сильно детерминированный процесс. в какой-то момент времени наступим на грабли: сектора по другому лягут- а "снаружи" будет как раньше.
для гарантированного результата крайне рекомендуется (при таком "дизайне") иметь утилиту (под виндами), которая будет создавать нужный образ на флешке из набора файлов для пдп.

Hunta
19.04.2019, 11:31
Не, слишком замороченно, неудобно в использовании и не дай бог файл грохнешь-создашь...
А для загрузки по номеру устройства (ZF0 ZF1 и т.д.) это ещё и в ПЗУ надо писать номера секторов... То есть, учитывая доступность (будущую) текстов ПЗУ, если кто захочет - флаг в руки, я точно не буду делать

Пока склоняюсь к варианту - разбиение CF на куски определённого размера, схему которого знает и ПЗУ. Возможно, несколько таких схем (ZF0/0 ZF0/1).
Пока окончательно не отбросил вариант создания аналога таблицы разделов - в первом или последнем секторе карты. Плюс программа, которая умеет собирать-разбирать образ или работать непосредственно с флешкой (придётся только разобраться, как пишется код для работы с физ устройством). Вариант MBR - точно не нравится.

По любому, заморачиваться ну работа с файловой структурой от PC не буду - драйвер под PDP будет слишком тяжеловесный, а специализированный проц под это дела на полуплате - насколько я понимаю - не в этой редакции полуплаты

- - - Добавлено - - -


крайне рекомендуется (при таком "дизайне") иметь утилиту (под виндами), которая будет создавать нужный образ на флешке из набора файлов для пдп
Я тоже склоняюсь к этому варианту, просто пока не решил - как будет делаться схема разбиения. Вариант с фиксированной схемой лучше в том плане, что драйвера пишутся проще. Вариант с сохранением в аналоге таблицы разделов - гибче - но ценой усложнения драйвера.

То, что крутится в голове сейчас - 4 фиксированных схемы:
0 - вся карты - куски по 32 мб (но с ходу RT увидит только первые 8 или 64)
1 - вся карта - куски по 256 мб (под RSX)
2 - 64 куска по 32 мб, остаток кусками по 256 мб (на карте как RT, так и RSX)
3 - вся карта целиком (под RSX)

AlexG
19.04.2019, 11:41
для проверки железа / идей 0 вариант
в идеале мбр(таблицу - разные куски , в разном порядке итд)

Hunta
19.04.2019, 11:45
для проверки железа / идей 0 вариант
в идеале мбр(таблицу - разные куски , в разном порядке итд)
В силу того, что под WQ был уже практически написан драйвер под RSX - первым будет писаться он и под варианты 3 и 1. Таблица MBR - под очень большим вопросом.

И ещё раз. Исходники ПЗУ и драйвером будут доступны - хотящие странного могут реализовать свои самые странные хотелки. Сами.

Alex
19.04.2019, 13:38
FAT на флэшкарте нужен чисто для того, чтобы на PC без великой головной боли можно было обменятся данными со стороны РС.
Единственный минус FAT, это то, что она отъест какое-то место карты, но с современными размерами я в этом большой беды не вижу :-)
Для того, чтобы всякие оптимизаторы не лезли своими грязными лапами - можно карту забить полностью файлами, так чтобы свободного места не осталось и размер кластера сделать максимально возможным, чтобы FAT менее места занимала.
Данные об фвйлах-томах можно держать в первом файле, коий служит чисто для этой структуры.. И ни в каком ПЗУ держать структуру не надо. Достаточно только адрес первого сектора структуры и всё. Формат данных-простейший - пара четырёхбайтовых целых чисел(указатель на первый и последний сектора тома, либо на первый плюс длина в блоках), как пошли нули, значит томов более нет ... Увсё :-)
В ПЗУ сделать только выбор номеров тома на устройстве с какого грузить. Одного сектора хватит на 64 тома :-)
Или, если с местом в ПЗУ напряг, загрузить более одного сектора и передать управление... Там хоть менюшку пиши с выбором и информацией и томов сколько хош ;-)

Hunta
19.04.2019, 16:13
С фиксированным разбиением CF по 32 мб - нет проблем с написанием драйвера (в том числе блока начального загрузчика - в RT он сидит в драйвере и копируется в нулевой сектор диск, когда делаешь диск загружаемым аппаратно) в RT

С отдачей всей CF под один диск - нет проблем написания драйвера (и начального загрузчика - в RSX он сидит в SAV.TSK) в RSX

Всё остальное создаёт определённые проблемы - ибо структуру нефиксированного разбиения должен прочитать ПЗУ (меньшая проблема) и её нужно передать в драйвера RT и RSX (большая проблема). Это навскидку - пока не доберусь до написания кода.

В целом - у меня пока сильного интереса решать проблемы данных подходов - нет, ибо свободного времени мало, а своих интересов - много. То, что точно будет реализовано - 32 мб-тные куски CF - диски для RT и вся карта CF - для RSX, потому что это проще всего и может быть реализовано максимально быстро. Что будет реализовано в последующих версиях драйверов - покажет время.

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

- - - Добавлено - - -

А, да, забыл. Ещё будет написана прога вытаскивания кусков из образа (если повезёт - непосредственно с CF) и заливку их в образ (если повезёт - непосредственно в CF)

Hunta
21.04.2019, 17:31
ААААААААА!!!!!! Выпущено таможней! Дня через три четыре будет у меня :):):)

Alex
22.04.2019, 08:48
Как данные передать драйверу? Считало ПЗУ данные, или "предпервичный загрузчик" да и передало первичному загрузчику адрес стартового сектора тома.
Я вот не помню, как именно :-( , но там есть какое-то соглашение о передаче данных при начальной загрузке первичному загрузчику. Я этот момент подробно не разбирал, так единственные драйвера физических устройств, которые переписывал DW от RT11 V5.2, для ДВК, убрал заморочки с получением адреса и вектора, и поменял таблицу геометрии винчестеров, да МY, там возни было более, исходника не было, дизассемблировал. Делалось это для того, чтобы XM-монитор запустить и посмотреть. А с МY ковырялся ещё для того, чтобы читать дискеты с PC. Увы, не допилил... :-( Написал логический драйвер IB, который должен был перенаправлять запрос на ввод/выод на МY. Даже добился выдачи корневого каталога по команде DIR IB: :-)
Громоздкий получился, по этому вынес всё по работе с FAT12 в отдельный драйвер...
Правда дискета с PC должна была быть на 800 кб на FAT12. Ну плюс отдельные утилитки были, опять же для чтения каталогов дискет PC. Они выдавали геометрию размер и корневой каталог дискеты PС, которую мог прочитать дисковод на MY. Достаточно было прочитать первый трек. Точнее первые 8 секторов МY. Возможно, что утилитки и работали бы на других контроллерах поддерживающих двойную плотность, но не проверял...
На том мои успехи кончились :-(
Ввод-вывод с файлами я не сделал :-(
У других было проще, работали с оболочкой по типа нортона, читали и писали программой.

Hunta
22.04.2019, 09:04
но там есть какое-то соглашение о передаче данных при начальной загрузке первичному загрузчику
Минимальный вариант - адрес РКС и всё, теоретически (понятно, что не для всех устройств) по регистрам можно раскрутить остальное. Ещё зависит от операционки, скажем в RSX много чего зашивается в нулевой сектор при его записи. Но в последних версиях RSX по крайне мере которые плюс - стал работать и с дисками с разделами от PC - тут надо смотреть - как оно передаёт. С учётом того, что во времена PDP-11 от DEC такой вопрос особо не стоял - не уверен, что DEC выработало какой то стандарт.
Драйвер WQ для RT, скажем, принимает от начального загрузчика РКС, primary или slave и номер раздела (ака номер устройства) плюс непонятная константа 100200(8) в R5, смысл которой для меня пока не понятен

Alex
22.04.2019, 10:09
По адресу в R5 нет никакой таблицы???

Hunta
22.04.2019, 10:13
Э... вроде разобрался. Загрузчик MT и DM используют это значения для проверки флагов ошибки или готовности устройства. Остальные драйвера тупо или не тупо игнорируют

Alex
23.04.2019, 08:35
По поводу шины от РС на PDP-11, наткнулся на:
https://rapaz.ru/menu-produktsiya/q-bus-mpi/qbus-pci/12-produktsiya/kontrollery/q-bus
https://rapaz.ru/images/Product/mpi_pci_small.png
Хотя конструкция немного не та:
во-первых управляется всё со стороны РС(то есть использовать можно, но нужно написать нехилую программу со стороны РС, есть режимы монитора для отладки устройств, пассивного и активного устройства для работы)...
во-вторых шина PCI, а не ISA... может не хватить быстродействия PDP-11
в-третьих, проблемы пересылки по DMA обойдены тем, что прицепили память общего доступа.
Но сама схема , судя по картинке проста:
FPGA в виде моста, драйверы шины и полмегабайта памяти ОЗУ да флэшпамять для VenID/DevID для PnP на PCI.
То есть мост сделать, для подключения не так уж сложно, главное только хорошо продумать алгоритм работы :-)

Hunta
23.04.2019, 10:03
Нее, нафик такая екзотИк

Hunta
26.04.2019, 23:41
Ню... Платы добрались до меня :):)

Во первых, как я тайно и подозревал, скорость всё таки порядка платы WQ. Чуть побыстрее - COP/DEV ZF: NL: выполняется 239 секунд, аналогичная на плате WQ - 300 cекунд. Ну.. Бум разбираться - 137 кб/с как то... не быстро :)

Hunta
27.04.2019, 10:09
Немного демонстрации :) Пока плата не в корзине Квант-а - что то я протупил и забыл спросить назначение переключателей на плате. Она сделана с возможностью как работать в корзине ДВК-Квант-а, так и самостоятельно, так что просто так не сунешь.



==================== Log Started at: 27/04/2019 11:03:29 =====================

@ 173000
@17761000/177400
17761002/177400
17761004/177400
17761006/177400
17761010/177400
17761012/177400
17761014/177520
17761016/177400
17761020/000000
17761022/177401
17761024/177401
17761026/177401
17761030/177400
17761032/177400
17761034/177640
17761036/177520
17761040/
BUS ERROR
@
@B
$ZF0
SL V08.00 [SW] Сторожевых С.В. 1988

RT-11FB (Y) V05.07

.SET USR SWAP

.SET TT FORM

.SET EDIT K52

.SHO ALL

RT-11FB (Y) V05.07
Booted from ZF0:RT11FB

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 K52
FORTRAN is set FORTRA
KMON nesting depth is 3

CLI is set DCL, CCL, UCL, NO UCF

PDP 11/34 Processor
3840KB of memory
Extended Instruction Set (EIS)
Memory Management Unit
50 Hertz System Clock


Device Status CSR Vector(s)
------ ------ --- ---------
HD Not installed 177720 000
NL Installed 000000 000
LD Installed 000000 000
SL Installed 000000 000
EM Installed 000000 010
LP Not installed 177514 200
KZ Not installed 172140 170
MX Not installed 177130 000
MY Not installed 172140 170
DW Not installed 174000 300
HX Installed 177560 000
DX Not installed 177170 264
DY Not installed 177170 264
PC Not installed 177550 070 074
VM Installed 177572 250
RK Not installed 177400 220
MT Not installed 172520 224
ZF Resident 161014 350

TT (Resident)
ZF (Resident)
ZF0 = DK , SY
NL
LD
SL
EM
HX
VM
16 free slots

Job Name Console Level State Low High Impure
--- ---- ------- ----- ----- --- ---- ------
0 RESORC 0 0 Run 000000 133672 135602

No multi-terminal support

Address Module Words
------- ------ -----
160000 IOPAGE 4096.
157142 ZF 207.
133736 RMON 4930.
001000 ..BG.. 23279.

No LD units mounted



.
=================== Log Suspended at: 27/04/2019 11:06:42 ====================

Hunta
30.04.2019, 06:50
Ну.... До какой то степени дело сдвинулось c... точки остановна. Были вычислены причины некоторых "особенностей" работы платы (оказались внешнее) и устранены.. Пара "особенностей" осталась - причины ищутся. RT-11 успешно грузится-читает-пишет. Но она в текущей версии драйвера работает без прерываний CF. При попытка работать с CF в RSX (с прерываниями) - вылет в "зелёный экран" (не знаю - прерывания ли - причина). На праздниках буду лазать под отладчиком.

Внешний вид отладочного стенда :) :
http://www.KpXX.Ru/Днепр/МС1201/V2.0/Стенд.jpg
Плата не видна, она с дальнего края :) Так же в корзине КНГМД и КЦГД :)

- - - Добавлено - - -

В догонку. В ближайшее время заменю фоты плат :)

Hunta
01.05.2019, 13:09
Отлаживать на Квант-е - это, конечно, интересно, но не системные вещи - типа драйверов и прошивок CPLD/FPGA :)

Делаю младшего брата стенда :) Под это дело купил пятивольтовый Mean Well. Всё таки крутые они блоки питания делают, особенно, когда не киловатты мощности нужны :)

Соберу - сфоткаю :)

Hunta
01.05.2019, 20:36
Стенд Джуниор
http://www.KpXX.Ru/Днепр/МС1201/V2.0/Младший стенд.jpg

falanger
02.05.2019, 01:55
Когда платы отладите - будет ли продажа желающим современных ДВК?
И какими возможностями будет обладать чудо-полуплатка? А то у меня если честно древние 1201.03 и особенно вечно глючные по памяти 1201.04 доверия как "надежные рабочие лошадки" не вызывают.
И кроме 1201.2018 что еще в планах? Современные интерфейсы COM-LPT-USB? Сеть Ethernet 10/100? Звук нормальный со своим 1801ВМ2? Современная версия КЦГД? Я честно говоря давно хотел "современную ДВК" могущую тягаться с pdp-11/83 в возможностях коммуникаций и объеме памяти.
Кстати CF и возможность работать даже с 32 мб разделами в числе 16-64 штуки не говоря уже о большем - великое дело.

Hunta
02.05.2019, 11:09
Когда платы отладите - будет ли продажа желающим современных ДВК?
Насколько я знаю, было заказано 5 печатных плат, две у меня, одну, наверно, автор оставит себе, две, я так думаю, выставит на продажу. Насчёт заказа ещё - это уже когда доберёмся до продажи :)


И какими возможностями будет обладать чудо-полуплатка?
Сейчас она почти аналогична .03-.04 - основное отличие - нет ИРПР (параллельный порт). Но есть порт под CF.


И кроме 1201.2018 что еще в планах?
В планах КГЦД. Пока не понятно, будет ли это клон по функциональности или она как то будет расширена - рановато об это думать. Ну и кроме того, я начал возиться с третьей версией - МС1201.2016 - первая версия, МС1201.2018 - вторая версия. Это тоже в самом начале - по сути - пока только хотелка :) Пусть и продвинулся с нулевой точки :)


Современные интерфейсы COM-LPT-USB? Сеть Ethernet 10/100? Звук нормальный со своим 1801ВМ2? Современная версия КЦГД?
Пока движение идёт по пути - заменить платы ДВК-4/Квант-4С на сделанную на более современной базе схемотехнику, в частности - упрятывание мелкологики в CPLD/FPGA. Плата проца + аналог КЖД можно сказать - есть, ещё остался КЦГД, с контроллером флопов пока никаких мыслей нет.


"современную ДВК" могущую тягаться с pdp-11/83 в возможностях коммуникаций и объеме памяти.
Ну объём памяти и на первой и на второй редакциях - максимальный (почти) для PDP-11

Hunta
03.05.2019, 12:54
От это я выдал только что... Воткнул ВМ3 с поворотом на 180 градусов.... :)

AFZ
03.05.2019, 16:15
И как? Электроплитка? Или просто тишина? И потом: заработал, или труп?

MM
03.05.2019, 16:23
Если ВМ3 нерабочий, из него можно удалить кристалл, и использовать как колодку для навеса 1806ВМ3.

Hunta
03.05.2019, 18:13
Ну, воткнутый наоборот - работать отказался, даже в пульт не выходил :) Долго не держал под напряжением, рефлекс (выдернул вилку) сработал чуть раньше осознания косяка :) Даже тёплым не был.

Воткнутый обратно как мамка велела - как ни странно - заработал :)

В общем, после починки советского ЖД от залипания головок путём вскрывания гермоблока и прокручивания блинов руками, этот случай только добавляет уверенность в мнении - советское - значит лучшее :)


для навеса 1806ВМ3
У меня их пока нет. Да и стоимость была вроде космической...

- - - Добавлено - - -

Запустил стресс-тест - генерацию RT-11 - двух мониторов. Лог позже выложу

- - - Добавлено - - -

Итак, комп, почти идентичный ДВК-4 (Квант-4) в настоящее время можно уместить (включая блок питания) в коробочке размерами 220x150x50 мм.

Из отсутствующего - плата видео и флоппи контроллеров, из плюсов - 4 мб памяти и флешка c несколько большими по сравнению с DW/MW ёмкостью и скоростью :)

- - - Добавлено - - -

Блин. Первый блин. Гы гы гы - почти Бонд, Джеймс Бонд :) Первый блинк комом - ошибка русских букв в тексте драйвера ZF...
Поправлю и запущу заново

ra3qdp
03.05.2019, 18:26
а RSX когда по плану ?

Hunta
03.05.2019, 18:34
а RSX когда по плану ?
В ближайшее время. Как только прогоню до конца стресс тест

- - - Добавлено - - -

На самом деле, RSX я планировал заняться первой. Но были некоторые нюансы с прошивкой платы. Собственно, драйвер под RT был собран ранее, но он только под SJ(SB) и FB мониторы. Под XM пока нет. И доработкой под RT займусь позже. RSX на первом месте.

- - - Добавлено - - -

Ну и не смотря на то, что ZF работает быстрее чем MY и даже DW - скорость (1x) не сильно нравится. Я всё таки попробую разобраться в программировании контроллера и увеличить скорость.

Hunta
03.05.2019, 21:07
Лог стресс-теста
http://www.KpXX.Ru/Днепр/МС1201/V2.0/StressTest.txt

AFZ
03.05.2019, 22:49
В общем, после починки советского ЖД от залипания головок путём вскрывания гермоблока и прокручивания блинов руками, этот случай только добавляет уверенность в мнении - советское - значит лучшее Не помню, как у советских, но у многих винчестеров движок привода блинов сидит под платой и имеет наружный ротор. Крутнешь за него, и все. Где-то в дальней кладовке у меня валяется амстрадовский Mini Scribe, 20М с интерфейсом ST506. У него регулярно приклеиваются головы - месяц-другой поваляется, и готово. Так я его запускал отверткой, просовывая ее где-то сбоку. Прямо на ходу: включил - не крутится. Подтолкнул ротор отверткой, и зажужжал.

Hunta
05.05.2019, 21:31
Вынес всё, относящееся к полуплате и дальнейшим разработкам на отдельный подсайт. Всё таки это уже не совсем Квант-4С :) Поправил ссылки в этой теме. Потом, если не забуду, поправлю в других своих темах. Будут ещё где нерабочие - пишите, лучше в личку, ссылку на страницу с битой ссылкой (о как) - поправлю.

Для русскоговорящих http://www.KpXX.Ru/Днепр/МС1201

Первый вариант разбиения карты на разделы, который буду отрабатывать в ПЗУ и драйверах - 32 раздела по 32 мб (итого 1 гиг) - под RT-11, далее кусками по 1 Гб - под RSX. RSX эти 32 раздела будет видеть одним куском, но FLX умеет работать с таким разбиением, так что из под RSX можно будет работать с ними.

В разделе софта лежит прога (CFMaint) - заготовка для будущей работы с образами дисков и CF. Пока - только заготовка - кроме как показывать интерфейс и реагировать на некоторые действия с ним - ничего пока больше не умеет :) Инфа по ней:
- требуется .NET версии 4.5
- реагирует на изменения размера окна
- в поля ввода имя файла можно ввести руками, а можно сбросить драгНдропом
- введённое она запомнит при выходе и восстановит при следующем запуске :)

ra3qdp
10.05.2019, 18:31
Но были некоторые нюансы с прошивкой платы.
а по-подробней ?

Hunta
10.05.2019, 21:05
а по-подробней ?
Поподробней не будет, плата ещё официально не выпущена ;)

Практически закончил работу над первой предверсией программы работы с образом CF. Ещё много чего из задуманного не реализовано, но на определённом круге сценариев программу уже можно использовать. Некоторое количество времени погоняю сам в реальной работе, потом выложу. Дальнейшее доведение программы до ума - по мере того, как будет нужно отдохнуть от разборок с драйверами :)

Hunta
11.05.2019, 01:27
Программу выложил.

Принцип работы.

Принцип деления пока один - в начале образа идёт 32 раздела по 32 Мб под RT-11, которые в принципе могут рассматриваться и как нулевой раздел под RSX, затем разделы по 1 Гб под RSX. В зависимости от размера карты может быть и меньше разделов под RT (карта 1 Гб или меньше) с отсутствующими разделами RSX (кроме нулевого). Размер последнего раздела (как под RT - если карта меньше 1 Гб, так и под RSX) может быть меньше 32 Мб или 1 Гб. Мб и Гб - правильные - то есть основанные на 1024. Есть кнопки создания, переименования и удаления конфигурации, а так же кнопки, позволяющие менять конфигурации в списке местами. Есть кнопка сохранения списка конфигураций без выхода и кнопка выхода без сохранения списка конфигураций

Файл образа CF и связанные с разделами на нём файлы разделов в терминах программы - конфигурация. Совсем не обязательно связывать все разделы в образе карты с файлами - всё зависит от потребностей. Конфигураций может быть несколько - даже связанных с одним и тем же файлом образа. Конфигурация может быть не связанной с образом и/или с файлами разделов. При выходе из программы она сохраняет список текущих конфигураций. При первом запуске автоматически создаст пустую конфигурацию. Положение в списке раздела определит - в какое место будет загружено содержимое файла или из какого место информация будет сохранена в файл, скажет, первый в списке 32-ух Мб-ных разделов файл попадёт в первые 32 Мб карты, второй - во вторые и т.д.

Заполнять список файлов разделов можно как руками (осторожно с относительными путями - программа никак не контролирует их), так и сбрасывая ДрагЭндДропом файлы в ячейки файлов разделов. Можно выделить несколько файлов - они будет последовательно распределяться по ячейкам пока не будут исчерпаны или файлы или ячейки. Если сброс был на разделы 32 Гб - лишние файлы не будут заполнять ячейки 1 Гб и наоборот.

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

Из нереализованного

- Нет возможности выборочной выгрузки/загрузки файлов из конфигурации. Обойти можно - удалив из конфигурации всё, кроме нужных файлов разделов, а для того, что бы не потерять конфигурацию - выйти после этого без сохранения. Будет реализовано.

- Нет кнопок перестановки описаний разделов местами. Ну, пока простого способа обхода этого нет. Будет реализовано.

- Нет кнопки копирования конфигурации. Пока простого способа сделать этого нет (непростой - отредактировать файл конфигураций руками). Будет реализовано.

- Нет кнопки Browse для выбора файлов. Способ обхода - драгЭндДроп. В планах реализации нет.

- Есть заклада Сообщения, на которой можно увидеть статусные и отладочные сообщения. Отладочные со временем уберу, а статусные смотреть так немного неудобно. Будет изменено.

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

- В голове крутятся ещё мысли по поводу того, что бы ещё добавить в программу. Что то будет реализовано :)

- Серая унылая тема оформления. В планах менять нет :)

- САМАЯ ГЛАВНАЯ НЕРЕАЛИЗОВАННОСТЬ - работа напрямую с картой CF с запоминанием её по серийному номеру. Постараюсь реализовать, так как будет СИЛЬНО удобней, но... не знаю, получится ли - знаний не хватает. Постараюсь.

- Со временем напишу документацию. Может быть. Пока вот так, как щас.

- В программе точно есть ещё необнаруженные ошибки и код, не обрабатывающий ожидаемые ошибки (типа ошибок в/в). Будет фикситься.

- При выгрузке и загрузке (особенно если файлов не один) программа как бы замерзает. При этом никаких сигналов типа - не мешать - думаю - не подаёт. Не обойти. Будет исправлено.

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

С заявками типа - а вот если в программу добавить/в программе поменять - будут поступать по простому - если какая то идея понравится - могу и реализовать, если нет - дискуссий, почему нет - не будет.

Особо хотящим - ждите исходники и пилите сами :)

Hunta
11.05.2019, 12:39
Добавил забытое ночью :)

- - - Добавлено - - -

Выложил обновление. Немного улучшена юзабилити (странно, что с самого начала в голову идея не пришла) и исправлена... хм.. ошибка(?), с которой не понятно как, но программа работала :) Или это теперь ошибка? Но программа продолжает работать :)

- - - Добавлено - - -

Изменил максимальное количество разделов для RT на максимально возможное - 64 (или 100(8)). Драйвер поддерживает, так что теперь не будет проблем с образом карты, где использовался ZF77: :)

Теперь пересечение разделов RT и RSX - (RT ZF00 - ZF37) <-> (RSX ZF0) и (RT ZF40 - ZF77) <-> (RSX ZF1)

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

В силу несложности реализации следующим некосметическим изменением скорее всего будет возможность выгрузки группы разделов.

Hunta
13.05.2019, 09:31
С одной стороны слегка продвинулся понимания работы с прерываниями в варианте реализации на полуплате (мысли в правильном направлении пришли уже когда засыпал, с утра только частично проверил), вечером, в зависимости от свободного времени продолжу...

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

Hunta
13.05.2019, 21:13
Уф.... сдвинулся с мёртвой точки. Посадил тупейшую ошибку (аж трижды!!) типа MOV 340,@#177776 (в коде немножко не так выглядит, но смысл тот же)..
Завтра ещё немного поиграюсь с прерываниями и буду играться с драйверами

:):):):):)

Hunta
14.05.2019, 21:12
Косметические улучшения драйвера под RT. Завтра попробую переключить на работу по прерываниям и начну пробовать сделать под XM

Hunta
15.05.2019, 19:04
Нашёл свой косяк в загрузчике с CF в ПЗУ. Мелочь, но неприятно :) Поправимо элементарно, на выходных, наверное, соберу новое содержимое ПЗУ и прошью :)

Hunta
16.05.2019, 18:58
Сегодня вечером играюсь со второй платой. Перепрошил CPLD новой прошивкой, проверил работу. Претензий нет :)
Продолжаю играться с драйвером под RT. Вот блин, думал первым сделаю под RSX :)

Hunta
18.05.2019, 14:30
Чистка и выпрямление драйвера продолжается.
С прицелом на прерывания, работу под XM, настройку адреса RKC и настройку отображения номеров устройств в разделы на карте.

Hunta
19.05.2019, 12:01
RT-11 может быть загружена четырьмя различными способами. Ну или по крайне мере я знаю 4 способа. И то, что она загружается некоторыми из них - не значит, что она загрузится другими... Исправил и протестировал.

Hunta
19.05.2019, 14:50
Доделал поддержку 64 устройств

Hunta
19.05.2019, 18:58
Чего пока не получится - отладить в драйвере обработку ошибок чтения-записи - нету у мну таких карт.

Поэтому просьба к сообществу :)

Если у кого то есть работоспособные в принципе, но сбоящие на каких то секторах при чтении-записи CF карты - приму в дар или за символическую плату :) Это поможет улучшить качество драйверов.

Доставка, ессссвенно, за мой счёт :)

Hunta
20.05.2019, 07:25
XM драйвер сопротивляется. Ну, опыт поиска своих ошибок богатый... :)

- - - Добавлено - - -

YES!!!!!!!

- - - Добавлено - - -



.SHO ALL

RT-11XM (S) V05.07
Booted from ZF5:RT11XM
22 bit addressing is on

USR is set NOSWAP
EXIT is set SWAP
KMON is set NOIND
RUN is set NOVBGEXE
MODE is set NOSJ
TT is set NOQUIET
ERROR is set ERROR
SL is set OFF
EDIT is set KEX
FORTRAN is set FORTRA
KMON nesting depth is 3

CLI is set DCL, CCL, UCL, NO UCF

PDP 11/34 Processor
3840KB of memory
Extended Instruction Set (EIS)
Memory Management Unit
50 Hertz System Clock

Device I/O time-out support
Extended unit support
UNIBUS mapping unavailable

Device Status CSR Vector(s)
------ ------ --- ---------
LD Installed 000000 000
VM Installed 177572 000
NL Installed 000000 000
ZF Resident 161014 350

TT (Resident)
ZF (Resident)
ZF5 = DK , SY
MQ (Resident)
LD
VM
NL
6 free slots

Job Name Console Level State Low High Impure
--- ---- ------- ----- ----- --- ---- ------
0 RESORC 0 0 Run 000000 106430 122142

No multi-terminal support

------- Extended Memory --------
Address Module Words Type
------- ------ ----- ----
17760000 IOPAGE 4096. PRM HDW BYP
17000000 MEMTOP
00760000 VM 1839104. SHR
00161200 ...... 97984.
00160000 MCA 320. PRM
00000000 KERNEL 28672. PRM HDW

------ Low Memory -------
Address Module Words
------- ------ -----
157122 ZF 215.
120474 RMON 7819.
106432 USR 2577.
001000 ..BG.. 17805.

No LD units mounted
.


- - - Добавлено - - -

Ну и для полноты картинку второй XM монитор



.SHO ALL

RT-11XB (S) V05.07
Booted from ZF5:RT11XB
22 bit addressing is on

USR is set NOSWAP
EXIT is set SWAP
KMON is set NOIND
RUN is set NOVBGEXE
MODE is set NOSJ
TT is set NOQUIET
ERROR is set ERROR
SL is set OFF
EDIT is set KEX
FORTRAN is set FORTRA
KMON nesting depth is 3

CLI is set DCL, CCL, UCL, NO UCF

PDP 11/34 Processor
3840KB of memory
Extended Instruction Set (EIS)
Memory Management Unit
50 Hertz System Clock

Device I/O time-out support
Extended unit support
UNIBUS mapping unavailable

Device Status CSR Vector(s)
------ ------ --- ---------
LD Installed 000000 000
VM Installed 177572 000
NL Installed 000000 000
ZF Resident 161014 350

TT (Resident)
ZF (Resident)
ZF5 = DK , SY
LD
VM
NL
6 free slots

Job Name Console Level State Low High Impure
--- ---- ------- ----- ----- --- ---- ------
0 RESORC 0 0 Run 000000 113070 126466

No multi-terminal support

------- Extended Memory --------
Address Module Words Type
------- ------ ----- ----
17760000 IOPAGE 4096. PRM HDW BYP
17000000 MEMTOP
00760000 VM 1839104. SHR
00160500 ...... 98144.
00160000 MCA 160. PRM
00000000 KERNEL 28672. PRM HDW

------ Low Memory -------
Address Module Words
------- ------ -----
157162 ZF 199.
125134 RMON 6667.
113072 USR 2577.
001000 ..BG.. 18973.

No LD units mounted



.


- - - Добавлено - - -

А так же


.DIR Z77:
20-May-2019
SWAP .SYS 28P 31-Oct-1998 RT11SB.SYS 99 03-May-2019
RT11FB.SYS 106 03-May-2019 LD .SYS 11 03-May-2019
VM .SYS 3 03-May-2019 NL .SYS 2 03-May-2019
LP .SYS 2 03-May-2019 SL .SYS 17P 31-Oct-1998
PIP .SAV 30P 31-Oct-1998 DUP .SAV 52P 31-Oct-1998
DIR .SAV 20P 31-Oct-1998 IND .SAV 58P 31-Oct-1998
RESORC.SAV 35P 31-Oct-1998 EDIT .SAV 19P 31-Oct-1998
KED .SAV 85P 31-Oct-1998 KEX .SAV 72P 31-Oct-1998
MACRO .SAV 63P 31-Oct-1998 CREF .SAV 6P 31-Oct-1998
LINK .SAV 59P 31-Oct-1998 MONMRG.SAV 14P 31-Oct-1998
LIBR .SAV 24P 31-Oct-1998 FILEX .SAV 22P 31-Oct-1998
SRCCOM.SAV 26P 31-Oct-1998 BINCOM.SAV 25P 31-Oct-1998
SLP .SAV 13P 31-Oct-1998 DUMP .SAV 10P 31-Oct-1998
SIPP .SAV 21P 31-Oct-1998 BUP .SAV 68P 31-Oct-1998
PAT .SAV 11P 31-Oct-1998 HELP .SAV 161P 31-Oct-1998
SYSMAC.SML 92P 31-Oct-1998 SYSLIB.OBJ 84P 31-Oct-1998
SETUP .SAV 43P 31-Oct-1998 VTCOM .SAV 24P 31-Oct-1998
DATIME.SAV 4P 31-Oct-1998 DATIME.MAC 23P 31-Oct-1998
DATIME.COM 3P 31-Oct-1998 LET .SAV 6P 31-Oct-1998
SPLIT .SAV 3P 31-Oct-1998 UCL .SAV 16P 31-Oct-1998
VBGEXE.SAV 18P 31-Oct-1998 TERMID.SAV 4P 31-Oct-1998
TRANSF.SAV 16P 31-Oct-1998 TRANSF.TSK 76P 31-Oct-1998
TRANSF.EXE 45P 31-Oct-1998 ODT .OBJ 8P 31-Oct-1998
VDT .OBJ 8P 31-Oct-1998 MDUP .SAV 22P 31-Oct-1998
MBOOT .BOT 1P 31-Oct-1998 MBOT16.BOT 1P 31-Oct-1998
MSBOOT.BOT 4P 31-Oct-1998 MDUP .AI 72P 31-Oct-1998
MDUP .MM 72P 31-Oct-1998 MDUP .MS 72P 31-Oct-1998
MDUP .MT 72P 31-Oct-1998 MDUP .MU 72P 31-Oct-1998
SYSTEM.MLB 148P 31-Oct-1998 EDTL .MLB 11P 31-Oct-1998
MSCPCK.SAV 4P 31-Oct-1998 DBGSYM.SAV 10P 31-Oct-1998
SANS01.CND 4 03-May-2019 SSS .COM 1 03-May-2019
SANS01.ANS 8 03-May-2019 SANS01.BLD 3 03-May-2019
SANS01.MON 5 03-May-2019 SANS01.DEV 4 03-May-2019
SANS01.TBL 5 03-May-2019 RT11SB.MAP 34 03-May-2019
RT11FB.MAP 35 03-May-2019 ZF .SYS 4 19-May-2019
70 Files, 2299 Blocks
63167 Free blocks

.


- - - Добавлено - - -

Для RT осталось сделать работу по прерываниям.

ra3qdp
20.05.2019, 11:57
нету у мну таких карт
не стоит забывать о microdrive.

Hunta
20.05.2019, 12:53
не стоит забывать о microdrive.
И его нет

Hunta
20.05.2019, 17:53
Слегка оптимизировал код

Hunta
20.05.2019, 23:41
До конца работу по прерываниям не добил, но весьма продвинулся. Сама система уже грузится, а вот программы пока нет. Вроде как слетает на запросах с длиной больше одного сектора - специфичность работы контроллера CF сказывается, надо подобрать правильную последовательность команд для него

Hunta
21.05.2019, 21:14
YES!!!!!!!! Работа по прерываниям!!

Не фига там не специфичность работы CF :) Внимательное чтение документации :) Ну и как обычно - второй подход к тому, что не взлетело (или взлетело но без понимания как) у меня обычно успешен :) Не до конца разобрался с WQ (спасибо "отцам-основателям" за сокрытие улик), зато добил вопрос с ZF :)

Теперь смогу переделать и драйвер WQ. Когда и если восстановлю работу контроллера - что не есть стопроцентно :)

Из технического долга - ускорение работы карты, но это не сейчас.

Следующий на очереди - драйвер под RSX+.

Хотя на самом деле тесты погоняю в RT :)

- - - Добавлено - - -

Ну... на самом деле некоторые особенности в работе карты для архитектуры PDP-11 есть - всё таки не DEC-овское изделие :) Например, ответ со стороны процессора на запрос прерывания не снимает автоматом запрос на прерывание со стороны карты :) И после начала обработки (или продолжения обработки) команды картой некоторое время, вроде как, лучше к её регистрам не лезть. Некоторое количество команд процессора :)

- - - Добавлено - - -

Текущая скорость работы


@ 173000
@$6/003405 10000
@B
$ZF0
SL V08.00 [SW] Сторожевых С.В. 1988

RT-11SB (Y) V05.07

.SET TT FORM

.SET TT SCOPE

.SET EDIT K52

.@COPXM

.COPY ZFXT.SYS ZF5:ZFX.SYS

.BOO ZF5:RT11XM

RT-11XM (S) V05.07
?KMON-F-File not found DK:STRTXM.COM

.COP/BOO RT11XM SY:

.TIM 20:55

.DAT 21-MAY-2019

.BOO SY:

RT-11XM (S) V05.07
?KMON-F-File not found DK:STRTXM.COM

.TIM
20:55:14

.@TESTZF

.TIME
20:55:21

.COPY/DEVICE/VERIFY/NOQUERY SY: Z77:

.TIM
21:13:33

.BOO RT11SB

RT-11SB (S) V05.07
?KMON-F-File not found DK:STRTSB.COM

.TIM
21:28:22

.@TESTZF

.TIME
21:28:30

.COPY/DEVICE/VERIFY/NOQUERY SY: Z77:

.TIM
21:43:37

.BOO RT11FB

RT-11FB (S) V05.07
?KMON-F-File not found DK:STRTFB.COM

.@TESTZX
?KMON-F-File not found DK:TESTZX.COM

.@TESTZF

.TIME
21:44:17

.COPY/DEVICE/VERIFY/NOQUERY SY: Z77:

.TIM
21:59:24

.


- - - Добавлено - - -

Размер драйвера (причёсывать ещё есть куда)


.TIM
21:59:24

.BOO RT11SB

RT-11SB (S) V05.07
?KMON-F-File not found DK:STRTSB.COM

.SHO MEM

Address Module Words
------- ------ -----
160000 IOPAGE 4096.
157250 ZF 172.
136142 RMON 4387.
001000 ..BG.. 23857.


.BOO RT11FB

RT-11FB (S) V05.07
?KMON-F-File not found DK:STRTFB.COM

.SHO MEM

Address Module Words
------- ------ -----
160000 IOPAGE 4096.
157210 ZF 188.
132270 RMON 5352.
001000 ..BG.. 22876.


.BOO RT11XB

RT-11XB (S) V05.07
?KMON-F-File not found DK:STRTXB.COM

.SHO MEM

------- Extended Memory --------
Address Module Words Type
------- ------ ----- ----
17760000 IOPAGE 4096. PRM HDW BYP
17000000 MEMTOP
00760000 VM 1839104. SHR
00173100 ...... 95456.
00160500 SL 2688. PVT
00160000 MCA 160. PRM
00000000 KERNEL 28672. PRM HDW

------ Low Memory -------
Address Module Words
------- ------ -----
157122 ZF 215.
125074 RMON 6667.
113032 USR 2577.
001000 ..BG.. 18957.


.BOO RT11XM

RT-11XM (S) V05.07
?KMON-F-File not found DK:STRTXM.COM

.SHO MEM

------- Extended Memory --------
Address Module Words Type
------- ------ ----- ----
17760000 IOPAGE 4096. PRM HDW BYP
17000000 MEMTOP
00760000 VM 1839104. SHR
00173600 ...... 95296.
00161200 SL 2688. PVT
00160000 MCA 320. PRM
00000000 KERNEL 28672. PRM HDW

------ Low Memory -------
Address Module Words
------- ------ -----
157062 ZF 231.
120434 RMON 7819.
106372 USR 2577.
001000 ..BG.. 17789.


.


Одно из приятных отличий платы от МС1201.01-04 - адресуемый регистр линейных часов - можно не жать кнопку таймер :)

- - - Добавлено - - -

Ну это не считая PC-шного COM-порта :)

- - - Добавлено - - -

Даааа... До размера VM ещё есть куда уменьшать :)




.SHO MEM

------- Extended Memory --------
Address Module Words Type
------- ------ ----- ----
17760000 IOPAGE 4096. PRM HDW BYP
17000000 MEMTOP
00760000 VM 1839104. SHR
00173600 ...... 95296.
00161200 SL 2688. PVT
00160000 MCA 320. PRM
00000000 KERNEL 28672. PRM HDW

------ Low Memory -------
Address Module Words
------- ------ -----
157524 VM 86.
121076 RMON 7819.
107034 USR 2577.
001000 ..BG.. 17934.


.

xolod
21.05.2019, 22:11
Ждем WQ! И RSX для. Может тогда и для BSD2.11 кто-нибудь осилит..

Hunta
21.05.2019, 22:36
WQ вряд ли буду доделывать - смысла нет. А вот распотрошить и переделать под вариант, аналогичный ZF - возможно.

Hunta
22.05.2019, 20:08
Потихоньку двигаюсь с драйвером для RSX.

Есть какая то ошибка (RSX вылетает в "голубой экран"), Квант-е стоит не совсем удобно, поэтому решил написать (точнее поправить под ZF и дописать) запускаемую из под RT программу, которая прогрузит образ RSX - это позволит работать так же, как с драйверами RT - я за рабочим компом, плата передо мной :)

Отлаживается драйвер под RSX несколько сложней, но... мы не привыкли отступать :) Так же в драйвер будет добавлено разбиение карты на секции, только секции будут не по 32 мб, а побольше. Поиграюсь с вариантами 256-512-1024 мб, посмотрю, какой окажется оптимальней. Пока склоняюсь к 512. Это позволит иметь 256 дисков на 128 гиговой карте :):):) Так же драйвер при инициализации будет определять размер карты и подкорректировать доступность дисков (в идеале - делать количество дисков под размер карты - но это если получится)

В силу того, что RSX исходно и гибко использует всю доступную память, проблема размера драйвера не стоит так остро, как в RT :)

ra3qdp
23.05.2019, 12:45
До конца работу по прерываниям не добил, но весьма продвинулся. Сама система уже грузится, а вот программы пока нет
А что - RT-11 может работать совсем без прерываний (в каком-то ограниченном применении) ?

Hunta
23.05.2019, 13:09
А что - RT-11 может работать совсем без прерываний
Имелась ввиду работа по прерываниям от CF карты. Первые версии драйвера работали, дожидаясь готовности от карты после запуска операции.

ra3qdp
23.05.2019, 13:57
а только с терминалом и драйверами типа HX без прерываний может ?

Hunta
23.05.2019, 14:01
драйверами типа HX без прерываний может ?
Понятия не имею, я HX не использую
Но таймер и терминал - это уже прерывания

ra3qdp
23.05.2019, 14:09
а только с терминалом и драйверами типа HX без прерываний может ?

- - - Добавлено - - -

т.е. никакой монитор RT, никакой версии - без прерываний не работает ?
А ТМОС ?

Hunta
23.05.2019, 14:14
т.е. никакой монитор RT, никакой версии - без прерываний не работае
Внезапно - процессора семейства PDP-11 вообще без прерываний не работают - ибо помимо асинхронных прерываний есть ещё и синхронные и ОС (или безОСёвая программа) не должны надеяться, что они не возникнут.


А ТМОС ?
Я не настолько знаком с ней, что бы однозначно сказать про асинхронные (хотя подозреваю, что используются - у DEC и в очень древних ОС они используются), но синхронные - я про них уже написал выше.

А вообще это вопросы ранга RTFM

ra3qdp
23.05.2019, 14:18
я не про программные прерывания, а про аппаратные от внешних (по отношению к процессору) устройств.

Hunta
23.05.2019, 14:22
я не про программные прерывания, а про аппаратные от внешних (по отношению к процессору) устройств.
Всё уже ответил

ra3qdp
23.05.2019, 14:35
ответил - это когда тот, кто задавал вопрос понял о чем спрашивал.
Вопрос не праздный. Если делать свою минимальную реализацию железа, то для того, что бы заработала RT-11 (с загрузкой через терминальную линию), какие минимальные условия надо соблюсти ? Обязательно ли заводить прерывания от терминальной линии, обязательно ли от таймера ?
Может это можно как-то обойти при генерации какой-то версии и какого-то монитора ?
Сколько требуется по минимуму памяти (в каких случаях)?

Hunta
23.05.2019, 14:44
Если делать свою минимальную реализацию железа
Есть стандарт архитектуры, если следовать ему - всё работает. Хотящие странного - берут доки, берут исходники и изучают. Меня это не интересовало, поэтому всё, что я мог - написАл. Когда у меня что то не идёт или надо что то реализовать - беру доки, беру исходники - вдумчиво курю. Этот способ меня НИКОГДА не подводил. Другие способы (включая - может кто то ответит), как показывает практика - результат не гарантируют.


это когда тот, кто задавал вопрос понял о чем спрашивал.
Если спрашивающий не понимает своего вопроса - он никогда не получит понятный ему ответ

ra3qdp
23.05.2019, 14:49
Вы пишите драйвер CF для RSX. А почему не выкладываете то, что пишите ? Может кто-то что-то подскажет, может кто-то научится чему-то у Вас.
Кстати, драйвер RSX для контроллера винчестера от ДВК написали ?

Hunta
23.05.2019, 14:58
Вы пишите драйвер CF для RSX. А почему не выкладываете то, что пишите ?
Платы в общем доступе нет, прошивка дорабатывается, возможны изменения драйвера. Будет готово - будет выложена. И прошивку ПЗУ и драйвера под RT и RSX


Может кто-то что-то подскажет
У нас так много пишущих драйвера под RT, а особенно под RSX?


может кто-то научится чему-то у Вас
Готовых драйвером (и простых и сложных) - и в RT и в RSX навалом. Как и наличие документации. Кому то помогло?


Кстати, драйвер RSX для контроллера винчестера от ДВК написали ?
Больше 25 лет назад - в 93 году - почитайте тему Оживление Квант 4С

ra3qdp
23.05.2019, 15:03
У нас так много пишущих драйвера под RT, а особенно под RSX?

откуда они появятся при таком отношении ?



Больше 25 лет назад - в 93 году - почитайте тему Оживление Квант 4С

дайте, пожалуйста, прямую ссылку на скачивание драйвера и его исходника. К какой версии RSX он подходит ?

у кого работает RSX на ДВК отзовитесь !

Hunta
23.05.2019, 15:28
откуда они появятся при таком отношении ?
Каком таком?


прямую ссылку на скачивание драйвера и его исходника

MWDRV.MAC


.TITLE MWDRV
.IDENT /01/

.LIST ME
.LIST BEX
.NLIST CND
.NLIST TTM

;
; DVK mini winchester controller driver
;
; MACRO library calls
;

M$$W11=2
LD$MW=1
VC$MW=0

.MCALL PKTDF$
.MCALL KRBDF$,UCBDF$

PKTDF$ ; Define i/o packet offsets
KRBDF$
UCBDF$

.MACRO DB REPT
.REPT 'REPT'
.WORD 0
.ENDR
.ENDM DB

.MACRO PATCH REPT
; .REPT 'REPT'
; NOP
; .ENDR
.ENDM PATCH
;
; Equated symbols
;

RETRY=2. ; Error retry count

MWID=-20
MW$ID=401
MWPRE=-14
MWERR=-14
ER.SNF=400
ER.TR0=1000
ER.GFL=2000
ER.HNF=10000
ER.ACR=20000
ER.DCR=40000
MWREV=-12
MWSEC=-12
MWRD=-10
MWCYL=-6
MWTRK=-4
MWCSR2=-2
HSEEK= 20
READ= 40
WRITE= 60
FORMAT=120

S2.ERR=400
S2.DRQ=4000
S2.SEK=10000
S2.WRF=20000
S2.DWY=40000
MWCSR=0
ST.OPN= 1
ST.INIT=10
ST.IE= 100
ST.DRQ= 200
ST.DCP= 4000
ST.BUSY=100000
;
; Local data
;
; Controller impure data tables (indexed by controller number)
;

;
; Diagnostic function code table
;
FUNTBL: .WORD IO.HMS!IQ.UMD, 20
.WORD IO.WDH!IQ.UMD, 120
FUNTBE:

.IF DF R$$MPL

S.VCTM=-1
S.VITM=-1
S.VKRB=-1
S.VPKT=-1
S.VSTS=-1
S.VST2=-1

EXEVEC: .WORD 0 ; Vector yet not filled

SCTM: .WORD S.CTM
SITM: .WORD S.ITM
SKRB: .WORD S.KRB
SPKT: .WORD S.PKT
SSTS: .WORD S.STS
SST2: .WORD S.ST2

BLKC2: .WORD $BLKC2
BMSET: .WORD $BMSET
CRPAS: .WORD $CRPAS
CVLBN: .WORD $CVLBN
DTOER: .WORD $DTOER
DVERR: .WORD $DVERR
FORK: .WORD $FORK
GTPKT: .WORD $GTPKT
IODON: .WORD $IODON
KISR6: .WORD KISAR6
RLCN: .WORD $RLCN
RQCND: .WORD $RQCND
VOLVD: .WORD $VOLVD

EXEVCL=<<<.-EXEVEC>/2>-1>

SCBPAT: .WORD CTM1,SCTM
.WORD ITM1,SITM
.WORD RKRB1,SKRB
.WORD KRB1,SKRB
.WORD KRB2,SKRB
.WORD KRB3,SKRB
.WORD KRB4,SKRB
.WORD KRB5,SKRB
.WORD PKT1,SPKT
.WORD PKT2,SPKT
.WORD PKT3,SPKT
.WORD PKT4,SPKT
.WORD STS1,SSTS
.WORD RST21,SST2
.WORD 0

.ENDC ;DF R$$MPL

RTTBL: DB M$$W11 ; Error retry count and positioning flag

;
; Driver dispatch table
;

DDT$ MW,M$$W11,NEW=Y,OPT=Y ; Generate dispatch table

;+
; ** - MWINI - Controller initiator
;
; This routine is entered from the queue I/O directive when an I/O request
; is queued and at the end of a previous I/O operation to propagate the ini-
; tion of the driver. If the specified controller is not busy, then an attempt
; is made to dequeue the next I/O request. Else a return to the caller is
; executed. If the dequeue attempt is successful, then the next I/O operation
; is initiated. A return to the caller is then executed.
;
; Inputs:
;
; R5=address of the UCB of the controller to be initiated.
;
; Outputs:
;
; If the specified controller is not busy and an I/O request is waiting
; to be processed, then the request is dequeued and the I/O operation
; is initiated.
;-

.ENABL LSB
MWINI: NOP ; OR BPT - CALL XDT - for debug only
GTPKT$ MW,M$$W11 ; Get next i/o packet to process
;
; The following arguments are returned by $GTPKT:
;
; R1=address of the I/O request packet.
; R2=physical unit number of the request UCB.
; R3=controller index.
; R4=address of the status control block.
; R5=address of the UCB of the controller to be initiated.
;
; Controller I/O request packet format:
;
; WD. 00 -- I/O queue thread word.
; WD. 01 -- request priority, event flag number.
; WD. 02 -- address of the tcb of the requestor task.
; WD. 03 -- pointer to second lun word in requestor task header.
; WD. 04 -- contents of the first lun word in requestor task heade
; WD. 05 -- I/O function code (IO.RLB or IO.WLB).
; WD. 06 -- virtual address of I/O status block.
; WD. 07 -- relocation bias of I/O status block.
; WD. 10 -- I/O status block address (real or displacement + 14000
; WD. 11 -- virtual address of AST service routine.
; WD. 12 -- relocation bias of buffer address
; WD. 13 -- buffer address of I/O transfer.
; WD. 14 -- number of bytes to be transfered.
; WD. 15 -- not used.
; WD. 16 -- cylinder
; WD. 17 -- sector in low and track in high byte of word
; WD. 20 -- relocation bias of diagnostic reg. adrs else not used
; WD. 21 -- diagnostic reg. blk adrs (real or displ.+140000)
;

PATCH 5

CALL @RQCND ; Request controller for data transfer
MOV S.VPKT(R4),R1 ; Retreive I/O packet address
PKT1=.-2
MOV S.VKRB(R4),R3 ; Retrieve address of KRB
KRB1=.-2
MOVB K.CON(R3),R3 ; Retrieve controller index
CALL @VOLVD ; Validate volume valid
BCS 50$ ; If CS we failed (JMP 200$ THRU 50$:)
TST R0 ; Transfer function?
BMI 10$ ; If MI yes
TST I.PRM+2(R1) ; Size the disk?
BPL 50$ ; If PL no (JMP 200$ THRU 50$:)

MOV @S.VKRB(R4),R2 ; RETREIVE CSR ADDRESS
KRB2=.-2
CALL MWWAIT ;
MOV #IS.SUC&377, R0
CLR U.CNT(R5)
JMP 220$ ; and exit

10$: ; Ref label
PATCH 3

MOV #RETRY&377,RTTBL(R3) ; Clear recal flag and set retries

CLC ; Convert
ROR U.CNT(R5) ; to word count

PATCH 5

CMPB #IO.HMS/^D<256>,I.FCN+1(R1) ; DIAGNOSTIC FUNCTION?
BNE 40$ ; IF NE NO
MOV #FUNTBL,R0 ; GET ADDRESS OF FUNCTION TABLE
20$: CMP (R0)+,I.FCN(R1) ; FUNCTION CODE MATCH?
BEQ 30$ ; IF EQ YES
TST (R0)+ ; BYPASS CONTROLLER CODE
CMP #FUNTBE,R0 ; END OF FUNCTION TABLE?
BEQ 40$ ; IF EQ YES
BR 20$ ; TRY AGAIN
30$: MOV (R0),U.BUF(R5) ; SET CONTROLLER FUNCTION BITS
BR 70$ ; GO CHECK LOGICAL BLOCK NUMBER
40$: MOV #IE.IFC&377,R0 ; ASSUME ILLEGAL FUNCTION
MOV #READ,U.BUF(R5) ; ASSUME READ LOGICAL FUNCTION
CMPB #IO.RLB/256.,I.FCN+1(R1) ; READ LOGICAL FUNCTION?
BHIS 60$ ; IF HIS FUNCTION IS LEGAL

50$: JMP 200$ ; FUNCTION IS ILLEGAL

60$: BEQ 70$ ; IF EQ FUNCTION WAS READ
; CONVERT TO WRITE LOGICAL FUNCTION
ADD #WRITE-READ, U.BUF(R5)
70$:
PATCH 3
;
; INITIATE I/O OPERATION
;
MWLOOP:
PATCH 5

MOV @S.VKRB(R4),R2 ; GET ADDRESS OF CSR
KRB3=.-2
MOV S.VPKT(R4),R1 ; RETRIEVE ADDRESS OF I/O REQUEST PACKET
PKT2=.-2
MOVB S.VITM(R4),S.VCTM(R4) ; SET CURRENT DEVICE TIMEOUT COUNT
ITM1=.-4
CTM1=.-2
CALL MWWAIT ;
MOV I.PRM+10(R1), MWCYL(R2) ; INSERT CYLINDER ADDRESS
MOVB I.PRM+13(R1), MWTRK(R2) ; INSERT TRACK ADDRESS
MOVB I.PRM+12(R1), R0
INC R0
BIC #^C<17>, R0
MOVB R0, MWSEC(R2) ; INSERT SECTOR ADDRESS
;
; On REAL ДВК set write predcompensation
;
CMP U.BUF(R5), #WRITE
BNE 80$
MOV #360./4, MWPRE(R2)
80$:
MOV U.BUF(R5), MWCSR2(R2) ; LOAD FUNCTION AND GO
CMP U.BUF(R5), #WRITE
BNE 90$
CALL LOAD

90$:
CALL @BMSET
BIS #ST.IE, (R2)
BMI 100$
BIC #ST.IE, (R2)
CALL @(SP)+
BR 110$
100$: RETURN

;+
; CANCEL i/o OPERATION IS A NOP FOR FILE STRUCTURED DEVICES.
;-
MWCAN: ;;;NOP FOR MW

;+
; POWERFAIL IS HANDLED VIA THE DEVICE TIMEOUT FACILITY AND
; CAUSES NO IMMEDIATE ACTION ON THE UNIT.
;-
MWPWF:
RETURN

;+
; **-$MWINT-CONTROLLER INTERRUPTS
;-

INTSE$ MW,PR4,M$$W11 ;;;SAVE REGISTERS AND SET PRIORITY

PATCH 5

MOV U.SCB(R5),R4 ;;;GET ADDRESS OF SCB
MOV @S.VKRB(R4),R4 ;;;GET ADDRESS OF CSR
KRB4=.-2
BIC #ST.IE,(R4) ;;;CLEAR INTERRUPT ENABLE
CALL @FORK ;;;CREATE A SYSTEM PROCESS

PATCH 5

MOV R4,R2 ;COPY ADDRESS OF CSR
MOV U.SCB(R5),R4 ;RETRIEVE ADDRESS OF SCB
MOV S.VKRB(R4),R3 ;RETRIEVE ADDRESS OF KRB
KRB5=.-2
MOVB K.CON(R3),R3 ;RETRIEVE CONTROLLER INDEX
MOV S.VPKT(R4),R1 ;GET i/o PACKET ADDRESS
PKT3=.-2

110$: MOV #IS.SUC&377,R0 ;ASSUME SUCCESSFUL TRANSFER
BITB #IQ.UMD,I.FCN(R1) ;DIAGNOSTIC FUNCTION EXECUTED?
BNE 220$ ;IF NE YES

PATCH 5

BIT #S2.ERR, MWCSR2(R2) ; Any errors ?
BEQ 150$ ; Branch, if no
CALL @DVERR ; Log device error
CALL FLUSH
120$: BITB #IQ.X,I.FCN(R1) ; Inhibit retries ?
BNE 180$ ; Branch, if yes
130$: DECB RTTBL(R3) ; Any more retries ?
BLE 180$ ; Branch, if no
140$: JMP MWLOOP ; Retry entire operation

150$:
PATCH 5

BITB #IO.WLC&377,I.FCN(R1) ; Write followed by write check ?
BNE 170$ ; Branch, if yes
BITB #US.WCK,U.STS(R5) ; Write check enabled by MCR?
BEQ 170$ ; Branch, if no
160$: CMPB U.BUF(R5), #WRITE ; Write function ?
BNE 170$ ; Branch, if no
; BIS #2*2,U.BUF(R5) ; Set write check function
; BIT #2*2,R1 ; Was last function a write check ?
; BNE 170$ ; Branch, if yes
; MOV #RETRY&377,RTTBL(R3) ; Reinitialize retry count
; BR 140$ ; Start write check operation

170$: CMPB U.BUF(R5), #READ
BNE 172$
CALL UNLOAD
172$:
ADD #256.*2/100, I.PRM(R1) ; Adjust KISAR6 value
SUB #256., U.CNT(R5) ; Yet one sector
BHI 175$ ; Branch, if request not sutisfied
CLR U.CNT(R5) ; All request
BR 190$

175$:
PATCH 5

; HALT ; !!!!!!

INCB I.PRM+12(R1) ; Next sector
BICB #^C<17>, I.PRM+12(R1) ; Up to 16. (fixed) sectors on track
BNE 140$ ; Branch, if not sector #0
INCB I.PRM+13(R1) ; Next track
CMPB I.PRM+13(R1),U.PRM+1(R5); Max head
BLO 140$
CLRB I.PRM+13(R1) ; Zero header
INC I.PRM+10(R1) ; Next cylinder
BR 140$

180$:
MOV #IE.VER&377,R0 ;UNRECOVERABLE ERROR
CLR R1
BR 200$

190$: MOV I.PRM+4(R1), R1
CLC
ROL U.CNT(R5)
SUB U.CNT(R5), R1 ; CALCULATE BYTES ACTUALLY TRANSFERED

200$: MOVB RTTBL(R3),R2 ;GET FINAL ERROR RETRY COUNT
BIS #RETRY*256.,R2 ;MERGE STARTING RETRY COUNT

PATCH 2

CALL @RLCN ;RELEASE CONTROLLER
CALL @IODON ;FINISH i/o OPERATION
JMP MWINI ;PROCESS NEXT REQUEST

;
; DEVICE TIMEOUT RESULTS IN A HOME SEEK FOLLOWED BY THE i/o OPERATION
; BEING REPEATED UNLESS THE OPERATION WAS DIAGNOSTIC. TIMEOUTS ARE
; USUALLY CAUSED BY POWERFAILURE BUT MAY ALSO BE THE RESULT OF A
; HARDWARE FAILURE.
;

MWOUT: INCB S.VSTS(R4) ;;;LEAVE CONTROLLER BUSY
STS1=.-2
CALL @DTOER ;;;LOG DEVICE TIMEOUT
BCC 230$ ;IF CC TIMEOUT DURING NORMAL FUNCTION

220$: CALL @CRPAS ; Pass controller registers to task
BR 190$ ; Diagnostic processing complete

230$: MOV S.VPKT(R4),R1 ;GET I/O PACKET ADDRESS
PKT4=.-2
BITB #IQ.X,I.FCN(R1) ;INHIBIT RETRIES?
BNE 180$ ;IF NE YES
BR 130$ ;

.DSABL LSB

;+
;
;-
MWWAIT:
PATCH 6

TST (R2)
BMI MWWAIT
RETURN ;
;+
;
;-
FLUSH:
PATCH 4
TST MWRD(R2)
BIT #S2.DRQ, MWCSR2(R2)
BNE FLUSH
RETURN
;+
; R0 -
; R1 - I/O packet address
; R2 - CSR
; R3 - controller index
; R4 - SCB
; R5 - UCB
;-
LOAD:
PATCH 4
BIT #S2.DRQ, MWCSR2(R2)
BEQ LOAD
MOV R0, -(SP)
MOV U.CNT(R5), R0
MOV R5, -(SP) ; for KISAR6
MOV R4, -(SP)
MOV R3, -(SP)
MOV KISR6, R5
MOV (R5), -(SP)
MOV I.PRM(R1), (R5)
MOV I.PRM+2(R1), R4
MOV #256., R3
10$: TST R0
BEQ 20$
MOV (R4)+, MWRD(R2)
DEC R0
BR 30$
20$: CLR MWRD(R2)
30$: SOB R3, 10$
BR COMM

;+
; R0 -
; R1 - I/O packet address
; R2 - CSR
; R3 - controller index
; R4 - SCB
; R5 - UCB
;-
UNLOAD:
PATCH 4

BIT #S2.DRQ, MWCSR2(R2)
BEQ UNLOAD
MOV R0, -(SP)
MOV U.CNT(R5), R0
MOV R5, -(SP) ; for KISAR6
MOV R4, -(SP)
MOV R3, -(SP)
MOV KISR6, R5
MOV (R5), -(SP)
MOV I.PRM(R1), (R5)
MOV I.PRM+2(R1), R4
MOV #256., R3
10$: TST R0
BEQ 20$
MOV MWRD(R2), (R4)+
DEC R0
BR 30$
20$: TST MWRD(R2)
30$: SOB R3, 10$
COMM: MOV (SP)+, (R5)
MOV (SP)+, R3
MOV (SP)+, R4
MOV (SP)+, R5
MOV (SP)+, R0
RETURN
;+
; **-MWCHK-VALIDATE AND CONVERT THE LBN
;
; THIS ROUTINE IS CALLED FROM $DRQRQ TO DO LBN PROCESSING
; FOR DEVICES WHICH SUPPORT QUEUE OPTIMIZATION. IF BLKC2
; DETECTS AN ERROR IT WILL RETURN TO THE CORRECT PLACE IN
; $DRQRQ AFTER CALLING $IOALT.
;
; INPUTS:
;
; R1=I/O PACKET ADDRESS
; R5=UCB ADDRESS
;
; OUTPUTS:
;
; IF THE CHECKS SUCCEEDS, THEN THE LBN IN THE PACKET
; IS REPLACED BY THE CYLINDER/TRACK/SECTOR. R1 IS PRESERVED.
;
; IF THE CHECKS FAILS, THEN $IOALT IS ENTERED WITH A FINAL
; STATUS OF IE.BLK AND A RETURN TO THE CORRECT PLACE IN
; $DRQRQ IS EXECUTED.
;
;
; NOTE: ALL FUNCTIONS PUT INTO THE DRIVER QUEUE ARRIVE HERE.
; THESE INCLUDE IO.ATT, IO.DET, AND ACP FUNCTIONS.
;-

MWCHK:
PATCH 5

MOV I.FCN(R1),-(SP) ;PUT THE FUNCTION ONTO THE STACK
CMPB #IO.ATT/256.,1(SP) ;IS IT ATTACH
BEQ 20$ ;IF EQ YES - LEAVE IT ALONE
CMPB #IO.DET/256.,1(SP) ;IS IT DETACH
BEQ 20$ ;IF EQ YES - LEAVE IT ALONE
BIC #7,(SP) ;CLEAR THE SUBFUNCTION BITS
CMP #IO.STC,(SP) ;IS IT SET CHARACTERISTICS?
BEQ 20$ ;IF EQ YES - LEAVE IT ALONE
TST (SP)+ ;CLEAN THE STACK
CALL @BLKC2 ;CHECK LOGICAL BLOCK NUMBER
CALL @CVLBN ;CONVERT LOGICAL BLOCK NUMBER
SWAB R1 ;SWAP TRACK TO HIGH BYTE
BIS R1,R0 ;MERGE TRACK WITH SECTOR
MOV R0,I.PRM+12(R3) ;SAVE DESIRED TRACK AND SECTOR ADDRESS
MOV R2,I.PRM+10(R3) ;SAVE DESIRED CYLINDER ADDRESS
MOV R3,R1 ;RESTORE THE PACKET ADDRESS
10$: RETURN ;EXIT
20$: TST (SP)+ ;CLEAN THE STACK
BR 10$ ;AND EXIT


.IF DF R$$MPL

MWKRB: BCS 20$ ; Off-line request - done

TST EXEVEC ; If done already
BNE 20$ ; Skip this

PATCH 5

MOV R2,-(SP) ; Save R2
MOV R3,-(SP) ; and R3
MOV @#KINAR6,-(SP) ; and mapping APR6
MOV @#112,R0 ; Get address of table of entries
MOV (R0),R0 ; Get address of APR bias (first word)
MOV (R0),@#KINAR6 ; Map common through APR6
MOV #EXEVEC,R3 ; Point to vector
MOV #EXEVCL,R2 ; Specify length of vector
CALL @#140004 ; Translate vector
MOV (SP)+,@#KINAR6 ; Restore mapping
MOV (SP)+,R3 ; And R3
MOV (SP)+,R2 ; And R2
MOV #SCBPAT,R0 ; Get patch table address
10$: MOV (R0)+,R1 ; Move table entry
BEQ 20$ ; If EQ - end of table
MOV @(R0)+,(R1) ; If NEQ - start to patch
BR 10$ ; Complete it
20$:
RETURN

MWUCB: RETURN

PATCH 40

.ENDC ;DF R$$MPL

.END

MWTAB.MAC


.TITLE MWTAB
.IDENT /01/
;
; SYSTEM TABLES
;
; MACRO LIBRARY CALLS
;
.MCALL CLKDF$
.MCALL KRBDF$
.MCALL SCBDF$
.MCALL UCBDF$

CLKDF$ ;DEFINE CLOCK BLOCK OFFSETS
KRBDF$
SCBDF$ ;DEFINE SCB OFFSETS
UCBDF$ ;DEFINE UCB OFFSETS

;
;

$MWDAT::
;
; MW CTB
;
.WORD 0 ; L.ICB
$CTB0:
.WORD $CTB1 ; L.LNK
.ASCII /MW/ ; L.NAM
.WORD .DC0 ; L.DCB
.BYTE 2 ; L.NUM
.BYTE 0 ; L.STS
$MWCTB:: ; L.KRB
.WORD $MWA
.WORD $MWB
;
; MW DCB
;
$MWTBL=0 ;LOADABLE MWDRV
$MWDCB::
.DC0:
.WORD .DC1 ; D.LNK
.WORD .MW0 ; D.UCB
.ASCII /MW/ ; D.NAM
.BYTE 0,1 ; D.UNIT
.WORD MWND-MWST ; D.UCBL
.WORD $MWTBL ; D.DSP
.WORD 177477,70,0,177200,377,0,0,377 ; D.MSK
.WORD 0 ; D.PCB
;
; MW UCB'S
;
MWST=.
.IF DF M$$MUP
.WORD 0
.ENDC
.MW0::
.WORD .DC0
.WORD .-2
.BYTE UC.ALG!1,US.MNT
.BYTE 0,US.OFL
.WORD DV.DIR!DV.MSD!DV.UMD!DV.F11!DV.MNT
.WORD 2
.WORD 0.
.WORD 512.
.WORD $MW0
.WORD 0,0,0,0,0,0,0,0
.BYTE 16.,8.
.WORD 1024.
MWND=.

.IF DF M$$MUP
.WORD 0
.ENDC
.MW1::
.WORD .DC0
.WORD .-2
.BYTE UC.ALG!1,US.MNT
.BYTE 0,US.OFL
.WORD DV.DIR!DV.MSD!DV.UMD!DV.F11!DV.MNT
.WORD 2
.WORD 0.
.WORD 512.
.WORD $MW1
.WORD 0,0,0,0,0,0,0,0
.BYTE 16.,8.
.WORD 1024.
;
; MW SCB'S
;
$MW0::
.WORD 0,.-2 ; S.LHD
.WORD 0,0,0,0 ; S.FRK
.WORD 0 ; S.KS5
.WORD 0 ; S.PKT
.BYTE 0 ; S.CTM
.BYTE 4. ; S.ITM
.BYTE 0 ; S.STS
.BYTE S3.OPT ; S.ST3
.WORD 0!S2.LOG!S2.OPT!0 ; S.ST2
.WORD $MWA ; S.KRB
.BYTE 9. ; S.RCNT
.BYTE -20 ; S.ROFF
.WORD 0 ; S.EMB

$MW1::
.WORD 0,.-2 ; S.LHD
.WORD 0,0,0,0 ; S.FRK
.WORD 0 ; S.KS5
.WORD 0 ; S.PKT
.BYTE 0 ; S.CTM
.BYTE 4. ; S.ITM
.BYTE 0 ; S.STS
.BYTE S3.OPT ; S.ST3
.WORD 0!S2.LOG!S2.OPT!0 ; S.ST2
.WORD $MWB ; S.KRB
.BYTE 9. ; S.RCNT
.BYTE -20 ; S.ROFF
.WORD 0 ; S.EMB
;
; MWA KRB
;
.BYTE PR4 ; K.PRI
.BYTE 300/4 ; K.VCT
.BYTE 0*2,0 ; K.CON, K.IOC
.WORD 0!KS.OFL ; K.STS
$MWA:: .WORD 174020 ; K.CSR
.WORD MWA-$MWA ; K.OFF
.BYTE 0,0 ; K.HPU
.WORD 0 ; K.OWN
.WORD 0,.-2 ; K.CRQ
.BLKW 6 ; MAPPING ASSIGNMENT BLOCK
.WORD 0 ; KE.RHB
MWA:
;
; MWB KRB
;
.BYTE PR4 ; K.PRI
.BYTE 310/4 ; K.VCT
.BYTE 1*2,0 ; K.CON, K.IOC
.WORD 0!KS.OFL ; K.STS
$MWB:: .WORD 174060 ; K.CSR
.WORD MWB-$MWB ; K.OFF
.BYTE 0,0 ; K.HPU
.WORD 0 ; K.OWN
.WORD 0,.-2 ; K.CRQ
.BLKW 6 ; MAPPING ASSIGNMENT BLOCK
.WORD 0 ; KE.RHB
MWB:
;
; MW Configuration
;
; Physical Unit Number
;
; 0 1 2 3 4 5 6 7
;
; MWA MW0:
; MWB MW1:
;
;
$MWEND::

.DC1 = 0 ; END OF DCB LIST FOR MW:

$CTB1 = 0 ; END OF CTB LIST FOR MW:

.END

Работает под RSX-11M-Plus v4.0 и v4.6. Весьма не доделан в плане качества, но вряд ли буду доделывать

- - - Добавлено - - -

Готовая система
http://www.kpxx.ru/KBAHT4C/Софт/RSX-11M-Plus/Под Эмулятор Патрона
Там есть готовый драйвер

ra3qdp
23.05.2019, 15:29
а готовый ?
А возможно сделать поддержку 2-х винчестеров ?

Hunta
23.05.2019, 15:36
Читать не умеем?
Готовый в образе. И он изначально поддерживал два винчестера - потому что у меня так было сделано в Кванте

ra3qdp
23.05.2019, 15:38
Весьма не доделан в плане качества

что не доделано ? и что значит "качество" ?

Дайте, пожалуйста, командные строки компиляции и линковки.

Hunta
23.05.2019, 15:44
что не доделано ? и что значит "качество" ?
То и значит, что его код надо ещё вылизать по размеру и скорости работы


.ENABLE SUBSTITUTION
.PARSE <FILSPC> "[" $DR $DR
.PARSE $DR "]" $DR
.SETS $DR "['$DR']"
.GOSUB GEN MW
.EXIT
.GEN:
.SETS P1 COMMAN
MAC '$DR''P1'TAB;1,'$DR''P1'TAB;1=LB:[1,1]EXEMC/ML,[11,10]RSXMC/PA:1,SY:'$DR''P1'TAB
MAC '$DR''P1'DRV;1,'$DR''P1'DRV;1=LB:[1,1]EXEMC/ML,[11,10]RSXMC/PA:1,SY:'$DR''P1'DRV
.OPEN '$DR'TMP.BLD;1
.DATA '$DR''P1'DRV;1/-HD/-MM,'$DR''P1'DRV;1/-SP/CR,'$DR''P1'DRV;1='$DR''P1'DRV,'
$DR''P1'TAB
.DATA LB:[3,54]RSXVEC.STB/SS
.DATA LB:[1,1]EXELIB/LB
.DATA /
.DATA STACK=0
.DATA UNITS=0
.DATA PAR=DRVPAR:120000:20000
.DATA //
.CLOSE
TKB @'$DR'TMP.BLD;1
.RETURN

ra3qdp
23.05.2019, 15:44
Читать не умеем?
Готовый в образе. И он изначально поддерживал два винчестера - потому что у меня так было сделано в Кванте

почему такой тон ?
Я имел ввиду - только файлы драйвера (наверное .STB и .SYS(или что ли .DRV - забыл), например на отдельном образе дискеты.

два винчестера - подключенные к одному контроллеру или два контроллера с одним винчестером у каждого ?
А больше двух ?

Hunta
23.05.2019, 15:48
почему такой тон ?
Потому что читать не умеем


например на отдельном образе дискеты.
При наличии исходников - можно и собрать. Сильно нужно - образ под эмулятор Патрона - извлечь оттуда можно хоть куда


два винчестера - подключенные к одному контроллеру
Не получится


А больше двух ?
Делайте

ra3qdp
23.05.2019, 15:50
Код:
на сколько я понял - это компиляция (или нет)? А линковка ?

Hunta
23.05.2019, 15:54
на сколько я понял - это компиляция. А линковка ?
Неправильно поняли, это - всё сразу

ra3qdp
23.05.2019, 15:56
думал - должно встретится в тексте слово link. Выходит это не так.

Hunta
23.05.2019, 16:00
link - это если DCL, который транслирует его в вызов TKB. Обычно работал в MCR

- - - Добавлено - - -

К тому же это - командник, для сбора (почти) любого драйвера

ra3qdp
23.05.2019, 16:00
спасибо !

Hunta
23.05.2019, 16:01
Не за что

ra3qdp
23.05.2019, 17:33
а как поставить RSX на железную машину ?
Наверное с дискет ? Тогда нужен еще и драйвер дискеточный.

Hunta
23.05.2019, 17:45
Здесь уже мелькал драйвер от Form-а, у меня не доделанный

- - - Добавлено - - -

Если интересно
http://www.kpxx.ru/KBAHT4C/Софт/SystemDisks/
я возиться и вспоминать не буду - сейчас у меня времени свободного нет

ra3qdp
23.05.2019, 18:24
так же к драйверу хочется иметь программку загрузки с этого винчестера - чтобы можно было набить ее с пульта и загрузиться.
Может напишите ?

Hunta
23.05.2019, 18:29
Нафига? Стандартный загрузчик. Да и не интересно мне это - я уже достаточно натрахлся и с этим контроллером и с винчестерами.

ra3qdp
23.05.2019, 18:38
Ваш драйвер может быть отправной точкой для запуска RSX на Э-85(Pro 3xx). Там - нужен будет загрузчик.

Hunta
23.05.2019, 18:47
Ваш драйвер может быть отправной точкой для запуска RSX на Э-85(Pro 3xx). Там - нужен будет загрузчик.
По тому, что я видел в драйвере DW под RT - там по другому происходит работа с устройствами и код загрузчика для ДВК почти наверняка не подойдёт.
А поскольку Э85 рабочей у меня нет - заниматься этим (по крайне мере сейчас) я не вижу смысла.
По ощущениям от кода - я переделывал драйвер от P/OS под обычный RSX. Нет, исходника не нашёл. Даже не утверждаю, что ощущения не врут. Возможно был драйвер DW для XM под Pro.

Hunta
24.05.2019, 09:37
Гы гы гы, комменты от DEC жгуть!


RESET ;Stop the world, I want to start it!

"Остановите Землю, я хачу вытить!"

svinka
24.05.2019, 20:12
Может тогда и для BSD2.11 кто-нибудь осилит..

Почитал требования BSD2.11 к процессору. На ВМ3 не натянуть...

Hunta
24.05.2019, 20:45
На ВМ3 не натянуть...
Я и не собирался

CodeMaster
24.05.2019, 20:57
Почитал требования BSD2.11 к процессору. На ВМ3 не натянуть...
В чём основная проблема?

Hunta
24.05.2019, 21:05
чём основная проблема?
Ему требуется поддержка I-D, ЕМНИП

svinka
24.05.2019, 21:12
It only ran on PDP-11 models with Supervisor mode


I-D, ЕМНИП там опция при компиляции из исходников

CodeMaster
24.05.2019, 21:35
It only ran on PDP-11 models with Supervisor mode
Использовать 1831ВМ1, он же единственный с трёхуровневой системой? Но, он медленней.

svinka
24.05.2019, 22:08
Хотел на ВМ3 ретро UNIX, который поддерживается энтузиастами. Для BSD 2.11 последний патч номер 451 выпущен в декабре 2018

Пойду V6 по-изучаю

svinka
25.05.2019, 02:06
Красивый код для эмуляции всей плавучки нашел в исходниках BSD 2.11 и судя по заголовку лицензии - авторство от DEC.
Сайт удобен для навигации но не содержит всех патчей. в 134 прошивке такое есть? свое или краденное???

https://www.retro11.de/ouxr/211bsd/usr/src/sys/pdp/mch_fpsim.s.html

ассемблер юниксовый. но все понятно

Hunta
25.05.2019, 08:23
в 134 прошивке такое есть
Исходник 134-ой есть, достаточно просто убедится, что никакой эмуляцией там и не пахнет.
Есть эмулятор FPP под RSX

svinka
25.05.2019, 23:21
Исходник 134-ой есть, достаточно просто убедится, что никакой эмуляцией там и не пахнет.
Может есть смысл засунуть?? сначала программную. Потом и аппаратно-программную так как на CPLD-FPGA можно переложить самые затратные по времени операции

Hunta
25.05.2019, 23:26
Может есть смысл засунуть?? сначала программную. Потом и аппаратно-программную так как в CPLD-FPGA можно засунуть самые затратные по времени операции
В 134-ом свободного места практически нет, его по хорошему надо разбивать на два - тесты и сервис+загрузчики (собственно, я уже склоняюсь к этому). Но программная реализация не прокатит, так как с точки зрения процессора никакой особенностью команды FPP не отличаются. Аппаратно-программная - может быть, но тут не хватка ресурсов уже с другой стороны - CPLD

Hunta
26.05.2019, 16:53
Процесс движется, но ещё не всё достигнуто. Потом ещё код причесать


RSX-11M-PLUS V4.6 BL87 (KXX001) 1920K UP 000:02:00 1982-03-30 02:00:38
TASK= *IDLE* FREE= SY0:1996549. F0:DMO
ZF2:2044916. F3:DMO PARS
POOL=3968.:3992.:2. SECPOOL=445.:512.:86%
3968.:3992.:2. 445.:512.:86% SECPOL:P
SYSPAR:D
IN DMTMFHF DRVPAR:D
5 ICTY1RC GEN :D
28 RR::1CS
OU 1. A.R
0 1. C.E
0K M. P.S
!!>))>>!
0*******120*****240*****360*****480*****600*****72 0*****840*****
PPD-D-D---------------------------------------------------------
----------------------------------------------------------------
960*****1080****1200****1320****1440****1560****16 80****1800****

ERRSEQ
0.


- - - Добавлено - - -

Эмулятор FPP в halt режиме, к тому же, не совсем совместим с идеологией RSX - во время выполнения его кода вполне может прилететь прерывание от чего то, например, часов, а обработать его проц, насколько я понимаю, не сможет.

Ну и под RSX вопрос, собственно, с эмуляцией не стоит - есть эмулятор. Запустил его как обычную программу - появился FPP, вышел из этой программы - нет больше FPP.

Я таким образом использовал графику из ГРАФОР-а в программе на FORTRAN-77.

svinka
27.05.2019, 00:24
Ну и под RSX вопрос, собственно, с эмуляцией не стоит - есть эмулятор
А исходники есть? на посмотреть на искусство программеров

Hunta
27.05.2019, 04:46
А исходники есть?
На какой то из лент DECUSа

AFZ
27.05.2019, 05:35
Эмулятор FPP в halt режиме, к тому же, не совсем совместим с идеологией RSX - во время выполнения его кода вполне может прилететь прерывание от чего то, например, часов, а обработать его проц, насколько я понимаю, не сможет.С прерываниями будет так, как ты захочешь. В частности, на ВМ2, где в halt-mode эмулируется FIS, прерывания, как раз, разрешены, из-за чего на нем (ВМ2) не проходит тест FIS от Э-60.

Hunta
27.05.2019, 05:42
С прерываниями будет так, как ты захочешь
Насколько мне не изменяет память, когда ВМ3 в режиме halt, прерывания от периферии не обрабатываются. Но даже если обрабатываются - ответ не по адресу - я запихивать эмулятор FPP в halt ПЗУ не планирую

Hunta
27.05.2019, 21:57
Вместо тысячи слов... Тысяча символов ASCII :):)

Убрал тысячу, а точнее 884 символа. Результат - на сейчас - чуть позже ниже будет :)

Hunta
28.05.2019, 06:22
Хак на ходу. Причина в необходимости хака будет искаться :)

Оставил только хак. Подробнее - на сейчас - чуть позже ниже будет :)


.BOOZF

@ 140776
@P
XDT: 87

XDT>G
RSX-11M-PLUS V4.6 BL87


>
SAV /WB
@ 152566
@P
@ 000400
@P


RSX-11M-PLUS V4.6 BL87 1920.KW System:"KXX001"
BRK
BE:132630
XDT>4060/010105
004062 /012601
004064 /012600
004066 /060501
004070 /065772 20327
004072 /000340 4132
004074 /103727
XDT>P
>
>RED ZF1:=SY:
>RED ZF1:=LB:
>RED ZF1:=SP:
>MOU ZF1:"RSX11MPBL87"
>@ZF1:[1,2]STARTUP

Hunta
28.05.2019, 21:06
Интересный прикол... Память (точнее две ячейки) портит системный отладчик...

Hunta
29.05.2019, 08:53
Портит системный отладчик - но он не виноват - так звёзды сложились :) Думаю, как разложить. Точнее говоря - вариант есть, но проверить смогу только вечером после работы...

Hunta
29.05.2019, 19:28
Первое место поправил, но звезды накосячили в другом месте...

Hunta
29.05.2019, 21:49
И вот результат на сейчас


***** ДОСТУПНОЕ ОЗУ - 3,7 M *
@ 001000
@B
$ZF0
SL V08.00 [SW] Сторожевых С.В. 1988

RT-11SB (Y) V05.07

.SET TT FORM

.SET TT SCOPE

.SET EDIT K52

.BOOZF

XDT: 87

XDT>G
RSX-11M-PLUS V4.6 BL87


>
SAV /WB


RSX-11M-PLUS V4.6 BL87 1920.KW System:"KXX001"
>RED ZF1:=SY:
>RED ZF1:=LB:
>RED ZF1:=SP:
>MOU ZF1:"RSX11MPBL87"
>@ZF1:[1,2]STARTUP
>; PLEASE NOTE
>;
>; If you have not yet read the system release notes, please do so
>; now before attempting to perform a SYSGEN or to utilize the new
>; features of this system.
>;
cZc
SET -- Inquire cannot
>;
>; Please ignore any random characters that may have printed on your
>; terminal just now They came from a SET /INQUIRE=TI: command.
>; Evidently your terminal does not recognize escape sequences.
>; This will not affect the running of this command file.
>;
>* Please enter time and date (HH:MM DD-MMM-YYYY) [S]: 29-MAY-2019 22:25
>TIME 29-MAY-2019 22:25
>ACS SY:/BLKS=1024.
>CON ONLINE ALL
>ELI /LOG/LIM
>CLI /INIT=DCL/CTRLC/DPR="<15><12>/$ /"
>INS LB:[1,1]RMSRESAB.TSK/RON=YES/PAR=GEN
>INS LB:[1,1]RMSLBL.TSK/RON=YES/PAR=GEN
>INS LB:[1,1]RMSLBM.TSK/RON=YES/PAR=GEN
>INS $QMGCLI
>INS $QMGCLI/TASK=...PRI
>INS $QMGCLI/TASK=...SUB
>QUE /START:QMG
>INS $QMGPRT/TASK=PRT.../SLV=NO
>QUE LP0:/CR/NM
>START/ACCOUNTING
>CON ESTAT LP0:
>QUE BAP0:/BATCH
>QUE BAP0:/AS:BATCH
>@ <EOF>
>RUN $SHUTUP

RSX-11M-PLUS Shut down program

Enter minutes to wait before shutdown:
Reason for shutdown (<CR> for none):
OK to shutdown? [Y/N]: Y
All further logins are disabled

2019-05-29 22:26 System is now shutting down -- KXX001

QUE /STO:QMG
>
STOP/ACCOUNTING SHUTUP
22:26:23 SYSLOG -- 47. Exiting
>
@LB:[1,2]SHUTUP
>VCP DISCONNECT /ALL
>@ <EOF>
>
ELI /NOLOG
>
ACS ZF1:/BLKS=0.
ACS -- Checkpoint file now inactive
>
DMO ZF1:/DEV/LOCK=V
DMO -- System disk being dismounted
DMO -- SYSTEM dismounted from ZF1: *** Final dismount initiated ***
22:26:31 *** ZF1: -- Dismount complete
>
SHUTUP operation complete

@ 126130
@
@ 173000
@B
$ZF40



RSX-11M-PLUS V4.6 BL87 1920.KW System:"KXX001"
>RED ZF1:=SY:
>RED ZF1:=LB:
>RED ZF1:=SP:
>MOU ZF1:"RSX11MPBL87"
>@ZF1:[1,2]STARTUP
>; PLEASE NOTE
>;
>; If you have not yet read the system release notes, please do so
>; now before attempting to perform a SYSGEN or to utilize the new
>; features of this system.
>;
FZc
SET -- Inquire c
>;
>; Please ignore any random characters that may have printed on your
>; terminal just now. They came from a SET /INQUIRE=TI: command.
>; Evidently your terminal does not recognize escape sequences.
>; This will not affect the running of this command file.
>;
>* Please enter time and date (HH:MM DD-MMM-YYYY) [S]: 22:28 29-MAY-2019
>TIME 22:28 29-MAY-2019
>ACS SY:/BLKS=1024.
>CON ONLINE ALL
>ELI /LOG/LIM
>CLI /INIT=DCL/CTRLC/DPR="<15><12>/$ /"
>INS LB:[1,1]RMSRESAB.TSK/RON=YES/PAR=GEN
>INS LB:[1,1]RMSLBL.TSK/RON=YES/PAR=GEN
>INS LB:[1,1]RMSLBM.TSK/RON=YES/PAR=GEN
>INS $QMGCLI
>INS $QMGCLI/TASK=...PRI
>INS $QMGCLI/TASK=...SUB
>QUE /START:QMG
>INS $QMGPRT/TASK=PRT.../SLV=NO
>QUE LP0:/CR/NM
>START/ACCOUNTING
>CON ESTAT LP0:
>QUE BAP0:/BATCH
>QUE BAP0:/AS:BATCH
>@ <EOF>
>RUN $SHUTUP

RSX-11M-PLUS Shut down program

Enter minУtes to wait before shutdown:
Reason for shutdown (<CR> for none):
OK to shutdown? [Y/N]: Y
All further logins are disabled

2019-05-29 22:30 System is now shutting down -- KXX001

QUE /STO:QMG
>
STOP/ACCOUNTING SHUTUP
22:30:57 SYSLOG -- 47. Exiting
>
@LB:[1,2]SHUTUP
>VCP DISCONNECT /ALL
>@ <EOF>
>
ELI /NOLOG
>
ACS ZF1:/BLKS=0.
ACS -- Checkpoint file now inactive
>
DMO ZF1:/DEV/LOCK=V
DMO -- System disk being dismounted
DMO -- SYSTEM dismounted from ZF1: *** Final dismount initiated ***
>
22:31:05 *** ZF1: -- Dismount complete
SHUTUP operation complete

@ 126130
@

Из того, что ещё проверить - разные варианты загрузки сохранённой системы и загрузку через BOO - как несохранённой, так и сохранённой системы. Но это не сегодня - работа навалилась, усталость такая, что начал сажать тупые ошибки...

- - - Добавлено - - -

Проверил загрузку сохранённой системы через BOO, и сохранённой системы через BOO/FOR в RT-11.

Не прошла загрузка сохранённой системы через BOO /HW (аналог BOO/FOR)

Ещё проверить - BOO несохранённой системы (из другого раздела)

Hunta
30.05.2019, 18:29
Оттестировал все возможные варианты загрузки. Неработоспособность BOO /HW - особенность текущего разбиения карты (разделы 32 мб или 1 гб) и не знание об этом "аппаратного" загрузчика. По результатам исследования в первично-вторичный загрузчик добавлен хак, позволяющий в определённых сценариях обойти это дело и загрузить как RT (ZF0:-ZF77:), так и RSX (ZF0:-ZF7:). Хак временный, будет доработка ПЗУ halt режима. Теоретически под RSX при разделах в 1 гб можно будет использовать карты до 128 Гб (28-ми битный номер сектора в LBN, ZF0:-ZF177). Вроде как мелькали в продаже карты на 256 Гб, но как с ними работать - пока не знаю - в имеющемся у меня описании упомянут только 28-битный номер сектора...

На очереди тестирование драйвера ZF для RSX. Вроде как пока система не падала неожиданно (могла не загрузиться), но код в драйвере не вылизан и можно ожидать чего угодно. Кроме того, пока не понятно, насколько корректен код обработки ошибок работы с CF...

Hunta
30.05.2019, 21:34
Все семь способов загрузки RSX, которые смог придумать - проверил. Работают.
Начал проверку драйвера со стандартного BRU/INI/VER ZF1: ZF2: и... теперь ищем ошибку в драйвере :) А ещё надо бы к 512ВИ1 написать программу :) Только сначала патарейку присобачить :)

Hunta
31.05.2019, 20:24
.NLIST
.INCLUDE /DISK$HUNTA:[MACROS]MACROS/
.INCLUDE /DISK$HUNTA:[MACROS]HWDF/
.LIST

MODULE ZFDRV, REL=<KX>, VER=<01>, COMM=<CF aka ZF DRIVER>, TYPE=<NOSECT>

;
; QBUS ZF CF card controller driver
;
; MACRO library calls
;

Z$$F11=8.
LD$ZF=1
VC$ZF=0

FROM EXEMC IMPORT PKTDF$, KRBDF$, UCBDF$

FROM SYSLIB.QIOSYM IMPORT IO.ATT, IO.DET, IO.STC
FROM SYSLIB.QIOSYM IMPORT IO.RLB, IO.WLB, IO.WLC, IQ.X
FROM SYSLIB.QIOSYM IMPORT IO.HMS, IO.WDH, IQ.UMD
FROM SYSLIB.QIOSYM IMPORT IS.SUC, IE.IFC, IE.VER, IE.DNR


FROM RSXVEC IMPORT S.CTM, S.ITM, S.KRB, S.PKT, S.STS, S.ST2
FROM RSXVEC IMPORT $BLKC2, $BMSET, $CRPAS, $CVLBN, $DTOER, $DVERR, $SCERR
FROM RSXVEC IMPORT $FORK, $GTPKT, $IODON, $RLCN, $RQCND, $VOLVD
FROM RSXVEC IMPORT $GTWRD, $PTWRD

FROM EXELIB.EXEDF IMPORT S2.ACT, KINAR6, PR4

FROM ZFTAB IMPORT ZF.CMD, ZF.LBH, ZF.LBL, ZF.OFF

Hunta
03.06.2019, 19:53
Повозился со вторым экземпляром платы, с которым были некоторые проблемы. Определил источник проблем. Я бы выразился так - в жопу советские разъёмы - даже золочёные. Жуткий неконтакт. Может, есть и более адекватные - но лучше бы автор использовал цанговый - пусть и на неправославные 2.54. Я и в такие ВМ3 вставляю секунд за 20-30.

AFZ
07.06.2019, 04:46
Я же уже рассказывал, как в посадочное место с 2.50 мм запаять кусочки панелек 2.54 мм. Лучше всего пилить 16-ногие, простые. А если сильно хочется гиперболоидные панельки, берешь вот такое (https://ru.aliexpress.com/item/Free-shiping-one-lot-25pcs-1x40-Pin-2-54-Round-Female-Pin-Header-connector-2-54mm/2040299466.html?spm=a2g0o.productlist.0.0.38262db8 xQP5X1&ws_ab_test=searchweb0_0%2Csearchweb201602_7%2Csear chweb201603_53&algo_pvid=ce737fcf-f275-4549-9d70-2537149ff6e9&btsid=a4b8b0c9-1c3e-417f-9859-59fd9ac63439&algo_expid=ce737fcf-f275-4549-9d70-2537149ff6e9-4) и лобзиком пилишь на отдельные гнёзда, после чего надеваешь их на процессор и паяешь в плату.

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

Hunta
06.07.2019, 21:23
Повозился с 134-ой ПЗУ в плане оптимизации кода.

Исходный размер - 13746

На текущий момент размеры:

Без загрузчика CF - 13510
С загрузчиком CF - 13770

Вдогонку - пробую поднять скорость. Пока результатов нет...

Hunta
12.08.2019, 20:56
Ну что сказать.. Результат есть, но всё таки не такой, какой ожидался. Оценка скорости проводилась достаточно тупо - измерение времени выполнения команды COPY/DEVICE/NOQUERY SY: NL:

Старый вариант драйвера - 230 секунд или примерно 143 кб/с
Новый вариант драйвера - 156 секунд или примерно 210 кб/с

То есть ускорение примерно в 1,47 раза

С другой стороны, теоретический предел скорости передачи с карты на ВМ3 по ОЧЕНЬ грубым прикидками - 600 кб/с

То есть улучшение есть, но стремится есть куда... :)

- - - Добавлено - - -

Есть ещё одна задумка, которая должна ускорить, но для её реализации нужно больше времени. Может быть, в выходные...

AFZ
12.08.2019, 21:03
Это же в PIO-mode? Так вполне прилично - у меня на AZ эта самая командв COP/DEV диска в 65534 блока тоже выполняется 231-233 сек.

Hunta
13.08.2019, 20:41
Вместо тысячи слов... Небольшой протокол тестирования



.BOO RT11XM

RT-11XM (S) V05.07

.@TNL

.TIME
19:34:13

.COPY/DEVICE/NOQUERY SY: NL:

.TIME
19:37:20

.@TZ7

.TIME
19:04:22

.COPY/DEVICE/VERIFY/NOQUERY SY: ZF7:

.TIME
19:17:35


.BOO RT11SB

RT-11SB (S) V05.07

.@TNL

.TIME
19:38:21

.COPY/DEVICE/NOQUERY SY: NL:

.TIME
19:40:58

.@TZ7

.TIME
19:41:09

.COPY/DEVICE/VERIFY/NOQUERY SY: ZF7:

.TIME
19:52:34

.


Скорости.

Под SB

Копирование в NL:

65534*512/(2:37)/1024 = ~ 209 кб/с

Копирование на другой ZF с проверкой (два чтения, одна запись, сравнение в памяти)

65534*512*3/(11:25)/1024 = ~ 144 кб/с


Под XM

Копирование в NL:

65534*512/(3:07)/1024 = ~ 175 кб/с

Копирование на другой ZF с проверкой (два чтения, одна запись, сравнение в памяти)

65534*512*3/(13:13)/1024 = ~ 124 кб/с

Если в подсчётах не ошибся :)

Для сравнения, на память, раньше копирование с проверкой под SB - примерно 15 минут, под XM примерно 18 минут.

- - - Добавлено - - -

Не выдержал, попробовал реализовать задумку. А карта обломала - не поддерживает задуманное... Ну, есть ещё одна мысль..

Hunta
17.08.2019, 11:56
Ещё повозился с драйвером.

По скорости - пока тоже самое.

Но уменьшил размер в памяти - для монитора SB с поддержкой таймаута - с 229. до 206. слов в выдаче команды SHOW MEMORY

Технически можно уменьшить ещё на пяток слов, но надеюсь найти CF с поддержкой команды длинного чтения - теоретически, на таких картах можно добиться ускорения чтения. Та, с которой играюсь, команду поддерживает, но максимальный размер блока - 1 сектор, так что...

Hunta
31.08.2019, 15:02
После некоторого перерыва (были другие дела) вернулся к прошивке ака 134 :)

Первое, что сделал - переходник с панельки ПЗУ на ZIF разъём - ибо с одной стороны - надоело её с мучениями доставать-вставлять (каждый раз рискую, да и боюсь - разъём так не долго прослужит), а с другой стороны - такая конструкция ещё пригодится в принципе :)

Сел доделывать прошивку с учётом карты на 4 CF разъёма - что бы и с неё грузить. Помимо этого - надо доделать драйвер под доп карты. Правда, с учётом особенностей работы RT, драйвер для поддержки доп CF пока будет поддерживать только 8 устройств. Потом подумаю, что можно с этим сделать. Под RSX таких проблем наблюдаться не должно, но до RSX ещё добраться надо...

Hunta
31.08.2019, 21:44
Вместо тысячи слов...



@B
$ZF0
SL V08.00 [SW] Сторожевых С.В. 1988

RT-11SB (Y) V05.07

.SET TT FORM

.SET TT SCOPE

.SET EDIT K52

.TIM
00:00:26

.DAT 31-AUG-2019

.TIM 21:29

.@COPZF5

.COPY ZA.SAV ZF5:ZA.SYS

.COPY ZAX.SAV ZF5:ZAX.SYS

.

.COPY ZB.SAV ZF5:ZB.SYS

.COPY ZBX.SAV ZF5:ZBX.SYS

.

.COPY ZC.SAV ZF5:ZC.SYS

.COPY ZCX.SAV ZF5:ZCX.SYS

.

.COPY ZD.SAV ZF5:ZD.SYS

.COPY ZDX.SAV ZF5:ZDX.SYS

.

.COPY ZE.SAV ZF5:ZE.SYS

.COPY ZEX.SAV ZF5:ZEX.SYS

.

.COPY ZF.SAV ZF5:ZF.SYS

.COPY ZFX.SAV ZF5:ZFX.SYS

.

.BOO ZF5:RT11SB

RT-11SB (S) V05.07
?KMON-F-File not found DK:STRTSB.COM

.SHO DEV

Device Status CSR Vector(s)
------ ------ --- ---------
LD Installed 000000 000
VM Installed 177572 250
NL Installed 000000 000
LP -Not installed 177514 200
SL Installed 000000 000
ZB Installed 161114 360
ZC Installed 161154 364
ZD Installed 161214 370
ZE Not installed 161254 374
ZF Resident 161014 350
ZA Installed 161054 354



.DUMP/TERM ZA:/END:0
ZA:/E:0
BLOCK NUMBER 000000
000/ 000240 000404 000000 065532 055420 071441 000400 112737 * .....Zk.[!s.._.*
020/ 000340 177776 012705 000001 003401 010105 012704 003000 *`.~.E.....E.D...*
040/ 012703 000400 005001 012124 077302 005002 010004 100404 *C.....T.B~......*
060/ 012706 004100 005046 005046 000137 003074 000403 050527 *F.@.&.&._.<...WQ*
100/ 177156 177441 005705 001002 016705 177764 010567 177760 *n~!.E...E.t.w.p.*
120/ 032737 000001 177572 001024 012705 172340 005001 012765 *_5..z...E.`t..u.*
140/ 077406 177740 010125 062701 000200 020527 172356 101767 *..`.U.Ae..W!ntw.*
160/ 012737 177600 172356 012737 000060 172516 005237 177572 *_...nt_.0.Nu..z.*
200/ 016705 177674 013727 172346 000000 012701 000000 000241 *E.<.W.ft..A...!.*
220/ 006101 006101 000301 010167 177762 010703 062703 177646 *A.A.A.w.r.C.Ce&.*
240/ 013727 000004 000000 013727 000006 000000 105763 000001 *W.....W.....s...*
260/ 001423 126327 000001 000001 001004 012727 000020 000000 *..W,......W.....*
300/ 000413 105063 000001 116500 177776 042700 177757 010067 *..3...@.~.@Eo.7.*
320/ 177754 001402 105263 000001 122713 000041 001405 016767 *l...3...K%!...w.*
340/ 000004 000274 000401 012112 016737 177640 172346 012704 *..<...J._. .ftD.*
360/ 000003 012765 000012 177756 000240 000240 105715 100776 *..u...n. . .M.~.*
400/ 032715 000100 001773 116700 177633 042700 177760 056700 *M5@.{.@...@Ep.@]*
420/ 177654 052700 000340 110065 177776 116765 177606 177774 *,.@U`.5.~.u...|.*
440/ 116765 177607 177772 116765 177600 177770 012701 000377 *u...z.u...x.A...*
460/ 020104 101401 010401 010127 000000 110165 177766 111315 *D ....W...u.v.M.*
500/ 000240 000240 000240 000240 000240 000240 000240 000240 * . . . . . . . .*
520/ 000240 000240 004767 000036 103707 013767 172346 177454 * . .w...G.w.ft,.*
540/ 016701 177724 060167 177502 005567 177470 160104 010467 *A.T.w`B.w.8.D`7.*
560/ 177576 101277 000463 010502 062702 177762 016727 177670 *~.?.3.B.Ber.W.8.*
600/ 000000 122713 000041 001402 105715 100773 032715 000010 *..K%!...M.{.M5..*
620/ 001770 032715 000001 001040 012700 000400 012701 060000 *x.M5.. .@...A..`*
640/ 011221 077002 062737 000010 172346 005727 000000 001020 *...~_e..ftW.....*
660/ 013727 000004 000000 013727 000006 000000 005267 177754 *W.....W.....7.l.*
700/ 012737 000340 000006 010700 062700 000024 010037 000004 *_.`...@.@e......*
720/ 005367 177654 001326 005727 000261 000207 016737 177724 *w.,.V.W.1..._.T.*
740/ 000004 016737 177724 000006 010400 116304 000001 016701 *.._.T.....D...A.*
760/ 177114 016737 177222 172346 005007 005007 005007 005007 *L~_..~ft........*

.INI ZA:
ZA0:/Initialize; Are you sure? Y

.DIR ZA:
31-Aug-2019

0 Files, 0 Blocks
65466 Free blocks

.COP/DEV/VER/NOQ SY: ZA:


ZE это так.. на возможное будущее :)

- - - Добавлено - - -

Вдогонку.

Я разобрался, как это сделать.



.COP/BOO ZA:RT11SB ZA:

.BOO ZA:

RT-11SB (S) V05.07
?KMON-F-File not found DK:STRTSB.COM

.SHO
TT (Resident)
ZA (Resident)
ZA0 = DK , SY
LD
VM
NL
ZF
SL
ZB
ZC
ZD


.DIR

SWAP .SYS 28P 31-Oct-1998 RT11SB.SYS 99P 03-May-2019
RT11FB.SYS 106P 03-May-2019 LD .SYS 11P 03-May-2019
VM .SYS 3P 03-May-2019 NL .SYS 2P 03-May-2019
LP .SYS 2P 03-May-2019 SL .SYS 17P 31-Oct-1998
RT11XB.SYS 114P 19-May-2019 RT11XM.SYS 122P 19-May-2019
LDX .SYS 11P 19-May-2019 VMX .SYS 3P 19-May-2019
NLX .SYS 2P 19-May-2019 SLX .SYS 20P 31-Oct-1998
PIP .SAV 30P 31-Oct-1998 DUP .SAV 52P 31-Oct-1998
DIR .SAV 20P 31-Oct-1998 IND .SAV 58P 31-Oct-1998
RESORC.SAV 35P 31-Oct-1998 EDIT .SAV 19P 31-Oct-1998
KED .SAV 85P 31-Oct-1998 KEX .SAV 72P 31-Oct-1998
MACRO .SAV 63P 31-Oct-1998 CREF .SAV 6P 31-Oct-1998
LINK .SAV 59P 31-Oct-1998 MONMRG.SAV 14P 31-Oct-1998
LIBR .SAV 24P 31-Oct-1998 FILEX .SAV 22P 31-Oct-1998
SRCCOM.SAV 26P 31-Oct-1998 BINCOM.SAV 25P 31-Oct-1998
SLP .SAV 13P 31-Oct-1998 DUMP .SAV 10P 31-Oct-1998
SIPP .SAV 21P 31-Oct-1998 BUP .SAV 68P 31-Oct-1998
PAT .SAV 11P 31-Oct-1998 HELP .SAV 161P 31-Oct-1998
SYSMAC.SML 92P 31-Oct-1998 SYSLIB.OBJ 84P 31-Oct-1998
ODT .OBJ 8P 31-Oct-1998 VDT .OBJ 8P 31-Oct-1998
SYSTEM.MLB 148P 31-Oct-1998 EDTL .MLB 11P 31-Oct-1998
DBGSYM.SAV 10P 31-Oct-1998 DESS .SAV 20P 04-Nov-1993
SETUP .SAV 43P 31-Oct-1998 VTCOM .SAV 24P 31-Oct-1998
DATIME.SAV 4P 31-Oct-1998 DATIME.MAC 23P 31-Oct-1998
DATIME.COM 3P 31-Oct-1998 LET .SAV 6P 31-Oct-1998
SPLIT .SAV 3P 31-Oct-1998 UCL .SAV 16P 31-Oct-1998
VBGEXE.SAV 18P 31-Oct-1998 TERMID.SAV 4P 31-Oct-1998
TRANSF.SAV 16P 31-Oct-1998 TRANSF.TSK 76P 31-Oct-1998
TRANSF.EXE 45P 31-Oct-1998 MSCPCK.SAV 4P 31-Oct-1998
MDUP .SAV 22P 31-Oct-1998 MBOOT .BOT 1P 31-Oct-1998
MBOT16.BOT 1P 31-Oct-1998 MSBOOT.BOT 4P 31-Oct-1998
MDUP .AI 72P 31-Oct-1998 MDUP .MM 72P 31-Oct-1998
MDUP .MS 72P 31-Oct-1998 MDUP .MT 72P 31-Oct-1998
MDUP .MU 72P 31-Oct-1998 SANS01.CND 4P 03-May-2019
SANS01.ANS 8P 03-May-2019 SANS01.BLD 3P 03-May-2019
SANS01.MON 5P 03-May-2019 SANS01.DEV 4P 03-May-2019
SANS01.TBL 5P 03-May-2019 RT11SB.MAP 34P 03-May-2019
RT11FB.MAP 35P 03-May-2019 SANS02.CND 4P 19-May-2019
SANS02.ANS 8P 19-May-2019 SANS02.BLD 3P 19-May-2019
SANS02.MON 6P 19-May-2019 SANS02.DEV 4P 19-May-2019
SANS02.TBL 5P 19-May-2019 RT11XB.MAP 36P 19-May-2019
RT11XM.MAP 37P 19-May-2019 SSS .COM 1P 03-May-2019
TNL .COM 1P 18-Aug-2019 TZ7 .COM 1P 14-Aug-2019
TZ76 .COM 1P 22-May-2019 TZ77 .COM 1P 22-May-2019
ZAX .SYS 4 31-Aug-2019 ZB .SYS 4 31-Aug-2019
ZBX .SYS 4 31-Aug-2019 ZC .SYS 4 31-Aug-2019
ZCX .SYS 4 31-Aug-2019 ZD .SYS 4 31-Aug-2019
ZDX .SYS 4 31-Aug-2019 ZE .SYS 4 31-Aug-2019
ZEX .SYS 4 31-Aug-2019 ZF .SYS 4 31-Aug-2019
ZFX .SYS 4 31-Aug-2019 ZA .SYS 4 31-Aug-2019
100 Files, 2742 Blocks
62724 Free blocks

.@TNL

.TIME
00:01:32

.COPY/DEVICE/NOQUERY SY: NL:

.TIME
00:03:53

.DIR A10:

?DIR-F-Invalid directory

.INI A10:
A10:/Initialize; Are you sure? Y

.DIR A10:


0 Files, 0 Blocks
65466 Free blocks

.


- - - Добавлено - - -

Ишо картинка



.BOO ZA7:

RT-11SB (S) V05.07
?KMON-F-File not found DK:STRTSB.COM

.DIR A10:


0 Files, 0 Blocks
65466 Free blocks

.COP/DEV/VER SY: A10:
A10:/Copy; Are you sure? Y

.BOO A10:

RT-11SB (S) V05.07
?KMON-F-File not found DK:STRTSB.COM

.SHO
TT (Resident)
ZA (Resident)
A10 = DK , SY
LD
VM
NL
ZF
SL
ZB
ZC
ZD


.


- - - Добавлено - - -

Фото переходника

http://www.KpXX.Ru/Днепр/МС1201/V2.0/Переходник

AFZ
01.09.2019, 04:52
А, кстати. RT-11 времен ДВК, т.е.5.00 -5.04 (то, что реально встречалось на ДВК пока их использовали) воспринимают наш ВМ3, как 11/34. И при этом не подозревают, что у него есть таймер с вектором 100; аппаратного управляемого таймера у ДВК, естественно нет и на команду TI система отвечает "No timer". Я выкручивался, включая в стартовую последовательность вызов самодельной программы, которая взводит бит CLOCK$ (бит 100000) в слове конфигурации RMON ($CNFG1) по фиксированному смещению 300.

У тебя ничего подобного нет, тем не менее, таймер работает. Это что, где-то в 5.05-5.07 это пофиксили? Или как? И вообще, покажи, плз, SH CONF.

Hunta
01.09.2019, 12:02
На ВМ3 нет таймера.

AFZ
01.09.2019, 13:02
На ВМ3 нет таймера.На платах ДВК с ВМ3 (т.е. 1201.03 и .04) таймер есть - сигнал 50 Гц с ВП1-065 отдается на линию К ПРТ Н.

Hunta
01.09.2019, 13:48
На платах ДВК с ВМ3
Ещё раз для особо не читающих. В процессоре ВМ3 таймера нет. И у меня не платы 1201.03 1201.04
И если системы

RT-11 времен ДВК, т.е.5.00 -5.04 (то, что реально встречалось на ДВК пока их использовали) воспринимают наш ВМ3, как 11/34
сгенерировали с выключенной поддержкой таймера, так что они

не подозревают, что у него есть таймер с вектором 100
то это проблемы тех, кто генерировал. ВСЕ вопросы к ним.

Когда я переносил RT11 v5.0 на свой Квант, у меня не было НИКАКИХ проблем с видением системой таймера (за исключением того, что надо было нажать кнопку, что бы часы начали тикать) и с вводом-просмотром текущего времени командой TIME, потому что я умею генерить нужные мне системы - с нужными характеристиками.

Учитывая, что у DEC тоже были платы с таймером без аппаратного регистра - её системы (при условии правильной их генерации) этот факт не смущает ни капли и они отлично начинают поддерживать текущее время после включения таймера тем или иным способом. Опыт работы с RSX-11M-PLUS на 1201.04 (лет так за 10 до того, как на этом форуме начали вести споры - а заработает ли RSX на ДВК) - ещё одно тому подтверждение.

А на плате с условным названием МС 1201.2018, с которой я сейчас развлекаюсь у таймера ЕСТЬ регистр, так что система ещё и включить прерывания от таймера может.


Это что, где-то в 5.05-5.07 это пофиксили?

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

- - - Добавлено - - -

Ну, вроде как осталось пофиксить только ошибки в драйвере для XM монитора. Хотя меня тут тоже терзают смутные сомнения.. А есть ли они.. Попробую некоторые тесты и отпишусь..

- - - Добавлено - - -

Увы, ошибка всё таки моя и похоже, где то в начальном загрузчике.. Ну, я много чего трогал в драйвере, так что.. Бум исправлять

AFZ
01.09.2019, 18:49
сгенерировали с выключенной поддержкой таймера, так что они

***** ДОСТУПНОЕ ОЗУ - 1 M *
@ 001000
@177226G
AZ v1 Boot-I-Cold boot..

AZ (177220) disk driver v1.1 2019
SL V08.00 [SW] Сторожевых С.В. 1988


RT11-SJ (DS) V05.01

Date [24-APR-92]
24-APR-92, Пятница
SET EXIT NOSWAP
SET USR NOSWAP
SET TT SCOPE
LO LD
! < UNUSED >
! < UNUSED >
! < UNUSED >
SET SL ON
AS LD1 DK


Assignments:
Symbol Status Value
------ ------ -----
^I auto DIR/FU/BL
? EDK
> /NOOBJ
^ /LIS:TT:
; auto DIR/FU/BL SY:
^\ auto ,C:(SPEIS,CXLIB,CMLIB)/BOT:4000
^V auto VT52
^N LINK
---------------------
Empty bytes: 200.

LD1> TI
?KMON-W-No clock

LD1> SH CONF


RT11-SJ (DS) V05.01

BOOTED FROM AZ1:RT11DS

USR IS SET NOSWAP
EXIT IS SET NOSWAP
KMON IS SET NOIND
TT IS SET NOQUIET
ERROR IS SET ERROR
SL IS SET ON
EDIT IS SET EDIT
KMON NESTING DEPTH IS 3

PDP 11/34 PROCESSOR
248KB OF MEMORY
EXTENDED INSTRUCTION SET (EIS)
KT11 MEMORY MANAGEMENT UNIT

SJ TIMER SUPPORT


LD1> TI
?KMON-W-No clock

LD1> R VM3TIM

LD1> TI
00:00:00

LD1> TI
00:00:04

LD1> TY TMON.MAC
R6=%6
R7=%7
.DSABL GBL
.DSABL MCL
.MCALL .EXIT
.ENABL LC
START: MOV @#54,R0
BIS #100040,300(R0)
.EXIT
.END START


LD1>


Учитывая, что у DEC тоже были платы с таймером без аппаратного регистра - её системы (при условии правильной их генерации) этот факт не смущает ни капли и они отлично начинают поддерживать текущее время после включения таймера тем или иным способом. Ага, два раза. Поддержка сетевого таймера - без CSR сама собой (вернее, начальным загрузчиком) включается на ограниченном наборе моделей - LSI-11/03, LSI-11/23, LSI-11/73 и не помню, как там зовут последние модели на J-11.

И 11/34 в этот список точно не входит.


Так что фиксить надо кому то руки и мозги, а RT (по крайне мере с 5.0, с более ранними не игрался, но подозреваю, что и там все нормально) проблем с таймером не испытывает Какой ты умный - это что-то!

LD1> BO/FO AZ3:

AZ v1 Boot-I-Cold boot..

AZ (177220) disk driver v1.1 2019
SL V08.00 [SW] Сторожевых С.В. 1988

RT-11SB (Y) V05.07

.SET TT FORM

.SET TT SCOPE

.SET EDIT K52

.SET SL ON

.DAY
Время Дата
00:00:13 01-Сен-2019, Воскресенье

.TI
?KMON-W-No clock

.VM3TIM

.TI
00:00:51

.SH CONF

RT-11SB (Y) V05.07
Booted from AZ3: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 ON
EDIT is set K52
FORTRAN is set FORTRA
KMON nesting depth is 3

CLI is set DCL, CCL, UCL, NO UCF

PDP 11/34 Processor
1024KB of memory
Extended Instruction Set (EIS)
Memory Management Unit
50 Hertz System Clock

No SYSGEN options enabled


.


Когда я переносил RT11 v5.0 на свой Квант, у меня не было НИКАКИХ проблем с видением системой таймера (за исключением того, что надо было нажать кнопку, что бы часы начали тикать) и с вводом-просмотром текущего времени командой TIME, потому что я умею генерить нужные мне системы - с нужными характеристиками. Да, конечно. А слова SJ TIMER SUPPORT в в выдаче SH CONF системы 5.01 тебе ничего не говорят? Тем более, в сочетании с ?KMON-W-No clock? В SH CONF системы 5.07 фразу про поддержку таймера, по всей видимости, потеряли, но по программе DAY видно, что таймер тикает - раз в секунду добавляется единичка ко времени, а вот KMON считает, что таймера нет. И, когда я объясняю ему своей самодельной программой VM3TIM, что таймер есть, он показывает натикавшее время, а не с нуля. А твоё "НИКАКИХ проблем с таймером" - это одно из двух - или ты забыл, или в твоей системе кто-то таки подправил загрузчик до того, как она попала к тебе в руки. И, учитывая, что ты работал, в основном, с RSX-11, скорее всего, ты просто забыл.

Ну, и, на закуску, ХМ-система. Она взята из дистрибутива 5.1, естественно, в ней есть и простая поддержка таймера, и тайм-аут устройств, и точно так же ?KMON-W-No clock. Так, что...

AZX (177220) disk driver v1.1 2019

RT-11XM V05.01

.DAY
Date [24-APR-92]
24-APR-92, Пятница

SET EXIT NOSWAP
SET USR NOSWAP
SET TT SCOPE
LO LD
AS LD0 DK
LO SL
!R VM3TIM
SET SL ON
! < UNUSED >


.SH CONF

RT-11XM V05.01
BOOTED FROM AZ2:RT11XM
22 BIT ADDRESSING IS ON

USR IS SET NOSWAP
EXIT IS SET NOSWAP
KMON IS SET NOIND
TT IS SET NOQUIET
ERROR IS SET ERROR
SL IS SET ON
EDIT IS SET KEX
KMON NESTING DEPTH IS 3

PDP 11/34 PROCESSOR
1024KB OF MEMORY
EXTENDED INSTRUCTION SET (EIS)
KT11 MEMORY MANAGEMENT UNIT

DEVICE I/O TIME-OUT SUPPORT
SYSTEM JOB SUPPORT


.TI
?KMON-W-No clock

.R VM3TIM

.TI
00:01:49

.00:01:49

.SH CONF

RT-11XM V05.01
BOOTED FROM AZ2:RT11XM
22 BIT ADDRESSING IS ON

USR IS SET NOSWAP
EXIT IS SET NOSWAP
KMON IS SET NOIND
TT IS SET NOQUIET
ERROR IS SET ERROR
SL IS SET ON
EDIT IS SET KEX
KMON NESTING DEPTH IS 3

PDP 11/34 PROCESSOR
1024KB OF MEMORY
EXTENDED INSTRUCTION SET (EIS)
KT11 MEMORY MANAGEMENT UNIT
50 CYCLE SYSTEM CLOCK

DEVICE I/O TIME-OUT SUPPORT
SYSTEM JOB SUPPORT


.

Лучше бы сразу сказал, что у тебя таймер с CSR и не выпендривался...

Hunta
08.09.2019, 15:48
НАСТОЯЩИЙ ретро: Gigatron TTL microcomputer https://hackaday.io/project/20781/logs. Only 7400 logic. No microprocessor, no video chip, no sound chip.

xolod
08.09.2019, 16:34
НАСТОЯЩИЙ ретро: Gigatron TTL microcomputer https://hackaday.io/project/20781/logs. Only 7400 logic. No microprocessor, no video chip, no sound chip.
Off topic: а как тебе такое (https://ru.m.wikipedia.org/wiki/%D0%90%D0%BD%D1%82%D0%B8%D0%BA%D0%B8%D1%82%D0%B5%D 1%80%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%B5%D1%85%D0 %B0%D0%BD%D0%B8%D0%B7%D0%BC), FAIRCHILD SEMICONDUCTOR?

Hunta
08.09.2019, 16:41
а как тебе такое
Ну как как :) Аналоговый компьютер :) Думаю, не первый в истории человечества и точно не последний :)

Hunta
09.09.2019, 11:15
Тактовая - 5 МГц

Hunta
09.09.2019, 20:08
.RUN ZA:SPEED

ТЕСТ БЫСТРОДЕЙСТВИЯ

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 1248

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-ПАМЯТЬ
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 424

КОМАНДА УМНОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 88

КОМАНДА ДЕЛЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 336
.RUN ZA:SPEED

ТЕСТ БЫСТРОДЕЙСТВИЯ

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 1264

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-ПАМЯТЬ
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 424

КОМАНДА УМНОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 88

КОМАНДА ДЕЛЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 336
.


- - - Добавлено - - -

Не помню, писал или нет - в своём варианте прошивки поправил глупость писателей - теперь она принимает команды как в верхнем регистре (типа Т), так и в нижнем (t), а то я запарился Патроновский VT52 переключать :)

- - - Добавлено - - -

Из мира прекрасного:
http://www.KpXX.Ru/Днепр/Фото/Стенд.jpg

На мониторе не видно, там:



@T4* ДОСТУПНОЕ ОЗУ - 3,7 M @
ИДЕТ ПРЯМАЯ ЗАПИСЬ
ИДЕТ ЧТЕНИЕ И ОБРАТНАЯ ЗАПИСЬ
ИДЕТ ЧТЕНИЕ ОБРАТНОЙ ЗАПИСИ
@
@ 173000
@B
$MY0

@ 140164
@P
RSX-11M-PLUS V4.6 BL87


>
DEV
VF0: Offline Loaded Type=unknown
VF1: Offline Loaded Type=unknown
VF2: Offline Loaded Type=unknown
VF3: Offline Loaded Type=unknown
TT0: [1,54] [1,54] - Logged in Loaded
TT1: Offline Loaded
VT0: Offline Loaded
RD0: Loaded
MT0: Offline Loaded Type=unknown
MT1: Offline Loaded Type=unknown
LP0: Offline Loaded
NL0: Offline Loaded
MY0: Loaded Type=unknown
Seek_Optimization=Nearest:0.

MY1: Offline Loaded Type=unknown
Seek_Optimization=Nearest:0.

WQ0: Offline Loaded Type=unknown
Seek_Optimization=Nearest:0.

WQ1: Offline Loaded Type=unknown
Seek_Optimization=Nearest:0.

WQ2: Offline Loaded Type=unknown
Seek_Optimization=Nearest:0.

WQ3: Offline Loaded Type=unknown
Seek_Optimization=Nearest:0.

ZF0: Offline Loaded Type=unknown
Seek_Optimization=Nearest:0.

TI0:
CO0: TT0:
CL0: TT0:
SP0: MY0:
LB0: MY0:
SY0: MY0:
>

AFZ
13.09.2019, 08:01
Все-таки, покажи, что выдает SPEED.SAV. Если что, она есть в HDSYS.DSK в эмуляторе Патрона, на том самом диске, который загружается дефолтно.

Hunta
13.09.2019, 08:54
https://zx-pk.ru/threads/30345-ms1201-2018.html?p=1026319&viewfull=1#post1026319

AFZ
13.09.2019, 21:33
КОМАНДА СЛОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 1248Круто! Это типа 0WS, да? У СуперМакса удачная заводская 1201.03 показывает столько, будучи основательно разогнанной - не то до 6.3 МГц, не то до 6.9, не помню точно. А если разгонится твоя, вообще летать будет!..

Hunta
14.09.2019, 08:39
Это 5 МГц на статике без ожидания. На шести предположительно покажет полтора миллиона, но надо кварц менять
На 5-ти вроде все мои ВМ3 заводятся, из предыдущих опытов, на 6-ти - надо подбирать.

ra3qdp
14.09.2019, 10:07
а если DHRY запустить ?

Hunta
14.09.2019, 10:14
Не интересно

AFZ
14.09.2019, 17:35
Не помню, писал или нет - в своём варианте прошивки поправил глупость писателей - теперь она принимает команды как в верхнем регистре (типа Т), так и в нижнем (t)Может они сочиняли это на СМ-ке с 7-битным терминалом КОИ7 НС ? Тогда у них было не B/b, а B/Б, и это могло иметь какой-то смысл. Особенно в случае ^/Ч...

Hunta
14.09.2019, 18:19
у них было не B/b, а B/Б, и это могло иметь какой-то смысл
Возможно. Но код то работает не на СМ и (особенно в эмуляторе) достаёт, когда нажимаешь кнопку, а в ответ тишина... потому что эмулятор в очередной раз вырубил CAPS

AFZ
14.09.2019, 18:36
На ДВК с клавой МС7004 оно работало без вопросов. А эмуляция VT52 у Патрона таки да, прихрамывает. Тем более, этот VT52 эмулирует 15ИЭ-00-013. Возможно, тем, кто за ним много работал, он и навевает тёплые ностальгические чувства, но, например, меня он конкретно раздражает. Ни в реале терпеть не мог 15ИЭ, ни в эмуляторе...

ra3qdp
14.09.2019, 22:16
Не интересно
почему ?

Hunta
14.09.2019, 22:34
почему ?
Чего интересного в синтетическом тесте

ra3qdp
15.09.2019, 09:17
Вы лично занимались исследованием частоты использования разных команд в типичных программах ? Если да, то поделитесь своими результатами и чем Ваши результаты отличаются от других ? Да и зачем потом пересчитывать средний (синтетический) показатель из результатов для отдельных операций ?
В реальных программах ведь разные команды с разной частотой используются. Синтетический тест и показывает результат наиболее близкий к реальному на реальных программах. Да и померить для Вас никакого труда не составляет. Неужели нельзя это сделать, если просят ?

Hunta
15.09.2019, 09:19
Неужели нельзя это сделать, если просят ?
Когда как. В данном случае - нет.

- - - Добавлено - - -


Синтетический тест и показывает результат наиболее близкий к реальному на реальных программах.
Это Ваше мнение. Оно не совпадает с моим.

Hunta
15.09.2019, 12:56
Что бы закрыть В ЭТОЙ ТЕМЕ обсуждение ВСЕХ синтетических тестов, конкретно DHRSTONE и конкретно его реализации DHRY.SAV, результаты:



***** ДОСТУПНОЕ ОЗУ - 3,7 M *
@ 001000
@B
$ZF0

.RUN ZA:DHRY

DHRY v3.0 - Dhrystone (1.1)
This machine benchmarks at 278 dhrystones/second.

.RUN ZA:DHRY

DHRY v3.0 - Dhrystone (1.1)
This machine benchmarks at 278 dhrystones/second.

.
@ 153214
@B
$ZA0

.RUN ZA:DHRY

DHRY v3.0 - Dhrystone (1.1)
This machine benchmarks at 300 dhrystones/second.

.DHRY

DHRY v3.0 - Dhrystone (1.1)
This machine benchmarks at 300 dhrystones/second.

.
@ 000000
@B
$ZF0

.BOO ???

.RUN ZA:DHRY

DHRY v3.0 - Dhrystone (1.1)
This machine benchmarks at 214 dhrystones/second.

@ 134316
@B
$ZA0

.BOO ???

.RUN ZA:DHRY

DHRY v3.0 - Dhrystone (1.1)
This machine benchmarks at 278 dhrystones/second.


Поскольку я НЕ ЗАИНТЕРЕСОВАН в обсуждении результатов теста, результаты которого считаю не адекватными, прочитайте ВНИМАТЕЛЬНО ниже написанное

- плата и процессор во всех случаях один и тот же
- информация о том, какой монитор загружался - скрыта НАМЕРЕННО, оставлена только информация - с какого устройства была загрузка
- любая попытка обсуждать результаты ЗДЕСЬ после этого будет считаться флудом. Заводите свою тему и хоть заобсуждайтесь

ЕЩЁ РАЗ - Заводите свою тему и хоть заобсуждайтесь

- - - Добавлено - - -

Что бы ещё больше добить полезность результатов DHRY.SAV



.RUN ZA:DHRY

DHRY v3.0 - Dhrystone (1.1)
This machine benchmarks at 312 dhrystones/second.

.


Плата та же, проц тот же, устройство загрузки ZD (аналогично ZA, отличия в драйвере - другой адрес регистров), система другая.

"Dhrystone — синтетический тест производительности компьютеров, разработанный в 1984 году Reinhold P. Weicker. Нацелен на тестирование системной (целочисленной) производительности процессоров общего назначения."

Разброс в результатах порядка 45 процентов. Очень показательно в плане бесполезности использования для тестирования.

И нет - это НЕ ПРИГЛАШЕНИЕ обсуждать dhrystone в этой теме

ra3qdp
15.09.2019, 13:44
https://zx-pk.ru/threads/30345-ms1201-2018.html?p=1026319&viewfull=1#post1026319
тогда давайте обсудим это. Почему результат немного разный ?

Hunta
15.09.2019, 13:55
тогда давайте обсудим это. Почему результат немного разный ?

это НЕ ПРИГЛАШЕНИЕ обсуждать dhrystone в этой теме

Я написал не по русски, что мне это не интересно?
Я написал не по русски - заводите свою тему?

Это было последнее предупреждение. Даже ответ на это моё сообщение приведёт к результатам.

AFZ
26.09.2019, 21:07
Кстати, а как там у тебя решено с адресной частью цикла МПИ? Как я понял, у всех наших камешков, кроме 1801ВМ1, адресная часть цикла тоже (частично) асинхронная, то есть она продолжается до тех пор, пока не придет сигнал "Адрес принят" - у ВМ3 это SSYNC. Как с ним манипулируют? Первое, что приходит в голову - это завернуть туда SYNC, хотя кое у кого на аналогичные входы отдают просто высокий уровень.

А еще, как я догадываюсь, у скоростных процессоров, вроде 1836ВМ3, быстрая память на плате и быстрая электроника, которая ее обслуживает, может делать укороченную адресную часть цикла, а при выдаче адреса в корзину, можно выдать и полные 250 нс адресной части.

А как это делается у тебя, на твоей плате?

Hunta
26.09.2019, 22:09
Насколько я в курсе - всё, что находится на плате, считается быстрым и ответ идёт сразу, а то, что в корзине - медленным

Elias
17.10.2019, 15:44
Здравствуйте.
Плата интересная, но возможно ли получить исходники как с прошлой версией платы?
Хочу собрать для своих экспериментов...

Hunta
17.10.2019, 17:10
Здравствуйте.
Добрый день.

но возможно ли получить исходники как с прошлой версией платы?
Насколько я в курсе, исходники так же будут доступны (все - включая прошивку CPLD, исходник ПЗУ и исходники всех драйверов), но - плата пока в процессе допиливания - причём всех составляющих.
Если сильно хочется железо - можете пообщаться на барахолке с автором, если он не против, я тоже отдам свою часть

AFZ
26.10.2019, 08:17
Поскольку в той теме это оффтопик, отвечаю сюда.


Ещё раз - у нас что, LBA так же снято с производства, как и CF??Ну что ты прикидываешься не пойми кем? Какая разница: цилиндры-головки-сектора или LBA? По-любому, это дисковый адрес на физическом носителе. И сравнительно доступных вариантов всего два: или ты сам воюешь с этими адресами, своими средствами, или ты отдаешь эти действия виндам/линюхе и FATFS.

Мне глубоко плевать, где там на носителе лежат нужные данные - большая ОС писюка любезно разложила их для меня туда, куда сочла удобным, а FATFS предоставила удобную абстракцию адресации в виде смещения от начала файла, то есть своего рода LBA-адресацию уже для PDP-11, позволив мне интерпретировать номер блока, передаваемый драйверу от ОС, как своего рода LBA - сдвинул его влево на 9 разрядов, и отдал FATFS в качестве смещения в файле. Все. Не знаю я ни дисковых адресов, неважно, LBA они, или C-H-R, ни того, какой там носитель - IDE, SATA, SD-card или вообще какой-то чёрт в ступе - всё это мне глубоко фиолетово, об этом позаботилась FATFS, а до этого - винда или линюха.

Ты же желаешь заниматься этой фигнёй сам. Флаг в руки!

Hunta
26.10.2019, 10:03
Ну что ты прикидываешься не пойми кем?
Похоже, не пойми кем прикидываешься ты


ты сам воюешь с этими адресами
С какими адресами я воюю? Мне прилетел номер блока, я этот номер блока и отдаю в регистры. Какой вообще цилиндр-головка-сектор на флеш памяти, ты о чём, болезный?


Флаг в руки!
Так чего уже полгода как переживаешь? Полгода нудишь, что твой способ лучше и предлагаешь идти по нему. Я тебе хоть раз предложил пойти по моему пути? Вот и отвали и не пиши больше про него.

AFZ
27.10.2019, 07:54
С какими адресами я воюю? Мне прилетел номер блока, я этот номер блока и отдаю в регистры. Какой вообще цилиндр-головка-сектор на флеш памяти, ты о чём, болезный?Ага, два раза! Прилетел тебе номер блока для ZF6:, и ты отдал его прямо в регистры CF-карты? А потом для ZF0:...


Так чего уже полгода как переживаешь?Так обидно же. Замечательный проект, а с дисками какие-то допотопные решения...


Вот и отвали и не пиши больше про него.С толстым удовольствием!

Hunta
27.10.2019, 09:22
Прилетел тебе номер блока для ZF6:, и ты отдал его прямо в регистры CF-карты? А потом для ZF0:...


LET R5 := CFCQE ; Get current queue element

LET CMD := #CS.RD ; Read command

LET R1 := Q$WCNT(R5) ; Word count (positive - reading, negative - writing)

IF RESULT IS MI THEN ; Reading?

LET R1 := - R1 ; No, writing, invert word count
LET CMD := #CS.WT ; Write command

END

LET R4 := R4 + #P$STAT-P$CSR2

CALL CFWAIT

; 1. P$DH - 34

.ASSUME P$CMD EQ P$STAT
.ASSUME P$DH EQ <P$CMD-2>
LET -(R4) := #DH.PRM ; Master

; 2. P$CYLH - 32

LET R0 :B= Q$UNIT(R5) ; Unit
LET R0 := R0 OFF.BY #^C<7> ; number

LET R3 :B= Q$2UNI(R5) ; 10..77 ?
IF RESULT IS MI THEN ; MI - yes
LET R3 :B= NOT R3
END
LET R3 := R3 OFF.BY #^C<Q.2MSK> R.SHIFT 1 ; High 3 bits of unit number mask
; to proper position
LET R0 :B= R0 SET.BY R3 ; High and low bits of unit number

.ASSUME P$CYLH EQ <P$DH-2>
LET -(R4) := R0 ;

.ASSUME Q$BLKN EQ 0
LET R0 := (R5) ; Block number

; 4. P$CYLL - 30

.ASSUME P$CYLL EQ <P$CYLH-2>
SWAB R0 ; Block number - cyl low - high byte .. to low byte
LET -(R4) := R0

; 3. P$SNUM - 26

.ASSUME P$SNUM EQ <P$CYLL-2>
SWAB R0 ; Block number - sector - high byte .. to low byte
LET -(R4) := R0 ; Block number - sector - low byte

; 5. P$SCNT - 24

LET R2 := R1 + #^O<377> ; round up to next sector count
SWAB R2 ; .. to low byte
.ASSUME P$SCNT EQ <P$SNUM-2>
LET -(R4) := R2

LET R2 := Q$BUFF(R5) ; Buffer address

; 6. P$CMD - 36

LET R4 := R4 + #P$STAT-P$SCNT

LET (R4) := CMD ; 36

Ты как обычно - не знаешь, о чём говоришь

- - - Добавлено - - -


Так обидно же. Замечательный проект, а с дисками какие-то допотопные решения...
Представляешь - ещё и самодостаточный - человек берет одну(!) плату - и получает готовый комп. И с драйверами под не одну систему. Кроме графики - ничего докупать не надо. Но и над графикой ведётся работа.

Hunta
10.11.2019, 22:25
Вместо тысячи слов (http://www.KpXX.Ru/Днепр/КЦГД/Прототип.jpg)

SuperMax
11.11.2019, 03:34
Вместо тысячи слов (http://www.KpXX.Ru/Днепр/КЦГД/Прототип.jpg)
а подробнее ? проект открытый ?

AFZ
11.11.2019, 05:48
Вместо тысячи словКруто!. Единственное замечание - про прошивки ПЗУ КЦГД. Как я понимаю, место в ПЗУхах еще есть. Поэтому туда надо добавить 181-ю прошивку и сделать оперативный переключатель: 181 - 182 - (182+183+184). Дело в том, что для КЦГД есть масса софта, рассчитанного на прошивку 181, также есть (поменьше) софт, рассчитанный на прошивку 182. Софта для 182+183+184 гораздо меньше, но туда входит, допустим, АДОСовский Бейсик, еще что-то было интересное... В общем, нужны все три варианта и, ИМХО, желательно, чтобы переключать можно было не разбирая ДВК-шник...

В принципе, 182+183+184 для загружаемого софта ведет себя, практически, так же, как и чистая 182, только у чистой 182, как и у 181, и даже у КСМ, нажатие клавиши F3 останавливает вывод на экран на аппаратном уровне, повторное нажатие продолжает, железно, без потерь и пр. глюков. А у 183+184 по F3 вылезает меню, которое перекрывает несколько нижних строк, что очень мешает. Залез бы кто в эти 183-184, да подправил, чтобы меню вылезало, допустим, по <Shift-F3>, а простое нажатие F3 работало, как и раньше...

Hunta
11.11.2019, 05:57
а подробнее ? проект открытый ?
Подробностей пока нет.
Пока закрытый. Когда будет доведён до рабочего состояния - скорее всего будет открытый.

Hunta
11.11.2019, 22:38
У меня давно бродило (да собственно и сейчас пока ещё бродит) желание перевести описание прошивки для FPGA из графической схемы на VHDL - видимо, как программисту - текстовое описание чего либо, напоминающее программу, воспринимается у меня лучше, чем блок схема :)

В Квартусе есть инструмент для автоматического перевода - но он хорошо косячит. Прошлые попытки кончались не запускаемым в принципе кодом - или вообще слетало при попытке синтеза на ошибках или не прошивка была внешне не запускаемой.

На последнем варианте (точнее, теперь уже предпоследнем) во первых нюансы, связанные с особенностями VHDL, в графике были успешно пофиксины, а результат получился почти без ошибок. Четыре операторы были совсем не понятны, я рискнул их просто закомментировать, получившееся описание успешно синтезировалось и после прошивки были видно - что значительная часть функционала даже работает.

С учётом того, что после конвертации файл vhdl примерно на 90 процентов состоит из SYNTHESIZED_WIRE и логику было понять не реально, начал переименование сигналов в что то осмысленное и отслеживание логики. В процессе (начал вечером в пятницу) в воскресенье наткнулся на нечто непонятное в коде. После консультации было определено, что это косяк копи-паста.

Сегодня получил новый вариант прошивки. Хорошая новость - ввод/вывод с клавиатуры / на экран стал (по крайне мере пока) идеальным - вполне можно использовать SL - он у меня как тест был. Долго грешили на FPGA реализацию серийника, даже были какие то улучшения... А оказалось - проблема не там была

У меня есть пара вопросов к работе прошивки - поэтом продолжу копаться в VHDL :)

AFZ
12.11.2019, 07:48
Долго грешили на FPGA реализацию серийника, даже были какие то улучшения..Вы что, пару ВП1-065 тоже смоделировали? А зачем? Можно было сделать на параллельных регистрах, минуя последовательную передачу...

Hunta
12.11.2019, 08:28
Можно было сделать на параллельных регистрах
Ну да, куда же мы без советов. Только совет опять мимо
КЦГД - это ещё очень ранний концепт, а тема про 1201.2018
Когда хоть в каком то виде (пусть и с косяками) можно будет использовать - будет заведена отдельная тема.
Даже в мультиконтроллере ещё не весь функционал (хотя как плюс ещё 4 CF уже работает), поэтому только про CF на нём в этом теме. Будет реализован весь - тоже будет отдельная тема

Hunta
14.11.2019, 21:06
Случилось!!!!!

Схема прошивки из графического представления была переведена на vhdl и сегодня была найдена ошибка преобразования! Плата заработала на этом варианте описания прошивки!

Hunta
17.11.2019, 19:52
Э... В общем - невольный конфуз :) Об успешности я.. как бы поторопился :) На следующий вечер - полное фиаско - вообще отказалось запускаться после прошивки синтеза на том же файле.. Но... Вроде всё не так плохо и есть обнадежка. Но пока не проверю ещё раз завтра вечером (гыгыгыгыгы)... В общем, подожду писать - саксесс :)

Hunta
18.11.2019, 19:11
Ну что, теперь у меня больше уверенности в том, что получился рабочий файл после преобразования графики в текст :)

После того, как вроде как взлетевшая прошивка сказал блюэээээ, вернулся к предыдущему файлу, который не работал, но по крайне мере визуально хоть что то выдавал и начал пытать его. После очередного изменения прошивка сдвинулась в направлении АДавайтеПоработаем ещё и через какое то время меня, похоже, посетило внутреннее озарение, потому что потупив в один из моментов в экран минут пять, я вернулся к исходному VHDL (сразу после преобразования) и внёс буквально пять изменений - переопределил 4 сигнала, поправив ссылки со старого варианта сигналов на новые, и выкинул 4 строчки (явные косяки преобразование). После чего синтез, заливка - и вуаля!!

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

Минусы
- Я тааааак продвинулся в красивом переименовании и причёсывании сигналов...

В общем - хороший прорыв. Работа продолжается.

И благодаря прорыву (а так же - знакомству с одним из вариантов, на котором может быть посажено преобразования) можно будет вернуться к прошивке мультиконтроллера. Ибо там я тоже сел на неработоспособном преобразовании. А с графической схемой, в отличии от vhdl, мне пока работать тяжелее.

Одна хотелка (не влияющая на работоспособность) пока не даётся...

xolod
18.11.2019, 22:08
Ждем, когда можно посмотреть на исходники.

Hunta
18.11.2019, 22:57
Ну, сами по себе без платы или хотя бы её схемы особого смысла не имеют. К тому же - я не совсем автор, так что только если автор решит выложить. Но пока работа над платой не завершена...

- - - Добавлено - - -

Вдогонку. Сейчас vhdl файл - это массовое скопление операторов типа такого.

SYNTHESIZED_WIRE_216 <= DFF_inst210 or SYNTHESIZED_WIRE_80;

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

Hunta
19.11.2019, 20:37
Однако :) На барахолке появилась интересная тема :)

- - - Добавлено - - -

Продолжаю шлифовать прошивку. Интегрировал одно существенное изменение из прошлого подхода. Во-первых - всё ещё работает, во-вторых - минус три макроячейки. Если сравнить с исходным графическим вариантом - то минус 11 макроячеек (было занято 243 из 256)

Hunta
20.11.2019, 20:59
Ради интереса попробовал COP/DEV/NOQ VM: NL: с замером времени. Получилось примерно 250 кб/с. Последний вариант драйвера был в районе 200-210 кб/с. Хм.. Стремиться особо некуда...

- - - Добавлено - - -

Не совсем прав. Стремиться есть куда - но не в PIO :)

Hunta
24.11.2019, 01:02
Продолжаю развлекаться с vhdl. Вроде как сегодня было неплохое изменение - прошивка стала работать стабильней, но учитывая недавний фэйл... Пока тестирую :)

xolod
24.11.2019, 09:27
Продолжаю развлекаться с vhdl. Вроде как сегодня было неплохое изменение - прошивка стала работать стабильней, но учитывая недавний фэйл... Пока тестирую :)

Жду доставки платы и присоединюсь к тестированию.

Hunta
24.11.2019, 10:02
Жду доставки платы и присоединюсь к тестированию.
Бластер есть? :)

xolod
24.11.2019, 11:15
Бластер есть? :)
Конечно для Altera и Xilinx.

Hunta
24.11.2019, 12:05
Конечно для Altera и Xilinx.
"Зер гут, Вальдемар, зер гут" :)
Надеюсь, программатор то же есть? :)

xolod
24.11.2019, 13:08
Однозначного!

Hunta
24.11.2019, 13:20
:):) Хорошо экипирован :) Мне не хватает паяльной станции, но для этого проекта она не горит :)

- - - Добавлено - - -

В первом сообщении - ссылка на исходники прошивки FPGA
Слегка приведу в порядок исходник ПЗУ и драйвера, выложу и добавлю ссылку. Ну и по мере изменений - буду добавлять версии

Hunta
25.11.2019, 20:52
Ню.. Я опять откатился к исходнику VHDL, только теперь внёс и предыдущее изменение (минус две страницы назад писал) и ещё одно новое.

Пока тесты говорят, что устранены две эпизодические проблемы.

Причёска VHDL (баааалин, я опять ТАААААК причесал код....) приостановлена.

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

Хотелка по прежнему на даётся...

- - - Добавлено - - -

Ээээ.... Больше слов нет...

.RUN ZF:SPEED

ТЕСТ БЫСТРОДЕЙСТВИЯ

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 1664

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-ПАМЯТЬ
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 416

КОМАНДА УМНОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 80

КОМАНДА ДЕЛЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 336
.

- - - Добавлено - - -

Или вот

.RUN ZF:SPEED

ТЕСТ БЫСТРОДЕЙСТВИЯ

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 1680

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-ПАМЯТЬ
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 416

КОМАНДА УМНОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 80

КОМАНДА ДЕЛЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 336
.

- - - Добавлено - - -

Если что, вот что было в прошлый раз:

.RUN ZA:SPEED

ТЕСТ БЫСТРОДЕЙСТВИЯ

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 1248

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-ПАМЯТЬ
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 424

КОМАНДА УМНОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 88

КОМАНДА ДЕЛЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 336
.RUN ZA:SPEED

ТЕСТ БЫСТРОДЕЙСТВИЯ

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 1264

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-ПАМЯТЬ
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 424

КОМАНДА УМНОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 88

КОМАНДА ДЕЛЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 336
.

- - - Добавлено - - -

Проц один и тот же, прошивка FPGA разная :)

- - - Добавлено - - -

Ишо в догонку. Клок - 5 МГц :)

- - - Добавлено - - -

Ну теперь надо делать кабель и цеплять к стенду VT220 :) Давно хотимый янтарный цвет :)

Hunta
26.11.2019, 10:07
Хм.. если поставить кварц на 24 МГц, тактовая будет 6 МГц и мы получим 2016 тысяч операций сложения регистр-регистр в секунду

Hunta
26.11.2019, 19:27
С янтаркой пока облом. Макс скорость у терминала 19200, а на этой или более низкой не проходит (по крайне мере пока) синтез прошивки гайки... Думаю...

xolod
26.11.2019, 21:02
С янтаркой пока облом. Макс скорость у терминал 19200, а на этой или более низкой не проходит (по крайне мере пока) синтез прошивки гайки... Думаю...
Посмотри вот это https://m.habr.com/ru/post/278005/
Может чем-то будет полезно.

Hunta
27.11.2019, 07:15
С терминалом и серийником, разбираюсь, а на затравку, после долгого перерыва... :


***** ДОСТУПНОЕ ОЗУ - 3,7 M *
@ 001000

@B
$ZF5

RT-11SB (S) V05.07
?KMON-F-File not found DK:STRTSB.COM

.BOOZF

XDT: 87

##T>G
RSX-11M-PLUS V4.6 BL87


>

>SAV /WB


RSX-11M-PLUS V4.6 BL87 1920.KW System:"KXX001"
>RED ZF1:=SY:
>RED ZF1:=LB:
>RED ZF1:=SP:
>MOU ZF1:"RSX11MPBL87"
>@ZF1:[1,2]STARTUP
>; PLEASE NOTE
>;
>; If you have not yet read the system release notes, please do so
>; now before attempting to perform a SYSGEN or to utilize the new
>; features of this system.
>;
c;
SET -- Inquire cannot determine
>;
>; Please ignore any random characters that may have printed on your
>; terminal just now. They came from a SET /INQUIRE=TI: command.
>; Evidently your terminal does not recognize escape sequences.
>; This will not affect the running of this command file.
>;
>* Please enter time and date (HH:MM DD-MMM-YYYY) [S]: 8:14 27-NOV-2019
>TIME 8:14 27-NOV-2019
>ACS SY:/BLKS=1024.
>CON ONLINE ALL
>ELI /LOG/LIM
>CLI /INIT=DCL/CTRLC/DPR="<15><12>/$ /"
>INS LB:[1,1]RMSRESAB.TSK/RON=YES/PAR=GEN
>INS LB:[1,1]RMSLBL.TSK/RON=YES/PAR=GEN
>INS LB:[1,1]RMSLBM.TSK/RON=YES/PAR=GEN
>INS $QMGCLI
>INS $QMGCLI/TASK=...PRI
>INS $QMGCLI/TASK=...SUB
>QUE /START:QMG
>INS $QMGPRT/TASK=PRT.../SLV=NO
>QUE LP0:/CR/NM
>START/ACCOUNTING
>CON ESTAT LP0:
>QUE BAP0:/BATCH
>QUE BAP0:/AS:BATCH
>@ <EOF>
>

Hunta
27.11.2019, 20:20
В драйвере для RSX всё таки есть ошибка. Была слабая надежда, что из проблем в прошивке гайке, но увы. Мой косяк. Ню, бум посмотреть. Драйвер похож на драйвер WQ, но и там осталась (правда, другая) неисправленная ошибка :)

С янтарником пока прогресса нет...

- - - Добавлено - - -

Монтирование системного диска при загрузке - 18-20 секунд
Подсчёт свободного места (на гигабайтном диске) - 63 секунды
Где то в этой теме вроде приводил цифры про WQ, но там был восьмигиговый диск.
Насколько мне помнится - монтирование системного диска при загрузке - порядка пяти минут.
Ну то есть в целом работает побыстрее :)

Hunta
28.11.2019, 09:40
Вместо тысячи слов... (http://www.KpXX.Ru/KBAHT4C/Железо/VT220/VT220.jpg)
... и одного романа :) (http://www.KpXX.Ru/KBAHT4C/Железо/VT220/VT220.mp4)

Пардон за качество, с утра, уже собираясь на работу. Переделаю на более качественное, возможно в грядущие выходные :)

И плюс ещё в том, что в наличии как RS232, так и токовая петля :) А RS232 вообще с переходником идеально лёг - даже паять ничего не пришлось :)

- - - Добавлено - - -

А, да, вдогонку. На самом деле цвет гораздо красивее :)

- - - Добавлено - - -

Полистал старые сообщения. Некоторое количество комментов по ним с учётом новых знаний.

По поводу кэширования. Смысла нет - сама по себе карта уделывает ВМ3 по скорострельности, даже на PIO режиме под RT отставание от VM не сильно значительное. А VM - это копирование память-память, то есть по сути - та же кэш память. Ну то есть под RSX включить можно - думаю, операции с каталогами будут побыстрее, но учитывая скорострельность памяти - вот ООООООЧЕНЬ сильно подозреваю, что реализация DMA уделает всё и всех.

По поводу фразы "как я уже писал, была инфа (про подключенную карту CF), что оно работает с фантастической скоростью - на уровне драйвера VM:". Ну это точно подтвердилось, вот только оказалось, что скорость VM... как бы это помягче сказать - сильно преувеличена в ощущениях :) 250 кб/с примерно. Против (примерно) 210 кб/с для CF. Ну да, получается скорости не в разы отличаются :)

По поводу установки режима PIO. С учётом скоростей ВМ3 и CF - особого смысла нет, да и карта исходно работает в PIO4.

Hunta
28.11.2019, 11:50
Погонял тесты. Пока всё говорит о том, что ошибки в прошивке исправлены - даже после замены реализации uart-а проблем с выводом на экран или ошибок записи на CF не было

Hunta
29.11.2019, 08:20
Попытка передать цвет свечения (http://www.kpxx.ru/KBAHT4C/Железо/VT220/VT220-02.jpg)
Попытки будут продолжаться :)

Hunta
30.11.2019, 15:25
Вспомнить молодость... :) (http://www.kpxx.ru/KBAHT4C/Железо/VT220/VT220-03.jpg)

Hunta
01.12.2019, 11:41
Вопрос по зависанию RT-11 по Ctrl/S-Ctrl/Q


Что было?
Проблема в реализации Uart. Все детали пока не понятны, только один момент нашёл. К сожалению, меня сбило то, что в RSX всё работает - я и грешил на RT, потому что всё остальное тоже самое. Начал писать тестовые проги и - вылезло.

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

Сейчас есть два варианта реализации модуля Uart:
- на verilog-е (я его очень плохо знаю, поэтому что то поправить не смогу) - у него проблема раздуваемости синтеза при увеличении соотношения тактовый клок к скорости работы порта
- реализация на VHDL - ну а в ней, похоже, просто неудачный алгоритм, приводящий в определённых сценариях к ошибкам.

Есть ещё реализация от PDP-2011, но боюсь там размер синтезированного большой получится.

Попробую VHDL реализацию привести в чуйства

BYTEMAN
01.12.2019, 12:08
Хорошая картинка у терминала, мой 220-й даёт гораздо более бледную и мутную картинку, надо будет забраться внутрь и подкрутить немного...
https://photos.app.goo.gl/ZzUJ7wK8J9bnzkY76

Hunta
01.12.2019, 13:05
Хорошая картинка у терминала
Да, экземпляр пока работой и картинкой радует :) Первый раз такой люминофор видел где-то в 84-86 году, тогда сильно захотелось :) Вот, не прошло и 40 лет :D
Руки дойдут - попробую в прошивку добавить (или заменить один из) русские буквы. Ну а на клавиатуру - нанести :)

BYTEMAN
01.12.2019, 17:44
А у него разве нельзя шрифт подгружать снаружи через ESC?

Hunta
01.12.2019, 18:06
А у него разве нельзя шрифт подгружать снаружи через ESC?
Можно. Но если удастся прописать в ПЗУ - то как бы и не надо будет :)

Hunta
01.12.2019, 21:42
Я очень умный и доставучий, но ещё и тормозной :) Определил причину косяка, который Андрей упомянул в теме продажи 1201.2018:

"Изменений два
1. Изменён модуль консольного порта. На тот, который в проекте был изначально
Вернулся некритичный глючок. При старте платы в надпись ****Доступное ОЗУ - 3.7М* бывает, что добавляется лишний символ между
первыми звёздочками. Но появилась возможность изменять скорость порта."

Комментарии. Во первых, не добавляется, а рисуется вместо звёздочки разная (зависит от скорости порта) хрень. Во вторых - у меня он стабилен.

По идее, причину косяка надо ещё вчера вычислить, но.. Уж как получилось :) Причина тривиальна (но как раз такие имеют привычку хрен ловиться).

Во первых - хрень рисуется вместо третьей звездочки. Во вторых - саму третью звёздочку рисует T3. А происходит следующее. Т3 отправил(!!) звёздочку в консольный порт (типа я начал работать) - она начала (!!) передаваться, в это время T3 завершается свою работу (там проверка прерывания по несуществующему адресу -всё быстро заканчивается) и возвращается в родителя (T0), а родитель уходит на вычисление - скоко у нас памяти то есть?? - и в начале этого кода выполняется команда RESET. Опаньки!! Все быстро сбрасываются, включая серийник, который успел(!!) начать передачу и вдруг резко замолчал. С другой стороны (терминал) об этом ни сном ни духом - для него передача идёт и он рисует то, что считает принятым. То есть у меня на скорости 19200 прилетал код 376, который VT52 Патрона рисовал как русское Ч, а VT220 - перевёрнутый знак вопрос (вроде у него это - я не понял, чё принял, нарисую что смогу :D ). С моей точки зрения - это неправильно - если серийник начал передачу - пусть закончит. По сути устройство общения с терминалами в PDP состоит из двух половинок - интерфейсная часть на шине и интерфейсная часть на последовательной линии. То есть первую половину благополучно сбрасываем (в 1201.2018 тут всё оки), а вторую не трогаем (злобно порезал весь код сброса). Теперь у меня претензий к выводу нет.

Осталось разобраться с зависанием по Ctrl/S.

AFZ
02.12.2019, 11:50
в начале этого кода выполняется команда RESET. Опаньки!! Все быстро сбрасываются, включая серийник, который успел(!!) начать передачу и вдруг резко замолчал. А ВП1-035 и -065 по сигналу INIT не сбрасываются. Точнее, у них по INIT'у сбрасываются только триггеры разрешения прерываний, а остальное продолжает работать. Сбрасывается оно только низким уровнем на К ПОСТ Н В (DCLO, да?). И, ИМХО, это скопировано с чего-то оригинального, т.е. так вело себя оригинальное железо PDP-11.

Vslav
02.12.2019, 12:20
Осталось разобраться с зависанием по Ctrl/S.
А по Ctrl/Q не отвисает?

Hunta
02.12.2019, 12:37
А по Ctrl/Q не отвисает?
Так если бы отвисало - это было как бы штатное поведение - Ctrl/S приостановить выводы, Ctrl/Q - продолжить. Прикол ещё в том, что под RSX никаких проблем, написанная тестовая прога, работающая по прерыванию или по опросу - никаких проблем, RT - при поиске проблем проверил даже версию 5.0 (другие - руки не дошли, да и подозреваю, что будет то же самое) - зависон. И с VT220 прикол небольшой. Если на экран ничего не выводится, то факт нажатия Ctrl/S Ctrl/Q он фиксирует, но в линию ничего не отправляет. Несколько затрудняет залезание в ядро RT, но мысли есть - как.

hobot
02.12.2019, 15:46
И с VT220 прикол небольшой. Если на экран ничего не выводится, то факт нажатия Ctrl/S Ctrl/Q он фиксирует, но в линию ничего не отправляет.
не могу и не хочу вникать, но звучит как описание заведомо неправильной работы

Hunta
02.12.2019, 16:55
не могу и не хочу вникать, но звучит как описание заведомо неправильной работы
Аха. Конечно. Лучше бы не писал.

Hunta
05.12.2019, 20:20
Теперь у меня претензий к выводу нет.
Эт я погорячился. Нашлись претензии к выводу :) Собственно, пока воюю - и с учётом уже налетания - ещё и тестировать буду :)
Пока разбираюсь с выводом. Потом будет ввод

Hunta
06.12.2019, 08:59
Вроде как нащупал причину и устранил её - для вывода. Теперь тесты.

Hunta
06.12.2019, 19:51
Несмотря на все мои издевательства (надо текстом уарта), вывод продолжает держаться. Но до главного теста (издевательства над текстом основной прошивки) пока не добрался..
Ввод по прежнему виснет, предположения есть, до проверок (предположения) ещё не добрался.

Unik
07.12.2019, 19:08
Стал обладателем такой платы :)
Подскажите, как записать образы на CF карту? Карты есть только на 256МБ..

Hunta
07.12.2019, 19:59
Стал обладателем такой платы
Поздравляю :)


Подскажите, как записать образы на CF карту?
Ну, самый просто способ - использовать что то типа ISOBuster.
Как вариант - делаете под эмулятором Патрона образ (на 32 мб) с нужным софтом, потом заливаете (в начало) CF карты.
То есть ZF0: - для переноса, всё остальное - для чего то рабочего.

Unik
07.12.2019, 20:44
Получилось, спасибо! Оно даже грузиться :)
Здесь так же как в проекте PDP2011 организовано хранение данных?
Т.е. пишем первый образ начиная с 0 сектора, а последующие с промежутком в 256 байт?

Hunta
07.12.2019, 21:30
Э.. не понял про 256 байт.. Стандартные сектора по 512 байт
Разбиение на разделы-части зависит от драйвера, но пока реализован вариант - тупо бьём на части по 32 мб, то есть на карте 256 мб будет доступны ZF0:, ZF1:, ..., ZF7:

Titus
07.12.2019, 21:47
... и одного романа
Это у VT220 такой прикольный апапратный скроллинг?
А эмулятор этого VT220 есть?

Hunta
07.12.2019, 23:15
Это у VT220 такой прикольный апапратный скроллинг?
Один из. Собственно, у УКНЦ такой же или очень похожий.
Вроде где то в каких то терминальный прогах попадался в списке

hobot
08.12.2019, 00:06
Собственно, у УКНЦ такой же или очень похожий.

А эмулятор этого VT220 есть?

в рабочей среде ADOS для УК-НЦ есть вот такое )

https://pic.maxiol.com/thumbs2/1575752790.1520060670.20191207205806040.png (https://pic.maxiol.com/?v=1575752790.1520060670.20191207205806040.png&dp=2)

Titus
08.12.2019, 00:46
в рабочей среде ADOS для УК-НЦ есть вот такое )
Мне интересен эмулятор родного VT220, а не в составе УКНЦ или чего-то там еще.

Hunta
08.12.2019, 01:09
Ну, поиск даёт много результатов

Unik
08.12.2019, 09:09
Э.. не понял про 256 байт.. Стандартные сектора по 512 байт

Это я не так понял :v2_dizzy_facepalm: Там о другом написано, а я почему то так запомнил..

Hunta
08.12.2019, 09:36
Там о другом написано, а я почему то так запомнил
Видимо, Вы о дисках RL01-RL02, которые действительно выделяются своими 256-байтными секторами :) Ну, у CF стандартный 512-байтный, так что с точки зрения систем - никаких проблем.

Будут ещё вопросы по .2018 - пишите.

И пока у этой платы остаётся проблема - под RT-11 нельзя использовать Ctrl/S для остановки вывода - гарантированное зависание. В чём проблема - пока не понятно, особенно учитывая, что в тестовой программе и в RSX - этой проблемы нет. Хотя в RSX выявилась своя проблема с автоопределением VT220. Ищу, думаю. Судя по Вашему сайту, у вас есть бластер для Altera-овских FPGA? Тогда надо будет просто перепрошить, как только :)

TomaTLAB
08.12.2019, 12:08
Это у VT220 такой прикольный апапратный скроллинг?
Ага, у 320-го такой же есть, отдельной "птичкой" в настройках включается, возможно и в более ранних дековских терминалах была эта фишка.