LOCAL

.MODEL	TINY


PUBLIC	DefParSysWindow
PUBLIC	AboutWindow


INCLUDE	GRAPHHI.INC

ESC_CharCode		EQU	1Bh	;код символа клавиши "ESC"

SymbolWidth		EQU	8	;ширина матрицы символа
SymbolHight		EQU	16	;высота матрицы символа


;
;Окно "Определение параметров системы"
;

W1_color                EQU     COLOR_BTNFACE	;цвет окна
W1_x1                   EQU     177		;координаты окна
W1_y1                   EQU     209
W1_x2                   EQU     (W1_x1+45+30*SymbolWidth)
W1_y2                   EQU     (W1_y1+45+SymbolHight)

W1_Str1_FGd             EQU     COLOR_BLACK
W1_Str1_x               EQU     (W1_x1+23)
W1_Str1_y               EQU     (W1_y1+23)


;
;Окно информации о программе
;

W2_color                EQU     COLOR_BTNFACE	;цвет окна
W2_x1                   EQU     157		;координаты окна
W2_y1                   EQU     130
W2_x2                   EQU     (W2_x1+29+37*SymbolWidth)
W2_y2                   EQU     (W2_y1+45+173)

W2_step_y               EQU     20

W2_Str1_FGd             EQU     COLOR_BLACK
W2_Str1_x               EQU     (W2_x1+15+76)
W2_Str1_y               EQU     (W2_y1+CAPTION_HEIGHT+23+20)

W2_Str2_FGd             EQU     COLOR_BLACK
W2_Str2_x               EQU     (W2_x1+15+56)
W2_Str2_y               EQU     (W2_Str1_y+W2_step_y)

W2_Str3_FGd             EQU     COLOR_BLACK
W2_Str3_x               EQU     (W2_x1+15)
W2_Str3_y               EQU     (W2_Str2_y+2*W2_step_y)

W2_Str4_FGd             EQU     COLOR_BLACK
W2_Str4_x               EQU     (W2_x1+15+48)
W2_Str4_y               EQU     (W2_Str3_y+2*W2_step_y)


.DATA

W1_Str1		DB      "Определение параметров системы",0

W2_Header       DB      "О программе",0
W2_Str1         DB      "Информация о системе",0
W2_Str2         DB      "Версия 1.08b (Май 2002г.)",0
W2_Str3		DB	"Copyright (c) 1998-2002 Андрей Жданов",0
W2_Str4         DB      "Разработчик:  Андрей Жданов",0


.CODE

EXTRN   GetBitBlock12:proc
EXTRN   StoreBitBlock12:proc
EXTRN 	WriteStr12x:proc
EXTRN   CreateWindow:proc
EXTRN	CreateWindow2:proc
EXTRN   ReadKey:proc

DefParSysWindow	PROC
;
;Процедура:	формирует на экране окно "Определение параметров системы"
;
;Использует:	CreateWindow, WriteStr12x
;
;Вызов:         нет
;
;Возврат:	нет
;
;Изменяемые
;  регистры:	AX,BX,CX,DX,Flags
;
		push	si

;формируем окно

		mov	al,W1_color
		push	ax
		mov	ax,W1_y2
		push	ax
		mov	ax,W1_x2
		push	ax
		mov	ax,W1_y1
		push	ax
		mov	ax,W1_x1
		push	ax
		call	CreateWindow

;выводим строку

                mov     cx,W1_Str1_x
                mov     dx,W1_Str1_y
                mov     bl,W1_Str1_FGd
                mov     si,OFFSET W1_Str1
                call    WriteStr12x

		pop	si

		ret

DefParSysWindow	ENDP

AboutWindow	PROC
;
;Процедура:	формирует на экране окно с информацией о программе
;
;Использует:	GetBitBlock12, StoreBitBlock12, CreateWindow, WriteStr12x,
;		ReadKey
;
;Вызов:         ES:BX -> буфер
;
;Возврат:	нет
;
;Изменяемые
;  регистры:	AX,BX,CX,DX,Flags
;
		push	si

		push	bx

;сохраняем окно

		push	es
		push	bx
		mov	ax,W2_y2
		push	ax
		mov	ax,W2_x2
		push	ax
		mov	ax,W2_y1
		push	ax
		mov	ax,W2_x1
		push	ax
                call    GetBitBlock12

;формируем окно

		mov	ax,OFFSET W2_Header
		push	ax
		mov	al,W2_color
		push	ax
		mov	ax,W2_y2
		push	ax
		mov	ax,W2_x2
		push	ax
		mov	ax,W2_y1
		push	ax
		mov	ax,W2_x1
		push	ax
                call    CreateWindow2

;выводим информацию о программе

                mov     cx,W2_Str1_x
                mov     dx,W2_Str1_y
                mov     bl,W2_Str1_FGd
                mov     si,OFFSET W2_Str1
                call    WriteStr12x

                mov     cx,W2_Str2_x
                mov     dx,W2_Str2_y
                mov     bl,W2_Str2_FGd
                mov     si,OFFSET W2_Str2
                call    WriteStr12x

                mov     cx,W2_Str3_x
                mov     dx,W2_Str3_y
                mov     bl,W2_Str3_FGd
                mov     si,OFFSET W2_Str3
                call    WriteStr12x

                mov     cx,W2_Str4_x
                mov     dx,W2_Str4_y
                mov     bl,W2_Str4_FGd
                mov     si,OFFSET W2_Str4
                call    WriteStr12x

;ожидание ввода клавиши закрытия окна

@@01:		call    ReadKey

		cmp	al,ESC_CharCode
		jne	@@01

;восстанавливаем окно

                pop     bx

		push	es
		push	bx
		mov	ax,W2_y1
		push	ax
		mov	ax,W2_x1
		push	ax
                call    StoreBitBlock12

		pop	si

		ret

AboutWindow	ENDP


END
