Вход

Просмотр полной версии : RTEM-11 -- RT-11 под RSX-11M, RSX-11M-PLUS, Micro/RSX, VAX/RSX



form
08.04.2016, 13:14
Страница, посвященная сохранению и улучшению RTEM находится здесь (https://rtem.pdp-11.online/index.ru.html).

Ну вроде дозрел до создания отдельной темы по RTEM. Выложу сюда все, что на данный момент выкопано (напомню, в активе имелся весьма урезанный вариант RTEM/VAX V1.0 в виде собранной задачи и shared образ в котором не было ничего кроме RT-11 V4.0C для RTEM, DUP.SAV (адаптированного для RTEM), FIP.SAV, JOAT.SAV и драйвера VS.SYS. Остальных драйверов, увы, не было.

С тех пор RTEM.TSK неоднократно патчился для некоторого приведения в порядок (поддержка Y2K дат, передача RTEM флагов в RT-11 V5 про которые он не знал, замена расширений файлов диска на DSK с SYS [как это должно быть в RTEM V2]). Также был пропатчен JOAT.SAV (расширение виртуальных дисков DSK, DU как допустимое устройство).

Здесь (http://pdp-11.org.ru/~form/files/pdp-11/rtem-11/rsx-11/) последний вариант RTEM.TSK и RT11SH.DSK с RT-11 V5.7 с поддержкой расширенных номеров устройств, а также драйверами DU: и RK: (не полнофункциональными, но достаточными для работы). DU собран для поддержки номеров устройств 0-17.
DIR .SAV 20P 31-Oct-1998 PIP .SAV 30P 31-Oct-1998
FIP .SAV 61P 16-May-2015 DUP .SAV 52P 27-Feb-2016
JOAT .SAV 52P 16-May-2015 RESORC.SAV 35P 31-Oct-1998
UCL .SAV 16P 31-Oct-1998 MACRO .SAV 63P 31-Oct-1998
LINK .SAV 59P 31-Oct-1998 LIBR .SAV 24P 31-Oct-1998
CREF .SAV 6P 31-Oct-1998 FORTRA.SAV 128P 23-Jul-2014
F77 .SAV 327P 23-Jul-2014 PASCAL.SAV 58P 04-Mar-2013
BASIC .SAV 52P 08-Oct-2015 BASPL .SAV 104P 02-Jun-2014
COBOL .SAV 194P 21-Mar-2014 CBLSML.SAV 194P 21-Mar-2014
CBLINK.SAV 47P 21-Mar-2014 CBLIBR.SAV 13P 21-Mar-2014
CLASS .SAV 51P 21-Mar-2014 ISAM .SAV 72P 21-Mar-2014
ISMBLD.SAV 56P 21-Mar-2014 CBR063.SAV 119P 21-Mar-2014
BATCH .SAV 26P 31-Oct-1998 KED .SAV 85P 31-Oct-1998
K52 .SAV 81P 20-May-2011 EDIT .SAV 19P 31-Oct-1998
TECO .SAV 50P 31-Oct-1998 HELP .SAV 161P 31-Oct-1998
FILEX .SAV 22P 31-Oct-1998 DUMP .SAV 10P 31-Oct-1998
BINCOM.SAV 25P 31-Oct-1998 SRCCOM.SAV 26P 31-Oct-1998
SIPP .SAV 21P 31-Oct-1998 SLP .SAV 13P 31-Oct-1998
PAT .SAV 11P 31-Oct-1998 MONMRG.SAV 14P 31-Oct-1998
BUP .SAV 68P 31-Oct-1998 QUEMAN.SAV 16P 31-Oct-1998
SETUP .SAV 43P 31-Oct-1998 LET .SAV 6P 31-Oct-1998
SPLIT .SAV 3P 31-Oct-1998 TERMID.SAV 4P 31-Oct-1998
TRANSF.SAV 16P 31-Oct-1998 MDUP .SAV 22P 31-Oct-1998
CONFIG.SAV 10P 31-Oct-1998 DBGSYM.SAV 10P 31-Oct-1998
INDEX .SAV 11P 31-Oct-1998 INDEXX.SAV 14P 31-Oct-1998
INDEXA.IMG 164P 31-Oct-1998 INDEXB.IMG 165P 31-Oct-1998
INDEX .IDX 7P 31-Oct-1998 SYS .SAV 3P 30-May-2011
DISASM.SAV 8P 31-Mar-2013 VDT .SAV 8P 09-Mar-2013
ECHO .SAV 2P 05-Mar-2016 ERA .SAV 1P 05-Mar-2016
CVT .SAV 7P 05-Mar-2016 TTSET .SAV 5P 10-Apr-2015
QUEUE .REL 14P 31-Oct-1998 RTMON .REL 8P 31-Oct-1998
SPOOL .REL 12P 31-Oct-1998 SYSMAC.SML 92P 31-Oct-1998
SYSTEM.MLB 148P 31-Oct-1998 ULBMAC.MLB 16P 24-Oct-1998
CBMAC .MAC 11P 21-Mar-2014 SYSLIB.OBJ 84P 31-Oct-1998
ULBLIB.OBJ 33P 24-Oct-1998 RSXLIB.OBJ 13P 04-Apr-2016
RSXLIB.MLB 6P 04-Apr-2016 PASCAL.OBJ 90P 04-Mar-2013
FORLIB.OBJ 205P 31-Dec-1982 F77OTS.OBJ 135P 22-Apr-2011
F77CVF.OBJ 4P 30-Apr-1984 F77NER.OBJ 1P 30-Apr-1984
F77MAP.OBJ 33P 30-Apr-1984 F77EIS.OBJ 3P 30-Apr-1984
F77RAN.OBJ 2P 30-Apr-1984 F77COM.MSG 14P 20-May-2011
VDT .OBJ 8P 31-Oct-1998 MBOOT .BOT 1P 31-Oct-1998
MBOT16.BOT 1P 31-Oct-1998 MSBOOT.BOT 4P 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
CUSTOM.TXT 14P 31-Oct-1998 V5NOTE.TXT 36P 31-Oct-1998
RTEMFB.MAP 39P 06-Apr-2016 RTEMFB.CND 3P 06-Apr-2016
RTEMFB.SYS 108P 06-Apr-2016 SWAP .SYS 28P 06-Apr-2016
BAM .SYS 7P 06-Apr-2016 LDM .SYS 11P 06-Apr-2016
NLM .SYS 2P 06-Apr-2016 VSM .SYS 6P 01-Feb-2012
SLM .SYS 17P 22-Apr-2013 SDM .SYS 23P 30-Jan-2012
RKM .SYS 4P 15-May-2015 DUM .SYS 5P 06-Apr-2016
IND .SAV 58P 31-Oct-1998 UCL .DAT 9P 06-Apr-2016


Немного общей информации. RTEM является программой, выполняющейся под RSX-11M, RSX-11M-PLUS, Micro/RSX, VAX/RSX под управлением которой грузится обычный RT-11. Программа устанавливает вектор SST и перехватывает все возможные варианты синхронных прерываний: trap to 4/10, mmu fault (отрабатывается как trap to 4), IOT, TRAP, BPT/T-bit, FP exception, non-RSX EMT. При возникновении SST эмулируется соответствующее прерывание. Таким образом программе под RTEM кроме обычного функционала RT-11 доступны директивы RSX-11. Также устанавливается AST на незапланированный ввод с терминала, эмулирующее прерывание от клавиатуры, а RMON патчится загрузчиком так, чтобы в тех местах где идет работа с железом или определенными сервисами обращение происходило к соответствующим подпрограммам RTEM. Для RT-11 V4 были отдельные исходники системы для RTEM. В RT-11 V5 загрузчик содержит весь необходимый код и включается при определении опции RTE$M=1.

Связь с RTEM из RT-11 устанавливается через RTEM link area - это вектор ссылок на подпрограммы и данные RTEM. Ссылка на link area надодится по адресу @#250 ($RTELK), адрес @#252 ($RTEID) при этом должен содержать значение 071645 (^RRTE).

Загрузка в RTEM возможна в двух вариантах:
загрузка с использованием shared и private образов (в этом случае shared образ открывается только для чтения, private образ открывается для чтения и записи, а для файлов shared образа начиная со SWAP.SYS и всех идущих за ним создается временный файл куда эти файлы копируются
загрузка с физического диска с использованием специального драйвера RTEM, эмулирующего драйвер физического устройства (при этом диск может одновременно быть загрузочным диском RT-11 для обычной работы).


При загрузке RTEM читает первичный загрузчик из драйвера системного диска (VSM.SYS или соответствеющего устройства xxM.SYS), читает вторичный загрузчик из блоков 2-5 файла RTEMFB.SYS, устанавливает адрес подпрограммы чтения из первичного загрузчика и остальные данные для вторичного загрузчика (имя драйвера, номер устройства итд). Сам первичный загрузчик устройства RTEM должен только ругаться, что нельзя грузить RTEM на живой машине и останавливаться. В RTEM этот загрузчик не используется.

Смещения RTEM link area и имена которые использует BSTRAP.MAC в RT-11 V5.
006 .$CMKT
010 .$CRTI
012 .$DARL
016 .$FATA
020 .$FORQ
022 .$FPST
026 .$GETE
030 .$GETP
032 .$GTDA
036 .$GTPS
040 .$GTTI
042 .$IDLP
044 .$INTN
050 .$MRKT
052 .$PTPS
054 .$RDKM
060 .$RQSG
062 .$RSCT
064 .$RSTT
066 .$RTIC
070 .$SPL0
072 .$SPL7
120 .$TKS
122 .$TKB
124 .$TPS
126 .$TPB
140 .EXUSE
142 .FPPFL
144 .INTAC
146 .INTLV
150 .LKQUE
152 .PSCLO
154 .RMONS
156 .SAVE3
160 .SYS
162 .TASKS
164 .TIKCT
166 .TTRSE
170 .$ENSY
172 .$FORK
174 .$INTE
176 .$RMP0
200 .$RMP1
202 .$RMP2
204 .$RMP3


Структура RTEM link area (кроме вышеписанного), известная на данный момент:
000 Адрес таблицы VS$SET дла устройства VS0:
При загрузке системы из shared образа (LB:[1,1]RT11SH.DSK в RSX-11
или SYS$LIBRARY:RT11SH.DSK в VMS) по этому смещению располагается таблица:
000 VS$SSM Количество сегментов каталога в shared образе
002 VS$PSM Количество сегментов каталога в private образе
004 VS$SDB Последний блок каталога в shared образе
006 VS$SFW Первый R/W блок shared образа (файл SWAP.SYS)
010 VS$SLW Последний R/W блок (конец shared образа)
012 VS$SLB Последний блок shared образа
014 VS$PDB Последний блок каталога private образа
016 VS$PLB Последний блок private образа
020 VS$PHO Последний открытый сегмент каталога в private образе
022 VS$PLU RSX-11 LUN, назначенный private образу
024 VS$SLU RSX-11 LUN, назначенный shared образу
026 VS$TLU RSX-11 LUN, назначенный временному файлу (копия части
shared образа, доступная для записи начиная с SWAP.SYS)
030 VS$SIZ Размер устройства VS0:
032 VS$BRO Смещение для чтения данных (используется загрузчиком)
034 VS$PT1 Patch space
036 VS$PT2 -"-
040 VS$PT3 -"-

002 Адрес подпрограммы, восстанавливающая характеристики терминала и завершающая
RTEM

004 Адрес подпрограммы для вызова директив RSX-11, требующих динамической памяти RSX:
JSR R5,@4(Rx) ;ВЫЗОВ ПОДПРОГРАММЫ
.WORD IOSB ;АДРЕС БЛОКА СОСТОЯНИЯ QIO или 0 если нет/не QIO
DIR$ ... ;ВЫПОЛНЕНИЕ ДИРЕКТИВЫ RSX-11
CALL @(SP)+ ;ВЫЗОВ СОПРОГРАММЫ (C БИТ НА ВХОДЕ ДОЛЖЕН ОТРАЖАТЬ
;СТАТУС ВЫПОЛНЕНИЯ ДИРЕКТИВЫ
Подпрограмма сохраняет @#46 ($DSW), дает выполнить директиву (и прочий код для нее),
в случае ошибки вызванной нехваткой динамической памяти ждет важного события в RSX-11
директивой WSIG$S и делает повтор вызова директивы. Восстанавливает @#46.
При возврате случае успеха C=0, в случае ошибки C=1.

014 Адрес подпрограммы поиска RSX-11 LUN, назначенного RT-11 устройству:
MOV #^Rddn,R0 ;ИМЯ УСТРОЙСТВА
CALL @14(Rx) ;ВЫЗОВ ПОДПРОГРАММЫ
На выходе C=0 если LUN найден (в этом случае R0 содержит LUN) или C=1
в случае ошибки

024 Адрес подпрограммы получения/обновления даты-времени.
CALL @24(Rx)
На выходе R0 содержит дату в формате RT-11, R1 содержит $DSW от результата
выполнения GTIM$ (зачем?), R5 указывает на буфер GTIM + G.TIHR. Адрес буфера берется
из смещения 106 link area.

034 Адрес подпрограммы резервирования RSX-11 LUN для присоединия устройства.
MOV #^Rddn,R0 ;ИМЯ УСТРОЙСТВА
MOV #x,R1 ;ЕСЛИ R1=^RRTE - ПОСТОЯННОЕ ПРИСОЕДИНЕНИЕ
;В ПРОТИВНОМ СЛУЧАЕ ПРИСОЕДИНЕНИЕ ДЛЯ RT-11
;JOB ДО ВЫХОДА
CALL @34(Rx) ;ВЫЗОВ ПОДПРОГРАММЫ
На выходе C=0 в случае успеха, C=1 в случае ошибки.

046 Адрес подпрограммы прерывания ввода-вывода на RSX-11 LUN.
MOV #LUN,R4 ;RSX-11 LUN
CALL @46(Rx) ;ВЫЗОВ ПОДПРОГРАММЫ
На выходе C=0 в случае успеха, C=1 в случае ошибки.

056 Адрес подпрограммы отключения RSX-11 LUN и назначение ему SY0: (устройство по умолчанию).
MOV #x,R1 ;ЕСЛИ R1=^RRTE БЕЗУСЛОВНО ОТКЛЮЧИТЬ LUN
;В ПРОТИВНОМ СЛУЧАЕ R1 ДОЛЖЕН СОДЕРЖАТЬ НОМЕР
;ЗАДАНИЯ RT-11 УМНОЖЕННЫЙ НА 2 + 1.
На выходе C=0 в случае успеха, C=1 в случае ошибки.

074 Адрес DPB для директивы QIOW$
076 Адрес DPB для директивы ESXT$
100 Адрес DPB для QIOW$ с функцией IO.KIL
102 Адрес DPB для QIOW$ с функцией IO.ATA для TI:
106 Адрес 8-словного буфера для GTIM$
110 Некая таблица системных параметров
000 - флаги
4 - загружен с shared образа
030 - максимальный LUN который можно использовать (19. для того RTEM что есть)

114 Адрес таблицы LUN. На каждый LUN выделяется 2 слова. Первое слово содержит биты состояния,
второе - имя устройства RT-11 в RADIX-50 или 0 для файла. Биты состояния:
100000 - устройство только для чтения
40000 - LUN назначен устройству/файлу
10000 - shared образ (?)
200 - устройство RTEM (?)
0-177 - номер задания RT-11 + 1

Пара слов о драйверах RTEM-11, используемых для эмуляции физических устройств.
В общем случае, это обычные драйвера RT-11, только вместо обращений к регистрам устройств
нужно вызывать директиву QIOW$ для соответствующего устройству LUN и вместо классического прерывания обрабатывать AST (не забывая, что верх стека при этом содержит адрес блока состояния I/O директивы QIOW$).

Драйвер должен сконвертировать номер устройства в имя в RADIX-50 вида ^RRK3 и вызвать подпрограмму, адрес которой записан в RTEM lik area по смещению 14 для поиска LUN, назначенного данному устройству. Если LUN найден - нужно вызывать директиву QIOW$, используя в качестве RSX-11 event flag номер, совпадающий с LUN, указав в качестве AST подпрограммы метку ddINT драйвера.

Подпрограмма обработки прерываний драйвера RTEM (ddINT) вместо использования .DRAST должна сделать следующее:
RETURN ;ИЛИ BR НА ПОДПРОГРАММУ ОТМЕНЫ I/O (ВЫЗОВ QIOW$ IO.KIL)
ddINT: TST (SP)+ ;УБРАТЬ ИЗ СТЕКА АДРЕС БЛОКА СОСТОЯНИЯ I/O
JSR R5,@$INPTR ;ВЫЗВАТЬ ПОДПРОГРАММУ $INTEN
.WORD PRI*40 ;ПРИОРИТЕТ ПРОЦЕССОРА (ДЛЯ RTEM ОСОБОГО ФУНКЦИОНАЛА НЕ НЕСЕТ,
;ОДНАКО ЕСЛИ ОН БУДЕТ БОЛЬШЕ 4, БУДЕТ ЗАБЛОКИРОВАНА ОБРАБОТКА
;AST ДО ВОЗВРАТА ИЗ ПОДПРОГРАММЫ.
Загрузчик устройства RTEM должен (как уже писалось выше) просто ругаться на невозможность загрузить RTEM на живом железе. Подпрограмма чтения должна использовать DPB директивы QIOW$ по адресу, записанному в @#772 и подпрограмму выполнения директивы по адресу, записанному в @#774.
Также в загрузчике должен быть подготовлен код для печати сообщений ошибок загрузки в RTEM. Пример загрузчика для драйвера RK в RTEM:
.DRBOT RK,BOOT1,READ
.=RKBOOT+40
BOOT1: JMP @#BOOT-RKBOOT

.=RKBOOT+254
READ: MOV R0,R3 ;SAVE BLOCK NUMBER
MOV RKBOOT+772,R0 ;GET ADDRESS OF QIOW DPB
MOV R2,Q.IOPL(R0) ;SET BUFFER ADDRESS
ASL R1 ;CONVERT WORD COUNT TO BYTES
MOV R1,Q.IOPL+2(R0) ;SET BYTE COUNT
MOV R3,Q.IOPL+10(R0) ;SET BLOCK NUMBER
JMP rkBOOT+774 ;PERFORM I/O

BOOT: JSR R0,BPRINT ;PRINT ERROR MESSAGE AND HALT
.ASCII <CR><0><LF><0>
.ASCII /?BOOT-U-Cannot boot RTEM standalone/<CR><LF><LF><200>

.ASSUME . LE RKBOOT+550

.=RKBOOT+550
BPRINT: TSTB @#TPS ;TERMINAL PRINTER READY?
BPL BPRINT ;PL = NO
MOVB (R0)+,@#TPB ;PRINT CHARACTER
BPL BPRINT ;PL = MORE TO PRINT
10$: HALT ;HALT PROCESSOR
BR 10$ ;

.ASSUME . LE RKBOOT+570

.=RKBOOT+570
JMP @#BIOERR ;RTEM BIOERR ENTRY
.=RKBOOT+576
JMP @#REPORT ;RTEM REPORT ENTRY
.DREND RK

В этом коде загрузчика есть некоторые неточности: с RTEMовских точек входа BIOERR и REPORT нужно отрабатывать вывод средствами RSX, а не ссылаться на аналогичные точки для обычной загрузки. Позже нарисую как должно быть.

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

Ну вот, вроде основное закончил. Дальше можно мучить тему. Есть еще кое-какая техническая информация вроде формата shared образа (озвучивал ранее кажется в теме про Э85 и DEC Pro), но она не так существенна. Чуть позже напишу о патчах для RT-11 V5.7 которые пришлось наложить, чтобы система нормально грузилась под RTEM (некоторые ошибки тянулись с самого RT-11 V5.0, некоторые (поддержка расширенных unit # на устройстве загрузки) просто не предусматривались ибо RTEM был заброшен раньше RT-11 V5.5, некоторые возможно вызвыны использованием старого RTEM - другого-то пока нет [хотя теперь можно подумать и о написании своего]), но исправления всяко не помешают даже если когда и найдем более поздний.

form
10.04.2016, 19:32
.IF NE RTE$M
TST @#CNFMOD
BPL 120$
BIS #<BKSP$!HWTAB$>,DLTCB(R4)
BIC #<CRLF$>,DLTCB(R4)
120$: BIS #<RTEM$>,SYSGEN(R4)
BIT #<1>,@#CNFMOD
BEQ 130$
BIS #<UCF.ON>,CLIFLG-$RMON(R4)
130$:
.ENDC
Если RTEM передал флаг наличия UCF.SAV на диске, загрузчик включает UCF (вариант UCL, выполняющийся до обработки встроенных команд системы). Однако в этом месте R4 содержит собственно адрес RMON и не требует дополнительных смещений (код выше поступает правильно). Выделенная же строка должна выглядеть так:
BIS #<UCF.ON>,CLIFLG(R4)
Впрочем из-за другой ошибки в RMON этот код все-равно никакого функционала не выполняет поскольку следующий код
CLIFLG::.BYTE < UCL.ON ! CCL.ON ! DCL.ON ! <UCF.ON*RTE$M> >
просто включает UCF изначально - независимо от того есть UCF.SAV на системном диске или нет. Причем для систем старее 5.6 попытка загрузиться без UCF.SAV приведет к неработоспособности системы - некому будет обрабатывать команды. Должно быть:
CLIFLG::.BYTE < UCL.ON ! CCL.ON ! DCL.ON >
Еще одна проблема в загрузчике возникает если драйвер с которого грузится RTEM поддерживает расширенные номера устройств (10-77), и система также их поддерживает.
MOV (R0)+,R2
BNE 10$
MOV #<DRINTN+4>,R0
MOV SYHTOP-<BUFFB-RELLST>,R1
MOV #<$RMON>,R2
ADD R4,R2
ADD R4,R0
MOV -(R0),-(R1)
SUB R2,@R0
MOV @R0,O$FORK(R2)
MOV -(R0),-(R1)
SUB R2,@R0
.ENDC
Поскольку RTEM забросили раньше чем появились расширенные номера устройств, никто не позаботился о такой возможности. Данный код устанавливает точки входа $FKPTR и $INPTR для драйвера, однако драйвер с расширенными номерами устройств содержит 16-словную таблицу после вектора подпрограмм куда данный код и пытается писать точки входа. Для монитора который не поддерживает расширенные номера эта таблица автоматом отсекается всем драйверам где она есть, если же монитор поддерживает их - нужно об этом позаботиться:
.IF NE RTE$M
MOV (R0)+,R2
BNE 10$
MOV #<DRINTN+4>,R0
MOV SYHTOP-<BUFFB-RELLST>,R1
.IF NE <OWN$ER & UNI$64>
TST @#SY64
BEQ 35$
SUB #<32.>,R1
.ENDC
35$: MOV #<$RMON>,R2
...
И остался еще один косячок, замеченный в USR:
.IF NE TIME$R
.$UPDA ==: < . + 2>
CALL @#UPDDAT-$RMON
.ENDC
Этот код добавлен в поздних версиях RT-11 и к нему даже был добавлен hook для RTEM, чтобы загрузчик отпатчил вызов, перенаправив его куда нужно. Только вот подпрограммы которая при этом вызывается в RTEM портит регистры которые USR использует для хранения информации о текущей записи каталога (возможно, что для поздних версий RTEM это не так, но у нас пока только RTEM 1.0), что приводит к ошибкам. Решение очевидно:
.IF NE TIME$R
.IF NE RTE$M
MOV R2,-(SP)
MOV R3,-(SP)
MOV R4,-(SP)
.ENDC
.$UPDA ==: < . + 2>
CALL @#UPDDAT-$RMON
.IF NE RTE$M
MOV (SP)+,R4
MOV (SP)+,R3
MOV (SP)+,R2
.ENDC
.ENDC
На данный момент это все выявленные косяки.

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

Осталось сказать пару слов о том, что еще нужно доделать:
научить RTEM работе с именованными каталогами в RSX-11M-PLUS, Micro/RSX и P/OS
правильно передавать флаги SCOPE и UCF в загрузчик (пока всегда передается SCOPE и NO UCF)
разобрать драйвер VS по косточкам и пересобрать его заново, добавив фичи RT-11 V5
подправить DUP, чтобы он нормально выполнял SQUEEZE на устройстве VS: (возможно это часть предыдущего вопроса)
сделать программу UCF для реализации RTEMовских команд (или внести данный функционал прямо в KMON [тем более, что там даже есть NOP-заглушки для такого функционала кое-где]

form
16.12.2016, 01:10
Перенесено из темы по RSX (http://zx-pk.ru/threads/20939-rsx-11-osrv-osrvm.html)...

Выложил в один каталог (http://pdp-11.org.ru/~form/files/pdp-11/rtem/) все, что касается RTEM. Там огрызок RTEM V1.0 который мне достался изначально, документация (от более позднего RTEM), примеры драйверов фиксированного (RK) и изменяемого (HD) размера для загрузки физического диска в RTEM и/или работы с ним, патчи для исправления RT-11 V5.7 и доработки самого RTEM, дамп памяти RTEM на момент старта, файлы, нужные для сборки системы и драйверов RTEM и окончательный вариант RTEM с RT-11 V5.7 который получился.

Изменения на текущий момент:
RTEM - работа с датами после 1999 года, обработчик trap to 4 подправлен так, что не впадает в бесконечный цикл
BSTRAP (RT-11 V5.7) - исправлена ошибка при установке флага UCF, добавлена поддержка загрузки системного драйвера в RTEM с поддержкой 64 номеров устройств
RMON (RT-11 V5.7) - убран предустановленный флаг UCF (его устанавливает BSTRAP если RTEM говорит об этом)
USR (RT-11 V5.7) - сохранение регистров перед вызовом подпрограммы синхронизации даты-времени
FIP и JOAT обучены новым именам устройств (DU, EM, HD, MX, MY, MZ, VF)
В драйвер VS добавлен флаг VARSZ$ - теперь DUP из RT-11V5 правильно инициализирует устройства, подключенные к файлам (а также SQUEEZE VS0: на системном диске теперь работает правильно)


На данный момент не работает/работает криво:
нет поддержки принтера в командной строке (RTEM V1.0 знал только про RSX-11M, а в нем нет поддержки спулинга)
не работают именные каталоги (опять таки в RSX-11M их нет)
SQUEEZE на системном диске VS выполняется кривовато (где-то нестыковки с драйвером VS времен RT-11 V4 или со структурами данных RTEM V1.0) (исправлено)
при подключении файлов в качестве образа диска к VS, DUP неправильно определяет размер (опять таки нестыковка или с драйвером от RT-11 V4 (где не было VARSZ) или со структурами данных (исправлено)
нет программы UCF.SAV (в RTEM V1 ее и не было) для интеграции утилит RTEM в команды KMON
JOAT в списке подключенных файлов пишет восьмеричные номера версий (в RSX-11M других и нет, в M+ есть системная опция - десятичные номера версий)


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

Обновился shared образ (http://pdp-11.org.ru/~form/files/pdp-11/rtem/v1last/rt11sh.dsk). Драйвер VS пропатчен так, чтобы программы RT-11V5 могли запрашивать размер.

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

Еще есть над чем подумать с точки зрения RT-11... Когда RESORC печатает список подключенных LD, в RTEM он после этого вызывает JOAT чтобы тот напечатал все подключенные файлы/диски, а когда печатает все - не вызывает :)
.SH ALL

RT-11FB V05.07
Booted from VS0:RTEMFB

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 KED
FORTRAN is set FORTRA
KMON nesting depth is 3
Global .SCCA flag is disabled

CLI is set DCL, CCL, UCL, NO UCF

Emulated RT-11 environment, processor type unknown
60KB of memory
Extended Instruction Set (EIS)
50 Hertz System Clock

Multi-terminal support
Global .SCCA support
FPU support
Extended unit support

Device Status CSR Vector(s)
------ ------ --- ---------
BA Installed 000000 000
LD Installed 000000 000
NL Installed 000000 000
VS Resident 000000 000
SL 122600 000000 000
SD Installed 000000 000
RK Installed 000000 000
DU Installed 000000 000
HD Installed 000000 000

TT (Resident)
VS (Resident)
VS0 = DK , SY
MQ (Resident)
BA
NL
LD
SL (Loaded)
SD
RK
DU
HD

Job Name Console Level State Low High Impure
--- ---- ------- ----- ----- --- ---- ------
0 RESORC 0 0 Run 000000 122524 137600

Unit Owner Type WIDTH TAB CRLF FORM SCOPE SPEED
--------------------------------------------------------
0 S-Console DL 80 Yes No No Yes N/A

Address Module Words
------- ------ -----
165324 VS 854.
135744 RMON 6008.
122572 SL 2869.
001000 ..BG.. 20925.

No LD units mounted



.SH S

No LD units mounted

VS0: RO [15119] HD0:[1,1]RT11SH.DSK;12
RW HD1:RT11PR.DSK;1

.

hobot
16.12.2016, 06:53
а когда печатает все - не вызывает
сделать как в старых RT - одтельную малюсенькую утилиту с названием как команда SHALL )))

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

вот эта цитата

FIP и JOAT обучены новым именам устройств (DU, EM, HD, MX, MY, MZ, VF)
+ плюс пост "Нас посчитали !" - у меня прямо ассоциация с принятием в семью всех "дальних" родственников.
Ведь если они приняли ДВК, значит "косвенно-непосредственно" весь КУВТ ))) Мы вед и БК и УК-НЦ к нему
может цеплять на своё уже усмотрение ! Ура! )

Олег! Предлагаю на образ rt11sh.dsk добавить
http://archive.pdp-11.org.ru/ukdwk_archive/dwkwebcomplekt/BASIC11_WITH_benchmark_TESTS_form/
и тетрис Пажитнова с лент БайтМэна ))) Mix который недавно тут где то выкладывал )))








NNNNNNNNN NNNNNNNNN NNNNNNNNN NNNNNNNNN NNN NNNNNNNNN
NNNNNNNNN NNNNNNNNN NNNNNNNNN NNNNNNNNN NNN NNNNNNNNN
NNN NNN NNN NNN NNN NNN NNN
NNN NNN NNN NNN NNN NNN NNN
NNN NNNNNN NNN NNNNNN NNN NNNNNNNNN
NNN NNNNNN NNN NNNNNN NNN NNNNNNNNN
NNN NNN MMM MMM MMM MMM MMM
MMM MMM MMM MMM MMM MMM MMM
MMM MMMMMMMMM MMM MMM MMM MMM MMMMMMMMM
MMM MMMMMMMMM MMM MMM MMM MMM MMMMMMMMM


GAME BY PAJITNOV A.L.
(C) ВЦ АН СССР. 1985


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

Tet85 тут >
http://archive.pdp-11.org.ru/ukdwk_archive/dwkwebcomplekt/REDKIE_IGRY/

form
16.12.2016, 07:57
В shared образе не должно быть ничего кроме системы. И стартового файла быть не должно. По хорошему и UCL.DAT тоже, но в виду отсутствия UCF я туда запихнул кое-какие команды, а DAT поместил в область временно-записываемую - на время сессии можно определять новые команды :)

form
16.12.2016, 22:03
Что на данный момент известно о RTEM link area (@#250 указывает на эту таблицу). В скобках указан источник информации о названии символа: BSTRAP или DUP. Если написано (X), значит название условное (может не совпадать с прошлыми названиями которые использовались в драйверах).
VS$SET =: 000 (DUP) ;АДРЕС СТРУКТУРЫ ДАННЫХ VS СИСТЕМНОГО ДИСКА
;ЕСЛИ ЗАГРУЗКА БЫЛА НЕ С ПАРЫ SHARED-PRIVATE
;IMAGE, А С ФИЗИЧЕСКОГО ДИСКА, УКАЗЫВАЕТ НА СТРУКТУРУ,
;ЗАПОЛНЕННУЮ НУЛЯМИ
.$EXIT =: 002 (X) ;АДРЕС ПОДПРОГРАММЫ ВОССТАНОВЛЕНИЯ ТЕРМИНАЛЬНЫХ
;ХАРАКТЕРИСТИК И ВЫХОДА В СИСТЕМУ
.$EXEC =: 004 (X) ;АДРЕС СОПРОГРАММЫ ДЛЯ ВЫЗОВА ДИРЕКТИВ RSX-11,
;ТРЕБУЮЩИХ ДИНАМИЧЕСКОЙ ПАМЯТИ
;(С СОХРАНЕНИЕМ/ВОССТАНОВЛЕНИЕМ @#$UFLOA/$DSW)
;И ОЖИДАНИЕМ ВАЖНОГО СОБЫТИЯ И ПОВТОРОМ В СЛУЧАЕ ОШИБКИ
;ДИРЕКТИВЫ IE.UPN ИЛИ IE.NOD. СТАТУС I/O (ЕСЛИ УКАЗАН IOSB)
;ПРОВЕРЯЕТСЯ.
; XXX - УТОЧНИТЬ МАНИПУЛЯЦИИ ПРИ IE.NOD
;ФОРМАТ ВЫЗОВА:
; JSR R5,@.$EXEC(Rx) ;ВЫЗОВ СОПРОГРАММЫ
; .WORD IOSB ;АДРЕС БЛОКА СОСТОЯНИЯ QIOW
; ;ИЛИ 0 ЕСЛИ НЕ НУЖЕН
; DIR$ ... ;ВЫЗОВ ДИРЕКТИВЫ
; CALL @(SP)+ ;ВЕРНУТЬСЯ В СОПРОГРАММУ
; BCS ERROR ;CS = ОШИБКА ДИРЕКТИВЫ ИЛИ
; ;I/O (ЕСЛИ УКАЗАН IOSB)
.$CMKT =: 006 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $CMKT
.$CRTI =: 010 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $CRTI
.$DARL =: 012 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $DARLN
.$FNDL =: 014 (X) ;АДРЕС ПОДПРОГРАММЫ $FNDLN (X) ДЛЯ ПОИСКА LUN
;УСТРОЙСТВА
;ФОРМАТ ВЫЗОВА:
; MOV #^RDDN,R0 ;ИМЯ RT-11 УСТРОЙСТВА (R50)
; CALL @.$FNDL(Rx) ;ПОИСК LUN
; BCS ERROR ;CS = NOT FOUND
; ;R0 = LUN
.$FATA =: 016 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $FATAL
.$FORQ =: 020 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $FORQ
.$FPST =: 022 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $FPST
.$GTIM =: 024 (X) ;АДРЕС ПОДПРОГРАММЫ $GTIM (X) ДЛЯ ВОЗВРАТА ВРЕМЕНИ И ДАТЫ
;ФОМАТ ВЫЗВА:
; CALL @.$GTIM(Rx) ;ВЫЗОВ ПОДПРОГРАММЫ
; ;R0,R1 = TIME (RT-11)
; ;R2 = DATE (RT-11)
.$GETE =: 026 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $GETEN
.$GETP =: 030 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $GETP
.$GTDA =: 032 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $GTDA
.$ALCL =: 034 (X) ;АДРЕС ПОДПРОГРАММЫ $ALCLN (X)
;ФОРМАТ ВЫЗОВА:
; MOV #^RDDN,R0 ;ИМЯ УСТРОЙСТВА
; MOV #^RRTE,R1 ;ЕСЛИ ^RRTE ДЛЯ СИСТЕМЫ,
; ;ИНАЧЕ ДЛЯ ЗАДАЧИ
; CALL @.$ALCL(Rx) ;ВЫДЕЛИТЬ МЕСТО В ТАБЛИЦЕ
; ;C=0, R0=LUN
; ;C=1 - ОШИБКА
.$GTPS =: 036 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $GTPSW
.$GTTI =: 040 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $GTTI
.$IDLP =: 042 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $IDLP
.$INTN =: 044 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $INTN
.$IOKI =: 046 (X) ;АДРЕС ПОДПРОГРАММЫ $IOKIL (X)
;ФОРМАТ ВЫЗОВА:
; MOV #LUN,R4 ;LUN
; CALL @.$IOKI(Rx) ;KILL I/O
; ;ЕСЛИ ЗАГРУЖЕНО С VS
; ;...LUN 2-4 -> 2 (SH)
; ;ПРИ ОШИБКЕ FATAL EXIT
.$MRKT =: 050 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $MRKT
.$PTPS =: 052 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $PTPSW
.$RDKM =: 054 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $RDKM
.$DACL =: 056 (X) ;АДРЕС ПОДПРОГРАММЫ $DACLN (X)
;ФОРМАТ ВЫЗОВА:
; MOV #LUN,R0 ;LUN
; MOV #JOB,R1 ;JOB # OR ^RRTE
; CALL $DACLN ;ЗАКРЫТЬ/ОТКРЕПИТЬ
.$RQSG =: 060 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $RQSG
.$RSCT =: 062 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $RSCT
.$RSTT =: 064 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $RSTT
.$RTIC =: 066 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $RTIC
.$SPL0 =: 070 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $SPL0
.$SPL7 =: 072 (BSTRAP) ;АДРЕС ПОДПРОГРАММЫ $SPL7

.$QIOW =: 074 (X) ;АДРЕС DPB QIOW$
.$EXST =: 076 (X) ;АДРЕС DPB EXST$
.$QKIL =: 100 (X) ;АДРЕС DPB QIOW$ IO.KIL
.$QATA =: 102 (X) ;АДРЕС DPB QIOW$ IO.ATA
.$FILE =: 104 (X) ;АДРЕС ТАБЛИЦЫ ФАЙЛОВ $FILES (X)
.$TIMB =: 106 (X) ;АДРЕС БУФЕРА GTIM$
=: 110 (X) ;ПАРАМЕТРЫ RTEM
;+00 - BIT 2: 1=ЗАГРУЖЕН С VS
;+02 - ?
;+04 - ?
;+06 - ID СИСТЕМЫ:
; 1 - RSX-11M
; 5 - VAX/VMS
; 6 - RSX-11M-PLUS
; 11 - P/OS
;+10 - БЛОК ОПИСАНИЯ ПРИНТЕРА
;+12 - ||
'+14 - ||
;+16 - ||
;+20 - ||
;+22 - ||
;+24 - ||
;+26 - КОНЕЦ БЛОКА ОПИСАНИЯ ПРИНТЕРА
;+30 - МАКСИМАЛЬНЫЙ НОМЕР LUN
;...
;+40 - ВЕРСИЯ? (^RV1.)
=: 112 (X) ;(ССЫЛАЕТСЯ В СИСТЕМУ) USR?
.$LUNT =: 114 (X) ;АДРЕС ТАБЛИЦЫ LUN $LUNTB (X)

;
;ЭТО ПОДПРОГРАММЫ И ПЕРЕМЕННЫЕ RT-11 КОТОРЫЕ RTEM'ОВСКИЕ ПОДПРОГРАММЫ ПРИ СЛУЧАЕ
;МОГУТ ИСПОЛЬЗОВАТЬ. BSTRAP ЗАПОЛНЯЕТ ДАННЫЕ СМЕЩЕНИЯ ДЛЯ RTEM.
;
.EXUSE =: 140 (BSTRAP) ;АДРЕС EXUSER
.FPPFL =: 142 (BSTRAP) ;АДРЕС FPPFLG
.INTAC =: 144 (BSTRAP) ;АДРЕС INTACT
.INTLV =: 146 (BSTRAP) ;АДРЕС INTLVL
.LKQUE =: 150 (BSTRAP) ;АДРЕС LKQUE
.PSCLO =: 152 (BSTRAP) ;АДРЕС PSCLOK
.RMONS =: 154 (BSTRAP) ;АДРЕС RMONSP
.SAVE3 =: 156 (BSTRAP) ;АДРЕС SAVE30
.SYS =: 160 (BSTRAP) ;АДРЕС $SYS
.TASKS =: 162 (BSTRAP) ;АДРЕС TASKSP
.TIKCT =: 164 (BSTRAP) ;АДРЕС TITCTR
.TTRSE =: 166 (BSTRAP) ;АДРЕС TTRSET
.$ENSY =: 170 (BSTRAP) ;АДРЕС $ENSYS
.$FORK =: 172 (BSTRAP) ;АДРЕС $FORK
.$INTE =: 174 (BSTRAP) ;АДРЕС $INTEN
.$RMP0 =: 176 (BSTRAP) ;АДРЕС $RMON (?)
.$RMP1 =: 200 (BSTRAP) ;АДРЕС $RMON (?)
.$RMP2 =: 202 (BSTRAP) ;АДРЕС $RMON (?)
.$RMP3 =: 204 (BSTRAP) ;АДРЕС $RMON (?)
;
;TASK SST VECTOR. ЭТА ЧАСТЬ, ВОЗМОЖНО, НЕ РЕГЛАМЕНТИРУЕТСЯ СПЕЦИАЛЬНЫМИ СМЕЩЕНИЯМИ,
;НО В ИМЕЮЩЕМСЯ RTEM V1.0 ПО ЭТИМ СМЕЩЕНИЯМ НАХОДИТСЯ ВЕКТОР SST ЗАДАЧИ. ПОСЛЕ ИДУТ
;ВСЕВОЗМОЖНЫЕ DPB ДИРЕКТИВ RSX (ПО БОЛЬШЕЙ ЧАСТИ, НА НИХ ССЫЛАЮТСЯ ДРУГИЕ СМЕЩЕНИЯ).
;
=: 206 (X) ;OD - АДРЕС ПОДПРОГРАММЫ ВЕКТОРА 4
=: 210 (X) ;MP - АДРЕС ПОДПРОГРАМЫ ВЕКТОРА 250
=: 212 (X) ;BE - АДРЕС ПОДПРОГРАММЫ ВЕКТОРА 14
=: 214 (X) ;IO - АДРЕС ПОДПРОГРАММЫ ВЕКТОРА 20
=: 216 (X) ;IL - АДРЕС ПОДПРОГРАММЫ ВЕКТОРА 10
=: 220 (X) ;EM - АДРЕС ПОДПРОГРАММЫ ВЕКТОРА 30 (КРОМЕ EMT 377)
=: 222 (X) ;TR - АДРЕС ПОДПРОГРАММЫ ВЕКТОРА 34 (TRAP 0 ИЗ ОБЛАСТИ
; RTEM ИСПОЛЬЗУЕТСЯ ДЛЯ ПОДПРОГРАММЫ GETPSW RT-11)
=: 224 (X) ;FP - АДРЕС ПОДПРОГРАММЫ FP EXCEPTION
;-----------------------------------------------------------------------------------------------
;ТАБЛИЦА СООТВЕТСТВИЯ RSX-11 LUN УСТРОЙСТВАМ RT-11 (СМЕЩЕНИЕ 114 УКАЗЫВАЕТ НА ЭТУ ТАБЛИЦУ).
;НА КАЖДЫЙ LUN ПРИХОДИТСЯ ПО ДВА СЛОВА (ПЕРВОЕ - СЛОВО СОСТОЯНИЯ, ВТОРОЕ - ИМЯ RT-11 УСТРОЙСТВА В ;RADIX-50).
;СЛОВО СОСТОЯНИЯ ИСПОЛЬЗУЕТ СЛЕДУЮЩИЕ БИТЫ:
100000 - LUN ДОСТУПЕН ТОЛЬКО ДЛЯ ЧТЕНИЯ
40000 - LUN ИCПОЛЬЗУЕТСЯ
20000 - ?
10000 - ?
200 - LUN НАЗНАЧЕН САМИМ RTEM, ЕГО ТРОГАТЬ НЕЛЬЗЯ

;ТАБЛИЦА ФАЙЛОВ (СМЕЩЕНИЕ 104), НА КАЖДЫЙ ФАЙЛ ПРИХОДИТСЯ ПО 23 (ВОСЬМЕРИЧНОЕ) СЛОВ.
;ПЕРВОЕ СЛОВО - СЛОВО СОСТОЯНИЯ:
100000 - ФАЙЛ ОТКРЫТ ТОЛЬКО ДЛЯ ЧТЕНИЯ
40000 - ФАЙЛ ОТКРЫТ
20000 - SHARED? BOOT? (ПРЕДПОЛОЖИТЕЛЬНО ГОВОРИТ О ТОМ, ЧТО СЛЕДУЮЩАЯ ЗАПИСЬ - ЧАСТЬ ЭТОЙ)
400 - ВРЕМЕННЫЙ ФАЙЛ - БУДЕТ УДАЛЕН ПОСЛЕ ОТСОЕДИНЕНИЯ ИЛИ ВЫХОДЯ ИЗ RT1M
200 - ФАЙЛ ОТКРЫТ САМИМ RTEM, ЕГО НЕЛЬЗЯ ТРОГАТЬ

;И ДЛЯ ФАЙЛА И ДЛЯ LUN БИТЫ 0-6 МЛАДШЕГО БАЙТА СОДЕРЖАТ НОМЕР ЗАДАНИЯ RT-11, УМНОЖЕННЫЙ НА 2
;(СМЕЩЕНИЕ $JOBNU [322] ОТ НАЧАЛА RMON) ПЛЮС 1 (ИЛИ 0 ДЛЯ ВНУТРЕННИХ RTEM'ОВСКИХ НАЗНАЧЕНИЙ).
;ОСТАЛЬНЫЕ СЛОВА В ТАБЛИЦЕ:
;+02 РАЗМЕР В БЛОКАХ (ДЛЯ SHARED IMAGE ТУТ ПОЛНЫЙ РАЗМЕР УСТРОЙСТВА VS0:)
;+04 ИМЯ ФАЙЛА В RADIX-50 (ТРИ СЛОВА)
;+12 РАСШИРЕНИЕ ФАЙЛА (RADIX-50)
;+14 НОМЕР ВЕРСИИ ФАЙЛА
;+16 ИМЯ УСТРОЙСТВА (ASCII)
;+20 НОМЕР УСТРОЙСТВА
;ОСТАЛЬНЫЕ СЛОВА ПОКА НЕ ЯСНЫ

В МАССИВЕ ПАРАМЕТРОВ (ДОСТУПНОМ ПО АДРЕСУ ИЗ СМЕЩЕНИЯ 110 В RTEM LINK AREA), ПО СМЕЩЕНИЯМ
10-26 НАХОДИТСЯ БЛОК ОПИСАНИЯ ПРИНТЕРА. ЕГО ФОРМАТ:
10 - ИМЯ УСТРОЙСТВА
12-16 - ID ФАЙЛА КАТАЛОГА В КОТОРОМ БУДЕТ СОЗДАВАТЬСЯ ВРЕМЕННЫЙ ФАЙЛ ДЛЯ СПУЛИНГА
20-24 - UIC В ФОРМАТЕ GGGMMM В КОДЕ ASCII
26 - НОМЕР УСТРОЙСТВА

В RSX-11M-PLUS ВСЕГДА ОТКРЫВАЕТСЯ УСТРОЙСТВО LP КАК ФАЙЛ.
В 11M ЭТО МОЖЕТ БЫТЬ ДИСК С UIC ГДЕ БУДЕТ СОЗДАВАТЬСЯ ВРЕМЕННЫЙ ФАЙЛ
ИЛИ СИМВОЛЬНОЕ УСТРОЙСТВО TT/LP КОТОРОЕ БУДЕТ ОТКРЫВАТЬСЯ
(В ЭТОМ СЛУЧАЕ В RT-11 БУДЕТ ИСПОЛЬЗОВАТЬСЯ ДРАЙВЕР LS).

form
31.08.2017, 16:22
Добавлю-ка в эту тему.
Немного навел порядок в голове относительно организации диска в RTEM при загрузке с пары S+P.
За основу взята пара S (4767+174=4941) + P (494).

Shared образ создавался штатно программой JOAT, private образ штатно создался RTEMом при первом запуске.

Получилась такая картина:

62124

В shared образе каталог содержит 31 сегмент, из них используются 3, а остальные 28 выпадают из видимости. Так же из видимости выпадают блоки загрузчиков и home block - они берутся. Последние 174 блока отмечены маркером (SWAP.SYS) и во время работы копируются temp файл.

В private образе под каталог выделен 1 сегмент.

В результате получается системный диск размером 5373 блока с каталогом, состоящим из 4 сегментов.

Суммируя все это получаем требования к shared образу:
shared образ имеет самый обычный каталог
сегменты должны линковаться по порядку
первый сегмент каталога в shared образе забивается записями 100000
все файлы должны иметь статус 102000
последний используемый сегмент добивается до конца записями 100000
общее число используемых сегментов не должно быть больше 30
в области данных не должно быть пустого места


Неиспользованные сегменты из shared образа можно выкусить, поправив ссылки на данные в оставшихся сегментах. Работоспособность при этом сохранится. То есть выделять под каталог 31 сегмент обязательно. Скорее всего JOAT использует стандартный алгоритм инициализации.

Попробовал добавить в shared образ немного пустого места в конце (не внесенного в каталог). Работает, но лишнее место нигде не отразилось во внутренних структурах данных, хотя в принципе такой вариант там предусмотрен судя по всему.

form
23.04.2020, 08:21
Все время забываю про эту тему и пишу в RSXной.
Выдерну-ка я ее из небытия :)

Обновился shared образ на CTAKAH::LB:[1,1]RT11SH.DSK.
Образ доступен так же здесь (http://pdp-11.online/~form/files/pdp-11/rtem/shared/).
Исправлена работа с десятичными номерами версий.
Теперь для VAX/VMS номера всегда десятичные, для RSX-11 проверяется поддержка FE$DVN для выяснения какой вариант правильный.

form
24.04.2020, 20:50
Обновилось описание (https://zx-pk.ru/threads/26437-rtem-11-rt-11-pod-rsx-11m-rsx-11m-plus-micro-rsx-vax-rsx.html?p=894298&viewfull=1#post894298) структур данных в RTEM link area.

S_V_B
24.04.2020, 20:57
Обновился shared образ на CTAKAH
Простите нубский вопрос - что есть "СТАКН", или это только для избранных, у кого есть накопитель типа "ВЕДРО"? :)
Я серьезно :)

form
24.04.2020, 21:01
что есть "СТАКН"
Подробности здесь (http://pdp-11.online/~form/ctakah.html) :)

S_V_B
24.04.2020, 21:03
спс :)

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

И все же "СТАКАН" это абривеатура?

form
24.04.2020, 21:08
На самом деле информация несколько устарела. На досуге надо будет заняться.
Сейчас больше систем доступны для входа через telnet:
System Machine Emul HECnet Telnet Guest account
---------------------------------------------------------------------------
> RSX-11M+ V4.6 PDP-11/94 E11 CTAKAH pdp-11.online:23 GUEST
RSX-11M+ V4.6 DVK-4 DVKemu KYPEBO - GUEST
RSX-11M+ V4.6 PDP-11/93 E11 KOPOBA - GUEST
RSX-11M+ V4.6 PDP-11/83 - BIGSYS - GUEST
RSX-11M V4.8 PDP-11/94 E11 CAXAP pdp-11.online:6023 GUEST
RSTS/E V10.1 PDP-11/94 E11 CCCP pdp-11.online:3023 254,254
OpenVMS V8.4 DS20 CHARON BOPOHA pdp-11.online:5023 GUEST
OpenVMS V8.4 DS10 - CTEPBA - GUEST
OpenVMS V7.3 MV3900 SimH XPEH - GUEST
TSX+ V6.50 PDP-11/94 E11 - pdp-11.online:2023 GUEST
2.11BSD PDP-11/94 E11 - pdp-11.online:4023 guest
Впрочем это не для данной темы - это все лучше в теме про RSX...

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


это абривеатура?
Это название ноды в сети DECnet. Оно может содержать до 6 букво-цифр.
Каждый именует как ему нравится. Я люблю использовать варианты похожие на русские слова :)

litwr
17.09.2021, 20:17
Прежде всего, позвольте поблагодарить вас за немаленькую проделанную работу и возможность пообщаться с интересной системой. А теперь вопросы.
Вошел в стакан, запустил RTEM, а там после /vs произошла загрузка с DU1:WORK.DSK;1 - и это уже непонятно, в катaлоге DU1: файла WORK.DSK команда DIR не показывает. Есть ли в стакане другие образы дисков и как их найти? Что-то не так у меня с терминалом, тетрис не идёт. :( Что может быть не так?
Как закинуть свой файл на образ диска? Есть ли какой-нибудь минималистический образ, пригодный скажем для переброски на MIM?

form
19.09.2021, 10:17
WORK.DSK команда DIR не показывает.
Это потому что RSX того времени не умел работать с именованными каталогами (программа просто их не видит), а домашний каталог у пользователя именованный.
Файлы для RTEM находятся в US:[377,377].


Есть ли в стакане другие образы дисков и как их найти?
На стакане нету. Есть на archive.pdp-11.org.ru.



Как закинуть свой файл на образ диска? Есть ли какой-нибудь минималистический образ, пригодный скажем для переброски на MIM?
Для GUEST особо способов не предусматривалось.
Можно закинуть через Kermit (KER) или через RT-11 VTCOM (командой TRA).
Способ довольно муторный.
Другой вариант - выложить на FTP и в сессии на стакане скачать командой FTP.
На/с MIM можно перекинуть по DECnet.
FTP не проверял (разрешено ли к MIM подключаться не-анонимоусом).

litwr
19.09.2021, 13:15
Другой вариант - выложить на FTP и в сессии на стакане скачать командой FTP.
На/с MIM можно перекинуть по DECnet.
FTP не проверял (разрешено ли к MIM подключаться не-анонимоусом).
Благодарю за подсказки. Попробовал с ftp, с одним сервером почему-то не сработало, а с другим прошло.
Однако возникли проблемы. Закинул в стакан на DU1:[377,377] файл RT11SY.DSK - использовал PIP/CO - в каталоге показывается с флагом С, но при загрузке rtem RT11SY/sh возникает неожиданное сообщение

?RTE-F-Shared directory not squeezed DU1:[377,377]RT11SY.DSK;1
...
RT11SY.DSK - это образ RT11SH.DSK, на котором я убрал фортран и записал BBC Basic. Что делать? Может надо сам образ сквизировать, но как?
Кстати, для записи на образ использовал RT11DSK из эмулятора UKNCBTL - оказалось, что она работает не только для УКНЦ. Приятная неожиданность, про это мало кто знает, используют PUTR, с которым ещё не разобрался. А есть ещё более древнее досовское RTTOOLS - оно совсем плохо работает.
Для справки, на MIM есть ftp-сервер и он работает.

form
19.09.2021, 13:26
?RTE-F-Shared directory not squeezed DU1:[377,377]RT11SY.DSK;1
Shared образ должен быть подготовлен с помощью программы JOAT.
У него особый формат (детали где-то в начале темы должны быть).
Причем в виду старости программы JOAT которая имеется в наличии, за порядком файлов придется следить самостоятельно, а программе JOAT запретить его менять.


Что делать?
Самое простое - положить на private образ который подключается к SY, но являтся частью куда можно записывать.


на MIM есть ftp-сервер и он работает.
То что FTP сервер есть - это понятно - оттуда проще качать BQTCP/IP - быстрее чем по DECnet.
А вот можно ли туда зайти по FTP пользователем - не проверял.

litwr
19.09.2021, 15:40
Shared образ должен быть подготовлен с помощью программы JOAT.
У него особый формат (детали где-то в начале темы должны быть).
Причем в виду старости программы JOAT которая имеется в наличии, за порядком файлов придется следить самостоятельно, а программе JOAT запретить его менять.

Самое простое - положить на private образ который подключается к SY, но являтся частью куда можно записывать.

То что FTP сервер есть - это понятно - оттуда проще качать BQTCP/IP - быстрее чем по DECnet.
А вот можно ли туда зайти по FTP пользователем - не проверял.

А можно побольше деталей? Совсем непонятно. :( JOAT - это же программа для RT11, как мне её использовать для работы с образом в RSX11? Есть ли где-нибудь образ, который можно использовать как приватный? Попробовал закинуть один обычный загрузочный образ, но не грузится. Может можно как-то проще добавить пару программок к существующей в стакане RTEM-конфигурации? Попробовал выгрузить WORK.DSK - не сработало. Хотел его поредактировать. Но и какой-то он большой очень, мне бы только минимум системы, без трансляторов и т.п.
На MIM по ftp нормально все заходится.
Кстати, в начале темы ссылка на здесь не работает - приходится её править.

form
19.09.2021, 17:00
как мне её использовать для работы с образом в RSX11?
Примерно так (из под RTEM):

Подключаем shared образ в качестве виртуального диска (с него берем исходную систему):
.JOAT LB:[1,1]RT11SH/V/W
?JOAT-I-Attached to VS1:

.

Поключаем образ на котором готовим болванку:
.JOAT TEMP/V/C:20480.
?JOAT-I-Attached to VS2:

.INI VS2:/NOQ

.

Копируем туда все нужные файлы, помним, что SWAP.SYS отмечает маркер временного пространства (оно доступно для записи на время работы без сохранения результата на диск) в которое должны попасть все драйверы (как минимум те для которых есть команды SET), IND.SAV и UCL.DAT (если не требуется запоминать пользовательские команды - в этом случае он должен быть на private образе). Эти файлы должны быть в самом конце после SWAP.SYS.

Создаем новый shared образ (/O:SAV запрещает перемещать файлы с целью создания временной области - для RT-11V5 данный JOAT не годится):
.JOAT VS2:/S/O:SAV RT11SH
?JOAT-I-Attached to VS3:

.

В результате будет создан в файловой системе RSX-11 новый shared образ.


Есть ли где-нибудь образ, который можно использовать как приватный?
К приватному образу никаких требований нет (кроме того чтобы суммарное количество файлов с shared образом, суммарный размер и количество сегментов каталога не привысило лимит). Он создается если его нет. Ну и желательно чтобы там не было файлов с теми же именами которые уже есть в shared образе, иначе будет неразбериха.

litwr
19.09.2021, 19:33
К приватному образу никаких требований нет (кроме того чтобы суммарное количество файлов с shared образом, суммарный размер и количество сегментов каталога не привысило лимит). Он создается если его нет. Ну и желательно чтобы там не было файлов с теми же именами которые уже есть в shared образе, иначе будет неразбериха.
У меня оказывается всё работало правильно, но предупреждение показалось крашем. :( Теперь всё пошло, но обнаружились две проблемы.
1) Есть маленький код для RSX-11.


.TITLE T7 - Test of printing
.MCALL QIOW$S, EXIT$S
.radix 10
.PSECT CODE,I,RW
START:
QIOW$S #IO.WLB, #5, #5,,,,<#msg1, #msg1m-msg1, #'$>
MOV #msg1m,R0
MOV #7,R1
QIOW$S #IO.RPR,#5,#5,,#IOSB,,<#OBUF,#8,,R0,R1>
EXIT$S
IOSB: .BLKW 2
OBUF: .BLKB 8
msg1: .ascii "Hello "
.ascii "world"<10><13>
.ascii "t7-"
msg1m: .ascii "1234567"
.END START

Когда его запускаю в стакане, то получаю


Hello world
t7-
1234567

A когда его запускаю в MIM, то получаю


Hello world
t7-1234567

Почему-то СТАКАН добавляет конец строки. Я запускал код и на других системах когда-то и там этого переноса также не было.

2) Под RTEM что-то не так происходит с таймером. В закинутом в стакан образе RT11SX.DSK есть файлы BBC.SAV и CLOCK.BAS. Первый из них бибисишный бейсик, а второй - это известный бенчмарк для него. Делаю следующее (команды бейсика нужно обязательно набирать большими)


rtem rt11sx/pr
run bbc
*ESC OFF
LOAD"CLOCK.BAS"
RUN

Получаю одни нули. :( Для выхода из бейсика Ctrl-C. Запускаю это же на MIM и получаю реальные значения. Может это знак какого-то переполнения таймера в стакане? B бейсике можно печатать значение таймера PRINT TIME - в стакане идут отрицательные числа, а на МIM - положительные.
Похоже на MIM также пропатченный RTEM, правильные даты и т.п. - или это тоже Ваш?

form
19.09.2021, 22:15
Почему-то СТАКАН добавляет конец строки.
Это проблемы с редактором ввода.
Для проверки можно сделать SET NOTRA и запустить еще раз.
Ну или переписать код так чтобы в подсказке не использовались CR/LF - в 99% случаев так и делается :)


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

На MIM тот же самый RTEM - как я что-то меняю, я сообщаю, и его обновляют.
Да и с таймером никакой работы нет кроме вызовов RT-11: .DATE, .GTIM, .MRKT, .CMKT, .TIMIO, .CTIMIO, .TWAIT, а они работают - просто вместо физического таймера происходит обращение к RSX-ным вызовам.
Скорее всего все дело в том, что у меня эмулятор умышленно замедляется, а на MIM лупит со всей современной дурью.
Ну и у меня SimH на тормозном компе, а там E11 на быстром :)

litwr
20.09.2021, 19:21
Это проблемы с редактором ввода.
Для проверки можно сделать SET NOTRA и запустить еще раз.
Ну или переписать код так чтобы в подсказке не использовались CR/LF - в 99% случаев так и делается :)
Ничего не понял про код подсказки, можно поподробнее? Странный перенос происходит при вызове функции ввода, там нет CR/LF... Однако, SET NOTRA решило проблемку, но это также отменило удобную работу с командной строкой (редактором ввода?). В HELP вообще нет информации про NOTRA - можно как-то пояснить, что это? Без NOTRA вызов функции ввода, как уже отметил, почему-то вставляет перенос строки.



Под RTEM все правильно происходит с таймером - он работает, но только через вызовы RT-11 (или RSX-11).

С таймером в стакане определенно что-то не так. Возможно это из-за SIMH, хотя автор бейсика делал тесты под SIMH, но сразу под RT-11, без RSX-11/RTEM. Попробуйте PRINT TIME. Hа cтакане печатаются какие-то вообще хаотические значения, а на Миме всё в порядке. Безусловно таймер в стакане частично рабочий, программки для расчета числа пи работают отлично. Однако, это только частично, бейсик в ауте. Забросил в Стакан и Мим новый приватный образ PR2.DSK - он поменьше. Вот пример моей сессии (только поток ввода).
rtem pr2/pr
r pieis
100 -- таймер работает отлично
r bbc
PRINT TIME -- (делаем так несколько раз) какая-то чушь в стакане, на миме всё отлично
^C
Ещё в стакане какая-то путаница, хотя это относится и к миму. Файлы для RTEM лежат в каталоге DU1:[377,377], но каталог DU1:[377,377] - это согласно DIR/FULL - это каталог DU1:[GUEST], но DIR [GUEST] и DIR [377,377] показывают совсем разные файлы. Помогите с этим разобраться, если возможно. Цель у меня как-то перетащить RTEM cо Cтакана или Мима на другую машину. Поэтому подскажите ещё, пожалуйста, а как RTEM узнает, где лежат его файлы? В стакане они в каталоге DU1:[377,377], а в документации RT11SH.DSK на LB:[1,1], а про RT11PR.DSK вообще не написано где - он автоматически может создаваться. Получается где-то есть какой-то файл конфигурации? Или, проще, что надо сделать, что для переноса RTEM?
У ftp-сервера на Миме обнаружилась неприятная проблема. Когда загрузил туда бинарный файл в бинарном естественно режиме, то обнаружил, что он слегка вырос в размерах. Полагаю, что сервер получал файл в текстовом режиме - переключалка на бинарность не работает. Пришлось запускать на Миме ftp-клиента и шаманить через бесплатный онлайн ftp-сервер.
Кстати, не появились ли у Вас какие-нибудь живые машинки? Хорошо бы сделать ещё пару бенчмарков для истории.

form
20.09.2021, 20:43
там нет CR/LF
Да, это в сообщении было.
Значит разная отработка VFC получается.
На стакане просто для ANSI терминалов включается возможность редактирование построчного ввода - можно вызывать старый ввод и редактировать его как в SL род RT-11.
Но там есть некоторые проблемы с IO.RPR (впрочем проявляются они редко - на моей памяти я только в одной живой программе наступал на косяки).


В HELP вообще нет информации про NOTRA
HELP/DCL SE TE TRA


С таймером в стакане определенно что-то не так.
С таймером все так, а вот с равномерностью выполнения кода у SimH сильные проблемы на слабых машинах, а при использовании задержек и подавно. Я раньше E11 использовал, но чтобы сделать вменяемую конфигурацию в демо версии нужны или SCSI диски или виртуальная машина, а у меня под это все древний нотебяк отдан.



Попробуйте PRINT TIME.
Мне PRINT TIME в неизвестной программе ни о чем не говорит, зато говорит печать времени в системе, в BASIC-11 (как в RSX так и в RTEM), в BASIC-PLUS-2 - везде правильно.


но каталог DU1:[377,377] - это согласно DIR/FULL - это каталог DU1:[GUEST]
А можно поснить как такая мысль в голову пришла что разные каталоги - это один каталог?
А то без примера трудно понять что имеется в виду ;)



как RTEM узнает, где лежат его файлы?
По умолчанию shared образ - LB:[1,1]RT11SH.DSK, а private образ лежит на SY: в каталоге, соответствующем текущему protection UIC.

>CHD
DU1:[FORM] Named TT52:
Protection UIC: [1,127]
>

Самое простое - просто не использовать именованные каталоги :)


бинарном естественно режиме
Бинарный режим в FILES-11 означает несколько иное чем сейчас принято понимать.
Там это файл с записями переменной длины.
FTP в RSX поддерживает режим BLOCK, но как его инициировать со стороны клиента - фиг его знает - известные мне ftp клиенты понимают только ASCII и IMAGE (причем у них BINARY - его синоним).
Если передавать файлы между RSXами - то просто никакого режима не надо указывать - он сам повторит формат файла.


Кстати, не появились ли у Вас какие-нибудь живые машинки?
Машина стоит на шкафу, времени нет попросить мне спаять новый стартер (или пропаять старый - там где-то контакт плохой).

litwr
21.09.2021, 13:34
Но там есть некоторые проблемы с IO.RPR (впрочем проявляются они редко - на моей памяти я только в одной живой программе наступал на косяки).
Получается проблемка с неожиданным переходом на новую строку скорее всегдашняя - похоже на баг в глубинах кода RSX-11. Хотя возможно не совсем корректны процедуры трансляции.


HELP/DCL SE TE TRA
Благодарю Вас. Интересно, что HELP/DCL SE TE про TRA не пишет. :(


С таймером все так, а вот с равномерностью выполнения кода у SimH сильные проблемы на слабых машинах
Не совсем понятно как скорость хоста может влиять на эмуляцию - эмулирyемое железо ничего не знает про особенности хоста. Потом у Мима всё работает.


Мне PRINT TIME в неизвестной программе ни о чем не говорит
Вот код из сорца бейсика для считывания таймера


.IO_ReadTime
mov #RT_STACK,r0
mov sp,(r0) ; Save SP
mov r0,sp ; Use internal stack
cmp -(sp),-(sp) ; Make room on stack
mov sp,-(sp) ; Stack address of space on stack
mov #&o21*256+0,-(sp) ; GETTIM - Get Time
mov sp,r0
emt &o375
cmp (sp)+,(sp)+ ; Drop command and address
mov (sp)+,r1 ; Get 50Hz/60Hz tick to r1:r0
mov (sp)+,r0
mov (sp),sp ; Restore SP
rts pc

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


А можно поснить как такая мысль в голову пришла что разные каталоги - это один каталог?
Понимаю, что написал какую-то чушь. Но реально запутался в этих необычностях и недоделках вокруг каталогов в RSX-11. Спутал UIC и каталог - они же там одинаково выглядят, два числа в квадратных скобках. Предполагал, что у именнованного каталога должно быть и числовое имя - но споткнулся на этом UIC. А есть ли реально это числовое имя для именнованного каталога?


По умолчанию shared образ - LB:[1,1]RT11SH.DSK, а private образ лежит на SY: в каталоге, соответствующем текущему protection UIC.

>CHD
DU1:[FORM] Named TT52:
Protection UIC: [1,127]
>
Про второе не знал - благодарю вас. Но в стакане RTEM, если правильно понял, использует другой шарообраз WORK.DSK - как это задаёся?


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


Бинарный режим в FILES-11 означает несколько иное чем сейчас принято понимать. Там это файл с записями переменной длины.
Не встречал такого. Что-то очень необычное, до сих пор встречал только файлы с фиксированной длиной записи - такое на мейнфреймах до сих пор живет.
Ну и непонятно, почему на выгрузку бинарный режим работает правильно, а на погрузку нет. Хотя могу предположить: в RSX-11 у файла нет атрибута длины, поэтому вместо длины для сохранения этого атрибута файл заливают в записи так, чтобы размер сохранился, а записи наверное не могут быть больше 256 или 65536 байт, поэтому файл приходится резать на записи и добавлять их длину, что и увеличивает размер. Наверное было бы лучше, если бы binary включал блочный режим...

form
21.09.2021, 13:54
похоже на баг в глубинах кода RSX-11
Не RSX-11, а программы трансляции, самописной.


про TRA не пишет
Пишет про SET/TERMINAL/TRANSLATION_ROUTINE.
А сокращение команды (опускание слова TERM) - фича DCL.


Не совсем понятно как скорость хоста может влиять на эмуляцию - эмулирyемое железо ничего не знает про особенности хоста. Потом у Мима всё работает.
У мима идет ровная эмуляция, у SimH качается взад-вперед.
Если работать с таймером правильно - используя системные запросы - получаем абсолютно четко работающее время и все что с ним связано. Если пытаемся заниматься фигней вроде калибровки с помощью циклов инструкций и тому подобного - получаем полный бардак.
Еще раз: со временем все в порядке, в чем можно убедиться, проверяя время, написав программу с использованием запросов таймера итд. Если не работает одна конкретная программа - это значит, что она пытается сама воевать с таймером по-своему, не надеясь на системные вызовы (что для RT-11 иногда оправдано в виду необязательной поддержки таймера, но накладывает свои ограничения).


другой шарообраз WORK.DSK - как это задаёся?
Он монтируется из стартового файла (STARTM.COM).


Но юзер сразу попадает в свой именнованный каталог. Получается вроде как неизбежное зло.
Это определяется при заведении пользователя.
Можно попросить чтоб завели так же обычный UICовый каталог и переключаться между ними по мере надобности или просто обойтись без именного.


Не встречал такого. Что-то очень необычное, до сих пор встречал только файлы с фиксированной длиной записи - такое на мейнфреймах до сих пор живет.
Это фича FILES-11.
Подробности можно почитать в описании программы FLX, и там же про то как файлы конвертируются при передаче в/из RT-11.


почему на выгрузку бинарный режим работает правильно
Думаю потому что на вугрузку сервер в виду несообщения ему структуры файловой системы, выдает в бинарном режиме обычный image. Это надо смотреть исходники FTPD - они доступны.
Я когда мне надо было что-то залить в RSX по FTP просто выкладывал файл на свой сервер, а из RSX качал его, выбирая режим BLO.


RSX-11 у файла нет атрибута длины
Не просто есть, но еще и с точностью до байта в отличие от RT-11.

litwr
21.09.2021, 19:11
Если работать с таймером правильно - используя системные запросы - получаем абсолютно четко работающее время и все что с ним связано. Если пытаемся заниматься фигней вроде калибровки с помощью циклов инструкций и тому подобного - получаем полный бардак.
Да вроде нет там калибровок, просто берется 50 Гц счетчик тиков от таймера и умножается на два. Зачем прикладной программе калибровать время - это же только эмуляторам нужно? Да и циклы инструкций на разных pdp-11 весьма разные. Подозреваю, что проблема в том, что как-то странно используется стек. В приведенном коде используется инструкция MOV SP,-(SP), которая на разной аппаратуре выполняется по-разному. Поэтому дело скорее всё-таки в SIMH, который исполняет эту инструкцию не так как эмулятор для Мим.


Не просто есть, но еще и с точностью до байта в отличие от RT-11.
Пробовал DIR/ATTR - никакого намека на размер в байтах... Может у Ваксов только есть... Да и зачем было бы заниматься ерундой с блоками переменной длины в бинарном режиме ftp, если бы счетчик байт стоял?

Но продолжаю бороться с RTEM. Захожу под своим именем, не GUEST, и RTEM перестаёт для меня работать.


RTE/vs
?RTE-F-Error from PARSE SY:[202,221]202221.DIR;1

Получается нужно создать каталог SY:[202,221]? Попробовал CREATE/DIR [202,221] - требует привилегий. :( Получается надо просить админа, чтобы он для юзера такой каталог сделал или сделал автоматическое создание/удаленик при входе/уxоде? Или такие привилегии доступны и обычным юзерам, если админ их поставит?

form
21.09.2021, 20:17
Да вроде нет там калибровок
В принципе есть еще один момент который может внести бардак: каждые 24 часа запускается синхронизация времени по NTP, но в отличие от обычных систем где время не меняется, а только подстраивается скорость часов чтобы время приблизилось к нужному, тут время именно устанавливается. Это никак не влияет на запросы к таймеру, но может влиять на программы которые читают время периодически, сравнивая его. Но вероятность попадания в эту ситуацию невелика.


MOV SP,-(SP)
Это неоднозначная команда.
Она будет по разному работать на разных процессорах.
В частности, на J11 (который у эмулируется на стакане), в -(SP) запишется уже уменьшенное на 2 значение.
На MIM эмулируется многопроцессорный 11/74, там не знаю как команда выполняется - надо почитать таблицу различий которая есть в документации на DCJ11.



Пробовал DIR/ATTR - никакого намека на размер в байтах...
DIR/A выдает далеко не все что можно узнать о файле.
А размер в байтах там есть.
Или, если точнее, есть номер последнего байта в последнем блоке.


CREATE/DIR [202,221] - требует привилегий
Да, нужно или иметь привилегии или быть владельцем диска (смонтировать с выделением для личного использования).
Например:
$ CHD
DU1:[GUEST] Named TT52:
Protection UIC: [377,377]
$ VCP CON TEST/CR:RK07/MOU:FOR:NOSH
VCP - Bad block descriptor created.
VCP - Device VF0: (DM0:) has been assigned.
$ INI DM: TEST
$ DISM DM:
DMO -- TT52: dismounted from DM0: *** Final dismount initiated ***
$ MOU DM:TEST/NOSHA
$ CRE/DIR DM:[377,377]
$ ASS DM: SY:
$ RTE /VS
?RTE-I-File not found; creating new private file DM0:[377,377]RT11PR.DSK;0

RTEM-11 (RSX-11M) V01.00

RT-11FB V05.07
?KMON-F-File not found DK:STARTM.COM

.

ra3qdp
22.09.2021, 17:59
на Миме
подскажите, пожалуйста - а Мим это что такое ?

Hunta
22.09.2021, 18:04
Редактор :)

litwr
22.09.2021, 20:09
Ну и у меня SimH на тормозном компе, а там E11 на быстром
Вы в ссылке (https://zx-pk.ru/threads/26437-rtem-11-rt-11-pod-rsx-11m-rsx-11m-plus-micro-rsx-vax-rsx.html?p=1059409&viewfull=1#post1059409) писали, что на Стакане E11... Кстати, похоже все сервера кроме стакана упали. И сам стакан почти упал тоже - пропали маленькие буквы. :(


В частности, на J11 (который у эмулируется на стакане), в -(SP) запишется уже уменьшенное на 2 значение. На MIM эмулируется многопроцессорный 11/74, там не знаю как команда выполняется - надо почитать таблицу различий которая есть в документации на DCJ11.

BlaireCas запускал бейсик на УКНЦ - там сработало. Значит ВМ2 и, очевидно, ВМ1 и ВМ3 работают не так, как J11 на подобных инструкциях. Получается, что более древние процы работали более правильно, согласно естественной логике. :)

Попробовал поулучшать код таймерной процедуры, получилось так


cmp -(sp),-(sp) ; Make room on stack
mov sp,r0
mov r0,-(sp) ; Stack address of space on stack
mov #17*256,-(sp) ; 17 = 021 = GETTIM - Get Time
mov sp,r0
emt 253 ;=0375
cmp (sp)+,(sp)+ ; Drop command and address
mov (sp)+,r1 ; Get 50Hz/60Hz tick to r1:r0
mov (sp)+,r0
return

все делаю на системном стеке - вроде работает, но иногда (очень редко) выдает

?MON-F-Trap to 4 001154
и программа крашится. Почему, не пойму - может системный стек совсем маленький и там на нужные 8 байт не всегда хватает места? Неспроста наверное в бейсике сделали локальный стек.


DIR/A выдает далеко не все что можно узнать о файле. А размер в байтах там есть. Или, если точнее, есть номер последнего байта в последнем блоке.
Это всё-таки совсем ни одно и тоже. Счетчик в последнем блоке был даже в древних коммодоровских дисковых форматах, но не знаю ни одной программы, которая бы при показе каталога печатала там точную длину файла, так как это очень медленно получалось бы. Этот счетчик - низкоуровневая информация, типа цепочки ссылок в FAT. И потом этот счетчик похоже не для всех форматов. Хотя абстрактно теоретически вполне возможно, что размер файла в байтах подсчитать почти всегда возможно, но от практических удобных юзеру фичей это далеко.


подскажите, пожалуйста - а Мим это что такое ?
Сервер, как и Стакан со Стервой. :) Тут - это не редактор, Хунта что-то напутал.

Hunta
22.09.2021, 20:34
http://www.kpxx.ru/kbaht4c/Софт/MIM/

form
22.09.2021, 20:52
на Стакане E11
Когда-то он и был под E11, но сейчас крутится под SimH.


все сервера кроме стакана упали
Я их не запускал после переезда моего роутера вместе со стаканом. Будет время - прокину ethernet через пол страны - подниму.


пропали маленькие буквы

SET LOW

Или запустить RTEM - он принудительно включает чтобы не подвиснуть потом в кеде :)



получилось так
.GTIM использует двухсловный EMT блок, во втором слове адрес буфера.
В коде этого никак не отражено.


Это всё-таки совсем ни одно и тоже.
Это не одно и тоже - это позволяет сделать то же самое - узнать размер с точностью до байта.
При этом никаких цепочек считать не надо - информация доступна сразу при считывании аттрибутов файла.

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


не запускал
За парой исключений впрочем: хрен работает на той же машине что и стакан и TSX-Plus крутится на самом роутере :)

litwr
22.09.2021, 23:37
http://www.kpxx.ru/kbaht4c/Софт/MIM/
Что-то реально интересное, хотя и ОТ.


Когда-то он и был под E11, но сейчас крутится под SimH.
Интересно, что в Миме ftp работает раз в 2-3 медленнее, чем в стакане, а проц раз в 10 быстрее. Какой-то парадокс.



SET LOW
Благодарю Вас, помогло. Но почему-то раньше без этого работало.


.GTIM использует двухсловный EMT блок, во втором слове адрес буфера. В коде этого никак не отражено.
Отражено, иначе как бы оно работало в 19 случаях из 20?

mov r0,-(sp) ; Stack address of space on stack
mov #17*256,-(sp) ; 17 = 021 = GETTIM - Get Time
Первый MOV и кладет этот адрес.


При этом никаких цепочек считать не надо - информация доступна сразу при считывании аттрибутов файла.
Нo до юзера это практически никак не доходит. :(


За парой исключений впрочем: хрен работает на той же машине что и стакан и TSX-Plus крутится на самом роутере :)
А вот хрен не работает, зависает при подключении. Другие просто сразу отпадают. :) Только стакан пока ещё стоит, но шатается. :)

form
22.09.2021, 23:48
Благодарю Вас, помогло. Но почему-то раньше без этого работало.
Просто по умолчанию на всех терминалах разрешено, а когда я захожу - у меня в стартовом файле запрещается, и в таком состоянии терминал остается :)


А вот хрен не работает

RSX-11M-PLUS V4.6 BL87 [1,54] System CTAKAH
22-SEP-21 23:42 Logged on Terminal TT53: as OIS70

Good Evening

,;,
O(o o)O
+---ooO-----------Ooo----------------------------------------------+
| # # # ## # |
| # ## ## # |
| #### #### #### # # ### # ### # ### # ### ### |
| # # # # # # ### # # # # # # # # # # # # |
| # # # # # # # # # # # # # # # # ##### |
| #### #### #### ### ### # ### # # ### ### # # # |
| # # ### |
| # # CTAKAH:: RSX-11M-PLUS V4.6 |
+------------------------------------------------------------------+

Last interactive login on Wednesday, September 22, 2021 20:51:18 (TT52:)
Last batch login on Saturday, March 9, 2019 11:59:20

>@LB:[1,2]SYSLOGIN.CMD
>SET /NOLOWER=TI:
>@ <EOF>
>SET HOST XPEH


Welcome to OpenVMS (TM) VAX Operating System, Version V7.3

Username: GUEST
,;,
O(o o)O
+---ooO-----------Ooo------------------------------------------------+
| # # # W E L C O M E T O |
| # ## ## |
| #### #### #### # # ### # ### #### # # ### # # |
| # # # # # # ### # # # # # # # # # # # # |
| # # # # # # # # # # # # # # # # |
| #### #### #### ### ### # ### # ##### # # ### |
| # # # |
| # # XPEH:: OpenVMS VAX V7.3 #### |
+--------------------------------------------------------------------+

Last interactive login on Saturday, 13-FEB-2021 13:44
$


Первый MOV и кладет этот адрес.
первый MOV кладет адрес EMT блока в R0, в первом слове блока должен быть код (он записывается далее), во втором - адрес буфера (второе слово не инициализируется).


Нo до юзера это практически никак не доходит.
Так уж принято - мерять все в блоках в этих системах. А в блоках все показывается - как используемое пространство так и выделенное.

ra3qdp
23.09.2021, 11:51
Сервер, как и Стакан со Стервой.
А где этот сервер найти ? У form_а ? А Стерва - что такое ?
На счет редактора MIM - там, вроде, кроме редактора - "оболочка" какая-то.
Если хотите поработать в RTEM, зачем Вам чужой сервер ? Поставьте эмулятор, RSX, запустите там RTEM.

litwr
23.09.2021, 18:18
Код:
Извиняюсь, перепутал хрен с безымянным сервером TSX+, который подвисал при подключении. Подумал про него "вот хрен-то" и получилась накладка. :) В HECnet не заходил.


первый MOV кладет адрес EMT блока в R0, в первом слове блока должен быть код (он записывается далее), во втором - адрес буфера (второе слово не инициализируется).
Что-то не понимаю вас - не теряйте формы! Вот опять мой код с подробными комментариями.


cmp -(sp),-(sp) ; выделяем 4 байта для данных таймера
mov sp,r0
mov r0,-(sp) ; записываем указатель на эти 4 байта в emt-блок вторым словом
mov #17*256,-(sp) ; 17 = 021 = GETTIM - Get Time - 1-е слово emt-блока
mov sp,r0 ;адрес emt-блока заносим в R0
emt 253 ;=0375
cmp (sp)+,(sp)+ ; Drop command and address
mov (sp)+,r1 ; Get 50Hz/60Hz tick to r1:r0
mov (sp)+,r0

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

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


А где этот сервер найти ? У form_а ? А Стерва - что такое ?
На счет редактора MIM - там, вроде, кроме редактора - "оболочка" какая-то.
Если хотите поработать в RTEM, зачем Вам чужой сервер ? Поставьте эмулятор, RSX, запустите там RTEM.

Выше в теме form давал ссылки. Cтерва, хрен и прочие - это, как вам уже писалось, сервера. А зачем тратить время на настройки и подгонки, если есть готовые хорошие системы? Вам никто вроде не мешает поставить свой сервер или, например, извиняюсь, пойти и заняться физкультурой.

form
23.09.2021, 18:27
TSX+, который подвисал при подключении
Отлично работает.
Только там надо Enter нажать - так уж устроено все в TSX+ - иначе просто будет таймаут.


Вот опять мой код с подробными комментариями.
Да, невнимательно посмотрел. Все ок.
Ну чтобы посмотреть что именно вызвало падение можно воспользоваться командой E.
Или еще лучше - загрузить SD и запустить - тогда SD отловит момент падения и предоставит всю информацию в удобном виде (на картинке код - мусор, единственное что я сделал - записал 0 по адресу 1000 и стартовал с него [HALT -> трап по 4]).
Если есть исходники (или OBJ файлы) - можно заставить SD распознавать имена символов (правда при этом он будет все похожие цифры тоже распознавать как эти самые символы).

В TSX+ можно запустить программу как RUN/DEBUG чтобы отлавливать косяки, но там будет что-то похожее на обычный ODT, а он на фоне SD смотрится бледно. Да и не помню если честно отлавливает ли он падения :)

form
23.09.2021, 22:15
Кстати о примере, если уж используем стек, то можно сэкономить пару слов:

MOV SP,R0
CMP -(R0),-(R0)
MOV R0,-(SP)
MOV #21*400,-(SP)
EMT 375
MOV (SP)+,R1
MOV (SP)+,R0
:)

Hunta
24.09.2021, 10:13
На счет редактора MIM - там, вроде, кроме редактора - "оболочка" какая-то.
Это редактор с функциями файлового менеджера, отдельного файлового менеджера нет.

form
07.08.2022, 04:02
Обновился shared образ для RTEM (https://pdp-11.online/~form/files/pdp-11/rtem/shared/).
Теперь в JOAT десятичные версии в RSX-11 поддерживаются полноценно (в прошлом варианте работало только отображение, а ввод работал только если номер версии не содержал циферок 8 и 9).

ra3qdp
07.08.2022, 08:11
RTEM является программой, выполняющейся под RSX-11M, RSX-11M-PLUS, Micro/RSX, VAX/RSX под управлением которой грузится обычный RT-11
забыли указать, что и под P/OS (ПРОС) на PRO3xx(Электроника-85) работает.

form
07.08.2022, 08:30
забыли указать, что и под P/OS (ПРОС) на PRO3xx(Электроника-85) работает.
Строго говоря, то, что он работает в P/OS - тоже результат патча RTEM.TSK.
RTEM был заброшен раньше чем, и у него в списке поддерживаемых систем были только 1 (RSX-11M), 5 (VAX/RSX) и 6 (RSX-11M-PLUS).
В образе который попал ко мне кто-то прописал 11 (P/OS) поверх 11M-PLUS, и мне пришлось возвращать его обратно.
Понемногу расковыриваю на досуге внутренности - может скоро свой вариант сделаю с поддержкой всего известного чего нет в этой версии.
А может и так допинаю патчами.
Функционально RTEM V1.0 различает только VAX/RSX и все остальное.
Сами различия по сути сводятся к мелочам вроде того, что под VAX/RSX нехватка динамической памяти - неустранимая проблема, да номера версий файла выбираются либо восьмеричные либо десятичные.
Сейчас JOAT в этом плане допинан чтобы явно проверять FE$DVN.

Сейчас JOAT.SAV мучаю, уже примерно наметил куда воткнуть поддержку именных каталогов. Он собран с FCS который вообще никак не поддерживает именные каталоги за исключением попытки выполнить директиву ELP$ которая в VAX/RSX полностью выполняет все для подпрограммы .PARSE.

ra3qdp
07.08.2022, 18:17
В образе который попал ко мне кто-то прописал 11 (P/OS) поверх 11M-PLUS, и мне пришлось возвращать его обратно.
так что - текущая версия не поддерживает P/OS ?

form
07.08.2022, 18:23
так что - текущая версия не поддерживает P/OS ?
Если склероз не врет, я когда патчил RTEM.TSK затер в нем VAX/RSX и оставил 11M/MPL/POS, но это не точно :)
Но в сущности RTEM.TSK правился в основном на предмет Y2K, так что для P/OS правленый не особо нужен.

ra3qdp
07.08.2022, 18:47
RTEM.TSK правился в основном на предмет Y2K, так что для P/OS правленый не особо нужен.
почему не нужен ? (у меня работает с текущей датой).
Давайте попробую RTEM на предмет работы в P/OS, пришлите пожалуйста в виде образа дискеты (*.dsk) для эмулятора.

form
08.08.2022, 11:08
Вот здесь (https://pdp-11.online/~form/files/pdp-11/rtem/v1last/) лежит последний вариант RTEM.TSK.
Посмотрел - в нем я затер VAX/RSX в таблице систем, а P/OS оставил.
Сейчас бегло глянул код - после таблицы систем есть свободное слово которое не адресуется нигде - видимо как раз оставлено для патчей, так что можно поддерживать все без затирания и переноса таблицы в другое место.
Таблица поддерживаемых систем находится по смещению 24606 (22606 в памяти во время запуска), туда нужно прописать последовательно: 1, 5, 6, 11, 177777.
На досуге переделаю.

Пока в приоритете поддержка именованных каталогов, расшироенных логических имен и SYS$LOGIN в частности.
Для этого потребуется куда-то втиснуть соответствующий код - изначально такого кода в образе нет (для VAX/RSX соответствующий функционал выполняется директивой ELP$).

В документации по RTEM v2.3 (это последняя версия, после нее RTEM забросили) говорится, что в RSX-11 поддерживается только [g,m] формат каталогов, что неудивительно: на тот момент последний RSX-11M-PLUS был v2.1, а в нем еще не было named directories.

Так что по сути если и найдется версия новее чем 1.0, ее все-равно придется дорабатывать.
Полагаю, что кроме поддержки флага UCF.SAV ничего нового в RTEM.TSK v2 не появилось.
А в JOAT.SAV по идее добавилась поддерджка IND.SAV - он при создании shared image должен помещаться после SWAP.SYS.

UPD: обновил RTEM.TSK по ссылке выше.

ra3qdp
08.08.2022, 16:26
Вот здесь лежит последний вариант RTEM.TSK
как его перенести в эмулятор (да и в реальную "железку") ?

form
08.08.2022, 16:38
как его перенести в эмулятор (да и в реальную "железку") ?
Честно говоря понятия не имею кто умеет работать с прошным форматом диска кроме прошного же эмулятора.
А эмулятора под рукой сейчас нету чтобы подумать вживую.

ra3qdp
08.08.2022, 17:10
вроде total командер умеет из windows переносить файлы в rt (а, может, и обратно), но это требует реальной дискеты и привода (и машины с поддержкой флопов). А там - flx (и, вроде, в rt какая-то утилита для этого есть). Но это сложно, не быстро, да и надо уметь (знать как именно) это делать. Можно, даже, как в те времена - кермитом. Hunta и Anasana что-то делали в этом направлении, но не доделали. Может какие-то еще есть варианты ?

form
08.08.2022, 17:29
Может какие-то еще есть варианты ?
Я могу только нормальный образ ODS-1 сделать - без перемешивания блоков.

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

Обновился shared образ (https://pdp-11.online/~form/files/pdp-11/rtem/shared/) для RTEM.

Еще доработки JOAT.SAV: версия теперь 01.00B
восстановлена оригинальная таблица допустимых дисков, добавлены DA, DC, DH, DU, DW, DZ, VF
восстановлена оригинальная таблица допустимых лент, добавлены MU, VF
файлы DUM.SYS, MUM.SYS, SDM.SYS, SLM.SYS, IND.SAV и UCL.DAT добавлены в список переноса в markzone
Теперь JOAT может без танцев с бубнами правильно размещать файлы RT-11 V5.x :)

Также драйверы, не поддерживающие команду SET, убраны из makrzone.

.JOAT LB:[1,1]RT11SH/V/W/L
?JOAT-I-Attached to VS1:
VS0: RO [25427] DU0:[1,1]RT11SH.DSK;21
RW DU1:RT11PR.DSK;1
VS1: RO [4985] DU0:[1,1]RT11SH.DSK;21
VS7: RW [65535] DU1:WORK.DSK;1

.JOAT
*NEWRT11SH=VS1:/S/O:ADD
?JOAT-I-Attached to VS2:
File? DATE.SAV
File?
*^C

.DIR VS2:
08-Aug-2022
DIR .SAV 20P 31-Oct-1998 PIP .SAV 30P 31-Oct-1998
...
RTEMFB.SYS 108P 08-Dec-2018 DAM .SYS 4P 14-Apr-2021
DCM .SYS 4P 14-Apr-2021 DHM .SYS 4P 14-Apr-2021
NLM .SYS 2P 06-Apr-2016 VSM .SYS 6P 16-Dec-2016
RKM .SYS 4P 03-Dec-2016 SWAP .SYS 28P 06-Apr-2016
BAM .SYS 7P 06-Apr-2016 DUM .SYS 5P 09-Dec-2016
IND .SAV 58P 31-Oct-1998 LDM .SYS 11P 06-Apr-2016
SDM .SYS 23P 30-Jan-2012 SLM .SYS 17P 22-Apr-2013
UCL .DAT 9P 06-Apr-2016 DATE .SAV 12P 13-Apr-2021
114 Files, 4947 Blocks
0 Free blocks

ra3qdp
08.08.2022, 18:36
Я могу только нормальный образ ODS-1 сделать

знать бы что такое ODS-1... назвали бы "своими именами" было бы ясно и без пояснений.
Может формат образов жестких дисков для эмуляторов P/OS и RSX одинаковый ?


А эмулятора под рукой сейчас нету
Вы, ведь, много раз мне присылали разные файлы в образах дискет, как Вы это делали тогда ? (с эмулятором)

Hunta
08.08.2022, 18:50
Hunta и Anasana что-то делали в этом направлении, но не доделали
1. Конвертирование образов флопов в эмуляторе Anasana-ы полностью доделано и работает.
2. Конвертирование образов винчестеров делается на коленках - или срезать первые 512 байт или добавить.
3. Конвертирования как такового в моей ImgUtil нет - её нацеленность - распаковка и создание образов и с хитрозадыми образами она работает нативно. По идее, RT-шные (а так же XXDP и DOS-11) образы (флопов и винчестеров) под Professional (Э85) должны создаваться без проблем (распаковка точно работает для всех перечисленных ОС и RSX), но - а) я это не тестировал б) в настоящее время идёт доработка ImgUtil по работе с ODS и проверять до окончания оной другие системы я не буду (особенно учитывая, что будут затронуты и они, но когда концепт под ODS дозреет) и в) для флопов это уже есть у Anasana-ы

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


ODS-1... назвали бы "своими именами"
Оно и названо своим именем.


Может формат образов жестких дисков для эмуляторов P/OS и RSX одинаковый ?
Нет

form
08.08.2022, 19:03
в эмуляторе Anasana-ы
А его где-нибудь найти можно?
А то я помнится видел только упоминание его и ни разу не видел самого эмулятора, а унихи у меня дома сейчас остались только на роутере и на малине (а она на шкафу лежит без монитора).

Hunta
08.08.2022, 19:13
А его где-нибудь найти можно?
Мою копию мне прислал Anasana, но мы не обговаривали - могу ли я кому-то ещё давать.
Но - в какой-то теме мелкала ссылка на архив

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


А его где-нибудь найти можно?
Нашёл - https://drive.google.com/file/d/0BwsKlCwNh66feVNpbi16TkUzT1U/

ra3qdp
08.08.2022, 20:43
Конвертирование образов флопов в эмуляторе Anasana-ы полностью доделано и работает.
Вы, наверное, ошиблись. Он это делал в программе (для Windows) под названием Кошка(ни как не связанной с эмулятором). Недавно с ним разговаривал и он сказал, что не все доделал, хотя стоит попробовать - что уже работает.

Hunta
08.08.2022, 20:46
Вы, наверное, ошиблись.
Я, наверное, не ошибся - так как сам это в эмуляторе делал.

ra3qdp
08.08.2022, 21:01
сам это в эмуляторе делал.
научите, пожалуйста.

Hunta
08.08.2022, 21:28
Он у меня не под рукой. Там закладка, посвящённая этому делу и всё интуитивно понятно

ra3qdp
08.08.2022, 21:57
подожду - когда он у Вас будет под рукой.

form
08.08.2022, 22:09
Откопал нотебяк старый без клавиатуры, завел на нем линуха с xhomer.
Засунул RTEM в прилагаемый образ pos32.rd в [1,1].
Куда и как правильно нужно засунуть для P/OS разбираться не стал - его кастрированный DCL меня бесит.
Я применил грубое физическое насилие для запуска :)

Взять можно здесь (https://pdp-11.online/~form/files/pdp-11/pro/pos32.rd.bz2).

С HDD все просто - достаточно отрезать нулевой блок, записать в RSX, прицепить обратно нулевой блок.

https://pdp-11.online/~form/files/pdp-11/pro/rtem-pro.png

Hunta
08.08.2022, 22:55
подожду - когда он у Вас будет под рукой.


Там закладка, посвящённая этому делу и всё интуитивно понятно

Пробуйте сами

ra3qdp
09.08.2022, 13:40
https://cloud.mail.ru/public/wYbc/9AMGbLdFY
RTEM запустился.
Надо бы исправить название темы - добавить P/OS(ПРОС).
Собственно благодаря P/OS(ПРОС) он и сохранился.

form
09.08.2022, 13:56
добавить P/OS
Замучаеимся перечислять все варианты - OMOSы там всякие, итд.
Я вон город-то себе самостоятельно тут не могу поменять, не то, что название темы :)

Hunta
09.08.2022, 14:05
Собственно благодаря P/OS(ПРОС) он и сохранился
Он - кто? RTEM? Ну ну. Я с ним разлекался в далёких 90-ых, на СМ-1420 и Кванте, на нормальной RSX, а не на огрызке

ra3qdp
09.08.2022, 14:09
Собственно благодаря P/OS(ПРОС) он и сохранился.
имел дома (в те годы) pro380 и 85-ку, на работе - то же была, "на общественных началах" занимался и обслуживанием всех 85-к на предприятии (а их было - много), собрал всякий софт для нее.
Спокойно лежали эти железки лет 20. Увидел в интернете творчество anasana, связался, познакомились. Много общались в интернете, он приезжал ко мне в Воронеж 2 раза. Подарил ему что-то, познакомил с разработчиком 85й. Передал ему почти весь сохранившийся софт (в том числе и RTEM с обгоревшей рукописной инструкцией по использованию). Так что не было бы у меня этих машин - не было бы сейчас RTEM.
Кстати, нашел у себя :
https://cloud.mail.ru/public/HZn9/Ak2JwfrJj
Form - что Вы скажете об этом ?

Hunta
09.08.2022, 14:22
Так что не было бы у меня этих машин - не было бы сейчас RTEM
О да, это единственный сохранившися экземпляр.


Directory of K:\My\MyWork\@HuntaWork.dsk\[RTEM]

12.05.2022 20:34 <DIR> .
12.05.2022 20:34 <DIR> ..
12.05.2022 20:34 19 394 @info.info@
12.07.1988 14:45 39 441 BSTRAP.MAC;1
12.07.1988 14:45 1 611 BSTRAP.MAC;1.header
12.07.1988 14:45 40 448 BSTRAP.MAC;1.image
12.07.1988 14:45 17 873 EDTGBL.MAC;1
12.07.1988 14:45 1 611 EDTGBL.MAC;1.header
12.07.1988 14:45 18 432 EDTGBL.MAC;1.image
12.07.1988 14:45 8 FB.MAC;1
12.07.1988 14:45 1 599 FB.MAC;1.header
12.07.1988 14:45 512 FB.MAC;1.image
09.07.1994 16:57 1 312 MICROS.DIR;1
09.07.1994 16:57 1 606 MICROS.DIR;1.header
09.07.1994 16:57 1 536 MICROS.DIR;1.image
12.07.1988 14:46 80 R.BLD;1
12.07.1988 14:46 1 599 R.BLD;1.header
12.07.1988 14:46 512 R.BLD;1.image
12.07.1988 14:46 52 R.CMD;1
12.07.1988 14:46 1 598 R.CMD;1.header
12.07.1988 14:46 512 R.CMD;1.image
12.07.1988 14:46 6 408 RT.STB;1
12.07.1988 14:46 1 578 RT.STB;1.header
12.07.1988 14:46 6 656 RT.STB;1.image
12.07.1988 14:46 26 270 RT11.SML;1
12.07.1988 14:46 1 593 RT11.SML;1.header
12.07.1988 14:46 26 624 RT11.SML;1.image
12.07.1988 14:46 101 RT11FB.BLD;1
12.07.1988 14:46 1 609 RT11FB.BLD;1.header
12.07.1988 14:46 512 RT11FB.BLD;1.image
12.07.1988 14:46 4 286 RTEM.ANS;1
12.07.1988 14:46 1 605 RTEM.ANS;1.header
12.07.1988 14:46 4 608 RTEM.ANS;1.image
12.07.1988 14:46 326 RTEM.BLD;1
12.07.1988 14:46 1 605 RTEM.BLD;1.header
12.07.1988 14:46 512 RTEM.BLD;1.image
12.07.1988 14:46 1 812 RTEM.CND;1
12.07.1988 14:46 1 605 RTEM.CND;1.header
12.07.1988 14:46 2 048 RTEM.CND;1.image
12.07.1988 14:46 941 RTEM.DEV;1
12.07.1988 14:46 1 605 RTEM.DEV;1.header
12.07.1988 14:46 1 024 RTEM.DEV;1.image
12.07.1988 14:46 824 RTEM.MON;1
12.07.1988 14:46 1 605 RTEM.MON;1.header
12.07.1988 14:46 1 024 RTEM.MON;1.image
12.07.1988 14:46 2 711 RTEM.TBL;1
12.07.1988 14:46 1 605 RTEM.TBL;1.header
12.07.1988 14:46 3 072 RTEM.TBL;1.image
12.07.1988 14:45 8 SJ.MAC;1
12.07.1988 14:45 1 599 SJ.MAC;1.header
12.07.1988 14:45 512 SJ.MAC;1.image
06.03.1991 15:44 4 902 SYSGEN.ANS;1
06.03.1991 15:44 1 608 SYSGEN.ANS;1.header
06.03.1991 15:44 5 120 SYSGEN.ANS;1.image
06.03.1991 16:12 336 SYSGEN.BLD;1
06.03.1991 16:12 1 606 SYSGEN.BLD;1.header
06.03.1991 16:12 512 SYSGEN.BLD;1.image
11.03.1991 09:40 2 347 SYSGEN.CND;1
11.03.1991 09:40 1 606 SYSGEN.CND;1.header
11.03.1991 09:40 2 560 SYSGEN.CND;1.image
07.03.1991 11:43 734 SYSGEN.DEV;1
07.03.1991 11:43 1 606 SYSGEN.DEV;1.header
07.03.1991 11:43 1 024 SYSGEN.DEV;1.image
07.03.1991 11:43 1 026 SYSGEN.MON;1
07.03.1991 11:43 1 605 SYSGEN.MON;1.header
07.03.1991 11:43 1 536 SYSGEN.MON;1.image
06.03.1991 16:12 2 809 SYSGEN.TBL;1
06.03.1991 16:12 1 606 SYSGEN.TBL;1.header
06.03.1991 16:12 3 072 SYSGEN.TBL;1.image
12.07.1988 14:46 9 489 TRMTBL.MAC;1
12.07.1988 14:46 1 611 TRMTBL.MAC;1.header
12.07.1988 14:46 9 728 TRMTBL.MAC;1.image
70 File(s) 312 467 bytes
2 Dir(s) 352 706 060 288 bytes free


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

Развлекался на RT-11 v5.3, если что

form
09.08.2022, 14:24
https://cloud.mail.ru/public/wYbc/9AMGbLdFY
RTEM запустился.
Надо бы исправить название темы - добавить P/OS(ПРОС).
Собственно благодаря P/OS(ПРОС) он и сохранился.

Я так понимаю, имеется в виду, что RTEM который мне достался был вытащен из образолв для P/OS.
Не сказать чтобы он сохранился: самого главного как раз и не сохранилось, и то, что он в принципе сейчас работает - результат пошаговой трассировки начального запуска RTEM BSTRAP (спасибо также V5.7 source kit в котором есть подробные коментарии [хотя и с ошибками]).

А так, сам по себе RTEM про P/OS никогда ничего не знал (разве что в последних версиях он был указан видимо как система в которой он запускается), и даже про RSX-11M-PLUS который прожил намного дольше (аж до самых 2000ых [последний выпуск 1998]) - тоже не знал (ну вернее в списке систем в которых можно запустить RTEM он значился, но в то время это был V2.1, а он с точки зрения RTEM ничем от 11M не отличался кроме того, что RTEM можно всегда запустить [в 11M это отдельная опция]: ни расширенных логических имен, ни именных каталогов еще не было).
Первый P/OS с точки зрения последнего RTEM выглядел точно также, а второго, и тем более третьего (именно в нем принесли самые полезности из M+ аналогичной версии [хотя и не забыли позаботиться о том, чтобы самое полезное было несовместимо с M+]) он вроде как не застал.

Hunta
09.08.2022, 14:27
.SBTTL SYSGEN.CND RT-11 V05.63 SYSTEM CONDITIONAL FILE CREATED 06-MAR-91 16:12:10
;SYSGEN EDIT LEVEL = V05.63
;+
;
; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
; OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
;
; COPYRIGHT (c) 1986 BY DIGITAL EQUIPMENT CORPORATION.
; ALL RIGHTS RESERVED.
;

SYSG$N = 1 ;Indicate sysgened monitor
SYT$K = 1 ;System job support
SPC$PS = 1 ;Save/set main-line PC and PS support
SCCA$G = 1 ;Global SCCA support
MTT$Y = 1 ;Multiterminal support
MAT$S = 1 ;Asynchronous terminal status
TTYOUT = 40. ;Size of the output buffers
TTYIN = 134. ;Size of the input buffers
ROL$OV = 1 ;Month rollover support
;U$CL = 1 ;User command linkage
HSR$B = 1 ;High speed ring buffer support
U$TIL = 1 ;Utility commands
L$ANG = 1 ;Language commands
M$INI = 1 ;Minimal commands
CLOCK = 50. ;Power line frequency
STAR$T = 1 ;Startup command file
FPU$11 = 1 ;Floating point support
BATC$H = 1 ;Batch support
RP0$3 = 0 ;RP11 disk is RP03
MT$FSM = 1 ;TM11 file-structured support
MT$UN = 2. ;Number of TM11 units
DL11$L = 1. ;Number of local DL11 interfaces
DL11$M = 0. ;Number of remote DL11-E lines
DL11$N = 1. ;Total number of DL11 lines
DLC$0 = 177560 ;Status register of first DL11 (Console)
DLV$0 = 60 ;Vector of first DL11 (Console)
DZ11$N = 0. ;Number of DZ11 or DZ11V multiplexers
RTE$M = 1
;;
$RTELK=250
$RTEID=252
RTE$ID=^RRTE
RTS$ID=^RV1.
;
.$CMKT=6
.$CRTI=10
.$DARL=12
.$FATA=16
.$FORQ=20
.$FPST=22
.$GETE=26
.$GETP=30
.$GTDA=32
.$GTPS=36
.$GTTI=40
.$IDLP=42
.$INTN=44
.$MRKT=50
.$PTPS=52
.$RDKM=54
.$RQSG=60
.$RSCT=62
.$RSTT=64
.$RTIC=66
.$SPL0=70
.$SPL7=72
.$TKB=122
.$TKS=120
.$TPB=126
.$TPS=124
.EXUSE=140
.FPPFL=142
.INTAC=144
.INTLV=146
.LKQUE=150
.PSCLO=152
.RMONS=154
.SAVE3=156
.SYS=160
.TASKS=162
.TIKCT=164
.TTRSE=166
.$ENSY=170
.$FORK=172
.$INTE=174
.$RMP0=176
.$RMP1=200
.$RMP2=202
.$RMP3=204


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

У меня RTEM - вместе с его родным диском (RT11 v4) и под более свежую версию RT11 уже я его раскрутил

ra3qdp
09.08.2022, 14:30
Я так понимаю, имеется в виду, что RTEM который мне достался был вытащен из образолв для P/OS.
Не сказать чтобы он сохранился: самого главного как раз и не сохранилось, и то, что он в принципе сейчас работает - результат пошаговой трассировки
да - это именно он и был. Запускался и, вроде, работал. Можно и сейчас попробовать (вроде, именно он у Вас лежит вместе с новым, хотите я попробую - присылайте).
Кстати (я anasana предупреждал) что он был на ленте и, то ли маркер отклеился, то ли магнитофоны были не совместимые, то этот RTEM - восстановленный вручную правкой дампа.
А что это в .cmd, который я показал ?

form
09.08.2022, 14:34
У меня RTEM - вместе с его родным дисков
То есть есть полный RTEM, а не тот огрызок который мне достался?
Было бы здорово тогда его поиметь :)


под более свежую версию RT11 уже я его раскрутил
Я допинал под V5.7 (при этом сам 5.7 пришлось также править - там были как ошибки которые изначально были внесены в v5 и никогда не правились, так и специфические - например поддержка extended units).

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


хотите я попробую - присылайте
Я выложил образ с последним вариантом - выше отписался.


А что это в .cmd, который я показал ?
Быстрой прокруткой вверх не нашел. О чем речь?

Hunta
09.08.2022, 14:35
То есть есть полный RTEM
Ну как полный - сам .TSK и RT11SH.SYS


Было бы здорово тогда его поиметь
Надо прошерстить все образы дисков - так как не всё я держал на винте, да и потом под simh не всё перенёс.


Я допинал под V5.7
Насколько я понимаю, на тот момент у меня была только 5.3 как самая свежая - вот её и раскрутил. А потом как бы особого интереса к RT11 не появлялось, тем более - запуск из под RSX.

ra3qdp
09.08.2022, 14:38
Я допинал под V5.7
в те годы, когда этот вариант использовали - не было 5.7
form: "Быстрой прокруткой вверх не нашел. О чем речь? "
вот:
https://cloud.mail.ru/public/HZn9/Ak2JwfrJj

form
09.08.2022, 14:43
Ну как полный - сам .TSK и RT11SH.SYS
А... Ну у меня такой же.
Найти бы хотя бы RTEDEF.MAC от него (я восстановил то, что было понятно из BSTRAP и трассировки), а если еще и родные драйверы - вообще бы было здорово (драйверы я некоторые написал: RK, DU).
Про всякие ESCI и FCS модули я уже и не мечтаю: на данный момент я разобрал большую часть JOAT в этом плане :)


Насколько я понимаю, на тот момент у меня была только 5.3 как самая свежая - вот её и раскрутил.
С 5.3 если склероз не врет, должны беть три косяка: порча регистров в RTEM при синхронизации даты из USR, поддержка UCF - она в v5 включается без вопросов, хотя судя по коду должна включаться в зависимости от того, что RTEM сказал (причем в 5.3 это вроде фатально: при отсутствии SY:UCF.SAV нет даже шансов что-то сделать), и в одном месте было кривое обращение к RMON.
В v5.5-5.7 дополнительно возникает проблема extended units - в коде BSTRAP просто они не учитывались ибо RTEM к тому времени уже умер :)

UPD: еще один косяк если RT11SH от RT-11 V4 - там драйвер VS не VARSZ$, соответственно DUP от V5 (который нативно суппортит RTEM) офигеет :)

Hunta
09.08.2022, 14:48
Найти бы хотя бы
Нет, больше ничего не было. Судя по тому, что на текущий момент нашёл - имена смещений я вытащил по undefined symbols, собрав RT11 под RTEM, а затем, видимо, анализировал код имеющейся RT и постепенно восстановил смещения. Хотя.. может и как то ещё.


С 5.3 если склероз не врет, должны беть три косяка
Не помню. Но можно сравнить тот вариант файлов, которые у меня в каталоге для сборки, с исходными

form
09.08.2022, 14:56
Hunta, Ну я собственно вначале темы описывал последовательно что находилось.
На данный момент вроде все вопросы V5.7 решены (они же кроме extended units для всех версий V5 [допускаю что кроме UCF проблем нет в RTEM v2 <RTEM v1 про UCF ничего не знал>]).
Теперь допинываю JOAT на предмет поддержки named directories в RSX - это вроде последнее что осталось нерешенным (со стороны RT-11, не считая UCF, но это совсем просто - уже даже наметил контуры для TPARS).
В качестве подготовительного эксперимента, отодвинул последний оверлей (ECSI и какая-то мелочь от FCS) вверх, чтобы расширить основной FCS оверлей - вроде пашет - осталось воткнуть код с PFCS$ и прочими плюшками.
Основная идея - там где вызывается ..ELP0 чтобы попытаться отпарсить через VMS - туда же воткнуть PFCS, а в случае невозможности - так же отсигналить о неподдержке (Z=1).

ra3qdp
09.08.2022, 14:57
form - https://zx-pk.ru/threads/26437-rtem-11-rt-11-pod-rsx-11m-rsx-11m-plus-micro-rsx-vax-rsx.html?p=1160273&viewfull=1#post1160273
ну и ???

form
09.08.2022, 15:01
ну и ???
Я вопроса не понял - там обычный кусок .CMD файла, ничем не примечательный и даже ничем именно к PRO и P/OS не относящийся.

ra3qdp
09.08.2022, 15:03
он был именно в просе. Что за упоминающиеся *.tsk ?

form
09.08.2022, 15:14
Что за упоминающиеся *.tsk ?
Понятия не имею.
К RTEM они не относятся.
В P/OS вообще не всегда можно понять даже привычные вещи.
К примеру, чем плох ...MAC? Ан нет - должен быть ...PMA. В P/OS особый ассемблер? Да нет, просто так - чтобы жизнь медом не казалась :)
С директивой GIN$ также... Сделали в P/OS директиву WIMP$ (как сказали бы в наше время - это троллинг: wimp - что-то между занудой и слабаком). Она вточности повторяет основной набор GIN$ (разумеется кроме самого полезного), но имеет и свой набор - так в чем проблема - она все-равно код функции принимает, но нет - вдруг RSXные пользователи переедут на дешевый P/OS? :)
Кстати в M+ эта директива поддерживается, хотя и не документируется.
В RSX-11M-PLUS V3 появилось много полезных фич, их тут же потянули в P/OS V3, но... векторизацию сделали несовместимо (тут не берусь судить какой вариант лучше: оба варианта имеют свои плюсы и минусы), но при этом в M+ разрешение векторизации - одна директива (или один вызов подпрограммы), а в P/OS все сделай сам :)

ra3qdp
09.08.2022, 15:24
Понятия не имею.
что-то мне кажется они могли использоваться и для RSX (возможно, для более полной интеграции RT в RSX. А для чего еще - предположите)


разрешение векторизации
а она для чего ? какие Вы знаете платы для PRO ?
А в MicroRSX векторизация есть ?

form
09.08.2022, 15:31
а она для чего ?
Векторизация привилегированых программ/драйверов (с отображением на систему и I/O страницу) нужна чтобы программа работала в любой системе без пересборки.
В RSX-11 где систему можно пересобирать по своему усмотрению это особо важно, но и с точки зрения P/OS может быть интересно, чтобы сторонняя программа, обращающаяся к внутренностям системы напрямую, могла просто переноситься в новую систему без пересборки.
В RSX-11M-PLUS V3.0 этот вопрос был решен с помощью соответствующего вызова.
В P/OS V3 умышленно эту фичу не потащили, но сделали свой вариант векторизации: там по фиксированному адресу $VECLC есть мещение которое нужно добавить к значению символа из POS.STB чтобы он соответствовал действительности (то есть то, что в M+ делается запросом - тут предлагается сделать самостоятельно).

ra3qdp
09.08.2022, 15:38
в любой системе
откуда взяться на PRO "любой системы" ?

Все программы работают на всех имеющихся версиях P/OS.(и из RSX много чего перетаскивается).

Драйверы на все устройства для PRO есть. Да и самодельные драйверы люди сами писали.

не вижу проблемы - совсем,
а Вы ?

Кстати - а чем Вам не угодил DCL в P/OS 3.х ? (аргументируйте)
Мне именно оно нравится больше любых других командных языков.

form
09.08.2022, 15:44
откуда взяться на PRO "любой системы" ?
Например был P/OS V2.0, вышел V3.0 - захотелось такую программу перенести, а хер там - пересобирай.
Вот из P/OS V3.0 в P/OS V3.2 такую программу перенести можно без пересборки.


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

ra3qdp
09.08.2022, 15:46
захотелось такую программу перенести
а конкретно ? (главное - кто ее писал)


администратору или программеру - интересен.
конкретно чем ?

form
09.08.2022, 15:56
Да и драйверы люди сами писали.
И что - удобнее каждый раз в новой версии системы драйвер с нуля пересобрать или таки удобнее перенести из старой системы готовый драйвер в новую где он сразу заработает? :)
Особенно если исходники давно потерялись :)

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


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

ra3qdp
09.08.2022, 15:56
какие "старые" -"новые" системы ? Их вообще, можно сказать, две. Вы, ведь систему не генерировали.
В смысле (любимой продвинутыми) совместимости с RSX - v3 имеет несравненно больше возможностей. Про v2 лучше забыть, она Вам зачем ? Ведь не в самодельные игры же играть ? (которые правильно писать не умели, да и авторы v3 - "в глаза не видели").
Вы, почему-то постоянно не на все мои вопросы отвечаете ? Невнимательность или заняты ?

form
09.08.2022, 16:03
Их вообще, можно сказать, две
Хорошо, пусть будет две: P/OS V2.0 и P/OS V3.0.
Нобелевскую премию тому кто возьмет драйвер из P/OS V2.0 и перенесет его в V3.0 так, чтобы он заработал, а не обрушил новую систему (именно перенесет, а не пересоберет в новой системе).
Так понятнее?
А векторизация именно это позволяет делать.

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


Вы, почему-то постоянно не на все мои вопросы отвечаете ?
Быть может потому что Вы не можете понять, что я уже ответил на них тем, что написал? :)
Пишите по пунктам с номерами вопросы - отвечу по пунктам - чтобы не путаться.
Но лучше тогда в теме про RSX например, а то мы давно вышли за рамки темы про RTEM (и прочие непривилегированные программы).

ra3qdp
09.08.2022, 16:04
драйвер из P/OS V2.0 и перенесет его в V3.0
драйвер чего ?

form
09.08.2022, 16:11
драйвер чего ?
Любой драйвер (самописный - понятно, что родной нет смысла переносить - он и в новой системе есть).

ra3qdp
09.08.2022, 16:18
какие драйверы для P/OS Вы написали ? (или думаете написать)

Сколько времени занимает пересборка драйвера из исходника ( в минутах) ? Как часто это потребуется делать ( в разах ) ?

Кстати, есть у меня драйвер FX: (виртуального диска в памяти), в v3 работает, попробую загрузить его в v2(без изменений), результат - сообщу.

form
09.08.2022, 16:26
какие драйверы для P/OS Вы написали ?

Сколько времени занимает
Драйверы для P/OS я не писал (и скорее всего не буду).
Но, к примеру, последний IOSCAN, который я писал - будет успешно работать в P/OS V3.0, V3.1 и V3.2 без пересборки - просто образ IOSCAN.TSK можно перенести в новую систему и запустить.
Займет это несколько секунд.
А вот с P/OS V2.0 такой номер не пройдет - под него придется программу собрать с нуля (причем для P/OS это не такая простая процедура - потребуется Pro Toolkit и еще что-то там - не помню уже), поскольку потребуется уникальный POS.STB от конкретной системы.
Сколько это займет - фиг знает, для IOSCAN конкретно немного - он маленький, а вот если речь бы шла о своем драйвере (кто там писал что драйверы сами делали?) - тут уже время другое может быть...

Именно про это речь и шла относительно векторизации: что удобнее - перенести уже собранную программу/драйвер (один/два файла) - мгновенно - или собирать ее с нуля - хз сколько времени займет?

ra3qdp
09.08.2022, 16:59
потребуется Pro Toolkit
а что без него Вы собираетесь в просе делать ?


IOSCAN
а что это, для чего ?

form
09.08.2022, 17:03
а что это, для чего ?
Это прога для сканирования страницы I/O - какие регистры на ней есть.
При этом под RSX и P/OS прога старается не угробить I/O, выполняемый другими задачами - отсюда потребность в знании где что в системе лежит.


а что без него Вы собираетесь в просе делать ?
Это вопрос из серии "что вы собираетесь делать в MS-DOS V1.0 в 2022 году" ;)

ra3qdp
09.08.2022, 17:09
сканирования страницы I/O - какие регистры на ней есть
регистры устройств ввода-вывода ?

form
09.08.2022, 17:11
регистры устройств ввода-вывода ?
Да.

ra3qdp
09.08.2022, 17:17
как-то это логически противоречит устройству машин pro. Вы не обратили внимание, что я запускал RTEM со второго "винчестера" (подключенном ко второму точно такому же контроллеру в которых адреса(перемычками, как в PDP-11) не задаются, машина устроена так, что конкретные адреса задаются позицией в которую вставлена плата (и может быть вставлена - в любую свободную в любом порядке), плата определяется по её ID.

form
09.08.2022, 17:29
запускал RTEM
Причем тут RTEM?
Это рядовая непривилегированная программа.
Она не общается с внутренностями системы/железом.
Такие программы могут свободно кочевать между RSX системами, и ограничены только конкретными фичами, причем при грамотном написании, программа способна понять какие из них работают, а какие нет.
Речь же шла о программах которые обращаются напрямую к внутренностям системы - например любая программа которая захочет что-то полезное узнать, например даже тупо время работы системы от момента включения - и вот тут либо программа будет работать в конкретной сборке (а не версии [для P/OS и Micro/RSX это неочевидно потому что там просто не предоставляется возможность сборки]) системы, или нужна векторизация.
Об этом и шла речь.
Если программа непривилгированная (хотя не факт что те кто привыкли к P/OS вообще знают что это такое), то ей вообще пофигу на векторизацию и системные базы данных - у нее просто доступа ко всему этому нет :)

ra3qdp
09.08.2022, 17:40
а я про адреса внешних устройств...

советую изучить - какие утилиты есть в P/OS, что они могут и подумать - а надо ли что-то еще(именно в приложении именно к Pro3xx, как к персональной со специфической многопользовательностью. Как бы Вы сами сделали операционку именно для нее на месте DEC? Ведь просто сделать единую, как в случае с RT - в принципе не получится (да и не надо).
Сколько ВСЕГО времени Вы потратили на работу в P/OS за ВСЕ время?
Может рановато начали делать категоричные выводы ?

form
09.08.2022, 18:01
а я про адреса внешних устройств...
И что?
Конечно, можно поступить по советско-инженерски: считать, что есть только RT-11SJ, и все, что программа делает никому не мешает.
А как быть, если система действительно многозадачная, и программа не хочет помешать другим программам?
Ась?
То-то - программе нужно знать что в этот момент делают другие программы.
А обращаться тупо к регистрам про которые никто не знает и которые ни на что не влияют - это даже не уровень начинающего.
И то с оговорками.

Я понимаю, что уровень среднего пользователя P/OS - чтобы игрушки запускались, но P/OS все-таки многозадачная и даже в чем-то многопользовательская система (порой даже весьма навязчиво).

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


Сколько ВСЕГО времени Вы потратили на работу в P/OS за ВСЕ время?
Поставим вопрос иначе: что конкретно вам непонравилось в рассуждениях?
То, что в P/OS меньше фич? Так парирование в стиле "а нам для запуска игрушек они и нафиг не нужны" - мягко говоря слабый аргумент.
Пока что-то получается, что я могу решить ваши элементарные вопросы по P/OS и переносу данных (хотя в P/OS никогда не работал и не буду ибо он умер раньше чем у меня появилась такая возможность), а Вы их решить не можете ;)

Hunta
09.08.2022, 19:14
Сколько ВСЕГО времени Вы потратили на работу в P/OS за ВСЕ время?
Умения, безусловно, определяется только временем, проведённым за экраном. В размышлениях - а как же сделать это, а как же сделать то. При том, что литературы СЕЙЧАС - дохрена и можно легко прочитать про всё. Но нет - банальные вещи и - а научите меня.

Может рановато вас учить?

form
10.08.2022, 00:40
Ну как полный - сам .TSK и RT11SH.SYS
А в shared образе что-то есть кроме монитора и DUP? :)

Hunta
10.08.2022, 07:49
А в shared образе что-то есть кроме монитора и DUP


Directory of K:\My\MyWork\@HuntaWork.dsk\[377,377]\@RT11V4.SYS;1

10.08.2022 08:47 <DIR> .
10.08.2022 08:47 <DIR> ..
10.08.2022 08:47 512 $BOOT.BLK
10.08.2022 08:47 2 048 $MONI.TOR
10.08.2022 08:47 8 218 $VOLUM.INF
09.08.1982 23:00 3 584 BAM.SYS
31.08.1982 23:00 5 120 BINCOM.SAV
09.08.1982 23:00 2 048 DDM.SYS
31.08.1982 23:00 8 704 DIR.SAV
09.08.1982 23:00 2 560 DLM.SYS
09.08.1982 23:00 2 560 DMM.SYS
31.08.1982 23:00 4 096 DUMP.SAV
31.07.1982 23:00 21 504 DUP.SAV
09.08.1982 23:00 2 048 DXM.SYS
09.08.1982 23:00 2 048 DYM.SYS
31.08.1982 23:00 9 728 EDIT.SAV
31.08.1982 23:00 9 216 FILEX.SAV
09.08.1982 23:00 31 232 FIP.SAV
31.08.1982 23:00 9 728 FORMAT.SAV
31.08.1982 23:00 104 960 FORTRA.SAV
09.08.1982 23:00 59 904 HELP.SAV
31.07.1982 23:00 20 480 IND.SAV
09.08.1982 23:00 26 624 JOAT.SAV
31.08.1982 23:00 30 720 KED.SAV
31.08.1982 23:00 11 264 LIBR.SAV
31.08.1982 23:00 20 992 LINK.SAV
09.08.1982 23:00 3 584 LPM.SYS
31.08.1982 23:00 26 112 MACRO.SAV
09.08.1982 23:00 4 608 MFM.SYS
09.08.1982 23:00 4 608 MSM.SYS
09.08.1982 23:00 4 608 MTM.SYS
09.08.1982 23:00 1 024 NLM.SYS
31.08.1982 23:00 11 776 PIP.SAV
31.08.1982 23:00 7 680 RESORC.SAV
09.08.1982 23:00 41 984 RTEMFB.SYS
31.08.1982 23:00 10 240 SIPP.SAV
31.08.1982 23:00 6 656 SRCCOM.SAV
03.12.1981 00:00 12 800 SWAP.SYS
31.08.1982 23:00 110 592 SYSLIB.OBJ
31.08.1982 23:00 21 504 SYSMAC.SML
09.08.1982 23:00 3 072 VSM.SYS
39 File(s) 670 746 bytes
2 Dir(s) 352 360 681 472 bytes free

form
10.08.2022, 11:50
О, тут драйверы есть - было бы здорово утянуть.
Да и RTEM.TSK тоже для сравнения.

Порядок файлов интересный - то, что должно быть после свапа лежит перед ним, и наоборот :)

Hunta
10.08.2022, 12:01
О, тут драйверы есть - было бы здорово утянуть.
Я так понимаю, что это из четвертой версии. И судя по наличию каких-то драйверов из самодельной версии


Directory of K:\My\MyWork\@HuntaWork.dsk\[377,377]\@RT11SH.SYS;1

10.08.2022 08:50 <DIR> .
10.08.2022 08:51 <DIR> ..
10.08.2022 08:50 512 $BOOT.BLK
10.08.2022 08:50 2 048 $MONI.TOR
10.08.2022 08:50 14 104 $VOLUM.INF
11.03.1991 00:00 3 584 BAM.SYS
24.06.1987 23:00 13 312 BATCH.SAV
24.06.1987 23:00 12 288 BINCOM.SAV
24.06.1987 23:00 26 624 BUP.SAV
24.06.1987 23:00 3 072 CREF.SAV
24.06.1987 23:00 1 536 DATIME.COM
24.06.1987 23:00 2 048 DATIME.SAV
24.06.1987 23:00 5 120 DBGSYM.SAV
24.06.1987 23:00 9 728 DIR.SAV
24.06.1987 23:00 4 608 DUMP.SAV
24.06.1987 23:00 25 088 DUP.SAV
24.06.1987 23:00 9 728 EDIT.SAV
24.06.1987 23:00 11 264 FILEX.SAV
11.03.1991 00:00 31 232 FIP.SAV
24.06.1987 23:00 12 288 FORMAT.SAV
24.06.1987 23:00 1 024 GETSTR.FOR
24.06.1987 23:00 67 584 HELP.SAV
24.06.1987 23:00 29 696 IND.SAV
24.06.1987 23:00 8 192 IVP.COM
11.03.1991 00:00 26 624 JOAT.SAV
24.06.1987 23:00 27 648 K52.SAV
11.03.1991 00:00 4 096 LDM.SYS
24.06.1987 23:00 2 560 LET.SAV
24.06.1987 23:00 12 288 LIBR.SAV
24.06.1987 23:00 25 088 LINK.SAV
09.08.1982 23:00 3 584 LPM.SYS
24.06.1987 23:00 31 232 MACRO.SAV
24.06.1987 23:00 10 752 MDUP.SAV
24.06.1987 23:00 1 536 MSCPCK.SAV
09.08.1982 23:00 4 608 MTM.SYS
09.08.1982 23:00 1 024 NLM.SYS
24.06.1987 23:00 4 096 ODT.OBJ
24.06.1987 23:00 5 120 PAT.SAV
24.06.1987 23:00 15 360 PIP.SAV
24.06.1987 23:00 1 024 PUTSTR.FOR
24.06.1987 23:00 7 680 QUEMAN.SAV
24.06.1987 23:00 7 168 QUEUE.REL
24.06.1987 23:00 12 800 RESORC.SAV
06.03.1991 00:00 10 752 ROLLIN.ABS
11.03.1991 00:00 49 664 RTEMFB.SYS
24.06.1987 23:00 4 096 RTMON.REL
24.06.1987 23:00 20 992 SETUP.SAV
24.06.1987 23:00 10 752 SIPP.SAV
24.06.1987 23:00 7 168 SLM.SYS
24.06.1987 23:00 6 656 SLP.SAV
06.03.1991 00:00 34 304 SM.SAV
24.06.1987 23:00 2 048 SPEED.SAV
24.06.1987 23:00 1 536 SPLIT.SAV
24.06.1987 23:00 5 632 SPOOL.REL
24.06.1987 23:00 13 312 SRCCOM.SAV
06.03.1991 00:00 512 STARTM.COM
24.06.1987 23:00 13 824 SWAP.SYS
24.06.1987 23:00 28 160 SYSLIB.OBJ
24.06.1987 23:00 31 232 SYSMAC.SML
24.06.1987 23:00 1 536 TERMID.SAV
24.06.1987 23:00 23 040 TRANSF.EXE
24.06.1987 23:00 8 192 TRANSF.SAV
24.06.1987 23:00 38 912 TRANSF.TSK
24.06.1987 23:00 8 192 UCF.SAV
24.06.1987 23:00 8 192 UCL.SAV
24.06.1987 23:00 4 096 VDT.OBJ
24.06.1987 23:00 1 024 VERIFY.COM
09.08.1982 23:00 3 072 VSM.SYS
24.06.1987 23:00 13 824 VTCOM.REL
24.06.1987 23:00 4 096 VTHDLR.OBJ
24.06.1987 23:00 3 584 VTMAC.MAC
69 File(s) 857 368 bytes
2 Dir(s) 352 359 690 240 bytes free

они делаются по выбору в SYSGEN-е. Мало вероятно, что будут какие-то открытия.
В самом .TSK заявлена версия 1.0

На днях выложу

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

Посмотрел на совпадение по утилитам, тот, которые RT11V4.SYS - 4.0C, который RT11SH.SYS - 5.4

form
10.08.2022, 12:49
Я так понимаю, что это из четвертой версии.
Это пофигу - они все-равно напрямую QIO$ выполняют и ничем больше не отличаются о V5.
Только VSу нужно VARSZ$ в статусе добавить чтобы DUP от V5 правильно с ним работал.
Тут есть как раз то чего не хватало: ленты и LP - их труднее было бы с нуля восстановить.
LS и диски восстановить будет нетрудно.

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

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

Хм.
Тут еще и UCF.SAV есть, а я его уже собирался с нуля писать :)
Хотя это наверное просто переименованный UCL.SAV, таки писать придется :)

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

У меня (и он же в RPM репе на MIM) сейчас такой набор (кроме STARTM.COM - он из private):
10-Aug-2022
DIR .SAV 20P 31-Oct-1998 PIP .SAV 30P 31-Oct-1998
FIP .SAV 61P 02-Dec-2016 DUP .SAV 52P 27-Feb-2016
JOAT .SAV 52P 08-Aug-2022 RESORC.SAV 35P 31-Oct-1998
UCL .SAV 16P 31-Oct-1998 MACRO .SAV 63P 31-Oct-1998
LINK .SAV 59P 31-Oct-1998 LIBR .SAV 24P 31-Oct-1998
CREF .SAV 6P 31-Oct-1998 FORTRA.SAV 128P 23-Jul-2014
F77 .SAV 327P 23-Jul-2014 PASCAL.SAV 58P 04-Mar-2013
BASIC .SAV 52P 08-Oct-2015 BASPL .SAV 104P 02-Jun-2014
COBOL .SAV 194P 21-Mar-2014 CBLSML.SAV 194P 21-Mar-2014
CBLINK.SAV 47P 21-Mar-2014 CBLIBR.SAV 13P 21-Mar-2014
CLASS .SAV 51P 21-Mar-2014 ISAM .SAV 72P 21-Mar-2014
ISMBLD.SAV 56P 21-Mar-2014 CBR063.SAV 119P 21-Mar-2014
BATCH .SAV 26P 31-Oct-1998 KED .SAV 85P 31-Oct-1998
K52 .SAV 81P 20-May-2011 EDIT .SAV 19P 31-Oct-1998
TECO .SAV 50P 31-Oct-1998 HELP .SAV 161P 31-Oct-1998
FILEX .SAV 22P 31-Oct-1998 DUMP .SAV 10P 31-Oct-1998
BINCOM.SAV 25P 31-Oct-1998 SRCCOM.SAV 26P 31-Oct-1998
SIPP .SAV 21P 31-Oct-1998 SLP .SAV 13P 31-Oct-1998
PAT .SAV 11P 31-Oct-1998 MONMRG.SAV 14P 31-Oct-1998
BUP .SAV 68P 31-Oct-1998 QUEMAN.SAV 16P 31-Oct-1998
SETUP .SAV 43P 31-Oct-1998 LET .SAV 6P 31-Oct-1998
SPLIT .SAV 3P 31-Oct-1998 TERMID.SAV 4P 31-Oct-1998
TRANSF.SAV 16P 31-Oct-1998 MDUP .SAV 22P 31-Oct-1998
CONFIG.SAV 10P 31-Oct-1998 DBGSYM.SAV 10P 31-Oct-1998
INDEX .SAV 11P 31-Oct-1998 INDEXX.SAV 14P 31-Oct-1998
INDEXA.IMG 164P 31-Oct-1998 INDEXB.IMG 165P 31-Oct-1998
INDEX .IDX 7P 31-Oct-1998 DISASM.SAV 8P 31-Mar-2013
VDT .SAV 8P 09-Mar-2013 ECHO .SAV 2P 05-Mar-2016
ERA .SAV 1P 05-Mar-2016 CVT .SAV 7P 05-Mar-2016
TTSET .SAV 9P 12-Apr-2021 IF .SAV 7P 24-May-2020
VKMON .SAV 26P 16-Apr-2020 CAL .SAV 6P 13-Apr-2021
SYS .SAV 3P 30-May-2011 MCR .SAV 3P 20-Apr-2020
QUEUE .REL 14P 31-Oct-1998 RTMON .REL 8P 31-Oct-1998
SPOOL .REL 12P 31-Oct-1998 SYSMAC.SML 92P 31-Oct-1998
SYSTEM.MLB 148P 31-Oct-1998 RSXMAC.MLB 282P 05-Dec-2016
ULBMAC.MAC 16P 13-Oct-1998 CBMAC .MAC 11P 21-Mar-2014
SYSLIB.OBJ 84P 31-Oct-1998 ULBLIB.OBJ 33P 24-Oct-1998
RSXLIB.OBJ 13P 09-Dec-2016 RSXLIB.MLB 6P 04-Apr-2016
PASCAL.OBJ 90P 04-Mar-2013 FORLIB.OBJ 205P 31-Dec-1982
F77OTS.OBJ 135P 22-Apr-2011 F77CVF.OBJ 4P 30-Apr-1984
F77NER.OBJ 1P 30-Apr-1984 F77MAP.OBJ 33P 30-Apr-1984
F77EIS.OBJ 3P 30-Apr-1984 F77RAN.OBJ 2P 30-Apr-1984
F77COM.MSG 14P 20-May-2011 RTEDEF.MAC 7P 14-Apr-2021
VDT .OBJ 8P 31-Oct-1998 MBOOT .BOT 1P 31-Oct-1998
MBOT16.BOT 1P 31-Oct-1998 MSBOOT.BOT 4P 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
CUSTOM.TXT 14P 31-Oct-1998 V5NOTE.TXT 36P 31-Oct-1998
RTEMFB.MAP 39P 08-Dec-2018 RTEMFB.CND 5P 08-Dec-2018
RTEMFB.SYS 108P 08-Dec-2018 DAM .SYS 4P 14-Apr-2021
DCM .SYS 4P 14-Apr-2021 DHM .SYS 4P 14-Apr-2021
NLM .SYS 2P 06-Apr-2016 VSM .SYS 6P 16-Dec-2016
RKM .SYS 4P 03-Dec-2016 SWAP .SYS 28P 06-Apr-2016
BAM .SYS 7P 06-Apr-2016 DUM .SYS 5P 09-Dec-2016
IND .SAV 58P 31-Oct-1998 LDM .SYS 11P 06-Apr-2016
SDM .SYS 23P 30-Jan-2012 SLM .SYS 17P 22-Apr-2013
UCL .DAT 9P 06-Apr-2016 DATE .SAV 12P 13-Apr-2021
STARTM.COM 1 10-Aug-2022
115 Files, 4948 Blocks
485 Free blocks

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


они делаются по выбору в SYSGEN-е
Те что сисгенятся из обычного дистриба не годятся - они RTшные.
У RTEM свои драйверы, они кроме того, что софтовые - у них еще и загрузчик по другому принципу работает (у дисков), и, судя по всему, в образе V4 именно они.

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

Пример кода загрузчика для RK (хотя он ничем не отличается от любого другого диска) в RTEM :)


.DRBOT RK,BOOT1,READ
.=RKBOOT+40
BOOT1: JMP @#BOOT-RKBOOT

.=RKBOOT+254
READ: MOV R0,R3 ;SAVE BLOCK NUMBER
MOV RKBOOT+772,R0 ;GET ADDRESS OF QIOW DPB
MOV R2,Q.IOPL(R0) ;SET BUFFER ADDRESS
ASL R1 ;CONVERT WORD COUNT TO BYTES
MOV R1,Q.IOPL+2(R0) ;SET BYTE COUNT
MOV R3,Q.IOPL+10(R0) ;SET BLOCK NUMBER
JMP RKBOOT+774 ;I/O

BOOT: JSR R0,BPRINT ;PRINT ERROR MESSAGE AND HALT
.ASCII <CR><0><LF><0>
.ASCII /?BOOT-U-Cannot boot RTEM standalone/<CR><LF><LF><200>

.ASSUME . LE RKBOOT+550

.=RKBOOT+550
BPRINT: TSTB @#TPS ;TERMINAL PRINTER READY?
BPL BPRINT ;PL = NO
MOVB (R0)+,@#TPB ;PRINT CHARACTER
BPL BPRINT ;PL = MORE TO PRINT
10$: HALT ;HALT PROCESSOR
BR 10$ ;

.ASSUME . LE RKBOOT+570
.DREND RK

.PSECT SETOVR
RKLOA:: MOV @R5,R5 ;GET ADDRESS OF ...
ADD #RKQIO-RKLQE,R5 ;...QIO DPB
ADD R5,Q.IOAE(R5) ;SET ADDRESS OF AST ROUTINE
ADD R5,Q.IOSB(R5) ;SET ADDRESS OF STATUS BLOCK
RETURN ;RETURN

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


В самом .TSK заявлена версия 1.0
У меня такая же, но на всякий случай стоит сравнить: ко мне он попал явно слегка подправленным, и не факт что только тем, что в таблице поддерживаемых OS поверх 6 прописали 11 :)

Hunta
10.08.2022, 12:55
У RTEM свои драйверы, они кроме того, что софтовые
Посмотрел на вскидку DXM.SYS - да, ошибся, это точно свой вариант драйверов

form
10.08.2022, 13:03
Ну и до кучи - список изменений в RTEM.TSK которые я делал:
поддержка Y2K
в статусе, возвращаемом в BSTRAP флаг UCF.SAV сброшен (без исправления косяка в BSTRAP не поможет)
при запуске, среди прочих характеристик терминала выставляется SET /LOWER (решение не совсем верное, на досуге перенесу нужный код для RTEM и TSX+ в KED - ради него все затевалось)


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


Посмотрел на вскидку DXM.SYS
А можно попросить таки выложить? :)
Я как раз сейчас в часы досуга перелопачиваю RTEM, сразу бы подготовил очередной выпуск RT11SH.

Hunta
10.08.2022, 13:05
А можно попросить таки выложить?


На днях выложу
Угу

form
10.08.2022, 13:16
Ну и для общей информации, текущее состояние RT11SH:
RT-11 V05.07 с поддержкой extended units
родные драйверы BAM.SYS, LDM.SYS (16 units), NLM.SYS, SDM.SYS, SLM.SYS (поддерживает VT100 и VT52, при переключении в VT52 не HOLDит экран)
VSM.SYS отмечен как VARSZ$, SQUEEZE VS0: работает правильно
DAM.SYS (AZ), DCM.SYS (на будущее), DHM.SYS (эмулятор от Patron), RKM.SYS, DUM.SYS (16 units)
TTSET.SAV для правильной настройки SET EDIT/SET SL из STARTM.COM
VKMON.SAV для правки RTEMFB.SYS при создании своих shared images
MCR.SAV для выполнения команд MCR (не выходя из RTEM)
JOAT.SAV V01.00B (расширен список валидных устройств, IND.SAV, UCL.DAT и DUM.SYS добавлены в markzone по умолчанию, десятичные версии файлов если в системе они десятичные)

form
10.08.2022, 17:14
Обновился shared image (https://pdp-11.online/~form/files/pdp-11/rtem/shared/).
VKMON и TTSET обновлены до последних версий.
Добавлены текстовые файлы с описанием VKMON, TTSET и самого образа.

Жду выложенного образа с драйверами :)

form
11.08.2022, 22:58
Еще обновление shared image (https://pdp-11.online/~form/files/pdp-11/rtem/shared/).
JOAT V01.00C, теперь печатает название системы в которой работает RTEM, а не VAX/VMS.
До самого RTEM позже доберемся в этом плане :)

VAX/RSX пока не пробовал, это надо старый VMS поднимать.

https://pdp-11.online/~form/files/pdp-11/pics/joat.png

form
12.08.2022, 06:57
Допинал RTEM.TSK (https://pdp-11.online/~form/files/pdp-11/rtem/v01.00c/) до кучи - он теперь тоже говорит систему в которой запускается, а не VAX/VMS который помнит с детства :)

https://pdp-11.online/~form/files/pdp-11/pics/rtem-all.png

form
12.08.2022, 19:37
31.08.1982 23:00 21 504 SYSMAC.SML
Вот кстати интересно посмотреть если это либа от RTEMовского RT - есть ли там какие-нибудь изменения в макрокомандах для драйверов.
В RT-11V5 в .DRAST и .DRBOT ничего не меняется независимо от опции RTEM$.
Для .DRBOT пока вручную вставляю код в нужное место, а для .DRAST указываю в QIO адрес xxINT-4 как AST, и прямо перед .DRAST помещаю CMP (SP)+,(PC)+.

Hunta
12.08.2022, 20:01
есть ли там какие-нибудь изменения в макрокомандах для драйверов.
Посмотрел - нет

form
12.08.2022, 20:11
Посмотрел - нет
Ну и ладно, .DRBOT легко доделать, а .DRAST возможно правильно именно так использовать в RTEM :)

form
12.08.2022, 22:31
Попробовал запустить в VAX/RSX под SimH.
Запускается, но подвисает - может чего-то подкрутить еще надо :)


Welcome to VAX/VMS V5.5-2

Username: SYSTEM
Password:
Welcome to VAX/VMS version V5.5-2 on node BETEP
Last interactive login on Thursday, 12-AUG-1999 22:23
$ MC RSX
%RSX-S-MCRMODENTER, executing MCR commands in process MCR
> RTE /VS

?RTE-I-File not found; creating new private file SY:RT11PR.DSK;0

RTEM-11 (VAX/VMS) V01.00C

На CTRL/P реагирует.


?RTE-U-Aborted via directive, CLI, or user

>

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

А RT-11 V4 загрузился - видимо в V5 какая-то команда не эмулируется в VAX/RSX.


> RTE SYS$LIBRARY:RT11SH.SYS/SH

RTEM-11 (VAX/VMS) V01.00C

RT-11FB (S) V04.00L

.SET TT SCOPE

.

Hunta
13.08.2022, 12:22
Исходный вариант (как он попал ко мне) (http://www.kpxx.ru/DEC/PDP-11/Software/OS/RTEM)

form
13.08.2022, 13:04
Отлично!
Сейчас подготовлю очередной выпуск с родными хандлерами, да заодно подчищу кое-что в shared образе.

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

MTM.SYS и MFM.SYS не прочитались - похоже выходят за пределы образа :)
Ну да фиг с ними - они совпадают с MSM.SYS по идее.

Hunta
13.08.2022, 13:10
MTM.SYS и MFM.SYS не прочитались - похоже выходят за пределы образа
По идее, всё должно быть норм


# $VOLUM.INF - info about RT-11 volume on NoDev device.
# Produced by RT11FileSystemClass at 2022-авг-13 14:06:46

pack_cluster_size=1

# Block number of first directory segment
first_dir_blocknr=6

system_version=V3A

volume_id=RT11A

owner_name=

system_id=DECRT11A

# number of 512 byte blocks on volume
BlockCount=1327

# number of extra bytes per directory entry
dir_entry_extra_bytes=0

# Total number of segments in this directory (can hold 1104 files)
dir_total_seg_num=16

# Number of highest dir segment in use
dir_max_seg_nr=2

# Start block of file area = 38

# File 0,00 "RTEMFB.SYS".
No prefix.
Data 41984 = 0x41984 bytes, start block 38 @ 0x4C00.

# File 1,00 "DDM.SYS".
No prefix.
Data 2048 = 0x2048 bytes, start block 120 @ 0xF000.

# File 2,00 "DMM.SYS".
No prefix.
Data 2560 = 0x2560 bytes, start block 124 @ 0xF800.

# File 3,00 "DXM.SYS".
No prefix.
Data 2048 = 0x2048 bytes, start block 129 @ 0x10200.

# File 4,00 "DYM.SYS".
No prefix.
Data 2048 = 0x2048 bytes, start block 133 @ 0x10A00.

# File 5,00 "NLM.SYS".
No prefix.
Data 1024 = 0x1024 bytes, start block 137 @ 0x11200.

# File 6,00 "VSM.SYS".
No prefix.
Data 3072 = 0x3072 bytes, start block 139 @ 0x11600.

# File 7,00 "LPM.SYS".
No prefix.
Data 3584 = 0x3584 bytes, start block 145 @ 0x12200.

# File 8,00 "MSM.SYS".
No prefix.
Data 4608 = 0x4608 bytes, start block 152 @ 0x13000.

# File 9,00 "DLM.SYS".
No prefix.
Data 2560 = 0x2560 bytes, start block 161 @ 0x14200.

# File 10,00 "JOAT.SAV".
No prefix.
Data 26624 = 0x26624 bytes, start block 166 @ 0x14C00.

# File 11,00 "FIP.SAV".
No prefix.
Data 31232 = 0x31232 bytes, start block 218 @ 0x1B400.

# File 12,00 "DUP.SAV".
No prefix.
Data 21504 = 0x21504 bytes, start block 279 @ 0x22E00.

# File 13,00 "HELP.SAV".
No prefix.
Data 59904 = 0x59904 bytes, start block 321 @ 0x28200.

# File 14,00 "BINCOM.SAV".
No prefix.
Data 5120 = 0x5120 bytes, start block 438 @ 0x36C00.

# File 15,00 "DIR.SAV".
No prefix.
Data 8704 = 0x8704 bytes, start block 448 @ 0x38000.

# File 16,00 "DUMP.SAV".
No prefix.
Data 4096 = 0x4096 bytes, start block 465 @ 0x3A200.

# File 17,00 "EDIT.SAV".
No prefix.
Data 9728 = 0x9728 bytes, start block 473 @ 0x3B200.

# File 18,00 "FILEX.SAV".
No prefix.
Data 9216 = 0x9216 bytes, start block 492 @ 0x3D800.

# File 19,00 "FORMAT.SAV".
No prefix.
Data 9728 = 0x9728 bytes, start block 510 @ 0x3FC00.

# File 20,00 "FORTRA.SAV".
No prefix.
Data 104960 = 0x104960 bytes, start block 529 @ 0x42200.

# File 21,00 "KED.SAV".
No prefix.
Data 30720 = 0x30720 bytes, start block 734 @ 0x5BC00.

# File 22,00 "LIBR.SAV".
No prefix.
Data 11264 = 0x11264 bytes, start block 794 @ 0x63400.

# File 23,00 "LINK.SAV".
No prefix.
Data 20992 = 0x20992 bytes, start block 816 @ 0x66000.

# File 24,00 "MACRO.SAV".
No prefix.
Data 26112 = 0x26112 bytes, start block 857 @ 0x6B200.

# File 25,00 "PIP.SAV".
No prefix.
Data 11776 = 0x11776 bytes, start block 908 @ 0x71800.

# File 26,00 "RESORC.SAV".
No prefix.
Data 7680 = 0x7680 bytes, start block 931 @ 0x74600.

# File 27,00 "SRCCOM.SAV".
No prefix.
Data 6656 = 0x6656 bytes, start block 946 @ 0x76400.

# File 28,00 "SIPP.SAV".
No prefix.
Data 10240 = 0x10240 bytes, start block 959 @ 0x77E00.

# File 29,00 "SYSLIB.OBJ".
No prefix.
Data 110592 = 0x110592 bytes, start block 979 @ 0x7A600.

# File 30,00 "SYSMAC.SML".
No prefix.
Data 21504 = 0x21504 bytes, start block 1195 @ 0x95600.

# File 31,00 "SWAP.SYS".
No prefix.
Data 12800 = 0x12800 bytes, start block 1237 @ 0x9AA00.

# File 32,00 "BAM.SYS".
No prefix.
Data 3584 = 0x3584 bytes, start block 1262 @ 0x9DC00.

# File 33,00 "MFM.SYS".
No prefix.
Data 4608 = 0x4608 bytes, start block 1269 @ 0x9EA00.

# File 34,00 "MTM.SYS".
No prefix.
Data 4608 = 0x4608 bytes, start block 1278 @ 0x9FC00.

# File 35,00 "IND.SAV".
No prefix.
Data 20480 = 0x20480 bytes, start block 1287 @ 0xA0E00.

form
13.08.2022, 13:19
По идее, всё должно быть норм
Происки FTP похоже - размер у залитого в RSX файла не совпадает.
Сейчас перезалью.

Hunta
13.08.2022, 13:20
На всякий случай попробовал скачать - скачанное соотвествует оригиналу. И ImgUtil моя не ругается при распаковке.

form
13.08.2022, 15:21
Перезалил заново - размер правильный, все читается.
Драйверы разных лент немного отличаются все-таки: отличается имя для таблицы LUN и кое-какой код - надо будет посмотреть внимательнее.

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

LP заработал.

DL подключается, но сыпет ошибками - скорее всего RTшная специфика DL, что в первом блоке должна быть таблица замещения блоков.
Хотя возможно тут проблема с DUP: в v5 DL должен быть VARSZ$, в v4 свой механизм.

MT подключается, но ругается при попытке инициализировать.
Правда эксперимент не чистый - в RSX использовался VF с альтернативным DCB, а насколько он эмулирует функционал данных устройств - фиг знает.
Придется сделать тестовый стенд со всеми этими устройствами :)

И слотов свободных маловато - надо перегенерить будет монитор.

UPD. Про DL подтвердилось - проблема в ожидания DUP.

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

Разбираю RTEMовский DL.
Для начала разобрал как родные RTEMовские драйверы проверяют нужно им инсталиться или нет, а то до сих пор не было возможности посмотреть.

Выглядит это так:

Если драйвер несистемный: Ищется приаттаченое через JOAT устройство DD0, DD1, DD2, итд...
Если таковое находится - драйвер инсталится, если нет - не инсталится

Если драйвер системный: Проверяется есть ли свободный LUN
Если нет - не инсталится
Проверяется есть ли в основной системе устройства DD0, DD1, DD2, итд...
Если есть - выполняется проверка аналогичная несистемному драйверу
Если нет - не инсталится

UPD: затупил насчет DL. Все работает и SF.SIZ отрабатывается. Все что нужно - как и с VS добавить VARSZ$ в слово состояния.
Видимо при проверке забыл приаттачить :)

form
13.08.2022, 19:43
Лента...

.JOAT MS:/A

.INI MS:/NOQ

.COP SY:.SYS MS:
Files copied:
SY:RTEMFB.SYS to MS:RTEMFB.SYS
SY:DAM.SYS to MS:DAM.SYS
SY:DCM.SYS to MS:DCM.SYS
SY:DHM.SYS to MS:DHM.SYS
SY:NLM.SYS to MS:NLM.SYS
SY:VSM.SYS to MS:VSM.SYS
SY:RKM.SYS to MS:RKM.SYS
SY:SWAP.SYS to MS:SWAP.SYS
SY:BAM.SYS to MS:BAM.SYS
SY:DUM.SYS to MS:DUM.SYS
SY:LDM.SYS to MS:LDM.SYS
SY:SDM.SYS to MS:SDM.SYS
SY:SLM.SYS to MS:SLM.SYS
SY:DDM.SYS to MS:DDM.SYS
SY:DMM.SYS to MS:DMM.SYS
SY:DXM.SYS to MS:DXM.SYS
SY:DYM.SYS to MS:DYM.SYS
SY:LPM.SYS to MS:LPM.SYS
SY:MSM.SYS to MS:MSM.SYS
SY:DLM.SYS to MS:DLM.SYS
SY:MFM.SYS to MS:MFM.SYS
SY:MTM.SYS to MS:MTM.SYS

.DIR MS:
13-Aug-2022
RTEMFB.SYS 108 -BAD- DAM .SYS 4 -BAD-
DCM .SYS 4 -BAD- DHM .SYS 4 -BAD-
NLM .SYS 2 -BAD- VSM .SYS 6 -BAD-
RKM .SYS 4 -BAD- SWAP .SYS 28 -BAD-
BAM .SYS 7 -BAD- DUM .SYS 5 -BAD-
LDM .SYS 11 -BAD- SDM .SYS 23 -BAD-
SLM .SYS 17 -BAD- DDM .SYS 4 -BAD-
DMM .SYS 5 -BAD- DXM .SYS 4 -BAD-
DYM .SYS 4 -BAD- LPM .SYS 7 -BAD-
MSM .SYS 9 -BAD- DLM .SYS 5 -BAD-
MFM .SYS 9 -BAD- MTM .SYS 9 -BAD-
22 Files, 279 Blocks

.
Похоже в коде записи ANSI ленты в PIP от V05.07 никакого Y2K не наблюдается :)

Пробуем BUP:
.BAC/INI/DEV/NOQ SY: MS:
?BUP-F-Unexpected error in .SPFUN
?BUP-I-Creating output volume 1
?BUP-F-Unexpected error in .SPFUN
?BUP-I-Backup operation is complete

.BAC/DIR MS:

RT-11 BACKUP
13-Aug-2022 19:37

Saveset Section Blocks Date

?BUP-F-Unexpected error in .SPFUN
?BUP-F-Unexpected error in .SPFUN
?BUP-F-Unexpected error in .SPFUN
?BUP-F-Unexpected error in .SPFUN
VS0 .BUP 1 5527/5527 13-Aug-2022

1 Saveset section, 5527 Blocks


.DIR MS:
13-Aug-2022
VS0 .BUP 691 13-Aug-2022
1 Files, 691 Blocks

.
BUP'у каких-то .SPFUN недостает, но в целом пашет.
Будем смотреть.

form
13.08.2022, 22:32
Обновление RTEM.
Новый RT11SH.DSK (https://pdp-11.online/~form/files/pdp-11/rtem/shared/) и RTEM.TSK (https://pdp-11.online/~form/files/pdp-11/rtem/v01.00c/).
Добавлены родный драйверы DD, DL, DM, DX, DY, LP, MF, MS, MT (пропатчены для DUP V5 где нужно).
Драйвер NL заменен на RTEMовский (до этого был от V5.7 который содержал бесполезный в RTEM код на предмет TOY clock).
В RTEM.TSK поле IDENT заменено на V1.00C.
Таблица устройств расширена до 18.
Драйвер RK теперь использует стандартный RTEMовский вариант установки в системе.

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

RTEM.TSK

Версия изменена на V01.00C
Исправлен косяк, приводивший к зацикливанию Trap to 4
Добавлена поддержка дат после 1999 года
Во время обмена данными со вторичным загрузчиком RT-11 флаг наличия UCF.SAV очищается
В RSX-11 используются десятичные номера версий файлов если система использует десятичные
Тип файлов виртуального диска по умолчанию изменен на .DSK
В строке идентификации RTEM вместо VAX/VMS печатается название системы в которой RTEM запускается


RT-11 V05.07

Исправлена установка флага UCF.ON (BSTRAP)
Исправлена загрузка в RTEM системы с поддержкой расширенных номеров устройств (BSTRAP)
Флаг UCF по умолчанию выключен (RMON)
Исправлена потеря содержимого регистров при закрытии файла (USR)


Драйверы

DL, DM, DY, VS отмечены как VARSZ$
RK написан с нуля
DU написан с нуля, только основной функционал


JOAT.SAV

Версия изменена на V01.00C
В RSX-11 используются десятичные номера версий файлов если система использует десятичные
Тип файлов виртуального диска по умолчанию изменен на .DSK
В таблицу допустимых устройств добавлены DA, DC, DH, DU, DW, DZ, VF, MU
В список файлов, перемещаемых в markzone добавлены новые драйверы, IND.SAV и UCL.SAV (тут нужно кое-что переработать с учетом новый информации - некоторым устройствам нечего делать в markzone)
В строке идентификации RTEM вместо VAX/VMS печатается название системы в которой RTEM запускается

form
24.08.2022, 22:06
Ух-ты, сайт заработал!
А тем временем RTEM (https://pdp-11.online/~form/files/pdp-11/rtem/new/) в очередной раз обновился.
Поменял версии: FIP V01.00C, JOAT V01.00D, RTEM V01.00D.

RTEM: передает флаг SCOPE/NOSCOPE в RT-11 (до этого делал заглушку - всегда передавался SCOPE)
RTEM, FIP, JOAT: печатает реальное имя системы вместо VAX/VMS
FIP, JOAT: поддержка десятичных номеров версий в RSX-11 и P/OS
FIP, JOAT: исправлен размер DPB директивы ELP$ - теперь работают в VAX/RSX V2.5 (как работало раньше - не ясно - после исправления стало так как написано в руководстве по VAX/RSX V1.0)
FIP, JOAT: список допустимых устройств пополнен внутренними устройствами VAX/RSX
RTEMFB: увеличен размер таблицы устройств
RTEMFB: тест CIS в BSTRAP сделан совместимым с VAX/RSX (в VAX/RSX прерывания по 4/10 и по защите памяти на верхушке стека оставляют адрес инструкции, вызвавшей прерывание, а не следующей за ней - загрузчик к такому не был готов)
RTEMFB: убрано принудительное выставление TT в режим SCOPE для RTEM - пусть BSTRAP корректно выставляет


Теперь RT-11 V05.07 нормально грузится в VAX/RSX.

Welcome to OpenVMS (TM) VAX Operating System, Version V7.3

Username: FORM
Password:
,;,
O(o o)O
+---ooO-----------Ooo----------------------------------------------+
| # # # ## # |
| # ## ## # |
| #### #### #### # # ### # ### # ### # ### ### |
| # # # # # # ### # # # # # # # # # # # # |
| # # # # # # # # # # # # # # # # ##### |
| #### #### #### ### ### # ### # # ### ### # # # |
| # # ### |
| # # XPEH:: VAX/OpenVMS V7.3 |
+------------------------------------------------------------------+

Last interactive login on Wednesday, 24-AUG-2022 20:14
Last non-interactive login on Wednesday, 24-AUG-2022 00:46
$ RTE /VS

RTEM-11 (VAX/VMS) V01.00D

RT-11FB V05.07

.SET TT QUIET

?DATE-I-Time source: VAX/VMS
?DATE-I-Date & time: 24-AUG-2022 20:28:19

.

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

Выше писал про проблемы с Y2K на ленте, грешил на PIP, но позже сообразил: в RT-11 метками ANSI занимается FSM, прикомпиленный к драйверу, а драйверы лент у нас от RT-11 V4.
Вот еще на досуге будет чем заняться наряду с named directories и UCF :)

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

Среди прочих ковыряний обнаружено значение бита 1 в первом слове в блоке параметров RTEM на который ссылается смещение 110 от начала link area.
Он выставляется если при запуске применяется недокументированная опция /RP.
В VMS по умолчанию /RP, в RSX /-RP.
Опция включает/выключает RPA режим.
В RSX опция ни на что не влияет (по крайней мере в полноценном драйвере терминада), а в VMS если указать /-RP, CTRL/Y будет пропускаться в систему.

$ RTE /VS/-RP

RTEM-11 (VAX/VMS) V01.00D

RT-11FB V05.07

.SET TT QUIET

?DATE-I-Time source: VAX/VMS
?DATE-I-Date & time: 24-AUG-2022 22:04:08

Interrupt

$ CONT


.

form
25.08.2022, 16:45
Файлы и информация, касающаяся RTEM, переезжает отсюда (https://pdp-11.online/~form/files/pdp-11/rtem/) сюда (https://rtem.pdp-11.online/).
Пока в процессе.
Постепенно подтяну туда остальные файлы и добавлю русскую страничку.

UPD. Добавлена русскоязычная страница (https://rtem.pdp-11.online/index.ru.html).

form
29.08.2022, 20:40
Обновление shared image на странице RTEM (https://rtem.pdp-11.online/index.ru.html).
JOAT V01.00E, номера устройств для файлов образа диска печатаются в восьмеричном виде в RSX и в десятичном в VMS.

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

Среди прочих копаний обнаружил интересную фичу в JOAT.SAV (я ее наверное уже обнаруживал как-то, но не помню отметил этот факт или нет).
Если по адресу 1632 записать не 0, в распечатке подключенных устройств появятся LUN.

.SH S

No LD units mounted

VS0: RO [5519] DU0:[1,1]RT11SH.DSK;2
RW DU1:RT11PR.DSK;1
VS7: RW [65535] DU1:WORK.DSK;1

.GET JOAT

.D 1632=1

.ST
*/L
VS0: RO 2 [5519] DU0:[1,1]RT11SH.DSK;2
RW 3 DU1:RT11PR.DSK;1
VS7: RW 5 [65535] DU1:WORK.DSK;1
TT0: RW 1
*^C

.

form
29.08.2022, 23:22
Выяснилось еще немного информации по внутренностям RTEM.
По смещению 114 в RTEM Link Area находится ссылка на таблицу LUN.
Каждому LUN выделено два слова: слово состояния и имя устройства в Radix-50.
Теперь в слове состояния известны значения всех битов:

100000 - доступ только для чтения
040000 - LUN используется
020000 - LUN не участвует в поиске (без этого бита при назначении нового устройства, если такое уже было назначено - будет запользован его LUN; с этим битом будет назначен новый [не нашел где бы это использовалось кроме подпрограммы поиска LUN для устройства])
010000 - бит говорит что файл/устройство, назначенное LUN, физически недоступно для записи
000400 - временный файл (используется только в таблице файлов, для LUN не применяется)
000200 - RTEM устройство, не может быть отключено командой JOAT /D

Эти же биты используются для таблицы VS устройств (адрес по смещению 1045).
Биты 0-6 содержат номер задания плюс 1 или 0 для RTEM устройств.
В таблице 9 записей по 19 слов под описание файла для каждого VS (если VS0 - системное устройство, первые две записи используются под shared/private).

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

form
30.08.2022, 10:32
Исправление shared image на странице RTEM-11 (https://rtem.pdp-11.online/index.ru.html).
Теперь при попытке отсоединить устройство, назначенное RTEM-11, JOAT не падает и не зачищает информацию о файле, привязанному к устройству VS.
Также во вчерашний shared образ затесался STARTM.COM которого там быть не должно, а заодно лишний UCL.SAV (два UCL.SAV - жирно будет).

JOAT V01.00F

form
30.08.2022, 13:11
Еще исправление.
RTEM.TSK V01.00E - исправлена директива ELP$ и в нем (до этого были FIP и JOAT).
Теперь в VMS нормально показываются пути файлов.

$ RTE /VS

RTEM-11 (VAX/VMS) V01.00D

RT-11FB V05.07

.SET TT QUIET

?DATE-I-Time source: VAX/VMS
?DATE-I-Date & time: 30-AUG-2022 12:59:22

.SH S

No LD units mounted

VS0: RO [5516] LB0:RT11SH.DSK;11
RW $$1:RT11PR.DSK;1
VS7: RW [65535] $$1:[FORM]WORK.DSK;1

.BY
$ COP RTEM.EXE SYS$SPECIFIC:[001054]/PRO=(GR:RWED,WO:RE)
$ RTE /VS

RTEM-11 (VAX/VMS) V01.00E

RT-11FB V05.07

.SET TT QUIET

?DATE-I-Time source: VAX/VMS
?DATE-I-Date & time: 30-AUG-2022 13:00:48

.SH S

No LD units mounted

VS0: RO [5516] LB0:[SYSLIB]RT11SH.DSK;11
RW $$1:[FORM]RT11PR.DSK;1
VS7: RW [65535] $$1:[FORM]WORK.DSK;1

.

form
02.09.2022, 12:57
Обновлен RT11SH.DSK (https://rtem.pdp-11.online/files/new/rt11sh.dsk).
Новый TTSET.

form
06.09.2022, 10:32
Еще обновление shared image.
Устройство DH (DVK Emulator Hard Disk) добавлено в список допустимых в FIP и JOAT.

form
04.01.2024, 22:11
Обновился RTEM shared image на странице RTEM (https://rtem.pdp-11.online/index.ru.html).
TTSET обновлен до V7.2.
В RPM (http://mim.stupi.net/rpm.htm) должно обновиться автоматом скоро.

form
05.01.2024, 17:13
И еще обновление RT11SH.DSK - драйверам MTM.SYS и MUM.SYS прописаны правильные IDы устройства.
Драйверы DA, DC, DH не устанавливаются в системе если нет соответствующих устройств в хостовой системе - как принято в RTEM.
Кроме того инсталяционная процедура проверяет версию системы так как драйверы полагаются на функционал, появившийся в RT-11 V5.02.

>RTE /VS
RTEM-11 (RSX-11M-PLUS) V01.00E

RT-11FB V05.07

.SET TT QUIET

?DATE-I-Time source: RSX-11M-PLUS
?DATE-I-Date & time: 5-JAN-2024 14:11:22

.DEV

Device Status CSR Vector(s)
------ ------ --- ---------
DA Not installed 000000 000
DC Not installed 000000 000
DH Not installed 000000 000
NL Installed 000000 000
VS Resident 000000 000
RK Not installed 000000 220
BA Installed 000000 000
DU Installed 000000 000
LD Installed 000000 000
SD Installed 000000 000
SL 122244 000000 000
DD Not installed 000000 300
DM Not installed 000000 210
DX Not installed 000000 264
DY Not installed 000000 264
LP Installed 000000 000
MS Not installed 000000 224
DL Not installed 000000 160
MF Not installed 000000 224
MT Not installed 000000 224
MU Installed 000000 224
DH Not installed 000000 000

.INS DA
?KMON-F-Invalid device installation SY:DAM.SYS

.MC VCP CON TEMP/DRV:DA

VCP - Device VF0: (DA0:) has been assigned.

.INS DA

.

form
12.01.2024, 18:36
На странице RTEM (https://rtem.pdp-11.online/index.ru.html) добавилась последняя информация о структурах данных RTEM (https://rtem.pdp-11.online/files/doc/rtem-data.txt).
Неизвестных смещений в RTEM Linkage Area не осталось, неизвестных битов вроде тоже не осталось.

form
22.01.2024, 09:14
Уточнение картины отображения блоков устройства VS0: при загрузке с пары shared/private image.
Родной драйвер VS делит весь диск на 8 областей (VS различает их по последнему блоку области, сравнивая с запросом):

блоки 0-5 - мапятся в блоки 0-5 private image
далее идут блоки каталога shared image (мапятся только используемые сегменты)
далее идут блоки каталога private image (мапятся все, общее количество сегментов вместе с shared не должно преышать 31)
далее идут блоки файлов shared image до файла SWAP.SYS
далее блоки файла SWAP.SYS и всех файлов после него мапятся во временный файл, куда предварительно копируются
далее интересно: снова блоки shared image, но только в теории - структуры различают последний блок предыдущего пункта и последний блок shared image, но в реальности они всегда совпадают
далее идут блоки файлов private image
и последняя область как заглушка - блоки до 65535, отображающиеся в private image, видимо, просто чтобы вернуть ошибку так как они эффективно выпадут за пределы файла


В сущности ничего нового, просто интересно, что в теории могла бы быть область после mark zone на shared image.

Понятно, что кроме мапинга блоков еще нужно разбираться с блоками каталога при чтении и записи:

последний сегмент каталога shared image должен ссылаться на следующий, относящийся уже к private
номера сегментов private каталога должны при чтении меняться в соответствии с мапингом, а при записи - соответственно меняться обратно


Ну и до кучи (поскольку теперь есть полная информация о том как приделывать файлы к VS) пара слов о том как VS работает с устройствами VS1-VS7 (или VS0-VS7 если загрузка была не с VS). При первой операции I/O строится таблица с состояниями и размерами каждого номера устройства, и далее используются именно эти таблицы - заглядывания в таблицы RTEM не происходит. После изменений в таблицах RTEM требуется вызвать .SPFUN с кодом 374 на любой номер устройства VS, после чего VS при следующей операции I/O обновит свои таблицы.

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

В целом, информация по RTEM V1 почти полная полная - по немногу на досуге начну писать новый RTEM с нуля с поддержкой named directories (в RSX) и может еще каких фич (есть кое-какие идеи). Времени только снова не будет сейчас :D

form
22.01.2024, 14:42
Ну и на всякий случай, если кто вдруг обнаружит у себя в запасах еще какой вариант RTEM - всегда интересно посмотреть :)
Вряд ли до союза когда-либо доходил RTEM версии новее чем 1.0, но мало ли :)
Самые ценные файлы которых нет: RTEDEF.MAC, UCF.SAV (если таковой есть - значит это RTEM v2.0 как минимум, тогда вообще все интересно).

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

Ну и если кто захочет самостоятельно собрать RT-11 V5 под RTEM, на странице RTEM (https://rtem.pdp-11.online/index.ru.html) добавилось описание изменений в RT-11 V5.7 (https://rtem.pdp-11.online/files/doc/rt11v57-changes.txt) и файл RTEDEF.MAC (https://rtem.pdp-11.online/files/misc/rtedef.mac), восстановленный (насколько возможно) из кода загрузчика RT-11 V4.0L.

Hunta
22.01.2024, 15:41
файл RTEDEF.MAC,
Надо будет с моим вариантом сравнить :)

form
22.01.2024, 15:54
Надо будет с моим вариантом сравнить
Какой-то помню смотрели - RTEDEF'а там не было, зато были некоторые драйверы, которые с минимальными правками работают в RT-11 V5 :)

PS. Есть еще мечта - библиотеки или объектные файлы - не знаю в каком виде все это в RTEM поставлялось - всяких ECSI/FCS, но это уже не так важно, поскольку варианта RTEM который умеет named directories в RSX не существовало - его раньше забросили чем такая фича появилась :)

Hunta
22.01.2024, 16:20
RTEDEF'а там не было
Я выкладывал исходный вариант, а файл определений - это уже мои разборки с RTEM

form
22.01.2024, 16:25
Я выкладывал исходный вариант, а файл определений - это уже мои разборки с RTEM
Ну я его тоже получил методом втыкания STOP$S в BSTRAP с последующим анализом памяти :)
Для сборки RT-11 хватает (с дополнительными правками косяков системы), но если найти названия остальных оффсетов, битов итд - было бы интересно.
Хотя с другой стороны - все-равно с нуля писать пора, а там безымянное можно как хочешь обзывать :)

Hunta
22.01.2024, 16:26
Вроде как идентично. Мой вариант выглядит так:


$RTELK=250
$RTEID=252
RTE$ID=^RRTE
RTS$ID=^RV1.
;
.$CMKT=6
.$CRTI=10
.$DARL=12
.$FATA=16
.$FORQ=20
.$FPST=22
.$GETE=26
.$GETP=30
.$GTDA=32
.$GTPS=36
.$GTTI=40
.$IDLP=42
.$INTN=44
.$MRKT=50
.$PTPS=52
.$RDKM=54
.$RQSG=60
.$RSCT=62
.$RSTT=64
.$RTIC=66
.$SPL0=70
.$SPL7=72
.$TKB=122
.$TKS=120
.$TPB=126
.$TPS=124
.EXUSE=140
.FPPFL=142
.INTAC=144
.INTLV=146
.LKQUE=150
.PSCLO=152
.RMONS=154
.SAVE3=156
.SYS=160
.TASKS=162
.TIKCT=164
.TTRSE=166
.$ENSY=170
.$FORK=172
.$INTE=174
.$RMP0=176
.$RMP1=200
.$RMP2=202
.$RMP3=204

form
22.01.2024, 16:35
Вроде как идентично
ну там сложно не заметить ошибку, разве что какие-нибудь .$CMKT/.$MRKT, но я вроде какой-то тест делал на эту тему, так что и должны быть одинаковыми :)

Вот кстати пока писал - вспомнил что я еще одну правку BSTRAP сделал которую не описал в файлике выше - там еще был тест CIS который в оригинале несовместим с VAX/RSX в котором при trap to 4/10 в @SP остается адрес инструкции которая его выдала :)

UPD. И про BR в ERRHOK забыл :D

Hunta
22.01.2024, 16:52
методом втыкания STOP$S в BSTRAP
Дизасм RTEM.TSK и вперёд :)

form
22.01.2024, 17:53
Дизасм RTEM.TSK и вперёд
До этого тоже руки дошли постепенно, а тогда просто срочно хотелось собрать V5.7 и запустить :)
Хотя первым я вроде 5.4 запустил.
Так минут 10-20 помню на сбор всей информации ушло - отдизассемблить дамп загрузчика во время останова было быстрее :)

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

Добавил на страницу RTEM (https://rtem.pdp-11.online/) VAX‑11/RSX V1 Installation Guide and Release Notes.
Поскольку там есть полезная информация о директиве ELP$, использующуйся как в самом RTEM, так и в его RT-11 утилитах, а также о том почему тест CIS в BSTRAP виснет без переделок :)

form
04.02.2024, 12:28
Затащил подпрограммы FCS в RT-11 и поигрался.
Ничего необычного не увидел - все пашет.
Единственное что требуется учесть - это то, что LINK ничего не знает про FSR, соответственно, модуль FCSFSR должен быть первым в списке линковки.
Ну а .FSRPT просто определяется глобально в программе в любом месте.
Ну и @#46 нужно сохранять-восстанавливать (по крайней мере если планируется использовать вызовы USR).

form
11.01.2025, 21:56
Забежал на минутку...
Обновились RT11SH.DSK (https://rtem.pdp-11.online/files/new/rt11sh.dsk) и RTEM.TSK (https://rtem.pdp-11.online/files/new/rtem.tsk) на странице RTEM-11 (https://rtem.pdp-11.online/index.ru.html).
Версия RTEM изменена на V01.00F (функционально ничего не изменилось - просто чтобы отличать в пакетах RPM (http://mim.stupi.net/rpm.htm)).
В драйвере VSM.SYS поправлена порча I/O буфера при обновлении номера максимального сегмента каталога который используется.

Косяк скорее всего нигде не проявлялся, но мало ли.

Суть такая: при загрузке с VS0: с использованием пары shared/private образов, VS позволяет записать в блок 6 при условии что количество записываемых слов 256 или 512, а весь каталог забит пустышками со статусом 100000. Это сделано чтобы USR мог обновить номер максимального сегмента каталога который используется. Физически данная операция выполняется так:

проверяются параметры (количество слов и содержимое блока каталога)
номер максимального сегмента пересчитывается для записи в private image и сохраняется
операция меняется на чтение, LUN меняется на соответствующий для private image, количество слов устанавливается на 256
в буфер записывается сохраненное значение номера максимального сегмента, операция меняется на запись
в буфер записывается заголовок с учетом целого диска VS0: (все данные для него есть под рукой у VS), а каталог инициализируется пустышками 100000


Вряд ли USR использует буфер после записи в блок 6 с целью обновления заголовка сегмента, но это неправильно когда операция записи меняет содержимое буфера.

А проблема судя по всему была из-за опечатки: вместо #16 написали 16.

form
07.03.2025, 21:39
Появился гостевой доступ сразу в RTEM под VMS.
Доступен по SSH на vms@pdp-11.online, логин RTEM.


[form@dev ~]$ ssh vms@pdp-11.online
Trying 172.31.10.12...
Connected to vaxvms.home.lan.
Escape character is '^]'.


Welcome to OpenVMS (TM) VAX Operating System, Version V7.3

Username: RTEM
,;,
O(o o)O
+---ooO-----------Ooo----------------------------------------------+
| # # # ## # |
| # ## ## # |
| #### #### #### # # ### # ### # ### # ### ### |
| # # # # # # ### # # # # # # # # # # # # |
| # # # # # # # # # # # # # # # # ##### |
| #### #### #### ### ### # ### # # ### ### # # # |
| # # ### |
| # # XPEH:: VAX/OpenVMS V7.3 |
+------------------------------------------------------------------+

Last interactive login on Friday, 7-MAR-2025 04:10
RTEM-11 (VAX/VMS) V01.00F

RT-11FB V05.07

.SET TT QUIET

?DATE-I-Time source: VAX/VMS
?DATE-I-Date & time: 7-MAR-2025 21:27:45

.

Среди прочего выяснено, что до VMS V3.x включительно RTEM не требован никакого дополнительного софта - работал сразу.

Попутно на странице RTEM (https://rtem.pdp-11.online/index.ru.html) обновился образ RT11SH.DSK (https://rtem.pdp-11.online/files/new/rt11sh.dsk) и добавилось немного документации, касающейся VAX-11 RSX.

В образе поправлен MCR.SAV, теперь в случае ошибки (например из под captive account в VMS) он не подвисает навечно, а ругается.

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

Немного другой OpenVMS...
Работает, несмотря на все препятствия :)

alphaer
29.03.2025, 12:31
привет всем!
поковырялся и нашел свой старый образ RSX-11M 4.2 !
Там много вкусного!
Ковригинский Си! Не DECUS! ( есть такой для RT-11, но ни у кого вроде бы не видел версию для ОС РВ, так что буду, наверное первым :)
с установленным хелпом.
Есть паскаль 2.1 орегонский, с установленным хелпом.
Фортран-77
Еще портировал когда-то ratfor RAT4, работает
MIM - это, кажется, Микромир система (редактор)
LZ-компрессор
оболочка MCE - типа SL драйвера для RT-11 - очень удобно.
Какие-то ошметки от CAMAC
SRD и многое

Выложу архив,
запускается через Erzatz11.
Через simh не пробовал

Hunta
29.03.2025, 12:59
MIM - это, кажется, Микромир система (редактор)
Скорее всего. У меня есть поставка, почти полная - некоторые исходники битые или отсутствуют, но есть оттраснлированный вариант в .OLB и собранный .TSK, в планах - восстановить, но после добавления в DisAsm поддержки объектный файлов


Выложу архив
Ждем :)

form
29.03.2025, 13:02
оболочка MCE - типа SL драйвера для RT-11 - очень удобно
Сравнивать MCE с SL можно только при наличии очень богатого воображения :)
В настоящий момент для этой цели есть CLEACD (правда только в M+), и он действительно полноценен (хоть и не без косяков [правда в тех случаях где SL тоже дает сбои]).
А вообще - нужен кто-то кто бы вел архив софта - пригодится все, хотя с вероятностью около 100% все это уже где-то валяется в архиве.

alphaer
29.03.2025, 13:04
Хотел выложить ну а что - zip не цепляется, вложения как-то странно работают, я хз...

Hunta
29.03.2025, 13:23
Можно выложить у меня, можно у form - и прикрепить ссылку на форуме. Только, думаю, всё таки не в этой теме :)

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

В состав Микромира, кстати, входил (у меня - надо смотреть) редактор командной строки, но он работал немного по другому, по сравнению с "классическими" редакторами командной строки и самое главное - работал ТОЛЬКО с командной строкой MCR или DCL, ну или другого интерпретатора unsolicated ввода, блин, забыл как они по правильному в RSX называются :D

form
29.03.2025, 18:50
Руки никак не дойдут завести что-нибудь вроде BBS на вебе.
Так что место пока только персонально под полезное дело.
Собственно есть archive.pdp-11.org.ru которым можно рулить.

form
01.04.2025, 08:30
Нода XPEH (https://zx-pk.ru/threads/26437-rtem-11-rt-11-pod-rsx-11m-rsx-11m-plus-micro-rsx-vax-rsx.html?p=1211474&viewfull=1#post1211474) с OpenVMS VAX V7.3 на которой заведен гостевой доступ в RTEM переехала на эмулятор поприличнее на более быстрой машинке.
Можно тестировать.

Попутно при переименовании старой ноды обнаружилось что еще можно сделать с JOAT и FIP, а именно - добавить "SY" в список разрешенных устройств - на нем оказывается private image в VMS если файл SYS$STARTUP:RSX$DEVICE_NAMES.COM не смог назначить "$$" устройство.

Хотя может уже пора понемногу переписывать RTEM и его обвески вместо латания старья - благо, вся нужная информация теперь известна :)

https://pdp-11.online/~form/files/vms/pics/XPEH-RTEM.png

form
07.04.2025, 19:32
Решил наваять утилитку для работы с named directories в RSX-11M+ и P/OS.
Поскольку развивать FIP, JOAT и сам RTEM, пытаясь воткнуть код еще куда-нибудь - дело гиблое.
А так - будет инструмент до того времени когда соберусь переписать все :)
Еще помучаю какое-то время, и если все будет нормально - добавлю в shared images и отправлю в RPM для обновления пакета.


>RTE /VS
RTEM-11 (RSX-11M-PLUS) V01.00F

RT-11FB V05.07

.SET TT QUIET

?DATE-I-Time source: RSX-11M-PLUS
?DATE-I-Date & time: 7-APR-2025 19:28:18

.MAP KAKA/TEMP

.MAP SYS$LOGIN:TEST

.SH S

No LD units mounted

VS0: RO [6250] DU0:[1,1]RT11SH.DSK;21
RW DU1:RT11PR.DSK;1
VS1: RW/TMP [494] DU1:[1,127]KAKA.DSK;0
VS2: RW [10240] DU1:[FORM]TEST.DSK;1
VS7: RW [65535] DU1:[1,127]WORK.DSK;1

.MAP

Device LUN Options Size File
------- --- ------- ----- -----------------------------------------------
VS0: 2 RO 6250 DU0:[1,1]RT11SH.DSK;25
3 RW DU1:RT11PR.DSK;1
VS1: 6 RW/TMP 494 DU1:[1,127]KAKA.DSK;0
VS2: 7 RW 10240 DU1:[FORM]TEST.DSK;1
VS7: 5 RW 65535 DU1:[1,127]WORK.DSK;1

.

form
07.04.2025, 23:23
Тест в P/OS.
https://pdp-11.online/~form/files/pdp-11/pics/rtem-map.png

form
10.04.2025, 05:51
Выложил тестовый образ (https://pdp-11.online/~form/files/pdp-11/rtem/new/) shared image, содержащий обновленный вариант программы MAP, позволяющей подключать диски из именованых каталогов в RSX-11M-PLUS и P/OS. Поддерживаются длинные логические имена.

Формат команты:
MAP rsx-file[/CR[:size]][/RO][/TM[:size]][/VS:unit]
Опции:
/CR[:size] - создает новый файл с размером size блоков. Если size не указан - используется значение по умолчанию из параметров RTEM.
/RO - подключает текущий файл в режиме только чтение
/TM[:size] - создает временный файл с размером size блоков (аналогично /CR).
/VS:unit - в явном виде задает номер устройства VS. По умолчанию ищется первое свободное.

Отличия от JOAT:
созданные файлы не инициализируются - это нужно делать явно командой INITIALIZE
команда не разрешает назначать новый файл занятому устройству
если указана опция /RO, файл открывается в режиме чтения, включить режим записи командой JOAT /W:NO не получится


Команда без параметров показывает текущие назначения.


>RTE /VS
RTEM-11 (RSX-11M-PLUS) V01.00F

RT-11FB V05.07

.SET TT QUIET

?DATE-I-Time source: RSX-11M-PLUS
?DATE-I-Date & time: 10-APR-2025 05:48:32

.MAP TEST/TM
?MAP-I-Mapped to device VS1:

.MAP SYS$LOGIN:TEST/TM:10240/VS:4

.JOAT VS1:/W

.MAP
Device LUN Mode Size File
------- --- ------- ----- -----------------------------------------------
VS0: 2 RO/SHR 6280 DU0:[1,1]RT11SH.DSK;37
3 RW/PVT DU1:RT11PR.DSK;1
VS1: 6 NW/TMP 494 DU1:[1,127]TEST.DSK;0
VS4: 7 RW/TMP 10240 DU1:[FORM]TEST.DSK;0
VS7: 5 RW 65535 DU1:[1,127]WORK.DSK;1

.

form
11.04.2025, 16:00
Очередная переделка программы MAP.
Тестовый образ shared image выложен здесь (https://pdp-11.online/~form/files/pdp-11/rtem/new/).

Формат команды снова изменился:


.MAP [[device] file[options]]

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

Опции:

/ASSIGN:name[:] - назначает логическое имя name устройству
/CREATE[:size] - создает новый файл с размером size (если не указан - используется параметр по умолчанию RTEM)
/READONLY - открывает существующий файл в режиме только чтение
/TEMPORARY - создает новый временный файл



.MAP VS6: SYS$LIBRARY:RT11SH/R

.MAP TEMP/C:10240/T/A:TMP
?MAP-I-Mapped to device VS1

.INI/NOQ TMP:

.DIR TMP:
11-Apr-2025

0 Files, 0 Blocks
10202 Free blocks


.MAP
Device LUN Mode Size File
------- --- ------- ----- -----------------------------------------------
VS0: 2 RO/SHR 5790 LB0:[SYSLIB]RT11SH.DSK;41
3 RW/PVT $$1:[FORM]RT11PR.DSK;1
VS1: 7 RW/TMP 10240 $$1:[FORM]TEMP.DSK;0
VS6: 6 RO 5328 LB0:[SYSLIB]RT11SH.DSK;41
VS7: 5 RW 65535 $$1:[FORM]WORK.DSK;5

.SH
TT (Resident)
VS (Resident)
VS0 = SY
VS1 = TMP
VS7 = DK
MQ (Resident)
BA
NL
DU
LD
SD
SL (Loaded)
LP
MU
10 free slots


.

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

Залил также на "официальную" страницу (https://rtem.pdp-11.online/) RTEM и отправил запрос на обновление пакета в репе (http://mim.stupi.net/rpm.htm) RPM.

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

На всякий случай тест когда система загружена не с VS.
Вроде пашет как надо :)

>RTE DL:/RT
RTEM-11 (RSX-11M-PLUS) V01.00G

RT-11FB V05.07

.SET TT QUIET

?DATE-I-Time source: RSX-11M-PLUS
?DATE-I-Date & time: 11-APR-2025 15:58:37

.MAP
Device LUN Mode Size File
------- --- ------- ----- -----------------------------------------------
VS7: 3 RW 65535 DU1:[1,127]WORK.DSK;1

.MAP LB:[1,1]RT11SH/RE
?MAP-I-Mapped to device VS0

.MAP
Device LUN Mode Size File
------- --- ------- ----- -----------------------------------------------
VS0: 4 RO 5332 DU0:[1,1]RT11SH.DSK;35
VS7: 3 RW 65535 DU1:[1,127]WORK.DSK;1

.

form
11.04.2025, 18:09
Пара слов про использование FCS в RT-11 под RTEM.

В сущности все просто: берем нужные модули из LB:[1,1]SYSLIB.OLB (или SYS$COMMON:[1,1]SYSLIB.OLB) и подключаем. Макровызовы RSX есть в библиотеке SY:RSXMAC.MLB (есть в shared image). Также к программе нужно подключить библиотеку SY:ULBLIB.OBJ (она содержит всякие $RQCB, $RLCB).
Остаются мелкие нюансы :)

В главном модуле программы (который будет первым входящим файлом для LINK) нужно определить порядок секций FSR - они должны идти друг за другом.

.PSECT $$FSR1,RW,D,GBL,OVR ;MAKE SURE FSR PSECTS ARE CONTIGUOUS
.PSECT $$FSR2,RW,D,GBL,OVR ;
.PSECT $$FSR3,RW,D,GBL,OVR ;
.PSECT $$FSR4,RW,D,GBL,OVR ;
.PSECT $$FSR5,RW,D,GBL,OVR ;

Нужно определить некоторые глобальные символы.


$DSW ==: 46 ;RSX DIRECTIVE STATUS WORD

.MCALL DRERR$,FEADF$ ;RSX-11 MACRO CALLS

DRERR$ DEF$G ;DEFINE RSX DIRECTIVE ERROR CODES
FEADF$ DEF$G ;DEFINE RSX SYSTEM FEATURE SYMBOLS

Как обычно, инитим FSR.


FSRSZ$ 0 ;INITIALIZE FSR, NO RECORD I/O

Где-нибудь в программе определяем указатель на FSR:


.FSRPT::.WORD .FSRCB ;POINTER TO FSR

В сущности - все.
Не забываем, что директивы (и некоторые подпрограммы) RSX меняют $DSW, а он находится по адресу @#46 из которого RT-11 берет адрес области для свопинга USR. Во избежание неприятностей, не забываем сохранять/восстанавливать значение.


MOV @#$DSW,-(SP)
DIR$ #QIOW
MOV (SP)+,@#$DSW

Там где уместно, можно использовать стандартный сервис RTEM для вызова директив, требующих системных ресурсов. В этом случае специально сохранять содержимое адреса @#46 не требуется.


MOV @#250,R5 ;POINT TO RTEM LINKAGE AREA
JSR R5,@4(R5) ;ENTER RSX MODE
.WORD ISB ;QIOW STATUS BLOCK OR 0 IF NONE
DIR$ #QIOW ;
CALL @(SP)+ ;RETRY IF NEEDED
BCS ERROR ;BRANCH IF WE FAILED

Данный способ вызова автоматически сохраняет/восстанавливает @#46, вызывает код, идущий между JSR R5,@4(R5) и CALL @(SP)+, и если обнаруживается нехватка ресурсов, делается попытка повторить операцию после ожидания важного события (только RSX).

form
11.04.2025, 21:48
.MAP
Device LUN Mode Size File
------- --- ------- ----- -----------------------------------------------
VS0: 2 RO/SHR 5794 DU0:[1,1]RT11SH.DSK;1
3 RW/PVT DU0:RT11PR.DSK;1
VS1: 5 RW 494 DU0:[TEST]TEST.DSK;1

.MC SET /HOST

Host=CAXAP:: RSX-11M V4.8

.

Хе-хе.
В 11M если ручками переименовать какой-нибудь дир в именованный - все подключается оттуда :)

form
28.04.2025, 02:24
Обновлены файлы RTEM.TSK и RT11SH.DSK на странице RTEM (https://rtem.pdp-11.online/index.ru.html).

RTEM.TSK V1.00H (функционально ничего не изменилось)
RT11SH.DSK (в MAP.SAV поправлен выбор слота для назначения логического имени, VKMON.SAV обновлен до V02.15)


На примере стартового файла:

.TY SY:STARTM.COM
SET TT QUIET
SET SD REG,PS
TTSET /EDIT/SANE/SL
IF RSX MAP VS7: US:[1,127]WORK/ASSIGN:DK
IF VMS MAP VS7: SYS$LOGIN:WORK/ASSIGN:DK
R ECHO
R DATE
UNM*AP :== R JOAT ^/D/Y
SET TT NOQUIET

.
Поиск свободного слота для DK начинался с $UNAM1+4/$UNAM2+4, в результате чего находилась системная запись для DK и переназначалась, чего быть не должно.

form
29.04.2025, 03:01
Обновление shared image на странице RTEM (https://rtem.pdp-11.online/index.ru.html).
Поправлен косяк в KMON который обрушивает систему при попытке выгрузить foreground job.
Проблема сама по себе не относится к RTEM, просто дошли руки поковырять...
DEC немного перемудрил.
При выгрузке FG job, KMON пытается отменить назначения ему устройств в личное пользование.
При этом тупо сканится таблица $OWNER без всяких проверок загружен драйвер или нет.
Для простого драйвера такой способ работает - просто лишняя работа получается, а для драйвера с поддержкой 64 устройств используется дополнительная таблица которой не существует если драйвер не загружен в память (или, к слову, если драйвер при загрузке сам не сделал на нее ссылку). Как результат - вместо таблицы под раздачу попадают вектора устройств.


OINST MOV .$OWNER,R0,* ;Start at the beginning of the $OWNER table
MOV #<$SLOT>,R2 ;Get number of device slots for loop count
10$:
.IF NE UNI$64
CMP @R0,#<OWN.EX> ;Is this an extended unit entry?
BNE 20$ ;No
MOV #<32.>,R5 ;R5 = # bytes to check (extended ownership)
MOV R0,-(SP) ;Save R0 pointer into real $OWNER table
MOV 2(R0),R0 ;Point to the extended ownership table
CALL 40$ ;Clean out the extended ownership table
MOV (SP)+,R0 ;Restore R0
CMP (R0)+,(R0)+ ;Point R0 at next entry
BR 30$ ;And move onto next entry

Я не стал возиться с проверкой что драйвер загружен - просто добавил проверку что расширенной таблицы нет.

Теперь все выглядит так:

.FR FJTST
F>
*** EXIT ***
B>


.UNL F

.
А было так:

.FR FJTST
F>
*** EXIT ***
B>


.UNL F
02:56:13 Task "RTET55" terminated
SST abort. Bad stack
R0=110234
R1=000000
R2=000000
R3=000003
R4=140006
R5=137600
SP=177764
PC=140476
PS=170005
>
Ну и понятно, что проблема проявляется только в системах, собранных с расшиненными унитами и таблицей $OWNER. Если в такой системе загрузить в память драйверы которые поддерживают расширенные номера (обычно это LD и DU), то проблема тоже не проявляется.

form
05.05.2025, 16:42
Последний вариант формата комбинированного диска (shared+private).
На примере пары:

RT11SH.DSK, 5332. блока, 16. сегментов каталога (3. используются)
RT11PR.DSK, 1024. блоков, 4. сегмента каталога

Допускается запись в блок 6, при этом количество слов должно быть 256. или 512., а все записи файлов должны состоять из слова статуса 100000 и нулей с записью конца сегмента (004000) в конце (если используется длина 512. слов).
https://pdp-11.online/~form/files/pdp-11/rtem/data/vs-map.png
Интересно, что структурами данных VS предусмотрено R/O пространство которое идет после mark zone, но в реальности такой вариант никогда не использовался (и признака начала этой области в shared image не предусмотрено).