Цитата Сообщение от form Посмотреть сообщение
Задача - получить два прерывания без потери памяти. Первое когда питание "пропало", второе - когда "вернулось" (причем даже если проц остановлен).
Уточнение: "пропадание питания" должно вызвать прерывание по кернелному 24, дать возможность выполнить сколько-то там команд, после чего все устройства (включая процессор) должны полностью "выключиться" (к этому моменту операционка уже выполнит HALT), сохраняется только память. "Восстановление питания" должно выглядеть как запуск процессора с нуля и вызвать прерывание по физическому 24 (ну собственно он же и кернелным будет поскольку MMU в этот момент выключен), не трогая при этом стек - то есть установить PC/PS и все.

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

Опробовал в E11 симуляцию сбоя питания на RSX. Для этого сделан плугин который по записи в свой регистр вызывет прерывание по 24, а по init устанавливает PC/PS и достаточно продолжить выполнение командой P:
Код:
>TYP PFAIL.MAC
	.TITLE	PFAIL -- POWERFAIL RECOVERY TEST
	.IDENT	/V01.00/

	.MCALL	EXIT$S,QIOW$S,SPRA$S,STOP$S

START::	SPRA$S	#20$			;SET POWER RECOVERY AST
10$:	STOP$S				;STOP
	BR	10$			;LOOP

20$:	QIOW$S	#IO.WVB,#5,#1,,,,<#PWUP,#PWUPL,#40> ;PRINT MESSAGE
	EXIT$S				;EXIT

PWUP:	.ASCII	/*** POWER RESTORED ***/
PWUPL	=:	.-PWUP

	.END	START
>RUN PFAIL
E11>d 172000 1
E11>
%HALT
R0/172260 R1/172220 R2/172240 R3/172200  CM=K PM=S PRIO=7
R4/177620 R5/172360 SP/002120 PC/045714  N=0 Z=0 V=0 C=0
045714	mov	001114,sp
E11>init
E11>p

*** POWER RESTORED ***
>
- - - Добавлено - - -

Ну и развитие идеи симуляции сбоя питания: возможность сдумпить память в файл и выйти из эмулятора, а потом восстановить из файла память и сделать запуск прерыванием по 24.