mdoerr@uklirb.UUCP (09/10/86)
Demand has been great (12 letters 'til today) and some of you even wanted the docs in German. So here it is: MonST. The executable has been uuencoded on the ST. The German doc was written with umlauts. I'm afraid these have been lost during transfer to our VAX. Have fun and remember that I didn't write it. I'm in a hurry, sources will be coming Real Soon Now. Michael. BTW: My uucp-address has changed: ...!seismo!unido!uklirb!mdoerr --- this - is - no - sharfile --- split - manually! - (?) --- begin 777 MONST.TOS M8!H "7& $YQ(&\ !" H S0J 4T*@ M' : )("\ 2%!"9S\\ $I.0=[\ Q"IS\\ "!.05R/0?HE>"#/3F<@@"Y M3KHB"G!V3KHDY$'Z *M.NB2X0_K_KB )3KH<L$ZZ)*I!^BV$( A.NARB3KH< M'DZZ!/1P#D'Z)/9"F%'(__Q"6$/Z_X @B4;\(P!.NAO^3KH;XDZZ'C).NB#. M9^H, @9_0, N9^Y.NB#X0?H G$)!%!AG&K "9P1206#T0?H J$/Z_S[C M2=+P$ !.D6"V+GHDX$ZZ# 9P/TZZ([Q@I@ @,$!08'" D@ M ("HJ*B!(87!P>2U#;VUP=71E<B M(#8X,# P97(@(" J*BH-"B J*BH@ M36]N4U0@=C$N,"!B>2!-+DUE>65R(#,O.#8@*BHJ#0T@("0 ("T@) ^<FUK M9&<[.BPG=F]W/69T(R0E/VQS0'IX !G@&^ LH"T@+: _H%^ :6!MX& ML 6(!RX'@ >V!]P)1 ON"_X,/ Q0#8P-_@YV$#P<K@ $ZZ'^(, P M90#_)@P #-D /\>! ,$'Z_R@P@$YU3KH:R$'Z +1.NB,^3KHB=$ZZ&J!P M.TZZ(L!.NAK.3KH D" Z(\9.NAKT3KH A#(Z([@P >!(3KH;,DZZ&JX0 4ZZ M&RA.NB(\3KHB_DZZ(C1!^B-:<C!.NAI:<#M.NB)Z$ %.NB)T84@@$$ZZ&K , M 0 W9Q1A.B H "!.NAJ@6(A.NB( 4@%@SDZZ(?A!^@!L3KHBMB Z(UA.NAJ" M3KHAY$ZZ(J8@.B-,3KH:<D[Z(=HO $ZZ&BH@'TYU(" @(" @(%!#.B @(" @ M(" @(%0@4R @24E)(" @(%A.6E9# " @(" @("!D871A.B @(" @("!A9')E M<W,Z "X[55-0(" +CM34U @( $?Z 'IV$& .1_H ]'9 8 9'^@\60H-. MNAIH0_D! ($!.NAYV9CI.NAF43I-.NB%,T<-.NB)<# &V<B# (&?D M3KH9>$Z33KHA,-'#3KHA&F<*# (&<.L<EEY$YU3KH:'") 8-I.NB(F# M&V?L# (&>N8.!(Y\" 3KH@UDZZ(*).NAD<<#I.NB$\( @,@ #_@ !D/$ZZ M&:!.NO\"<@^Q_ #_@ !D)! 83KH9H$ZZ&2A1R?_L3KH9')'\ $'(/$!A. MNB#X4<G_^$S? 0-.=0B @0$ZZ&5Y.NO[ <@<P&$ZZ&5QP($ZZ(-I.NB#6 M4<G_[F#42.? @$ZZ(%1.NB @3KH8FG G3KH@NB (3KH9)DZZ_HAR/Q 83KH@ MH%')__A,WP$#3G5.N@%(+GHAL"!Z(:A.8$WZ(6 O+@ X3-8__RQ?+SHAD#\Z M(8I.<TZZ +1A F .(!\B *! /___B\!3G7AF ) /\Z Q% 1D!C0?)A\X M'TZZ )H_/ +3D%4CTI 9P9.NB$ 8.Y"@7083KH=3' A3KH@*DZZ';I.NB"B M1OPC $ZZ(. ^ $'Z 'Q.NB" , 5(P$ZZ&9).NB!T3KH8ADZZ(&SE2$ZZ&'(, M10 $9!Y.NB!<, ).NAAX3KK]NB #3KH8($ZZ_; P!$ZZ&$X,1P ;9P#[N$ZZ M_.Y.^ONP+PY-^B"02-8__RU? #A.=2 ?0_H@O#+?(M].:B+*(H\O $YU8=I@ MZ"$@97AC97!T:6]N(&YO+B (" H/20 *2 @861R+B D UA9&1I=&EO;F%L M("!A8V-E<W,@(" @("!C;VUM86YD#0 !.NAP>9Q9.NAQ&3KH7^@@ !F M /MV0?H@3"" 3G5!^ON"0_K^N$* $!AG !VD(@#EB."9)$ D"0*" /___X2! M)()@XDZZ%OY#^OZ2<@A.NA<4<#I.NA[\( %.NA=H<!!.NAS<($$@$"0 H( M____X9A.NA=D3KH6Z" "3KH71G @M(EF G J3KH>R$ZZ_)Q.NA:F( 'DB$ZZ M&$).NAY>3KH>4&< &_A8@0Q!! !FGD[Z&^Q.NAMJ9P#ZT P "!G1$ZZ&Y@, M !U9V0, !S9V0, P90#ZL@P #AD /JJ! ,#0 Y4A!^A\ZT,!.NA<0 M(( , @ '9PA.NA<$(4 ($YU3KH6^@@ !F /IZ0?H?4"" 58A.NA<^ @ MIQ# 3KH7- ( !\0@$YU0?H?-F $0?H?-$ZZ&P).NAK^3KH6O@@ !F /H^ M((!.=4ZZ%K(@0") <@].NA:P$,!1R?_X($E.^OR83KH6F"! <@-.NAJJ9P#Z M$%')__9R/TZZ&IQG /H"# +F<"$(!2B%')_^Q.=4ZZ%FH(@ ($ D0$ZZ M%F(PP$ZZ&G)G' P "!F /G23KH:9 P "!G"DZZ&HA.NA9 8-P@2DZZ"MQ. MNA5N3KH*U'(*-#H>DDZZ&HI.^OED3KH6&B! 3KH6%") L<ED /F03KH:(F8$ M0D!@"$ZZ&D9.NA8"/P!R DZZ&@QG#DZZ&C1.NA7P/P!406#L- $P-R#^54)F M C0!$,"SR&;PW\%.=4ZZ%<@@0$ZZ%<(B0+')9 #Y/DZZ%;8D0+'*9!*UR60. M( F0B-7 %2&SR&;Z3G44V+/(9OI.=4ZZ%9(@0$ZZ%8PB0+,(9_Q3B"\(3KH% M#DZZ'").NOJ:(!].^A4N3KH9I P ")G #23KH9J$ZZ%5P@0$ZZ%58B0+') M9 #XTDZZ&61G /C*3KH9BD*!3KH95F<X# (&?T# (F<4# *F<@3KH9 M;$ZZ%2@_ %1!8-I.NADP9Q(, B9\X_ %1!8.XP/( 8.)*06< ^(!.NA0V M0H,T 3 W(/YK&+ 89Q9*0V8(L<EE[M_!3G61PS0!0H-@\%*(4D-50F;:( B0 M@S0Z'3 , @ \9@1.NANR3KKYW$ZZ%'(@0%*(3KH;F&?(# (&8*3KH<L@P M !MGN#0!0H-@KD'Z)-HD2$ZZ&*1G /@*# (F<$$,!@[D(03KH4=B! 0_D M_X 3KH8A&<*3KH8K$ZZ%& B0$ZZ$YA.N@C^1_H<S'!0P/H<N-; 0D%T)! R M$ !G)K S( !G% P "IG#I1!0D$,0@!+9!120F#@4D%20A R$ !G F#43KH; M#$ZZ&OYG !G8L<EEL$YU3KH8'F< ]X1.NAA2# =V<D# <V< 2H, !B M9P !A@P '%G &6# 86< ?9.^O=63KK[R$ZZ&,I.N@#N3KK[VD'Z &XA MR D3KH8V$ZZ&WY.NO@F0D%T#DZZ& YP34ZZ&X @ DZZ&.YT%TZZ%_P@>AON M3KH(-$'Z ?Y.NAM 1OPC $ZZ&XX, ;9RP, @9P#Z(DZZ%\ , !E9S(, M !S9T(, !C9M1.NA<D8,Y.NOK^3OK_@DZZ 'A.NOM:3KH:%DZZ&>).NA?. M3OKV;$'Z&XH($ %9Z0D>AN* E)__U2*8! D>AM^0?H;< @0 5F DYJ0D%T M#4ZZ%VQ!^O:8())!^@ 0)(A4B"'( (!A($ZZ^:!.0$ZZ^I9!^AM (+KV=D[Z M_Q)!^ALR %" $YU0?H;* )0?_].=4ZZ$L)!^AL<((!!^O903KH2M"" (D!! M^@$:,)$RO$Y 0?H #B'( (!.NA'83KKY2DZZ^D).NOJF('KV(C"Z /1!^AK@ M59!P5$ZZ&<9.NAI"3KH74D;\(P!.NAI\3KKVWD[Z]9Q!^@#.3KH26B# 3KH2 M6$I 9P#UTC" 3G4P.@"Z9P#UQDZZ^CA!^@"H(GH IC"13KKZ2"!Z )PPO$Y M0?H "B'( (!.NOC03KKYR$ZZ^BP@>@" ,+H >D'Z&F95D$'Z '934&< _C1. MNO\@0?H "B'( "1.NOB@3KKYF$ZZ_Q9@KDZZ$=Y!^AHX((!.NA'02H!G /52 M0?KU8B" 3KK^[$'Z XAR D3KH0]DZZ^&@O"$'Z]493D&<$(%].<R!?3KKY M4$ZZ_LY.NOFP3OK_%@ #2 @*" I;F5X="PH97-C*7-T;W L*&,I M;&5A<BQR="AS*2QR="AE*2 _ $ZZ$=I.N@"L3KH P$[Z$-Y.NA%&+P!. MN@#43KH7Z R7 ! &040?H GDZZ&.QP)4ZZ&'8@%TZZ$0)!^@"*3KH8V' C M3KH88B ?3OH1YDZZ$6 O $ZZ %Q.N@!P3KH0TSKH5, P "MG- P "UG M "0# *F< )P, O9P I@P "9G #8# W6< .0, A9P \$[Z M]$).NA"V(@!.NA"PT(%A!$[Z$#PO &$V3KH73$'Z I.NAA8(!].=2 ]( O M ' D3KH7V" ?3G5(YV ,CH8]#0Z&.A.NA3@3-\ !DYU2.=@ #(Z&-PT.AC2 M3KH4RDS? 9.=4ZZ$%0B $ZZ$$Z2@" !8:!.^@_83KH02#( 3KH00L#!88Y. M^@_&3KH0+B( 3KH0,$I 9P#SJH+ :0#SI$A!+P%.NO]N,!].N@_:<"!.NA=8 M3KH75'!<3KH73C ?3OH/Q$ZZ#_0B $ZZ#^[ @4ZZ_T).^@]X3KH/X"( 3KH/ MVH"!3KK_+D[Z#V1.N@_,(@!.N@_&LX!.NO\:3OH/4$ZZ ?Y.N@^X)D!"9TA1 M/SP 3DY!4(]*0&8 EI!^@)T3KH76$ZZ BXD*@ :)@+6BT)G2&H 'C\\ #U. M05"/2D!K (R,@!(4R\"/P$_/ _3D'>_ ,2H!K (:3KH""&L A)!^@(W M3KH7$" #3OH/#$ZZ 8Q.N@]&)D!.N@] D(MG /*^90#RNB0 0F=(43\\ #U. M05"/#$#_WV<82D!K '2,@!.N@&^:P !R$ZZ$$IF !340F=(43\\ #Q.05"/ M2D!K &N,@!(4R\"/P$_/ ! 3D'>_ ,2H!K &63KH!A&L 8Y.=4ZZ$NQG M5@P "!G6@P %QG%DZZ$Q8, !A90#R/ P &9E'D[Z\C).NA+R3KH UDA1 M/SP .TY!7(]*0&L 4Q.=00 &$"0 //P _/ .3D%8CTI :P !,DYU0_H M!& (*BXJ $ZZ )P_/ 02%$_/ !.3D%0CTI :P !#DZZ#9)P!$ZZ$X9.N@#@ M(D!P$TZZ$WH@*0 :3KH/$' =3KH3;! I !5.N@W^3KH5'DZZ%1!G !/J/SP M3TY!5(\,0/_/9PA*0&L ,)@MD/Z'E!"9TA1/SP -DY!4(\@$4ZZ\QA.N@[& M0?H "DZZ%:1.^A3@(&%L;&]C)W,@9G)E92X 0?H>&")(3KH1XA# 2@!F M]DYU3KH1U@P ")G *# (&8 \3!.NA'"9P#Q*$ZZ$>A!^AWF(DA.NA&P M9P#Q%@P %QG /$.# +&<*# (F<$$,!@X$(0/SP +TY!5(\D0$YU/SP M+TY!5(\@0-#\ !Y.^A46/P$_/ ^3D%8CTI 3G5!^@ ,3KH5 $2 3OH.% TA M9&ES:R!E<G)O<CH@+0 -;&]A9&EN9SH@ " @(&5N9"!A9')E<W,Z("0 !! M^@&B3KH4Q#(Z%6XT.A5L(#H!B$ZZ#+9.NA%<3KH.:G(/3KH1!&< \&I1R?_V M3KH,WD'Z 68@@#@Z 68Z.@%D3KH,"G J3KH4$D'Z 50PQ##%3KH.-#@Z 4@Z M.@%&3KH0R&?<# *F?L# +F?F# (&?@3KH0[ P 'AG !)8# 8F< M_W@, !R9U0, !W9U(, !M9R , Z9S8, !P9P G@P "MG #$# M+6< ,Q@A$ZZ *)'^O)(=A @>@#2(DC2_ ( 3KKR $[Z_VI.NO6 3KH+;D[Z M_VAV"& "=@E.NA \9U!.NA!D3KH,(#@ 3KH,&CH #$, "68(3KH-0F8 _S0_ M/ !/SH BC\$/P5"9T*G+SH >C\#3D[>_ 42H!K"@Q# AGC$[Z_PI.NOZ* M3OK_ F$>3OK_!D'Z %8*4 !,! & P3KH3!$ZZ$EQ.^O[B3KH+"C $3KH+ M>$ZZ"P P!4[Z"VYV"%)%#$4 "F46>@%21& 0=@A3168*2D1G /ZR>@E31&'* M3OK_=@ % $-8G5F9F5R(&%D<F5S<SH@( !(Y_]^( @(@ (D!. MNA(B3KH1[DZZ (1.N@ID3KH*9B )3KH*\DZZ"HHR&7X!, %.N@KN<"1.NA!8 M, $"0/ ZUA!^NW*T/L !DZ08" 2JA.0$Y03F!/$%G@7+A>:%\88L!F^&008 M4!BT&5P9OG(/-#H34DZZ#THR.@ H9Q1T C [("!.N@J:3KH*+%1"54%F[B!) M3-]^_TYU0?H !D)03G4 0?K_]%10T- P@$YU- $( 0 (9@ M<@)"#@#O6A [($1K ;^9T0T 0)" ,#L2@P" -G ;L3KH&]$ZZ"7).N@DP M3KH)E#0! D( /PP" #QG!$[Z!]9P<TZZ$9YP<D[Z$9@A!2L" !$-_V$N3KH) M<$ZZ"2("0 ?2,!.N@L&3KH)6$[Z!Z T 0(" #@, @ (9QQA!DZZ $9@Y#0! M D( P.Q*$#L@!D[Z!VP*!P@)<!E.N@9Z<'!.NA% 3KH(Z#0!2@%K"DZZ!\1. MN@D.8 YA#$ZZ"09.^@>T<&%@ G!D3KH1&# ! D . .]8!@ ,$[Z$0AT & & M= )@ G0!+@)P&4ZZ!BI.N@BH3KH'&DZZ",HT 0)"#@#O6C8! D,!P.9+A$-. M^@<&- $( 0 (9P 0#0! @( P P" ,!G( P" (!F 7>< M.N@7D= %.N@A@ M3KH&TDZZ"().^O^"<!9.N@:T3KH&P$ZZ"'!.^O]L- $"0@X X$I!^NOJT/L@ M!$[0%"X4=!0R%#84>A4X%+056G >8 9P'6 "<" V #0! @( P P" ,!F '^ M<!E.N@9F#$, 'F<43KH&;$ZZ"!P,0P =9P !_D[Z_HY.NOZ*3KH("$[Z!E!P M#$[Z <PT 4H!:QX( 0 &9Q0"0@ X9PIP(DZZ!B).^@8N<"Y@]' <8/ "0@ X M9A!P$TZZ!2).N@>6- %.^@9"2@%J 4&<!E.N@4,<&U.N@_23KH'>DZZ!V8V M @! IF4#0! D( . Q" "!F#' /XDOC4E'(__HV D)"<&1.N@^B> ?B2V0, M< >0! 8 #!.N@^04<S_[DI"9@QT 7 O3KH/@'!A8-8( 0 *9A1.N@=23KH% MF@@! IG!DZZ!T1@H$YU#$%*_&< !(!P,C0! @( P P" ,!F #V<"].N@5> M3OH%:DH!:A)P% @! 9F G 53KH%2$[Z!50T 0)" / , @! 9Q@, @!09RP, M @!@9P 7 P" '!G>D[Z!"QP,$ZZ!#).N@<,3KH&W# ! D #TC 3OH(=#0! M" $ V8D<!=.N@3X3KH%.DZZ!K1.N@:V3KH&:$I :@9.N@:P1$!.^@<Z<#-. MN@343OH%%G 93KH$RC0!" $ V8,3KH%!$ZZ!GY.^@!L3KH :$ZZ!G).^@3P M" $ V8 ZXT 0)" <0.R 2:P #H$ZZ Z@, J9PI.=2,?*B;_*#$G3KH& M<DZZ!D).N@7T3OH&T#0! D( P.Q*# ( V< VQ.N@-T3KH%\D[Z!&1!^@ . M3OH.H$'Z I.^@Z88V-R '5S< T 0)" , ,0@# 9QQP P@! AG G L3KH# M.NQ*3KH%MDZZ '1.^@0D- $" @ X# ( "&<B- $"0@\ #$(! &< P9P<TZZ M#=A.N@"@<"Q.N@NZ3OH#]C0! D(/ &< N@,0@$ 9@0"00 /<&1.N@VP<&). MN@VJ3KH <DZZ!;0T 4ZZ _I.N@5X3KH%,$C T(E5@$[Z!?Q.N@5L, $"0 X M[U@& P# ,&8"<#A.N@UN3OH%2G!B3KH-9$ZZ "PT 0)" /]F"$ZZ!/ T M & "2()P+$ZZ"S0@"4C"T(("00#_9@)5@$[Z!:@T 0)"#P#N2A [( Y.N@TF M$#L@!T[Z#1YR87-R:&EL<V-C8W-N965Q=F-V<W!L;6EG96QT9W1L90@! AF M (><!E.N@(D<'%.N@SJ= ).N@2:3KH$QA !3KH%8$ZZ!+9.^ONV1_H XC0! M D( P Q" ,!G-#0! D(!\ Q" 0!G1! 33KH!Y$ZZ!$X( 0 (9@Q.N@+.3KH$ M?D[Z^WY.NOMZ3KH$<D[Z KH0*P !" $ "&8"4D!.N@*:3KH"IDZZ!%9.^OM6 M$"L DZZ H8T 0@! -F#$ZZ KQ.N@0Z3OK[.DZZ MY.N@0N[UI.^@+41_H M6P@! AG /]P-@$T 7 2 D, ^ P# $!G'@P# $AG* P# (AF /]23KH"-DZZ M^OI.N@/R3OH"<$ZZ B9.NOKJ3KH#XD[Z EQ.N@(63KKZUDZZ ]).^@)0(0\I M!1H!<"M@ G "- $"0@# # ( P&8>= $( 0 (9P)T DZZ /Q.N@-Z3KH![$ZZ M YQ.^OJ8" $ "&< _OXV 0(# #!F /[T3KH UG!X3KH+G$ZZ SI.^O\L< TT M 0)" , ,0@# 9[ ( 0 (9P#^S#0! D( . Q" AG%G 13KH H$ZZ PI.NOI( M3KH#0$[Z 8A.N@",<&U.N@M23KH"\#0!3KH!S$ZZ R0T >]:3OH!P#0! D( MP Q" ,!G)C0!YDI.N@ R3KH"Q@@! 5G#DZZ^?Y.N@+V- %.^@%N3KK]A&#T M- 'O6DZZ QT 4ZZ K).^@$D D( Q [(!1.N@ @<'(( 0 (9P)P;$[Z"MX& M&"4D0?H !D[Z"T(_/S\ 2.? @#( 0?H +F *$!@, !A90)@]E-!9O(0& P M &%E!DZZ"JA@\@8 "!.N@J>3-\! TYU86)C1&%D1&%D9%%A9&1886Y$85-B M8VA'8F-L4F)S951B='-48VA+8VQ28VU08VUP361I=E-D:79596]297A'97A4 M:FU0:G-2;&5!;&EN2VQ3;6]V16UU;%-M=6Q5;F)C1&YE1VYE9UAN;U!N;U1O M4G!E07)E<V54<D]R;UAR=$5R=%)R=%-S8F-$<W1O4'-U0G-U8E%S=6)8<W=A M4'1A4W1R85!T<F%P5G1S5'5N;$L $ZZ_Q8_ ' L3KH'QC ?3G4T 0)" #]( MYW\ ,@("00 XY$E!^N4JT/L0"DZ03-\ _DYU&O0:^!L,&QH;(ALH&SP;D'!D M8 )P84ZZ"9HP @) <& P3OH)C' H3KH)AF'D<"E.^@E^8?!P*T[Z"79. MN@%>8.1.N@$(2D!J!DZZ 5!$0$ZZ =I@T$ZZ /0V $H :@9.N@$Z1 !.N@'. M<"A.N@E"3KK_H$ZZ 1IP84I#:P)P9$ZZ"2XP P) < #I6 8 #!.N@D>3KH M]'!L" , "V8"<'=.N@D,3OK_A@)" ?C2D'ZY&C0^R $3M ;L!NZ&\X;[AP. M(Q0C%",43KH @$C 3OH!4$ZZ '8T $ZZ '!(0C0 ( ).^@$\3KH 8B!)T, @ M"%6 3KH!+$'Z I.N@DB3OK_+"AP8P!.N@!"-@ @24B T, @"%6 3KH!"$'Z M_^9.N@C^3OK_3DZZ &Q.N@ >2@=G $"4P=G #R- !.N@ ,2$(T " "3OH MJC 93OKV:#0![$H"0@ #8 HT 0)" $#L2E)"3KH (CX"2@)G$@P" %G$'!L M3KH(-G L3OH&''!B8/)P=V#N/SP +F 6/SP +& 0/SP (V */SP +6 $/SP M#3\ ,"\ DZZ" (P'U2/3G5P(&$*<"!A!G @80)P($[Z!^I.N@'69P).=4'Z MY"8P$&<$0F=.03"\ %!^N,X0_H2')/(0F=(43\\ #%.04CGX !R!R0 Z9H@ M @) \, *908& !78 0& P3KH'FE')_^),WP '3G5(Y^ <@7AB&#. M2.?@ '(#2$!@Q$CGX !R 4A X8A@N$CG\ 4 '('=C!"@.,*T0-.N@=<4<G_ M]$S? ].=7 '8 IP!6 &< -@ G !2.=@ "0 0H%.N@0D3KH$/@P #!E .-D M# .F42# 864 XU8, !G90I.^N-,! ,& $! 5^F)@@!1RO_(( %, MWP &3G5(YV <@="@DZZ ]KC"@P #!G# P #%F .,6",( %')_^8@ DS? M 9.=4CG<(!"@4ZZ Y)G' P "!G] P #!E# P #ID!C\ 4@%@XDZZ Z)* M 6< XMA!^@!DT/P *%,!0H V'R0@! , ,&< C0@E,#9OI1R?_L3-\!#DYU M2.?P@"( 9@AP,$ZZ!FI@*'8*0?H *B084P.R@F7X0D"R@F4&DH)2 &#V!@ M,$ZZ!D8D&%'+_^A,WP$/3G4[FLH !?7A "8EH #T) &&H )Q /H M 9 H !2.> @$'Z "1.N@9V3KH&@DZZ!L1.N@:$3KH%]DZZ OP, M !Y3-\! 4YU#2!A<F4@>6]U('-U<F4@/P !.N@903KH&D@P "!E1 Q M ']G 'Z#( <0 N9P !Z@R $< -V< =I(0'+_4D$4.Q 89PRP F;T!D$ M83 !8 )(0$ZZ!8Q@MF-D969*3@ 2D!G !X# #6< A@, (9P !H@P M 1G &H#( #P )9P !R P EG &P# "F< ;(, !9P !O&$$3OK_ M:C Z!E8, !#9 #KDAZ !H_/ )3D%<CS \PU!30&;\,#H&.$[Z!")[2T59 M($E'3D]2141] $A #$ 2&9D,#H&&F963KH!F$ZZ ;X, N9DA.N@&T# M.F8(1_KCC'808 P, G9C!'^N0 =D!.N@52.#H%XDZZ_70J $* 3KH"ZDZZ M!$ @19'#3I,R!$)"3KH!PD[Z_M!.N@'J3OK^R Q %!F;C Z!; , 89EQ. MN@$J3KH!4 P "YF3DZZ 48, Z9@A'^N,>=A!@# P "=F-D?ZXY)V0$ZZ M!.0X.@5T3KK]!BH < I.N@3X0D!.N@),3KH#S"!%T<-.DS($=!A.N@%.3OK^ M7$ZZ 8A.^OY4#$ 368(3KH!ED[Z_D8,0 !+9@A.N@&B3OK^. Q %)F!DZZ M N1@/ Q $=F!DZZ <I@, Q &%F#$)!-#P &$ZZ /Y@'@Q &)G !83KK^ MFF 03KH!@F *3KH"2& $3KH">$[Z_>QP34ZZ!$PP.@343KH!N$'Z!,I"4$ZZ M ,I@XC Z!,!.N@'.8.I.NON(8-)P"4ZZ 0A1R/_Z8,9.N@+@8,!A F"\(CP M ?.0?H$HG!%3KH$ A 83KH$%E')__A.N@"$3G5.N@/D0?H$>$/Z!(!P4,#Z M!&S3P"#)0EAP4-/ #"$ (&8$4P!F]C" 3G5(YV# 0H!!^@1,(E@R&+)09P92 M8%*@$!%,WP,&3G5.NO_@9P#?1@P "!G\DYU+PA!^@0B4YA34"!?3G4, !! M90H, !;9 0& @3G5!^@0 ,,$P@DCG@(!!^@/V<%E.N@-D,! &0 @3KH# M=# @!D ($ZZ VI,WP$!3G5!^@/2,!!F!DZZ -Q@RE-08,9!^@/ #% &&8. M< I.N@-"0H!.N@"68*Y24&"J0?H#H@Q0 $]G!%)08)Q"6 Q0 !AGE%)08)!! M^@.(#% &<$4U!@@C#\ $\,4 9P#_>%-03OK_<DCGP(!P14ZZ MA!^@-N M(CP@(" @(#P 'S(,%1R/_\8 I(Y\" <$A.N@*V0?H#/$*03-\! TYU2.? M #( <""R>@,H90AG!DZZ @)@\DS? -.=4'Z R0, 89TPD" :" 'T')0 MPL#1P2)(T_P !0(-FTB6;Z<!A@+#( <$Q.N@)<, $, 89QQ!^@+J)$C5 M_ !] B2G)0D\'"P-'!)2&QR6;Z2.?@@$'Z LIR4,+ T<%T$R(\(" @("#! M4<K__$S? 0=.=4'Z JQ#^@*8#%D &?P,!%R4,+ T<$R(5-1T<$B2%.($-E2 M00Q! %!F]A"\ " P.@)P3OH 6D'Z G9#^@)D,!%R4,+ T<$R(='!(DA2B1#9 M4D$,00!09O81/ @,#H"0D[Z "Q!^@)(0_H"-C 14D!R4,+ T<$D2%.(,"%R M3Y) %2!1R?_\%+P (# Z A1.N@%Z2.?@@#0 <%E.N@%X, (&0 @3KH!B# \ M "!.N@& 0?H!_')0PL+1P7)/,#H!X@Q !AF G).$!A.N@%B4<G_^$ZZ_=!, MWP$'3G5(Y\" <$M.N@$P0?H!QC Z ;1R4,+ T<$R.@&HT<%P3Y !<B 0P5'( M__Q,WP$#3G5(Y_#P0D$T.@&,3KK]A$S?#P].=4ZZ /P, ;3G5A!$[Z^$1( MY^# ,CK<E&<J4T$*00 !6$%P4,#Z 5I#^@%DTL!T3A 9819*0&<,4<K_]G - M80IP"F$&3-\#!TYU D _S\ /P%.05B/3G4, @9 )P+DCGX. , -9T0, M @92Q.N@"<0?H!&')00_H!!#01PL+1P4/Z /A"@C01T<(0@# "# 3V<* M4D R@$S?!P=.=4)9#%$ &&<>4E%@[DZZ %YP"DZZ %A!^@#$0E@,4 89P12 M4(H!.NOV<8,PO ! 89P9.NO^(8/8@'TYU+P!P96$.(!].=2\ <&9A!" ? M3G4O ' ;810@'V 0+P@O/ & /].05B/(%].=4CG@( "0 #_/P _/ "3D%8 MCTS? 0%.=2\(/SP !TY!5(\@7TYU M ? !64D%- end --------------- cut --- again --------------- *** Anleitung zum MonST *** Schleswig,6.4.86 Matthias Meyer Rosenwinkel 36 2380 Schleswig T.:04621/51514 "Unter den Schreibtisch geschaut" --------------------------------- "MonST" ist ein komfortabler und leistungsfhiger Maschinenmonitor fr den ATARI ST. Das Programm ist voll relokatibel und an jeder Stelle des Speichers lauffhig (nicht auf Eprom). Es verwendet nur einige GEMDOS- und einen XBIOS-Aufruf und mu daher mit allen Versionen des TOS zusammenarbeiten. Bentigt wird jedoch einen 80-Zeichen-Monitor (nur hohe oder mittlere Auflsung verwenden!) Nach dem Start vom Desktop aus meldet sich MonST mit einer Angabe des belegten Speicherbereichs, den man sich eventuell merken oder aufschreiben sollte, um ihn nicht versehentlich zu berschreiben. Beachten Sie beim Arbeiten mit diesem Programm bitte, da Sie sich in unmittelbarer Nhe der "Maschine" befinden, d.h. unvorsichtige Speichervernderungen knnen sehr schnell zum "Absturz" des Systems fhren. a) Full-Screen-Editor Das Betriebsystem TOS stellt leider nur Tastatur-Ein- und Bildschirm- Ausgaben zur Verfgung, aber nicht (wie z.B. die alten Commodoresysteme) eine Bildschirm-Eingabe-routine, d.h. alle auf den Bildschirm aus- gegebenen Zeichen sind "vergessen" und knnen nicht ohne weiteres zurckgeholt werden. MonST verwendet daher einen 2000 Bytes groen Zwischenspeicher, der die ausgegebenen Zeichen enthlt und so auch Eingaben vom Bildschirm ermglicht. Dieser Textpuffer liegt knapp oberhalb des Programmteils. Es werden keine RAM-Adressen auerhalb des Programmbereichs verwendet (auer den Exception-Vektoren, siehe bei "V"). - Der Cursor kann mit den Cursortasten auf jede beliebige Position des Bildschirms bewegt werden. Mit (RETURN) wird die Zeile bernommen. Am Anfang stehende Punkte oder Leerzeichen werden berlesen. - (BACKSPACE) lscht das Zeichen links vom Cursor mit Nachrcken der rechtsstehenden Zeichen, (DELETE) lscht das Zeichen unter dem Cursor, (INSERT) fgt ein Leerzeichen ein, (HOME) bringt den Cursor nach oben links,(UNDO) nach unten links, (SHIFT-CLR) lscht den Bildschirm. - Sonstige: (CTRL-RETURN) springt eine Zeile weiter (TAB) 10 mal Cursor rechts (CTRL-i) fgt eine Zeile ein (CTRL-d) lscht eine Zeile (CTRL-a) lscht Zeile ab Cursorposition (CTRL-c) fhrt whrend Textausgaben zum Desktop zurck (!) (HELP) gibt den Inhalt des Textpuffers neu aus (siehe beim "O"-Befehl) - Der Zehnerblock (rechts auf der Tastatur) kann zur Eingabe von Hexziffern benutzt werden. ("a" statt "(", "b" statt ")" usw., "." gleich BACKSPACE) b) Monitorbefehle Die wichtigsten Befehle entsprechen dem Standard, die meisten anderen sind dem SMON fr den C 64 nachempfunden (Macht der Gewohnheit!) Hier ist es jedoch egal, ob die Buchstaben in Gro- oder Kleinschrift eingegeben werden (mit Ausnahmen). Adressen werden als sechsstellige Hexzahlen ein- und ausgegeben. Falls ein Bereich durch zwei Adressen beschrieben wird, so gehrt die zweite nicht mehr dazu (Exklusivwert). In runde Klammern gesetzte Parameter sind optional und knnen weggelassen werden. - X (Exit) Verlassen des MonST, wenn die folgende "are you sure?"-Frage mit "y" beantwortet wird. Wird das Programm zum erstenmal hierdurch verlassen, so wird der belegte Speicherbereich (ca. 12 KB) nicht wieder freigegeben. Die vorher genderten Exceptionvektoren bleiben weiterhin auf den MonST gerichtet (siehe bei "V"). Man sollte daher ein mit einem definierten Fehler (z.B. Privilegverletzung) versehenes Programm starten, um wieder in den MonST zu gelangen. Vom ST-Basic aus kann man besonders leicht durch ?peek(-1) in den Monitor gelangen. Sofern keine Registerinhalte gendert wurden, setzt "G" das Basic fort. Auch andere Programmfehler knnen auf diese Weise abgefangen werden, jedoch sollten Sie sich mit dem Disassembler die fehlerhafte Stelle ansehen, da nach Busfehlern der Programmzhler nicht immer auf einen korrekten Opcode zeigt ("g" fhrt dann zu Exception Nr. 4). - R Gibt die Inhalte der Prozessorregister aus, die durch berschreiben gendert werden knnen. Die Registerinhalte werden erst mit dem GO- oder einem Trace-Befehl an den Prozessor bergeben. - G (05 0000) (Go) Startet ein 68000-Maschinenprogramm ab Adr. $050000. Wird keine Adr. angegeben, wird der aktuelle Stand des Programmzhlers (PC) verwendet. - M 05 0000 (05 0100) (Memory) Ausgabe des RAM- oder ROM- Inhalts als Hexdump mit Textanzeige rechts. Anhalten und langsam weiter mit SPACE, andere Taste ergibt schnelle Ausgabe, Abbruch mit (ESCAPE). Im RAM- Bereich kann das Hexdump durch berschreiben gendert werden, wobei Leerzeichen ignoriert werden. Das Listing kann dabei am oberen oder unteren Rand hoch- bzw. heruntergescrollt werden. - K 01 e000 (01 f000) (Kontrolle) Gibt 64 Zeichen Text pro Zeile aus dem Speicher aus. Bytes kleiner als 32 werden als Punkte dargestellt. Beim berschreiben werden Gro- und Kleinbuchstaben unterschieden, die Punkte ignoriert. Ansonsten gilt das gleiche wie bei "M". - D fc 0008 (fc 0200) Disassembler-Listing ab $FC0008 (bis ca. $FC0200) mit Ausgabe des Maschinencodes. nderungen sind leider nur an den Hexwords mglich, da ein Assembler (bisher) nicht enthalten ist. So knnen aber zumindest einige Operanden leicht beeinflut werden. Mit Hilfe einer 68000-Bitmustertabelle und etwas Geduld knnen auch kleine Programme eingegeben werden. Da die Struktur des 68000-Maschinencodes sehr komplex ist, ist auch dieser Teil des MonST leider recht umfangreich. Darum sollte folgendes beachtet werden: Es ist nicht ganz auszu- schlieen, da irgendein an sich korrekter Prozessorbefehl nicht richtig wiedergegeben wird (obwohl ich zuletzt keine Fehler mehr finden konnte). Sollte Ihnen dies passieren, teilen Sie es mir bitte mit. Auerdem werden illegale Opcodes nicht immer als solche erkannt und mit "???" kenntlich gemacht, z.B. knnte auftreten: MOVE.W D0,#1234 oder CLR.B 061234(PC), die sinnlos bzw. verboten sind. Aus diesen Grnden kann ein falsch aufgesetzer Disassembler (d.h. wenn man statt auf einem Opcode auf einem Operanden anfngt zu disassemblieren) ber wesentlich lngere Strecken "Bldsinn" liefern, als man dies von 8-Bit-Prozessoren gewohnt ist ! Daher ist ein Scrolling wie bei M und K hier auch nicht sinnvoll. - >0 {1,2} Schaltet Druckerprotokoll ein/aus 0: nur Bildschirmausgabe 1: Centronics-Schnittstelle 2: RS 232 - L filename.xyz, 05 0000 oder L"filename.xyz" 05 0000 (Load) Ldt beliebige Datei. Es mu immer eine Ladeadresse angegeben werden! - S filename.xyz, 05 0000 05 2000 oder S"filename.xyz" 05 0000 05 2000 (Save) Schreibt Speicherbereich in Datei. Ist eine gleichnamige bereits auf der Diskette vorhanden, wird diese nach Beantworten der "are you sure?"- Frage mit "y" berschrieben. - @ (fil??ame.*) Zeigt aktuelles Disketten-Inhaltsverzeichnis an. Folgt ein Space, so werden die Zeichen dahinter als Suchmaske interpretiert. "?" ersetzt ein beliebiges Zeichen (Joker),"*" krzt eine Zeichenkette ab. Wird nur "@" eingegeben, gilt "*.*" als Suchmaske (alle Files werden angezeigt). Es werden der Filename, die Dateilnge (dez.) in Bytes und ein Kennzeichen ausgegeben, das folgende Bedeutung hat: 00- normales File,01- schreibgeschtzt,10- kein File, sondern Ordner. Am Ende steht die Anzahl (dez.) der freien Allocation Units der Diskette (je 1024 Bytes gro). - @\ordner\ Ein Ordner wird zum aktuellen Directory ernannt. Alle weiteren Disketten- zugriffe beziehen sich nun auf diesen Ordner (d.h. Laden,Abspeichern, Directory anzeigen). Rckkehr zum Hauptverzeichnis mit "@\". - @B Stellt Laufwerk B ein. (A ... E) Die wichtigsten Fehlernummern bei Diskzugriffen: -1 allgemeiner Fehler -6 Spur nicht gefunden -8 Sektor nicht gefunden -13 Disk schreibgeschtzt -33 file not found -34 Ordner (Pfadname) nicht gefunden - F 01 0000 05 0000 41 42 43 F 01 0000 05 0000 "Digital Research" F 01 0000 05 0000 44"igital "*"ese"61"rch" (Find) Sucht Bytefolge im angegebenen Bereich. Hexzahlen und Text (in Anfhrungszeichen eingeschlossen) knnen gemischt werden. Der Stern "*" auerhalb des Textes ersetzt ein beliebiges Byte (Joker). Gefundene Adressen werden ausgegeben [Abbruch mit (ESC)]. - F "-****(a*)" 03 0000 (03 1000) Sucht String aus Disassemblerlisting ab $030000 (bis ca. $031000) ("*" = Joker) Dieses Beispiel sucht alle Befehle, die die Adressierungsart "Adrereg. indirekt mit (negativem) 16-Bit-Offset" beeinhalten. Abbruch mit (ESC) mglich. - O 07 8000 08 0000 01 02 03 (512 KB RAM) O 0f 8000 10 0000 aa 55 (1024 KB RAM) (Occupy) Speicherbereich mit beliebig langer Bytefolge ausfllen. Wenn keine Bytefolge angegeben wird, gilt 00 als Default. Probieren Sie einmal einen der obengenannten Befehle aus, den ersten, wenn Ihr ST "nur" 512 KB hat, den zweiten fr eine Megabyte-Version. Der Bildschirm fllt sich daraufhin mit einem feinen Punktmuster. Drcken Sie nun die HELP-Taste, erscheint wieder der vorherige Textbildschirm. - W 05 0000 06 0000 07 0000 (Write) Verschiebt den Speicherinhalt von $050000 - $05ffff nach $070000. - = 05 0000 06 0000 Der Speicherbereich ab $050000 wird mit dem ab $060000 vergleichen. Die erste nicht bereinstimmende Stelle wird angezeigt. - #491520 Dezimalzahl umrechnen (max. 2^32-1) - $00078000 8-stellige Hexzahl umrechnen - %10101011 8-stellige Binrzahl umrechnen - ?z xxxxxxxx yyyyyyyy einfache Rechenoperationen, fr z= + : 32-Bit-Addition (zwei 8-stellige Hexzahlen folgen) - : 32-Bit-Subtraktion * : 16-Bit-Multiplikation (zwei 4-stellige Hexzahlen folgen) / : 32-Bit-zahl wird durch 16-Bit-zahl dividiert & : 32-Bit log. UND-Verknpfung : ODER ! : EXCLUSIV-ODER - V (Vektoren) Die Tabelle der Exception-Vektoren (am Beginn des RAM-Bereichs von $0000 bis $03ff) wird ausgegeben. Mit einem Stern * gekennzeichnete Adressen zeigen auf den BREAK-Entry des MonST. In dem ganz links stehenden Byte steht die Nummer der Exception, anhand der sie identifiziert wird. Abbruch der Ausgabe wieder mit (ESC). Beim Start des MonST werden die Exceptions Nr. 2,3,4,5,6,7,8,9 und 32 (Bus-,Adrefehler,Illegaler Opcode,Division durch Null,CHK-Befehl, TRAPV-Befehl,Privilegverletzung,Trace-modus,TRAP #0) auf die Register- anzeige gerichtet. Tritt nun einer dieser "Fehler" auf, erscheint in der unteren linken Ecke ein Ausrufezeichen und ein blinkender Cursor. Dies ist sinnvoll, um den Bildschirminhalt nicht zu schnell zu zerstren. Durch Drcken der (ESC)-Taste wird die Registerausgabe weggelassen. Auf Tastendruck werden die Nummer der Exception gemeldet und die Prozessorregister an der Stelle des Abbruchs ausgegeben. Handelt es sich um einen Bus- oder Adrefehler, werden auch die vom Prozessor zustzlich auf den Stack gelegten Informationen nicht verschwiegen. Es sind dies das Zusatzwort, das in den unteren 8 Bit einige Flags enthlt, die den Fehler nher beschreiben, die Zugriffsadresse, die den Fehler ausgelst hat und den zuletzt behandelten Opcode. Ein Busfehler kann leicht auftreten, wenn Sie auf einen nicht mit Hardware belegten Speicherbereich zugreifen oder ins ROM schreiben wollen. Hierbei sollten Sie aufpassen, da die Stack- pointer nicht zu weit absinken und etwas zerstren. Rechtzeitig wieder auf vertrglichen Wert setzen! - TS 05 0000 05 0010 (Trace Stop) (Adresse Adresse) Das Programm ab $050000 wird gestartet und beim (eventuellen) Erreichen der Adresse $050010 abgebrochen. Diese Funktion macht vom TRAP #0- Opcode Gebrauch, der vor dem Start an die Halteadresse geschrieben wird (geht nur im RAM-Bereich). Der dort befindliche Maschinenbefehl wird zwischengespeichert und hinterher zurckgeschrieben. - TW (050000) (Trace Walk) Die Opcodes ab $050000 bzw. ab der vom Programmzhler vorgegebenen Adresse werden einzeln abgearbeitet (mit Hilfe des Trace-Bits im Statusregister). Der Bildschirm ist dabei in zwei Hlten gespalten. In der oberen werden die derzeitigen Prozessorregister angezeigt und in der unteren die abgearbeiten Programmteile. In der zweit- untersten Zeile steht der nchste zu verarbeitende Opcode, auf den der Programmzhler gerade zeigt. In der untersten Zeile steht ein kleines Men, das an die mglichen weiteren Funktionen erinnert. (SPACE) fhrt den nchsten Maschinenbefehl aus, (ESC) bricht ab, (C) tut dasgleiche wie sonst die HELP-Taste (entfernt von anderen Prgrammem in den Grafikbildschirm geschriebene Zeichen oder Grafiken). (S) bewirkt, da ein gerade begonnenes Unterprogramm in Echtzeit zu Ende durchlaufen wird (bis zum RTS-Opcode),(E) tut dasselbe fr eine Exceptionbehandlung (bis zum RTE-Opcode). Dabei mu der Stack- pointer denselben Stand aufweisen wie zu Beginn des Unterprogramms. Ein Beispiel: Sie stoen beim schrittweisen Abarbeiten eines Programms auf den Befehl TRAP #1, der das GEMDOS aufruft. Um dieses Unterprogramm auf einmal zu durchlaufen, drcken Sie zunchst nur die Spacetaste. Es erscheint daraufhin ein BTST #5,(a7) in der vorletzten Zeile. Dies ist der Beginn des GEMDOS. Jetzt knnen Sie (E) drcken, worauf das GEMDOS seine Arbeit ungestrt tun kann. Der nchste Befehl hinter dem TRAP #1 wird angezeigt. (E) ist nur bei gesetztem Supervisor- bit erlaubt. Liegt keine Rcksprungadresse auf dem Stack, luft das Programm frei weiter. Dies klingt alles sehr kompliziert, aber mit etwas bung geht es ganz flott. "TW" funktioniert auch im ROM. Der Einzelschrittmodus eignet sich besonders zum "Erforschen" komplizierterer Rechenoperationen des Prozessors. brigens: Bei gesetztem TRACE-Bit kann dieses nicht durch Zugriff des Testprogramms auf das Statuswort gelscht werden, d.h. einen Befehl wie MOVE #2300,SR knnen Sie ruhig "tracen". - TB 05 0010 000a (Trace Break) (Adresse Wort) An der Adresse $050010 wird ein Haltepunkt fr den Schnellschritt- modus gesetzt. Wird die Adresse $050010 zum zehntenmal erreicht, wird der Schnellschrittmodus unterbrochen und der Einzelschritt- modus eingeschaltet. - TQ (05 0000) (Trace Quick) Schnellschrittmodus, nur im RAM. In Verbindung mit TB, siehe dort. Diese Funktion eignet sich zum Untersuchen von Schleifen. - TA 05 0000 0001 0000 (Trace Amount) (Adresse Langwort) Ab Adresse $050000 werden 2^16 Maschinenbefehle ausgefhrt, allerdings mit deutlich geringerer Geschwindigkeit. Alle Unterprogramme werden mitgezhlt, auch Exceptions der Gruppe Zwei (TRAP's,CHK,DIV durch Null). Es knnen bis zu 2^32-1 (= ca. 4.3 Milliarden) Befehle mitgezhlt werden. Das Programm darf Befehle enthalten, die das Trace-Bit im Statusregister zurcksetzen wollen ! - Auch im ROM mglich. c) Der Diskmonitor wird vom MonST aus mit "Z" aktiviert. Es wird ein 512 Byte groer Puffer bentigt, dessen (geradzahlige) Adresse frei bestimmt werden kann (Vorgabe $050000, also mitten im meist freien RAM). Alle Zugriffe beziehen sich auf Laufwerk A. - X Verlt den Diskmonitor. - P (Page) Wechselt die Diskettenseite. Rckmeldung: 0- obere,1- untere Seite eingestellt. (Nur fr doppelseitige Laufwerke!) - B Pufferadresse ndern. (Neustart des Diskmons) - M Zeigt den Inhalt des Puffers an. nderung durch berschreiben mglich. - R 01 03 Liest Sektor 03 von Spur 01 (hex.). Nur "R" oder "W" => Ausgabe der aktuellen Spur- und Sektornummer - W 01 03 Schreibt Pufferinhalt auf Sektor 03, Spur 01 - "+" liest nchsten Sektor - "-" liest vorigen Sektor Auch im Diskmonitor ist Scrolling auf/abwrts mglich. Auf den Pufferspeicher kann vom Maschinenmonitor aus zugegriffen werden. --------------- this - is - the - end ---------------