Убрал FORMAT.SAV - нефиг ему в RTEMе делать :)
Вид для печати
Убрал FORMAT.SAV - нефиг ему в RTEMе делать :)
И еще обновление. А то забыл кое-что :)
Код:SWAP .SYS 25P 01-Feb-82 RTEMFB.SYS 82P 01-Feb-82
NLM .SYS 2P 01-Feb-82 VSM .SYS 6P 01-Feb-82
DIR .SAV 17P 01-Feb-82 DUP .SAV 42P 01-Feb-82
PIP .SAV 23P 01-Feb-82 FIP .SAV 61P 01-Feb-82
JOAT .SAV 52P 01-Feb-82 RESORC.SAV 15P 01-Feb-82
KED .SAV 60P 01-Feb-82 K52 .SAV 55P 01-Feb-82
EDIT .SAV 19P 01-Feb-82 TECO .SAV 50P 01-Feb-82
MACRO .SAV 51P 01-Feb-82 CREF .SAV 6P 01-Feb-82
LINK .SAV 41P 01-Feb-82 LIBR .SAV 22P 01-Feb-82
FILEX .SAV 18P 01-Feb-82 SRCCOM.SAV 13P 01-Feb-82
BINCOM.SAV 10P 01-Feb-82 SLP .SAV 9P 01-Feb-82
DUMP .SAV 8P 01-Feb-82 SIPP .SAV 20P 01-Feb-82
PATCH .SAV 10P 01-Feb-82 PAT .SAV 8P 01-Feb-82
HELP .SAV 107P 01-Feb-82 BATCH .SAV 26P 01-Feb-82
SYSMAC.SML 42P 01-Feb-82 SYSMAC.MAC 41P 01-Feb-82
SYSLIB.OBJ 47P 01-Feb-82 VDT .OBJ 9P 01-Feb-82
VT52 .TEC 5P 01-Feb-82 VEG .TEC 4P 01-Feb-82
EDIT .TEC 1P 01-Feb-82 INSERT.TEC 2P 01-Feb-82
LOCAL .TEC 3P 01-Feb-82 SORT .TEC 3P 01-Feb-82
VTEDIT.TEC 32P 01-Feb-82 SEARCH.TEC 3P 01-Feb-82
SQU .TEC 13P 01-Feb-82 TYPE .TEC 12P 01-Feb-82
STARTM.COM 1P 01-Feb-82 VDT .SAV 8
44 Files, 1084 Blocks
478 Free blocks
Разбираю структуры в памяти. Заполняю постепенно RTEM link area.
Сдается мне, что он полностью совпадет по смещениям с тем RTEDAT.MAC который я нарисовал от балды. Видимо у дураков мысли сходятся ;)
УРА! ПОБЕДА! :)
Теперь осталось свой RTEM сделать который бы поддерживал все фичи :)Код:.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
FP11 Hardware Floating Point Unit
Extended Instruction Set (EIS)
60 Hertz System Clock
Multi-terminal support
Global .SCCA support
FPU support
Extended unit support
Device Status CSR Vector(s)
------ ------ --- ---------
LD Installed 000000 000
NL Installed 000000 000
BA Installed 000000 000
VS Resident 000000 000
SL 122622 000000 000
SD Installed 000000 000
TT (Resident)
VS (Resident)
VS0 = DK , SY
MQ (Resident)
BA
NL
LD
SL (Loaded)
SD
1 free slots
Job Name Console Level State Low High Impure
--- ---- ------- ----- ----- --- ---- ------
0 RESORC 0 0 Run 000000 122546 137600
Unit Owner Type WIDTH TAB CRLF FORM SCOPE SPEED
--------------------------------------------------------
0 S-Console DL 80 No No No Yes N/A
Address Module Words
------- ------ -----
165324 VS 854.
136020 RMON 5986.
122614 SL 2882.
001000 ..BG.. 20934.
No LD units mounted
.
На случай если кто желает присоединиться к ковырянию.
В аттаче дамп памяти RTEM в момент когда управление передается на B$BOOT (1000) загрузчиком.
Вместо вот этого (код останова задачи для RSX с флажками 123456 для поиска):
в начале первого блока должно быть:Код:012746 000603 104377 123456 000000 123456
- это и есть B$BOOTКод:012737 003144 000100 005037 000102 005003
Проверка показала, что коментарии в исходниках RT-11 V5.7 (в других версиях коментариев не было вовсе) немного врут. Mentec, никогда не видя RTEM в глаза, при попытке откоментировать процесс потерял одно слово, что заставило их удивленно написать в коментариях "???" :)
Я, опираясь на данные коментарии, выдвинул предположение как работает загрузка в RTEM, но оно оказалось неверным. Теперь можно восстановить справедливость.
Код:; Слово конфигурации аппаратуры
BCNFG: .WORD LSI11$ ;Подразумеваем LSI-11
; Биты слова конфигурации аппаратуры
TSLIST: .WORD LSI11$ ;LSI-11 (нет адресуемого PSW)
.WORD LKCS$ ;у таймера есть CSR
.WORD CLOCK$ ;таймер есть в принципе
.WORD HWFPU$ ;есть FPP
; Данные DUP/RTEM
;
B$TIME: .BLKW 2 ;5000
B$DATE: .BLKW ;5004
B$HIME: .BLKW ;5006
B$SVTK: .BLKW ;5010
B$ROFF: .BLKW ;5012
B$LK50: .BLKW ;5014
B$LKGR: .BLKW ;5016
B$FPU: .BLKW ;5020
;RTEM не использует B$TIME и B$DATE поскольку все, что касается таймера и часов
;хукается вторичным загрузчиком и в дальнейшем обращается к соответствующим
;подпрограммам RTEM.
MOV #B$HIME,R2
MOV (R2)+,R4 ;Сохраняем последний доступный RT-11 адрес
CALL @(R2)+ ;Вызываем RTEM для инициализации
;Флаги RTEM используются только в RT-11 V5. RT-11 V4 не использует флаги,
;а RTEM старых версий их не возвращает.
MOV R0,CNFMOD ;Сохраняем флаги RTEM:
; 100000 - установить TT в режим SCOPE
; 000001 - установить режим UCF
;RTEM собирает рабочий диск из двух частей. Общая часть (содержит систему)
;и приватная часть (область куда пользователь может писать файлы). Обе части
;представляют собой образы диска со стандартной файловой структурой RT-11.
;Во время работы образы комбинируются в один, сегменты каталога приватного
;образа добавляются в конец к общим, а данные соответственно отодвигаются
;дальше по номеру блока. RTEM возвращает число блоков на которые данные
;отодвигаются из-за вставки приватных сегментов. Загрузчик добавляет это
;значение к номеру блока перед чтением. Во время работы системы это
;выполняется прозрачно внутри драйвера VS.
MOV (R2)+,$VSBRO ;Сохраняем смещение для загрузчика
...
;Настройка битов оборудования.
MOV #TSLIST,R1
MOV R1,R0
BIC (R1)+,-(R0) ;RTEM -> никакого LSI11$
BIC (R1)+,@R0 ;RTEM -> никакого LKCS$
BIS (R2)+,@R0 ;B$LK50 (RTEM: CLK50$)
TST (R2)+ ;B$LKGR (RTEM: 1-есть таймер, 0-нету)
BNE 10$
CLR @R1
10$: BIS (R1)+,@R0 ;CLOCK$
MOV (R2)+,@R1 ;B$FPU (RTEM: 100 [HWFPU$]-собран с /FP, 0-с /-FP)
CFCC
BIS (R1)+,@R0 ;HWFPU$
...
Собственно RTEM мониторы RT-11 V 05.04G и 05.07, а также файлы, нужные для сборки их вручную.
Код:RTEM .CND 2 29-Jan-1984 RTEM .ANS 7 29-Jan-1984
RTEM .TBL 5 29-Jan-1984 RTEM .BLD 1 29-Jan-1984
RTEM .DEV 1 29-Jan-1984 RTEM .MON 1 29-Jan-1984
RTEMFB.MAP 35 29-Jan-1984 NLM .SYS 2 29-Jan-1984
RTEMFB.SYS 95 29-Jan-1984 LDM .SYS 8 29-Jan-1984
BAM .SYS 7 29-Jan-1984 RTEDEF.MAC 2 29-Jan-1980
12 Files, 166 Blocks
226 Free blocks
SYSMAC.SML от RT-11 V5.07, переделанный в RSXный MLB.
Может пригоиться если вдруг понадобится получить OBJ из RT-11 программы не выходя за пределы системы.
Код:>TYP TEST.MAC
.TITLE TEST
.MCALL .PRINT,.EXIT
TEST: .PRINT #TEXT
.EXIT
TEXT: .ASCIZ /THIS IS JUST A TEXT/
.END TEST
>MAC TEST=RTMAC/ML,TEST
>SET DCL
$ MAC RTMAC/LIB,TEST
$
На время пока ковыряю внутренности RTEMа, на CTAKAHе можно побаловаться с тем, что уже удалось выжать ;)
Внутри RT-11 V05.04G.
Поскольку RTEM древний, от даты офигевает и считает, что лучше обойтись вовсе без нее. Время не идет и устанавливается в хрен знает что видимо по тойже причине. Установить дату/время руками тоже нельзя так как загрузчик RT-11 блокирует установку даты и времени в RTEM. После некоторого отдыха или поправлю или сразу свой вариант начну писать как и хотел.
Выход из RT-11 командой "BY" или "JOAT /E".
Если кто-то уже сидит в RTEMе от лица GUEST, второму достанется Read-Only доступ так как private image уже открыт будет для записи.
Код:$ RTE /VS
RTEM-11 (VAX/VMS) V01.00
RT-11FB V05.04 G
.SET SL ON
.SH CONF
RT-11FB V05.04 G
Booted from VS0:RTEMFB
USR is set SWAP
EXIT is set SWAP
KMON is set NOIND
TT is set NOQUIET
ERROR is set ERROR
SL is set ON
EDIT is set KED
KMON nesting depth is 3
Global .SCCA flag is disabled
Emulated RT-11 environment, processor type unknown
60KB of memory
FP11 Hardware Floating Point Unit
Extended Instruction Set (EIS)
60 Cycle System Clock
Multi-terminal support
Global .SCCA support
FPU support
После долгого пития чая, с помощью какой-то матери было выяснено почему RT-11 V5.6 и новее криво пишут файлы в (старом?) RTEMе.
Решить можно двумя вариантами: вставить в RTEM кусочек кода или поправить USR.MAC. Про первое подумаем еще, что касается второго, то патч для USR.MAC к RT-11 V5.7 здесь.
А заодно и рабочий shared image с 5.7...