; Program GC.ASM (wersja G dla jezyka C)
; Wykorzystanie procedur graficznych by byly dostepne w jezyku C

; Laboratorium programowania w jez. symblicznych
; Cwiczenie 4
; K R, D R, M R
; Data: 30.05.1998


.MODEL SMALL		; model pamieci
.CODE

; Deklaracje podprogramow

PUBLIC _TrybGraf    ; deklaracja podprogramu ustawiania trybu graficznego
				; parametr - tryb
PUBLIC _Czekaj		; deklaracja podprogramu czekania na nacisniecie klawisza
				; bezparametrowa
PUBLIC _RysujPoz	; deklaracja podprogramu rysowania linii poziomej
				; parametry: y i kolor

; Podprogram czekania na nacisniecie klawisza
_Czekaj proc
	mov ah,08h	; funkcja 8 przerw 21 - czeka na znak z klawiatury
	int 21h		; -"-
	ret			; powrot z podprogramu
Endp


; Podoprogram ustawiania trybu graficznego
_TrybGraf proc
	; wprow w tryb 3
	push bp		; tworzenie ramki stosu
	mov bp,sp		; ladow do bp wskazn stosu, aby mozna sie bylo
				; odwolywac poprzez bp do parametrow
	mov bx,[bp+4]	; ladow do bx parametru funkcji czyli trybu graf
	mov ah,00h	; funkcja	 0 przerw 10
	mov al,bl		; zalad trybu do al
	int 10h		; wywol przerw 10
	pop bp		; zdjecie ze stosu bp
	ret			; powrot z podprogramu
Endp                ; koniec podprogramu


_RysujPoz proc		; rys linii poziomej
	push bp		; tworzenie ramki stosu
	mov bp,sp
	mov ax,0a000h	; zalad. pocz. segm. obrazu
	mov es,ax
	mov bx,[bp+4]	; y
	mov ax,320
	mul bx         ; 320*y
	mov bx,ax
	mov dx,[bp+6]	; kolor
	mov cx,320
petla:
	mov es:[bx],dx ; ladowanie offsetu bx pod adres pocz. 0a000h
	inc bx		; inkrement.
	loop petla	; skok do petla:
	pop bp		; zdejmij ze stosu BP
	ret			; powrot
Endp				; koniec podprogramu


END				; koniec programu GC


