Professional Documents
Culture Documents
(1997) การเขียนโปรแกรมภาษา C ระดับสูงสำหรับ DOS - อานันท์ สีห์พิทักษ์เกียรติ
(1997) การเขียนโปรแกรมภาษา C ระดับสูงสำหรับ DOS - อานันท์ สีห์พิทักษ์เกียรติ
!"#$
%&
%'($#)
* &+,&&-$
.
&!/01%2
$-
0,1% "#! -!/
&%
-322& "#
&0
$ *#-
% &4-$11 "
#
&*2
&
$*#-2#5
"#
&2")2-$& 5.
%
)
+,1
*
$!)6&
%
7
0)
,-)
8$))+$0)-$5)++-
)
/
9:;<=>?<@A<ABAC79AD7E;F7<E7GH
!"#$%&
'(
)&*+,!-.
/0&
1(".&22!3456%
7"!89)94:,;<=>?6@<A:BCA;<<DEA5 !-
0
" &
0
.
!""+FG;HA+<=;CA;I
"
0 (
95 7
)7 !J)) )K9)4 "L
0
& !& 742.5
0(
".&0&)!& 74
!7
9 L5
/0&!-9 .5
..(.&
95 9
5
0)!
.K($
0&
0".5!&
95
. 1
)(
4 49)$4 )
#)7)K9)4
3&)KK4).7
MNOPQRN
S
R
SM
PM
MM
Me
RM
"! #$%!& '()*+ ( ,+)*-.,+/0+#,!1%2,' 134-.,+)50+(&67%8-.,+ (,(4"9*,!-/!" ) 7--%:.-!/.,+ ; /!"40+<0
,+9"!"5+97--),+9+4,+$=5>9*'?5,+6!3,+6@+A'+BC)0"4"+'6D+)E%,FC
#%8/*GH -.,+/0+#)50+(<& "0 4D+"4"+'B73",)*,!-1%2,'/0+#%840+'+,A+7$'0
/*$% D++)3H0+/0+#6+,I JK 134/
,+(4,<*+-.,+/0+#9!&67 D+134<* LMK
/!"40+@+N+
LO
J,+<*D+B!
PQGH)5!,,+ D++9'!,R'3 (/*,+(4,<*-.,+6+,,R
)*B*+LMK
9H& 2577-E,+ +D + /( * ,+134,+,D+)3)'+459
)*S?,/*
<0
)'+459 TU %8-.,+,(4 ",!-6@+A
)'+454 VVU %8-.,+,(4 ",!WL
%8/*GH 0+/0+#)50+(6& 7/**3?6+,?'0 ,+1%2,'W;))!B # ( ,(4 "
9*
,6+,,+,D+)30+)'+459
25*" 67/*,D+)3)'+459 M
L
3*"4 A+7
)H#67'(-.,+4044?0)5+4-.,+<0-.,+,(4",!-6@+A,R67%7,-3*"4M
L
,+
/!& WLJ2B3X5,+0+/D+2)0
L,+,D+)3/D+2)0
L%8/*,6+,(2& /057M
L
+6'(,+B0)!-0+7)"0+1%2,'257M
L
<0,+,D+)3/D+2)0
L,R67/*-,3*"4"0+
/*,+)*
L$%4?0 )( 5!,2572S"3-6@+A%8/*0+/0+#)50+(6& 7/*,D+)3$"*(6B. /C
93!/!"40+,+,D+)3/D+2)0
L-6@+A?% (
TY
ZLK
TT
LO[
!"#$"
!
"#$%&'()% * %*%+ ,
%.$%"/ 0)
12
%3%+
4
567
8
%%*%+ *(0(,
%-*99:$0 (
,
%-;*
<=7
>?( #9:$9*,
%-.$%
@2
9
@A
0,
-*;
BCD
%9+ $# .-*;
%"/ 0)
1E
BD+)!-,+9(41%2,'134<*@+N+ LO
J ,+,D+)30+/0+ # )*,!-(6.B/C!&
B+'+S<* \
L
Z]^GH;M
$"*;_I$3* 3!<0/!"40+1%2,' ( GH2B3)*)RSH,+
,D+)3/D+2)0
L)*4?0 2S" ( T257)5!, ( VT
#include <stdio.h>
#include <dos.h>
main()
{
union REGS regs;
regs.h.ah=02;
regs.h.dh=10;
regs.h.dl=30;
int86(0x10,®s,®s);
}
! (6B. /C
,D+)30+)*,-
9
L
j
$%Y!& )/EX5,R bJJ
9
L
/!"2,67<*,+B00+$%4!M
L
B0"bJJ
M
L
!& 670+4,R/+'2/0,'R 9( * B(4 B( +D !n4?,0 R "+'R",+ +D +9M
L
!&
09*+/D+S*+1%2,' (9(4!&/*,+"+'R",+ D++B?#,R67$'0)'+7 (67<*M
L
V
,+
!& ,R,+9!36!)"7,+ +D +%,/.9 \ A )*$% +D +40+ /+' (
!& /*,+) ( +(4,"0+
ZL
Z' +D ZBR625*"\,R67
,5!-$% +D +3.' ( +* $"*/0 )'$'0'( 7$,.39H& %,/.25*" 67<*
A )*%E ,FC
-9*+\)1%2,'B0"#B+'+S (679*+'+ D++2 ,,+ D++%,/.9\$3*13467
2-0
,%8Y%7@
a
;
L
g
[[
xgfL J
ML[
L
J
WY
W
yOLgJ
z
hr
Z O[OLz
oY[L
LL
L
I JJ
z
' ,.3
9H& PYqt &! B/!"67/"6B-3?"+0 '(
3 +D +4?)0 $'0S*+$'0''( ! ,R
67
\ ! 2( /0S+* '(
,( +D 5! +D +4?'0 ! ,R67/"63?"+0
3'( LgB?,"0+
q
Q
/*
*/
#include
#include
#include
#include
<stdio.h>
<conio.h>
<dos.h>
<bios.h>
void main()
{
char test;
long int i;
char OldMask;
clrscr();
OldMask = inportb(0x21); /* read the old mask value */
outportb(0x21,OldMask|2); /* disable keyboard interrupt */
printf("Enter a character: ");
for (i=0;i<100000;i++)
/* try to detect key stroke
{
if (bioskey(1) != 0 )
{
test = bioskey(0);
break;
}
}
if (i==100000)
printf("\nYou are too slow");
else
printf("\nYou typed %c",test);
outportb(0x21,OldMask);
*/
u
# $%
;L
'(-.,+/0+#)*,!-LMK 4?0'+,'+4$3*2,0
&' ( %8 ;L
( <*+,!'+, B( 3E 13467'( M
L
404)*5,<*+4?'0 +,'+4
%7'+FTTM
L
1%2,''C675,<*+257!-B00+,!-M
L
X0+j
9
,6+,(2& 5*"4!'( vrYTIdYYIYuIdY]IdYyIdVVIdQTQuI2/067$'0,50+"SH ( &( 4,"*
QTQuIGH %8
( ;L
6$"*A )*1%2,''C+D $%<*+$3* )A?3(,40+,R
%8
"( +0 4?0 ! vrQuI67S?,<*S*+ !& '(,+<*]W;
) )%
- W
fL J 9 ,E /!"67'( ZW 4?0 ('& =
( | ,C<! ,+ +D +)*4?0
)5+4/!" ('(%714<C GH=|,C<!)50+(&67,(4"9*,!-,+"-E' U JK 73!- (/D+,"0+ ;L
".`,( +<*+
!& 67)',!-,+<* ;L
,E 40+ A(42/0"+0 ,+
+D +9'!679H& 4?,0 -! E0 2574() * 9!& #3!!& S*+)+,"0+ 9+<* $( '0<0
L[ fOTT},R+6'(,+ +D + 2( /,/0+,!$%$3*2/0134 "! $%25*" ,E E0 %|66E-!67'(
,+ +D + ( )'#,!)'3
9!&$3*2,0vrqIdTbIdIdId;Id]I257yI
+457(43,+ D++9
!&)'3 (,50+"SH(&B+'+S*257sH,N+$3*6+,)!Bk"'
9*'?5BD+)!-1%2,''Cm134 '1~2,dWL
LM
))!B;L
Lj [[
j #
P
4
= 5#5012/,,342
+ +-25*""0+1)'3,+ D++%,/.9;'!67')RW[LgA(4Wj fg 0+
!& 13467'(,+6!3,+ W[Lg (2& -- j[
L
2-0)0"4"+'6D+,%8 j[
2/057
j[
'(9+3Qaxfg25767)5',!-j[
,0)*+4?0 Qfg +D )*'( j[
( %8$%
$3* &! )'3Qaxj[
"5++67*+SH9*'?5 /( +D 2)03#[[Lg+67/*-,bJJ
?%9j[
MM
134 ( MM
/D+2)0@+4j[
!& #<0TTTTTTq67)'+4SHfg
( q
j[
( )S*+2%5,'+%8Ug
O JJ
9+3afg,+*+SH9*'?5[[Lg
!& LMK
( %8$%$3* &! )'3'( YqQ)'+459TYqqB. ( r,R JJ
t
TTTTTTTT
TTaTTTTT
TTqTTTTT
Z
J
rZLj [
\
Lj [
bTTTTTTT
yTTTTTTT
\W
dZ
J[[Lg
ZW
D+B! 2, ' +%7,+s=|,C<! )*%8 Z 25*" ( &( =|,C<! vKxgLJ +,R
B+'+S D+,+9(41%2,'=|,C<!!&$3*)'=|,C<!%,/.`'3+ !"$%
BD+)!-L
<( $&( %4!Z !& +67<*,+,R-/D+2)09 Z 3.'9
!& #
257(4,<*=| ,C<! )50+!& ' 6D+ %8 134%,/.25*"+67.4' (4,<*+ Z 3.'97--,0 6( 7
+D +/+'Z)'0 ( 9(49H& '+
' +9(4 Z )'0BR625*"+,R67/* +D ,+%5(4 2%50+ r A )*'! <($& %4! Z
)'0 ( +9(49H& 134D+B! ( +67<*,+0+2579(40+9*+$%r!& $3*2,0j257
1%2,' 2( B3/0$%(& %81%2,'Z/!"40+GH 2B3)*)RB0"%7,-BD+!n/0+# 6( 7
/*'(
#include <stdio.h>
#include <dos.h>
void interrupt (*OldKey)(void);
void interrupt NewKey(void);
void main(void)
{
OldKey = getvect(0x09);
setvect(0x09,NewKey);
}
/* An ISR for Interrupt 9 (Keyboard interrupt) */
void interrupt NewKey(void)
{
OldKey(); /* call old ISR */
/* our ISR program */
}
=|,C<! (6& 7 +D ,+(4, Z /!"3.')* +D +,0 )5!6+,!& 6H04 +D +/+' /( * ,+/0$% X5 $( 3*
6+,1%2,'(& ,E !& '( ,( +,3xgfL J=|,C<! vKxg67S?,(4,<*+
,+9(4Z!& '(9* 6D+,!34?A
0 B'"D+B! ( +67<* Z !& $'0B+'+S<*+D B! '( (
,+6)0"4"+'6D+2--;g
[$3*! <*+D B! [ OOL$'0$3*! 257 6+,'(+D B! #(,
)5+4D+ B! '( ,( +<* [ OOL +*'4?0 <0
Md
M257D+ B! # ( ,(4 "9*,!-o6H$'0
B+'+S<*D+B!)50+!&$3*<0,!
Y
1234891:;<=>?@AB?4
?:C
a
5L'%
&8.D6B0"(,& R /!"1%2,' 6( 7<* +D +' rZS?,(4,9H& '+! 5!,NF7
91%2,'B0"(,& 6R 7)'1%2,' "! # $% 2/067/*$'0',( +6)0"4
"+'6D+2--Jg
[ ! 67<*+D B! [ OOL $'0$3* 257 6+,'(+D B!
#(,'+, '( ,( +(4,<* [ OOL +*'<0
Md
M257D+B!
# ( D++,!-o6H D+)*$'0B+'+S<*D+B!)50+!&$3*<0,!3!!&+
( ,(4 "9*,!-o+6H'!,67/*<*"`. ( 9*+SHI JK 134/
1=?CL
LM??B2 $%
6+, ( 4,50+"$"*"+0 +67/*/"6B-"0+;"0+ 6( 7)*1%2,'rZ9+ +D +)$'0
,0 6( 7(4,1%2,'rZ9H& '++'(Y".`( 6( 7<*"-?,0 ! $%A /"6B-BS+79;
'+$3*/D+2)09JO;L
yO j25*",RB+'+SD+$%<*/"6B-$3*<0
if (*InDosFlag == 0)
PopUpTSR();
/!"40+9*+/*+ D+,+/"6B-0+9
;L
yO j"0+%8T\"0+)$'0 S*+%8,R
)*(4,rZ9H& '+ +D +1341%2,'rZ+9(4$"*=|,C<! L\rZ
,+ 3B-0+
;L
yO j(& D+)*+ +-"0+"5+3 ( ;"0+257"5+3 ( ;$'0"0+2/00+
B(43+4 (-+!&
;L
yO j67)*0+ (X.3,'+-+!&;67"0+2/0
;L
yO j,!-'(0+%8
<0/ ( 4?0 ( ;L
L[3!!& +6H/*<*,( ".`)( H ,+/"6B-"-?,0 ! $%,+<* ;L
JO
hLL
Q
u
*/
#include <stdio.h>
#include <dos.h>
#include <stdlib.h>
#define STK_SIZE
void
void
void
void
void
void
interrupt
interrupt
interrupt
interrupt
interrupt
interrupt
0x2000
/* Stack size */
(*OldTimer)(void);
/* pointer to old timer ISR */
NewTimer(void);
/* New timer ISR function */
(*OldKey)(void);
/* pointer to old keyboard ISR */
NewKey(void);
/* new keyboard ISR function */
(*OldDosIdel)(void); /* pointer to old Idel loop */
NewDosIdel(void);
/* new Idel loop function */
P
M A I N * * * * * * * * * * * * * * */
t
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void interrupt NewTimer(void)
{
(*OldTimer)();
/* if Key != 0 means that F1 or F2 key has been pressed */
/* if InDosFlag = 0 it is safe to interrupt
*/
if ( (Key != 0) && (*InDosFlag == 0) )
{
if (Key == 1)
{
Key = 0 ; PopUp();
/* call PopUp function */
}
else if (Key == 2)
{
Key = 0 ; Unload(); /* call Unload function */
}
}
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void interrupt NewDosIdel(void)
{
(*OldDosIdel)(); /* Call old Dos Idel ISR */
/* if Key != 0
if
{
(Key != 0)
if (Key == 1)
{
Key = 0 ; PopUp(); /* call the PopUp function */
}
else if (Key == 2)
{
Key = 0 ; Unload(); /* call unload function */
}
}
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void PopUp(void)
{
/* set the STACK buffer */
/* ss,sp and stack[] are variables declared at the beginning */
/*
of the program
*/
disable(); /* disable interrupts */
ss = _SS;
sp = _SP;
_SS = _DS;
_SP = (unsigned) &stack[STK_SIZE-2];
enable();
/* enable interrupts */
/* print the string "Hello !" on to the screen */
i=0;
while (text[i] != 0)
{ *Scrptr = text[i++];
Scrptr+=2;
}
/* reset the STACK */
disable();
_SP = sp;
_SS = ss;
enable();
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void Unload (void)
{
setvect(0x08,OldTimer);
setvect(0x09,OldKey);
setvect(0x28,OldDosIdel);
setvect(0x64,0);
freemem(_psp); /* free memory */
}
D+ B! /0+# ( <*1%2,'B0")n0%8D+ B! ( ,(4 ",!-
ZL
dI JK
; b
1. keep(0, (_SS+(_SP/16)+1-_psp));
\
Lj [
Lj [ z
6E3B.&BE391%2,'
6E3.' /*9 z
6E3B.&BE39 z
52B35!,NF791%2,')0"4"+'6D+
L>G3134?1>
+S
ss = _SS;
sp = _SP;
_SS = _DS;
_SP = (unsigned) &stack[STK_SIZE-2];
Y
D+ B! 9*+/*(6& 7 +D ,+%5(4 A& ( )0"4"+'6D+ 6( 7<*%8 z B+)/E ( +/* +D 40+(&
A+7 A& (# 1%2,' rZ 9+6$"*<*%8 z !&'(9+35R,,.$% "5++9(4 rZ (
+D +G!-G*+6 +D )* z /R'$3* GH 67 +D )* rZ 9+ +D +$'0S,? /*)+6 +D )*7--)4E3
,+ D++$%54,R$3*
6+,%|n)+9*+/*+6H/*B*+A& ( )'0B+D )!-<*%8 z 1341%2,'/!"40++ +D ,+
B*+b g<
z9H& '+'(9+3rx]25*"6H-,)*1%2,'9+'+<*A& ( &( %8 z134
,+<*/!"2%7--V/!"
6R..9.2>1S.@FG@02<6%8/!"2% (,R-0+ zj[
!'!67%8/!"-,1%2,'
"0+ z 6( 7<*4?0 ( j[
3
6 R.E 9.2>1S E$302@"< 6 %8/!"2% (<(&$%4!0+-BE39 z rL LM z GH67%8
/D+2)0MM
6+,(, )( H
6 R=. 9=>2> .@FG@02< 6 %8/!"2% <( $&( %4! j[
( <*,R-9*'?591%2,' /!"2%
/0+# ( +%7,+s9H& '+1%2,'674?0 j[
(&
9!& / ( <*1%2,'
+67 D+,+,R-0+d,0+$"*/!"2% (B*+9H&<
d
A"0+)5!6+,rZ9+
+D +BR625*",R67$3*0+,0+)*,-! d$3*
& ,R +D ,+,D+)30+)*<$&( %4!;A+7b g9+674?0 j[
(&
)5!6+,!
& 2/0 6+, z 67<*)0"4"+'6D+
+* 4BE3,R,D+)3)* <($& %4! b g ( +B*+9H
6+,9*+)5!,5!-9H& '+9*+)*+ 3!!& +6H/*,D+)3)* .' /*<($& %4!/D+2)0BE3 +* 4
9b g
_SP = (unsigned) &stack[STK_SIZE-2];
6+,D+ B! 9*+/* +<*/+D 2)0 rx]Y 2 /D+ 2)0BE3 +* 49 b g /D+ 2)0.' /*
9 z2 (67%8rx]A+7b g
z9+%8b gLMU 2/057<0 0+
,!-fg2/00+ (1%2,'67B09*+$% z+6%89*'?59+3)Yfg,R$3*3!!&,+ (+<*
rx]Y!& ,R%8,+X $"*"+0 9*'?5/!"2, 6( 7S?,,R-9*+
z%89*'?59+3Yfg
YY
$6+ #++
,+9(41%2,'%,/. !"$%+'!,67/.3/0,!-2%eA.'AC'+/*,+!-9*"+')/!"
!,N9*+'+6+,X?*<* 134@+N+,R'(=|,C<!)*5,<*+4?0AB'"2/0-+!&++6/*,+"E',+ +D +92%eA.'AC)*'+,,"0+%,/. <0/"6B-,+,3%E' Of z)ObO;O%8/*
,F(&( +67/* +D ,+/.3/0,!-2%eA.'AC134,+9*+SH U JK 134/ GH 67/*+s!4"+'9*+6
)5!,,+ +D +9'!AB'"
!
S*+)+,"0++/*,+0+0+ (zgfL J!-9*+'+%|66E-!+B+'+S D+$3*1340+0+6+,L
)'+459 TiQT 0+ ( +0 '+$3*6&( 7$'0<0+0 b 9%E' X( *? <*,3 2/067%80+
LJ 9%E' !& #
GH 0+
LJ(6& 72/,/0+,!$%BD+)!-zgfL J2/057E0 257%8)*+ 9( 6( 7 +D ,+2%5
59
LJ)*%8bGH 67 +D ' ,.3
92%eA.'AC9&H
t
/++ (2B30+
LJ92%eA.'ACB+'+S3?$3*@+X",
T0,! )""
2%eA.'AC967'(fMM (B+'+S!-,+,32%eA.'AC$3*50")*+ !&)'3Q/!"2/057
/!"!,N67<*A& ( Yfg3!!& 9+39fMM6H +0 ,!-VYfg
134674?0 )0"4"+'6D+/D+2)0
TTaTTT]TiaSHTTaTTTV;TiaVJ
B+)/E /( * <*& ( Yfg
,+,R-0+/!"!,N/!",RA )*B+'+S/"6B-$3*+0 4"0+%E' (
,39*+'+!& %8%E' `'3+)%8%E' A.sN %E' `'3+!& $3*2,0 bd Tt B0"%E' A.sN$3*2,0 yyYd
j\dj;
d%E'5?,s%8/*+67A.6+F+0+ (,R-Yfg(&3!(&
S*+fg2,'(0+ +0 ,!-T2B3"0+%E' ,( 3%8%E' A.sN257LJ9%E' !& 674?0 fg ( Y
S*+fg2,$'0%8T2B3"0+%8%E' `'3+257LJ9%E' !& ,R0+6+,fg2,($& 3*54
6+,9*'?5 ( -! 9*+'+6+,zgfL J679*+$%4!fMMGH '(4?S0 H Q/D+2)0134676!3,+
9*'?52--yyy
y
3!!& 6H/*'( L
-( ,/D+2)09/!"!,NfMM"0+4?0 (
3-*+ ( 6&( 7<*L
4?0 Y/!"3*"4,!I J,!-r O
!6
L
(6& 74?0 )0"4"+'6D+/D+2)0TTaTTTbTia 67 +D )*+ <( $&( %4!/!"!,N ( 4?0
/D+2)0)!"." ),50+"(,40+)H '!67<($& %4!/!"!,N ( 4?0 fMM '++ B( 3E GH 67%8/!" (
1%2,'/0+#670+$%<*3!!& S*++/*,+0+0+6+,fMM+670+/!" ( I JL
(<& &( 4?0
YV
'6- !6
L
(6& 74?0 )0"4"+'6D+/D+2)0TTaTTTTia%8L
6( 7<($& %4!/D+2)0 (
"0+S!3$% 6( 7<*,R-/!"!,N ( +6!-9*+'+ +2%eA.'AC L
(6& 7%5(4 0+ ,E !& '( ,( +,3%E' -
2%eA.'AC)' ,.3
t9H& !
0+ S( ,? ,R-4?0 L
&! B6.#25*"%80+
Ji6+,/D+2)0TiaTT3!!& S*+67D+$%<*
6.67/*-", TiaTT 9*+$%, <0S*+0+ I J L
%8 Ti] 2B3"0+/D+2)0 '( ! <(& 4?0
TiaTTTi]{Tia]
MM 92%eA.'AC6&( 7S?,6!3,+2-- O w ' ,R-9*'?56BE3%5+43*+)H
9fMM JJ
Tia
S*+0+9I JL
{r OL
2B3"0+MM"0+257S*+0+9I JL
*4
,"0+r OL
4?0 Yfg)S*+I J{Tia257r O{TiaVJ2B3"0+'!!-/!"!,N$3*(,/!"
3(4"fMM,R67/R'
##
!
"
Ya
This is an example of how you can read and set data from and to
the keyboard buffer.
*/
#include <stdio.h>
#include <conio.h>
#include <dos.h>
void interrupt (*old)(void); /* pointer to old keyboard ISR */
void interrupt newkey(void); /* our new keyboard ISR */
char far *scrptr = (char far *)0xb8000000 +138;
char far *head = (char far *)0x41a;
char far *tail = (char far *)0x41c;
/* Screen pointer */
char far *key; /* used to point to the tail location in the buffer */
void main()
{
int i;
clrscr();
/* initialize the IVT */
old = getvect (0x09);
setvect(0x09,newkey);
/*
give time to let you type in characters and see how they go
in to the buffer */
delay(5000);
/* read characters in the buffer and print them to the screen
*/
for (i=0;i<10;i++)
getche();
/* restore old value int the IVT */
setvect(0x09,old);
}
Yq
= 'H'; scrptr+=2;
= '='; scrptr+=2;
= *head; scrptr+=2;
= ' '; scrptr+=2;
= 'T'; scrptr+=2;
= '='; scrptr+=2;
= *tail; scrptr+=2;
= ' '; scrptr+=2;
= 'C'; scrptr+=2;
= '='; scrptr+=2;
0x60 is where the keyboard scan code is kept. */
= inportb(0x60); scrptr+=140;
/* uncomment the next line to let you code execute before the old ISR
*/
/*
}
(*old)(); */
/* Screen pointer */
YQ
Yu
M
Y?1
==BZ G3134?2[1>
9VWH:WX
T@UV$>"B;M>F+U2@ JML[[[LgOL L
TTaTTTu
u
Q
q
a
V
hLz v[hLz LOOhLz bOJLK
Y
OJLK
hMUM
T
ZjUUM
Y
g
Z
hMbO
T
hMO
/++/0$%(&2B30+
LJ92%eA.'AC2--ToTYzgGH%82%eA.'AC2-- (A-'+, (BE3
%|66E-!
Ii
LJ
Yt
TY
TV
Ta
Tq
TQ
Tu
TP
Tt
Tb
T
T
T;
T]
Ty
T
Y
V
a
q
Q
u
P
Y
V
a
q
Q
u
P
t
T
{
z
r f
K
g
L
YP
\
z
zr f
w
]
Z
r
\
Ii
LJ
t
b
Y
Vb
]
y
YT
Y
YY
YV
Ya
Yq
YQ
Yu
YP
Yb
Y
Y;
Y;
Yy
VT
V
VY
VV
Va
Vq
VQ
;
VP
Vt
]TdVP
]Td;
]TdqY
]TdqV
]Tda
]Tdau
]Tday
]TdaP
]TdqT
]Tdat
]Tdq
]Tda;
aqdq
hLz
J
J
M
j
U
z
O
]
hMUM
J
i
f
[
d
_
o
ZjUM
J
hMO
J
hMbO
J
f
ZjUbO
J
ZjUO
J
JO
hMbLK
IL[
]
J
\bLK
;LK
bLK
j\
j;
ZjUbLK
v[hLz
J
Yt
\
J
b
;
y
^
I
x
h
k
]
J
c
v
W
J
J
J
J
J
J
J
Ii
LJ
au
a
ay
]TdVq
aP
a
qT
qY
]TdVu
at
a;
q
qV
ab
a]
]Td
T
V
V
V;
V]
Vy
aT
a
aY
aV
aa
;t
;b
YbdVu
aQ
;d]Tdaqd]Tdqdt;
xg Ju
xg Ja
xg J
xg Jo
xg JP
xg Jq
xg JY
xg JT
xg J
xg Jt
xg JQ
xg JV
xg J_
xg J
xg J
xg J]
]
y
yY
yV
ya
yq
yQ
yu
yP
yt
yT
y
yY
LOOhLz
VT
\
IL[
hMbLK
]
J
xg Jo
\bLK
;LK
bLK
xg J
j\
ZjUbLK
j;LK
;O
xg J
xg J
xg J]
]
! !"
V
# $
L@12613/-M
VY
%
W*&XE .@"3>ME$"2
!& '(-.,+,(4 ",!-,+B09*'?5 + O L 4?0 aq y
L
13467<*
)'+459a-.,+/0+#!& $3*2,0
TT
L[[ [
L[[L [f
T{Wd{WYd
h
WLJ[
L[[ ['(PfGH 2/057-. '("+')'+43!(&
+32Y!GV@"
Z [ \ A 5 4 :
=@#1"3O23$0
?MM$]>VM@7>M!@#
i i i
J
TT{YTTdT{YaTTdT{aPTTd
{tQTT
L
J
i i
g
TT{vL gdT{JJd{]
i
L
T{
Lfd{Y
Lf
i i LJO
jU
T{uf
d{Pf
4
VV
+32Y!GV@"
T
Y
V
a
q
Q
u
+32Y!GV@"
T
Y
V
a
q
Q
u
Y>G@
;O O L
J
;O J
Jg
r O
jJj
jJL
;O O
j
OJ
O L
J
;
Jg
Z
j
J L
ZJO
j
OJ
5
Y>G@
; Jg
L
gL
y [
jL
zJ
r
[ULOJ
jj
[g
r
[
UMj
[g
r[L
=@#1"3O23$0
' BS+79r'(,+%5(4 2%5
' BS+79;Z'(,+%5(4 2%5
' Z%5(4 6+,hLKIjU
' BS+79;'(,+%5(4 2%5
-,BS+7%|66E-! 9r
-,BS+7%|66E-! 9;Z
-,BS+7%|66E-! 9Z
-,BS+7%|66E-! 9;
=@#1"3O23$0
T{vLJ d{'(9* '?5A*'0+$3*
T{vLLd{]L
T{vLLd{]L
T{vLLd{]L
T{vL zd{ z
' r
[fMM"0+
' B09*'?5BR6
A
Va
T
U
L[[L
[f
T{Wd{WYd
h
U
\
TY
L[[L
[f
T{Wd{WYd
h
U
[
TV
L[[L
[f
T{Wd{WYd
h
WLJ[
Z
,+9(41%2,'134<* (6& 7/*9(41%2,'5!,NF7 ( %8 LMK LOO
1%2,'67/*4/"6BS+79B+4B09*'?54?0B' # A (67B+'+S/"6B-$3*"0+'(9*'?5)'0
9*+'+),.39*X.3A5+3,+B09*'?5)$'0
Vq
!"
(,".`,( +)H 6( 7 +D ,+B09*'?5, + OL,+9*+B! +PYqT\bZr134/GH
B+'+S D+$3*134,+B00+/0+#$%4!L
LOLJZj
9PYqT
L[[
L
LWL2/0257L67'(6( B. /C ( ,(4 "9*4?30 "* 4,!u/!"13467
B+'+S9*+SH(6.B/C)50+(&$3*134,+<*D+B!
) L 9 LO
JorfL B0" bJJ
{TiVMPB0"WY{TiYMP0+)50+(6& 7<*
%8
bJJ
134<*)5!,,+9(41%2,'2-- LMK
LOO !& 675*+4 # ,!-,+(4,<* 2/0B. 6( 7$3*A.' 9H& '+,R "+'R",+ +D + "' &! 4!
B+'+S,D+)30+"+'R",+B09*'?5$3*'+,,"0+tQTTf
(,3*"413467'(+457(433!(&
(6B. /C/"! ( ,!- Y !& 67 +D )*+ $( 3*B40+3*"4,! ! +D +%8 Z
fMMo
[ ULOJ
j j
BD+)!-.6B. /C/"! ( 257%8
fO j
BD+)!-(6B.
/C/"! ( Y,6+,!& '!4!67S?,<*%8(6B. /C ,( +D )3 JZ 9,+B09*'?5(,3*"4134f
( u9(6B. /C/"! ( ah
L
LOj
67%8/!",D+)3"0+(6B. /C/"! ( ,!-Y!& 67 +D )*+ (
7$S*+67<*,D+)3 JZ /*)*f('& ( +0 %8
0+/0+# (B+'+S67B0$%A,D+)3 JZ !&'(3!(&
+>!BD>2@
VTT
YTT
YaTT
tQTT
tYTT
qYTT
7>M!@
VPa
tQ
aP
Y
Q
^
0+/0+#/+++6D+"F$3*6+,B?/
3!!& S*+/*,+,D+)3"+'R",+B09*'?5%8tQTTf
,R67/* +D /+'9!& /3!/0$%(&
VQ
,D+)30+)*f ( u9(6B. /C/"! ( a%8
B00+Y257T$%4!(6B. /C/"! ( 257Y/+'5D+3!
0+3.'f ( u9(6B. /C/"! ( a
Vu
&'
+! CB()CA. !,NC,(4/.
6+,'()5+4=|,C<!
( <*+ ;brb /!")H # 3!!& S*+/*,+ 6( 7%5(4 2%5?%2-9;brb!& 1%2,''C67/*$%2,*$9=|,C<! ,E #=|,C<! ( <*+'!S*+=|,C<! )50+
!& 4S? ,/"6B-"+'S? ,/* '+25* " ,R 6 7 D+ )* /*B( 4 "5+/"6B-"+'S?,/*9
=|,C<! )50+!& )'0(,!& )H
( 9>
9U8
L[2MD]:B]I[
@+N+ !" # $%+$'0B+'+S (67%!-%E2,*$9 1B*+9@+N+!& # $3* <0
<.399*'?5 ; rg
@+N+/0+ # 134 "! $%'!,67'(9* '?5
j d yOL
j L
d
U d
jd LLO
'+)* 2/0S+* +/*,+/!"2%<.3A.sN <0 S*++/*,+<*
L[Oiv[f)/*,+,.-A.,3! cd 7+-B'./. +67B*+/!"2%pA+7 ( +D ,+
,R-0+)50+(&$'0$3* +$'0B+'+SD+0+)50+(&'+ D+,+D+"F/0+ # 134/$3* <0 +$'0
B+'+SJM
/!"2%L
L
dL
L
Y257j
9H& '+25*" +D ,+D+"F134<*
VP
( <*+,!-;brb!&#$"*3*"4,!%8)0"43(4",!
(4,"0+ $3* GH,+"' ;brb ,!-=|,C<! (&+(4,"0+
,6+,!&
25*"+67B+'+SG0;brb ( 4?0 fA %e,!$'0)*=| ,C<! 6+, ( '+ +D "+'B(4)+4)*
,!-;brb!&,+G0;brb6+,1%2,'B0"#2--(&+(4,"0+
+B+'+S
=>?4B11
891:
!+- .
%%
B''E/". +0 /*,+9(41%2,' ( +D ,+"+3
JLK 9H& '+-6)5+4 #
JLK 1342/057
JLK67'(9+3 +0 ,!257%+,:9H& '+F/D+2)03-6,R$3*' "+3BR625*")*5-
JLK)50+
(& &. 134D+ +p+,)5!,3.',0 6( 79(4
JLK'+%3 -! A )*)*+63?)'3.'
891:
!+=>?9G3=[@^[
,R-)*+63.'
MM A
)*+/0+ 6( 7"+3
( 4?)0 5! JLK 6( 7"+3 %8 b g 9+3 +0 6D+"
/D+2)0'E'-G*+49
JLK
Ji
_<1X^>G3=[@^[]I[1B
9(4JLK
; KA
5-
JLK
;OA
Vt
891:
%%
67,2--)*2/057
JLK%8f
@=B. %,\+ C1`
=>?9I>3K
MM,R-)*+63.' ( 4?)0 5!
JLK!& #
/D+2)0'E'-G*+49
JLK
1C1>K @ %,\+ C:3_<1X^>A.B3K4aBI[?4
; KA 9(4JLK
;OA 5-
JLK
?%/$%(2& B3)*)RSH"+'2/,/0+7)"0+,+9(41%2,'134<*"`. ( &! Y9*+/*
aT
-
%8B0"
O
%7,-3*"4YB0")5!,
%8/!"%7,+s)B*+f9H
)( H
b6+
%8EFB'-!/.9
/0+#'+<*+$3*
(,134$'0/* D+,+2,*$9 LJ ,0+ GHS*+%(4- (4-,!-LJ O O
j j 25*",R5*+4
,!-,+D++=|,C<! 6+,1%2,')H $%<*(,1%2,')H !
,+D++ O
$%<*+!& +B+'+S
$'0/* 9*+$%2,*$9LJ9O
3.'54
BE%O
67'(EFB'-!/.)',!-O
(%8
E,
40+2/0+6'("+'B+'+SA.' /.'9H& '+$3*
$ '0
+B+'+S (67 D+,+B*+; g/+' (/*,+$3* <0++6B*+J g (
,R-A.,!3cdB'./.$"*$3*,6+,!&+4!B+'+SD+'!$%<*,!-,+D+"F2--%,/. !"$%
$3*<0
!-0/!b6/ c %5-!6O
/!"40+,+D+"F)!"9*
"+'B+'+S,+<* L)=|,C<!2--(&+(4,"0+
'!B+'+S
+D + 2( /,/0+,!$3* &! # ( %8 )'+4)=|,C<! 3(4",! 134'!67A.6+F+6+,
J) ["0+'!"+'67 +D +40+$<0
a
1%2,'67?"* +0 /*<*=| ,C<! 31343?6+,6D+" [ B( 0 )*,-! =|,C<! (& ,+9(4
=|,C<! ?%2--(& +(4,"0+
aY
%
<FF
%*%+ .- G/ 0/$":#
H
. # $*;%I99;;
.G"$
"%.+ -,
$;$$":#
H
#%+ # J%
$#,
K%0(;#% / L?M%I99;;
0#.
!& "5++/*,+9(4L[[
+67/*<*%? 2--3!(& 2/0
!& $3*,+D )3".`,( +)'0,+9(4 L[[
134<* D+)*+ L[[
/( * ,+ 134
1%2,'67S"0+9*"+' &! )'3 ( 4?)0 5!$%66-- !3%8L[[
!"#"$ !%&'()#"
+67/* +D ,+%7,+s/!"2% &! )'3 6( 7<*$"* B( "0 /*91%2,')M
L
2/0
+B+'+S 6( 7%7,+s/!"2%F/D+2)031%2,',R$3*<0
!"
#$
aV
67 D+)*1%2,'6<0,"*+T/!"!,N-625*"A.'ACD+"0+IOOL,'+<.39"+
fgM
! S*+=|,C<! !& +D ,+2,*$90+/!"2%3!,50+",R67 +D )*0+9/!"2%/*p-!-%5(4 2%5$%3e"4GH 67
5*+4# ,!-".`,( +B0 L
9/!"2%$%4!=|,C<! 2/040+$,R/+'".`,( +($& '0$3*,(4 "9*7$,!-/!"
2%L
,+ (+B+'+SB0A++'./C2--(&$3*134$'0/*<*L
D+)*1%2,'!&9(4$3*0+49H&3?
$'0G-! G*257531,+B 6( 7,.39*X.3A5+31%2,' 6+,,+<*L
X.3".`( ,+B0A++'./C
2-- ZM
(&1%2,'9+672 -$'0'(7$%5(42%5$%6+,1%2,' (B0A++'./C2--%,/.
B0" /( +0 ,!B0"9,+%7,+s=|,C<! +0 !& 3!/!"40+
'///01-
'/
#
"2 3
//2
4
& 5/2 5/*2
$
'///01-
#
- 0-
0
0
4
&0 5/*0
$
10
#
% 0
g67'(0+ +0 ,!-0+ =
( | ,C<!
B0,5!-'+ ! +67'=|,C<! %80+ )( 0+/!"59 2/0
+,5!-,!=|,C<! ( Z
fgZM
67S?,'%8/!"2%'!67 +D /!")'%8/!"2% '( !
,5!-'+<0/!"40+=|,C<!
i,R67 +D /!")'%8/!"2%i +D )*' +,D+)3
i{
TT/!"2%i,R'( +0 %8TT/+'$%3e"4
4 5 2
"5++676)0"4"+'6D++'!,<*=| ,C<! [ OOL 25767<*=|,C<! M ' 67
%54)0"4"+'6D+!& 2,07--2/0!& 67'( xgKLJ)'0 ( <* +D )*+ ( &( 4?0 pA+7!
K
257JO1%2,'/0$%(& %8/!"40+".`,( +<*+zgKLJ &! B(&
#
%7
%4
-
0
4
)7
%
- )
8"9
0 )
aq
/4
/89-
/0
$
aQ