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

	mov	ah,0		; установка реж 320х200х256
	mov	al,13h
	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	bx,1		; считываем палитру в [BP-4]-[BP+FD00h]
	mov	cx,0FFh
	lea	dx,[bp][-02FDh]	
	mov	ax,ds
	mov	es,ax
	mov	ax,01017h
	int	10h

	mov 	ax,1015
	mov	bl,0FFh
	int	10h
	mov	bp[-003h],dh
	mov	bp[-002h],cl
	mov	bp[-001h],ch

	mov	dx,03DAh	; порт состояния луча монитора
in1:	in	al,dx		; от сих
	and	al,008h
	jne	in1
in2:	in	al,dx
	and	al,008h
	je	in2		; до сих - ждем обратного хода луча

	mov	bx,2		; от сих
	mov	cx,0100h
	lea	dx,[bp][-02FDh]
	mov	ax,ds
	mov	es,ax
	mov	ax,01012h
	int	10h		; до сих - вставляем палитру
	
	mov	ax,1010
	mov	bx,0h
	mov	ch,bp[-003h]
	mov	cl,bp[-002h]
	mov	dh,bp[-001h]
	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