PDA

Просмотр полной версии : UNIX для УКНЦ!!!



xakep_tm1
31.03.2015, 21:49
Ура товариши! Свершилось! У меня получилось запустить на УКНЦшке настоящий LSX Unix!!!
Были взяты за основу исходники ядра из образов LSX Unix http://www.mailcom.com/lsx/
Постарался оставить систему максимально оригинальной. Небольшие изменения внёс в код ядра,
написал драйвер дисковода, и загрузчик системы с дискеты.
Образ системы и инструкции прилогаются, можете смело записывать её на дискету и запускать на реальной УКНЦшке!!!

Patron
31.03.2015, 23:02
Образ системы и инструкции прилагаются, можете смело записывать её на дискету и запускать на реальной УКНЦшке!!!В родном LSX есть такой момент, что размер файловой системы на диске свопа нарочно уменьшен на количество нужных для свопа блоков ( именно поэтому своп в LSX осуществляется в конец диска ).

В bkunix при портировании LSX этот момент не учли.

DJs3000
31.03.2015, 23:37
Класс! Прям захотелось достать свою УКНЦ и завести юникс :)
А есть какие приложения под эту систему?
А если какую раннюю FreeBSD попробовать завести на УКНЦ?) там по идеи должен быть конфиг ядра под PDP11 ну под VAX думаю точно есть.

xakep_tm1
31.03.2015, 23:48
Patron Да вы правы! Но в моём порту это учтено. И мой проект никак не связан с bkunix! Если честно, то я так и не увидел рабочий unix на БКшке.
В текущей сборке используется конфигурация с одним дисководом и на ней размер файловой системы 1440 блока, а размер дискеты 1600 блоков, остальное для свопа. Хотя в оригинале LSX Unix использовались две дискеты размером 500 блоков - первая с основной системой, а вторая монтировалась на /USR и на ней же был своп.
DJs3000 Данная сборка является пробной, в дальнейшем я намерен основательно заняться системой, так как она использует только половину возможностей УКНЦшки. Хочется расширить её и уже есть кое какие наработки.
И обязательно пробуйте на реальной УКНЦшке! Потому что в эмуляторе ощущения совсем не те что на живой машине! И пожалуйста отпишитесь о результатах, получилось ли у вас её запустить. Задавайте вопросы, я буду рад на них ответить.
И ещё у меня есть личная простьба к товарищу Patron`у, пожалуйста поделитесь исходниками RT-11 DSK Total Commander wcx плагина. На их основе хотел бы сделать такой же, только для файловой системы UNIX v6, это мне очень поможет и ускорит дальнейшую разработку!
Кстати у кого нет дисковода, но есть осединение с PC через СТЫК С2, то в ближайшее время могу выложить систему и для вас!
FreeBSD не получится так как на УКНЦ нет MMU

hobot
01.04.2015, 00:28
xakep_tm1, очень интересный и нужный проект!!!

- в связи с этим 1 пожелание \ вопрос !!!
Нужно(!), но планируется ли поддержка IDE ЖД УК-НЦ
Получится ли с этой системой прошивку WD и стандартный КЖД УК-НЦ использовать (теоретически) ?

А в целом сама идея, задумка и реализация - ИМХО - очень мощно! )))

Patron
01.04.2015, 01:18
поделитесь исходниками RT-11 DSK Total Commander wcx плагина. На их основе хотел бы сделать такой же, только для файловой системы UNIX v6Я делал плагин для образов RT-11, взяв за основу исходник ISO-плагина (http://emulator.pdp-11.org.ru/misc/iso_source.zip) ( более поздняя версия исходников ISO-плагина ЗДЕСЬ (http://wincmd.ru/files/wcx_iso_1.7.7.0_src.zip) ) - там всё просто и понятно.

---------- Post added at 01:18 ---------- Previous post was at 00:38 ----------

Автор LSX описал систему в статье UNIX on a Microprocessor. (Lycklama, H.) (https://archive.org/download/bstj57-6-2087/bstj57-6-2087.pdf) в легендарном сборнике статей по классическим Юниксам: Bell System Technical Journal - 1978.07: UNIX Time-Sharing System (http://emulator.pdp-11.org.ru/misc/1978.07_-_Bell_System_Technical_Journal.pdf).

xakep_tm1
01.04.2015, 01:28
Patron, спасибо за совет.
hobot, очень хороший вопрос, я бы с удовольствием этим бы занялся, но пока у меня нет такой платки, хотел заказать ещё до нового года у dk_spb, но до сих пор ничего. Ещё бы помогли делу документация или хотябы исходники прошивки контроллера с комментариями, ну или же исходники драйвера.

hobot
01.04.2015, 01:33
Ещё бы помогли делу документация или хотябы исходники прошивки контроллера с комментариями, ну или же исходники драйвера.
http://archive.pdp-11.org.ru/ukdwk_archive/ukncbtlwebcomplekt/Other/OlegH_WD/
Автор драйвера и прошивки Олег Ховайко (C) на форуме присутствует, просто появляется крайне редко http://zx-pk.ru/member.php?u=5864

MM
01.04.2015, 04:34
1. Уникс для ДВК-2 вполне по силам было допилить и для УКНЦ - главное здесь, видимо, желание, но оно и есть самый большой дефицит нынче.
2. Если кто из реальных практиков ( не теоретиков ) по части УКНЦ - напишите прямо здесь типовую карту адресов главного процессора УКНЦ с точностью до байта - есть интересная идея, не сильно затратная. Паяльник и МГТФ - потребуются.

xakep_tm1
01.04.2015, 10:34
1. Уникс для ДВК-2 вполне по силам было допилить и для УКНЦ - главное здесь, видимо, желание, но оно и есть самый большой дефицит нынче.
На ДВК тоже могу портировать эту систему, просто хочется сначала доделать эту, а потом уже её плодить.

2. Если кто из реальных практиков ( не теоретиков ) по части УКНЦ - напишите прямо здесь типовую карту адресов главного процессора УКНЦ с точностью до байта - есть интересная идея, не сильно затратная. Паяльник и МГТФ - потребуются.
Напишите пожалуйста вашу идею, я проверю её на своей машинке! вы всех заинтриговали! :)

Patron
01.04.2015, 13:42
спасибо за советНачинать надо с изучения WCX Writer's Reference (http://ghisler.fileburst.com/plugins/wcx_ref2.21se.zip).

---------- Post added at 13:16 ---------- Previous post was at 13:01 ----------

Если кто-то ещё не видел родные исходники LSX - LSX.src (http://emulator.pdp-11.org.ru/misc/LSX.src.zip)

---------- Post added at 13:42 ---------- Previous post was at 13:16 ----------


Если честно, то я так и не увидел рабочий unix на БКшке.После анализа кода bkunix у меня сложилось впечатление, что авторов подкосила "мистическая тайна терминального буфера".


В LSX терминальный буфер cfree[NCLIST] описан и реализован в файле usr/kl.c



/*
* The actual structure of a clist block manipulated by
* getc and putc (mch.s)
*/
struct cblock {
struct cblock *c_next;
char info[6];
};

/* The character lists-- space for 6*NCLIST characters */
struct cblock cfree[NCLIST];

/* List head for unused character blocks. */
struct cblock *cfreelist;

/*
* Initialize clist by freeing all character blocks, then count
* number of character devices. (Once-only routine)
*/
cinit()
{
register int ccp;
register struct cblock *cp;

ccp = cfree;
for (cp=(ccp+07)&~07; cp <= &cfree[NCLIST-1]; cp++) {
cp->c_next = cfreelist;
cfreelist = cp;
}
}



В bkunix всё почти так же, но есть и небольшая "оптимизация" ( src/sys/dev/kl.c ):



/*
* The actual structure of a clist block manipulated by
* getc and putc (mch.s)
*/
struct cblock {
struct cblock *c_next;
char info[6];
};

/* The character lists-- space for 6*NCLIST characters */
struct cblock cfree[NCLIST];

/* List head for unused character blocks. */
struct cblock *cfreelist;

/*
* Initialize clist by freeing all character blocks, then count
* number of character devices. (Once-only routine)
*/
void
cinit()
{
register struct cblock *cp;

for (cp=cfree; cp <= &cfree[NCLIST-1]; cp++) {
cp->c_next = cfreelist;
cfreelist = cp;
}
}


Очевидно, что оба варианта совпадают для случая, когда массив cfree[NCLIST] выровнен по 8-байтовой границе. По жестокой случайности в актуальном коде bkunix это именно так и поэтому всё работает, но поэтому же любые изменения в размере кода, нарушающие выравнивание массива cfree[NCLIST] - приводят коварным и неуловимым глюкам.

MM
01.04.2015, 15:26
На ДВК тоже могу портировать эту систему, просто хочется сначала доделать эту, а потом уже её плодить.

Напишите пожалуйста вашу идею, я проверю её на своей машинке! вы всех заинтриговали! :)

Сначала хотелось бы иметь достоверную карту памяти Центрального процессора...
А идея не нова - прицепить к УКНЦ блок ВМ3А с 2-мя метрами батарейного СОЗУ - вроде как может и нечто более серьезное пойти.
Блок могу доработать существенно по его карте адресов, главное - что бы многочисленные регистры процессора 1801ВМ3А не пересекались с железкой УКНЦ.
Весьма существенное требование для блока ВМ3А - свободные адреса 173000-173777, менее серьезное требование - свобода в адресах 160000-167777. Но и эти параметры обсуждаемы.

xakep_tm1
01.04.2015, 17:50
Patron, я думаю что там не мало факторов было которые мешали окончить проект. Там требовалось основательно перелопатить код ядра чтобы адаптировать именно под БК. Тем более их много разновидностей конфигураций, а УКНЦ одна.

MM, Если я вас правильно понимаю, то там достаточно простая карта памяти:
0-157777 область ОЗУ
160000-177777 это уже область HALT там обработчики прерываний, пультовый отладчик и регистры

Вы хотите посадить ВМ3А на шину ЦП? А возможно вообще заменить полностью ЦП ВМ2 на ВМ3А? Если да, то тогда можно будет портировать туда такие системы как Unix V7, BSD и подобные.

hobot
01.04.2015, 18:26
А возможно вообще заменить полностью ЦП ВМ2 на ВМ3А?
Не получится ) Уже обсуждалось )


прицепить к УКНЦ блок ВМ3А с 2-мя метрами батарейного СОЗУ
Почему не пишите свои предложения в теме по расширению УК-НЦ
(УК-НЦ и платы расширение - как то так тема называется).

Ох.

Практическая польза от UNIX только для тех кто этим занят и интересуется.
Все грамотные пользователи давно уже пришли к тому что для ЭВМ этого класса(уровня),
как УК-НЦ (в любой модификации) и ДВК(кроме самых старших) - идеальной ОС
является RT-11. Но любое творчество приветствуется ) Как же иначе? )

Patron
01.04.2015, 18:47
Учебный WCX-плагин для начинающих разработчиков плагинов: WCX.sample (http://emulator.pdp-11.org.ru/misc/WCX.sample.zip)

MM
01.04.2015, 19:27
MM, Если я вас правильно понимаю, то там достаточно простая карта памяти:
0-157777 область ОЗУ
160000-177777 это уже область HALT там обработчики прерываний, пультовый отладчик и регистры

Вы хотите посадить ВМ3А на шину ЦП? А возможно вообще заменить полностью ЦП ВМ2 на ВМ3А? Если да, то тогда можно будет портировать туда такие системы как Unix V7, BSD и подобные.
Меня интересуют конкретные адреса регистров, в т.ч. в пультовом режиме главного процессора ( т.е. при сигнале SEL=0v ).
Приделать к УКНЦ главный процессор 1801ВМ3А не особо сложно, надо только существенно пропатчить софт в ПЗУ и навесить несколько мелких ИС серии КР1533 - это если совсем кратко.
Однако есть и более простой путь - сменные главные процессоры, например ВМ2-ВМ3. Для реализации такого варианта достаточно обеспечить совместимость по адресам регистров и памяти, в т.ч. пультовой.
Сменять процессоры можно и переводом их в режим ПДП.
*
Главное достоинство УКНЦ именно в наличии регистров 177560 - у др. маленьких машинок такой роскоши нет.

Patron
01.04.2015, 19:58
Там требовалось основательно перелопатить код ядра чтобы адаптировать именно под БК.Основательно перелопаченный вариант здесь: bkunix-0.2-beta.zip (http://vak.ru/lib/exe/fetch.php/proj/bk/bkunix-0.2-beta.zip)

Кстати, там уже исправлен глюк терминального буфера:



#define CROUND 7

/*
* The character lists-- space for 6*NCLIST characters if lucky,
* or 6 less otherwise: getc/putc needs the structs to be 8-aligned;
* cinit() takes care of that.
*/
struct cblock cfree[NCLIST];

/* List head for unused character blocks. */
struct cblock *cfreelist;

/*
* Initialize clist by freeing all character blocks, then count
* number of character devices. (Once-only routine)
*/
void
cinit()
{
register struct cblock *cp;

cp = (struct cblock*) (((int)cfree + CROUND) & ~CROUND);
for (; cp <= &cfree[NCLIST-1]; cp++) {
cp->c_next = cfreelist;
cfreelist = cp;
}
}

---------- Post added at 19:58 ---------- Previous post was at 19:34 ----------

Запустив там run0011.bat - можно загрузить bkunix в эмуляторе БК-0011М.

...

xakep_tm1
02.04.2015, 01:51
Как я и обещал, выкладываю ту же сборку UNIX но для людей не имеющих дисковода или же желающих загрузить систему через стык С2 (com port)
В ней в место драйвера дисковода, используется как бы драйвер виртуального диска.
Внесённые изменения сохраняются только в оперативке, после перезапуска программы, система возвращается в первозданный вид.

xakep_tm1
02.04.2015, 19:33
Нашёл документацию на MY дисковод, написал под него загрузчик и драйвер, теперь LSX Unix работает на эмуляторе ДВК-2 MY80. Сейчас займусь драйвером для MX дисковода, если кому интересно могу выложить готовые образы

xakep_tm1
02.04.2015, 21:07
LSX оказался всеядный :D даже на ДВК-2 запустился, правда на эмуляторе.
Народ у кого есть реальная ДВК-2? Попробуйте, заработает ли система на нём.
Да и вообще отпишитесть в теме, кто нибудь уже попробовал хотябы на УКНЦ поставить? Какие результаты?

образ с инструкцией прилагается!

MiX
04.04.2015, 18:57
LSX оказался всеядный :D даже на ДВК-2 запустился, правда на эмуляторе. Просто LSX думает что это LSI 11/03. Я под DX запускал на эмуле.

Народ у кого есть реальная ДВК-2? Попробуйте, заработает ли система на нём. Да работает.

Да и вообще отпишитесть в теме Добавлю от себя, что на ДВК-2 надо контроллер MY перевести в 16BIT режим. Далее образ подсоединил на НХ диск и COPY/DEV HX*: MY*:

xakep_tm1
09.04.2015, 18:33
Исходники UnixComLoader. Написан на Delphi 10, для компиляции требуется компонент CPortLib

xakep_tm1
25.04.2015, 22:19
Xinu - операционная система для LSI 11. Поддерживает Ethernet по средствам DEQNA адаптера, поддержка Internet прям в самом ядре. Запустил на УКНЦшке, жаль на неё нет этого адаптера. Загружается через Стык С2.

xakep_tm1
25.04.2015, 23:47
Система очень интересная. Работала так - VAX сервер, загружал ядро через serial интерфейс в LSI 11, а ядро уже запустившись подключалось через Ethernet к сетевому серверу, монтировало сетевые диски.

Написал загрузчик, сделал образ загрузочный.

form
26.04.2015, 11:44
апустил на УКНЦшке, жаль на неё нет этого адаптера

При желании можно воткнуть в гнездо СА. Описание сигналов есть :)

hobot
26.04.2015, 12:23
При желании можно воткнуть в гнездо СА. Описание сигналов есть
form, уточни пожалуйста вместо СА (посадить на шлейф вместо неё или на проводках повесить прямо на плату) или использовать штатный СА УК-НЦ?

form
26.04.2015, 12:27
уточни пожалуйста вместо СА (посадить на шлейф вместо неё или на проводках повесить прямо на плату) или использовать штатный СА УК-НЦ?

В идеале - взять буржуйский разъем и от него пустить провода на разъем СА. Только есть нюансы. УКНЦшный БП может не потянуть DEQNA/DELQA, кроме того ей нужно 12V - питание проще будет отдельное сделать. И обдувать DEQNA/DELQA придется - греются они сильно.

xakep_tm1
26.04.2015, 12:36
Вообще функционал УКНЦшки можно расширить например если как нибудь соединить Arduino со слотом ПП. К примеру на Arduino есть Ethernet shield, на ней контроллер сети и плюс SD карта. А прошивку Arduino я напишу, и драйвер в ядре unix`a можно сделать. Единственное нужно наверно согласовать логические уровни шины.

Ещё можно подключить вместо родной клавиатуры, ATMEGA16 и к ней PS клавиатуру.

А на гнездо СА надо придумать какой нибудь MMU контроллер с дополнительной оперативкой, тогда уже можно будет запускать на ней системы типа BSD Unix

form
26.04.2015, 12:54
А на гнездо СА надо придумать какой нибудь MMU контроллер с дополнительной оперативкой

На эту тему уже писал. Это не так просто как кажется потому как MMU требует вмешательства в сам CPU. В частности:
MMU должен иметь доступ к PSW процессора
MMU должен иметь возможность добавить как минимум команды MFPI/MTPI в процессор
сам PSW обязан появиться на шине по адресу (17)777776
процессор должен иметь отдельный SP для каждого режима
нужна правильная обработка векторов прерываний (с MMU вектора - это отнюдь не обязательно адреса 0-1000)


Это так сказать минимум. Все остальное проще.

---------- Post added at 15:54 ---------- Previous post was at 15:49 ----------

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

hobot
26.04.2015, 13:23
Я конечно за любое творчество!
Но хочу очевидную мысль в очередной раз озвучить
\ разработчики УК-НЦ (который многие не стесняясь унизили уже по всякому!) минимальным ОЗУ, практически не вложив в систему возможностей апгрейда (защита от дурака - тут в прямом смысле), что не помешало сделать правильный обвес - IDE ЖД кстати говоря!!! - и медленной(?) скоростью (не умиляя очарования
местного видео ОЗУ (граф.реж.) и ПП УК-НЦ) - всё это позволило УК-НЦ остаться самим собой и по сей день красоваться среди прочих в семье PDP - своей уникальностью, если бы ещё "умельцы" демок от ассемблера взялись бы за изучение местных нюансов, забомбили бы Titusa запросами по поводу палитр и полифонии на пищалке (и в целом !) ещё бы и начали граф.\звук демы делать для него - представьте себе на уровень Европейской и за океанской демо-сцены поднять его, и вот тогда разработки\доработки посыпались бы 100% от самих участников процесса ))) Как и происходит почти всегда. Так что спектрумисты!, бросайте ваши спэки - вы от них устали, вы их уже замучили (!), а они устали от вас.
Начните изучать нюансы и особенности УК-НЦ и пишите демы (С) ААА "смайл"

xakep_tm1
26.04.2015, 13:47
form, не обязательно его делать 100% совместимым, достаточно будет если допустим записывать в определённый регистр номер страницы а этот " MMU " будет отображать эту страницу (например размером 8-16 кб) в адресное пространство ЦП. Как в ПП это сделано, в окно можно подключить системное ПЗУ или одно из двух ПЗУ картриджа

form
26.04.2015, 13:49
не обязательно его делать 100% совместимым

Я описал не 100% совместимость. Я описал минимальную совместимость без которой запустить что-то существующее без большх переделок будет безнадежно. Без любого из перечисленных пунктов (за исключением векторов - их обычно все-равно размещают в начале памяти [кроме прошивок и диагностики]). Причем что-то мог и упустить. Но перечисленное обязательно для запуска даже RT-11XM :)

xakep_tm1
26.04.2015, 13:54
UNIX тем и хорош, что полностью открыт и легко модифицируем.

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

Пока хочется портировать MINI-UNIX, но он большого размера, больше дискетки, изза этого надо писать драйвер жёсткого диска, а я если честно почитал исходники драйвера, и ничего там не понял. Не так силён я в ассемблере, а там ещё макро ассемблер. Если бы найти хорошее описание работы этого драйвера, или ктото мне разжуёт как он функционирует, то я смогу написать для него драйвер на Си для UNIX

hobot
26.04.2015, 15:51
hobot, я имею огромное желание написать хоть какую нибудь простенькую игрушку.
пиши рогалик - терминальный под VT52 для первичного освоения - будут в него играть и на ДВК и на БК-11М ))) А до графики со временем доберётесь )))
ЮНИКС проект - то же наверное многих пугал ))) Меня до сих пор немного пугает ))) Быстрая компиляция (почти мгновенная) в родной среде RT-11 возможно благодаря эмуляторам Patrona (!) , так что ваше желание вполне осуществимо.

---------- Post added at 15:42 ---------- Previous post was at 15:40 ----------


UNIX тем и хорош, что полностью открыт и легко модифицируем.
наверное отчасти это справедливо и для штатной RT-11 ) Иначе откуда столько счастья на лицах счастливых обладателей (пользователей) УК-НЦ ? )

---------- Post added at 15:51 ---------- Previous post was at 15:42 ----------


Пока хочется портировать MINI-UNIX
к нему надо бы тогда и Смолл-Си )))
http://www.twirpx.com/file/1081640/

xakep_tm1
26.04.2015, 15:59
к нему надо бы тогда и Смолл-Си )))
Видать вы шутите :) Так как Смолл-Си написан на процессор 8080 и 8086.

MINI-UNIX это прародитель LSX Unix`a, написан тем же автором Dr. Heinz Lycklama.
Но система намного мощней и функциональней.

derfliegenddehollander
05.11.2019, 03:41
Видать вы шутите :) Так как Смолл-Си написан на процессор 8080 и 8086.

MINI-UNIX это прародитель LSX Unix`a, написан тем же автором Dr. Heinz Lycklama.
Но система намного мощней и функциональней.

А вот с этого (http://y-salnikov.github.io/uknc_sd_fdd/) говорят можно запустить - у меня что то не получается! Подскажите что я не так делаю! Картина такая проходит загрузчик карты и все тормоз!

xolod
07.06.2021, 23:21
LSX оказался всеядный :D даже на ДВК-2 запустился, правда на эмуляторе.
Народ у кого есть реальная ДВК-2? Попробуйте, заработает ли система на нём.
Да и вообще отпишитесть в теме, кто нибудь уже попробовал хотябы на УКНЦ поставить? Какие результаты?

образ с инструкцией прилагается!

Образ LSX для ДВК-2 работает на ДВК на FGPA https://github.com/forth32/dvk-fpga