amiga-request@ab20.larc.nasa.gov (Amiga Sources/Binaries Moderator) (05/08/91)
Submitted-by: stefanb@cip-s01.informatik.rwth-aachen.de (Stefan Becker) Posting-number: Volume 91, Issue 099 Archive-name: utilities/msclock-1.3/part01 [ includes uuencoded executable and handler ...tad ] Yet another clock utility, nobody has been waiting for. MSClock recognizes overscan-workbenches and displays memory, date, time and online time (if connected to another computer via modem). #!/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 1 (of 1)." # Contents: MSClock1_3.doc c c/MSClock.uu l l/MSClock-Han.uu source # source/MSClock-Handler.c source/MSClock.c source/makefile # Wrapped by tadguy@ab20 on Tue May 7 20:24:57 1991 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'MSClock1_3.doc' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'MSClock1_3.doc'\" else echo shar: Extracting \"'MSClock1_3.doc'\" \(949 characters\) sed "s/^X//" >'MSClock1_3.doc' <<'END_OF_FILE' XMSClock V1.3 (c) 12.02.91 by Martin Steppler X XYet another clock utility, nobody has been waiting for. XMSClock recognizes overscan-workbenches and displays memory, date, time and Xonline time (if connected to another computer via modem). XThat's all. If it's not enough for you, enhance it by yourself! XFeel free to use, copy or destroy it! X XUSAGE: MSClock [-t] [-d] [-m] [-e] [-r] [-q] [quit] [h] X X -t time off/on default: on X -d date off/on default: on X -m memory off/on default: on X -o online time off/on default: on X -e English weekdays on/off default: German on X -r reverse date display on/off default: off X -q quit MSClock X quit X h or any other key: help X XBye, Martin. X XInterNet: steppler@cip-s01.informatik.rwth-aachen.de XFidoNet: Martin Steppler @ 2:242/7.12 XPhone: +47-(0)241-158579 END_OF_FILE if test 949 -ne `wc -c <'MSClock1_3.doc'`; then echo shar: \"'MSClock1_3.doc'\" unpacked with wrong size! fi # end of 'MSClock1_3.doc' fi if test ! -d 'c' ; then echo shar: Creating directory \"'c'\" mkdir 'c' fi if test -f 'c/MSClock.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'c/MSClock.uu'\" else echo shar: Extracting \"'c/MSClock.uu'\" \(8630 characters\) sed "s/^X//" >'c/MSClock.uu' <<'END_OF_FILE' Xbegin 666 MSClock XM```#\P`````````#``````````(```7E0```'`````$```/I```%Y4[Z$&I.H XM50``2.<``'``3-\``$Y=3G5.5?_@2.<`()/)+&R`#DZN_MHD0"M\````)__\A XM0JW_]$*M__`K0O_H)#P```/M0?H($B((+&R`$DZN_^(D+?_H*T#_['``0_H'L XM_"QL@`Y.KOW8*4"`%F<`!Z9P`$/Z!_@L;(`.3J[]V"E`@!IG``>00_H'\"QLV XM@`Y.KOYZ*4"`'F<```P@;(`>*V@`/O_\*WP````!__A@```&4JW_^"`M__BPA XMK0`(;``!_DAZ!\H@+?_XY8`@;0`,+S`(`$ZZ#W103TJ`9P``($AZ![$@+?_X5 XMY8`@;0`,+S`(`$ZZ#U903TJ`9@``#BM\`````?_T8``!MDAZ!XH@+?_XY8`@] XM;0`,+S`(`$ZZ#RQ03TJ`9@``*@@M``#__V<``!`@+?_\`H`````^8```"B`M% XM__P(P```*T#__&```6Q(>@='("W_^.6`(&T`#"\P"`!.N@[F4$]*@&8``"H(L XM+0`!__]G```0("W__`*`````/6````H@+?_\",```2M`__Q@``$F2'H'!"`ML XM__CE@"!M``PO,`@`3KH.H%!/2H!F```J""T``O__9P``$"`M__P"@````#M@< XM```*("W__`C```(K0/_\8```X$AZ!L$@+?_XY8`@;0`,+S`(`$ZZ#EI03TJ`- XM9@``*@@M``/__V<``!`@+?_\`H`````W8```"B`M__P(P``#*T#__&```)I(C XM>@9^("W_^.6`(&T`#"\P"`!.N@X44$]*@&8``"H(+0`$__]G```0("W__`*`" XM````+V````H@+?_\",``!"M`__Q@``!42'H&.R`M__CE@"!M``PO,`@`3KH-( XMSE!/2H!F```J""T`!?__9P``$"`M__P"@````!]@```*("W__`C```4K0/_\$ XM8```#BM\`````?_P8```!F``_?9*K?_P9P`!B$JM_^QG``&`2.T`#/_D2'H&* XM!DZZ$J!83R8`0?H%QB0((BW_["QL@!).KO_03.T`#/_D2.T`#/_D2'H&1DZZ0 XM$G983R8`0?H&!"0((BW_["QL@!).KO_03.T`#/_D2.T`#/_D2'H&BDZZ$DQ81 XM3R8`0?H&1B0((BW_["QL@!).KO_03.T`#/_D2.T`#/_D2'H&T$ZZ$B)83R8`$ XM0?H&C"0((BW_["QL@!).KO_03.T`#/_D2.T`#/_D2'H'%DZZ$?A83R8`0?H&R XMTB0((BW_["QL@!).KO_03.T`#/_D2.T`#/_D2'H'7$ZZ$<Y83R8`0?H'&"0(8 XM(BW_["QL@!).KO_03.T`#/_D2.T`#/_D2'H'J4ZZ$:183R8`0?H'7B0((BW_1 XM["QL@!).KO_03.T`#/_D2.T`#/_D2'H']TZZ$7I83R8`0?H'LB0((BW_["QL_ XM@!).KO_03.T`#/_D2.T`#/_D2'H((DZZ$5!83R8`0?H'^B0((BW_["QL@!).E XMKO_03.T`#/_D8``#S$JL@!YF``)V2JW_]&8``FXB/``!``%P2BQL@`Y.KO\Z[ XM*4"`'F<``E(@;(`>$7P``@`.(&R`'D(H``D@;(`>$7P`!``(<@%P%"QL@`Y.4 XMKO\Z(&R`'B%```H@;(`>0J@`+B!L@!XA2@`J(&R`'B%\````2@`F+RW__$ZZ3 XM"K983R!L@!XA0``V3KH+&"!L@!Z0J``V(&R`'B%``#(@;(`>0J@`.B!L@!XA! XM;?_\`#X@;(`>(6W__`!"2'H'="!L@!XO*``*3KH0CE!/(&R`'M'\````%"\(J XM3KH0:EA/0?H'9"((+&R`$DZN_VH@;(`>(4``(F8``!A!^@=:(@@L;(`23J[_> XM:B!L@!XA0``B(&R`'DJH`")F``!><!0@;(`>(F@`"BQL@`Y.KO\N(&R`'B`H< XM`"8B;(`>+&R`#DZN_RY*K?_L9P``+$CM``S_Y$AZ!W!.N@_>6$\F`$'Z!QXDY XM""(M_^PL;(`23J[_T$SM``S_Y&```0@B;(`>+&R`#DZN_IY([0`<_^`H/```& XM$``@;(`>)B@`(G0%0?H';"((+&R`$DZN_W9,[0`<_^`@/```(``L;(`.3J[^F XMPB!L@!Y*J``N9@``AB)L@!XL;(`.3J[^F'`4(&R`'B)H``HL;(`.3J[_+B!LY XM@!Y*J``B9P``$B!L@!XB*``B+&R`$DZN_V0@;(`>("@`)B)L@!XL;(`.3J[_O XM+DJM_^QG```L2.T`#/_D2'H'2TZZ#PI83R8`0?H&^20((BW_["QL@!).KO_0> XM3.T`#/_D8```-$JM_^QG```L2.T`#/_D2'H'HDZZ#M183R8`0?H'3R0((BW_" XM["QL@!).KO_03.T`#/_D8``!4$JL@!YG``#D2JW_]&<``-P@;(`>(4H`*B`\A XM```@`"!L@!XB:``N+&R`#DZN_KP@/```(``L;(`.3J[^PB)L@!XL;(`.3J[^( XMF'`4(&R`'B)H``HL;(`.3J[_+B!L@!Y*J``B9P``$B!L@!XB*``B+&R`$DZN< XM_V0@;(`>("@`)B)L@!XL;(`.3J[_+DJM_^QG``!62.T`#/_D2'H'@TZZ#A18' XM3R8`0?H',20((BW_["QL@!).KO_03.T`#/_D2.T`#/_D2'H'QTZZ#>I83R8`K XM0?H'DR0((BW_["QL@!).KO_03.T`#/_D8```9DJL@!YG``!>(&R`'B%M__P`J XM0B\M__Q.N@>R6$\@;(`>(4``-DZZ"!0@;(`>D*@`-B!L@!XA0``R(&R`'B%*0 XM`"H@/```$``@;(`>(F@`+BQL@`Y.KOZ\(#P``"``+&R`#DZN_L)*K?_L9P``[ XM#B(M_^PL;(`23J[_W$JL@!9G```.(FR`%BQL@`Y.KOYB2JR`&F<```XB;(`:= XM+&R`#DZN_F),WP0`3EU.=2H`:6YT=6ET:6]N+FQI8G)A<GD`9&]S+FQI8G)A- XM<GD`36%R=&EN)W,@0VQO8VLM4&]R=`!Q=6ET`"UQ`"UT`"UD`"UM`"UE`"URL XM`"UO`!M;,6U-4T-L;V-K(%8Q+C,;6S!M(*D@,3(N,#(N.3$@8GD@36%R=&EN1 XM(%-T97!P;&5R"@`;6S%M35-#;&]C:R!6,2XS&ULP;2"I(#$R+C`R+CDQ(&)YC XM($UA<G1I;B!3=&5P<&QE<@H`55-!1T4Z("!-4T-L;V-K(%LM=%T@6RUD72!;< XM+6U=(%LM95T@6RUR72!;+7%=(%MQ=6ET70H`55-!1T4Z("!-4T-L;V-K(%LM6 XM=%T@6RUD72!;+6U=(%LM95T@6RUR72!;+7%=(%MQ=6ET70H`("`@("`@("`M5 XM="`@("!T:6UE("`@;V9F+V]N("`@("`@("`@("`@("`@(&1E9F%U;'0Z(&]NF XM"@`@("`@("`@("UT("`@('1I;64@("!O9F8O;VX@("`@("`@("`@("`@("`@! XM9&5F875L=#H@;VX*`"`@("`@("`@+60@("`@9&%T92`@(&]F9B]O;B`@("`@< XM("`@("`@("`@("!D969A=6QT.B!O;@H`("`@("`@("`M9"`@("!D871E("`@5 XM;V9F+V]N("`@("`@("`@("`@("`@(&1E9F%U;'0Z(&]N"@`@("`@("`@("UM' XM("`@(&UE;6]R>2!O9F8O;VX@("`@("`@("`@("`@("`@9&5F875L=#H@;VX*F XM`"`@("`@("`@+6T@("`@;65M;W)Y(&]F9B]O;B`@("`@("`@("`@("`@("!D^ XM969A=6QT.B!O;@H`("`@("`@("`M;R`@("!O;FQI;F4@=&EM92!O9F8O;VX@Y XM("`@("`@("`@(&1E9F%U;'0Z(&]N"@`@("`@("`@("UO("`@(&]N;&EN92!T; XM:6UE(&]F9B]O;B`@("`@("`@("`@9&5F875L=#H@;VX*`"`@("`@("`@+64@: XM("`@16YG;&ES:"!W965K9&%Y<R!O;B]O9F8@("`@("!D969A=6QT.B!'97)M8 XM86X@;VX*`"`@("`@("`@+64@("`@16YG;&ES:"!W965K9&%Y<R!O;B]O9F8@V XM("`@("!D969A=6QT.B!'97)M86X@;VX*`"`@("`@("`@+7(@("`@<F5V97)SV XM92!D871E(&1I<W!L87D@;VXO;V9F("!D969A=6QT.B!O9F8*`"`@("`@("`@D XM+7(@("`@<F5V97)S92!D871E(&1I<W!L87D@;VXO;V9F("!D969A=6QT.B!O$ XM9F8*`"`@("`@("`@+7$@("`@<75I="!-4T-L;V-K"@`@("`@("`@("UQ("`@K XM('%U:70@35-#;&]C:PH`36%R=&EN)W,@0VQO8VLM4&]R=`!-87)T:6XG<R!#D XM;&]C:RU0;W)T`$U30VQO8VLM2&%N9&QE<@!,.DU30VQO8VLM2&%N9&QE<@!-\ XM87)T:6XG<R!#;&]C:RU0;W)T`$EN<W1A;&QA=&EO;B!O9B`;6S%M36%R=&EN< XM(%-T97!P;&5R)W,@0VQO8VL;6S!M(&9A:6QE9"X@1&]N)W0@<&%N:6,A"@!)6 XM;G-T86QL871I;VX@;V8@&ULQ;4UA<G1I;B!3=&5P<&QE<B=S($-L;V-K&ULPX XM;2!F86EL960N($1O;B=T('!A;FEC(0H`36%R=&EN)W,@0VQO8VL`36%R=&EN. XM)W,@0VQO8VLM4&]R=`!);G-T86QL871I;VX@;V8@&ULQ;4UA<G1I;B!3=&5PZ XM<&QE<B=S($-L;V-K&ULP;2!F86EL960N($1O;B=T('!A;FEC(0H`26YS=&%L\ XM;&%T:6]N(&]F(!M;,6U-87)T:6X@4W1E<'!L97(G<R!#;&]C:QM;,&T@9F%I3 XM;&5D+B!$;VXG="!P86YI8R$*`$ET(&ES(&UY('!L96%S=7)E('1O(&EN<W1A7 XM;&P@&ULQ;4UA<G1I;B!3=&5P<&QE<B=S($-L;V-K&ULP;2!F;W(@>6]U(0H`N XM270@:7,@;7D@<&QE87-U<F4@=&\@:6YS=&%L;"`;6S%M36%R=&EN(%-T97!PE XM;&5R)W,@0VQO8VL;6S!M(&9O<B!Y;W4A"@!-87)T:6XG<R!#;&]C:RU0;W)TN XM`$ET(&ES(&UY('-A=&ES9F%C=&EO;B!T;R!C;&]S92`;6S%M36%R=&EN(%-TF XM97!P;&5R)W,@0VQO8VL;6S!M(&%G86EN"@!)="!I<R!M>2!S871I<V9A8W1IU XM;VX@=&\@8VQO<V4@&ULQ;4UA<G1I;B!3=&5P<&QE<B=S($-L;V-K&ULP;2!A> XM9V%I;@H`=VET:"!T:&4@:VYO=VQE9&=E(&]F(&$@:F]B('=E;&P@9&]N92$*\ XM`'=I=&@@=&AE(&MN;W=L961G92!O9B!A(&IO8B!W96QL(&1O;F4A"@``3E7_U XM_$CG``!"K?_\""T````+9P``"@:M````4/_\""T``0`+9P``"@:M````</_\4 XM""T``@`+9P``"@:M````F/_\""T`!0`+9P``"@:M````4/_\2JW__&8```HKZ XM?````%#__"`M__Q,WP``3EU.=4Y5``!(YR`@<``L;(`63J[^8B0`(&R`%B1H& XM`#P@0BQL@!9.KOY<<``P*@`4`H`````/#(`````!9@``%C`J``Q(P`2`````, XM/DS?!`1.74YU)%(@"F;0(#P```)"8.I,[P,```2SR&<,<``0&+`95LC_^F8$Q XM<`!.=6,$<`%.=7#_3G5A<$/L@`Y%[(`.M<EF#C(\`!AK"'0`(L)1R?_\*4^`= XM(BQX``0I3H`.2.>`@`@N``0!*6<02_H`"$ZN_^)@!D*G\U].<T/Z`"!.KOYHD XM*4"`$F8,+CP``X`'3J[_E&`$3KH`&E!/3G5D;W,N;&EB<F%R>0!)^0``?_Y.. XM=4CG`#`F;P`0+PXB/``!```P+(`"+P%(P"(`XXC0@>.((A\L;(`.3J[_.BQ?; XM*4"`)F8>2.<!!IO-+CP``0``+&R`#DZN_Y1,WV"`+FR`(DYU(&R`)D)H``0@; XM;(`F,7P``0`0(&R`)C%\``$`"B!L@"(@+(`BD*@`!%"`*4"`*B!L@"H@O$U!5 XM3E@O#I/)+&R`#DZN_MHL7R1`2JH`K&<R+PLO+P`0+PI.N@#L*7P````!@"X@J XM;(`F6(@`4(``(&R`)M'\````"@!0@`!/[P`,8%8O#D'J`%PL;(`.3J[^@"Q?* XM+PY!Z@!<+&R`#DZN_HPL7RE`@#(@;(`R2J@`)&<B+PX@;(`R(&@`)"(0+&R`D XM$DZN_X(L7R\L@#(O"DZZ`EI03REL@#*`-B\.+&R`$DZN_\HL7R!L@"8@@"\.F XM+&R`$DZN_\0L7R!L@"8A0``&2JH`I&<D2.<@`B0\```#[4'Z`#0B""QL@!).B XMKO_B3-]`!"!L@"8A0``,+RR`-B\L@#I.NNVP4$\O`$ZZ`SQ83TS?#`!.=2H`( XM2.<X,B8O`!PH+P`@)F\`)"!#2J@`K&<4($,@*`"LY8`L0"`N`!#E@"1`8`0D- XM;(`$$!)(@$C`T(14@"E`@#XO#G(`("R`/BQL@`Y.KO\Z+%\I0(!"9@9,WTP<Z XM3G40$DB`2,`D`"\"0>H``2\(+RR`0DZZ`EQ(>@%&($+1[(!"+PA.N@*@+P0O= XM"R\L@$).N@$P(&R`0D(P*``I?`````&`.B1"U>R`0E**)DI/[P`@$!)(@$C`N XM)``,@````"!G(`R"````"6<8#((````,9Q`,@@````UG"`R"````"F8$4HI@& XMS`P2`"!M=@P2`")F*E**$!I(@$C`)`!G'!;"#((````B9A`,$@`B9@12BF`&D XM0BO__V`"8-I@.!`:2(!(P"0`9RP,@@```"!G)`R"````"6<<#((````,9Q0,$ XM@@````UG#`R"````"F<$%L)@RD(;2H)F`E.*4JR`.F``_U)"$R\.<@`@+(`ZH XMY8!8@"QL@`Y.KO\Z+%\I0(`V9@A"K(`Z8`#^U'0`)&R`0F`:(`+E@"!L@#8AT XMB@@`+PI.N@%BU<!2BEA/4H*TK(`Z;>`@`N6`(&R`-D*P"`!@`/Z<(`!,[P,`D XM``0@""(O``Q*&&;\4X@0V5?)__P$@0`!``!J\D(@3G5(YS@R)F\`'"@O`"`OC XM#G``0_H`Q"QL@`Y.KOW8+%\I0(!&9@9,WTP<3G4O#B!$(&@`)"!H``0L;(!&I XM3J[_LBQ?)$!*@&=X+PY#^@"9(&H`-BQL@$9.KO^@+%\L0$J`9U!(YR`")#P`Z XM``/M(B\`!"QL@!).KO_B3-]`!"8`9S(@`^6`)``@0B=H``@`I"=#`)Q(YR`": XM)#P```/M0?H`3B((+&R`$DZN_^),WT`$)T``H"\.($HL;(!&3J[_IBQ?+PXB0 XM;(!&+&R`#DZN_F(L7T*L@$9@`/]0:6-O;BYL:6)R87)Y`%=)3D1/5P`J`$SOK XM`P``!"`((B\`#&`"$-E7R?_\9PP$@0`!``!J\$YU0AA1R?_\!($``0``:O).G XM=2!O``0@"$H89OQ32)'`(`A.=2!O``0@B%B00J@`!"%(``A.=4SO`P``!"`(Z XM$-EF_$YU2JR`2F<4(&R`2B!H``1.D"!L@$HI4(!*8.9*K(!.9P8@;(!.3I`O` XM+P`$3KH`!EA/3G5(YS``)B\`#$JL@"9G-'0`8`HO`DZZ`4I83U*",&R``K'"0 XM;NXO#C`L@`)(P"(`XXC0@>.((FR`)BQL@`Y.KO\N+%]*K(!29P8@;(!23I!*1 XMK(`(9Q`O#B(L@`@L;(`23J[_IBQ?2JR`5F<((&R`5B"L@%I*K(!>9Q`O#B)LM XM@%XL;(`.3J[^8BQ?2JR`8F<0+PXB;(!B+&R`#DZN_F(L7TJL@&9G$"\.(FR`2 XM9BQL@`Y.KOYB+%]*K(!J9Q`O#B)L@&HL;(`.3J[^8BQ?2.<`!BQX``0(+@`$C XM`2EG$$OZ``A.KO_B8`9"I_-?3G,J7TJL@#)F-$JL@$)G+"\.("R`/B)L@$(L& XM;(`.3J[_+BQ?+PX@+(`ZY8!8@")L@#8L;(`.3J[_+BQ?8!PO#BQL@`Y.KO]\B XM+%\O#B)L@#(L;(`.3J[^ABQ?+PXB;(`2+&R`#DZN_F(L7R`#+FR`(DYU3-\`P XM#$YU2.<@("0O``P@`B(`XXC0@>.()$#5[(`F2H)M##!L@`*QPF\$2I)F$"E\3 XM`````X!N</],WP0$3G4P*@`$`D"``&8.+PXB$BQL@!).KO_<+%]"DG``8-P`G XM`````^P````!`````0``$.`````````#\@```^H````#`!0`````````````: X0```#\@```^L````!```#\N``Y X`` Xend Xsize 6136 END_OF_FILE if test 8630 -ne `wc -c <'c/MSClock.uu'`; then echo shar: \"'c/MSClock.uu'\" unpacked with wrong size! fi # end of 'c/MSClock.uu' fi if test ! -d 'l' ; then echo shar: Creating directory \"'l'\" mkdir 'l' fi if test -f 'l/MSClock-Han.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'l/MSClock-Han.uu'\" else echo shar: Extracting \"'l/MSClock-Han.uu'\" \(12674 characters\) sed "s/^X//" >'l/MSClock-Han.uu' <<'END_OF_FILE' Xbegin 666 MSClock-Handler XM```#\P`````````#``````````(```:L0```U$```#,```/I```&K$[Z"91TK XM;W!A>BYF;VYT``!.5?]02.<(()/)+'D````\3J[^VB1`0>W_C$/Y````5'`-C XM(-E1R/_\0JW_8$*M_UQ"K?]8*WS______U1*J@"L9P``#'`*3-\$$$Y=3G5#> XM^0``"$PL>0```#Q.KOYZ(\````!`9@``!G`*8-IP`$/Y```(8"QY````/$ZN6 XM_=@CP````$1F```@(#P``"``('D```!`(F@`*BQY````/$ZN_KQP%&"@<`!#9 XM^0``"'(L>0```#Q.KOW8(\````!(9@``,B)Y````1"QY````/$ZN_F(@/```@ XM(``@>0```$`B:``J+'D````\3J[^O'`48`#_5G``0_D```B#+'D````\3J[]. XMV"/`````3&8``$(B>0```$@L>0```#Q.KOYB(GD```!$+'D````\3J[^8B`\' XM```@`"!Y````0")H`"HL>0```#Q.KOZ\<!1@`/[Z0J=(>0``"(].N0``"J10F XM3R/`````4&<``')R`$'Y````4")(<`%!^0``")HL>0```#Q.KOY$2H!F``!&C XM(_D```!0````7C/\``D```!L0CD```!N0CD```!O0KD```!P(_P`#T)`````< XM=$'Y````4")(+'D````\3J[^,F````A.N0``"1)@```(3KD```D2D\DL>0``* XM`#Q.KO[:('D```!`(4``+B!Y````0"%\`````0!&('D```!`#*@````!`$9FO XM``"4('D```!`(7P````"`$8@>0```$`SZ``T````'"!Y````0#/H`#@````@B XM0?D````<+'D```!$3J[_-"/`````3&<``#`@>0```$P@:`"`#&@`"``48P``4 XM#D'Y`````"/(````$"!Y````0$*H`$9@```(3KD```D2(#P``"``('D```!`K XM(F@`*BQY````/$ZN_KP@>0```$!*J`!&9@`$*G("+'D````\3J[_*'(*XJ`K1 XM0/]H<@0L>0```#Q.KO\H<@KBH"M`_V1![?^`(@@L>0```'A.KO]`("W_@`2`L XM```(RRM`_WP@+?]\Y8!6@"(\```%M4ZY```3UBM`_VP@+?]L(CP```6U3KD`Q XM``J`<@1.N0``$]:1K?]\!JT```?`_VP@+?]\(@#EB-"!5(`B/````)E.N0``( XM$]8K0/]T("W_="(\````F4ZY```*@%2`<@5.N0``$]8B+?]\DH!2@2M!_W!6J XMK?]T('D```!`*V@`/O]\#*T````,_W1O```.4JW_;`2M````#/]T0CD`````/ XM""T``O]_9P``*B\M_V@O+?]D("W_:-"M_V0O`$AY```(ITAY`````$ZY```*- XM'$_O`!0(+0`%_W]G``#*<``0.0"_T``(```%9@``?B!Y````0$JH`#IF```<7 XM0JW_6$*M_UQ"K?]@('D```!`(7P````!`#H@+?^(<C).N0``$]:PK?]49P``. XM/B`M_XAR,DZY```3UBM`_U12K?]8#*T````\_UAF```>0JW_6%*M_UP,K0``C XM`#S_7&8```I"K?]<4JW_8&````P@>0```$!"J``Z+RW_6"\M_UPO+?]@2'D`^ XM``B\2&W_Q$ZY```*'$_O`!1(;?_$2'D`````3KD```IL4$\(+0`!_W]G``&P< XM""T``_]_9P``"'`'8```!'``*T#_>`@M``3_?V<``,(@;?]L2&CXE"\M_W`O@ XM+?]T("W_;`RM`````_]T;```"'(!8```!'(`D(%R!$ZY```3UB\`("W_="(`, XMXXC0@2(?TH`@`="M_W#0K?]L#*T````"_W1O```(<@%@```$<@#2@9"!+P`@E XM+?]T4X`,K0````C_=&\```AR`6````1R`)"!<@).N0``$]8B'Y*`(`%4@'('= XM3KD``!/^T*W_>.6`0>W_C"\P"`!(>0``"-!(;?_$3KD```H<3^\`&&```+X@C XM;?]L2&CXE"\M_W0O+?]P("W_;`RM`````_]T;```"'(!8```!'(`D(%R!$ZY@ XM```3UB\`("W_="(`XXC0@2(?TH`@`="M_W#0K?]L#*T````"_W1O```(<@%@V XM```$<@#2@9"!+P`@+?]T4X`,K0````C_=&\```AR`6````1R`)"!<@).N0``< XM$]8B'Y*`(`%4@'('3KD``!/^T*W_>.6`0>W_C"\P"`!(>0``".=(;?_$3KD`J XM``H<3^\`&$AM_\1(>0````!.N0``"FQ03P@M``#_?V<``%(@+?^(<C).N0``\ XM$]8O`"`M_X1R/$ZY```3_B\`("W_A'(\3KD``!/6+P!(>0``"/Y(;?_$3KD`` XM``H<3^\`%$AM_\1(>0````!.N0``"FQ03W(`<`!!^0````@B2"!Y````3"!H( XM`#(L>0```$1.KO\H('D```!0<``0*``/<@'AH0"!```P`"`!+'D````\3J[^` XMPB@`"`0`#6<``&).N0``"1(B>0```$0L>0```#Q.KOYB(GD```!(+'D````\. XM3J[^8B)Y````3"QY````/$ZN_F(L>0```#Q.KO]\(#P``"``('D```!`(F@`W XM*BQY````/$ZN_KQP`&``^.`(!``,9P``0DJY````3&<``!@@>0```$PL>0``" XM`$1.KO^X0KD```!,('D```!`(GD```!`(V@`0@`^('D```!`(7P````!`$8@: XM>0```%!P`!`H``]R`>&A(`3`@6<``#H@>0```%`L>0```#Q.KOZ,2H!G```D@ XM0KD```!P(_P`#T)`````=$'Y````4")(+'D````\3J[^,F``^@!3;VX`36]N$ XM`$1I90!-:70`1&]N`$9R90!386T`4W5N`$UO;@!4=64`5V5D`%1H=0!&<FD`; XM4V%T`$UA<G1I;B=S($-L;V-K+5!O<G0`:6YT=6ET:6]N+FQI8G)A<GD`9W)A+ XM<&AI8W,N;&EB<F%R>0!D;W,N;&EB<F%R>0!4:6UE<B!0;W)T`'1I;65R+F1E! XM=FEC90!!.B4M-&0@1CHE+31D($,Z)2TS9``@("4P,FQD.B4P,FQD.B4P,FQD5 XM`"`@)7,@)3`R;&0M)3`R;&0M)3`R;&0`("`E<R`E,#)L9"XE,#)L9"XE,#)L, XM9``@("4P,FQD.B4P,FQD.B4P,FQD`$Y5``!(YP``2KD```!09P``$B!Y````4 XM4"QY````/$ZN_HQ*N0```%YG```40?D```!0(D@L>0```#Q.KOX^2KD```!0S XM9P``%B\Y````4$ZY```+5%A/0KD```!02KD```!,9P``&"!Y````3"QY````E XM1$ZN_[A"N0```$Q,WP``3EU.=6%\0_D```-01?D`````M<EF#C(\`#)K"'0`Z XM(L)1R?_\(\\```!\+'@`!"/.````/$CG@(`(+@`$`2EG$$OZ``A.KO_B8`9"8 XMI_-?3G-#^@`D3J[^:"/`````>&8,+CP``X`'3J[_E&`&3KD````04$].=61O_ XM<RYL:6)R87)Y`$GY``!__DYU3E7_ZDCG(#`D;0`(0>T`$"9(.WQ$"/_V*TK_4 XMZBM*__(K2O_N!JT``'___^XO"R\M``Q(;?_J3KD```NL)`!",B@`(`)/[P`,Z XM3-\,!$Y=3G5,[P,```0@"$H89OQ32!#99OQ.=4CG<``T`<3`)@%(0\;`2$-"= XM0]2#2$#`P4A`0D#0@DS?``Y.=4CG(#`F;P`0+PYP_RQY````/$ZN_K8L7R0`+ XM#(#_____9@AP`$S?#`1.=2\.(CP``0`!<"(L>0```#Q.KO\Z+%\D0$J`9A0O+ XM#B`"+'D````\3J[^L"Q?<`!@RB5+``H5;P`7``D5?``$``A"*@`.%4(`#R\.X XMD\DL>0```#Q.KO[:+%\E0``0(`MG$B\.(DHL>0```#Q.KOZ>+%]@#D'J`!0O^ XM"$ZY```0REA/(`I@`/]V2.<`("1O``A*J@`*9Q`O#B)*+'D````\3J[^F"Q?5 XM%7P`_P`()7S_____`!0O#G``$"H`#RQY````/$ZN_K`L7R\.<"(B2BQY````U XM/$ZN_RXL7TS?!`!.=4Y5_?1(YS\R)FT`""QM`!!^`"1M``P6$F8*(`=,WTS\G XM3EU.=5**#`,`)6=$)`<@4['K``1D#"!34I,0@W``$`-@$'``$`,O`"\+3KD`H XM`!$(4$\,@/____]G``2*4H(6$F8$(`)@ME**#`,`)6;`+@)X`"M\````(/_\S XM%AIP`!`#8&H(Q```8/((Q``!8.P(Q``"8.8(Q``#8.!-[@`$)"[__$J";`8(I XMQ```1((6&F!8*WP````P__QT`&`8(`+G@'(`$@/0@=""T((D``2"````,!8:_ XM<``0`T'Y````C1`P``!(@`@```)FTF`<!$``(&><5T!GGE]`9Z!30&>*54!GY XM@%=`9ZI@L"M"__@D/```?<8,`P`N9F`6&@P#`"IF%DWN``0D+O_\2H)L!B0\1 XM``!]QA8:8#)T`&`8(`+G@'(`$@/0@=""T((D``2"````,!8:<``0`T'Y````] XMC1`P``!(@`@```)FT@R"``!]QF<(*WP````@__PJ`@P#`&AF!@C$``=@%@P#` XM`&QF!@C$``9@"@P#`$QF!@C$``@6&BM*``QP`!`#8``!I&```S@(!``'9PQ-6 XM[@`$(&[__#"'8!P(!``&9PQ-[@`$(&[__""'8`I-[@`$(&[__""'=`!@``&X( XM3>X`!"1N__PO"DZY```0N"0`#(4``'W&6$]G!K2%;P(D!6```9)-[@`$%B[_H XM_T'M_?@D2!"#=`%@``%\=`A@$`!$`$AV>'008`8(Q``$=`H,`P!89@A!^@*P3 XM(`A@!D'Z`KD@""M`_?0(!``&9PI-[@`$+"[__&`8"`0`!&<*3>X`!"PN__Q@, XM"$WN``0L+O_\"`0`!&<*2H9L!D2&",0`!4'M__@D2`R%``!]QF8">@%*AF8$\ XM2H5G("`&(@).N0``%!@@;?WT%3`(`"`&(@).N0``%"0L`&;@0>W_^)'*)`@(- XM!``#9VX,`P!O9A1*@F<*#!(`,&<(M(5M!"H"4H5@5`P#`'AG!@P#`%AF2$J"$ XM9T0,$@`P9SZTA6P00>W]^K'*9`@5/``P4H)@[`@$``!F'`RM````,/_\9A(@* XM`E2`L*W_^&P(*BW_^%6%8,H5`Q4\`#!4@K2%;!!![?WXL<ID"!4\`#!2@F#L_ XM8$P$0``E9P#^O@1``#-G`/[.!$``"V<`_J930&<`_L1;0&<`_KY;0&<`_CI3# XM0&<`_J130&<`_J)70&<`_EQ50&<`_J170&<`_I9@`/X4"`0`!&<H"`0`!6<&Z XM%3P`+6`:"`0``6<&%3P`*V`."`0``F<&%3P`(&`"4X)2@MZ""`0``&8``)0,% XMK0```##__&9$"`0`!&<^,`0"0``F9S8@4['K``1D#B!34I,0FG``$"K__V`0/ XM<``0&B\`+PM.N0``$0A03PR`_____V<``,Y3K?_X4X)@-B!3L>L`!&00(%-2M XMDQ"M__]P`!`M__]@$G``$"W__R\`+PM.N0``$0A03PR`_____V<``))2AR`ME XM__A3K?_XL()NOBH"(`)3@DJ`9S`@4['K``1D#B!34I,0FG``$"K__V`0<``0O XM&B\`+PM.N0``$0A03PR`_____V=*8,@(!```9SXD!6`N(%.QZP`$9`X@4U*3H XM$+P`('``<"!@#DAX`"`O"TZY```1"%!/#(#_____9Q)2AR`M__A3K?_XL()NH XMQF``^S!P_V``^S0P,3(S-#4V-S@Y04)#1$5&`#`Q,C,T-38W.#EA8F-D968`3 XM(&\`!"`(2AAF_%-(D<`@"$YU(&\`!""(6)!"J``$(4@`"$YU2.<`($'Y```!E XMCB1(+PI.N0``$I)83]7\````%D'Y```#1K7(9>9,WP0`3G5(YSP@)&\`&"@OV XM`!P@"F<``70T*@`,9P`!;`@"``EF``%D"`(``V8``5Q!Z@`,`E#O_4JJ``AFE XM'@R$_____V8(<`!,WP0\3G4O"DZY```4?C0J``Q83P@"``YF-B!2L>H`"&,@E XM2'@``2`2D*H`!"\`$"H`#DB`2,`O`$ZY```62D_O``PDJ@`((&H`$-'2)4@`8 XM!`R$_____V8$=@!@`A8$(!*0J@`(*@`P`@)``*!G2`R$_____V<<(%)2DA"#% XM0>H`#`C0``8T$$'Z_PHCR````(!2A0R$_____V<,#`,`"F<&NJH`$&4$>/]@8 XM#"52``1P`!`#8`#_3`@"``YG*DJ%9QXO!2\J``@0*@`.2(!(P"\`3KD``!<F2 XML(5/[P`,9E!!Z@`,")``!@R$_____V82)*H`""5J``@`!'``$`-@`/\"0?K^< XMD"/(````@$'J``P(T``&)*H`""!J`!#1TB5(``0@4E*2$(-P`!`#8`#^U$'J= XM``P(Z``"``$E:@`(``0DJ@`(</]@`/ZZ3E7_]DCG."`D;0`(=``@"F<&2FH`N XM#&8*</],WP0<3EU.=0@J``$`#&8,+PI.N0``$W"$@%A/$"H`#DB`2,`O`$ZY1 XM```:4H2`""H````-6$]G#"\J``A.N0``%/I83TIJ`!1G6$AZ`'1(;?_W3KD`5 XM`!70."H`%'8`4$]P`#`$<@I.N0``$_X&@````#!R!Y*#0>W_]Q&`&`!(1$)$+ XM2$2(_``*4H,,@P````5MSD(M__](;?_W3KD``!;J6$]"DD*J``1"J@`(0FH`H XM#$J"9P9P_V``_TAP`&``_T)435``2.<`("1O``@@"F9*0?D```&.)$A*:@`,6 XM9R@P*@`,`D`""&8>2'C__R\*3KD``!$(#(#_____4$]F"'#_3-\$`$YUU?P`C XM```60?D```-&M<AEPG``8.9(>/__+PI.N0``$0A03V#62.=(`$*$2H!J!$2`8 XM4D1*@6H&1($*1``!83Y*1&<"1(!,WP`22H!.=4CG2`!"A$J`:@1$@%)$2H%J- XM`D2!81H@`6#8+P%A$B`!(A]*@$YU+P%A!B(?2H!.=4CG,`!(04I!9B!(038!+ XM-`!"0$A`@,,B`$A`,@*"PS`!0D%(04S?``Q.=4A!)@$B`$)!2$%(0$)`=`_06 XM@-.!MH%B!)*#4D!1RO_R3-\`#$YU2.<@("1O``QT01`J``Y(@$C`+P!.N0``O XM%=Y*@%A/9P1T(6`*0?D```&ZM<AG&B5\```$```02'@$`$ZY```5?B5```A89 XM3V84)7P````!`!!!Z@`/)4@`"#0\`(!!Z@`,<``P$#("2,&`@3"`)6H`"``$* XM)*H`"$S?!`1.=4CG`#(L;P`0E\LD>0```(1@#$'J``B]R&<.)DHD4B`*9O!,F XMWTP`3G4@"V<$)I)@!B/2````A"\.("H`!%"`(DHL>0```#Q.KO\N+%]@U$CG: XM`#`D>0```(1@&B92+PX@*@`$4(`B2BQY````/$ZN_RXL7R1+(`IFXD*Y````[ XMA$S?#`!.=4CG("`D+P`,2H)F"'``3-\$!$YU+PYR`"`"4(`L>0```#Q.KO\ZC XM+%\D0$J`9@1P`&#<0?K_EB/(````B"2Y````A"5"``0CR@```(0@"E"`8+Q,Q XM[P,```0@"!#99OQ.=4CG("`D+P`,(`(B`..(T('CB"1`U?D```",2H)M#C!Y3 XM```#1K'";P1*DF82(_P````#````D'#_3-\$!$YU+PX@`B(`XXC0@>.(('D`; XM``",(C`(`"QY````>$ZN_R@L7TJ`9P1P`6`"<`!@S$CG,"`D+P`03KD``!?F[ XM(`(B`..(T('CB"1`U?D```",2H)M#C!Y```#1K'";P1*DF82(_P````#````^ XMD'#_3-\$#$YU2.<P`B`O`"13@"8`)"\`("(2+'D```!X3J[_ODS?0`PF``R`P XM_____V88+PXL>0```'A.KO]\+%\CP````)!P_V"X2.<P`G8`=``B$BQY````T XM>$ZN_[Y,WT`,8)Y(YP`@)&\`""\.(@HL>0```'A.KO^X+%]*@&8<+PXL>0``" XM`'A.KO]\+%\CP````)!P_TS?!`!.=7``8/9(YS`P)"\`%"9O`!A.N0``%^8@; XM`B(`XXC0@>.()$#5^0```(Q*@FT.,'D```-&L<)O!$J29A(C_`````,```"0N XM</],WPP,3G4P*@`$`D```V8.(_P````&````D'#_8.((*@`#``1G&$CG,`)V! XM`70`(A(L>0```'A.KO^^3-]`#$CG,`(F+P`H)`LB$BQY````>$ZN_]!,WT`,6 XM)@`,@/____]F&"\.+'D```!X3J[_?"Q?(\````"0</]@AB`#8()(YR``+PXB# XM/```$`!P`"QY````/$ZN_LXL7R0`"```#&<62KD```"49@@@`DS?``1.=4ZY% XM```8(G``8/!(YS`"=@1!^@`T)`@O`R\"+'D```!X3J[_Q"(`)!\F'RQY````^ XM>$ZN_]!,WT`,2'@``4ZY```88EA/3G5>0PH`2KD```"89QH@>0```)@@:``$J XM3I`@>0```)@CT````)A@WDJY````@&<(('D```"`3I`O+P`$3KD``!BB6$].9 XM=4CG,``F+P`,2KD```",9SYT`&`,+P).N0``&E)83U*",'D```-&L<)NZB\.B XM,#D```-&2,`B`..(T('CB")Y````C"QY````/$ZN_RXL7TJY````B&<(('D`2 XM``"(3I!*N0```TQG%"\.(CD```-,+'D```!X3J[_IBQ?2KD```"<9PP@>0``. XM`)P@N0```*!*N0```*1G%"\.(GD```"D+'D````\3J[^8BQ?2KD```"H9Q0O0 XM#B)Y````J"QY````/$ZN_F(L7TJY````K&<4+PXB>0```*PL>0```#Q.KOYB$ XM+%]*N0```+!G%"\.(GD```"P+'D````\3J[^8BQ?2.<`!BQX``0(+@`$`2EGQ XM$$OZ``A.KO_B8`9"I_-?3G,J7TJY````M&9"2KD```"X9S@O#B`Y````O")Y+ XM````N"QY````/$ZN_RXL7R\.(#D```#`Y8!8@")Y````Q"QY````/$ZN_RXLU XM7V`B+PXL>0```#Q.KO]\+%\O#B)Y````M"QY````/$ZN_H8L7R\.(GD```!X) XM+'D````\3J[^8BQ?(`,N>0```'Q.=4S?``Q.=4CG("`D+P`,(`(B`..(T('C\ XMB"1`U?D```",2H)M#C!Y```#1K'";P1*DF82(_P````#````D'#_3-\$!$YU0 XM,"H`!`)`@`!F$"\.(A(L>0```'A.KO_<+%]"DG``8-H```/L````20``````\ XM``!@````@````+H```$&```!8@```6@```&&```!X````>H```*8```#&@``W XM`RX```,V```#6@```VX```-X```#U````^````0R```$1@``!)8```2@```$O XMM```!1(```5J```%>@``!8X```68```%T@``!BH```8Z```&3@``!E@```9L4 XM```&A```!I(```:@```&J```!K(```;&```'&@``"6(```H````*5```"T@`! XM``OX```-F@``#DP```Y>```/M```#_```!`X```0<```$.P``!%4```1A```P XM$AP``!+````2U```$NH``!,````3%```$T@``!.<```3S@``%)0``!2Z```63 XM5```%S0``!@:```85@``&)H``!BZ````*P````$````L```!<````9P```(\G XM```"2@```E````)@```":@```GX```*$```&T@``!MH```;N```'@@``!XP`Z XM``><```'P@``!]H```D<```))@``"5(```E<```):@``"7````EZ```)B@``C XM"9H```H6```,A@``#00``!#B```0^@``$WX``!.Z```4I```%?X``!9P```7H XM4```&,0``!C0```9`@``&0P``!IR````K`````(````<````9@```'````"&& XM````D````*````"J````P````,H```#4````V@```.H```#T```!#````18`4 XM``$@```!)@```3````$V```!1@```5````%\```!C````:````&H```!K@``+ XM`;0```&Z```!Q````<H```'2```!\@```?P```(&```"%````B8```(T```"! XM0@```E8```**```"I````JX```*X```"R````MP```+T```#C@```[(```/:W XM```$!```!!X```2````$K@``!F8```;````&Y```!P8```<@```')@``!S``4 XM``<V```'0```!T8```=0```'8```!VH```>2```'H@``!Z@```>T```'X```3 XM!_````?Z```(````"`@```DL```)-@``"4````E(```)@```":````FX```): XMP@``">P```JR```*V@``"O````L<```+-```"V@```N*```+G```$=8``!)0O XM```5!@``%2P``!4\```53@``%6(``!5T```5G```%;8``!6\```5Q@``%?0`! XM`!80```6*@``%C0``!9F```6@@``%J(``!:\```6R```%MP``!;X```7"@``- XM%Q8``!=&```78@``%WX``!>:```7M```%\X``!?:```7]@``&`H``!@T```8] XM1```&&0``!AL```8>```&'X``!B&```8C@``&*P``!C@```8Y@``&/(``!CZ$ XM```9$@``&1X``!DF```9+```&3(``!D\```90@``&4X``!E8```97@``&6H`S XM`!ET```9>@``&88``!F0```9E@``&<0``!G,```9U@``&=P``!GB```9\```! XM&?H``!H````:$```&AX``!HD```:,@``&C@``!I&```::```&H0``!J@````E XM`````_(```/J````U`````0`"`````$!````````````````````````D@`!7 XM`;``"`$`````````"`````````````````````````````````````````$`# XM````````````"!0```@8```('```""````@D```(*```""P```@P```(-```, XM"#@```@\```(0```"$0```A(`"`@("`@("`@(#`P,#`P("`@("`@("`@("`@X XM("`@("`@D$!`0$!`0$!`0$!`0$!`0`P,#`P,#`P,#`Q`0$!`0$!`"0D)"0D)^ XM`0$!`0$!`0$!`0$!`0$!`0$!`0%`0$!`0$`*"@H*"@H"`@("`@("`@("`@("J XM`@("`@("`D!`0$`@````````````````````````````````````````````N XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM`````````````````````````@````````$```````````````````0``0``( XM```!```````````````````$``(``````0``````````````````````````( XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````%```4 XM```````````#[`````$````"````%`````\``````````````%0```!8````! XM7````&````!D````:````&P```!P````=````'@```!\````@````(0```"(8 X4`````````_(```/K````,P```_)P[ X`` Xend Xsize 9020 END_OF_FILE if test 12674 -ne `wc -c <'l/MSClock-Han.uu'`; then echo shar: \"'l/MSClock-Han.uu'\" unpacked with wrong size! fi # end of 'l/MSClock-Han.uu' fi if test ! -d 'source' ; then echo shar: Creating directory \"'source'\" mkdir 'source' fi if test -f 'source/MSClock-Handler.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'source/MSClock-Handler.c'\" else echo shar: Extracting \"'source/MSClock-Handler.c'\" \(7683 characters\) sed "s/^X//" >'source/MSClock-Handler.c' <<'END_OF_FILE' X/* X * MSClock-Handler.c (c) 12.02.91 by Martin Steppler X */ X X// includes X X#include <stdio.h> X#include <libraries/dos.h> X#include <libraries/dosextens.h> X#include <devices/inputevent.h> X#include <devices/printer.h> X#include <devices/timer.h> X#include <devices/input.h> X#include <graphics/gfx.h> X#include <graphics/gfxbase.h> X#include <graphics/gfxmacros.h> X#include <intuition/intuition.h> X#include <intuition/intuitionbase.h> X#include <exec/exec.h> X#include <hardware/cia.h> X#include <functions.h> X X// prototypes X Xvoid ciao(void); X X// reference to the absolute address of ciab X Xextern struct CIA ciab; X X// defines X X#define SIG_CHANGE SIGBREAKF_CTRL_C X#define SIG_CLOSE SIGBREAKF_CTRL_D X#define CHILD_READY SIGBREAKF_CTRL_D X#define EOS 0 X#define PORTNAME "Martin's Clock-Port" X Xstruct TheClock X{ X struct MsgPort Port; // Global messageport. X BPTR Segment; // Pointer to handler segment. X LONG SegSize; // Size of TheClock structure. X struct Task *Father; // Calling process. X struct Task *Child; // Waiting process X int LeftEdge; // LeftEdge of our window X int Width; // Width of our window X int Online; // Online flag X int Flags; // display-flags X int FlagsBackup; // backup of the display-flags X int Status; // status-flag X}; X X// globals X Xchar DateBuf[60]; Xstruct TextAttr TopazText = { (UBYTE *)"topaz.font",8,0,0}; Xstruct IntuiText TextPrint = { 0,1,JAM2,0,0,NULL,(UBYTE *)DateBuf,NULL}; Xstruct NewWindow ClockWindow = { 146,1,432,8,1,0,EOS, BORDERLESS, NULL,NULL,EOS,NULL,NULL,0,0,0,0,WBENCHSCREEN}; Xstruct Window *Window=NULL; Xstruct timerequest TimeReq; Xstruct MsgPort *TimerPort=NULL; Xstruct IntuitionBase *IntuitionBase; Xstruct GfxBase *GfxBase; Xstruct DosLibrary *DosBase; Xstruct TheClock *TheClock; X X /* _main(): X * X * Modified Aztec C startup-routine, no CLI parsing, X * no Workbench parsing, absolutely nothing. X */ X Xlong X_main() X{ X register struct Process *ThatsMe = (struct Process *)FindTask(NULL); X register ULONG SignalSet; X char TempBuf[60]; X char *Days[14]={ "Son","Mon","Die","Mit","Don","Fre","Sam", X "Sun","Mon","Tue","Wed","Thu","Fri","Sat" }; X struct DateStamp Date; X long n,eng,Month,Day,Year,chip_free,fast_free,hh=0,mm=0,ss=0,lastsec=-1; X int i; X X // If somebody called us from CLI... X X if(ThatsMe -> pr_CLI) return(10); X X // Is the TheClock structure anywhere? X X if(!(TheClock = (struct TheClock *)FindPort(PORTNAME))) return(10); X X // open libraries X X if(!(IntuitionBase = OpenLibrary("intuition.library",0))) { X Signal(TheClock -> Father, CHILD_READY); X return(20); X } X if(!(GfxBase = OpenLibrary("graphics.library",0))) { X CloseLibrary(IntuitionBase); X Signal(TheClock -> Father, CHILD_READY); X return(20); X } X if(!(DosBase = OpenLibrary("dos.library",0))) { X CloseLibrary(GfxBase); X CloseLibrary(IntuitionBase); X Signal(TheClock -> Father, CHILD_READY); X return(20); X } X X if(TimerPort=(struct MsgPort *) CreatePort("Timer Port",0)) { X if(OpenDevice(TIMERNAME,UNIT_VBLANK,(struct IORequest *)&TimeReq,0)==(long)NULL) { X TimeReq.tr_node.io_Message.mn_ReplyPort=TimerPort; X TimeReq.tr_node.io_Command=TR_ADDREQUEST; X TimeReq.tr_node.io_Flags=0; X TimeReq.tr_node.io_Error=0; X TimeReq.tr_time.tv_secs=0; X TimeReq.tr_time.tv_micro=1000000; // delay X SendIO((struct IORequest *) &TimeReq.tr_node); X } X else ciao(); X } X else ciao(); X X TheClock -> Child = (struct Task *)FindTask(NULL); X TheClock -> Status = 1; X X // Go into infinite loop waiting for signals. X X FOREVER X { X if(TheClock -> Status == 1) { // switch clock on X TheClock -> Status = 2; X ClockWindow.LeftEdge = TheClock -> LeftEdge; X ClockWindow.Width = TheClock -> Width; X if(Window=(struct Window *) OpenWindow(&ClockWindow)) { X if(Window->IFont->tf_YSize>8) TextPrint.ITextFont=&TopazText; X TheClock->Status = 0; X } X else ciao(); X X // Tell father to finish. X X Signal(TheClock -> Father, CHILD_READY); X } X if(!TheClock->Status) { // show mem, date, online-time and/or time X chip_free = AvailMem(MEMF_CHIP) >> 10; X fast_free = AvailMem(MEMF_FAST) >> 10; X DateStamp((struct DateStamp *)&Date) ; X n = Date.ds_Days - 2251; X Year = (4 * n + 3) / 1461; X n -= 1461 * Year / 4; X Year += 1984; X Month = (5 * n + 2) / 153; X Day = n - (153 * Month + 2) / 5 + 1; X Month += 3; n=TheClock->Flags; X if(Month>12) { Year++; Month -= 12; } X DateBuf[0]=EOS; X if(n & 4) sprintf(DateBuf, "A:%-4d F:%-4d C:%-3d", chip_free+fast_free, fast_free, chip_free); X if(n & 32) { X X // Check port a of cia b. Is there a carrier? X X if(!(ciab . ciapra & CIAF_COMCD)) // Online ? X { X if(!TheClock -> Online) { // Time reset X hh=mm=ss=0; TheClock -> Online = TRUE; X } X X // Increment time counter. X X if(lastsec != Date.ds_Tick/TICKS_PER_SECOND) { X lastsec = Date.ds_Tick/TICKS_PER_SECOND; X if(++ss == 60) { X ss=0; if(++mm == 60) { mm=0; ++hh; } X } X } X } X else TheClock -> Online = FALSE; X sprintf(TempBuf, " %02ld:%02ld:%02ld", hh, mm, ss); X strcat(DateBuf,TempBuf); X } X if(n & 2) { X eng = (n & 8) ? 7:0; X if(n & 16) sprintf(TempBuf, " %s %02ld-%02ld-%02ld", Days[(Day + Year + (Year - (Month < 3)) / 4 + 3 * Month - 2 * (Month > 2) - (Month - 1 - (Month > 8)) / 2 + 2) % 7 +eng], Month, Day, Year-1900); X else sprintf(TempBuf, " %s %02ld.%02ld.%02ld", Days[(Day + Year + (Year - (Month < 3)) / 4 + 3 * Month - 2 * (Month > 2) - (Month - 1 - (Month > 8)) / 2 + 2) % 7 +eng], Day, Month, Year-1900); X strcat(DateBuf,TempBuf); X } X if(n & 1) { X sprintf(TempBuf, " %02ld:%02ld:%02ld", Date.ds_Minute/60, Date.ds_Minute%60, Date.ds_Tick/TICKS_PER_SECOND); X strcat(DateBuf, TempBuf); X } X PrintIText(Window->RPort,&TextPrint, 0,0); X } X SignalSet = Wait(SIG_CLOSE | SIG_CHANGE | (1 << TimerPort->mp_SigBit)); X if(SignalSet & SIG_CLOSE) { X ciao(); X CloseLibrary(IntuitionBase); X CloseLibrary(GfxBase); X CloseLibrary(DosBase); X Forbid(); X Signal(TheClock -> Father, CHILD_READY); X return(0); X } X else if(SignalSet & SIG_CHANGE) { X if(Window) { CloseWindow(Window); Window = NULL; } X TheClock->Flags = TheClock->FlagsBackup; X TheClock->Status = 1; X } X if(SignalSet & (1 << TimerPort->mp_SigBit)) { X if(GetMsg(TimerPort)) { X TimeReq.tr_time.tv_secs=0; X TimeReq.tr_time.tv_micro=1000000; X SendIO((struct IORequest *) &TimeReq.tr_node); X } X } X } X} Xvoid Xciao(void) X{ X if(TimerPort) GetMsg(TimerPort); X if(TimeReq.tr_node.io_Message.mn_ReplyPort) CloseDevice((struct IORequest *)&TimeReq); X if(TimerPort) { DeletePort(TimerPort); TimerPort = NULL; } X if(Window) { CloseWindow(Window); Window = NULL; } X} END_OF_FILE if test 7683 -ne `wc -c <'source/MSClock-Handler.c'`; then echo shar: \"'source/MSClock-Handler.c'\" unpacked with wrong size! fi # end of 'source/MSClock-Handler.c' fi if test -f 'source/MSClock.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'source/MSClock.c'\" else echo shar: Extracting \"'source/MSClock.c'\" \(8715 characters\) sed "s/^X//" >'source/MSClock.c' <<'END_OF_FILE' X/* X * MSClock.c (c) by Martin Steppler 12.02.91 X * X * Yet another clock utility for use with L:MSClock-Handler X */ X X// includes X X#include <stdio.h> X#include <libraries/dos.h> X#include <devices/timer.h> X#include <devices/input.h> X#include <intuition/intuition.h> X#include <intuition/intuitionbase.h> X#include <exec/exec.h> X#include <functions.h> X X//defines X X#define SIG_CHANGE SIGBREAKF_CTRL_C X#define SIG_CLOSE SIGBREAKF_CTRL_D X#define CHILD_READY SIGBREAKF_CTRL_D X#define EOS 0 X#define PORTNAME "Martin's Clock-Port" X#define WriteStdOut(str) Write(StdOut, str, (LONG)strlen(str)) X X#define TIME_WIDTH 80 X#define DATE_WIDTH 112 X#define ONLINE_WIDTH 80 X#define MEM_WIDTH 152 X#define FRONTBACKGAD_WIDTH 62 X X// prototypes X Xlong Chk_Abort() { return(0); } Xvoid main(int, char **); Xint GetWidth(int DefFlag); Xint GetOverscan(void); X X// globals X Xstruct TheClock X{ X struct MsgPort Port; // Global messageport. X BPTR Segment; // Pointer to handler segment. X LONG SegSize; // Size of TheClock structure. X struct Task *Father; // Calling process. X struct Task *Child; // Waiting process X int LeftEdge; // LeftEdge of our window X int Width; // Width of our window X int Online; // online-flag X int Flags; // display-flags X int FlagsBackup; // backup of the display-flags X int Status; // status-flag X}; X Xstruct IntuitionBase *IntuitionBase; Xstruct DosLibrary *DosBase; Xstruct TheClock *TheClock; X X// here we go ... X Xvoid Xmain(argc, argv) Xint argc; Xchar *argv[]; X{ X register struct Process *ThatsMe = (struct Process *)FindTask(NULL); X int DefFlag = 39; // display time, date, online time and mem X int i, quit=0, help=0; X BPTR StdOut = (BPTR)Open("*", MODE_OLDFILE); X X X // open libraries X X if(IntuitionBase = OpenLibrary("intuition.library",0)) { X if(DosBase = OpenLibrary("dos.library",0)) { X X // Is the TheClock structure anywhere? X X if(TheClock = (struct TheClock *)FindPort(PORTNAME)) DefFlag = TheClock->Flags; X for (i = 1; i < argc; i++) { X if(!strcmp(argv[i], "quit") || !strcmp(argv[i], "-q")) { X quit = 1; X break; X } X else if(!strcmp(argv[i], "-t")) { DefFlag = (DefFlag & 1) ? (DefFlag & 62):(DefFlag | 1); } X else if(!strcmp(argv[i], "-d")) { DefFlag = (DefFlag & 2) ? (DefFlag & 61):(DefFlag | 2); } X else if(!strcmp(argv[i], "-m")) { DefFlag = (DefFlag & 4) ? (DefFlag & 59):(DefFlag | 4); } X else if(!strcmp(argv[i], "-e")) { DefFlag = (DefFlag & 8) ? (DefFlag & 55):(DefFlag | 8); } X else if(!strcmp(argv[i], "-r")) { DefFlag = (DefFlag & 16) ? (DefFlag & 47):(DefFlag | 16); } X else if(!strcmp(argv[i], "-o")) { DefFlag = (DefFlag & 32) ? (DefFlag & 31):(DefFlag | 32); } X else { help = 1; break; } X } X if(help && StdOut) { X WriteStdOut("\33[1mMSClock V1.3\33[0m (c) 12.02.91 by Martin Steppler\n"); X WriteStdOut("USAGE: MSClock [-t] [-d] [-m] [-e] [-r] [-q] [quit]\n"); X WriteStdOut(" -t time off/on default: on\n"); X WriteStdOut(" -d date off/on default: on\n"); X WriteStdOut(" -m memory off/on default: on\n"); X WriteStdOut(" -o online time off/on default: on\n"); X WriteStdOut(" -e English weekdays on/off default: German on\n"); X WriteStdOut(" -r reverse date display on/off default: off\n"); X WriteStdOut(" -q quit MSClock\n"); X } X else if(!TheClock && !quit) { X X // No, then Create Process X X if(TheClock = (struct TheClock *)AllocMem(sizeof(struct TheClock),MEMF_PUBLIC | MEMF_CLEAR)) { X X // Dummy MessagePort. X X TheClock -> Port . mp_Flags = PA_IGNORE; X TheClock -> Port . mp_Node . ln_Pri = 0; X TheClock -> Port . mp_Node . ln_Type= NT_MSGPORT; X TheClock -> Port . mp_Node . ln_Name= AllocMem(sizeof(PORTNAME),MEMF_PUBLIC); X TheClock -> Child = NULL; X TheClock -> Father = (struct Task *)ThatsMe; X TheClock -> SegSize = sizeof(struct TheClock); X TheClock -> Width = GetWidth(DefFlag); X TheClock -> LeftEdge = GetOverscan() - TheClock->Width; X TheClock -> Online = FALSE; X TheClock -> Flags = DefFlag; X TheClock -> FlagsBackup = DefFlag; X X // Init port. X X strcpy(TheClock -> Port . mp_Node . ln_Name,PORTNAME); X NewList(&TheClock -> Port . mp_MsgList); X X // Load the handler code. X X if(!(TheClock -> Segment = LoadSeg("MSClock-Handler"))) X TheClock -> Segment = LoadSeg("L:MSClock-Handler"); X if(!TheClock -> Segment) X { X FreeMem(TheClock -> Port . mp_Node . ln_Name,sizeof(PORTNAME)); X FreeMem(TheClock,TheClock -> SegSize); X if(StdOut) WriteStdOut("Installation of \33[1mMartin Steppler's Clock\33[0m failed. Don't panic!\n"); X } X else X { X // Install the port and start the handler. X X AddPort(&TheClock -> Port); X CreateProc("Martin's Clock", 5,TheClock -> Segment,4096); X X // Wait for child task to ring back... X X Wait(CHILD_READY); X if(!TheClock -> Child) // failed X { X RemPort(&TheClock -> Port); X FreeMem(TheClock -> Port . mp_Node . ln_Name,sizeof(PORTNAME)); X if(TheClock -> Segment) UnLoadSeg(TheClock -> Segment); X FreeMem(TheClock,TheClock -> SegSize); X if(StdOut) WriteStdOut("Installation of \33[1mMartin Steppler's Clock\33[0m failed. Don't panic!\n"); X } X else // Yeah, it works X if(StdOut) WriteStdOut("It is my pleasure to install \33[1mMartin Steppler's Clock\33[0m for you!\n"); X } X } X } X else if(TheClock && quit) { X TheClock -> Father = (struct Task *)ThatsMe; X Signal(TheClock -> Child,SIG_CLOSE); X Wait(CHILD_READY); X X // Remove port and associated data. X X RemPort(&TheClock -> Port); X FreeMem(TheClock -> Port . mp_Node . ln_Name,sizeof(PORTNAME)); X if(TheClock -> Segment) UnLoadSeg(TheClock -> Segment); X FreeMem(TheClock,TheClock -> SegSize); X if(StdOut) { X WriteStdOut("It is my satisfaction to close \33[1mMartin Steppler's Clock\33[0m again\n"); X WriteStdOut("with the knowledge of a job well done!\n"); X } X } X else if(TheClock) { X X // store changes and signal child X X TheClock->FlagsBackup = DefFlag; X TheClock->Width = GetWidth(DefFlag); X TheClock->LeftEdge = GetOverscan() - TheClock->Width; X TheClock -> Father = (struct Task *)ThatsMe; X Signal(TheClock -> Child,SIG_CHANGE); X Wait(CHILD_READY); X } X } X } X if(StdOut) Close(StdOut); X if(IntuitionBase) CloseLibrary(IntuitionBase); X if(DosBase) CloseLibrary(DosBase); X} X X// calculate width of our window X XGetWidth(int DefFlag) X{ X int Width = 0; X X if(DefFlag & 1) Width+= TIME_WIDTH; X if(DefFlag & 2) Width+= DATE_WIDTH; X if(DefFlag & 4) Width+= MEM_WIDTH; X if(DefFlag & 32) Width+= ONLINE_WIDTH; X X // default width X X if(!Width) Width = TIME_WIDTH; X X return(Width); X} XGetOverscan(void) X{ X register struct Screen *WBench; X register ULONG IntuiLock; X X // Start with the first one. X X IntuiLock = LockIBase(0L); X WBench = IntuitionBase -> FirstScreen; X UnlockIBase(IntuiLock); X X // Scan the list... X do X { X // The type we want? X X if((WBench -> Flags & SCREENTYPE) == WBENCHSCREEN) X return(WBench -> Width - FRONTBACKGAD_WIDTH); X } X while(WBench = WBench -> NextScreen); X X // Failed! X X return(640 - FRONTBACKGAD_WIDTH); X} END_OF_FILE if test 8715 -ne `wc -c <'source/MSClock.c'`; then echo shar: \"'source/MSClock.c'\" unpacked with wrong size! fi # end of 'source/MSClock.c' fi if test -f 'source/makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'source/makefile'\" else echo shar: Extracting \"'source/makefile'\" \(479 characters\) sed "s/^X//" >'source/makefile' <<'END_OF_FILE' X# makefile for MSClock with Aztec C 5.0d and SKShell X Xif [ MSClock-Handler.o -ot MSClock-Handler.c -o ! -f MSClock-Handler.o ] Xthen X echo "Compiling and linking $_ANSI_P3 MSClock-Handler.c $_ANSI_P1 " X cc -3 +D +L MSClock-Handler.c X ln +cdb +q -o l:MSClock-Handler MSClock-Handler.o -lcl Xfi Xif [ MSClock.o -ot MSClock.c -o ! -f MSClock.o ] Xthen X echo "Compiling and linking $_ANSI_P3 MSClock.c $_ANSI_P1 " X cc -wu MSClock.c X ln +cdb +q -o c:MSClock MSClock.o -lc Xfi END_OF_FILE if test 479 -ne `wc -c <'source/makefile'`; then echo shar: \"'source/makefile'\" unpacked with wrong size! fi # end of 'source/makefile' fi echo shar: End of archive 1 \(of 1\). cp /dev/null ark1isdone MISSING="" for I in 1 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have the archive. rm -f ark[1-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0 -- Mail submissions (sources or binaries) to <amiga@uunet.uu.net>. Mail comments to the moderator at <amiga-request@uunet.uu.net>. Post requests for sources, and general discussion to comp.sys.amiga.misc.