barsik, вы хоть иногда читаете что я вам пишу?
какие мерцания?

1 на Спеке УМЕЮТ освежать весь экран за 1 фрейм (период между приходами прерывания)
2 прерывания при игростроении используются для синхронизации игровых циклов
напишу жирными большими буквами
НЕ ДЛЯ ПРЕДОТВРАЩЕНИЯ "МЕРЦАНИЯ" (для этого используются другие способы), А ДЛЯ СТАБИЛИЗАЦИИ СКОРОСТИ ИГРОВОГО ПРОЦЕССА
3 прерывания используются для стабилизации звукового оформления игры
вот пример звукового оформления из игры SAUCER

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

Код:
;****************************************
; IN GAME BEEPER ROUTINES...
;****************************************

Beeper:		ld		hl,(FXPointer)		; table pointer

			ld		a,(hl)				; frequency + code (1 frame info only)
			inc		hl
			cp		LASTFXCODE			; new control code?
			jr		nc,PlayFX0

			add		a,a
			jr		nz,PlayFX
			ld		(FXNumber),a		; no more sound
			jr		WaitInt

PlayFX:		push	hl
			add		a,FXRout & 0xff
			ld		l,a
			ld		h,FXRout / 0x100
			ld		a,(hl)
			inc		l
			ld		h,(hl)
			ld		l,a
			ld		(FXCode),hl			; change current beeper routine
			pop		hl
			ld		a,(hl)

PlayFX0:	        ld		(FXPointer),hl		; ready for next time
			ld		e,a					; current frequency
			ld		d,a
			ld		hl,PlayOut			; return address
			push	hl
			ld		hl,(FXCode)
			defb	OP_JPHL

PlayOut:	        xor		a
			out		(BEEPPORT),a
			di
			ret

;****************************************
; NORMAL BEEP...
;****************************************

Beep:		        ld		a,0x10
			out		(BEEPPORT),a
			ld		b,e
Beep0:		ld		a,r
			ret		m
			djnz	Beep0
			jr		Beep1

Beep1:		ld		a,0
			out		(BEEPPORT),a
			ld		b,d
Beep2:		ld		a,r
			ret		m
			djnz	Beep2
			jr		Beep

;****************************************
; PHASE BEEP...
;****************************************

Boop:		        ld		a,0x10
			out		(BEEPPORT),a
			inc		e
			ld		b,e
Boop0:		ld		a,r
			ret		m
			djnz	Boop0
			jr		Boop1
Boop1:		ld		a,0
			out		(BEEPPORT),a
			dec		d
			ld		b,d
Boop2:		ld		a,r
			ret		m
			djnz	Boop2
			jr		Boop

;****************************************
; WHITE NOISE BEEP...
;****************************************

Hiss:		        ld		hl,0				; rom pointer

Hisso:		ld		a,0x10
			out		(BEEPPORT),a
			ld		b,(hl)
			inc		hl
Hiss0:		ld		a,r
			ret		m
			djnz	Hiss0
			ld		a,0
			out		(BEEPPORT),a
			ld		b,d
			inc 	d
Hiss2:		ld		a,r
			ret		m
			djnz	Hiss2
			jr		Hisso
[свернуть]


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

Цитата Сообщение от barsik Посмотреть сообщение
А вот тут, как пишут на сайте, поподробнее пожалуйста.

Какие у Вас предубеждения против PL/M? Если он даёт код более быстрый, чем ассемблер, поддерживает прерывания, работает по ячейкам памяти и вообще отличается от ассемблера только бОльшим удобством для программиста. Я давно разочарован в полезности СИ и Паскаля для 8-ми разрядок, но с PL/M ещё дела не имел. Я исхожу только из общеизвестных фактов, что для 8-ми разрядок стОящие программы были написаны только на ассемблере и на PL/M. На PL/M написаны все утилиты CP/M и MSDOS, а на СИ и Паскале для 8-ми разрядки вообще ничего не написано, кроме учебных программ и мелких утилит конверторов форматов.

PL/M написан для всех микропроцессоров, даже для 4004 и 8008 и всех микроконтроллеров. Что они ради праздного удовольствия это сделали? Как раз нет. А потому что PL/M даёт возможность писать очень эффективные программы именно для микропроцессоров. Так что Ваша фраза, что программить на PL/M для микропроцессоров - глупость, сама является глупостью. Почитайте биографию Гарри Килдела, где он утверждает, что PL/M эффективнее даже, чем ассемблер.
У меня нет предубеждений против PL\M
но вот какие именно стОящие несистемные программы были написаны на PL\M вы могли бы и указать.

кстати про CP\M
система написана под i8080 однако не использует ряд очень удобных моментов заложенных авторами процессора
так что извините.