.model small
.code
org 100h
start:	push	bp		; стек
	mov	bp,sp
	sub	sp, 303h

	mov	ah,0		; установка реж 320х200х256
	mov	al,13h
	int	10h

	xor	bx,bx		; считываем палитру в [BP-4]-[BP+FCFDh]
	mov	cx,0FDh
	lea	dx,[bp][0FCFDh]	
	mov	ax,ds
	mov	es,ax
	mov	ax,01017h
	int	10h

	mov	ax,0A000h       ; устанавливаем es:di на видео память
	mov	es,ax
	xor	ax,ax
	mov	di,ax
	mov	cx,0FA00h	; начинаем рисовать
	mov	al,00h

LP:	mov	es:[di],BYTE PTR al	; цикл прорисовки
	mov	ax,di
	add	ax,01h
	xor	dx,dx           ; проверяем, кратно ли di 320ти
	mov	bx,0140h	
	div	bx
	mov	al, BYTE PTR es:[di]
	add	di,1h
	cmp	dx,0h
	je	UVEL 		; если да, увеличиваем цвет
LOP:	loop	LP			; конец цикла
	jmp	e
UVEL:   add	al,1h		; здесь увеличиваем цвет
	jmp	LOP

e:	mov	al, [bp][0FD00h]	; сохраняем первый цвет в [BP-3]
	mov	[bp-0003], al
	mov	al, [bp][0FD01h]	; сохраняем первый цвет в [BP-2]
	mov	[bp-0002], al
	mov	al, [bp][0FD02h]	; сохраняем первый цвет в [BP-1]
	mov	[bp-0001], al
	lea	ax,[bp][0FD00h]	; от сих
	lea	bx,[bp][0FD03h]
	mov	si,bx
	mov	di,ax
	mov	ax,ds
	mov	es,ax
	mov	cx,02FAh
	repe	movsb		; до сих, смещаем палитру ниже
	mov	al, [bp][-0003h]
	mov	[bp-0006], al	; потерянный цвет в конец палитры
	mov	al, [bp][-0002h]
	mov	[bp-0005], al
	mov	al, [bp][-0001h]
	mov	[bp-0004], al
	mov	dx,03DAh	; порт состояния луча монитора
in1:	in	al,dx		; от сих
	and	al,008h
	jne	in1
in2:	in	al,dx
	and	al,008h
	je	in2		; до сих - ждем обратного хода луча
	xor	bx,bx		; от сих
	mov	cx,0100h
	lea	dx,[bp][0FCFDh]
	mov	ax,ds
	mov	es,ax
	mov	ax,01012h
	int	10h		; до сих - вставляем палитру
	mov	ah,01h		; проверка на нажатие кнопки
	int	16h             ; -----
	jz	e		; если нету, то снова
	mov	ah,0
	mov	al,3h		; обратно в текстовый режим
	int	10h		; -----
	mov	sp,bp		; вертаем стек
	pop	bp
	int	20h		; типа конец :)
end 	start