-
Код:
.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 если ручками переименовать какой-нибудь дир в именованный - все подключается оттуда :)
-
Обновлены файлы RTEM.TSK и RT11SH.DSK на странице RTEM.
- 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 и переназначалась, чего быть не должно.
-
Обновление shared image на странице RTEM.
Поправлен косяк в 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), то проблема тоже не проявляется.
-
Последний вариант формата комбинированного диска (shared+private).
На примере пары:
- RT11SH.DSK, 5332. блока, 16. сегментов каталога (3. используются)
- RT11PR.DSK, 1024. блоков, 4. сегмента каталога
Допускается запись в блок 6, при этом количество слов должно быть 256. или 512., а все записи файлов должны состоять из слова статуса 100000 и нулей с записью конца сегмента (004000) в конце (если используется длина 512. слов).
Интересно, что структурами данных VS предусмотрено R/O пространство которое идет после mark zone, но в реальности такой вариант никогда не использовался (и признака начала этой области в shared image не предусмотрено).