Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

v17i106: nethack31 - display oriented dungeons & dragons (Ver. 3.1), Patch2ee/33

1 view
Skip to first unread message

Bill Randle

unread,
Jun 10, 1993, 8:19:46 PM6/10/93
to
Submitted-by: izc...@linc.cis.upenn.edu (Izchak Miller)
Posting-number: Volume 17, Issue 106
Archive-name: nethack31/Patch2ee
Patch-To: nethack31: Volume 16, Issue 1-116
Environment: Amiga, Atari, Mac, MS-DOS, Windows-NT, OS2, Unix, VMS, X11

#! /bin/sh
# This is a shell archive. Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file". To overwrite existing
# files, type "sh file -c". You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g.. If this archive is complete, you
# will see the following message at the end:
# "End of archive 31 (of 33)."
# Contents: sys/amiga/wbwin.uu sys/mac/mttymain.c sys/msdos/video.c
# Wrapped by billr@saab on Thu Jun 10 16:55:08 1993
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'sys/amiga/wbwin.uu' -a "${1}" != "-c" ; then
echo shar: Renaming existing file \"'sys/amiga/wbwin.uu'\" to \"'sys/amiga/wbwin.uu.orig'\"
mv -f 'sys/amiga/wbwin.uu' 'sys/amiga/wbwin.uu.orig'
fi
echo shar: Extracting \"'sys/amiga/wbwin.uu'\" \(30237 characters\)
sed "s/^X//" >'sys/amiga/wbwin.uu' <<'END_OF_FILE'
Xbegin 664 wbwin.pw
XM4&]W97)7:6YD;W=S('8R+C5C(*DQ.3@W+"`Q.3@X(&)Y($E.3U9!5%)/3DE#
XM4RP@24Y#+B`@("`@("`@("`@("`@("`@("`@("`@```"K`````E``8#_````
XM`0`````!``````AW8G=I;BYC``?//V@``````H``R``"``*````/``````?)
XMP`````````````````(````73F5T2&%C:R!7;W)K0F5N8V@@5C,N,0`````!
XM``````$`````#)"0D```(/#P\`!@L`````L``A`_``"'>@"J`%#_____!\]>
XM$`````````````````````````````('RTA````````!```"`"@`#P(U`)0`
XM!0`%_____P```!Y396QE8W0@4V%V960@1V%M92!O<B!.97<@1V%M90`'SUU0
XM``7_^?_F``8`*("#``,'SS,P````````````````!\]'(``$!\](Z/____\#
XM```%!\]=-````````````AP```(<``<````'```````````"$P`"````````
XM``````````````$#__________\````*`"@`BP?+2L@'RTL`!\\Q0`?/1V`'
XMSS'8!\\V:`````=38W)O;&P``````0`````!``````I'04130U)/3$P`````
XM`0`````!````````!0`,_^8`"@`C``,``0?/26@`````!\]=J```````````
XM``4'SUW(_____P$```4'SUV,```````````"'````AP`"P````L`````!\])
XM:/__``L"```"!\]%^``````````(``````(V```#``$```8``0`````'STJ8
XM``````````,@(``````(`",``0?/2P`'STNX!\],Z`?/3E@'SUWP!\]>````
XM``A-97-S86=E``````$``````0`````#+3$``````0`````!``?/7C`!$```
XM````!P``!\]>0`?/\Z@````(4')O:F5C=``'SUZ(!\]>F!!(!\]>8``````0
XM``?/\:@``````0(#`0```````````,@`"```````````````!4AE;'``````
XM`0`'SV(8!\]J6!!!!\_QR``````0``?/\?```````0(#`0`````````(`,@`
XM"```````````````!D%B;W5T``````$`!\_R.`?/\E`04P?/\A``````$``'
XMS_)@``````$"`P$`````````(`"X``@```````````````M4;W`@4V-O<F5S
XM``````$`!\_RJ`?/\K@04@?/\H``````$``'S_+(``````$"`P$`````````
XM&`"X``@```````````````A296-O=F5R``````$`!\_S$`?/\S`010?/\N@`
XM````$``'S_-```````$"`P$`````````(`"X``@``````````````!-%9&ET
XM($-O;F9I9W5R871I;VX``````0`'S_.(!\_SF!!1!\_S8``````0````````
XM`````0(#`0`````````@`,@`"```````````````!5%U:70``````0`'S_/(
XM`1``1@````<```?/\]@`````````!4=A;64`!\_T(`?/]#`020?/\_@`````
XM$``'S_1```````$"`P$````````````(``@```````````````5);F9O````
XM``$`!\_TB`?/]*`00P?/]&``````$``'S_2P``````$"`P$`````````"`"8
XM``@```````````````I#;W!Y($EN9F\``````0`'S_3X!\_U"!!$!\_TT```
XM```0``?/]1@``````0(#`0`````````@`)@`"```````````````"$1I<V-A
XM<F0``````0`'S_5@!\_U<!!.!\_U.``````0`````````````0(#`0``````
XM```8`)@`"```````````````!U)E;F%M90`````!```"$`X`(`)```4`!?__
XM__\`````!]`!R````````````````````````P?/^_@```````=1=65S=%\`
XM``,`K@`\`2H`/``%``7_____````&DYE=$AA8VL@5V]R:T)E;F-H(%)E<75E
XM<W0`!\__R``,`"L`5P`+`````P`!!\_^W``````'S_\(``````````````?/
XM_SC_____`@``!0?/_NP```````````!8````6``,````#````````````P`!
XM```@``(`````!\__*``````````$665S``````H````!!\__8`?/_W`'S_^`
XM!\__D`?/_Z@'S_^X````!%EE<P`````!``````$`````#$=!1%%515-46453
XM``````$``````0`'T`#@`,<`*P!7``L````#``$'S__T``````?0`"``````
XM```````$!]``4/____\"```%!]``!````````````%@```!8``P````,````
XM```````#``$``",``@`````'T`!```````````-.;P`````*`````0?0`'@'
XMT`"(!]``F`?0`*@'T`#`!]``T`````-.;P`````!``````$`````"T=!1%%5
XM15-43D\``````0`````!````````#``0`1(`%0`#``,``0?0`0P`````````
XM``````````````4'T`$X_____P,```4'T`$<```````````!$P```1,`%@``
XM`!8```````````````@``P``!]`!8`?0`7@'T`&(!]`!F`?0`:@'T`&X````
XM"4)O<F1E<G,R``````$``````0`````#+3$``````0`````!``$``0``.P`5
XM``````?0`>@`````````%U-U<F4@>6]U('=A;G0@=&\@455)5#\```(0#@`E
XMAD``!0`%_____P`````'T$B@```````````````````````J!\_ZX```````
XM"4]P=&EO;G-?```!`!T`)P)1`*$`!0`%_____P````U%9&ET($]P=&EO;G,`
XM!]`'4`"$`#<`/@`*```!`P`!!]`%I``````'T`70``````````````?0!?#_
XM____`P``!0?0!;0````````````_````/P`+````"P```````````0`!```+
XM``(`````!\_[Z``````````&0V]L;W(`````"@```0$'T`;H!]`&^`?0!P@'
XMT`<8!]`',`?0!T`````!``````$``````0`````*1T%$3T-/3$]2``````$`
XM`````0`'T`B``,H`-P!-``H`@`$#``$'T`=\``````?0!Z@`````````````
XM!]`'V/____\#```%!]`'C````````````$X```!.``L````+```````````!
XM``$```D``@`````'T`?(``````````A#;VYF:7)M``````H```$!!]`(``?0
XM"!`'T`@@!]`(,`?0"$@'T`AP`````0`````!``````$`````#$=!1$]#3TY&
XM25)-``````$``````0`'T`F@`'L`#0!$``H```$#``$'T`BL``````?0"-@`
XM````````````!]`)$/____\#```%!]`(O````````````$4```!%``L````+
XM```````````!``$```(``@`````'T`CX``````````E$:7-C;&]S90`````*
XM```!`0?0"3@'T`E(!]`)6`?0"6@'T`F`!]`)D`````$``````0`````!````
XM``U'041/1$E30TQ/4T4``````0`````!``?0"K@`[P`;`#T`"@```0,``0?0
XM"<P`````!]`)^`````````````8'T`HH_____P,```4'T`G<````````````
XM/@```#X`"P````L```````````$``0``!P`"``````?0"A@`````````!T9I
XM>&EN=@`````*```!`0?0"E`'T`I@!]`*<`?0"H`'T`J8!]`*J`````$`````
XM`0`````!``````M'041/1DE824Y6``````$``````0`'T`O0`*\`&P`Y``H`
XM``$#``$'T`KD``````?0"Q`````````````'!]`+0/____\#```%!]`*]```
XM`````````#H````Z``L````+```````````!``$```D``@`````'T`LP````
XM``````9&;'5S:``````*```!`0?0"V@'T`MX!]`+B`?0"Y@'T`NP!]`+P```
XM``$``````0`````!``````I'041/1DQ54T@``````0`````!``?0#.@`?0`;
XM`"H`"@```0,``0?0"_P`````!]`,*`````````````@'T`Q8_____P,```4'
XMT`P,````````````*P```"L`"P````L```````````$``0``!0`"``````?0
XM#$@`````````!4AE;'``````"@```0$'T`R`!]`,D`?0#*`'T`RP!]`,R`?0
XM#-@````!``````$``````0`````)1T%$3TA%3%```````0`````!``?0#@``
XM?0`I`#T`"@```0,``0?0#10`````!]`-0``````````````'T`UP_____P,`
XM``4'T`TD````````````/@```#X`"P````L```````````$``0```@`"````
XM``?0#6``````````"$EG;FEN='(`````"@```0$'T`V8!]`-J`?0#;@'T`W(
XM!]`-X`?0#?`````!``````$``````0`````,1T%$3TE'3DE.5%(``````0``
XM```!``?0#Q@`20`;`"H`"@```0,``0?0#BP`````!]`.6`````````````H'
XMT`Z(_____P,```4'T`X\````````````*P```"L`"P````L```````````$`
XM`0``!@`"``````?0#G@`````````!4YE=W,`````"@```0$'T`ZP!]`.P`?0
XM#M`'T`[@!]`.^`?0#P@````!``````$``````0`````)1T%$3TY%5U,`````
XM`0`````!``?0$#@`PP`I`%4`"@"``0,``0?0#T0`````!]`/<```````````
XM```'T`^H_____P,```4'T`]4````````````5@```%8`"P````L`````````
XM``$``0```P`"``````?0#Y``````````"TYU;6)E<B!0860`````"@```0$'
XMT`_0!]`/X`?0#_`'T!``!]`0&`?0$"@````!``````$``````0`````.1T%$
XM3TY534)%4E!!1``````!``````$`!]`2:``)`"D`;``*```!`P`!!]`09```
XM```'T!"0``````````````?0$,C_____`P``!0?0$'0```````````!M````
XM;0`+````"P```````````0`!```%``(`````!]`0L``````````-075T;R!0
XM:6-K(%5P``````H```$!!]`2``?0$A`'T!(@!]`2,`?0$D@'T!)8`````0``
XM```!``````$`````"T=!1$]024-+55```````0`````!``?0$X@`R0`-`&\`
XM"@```0,``0?0$I0`````!]`2P``````````````'T!+X_____P,```4'T!*D
XM````````````<````'``"P````L```````````$``0```P`"``````?0$N``
XM````````#E)E<W0@3VX@4W!A8V4`````"@```0$'T!,@!]`3,`?0$T`'T!-0
XM!]`3:`?0$W@````!``````$``````0`````01T%$3U)%4U1/3E-004-%````
XM``$``````0`'T!2@`3\`#0`V``H```$#``$'T!.T``````?0$^``````````
XM````!]`4$/____\#```%!]`3Q````````````#<````W``L````+````````
XM```!``$```0``@`````'T!0```````````=3:6QE;G0`````"@```0$'T!0X
XM!]`42`?0%%@'T!1H!]`4@`?0%)`````!``````$``````0`````+1T%$3U-)
XM3$5.5``````!``````$`!]`5P`$@`"D`10`*`(`!`P`!!]`4S``````'T!3X
XM``````````````?0%3#_____`P``!0?0%-P```````````!&````1@`+````
XM"P```````````0`!```"``(`````!]`5&``````````)4V%F92!0970`````
XM"@```0$'T!58!]`5:`?0%7@'T!6(!]`5H`?0%;`````!``````$``````0``
XM```,1T%$3U-!1D50150``````0`````!``?0%_`!;@`I`$X`"@"``0,``0?0
XM%>P`````!]`6&``````````````'T!90_____P,```4'T!7\````````````
XM3P```$\`"P````L```````````$``0```P`"``````?0%C@`````````"E-O
XM<G0@4&%C:P`````*```!`0?0%G@'T!:(!]`6F`?0%J@'T!;`!]`6T`````$`
XM`````0`````!``````U'041/4T]25%!!0TL``````0`````!``?0&.@"&``-
XM`"\`"@```0,``0?0&!P`````!]`6X``````````````'T!A8_____P,```4'
XMT!@L````````````,````#``"P````L```````````$``0```P`"``````?0
XM&$@`````````!E-O=6YD``````H```$!!]`8@`?0&)`'T!B@!]`8L`?0&,@'
XMT!C8`````0`````!``````$`````"D=!1$]33U5.1``````!``````$`!]`:
XM"`'$`"D`30`*```!`P`!!]`9%``````'T!E```````````````?0&7C_____
XM`P``!0?0&20```````````!.````3@`+````"P```````````0`!```#``(`
XM````!]`98``````````*4W1A;F0@3W5T``````H```$!!]`9H`?0&;`'T!G`
XM!]`9T`?0&>@'T!GX`````0`````!``````$`````#4=!1$]35$%.1$]55```
XM```!``````$`!]`<```)`!L`.0`*`(`!`P`!!]`:-``````'T!I@````````
XM``````?0&I#_____`P``!0?0&D0````````````Z````.@`+````"P``````
XM`````0`!```+``(`````!]`:@``````````%5&EM90`````*```!`0?0&K@'
XMT!K(!]`:V`?0&N@'T!O@!]`;\`````$``````0`````!``````E'041/5$E-
XM10`````!``````$`!]`=(`%\``T`50`*```!`P`!!]`<+``````'T!Q8````
XM``````````?0')#_____`P``!0?0'#P```````````!6````5@`+````"P``
XM`````````0`!```"``(`````!]`<>``````````+5&]M8B!3=&]N90`````*
XM```!`0?0'+@'T!S(!]`<V`?0'.@'T!T`!]`=$`````$``````0`````!````
XM``Y'041/5$]-0E-43TY%``````$``````0`'T"`P`98`&P`\``H```$#``$'
XMT!U,``````?0'7@````````````5!]`=J/____\#```%!]`=7```````````
XM`#T````]``L````+```````````!``$```(``@`````'T!V8``````````A6
XM97)B;W-E``````H```$!!]`=T`?0'>`'T!WP!]`?^`?0(!`'T"`@`````0``
XM```!``````$`````#$=!1$]615)"3U-%``````$``````0`'T"&@`&$`10"4
XM``D```(#``0'T"!<````````````````!]`@V```!]`A"/____\#```%!]`@
XM;````````````)4```"5``H````*``````````````!&`"`@("`@("`@("`@
XM("`@````9&5V<SIP=S(M8V]N9FEG=7)A=&EO;@!396QE8W0@=&AE(&=A9&=E
XM="!T;R!M;W9E+@!4`````0H```(!!]`A,`?0(4@'T"%8!]`A:`?0(8`'T"&0
XM````"E!A8VM/<F1E<@`````!``````$`````#D=!1$]004-+3U)$15(`````
XM`0`````!``?0(P@`80!2`)0`"0```@,`!`?0(<P````````````````'T")(
XM```'T")X_____P,```4'T"'<````````````E0```)4`"@````H`````````
XM`````$8``"`@("`@("`@("`@("````!D979S.G!W,BUC;VYF:6=U<F%T:6]N
XM`%-E;&5C="!T:&4@9V%D9V5T('1O(&UO=F4N`%0````!"@```@$'T"*@!]`B
XML`?0(L`'T"+0!]`BZ`?0(O@````(0V%T3F%M90`````!``````$`````#$=!
XM1$]#051.04U%``````$``````0`'T"1P`&$`7P"4``D```(#``0'T",T````
XM````````````!]`CL```!]`CX/____\#```%!]`C1````````````)4```"5
XM``H````*``````````````!&`"`@("`@("`@("`@("`@````9&5V<SIP=S(M
XM8V]N9FEG=7)A=&EO;@!396QE8W0@=&AE(&=A9&=E="!T;R!M;W9E+@!4````
XM`0H```(!!]`D"`?0)!@'T"0H!]`D.`?0)%`'T"1@````"$1O9TYA;64`````
XM`0`````!``````Q'041/1$]'3D%-10`````!``````$`!]`EV`!A`&P`E``)
XM```"`P`$!]`DG`````````````````?0)1@```?0)4C_____`P``!0?0)*P`
XM``````````"5````E0`*````"@``````````````1@`@("`@("`@("`@("`@
XM(````&1E=G,Z<'<R+6-O;F9I9W5R871I;VX`4V5L96-T('1H92!G861G970@
XM=&\@;6]V92X`5`````$*```"`0?0)7`'T"6`!]`ED`?0):`'T"6X!]`ER```
XM``9&<G5I=``````!``````$`````"D=!1$]&4E5)5``````!``````$`!]`G
XM,`'9``T`-@`*```!`P`!!]`F!``````'T"8P``````````````?0)F#_____
XM`P``!0?0)A0````````````W````-P`+````"P```````````0`!```#``(`
XM````!]`F4``````````'1F5M86QE``````H```$!!]`FR`?0)M@'T";H!]`F
XM^`?0)Q`'T"<@`````0`````!``````$`````"T=!1$]&14U!3$4``````0``
XM```!``?0*)@`80!Y`)0`"0```@,`!`?0)UP````````````````'T"?8```'
XMT"@(_____P,```4'T"=L````````````E0```)4`"@````H`````````````
XM`$8`("`@("`@("`@("`@("````!D979S.G!W,BUC;VYF:6=U<F%T:6]N`%-E
XM;&5C="!T:&4@9V%D9V5T('1O(&UO=F4N`%0````!"@```@$'T"@P!]`H0`?0
XM*%`'T"A@!]`H>`?0*(@````(3V)J96-T<P`````!``````$`````#$=!1$]/
XM0DI%0U13``````$``````0`'T"FX`=D`&P!N``H```$#``$'T"C$``````?0
XM*/`````````````<!]`I*/____\#```%!]`HU````````````&\```!O``L`
XM```+```````````!``$```,``@`````'T"D0``````````Y!<VL@4V%V92!$
XM:7-K``````H```$!!]`I4`?0*6`'T"EP!]`I@`?0*9@'T"FH`````0`````!
XM``````$`````#$=!1$]!4TM3059%``````$``````0`'T"K0`A``DP`W``H`
XM```#``$'T"GD``````?0*A``````````````!]`J0/____\!```%!]`I]```
XM`````````#@````X``L````+```````````!``$```,``@`````'T"HP````
XM``````=#04Y#14P`````"@````$'T"IH!]`J>`?0*H@'T"J8!]`JL`?0*L``
XM```!``````$``````0`````+1T%$3T-!3D-%3``````!``````$`!]`KZ``-
XM`)(`-P`*`````P`!!]`J_``````'T"LH``````````````?0*UC_____`0``
XM!0?0*PP````````````X````.``+````"P```````````0`!```+``(`````
XM!]`K2``````````%3TM!60`````*`````0?0*X`'T"N0!]`KH`?0*[`'T"O(
XM!]`KV`````$``````0`````!``````E'041/3TM!60`````!``````$`!]`M
XM"``)`#<`<@`*`(`!`P`!!]`L%``````'T"Q```````````````?0+'C_____
XM`P``!0?0+"0```````````!S````<P`+````"P```````````0`!```%``(`
XM````!]`L8``````````.2&EG:&QI9VAT(%!E=``````*```!`0?0+*`'T"RP
XM!]`LP`?0+-`'T"SH!]`L^`````$``````0`````!``````Y'041/2$E,251%
XM4$54``````$``````0`'T"X@`2``-P`[``H`@`$#``$'T"TT``````?0+6``
XM````````````!]`MD/____\#```%!]`M1````````````#P````\``L````+
XM```````````!``$```4``@`````'T"V```````````=,96=A8WD`````"@"`
XM`0$'T"VX!]`MR`?0+=@'T"WH!]`N``?0+A`````!``````$``````0`````+
XM1T%$3TQ%1T%#60`````!``````$`!]`O0``)``T`:``*```!`P`!!]`N3```
XM```'T"YX``````````````?0+K#_____`P``!0?0+EP```````````!I````
XM:0`+````"P```````````0`!```%``(`````!]`NF``````````-3&ET($-O
XM<G)I9&]R``````H```$!!]`NV`?0+N@'T"[X!]`O"`?0+R`'T"\P`````0``
XM```!``````$`````$$=!1$],251#3U)2241/4@`````!``````$`!]`P8`%E
XM`#<`?P`*`(`!`P`!!]`O;``````'T"^8``````````````?0+]#_____`P``
XM!0?0+WP```````````"`````@``+````"P```````````0`!```%``(`````
XM!]`ON``````````04VAO=R!%>'!E<FEE;F-E``````H```$!!]`O^`?0,`@'
XMT#`8!]`P*`?0,$`'T#!0`````0`````!``````$`````#$=!1$]32$]715A0
XM``````$``````0`'T#)8`>T`-P!:``H```$#``$'T#",``````?0,+@`````
XM````````!]`QV/____\#```%!]`PG````````````%L```!;``L````+````
XM```````!``$```4``@`````'T##8``````````M3:&]W(%-C;W)E``````H`
XM``$!!]`P\`?0,@`'T#(0!]`R(`?0,C@'T#)(`````0`````!``````$`````
XM#D=!1$]32$]74T-/4D4``````0`````!``?0-%`!-0`;`%H`"@```0,``0?0
XM,H0`````!]`RL````````````"0'T#/@_____P,```4'T#*4````````````
XM6P```%L`"P````L```````````$``0``!0`"``````?0,M``````````"T-H
XM96-K<&]I;G0`````"@"``0$'T#+H!]`R^`?0-`@'T#08!]`T,`?0-$`````!
XM``````$``````0`````-1T%$3T-(2U!/24Y4``````$``````0`'T#:0`&$`
XMA@"4``D```(#``0'T#1\````````````````!]`UX```!]`V$/____\#```%
XM!]`TC````````````)4```"5``H````*``````````````!&`"`@("`@("`@
XM("`@("`@````9&5V<SIP=S(M8V]N9FEG=7)A=&EO;@!396QE8W0@=&AE(&=A
XM9&=E="!T;R!M;W9E+@!4`````0H```(!!]`T^`?0-C@'T#9(!]`V6`?0-G`'
XMT#:`````!4YA;64``````0`````!``````E'041/3D%-10`````!``````$`
XM!]`Z"`&S`$4`E``)```"`P`$!]`VO`````````````````?0.%````?0.(#_
XM____`P``!0?0-LP```````````"5````E0`*````"@``````````````1@`@
XM("`@("`@("`@("`@(````&1E=G,Z<'<R+6-O;F9I9W5R871I;VX`4V5L96-T
XM('1H92!G861G970@=&\@;6]V92X`5`````$*```"`0?0-N@'T#BH!]`XN`?0
XM.,@'T#C@!]`X\`````Q0:6-K=7!4>7!E<P`````!``````$`````$$=!1$]0
XM24-+55!465!%4P`````!``````$`!]`\:`&S`%(`E``)```"`P`$!]`Z-```
XM``````````````?0.K````?0.N#_____`P``!0?0.D0```````````"5````
XME0`*````"@``````````````1@`@("`@("`@("`@("`@(````&1E=G,Z<'<R
XM+6-O;F9I9W5R871I;VX`4V5L96-T('1H92!G861G970@=&\@;6]V92X`5```
XM``$*```"`0?0/`@'T#F8!]`\(`?0/#`'T#Q(!]`\6`````M7:6YD;W=4>7!E
XM``````$``````0`````/1T%$3U=)3D1/5U194$4``````0`````!``?0/G@!
XMLP!?`)0`"0``"@,`!`?0/)0````````````````'T#S8```'T#W@_____P,`
XM``4'T#RD````````````E0```)4`"@````H```````````````\``````"`@
XM("`@("`@("````$*```*`0?0/@@'T#X@!]`^,`?0/D`'T#Y8!]`^:`````M-
XM<V=(:7-T;W)Y``````$``````0`````/1T%$3TU31TA)4U1/4ED``````0``
XM```!``?00@@!LP!L`)0`"0```@,`!`?0/J0````````````````'T#[0```'
XMT$!8_____P,```4'T#ZT````````````E0```)4`"@````H`````````````
XM`$8`("`@("`@("`@("`@("````!D979S.G!W,BUC;VYF:6=U<F%T:6]N`%-E
XM;&5C="!T:&4@9V%D9V5T('1O(&UO=F4N`%0````!"@```@$'T$"`!]!`D`?0
XM0*`'T$"P!]!`R`?00-@````(4&%L971T90`````!``````$`````#$=!1$]0
XM04Q%5%1%``````$``````0`'T$1``;,`>0"4``D```(#``0'T$(T````````
XM````````!]!"L```!]!"X/____\#```%!]!"1````````````)4```"5``H`
XM```*``````````````!&`"`@("`@("`@("`@("`@````9&5V<SIP=S(M8V]N
XM9FEG=7)A=&EO;@!396QE8W0@=&AE(&=A9&=E="!T;R!M;W9E+@!4`````0H`
XM``(!!]!`Z`?00/@'T$&8!]!$"`?01"`'T$0P````!E-C;W)E``````$`````
XM`0`````*1T%$3U-#3U)%``````$``````0`'T$:H`;,`A@"4``D```(#``0'
XMT$1L````````````````!]!&"```!]!&./____\#```%!]!$?```````````
XM`)4```"5``H````*``````````````!&`"`@("`@("`@("`@("`@````9&5V
XM<SIP=S(M8V]N9FEG=7)A=&EO;@!396QE8W0@=&AE(&=A9&=E="!T;R!M;W9E
XM+@!4`````0H```(!!]!$Z`?01/@'T$9@!]!&<`?01H@'T$:8````"%!E=%1Y
XM<&4``````0`````!``````Q'041/4$545%E010`````!``````$```````(8
XM`"D`+P`*`(`!`P`!!]!&U``````'T$?@``````````````?02!#_____`P``
XM!0?01N0````````````P````,``+````"P```````````0`!```(``(`````
XM!]!(```````````%3G5L;``````*```!`0?02#@'T$A(!]!(6`?02&@'T$B`
XM!]!(D`````$``````0`````!``````E'041/3E5,3``````!``````$``P`!
XM```'`$8`````!]!(P`?02-@````,4&%C:R!/<F1E<CH``P`!```7`%,`````
XM!]!)X`?02?@````*0V%T($YA;64Z``,``0``%P!@``````?02A@'T$HP````
XM"D1O9R!.86UE.@`#``$``"\`;0`````'T$CX!]!*4`````=&<G5I=#H``P`!
XM```?`'H`````!]!*<`?02H@````)3V)J96-T<SH``P`!```W`(<`````!]!*
XMJ`?02K@````&3F%M93H``P`!``&``'L`````!]!*V`?02N@````'4V-O<F4Z
XM``,``0`!<`!N``````?02^`'T$OX````"5!A;&5T=&4Z``,``0`!4`!4````
XM``?03!@'T$PP````#5=I;F1O=R!4>7!E.@`#``$``5``80`````'T$Q0!]!,
XM:`````U-<V<@2&ES=&]R>3H``P`!``%(`$<`````!]!,B`?03*`````.4&EC
XM:W5P(%1Y<&5S.@`#``$``6@`B``````'T$S```````````I0970@5'EP93H`
XM``(0#@`D`D``!0`%_____P`````'T&LP```````````````````````(!]!0
XM^```````!D-O;F9?```!`'X`/`&2`'(`!0`%_____P```!A%9&ET($=A;64@
XM0V]N9FEG=7)A=&EO;@`'T%Y(`%$`'`$W``D````#``0'T%J<````````````
XM````!]!:R```!]!<V/____\#```%!]!:K````````````3@```$X``H````*
XM``````````````#(`"`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
XM("`@("``````````````__\#`0(````````LK-0`+:Q8```````K5,P`````
XM!S@`*F]P````0@`J<`@`R0`/`&@`"`!2```````J;^(`````````````__\#
XM`0(````````LK-0`+;H(```````K5,P`````".@`*F^X````0@`J<%``R0`7
XM`&@`"`!2```````J<"H`````````````__\#`0(```````$*`````0?07@@'
XMT%+X!]!6*`?07B`'T%KX!]!>.`````M3=')(86-K9&ER``````$``````0``
XM```.1T%$4U122$%#2T1)4@`````!``````$`!]!A,`!1`"H!-P`)`````P`$
XM!]!>=`````````````````?07J````?07M#_____`P``!0?07H0`````````
XM``$X```!.``*````"@``````````````R``@("`@("`@("`@("`@("`@("`@
XM("`@("`@("`@("`@("`@("`@`````````````/__`P$"````````+*S4`"VL
XM6```````*U3,``````<X`"IO<````$(`*G`(`,D`#P!H``@`4@``````*F_B
XM`````````````/__`P$"````````+*S4`"VZ"```````*U3,``````CH`"IO
XMN````$(`*G!0`,D`%P!H``@`4@``````*G`J`````````````/__`P$"````
XM```!"@````$'T%[X!]!@V`?08.@'T&#X!]!A$`?082`````(4W1R4&5N<P``
XM```!``````$`````"T=!1%-44E!%3E,``````0`````!``?08Q@`40`.`38`
XM"0````,`!`?085P````````````````'T&)8```'T&*(_____P,```4'T&%L
XM```````````!-P```3<`"@````H``````````````,@`("`@("`@("`@("`@
XM("`@("`@("`@("`@("`@("`@("`@("`@(`````````````#__P,!`@``````
XM`"RLU``MK%@``````"M4S``````'.``J;W````!"`"IP"`#)``\`:``(`%(`
XM`````"IOX@````````````#__P,!`@```````"RLU``MN@@``````"M4S```
XM```(Z``J;[@```!"`"IP4`#)`!<`:``(`%(``````"IP*@````````````#_
XM_P,!`@```````0H````!!]!BL`?08L`'T&+0!]!BX`?08O@'T&,(````"%-T
XM<E!A=&@``````0`````!``````M'04135%)0051(``````$``````0`'T&4(
XM`%$`.`$W``D````#``0'T&-$````````````````!]!D0```!]!D</____\#
XM```%!]!C5````````````3@```$X``H````*``````````````#(`"`@("`@
XM("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("``````````````__\#
XM`0(````````LK-0`+:Q8```````K5,P`````!S@`*F]P````0@`J<`@`R0`/
XM`&@`"`!2```````J;^(`````````````__\#`0(````````LK-0`+;H(````
XM```K5,P`````".@`*F^X````0@`J<%``R0`7`&@`"`!2```````J<"H`````
XM````````__\#`0(```````$*`````0?09)@'T&2P!]!DP`?09-`'T&3H!]!D
XM^`````I3='),979E;',``````0`````!``````U'04135%),159%3%,`````
XM`0`````!``?09O``40!&`3<`"0````,`!`?0930````````````````'T&8P
XM```'T&9@_____P,```4'T&5$```````````!.````3@`"@````H`````````
XM`````,@`("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(```
XM``````````#__P,!`@```````"RLU``MK%@``````"M4S``````'.``J;W``
XM``!"`"IP"`#)``\`:``(`%(``````"IOX@````````````#__P,!`@``````
XM`"RLU``MN@@``````"M4S``````(Z``J;[@```!"`"IP4`#)`!<`:``(`%(`
XM`````"IP*@````````````#__P,!`@```````0H````!!]!FB`?09I@'T&:H
XM!]!FN`?09M`'T&;@````"%-T<E-A=F4``````0`````!``````M'04135%)3
XM059%``````$``````0`'T&BX`)<`9`#Q``D```(#``0'T&<<````````````
XM````!]!H"```!]!H./____\!```%!]!G+````````````/(```#R``H````*
XM```````````````R3F5T:&%C:SI.971(86-K+F-N9@`@("`@("`@("`@````
XM``9V`#D?^``XPFX```````````$*```"`0?09T@'T&A@!]!H<`?0:(`'T&B8
XM!]!HJ`````M#;VYF:6=.86UE``````$``````0`````,1T%$0T].1DY!344`
XM`````0`````!``?0:A@`"0!5`#,`"@````,``0?0:.0`````!]!I$```````
XM```````'T&E`_____P(```4'T&CT````````````-````#0`"P````L`````
XM``````$``0``"@`"``````?0:3``````````!4QO860`````"@````$'T&EH
XM!]!I>`?0:8@'T&GP!]!IF`?0:@@````!``````$``````0`````,1T%$0T].
XM1DQ/040``````0`````!````````20!5`#,`"@````,``0?0:D0`````!]!J
XM<``````````````'T&J@_____P(```4'T&I4````````````-````#0`"P``
XM``L```````````$``0``"@`"``````?0:I``````````!5-A=F4`````"@``
XM``$'T&K(!]!JV`?0:N@'T&KX!]!K$`?0:R`````!``````$``````0`````,
XM1T%$0T].1E-!5D4``````0`````!``,``0``)P`0``````?0:U`'T&M@````
XM!E!A=&@Z``,``0``#P`>``````?0:X`'T&N8````"4AA8VMD:7(Z``,``0``
XM)P`L``````?0:[@'T&O(````!E!E;G,Z``,``0``%P`Z``````?0:^@'T&OX
XM````"$QE=F5L<SH``P`!```'`$@`````!]!L&`?0;#`````*4V%V92!$:7(Z
XM``$``0``"@!E``````?0;%``````````$D-O;F9I9R!&:6QE($YA;64Z```"
XM$`X`)`)```4`!?____\``````````````````````````````````@?03-@`
XM``````53=')?```!`#<`/`(.`!\`!0`%_____P```!%3=')I;F<@4F5Q=65S
XM=&5R``?0M#@`30`/`;8`"@```@,`!`?06*0````````````````'T%C0```'
XMT%G@_____P,```4'T%BT```````````!MP```;<`"P````L`````````````
XM`&0`("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
XM("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@.`````!XJ@`IXD````!"
XM`"GBV`#4``\`&``````!"@```@$'T$SX!]!6>`?05O`'T%H(!]!L<`?0;/@`
XM```'4W1R:6YG``````$``````0`````#+3$``````0`````!````````"0`/
XM`#@`"@````,``0?0M&0`````!]"TD``````````````'T+7@_____P,```4'
XMT+1T````````````.0```#D`"P````L```````````,``0``!``"``````?0
XM</@`````````!T-A;F-E;``````*`````0?0M@@'T+88!]"V*`?0MC@'T+90
XM!]"V8`````$``````0`````!``````U'04135%)#04Y#14P``````0`````!
XM```"$`X`)`-```4`!?____\'T,\`````````````````````````````#`?/
XM,A@```````9);F9O7P```0`I`#,"+`!=``4`!?____\````11V%M92!);F9O
XM<FUA=&EO;@`'T+O@`%``'P'1``H```(#``0'T+=T``````?/^Y@`````!]!5
XM^```!]!7X/____\#```%!]"WA````````````=(```'2``L````+````````
XM```#``$`_[H``0`````'SS(H``````````E#;VUM96YT.@````!D````````
XM```'STL@````0@?/4-``R0`/`*``"`!2``````?/4*H`````````````__\#
XM`0(```````?1V?P'T>4@``````?0@?0````````'SU"`````0@``````R0`7
XM`*```````0H```(!!\_^,`?/_D`'T`A8!]!4Z`?05/@'T%@(````"$-O;6UE
XM;G0``````0`````!``````,M,0`````!``````$`!]"\J`!N``\`Q``+````
XM`P`$!]"\#``````'T+*X``````?0M+````?0N/C_____`P``!0?0O!P`````
XM``````#%````Q0`,````#````````````P`!`/^;``(`````!]"R@```````
XM```-4&QA>65R($YA;64Z`````&0```````````?/2R````!"!\]0T`#)``\`
XMH``(`%(`````!\]0J@````````````#__P,!`@``````!]'9_`?1Y2``````
XM!]"!]`````````?/4(````!"``````#)`!<`H```````"@````$'T++8!]"R
XMZ`?0M.`'T+>@!]"T\`?0MG`````'4&QA>65R``````$``````0`````*1T%$
XM4$Q.04U%``````$``````0`'T+XX`9(`#P"/``L``P`#``$'T+S4``````?0
XMN2``````````````!]"]L/____\#```%!]"\Y````````````)````"0``P`
XM```,```````````#``$`_ZL``@`````'T+V8``````````M#:&%R86-T97(Z
XM``````@``P``!]"]V`?0O>@'T+WX!]"^"`?0OA@'T+XH````!D-L87-S````
XM``$``````0`````#+3$``````0`````!``?0QK@`=``_`:T`"0````,`!`?0
XMOF0`````!]"^D``````'T+[(```'T,78_____P,```4'T+YT```````````!
XMK@```:X`"@````H```````````,``0#_D@`!``````?0OK``````````#%1O
XM;VP@5'EP97,Z`````,@`("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
XM("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@`",`$`$\`%$`````
XM`````````````````"Y>H````$(`+G1(````&`#8``@`5@``````+G0B````
XM`$,``````/__`P$"````````+Q;\`"\G^@``````+X+T````(8HX`"YS^```
XM`$(`+G8(````(`#8``@`4@``````+G1J`````````````````0H````!!]#&
XM``?0OO@'T,88!]#&*`?0QD`'T,90````"E1O;VQ4>7!E<P`````!``````$`
XM````#4=!1%1/3TQ465!%4P`````!``````$`!]#':`!A`#T`#0`&`````P`!
XM!]#&Y`````````````````````````?0QF#_____`P``!0?0QO0`````````
XM```.````#@`'````!P``````````````"@````$'T,:(!]#'$`?0QR`'T,<P
XM!]#'2`?0QU@````'5&]O;%5P``````$``````0`````*1T%$5$]/3%50````
XM``$``````0`'T,A8`&$`1``-``8````#``$'T,>4````````````````````
XM````!]#'P/____\#```%!]#'I`````````````X````.``<````'````````
XM```````*`````0?0Q^@'T,@`!]#($`?0R"`'T,@X!]#(2`````E4;V]L1&]W
XM;@`````!``````$`````#$=!1%1/3TQ$3U=.``````$``````0`'T,F(`8T`
XM+P"4``H````#``$'T,B$``````?0R+``````````````!]#(\/____\#```%
XM!]#(E````````````)4```"5``L````+```````````#``$```8``0`````'
XMT,C0`````````!)%9&ET($=A;64@3W!T:6]N<P`````2`````0?0R1@'T,DP
XM!]#)0`?0R5`'T,EH!]#)>`````E%9&ET3W!T<P`````!``````$`````#$=!
XM1$5$251/4%13``````$``````0`'T,J@``P`+@`Z``H````#``$'T,FT````
XM``?0R>``````````````!]#*$/____\#```%!]#)Q````````````#L````[
XM``L````+```````````#``$``!(``0`````'T,H```````````1!9&0`````
XM"@````$'T,HX!]#*2`?0RE@'T,IH!]#*@`?0RI`````!``````$``````0``
XM```+1T%$041$5$]/3``````!``````$`!]#+N`!.`"X`.P`*`````P`!!]#*
XMS``````'T,KX``````````````?0RRC_____`P``!0?0RMP````````````\
XM````/``+````"P```````````P`!```2``$`````!]#+&``````````$1&5L
XM``````H````!!]#+4`?0RV`'T,MP!]#+@`?0RY@'T,NH`````0`````!````
XM``$`````"T=!1$1%3%1/3TP``````0`````!``?0S-``"P!.`$<`"0````,`
XM`0?0R^0`````!]#,$``````````````'T,Q`_____P,```4'T,OT````````
XM````2````$@`"@````H```````````,``0``%0`!``````?0S#``````````
XM!5-A=F4`````"@````$'T,QH!]#,>`?0S(@'T,R8!]#,L`?0S,`````!````
XM``$``````0`````,1T%$4T%614E.1D\``````0`````!``?0S>@!V@!.`$<`
XM"0````,``0?0S/P`````!]#-*``````````````'T,U8_____P,```4'T,T,
XM````````````2````$@`"@````H```````````,``0``%``!``````?0S4@`
XM````````!5%U:70`````"@````$'T`:8!]`&J`?07?@'T%W@!]`_Z`?0/_@`
XM```!``````$``````0`````,1T%$455)5$E.1D\``````0`````!````````
XM]P!.`$<`"0````,``0?0SA0`````!]#.0``````````````'T,YP_____P,`
XM``4'T,XD````````````2````$@`"@````H```````````,``0``&``!````
XM``?0SF``````````!%5S90`````*`````0?/KE@'SZYH!]!;\`?01?`'T$7@
XM!]!;X`````$``````0`````!``````M'04154T5)3D9/``````$``````0`'
XMT,\@`1````````<```?0SS@`````````"D-H87)A8W1E<@`'T,^`!]#/D"P`
XM!]#/6``````0``?0SZ```!_^`0(#`0`3`````````',`"```````````````
XM!U)A;F1O;0`````!``?0S^@'T-``)``'T,_``````!``!]#0$```'_T!`@,!
XM`!,```````@`<P`(```````````````-07)C:&5O;&]G:7-T``````$`!]#0
XM6`?0T'`D``?0T#``````$``'T-"````?^P$"`P$`$P``````$`!S``@`````
XM``````````I"87)B87)I86X``````0`'T-#(!]#0V"0`!]#0H``````0``?0
XMT.@``!_W`0(#`0`3```````8`',`"```````````````"$-A=F5M86X`````
XM`0`'T-$P!]#10"0`!]#1"``````0``?0T5```!_O`0(#`0`3```````@`',`
XM"```````````````!$5L9@`````!``?0T9@'T-&H)``'T-%P`````!``!]#1
XMN```']\!`@,!`!,``````"@`<P`(```````````````'2&5A;&5R``````$`
XM!]#2``?0TA`D``?0T=@`````$``'T-(@```?OP$"`P$`$P``````,`!S``@`
XM``````````````=+;FEG:'0``````0`'T-)H!]#2>"0`!]#20``````0``?0
XMTH@``!]_`0(#`0`3```````X`',`"```````````````!U!R:65S=``````!
XM``?0TM`'T-+@)``'T-*H`````!``!]#2\```'O\!`@,!`!,``````$``<P`(
XM```````````````&4F]G=64``````0`'T-,X!]#32"0`!]#3$``````0``?0
XMTU@``!W_`0(#`0`3``````!(`',`"```````````````"%-A;75R86D`````
XM`0`'T-.@!]#3L"0`!]#3>``````0``?0T\```!O_`0(#`0`3``````!0`',`
XM"```````````````"%1O=7)I<W0``````0`'T-0(!]#4("0`!]#3X``````0
XM``?0U#```!?_`0(#`0`3``````!8`',`"```````````````"59A;&MY<FEE
XM``````$`!]#4>`?0U(@D``?0U%``````$``````````/_P$"`P$`$P``````
XM8`!S``@```````````````=7:7IA<F0``````0```A`.`"`"0``%``7_____
XM``````?0XZ````````````````````````$'T+C@```````'2&5L<#%?```!
XM`(8`/`&!`#,`!0`%_____P```!A(96QP(&9O<B!'86UE(%-E;&5C=&EO;@``
XM``````P`(@`O``P````#``$'T.+D``````?0V5`````````````%!]#C$/__
XM__\!```%!]#B]````````````#`````P``T````-```````````!``$```<`
XM`@`````'T-EP``````````5/:V%Y`````!(````!!]#C.`?0XT@'T.-8!]#C
XM:`?0XX`'T..0`````0`````!``````$`````#$=!1$A%3%!/2T%9``````$`
XM`````0`#``$```D`#0`````'T.:H!]#FX````"Y#;&EC:R!O;B!.97='86UE
XM($=A9&=E="!O<B!A(%-A=F5D($=A;64@='=I8V4``P`!```*`!8`````!]#G
XM```````````O=&\@<W1A<G0@82!N97<@9V%M92!O<B!T;R!R97-U;64@82!S
XM879E9"!G86UE+@```A`.`"`"0``%``7_____``````?0Q&``````````````
XM``````````$'T%7@```````'2&5L<#)?```!`(L`/`%T`#H`!0`%_____P``
XM`!M(96QP(&9O<B!'86UE($UA;FEP=6QA=&EO;@```````!$`*@`O``H````#
XM``$'T,+L``````?0P5@````````````$!]##&/____\!```%!]#"_```````
XM`````#`````P``L````+```````````!``$```<``@`````'T,%X````````
XM``5/:V%Y`````!(````!!]#!B`?0PA@'T,(H!]#$*`?0Q$`'T,10`````0``
XM```!``````$`````#$=!1$A%3%!/2T%9``````$``````0`#``$```\`#0``
XM```'T-NP!]#$@````"M5<V4@365N=2!B=71T;VX@=&\@<V5L96-T(&]P97)A
XM=&EO;B!O;B!T:&4``P`!```/`!8`````!]#=``?0QI@````L<V5L96-T960@
XM9V%M92P@;W(@9&]U8FQE(&-L:6-K(&]N(&$@9V%M92!T;P`#``$```\`'P``
XM```'T-OH`````````!=R97-U;64@=&AE('-A=F5D(&=A;64N```"$`X`(`)`
XM``4`!?____\`````!]#QJ````````````````````````0?0YS@```````=!
XM8F]U=%\```$`60`\`;\`4P`%``7_____````'$%B;W5T('1H92!.971(86-K
XM(%=O<FM"96YC:````````*,`1`!M``H````#``$'T/$4``````?0[Z``````
XM```````%!]#P8/____\!```%!]#Q)````````````&X```!N``L````+````
XM```````!``$``"@``@`````'T.WP``````````5/:V%Y`````!(````!!]#N
XMF`?0[P@'T/"(!]#QD`?0\)@'T/%``````0`````!``````$`````#$=!1$A%
XM3%!/2T%9``````$``````0`#``$```@`#0`````'T/(0!]#R0````"94:&4@
XM3F5T2&%C:R!7;W)K0F5N8V@@=V%S(&1E<VEG;F5D(&)Y``(``0`!-@`-````
XM``?0\F`'T/+0````"TME;B!,;W)B97(``P`!``&,``T`````!]#R>`?0\O``
XM```$86YD``(``0``"``6``````?0\U`'T/-H````#T=R96=G(%=O;F1E<FQY
XM``,``0``>``6``````?0\X@'T/.8`````BX``P`!``"'`!8`````!]#SN`?0
XM\^@````G5&AE('!R;V=R86UM:6YG('=A<R!S=&%R=&5D(&)Y($ME;B!A;F0`
XM`P`!```(`!\`````!]#T"`?0]"@````59FEN:7-H960@8GD@1W)E9V<N+BX`
XM`@`!```4`"\`````!]#T2`?0](@````S2&%C:U="(&ES(&-O<'ER:6=H="!'
XM<F5G9R!7;VYD97)L>2!A;F0@2V5N($QO<F)E<BP``@`!```*`#@`````!]#T
XMJ``````````V,3DY,B!S964@3F5T2&%C:R!L:6-E;G-E(&9O<B!D971A:6QS
XM(&%N9"!L:6UI=&%T:6]N<R$```(0#@!@`F``!0`%_____P``````````````
XM```````````````````#!]#$\```````!TAE;'`S7P```0!+``D![@"]``4`
XM!?____\````@2&5L<"!F;W(@3F5T:&%C:R!7;W)K0F5N8V@@5C,N,0`'T0GH
XM``P`K0`O``H````#``$'T.%<``````?0X$`````````````#!]#@L/____\"
XM```%!]#A;````````````#`````P``L````+```````````!``$```@``@``
XM```'T-Q(``````````5&4E=$`````!(````#!]#@8`?0X-@'T.&(!]#D&`?0
XMY#`'T.1``````0`````!``````$`````#$=!1$A%3%!&4E=$``````$`````
XM`0`'T0I``;(`K0`O``H````#``$'T0H4``````?0Y%`````````````$!]#E
XM</____\"```%!]$*)````````````#`````P``L````+```````````!``$`
XM``@``@`````'T.1P``````````5"2U=$`````!(````#!]#E0`?0Y9@'T.6H
XM!]#F$`?0YB@'T.8X`````0`````!``````$`````#$=!1$A%3%!"2U=$````
XM``$``````0```````,(`L``A``@``P`#``$'T.9(````````````````````
XM`/__!]$*F/____\#```%!]$*?````````````"(````B``D````)``````?0
XMYDC_0/_Y`0```@?0[D@`````````"``````!Z0``````"0`#``$'T.Y8!]#O
XM@`?0[Y`'T0K`!]$*T`?1"N`````!``````$``````0`````#+3$``````0``
XM```!```"$`X`)`)@``4`!?____\`````!]$5T```````````````````````
XM!`?05,````````52<W1?```"`+$`/`$G`#D`!0`%_____P```!-296-O=F5R
XM(%!A<F%M971E<G,`!]#<F`!E``\`N@`)```"`P`$!]#`%```````````````
XM``?0P\````?0P_#_____`P``!0?0P"0```````````"[````NP`*````"@``
XM```````````!+```````!``;``!H*``./\_XA`!$``````*``,C__P``)0``
XM`A!'````````````.0?4````````````*``>_____P`!``D````!``(``P`(
XM``0`!0`'``D`!@,``0`!F@`!```````Y""`````````````'````.)FF``$`
XM.)HF``(`.)GF``,`.)DF``0`.)IF``4`.)JF``8`.)EF```````!```````!
XM```````!```````!```````!`````````````0````````````$```````$`
XM``````$```````$```````$``````````````````0```````0```````0!I
XM``0!MP"^``$```````(00``XF#H```````````````````````4``````0H`
XM``(!!]!4T`?0PK`'T,08!]#$H`?0Q+@'T,3(````"%)E<W1$:7(``````0``
XM```!``````M'041215-41$E2``````$``````0`'T1@P`&4`'`"Z``D```(#
XM``0'T-S$````````````````!]#<"```!]#:(/____\#```%!]#<U```````
XM`````+L```"[``H````*``````````````$L```````$`!L``&@H``X_S_B$
XM`$0``````H``R/__```E```"$$<````````````Y!]0````````````H`![_
XM____``$`"0````$``@`#``@`!``%``<`"0`&`P`!``&:``$``````#D((```
XM``````````<````XF:8``0`XFB8``@`XF>8``P`XF28`!``XFF8`!0`XFJ8`
XM!@`XF68```````$```````$```````$```````$```````$````````````!
XM`````````````0```````0```````0```````0```````0``````````````
XM```!```````!```````!`&D`!`&W`+X``0```````A!``#B8.@``````````
XM````````````!0`````!"@```@$'T-PX!]#<\`?0W9@'T-ZX!]#=J`?0WM``
XM```(4F5S=$]L9``````!``````$`````"T=!1%)%4U1/3$0``````0`````!
XM``?1&Y@`"@`J`#D`"@````,``0?1&%P`````!]#?(`````````````4'T-^(
XM_____P,```4'T1AL````````````.@```#H`"P````L```````````$`````
XM#``!``````?0WT``````````!4]K87D`````"@````$'T-^P!]#?4`?0Y;@'
XMT/5(!]#W$`?0^=`````)4F5S=$]K87D``````0`````!``````Q'041215-4
XM3TM!60`````!``````$```````#F`"H`.0`*`````P`!!]$;Q``````'T0,8
XM````````````!@?1%'C_____`P``!0?1&]0````````````Z````.@`+````
XM"P```````````0`````%``$`````!]$#D``````````'0V%N8V5L``````H`
XM```!!]$#H`?1%0@'T148!]$5*`?1%;`'T17`````"U)E<W1#86YC96P`````
XM`0`````!``````M'041215-40T%.``````$``````0`!``````X`#P`````'
XMT1>`!]$7F`````M$:7)E8W1O<GDZ``$`````$@`=``````?1&(@`````````
X+"D]L9"!&:6QE.@!$
X`
Xend
END_OF_FILE
if test 30237 -ne `wc -c <'sys/amiga/wbwin.uu'`; then
echo shar: \"'sys/amiga/wbwin.uu'\" unpacked with wrong size!
fi
# end of 'sys/amiga/wbwin.uu'
if test -f 'sys/mac/mttymain.c' -a "${1}" != "-c" ; then
echo shar: Renaming existing file \"'sys/mac/mttymain.c'\" to \"'sys/mac/mttymain.c.orig'\"
mv -f 'sys/mac/mttymain.c' 'sys/mac/mttymain.c.orig'
fi
echo shar: Extracting \"'sys/mac/mttymain.c'\" \(14469 characters\)
sed "s/^X//" >'sys/mac/mttymain.c' <<'END_OF_FILE'
X/* SCCS Id: @(#)mttymain.c 3.1 93/02/26 */
X/* Copyright (c) Jon W{tte, 1993 */
X/* NetHack may be freely redistributed. See license for details. */
X
X#include "hack.h"
X#include "wintty.h"
X#include "mactty.h"
X
X#include <stdarg.h>
X#include <Menus.h>
X
Xextern void InitRes ( void ) ;
Xextern Boolean small_screen ;
Xextern void DoMenu ( long ) ;
Xextern void UpdateMenus ( void ) ;
Xextern int GetFromKeyQueue ( void ) ;
Xextern void dprintf ( char * , ... ) ;
X
X
X#define POWER_LIMIT 22
X#define SECONDARY_POWER_LIMIT 16
X#define CHANNEL_LIMIT 14
X#define SECONDARY_CHANNEL_LIMIT 12
X
X#define MT_WINDOW 135
X#define MT_WIDTH 80
Xstatic short MT_HEIGHT = 24;
X
X
X/*
X * Names:
X *
X * Statics are prefixed _
X * Mac-tty becomes mt_
X */
X
X
Xstatic void _mt_set_colors ( long * colors ) ;
X
X
Xstatic long _mt_attrs [ 5 ] [ 2 ] = {
X { 0x202020 , 0xffffff } , /* Normal */
X { 0xff8080 , 0xffffff } , /* Underline */
X { 0x40c020 , 0xe0e0e0 } , /* Bold */
X { 0x003030 , 0xff0060 } , /* Blink */
X { 0xff8888 , 0x000000 } , /* Inverse */
X} ;
X
X
Xstatic char _attrs_inverse [ 5 ] = {
X 0 , 0 , 0 , 0 , 0 ,
X} ;
X
X
X#if 0
X#define BLACK 0
X#define RED 1
X#define GREEN 2
X#define BROWN 3 /* on IBM, low-intensity yellow is brown */
X#define BLUE 4
X#define MAGENTA 5
X#define CYAN 6
X#define GRAY 7 /* low-intensity white */
X#define NO_COLOR 8
X#define ORANGE_COLORED 9 /* "orange" conflicts with the object */
X#define BRIGHT_GREEN 10
X#define YELLOW 11
X#define BRIGHT_BLUE 12
X#define BRIGHT_MAGENTA 13
X#define BRIGHT_CYAN 14
X#define WHITE 15
X#define MAXCOLORS 16
X#endif
X
Xstatic long _mt_colors [ 16 ] [ 2 ] = {
X { 0x000000 , 0xaaaaaa } , /* Black */
X { 0x880000 , 0xffffff } , /* Red */
X { 0x008800 , 0xffffff } , /* Green */
X { 0x553300 , 0xffffff } , /* Brown */
X { 0x000088 , 0xffffff } , /* Blue */
X { 0x770077 , 0xffffff } , /* Magenta */
X { 0x007777 , 0xffffff } , /* Cyan */
X { 0x888888 , 0xffffff } , /* Gray */
X { 0x222222 , 0xffffff } , /* No Color */
X { 0xeeee00 , 0x606060 } , /* Orange */
X { 0x00ff00 , 0x606060 } , /* Bright Green */
X { 0xeeee00 , 0x606060 } , /* Yellow */
X { 0x0000ff , 0x606060 } , /* Bright Blue */
X { 0xee00ee , 0x606060 } , /* Bright Magenta */
X { 0x00eeee , 0x606060 } , /* Bright Cyan */
X { 0x000000 , 0xffffff } , /* White */
X} ;
X
Xstatic char _colors_inverse [ MAXCOLORS ] = {
X 1 , 0 , 0 , 0 ,
X 0 , 0 , 0 , 0 ,
X 0 , 0 , 0 , 0 ,
X 0 , 0 , 0 , 0 ,
X} ;
X
X
X#ifdef CHANGE_COLOR
X
Xvoid
Xtty_change_color ( int color , long rgb , int reverse ) {
Xlong inverse = 0 , the_rgb = rgb ;
Xint total_power = 0 , max_channel = 0 ;
Xint cnt = 3 ;
X
X the_rgb >>= 4 ;
X while ( cnt -- > 0 ) {
X total_power += the_rgb & 0xf ;
X max_channel = max ( max_channel , the_rgb & 0xf ) ;
X the_rgb >>= 8 ;
X }
X
X if ( total_power >= POWER_LIMIT ||
X ( total_power >= SECONDARY_POWER_LIMIT &&
X max_channel >= SECONDARY_CHANNEL_LIMIT ) ||
X max_channel >= CHANNEL_LIMIT ) {
X inverse = 0x000000 ;
X } else {
X inverse = 0xffffff ;
X }
X
X if ( reverse ) {
X long rev = rgb ;
X
X rgb = inverse ;
X inverse = rev ;
X }
X
X if ( color >= MAXCOLORS ) {
X if ( color - MAXCOLORS >= 5 ) {
X impossible ( "Changing too many colors" ) ;
X return ;
X }
X _mt_attrs [ color - MAXCOLORS ] [ 0 ] = rgb ;
X _mt_attrs [ color - MAXCOLORS ] [ 1 ] = inverse ;
X _attrs_inverse [ color - MAXCOLORS ] = reverse ;
X } else if ( color >= 0 ) {
X _mt_colors [ color ] [ 0 ] = rgb ;
X _mt_colors [ color ] [ 1 ] = inverse ;
X _colors_inverse [ color ] = reverse ;
X } else {
X impossible ( "Changing negative color" ) ;
X }
X}
X
X
Xstatic char color_buf [ 5 * ( MAXCOLORS + 5 ) + 1 ] ;
X
Xchar *
Xtty_get_color_string ( void ) {
Xchar tmp [ 10 ] ;
Xint count ;
X
X color_buf [ 0 ] = 0 ;
X
X for ( count = 0 ; count < MAXCOLORS ; count ++ ) {
X int flag = _colors_inverse [ count ] ? 1 : 0 ;
X
X sprintf ( tmp , "%s%s%x%x%x" , count ? "/" : "" ,
X flag ? "-" : "" ,
X ( _mt_colors [ count ] [ flag ] >> 20 ) & 0xf ,
X ( _mt_colors [ count ] [ flag ] >> 12 ) & 0xf ,
X ( _mt_colors [ count ] [ flag ] >> 4 ) & 0xf ) ;
X strcat ( color_buf , tmp ) ;
X }
X for ( count = 0 ; count < 5 ; count ++ ) {
X int flag = _colors_inverse [ count ] ? 1 : 0 ;
X
X sprintf ( tmp , "/%s%x%x%x" ,
X flag ? "-" : "" ,
X ( _mt_attrs [ count ] [ flag ] >> 20 ) & 0xf ,
X ( _mt_attrs [ count ] [ flag ] >> 12 ) & 0xf ,
X ( _mt_attrs [ count ] [ flag ] >> 4 ) & 0xf ) ;
X strcat ( color_buf , tmp ) ;
X }
X
X return color_buf ;
X}
X#endif
X
X
Xextern struct DisplayDesc *ttyDisplay; /* the tty display descriptor */
X
Xchar kill_char = 27 ;
Xchar erase_char = 8 ;
X
XWindowPtr _mt_window = NULL ;
Xstatic Boolean _mt_in_color = 0 ;
X
X
Xstatic void
X_mt_init_stuff ( void )
X{
Xlong resp , flag ;
Xshort num_cols , num_rows , win_width , win_height , font_num , font_size ;
Xshort char_width , row_height ;
Xshort hor , vert ;
X
X#if 1
X if ( windowprocs == mac_procs ) {
X dprintf ( "Mac Windows" ) ;
X MT_HEIGHT -= 1 ;
X } else {
X dprintf ( "TTY Windows" ) ;
X }
X#else
X if (!strcmp(windowprocs.name, "mac")) {
X MT_HEIGHT -= 1; /* the message box is in a separate window */
X }
X#endif
X
X LI = MT_HEIGHT ;
X CO = MT_WIDTH ;
X
X /*
X * If there is at least one screen CAPABLE of color, and if
X * 32-bit QD is there, we use color. 32-bit QD is needed for the
X * offscreen GWorld
X */
X if ( ! Gestalt ( gestaltQuickdrawVersion , & resp ) && resp > 0x1ff ) {
X GDHandle gdh ;
X
X gdh = GetDeviceList ( ) ;
X while ( gdh ) {
X if ( TestDeviceAttribute ( gdh , screenDevice ) ) {
X if ( HasDepth ( gdh , 8 , 1 , 1 ) ||
X HasDepth ( gdh , 12 , 1 , 1 ) || /* Intuition tells me this may happen
X on color LCDs */
X HasDepth ( gdh , 16 , 1 , 1 ) ||
X HasDepth ( gdh , 4 , 1 , 1 ) || /* why here!? */
X HasDepth ( gdh , 32 , 1 , 1 ) ) {
X
X _mt_in_color = 1 ;
X break ;
X }
X }
X gdh = GetNextDevice ( gdh ) ;
X }
X }
X
X mustwork ( create_tty ( & _mt_window , MT_WINDOW , _mt_in_color ) ) ;
X ( ( WindowPeek ) _mt_window ) -> windowKind = ( WIN_BASE_KIND + NHW_MAP ) ;
X SelectWindow ( _mt_window ) ;
X SetPort ( _mt_window ) ;
X SetOrigin ( -3 , -3 ) ;
X font_num = 0 ;
X font_size = ( flags.large_font && ! small_screen ) ? 12 : 9 ;
X GetFNum ( "\PHackFont" , & font_num ) ;
X if ( font_num != 0 ) {
X mustwork ( init_tty_number ( _mt_window , font_num , font_size ,
X MT_WIDTH , MT_HEIGHT + 1 ) ) ;
X } else {
X mustwork ( init_tty_name ( _mt_window , "\PMonaco" , font_size ,
X MT_WIDTH , MT_HEIGHT + 1 ) ) ;
X }
X
X mustwork ( get_tty_metrics ( _mt_window , & num_cols , & num_rows , & win_width ,
X & win_height , & font_num , & font_size , & char_width , & row_height ) ) ;
X
X SizeWindow ( _mt_window , win_width + 6 , win_height + 6 , 1 ) ;
X dprintf ( "Checking for TTY window position" ) ;
X if ( RetrievePosition ( kMapWindow , & vert , & hor ) ) {
X dprintf ( "\PMoving window to (%d,%d)" , hor , vert ) ;
X MoveWindow ( _mt_window , hor , vert , 1 ) ;
X }
X ShowWindow ( _mt_window ) ;
X SetPort ( _mt_window ) ;
X
X mustwork ( get_tty_attrib ( _mt_window , TTY_ATTRIB_FLAGS , & flag ) ) ;
X/* Start in raw, always flushing mode */
X flag |= TA_ALWAYS_REFRESH ;
X mustwork ( set_tty_attrib ( _mt_window , TTY_ATTRIB_FLAGS , flag ) ) ;
X
X mustwork ( get_tty_attrib ( _mt_window , TTY_ATTRIB_CURSOR , & flag ) ) ;
X flag |= TA_BLINKING_CURSOR | TA_WRAP_AROUND ;
X#ifdef applec
X flag &= ~ TA_CR_ADD_NL ;
X#else
X flag |= ~ TA_NL_ADD_CR ;
X#endif
X mustwork ( set_tty_attrib ( _mt_window , TTY_ATTRIB_CURSOR , flag ) ) ;
X
X InitRes ( ) ;
X}
X
X
Xstatic void
X_mt_handle_event ( EventRecord * event ) {
XRect r ;
Xint code ;
XWindowPtr window ;
X
X if ( event -> what == mouseDown ) {
X r = ( * GetGrayRgn ( ) ) -> rgnBBox ;
X InsetRect ( & r , 3 , 3 ) ;
X
X code = FindWindow ( event -> where , & window ) ;
X switch ( code ) {
X case inDrag :
X DragWindow ( window , event -> where , & r ) ;
X if ( window == _mt_window ) {
X SaveWindowPos ( window ) ;
X }
X break ;
X case inSysWindow :
X SystemClick ( event , window ) ;
X break ;
X case inMenuBar :
X UpdateMenus ( ) ;
X DoMenu ( MenuSelect ( event -> where ) ) ;
X break ;
X default :
X /* Do nothing */
X ;
X }
X } else if ( event -> what == diskEvt ) {
X if ( event -> message & 0xffff0000 != 0L ) {
X Point p = { 100 , 100 } ;
X
X ( void ) itworked ( DIBadMount ( p , event -> message ) ) ;
X }
X }
X}
X
X
Xint
Xtgetch ( void ) {
XEventRecord event ;
Xlong sleepTime = 0 ;
Xint ret ;
X
X while ( 1 ) {
X update_tty ( _mt_window ) ;
X ret = GetFromKeyQueue ( ) ;
X if ( ret ) {
X return ret ;
X }
X WaitNextEvent ( -1 , & event , sleepTime , 0 ) ;
X SetPort ( _mt_window ) ;
X if ( handle_tty_event ( _mt_window , & event ) ) {
X _mt_handle_event ( & event ) ;
X }
X if ( event . what == keyDown || event . what == autoKey ) {
X if ( ! ( event . modifiers & cmdKey ) ) {
X return ( event . message & 0xff ) ;
X } else {
X DoMenu ( MenuKey ( event . message & 0xff ) ) ;
X }
X } else if ( ! sleepTime ) {
X Point p = event . where ;
X GlobalToLocal ( & p ) ;
X if ( PtInRect ( p , & ( _mt_window -> portRect ) ) ) {
X ObscureCursor ( ) ;
X } else {
X InitCursor ( ) ;
X }
X }
X if ( event . what == nullEvent ) {
X sleepTime = GetCaretTime ( ) ;
X } else {
X sleepTime = 0 ;
X }
X }
X}
X
X
Xvoid
Xgetreturn ( char * str ) {
X FlushEvents ( -1 , 0 ) ;
X printf_tty ( _mt_window , "Press space %s" , str ) ;
X ( void ) tgetch ( ) ;
X}
X
X
Xint
Xhas_color ( int color ) {
X#if defined(applec)
X# pragma unused(color)
X#endif
XRect r;
XPoint p = { 0 , 0 } ;
XGDHandle gh ;
X
X if ( ! _mt_in_color ) {
X return 0 ;
X }
X
X r = _mt_window -> portRect ;
X SetPort ( _mt_window ) ;
X GlobalToLocal ( & p ) ;
X OffsetRect ( & r , p . h , p . v ) ;
X
X gh = GetMaxDevice ( & r ) ;
X if ( ! gh ) {
X return 0 ;
X }
X
X return ( * ( ( * gh ) -> gdPMap ) ) -> pixelSize > 4 ; /* > 4 bpp */
X}
X
X
Xvoid
Xtty_delay_output ( void ) {
XEventRecord event ;
Xlong toWhen = TickCount ( ) + 3 ;
X
X while ( TickCount ( ) < toWhen ) {
X WaitNextEvent ( updateMask , & event , 3L , 0 ) ;
X if ( event . what == updateEvt ) {
X if ( ! handle_tty_event ( _mt_window , & event ) ) {
X _mt_handle_event ( & event ) ;
X }
X }
X }
X}
X
X
Xvoid
Xtty_nhbell ( void ) {
X SysBeep ( 20 ) ;
X}
X
X
Xvoid
Xcmov ( int x , int y ) {
X move_tty_cursor ( _mt_window , x , y ) ;
X ttyDisplay -> cury = y ;
X ttyDisplay -> curx = x ;
X}
X
X
Xvoid
Xnocmov ( int x , int y ) {
X cmov ( x , y ) ;
X}
X
X
Xstatic void
X_mt_set_colors ( long * colors ) {
Xshort err ;
X
X if ( ! _mt_in_color ) {
X return ;
X }
X err = set_tty_attrib ( _mt_window , TTY_ATTRIB_FOREGROUND , colors [ 0 ] ) ;
X err = set_tty_attrib ( _mt_window , TTY_ATTRIB_BACKGROUND , colors [ 1 ] ) ;
X}
X
X
Xvoid
Xterm_end_attr ( int attr ) {
X#if defined(applec)
X# pragma unused ( attr )
X#endif
X _mt_set_colors ( _mt_attrs [ 0 ] ) ;
X}
X
X
Xvoid
Xterm_start_attr ( int attr ) {
X switch ( attr ) {
X case ATR_ULINE:
X _mt_set_colors ( _mt_attrs [ 1 ] ) ;
X break ;
X case ATR_BOLD:
X _mt_set_colors ( _mt_attrs [ 2 ] ) ;
X break ;
X case ATR_BLINK:
X _mt_set_colors ( _mt_attrs [ 3 ] ) ;
X break ;
X case ATR_INVERSE:
X _mt_set_colors ( _mt_attrs [ 4 ] ) ;
X break ;
X default:
X _mt_set_colors ( _mt_attrs [ 0 ] ) ;
X break ;
X }
X}
X
X
Xvoid
Xstandoutend ( void ) {
X term_end_attr ( ATR_INVERSE ) ;
X}
X
X
Xvoid
Xstandoutbeg ( void ) {
X term_start_attr ( ATR_INVERSE ) ;
X}
X
X
Xvoid
Xxputs ( char * str ) {
Xshort err ;
X
X err = add_tty_string ( _mt_window , str ) ;
X}
X
X
Xvoid
Xterm_end_color ( void ) {
X _mt_set_colors ( _mt_colors [ NO_COLOR ] ) ;
X}
X
X
Xvoid
Xcl_end ( void ) {
Xshort err ;
X
X _mt_set_colors ( _mt_attrs [ 0 ] ) ;
X err = clear_tty_window ( _mt_window , ttyDisplay -> curx , ttyDisplay -> cury ,
X MT_WIDTH - 1 , ttyDisplay -> cury ) ;
X}
X
X
Xvoid
Xclear_screen ( void ) {
Xshort err ;
X
X _mt_set_colors ( _mt_attrs [ 0 ] ) ;
X err = clear_tty ( _mt_window ) ;
X}
X
X
Xvoid
Xcl_eos ( void ) {
Xshort err ;
X
X cl_end ( ) ;
X _mt_set_colors ( _mt_attrs [ 0 ] ) ;
X err = clear_tty_window ( _mt_window , 0 , ttyDisplay -> cury + 1 , MT_WIDTH - 1 ,
X MT_HEIGHT - 1 ) ;
X}
X
X
Xvoid
Xhome ( void ) {
Xshort err ;
X
X err = move_tty_cursor ( _mt_window , 0 , 0 ) ;
X ttyDisplay -> curx = 0 ;
X ttyDisplay -> cury = 0 ;
X}
X
X
Xvoid
Xbacksp ( void ) {
Xshort err ;
X
X err = add_tty_char ( _mt_window , 8 ) ;
X err = add_tty_char ( _mt_window , 32 ) ;
X err = add_tty_char ( _mt_window , 8 ) ;
X err = update_tty ( _mt_window ) ;
X}
X
X
Xvoid
Xmsmsg ( const char * str , ... ) {
Xva_list args ;
Xchar * buf = alloc ( 1000 ) ;
X
X va_start ( args , str ) ;
X vsprintf ( buf , str , args ) ;
X va_end ( args ) ;
X
X xputs ( buf ) ;
X free ( buf ) ;
X}
X
X
Xvoid
Xterm_end_raw_bold ( void ) {
X standoutend ( ) ;
X}
X
X
Xvoid
Xterm_start_raw_bold ( void ) {
X standoutbeg ( ) ;
X}
X
X
Xvoid
Xterm_start_color ( int color ) {
X if ( color >= 0 && color < MAXCOLORS ) {
X _mt_set_colors ( _mt_colors [ color ] ) ;
X }
X}
X
X
Xvoid
Xsetftty ( void ) {
Xlong flag ;
X
X mustwork ( get_tty_attrib ( _mt_window , TTY_ATTRIB_FLAGS , & flag ) ) ;
X/* Buffered output in the game */
X flag &= ~ TA_ALWAYS_REFRESH ;
X flag |= TA_INHIBIT_VERT_SCROLL ; /* don't scroll */
X mustwork ( set_tty_attrib ( _mt_window , TTY_ATTRIB_FLAGS , flag ) ) ;
X
X mustwork ( get_tty_attrib ( _mt_window , TTY_ATTRIB_CURSOR , & flag ) ) ;
X#ifdef applec
X flag &= ~ TA_CR_ADD_NL ;
X#else
X flag |= ~ TA_NL_ADD_CR ;
X#endif
X mustwork ( set_tty_attrib ( _mt_window , TTY_ATTRIB_CURSOR , flag ) ) ;
X
X flags . cbreak = 1 ;
X}
X
X
Xvoid
Xtty_startup ( int * width , int * height ) {
X _mt_init_stuff ( ) ;
X * width = MT_WIDTH ;
X * height = MT_HEIGHT ;
X}
X
X
Xvoid
Xgettty ( void ) {
X}
X
X
Xvoid
Xsettty ( char * str ) {
Xlong flag ;
X
X update_tty ( _mt_window ) ;
X
X mustwork ( get_tty_attrib ( _mt_window , TTY_ATTRIB_FLAGS , & flag ) ) ;
X/* Buffered output in the game, raw in "raw" mode */
X flag &= ~ TA_INHIBIT_VERT_SCROLL ; /* scroll */
X flag |= TA_ALWAYS_REFRESH ;
X mustwork ( set_tty_attrib ( _mt_window , TTY_ATTRIB_FLAGS , flag ) ) ;
X
X mustwork ( get_tty_attrib ( _mt_window , TTY_ATTRIB_CURSOR , & flag ) ) ;
X#ifdef applec
X flag |= TA_CR_ADD_NL ;
X#else
X flag |= TA_NL_ADD_CR ;
X#endif
X mustwork ( set_tty_attrib ( _mt_window , TTY_ATTRIB_CURSOR , flag ) ) ;
X
X tty_raw_print ( "\n" ) ;
X if ( str ) {
X tty_raw_print ( str ) ;
X }
X}
X
X
Xvoid
Xtty_number_pad ( int arg ) {
X#if defined(applec)
X# pragma unused(arg)
X#endif
X}
X
X
Xvoid
Xtty_start_screen ( void ) {
X flags . cbreak = 1 ;
X}
X
X
Xvoid
Xtty_end_screen ( void ) {
X}
X
X
Xint
Xterm_puts ( char * str ) {
X xputs ( str ) ;
X return strlen ( str ) ;
X}
X
X
Xint
Xterm_putc ( int c ) {
Xshort err ;
X
X err = add_tty_char ( _mt_window , c ) ;
X return err ? EOF : c ;
X}
X
X
Xint
Xterm_flush ( void * desc ) {
X if ( desc == stdout || desc == stderr ) {
X update_tty ( _mt_window ) ;
X } else {
X impossible ( "Substituted flush for file" ) ;
X return fflush ( desc ) ;
X }
X return 0 ;
X}
END_OF_FILE
if test 14469 -ne `wc -c <'sys/mac/mttymain.c'`; then
echo shar: \"'sys/mac/mttymain.c'\" unpacked with wrong size!
fi
# end of 'sys/mac/mttymain.c'
if test -f 'sys/msdos/video.c' -a "${1}" != "-c" ; then
echo shar: Renaming existing file \"'sys/msdos/video.c'\" to \"'sys/msdos/video.c.orig'\"
mv -f 'sys/msdos/video.c' 'sys/msdos/video.c.orig'
fi
echo shar: Extracting \"'sys/msdos/video.c'\" \(12337 characters\)
sed "s/^X//" >'sys/msdos/video.c' <<'END_OF_FILE'
X/* SCCS Id: @(#)video.c 3.1 93/05/09 */
X/* Copyright (c) NetHack PC Development Team 1993 */
X/* NetHack may be freely redistributed. See license for details. */
X/* */
X/*
X * video.c - Hardware video support
X *
X *Edit History:
X * Initial Creation M. Allison 93/04/04
X * Add colour support M. Allison 93/04/06
X * Fix cl_end() M. Allison 93/04/11
X * Use CO,LI in decl.c M. Allison 93/04/24
X * Add djgpp support K. Smolkowski 93/04/26
X * Add runtime monoadapter check M. Allison 93/05/09
X */
X
X#include "hack.h"
X
X#include <dos.h>
X
X#ifdef SCREEN_BIOS
X#define MONO_CHECK /* Enable monochrome adapter support */
X#endif
X
X/*
X * PC interrupts
X */
X#ifdef PC9801
X#define CRT_BIOS 0x18
X#else
X#define VIDEO_BIOS 0x10
X#endif
X#define DOSCALL 0x21
X
X/*
X * Character Attributes
X */
X#define ATTRIB_NORMAL 0x07 /* Normal attribute */
X#define ATTRIB_INTENSE 0x0f /* Intense White */
X#ifdef MONO_CHECK
X#define ATTRIB_MONO_UNDERLINE 0x01 /* Underlined,white */
X#define ATTRIB_MONO_BLINK 0x87 /* Flash bit, white */
X#define ATTRIB_MONO_REVERSE 0x70 /* Black on white */
X#endif
X/*
X * Video BIOS functions
X */
X#ifdef PC9801
X#define SETCURPOS 0x13 /* Set Cursor Position */
X#define SENSEMODE 0x0b /* Sense CRT Mode */
X#else
X#define GETCURPOS 0x03 /* Get Cursor Position */
X#define SETCURPOS 0x02 /* Set Cursor Position */
X#define GETMODE 0x0f /* Get Video Mode */
X#define SETMODE 0x00 /* Set Video Mode */
X#define SETPAGE 0x05 /* Set Video Page */
X#define FONTINFO 0x1130 /* Get Font Info */
X#define SCROLL 0x06 /* Scroll or initialize window */
X#define PUTCHARATT 0x09 /* Write attribute & char at cursor */
X#endif
X
X#ifdef OVLB
X
Xvoid
Xget_scr_size()
X{
X union REGS regs;
X
X if (!flags.BIOS) { /* assume standard screen size */
X CO = 80;
X LI = 24;
X return;
X }
X
X# ifdef PC9801
X regs.h.ah = SENSEMODE;
X int86(CRT_BIOS, &regs, &regs);
X
X LI = (regs.h.al & 0x01) ? 20 : 25;
X CO = (regs.h.al & 0x02) ? 40 : 80;
X# else
X regs.x.ax = FONTINFO;
X regs.x.bx = 0; /* current ROM BIOS font */
X regs.h.dl = 24; /* default row count */
X /* in case no EGA/MCGA/VGA */
X int86(VIDEO_BIOS, &regs, &regs); /* Get Font Information */
X
X /* MDA/CGA/PCjr ignore INT 10h, Function 11h, but since we
X * cleverly loaded up DL with the default, everything's fine.
X *
X * Otherwise, DL now contains rows - 1. Also, CX contains the
X * points (bytes per character) and ES:BP points to the font
X * table. -3.
X */
X
X regs.h.ah = GETMODE;
X int86(VIDEO_BIOS, &regs, &regs); /* Get Video Mode */
X
X /* This goes back all the way to the original PC. Completely
X * safe. AH contains # of columns, AL contains display mode,
X * and BH contains the active display page.
X */
X
X LI = regs.h.dl + 1;
X CO = regs.h.ah;
X# endif /* PC9801 */
X}
X#endif
X
X#ifdef NO_TERMS
X
X#include "wintty.h"
X
X# ifdef SCREEN_DJGPPFAST
X#include <pc.h>
X# endif
X
Xvoid FDECL(cmov, (int, int));
Xvoid FDECL(nocmov, (int, int));
X
X# ifdef TEXTCOLOR
Xchar ttycolors[MAXCOLORS];
Xstatic void NDECL(init_ttycolor);
X# endif
X
X# ifdef SCREEN_BIOS
Xvoid FDECL(gotoxy, (int,int));
Xvoid FDECL(get_cursor, (int *, int *));
X# ifdef MONO_CHECK
Xint NDECL(monoadapt_check);
X# endif
X# endif
X
X# ifdef SCREEN_DJGPPFAST
X#define gotoxy(x,y) ScreenSetCursor(y,x)
X#define get_cursor(x,y) ScreenGetCursor(y,x)
X# endif
X
X/*
X * LI, CO are ifdefs of a data structure in decl.c, and are initialized
X * by get_scr_size()
X */
X/*extern int LI, CO; */ /* decl.h does this already */
Xchar g_attribute; /* Current attribute to use */
X
X# ifdef MONO_CHECK
Xint monoflag; /* 0 = not monochrome, else monochrome */
X# endif
X
X#ifdef OVLB
X
Xvoid
Xbacksp()
X{
X int x,y;
X
X get_cursor(&x, &y);
X if (x > 0) x = x-1;
X gotoxy(x,y);
X xputc(' ');
X gotoxy(x,y);
X}
X
X#endif /* OVLB */
X#ifdef OVL0
X
Xvoid
Xclear_screen()
X/* djgpp provides ScreenClear(), but in version 1.09 it is broken
X * so for now we just use the BIOS Routines
X */
X{
X union REGS regs;
X
X regs.h.dl = CO - 1; /* columns */
X regs.h.dh = LI - 1; /* rows */
X regs.x.cx = 0; /* CL,CH = x,y of upper left */
X regs.x.ax = 0;
X regs.x.bx = 0;
X regs.h.bh = ATTRIB_NORMAL;
X regs.h.ah = SCROLL;
X /* DL,DH = x,y of lower right */
X int86(VIDEO_BIOS, &regs, &regs); /* Scroll or init window */
X gotoxy(0,0);
X}
X
Xvoid
Xcl_end() /* clear to end of line */
X{
X union REGS regs;
X int x,y,count;
X
X x = ttyDisplay->curx;
X y = ttyDisplay->cury;
X gotoxy(x,y);
X count = CO - x;
X regs.h.ah = PUTCHARATT; /* write attribute & character */
X regs.h.al = ' '; /* character */
X regs.h.bh = 0; /* display page */
X /* BL = attribute */
X regs.h.bl = ATTRIB_NORMAL;
X regs.x.cx = count;
X if (count != 0)
X int86(VIDEO_BIOS, &regs, &regs); /* write attribute
X & character */
X tty_curs(BASE_WINDOW, (int)ttyDisplay->curx+1,
X (int)ttyDisplay->cury);
X}
X
Xvoid
Xcl_eos() /* clear to end of screen */
X{
X union REGS regs;
X int x,y;
X
X get_cursor(&x, &y);
X cl_end(); /* clear to end of line */
X gotoxy(0,(y < (LI-1) ? y+1 : (LI-1)));
X regs.h.dl = CO-1; /* X of lower right */
X regs.h.dh = LI-1; /* Y of lower right */
X regs.h.cl = 0; /* X of upper left */
X /* Y (row) of upper left */
X regs.h.ch = (y < (LI-1) ? y+1 :(LI-1));
X regs.x.cx = 0;
X regs.x.ax = 0;
X regs.x.bx = 0;
X regs.h.bh = ATTRIB_NORMAL;
X regs.h.ah = SCROLL;
X int86(VIDEO_BIOS, &regs, &regs); /* Scroll or initialize window */
X tty_curs(BASE_WINDOW, (int)ttyDisplay->curx+1,
X (int)ttyDisplay->cury);
X}
X
Xvoid
Xcmov(x, y)
Xregister int x, y;
X{
X ttyDisplay->cury = y;
X ttyDisplay->curx = x;
X gotoxy(x,y);
X}
X
X# endif /* OVL0 */
X# ifdef OVLB
X
Xint
Xhas_color(int color)
X{
X# ifdef TEXTCOLOR
X return
X# ifdef MONO_CHECK
X (monoflag) ? 0 :
X# endif
X 1;
X# else
X return 0;
X# endif
X}
X
X# endif /* OVLB */
X# ifdef OVL0
X
Xvoid
Xhome()
X{
X tty_curs(BASE_WINDOW, 1, 0);
X ttyDisplay->curx = ttyDisplay->cury = 0;
X gotoxy(0,0);
X}
X
Xvoid
Xnocmov(x, y)
Xint x,y;
X{
X gotoxy(x,y);
X}
X
Xvoid
Xstandoutbeg()
X{
X g_attribute = ATTRIB_INTENSE; /* intense white */
X}
X
Xvoid
Xstandoutend()
X{
X g_attribute = ATTRIB_NORMAL; /* normal white */
X}
X
X# endif /* OVL0 */
X# ifdef OVLB
X
Xvoid
Xterm_end_attr(int attr)
X{
X g_attribute = ATTRIB_NORMAL; /* normal white */
X}
X
Xvoid
Xterm_end_color(void)
X{
X g_attribute = ATTRIB_NORMAL; /* normal white (harmless) */
X}
X
Xvoid
Xterm_end_raw_bold(void)
X{
X standoutend();
X}
X
Xvoid
Xterm_start_attr(int attr)
X{
X switch(attr){
X
X case ATR_ULINE:
X# ifdef MONO_CHECK
X if (monoflag) {
X g_attribute = ATTRIB_MONO_UNDERLINE;
X } else {
X g_attribute = ATTRIB_INTENSE;
X }
X break;
X# endif
X case ATR_BOLD:
X g_attribute = ATTRIB_INTENSE;
X break;
X case ATR_BLINK:
X# ifdef MONO_CHECK
X if (monoflag) {
X g_attribute = ATTRIB_MONO_BLINK;
X } else {
X g_attribute = ATTRIB_INTENSE;
X }
X break;
X# endif
X case ATR_INVERSE:
X# ifdef MONO_CHECK
X if (monoflag) {
X g_attribute = ATTRIB_MONO_REVERSE;
X } else {
X g_attribute = ATTRIB_INTENSE;
X }
X break;
X# endif
X default:
X g_attribute = ATTRIB_NORMAL;
X break;
X }
X}
X
X
Xvoid
Xterm_start_color(int color)
X{
X# ifdef TEXTCOLOR
X short attr;
X
X# ifdef MONO_CHECK
X if (monoflag) {
X g_attribute = ATTRIB_NORMAL;
X } else {
X# endif
X if (color >= 0 && color < MAXCOLORS) {
X g_attribute = ttycolors[color];
X }
X# ifdef MONO_CHECK
X }
X# endif
X# endif
X}
X
Xvoid
Xterm_start_raw_bold(void)
X{
X standoutbeg();
X}
X
X# endif /* OVLB */
X# ifdef OVL1
X
Xvoid
Xtty_delay_output()
X{
X /* delay 50 ms - not implimented */
X}
X# endif /* OVL1 */
X
X# ifdef OVLB
Xvoid
Xtty_end_screen()
X{
X clear_screen();
X}
X
Xvoid
Xtty_nhbell()
X{
X union REGS regs;
X
X if (flags.silent) return;
X regs.h.dl = 0x07; /* bell */
X regs.h.ah = 0x02; /* Character Output */
X int86(DOSCALL, &regs, &regs);
X}
X
Xvoid
Xtty_number_pad(state)
Xint state;
X{
X}
X
Xvoid
Xtty_startup(wid, hgt)
X int *wid, *hgt;
X{
X if (CO && LI) {
X *wid = CO;
X *hgt = LI;
X } else {
X *wid = CO = 80;
X *hgt = LI = 25;
X }
X# ifdef MONO_CHECK
X monoflag = monoadapt_check();
X if (!monoflag) {
X# endif
X# ifdef TEXTCOLOR
X init_ttycolor();
X# endif
X# ifdef MONO_CHECK
X }
X# endif
X g_attribute = ATTRIB_NORMAL;
X}
X
Xvoid
Xtty_start_screen()
X{
X if (flags.num_pad) tty_number_pad(1); /* make keypad send digits */
X}
X
X# endif /* OVLB */
X# ifdef OVL0
X
Xvoid
Xxputs(s)
Xconst char *s;
X{
X char c;
X int x,y;
X
X x = ttyDisplay->curx;
X y = ttyDisplay->cury;
X if (s != NULL) {
X while (*s != '\0') {
X gotoxy(x,y);
X c = *s++;
X xputc(c);
X if (x < (CO-1)) x++;
X gotoxy(x,y);
X }
X }
X}
X
Xvoid
Xxputc(ch) /* write out character (and attribute) */
Xchar ch;
X{
X# ifdef SCREEN_BIOS
X union REGS regs;
X# endif
X int x,y;
X char attribute;
X
X attribute = (((g_attribute > 0) && (g_attribute < MAXCOLORS)) ?
X g_attribute : ATTRIB_NORMAL);
X
X# ifdef SCREEN_DJGPPFAST
X get_cursor(&x,&y);
X ScreenPutChar((int)ch,(int)attribute,x,y);
X# endif
X
X# ifdef SCREEN_BIOS
X regs.h.ah = PUTCHARATT; /* write attribute & character */
X regs.h.al = ch; /* character */
X regs.h.bh = 0; /* display page */
X /* BL = attribute */
X# ifdef MONO_CHECK
X regs.h.bl = ((g_attribute == 0) ? ATTRIB_NORMAL : g_attribute);
X# else
X regs.h.bl = (((g_attribute > 0) && (g_attribute < MAXCOLORS)) ?
X g_attribute : ATTRIB_NORMAL);
X# endif
X regs.x.cx = 1; /* one character */
X int86(VIDEO_BIOS, &regs, &regs); /* write attribute & character */
X get_cursor(&x,&y);
X# endif /* SCREEN_BIOS */
X if (x < (CO -1 )) ++x;
X gotoxy(x,y);
X}
X
X/*
X * Supporting routines. None of these routines are required to
X * resolve references outside this source file.
X */
X# ifdef SCREEN_BIOS
Xvoid
Xget_cursor(x,y) /* get cursor position */
Xint *x, *y;
X{
X union REGS regs;
X
X regs.x.dx = 0;
X regs.h.ah = GETCURPOS; /* get cursor position */
X regs.x.cx = 0;
X regs.x.bx = 0;
X int86(VIDEO_BIOS, &regs, &regs); /* Get Cursor Position */
X *x = regs.h.dl;
X *y = regs.h.dh;
X}
X
Xvoid
Xgotoxy(x,y)
Xint x,y;
X{
X union REGS regs;
X
X regs.h.ah = SETCURPOS;
X# ifdef PC9801
X regs.x.dx = 2 * (80 * y + x);
X int86(CRT_BIOS, &regs, &regs); /* Set Cursor Position */
X# else
X regs.h.bh = 0; /* display page */
X regs.h.dh = y; /* row */
X regs.h.dl = x; /* column */
X int86(VIDEO_BIOS, &regs, &regs); /* Set Cursor Position */
X# endif
X
X /* This, too, goes back all the way to the original PC. If
X * we ever get so fancy as to swap display pages (i doubt it),
X * then we'll need to set BH appropriately. This function
X * returns nothing. -3.
X */
X}
X# ifdef MONO_CHECK
Xint monoadapt_check()
X{
X union REGS regs;
X
X regs.h.al = 0;
X regs.h.ah = GETMODE; /* get video mode */
X int86(VIDEO_BIOS, &regs, &regs);
X return (regs.h.al == 7) ? 1 : 0; /* 7 means monochrome mode */
X}
X# endif /* MONO_CHECK */
X# endif /* SCREEN_BIOS */
X
X# endif /* OVL0 */
X# ifdef OVLB
X
X# ifdef TEXTCOLOR
X/*
X * BLACK 0
X * RED 1
X * GREEN 2
X * BROWN 3 low-intensity yellow
X * BLUE 4
X * MAGENTA 5
X * CYAN 6
X * GRAY 7 low-intensity white
X * NO_COLOR 8
X * ORANGE_COLORED 9
X * BRIGHT_GREEN 10
X * YELLOW 11
X * BRIGHT_BLUE 12
X * BRIGHT_MAGENTA 13
X * BRIGHT_CYAN 14
X * WHITE 15
X * MAXCOLORS 16
X * BRIGHT 8
X */
X
Xstatic void
Xinit_ttycolor()
X{
X ttycolors[BLACK] = 7; /* mapped to 7 = white */
X ttycolors[RED] = 4; /* 4 = red */
X ttycolors[GREEN] = 2; /* 2 = green */
X ttycolors[BROWN] = 6; /* 6 = brown */
X ttycolors[BLUE] = 1; /* 1 = blue */
X ttycolors[MAGENTA] = 5; /* 5 = magenta */
X ttycolors[CYAN] = 3; /* 3 = cyan */
X ttycolors[GRAY] = 8; /* 8 = dark gray */
X ttycolors[BRIGHT] = 15; /* 15 = intense white */
X ttycolors[ORANGE_COLORED] = 12; /* 12 = light red */
X ttycolors[BRIGHT_GREEN] = 10; /* 10 = light green */
X ttycolors[YELLOW] = 14; /* 14 = yellow */
X ttycolors[BRIGHT_BLUE] = 9; /* 9 = light blue */
X ttycolors[BRIGHT_MAGENTA] = 13; /* 13 = light magenta */
X ttycolors[BRIGHT_CYAN] = 11; /* 11 = light cyan */
X ttycolors[WHITE] = 7; /* 7 = white */
X}
X
X# endif /* TEXTCOLOR */
X# endif OVLB
X
X#endif /* NO_TERMS */
X
X/* video.c */
END_OF_FILE
if test 12337 -ne `wc -c <'sys/msdos/video.c'`; then
echo shar: \"'sys/msdos/video.c'\" unpacked with wrong size!
fi
# end of 'sys/msdos/video.c'
echo shar: End of archive 31 \(of 33\).
cp /dev/null ark31isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 33 archives.
echo "Now execute ./patchit.sh"
rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
echo You still need to unpack the following archives:
echo " " ${MISSING}
fi
## End of shell archive.
exit 0

0 new messages