Цитата Сообщение от parallelno Посмотреть сообщение
Пытаяс понять как работает твоя реализация прерываний нашел один избыточный кусочек кода как мне кажется:

Скрытый текст


Код:
StInt:
	xthl		; обмен hl <-> ((sp))
	shld	im_ret+1	; сохраним адрес возврата из прерывания
	pop	h
	shld	im_hl+1		; сохраним значение HL при выхове прерывания
	push	psw
	lxi	h,2	;\ вычисляем указатель стека
	dad	sp	;/
	shld	im_sp+1	; сохраним указатель стека
	pop	psw
	push	b	;восстановим данные испорченные стеком
	
	lxi	sp,im_stek	; временный указатель стека для прерываний
	push	PSW
	push	b
	push	d
[свернуть]

кажется что тут избыточно порталкивание PSW в стек и обратно. Как мне кажется его можно убрать, и заодним убрать смешение SP на 2 в команде DAD
...
Поправь меня пожалуйста если ошибаюсь
...
По бумажкам, которые у меня есть, команда "DAD rp" влияет на флаг "CY".
Возможно его пытался защитить от изменения на время выполнения операции "DAD SP".