Из написанного не ясно когда пробовал.
Нужно пробовать в момент когда загрузчик записан в память, но загрузка не стартовала.
---------- Post added at 20:22 ---------- Previous post was at 20:17 ----------
Самый простой способ какой приходит в голову - SIPPом (PUDом, DESSом итд) поменять на диске SY: по оффсету 2000 значение на 0 и загрузиться - должен выпасть в пульт как раз на этапе апуска вторичного загрузчика. Потом прописать в 1000/ 12737, в R7/ 1000, P и вернуть значение обратно
---------- Post added at 20:24 ---------- Previous post was at 20:22 ----------
Впрочем это самый простой без осмысливания того факта, что перед нами эмулятор - в эмуляторе проще
---------- Post added at 20:26 ---------- Previous post was at 20:24 ----------
Проверил - так и есть: в 0 прописан 0, а не 240, вы 5000-5004 - дата-время.
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
form, Я просто в эмуляторе хочу найти RTC если он есть конечно. RT же знает дату и время.
Про то и говорю - нкиакого RTC нету. Дата-время передается через адреса 5000-5004 в момент загрузки.
---------- Post added at 20:31 ---------- Previous post was at 20:31 ----------
Это стандартный способ когда RT-11 загружается из под уже загруженного RT-11 командой BOOT. Ersatz-11 тоже так делает по команде BOOT/RT11.
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
Эмулятор при автоматической загрузке с датой выполняет такой код:
Код:if( nC_WarmBootSystem == 1 ) { // Читать блоки 2,3,4,5 в адреса с 01000 pDSK_DeviceI->ReadDSK( nC_BootDeviceUnit, 2, 512*4, &aMemory[01000] ); RegisterRW_MES( pCPU, "SP", WRITE, 010000 ); RegisterRW_MES( pCPU, "PC", WRITE, 01000 ); WORD( 00000 ) = 0; // Загрузка с датой и временем в соотв. ячейках. WORD( 04722 ) = nC_BootDeviceUnit; // Номер загружаемого устройства } WORD( 05000 ) = HIWORD( day_ticks ); WORD( 05002 ) = LOWORD( day_ticks ); WORD( 05004 ) = rt_date; // Дата
Попробовал команду DAY с вкл. таймером. Время обновляет значит есть привязка к вектору 100. Теперь надо подумать как забрасывать данные в 5000-5004.
Ещё интересно, если кто знает в терминале 15ИЭ есть служебная строка которая время показывает. Откуда она время берёт.
Последний раз редактировалось MiX; 20.06.2014 в 18:09.
Мало забрасывать в эти адреса.
Надо забрасывать именно в момент выполнения загрузки, до начала выполнения вторичного загрузчика, притом подготовить данные для него, чтобы он считал, что это не аппаратная загрузка.
И данный способ при том годится только для RT-11 и ни для чего больше.
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
form, Тут другое, что сетевой таймер не имеет адреса а значит подсчет времени выполняетcя программно командой DAY. Чтоб железно реализовать время, надо в прошивке прописать команды о считывании с RTC который надо посадить на шину. Как то так.
Не всегда.
Не обязательно.
Возможно время берется из системы и печатается и так в цикле.
Но и тот и другой способ никакого отношения не имеют к адресу 5000 -- к этому моменту по этому адресу находится фиг знает что, возможно кусок этог же DAY.SAV
---------- Post added at 21:41 ---------- Previous post was at 21:40 ----------
Иными словами к тому моменту когда запущен DAY.SAV, содержимое 5000-5004 не сдержит ни даты ни времени.
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)