А мне ЖКИ моники не нравятся. Смотрю только на ЭЛТ.
Вид для печати
Подробно описывать не буду, будет очень много букв.
Когда выбирается пункт "загрузка с диска", то с адреса 1000 копируется программа для чтения 1-го сектора нулевого трека нижней стороны, это блок 0 в формате RT-11. В RT-11 устройства прямого доступа называются блочными и делятся на блоки по 512 байт. В качестве условия - нулевой блок должен начинаться командой NOP (код 240). После чтения нулевого блока ему передается управление. Сам процесс загрузки RT-11 состоит в чтении первичного загрузчика (он как раз расположен в нулевом блоке), далее первичный загрузчик читает вторичный загрузчик (блоки 2-5) и передает ему параметры и управление. Вторичный загрузчик уже ищет драйвера на диске, загружает драйвер системного устройства, саму операционную систему и передает ей управление.
В первичный загрузчик также входит драйвер системного устройства, работающий только на чтение, им пользуется вторичный загрузчик для загрузки системы на начальном этапе.
Зачем нужны два загрузчика. Первичный - это часть драйвера системного устройства, а вторичный - часть монитора. Благодаря этому в монитор не надо встраивать на этапе сборки драйвер системного устройства (это было вплоть до третьей версии), и система становится переносимой на любые носители, с которых можно грузится.
Драйвер MZ, к примеру, состоит из блока описания и установки SET-параметров (это нулевой блок в драйвере), затем следует тело основного драйвера, и в конце - первичный загрузчик. Вторичный загрузчик расположен в теле монитора в блоках 1-4. По команде COPY/BOOT первичный и вторичный загрузчики копируются из драйвера и монитора на диск в блоки 0 и 2-5.
А насчет передачи управления в MZ. Сначала вторичный загрузчик читает каталог, ищет там драйвер системного устройства (в данном случае MZ), загружает его в память в самый конец (обычно адреса 157000), после этого читается RMON, настраивается. В принципе уже можно использовать основной MZ. Вот сейчас не помню, USR читается уже через MZ, или через первичный загрузчик. Но есть исходники - посмотрите.
А я у себя обнаружил штук пять таких программ - обычно это небольшие утилиты, для которых экономия одного блока может составлять до 50% выигрыша в размере :)
Наиболее интересная утилита HAND.SAV - выводит информацию о любом драйвере.
Чтобы эта утилита могла запускаться на УКНЦ - потребовалось изменить адрес начала кода в исходнике и перекомпилировать.Код:.HAND SY:WD.SYS
Имя драйвера WD.SYS
Код устройства 53 (винчестерский диск МС5402, RD50/51/52)
В устройстве блоков 1.
Регистр CSR=176670
Вектор 144
Обработка прерываний .+22
Приоритет 340
Размер драйвера 64 байт, 26. слов
Начальный загрузчик 555 байт, 182. слов
Контроль установки Есть
Параметры генерации TIM$IT=1 (поддерживает тайм-аут)
MMG$T =0 (не поддерживает диспетчер памяти)
ERL$G =0 (не поддерживает регистратор ошибок)
Слово состояния FILST$=1 (прямой доступ)
RONLY$=0 (не только для чтения)
WONLY$=0 (не только для записи)
SPECL$=0 (стандартная файловая структура)
HNDLR$=0 (не выполняет простые завершающие операции)
SPFUN$=1 (выполняет специальные функции)
ABTIO$=0 (не выполняет завершающие операции)
VARSZ$=1 (поддерживает тома переменного размера)
SET WD SYSGEN
SET WD [NO]ROLL
Исходник и перекомпилированный .SAV - в приложении.
Это же handler.sav он входит в RT11 или я ошибаюсь?
Хороший ЭЛТ - сам пользуюсь до сих пор проф.монитором - я же говорил про цветной в таком-вот корпусе (модель не помню)
на фото родной ч.б. для укнц - идеальную картинку с УКНЦ выдавал !!! )))
http://www.phantom.sannata.ru/konkur.../kt0826/04.jpg
У меня есть три оригинальных HANDLE.SAV ( V01, V4.1 и V05.03 с исходником).
HAND.SAV - полностью отечественная разработка на ту же тему. Она отличатеся более развёрнутыми сообщениями на русском языке, меньшим размером файла и возможностью вывода информации не только на экран, но и в выходной файл.
Кстати, там была использована ранняя версия моей макробиблиотеки для RT-11, поэтому при изменении адреса начала кода - я не удержался и заменил макрос .Var на самый последний вариант, не создающий кода при объявлении переменных и массивов. Иначе размер программы при компиляции увеличивался на суммарный размер всех объявленных переменных и эти заполненные нулями блоки приходилось удалять у откомпилированного файла .SAV вручную.
К сожалению моя эпохальная макробиблиотека для RT-11 не существует в законченном виде с руководством по использованию :)
Однако, основных идей там немного и они достаточно просты:
1. Переменные и массивы типов Byte и Word можно объявлять при помощи макрокоманды .Var в любом порядке и в любом месте программы, но они все будут описаны, как последовательные смещения относительно метки BegVar.
2. Если в начале подпрограммы вместо метки использовать макрокоманду .Procedure NAME, то будет объявлена метка NAME: и макрокоманда .NAME, генерящая однословный вызов данной подпрограммы через специальный диспетчер, обеспечивающий сохранение содержимого регистров перед передачей управления на метку NAME и восстановление регистров после возврата из подпрограммы по Return. Для возврата результатов работы подпрограммы в интересующих регистрах служат макрокоманды .RetR0 - .RetR5
3. Текстовые сообщения КОИ-7 можно хранить в виде "рекурсивных" строк, когда отрицательный байт означает номер подстроки в таблице подстановок. Строки в таблице подстановок также могут содержать отрицательные байты с аналогичным смыслом.
4. Программа может содержать менеджер памяти с автоматической сборкой мусора и "умными" указателями.
Все эти подсистемы, кроме последней - содержатся в исходнике HAND.MAC, который можно рассматривать, как наглядное пособие по их использованию.
Добавил в архив такую системную дискетку,
интересной показалась программа TAPE, для записи
программ на магнитофон, на дискете есть её исходник,
и редактор (загрузчик) шрифтов FNT.SAV и кучка шрифтов
к нему. Там возможно что-то ещё интересное, например
что за программа BUG.SAV ? Драйвер MH.SYS ?
Исходник VM.MAC.
В архиве образ (с дублем!) лежит в папке TAPE-FNT.
Благодарность участнику old-school за присланные
материалы !
Код:31-Dec-99
Volume ID: FODOS
Owner :
SWAP .SYS 26 12-Sep-94 14 MZ .SYS 3 12-Sep-94 40
RT11SJ.SYS 72 12-Sep-94 43 TT .SYS 2 12-Sep-94 115
LD .SYS 8 12-Sep-94 117 VM .SYS 3 24-Dec-94 125
AC .SYS 5 12-Sep-94 128 PM .SYS 2 12-Sep-94 133
NL .SYS 2 12-Sep-94 135 TY .SYS 2 12-Sep-94 137
LP .SYS 3 12-Sep-94 139 BP .SYS 15 10-Nov-92 142
MH .SYS 3 12-Sep-94 157 SL .SYS 10 12-Sep-94 160
BG .SYS 19 12-Sep-94 170 BUG .SAV 5 12-Sep-94 189
DUP .SAV 45 12-Sep-94 194 DIR .SAV 19 12-Sep-94 239
PIP .SAV 29 12-Sep-94 258 DUMP .SAV 9 12-Sep-94 287
EDIK .SAV 22 12-Sep-94 296 LINK .SAV 49 12-Sep-94 318
KEY .SAV 3 12-Sep-94 367 KEY .COM 1 12-Sep-94 370
IBMCHR.SAV 8 12-Sep-94 371 KBS .SAV 2 12-Sep-94 379
RBTRON.SAV 2 12-Sep-94 381 DESS .SAV 19 12-Sep-94 383
DAY .SAV 5 12-Sep-94 402 MACRO .SAV 60 12-Sep-94 407
SYSMAC.SML 45 12-Sep-94 467 IND .SAV 51 02-Feb-90 512
LIBR .SAV 24 12-Sep-94 563 SRCCOM.SAV 26 12-Sep-94 587
BINCOM.SAV 24 12-Sep-94 613 RESORC.SAV 22 12-Sep-94 637
SYSLIB.OBJ 47 12-Sep-94 659 TESTMZ.SAV 15 12-Sep-94 706
HANDLE.SAV 7 12-Sep-94 721 UCL .SAV 5 22-Oct-94 728
STARTS.COM 1 12-Sep-94 733 UKFONT.MAC 1 12-Sep-94 734
ITALIC.FNT 6 12-Sep-94 735 CREF .SAV 6 12-Sep-94 741
ALTNUM.SAV 3 12-Sep-94 747 PMEM .SAV 2 12-Sep-94 750
ALTNUM.MAC 6 12-Sep-94 752 CLS .SAV 2 12-Sep-94 758
HIGH .FNT 6 12-Sep-94 760 ESCFG .MAC 6 13-Nov-93 766
TI .SYS 3 12-Sep-94 772 ESCFG .SAV 3 13-May-99 775
PMEM .MAC 4 12-Sep-94 778 PRF .MAC 13 12-Sep-94 782
PRF .SAV 6 12-Sep-94 795 TAPE .SAV 4 12-Sep-94 801
SCAN .MAC 3 12-Sep-94 805 BOLDL .FNT 6 12-Sep-94 808
ROMAN .FNT 6 12-Sep-94 814 KOI8 .MAC 2 12-Sep-94 820
IBMCHR.FNT 6 12-Sep-94 822 UKNC .FNT 6 12-Sep-94 828
FP .SYS 2 12-Sep-94 834 FP .MAC 2 12-Sep-94 836
UKFONT.SAV 2 12-Sep-94 838 FNT .SAV 11 12-Sep-94 840
ROUND .FNT 6 12-Sep-94 851 AC .MAC 15 12-Sep-94 857
BUP .SAV 37 12-Sep-94 872 SCAN .SAV 2 12-Sep-94 909
SYSMON.BIN 16 13-May-99 911 PRF1 .MAC 13 12-Sep-94 927
BB .MAC 14 29-Sep-94 940 TEST .SAV 27 12-Sep-94 954
MONIT .MAC 2 13-May-99 981 KBS .MAC 5 13-Nov-93 983
KEYPAS.MAC 7 13-Nov-93 988 VM .MAC 9 13-Nov-93 995
TAPE .MAC 8 12-Sep-94 1004 GC .FNT 6 12-Sep-94 1012
RBTRON.MAC 4 13-Nov-93 1018 SCRIPT.FNT 6 12-Sep-94 1022
ORATOR.FNT 6 12-Sep-94 1028 VMON .UCL 1 28-May-99 1034
VMOFF .UCL 1 28-May-99 1035 ACM .MAC 9 02-Jan-93 1036
SETKA .MAC 7 09-Jul-91 1045 SETKA .SAV 3 -BAD- 1052
SPEED .SAV 3 28-Nov-92 1055 RDRMC .SAV 2 31-Dec-99 1058
RDRMC .MAC 3 31-Dec-99 1060 < UNUSED > 268 1063
< UNUSED > 269 1331
91 Files, 1049 Blocks
537 Free blocks
Вообще-то это мой образ, он в эмуляторе с именем sysimage.dsk.
---------- Post added at 16:17 ---------- Previous post was at 16:09 ----------
VM - одна из многих самоделок, ну выбрал оригинальное имя. В то время я не знал толком как работает UCL, собственно писал для себя, умеет разбирать параметры в командной строке, и в зависимости от параметров и UCL-файла формирует командный файл. Использовал главным образом с языками программирования (C и Pascal). На этом диске нет примеров (VMON и VMOFF не в счет), а так имеется условная трансляция в зависимости от наличия параметров, и даже значения параметров. IND для этой цели слишком медленный, а данный UCL меня выручал.