Важная информация

User Tag List

Показано с 1 по 7 из 7

Тема: RTEM-11 -- RT-11 под RSX-11M, RSX-11M-PLUS, Micro/RSX, VAX/RSX

  1. #1
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,134
    Благодарностей: 1945
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию RTEM-11 -- RT-11 под RSX-11M, RSX-11M-PLUS, Micro/RSX, VAX/RSX

    Ну вроде дозрел до создания отдельной темы по 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 как допустимое устройство).

    Здесь последний вариант 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 возможна в двух вариантах:
    1. загрузка с использованием shared и private образов (в этом случае shared образ открывается только для чтения, private образ открывается для чтения и записи, а для файлов shared образа начиная со SWAP.SYS и всех идущих за ним создается временный файл куда эти файлы копируются
    2. загрузка с физического диска с использованием специального драйвера 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; 11.04.2016 в 04:46.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  2. Эти 3 пользователя(ей) поблагодарили form за это полезное сообщение:
    anasana (08.04.2016), hobot (09.04.2016), Patron (31.08.2017)

  3. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  4. #2
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,134
    Благодарностей: 1945
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Ошибки вторичного загрузчика (и не только его), относящиеся к RTEM:

    Код:
    .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; 11.04.2016 в 04:51.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  5. Эти 2 пользователя(ей) поблагодарили form за это полезное сообщение:
    anasana (10.04.2016), hobot (11.04.2016)

  6. #3
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,134
    Благодарностей: 1945
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Перенесено из темы по RSX...

    Выложил в один каталог все, что касается 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 образ. Драйвер 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
    
    .
    Последний раз редактировалось form; 16.12.2016 в 02:18.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  7. Эти 2 пользователя(ей) поблагодарили form за это полезное сообщение:
    anasana (16.12.2016), hobot (16.12.2016)

  8. #4
    Guru Аватар для hobot
    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    4,564
    Благодарностей: 1001
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    а когда печатает все - не вызывает
    сделать как в старых RT - одтельную малюсенькую утилиту с названием как команда SHALL )))

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

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

    Олег! Предлагаю на образ rt11sh.dsk добавить
    http://archive.pdp-11.org.ru/ukdwk_a...rk_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_a...t/REDKIE_IGRY/
    Последний раз редактировалось hobot; 16.12.2016 в 07:31.
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

  9. #5
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,134
    Благодарностей: 1945
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В shared образе не должно быть ничего кроме системы. И стартового файла быть не должно. По хорошему и UCL.DAT тоже, но в виду отсутствия UCF я туда запихнул кое-какие команды, а DAT поместил в область временно-записываемую - на время сессии можно определять новые команды
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  10. Этот пользователь поблагодарил form за это полезное сообщение:
    hobot (16.12.2016)

  11. #6
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,134
    Благодарностей: 1945
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию RTEM LINK AREA И ПРОЧИЕ СТРУКТУРЫ

    Что на данный момент известно о 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?
    	=:	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	НОМЕР УСТРОЙСТВА
    ;ОСТАЛЬНЫЕ СЛОВА ПОКА НЕ ЯСНЫ
    Последний раз редактировалось form; 17.12.2016 в 01:15.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  12. Этот пользователь поблагодарил form за это полезное сообщение:
    hobot (17.12.2016)

  13. #7
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,134
    Благодарностей: 1945
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Whole = Shared + Temp + Private

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

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

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

    Нажмите на изображение для увеличения. 

Название:	rtem-disk.jpg 
Просмотров:	30 
Размер:	18.6 Кб 
ID:	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 образ немного пустого места в конце (не внесенного в каталог). Работает, но лишнее место нигде не отразилось во внутренних структурах данных, хотя в принципе такой вариант там предусмотрен судя по всему.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. micro-CPU на vhdl, verilog
    от bigral в разделе Для начинающих
    Ответов: 14
    Последнее: 16.04.2015, 23:39
  2. Micro INC
    от rasmer в разделе Игры
    Ответов: 2
    Последнее: 14.12.2014, 21:54
  3. BBC Micro Live
    от AM в разделе Разное
    Ответов: 1
    Последнее: 21.04.2013, 10:54
  4. Orizon-Micro
    от lerkom в разделе Unsorted
    Ответов: 34
    Последнее: 18.10.2012, 13:45
  5. BBC micro
    от Addison в разделе Зарубежные компьютеры
    Ответов: 59
    Последнее: 13.11.2011, 13:54

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •