; plik  22:13pm 07-05-1997
; A.P. 
.MODEL  SMALL
.DATA
x	DW	?
y	DW	?
k	DB	?
bufor	DB	?
bazagr	DW	0a000h
tekst   DB      "Wcisnij cos $"
t2	DB	" Pierwszy program asm $"
.CODE 
   

Start PROC
; sprawy segmentowe

	mov ax,SEG DGROUP
	mov ds,ax

;inicjacja grafiki
	mov ah,0
	mov al,13h
	int 10h

;spacje
	mov cx,413
nap:
	mov ah,02h
	mov dl,20h
	int 21h
	dec cx
	jne nap

;rysunek

	mov y,199
ptla1:
	mov x,320
ptla2:
	mov ax,x
	mov bx,y
	mov dl,k
	call putpixel
	dec x
	inc k
	jne ptla2
	dec y
	cmp y,0
	jne ptla1

; napis
	mov dx,OFFSET t2
	mov ah,9
	int 21h

;przesuwanie az zost wcisniety klawish i bedzie to esc.
petelka:
	call przes
	mov ah,0bh
	int 21h
	cmp al,00
	jz petelka
	mov ah,08h
	int 21h
	cmp al,1bh
	jne petelka

	mov x,200

tuskocz:
	call przesg
	dec x
	jne tuskocz

; wracamy do textu
	mov ah,0
	mov al,07h
	int 10h

;wracamy do DOSa
	mov ax,4c00h
	int 21h

Start ENDP

; ******************* procedury ******************** 
; procedura rys. pixel
	putpixel  PROC
	mov es,bazagr
	mov cl,6
	shl bx,cl
	mov cx,bx
	shl bx,1
	shl bx,1
	add bx,cx
	add bx,ax
	mov BYTE PTR es:[bx],dl
	mov ax,SEG DGROUP
	mov es,ax
	ret
putpixel ENDP

;procedura przesuwajaca rysunek
przes PROC
	mov es,bazagr
	mov bx,0
	mov al,BYTE PTR es:[bx]
	mov bufor,al
	petla:
	mov ax,WORD PTR es:[bx+1]
	mov WORD PTR ES:[bx],ax
	add bx,2
	cmp bx,320*200
	jc petla
	mov al,bufor
	mov BYTE PTR ES:[bx],al
	mov ax,SEG DGROUP
	mov es,ax
	ret
przes ENDP

;procedura przesuwajaca rysunekw gore
przesg PROC
	mov es,bazagr
	mov bx,0
	petlag:
	mov ax,WORD PTR es:[bx+320]
	mov WORD PTR ES:[bx],ax
	add bx,2
	cmp bx,320*200
	jc petlag 
	mov ax,SEG DGROUP
	mov es,ax
	ret
przesg ENDP


.STACK 512
END start