4NNNNNp NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNN`vo  @`#@%`')+-/1 3@5`79;=?A C@E`GIKMOS@U`W[]_ac@egikmoq s@u`wy{} @` @ ` @  @ ` ǀ ɠ @ `  @o@!a  !Oo@a!Aaǁɡ!Aaׁ١!Aa!Aa " B b  !"!B!b!!!!"!""#B"%b"'")"+"-"/#1"#3B#5b#7#9#;#=#?$A"$CB$Eb$G$I$K$M$O%Q"%SB%Ub%W%Y%[%]%_&a"&cB&eb&g&i&k&m&o'q"'sB'ub'w'y'{'}'("(B(b((((()/)B)b)))))*"*B*b**+"+O+b+++++,",o  @`#@%`')+-/1 3@5`79;=?A C@E`GIKMOS@U`W[]_ac@egikmoq s@u`wy{} @` @ ` @  @ ` ǀ ɠ @ `  @o@!a  !Oo@a!Aaǁɡ!Aaׁ١!Aa!Aa " B b  !"!B!b!!!!"!""#B"%b"'")"+"-"/#1"#3B#5b#7#9#;#=#?$A"$CB$Eb$G$I$K$M$O%Q"%SB%Ub%W%Y%[%]%_&a"&cB&eb&g&i&k&m&o'q"'sB'ub'w'y'{'}'("(B(b((((()/)B)b)))))*"*B*b**+"+O+b+++++,",A103 AUTO `DUMP `KEY_HELP $`!MEDITOR /`QQUIKMAUS M`DUMP ACC t RKEY_HELPACC t G.LEES DIT t HTEMPLMON '`. `.. QMOUSE PRG <t `\`~HA"P JgJ)j!i#|JL/:NuQM10HC k j"8"WdL/:Nu,OO\,n(n HlHVBg?<JNAO ?<"NNTCP" @"h QM10f?<NAHzd?< NA\Hz?<&NN\BgHx?<1NA|A"P!i#|Jrp(C$1@BQ "A!Q"NuEQuick Mouse (c) 1987 by IMAGIC Grafik. N~*. `.. DUMP ACC Bt RDUMP HLP Ht  `N$N6N:N8N;N9N:hN9XN9NLK mNf]` m"m -So Q m -SBQ(m)MO*mN0N*?<N6H?<A?<NAX <B@SfLNuNVN'9@Hl?,N2F\9@ @gBlBlNZHlHlHlHlHlHlBgBgHlBgBgBgBgBgBgBgBgBg?<?<?<Bg?<N18<9@0,|g0,`|(g`N``|g`@0,g0,lg`?<N&T?,N,T?<N&T`z`|g`0,g0,lg`RHlHlHlHl?,?,?,?,?,NHlHlHlHl?,?,?,?,?,BgN4p?<N&6T?,?,?,?,?,N, NN 0,gN *?<N%T``|g`0,g0,lg`HlHlHlHl?,?,?,?,?,?<N30,|g0<2,|Al0,|g0<2,|AlHlHlHlHl?,?,?,?,?,BgN3f?<N%,T?,?,?,?,?,N+ ?<N%T``|g`NP``|g`N4``|g`Nd`r`|g`N`Z`|g`N`B`|g` N`|)g`BlBl``` ``0,|gNd0,|gN0,lmB0,2,lﮰAl00,lm$0,2,lאּAl ,2,lHTHЁ)@0,2,lHVA9@ l l9| l9n.H|@H|0@.H|:m^..H?N"TRn0.lm<9n.H|H|0@.H|:m^..H?NT9nN8?<N T lKl9|MN `,Bn`9|KN Rn nm9|PN`x.H|0m.H|9o:.H|Am.H|Fo.H|am2.H|fn$.H|am. n.H|Am_..0?<N4TN.H?NT.H@@RlN2?<N5T@.H|0m.H|9o.H|Am.H|Fo.H|am.H|fn.H|am. n.H|Am_..0N .H?N"T..0,S@=@-l ,Ѯ n#l&0.| H/ </N1 X=@` <2.|#HHЁ=@0.HѮ n0<?<N$\ <`?</N0`T-@ n-h/N/X)n .`N^NuNVBg/.?<?.?<>N/X .l/.?<AN.\N>0<` 0<`N^NuNV/N-X/.?<AN-\N0<``Bn` nR nRRRn0.Hl .m .f/./.?.?<@N-@ -@ nNl/.?<IN-\0<`< .మl8?.?<>N,X/.?<AN,\N@/.?<IN,\0<`-nB` nR nRRRn0.HmR .谬mf .g/./.?.?<@N,l -@ nN/.?<IN,H\0<`h .మl8?.?<>N,&X/.?<AN,\Nl/.?<IN,\0<`&/.?<IN+\?.?<>N+X0<`N^NuNVHl?<Nl\N^NuNVHl?<NV\N^NuNVHl ?<N@\N^NuNV`/.N2fX nB(/.N2RX n(H|\g/.N24X @n/. /.N1PN^NuNVBn`:?.HlN!\0.g 0.A 2.A Rn n mHlHlHlHlHlNN^NuNV?,?,?,?,?,?,?,?,BgNJ@f?,?,?,?,?<?<0,@| ?0,@| ??<N?,?,?,?,?<BgHlNBgHlNl\?,?,?,?,?,?,?,?,?<N`BgBg?,?,?,?,Bg?<HlNN^NuNV0,g0,lg`HlHlPN08PHlHlN0*PHl?<N6\ @frHlHlHlPNN J@gN0,gFHlN0>X @o4HlHlPNP?<N0THlPNX=@BgNT`=|`=|0.gRBnHlHlPN/PB,Hl?<N\ @frHlHlHlPN J@gN0,gFHlN/X @o4HlHlPN P?<NTHlPNX=@BgNpT`=|`=|0.g\/,?<IN(P\?<NNN?<N TNN^NuNV0,g0,lg` ,ڐ-@ ox?,?,?,?,NP0,H/ ./N / </N 2 X-@ .g()n?<N zTNN$N?<N dTNdN^NuNV0,g0,lg`?<N 6T?,?,?,?,NP0,`|g`& ,֑ lBN ``|g`4 ,Ѭ ,",ڒְo ,ڐ)@N`B`|g` oS0,=@=@=l0,lS@=@=@0,l﬐lTS@=@0,lS@=@0,lT=@BBHlHlHn?<?,XN*NBg/,Np\ ,",ҬְmBl``|g` ,",ڒְlR0,=@=@0,lT=@0,lS@=@=@0,lS@=@0,l﬐lTS@=@=lBBHlHlHn?<?,XN)Bg ,ЬS/N\ ,ΰlBl``|g`40,l0,2<Ll̰Ao0<Ll9@N``|g`$0,̑l llBlN`Z`|g`$0,2<Ll̰Al RlN`,`|g` lo SlN``NnN?<N\TN^NuNV/./././.?.?.?. ?. ?.?<NT n0HVH@J@g>2,V n0HVH@@ n0A02,V n0HVH@@ n0A0 n0HTH@J@g>2,T n0HTH@@ n0A02,T n0HTH@@ n0A0 n2HVHA n0A0 n2HTHA n0A0N^NuNV ,)@ ,gR9|L0,HTH)@0,HV9@0,l @Lo0<Ll9@ </ ,/N / ,/Nd X=@ no=| <2,H/ /N 2,H/ /N$ X=@ no=|?.?,N bX?.?,N XN^NuNV0<Ll=@ @n-|`X <2,H/ /N$ /0.H/N X-@ l -| o -| ,ڐ-@ n-|`R </ ,/N / ./N0 X-@ l -| o -| .??,N zX .??,N XN^NuNV n0nl 0.` n0=@ n 0nl 0.` n 0=@ n0 nP2.nAl n0 nP` 0.n=@ n 0 nP2.nAl n 0 nP` 0.n=@ n0 n 00.n n00.n n0 n Po n Pn 0<`0<`N^NuNV=n=n 0.n S@=@0. nS@=@Hn?<?,XN#pPN^NuNVHnBg?,XN#XPN^NuNV-l`Bg/.N.\R .",Ҭְm0,g BlNN^NuNVH0=l0,lN"./2,TH/N|"HЁ=@&l .(,".遘 n n f ll ./HlHlZN h Ab$H<<` RF FLm-K-DAd$HBF`V><HAG|0 G:m 0^@H`0H><HA|0 G:m 0^@H`0HRSRF Fl fA}$HBF`V><HAG|0 G:m 0^@H`0H><HA|0 G:m 0^@H`0HRSRF Fl f&n(.A$H n fjBF`"H|f 0< `HSRF Fl f0,lAZBAZA/?.?.?,XN!J `NBF`.H| mH|o 0<.`HSRF Fl f| | `:?,T?,0,"./2,TH/N2"HЁ??,BgN AZ `L N^NuNVHn?.N \`N^NuNVN =@HlPHlRHlTHlVN X9@XBn`0.RnA60 n m9|JHlHlXHl6N 0,TW@9@N lTlRlN0.`N^NuNVHnHnHnHn?<BgN =@ nf=|?.?.?.?.?.N  `N^NuNVHnHnHnHn?<BgN =@0.2.HA=@0.2.HA=@?.?.?. ?. ?<?< 0.| ?0.|?N =@?.?.?. ?. ?.N =@ ng@HnHnHnHn?<?.N =@?.?.?.?.BgN 0.`N^NuNVHnHnHnHn?<BgN =@HnHnHnHn?<?.N d=@0.2.HA=@0.2.HA=@?.?.?.?.?<?< 0.| ?0.|?N =@?.N T`N^NuNV?.N T`N^NuNV/./././. ?<?.N `N^NuNV/./././. ?<?.N `N^NuNV/./././. ?<?.N \`N^NuNV/./././. ?<?.N 0`N^NuNV nm nn/. NTX=@ nPoH?<P/. 0.RAA/N 0.RAlB0.RAmB`4/. 0.RAA/NP0.RAЈ @B0.RAA -@ .-@ .=@0.RAA -@ .=@BgBg?.?.?<?.N V `` 0<`N^NuNV nm nn/. N,X=@ nPoH?<P/. 0.RAA/N 0.RAB0.RAB`4/. 0.RAA/NfP0.RAЈ @B0.RAA -@ .-@ .=@0.RAA -@ .=@BgBg?.?.?<?.N. `` 0<`N^NuNVBgBgBgBg?< ?.N `N^NuNVHnHnHnHn?.N=@HnHnHnHn?.Nn ng0.2.nA @l0<2.nA=@`=n0.2.nA @l0<2.nA=@`=n?.?.?. ?. ?<?.N$ =@0.`N^NuNVBgBgBg?. ?<?.N `N^NuNVBgBgBg?. ?<?.N `N^NuNVBgBgBg?. ?< ?.N `N^NuNVBgBgBg?. ?<?.N `N^NuNV=n =n 0. nS@=@0. nS@=@?<?,XNX=@?.?,XN*X=@Hn?,XN>\N^Nu)Iۊ)Jۆ"/0<NB"lۊ$lۆNu NV9n0.| A" AA-H=|` nR2.AH0Rn nm/,N.X0,0N^NuNVA)HAb)HA@)H A0)HA$)HA)HA)H?< NXT9l00,N^NuNV9n@9n B9n D9nF9nH9nJ9nL9nN9nP9nR9nT9nV9n X9n"Z)n$$9n(\9n*^?<NT n,02 n004 n406 n808 n<0: n@0<0,0N^NuNV9n@)n $?<#NTN^NuNV)n$9n @9nB9nD9nF9nH9nJ?<*NHTN^NuNV)n$9n @9nB9nD9nF9nH9nJ9nL9nN?</NTN^NuNV)n$9n @?<2NTN^NuNV9n@9n B9n D9nF9nH9nJ9nL9nN9nP?<3NTN^NuNV9n@)n $?<4N|TN^NuNV)n$?<6NdT n 02 n04 n06 n080,0N^NuNV9n@9n B9n D9nF9nH9nJ9nL9nN?<INTN^NuNV9n@9n B9n D9nF9nH9nJ9nL9nN?<JNTN^NuNV?<MNT n02 n 04 n06 n080,0N^NuNV9n@)n $?<NNhTN^NuNV)n$)n (?<ZNJT n020,0N^NuNV9n@9n B9n D9nF9nH?<dNTN^NuNV9n@9n B9n D9nF9nH?<eNTN^NuNV9n@?<fNTN^NuNV9n@?<gNTN^NuNV9n@9n B?<hNT n 02 n04 n06 n080,0N^NuNV9n@9n B9n D9nF9nH9nJ?<iN6TN^NuNV9n@?<kNTN^NuNV9n@9n B9n D9nF9nH9nJ?<lNT n02 n04 n06 n 080,0N^NuNV)n$9n @?<rNTN^NuNV?.NT nn0<`?.?<>N >X9@ܾg0<`0<N^NuNV?.?<LN XN^NuNV/ AJ&H`0+ |g/ N*X AJ"Ҽm?.NT&_N^NuNV/ &n/ NDXJ@g0<`00+ |g /+NXBk ?+ N,TJ@g0<`0<&_N^NuNVH&n0+ |f0<`.0+ |gV0+ |f0<`v0+ |g?<B?+ NP?/+?+ N.P @f0<`@k 0Hѫ`$ k o?<0+D@H/?+ NBP'@&Bk0<LN^NuNV fBC`&SCdTC0|g0|gԼdRC`|CHBC0|@HB LN^NuNVNVH n " n $&JjFFJjFFLN^@NuNVH n"n $0(H@6C|g.0)H@:E|gE|BB0<まef bRAQ$0P`HNVH n$0(H@6C|gd"n .0)H@:E|gD|E(HD*HE20HGHBBB8:BGBBЇӄЂӅJg$0P`B`NVH"n 0<9@Q`NVH"n Bl n,0(H@8D|fB.0)H@:E|fB2$60Enfl8,:.6$0Jg0Eg|n0@gDԇ0,Q fBB`HSCdTC0|g0|gԼdRC`|"|CHB|C0|@HB AHABA LN^NuNVH0.|=@n n f n0H-@HnNXA-H`> n(g nf. n-P n(f HnNX` HnN>XA-H/./. 0.A PNPLN^/W DNuN^NuNVH nB fB`м8 LN^NuNVH n$fBCB`nD6< f႖|NzN^NuNVH0&n$n Bn-J @)P)h-l-lBEG>O|g|JGn|m` REHl/ NRPO`SEHl/ NPO`&0+H@JGgDG0<0dR@0.BAQ,>QQֆG|0QB`Rn0.g$nB`0R 2.HmB`b .6.HЃR$@ nH|0fRZ"` R"H|9n nH|0f$n R&@fSE .6.HЃ @B n0L N^NuNVH$.f BB`J". BnJlVnDJlRnDvd`Bbd nmDdD-@-A LN^NuNV/BnJlRnDJ lRnD 0. -@0.n0. nngD -n N^.JNuN^NuNV nl <`?.?./. ?<BNn -@ m .`?<?.B?<BND -@?<?.B?<BN* -@ nf .Ю -@ `$ nf .Ю -@ `0.g <`b . oHn . /?.?<@N Bg?./. ?<BN ]|9@ܾg <` `Blܾ . N^NuNV/.?<INr\N^NuNVBn`&0.Aێ0nf0.AێBPRn nLmN^NuNV?>.=|0Aێ"HPgXHf0(>N^Nu)Iۊ)Jۆ)_ۂNA"lۊ$lۆ/,ۂNuNVH&n Bn0.|dg`>< `.`|ug`>< ``|og`><``|xg`>< l* ndf SR- .D-@`0. f Gf .`& Gf .` ./0H/NX 2.RnA0 Gf .`( Gf .` ./0H/Nl X-@ .fp`FSn0.A P m0.A0| |A`0.A0|0 SR0.fLN^NuNVH&n n f=| )n)nHlHl?<NT]|@0. R@?HnHnHnNT.g SR-.H|0f.f SR`J nff>.n RG0lo0,`0> Gl0<`0?HnHnHnNBF`0RFA SRSGSn0g nl` SR0Sn nl0. g SR.` SR0RnSn 0. g nm`" Go0RFAH`0<0 SRSG0. Sn J@f`` SR0. g SR.><`0RGA SR0. Sn J@f SRE?.Hl/N /NXHѓLN^NuNVBn`"0. n PHC|0=@ nR n PH|0m n PH|9o0.N^NuNVH0&n -n @$PX`R` nRg H|%fH|%f,RBn=|Bn| H|-f=|RH|0f|0R-JHnN$X=@$nH|.fR-JHnNX=@$nH|lf=|RgH-n Gdg Gog Gxg GufB0.g @ ` @0H/Hn?.?NV 0.g0<`0<H` Gcf R @ nRT` Gsf4 @-PX<.` nR nRSF0g nf`J Geg Gfg Ggf, @)P)h/,/,Hn?.?NP` 0 nR .nl0.g$<.".A` nRSF0f`b .2.SAHЁ-@-@,.` .2SAHЁ @ nSSF0f` nR .o .R-@f nB .L N^NuNVHn /.NhPN^NuNVH0&n$n -K`fS`f .`L N^NuNV n "n fN^NuNVH0&n$n >.-K`0SGJ@g f .`L N^NuNVH0&n$K`Rf `L N^NuNV .9@ .9@N^NuNV .9@ .9@N^Nu)Iۊ)JۆHl)_nHln" <sNB"lۊ$lۆNuNV9n 9| Bl9|9nN0,N^NuNV9n 9|Bl9|9nN0,N^NuNV9n 9|Bl9|9nN^0,N^NuNV)nr)nz .мZ)@~9|dBl9| n 9PN n 0A)HrA)HzA)H~A)HvN^NuNV)n v9n 9|9|9|9nNA)HvN^NuNV9n 9n Bn nR2.RnA|0f9|9|Sn0.9@9nN`N^NuNV)n v9|r9|Bl9nN8A)HvN^NuNV9n /.NX/.NX)n v9|m9|9|9nNA)HvN^NuNV`4 nH| f?< ?<NnX nRH??<NVX0. Sn J@fN^NuNV` nRH??<N(X0. Sn J@fN^NuNV` nRH??<NX0. Sn J@fN^NuNVH0&n $KA-H nf?./ N4\=n`L nf?./ N`\=n`. nf?./ Np\=n`-KBn?.N:TJ@f`H| f |o@ H-@/./.?.?<@N$ 9@ܾHg0<`0,ܾn/./<?.?<@N 9@ܾ @g0<`tRnR -@`R ned` 6.ƼЃ$@ H-@/./.?.?<@N 9@ܾHg0<`0,ܾnBlܾ0.L N^NuCA "A."AT"Az"A"A"A"A"A"C222 222"222'2 222222"222#2222222"222$2222222"222%2222222"2222222222"222#2222222"222"2222222"222"22 22222"22 2222222 2"22 2!2CJ"2"2 2"2"2"22"2"2"22"2x9|H)l)l)l)l)l9|CA"A"A"A$"A*"A"A "Nu FiledumpKurz-Infos zum Filedump AccessoryFenster: Alle Funktionen wie blich. Nach Close () kann der Dump gesichert werden.Maus: Fensterfunktionen auslsen und Cursor positionieren.Tasten: Vernderungen im Dump und Cursorsteuerung.Entwickelt von Michael Vogt, 1988[1][Datei nicht gefunden][ Ok ][1][Zu wenig Speicher: |%ld Bytes frei, |%ld Bytes notwendig][ Ok ][1][Datei nicht gelesen][ Ok ][1][Datei kann nicht|erffnet werden][ Ok ][1][Fehler beim Schreiben|ist aufgetreten][ Ok ][1][Die Diskette ist voll|Die Datei wurde nicht|vollstndig abgespeichert|und deshalb wieder gelscht][ Ok ][2][Soll die Datei|gesichert werden ?][ Nein | Ja ][2][Soll die Datei als|Hexdump gesichert werden ?][ Nein | Ja ]\*.*[1][Es kann kein Fenster geffnet|werden. Bitte schlieen Sie|ein beliebiges Fenster][ Ok ]Hexdump von Dateilnge: %ld Bytes Infos mit %08lx@$??CON:AUX:PRT:%d Bedienungsanleitung zum DUMP.ACC Allgemeines: DUMP.ACC ist ein Accessory und wird wie blich auf die Boot-Diskette kopiert und mit gestartet. Der Eintrag in der Menzeile lautet "Filedump". Das Programm ist Public Domain, darf aber nur zusammen mit dieser Hilfsdatei kopiert werden (sonst rgert sich spter wieder irgendjemand darber, da er nicht wei, was das Programm eigentlich soll). Aufgaben: DUMP.ACC wurde fr drei Aufgaben entwickelt: 1. Anzeigen von Dateien (z.B. Programme, .BIN-Files, .RSC-Files) im Hex Format. Wenn man vom Desktop aus Nicht-Textdateien anzeigt, erhlt man ja bekanntlich nur ein frchterliches Chaos auf dem Bildschirm 2. Abspeichern der Datei in diesem Format 3. Durchfhren von kleinen nderungen in diesen Dateien (z.B. Patches in Programmen oder .RSC Files) Und warum das alles als Accessory ? Warum nicht ? Als Zugabe zu den drei Hauptaufgaben hat man z.B. die Mglichkeit, jederzeit Dateien zu kopieren (z.B. wenn man gerade in einer Shell arbeitet, und merkt, da eine Datei zum Linken fehlt; oder wenn gerade keine Ram-Disk installiert ist und das Kopieren mit dem Desktop zu de wird). Aufruf: Der Aufruf erfolgt wie blich durch Anklicken des Menpunktes in der Menzeile. Es erscheint dann die bekannte Dateiauswahl-Box. Der Zugriffspfad entspricht dem aktuellen Directory. Nach Auswahl der Datei, und wenn alles klappt (genug Speicher, Diskette lesbar ...) erscheint ein Fenster mit dem Hexdump. Der Hexdump hat folgendes Format: Adresse Byte in Hex Byte in ASCII xxxxxxxx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xxxxxxxxxxxxxxxx Adresse : Die relative Adresse zum Dateianfang Byte in Hex : unterteilt in zwei Blcke mit jeweils acht Byte Byte in ASCII : Die entsprechenden ASCII-Zeichen (Atari Zeichensatz) Fensterfunktionen: Alle bekannten Fensterfunktionen sind verfgbar. Im Namensfeld des Fensters steht der Zugriffspfad der Datei. Im Info-Feld steht die Dateilnge (dezimal) und ein Hinweis auf die Taste. Mit kann eine Kurzinformation abgerufen werden. Wenn das Fenster geschlossen wird hat man die Mglichkeit, die Datei abzuspeichern (nur dann). Datei sichern: Zuerst erscheint eine Alarm-Box mit der Frage, ob man die Datei in der normalen Form (mit den nderungen) abspeichern mchte. Wenn angeklickt wird erscheint die bekannte Dateiauswahl-Box. Voreingestellt ist der Name und der Pfad mit dem die Datei geladen wurde. Wenn beim Sichern ein Fehler auftritt, erscheint eine Fehlermeldung und man kann einen weiteren Versuch starten. Anschlieend erscheint eine weitere Alarm-Box mit der Frage, ob man die Datei als Hexdump abspeichern will (z.B. zum Ausdrucken). Bei luft alles wie oben, mit dem Unterschied, da kein Name in der Dateiauswahl-Box voreingestellt ist. Der Hexdump wird zuerst im Speicher erzeugt und dann in greren Stcken abgespeichert (Das geht schneller als zeilenweises Schreiben in die Datei). Deshalb passiert folgendes: Das Ziellaufwerk luft an, um die Datei zu erffnen. Dann wird im Speicher der Dump erzeugt. Je nach Lnge des Hexdumps und Gre des Speichers bleibt das Laufwerk in dieser Zeit stehen. Die Maus bleibt Biene bis die Datei vollstndig geschrieben worden ist (Bitte nicht vorzeitig die Diskette wechseln !!). Achtung: Der Hexdump ist etwa 5 mal so lang, wie die ursprngliche Datei ! Wenn er nicht vollstndig auf dem Ziellaufwerk erzeugt werden kann, wird das erzeugte Bruchstck wieder gelscht (vermeidet Dateileichen mit 0 Byte). Der Hexdump, der fr die Datei erzeugt wird, unterscheidet sich von der Dar- stellung auf dem Bildschirm dadurch, da die ASCII Codes von $00 bis $1F und von $80 bis $FF als "." erscheinen, da sonst beim Drucken oder Editieren der Datei Probleme auftreten wrden. Editierfunktionen: Wenn eine beliebige Taste gedrckt wird (auer ) erscheint der Cursor in der oberen linken Ecke des Fensters. Er kann wie gewohnt mit den Pfeiltasten bewegt werden, oder mit der Maus direkt positioniert werden. Das Programm achtet darauf, da der Cursor immer auf dem Anfang eines Bytes im Hex-Teil oder im ASCII-Teil steht. Das Fenster wird automatisch nachgeschoben, wenn man versucht den Cursor aus dem Fenster herauszubewegen. Eingaben knnen wahlweise im Hex-Teil oder im ASCII-Teil durchgefhrt werden. Im ASCII-Teil sind alle Tastenkombinationen erlaubt. Es wird das Zeichen gesetzt, da sich aus der Kombination mit und ergibt. Im Hex-Teil mu immer ein ganzes Byte eingegeben werden. Es sind nur die Tasten <0> bis <9> und bis wirksam. Nachdem das obere Halbbyte eingegeben wurde, sind alle Funktionen gesperrt, bis das zweite Halbbyte eingegeben wurde. Whrend der Eingabe erscheint jeweils im anderen Teil des Dumps der neue Wert. Nachdem ein Byte gendert wurde bewegt das Programm den Cursor automatisch ein Byte weiter. Wenn Eingaben gemacht werden, verlt der Cursor den jeweiligen Teilbereich (Hex oder ASCII) nicht (z.B. wenn das Zeilenende erreicht wird). Es ist aber weiterhin mglich, den Cursor mit den Pfeiltasten zwischen den Bereichen hin und her zu bewegen. Achtung: Die Taste hat bei der Eingabe keine Funktion. Im ASCII Teil liefert sie den Wert $08. Es ist nicht mglich, die Datei durch Eingaben zu verlngern. Sie kann nur byteweise verndert werden. Fehler: Mir ist bekannt, da kein Programm fehlerfrei ist. Trotzdem glaube ich, da sich das Programm relativ gutmtig verhlt. Wenn trotzdem Fehler auftreten sollten oder wenn jemand eine wahnsinnige Idee zur Verbesserung hat kann er/sie mir ja schreiben. Programmlisting: Das Programm wurde in C geschrieben. Wenn jemand an dem Listing interessiert ist kann er/sie mir eine formatierte Diskette plus 15.- DM schicken und erhlt dafr das kommentierte Listing und vielleicht eine neue verbesserte Version. Adresse: Michael Vogt Hornberger Str.7 7730 VS-Villingen . $`!.. KEY_HELPACC Mt "G.ASCII PIC Qt .}KEY_HELPTXT Wt N`+fC;.I#,#,#,By,NNV?.?<NNN^ _TN/,HNVA-H?< BgBgBgBBgBgBgBgBgBgBgBgBgBgHy1 VHhHhHhHhHhHhNJ V1@rHy/x?N"bX?<Nv-@ @2(=A"@4)=B$@6*XC=CAfx=D6.Bg&@(H؃-D(D:. H(*@;CN^,_ _TN/,HNVAV-H0. @d?<BgBg?<?<NV-@/.?<prAtBvC??<?<?<?<Bg?<N =@/.?AO"OAO"OA2"Or?"Q?<?<NPN/.N /.BgN=@/.?.Hy2N 6/.N ./.NNHy2p/HzTBN V2Ad:?<Hy2HnN%\0.rA\6<C_DBd ? NNN^,_ _TN999___NV?.?< NMN^ _TNA #,A,C!It0B BA/xBt0B  NrAmAO"O0<Q?<N32AC2p /?BgBgBgrd/BgBgBgBgBgBgBgBgBgBgHy1Hy2Hy2Hy2Hy2Hy2Hy2NJ" ArAo4? n0(rAW0(vCWĄDBd"n0.3@ 4. 3BN^,_ _ N/,HNVAN-HN)n n0.-H0(rAW0(vCWĄDBd"h /"n / ND`N^,_ _ N/,HNVA-HN)n0. H//<N) м/HnN'p=@2. SA=A` n0.p1@Rn0.no n2. r1A$.-B .N^,_ _TN/,HNVAH-HN)np=@ n 0.rtBg R@=@`0.rAl=A0.=@0.N^,_ _XN/,HNVA4-HN)n/.N @d0. Hм//.N'N^,_ _\N/,HNVA-HN)np=@0.rdA] n 0(vCVDBd0.R@=@`0.rdAlzt=BS@=@`6 n 0.-H0(`/( n/( NN? NN`"h -I/ n/ NN? NN n/(?< NN n/(?< NN np//( N'`"h -I/ n/( NNH? NN n/( n/( NN*? NN n/( n/( NN ? NNd np//( N'`0@ @ b$@0;N xxRn0.no2.H//<N)"Ҽ//. N'N^,_ _XN/,HNVA-HN)n n 0.-H0.1@2.1A4.1B6.1C8.1Dz01E1E|FWrAW€B@d0.tB=@0.t B1@p1@ vCW|FWAEd2.1A :. 1E`!@ 2.zEg/. ??.NnN^,_ _N/,HNVA-HN)np=@ n2(tBg` n0.0(r AtBf0.R@=@` n0."n0.0)r FAA1@0.R@=@/.??.?.?.?.?.?.?.?.?. Nh0.=@0.N^,_ _N/,HNVtA>-HN)n0.=@2. =A$.-Bx?<(HnHnHnxHntNN^,_ _PN/,HNVtA6-HN)n0. =@".-Ax?<rHnHnHnxHntNN^,_ _\N/,HNVtA^-HN)n .-@x2.=A4.=B6.=C8.=D:.=E<. =F?<*HnHnHnxHntNN^,_ _N/,HNVAH-HN)n/.?. HnHnHnHnN/.Bg?<?.?.?.?.N=B:.<=E&.$-C?<HnHnHnHnN0.=@ n2.0"n4.2$n6.4&n 8.6(n :.8*n<.:0.N^,_ _3| NAXNu/")x itg$H@//?) ?<@NA LJof _Nu _4` _t6 Bo r aSB`2aNH?< _r ar a/L?4@" f,tPdv`  rV "2 * R">:d"F:6B.H*6r >>   *jV0b,4 "T & & (,&  H                 "$"2J P,R f  "D    * "F V  Ǐ        LJǀLJ Ǐ      Ì    ǀ          LJ  χχLJπ        8  . ~<<0` ~<<a <~<1 ~~~0` ~~fa ~~~`1 `ff`f`` 8`fff`@ f`f`1 `ff`f` 8`ffff` f`f`. |f 1f` |ff`1f` |f ~n 1` ~nf`1` ~n` v``g`` vf``g` v` f``f`` ff``f` f`  f00f``  ff`f`  0f<`  ff00f``  fff``f`@  0ff< ~~~ ~~~~ ~~~ <<~ ~<<> ~<< 8       `  ~~p ~0ap? <~ ~~ ~a0 ~~ `8 c 8`8fc` f`8` `8 c 8`8ffc` f`8 0 |1a< |f`1a` | ~1`/ ~f`1` ~p  aa`' f`aa` @  aa f`aa` P@  fa  f`a`  0p@  ffa  ff`a`  0f  ~~~ ~~~~ ~~~ <~< ~<~>< ~<~          ~<  ~<fa <~<0 ~~  ~~fa0 ~~~x`@ `ff` 8`fff`` f`fH`@ `ff` 8`ffff`` f`fH@ | <00` | f`00``? | Hp ~ <00X ~ f`00`* ~ H l``Xa f```a`  0 l``a f```a` `  0~c  0f`c 00 f0~c 0 f0~`c 0f0 ~~ ? ~~~> ~~~ <~  ~<~ ~<~  ~   |   f  ~~~ ~~fa? <~~0 ~~~ ~~a? ~~~H ` `` 8` <f` f` ` ` `` 8` ~f` f` 00 ||0a |f`0a |`0 ~~0` ~f`0 ~x`  a``  f`a`    a``  f`a`  `  ff``  ff`f`  0f`  ffff`  fff`f`  0ff ~~~ ~~~~? ~~~ <<<` ~<<<? ~<<        f  ~  ~ fa <~ x ~ < ~ a ~~ @ `pa 8`ffa` f`0p ``a 8`ffa` f`  |<`1c |<f`1c` |<H  ~<|0` ~<f`0`1 ~<0p< l~`f` lf``f`1 l@> lf`f` lf``f`1 l ; ~fg`  ~f`g 1 0~  f~f8g`  f~f`8g  0f~ ~ ~` ~~ ~ ~~  < <` ~< < ~<    @      @ ~~~ ~~` <~~ ~~~ ~~a ~~~  ``f 8``<ᙘff` f``  ``f 8``~ᙘff` f`` `@ || g ||f`g` || ` ~~  ~~``l ~~` ` `` `al`` `  `` fa|`` `  0`` ~a```  0` ff0f` ff<a`f`  0ff ~~0 ~~~@ ~~~ <<0 ~<<0 ~<<         6 ~<` ~``  ~<~` ~<8a` 4 `pfg 8`p0`fg  ``ff 8``0`ff`? 8 |`<`f |`0``xf`$  ~|<` ~|0``x`  ~f`g ~a``g` `  ff`f` f0a``f` `` ff`f` f0a``f`  `` fff`f` ff0a``f`   ~~~ ~~~  <<< ~<<           ~~<  ~~f``  ` ~~~  ~~fa ` ` `f0``  8`fᙘf`` `  `f0``  8`fᙘf``1   | ~00`  | ~`0`  ~ >0 ~ <`0   `a a`a   ``a ~a`a  ` 00c  0ac 1  ` f00c  f0ac   ~0<  ~~0  <08 ` ~<0           ~< ~<`0  ~~ ~~<a `0 `f0f` 8`ff0ff` `0 `f0f` 8`ff0ff` ` ` |<`c |<f``c ` ` ~<` ~<|`` ` ` f0pf` ffa0f` ` ` f08f` ffa0f` ` `  ff` ffaf`  ` fff` ff|af`   ~~ ~~~l  << ~<<`   @        ~<0 ~<`00`  ~~0 ~~a0` `` `fp`f` 8`fpff``1 ` 0 `fp`f` 8`fpff``1   |~`g |~`g`1   ~>` ~>~``1 `  ``` ` a``` ` ``` ` a``` ` 0 ``` ` a`` * ` f`` ` fa` ;  ~<0` ` ~~<0  <80`À ` ~<8p0À  0 `        < < `  <~ <~a `? pf` 8pfᙀc`` `? `f8` 8`f<ᙀc`` ` `fp` `f>```  |n` |n`` `? ~vp`` ~v>a`` `? ff8`` ff~a` ` ff`` fffa`  ` ff`` fffa`   ~~` ~~~~  <<` ~<<>           p  `p0  < <a`၀  p8~ 8p8c`  `8~ 8`88ᙀc`5  ` `8`$  |` |`$  ~~` ~a$  f~` fa$  f` fa 5  f` fa   ~~` ~~~<  <~` ~<~<<   8      @  < < `  <~ <~a@ ` pfp` 8pf@c` ` `f8` 8`f<@c``5  ` 0 ` ~`0@`$  | 0X` | f`0@`$  ~`X` ~fa``$  f8`` ffa``$  f0p` f0fa` 5  f0` f0fa`   ~~ ~~~~  <~  ~<~<            ~< ~ `  <~~ <~a(  p f 8p ᙘ(c`8  ` f 8` fᙘ(c`0  `  `f`(`0  | `` |f`(`? 7 ~ `` ~ fa`?  7 f ` f fa(`0 `3 ff`` fffa(`` 0 `@3 ff`` fffa(`` 8  ? ~~ ~~~~(  << ~<<>(  `   `  P  2 P  8  z` ` P < | < La `? P p 8pᙘc `1  ` 8`<ᙘc `1  `< `<~``1  |<` |<f``1  ~l` ~lfa `1  fl` flfa `1  f~` f~fa 1  f~8` f~fa8 1  ~ ~` ~~ f1  < <` ~< f1          2   ~ ~z`   <~< <~La   p`~0 8p`ᙘc`   ``f0 8``fᙘc`   `|f` `|fa`   |~f` |~v`` `  ~~` ~~``` `  f~` f~``` ` ff` fn```  ` fff9`` fff`9``  ` ~~f ~~~f   <<f ~<<f         l   |`x ``|  ` <<~`x <<a`T  ` ppf` 8pp<Dc  ` ``f` 8``>c   ``~`` ``a`  |||`` ||>``   ~~f`` ~~~`` ` ` fff``` fff``` ` ` fff``` fff```  ` ` fff8``` ff~`8``    ~~~x ~~~>  <<|x ~<<   ~         ~< ~` ` <~~ <~a `` pf` 8p<ᙘc`` `` `f`` 8`~ᙘc``  ? ` `0` ` fa0` ? | `0`` | f`0`   ~```` ~f``` ` f``0` ff``` ` f0f0` f0f``  ` f0f8` f0~`8`    ~0~ ~~0<`  <0< ~<08`   ~        <x <` ` <~| <~a `` pfn0`` 8pf0c`` `` `ff0``` 8`f0c``  `<f``` `<a``  |<f``` |<``` `  ~ff0``` ~f0`0`` `  fff0``` ff0`0`` `  fff`` fff``  `  ffn9`` fff`9`    ~~| ~~~~  <<x ~<<<8        @   <~0@ <`0 ` <~~0 <~a0@ `` pf`p` 8pfpc`` `` `f`p` ` 8`fpc``  `~| ` `~a`  |>| ` |>`` ` ~`` ` ~``` `` f`` f~``` `` f`` f~```  ` f`9 f``9`   ~<~0 ` ~~<`0`  <8~0  ~<8`0`            ~<~ ~<`  ` ~~~ ~~a f` ` f`f` 8fᙀ0ff`` f` ` f`f`` 8fᙀ0ff`` `  f|``  fa0`  n|  n`0 ` v`` v`0`` `` f``? f~`0`` `` 0f``6 0f~``` 6 `` 0f`9`6 0f`9`` 6   0~``? ~0~`&  0<`` ~0<`         `   ~>p ~ `px   ~~> ~ ax` c  8`pc6 88#fc  c  8`0c`6 88&ᙀfc   n`7  ,a8  n`7  `x`  f`> 0`` ` f`> n` ` 0f`6 0`  ` 0f96 0`9   0~~7 ~0~   0~<`7 ~0~         `   ~<f ~< `   ~~f ~~ a f`  fff` 8f#0ff` f`  fff` 8f&0ff`   ~0  ,a00  ~0  `00   f` 2``0  ` f` f``0  ` 00f 00`0   ` 00f8 00`80 `     0~f  ~0~2 `   0~f  ~0~?            ~~~ ~~`  ` ~~~ ~~a ` `  ` 8 ᙘf`` ` `  ` 8 ᙘf`p     a     `       ` `    `` `` 0f` 0f``  `` 0f9` 0f`9`    0~~ ~0~  0<~ ~0<            ~  ~ `  ` ~  ~ a a ` a 8ᙘ`fa  a ` a 8ᙘ`fa`   <  <a`   <  <6``   l ll``  ` l l``   ` 0~f 0~l```   ` 0~f88 0~6`88`     0 ~ ~0   0 < ~0            KEY HELP ======== (1.2.88) KEY HELP ist ein kleines (naja, Programmcode ist etwas lang) Accessory, welches man ber Tastatur aufrufen kann. Bei Instal- lation zu Anfang einer Sitzung meldet es sich kurz mit der Copyright-Meldung. Fortan ist es unter GEM-Programmes via Alternate+Control aufrufbar. In dem daraufhin erscheinenden Dialogbxchen kann man eine Zahl aus dem ASCII-Bereich (0 bis 255) eingeben. Mit RETURN wird diese Dialogbox verlassen. Bei erfolgter bergabe an der Tastaturpuffer gibt's einen kurzen Glockenton (, der sich auch im Kontrollfeld abschalten lt). Das dazugehrige Zeichen wird prompt in den Tastaturpuffer geschrieben. Somit hat man die Mglichkeit, jederzeit ber die Tastatur nicht erreichbare Zeichen einzugeben. Noch etwas besonderes. Drckt man Shift links und Alternate+ Control, so wird das zuletzt eingegebene Zeichen direkt ausge- geben, also ohne Nachfrage mit Dialogbox. Hlt man die drei angesprochenen Tasten fest, so wird alle 1/10 Sekunde das Zeichen wieder ausgegeben. Eine Wiederholfunktion ist also auch dabei. Da man auch ohne Dialogbox arbeiten kann, ist selbst die Eingabe in selbige mglich: Vor Aufruf der Dialogbox Sonderzeichen festlegen (Alternate+Control drcken, Nummer eingeben, Return drcken), dann Dialogbox aufrufen und Shift links+Alternate+ Control drcken. Zeichen erscheint umgehend. Fr das Programm wurde der Public Domain-Vertrieb gewhlt. Es ist somit nicht gestattet, es gegen Entgelt weiterzugeben. Bei Benutzung ist jedoch ein Anerkennungshonorar fr den Autor fllig. (Eigentlich sollte es bei Public Domain-Programmen selbstverstndlich sein, dem Autor ein Anerkennungshonorar zu senden.) Viel Freude mit KEY HELP! Dietmar Rabich, Dvelingsweg 2, 4408 Dlmen, Tel. 02594-86103. Literatur zum Programmieren: Atari ST Profibuch, Jankowski/Reschke/Rabich, Sybex 1987 KEY HELP wurde mit ST Pascal Plus 2.02 erstellt. KEY HELP wurde erfolgreich ausprobiert mit: EDIMAX, TEMPUS, 1st WORD PLUS ohne oder mit schlechtem Erfolg bei: SIGNUM!, Protext . /`Q.. EXAMPLE BAS ct REXAMPLE LST gt YV#MEDITOR DAT kt b MEDITOR PRG nt fREAD_ME yt LST B`MED H`GfABASIC.tttt:AAMED.EX1MED.EX2 RESTO.EX1.RE RESTO.EX2.RE INIT.EX1.MENU CALL.EX1.MENUP.EX1.DESK_.ABOUT_EXEMPTY.PP.EX1.FILE_.LOADP.EX1.FILE_.SAVEP.EX1.FILE_.MERGEP.EX1.FILE_.DELETEP.EX1.FILE_.RENAMEP.EX1.FILE_.COPYP.EX1.FILE_.DIRECTORP.EX1.BLOCK_.STARTP.EX1.BLOCK_.ENDP.EX1.BLOCK_.COPYP.EX1.BLOCK_.MOVEP.EX1.BLOCK_.DELETEP.EX1.BLOCK_.READP.EX1.BLOCK_.WRITEP.EX1.BLOCK_.HIDEP.EX1.PRINTER_.INSTALLP.EX1.PRINTER_.PRINT_FIP.EX1.PRINTER_.PRINT_BUP.EX1.EDIT_1_.REPLACE_P.EX1.EDIT_1_.INSERT_MP.EX1.EDIT_1_.DELETE_LP.EX1.EDIT_1_.INSERT_LP.EX1.EDIT_1_.SET_MARKP.EX1.EDIT_1_.SET_MARK_1P.EX1.EDIT_1_.SET_MARK_2P.EX1.EDIT_1_.GOTO_MARP.EX1.EDIT_1_.GOTO_MAR_3P.EX1.EDIT_1_.GOTO_MAR_4P.EX1.EDIT_2_.FIND_P.EX1.EDIT_2_.FIND___RP.EX1.EDIT_2_.UPP.EX1.EDIT_2_.DOWNP.EX1.EDIT_2_.FIRSTP.EX1.EDIT_2_.ALLP.EX1.MENU_2_.OK___ INIT.EX2.MENU CALL.EX2.MENUP.EX2.DESK_.ABOUT_EXP.EX2.FORMAT_.PAGEP.EX2.FORMAT_.WPP.EX2.FORMAT_.ASCIIP.EX2.FORMAT_.MARGINSP.EX2.FORMAT_.CENTEREDP.EX2.FORMAT_.JUSTIFIEP.EX2.SET_.LOAD_CHAP.EX2.SET_.SAVE_CHAP.EX2.SET_.MODIFY_CP.EX2.STATUS_.DISKP.EX2.STATUS_.MEMORY__P.EX2.MENU_1_.OK___P.EX2.QUIT_.SEE_YOU_4 *** MENU-EDITOR example *** N!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! rNThis program is an example of using more than one MENU in the same program rN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! r  !MF vLF FFFF]F D''''''''''''''''''''''''''''''''''''''''''''''''''''''' 1st menu !+FCh!FF|FRF F F* FL Desk , About EXAMPLE ,----------------,ACC1,ACC2,ACC3,ACC4,ACC5,ACC6,"" N File , Load, Save,--------------------, Merge, Delete, Rename, Copy v&--------------------, Directory,"" Z Block , Start, End,--------------------, Copy, Move, Delete,-------------------- 0 Read, Write,--------------------, Hide,"" J Printer , Install,--------------------, Print File, Print Buffer,"" L Edit 1 , Replace Mode, Insert Mode,--------------------, Delete Line -L Insert Line,--------------------, Set Mark 1, Set Mark 2, Set Mark 2 D--------------------, Goto Mark 1, Goto Mark 2, Goto Mark 3,"" Z Edit 2 , Find , Find & Replace,--------------------, Up, Down,--------------------  First, All,""  Menu 2 , Ok! ,"" "",***  " "EFFEQF* `Z***F EF4FE`vF   F@!F*H!F*P!F*X!F*p!F*!F*!F*!F*(!F*`!F*d!F*l!F*p!F*|!F* .F +FhFFE FwL!!!!!!Fw`LFw L!!!!FwpL! !! F-w(L ! !! F-wHL!!!F-whL!!FwL!!!F-w L!!!F-w0L!!!F-w@L!!!F-wPLFw\L !!!!"F-wlL#!!$!%F-wL&F.F+FDummy Procedure .Fu NOW THE CALLED PROCEDURES  +FW Y! "P.ex1.Desk_.About_EXF-.F+F Y! "P.ex1.File_.LoadF_.F+F Y! "P.ex1.File_.SaveF_.F+F Y! "P.ex1.File_.MergeF.F+F Y! "P.ex1.File_.DeleteFX.F+F Y! "P.ex1.File_.RenameFX.F+ F Y! "P.ex1.File_.CopyFe.F+ F Y! "P.ex1.File_.DirectorF-.F+ F Y! "P.ex1.Block_.StartFr.F+ F Y! "P.ex1.Block_.EndFt.F+ F Y! "P.ex1.Block_.CopyF.F+F Y! "P.ex1.Block_.MoveF.F+F Y! "P.ex1.Block_.DeleteF.F+F Y! "P.ex1.Block_.ReadF.F+F Y! "P.ex1.Block_.WriteFF.F+F Y! "P.ex1.Block_.HideF.F+F "Y! "P.ex1.Printer_.InstallF-.F+F "Y! "P.ex1.Printer_.Print_FiF.F+F "Y! "P.ex1.Printer_.Print_BuF.F+F "Y! "P.ex1.Edit_1_.Replace_FF.F+F "Y! "P.ex1.Edit_1_.Insert_MFF.F+F "Y! "P.ex1.Edit_1_.Delete_LFF.F+F "Y! "P.ex1.Edit_1_.Insert_LFF.F+F "Y! "P.ex1.Edit_1_.Set_MarkFF.F+F $Y! "P.ex1.Edit_1_.Set_Mark_1F-.F+F $Y! "P.ex1.Edit_1_.Set_Mark_2F-.F+F "Y! "P.ex1.Edit_1_.Goto_MarF2.F+F $Y! "P.ex1.Edit_1_.Goto_Mar_3F-.F+F $Y! "P.ex1.Edit_1_.Goto_Mar_4F-.F+ F Y! "P.ex1.Edit_2_.Find_F.F+!F "Y! "P.ex1.Edit_2_.Find___RF4.F+"F Y! "P.ex1.Edit_2_.UpFd.F+#F Y! "P.ex1.Edit_2_.DownF_.F+$F Y! "P.ex1.Edit_2_.FirstF.F+%F Y! "P.ex1.Edit_2_.AllF.F+&F Y! "P.ex1.Menu_2_.Ok___FN INITIALIZE THE SECOND MENU N!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! M'F vL(FN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .F     >'''''''''''''''''''''''''''''''''''''''''''''''''' 2nd Menu +'FCh!FF|FRF F F* FL Desk , About EXAMPLE ,----------------,ACC1,ACC2,ACC3,ACC4,ACC5,ACC6,"" T Format , Page,--------------------, WP, ASCII,--------------------, Margins -2--------------------, Centered, Justified,"" IL Set , Load CharSet, Save CharSet,--------------------, Modify CharSet "" t* Status , Disk, Memory ,""  Menu 1 , Ok! ,""  Quit , See You Soon! ,"" "",***  " "EFFEQF* kZ***F  EF4FEkF   F`!F*!F* .F +(FhFFE FwL)!!!!!!Fw`LFw L*!!+!,F w`L!-!!.!/Fw(L0!1!!2F wXL3!4F2wxL5FwL6F.F NOW THE CALLED PROCEDURES  +)FW Y! "P.ex2.Desk_.About_EXF .F+*F Y! "P.ex2.Format_.PageFX.F++F Y! "P.ex2.Format_.WPFe.F+,F Y! "P.ex2.Format_.ASCIIF.F+-F Y! "P.ex2.Format_.MarginsF.F+.F "Y! "P.ex2.Format_.CenteredF .F+/F "Y! "P.ex2.Format_.JustifieF .F+0F Y! "P.ex2.Set_.Load_ChaF.F+1F Y! "P.ex2.Set_.Save_ChaF.F+2F Y! "P.ex2.Set_.Modify_CF.F+3F Y! "P.ex2.Status_.DiskFF.F+4F "Y! "P.ex2.Status_.Memory__F .F+5F Y! "P.ex2.Menu_1_.Ok___FN REINITIALIZE THE FIRST MUNU rN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! rMF vLFN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! r.F+6F Y! "P.ex2.Quit_.See_You_F_.F]Hi]6acJc ctcccdd6d\dddde eHeneeeff@flfffggJgxgghh(hThzhhhiklmm:m`mmmn n2nZnnno' *** MENU-EDITOR example *** ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ' This program is an example of using more than one MENU in the same program ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ' ' @Init.ex1.menu On Menu Gosub Call.ex1.menu ' Do On Menu Loop ' ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''' 1st menu Procedure Init.ex1.menu Local A$,A% Menu Kill Resto.ex1.re: Restore Resto.ex1.re ' Erase Med.ex1$() Dim Med.ex1$(68) Data Desk , About EXAMPLE ,----------------,ACC1,ACC2,ACC3,ACC4,ACC5,ACC6,"" Data File , Load, Save,--------------------, Merge, Delete, Rename, Copy Data --------------------, Directory,"" Data Block , Start, End,--------------------, Copy, Move, Delete,-------------------- Data Read, Write,--------------------, Hide,"" Data Printer , Install,--------------------, Print File, Print Buffer,"" Data Edit 1 , Replace Mode, Insert Mode,--------------------, Delete Line Data Insert Line,--------------------, Set Mark 1, Set Mark 2, Set Mark 2 Data --------------------, Goto Mark 1, Goto Mark 2, Goto Mark 3,"" Data Edit 2 , Find , Find & Replace,--------------------, Up, Down,-------------------- Data First, All,"" Data Menu 2 , Ok! ,"" Data "",*** ' ' A%=0 Do Read A$ Exit If A$="***" Med.ex1$(A%)=A$ Inc A% Loop ' ' Menu Med.ex1$() Menu 12,2 Menu 25,2 Menu 26,2 Menu 27,2 Menu 30,2 Menu 32,2 Menu 37,2 Menu 38,2 Menu 42,1 Menu 56,2 Menu 57,2 Menu 59,1 Menu 60,1 Menu 63,1 ' Return ' Procedure Call.ex1.menu Local A% Menu Off A%=Menu(0) On A%-0 Gosub P.ex1.desk_.about_ex,Empty.p,Empty.p,Empty.p,Empty.p,Empty.p,Empty.p On A%-7 Gosub Empty.p On A%-10 Gosub P.ex1.file_.load,P.ex1.file_.save,Empty.p,P.ex1.file_.merge,P.ex1.file_.delete On A%-15 Gosub P.ex1.file_.rename,P.ex1.file_.copy,Empty.p,P.ex1.file_.director On A%-21 Gosub P.ex1.block_.start,P.ex1.block_.end,Empty.p,P.ex1.block_.copy On A%-25 Gosub P.ex1.block_.move,P.ex1.block_.delete,Empty.p,P.ex1.block_.read On A%-29 Gosub P.ex1.block_.write,Empty.p,P.ex1.block_.hide On A%-34 Gosub P.ex1.printer_.install,Empty.p,P.ex1.printer_.print_fi,P.ex1.printer_.print_bu On A%-40 Gosub P.ex1.edit_1_.replace_,P.ex1.edit_1_.insert_m,Empty.p,P.ex1.edit_1_.delete_l On A%-44 Gosub P.ex1.edit_1_.insert_l,Empty.p,P.ex1.edit_1_.set_mark,P.ex1.edit_1_.set_mark_1 On A%-48 Gosub P.ex1.edit_1_.set_mark_2,Empty.p,P.ex1.edit_1_.goto_mar,P.ex1.edit_1_.goto_mar_3 On A%-52 Gosub P.ex1.edit_1_.goto_mar_4 On A%-55 Gosub P.ex1.edit_2_.find_,P.ex1.edit_2_.find___r,Empty.p,P.ex1.edit_2_.up On A%-59 Gosub P.ex1.edit_2_.down,Empty.p,P.ex1.edit_2_.first,P.ex1.edit_2_.all On A%-65 Gosub P.ex1.menu_2_.ok___ Return Procedure Empty.p ' Dummy Procedure Return ' NOW THE CALLED PROCEDURES ' Procedure P.ex1.desk_.about_ex Print At(1,3);"P.ex1.Desk_.About_EX" Return Procedure P.ex1.file_.load Print At(1,3);"P.ex1.File_.Load" Return Procedure P.ex1.file_.save Print At(1,3);"P.ex1.File_.Save" Return Procedure P.ex1.file_.merge Print At(1,3);"P.ex1.File_.Merge" Return Procedure P.ex1.file_.delete Print At(1,3);"P.ex1.File_.Delete" Return Procedure P.ex1.file_.rename Print At(1,3);"P.ex1.File_.Rename" Return Procedure P.ex1.file_.copy Print At(1,3);"P.ex1.File_.Copy" Return Procedure P.ex1.file_.director Print At(1,3);"P.ex1.File_.Director" Return Procedure P.ex1.block_.start Print At(1,3);"P.ex1.Block_.Start" Return Procedure P.ex1.block_.end Print At(1,3);"P.ex1.Block_.End" Return Procedure P.ex1.block_.copy Print At(1,3);"P.ex1.Block_.Copy" Return Procedure P.ex1.block_.move Print At(1,3);"P.ex1.Block_.Move" Return Procedure P.ex1.block_.delete Print At(1,3);"P.ex1.Block_.Delete" Return Procedure P.ex1.block_.read Print At(1,3);"P.ex1.Block_.Read" Return Procedure P.ex1.block_.write Print At(1,3);"P.ex1.Block_.Write" Return Procedure P.ex1.block_.hide Print At(1,3);"P.ex1.Block_.Hide" Return Procedure P.ex1.printer_.install Print At(1,3);"P.ex1.Printer_.Install" Return Procedure P.ex1.printer_.print_fi Print At(1,3);"P.ex1.Printer_.Print_Fi" Return Procedure P.ex1.printer_.print_bu Print At(1,3);"P.ex1.Printer_.Print_Bu" Return Procedure P.ex1.edit_1_.replace_ Print At(1,3);"P.ex1.Edit_1_.Replace_" Return Procedure P.ex1.edit_1_.insert_m Print At(1,3);"P.ex1.Edit_1_.Insert_M" Return Procedure P.ex1.edit_1_.delete_l Print At(1,3);"P.ex1.Edit_1_.Delete_L" Return Procedure P.ex1.edit_1_.insert_l Print At(1,3);"P.ex1.Edit_1_.Insert_L" Return Procedure P.ex1.edit_1_.set_mark Print At(1,3);"P.ex1.Edit_1_.Set_Mark" Return Procedure P.ex1.edit_1_.set_mark_1 Print At(1,3);"P.ex1.Edit_1_.Set_Mark_1" Return Procedure P.ex1.edit_1_.set_mark_2 Print At(1,3);"P.ex1.Edit_1_.Set_Mark_2" Return Procedure P.ex1.edit_1_.goto_mar Print At(1,3);"P.ex1.Edit_1_.Goto_Mar" Return Procedure P.ex1.edit_1_.goto_mar_3 Print At(1,3);"P.ex1.Edit_1_.Goto_Mar_3" Return Procedure P.ex1.edit_1_.goto_mar_4 Print At(1,3);"P.ex1.Edit_1_.Goto_Mar_4" Return Procedure P.ex1.edit_2_.find_ Print At(1,3);"P.ex1.Edit_2_.Find_" Return Procedure P.ex1.edit_2_.find___r Print At(1,3);"P.ex1.Edit_2_.Find___R" Return Procedure P.ex1.edit_2_.up Print At(1,3);"P.ex1.Edit_2_.Up" Return Procedure P.ex1.edit_2_.down Print At(1,3);"P.ex1.Edit_2_.Down" Return Procedure P.ex1.edit_2_.first Print At(1,3);"P.ex1.Edit_2_.First" Return Procedure P.ex1.edit_2_.all Print At(1,3);"P.ex1.Edit_2_.All" Return Procedure P.ex1.menu_2_.ok___ Print At(1,3);"P.ex1.Menu_2_.Ok___" ' INITIALIZE THE SECOND MENU ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @Init.ex2.menu On Menu Gosub Call.ex2.menu ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Return ' ' ' ' ' ' '''''''''''''''''''''''''''''''''''''''''''''''''' 2nd Menu Procedure Init.ex2.menu Local A$,A% Menu Kill Resto.ex2.re: Restore Resto.ex2.re ' Erase Med.ex2$() Dim Med.ex2$(37) Data Desk , About EXAMPLE ,----------------,ACC1,ACC2,ACC3,ACC4,ACC5,ACC6,"" Data Format , Page,--------------------, WP, ASCII,--------------------, Margins Data --------------------, Centered, Justified,"" Data Set , Load CharSet, Save CharSet,--------------------, Modify CharSet Data "" Data Status , Disk, Memory ,"" Data Menu 1 , Ok! ,"" Data Quit , See You Soon! ,"" Data "",*** ' ' A%=0 Do Read A$ Exit If A$="***" Med.ex2$(A%)=A$ Inc A% Loop ' ' Menu Med.ex2$() Menu 14,1 Menu 19,1 ' Return ' Procedure Call.ex2.menu Local A% Menu Off A%=Menu(0) On A%-0 Gosub P.ex2.desk_.about_ex,Empty.p,Empty.p,Empty.p,Empty.p,Empty.p,Empty.p On A%-7 Gosub Empty.p On A%-10 Gosub P.ex2.format_.page,Empty.p,P.ex2.format_.wp,P.ex2.format_.ascii On A%-14 Gosub Empty.p,P.ex2.format_.margins,Empty.p,P.ex2.format_.centered,P.ex2.format_.justifie On A%-21 Gosub P.ex2.set_.load_cha,P.ex2.set_.save_cha,Empty.p,P.ex2.set_.modify_c On A%-27 Gosub P.ex2.status_.disk,P.ex2.status_.memory__ On A%-31 Gosub P.ex2.menu_1_.ok___ On A%-34 Gosub P.ex2.quit_.see_you_ Return ' NOW THE CALLED PROCEDURES ' Procedure P.ex2.desk_.about_ex Print At(1,3);"P.ex2.Desk_.About_EX" Return Procedure P.ex2.format_.page Print At(1,3);"P.ex2.Format_.Page" Return Procedure P.ex2.format_.wp Print At(1,3);"P.ex2.Format_.WP" Return Procedure P.ex2.format_.ascii Print At(1,3);"P.ex2.Format_.ASCII" Return Procedure P.ex2.format_.margins Print At(1,3);"P.ex2.Format_.Margins" Return Procedure P.ex2.format_.centered Print At(1,3);"P.ex2.Format_.Centered" Return Procedure P.ex2.format_.justifie Print At(1,3);"P.ex2.Format_.Justifie" Return Procedure P.ex2.set_.load_cha Print At(1,3);"P.ex2.Set_.Load_Cha" Return Procedure P.ex2.set_.save_cha Print At(1,3);"P.ex2.Set_.Save_Cha" Return Procedure P.ex2.set_.modify_c Print At(1,3);"P.ex2.Set_.Modify_C" Return Procedure P.ex2.status_.disk Print At(1,3);"P.ex2.Status_.Disk" Return Procedure P.ex2.status_.memory__ Print At(1,3);"P.ex2.Status_.Memory__" Return Procedure P.ex2.menu_1_.ok___ Print At(1,3);"P.ex2.Menu_1_.Ok___" ' REINITIALIZE THE FIRST MUNU ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @Init.ex1.menu On Menu Gosub Call.ex1.menu ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Return Procedure P.ex2.quit_.see_you_ Print At(1,3);"P.ex2.Quit_.See_You_" Return '       | Ȇs/y}< | DY ,"EAQ  DU1 *"EA  DQSa )"EA <@ Ƞry<         x&H$  P$H$  \HS8  DHS N } DNE|9$E |tHQ Q DQ QdQmADP)QE@ @@HX _ D_ UTUy717ET@ xԔHLe  DQ [LQEADP)E4@ @THf% < DNE|D8GO$= |TH%   TO%   T@%   T@e   WP@  ^O  @`  x?y "Ͼ 9 EEQ "  E e@y &*< E U@QQ "6  E M@M^ "><8 E        `>U8` Efv*oM& m HPHUBg?<JNA(m)m -:gS)@ -OK1PC#HNۈHx?<HNA@)@l/?<HNA)@h&@)@XЬl)@d)@`ARCpr Ѝ"QHNFALNPHz2?< NA\pdAxr0XQ)K\NNN.jvJrBjNuHz?<&NN\N,CAp$L Qp N9lrBlJpNNpMN9@pdAr 0Q0tr Nf9lNNupealp`NuaNJHz?<&NNBWNANC2A@p222NrҌ0<NB0,rNurA9Ar`v C9Cr`rt9@9A9BNrrҌpsNB0,Nu9@N`rDҌpsNBNuC2 @ e @}bA@p222Nr,Ҍ0<NBNu pa2|a>:><|a4g RGj`a(0GVfA1G<ap??<?<NM\Nu??< NMXNu&8*:EENuHn 2$4BBNuAd RdQRB BbABJk 0NuJBjBBXNu 0Nu 2$NuE`B<gJEgEjCDEDF Fe( F dF8BCHC` F0bFHC8v` HD8HDkDуdQRBNuDdBDA@kgAр[SBk0NuJlJBk&Nu0g H@rB JkЀ[` BbNuJBj prtNuHPAJgPpr$< _Nup _NtNu&8*JEgJBgJjBEB:HC҅H@:|ۆ҄ۆ<HC>H@ЃdHA@B@H@хk HAҁHAрSB BbNuNߜpNNuCDEJEgJBgJjBEBQ*HE?<>0rHGGdHGGdSWDуdi\?<>0rHGGdHGGdSWDуdiN?<>0rHGGdHGGdSW2 H@Nh?<,>CEdGH@0r`?<`JBgVB&8TTDуdQRBNuDAр&AdRAрAрDуNuprt|=|߰  g +g -f .g20  b 0e 9b da`RF` .f 0e 9b dajSF` Eg efX +g -f 0e 9oSH`00  b&Hz0  b E Do`HJjDDDS4</NzJFkSFk&aQNz`Ha"FFaQL8NN6.߰JgtBn߰Nupr$<NuJBk4<rpAC v JBgJjv-| Bb BkH>aaNRFBdL8?NN<JBga2SF Be BgQRB`ApdR e <rRF&0xafEv+0JFjDFv-Hƌd0BFHF 0HF0ANuprt|`2:HQ A dNAXJ@jNNuNJ@g,A,BBgHQ?<=NAP FJ@k??<>NAXtNutNu ::/rI IN<,(k$/<??<?N`NA Jj ?a0NNHrO INLA NNvNX)@p `H@)@prtNfAHplrtNfB 2pNVpNJpapaprapalpalpalpaTpaTpaTBp'a?<NNT@B){L9|0<rtNfpapap9@p`pvNXv`v`vj`v `v`v`v`?Aa*` Al 2l 4)lVH)lRprtNfAl 2l 4HVNuAl 2l 4L VA0000000000prtNf9Cp rtNfAv` Av `Avl 2l 4)lVHNfaBp0,l 2Nua40,HNua*p0,l 4Nuaprt0,l 22,l 44,NuN9||BlBlrҌpsNBNu0<}N& ?<NNC`&?<NNT"@ C <}N`N@((?<NN.?<NNX@LvA HA HNuNup9@HA)A,ND FN @e024E$ Bb5B5A6CC5CK5CAB008:Dk`Ek\00<,>,SFSGFnHGnDDDk9DBlDEk9EBlFcllGcll0,lb 0,lcNu8pmrtA)HA)HNfpNHHPND4 _:8><DbFEbGCHP@dʾAdBD2ƞE29|C???FF22N23BRG0@\@N"2)IN8(* 9AJA)H@@[000][ˈN Evz`* [g" ]g |g QSz` zQSpQ][ɈN Dvx`* [g" ]g |g QSx` xQSpQ]Bp4NHNu*( INA)H @depd ae zb QB DNA\)H @ e` ae zb \gQBA BhNpZNA BP"`#|}NA"H0,tg"Hg \f`A\fS A ENAR@H`2QNur|<N @xepw2A$JBjDFHB t`0QBl9F)lVTAtp 9| Nf2(g"P@g2RADAH""l`r2oZAe 1@#)I`Nuk1@Nup NN "l`dpNAtrdJhk\QpaNH ld$l`"Hg: k&@0+R`g k#&@0+S@H3 Q&f)I`LNu?<?<NAXJgJgNAH@B pNA NuApNA0pNN$N$BS@kH2QNupC ұd"X0Pg"RA$D#Nu"X0NuNJ@gpNuNU@k0NupNu _0HpN _0HpNp"_0HqNp"_0HqNE ұeHHQ0)N$_$ZR@H`2QNu$Y0gHR@@"D%$X0P2g# R@%NupE $ $X0dP.gRG,D%pr Y2dP.gRG,D!p4Ae4v`VfANuNWHNuNVHNuJhg NNNuJhg N1NNu Ihd*N$E$RR@H`2QˈN ENu Ihd"*N$E8*$R`"QˈN ENu2)A IJAfr4(Ae*RBBc0*SA?N$E$R`QˈN ENup`(* 0(iN$E 4R`Q$D 4R`QˈN DN ENua NuN IHPg"B  g &gNfJBjt BNut`Rptr ae OgT Xgj HgSRB ae Fb$0k  c_  c b退`tSJBkNVRB0 b b瀀`RB0 fрd`2p <0N`QNu0g< @g4:8(g* b.&NSD`Q0$C$RQLjN CNuNpNp NpC 0(gFd"P$I` *N$E$R(S@jv A(Wf( ae zb Q DNur ,* N& ( EN C"Sj|AcJ@fCAHPBHQ?NA\ _JjNNuH&N\րN\jNu?r`??, N$F Z268SDĒDcCc2Ac0`QNuHRp` HRpJQfpNNq Y QfdЀЀ 0NuNNNq Y Qfd20VHNuNNNq Y Qfd ЀЀNuNN@$_& Y Qfdփփ!8NNNd$_& Y Qfd8JBg 8N 8NNN$_& if"QdփփHRNNNN~,Nq8DRzXEEg"7PNqR$HBJBgpNJgJigp`eetЂ`"ЀeЁdp`ЀeЀe"Ѕe$W.H@@NL"2` NqR YEjrd0` SjN$_NЀЀ 0N$_N20VHN$_NЀЀN YQf "_Nq*eNN*< NqbІSGfN$_Nփփ!8N$_N8JBf 8N 8N $_Nփփ"@HHRNN YQf "_&Nq*eNN*<&NqbֆSGfN~$_NЀЀЈNp"X4g S`"QNuNuNRGFc8>`4A g6 g0 g` gTlfelhgFf2pRGRFa`a,` `?~ap ap a 0NuCpE`bf`FgRGJGgRSGSFFgCpE`Yf`Nua@Jf gH@ fa(@ fza0 b @ Ee0Nu?<?<NMXNur9A(HNLNu0,^2,`N|zEfpaRppaNAEg0PaľEfa4RE`p a2a*Efp a(NbldeS@f lbfSl`9Ab9FdNupapqr`p`"p`tdbDA0Hg<<R@f|0HN*JFk*HQ/??<?NAXfX ENuJkpNp`p`\F( &I.` ??<NMXJ[j E&DNu<(`|HP?N<pg2JFg W"X2@e2<A`QNCpR@ 1 fA 0! "_NNp`pNu)H9@Jp4NP'J&f H LNu P&NuQ'` J,'fJ,&gHA#ȇeC! B,&LNu-W)K20, 8k8@ gJl&f"Nu , 8g"P 8 @/, 8N  8fQ 8J,'gNupB <``L@ H)l26)z @W , Jf`CfSHj-D@Hd0H@H 0H@0`fSC\fS , @a"C]fApNNNHP?< NA\NuH@aa/a a Nu@0 9c^Nu| PC>$Fehler # ][Abbruch]\f.B &lX)K\)ld` lp ,BQjNup(NXA JpBQA/)H )l gBlJpNB Aprt0 0BBB R@ @efA000 0PB0 *00 000\0X0 *0000 0P0BX0, *@00p1| 1|QBX0 $HTH0P &0 *0,NupNSk [0NupNuHPaH8 _&X Pf/|~ K!zag @ ep 24C"2 S@ػ Td BTA3A0C4$I2a222B"0@2A\xvaRg<2#M 4B3BS@ -f ػ Td>BAAb8RGRC`3RSG5GC5C J1DcaRF F e`RG GcdNuXASF1F41R 1h4 x1EDgVA)H)H 9|J?<NNTU@g,ACg dRhdRh(gpL8Np>L8NVAJ0?C bL000zH?A/.)HpNLrHH/>Bl/,ff.f.ffNu l /.g&, ^`D&, N`>&, R`8&, V`2&, Z`,2,/4WAARA0,/6A hfRAS@f9A/,&, Jo ? CN0`@k Ap0(/.NuA Nu|`|*Md A l)G Z`A b)G V0, HF 00Nup)@JphNLtH &JKBCH .A/~0 1PP1P1PA L? &<@>AFG0000X0000X0000X0000C ~AJ0g0  pi, N"F QNuYp-KNu _b@gGHpp 0f NuGNp @"l`Yd&-KNN "l`YepN&#k"C-KN"Cփk փk2##`փk"`2`$Y8gHRDD*D%H8#$c2g# HRDD%H`p"l`Qd&&| NuN "l`QepZNt"l`]d6&|0NuN "l`]epZNpr`&AdRd QJBgRBBABJk"l` d&6&|0!NuN "l` epZNC ҳfHP0(N$W$RR@H`2Q"H _$l` dd" $X&0BP6Y&|Hg R@@%E ҳeHQ0)N$_$RR@H`2QNu$Y 0P1@Hg R@@%NuN $l` epZN"X0gBPHR@@"D#Nu,jJj `BffAgb Jj 2$NuJjNu/\ga `6f -K. @Nua \dp\N&#k gH`Nu"Cփk փk2##`փk##`3#`$Y8gHRDD*D%H8#$c2g# HRDD%H` l @ , Ь R@"@ETg`)J @N)|* N)|S NHxBgBg <g"<"_ _.<NHxBg?<h <"<"_ _.<NN`NNzt;BfN\N \MEDITOR.DATCNNANNNJBfN/rpINHPAr"_NN0N\MEDITORHPA"_NCNNANNNJBfN/pINHPAr"_NN0HxN&MEDITOR.DAT not foundHPN OK r"_ N+@>pN\NprNpN /p"NpC,NNpN\pNnNN"_A퀐NA8NHxHmN| not finished"_NHPN OK r"_ N$VH;B8NNp9@phN܄NNpp@pWBg?<NN\NpNNpfNpNVNAD*NADxNpNVANpNVpNpNpNp N&/-bANNN+|+|+|+|+|P+|A HPN32-126,128-255HPA4NAZCNNNA HPN&72,75,80,77,82,71,98,97,59-654HPA4NAZCTNNA HPN& 8,127,13,27,HPA4NAZC`NNA HPN&72,115,80,116,82,119,98,97,834HPA4NHmZN&538,24,25,32,46,20,49,48,35,19,50,17,37,16,23,47,30,334HPA4NAZCfNNA HPN59-68,1,120-131,41,14,15-28,83HPA4NHmZN&30-40,43,96,44-53,57,975HPA4NAZClNNA HPN84-93,1,120-131,41,14,15-28,83HPA4NHmZN30-40,43,96,44-53,57HPA4NAZC퀮NNAZCNNA HPN&59-68,1-13,41,14,15-28,834HPA4NHmZN30-40,43,96,44-53,57HPA4NAZC퀴NNA HPN1,1-63HPA4NAZCrNNA HPN&128-191HPA4NAZCNNA HPN64-127,1HPA4NAZCNNA HPN&192-2551HPA4NAZCNNN&A:\CNN+|PNN"_A~N"_AxNA큾NVANVANVA큺NVANVA퀊NA2N+|/-Hm~A6JNHmp-N"_N+@ -J^HfN5Hm -NVH <r$<L8NNr"_NNN+@Hm -R"_NNN+@+mƁ -A큺NHmx -N"_NCxNNN`NqNqN6HmxA퀊NNN"_NCxNN <Ѝ/A퀊NR _ѐ4-2NN&<x*<NgAxCZNNNN"_A퀄N A큾NXANVHmp,N"_NC퀄NN+mHmp"-"_NHPp,N"_NfN6R`Hm -"-"_NC퀊NNBm2 -NVHA퀄NNVL8NfN7t;B2NN -CvN -C탾N/- -NVH <r$<L8NNC|~N/- -NVH <r$<L8NNC~N/- -NVH <r$<L8NNC~N -CN/-pC~NBm@A CNNB -NVH <r$<L8NNC탎N -NVH <r$<L8NNCN -NVH <r$<L8NNCN+|+m+|BBt;B6/-NDeskCvN/-pC탾NNNN -CN+@NN -C탾N+@NNA9N -J^HfN:A9N -NVH/-pC~NVNVvNL8NH <r$<L8NN/Hx -NVH/-pC~NVNVH -NVL8NvNL8NN/ -NVvN&<x*<NN/HxBBBAQNAQNNNA퀐NA9N -J^HfN< -NVH/-pC~NVNVvNL8NN+@+mpNVB -NVH <r$<L8NNA큺NpN/- -C~NfNN&<x*<NNNpNp N&/- -C|~NzC퀐NNHmA "_NfN<p NC퀐NN/- -C~NfNN&<x*<NfNDpNHPHmA퀐NNVH <r$<L8NHA퀐NJWHNNL8NN"_N`"_NC퀐NN -NVH/-pC~NVNVvNL8NN/ -NVH -NVvNL8NN"N"A퀐NXpNpNpNp N&AQNNN -NVH/-pC~NVNVH -NVL8NvNL8NN+@ -NVvNN+@ -"-N" -\/ - "NNNA9N -NVH/-pC~NVNVvNL8NN+@ -NVvNN+@ -"-N" -NVH -NVvNL8NH <r$<L8NN/ -!"NNNpNV -NVH/-pC~NVNVvNL8NN"-N$ -CvNNXpNVNN -NVH/-pC~NVNVH -NVL8NvNL8NN+@p"-N" -\rNNN -NVH/-pC~NVNVvNL8NN+@ -NVH <r$<L8NNrN$ -NVH/-pC~NVNVvNL8N&<x*<NNrNNNA9NA9N -NVH/-pC~NVNVvNL8NN+@ -NVvN&<x*<NN+@ -NVH <r$<L8NN//- -NVH -NVvNL8NN/ -/HxBBBAQNAQN -"-N" -NVH -NVvNL8NH <r$<L8NN"-NNNA9NA9N -NVH/-pC~NVNVvNL8NN+@ -NVvN&<x*<NN+@ -NVH <r$<L8NN/ -R/ -NVH -NVvNL8NN/ -//-/-/-ARfNpNV -"-N" -NVH -NVvNL8NN"-NpNVNNBHxHxHxgHx/-/-/-ARNprN"p"<NAQNNNHxHxHxHxHxBBBARNAQNNN -J^HfNEpNV -J^HfNE -NVH <r$<L8NN+@NE B+m -NVH/-pC~NVNVvNL8NN"-N$ -CvNNXR/-pC~NVNVH/-pC~NVNVL8N&<x*<N6pJBgp/ -WHpJBgp$VHgDpNVNNA9N -NVH/-pC~NVNVvNL8NN+@+| -NVH <r$<L8NN? -NVH -NVvNL8NN? -NVH -NVvNL8NN? -NVH -C탾NNVvNL8NH <r$<L8NN?A퀨" NX -NVH <r$<L8NN? -NVH -NVvNL8N&<x*<NN?A퀨"Nv/- -NVH -NVvNL8NN/ -NVH -NVvNL8NH <r$<L8NN/ -NVH -NVvNL8N&<x*<NN/BBBARfNNNA9N -NVH/-pC~NVNVvNL8NN+@+| -NVH <r$<L8NN? -NVH -NVvNL8N&<x*<NN? -NVH -NVvNL8NN? -NVH -C탾NNVvNL8N&<x*<NN?A퀨" NX -NVH <r$<L8NN? -NVH -NVvNL8NN?A퀨"NvABNNNA9NA9NR -NVH/-pC~NVNVvNL8NN+@+| -NVH -NVvNL8NN//- -NVH -.NVvNL8NN/ -NVH -NVvNL8NN//-/-/-ARfNpNV -NVH -NVvNL8NN"-N$ -NVH -NVvNL8NN/ -NVH -NVvNL8NN"NpNVNNA9NA9N -NVH/-pC~NVNVvNL8NN+@+| -NVH -.NVvNL8NN//- -NVH -NVvNL8NN/ -NVH -NVvNL8NN/BBBARfNpNV -NVH -.NVvNL8NN/ -NVH -NVvNL8NN"N" -NVH -NVvNL8NN/ -NVH -NVvNL8NN"N -NVH -NVvNL8NN"-N$ -NVH -NVvNL8NN/ -NVH -NVvNL8NN"NpNVNNBBpC~NBHxpCvNNC~N -S^HfNN+| -NVH <r$<L8NNA큺N/-B -NVH <r$<L8NN/pC~NVNVH -NVH <r$<L8NN/pC~NVNVL8N&<x*<NNC~N/-Hx -CvNNC~NN`6NqNNANVB -C탾NJ^HfNO2B -C탾NNVH <r$<L8NNA큺N -NVH/- -C|~NzNNVL8NN+@N`NqNq/- -NVH -JWHNNL8NNCNNpYWHfNW4-6NNJBfNWA@NNWA?hNNNHmlA퀖"_N+@ - NVzN6pJBgp/ - NVHAlNNVL8N6pJBgp$VHfNXbHmrp"- "_NC퀢NNAYbNNXpt?ANNNHmA퀖"_N+@ - J^HfNXHmp"- "_NC퀢NNAYbNNNHmA퀖"_N+@ - J^HfNY Hmp"- "_NC퀢NNAYbNNNHmA퀖"_N+@ - J^HfNYZHmp"- "_NC퀢NNAYbNNN4-6NNzNfNZ -ް]HfNZA>NA?hN/- -C|~NzC퀐NNHm -"_N8HPA퀢"_NHPHmA퀐NҐ"_N`"_NC퀐NNA퀐NҰ_HfNZ~ -CN+@./-/-A퀐C|~NANN -.NVH -CNNVL8N6fNZxAOlNNZ/-/-Hm -"_N8C|~NRA=NA?hNA>NN\Z -ް]HfN\ZA@NA@N -CvNC퀐NNHm -"_N8HPA퀢"_NHPHmA퀐NҐ"_N`"_NC퀐NNA퀐NҰ_HfN\/-pC~N. @R -NVH -NVH <r$<L8NL8N6fN\ -R+@ -NVH <r$<L8NNA큺N/-pC~N. @RN`NqNqN\Hm -"_N8C퀐NN/-A퀐CvNADxNADNRA@NA@NNN4-6NNzNfN\ -J^HfN\A>NSA>NN\ -J^HfN\A@NSA@NNN4-6NNzNfN]D -NVH/- -C|~NzNNVL8N6fN]>A>NRA>NN] -NVH -CvNNNVL8N6fN]A@NRA@NNN4-6NNzNfN^@A>NA?hN -JWHfN^ -CvNN+@t;B6A@NA@NN^:S/- -C|~NzN+@Bm6A?hNA>NN^@NN4-6NN&<x*<NfN^A@NA@NBm6 -C탾NJWHfN^ -C탾N, @RANNAANB/- -C|~NzN+@A?hNA>NN`:A>NA?hN -NVH -C탾NNVH <r$<L8NL8N6fN_R/- -C|~NzN+@A?hNA>NN`: -C탾NҰ]HfN`& -C탾N, @RAANR/-/-A C|~N/-/-tC~N/-/-tC~NA=N/- -C|~NzN+@A?hNA>NNN -J^HfNcl4-6NNzNfNbA>NA?hN/- -C|~NzC퀐NN/-/-Hm -NVH <r$<L8NN"_N8HPHmA퀐NҐ"_N`"_NC|~N -CN+@.ANN -.NVH -CNNVL8NNNclA@NA@N -CvNC퀐NN/-Hm -NVH <r$<L8NN"_N8HPHmA퀐NҐ"_N`"_NCvN/-pC~N. @S -NVH -NVH <r$<L8NL8N6fNc@ -R+@ -NVH <r$<L8NNA큺N/-pC~N. @SN`NqNqSADxNADNA@NA@NNN4-6NN&<x*<NfNfA@NA@NAD*NB -NVH -NVH <r$<L8NL8NfNe -ҰWHfNdNB -CvNN+@ -J^HfNdHB+mADxNNeRR/-pC탾NN/- -C|~NzN+@A>NNN4-6NN&<x*<NfNi.A@NA@NAD*N -ְWHpJBgp/ -NVzN6pJBgp$VHfNgADxNS -NVH/-pC~NVNVvNL8NN+@ -JWHfNh -S^HfNh -NVH <r$<L8NN+@B/-pC~NVNVH/-pC~NVNVL8N&<x*<N6fNhR` -J^HfNhADxN -NVH/-pC~NVNVvNL8NN+@NhS -CvNN+@A9NA;NADNA@NA@NNiFA>NBA>NNN -C탾NJ^HfNj4-6NN&<x*<NfNiA@NA@NNiA>NA?hNBm6 -C탾NNVH <r$<L8NN+@/- -C|~NzN+@A?hNA>NNN4-6NN&<x*<NfNjVAjNNjA>NA?hNt;B6 -CvNN+@A@NA@NNN4-6NN&<x*<NfNkh -J^HfNkbA@NA@NAD*NB -CvNN+@ -J^HfNk0B+mADxNA9NA;NADNA@NA@NNkA>NA?hNt;B6B -CvNN+@A@NA@NNN4-6NN&<x*<NfNm,A@NA@NAD*N -S^HfNl -NVH <r$<L8NN+@+m2/-pC~NVNVH/-pC~NVNVL8N&<x*<N6fNlR` -2^HfNlADxN -NVH/-pC~NVNVvNL8NN+@ -CvNN+@A9NA;NADNA@NA@NNmA>NA?hN -C탾NNVH <r$<L8NN+@/- -C|~NzN+@A?hNA>NNN4-6NNzNfNrA>NA?hN -NVH -C탾NNVH <r$<L8NL8NfNo -C탾N, @S -C탾NJWHfNn/-BA C|~N/-BtC~N/-BtC~Nt;B6 -CvNN+@AD*NA@NA@NNo -CN+@./-/-A C|~N/-/-tC~N/-/-tC~NANNS/- -C|~NzN+@ -.NVH -CNNVL8NNNr -R+@ -C탾NNVH <r$<L8NNA큺N/- -NVH <r$<L8NN//- -C|~NzC|~N/- -NVH <r$<L8NN//- -C~NfNNJBC~N/- -NVH <r$<L8NN//- -C~NfNNJBC~NN`Nq/- -C탾NNVH <r$<L8NN/A C|~N/- -C탾NNVH <r$<L8NN/tC~N/- -C탾NNVH <r$<L8NN/tC~N -C탾N, @S/- -C|~NzN+@ -CN+@.ANN -.NVH -CNNVL8NNNx. -NVzN6pJBgp/ -NVzNpJBgp/ -NV&<x*<N6pJBgp$VHfNx.A@NA@N -NVH -NVH <r$<L8NL8NfNt/-A CvNB -C탾NNVH <r$<L8NNA큺N/-/-A C|~N/-/-tC~N/-/-tC~NN`NqNq/-pC탾NNNN4-6NNzNfNz: -NVH/- -C|~NzNNVL8N6fNz4A>NA?hN/- -C|~NzC퀐NN/-/-Hm -"_N8HPHmA퀐NNVH -NVL8NH <r$<L8NN"_N`"_NC|~N -CN+@.ANN -.NVH -CNNVL8NNN{ -NVH -CvNNNVL8N6fN{A@NA@N -CvNC퀐NN/-Hm -"_N8HPHmA퀐NNVH -NVL8NH <r$<L8NN"_N`"_NCvN/-pC~N. @S -NVH -NVH <r$<L8NL8N6fN{ -R+@ -NVH <r$<L8NNA큺N/-pC~N. @SN`NqNqADxNADNA@NA@NNN4-6NN&<x*<NfN} -NVH -CvNNNVL8N6fN}A@NA@N -CvNC퀐NNHm -"_N8HPp N"_NHPHmA퀐NҐ"_N`"_NC퀐NNA퀐NҰ_HfN}V/-pC~N. @R -NVH -NVH <r$<L8NL8N6fN}P -R+@ -NVH <r$<L8NNA큺N/-pC~N. @RN`NqNqN}lHm -"_N8C퀐NN/-A퀐CvNADxNADNA@NA@NN -NVH/- -C|~NzNNVL8N6fNA>NA?hN/- -C|~NzC퀐NNHm -"_N8HPp N"_NHPHmA퀐NҐ"_N`"_NC퀐NNA퀐NҰ_HfN~ -CN+@./-/-A퀐C|~NANN -.NVH -CNNVL8N6fN~AOlNN~/-/-Hm -"_N8C|~NA=NA?hNA>NNN4-6NN&<x*<NfN^ -Ұ]HfNXA@NA@NAD*N+mҁ -R/p"A큺N/- -NVH <r$<L8NNCvNCvN/- -NVH <r$<L8NNC탾NC탾NNN -C탾NҰ]HfN A>NA?hN -C탾N+@ -R/p"A큺N/-/-/- -NVH <r$<L8NNC|~NzC|~N/-/-/- -NVH <r$<L8NNC~NfNNJBC~N/-/-/- -NVH <r$<L8NNC~NfNNJBC~NN4`Nq/-/-A C|~N/-/-tC~N/-/-tC~N -C탾N, @RAENBA?hNA>NNN4-6NN&<x*<NfN -C탾NJ^HfNA@NA@NB -C탾NNVH <r$<L8NNA큺N/-/-/- -C~NfNN&<x*<NJBC~NN`NqNqA;NA@NA@NNtA>NA?hN/-/-/- -C~NfNN&<x*<NJBC~NA=NA?hNA>NNN4-6NN&<x*<NfNp -C탾NJ^HfNjA@NA@NB -C탾NNVH <r$<L8NNA큺N/-/-/- -C~NfNN&<x*<NJBC~NN`NqNqA;NA@NA@NNA>NA?hN/-/-/- -C~NfNN&<x*<NJBC~NA=NA?hNA>NNNANNN -bR~NNN4-Nt;BNNAZNV4-NA?hNt;B6AD*N+mZ -CvNN+@A9NA;NA@NA@N -J^HfNNA?hNt;B6 -CvNN+@A@NA@N -J^HfNAnNNAN4-:NN&<x*<NpJBgp/ -^VHpJBgp/4-6NN&<x*<NpJBgp/ -NVzN6pJBgp$VHfN4-6NN&<x*<NfNA@NA@NBm6NA>NA?hN+m^/- -C|~NzN+@A?hNA>N -J^HfNAnNNNANVANVA9NA9NBm:+|^ -NVH/-pC~NVNVvNL8NN+@+| -򰭁\HpJBgp/ -NVH -NVH -NVvNL8NL8N6pJBgp$VHfNf -\HpJBgp/ -NVH -NVH -NVvNL8NL8N6pJBgp$VHfNft;B: -NVH <r$<L8NvNN+@^NN -bR~NNNANpNnNNA|NpNnNNANpNnNNAmNpNnNNt;B@4-6NN&<x*<NfN +mւ~+| -CvNCNN -C탾N+@B -NVH <r$<L8NNA큺N/-/- -C|~NzC탎N/-/- -C~NfNNJBCN`/-/- -C~NfNNJBCN`N`NqNq -CN+@Nx+mւ~+mڂB/- -C|~NzC탎NB/- -C~NfNNJBCN`B/- -C~NfNNJBCN`NN4-@NN&<x*<NfN~4-6NNJBfN. -RWHfN( -Ұ]HfN(A@NA@NAD*N+mҁ -R/p"A큺N/- -NVH <r$<L8NNCvNCvN/- -NVH <r$<L8NNC탾NC탾NNN~ -R^HfN~ -C탾NҰ]HfN~A>NA?hN -C탾N+@ -R/p"A큺N/-/-/- -NVH <r$<L8NNC|~NzC|~N/-/-/- -NVH <r$<L8NNC~NfNNJBC~N/-/-/- -NVH <r$<L8NNC~NfNNJBC~NN4`Nq/-/-pC탎NC|~N/-/-pCNNNJBC~N/-/-pCNNNJBC~N -C탾N, @R -CN+@.AENANN -.NVH -CNNVL8N6fNFAK*N/- -C|~NzN+@A=NA?hNA>NNNpNn -UWHfN - WHfN+|+|NRN - WHfN+|+|NR -N -N -N4-6NNzNfNFA>NA?hNAD*NA9NA;N4-6NNzNfNA?hNA>NNNN+@NNVH <r$<L8NN+@N+@ -J^HfN -NV&<x*<NNNrN$N+@2 -2NV&<x*<N6pJBgp/ -2NV&<x*<NNA?hNADxNB -CvNN+@ -J^HfNB+mAMFNANNADNAD*NA9NA;N4-6NNJBfN -CvNN+@A@NA@NN -NVH -C탾NNVL8NZfNf -C탾NNVH <r$<L8NN+@/- -C|~NzN+@A>NA?hNNN"_A퀐NA킎NVHmp.N"_NJ^HfN:HmHmp.N"_NNVH <r$<L8NN"_N8CNNHmHmp.N"_NR"_NCNNNRA퀐CNNA CNNN"_A퀐NA킎NVA퀐N+@Hmp"-"_NHPp\N"_NpJBgp/ -NVzNpJBgp$VHfNS`Hm -"_N8CNNHm -R"_NCNNNNBg?<hA,"NvNN ANNX AJNX ANX ANX ANX ANX A킒NX"_ANA킖NVA킚NVA킞NVA큺NVABNVA NANANANA킢NVA킦NVA&N+|+|pNpNpNp N&B -JWHfN +| -SWHfN>+|pNpNpNpN& -UWHfNx+|+|pNpNpNpN&HmAN -ANR -ANR -NJ_HfN -NVH -NVH -NVH -NVL8NL8NvNL8NANު -NUWHfN` -NVH -NVL8NH -NVH -NVL8NL8NANު -NW\HfNV -S^HfN -NVH -NVH -NVL8NL8NH -NVH <r$<L8NL8NNH -NVL8NANުNV -NVH -NVH -NVH -NVL8NL8NvNL8NANުB+| -A큺NHm -R/A:N -NVHANNVL8N&<x*<NN+@ -A NR -ANR -JJ_HfN> -NVH -NVHANNVH -NVL8NL8NvNL8NA Nު -JUWHfN -NVH -NVL8NHANNVH -NVL8NL8NA Nު -JYWHfNHmAN -JW\HfNANS^HfNp -NVHANNVH -NVL8NL8NHANNVH <r$<L8NL8NNH -NVL8NANުN -NVH -NVHANNVH -NVL8NL8NvNL8NA Nު+|BANABN -BNVH <r$<L8NAN~NA N~NN/ -NVH <r$<L8NAN~NAN~NH -NVL8NH <r$<L8NH -NVL8NN"N"Hmp"-B"_NNXN` NqN`NqNN"_AN+|+|ANA큺NHmp"-"_NHPp|N"_NfN(RN`NqNqNN ANX"_ANANVHmp|N"_"-N+@ -J^HfNHm -ʐ"-"_NCNNNHm -"_NCNNNN"_A&NA큺NVABNVA킾NVANVANV -NVHA&NNVH -NVL8NL8NH -NVL8NZfN -NVHA&NNVH -NVL8NL8NH -NVL8NN+@B+|A&NA큺NHm&p"-"_NHPp N"_NfNRN`NqNq -J^HfN -NVH <r$<L8NNCNtAN, -NVH -NVL8NN+@ -NVH -NVL8NlN+@ -J^HfNB/-tCN`R -NVH -NV&<x*<NH -NV&<x*<NrL8NL8Ng -S^HfNB -NVH <r$<L8NH -NVL8NN/tCN`R -NVH -NV&<x*<NL8NgB+|B -BNVHA&NNVL8NTfNHm&p"-B"_NHPp N"_NfNHm& -B"_N8HP -NVH -CNNNL8NNN"_NHPHm&A&NҐB"_N`"_NC&NN NA?hN -2^HfN+mN+m2B -NVH <r$<L8NNA큺N/-prNpN/p"NpCvN/-prNpNC탾N< -C탾NJ^HfN6BB -C탾NNVH <r$<L8NNABN/-/-BprNpN/p"NpC|~N/-/-BprNpND$VHC~N/-/-BprNpND$VHC~NN`NqNq/-prNpNCNNNpN\A퀨NHxN&#ERROR ...| There're No Menu In File4HPN& ACH 4r"_ N+@>N\pN\A퀨NHxN&!ERROR ...| This Is Not A MED FileHPN& ACH r"_ N+@>NA퀨NHxNERROR ...| File Not FoundHPN& ACH r"_ N+@>NA퀨NAQNNA퀨NpNVpNpNHxHxHxHx5HxBBBAQNp"<N"p4"<N4N Merge Menu-EDitor Data HPBHxHxHxDHxBBANHmN&*.MED-"_NHPHmA""_NHmA "_NfN^HmAVNACNNACNNHmANANLHPN&MED"_NfN HmN.MED"_NCNNANNNJBfN -+@* -*J^HfNpINHPAr"_NprNpHPNSTM Menu-EDitor FileHPp N"_NHPpIN"_NHPp`N"_N"_NfNLprNpN+@2 -2J^HfN -2*^HfNHHxN&7There's Not Enough Space|I'll Merge As Many As PossibleHPN OK r"_ N+@>+m*2AQN4-6NNJBfN~A@NA@NNA>NA?hN -NVH <r$<L8NN+@p"-A큺N -Э2/ -CvNCvN -Э2/ -C탾NC탾N< -C탾NJ^HfNBB -C탾NNVH <r$<L8NNABN -Э2//-B/- -BC|~NzC|~N -Э2//-B/- -BC~NfNNJBC~N -Э2//-B/- -BC~NfNNJBC~NN`pNq -Э2/ -CNCNNNFpN\A퀨NHxN&#ERROR ...| There're No Menu In File4HPN& ACH 4r"_ N+@>NpN\A퀨NHxN&!ERROR ...| This Is Not A MED FileHPN& ACH r"_ N+@>N A퀨NHxN&3No More Place ...| Delete Some Menus| And Try AgainHPN& ACH 4r"_ N+@>NXA퀨NHxNERROR ...| File Not FoundHPN& ACH r"_ N+@>NfA퀨NAQNNNA퀨NpNVpNpNHxHxHxHx5HxBBBAQNp"<N"p4"<N4N Write Menu-EDitor Data HPBHxHxHxDHxBBANHmN&*.MED-"_NHPHmA""_NHmA "_NfNFHmAVNACNNHmANANLHPN&MED"_NfNHmN.MED"_NCNNACNNHmA"_NCNN+|>ANNNJBfN,HxN File Exists ...HPN& CONT|STOPDr"_ N+@> ->SWHfNFpONHPAr"_NpNnNSTM Menu-EDitor FileHPp N"_NHPpIN"_NHPp`N"_NNpNn -NNB -NVH <r$<L8NNA큺NpNn -CvNNNN -CvNNpNn -C탾NNN -C탾NJ^HfNBB -C탾NNVH <r$<L8NNABNpNn/- -BC|~NzNNN/- -BC|~NzNpNn/- -BC~NfNNBNNNpNn/- -BC~NfNNBNNNN`hNqpNn -CNNNN`NqpN\A퀨NAQNNNA퀨NpNVpNpNHxHxHxHx5HxBBBAQNp"<N"p4"<N4N& Kill File HPBHxHxHxDHxBBANHmN&*.*e"_NHPA HPA""_NHmA "_NgNANNNJBfNHxN&This File Will Be DeletedHPN& OK | STOP r"_ N+@> ->SWHfNAN0NHxNERROR ...| File Not FoundHPN& ACH r"_ N+@> ->UWHgAQNA퀨NNN4-DNNzNfNDpp@pWBg?<NN\N^pp@pWBg?<NN\4-DNN&<x*<NJB;BDpNnNNHxNARE YOU SURE ?!?!?HPN NO | YES r"_ N+@> ->UWHfNNNNAVNVANVA퀨NHxxHx2HxHxIHxBBBAQNHxxHx2HxHxI <r$<H <r$<HHxN111 11 1HPAHN+|V+|N -"-VNzN2" MENU-EDITOR - HELPNN -R"-VNzN@# ************************4NN -T"-VNzN2"'READ' or <^R> :Meditor-Menu ladenNN -V"-VNzN@''MERGE' or <^M> :Meditor-Menu einmergen4NN -X"-VNzN@''WRITE' or <^W> :Meditor-Menu speichern4NN -Z"-VNzN2.'TO LST' or <^F> :Aktuellen Menu auf GFA-BasicNN -\"-VNzN@ compilieren!NN -^"-VNzN@'KILL' or <^K> :Datei lschen4NN -P"-VNzN2$'INFO' or <^I> :Wichtige Ausknfte!!NN - "-VNzN2"'QUIT' or <^Q> :Programm verlassenNN - "-VNzN2& or :AusgewhltesNN - "-VNzN2, Kommando ausfhrenNN - "-VNzN@ :Mouse Ein/Abschalten!NN - "-VNzN2& .. :Cursor, Mouse abschaltenNN -"-VNzN2.______________________________________________NN -"-VNzN@ Bitte Taste Drcken%NpNܖHxHx:HxHxAHxBBBARNN -"-VNzN2" MENU-EDITOR - HELPNN -R"-VNzN@# ************************4NN -T"-VNzN2( :Hardcopy oder Bild speichernNN -V"-VNzN@!'PUT' or <^Insert> :Menu einfgen4NN -X"-VNzN@#'DELETE' or <^Delete> :Menu lschen4NN -Z"-VNzN@-'LIGHT ON/OFF' or :Menu in Hellschrift4NN -\"-VNzN2$'OK ON/OFF' or <^UNDO> :Menu HkchenNN -^"-VNzN2$'COPY' or <^C> :Menu im Buffer legenNN -P"-VNzN2$'TO' or <^T> :Buffer Inhalt einfgenNN - "-VNzN@#'VALIDATE' or <^V> :GEM formatieren4NN - "-VNzN@'ALL DOWN' :Zeigt alles4NN - "-VNzN@'HOME' or or <^Cur.up>4NN - "-VNzN@)'BACKGROUND' or <^B> :Untergrund wechseln4NN - "-VNzN2 'HELP' or <^H> or :S.O.S.NN -"-VNzN2.______________________________________________NN -"-VNzN@ Bitte Taste Drcken%NpNܖHxHx:HxHxAHxBBBARNN -"-VNzN2" MENU-EDITOR - HELPNN -R"-VNzN@# ************************4NN -T"-VNzN2&Die ASCII-Zeichen sind folgendermassenNN -V"-VNzN@ erreichbar:dNN -X"-VNzN2 ALT.+KEY -> ASCII 0..63NN -Z"-VNzN2"ALT+SHIFTR+KEY -> ASCII 64..127NN -\"-VNzN@#ALT+SHIFTL+KEY -> ASCII 128..1914NN -^"-VNzN@#ALT+CONTROL+KEY -> ASCII 192..2554NN -P"-VNzN2... KEY = F1 .. F10NN - "-VNzN@ Esc .. Backspace4NN - "-VNzN2* Tab .. Delete (Return inkl.)NN - "-VNzN@ A .. | NN - "-VNzN@ Y .. -4NN - "-VNzN2 SPACENN -"-VNzN2.______________________________________________NN -"-VNzN@ Bitte Taste Drcken%NpNܖA퀨NA퀨NAQNNNANVANVANVANV+|Z+|P+|́+|ȁ+|HxN&MENU-EDITOR Version 1.0| aHP <N"_NHPN6 Copyright 1988| by Stefano Marsili| C&S Software"_NHPN OK r"_ N+@>A퀨NN&Dieses Program ist SHARE-WARE.||C퀐NNHmN6Wenn du es brauchbar oder interessant findest, schick|"_NC퀐NNHmN&/mir 20 DM in bar, ich werde dir so schnell wie|s"_NC퀐NNHmN&)mglich das GFA-Basic Source-Listing der|l"_NC퀐NNHmN"aktuellsten Version zustellen!!!.|"_NC퀐NNHmN6 Herzlichen Dank ... Stefano Marsili|"_NC퀐NNHmN&7 Via Ceresio 35a|"_NC퀐NNHmN6 CH-6963 Pregassona"_NC퀐NN/-/- -Э/ -Э/HxBBBAQN/-/- -Э/ -Э/ <r$<H <r$<HHxN& 1 11 111 11114HPAHNHmB -Э/ -Э/ -NVH -NVNL8NN/ -NVH -NVNL8NN/HxHxANpNܖA퀨NA퀨NA퀐NAQNNN"_A N ANXLANLAN ANX A NX ANX ANXA킺NVA큺NV -NV - ]HfNA C  " -]HfNAC  "Hm A "_NfNp1NC NNBA NNVH <r$<L8NNA큺NHm -R/p""_NHPp N"_NfN> -NVH -NVAN~NL8NN/ -NVH -NVAN~NL8NN"N" - NVH -NVAN~NL8NN/ -NVH -NVAN~NL8NN"N4N`NqNNANVAbNAPNAPNAtNAJNALNANNADNARNA HPN&65-126,95,48-57HPA4NAZCDNNA퀨NAzN4-RpJBgp/HmtA "_NpJBgp$VHfN֤NpONHPAtr"_NA@NAN -C탦NANp NHPp N"_NCbNNAfNAْNANpN\A탦NVA퀨N4-6NNJBfNA@NA@NNA>NA?hNADxNAMFNANNADNAD*NA9NA;N4-6NNJBfNr -CvNN+@A@NA@NN -NVH -C탾NNVL8NZfN -C탾NNVH <r$<L8NN+@/- -C|~NzN+@A>NA?hNAQNNNpNnN@' NOW THE CALLED PROCEDURESAbNpNnp'NAbNB -NVH <r$<L8NNA큺N -NVzNpJBgp/ -NV&<x*<N6pJBgp$VHfNـ -C탦NHPN&Empty.p"_NfNـpNnN2 Procedure -C탦NNAbNN2 Print at(1,3);p"NN -C탦NNp"NNAbNN2ReturnAbNN`NqNNAVNANVANVA큺NVpNnp'NAbNpNnN@Procedure Call.APNN@.menuAbNN2 Local a%AbNN2 Menu OffAbNpNnN2 a%=Menu(0)BBt;BVBB -NVH <r$<L8NNABNRB -BC탾NNVH <r$<L8NNAN -NVzNpJBgp/ -NV&<x*<N6pJBgp$VHfNv/-B -C|~NzHPp"_N8HPp-N"_NfN\N&Empty.pC퀐NNNp -C탦NC퀐NNNیN&Empty.pC퀐NN4-VNN&<x*<NfNpNnAbNN2 On a%- -NVH <r$<L8NNN@ Gosub 4 -NVNN+@pNnp,NHP4-VNN&<x*<NN"_N8NA퀐N <Ѝ/A퀐NNV&<x*<NH4-VNNL8NN _ѐBmV - M^HfNܺt;BVRRN`Nqt;BVRN`NqpNnAbNpNnN2ReturnAbNpNnN@Procedure Empty.pAbNN2 'Dummy ProcedureAbNN2ReturnAbNNAVNANVA큒NpNnN2. ' You Can Initialize This Menu with @Init.APNN@.menuuAbNpNnN@; ' and On Menu Gosub Call.uAPNN@.menu4AbNpNnN@/ ' !!! Call it with On MenuuAbNpNnN@ ' AbNpNnN@Procedure Init.hAPNN@.menu AbNN@ Local a$,a%4AbNN@ Menu Kill.AbNpNnN2 Resto.APNN2.re:AbNN2 Restore Resto.APNN@.re!AbNN@ '.AbNpNnN2 Erase Med.APNN@$()AbNpNnN2 Dim med.APNN2$( -NVH -NVNL8NNp)NAbNBmVB -NVH <r$<L8NNA큺NNrC큒NNHmpQN"_Ng NNNHmp N"_NfNpNnNrHPp N"_Ng4-VNNzNfNpNnN@ Data 4pNn -CvNN -CvNN^+@BmVBBpNnp,NHP4-VNNzNNNBN"_N8N/- -BC|~NzN <Ѝ//- -BC|~NzNNVH4-VNNzNNNL8NN _ѐBmV - M^HfNpNnAbNN@ Data 4+|t;BVRB -BNVH -C탾NNVL8Ng4-VNNzNfNpNnp,NpNnp"NNp"NNAbNN@ Data t;BVN`Nq4-VNNzNfNxpNnN@ Data 4pNnp"NNp"NNN2,***AbNN@ '4AbNpNnN@ 'AbNN2 a%=0AbNpNnN2 DoAbNN@ Read a$.AbNN@ Exit if a$=4p"NNN@***4p"NNAbNpNnN2 med.APNN2$(a%)=a$AbNN2 Inc a%AbNN2 LoopAbNN@ '"AbNBpNnN@' .AbNN@ Menu Med.=APNN@$() AbNB -NVH <r$<L8NNA큺NRBB/- -BC~NfpJBgp/4-JpJBgp$VHfNpNnN@ Menu  -NvN2,2AbN/- -BC~NfpJBgp/4-LpJBgp$VHfNpNnN@ Menu  -NvN2,1AbNRRB -BNVH -C탾NNVL8Ng RN`NqpNnN@ 'AbNN2ReturnAbNNNATNpNVpNpNp}r]N" <"<#NAQNHxdHxHxHxHxBBBAQNHxdHxHxHx <r$<H <r$<HHxN111 11 1HPAHNN&TO LST - ENTER PARAMETERSHPBHxdHxHxHxBBANHxdHxHxHxHxBBBAQNNp rNzN2$ Menu Name (max.6) Np rNzN2$ Destination (File/Printer/Screen) Np rNzN2$ Initialize Lights ? (Yes/No) NprNzN2$ Initialize Oks ? (Yes/No) NprNzN2$ All Right ? (Yes/No/Quit) Np r2NzAPrNHmP >@ f v, 04| Ԡ 4 n R$$. $ 0> 8 0$**   n 000" v,0 *  pR\,  " "6 0"  ( * " (  J$ L$  0 8r  ` . F* @< l< $. @P|@ &"  Z .  $ . .  ( . ~T  V " J*X TN 40 d B@ "6 0 8n 0 \ .0 rR\, 6 x,0 & .   f .  F .  F Hf2:"  $   $  "  * " dN: V   0$ $ 2  XV: 0 &>>.  ~   j. h (6  .  ,R J nPF&&H^`p"rƢ `z `V`:VBL*  * p*S*H*A*R*E*-*W*A*R*E*q ******* written by ... pPq Stefano Marsili pUq *************** p*q C&S Soft p*q ****p MENU-EDITOR q**** pBq Via Ceresio 35a pLq *************** p*q 6963 Pregassona p*q ******* pIq Schweiz pCq * p*D*O*M*A*I*N*S*O*F*T*q -------------------------------------------------------------------------------- Version 1.0 Dateien "MEDITOR.PRG" und "MEDITOR.DAT" Monitor Monochrom Speicher Auf einen ATARI 1040 STF getested Sprache GFA-BASIC Version 2.0 -------------------------------------------------------------------------------- MENU-EDITOR erleichert die Erstellung von pDropDownMenusq die er auf GFA-BASIC (.LST file) compiliert! Das "compilierte" Menu kann dann in deine GFA-BASIC Programme eingefgt und folgendermassen benutzt werden: - zuerst "initialisieren" mit @Init.xxxxxx.menu On Menu Gosub Call.xxxxxx.menu - dann abrufen mit On Menu z.B. Do On Menu Loop . C`.. /`QEXAMPLE1LST t EXAMPLE2LST t ' You Can Initialize This Menu with @Init.ex1.menu ' and On Menu Gosub Call.ex1.menu ' !!! Call it with On Menu ' Procedure Init.ex1.menu Local a$,a% Menu Kill Resto.ex1.re: Restore Resto.ex1.re ' Erase Med.ex1$() Dim med.ex1$(68) Data Desk , About EXAMPLE ,----------------,ACC1,ACC2,ACC3,ACC4,ACC5,ACC6,"" Data File , Load, Save,--------------------, Merge, Delete, Rename, Copy Data --------------------, Directory,"" Data Block , Start, End,--------------------, Copy, Move, Delete,-------------------- Data Read, Write,--------------------, Hide,"" Data Printer , Install,--------------------, Print File, Print Buffer,"" Data Edit 1 , Replace Mode, Insert Mode,--------------------, Delete Line Data Insert Line,--------------------, Set Mark 1, Set Mark 2, Set Mark 2 Data --------------------, Goto Mark 1, Goto Mark 2, Goto Mark 3,"" Data Edit 2 , Find , Find & Replace,--------------------, Up, Down,-------------------- Data First, All,"" Data Menu 2 , Ok! ,"" Data "",*** ' ' a%=0 Do Read a$ Exit if a$="***" med.ex1$(a%)=a$ Inc a% Loop ' ' Menu Med.ex1$() Menu 12,2 Menu 25,2 Menu 26,2 Menu 27,2 Menu 30,2 Menu 32,2 Menu 37,2 Menu 38,2 Menu 42,1 Menu 56,2 Menu 57,2 Menu 59,1 Menu 60,1 Menu 63,1 ' Return ' Procedure Call.ex1.menu Local a% Menu Off a%=Menu(0) On a%-0 Gosub P.ex1.Desk_.About_EX,Empty.p,Empty.p,Empty.p,Empty.p,Empty.p,Empty.p On a%-7 Gosub Empty.p On a%-10 Gosub P.ex1.File_.Load,P.ex1.File_.Save,Empty.p,P.ex1.File_.Merge,P.ex1.File_.Delete On a%-15 Gosub P.ex1.File_.Rename,P.ex1.File_.Copy,Empty.p,P.ex1.File_.Director On a%-21 Gosub P.ex1.Block_.Start,P.ex1.Block_.End,Empty.p,P.ex1.Block_.Copy On a%-25 Gosub P.ex1.Block_.Move,P.ex1.Block_.Delete,Empty.p,P.ex1.Block_.Read On a%-29 Gosub P.ex1.Block_.Write,Empty.p,P.ex1.Block_.Hide On a%-34 Gosub P.ex1.Printer_.Install,Empty.p,P.ex1.Printer_.Print_Fi,P.ex1.Printer_.Print_Bu On a%-40 Gosub P.ex1.Edit_1_.Replace_,P.ex1.Edit_1_.Insert_M,Empty.p,P.ex1.Edit_1_.Delete_L On a%-44 Gosub P.ex1.Edit_1_.Insert_L,Empty.p,P.ex1.Edit_1_.Set_Mark,P.ex1.Edit_1_.Set_Mark_1 On a%-48 Gosub P.ex1.Edit_1_.Set_Mark_2,Empty.p,P.ex1.Edit_1_.Goto_Mar,P.ex1.Edit_1_.Goto_Mar_3 On a%-52 Gosub P.ex1.Edit_1_.Goto_Mar_4 On a%-55 Gosub P.ex1.Edit_2_.Find_,P.ex1.Edit_2_.Find___R,Empty.p,P.ex1.Edit_2_.Up On a%-59 Gosub P.ex1.Edit_2_.Down,Empty.p,P.ex1.Edit_2_.First,P.ex1.Edit_2_.All On a%-65 Gosub P.ex1.Menu_2_.Ok___ Return Procedure Empty.p 'Dummy Procedure Return ' NOW THE CALLED PROCEDURES ' Procedure P.ex1.Desk_.About_EX Print at(1,3);"P.ex1.Desk_.About_EX" Return Procedure P.ex1.File_.Load Print at(1,3);"P.ex1.File_.Load" Return Procedure P.ex1.File_.Save Print at(1,3);"P.ex1.File_.Save" Return Procedure P.ex1.File_.Merge Print at(1,3);"P.ex1.File_.Merge" Return Procedure P.ex1.File_.Delete Print at(1,3);"P.ex1.File_.Delete" Return Procedure P.ex1.File_.Rename Print at(1,3);"P.ex1.File_.Rename" Return Procedure P.ex1.File_.Copy Print at(1,3);"P.ex1.File_.Copy" Return Procedure P.ex1.File_.Director Print at(1,3);"P.ex1.File_.Director" Return Procedure P.ex1.Block_.Start Print at(1,3);"P.ex1.Block_.Start" Return Procedure P.ex1.Block_.End Print at(1,3);"P.ex1.Block_.End" Return Procedure P.ex1.Block_.Copy Print at(1,3);"P.ex1.Block_.Copy" Return Procedure P.ex1.Block_.Move Print at(1,3);"P.ex1.Block_.Move" Return Procedure P.ex1.Block_.Delete Print at(1,3);"P.ex1.Block_.Delete" Return Procedure P.ex1.Block_.Read Print at(1,3);"P.ex1.Block_.Read" Return Procedure P.ex1.Block_.Write Print at(1,3);"P.ex1.Block_.Write" Return Procedure P.ex1.Block_.Hide Print at(1,3);"P.ex1.Block_.Hide" Return Procedure P.ex1.Printer_.Install Print at(1,3);"P.ex1.Printer_.Install" Return Procedure P.ex1.Printer_.Print_Fi Print at(1,3);"P.ex1.Printer_.Print_Fi" Return Procedure P.ex1.Printer_.Print_Bu Print at(1,3);"P.ex1.Printer_.Print_Bu" Return Procedure P.ex1.Edit_1_.Replace_ Print at(1,3);"P.ex1.Edit_1_.Replace_" Return Procedure P.ex1.Edit_1_.Insert_M Print at(1,3);"P.ex1.Edit_1_.Insert_M" Return Procedure P.ex1.Edit_1_.Delete_L Print at(1,3);"P.ex1.Edit_1_.Delete_L" Return Procedure P.ex1.Edit_1_.Insert_L Print at(1,3);"P.ex1.Edit_1_.Insert_L" Return Procedure P.ex1.Edit_1_.Set_Mark Print at(1,3);"P.ex1.Edit_1_.Set_Mark" Return Procedure P.ex1.Edit_1_.Set_Mark_1 Print at(1,3);"P.ex1.Edit_1_.Set_Mark_1" Return Procedure P.ex1.Edit_1_.Set_Mark_2 Print at(1,3);"P.ex1.Edit_1_.Set_Mark_2" Return Procedure P.ex1.Edit_1_.Goto_Mar Print at(1,3);"P.ex1.Edit_1_.Goto_Mar" Return Procedure P.ex1.Edit_1_.Goto_Mar_3 Print at(1,3);"P.ex1.Edit_1_.Goto_Mar_3" Return Procedure P.ex1.Edit_1_.Goto_Mar_4 Print at(1,3);"P.ex1.Edit_1_.Goto_Mar_4" Return Procedure P.ex1.Edit_2_.Find_ Print at(1,3);"P.ex1.Edit_2_.Find_" Return Procedure P.ex1.Edit_2_.Find___R Print at(1,3);"P.ex1.Edit_2_.Find___R" Return Procedure P.ex1.Edit_2_.Up Print at(1,3);"P.ex1.Edit_2_.Up" Return Procedure P.ex1.Edit_2_.Down Print at(1,3);"P.ex1.Edit_2_.Down" Return Procedure P.ex1.Edit_2_.First Print at(1,3);"P.ex1.Edit_2_.First" Return Procedure P.ex1.Edit_2_.All Print at(1,3);"P.ex1.Edit_2_.All" Return Procedure P.ex1.Menu_2_.Ok___ Print at(1,3);"P.ex1.Menu_2_.Ok___" Return ' You Can Initialize This Menu with @Init.ex2.menu ' and On Menu Gosub Call.ex2.menu ' !!! Call it with On Menu ' Procedure Init.ex2.menu Local a$,a% Menu Kill Resto.ex2.re: Restore Resto.ex2.re ' Erase Med.ex2$() Dim med.ex2$(37) Data Desk , About EXAMPLE ,----------------,ACC1,ACC2,ACC3,ACC4,ACC5,ACC6,"" Data Format , Page,--------------------, WP, ASCII,--------------------, Margins Data --------------------, Centered, Justified,"" Data Set , Load CharSet, Save CharSet,--------------------, Modify CharSet Data "" Data Status , Disk, Memory ,"" Data Menu 1 , Ok! ,"" Data Quit , See You Soon! ,"" Data "",*** ' ' a%=0 Do Read a$ Exit if a$="***" med.ex2$(a%)=a$ Inc a% Loop ' ' Menu Med.ex2$() Menu 14,1 Menu 19,1 ' Return ' Procedure Call.ex2.menu Local a% Menu Off a%=Menu(0) On a%-0 Gosub P.ex2.Desk_.About_EX,Empty.p,Empty.p,Empty.p,Empty.p,Empty.p,Empty.p On a%-7 Gosub Empty.p On a%-10 Gosub P.ex2.Format_.Page,Empty.p,P.ex2.Format_.WP,P.ex2.Format_.ASCII On a%-14 Gosub Empty.p,P.ex2.Format_.Margins,Empty.p,P.ex2.Format_.Centered,P.ex2.Format_.Justifie On a%-21 Gosub P.ex2.Set_.Load_Cha,P.ex2.Set_.Save_Cha,Empty.p,P.ex2.Set_.Modify_C On a%-27 Gosub P.ex2.Status_.Disk,P.ex2.Status_.Memory__ On a%-31 Gosub P.ex2.Menu_1_.Ok___ On a%-34 Gosub P.ex2.Quit_.See_You_ Return Procedure Empty.p 'Dummy Procedure Return ' NOW THE CALLED PROCEDURES ' Procedure P.ex2.Desk_.About_EX Print at(1,3);"P.ex2.Desk_.About_EX" Return Procedure P.ex2.Format_.Page Print at(1,3);"P.ex2.Format_.Page" Return Procedure P.ex2.Format_.WP Print at(1,3);"P.ex2.Format_.WP" Return Procedure P.ex2.Format_.ASCII Print at(1,3);"P.ex2.Format_.ASCII" Return Procedure P.ex2.Format_.Margins Print at(1,3);"P.ex2.Format_.Margins" Return Procedure P.ex2.Format_.Centered Print at(1,3);"P.ex2.Format_.Centered" Return Procedure P.ex2.Format_.Justifie Print at(1,3);"P.ex2.Format_.Justifie" Return Procedure P.ex2.Set_.Load_Cha Print at(1,3);"P.ex2.Set_.Load_Cha" Return Procedure P.ex2.Set_.Save_Cha Print at(1,3);"P.ex2.Set_.Save_Cha" Return Procedure P.ex2.Set_.Modify_C Print at(1,3);"P.ex2.Set_.Modify_C" Return Procedure P.ex2.Status_.Disk Print at(1,3);"P.ex2.Status_.Disk" Return Procedure P.ex2.Status_.Memory__ Print at(1,3);"P.ex2.Status_.Memory__" Return Procedure P.ex2.Menu_1_.Ok___ Print at(1,3);"P.ex2.Menu_1_.Ok___" Return Procedure P.ex2.Quit_.See_You_ Print at(1,3);"P.ex2.Quit_.See_You_" Return . I`.. /`QEXAMPLE1MED t EXAMPLE2MED t STM Menu-EDitor File I` Desk  About EXAMPLE  File  Load Save-------------------- Merge Delete Rename Copy-------------------- Directory Block  Start End-------------------- Copy Move Delete-------------------- Read Write-------------------- Hide Printer  Install-------------------- Print File Print Buffer Edit 1  Replace Mode Insert Mode-------------------- Delete Line Insert Line-------------------- Set Mark 1 Set Mark 2 Set Mark 2-------------------- Goto Mark 1 Goto Mark 2 Goto Mark 3 Edit 2  Find  Find & Replace-------------------- Up Down-------------------- First All Menu 2  Ok! STM Menu-EDitor File I` Desk  About EXAMPLE ----------------ACC1ACC2ACC3ACC4ACC5ACC6 Format  Page-------------------- WP ASCII-------------------- Margins-------------------- Centered Justified Set  Load CharSet Save CharSet-------------------- Modify CharSet Status  Disk Memory  Menu 1  Ok!  Quit  See You Soon! . N`.. QMOUSE PRG t `\`~HA"P JgJ)j!i#|JL/:NuQM10HC k j"8"WdL/:Nu,OO\,n(n HlHVBg?<JNAO ?<"NNTCP" @"h QM10f?<NAHzd?< NA\Hz?<&NN\BgHx?<1NA|A"P!i#|Jrp(C$1@BQ "A!Q"NuEQuick Mouse (c) 1987 by IMAGIC Grafik. N~*`N$N6N:N8N;N9N:hN9XN9NLK mNf]` m"m -So Q m -SBQ(m)MO*mN0N*?<N6H?<A?<NAX <B@SfLNuNVN'9@Hl?,N2F\9@ @gBlBlNZHlHlHlHlHlHlBgBgHlBgBgBgBgBgBgBgBgBg?<?<?<Bg?<N18<9@0,|g0,`|(g`N``|g`@0,g0,lg`?<N&T?,N,T?<N&T`z`|g`0,g0,lg`RHlHlHlHl?,?,?,?,?,NHlHlHlHl?,?,?,?,?,BgN4p?<N&6T?,?,?,?,?,N, NN 0,gN *?<N%T``|g`0,g0,lg`HlHlHlHl?,?,?,?,?,?<N30,|g0<2,|Al0,|g0<2,|AlHlHlHlHl?,?,?,?,?,BgN3f?<N%,T?,?,?,?,?,N+ ?<N%T``|g`NP``|g`N4``|g`Nd`r`|g`N`Z`|g`N`B`|g` N`|)g`BlBl``` ``0,|gNd0,|gN0,lmB0,2,lﮰAl00,lm$0,2,lאּAl ,2,lHTHЁ)@0,2,lHVA9@ l l9| l9n.H|@H|0@.H|:m^..H?N"TRn0.lm<9n.H|H|0@.H|:m^..H?NT9nN8?<N T lKl9|MN `,Bn`9|KN Rn nm9|PN`x.H|0m.H|9o:.H|Am.H|Fo.H|am2.H|fn$.H|am. n.H|Am_..0?<N4TN.H?NT.H@@RlN2?<N5T@.H|0m.H|9o.H|Am.H|Fo.H|am.H|fn.H|am. n.H|Am_..0N .H?N"T..0,S@=@-l ,Ѯ n#l&0.| H/ </N1 X=@` <2.|#HHЁ=@0.HѮ n0<?<N$\ <`?</N0`T-@ n-h/N/X)n .`N^NuNVBg/.?<?.?<>N/X .l/.?<AN.\N>0<` 0<`N^NuNV/N-X/.?<AN-\N0<``Bn` nR nRRRn0.Hl .m .f/./.?.?<@N-@ -@ nNl/.?<IN-\0<`< .మl8?.?<>N,X/.?<AN,\N@/.?<IN,\0<`-nB` nR nRRRn0.HmR .谬mf .g/./.?.?<@N,l -@ nN/.?<IN,H\0<`h .మl8?.?<>N,&X/.?<AN,\Nl/.?<IN,\0<`&/.?<IN+\?.?<>N+X0<`N^NuNVHl?<Nl\N^NuNVHl?<NV\N^NuNVHl ?<N@\N^NuNV`/.N2fX nB(/.N2RX n(H|\g/.N24X @n/. /.N1PN^NuNVBn`:?.HlN!\0.g 0.A 2.A Rn n mHlHlHlHlHlNN^NuNV?,?,?,?,?,?,?,?,BgNJ@f?,?,?,?,?<?<0,@| ?0,@| ??<N?,?,?,?,?<BgHlNBgHlNl\?,?,?,?,?,?,?,?,?<N`BgBg?,?,?,?,Bg?<HlNN^NuNV0,g0,lg`HlHlPN08PHlHlN0*PHl?<N6\ @frHlHlHlPNN J@gN0,gFHlN0>X @o4HlHlPNP?<N0THlPNX=@BgNT`=|`=|0.gRBnHlHlPN/PB,Hl?<N\ @frHlHlHlPN J@gN0,gFHlN/X @o4HlHlPN P?<NTHlPNX=@BgNpT`=|`=|0.g\/,?<IN(P\?<NNN?<N TNN^NuNV0,g0,lg` ,ڐ-@ ox?,?,?,?,NP0,H/ ./N / </N 2 X-@ .g()n?<N zTNN$N?<N dTNdN^NuNV0,g0,lg`?<N 6T?,?,?,?,NP0,`|g`& ,֑ lBN ``|g`4 ,Ѭ ,",ڒְo ,ڐ)@N`B`|g` oS0,=@=@=l0,lS@=@=@0,l﬐lTS@=@0,lS@=@0,lT=@BBHlHlHn?<?,XN*NBg/,Np\ ,",ҬְmBl``|g` ,",ڒְlR0,=@=@0,lT=@0,lS@=@=@0,lS@=@0,l﬐lTS@=@=lBBHlHlHn?<?,XN)Bg ,ЬS/N\ ,ΰlBl``|g`40,l0,2<Ll̰Ao0<Ll9@N``|g`$0,̑l llBlN`Z`|g`$0,2<Ll̰Al RlN`,`|g` lo SlN``NnN?<N\TN^NuNV/./././.?.?.?. ?. ?.?<NT n0HVH@J@g>2,V n0HVH@@ n0A02,V n0HVH@@ n0A0 n0HTH@J@g>2,T n0HTH@@ n0A02,T n0HTH@@ n0A0 n2HVHA n0A0 n2HTHA n0A0N^NuNV ,)@ ,gR9|L0,HTH)@0,HV9@0,l @Lo0<Ll9@ </ ,/N / ,/Nd X=@ no=| <2,H/ /N 2,H/ /N$ X=@ no=|?.?,N bX?.?,N XN^NuNV0<Ll=@ @n-|`X <2,H/ /N$ /0.H/N X-@ l -| o -| ,ڐ-@ n-|`R </ ,/N / ./N0 X-@ l -| o -| .??,N zX .??,N XN^NuNV n0nl 0.` n0=@ n 0nl 0.` n 0=@ n0 nP2.nAl n0 nP` 0.n=@ n 0 nP2.nAl n 0 nP` 0.n=@ n0 n 00.n n00.n n0 n Po n Pn 0<`0<`N^NuNV=n=n 0.n S@=@0. nS@=@Hn?<?,XN#pPN^NuNVHnBg?,XN#XPN^NuNV-l`Bg/.N.\R .",Ҭְm0,g BlNN^NuNVH0=l0,lN"./2,TH/N|"HЁ=@&l .(,".遘 n n f ll ./HlHlZN h Ab$H<<` RF FLm-K-DAd$HBF`V><HAG|0 G:m 0^@H`0H><HA|0 G:m 0^@H`0HRSRF Fl fA}$HBF`V><HAG|0 G:m 0^@H`0H><HA|0 G:m 0^@H`0HRSRF Fl f&n(.A$H n fjBF`"H|f 0< `HSRF Fl f0,lAZBAZA/?.?.?,XN!J `NBF`.H| mH|o 0<.`HSRF Fl f| | `:?,T?,0,"./2,TH/N2"HЁ??,BgN AZ `L N^NuNVHn?.N \`N^NuNVN =@HlPHlRHlTHlVN X9@XBn`0.RnA60 n m9|JHlHlXHl6N 0,TW@9@N lTlRlN0.`N^NuNVHnHnHnHn?<BgN =@ nf=|?.?.?.?.?.N  `N^NuNVHnHnHnHn?<BgN =@0.2.HA=@0.2.HA=@?.?.?. ?. ?<?< 0.| ?0.|?N =@?.?.?. ?. ?.N =@ ng@HnHnHnHn?<?.N =@?.?.?.?.BgN 0.`N^NuNVHnHnHnHn?<BgN =@HnHnHnHn?<?.N d=@0.2.HA=@0.2.HA=@?.?.?.?.?<?< 0.| ?0.|?N =@?.N T`N^NuNV?.N T`N^NuNV/./././. ?<?.N `N^NuNV/./././. ?<?.N `N^NuNV/./././. ?<?.N \`N^NuNV/./././. ?<?.N 0`N^NuNV nm nn/. NTX=@ nPoH?<P/. 0.RAA/N 0.RAlB0.RAmB`4/. 0.RAA/NP0.RAЈ @B0.RAA -@ .-@ .=@0.RAA -@ .=@BgBg?.?.?<?.N V `` 0<`N^NuNV nm nn/. N,X=@ nPoH?<P/. 0.RAA/N 0.RAB0.RAB`4/. 0.RAA/NfP0.RAЈ @B0.RAA -@ .-@ .=@0.RAA -@ .=@BgBg?.?.?<?.N. `` 0<`N^NuNVBgBgBgBg?< ?.N `N^NuNVHnHnHnHn?.N=@HnHnHnHn?.Nn ng0.2.nA @l0<2.nA=@`=n0.2.nA @l0<2.nA=@`=n?.?.?. ?. ?<?.N$ =@0.`N^NuNVBgBgBg?. ?<?.N `N^NuNVBgBgBg?. ?<?.N `N^NuNVBgBgBg?. ?< ?.N `N^NuNVBgBgBg?. ?<?.N `N^NuNV=n =n 0. nS@=@0. nS@=@?<?,XNX=@?.?,XN*X=@Hn?,XN>\N^Nu)Iۊ)Jۆ"/0<NB"lۊ$lۆNu NV9n0.| A" AA-H=|` nR2.AH0Rn nm/,N.X0,0N^NuNVA)HAb)HA@)H A0)HA$)HA)HA)H?< NXT9l00,N^NuNV9n@9n B9n D9nF9nH9nJ9nL9nN9nP9nR9nT9nV9n X9n"Z)n$$9n(\9n*^?<NT n,02 n004 n406 n808 n<0: n@0<0,0N^NuNV9n@)n $?<#NTN^NuNV)n$9n @9nB9nD9nF9nH9nJ?<*NHTN^NuNV)n$9n @9nB9nD9nF9nH9nJ9nL9nN?</NTN^NuNV)n$9n @?<2NTN^NuNV9n@9n B9n D9nF9nH9nJ9nL9nN9nP?<3NTN^NuNV9n@)n $?<4N|TN^NuNV)n$?<6NdT n 02 n04 n06 n080,0N^NuNV9n@9n B9n D9nF9nH9nJ9nL9nN?<INTN^NuNV9n@9n B9n D9nF9nH9nJ9nL9nN?<JNTN^NuNV?<MNT n02 n 04 n06 n080,0N^NuNV9n@)n $?<NNhTN^NuNV)n$)n (?<ZNJT n020,0N^NuNV9n@9n B9n D9nF9nH?<dNTN^NuNV9n@9n B9n D9nF9nH?<eNTN^NuNV9n@?<fNTN^NuNV9n@?<gNTN^NuNV9n@9n B?<hNT n 02 n04 n06 n080,0N^NuNV9n@9n B9n D9nF9nH9nJ?<iN6TN^NuNV9n@?<kNTN^NuNV9n@9n B9n D9nF9nH9nJ?<lNT n02 n04 n06 n 080,0N^NuNV)n$9n @?<rNTN^NuNV?.NT nn0<`?.?<>N >X9@ܾg0<`0<N^NuNV?.?<LN XN^NuNV/ AJ&H`0+ |g/ N*X AJ"Ҽm?.NT&_N^NuNV/ &n/ NDXJ@g0<`00+ |g /+NXBk ?+ N,TJ@g0<`0<&_N^NuNVH&n0+ |f0<`.0+ |gV0+ |f0<`v0+ |g?<B?+ NP?/+?+ N.P @f0<`@k 0Hѫ`$ k o?<0+D@H/?+ NBP'@&Bk0<LN^NuNV fBC`&SCdTC0|g0|gԼdRC`|CHBC0|@HB LN^NuNVNVH n " n $&JjFFJjFFLN^@NuNVH n"n $0(H@6C|g.0)H@:E|gE|BB0<まef bRAQ$0P`HNVH n$0(H@6C|gd"n .0)H@:E|gD|E(HD*HE20HGHBBB8:BGBBЇӄЂӅJg$0P`B`NVH"n 0<9@Q`NVH"n Bl n,0(H@8D|fB.0)H@:E|fB2$60Enfl8,:.6$0Jg0Eg|n0@gDԇ0,Q fBB`HSCdTC0|g0|gԼdRC`|"|CHB|C0|@HB AHABA LN^NuNVH0.|=@n n f n0H-@HnNXA-H`> n(g nf. n-P n(f HnNX` HnN>XA-H/./. 0.A PNPLN^/W DNuN^NuNVH nB fB`м8 LN^NuNVH n$fBCB`nD6< f႖|NzN^NuNVH0&n$n Bn-J @)P)h-l-lBEG>O|g|JGn|m` REHl/ NRPO`SEHl/ NPO`&0+H@JGgDG0<0dR@0.BAQ,>QQֆG|0QB`Rn0.g$nB`0R 2.HmB`b .6.HЃR$@ nH|0fRZ"` R"H|9n nH|0f$n R&@fSE .6.HЃ @B n0L N^NuNVH$.f BB`J". BnJlVnDJlRnDvd`Bbd nmDdD-@-A LN^NuNV/BnJlRnDJ lRnD 0. -@0.n0. nngD -n N^.JNuN^NuNV nl <`?.?./. ?<BNn -@ m .`?<?.B?<BND -@?<?.B?<BN* -@ nf .Ю -@ `$ nf .Ю -@ `0.g <`b . oHn . /?.?<@N Bg?./. ?<BN ]|9@ܾg <` `Blܾ . N^NuNV/.?<INr\N^NuNVBn`&0.Aێ0nf0.AێBPRn nLmN^NuNV?>.=|0Aێ"HPgXHf0(>N^Nu)Iۊ)Jۆ)_ۂNA"lۊ$lۆ/,ۂNuNVH&n Bn0.|dg`>< `.`|ug`>< ``|og`><``|xg`>< l* ndf SR- .D-@`0. f Gf .`& Gf .` ./0H/NX 2.RnA0 Gf .`( Gf .` ./0H/Nl X-@ .fp`FSn0.A P m0.A0| |A`0.A0|0 SR0.fLN^NuNVH&n n f=| )n)nHlHl?<NT]|@0. R@?HnHnHnNT.g SR-.H|0f.f SR`J nff>.n RG0lo0,`0> Gl0<`0?HnHnHnNBF`0RFA SRSGSn0g nl` SR0Sn nl0. g SR.` SR0RnSn 0. g nm`" Go0RFAH`0<0 SRSG0. Sn J@f`` SR0. g SR.><`0RGA SR0. Sn J@f SRE?.Hl/N /NXHѓLN^NuNVBn`"0. n PHC|0=@ nR n PH|0m n PH|9o0.N^NuNVH0&n -n @$PX`R` nRg H|%fH|%f,RBn=|Bn| H|-f=|RH|0f|0R-JHnN$X=@$nH|.fR-JHnNX=@$nH|lf=|RgH-n Gdg Gog Gxg GufB0.g @ ` @0H/Hn?.?NV 0.g0<`0<H` Gcf R @ nRT` Gsf4 @-PX<.` nR nRSF0g nf`J Geg Gfg Ggf, @)P)h/,/,Hn?.?NP` 0 nR .nl0.g$<.".A` nRSF0f`b .2.SAHЁ-@-@,.` .2SAHЁ @ nSSF0f` nR .o .R-@f nB .L N^NuNVHn /.NhPN^NuNVH0&n$n -K`fS`f .`L N^NuNV n "n fN^NuNVH0&n$n >.-K`0SGJ@g f .`L N^NuNVH0&n$K`Rf `L N^NuNV .9@ .9@N^NuNV .9@ .9@N^Nu)Iۊ)JۆHl)_nHln" <sNB"lۊ$lۆNuNV9n 9| Bl9|9nN0,N^NuNV9n 9|Bl9|9nN0,N^NuNV9n 9|Bl9|9nN^0,N^NuNV)nr)nz .мZ)@~9|dBl9| n 9PN n 0A)HrA)HzA)H~A)HvN^NuNV)n v9n 9|9|9|9nNA)HvN^NuNV9n 9n Bn nR2.RnA|0f9|9|Sn0.9@9nN`N^NuNV)n v9|r9|Bl9nN8A)HvN^NuNV9n /.NX/.NX)n v9|m9|9|9nNA)HvN^NuNV`4 nH| f?< ?<NnX nRH??<NVX0. Sn J@fN^NuNV` nRH??<N(X0. Sn J@fN^NuNV` nRH??<NX0. Sn J@fN^NuNVH0&n $KA-H nf?./ N4\=n`L nf?./ N`\=n`. nf?./ Np\=n`-KBn?.N:TJ@f`H| f |o@ H-@/./.?.?<@N$ 9@ܾHg0<`0,ܾn/./<?.?<@N 9@ܾ @g0<`tRnR -@`R ned` 6.ƼЃ$@ H-@/./.?.?<@N 9@ܾHg0<`0,ܾnBlܾ0.L N^NuCA "A."AT"Az"A"A"A"A"A"C222 222"222'2 222222"222#2222222"222$2222222"222%2222222"2222222222"222#2222222"222"2222222"222"22 22222"22 2222222 2"22 2!2CJ"2"2 2"2"2"22"2"2"22"2x9|H)l)l)l)l)l9|CA"A"A"A$"A*"A"A "Nu FiledumpKurz-Infos zum Filedump AccessoryFenster: Alle Funktionen wie blich. Nach Close () kann der Dump gesichert werden.Maus: Fensterfunktionen auslsen und Cursor positionieren.Tasten: Vernderungen im Dump und Cursorsteuerung.Entwickelt von Michael Vogt, 1988[1][Datei nicht gefunden][ Ok ][1][Zu wenig Speicher: |%ld Bytes frei, |%ld Bytes notwendig][ Ok ][1][Datei nicht gelesen][ Ok ][1][Datei kann nicht|erffnet werden][ Ok ][1][Fehler beim Schreiben|ist aufgetreten][ Ok ][1][Die Diskette ist voll|Die Datei wurde nicht|vollstndig abgespeichert|und deshalb wieder gelscht][ Ok ][2][Soll die Datei|gesichert werden ?][ Nein | Ja ][2][Soll die Datei als|Hexdump gesichert werden ?][ Nein | Ja ]\*.*[1][Es kann kein Fenster geffnet|werden. Bitte schlieen Sie|ein beliebiges Fenster][ Ok ]Hexdump von Dateilnge: %ld Bytes Infos mit %08lx@$??CON:AUX:PRT:%d `+fC;.I#,#,#,By,NNV?.?<NNN^ _TN/,HNVA-H?< BgBgBgBBgBgBgBgBgBgBgBgBgBgHy1 VHhHhHhHhHhHhNJ V1@rHy/x?N"bX?<Nv-@ @2(=A"@4)=B$@6*XC=CAfx=D6.Bg&@(H؃-D(D:. H(*@;CN^,_ _TN/,HNVAV-H0. @d?<BgBg?<?<NV-@/.?<prAtBvC??<?<?<?<Bg?<N =@/.?AO"OAO"OA2"Or?"Q?<?<NPN/.N /.BgN=@/.?.Hy2N 6/.N ./.NNHy2p/HzTBN V2Ad:?<Hy2HnN%\0.rA\6<C_DBd ? NNN^,_ _TN999___NV?.?< NMN^ _TNA #,A,C!It0B BA/xBt0B  NrAmAO"O0<Q?<N32AC2p /?BgBgBgrd/BgBgBgBgBgBgBgBgBgBgHy1Hy2Hy2Hy2Hy2Hy2Hy2NJ" ArAo4? n0(rAW0(vCWĄDBd"n0.3@ 4. 3BN^,_ _ N/,HNVAN-HN)n n0.-H0(rAW0(vCWĄDBd"h /"n / ND`N^,_ _ N/,HNVA-HN)n0. H//<N) м/HnN'p=@2. SA=A` n0.p1@Rn0.no n2. r1A$.-B .N^,_ _TN/,HNVAH-HN)np=@ n 0.rtBg R@=@`0.rAl=A0.=@0.N^,_ _XN/,HNVA4-HN)n/.N @d0. Hм//.N'N^,_ _\N/,HNVA-HN)np=@0.rdA] n 0(vCVDBd0.R@=@`0.rdAlzt=BS@=@`6 n 0.-H0(`/( n/( NN? NN`"h -I/ n/ NN? NN n/(?< NN n/(?< NN np//( N'`"h -I/ n/( NNH? NN n/( n/( NN*? NN n/( n/( NN ? NNd np//( N'`0@ @ b$@0;N xxRn0.no2.H//<N)"Ҽ//. N'N^,_ _XN/,HNVA-HN)n n 0.-H0.1@2.1A4.1B6.1C8.1Dz01E1E|FWrAW€B@d0.tB=@0.t B1@p1@ vCW|FWAEd2.1A :. 1E`!@ 2.zEg/. ??.NnN^,_ _N/,HNVA-HN)np=@ n2(tBg` n0.0(r AtBf0.R@=@` n0."n0.0)r FAA1@0.R@=@/.??.?.?.?.?.?.?.?.?. Nh0.=@0.N^,_ _N/,HNVtA>-HN)n0.=@2. =A$.-Bx?<(HnHnHnxHntNN^,_ _PN/,HNVtA6-HN)n0. =@".-Ax?<rHnHnHnxHntNN^,_ _\N/,HNVtA^-HN)n .-@x2.=A4.=B6.=C8.=D:.=E<. =F?<*HnHnHnxHntNN^,_ _N/,HNVAH-HN)n/.?. HnHnHnHnN/.Bg?<?.?.?.?.N=B:.<=E&.$-C?<HnHnHnHnN0.=@ n2.0"n4.2$n6.4&n 8.6(n :.8*n<.:0.N^,_ _3| NAXNu/")x itg$H@//?) ?<@NA LJof _Nu _4` _t6 Bo r aSB`2aNH?< _r ar a/L?4@" f,tPdv`  rV "2 * R">:d"F:6B.H*6r >>   *jV0b,4 "T & & (,&  H                 "$"2J P,R f  "D    * "F V   ******************************************************************** Deze diskette is samengesteld door de Stichting ST, Postbus 11129, 2301 RH Leiden. Onze bibliotheek van public domain programma's omvat op dit moment (zomer 1988) al zo'n drie honderd disks. Daarop vindt u programma's op elk gebied, van tekstverwerker en database tot de leukste spelletjes, de fraaiste tekenprogramma's en de handigste utilities. Ook bevat onze bibliotheek een speciale afdeling voor public domain disks met Macintosh software, die te gebruiken zijn onder de ALADIN emulator. Deze MAC-PD serie bevat tot nu toe ongeveer vijfendertig disks. ******************************************************************** U vindt in het twee maandelijks tijdschrift "ST" (Onafhankelijk tijd- schrift van en voor gebruikers van Atari ST computers) een overzicht en een bespreking van de inhoud van de nieuwe public-domain diskettes. Dit tijdschrift bevat tevens een bestelkaart zodat U vlot over de software kunt beschikken. De Stichting ST geeft ook een speciale PD catalogus disk uit. ************** Deze public domain disk is geproduceerd en gedistribueerd door: Stichting ST afd. Software Bakkersteeg 9A 2311 RH LEIDEN ************** Ondanks onze controle komt het af en toe voor dat een diskje niet goed is gecopieerd.Mocht U dit overkomen, aarzel dan niet en stuur de defecte disk aan ons terug. U krijgt dan direct een vervangende disk toegestuurd. ************************************************************************ Teneinde het voor ons mogelijk te maken om productie fouten op te sporen en vervolgens in de toekomst te vermijden, zijn alle disks, geproduceerd door de Stichting ST, voorzien van een groen productie nummer. ************************************************************************ . (`.. TMON202 0EMPLMONPRG l*MxIESMICH k*}IMON OUD#`MON < a~@g&=@aB pea.a0 <a|??<LNAD@AxaA:p=@ <4`Xp`p=@ RB=Br MCDa`*r. A Mp >ta <av`> M0rta0|g|g @g @f M?paa0Nu/a W <6aAzC \"" Wpa _pr `Ba: z HC!IBh0:\6@ ri1A 0:Jv z*PNuACp\$Hg (f$H`CfNuAC>-I fAC>f FN:h`RN-A>N:h` #include "showsymb.h" SymbolCookie *FirstPointer = NULL; /************************************************************************/ /* Cookie-Jar "SYMB" suchen und, falls gefunden, Zeiger initialisieren: */ /************************************************************************/ long GetSymbolHeader (void) { LONG *CookiePtr = (LONG *) 0x5a0; LONG CookieName, CookieWert; /**********************************/ /* Cookie-Jar-Tabelle vorhanden ? */ /**********************************/ if ((CookiePtr = (LONG *) *CookiePtr) == 0L) return (0); /********************************************************************/ /* Solange die Tabelle durchsuchen, bis Treffer oder Ende erreicht: */ /********************************************************************/ for (;;) { /**************************************/ /* Cookie-Name und Cookie-Wert holen: */ /**************************************/ CookieName = *CookiePtr++; CookieWert = *CookiePtr++; /*******************************/ /* Ende der Tabelle erreicht ? */ /*******************************/ if (CookieName == 0L) return (0); /********************************/ /* Cookie-Jar "SYMB" gefunden ? */ /********************************/ if (CookieName == SYMBOL_COOKIE) { /***************************/ /* Zeiger initialisisieren */ /***************************/ FirstPointer = (SymbolCookie *) CookieWert; return (0); } } } /**************************************************************/ /* Beispielprogramm zur Anwendung des Resident Symbol Drivers */ /**************************************************************/ int main (void) { WORD i, *Offsets; Symbol *Data; Symbol *Daten, *Symb; SymbolHeader *Pointer; LONG Return; SymbolHeader *Structure; /*************************************/ /* Cookie-Wert von "SYMB" ermitteln: */ /*************************************/ Supexec (GetSymbolHeader); /******************************************************************/ /* Wenn der Zeiger NULL ist, so ist der Treiber nicht installiert */ /******************************************************************/ if (FirstPointer == NULL) { printf ("\nResident Symbol Driver nicht gefunden !!\n"); return (1); } /*****************************************/ /* Versionsnummer des Treibers ausgeben: */ /*****************************************/ printf ("\nVersion des Treibers: %x.%0x\n", FirstPointer->Version, FirstPointer->Revision); /************************************/ /* Zeiger auf erste Struktur holen: */ /************************************/ Pointer = FirstPointer->First; /******************************************/ /* Nacheinander alle Struktur bearbeiten: */ /******************************************/ while (Pointer != NULL) { /************************************************/ /* Information am Anfang der Struktur ausgeben: */ /************************************************/ if (Pointer->ProgramName [0] == '\0') { printf ("\nSystemtabelle:"); printf ("\nAnzahl der Symbole: %5u", Pointer->SymbolCount); } else { printf ("\nProgrammname: '%s'", &(Pointer->ProgramName)); if (Pointer->SymbolCount > 0) printf ("\nAnzahl der Symbole: %5u", Pointer->SymbolCount); printf ("\nStartadresse des Programms: $%08lx", Pointer->FirstAddress); printf ("\nEndadresse des Programms: $%08lx", Pointer->LastAddress); printf ("\nBasepage des Programms: $%08lx", Pointer->Basepage); } if (Pointer->Next != NULL) printf ("\nNachfolger der Struktur: $%08lx\n", Pointer->Next); /**************************/ /* Zeiger initialisieren: */ /**************************/ Offsets = Pointer->SymbolNames; Daten = Pointer->SymbolData; /**************************/ /* Alle Symbole ausgeben: */ /**************************/ for (i = 0; i < (Pointer->SymbolCount); i++) { /************************************/ /* Zeiger auf das Symbol berechnen: */ /************************************/ Symb = (Symbol *) ((LONG) Daten + (LONG) (Offsets [i])); /**************************/ /* Symbolnamen bestimmen: */ /**************************/ Return = GetSymbolName (FirstPointer, Symb->Value, &Data, &Structure); /*************************************************************/ /* Wenn ein Name nicht gefunden werden konnte, Fehler melden */ /*************************************************************/ if (Return != 0) { printf ("\nName Error: %s\n", &(Symb->Name [0])); return (1); } /*************************************/ /* Symbolnamen linksbndig ausgeben: */ /*************************************/ printf ("%-22.22s", &(Data->Name [0])); /*************************/ /* Symbolwert ermitteln: */ /*************************/ Return = GetSymbolValue (FirstPointer, &(Data->Name [0]), (char *) Structure, &Data, &Structure); /*******************************************************/ /* Wenn das Symbol nicht gefunden wurde, Fehler melden */ /*******************************************************/ if (Return != 0) { printf ("\nValue Error\n"); return (1); } /************************************/ /* Parameter des Symbols auswerten: */ /************************************/ switch (Symb->Type & SYSTEM_MASK) { case BSS_MASK: printf (": BSS, "); break; case TEXT_MASK: printf (": TEXT, "); break; case DATA_MASK: printf (": DATA, "); break; default: printf (": "); } /************************/ /* Symbolwert ausgeben: */ /************************/ printf ("$%08lx\n", Data->Value); } /*******************************************/ /* Zeiger auf die nchste Struktur setzen: */ /*******************************************/ Pointer = Pointer->Next; } /****************/ /* Programmende */ /****************/ return (0); } .`t`4HS@lB`r` trp TN6.2Hr T hHN0HH֐AS@ T1@?|`HR@2@l.`t`4HS@lB`r` tr#p" TN6.2Hr T hTHN0HH֐AS@ T1@Z?| `~HR@2@l.`t`4HS@lB`r` tr)p( TN6.2Hr T hHN0HH֐AS@ T1@?|&`HVHVIAHVJB:K`HVHVIAHVJB:K`HVHVIAHVJB:K `dHVHVIAHVJB:K `BHVHVIAHVJB:K` HVHVIAHVJB:K-.<N.>O.0 TN&TO?| og of2/H ЀЁ Tp ??/?/?/"BgBgBBpBANO ??/?/?/"BgBgBBBApNO og>HVHVIAHVJB:r Thg`(``>>>> PURE-C <<<< for ATARI-ST Version 1.0 (C)88-90 Borland International &H f&op`B@#3 k # Ј<.@#Jyg<"@(I$k,"Jf"JfB// ?<?<JNAO A<~kRrRAfA6<HCBB`6 !jBJ)gHiRC` "fSI "WSAkHiRCBSQJ)gHiRCHy`$ON 0 J"LN? 9g @N 9g @NN0?<LNAH (N&$x CN f `f J`PJ fLNu/ / E &Atrp&j&kNɑtrp&j&kN4| fBR0*f2gp`B@5@&_$_NuH0O$IAC2<QJf64OAtrp&y&kN4pOL Nu//OvxBy (pP"HANB/P 7 @f 0RD7f 7#@f A@N`vBy & OR(&NuH8NLE YO$H.BC09Dg&j`&j(jBDM`Tp0Ѐr23$ ҂*AC WN J@f2JCf(fC NN`/ C NNXONTv MNRDjd09 (g0XOL|NuH>,HI 9@f AzN 9@fC LNb` y@*hB@|+gU@g`23DC LN0`ByDC LNN`RN  gE *G #fNBCB+RN`0RC  gfB20JCf*B*BC`0-gf 4J' RC*m. f`BCB+`0RC  g :gfB20`RN  g :f8pP"JAN AN BCB`RN  g`0RC  gfB20BC`&g+g"MANRJ@f 0H'RC*m. f0HBM (fnAp*N h f& y@B@(?BA?CA LNXONn fHkCj LNXO`bBC`0H sNRC0H"3gN4g`HBDBC`0H s2(g"JNR@RC0H"3g4gJDfHRC LNVXONp`B@L|NuA(p"@ "ByA1B33O"Nu/ Hz?<&NN\O$_Nu/YOM, IC HzaXO VBXO,_Nu"VS@eQ,NuH8]O$H&I(o&BCx%p JR@g2fJ@g@HNBEg>BA< <b;k`|<*f<`&<0< b ACp a$Wb<gt<.f6<*f4`$<0< b ACp a$Wb4g<߲<Lf g`<hggr@dp|?@0;N`````N`N``````````````````````````NNN````````````````` [0`|A`0A2"LaN@`\ [2"LaL@`JJEj `p0?4 La"TO@`*JEj `0H?4 LaTO@` JEj `p0?4 LaTO@`JEj `p0?4 LaTO@`@HN0\OLxNup24C8jxA aA pJWF@?@gA 2SAktaSb (Q2/@4/(jt@jtBgf 0Ao@@Alx?B?D`jH0$H&IB(v`H0$H&IvJWFCJBj4Cb6xJAkCc8Cf K0a0 JN`0 JN0 Kax0DL Nu6x0/gf@ JaV0/g@AN0/g@ Ja00/g@A N0/gg@ Ja0OLNuH0E6`H0E4&H6g8Kg SC JpNQ J0|gNL Nu00000000 CBaABp `/ / B@JgB)g@)fJ&Q(i ge"// Ia"_ _J@f&Q`B@"(_&_Nu3 p`#H#H&HJfS#K " I(Iap"LJ@f`(g4(f>"P | dNu?/a8 _2J@f 0Nu3 pNuC!I!IR!I `H&H(k6+"+g0DtaJk+fZ"S"L Ip gSj`*| // " 0a`"_"JkNgPAp SjH@" 0a<߶<Xfg.G63d"3d&HCHCJCfԃԁd` & gSJ"L Nu3"p` 3!p& g"`"CB@f ANu//"4UB|"bZC"t&HCJCf&HC;0NRBH@B@H@f`$?&8BCHC06H@0HC;0&RBJf8QB" _&Nu3!`0123456789abcdefghijklmnopqrstuvwxyz/ &y g/ &S?<INA\O`&y g/ &S?<INA\O`&_NuJg/bg2 4gf!Sf`f`!Sg"gH?LxH?LxH?LxH?Lx`H?Lx8H?LxH?LxH?LxH?LxH?LxpH?LxHH?Lx H?LH?SfvLx2|HgS@!!Q|gSA!Q`2 4gfSf`f`S"gH?LxHxLxHx(LxHxPLxHxxLxHxLxHxLxHxLxHxLxHx@LxHxhLxHxLxHxLHSfxLx2|HgS@ Q|gSAQ _NuBAA0Nu  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~@@@@@@@@@@@@@@@@@@@@@@@@@@@::::::8888888888888888888866666644444444444444444444@  !"#  !"#??<LNA?/?<1NA/ /?< NA\O$_Nu/ /?<&NN\O$_Nu Symboltabellen-Modul V2.1. Neue Befehle: '#+' : Alphabetische Reihenfolge whlen '#-' : Numerische Reihenfolge whlen '#' : Alle Programme auflisten '#' : Alle passenden Symbole ausgeben '#:' : Programminformationen anzeigen '#:': Passende Symbole des Programmes ausgeben '##' : Alle SYSTEM-Symbole ausgeben '##' : Passende SYSTEM-Symbole ausgeben Hinweis: und knnen mit dem Wildcard <*> abgekrzt werden, z.B. pat 'ta*' auf 'take' und 'table', aber nicht auf 't'! p Symbol-Modul V2.1 q Symboltabellen-Kommando fr TEMPLEMON installiert. 1992 by Johannes Hill & Robert Federle Die Modulinitialisierung ist schief gegangen! Installation abgebrochen. Systemtabelle: Anzahl der Symbole: %5u Programmname: '%s' Anzahl der Symbole: %5u Index des 1. DATA-Symbols: %5u Index des 1. BSS-Symbols: %5u Startadresse des Programms: $%08lx Endadresse des Programms: $%08lx Basepage des Programms: $%08lx Nachfolger der Struktur: $%08lx %-22.22s: BSS, : TEXT, : DATA, : Systemtabelle: %s: Symbol-Treiber nicht gefunden!! Alphabetische Reihenfolge gewhlt. Numerische Reihenfolge gewhlt. Version des Symbol-Treibers: %x.%02x Kein passendes Programm fr %s gefunden!! Kein passendes Symbol fr %s gefunden!! Br  D^&&:H .      $V0"d*p `z  .ro gepufferter Bildschirmzeile oder gespeicherter Befehlszeile verbraucht TempleMon 80 Bytes Speicherplatz bei seiner Initialisierung.Hilfe fr 'Bildschirmauflsung einstellen' Mit dieser Funktion knnen Sie die Parameter fr nicht Standard Auflsungen eintragen. Alle Auflsungen, die einen Bildschirmspeicher grer als 32 KB bentigen, betrachtet TempleMon als nicht Standard. Bei der Verwendung mit AutoSwitch OverScan schaltet TempleMon die Hardware selbststndig in die Standardauflsung. Die Auflsung TT Hoch betrachtet TempleMon als nicht Standard. Auf dem Atari ST schaltet TempleMon bei seiner Aktivierung in ST Low selbststndig auf ST MID. Auf dem Atari TT schaltet TempleMon von den Auflsungen ST Low, ST MID, TT Low und TT MID in die ST Hoch Auflsung. Die gemachten Einstellungen werden zum Beispiel bei OverScan nach der HyperScreen Modifikation aus dem ST Magazin benutzt.Hilfe fr 'Farben einstellen' Mit dieser Funktion knnen Sie die Farbpalet#ifndef __SYMBOL__ #define __SYMBOL__ #include #include #define SYMBOL_COOKIE 0x53594D42L /* Cookie-Jar-Name "SYMB" */ #define DATA_MASK 0x80 /* Maske fr Bit 7 */ #define TEXT_MASK 0x40 /* Maske fr Bit 6 */ #define BSS_MASK 0x20 /* Maske fr Bit 5 */ #define SIZE_MASK 0x1F /* Maske fr Bit 4-0 */ #define SYSTEM_MASK (DATA_MASK + TEXT_MASK + BSS_MASK) /*********************************************/ /* Diese Struktur existiert fr jedes Symbol */ /*********************************************/ typedef struct SYMBOL { LONG Value; /* Wert des Symbols */ BYTE Type; /* Type-Byte / Gren-Byte */ BYTE Name []; /* Symbolname (0-terminiert) */ } Symbol; /*******************************************************/ /* Diese Struktur wird fr jede Symboltabelle angelegt */ /*******************************************************/ typedef struct SYMBOLHEADER { char ProgramName [15]; /* Programmname (0-terminiert) */ char reserved; WORD SymbolCount; /* Anzahl der Symbole (TEXT, DATA, BSS) */ WORD FirstData; /* Index des ersten DATA-Symbols */ WORD FirstBss; /* Index des ersten BSS-Symbols */ WORD *SymbolValues; /* Zeiger auf die Werte-Offset-Tabelle */ WORD *SymbolNames; /* Zeiger auf die Namen-Offset-Tabelle */ Symbol *SymbolData; /* Zeiger auf die Symboldaten */ LONG FirstAddress; /* TEXT-Segment-Start */ LONG LastAddress; /* BSS-Segment-Start + BSS-Segment-Gre */ BASPAG *Basepage; /* Zeiger auf die Basepage des Programms */ struct SYMBOLHEADER *Next; /* Zeiger auf die nchste Struktur */ } SymbolHeader; /***************************************************************/ /* Auf diese Struktur zeigt der Cookie-Wert des Cookies "SYMB" */ /***************************************************************/ typedef struct SYMBOLCOOKIE { BYTE Version; /* Aktuelle Versionsnummer des Treibers */ BYTE Revision; /* Aktuelle Revisionsnr. des Treibers */ WORD reserved; SymbolHeader *First; /* Zeiger auf die erste Symbol-Struktur */ long (*GetSymbolName) (); /* Zeiger auf die 1. Routine */ long (*GetSymbolValue) (); /* Zeiger auf die 2. Routine */ long (*AddSymbolTable) (); /* Zeiger auf die 3. Routine */ long (*RemoveSymbolTable) (); /* Zeiger auf die 4. Routine */ } SymbolCookie; /*******************************************************/ /* Dies sind die Prototypen der Routinen von SUBROUT.S */ /*******************************************************/ LONG GetSymbolName (SymbolCookie *Start, LONG Address, Symbol **Data, SymbolHeader **Header); LONG GetSymbolValue (SymbolCookie *Start, char *SymbolName, char *ProgramName, Symbol **Data, SymbolHeader **Header); LONG AddSymbolTable (SymbolCookie *Start, char *ProgramPath, BASPAG *Basepage); LONG RemoveSymbolTable (SymbolCookie *Start, char *ProgramName); #endif ere Programme in die TRAP Vektoren eingetragen haben, die normalerweise nicht belegt sind, und um in einem solchen Falle diese Programme nicht aus den von ihnen belegten Vektoren zu vertreiben. Zur automatischen Erkennung des Betriebssystemanfangs wird eine Systemvariable genutzt, zur automatischen Erkennung des Endes gibt es jedoch keine ganz legalen Mittel. Es wird an Hand von Betriebssystem- zeigern des GEM's entschieden, ab wann im TOS der CodeBereich vom Daten Bereich abgelst wird. Haben Sie die automatische Erkennung abgeschaltet, mssen Sie die Betriebssystemgrenzen selbst eintragen. Bei allen bisher von Atari erschienen Betriebssystemversionen kann die automatische Erkennung eingeschalten bleiben. Haben Sie eine proVME 030 Karte mit dem angepassten TOS von proVME im Atari ST, mssen Sie die automatische Erkennung abschalten` B`` ,>>>> PURE-C <<<< for ATARI-ST Version 1.0 (C)88-90 Borland International &H f&op`B@# 3 " k # ( Ј<.@# $Jy "g<"@(I$k,"Jf"JfB// ?<?<JNAO A<~kRrRAfA6<HCBB`6 !jBJ)gHiRC` "fSI "WSAkHiRCBSQJ)gHiRCHy`$ON0 J"LN ? 9 Dg @N 9 Hg @NN?<LNAH>O$H,I(o"N(rҸ A6 DNG L g g"J KN g Kp\N|*H gB-"L KN" g@"NAp NB+ g,Ap.NH*H g Lp.N: gp. LN."H MNB|m//&HoC KNPO8`HoC KN|XO8JDfp`"KANp\AN*H gB-+gC o*NC o*Nn` o*B0/g<" g"K JN g Kp\N*H g RM"M LN g+g C NN0/OL|NuNpNNuHRo*L/HRHXM&RfpgRB+<"oI ,f"H&B@N?NAO $_Nu/ ??<>NAXO$_Nu/ /?<HNA\O @$_NuH>@NAO $_Nu/ /?< NA\O$_Nu/ ?/?<##pZa,"o2Nu###p[a "o2Nu/ 3 @@A"C B@22220<"<ZNBA0$_Nu  C:\*.*SYMBOL*.SYMSymboldatei zum Packen whlen[1][ |Quelldatei nicht gefunden!][ Abbruch ][1][ |Fehler beim Lesen|aus der Quelldatei!][ Abbruch ][1][ |Die Quelldatei ist|keine Symboldatei!][ Abbruch ][1][ |Zuwenig Speicher frei!][ Abbruch ]*.SMBName der Zieldatei whlen[1][ |Zieldatei konnte nicht|angelegt werden!][ Abbruch ][1][ |Fehler beim Schreiben|auf die Zieldatei!][ Abbruch ][0][ |Symboldatei gepackt! ][ OK ]r  4tn   E`e0/DS@jD@-`+/ r AJa0"_AFpJWF@rg SAkt0QS@k AFQ`"H0O$H&I?|@>>68jx0|g JpCDHoBa XO?| JoBg|-?| `&g|+?| `g | ?| :/DlDE|0 ?| |JDffSFDged?DD?|6`8JEfp?@?@6`& JpCDHoBaXO 5d?EE?|6`SE?EE|1"p?@6@`E|b J0CDHoBa6XO0@E:/DDEE?D6DC"SDmQ?EE`?|0D|b JCDHoBaXO0D0:/D<RFDJDffSF?D6t0JfB ?| RoDC"SDk6Q`.C ?E SEj0?| RF`QC"SDkQto Fn ?B?B`ff ?C?B`?B?C`|? ?| ` t! oMONP/<$X/Bg?<JNAO A aVHz`?<&NN\J.g0Aa>QA aA CaQBgHx$X?<1NA0.HA paBgNA/?< NA\Nu 8g^ M ": ~g AJhga$gk"(.f": g AL|NpL|NurNu"e&br4(Jg*"h*ee 2(4(`2(4(`r4("h$hzABx6BKE810HgbCg 4`Cg2`rNu"HAHpNuH>M : gh f<$HJg :fB*"H J`& : * (z .*@*f JmgaHg@ -.f"E : z* *@JmgJg &E(Mafa gk -.f : gL|/NupL|Nu&m(mB@2-$HxAv4AJD63 C8 J?a^Lg"nBg 2`ذBg0`JgpNu J"EpNu"MA8pNupJf>HM f af"a`-Ipaf oa"o apLQNupJf&HM af iBiapLQNupJfHM jafb(H*I i* ( "i"Q REMOf@ iVEf8E&"$IOf"fB&ANJfJg a L"Ma`TUjpLQNuaakpA afzp n`&f~agr-@B : gX : "ЁrNЁagN-@d-@xp": Һ a z AF : Bpafa : z ֐aapNuapNuapNuaaDkpA a`fag-@Bp0: мк ag-@d @ : a.fa@aaad z \"z P$z 2%Pp0-ph"z >0)-plpNuH>0Q Q "z $AFxz| Sozof$ bonXf hBf eC! fP AJgE02<@f0J. gAJg hBf eC! f`rJgr`"RD f gtRF`t Jf P `t@RE"$I&HrtvRBWgNJgAvr RBWg8`2J. g,J+g& kBf eC!fG KrRBWg`RBBgRBRA0`=DV=EXF=EZ R@ z"SDvЀE-I\-J` 24(CQ24-JxL |NuH0 t4:=BV R@SBv z""HЀE-I\-J` 24(CQ24-JxL NuH? zd"zX nVmTf02) 0"0o@033@`64:(6SCB@2RA$I8*0@<.0`c5D8*RABm2R@CmLNuH><(z*z nVm\f02-ACaoF0;;@`<4:6SCBF2RA&M8E@ J:CPaxo 7D8EPRABm:RFCmL<|NuH zx"z|6:jSC81@ff ձ@Q`ӱ@Q`ѱ@QL8Nu/p\f"HJfA gR`"Wp B( WXNu$HAd :g"@&I(Jag I ).fpNu *g<.g<<߲fJfNuJNuBB:CFp BQBYBAUNu-z,t$z-JA|p $Q4Nu-ih )Щ-@laJnVfNu )"$J. g")$)a z2"h!Qa`HH":g*A"AJig )$ig !i..Bi I").fLNu":g AT"A*g I").fpNupNu!i..Bi/ :Jg I"@N W (g (jg h* h,a^ W h*aT _ (gaHNu#J.fJxg?</:2@ zNNA/:$NuBg/?<=aP=@J@Nu??:/?<BaO Nu///?:?<?aO Nu?:?<>aXNuAZCaA CaT!@`?@AEGIKMOQSUWY[]acegilprtvxz|}~BFHJLNPRTVXZ\^bdfhjmqsuwy{oDC`_nk߇ |&@ ( |n#hIalINuHL@ @gJk fJga <@@?|:8څنHAHB6ڃن:BDHDHE&HCڃنڃن&HCڃنڃن&HC؃؃݆6:8HDHE|ڂنԅن҄kCՂӁS@CՆӆfR@ @e2I\HHzaI`2""]ILxNuaddC 9g 4CG?/p<6>܇׀HAHBHDHE>܇׀?<BCHCHF.HG` XH o#BO+~ <,//Bg?<JNAO A apNB#zHz(?<&NN\:0gA aBgHx,?<1NABgNA 8g~ @t&$:gDCHH BC! C! C(! avabaPtNuA 8`A O` A e`A w/?< NA\NuREMOVEWDOGIOPw:'f:#f z:BBBa:pNupJxgp3xNuA AѐNur`r :$ z`r`r <'AZ:g//Hx  zNO Nu:f2:g,:gJig QFa|VHWGfp3JNu:sgQGaQuaFa~PINu:Og"nfQIPHa|aRaalNuXBRAWDOGJuf>H瀀Nhp /gA.0|}e0<}H3~# /|z L/:Nu3 ~/:QuNuXBRAWDOGJufZH瀀 A P|gX|sg|f@0|e0<H|`0|e0<H| 3~# /|z L/:Nu/:vNu <NsXBRAWDOGJufBH瀀Nhp /gA@0| e0< H| 3~# /|z L/:NuXBRAWDOGJufBH瀀Nhp /gA0|Xe0<XH|@3~# /|z L/:NuXBRAWDOGR X/J9ug AR`. o Ze. Xd(/? J :E zpR2  _8NsR'`AC4a&ACaATCaACaACar!@`ZAjC4a&ACaACaACaACa:g "@ XBRAfg"i`#hNu h /??<NMPNuHAaLNu#n#" P#& TH0CTEG8 < $$$$Ep&&&&Gg`L 3 ~B X <Xr:3 ^A0<ir QNu@|8 8 FNu@|88FNu za3JkZ zJhgak@aVk&zF(zX*k&kv6:SCa0|gM(g"MUMx`a0|gM(p@gA "Na:|g *3P`*:|:p Dg"؃R,4~ Eg"o.4 zo"ASژQR@Sj ІЇg` Aa|g Aa Aaaj4`pL|NugfNuAHp"< QNup0:Aarp0:Aa` :AaPA <+a6k0pzg A"p!a"kaJkASp0rzgA%pPaNuaACaj :Aa>  A`A9p`H0aDGIKv}aRkJGIK v a@k8GIK vXa.k&G]IK~6<akGOIKr6<aL8 Nu L"Mpt2SAԐ YfАBXQѐԀJgabkA Jg@A"KJfC UfCJfA a"  Aak XTQpNu/a /"<a*":*aLdR _0 (a ( f|00%)Nu$HBJBf$HBJBfNuHBЂNuHBЂNu$HBJBf($HBJBf H@B@H@NuB@H@HB0@0H@0H@Nu AH@r2B@tЀӁd҈рӁQF@Nur ` r`r`rS$C(*t < gt0m t0RlYQ<0Nu d'B@;#p0:3 \S@к@:#a6g&#a z :Sr QR@SjpNupNua z`/?<HNA\JNu/?<INA\NuBg/?<NAXNu pWatchdog Driver V1.10q has been installed. No cookie-jar-table found! Cookie-jar-table is full! is already installed. Resident Symbol Driver not found! Watchdog V1.10 - Ergebnisse: ============================ Gemessenes Programm: Unterbrechungsgenauigkeit in Bytes: 0000 Anzahl der Unterbrechungen pro Sekunde: 00000000 Gesamtanzahl der Unterbrechungen: 0000000000 Name der Routine: Sicher: Unsicher1: Unsicher2:============================================================================== Watchdog V1.10} XRStartup-Code Betriebssystem:GEMDOS: AES: VDI: BIOS: XBIOS: unbekannte Funktion%-4<CJQX`gnu| !'/7<CLSYagmu| $/:DO[fq| *5?KS]hs%0;FS_it#-8BLZdlt| (1;HR\er    ) 4 > G Q Z c m w    * 8 B N Z f r  &-5>DMU\fqz#+3;BKRY_gowPterm0CconinCconoutCauxinCauxoutCprnoutCrawioCrawcinCnecinCconwsCconrsCconisDsetdrvCconosCprnosCauxisCauxosMaddaltDgetdrvFsetdtaSuperTgetdateTsetdateTgettimeTsettimeFgetdtaSversionPtermresDfreeDcreateDdeleteDsetpathFcreateFopenFcloseFreadFwriteFdeleteFseekFattribMxallocFdupFforceDgetpathMallocMfreeMshrinkPexecPtermFsfirstFsnextFrenameFdatimeFlock_Nversion_Frlock_Frunlock_Flock_Funlock_Fflush_MFork_Unlock_LockGetmpbBconstatBconinBconoutRwabsSetexcTickcalGetbpbBcostatMediachDrvmapKbshiftInitmousSsbrkPhysbaseLogbaseGetrezSetscreenSetpaletteSetcolorFloprdFlopwrFlopfmtGetdsbMidiwsMfpintIorecRsconfKeytblRandomProtobtFlopverScrdmpCursconfSettimeGettimeBioskeysIkbdwsJdisintJenabintGiaccessOffgibitOngibitXbtimerDosoundSetprtKbdvbaseKbratePrtblkVsyncSupexecPuntaesDMAreadDMAwriteBconmapBlitmodeEsetShiftEgetShiftEsetBankEsetColorEsetPaletteEgetPaletteEsetGrayEsetSmearappl_initappl_readappl_writeappl_findappl_tplayappl_trecordappl_bvsetappl_yieldappl_exitevnt_keybdevnt_buttonevnt_mouseevnt_mesagevnt_timerevnt_multievnt_dclickmenu_barmenu_icheckmenu_ienablemenu_tnormalmenu_textmenu_registermenu_unregistermenu_clickobjc_addobjc_deleteobjc_drawobjc_findobjc_offsetobjc_orderobjc_editobjc_changeform_doform_dialform_alertform_errorform_centerform_keybdform_buttongraf_rubberboxgraf_dragboxgraf_moveboxgraf_growboxgraf_shrinkboxgraf_watchboxgraf_slideboxgraf_handlegraf_mousegraf_mkstatescrp_readscrp_writescrp_clearfsel_inputfsel_exinputwind_createwind_openwind_closewind_deletewind_getwind_setwind_findwind_updatewind_calcwind_newrsrc_loadrsrc_freersrc_gaddrrsrc_saddrrsrc_obfix_wind_apfndshel_readshel_writeshel_getshel_putshel_findshel_envrnshel_rdefshel_wdefxgrf_stepcalcxgrf_2boxv_opnwkv_clswkv_clrwkv_updwkVDI_Escapesv_plinev_pmarkerv_gtextv_fillareav_cellarrayVDI_GDPsvst_heightvst_rotatationvs_colorvsl_typevsl_widthvsl_colorvsm_typevsm_heightvsm_colorvst_fontvst_colorvsf_interiorvsf_stylevsf_colorvq_colorvq_cellarrayvrq_locatatorvrq_valuatorvrq_choicevrq_stringvswr_modevsin_modevql_attrvqm_attrvqf_attrvqt_attrvst_alignmentv_opnvwkv_clsvwkvq_extendv_contfillvsf_perimeterv_getpixelvst_effectvst_pointvsl_endsvro_cpyfmvr_trnfmvsc_formvsf_udpatvsl_udstyvr_recflvqin_modevqt_extendvqt_widthvex_timvv_load_fontv_unload_fontvrt_cpyfmv_show_cv_hide_cvq_mousevex_butvvex_motvvex_curvvq_key_svs_clipvqt_namevqt_font_infovqt_justifiedvst_arbptvqt_advancevqt_devinfov_savecachev_loadcachev_flushcachevst_setsizevst_skewvqt_get_tablevqt_cachesize,R@2 ,l   $, H00LF^X&  Z06H@0HC;0&RBJf8QB" _&Nu3!`0123456789abcdefghijklmnopqrstuvwxyzH &/?<HNA\OJf 9g @ NJ@fp @LNuH0&gPR<e a g!CC "A`rG&S f. < a gj&@Ap !| 'H&#A"P` )d I"Q f`rd ` #@#C"nAL Nuk |`3 `/ oLQ d nf@axJg*`6C g,g"@ f` "/?<INA\OJj`p$_Nugp`/ &y g/ &S?<INA\O`&y g/ &S?<INA\O`&_NuH8$< CG g" c &@ f`(@ ,gb*"Ҩeg ` )H`p"@")Ө )H`>"@ gb" ҩeg`N"(өSHOWSYMB.TOS .C [-K -G] = PCSTART.O SHOWSYMB.C (SHOWSYMB.H) SUBROUT.S PCSTDLIB.LIB PCTOSLIB.LIB f!Sf`f`!Sg"gH?LxH?LxH?LxH?Lx`H?Lx8H?LxH?LxH?LxH?LxH?LxpH?LxHH?Lx H?LH?SfvLx2|HgS@!!Q|gSA!Q`2 4gfSf`f`S"gH?LxHxLxHx(LxHxPLxHxxLxHxLxHxLxHxLxHxLxHx@LxHxhLxHxLxHxLHSfxLx2|HgS@ Q|gSAQ _Nu|A0|@NuBAA0Nu  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~@@@@@@@@@@@@@@@@@@@@@@@@@@@::::::8888888888888888888866666644444444444444444444@< Z Z $N  <dD$4& Z @ @ g  @   @ @ @ s A @            )   7  4 4 4 U4              #            4& 2  "0 - :. i-     P ,  0 *  l   (        *  >( & (   2  L0 -. \.                     # $  % 9 : ; H I  J W X  Y m n o   &?Genauigkeit:Hufigkeit:Ausgabedatei:Copyright(C) 1992Robert FederleInfoStartAbbruchThe Watchdog ist Shareware, d.h. fr die regelmigeBenutzung mu eine Gebhr in Hhe von DM 10,- an denAutor entrichtet werden. Die aktuelle Version kanndurch Zusendung einer Diskette plus Rckumschlagbezogen werden.RaiffeisenbankAugsburg eGBLZ 720 601 84Konto 2547090Robert FederleRungestr. 38900 Augsburg 22(C) 1992 OK Starten Sie nun das Programm, von dem Sie dieMessdaten erhalten wollen. Falls Sie abbrechenwollen, whlen Sie bitte den Knopf . Weiter Abbruch Das Programmwurde beendet.Die Messdaten wurden in die Ausgabedateigeschrieben. OK Die Messdaten werden gerade ermittelt. OK Bisher wurde keine Messung gestartet. Wenn Sieabbrechen wollen, dann whlen Sie bitte jetztden Knopf . Weiter Abbruch 123456789123456789Nur bei Symbolen starten:WATCHDOG.DAT Parameter Bankverbindung Anschrift Statusinformation 12345678.12312345678.123 Statusinformation Statusinformation Statusinformation 8Dl>88Tx 8x D 8< Dp88` p88@p88@p8`8~>}p8p9 pミa1p8p><8`p0p8p80ÁÁppp p8p80 Áxp8 p8p8aÀ8p8`p8p8prÀ8p<@p8p8prcÀ8p`@p8p8prÃÀ8xp8`8x<À8p88x<Cǁ0 p88<<Áp@p88>0ǃp8|>q|@|y>@8 `B!~l `x0 PA p @ 0 DX!D@|B\pA !@& @ (d@@ P@ 0@@@ @   0'80  ` B@DP(!@P8B@@0 GD H0@$,p* pXD`?"`"1*`B B @D@|80NB@ 2@C"wЄh0Dr)@@B!C"d[I('TB `@ @HXڲ@0 0 kann nicht geffnet werden !][ Abbruch ][3][ | Fehler beim Schreiben des | Programmfiles ! ][ Abbruch ]\*.*Dateien lschen*?[2][ Wollen sie die Datei | | wirklich lschen ? ][ Nein | Ja ][2][ Fehler beim lschen der Datei !][ Abbruch][1][ Keine Datei dieses | Names vorhanden !][ Abbruch ];<=>?@ABCD )bacdefSRHGghiJ !"#$%&'(+KPMjklN`,-./012345mnor9:pqAufruftasteInstallation abbrechenShifter syncronisierenAuf interne Syncronisation umschaltenAu******************************************************************** * Assemblerroutinen zum Aufruf der internen Routinen des Treibers: * ******************************************************************** export GetSymbolName export GetSymbolValue export AddSymbolTable export RemoveSymbolTable export RemoveProgram *************************************************************************** * Diese Funktion bergibt dem Treiber einen Symbolwert und erhlt dafr * * vom Treiber einen Zeiger auf den Symbolnamen sowie einen Zeiger auf die * * Struktur, in der das Symbol gefunden wurde. * *************************************************************************** MODULE GetSymbolName move.l A2,-(SP) ; A2 retten move.l A1,-(SP) ; Zeiger auf Puffer fr Symbol-Zeiger retten move.l 8(A0),A0 ; Zeiger auf "GetSymbolName" holen jsr (A0) ; Symbolnamen ermitteln move.l (SP)+,A2 ; Zeiger auf Puffer fr Symbol-Zeiger move.l A0,(A2) ; Symbol-Zeiger speichern move.l 8(SP),A2 ; Zeiger auf Puffer fr Struktur-Zeiger move.l A1,(A2) ; Struktur-Zeiger speichern move.l (SP)+,A2 ; A2 restaurieren rts ENDMOD ******************************************************************************* * Diese Funktion ermittelt zu einem gegebenen Symbolnamen den zugehrigen * * Symbolwert. Wenn ein Programmname angegeben wurde, so wird nur die ent- * * sprechende Struktur durchsucht, andernfalls werden alle Strukturen so lange * * untersucht, bis entweder das Ende erreicht ist oder ein Treffer erfolgte. * ******************************************************************************* MODULE GetSymbolValue move.l A2,-(SP) ; A2 retten move.l 12(A0),A2 ; Zeiger auf "GetSymbolValue" holen move.l A1,A0 ; Zeiger auf Symbolnamen nach A0 move.l 8(SP),A1 ; Zeiger auf Programmnamen nach A1 jsr (A2) ; Symbolwert ermitteln move.l 12(SP),A2 ; Zeiger auf Puffer fr Symbol-Zeiger move.l A0,(A2) ; Symbol-Zeiger speichern move.l 16(SP),A2 ; Zeiger auf Puffer fr Struktur-Zeiger move.l A1,(A2) ; Struktur-Zeiger speichern move.l (SP)+,A2 ; A2 restaurieren rts ENDMOD ******************************************************************************** * Diese Funktion ermglicht das Nachladen einer Symboltabelle fr ein bereits * * im Speicher befindliches Programm. Hierzu wird der Pfadname auf das Programm * * sowie die Adresse der Basepage des Programmes an den Treiber bergeben. * ******************************************************************************** MODULE AddSymbolTable move.l A2,-(SP) ; A2 retten move.l 16(A0),A2 ; Zeiger auf "AddSymbolTable" holen move.l A1,A0 ; Zeiger auf den Pfadnamen nach A0 move.l 8(SP),A1 ; Zeiger auf die Basepage nach A1 jsr (A2) ; Symboltabelle hinzufgen move.l (SP)+,A2 ; A2 restaurieren rts ENDMOD ****************************************************************************** * Diese Funktion entfernt eine Symboltabelle vorzeitig aus dem Speicher. Der * * einzige bergabeparameter mu dabei ein Zeiger auf den Programmnamen sein. * ****************************************************************************** MODULE RemoveSymbolTable move.l 20(A0),A0 ; Zeiger auf "RemoveSymbolTable" holen exg A0,A1 ; Register vertauschen jmp (A1) ; Symboltabelle entfernen ENDMOD `P@ 0" 'p,lкNumкNu :кaA Nu :aA NuHB2,  :aA aLNuH":`H瀀B0, кdaA^ aLNuH瀀 :d`H瀀 :VA> azLNuH瀀 ::A* atLNu :&gpNupNu :g` :gdкc` :఺geк䰺b`A0,@ 0l z e z@NuH@`H@":g* zX"(hg Hz /"pNuJf z>PlLJNuLNuCn"flock@seekrateTT_col15TT_col14TT_col13HpalmodeJdefshiftmdLsshiftmdTT_col12RvblsemTnvblsTT_col11Zcolorptr^screenptTT_col10TT_col9jhdv_initnswv_vecrhdv_bpbvhdv_rwzhdv_boot~hdv_mediachTT_col8contermtrp14retTT_col7themd TT_col6savptr TT_col5con_stateTT_col4sav_contextTT_col3TT_col2TT_col1the_envTT_col0~stacydspbshift_tt`shiftmd dbaselow vcountlowdbaseldbasehend_osexec_osscr_dumpprv_lsto prv_lstprv_auxoprv_auxpun_ptrmemval3_is_prt"_is_aux&_is_con*_is_midi._is_ikbd2_is_rawcon6_is_dev6:_is_dev7>_i_prtB_i_auxF_i_conJ_i_midiN_i_ikbdR_i_rawconV_i_dev6Z_i_dev7^_os_prtb_os_auxf_os_conj_os_midin_os_ikbdr_os_rawconv_os_dev6z_os_dev7~_o_prt_o_aux_o_con_o_midi_o_ikbd_o_rawcon_o_dev6_o_dev7cart_portos_start_oldos_start_newmemconfvcounthivcountmid syncmodelinewid@paletteehscroll@color0Bcolor1Dcolor2Fcolor3Hcolor4Jcolor5Lcolor6Ncolor7Pcolor8Rcolor9Tcolor10Vcolor11Xcolor12Zcolor13\color14^color15diskctlfifo dmamidgiselectgiwritemfpgpipaerddriera ierb ipra iprbisraisrbimraimrbvrtacrtbcrtcdcrtadr!tbdr#tcdr%tddr'scr)ucr+rsr-tsr/udrkeyctlkeybdmidictlmidi!s_units#s_tens%m_units'm_tens)h_units+h_tens-weekday/day_units1day_tens3mon_units5mon_tens7yr_units9yr_tens;cl_mod=cl_test?cl_resetillegalreset_shell_pxconstat>xconin^xcostat~xconout_longframe_p_cookiesremtopremvalidbell_hookkcl_hookxauto_i_6_mfptrap0trap1trap2trap3trap4trap5trap6trap7trap8trap9trap10trap11trap12trap13trap14trap15baudrateFDC_ACSI display_enable$rs232_send_err(rs232_send_empty0rs232_rcv_empty,rs232_rcv_errg ^g |gA^Cpgm``Tp axp `rp `l f$p a^` fpaNp aHp `Bp aM2=h=h=B|e0<B4S@=@|e2<B6SA=AI=A0< À| e0< =@ HH=@H=@ #| e0< |d0<H=@2I=A"I¼=A H=@H=@=|2=| 눀X=@Bn0< NBXQA! <#!aaL|Nu0< a| `ea><(NJ9&f Jyf y!HNuA! L#! 9 daJTgjar9l9l JTk 0, @l 0, @l 0, n9@ 0,l 9@0,ܐl 9@a&Slja TfadSnBTTQ`.Hp0,Hfpnb\n"@0,HfpnbBn$@0,Hfpnb(n&@0, Hfpnbn*@ y!V lD" lD(np*؄ځ&ց, l . $ $M*@`, . $ "a" l6`RJlڃ`Rڄ "al`RJlڃ`Sڄ "al`|(" ( "J$D( &M*D(*؄ځ&ց, l . $ $M*@`, . $ " aB" l2`RJlڃ`Rڄ" a&l`RJlڃ`Sڄ" a lL?Nu/$҂J9!Kf8J9!Og0$҂tfRp$Nu$҂tp$Nu0.|dh0<(NJ\WJ@kXU9n0.an9@9@9n9n 0.a9n l 0.a9n l 8RnaNuHpJ9!Kgp aJ@fpJ9!KgpR@:<DF0<aT@Gd&s& (N8<JfJ+gbJ\WJDkXU80.a9nl C9h9h 9h9h Hh 9@ Hh 9@ a`LxNu/?<&NN\Nu xJgJgg PJfpNu (Nu?<"NNT# @A #!j#!Aa 9!fNuQ!M <_MCHa fP!MQ!NQ!L <_VDOarH@J@g @dP!L @gP!N ESS?59J*=G< ˻FIREWORK Cookie:]xACTIONSALIFETIMHEATYPEAVX AVY AX1AX2AY1AY2 AbbruchAbbruch1Abbruch2Bad~CoLoop CoTest CookieReH setCopyCookH 6ieCopyCookH VieLoopDELXDELYDouble .Draw_LinHPeEGRAVITYELIFETIMHEMAXELIFETIMHEOFFSREND LEPOWERError6GCURXGCURYGetMem ICookieAH bortICookieEH zndeInitCookH pieLoopInstallCH ookieMAXSCRHMAXSCRWMSTEMeldungNoCookie OLD_TRAP &OldScreeH0nRANDOM1 RANDOM2 `RLIFETIMHEROCKETVXHMAXROCKETVXHOFFSRROCKETVYHMAXROCKETVYHOFFSRROCKETXROCKETXOHFFSRROCKETYSCRHSCRWSCRXSCRYSTEScreen$ScreenNoHtOffScreenSiH,zeTEXTTMon4TScreen(TTTT_HochXBIOSYSTRETCH_fw_reseHt_fw_setb_fw_set1_fw_set2_fw_set_H0_fw_set_H`XBRA_fw_set_HzXBRA1_fw_set_HXBRA2_fw_set_HdXBRAl_fw_set_H^abort_hz_200_kbdv_baHse_line_a_longfraHme_v_ikbd8_v_mfp5_v_rez_hHz_v_rez_vHt_v_xbiosbackgrouHndbsslencodelen colordatalenfw_abort fw_act1*fw_act2>fw_act3bfw_act4fw_act5fw_act6fw_actioHnfw_acttiHmefw_atarifw_ball1dfw_ball2fw_ball3$fw_clearH_loopfw_clearHTscreenfw_clearHtscreen2fw_contrH|olfw_corneHrsfw_d_x1fw_d_x2fw_d_x3(fw_d_x4Bfw_do_plHVayfw_drawlHinefw_edisoH nfw_endtiHmefw_exep_H endfw_expl1\fw_expl2fw_expl3fw_expl4fw_expl_H8rfw_expl_HFr1fw_exploH4sionfw_flagsfw_globaHlsfw_ikbd fw_ikbd_H 1fw_ikbd_H oldfw_in_TiH~merfw_init Bfw_init1 fw_is_ofH ffw_lock_H &timerfw_mfp5fw_mfp5_HH0fw_mfp5_H1fw_mfp5_Ht2fw_mfp5_H "actionfw_mfp5_Hendfw_mfp5_Hint0fw_mfp5_Hint1fw_mfp5_Hint2fw_mfp5_Hint3fw_mfp5_Hretfw_mouseH1fw_mouseH15fw_mouseH2fw_mouseH 3fw_mouseH $35fw_mouseH D4fw_mouseH _efw_mouseH _eefw_mouseH _minfw_mouseH j_plusfw_mouseH _xmaxfw_mouseHyfw_nexttHimefw_nextwH&aitfw_nopichfw_pictuHresfw_playFfw_playiH Bngfw_rand1fw_randoHmfw_randoHjm_valfw_regisHterfw_resetfw_resetHFscreenfw_rock1fw_rock22fw_rockeHtfw_set0fw_set_aH`bortfw_setscH.reenfw_show1fw_show2fw_show3 fw_show4jfw_show5fw_show6fw_show7fw_show_H:efw_stackfw_statuHsfw_stop_H dallfw_stop_H tplayfw_stop_H xplay1fw_supexHecfw_time_Hcounterfw_time_Hcounter_maxfw_timeiHncrementfw_timeiHntervallfw_timeoH utfw_tstscHreenfw_very_H Nbadfw_waitfw_wait1 fw_xbios fw_xbiosH _1fw_xbiosH _ffw_zeitsH"cheibefw_zeitsHcheibe_maxinst_spDinvalidMHCHis_instaH lledli10^li20fli25li30li35li40li45li50li51li55"li56>li60li61li65,li66Hli70li71li750li76Lli80li81li856li86Rnew_SP Dno_mem o_ikbd= RANDOM2 */ RANDOM1 = 2500 RANDOM2 = 2400 ;/*** Animationskonstanten ***/ ATYPE = $0000 ALIFETIME = $01F4 AX1 = $03E8 AY1 = $05DC AX2 = $07D0 AY2 = $09C4 AVX = $0BB8 AVY = $0DAC ;/*** Berechnete Konstanten ***/ SCRX = $0FA0 SCRY = $0FA2 SCRW = $0FA4 SCRH = $0FA6 YSTRETCH = $0FA8 ACTIONS = $0FAA * Anzahl Raketen/Explosionen ROCKETY = $0FAC ROCKETX = $0FAE ROCKETXOFFSR = $0FB0 ROCKETVXMAX = $0FB2 ROCKETVXOFFSR = $0FB4 ROCKETVYMAX = $0FB6 ROCKETVYOFFSR = $0FB8 RLIFETIME = $0FBA ELIFETIMEMAX = $0FBC ELIFETIMEOFFSR = $0FBE EPOWER = $0FC0 EGRAVITY = $0FC2 ***************************************** TEXT ***************************************** BRA.W fw_init ***************************************** * void fw_action( int w, int h, int ystretch, int x, int y); * Initialisiert Feuerwerk; Startet die Animation und startet eine Rakete * ystretch <=> (pixelw * 32) / pixelh; fw_action: MOVE.L A7,A0 * MOVEM.L D3-D7/A2-A6,-(A7) * LEA fw_globals,A6 * MOVE.W $0004(A0),SCRX(A6) * MOVE.W $0006(A0),SCRY(A6) * MOVE.W D2,YSTRETCH(A6) * CMP.W #MAXSCRW,D0 * BCS.B fw_act1 * MOVE.W #MAXSCRW,D0 * fw_act1: CLR.L D2 * MOVE.W D0,D2 * SUBQ.W #1,D0 * MOVE.W D0,SCRW(A6) * CMP.W #MAXSCRH,D1 * BCS.B fw_act2 * MOVE.W #MAXSCRH,D1 * fw_act2: CLR.L D3 * MOVE.W D1,D3 * SUBQ.W #1,D1 * MOVE.W D1,SCRH(A6) * LSL.W #5,D1 * MOVE.W D1,ROCKETY(A6) * scrh32 MOVE.W #$000B,D0 * MULU.W D3,D0 * DIVU.W #$0190,D0 * CMP.W #$000B,D0 * BCS.B fw_act3 * MOVE.W #$000B,D0 * fw_act3: MOVE.W D0,EGRAVITY(A6) * MOVE.L D2,D0 * LSL.W #5,D0 * ; MOVE.W D0,D1 * ; LSR.W #3,D0 * D0 = scrw32 * 1/8 ; LSR.W #1,D1 * D1 = scrw32 * 4/8 ; SUB.W D0,D1 * ; MOVE.W D1,ROCKETX(A6) * scrw32 * 3/8 ; MOVE.W D1,ROCKETXOFFSR(A6) * -"- LSR.W #1,D0 * MOVE.W D0,ROCKETXOFFSR(A6) * scrw32 * 1/2 LSR.W #1,D0 * MOVE.W D0,ROCKETX(A6) * scrw32 * 1/4 MOVE.L D3,D0 * DIVU.W #$0023,D0 * CMP.W #$000C,D0 * BCS.B fw_act4 * MOVE.W #$000C,D0 * fw_act4: CMP.W #$0002,D0 * BCC.B fw_act5 * MOVE.W #$0002,D0 * fw_act5: LSL.W #5,D0 * MOVE.W D0,ROCKETVYMAX(A6) * MOVE.W D0,D1 * LSR.W #1,D1 * MOVE.W D1,ROCKETVYOFFSR(A6) * MOVE.L D3,D1 * rocketlifetime = LSL.W #5,D1 * (scrh32 * 5/6) MULU.W #$0005,D1 * / rocketvymax DIVU.W #$0006,D1 * AND.L #$0000FFFF,D1 * DIVU.W D0,D1 * MOVE.W D1,RLIFETIME(A6) * MOVE.L D2,D0 * LSL.W #3,D0 * DIVU.W RLIFETIME(A6),D0 * MOVE.W D0,ROCKETVXMAX(A6) * LSL.W #1,D0 * MOVE.W D0,ROCKETVXOFFSR(A6) * MOVE.W #$0032,ELIFETIMEMAX(A6) * MOVE.W #$001E,ELIFETIMEOFFSR(A6) * MOVE.L D2,D0 * LSL.L #5,D0 * DIVU.W #$0258,D0 * MOVE.W D0,EPOWER(A6) * scrw32/600 CLR.W ACTIONS(A6) * Anzahl Raketen/Explosionen MOVE.W #$00F9,D0 * Geradenspeicher MOVE.L A6,A0 * komplett loeschen fw_act6: CLR.W (A0)+ * DBF.W D0,fw_act6 * LEA fw_register,A0 ADDA.W #15*4,A0 MOVE.L A0,fw_stack BSR.W fw_nexttime * BSR fw_show2 * MOVEM.L (A7)+,D3-D7/A2-A6 * RTS * ***************************************** * * Eigentlicher Funktionsbeginn von fw_show() fw_show1: MOVE.W #RANDOM1,D0 * BSR.W fw_random * CMP.W #RANDOM2,D0 * BCS.B fw_show3 * fw_show2: BSR.W fw_rocket * fw_show3: MOVE.W #$00F9,D7 * MOVE.L A6,A4 * fw_nextwait: TST.B background BNE fw_show_e TST.W fw_control BNE fw_do_play fw_show_e: MOVE.L fw_stack,A0 MOVEM.L D0-D7/A0-A6,-(A0) RTS fw_play: LEA fw_register,A0 MOVEM.L (A0)+,D0-D7/A0-A6 MOVE.L A0,fw_stack fw_do_play: MOVE.L fw_endtime,D0 * CMP.L fw_acttime,D0 * BCC fw_nextwait * BSR fw_nexttime * fw_show4: TST.W (A4) * BEQ.B fw_show7 * BSR fw_drawline * MOVE.W AX1(A4),AX2(A4) * MOVE.W AY1(A4),AY2(A4) * TST.W (A4) * BMI.B fw_show5 * MOVE.W AVX(A4),D0 * ASR.W #3,D0 * SUB.W D0,AVX(A4) * MOVE.W AVY(A4),D0 * ASR.W #3,D0 * SUB.W D0,AVY(A4) * MOVE.W AVY(A4),D0 * SUB.W EGRAVITY(A6),D0 * MOVE.W D0,AVY(A4) * fw_show5: MOVE.W AX1(A4),D0 * ADD.W AVX(A4),D0 * MOVE.W D0,AX1(A4) * MOVE.W AY1(A4),D0 * SUB.W AVY(A4),D0 * MOVE.W D0,AY1(A4) * BSR fw_drawline * SUBQ.W #1,ALIFETIME(A4) * BPL.B fw_show7 * BSR fw_drawline * CMPI.W #-$0001,(A4) * BNE.B fw_show6 * BSR.W fw_explosion * SUBQ.W #1,ACTIONS(A6) * fw_show6: CLR.W (A4) * fw_show7: ADDQ.L #2,A4 * DBF.W D7,fw_show4 * BRA fw_show1 ***************************************** * fw_drawline * ->A6: globale Variablen ->A4: Beschreibung der Geraden fw_drawline: MOVEM.L D0-D7/A0-A5,-(SP) MOVEQ #0,D0 MOVE.W AX1(A4),D0 * LSR.W #5,D0 * BNE fw_d_x1 MOVEQ #1,D0 fw_d_x1: CMP.W SCRW(A6),D0 * BHI ~T17BFE * ADD.W SCRX(A6),D0 * MOVE.L D0,A1 MOVE.W AY1(A4),D0 * LSR.W #5,D0 * BNE fw_d_x2 MOVEQ #1,D0 fw_d_x2: CMP.W SCRH(A6),D0 * BHI ~T17BFE * ADD.W SCRY(A6),D0 * MOVE.L D0,A2 MOVE.W AX2(A4),D0 * LSR.W #5,D0 * BNE fw_d_x3 MOVEQ #1,D0 fw_d_x3: CMP.W SCRW(A6),D0 * BHI ~T17BFE * ADD.W SCRX(A6),D0 * MOVE.L D0,A3 MOVE.W AY2(A4),D0 * LSR.W #5,D0 * BNE fw_d_x4 MOVEQ #1,D0 fw_d_x4: CMP.W SCRH(A6),D0 * BHI ~T17BFE * ADD.W SCRY(A6),D0 * MOVE.L D0,A5 Draw_Line: * Bresenham Line Algorithmus; * nicht schn, dafr selten und * relativ schnell implementiert MOVE.L Screen,A0 MOVE.L A1,D0 ; dx berechnen SUB.L A3,D0 BGE.S li10 ; ist positiv NEG.L D0 ; positiv machen li10: MOVE.L A2,D1 ; dy berechnen SUB.L A5,D1 BGE.S li20 ; ist positiv NEG.L D1 ; positiv machen li20: MOVE.L D1,D4 ; incr2 = dy SUB.L D0,D4 ; - dx BGT sort MOVE.L D4,D5 ; d = dy - dx ADD.L D4,D4 ; incr2 << 1 ADD.L D1,D5 ; d = dy - dx + dy MOVE.L D1,D3 ; incr1 = dy ADD.L D1,D3 ; + dy MOVE.L A3,D6 ; x = x2 CMP.L A1,D6 ; if (x1 > x2) BGE.S li30 ; Not the case MOVE.L A5,D7 ; y = y2 MOVE.L A1,D2 ; xend = x1 MOVE.L A2,D0 MOVEA.L A5,A2 MOVEA.L D0,A5 BRA.S li40 ; branch around next li30: MOVE.L A1,D6 ; x = x1 MOVE.L A2,D7 ; y = y2 MOVE.L A3,D2 ; xend = x1 li40: MOVE.L D6,D0 ; pixel(x, MOVE.L D7,D1 ; y) BSR pixel ; do it MOVE.L A2,D1 ; dy berechnen SUB.L A5,D1 BGE.S li81 ; ist positiv BRA.S li80 ; use inverted loop li50: ADDQ.L #1,D6 ; x++ TST.L D5 ; if (d < 0) BGE.S li60 ; it isn't ADD.L D3,D5 ; d+= incr1 BRA.S li70 ; skip next li60: ADDQ.L #1,D7 ; y++ ADD.L D4,D5 ; d += incr2 li70: MOVE.L D6,D0 ; pixel(x, MOVE.L D7,D1 ; y) BSR pixel ; do it li80: CMP.L D6,D2 ; while (x < xend) BGE.S li50 ; xend >= x BRA ~T17BFE li51: ADDQ.L #1,D6 ; x++ TST.L D5 ; if (d < 0) BGE.S li61 ; it isn't ADD.L D3,D5 ; d+= incr1 BRA.S li71 ; skip next li61: SUBQ.L #1,D7 ; y-- ADD.L D4,D5 ; d += incr2 li71: MOVE.L D6,D0 ; pixel(x, MOVE.L D7,D1 ; y) BSR pixel ; do it li81: CMP.L D6,D2 ; while (x < xend) BGE.S li51 ; xend >= x BRA ~T17BFE sort: MOVE.L D1,D4 ; dx und dy vertauschen MOVE.L D0,D1 MOVE.L D4,D0 MOVE.L A1,D4 ; x1 y1 vertauschen MOVEA.L A2,A1 MOVEA.L D4,A2 MOVE.L A3,D4 ; x2 y2 vertauschen MOVEA.L A5,A3 MOVEA.L D4,A5 li25: MOVE.L D1,D4 ; incr2 = dy SUB.L D0,D4 ; - dx MOVE.L D4,D5 ; d = dy - dx ADD.L D4,D4 ; incr2 << 1 ADD.L D1,D5 ; d = dy - dx + dy MOVE.L D1,D3 ; incr1 = dy ADD.L D1,D3 ; + dy MOVE.L A3,D6 ; x = x2 CMP.L A1,D6 ; if (x1 > x2) BGE.S li35 ; Not the case MOVE.L A5,D7 ; y = y2 MOVE.L A1,D2 ; xend = x1 MOVE.L A2,D0 MOVEA.L A5,A2 MOVEA.L D0,A5 BRA.S li45 ; branch around next li35: MOVE.L A1,D6 ; x = x1 MOVE.L A2,D7 ; y = y2 MOVE.L A3,D2 ; xend = x1 li45: MOVE.L D6,D1 ; pixel(x, MOVE.L D7,D0 ; y) BSR.S pixel ; do it MOVE.L A2,D1 ; dy berechnen SUB.L A5,D1 BGE.S li86 ; ist positiv BRA.S li85 ; use inverted loop li55: ADDQ.L #1,D6 ; x++ TST.L D5 ; if (d < 0) BGE.S li65 ; it isn't ADD.L D3,D5 ; d+= incr1 BRA.S li75 ; skip next li65: ADDQ.L #1,D7 ; y++ ADD.L D4,D5 ; d += incr2 li75: MOVE.L D6,D1 ; pixel(x, MOVE.L D7,D0 ; y) BSR.S pixel ; do it li85: CMP.L D6,D2 ; while (x < xend) BGE.S li55 ; xend >= x BRA ~T17BFE li56: ADDQ.L #1,D6 ; x++ TST.L D5 ; if (d < 0) BGE.S li66 ; it isn't ADD.L D3,D5 ; d+= incr1 BRA.S li76 ; skip next li66: SUBQ.L #1,D7 ; y-- ADD.L D4,D5 ; d += incr2 li76: MOVE.L D6,D1 ; pixel(x, MOVE.L D7,D0 ; y) BSR.S pixel ; do it li86: CMP.L D6,D2 ; while (x < xend) BGE.S li56 ; xend >= x ~T17BFE: MOVEM.L (SP)+,D0-D7/A0-A5 RTS * pixel: MOVE.L D2,-(SP) MOVE.L D1,D2 LSL.L #6,D1 LSL.L #4,D2 ADD.L D2,D1 TST.B TT_Hoch BNE pixel_1280 TST.B color BEQ pixel_640 pixel_color: LSL.L #1,D1 ; 4 Farben Auflsung 640 x 200 MOVE.L D0,D2 LSR.L #2,D2 BCLR #0,D2 BCLR #1,D2 ADD.L D2,D1 ANDI.L #$F,D0 MOVEQ #$F,D2 SUB.L D0,D2 BCLR #3,D2 BNE pixel_col ADDQ.L #1,D1 pixel_col: BCHG D2,0(A0,D1.L) MOVE.L (SP)+,D2 RTS pixel_1280: LSL.L #1,D1 ; Monochrome Auflsung 1280 x 960 pixel_640: MOVE.L D0,D2 ; Monochrome Auflsung 640 x 400 LSR.L #3,D2 pixel_bit: ADD.L D2,D1 ANDI.L #7,D0 MOVEQ #7,D2 SUB.L D0,D2 BCHG D2,0(A0,D1.L) MOVE.L (SP)+,D2 RTS ***************************************** * fw_rocket * Erzeugt Startpunkt und Bewegungsvektor fuer eine Rakete fw_rocket: MOVE.W ACTIONS(A6),D0 * CMP.W #$0007,D0 * BCC.B fw_rock2 * MOVE.W #$00F9,D0 * MOVE.L A6,A4 * fw_rock1: TST.W (A4)+ * DBEQ.W D0,fw_rock1 * TST.W D0 * BMI.B fw_rock2 * SUBQ.L #2,A4 * MOVE.W RLIFETIME(A6),ALIFETIME(A4) * MOVE.W ROCKETXOFFSR(A6),D0 * BSR.W fw_random * ADD.W ROCKETX(A6),D0 * MOVE.W D0,AX1(A4) * MOVE.W D0,AX2(A4) * MOVE.W ROCKETY(A6),AY1(A4) * MOVE.W ROCKETY(A6),AY2(A4) * MOVE.W ROCKETVXOFFSR(A6),D0 * BSR.W fw_random * MOVE.W ROCKETVXMAX(A6),AVX(A4) * SUB.W D0,AVX(A4) * MOVE.W ROCKETVYOFFSR(A6),D0 * BSR.W fw_random * MOVE.W ROCKETVYMAX(A6),AVY(A4) * SUB.W D0,AVY(A4) * MOVE.W #$FFFF,(A4) * ADDQ.W #1,ACTIONS(A6) * BSR.W fw_drawline * fw_rock2: RTS * ***************************************** * fw_explosion * Erzeugt Startpunkte und Bewegungsvektoren fuer alle Punkte * einer Explosion aus dem Endpunkt einer Rakete (in A4). fw_explosion: MOVEM.L D3-D6/A3-A4,-(A7) * fw_expl_r: MOVEQ #$F,D0 * TST.B TT_Hoch BEQ fw_expl_r1 MOVEQ #$D,D0 fw_expl_r1: BSR.W fw_random * TST.W D0 * BNE.B fw_expl1 * MOVEQ #$1F,D0 * TST.B TT_Hoch BEQ fw_expl1 MOVEQ #$E,D0 fw_expl1: ADDQ.W #1,D0 * MULU.W EPOWER(A6),D0 * MOVE.W D0,D5 * MOVE.W D0,D6 * MULU.W YSTRETCH(A6),D6 * ASR.L #5,D6 * NEG.W D6 * MOVE.W #$0005,D0 * BSR.W fw_random * ASL.W #2,D0 * LEA fw_pictures,A3 * MOVE.L $00(A3,D0.W),A3 * MOVE.L A4,D3 * MOVE.L A6,A4 * MOVE.W #$00F9,D4 * fw_expl2: TST.B (A3) * BNE.B fw_expl3 * TST.B $0001(A3) * BEQ.B fw_expl4 * fw_expl3: TST.W (A4)+ * DBEQ.W D4,fw_expl3 * TST.W D4 * BMI.B fw_expl4 * SUBQ.L #2,A4 * MOVE.W #$0001,(A4) * MOVE.W ELIFETIMEOFFSR(A6),D0 * BSR.W fw_random * MOVE.W ELIFETIMEMAX(A6),ALIFETIME(A4) * SUB.W D0,ALIFETIME(A4) * MOVE.L D3,A0 * MOVE.W AX2(A0),AX1(A4) * MOVE.W AY2(A0),AY1(A4) * MOVE.W AX2(A0),AX2(A4) * MOVE.W AY2(A0),AY2(A4) * MOVE.B (A3)+,D0 * EXT.W D0 * MULS.W D5,D0 * ASR.L #5,D0 * ADD.W AVX(A0),D0 * MOVE.W D0,AVX(A4) * MOVE.B (A3)+,D0 * EXT.W D0 * MULS.W D6,D0 * ASR.L #5,D0 * ADD.W AVY(A0),D0 * MOVE.W D0,AVY(A4) * BSR.W fw_drawline * BRA.B fw_expl2 * fw_expl4: MOVEM.L (A7)+,D3-D6/A3-A4 * RTS * ***************************************** * fw_supexec * Fuehrt die Routine A0 im Supervisormode aus fw_supexec: MOVE.L A0,-(A7) * MOVE.W #$26,-(A7) * Supexec TRAP #XBIOS * ADDQ.L #6,A7 * RTS * ***************************************** * search_Cookie * Cookie suchen und in D0 Langwort hinter Cookie liefern search_Cookie: MOVEA.L $05A0.W,A0 TST.L $05A0.W BEQ search_abort TST.L (A0) BEQ search_abort search: CMP.L (A0),D0 BEQ search_ok ADDQ.L #8,A0 TST.L (A0) BNE.S search search_abort: MOVEQ #0,D0 RTS search_ok: MOVE.L 4(A0),D0 RTS ***************************************** * fw_set * Initialisiert die Vektoren fw_set: MOVE.W #34,-(SP) * kbdvbase TRAP #XBIOS ADDQ.L #2,SP MOVE.L D0,_kbdv_base MOVE.L D0,A0 LEA 32(A0),A0 MOVE.L A0,_v_ikbd DC.W $A000 MOVE.L A0,_line_a LEA _fw_set(PC),A0 * BSR fw_supexec * MOVE.L TMon,D0 * wichtig zum Test auf Abbruch fw_set_abort: RTS * ***************************************** * _fw_set * Supervisorroutine von fw_set(). Setzt die Vektoren um. _fw_set: SF MSTE MOVE.L #'_MCH',D0 BSR search_Cookie CMPI.L #$00010010,D0 BNE _fw_set_0 ST MSTE _fw_set_0: SF TT SF STE MOVE.L #'_VDO',D0 * Videoart untersuchen BSR search_Cookie SWAP D0 TST.W D0 BEQ _fw_set1 CMPI.W #3,D0 BCC _fw_set1 ST STE CMPI.W #1,D0 BEQ _fw_set1 ST TT _fw_set1: MOVE.L #'TMon',D0 * TempleMon suchen BSR search_Cookie MOVE.L D0,TMon BEQ _fw_set_abort MOVE.L D0,A3 MOVEQ #4,D0 JSR (A3) MOVE.L A0,Screen MOVE.L A0,TScreen MOVE.L D1,ScreenSize CMPI.L #32768,D1 SCC TT_Hoch MOVEQ #1,D0 * TempleMon Version erfragen JSR (A3) CMPI.W #$0202,D0 * Version 2.02 oder grer? BCS _fw_set_abort * nein, dann Abbruch! _fw_set2: MOVE.W SR,-(A7) * ORI.W #$0700,SR * ST fw_in_Timer ; Timer Interrupt erstmal ; blockieren MOVE.W #-1,fw_control * MOVE.L _hz_200.W,D0 * MOVE.W D0,fw_random_val * LSL.L #1,D0 * MOVE.L D0,fw_acttime * LEA fw_mfp5_1(PC),A0 * LEA fw_mfp5(PC),A1 * MOVE.L _v_mfp5.W,(A0) * MOVE.L A1,_v_mfp5.W * LEA fw_ikbd(PC),A1 * MOVE.L _v_ikbd,A0 BSR _fw_set_XBRA MOVE.L A2,o_ikbd LEA fw_xbios(PC),A1 * LEA _v_xbios.W,A0 BSR _fw_set_XBRA MOVE.L A2,o_xbios MOVE.W (A7)+,SR * _fw_set_abort: RTS * _fw_set_XBRA: MOVEA.L A0,A2 MOVEA.L (A0),A0 _fw_set_XBRAl: CMPI.L #'XBRA',-12(A0) BNE _fw_set_XBRA1 MOVEA.L A0,A2 MOVEA.L -4(A0),A0 BRA _fw_set_XBRAl _fw_set_XBRA1: CMPI.L #'XBRA',-12(A2) BNE _fw_set_XBRA2 MOVE.L -4(A2),-4(A1) MOVE.L A1,-4(A2) RTS _fw_set_XBRA2: MOVE.L (A2),-4(A1) MOVE.L A1,(A2) RTS ***************************************** * fw_reset * Setzt Feuerwerk zurueck fw_reset: LEA _fw_reset(PC),A0 * BSR.W fw_supexec * RTS * ***************************************** * _fw_reset * Supervisorroutine von fw_reset(). Setzt die Vektoren zurueck. _fw_reset: MOVE.W SR,-(A7) * ORI.W #$0700,SR * MOVE.L fw_mfp5_1(PC),_v_mfp5.W * MOVE.L o_ikbd,A0 * MOVE.L fw_ikbd_1(PC),(A0) * MOVE.L o_xbios,A0 * MOVE.L fw_xbios_1(PC),(A0) * MOVE.W (A7)+,SR * RTS * ***************************************** * fw_random * Liefert Zufallzahl <-D0.W im Bereich [0.W ->D0.W[ fw_random: LEA fw_random_val,A0 * TST.W (A0) * BNE.B fw_rand1 * MOVE.W fw_acttime+2,D1 * ASL.L #8,D1 * OR.W fw_acttime+2,D1 * MOVE.W D1,(A0) * fw_rand1: MOVE.W #$7AB7,D1 * MULU.W (A0),D1 * ADDQ.W #1,D1 * MOVE.W D1,(A0) * MULU.W D1,D0 * SWAP.W D0 * RTS * ***************************************** * fw_nexttime fw_nexttime: MOVE.L fw_acttime,D0 * ADD.L fw_timeintervall,D0 * MOVE.L D0,fw_endtime * RTS * ***************************************** * fw_wait fw_wait: MOVE.L fw_endtime,D0 * fw_wait1: CMP.L fw_acttime,D0 * BCC.B fw_wait1 * BRA.B fw_nexttime * ***************************************** * fw_tstscreen fw_tstscreen: LEA $FFFF8200.W,A0 MOVEQ #0,D0 MOVEP.W 1(A0),D0 LSL.L #8,D0 MOVE.B $D(A0),D0 CMP.L TScreen,D0 ; TempleMon Bildschirm sichtbar? RTS ***************************************** * fw_setscreen fw_setscreen: moveq #26,D0 moveq #-1,D1 movea.l TMon,A0 jsr (A0) move.w D0,D1 subq.w #1,D1 sne color rts ***************************************** * fw_resetscreen fw_resetscreen: moveq #26,D0 moveq #1,D1 movea.l TMon,a0 jsr (a0) rts ***************************************** * fw_clearscreen fw_clearscreen: MOVEM.L D0-D7/A0-A1,-(SP) MOVEA.L Screen,A0 MOVEA.L A0,A1 ADDA.L ScreenSize,A1 MOVEQ #-1,D0 TST.B TT BNE fw_clearscreen2 MOVEQ #0,D0 fw_clearscreen2: MOVE.L D0,D1 MOVE.L D0,D2 MOVE.L D0,D3 MOVE.L D0,D4 MOVE.L D0,D5 MOVE.L D0,D6 MOVE.L D0,D7 fw_clear_loop: MOVEM.L D0-D7,-(A1) CMPA.L A0,A1 BHI.S fw_clear_loop MOVEM.L (SP)+,D0-D7/A0-A1 RTS ***************************************** * fw_mfp5 Timer DC.L 'XBRA' DC.L 'FWJH' fw_mfp5_1: DC.L 0 fw_mfp5: MOVE.L D0,-(SP) MOVE.L fw_timeincrement,D0 ADD.L D0,fw_acttime ; stndiger Zhler MOVE.L (SP)+,D0 BTST #3,fw_flags BEQ fw_mfp5_int3 BTST #5,-2(SP) BNE fw_mfp5_end fw_mfp5_int3: BTST #0,fw_flags BEQ fw_mfp5_int0 BTST #4,$FFFFFA0B ; Interrupt Pending RCV Buffer full, ; ST MFP? BNE fw_mfp5_end BTST #4,$FFFFFA0F ; Interrupt In Service RCV Buf. full, ; ST MFP? BNE fw_mfp5_end fw_mfp5_int0: TST.B MSTE BNE fw_mfp5_int1 TST.B TT BEQ fw_mfp5_0 fw_mfp5_int1: BTST.B #1,fw_flags BEQ fw_mfp5_int2 BTST #5,$FFFF8E01 ; SCU: Int. Mask SCC? BEQ fw_mfp5_int2 BTST #5,$FFFF8E03 ; SCU: Int. von SCC? BNE fw_mfp5_end fw_mfp5_int2: TST.B TT BEQ fw_mfp5_0 BTST.B #2,fw_flags BEQ fw_mfp5_0 BTST.B #4,$FFFFFA8B ; Interrupt Pending RCV Buffer full, ; TT MFP? BNE fw_mfp5_end BTST.B #4,$FFFFFA8F ; Interrupt In Service RCV Buf. full, ; TT MFP? fw_mfp5_0: TAS fw_in_Timer ; zur Zeit in Timerroutine? BNE fw_mfp5_end ; ja: dann nix tun MOVE.L SP,save_SP ; SP sichen LEA new_SP,SP ; neuen Stapel einrichten MOVE.L A0,-(SP) ; A0 sichern MOVE.L save_SP,A0 ; alter SP nach A0 MOVE.W D0,-(SP) ; D0 sichern MOVE.W (A0),D0 ; alten SR holen; ; diese Konstruktion stimmt ; immer, egal welcher der drei ; Stacks gerade benutzt wurde TST.W _longframe.W ; RTE Stackframe aufbauen BEQ fw_mfp5_2 CLR.W -(SP) ; Stackframeword des Default ; Exeption Stack Frame Formates fw_mfp5_2: PEA fw_mfp5_ret(PC) ; Pseudoreturnadresse ; in Stackframe BSET #13,D0 ; S Bit in Pseudo SR setzen BCLR #12,D0 ; M Bit ist immer gelscht BCLR #14,D0 ; T0 lschen BCLR #15,D0 ; T1 lschen MOVE.W D0,-(SP) ; Pseudo SR in Stackframe fw_mfp5_end: MOVE.L fw_mfp5_1(PC),-(SP) ; alten MFP5 anspringen RTS fw_mfp5_ret: MOVE.W (SP)+,D0 ; D0 wieder herstellen TST.B fw_status ; was war als letztes los? BNE fw_playing ; zum aktiven Feuerwerk MOVEM.L D0/D1/A0,-(SP) MOVEA.L _line_a,A0 ; auf Maus Position in Ecken MOVEQ #0,D1 MOVE.B fw_corners,D1 ANDI.B #$F,D1 MOVE.W GCURX(A0),D0 BTST #7,fw_corners BEQ fw_mouse1 ADD.W D1,D0 SUBQ.W #1,D0 SUB.W _v_rez_hz(A0),D0 BMI fw_mousey BRA fw_mouse15 fw_mouse1: CMP.W D1,D0 BCC fw_mousey fw_mouse15: MOVE.W GCURY(A0),D0 BTST #6,fw_corners BEQ fw_mouse2 ADD.W D1,D0 SUBQ.W #1,D0 SUB.W _v_rez_vt(A0),D0 BMI fw_mousey BRA fw_mouse_plus fw_mouse2: CMP.W D1,D0 BCS fw_mouse_plus fw_mousey: MOVE.W GCURX(A0),D0 BTST #5,fw_corners BEQ fw_mouse3 ADD.W D1,D0 SUBQ.W #1,D0 SUB.W _v_rez_hz(A0),D0 BMI fw_mouse_e BRA fw_mouse35 fw_mouse3: CMP.W D1,D0 BCC fw_mouse_e fw_mouse35: MOVE.W GCURY(A0),D0 BTST #4,fw_corners BEQ fw_mouse4 ADD.W D1,D0 SUBQ.W #1,D0 SUB.W _v_rez_vt(A0),D0 BMI fw_mouse_e BRA fw_mouse_min fw_mouse4: CMP.W D1,D0 BCS fw_mouse_min BRA fw_mouse_e MOVE.W _v_rez_vt(A0),D0 ; Maus am unteren Ende? SUBQ.W #1,D0 SUBQ.W #DELY,D0 CMP.W GCURY(A0),D0 BCC fw_mouse_e ; nein, dann nix mehr MOVE.W #DELX,D0 CMP.W GCURX(A0),D0 ; Maus am linken Ende? BCS fw_mouse_xmax ; nein, dann zum Test 'rechts' fw_mouse_plus: ST fw_control MOVE.L #200,D0 ; ja: in einer Sekunde Bildschirm CMP.L fw_time_counter,D0 BCC fw_mouse_e MOVE.L D0,fw_time_counter ; abdunkeln BRA fw_mouse_e fw_mouse_xmax: MOVE.W _v_rez_hz(A0),D0 ; Maus am rechten Ende? SUBQ.W #1,D0 SUBQ.W #DELX,D0 CMP.W GCURX(A0),D0 BCC fw_mouse_e fw_mouse_min: ST ScreenNotOff BRA fw_mouse_ee fw_mouse_e: SF ScreenNotOff fw_mouse_ee: MOVEM.L (SP)+,D0/D1/A0 fw_is_off: TST.B ScreenNotOff ; Bildschirm ist auszuschalten? BNE fw_exep_end ; nein, dann kein Timeout SUBQ.L #1,fw_time_counter ; Feuerwerk ist aus: Timeout BNE fw_exep_end ; Zhler kontrollieren fw_timeout: ; Timeoutzhler zurcksetzen MOVE.L fw_time_counter_max,fw_time_counter MOVEM.L D0-D7/A1-A6,-(SP) ; Registersicherung BSR fw_tstscreen ; Bildschirmseite aktiv? BEQ fw_abort ; ja: dann Abbruch ST fw_status ; Feuerwerk einschalten ST fw_control ; Kontrollwort fr Abbruch BSR fw_clearscreen ; Bildschirm lschen BSR fw_setscreen ; Feuerwerk anzeigen MOVE.L TMon,A0 MOVEQ #7,D0 JSR (A0) MOVE.W #639,D0 ; Bildschirmbreite MOVE.W #199,D1 ; und Hhe in Pixel berechnen MOVEQ #16,D2 ; ystretch TST.B color BNE fw_mfp5_action MOVE.W #399,D1 MOVEQ #32,D2 TST.B TT_Hoch BEQ fw_mfp5_action MOVE.W #1279,D0 MOVE.W #959,D1 fw_mfp5_action: CLR.L -(SP) ; zwei Null Parameter! BSR fw_action ; Feuerwerk loslegen ADDQ.L #4,SP ; die zwei Parameter vom Stack ; Zeitscheibe initialisieren MOVE.W fw_zeitscheibe_max,fw_zeitscheibe TST.W fw_control BEQ fw_stop_play1 BRA fw_abort ; und fr dieses Mal Ende! ;---------------------------- Feuerwerk um ein Objekt weiterschalten fw_playing: TST.W fw_control ; Inzwischen Abbruch? BEQ fw_stop_play ; ja: dann Stop SUBQ.W #1,fw_zeitscheibe ; Zeitscheibe kontrollieren BNE fw_exep_end ; wir sind noch nicht dran ; Zeitscheibe neu initialisieren MOVE.W fw_zeitscheibe_max,fw_zeitscheibe MOVEM.L D0-D7/A1-A6,-(SP) ; Arbeitsregister sichern BSR fw_play ; und ein Objekt weiter malen TST.W fw_control ; Inzwischen Abbruch? BNE fw_abort ; nein: normles Ende BRA.S fw_stop_play1 ; ja : dann jetzt Stop fw_stop_play: MOVEM.L D0-D7/A1-A6,-(SP) ; Arbeitsregister sichern fw_stop_play1: ST fw_control BSR fw_resetscreen ; Bildschirmanzeige zurck ; Timeoutzhler zurcksetzen MOVE.L fw_time_counter_max,fw_time_counter SF fw_status ; Status zurcksetzen fw_abort: MOVEM.L (SP)+,D0-D7/A1-A6 ; Arbeitsregister restaurieren fw_exep_end: MOVE.L (SP)+,A0 ; A0 restaurieren MOVE.L save_SP,SP ; Stapelpointer wiederherstellen SF fw_in_Timer ; Timerroutine freigeben RTE ; und ab nach Hause ***************************************** * fw_ikbd Ueberwacht Maus und Tastatur DC.L 'XBRA' DC.L 'FWJH' fw_ikbd_1: DC.L 0 fw_ikbd: CLR.W fw_control ; Feuerwerk Abbruch signalsieren MOVE.L fw_time_counter_max,fw_time_counter fw_ikbd_old: MOVE.L fw_ikbd_1(PC),-(SP) ; zum alten IKBDSYS RTS ***************************************** * fw_xbios Ueberwacht XBIOS Funktion 5 SetScreen DC.L 'XBRA' DC.L 'FWJH' fw_xbios_1: DC.L 0 fw_xbios: MOVE.L A0,-(SP) MOVE.L USP,A0 BTST #5,4(SP) ; Supervisormodus? BEQ fw_xbios_f MOVE.L SP,A0 LEA 6+4(SP),A0 TST.W _longframe.W BEQ fw_xbios_f ADDQ.L #2,A0 fw_xbios_f: CMPI.W #5,(A0) ; Funktionsnummer SetScreen? BNE OLD_TRAP CMPI.L #-1,2(A0) ; ohne physkalische Adresse? BEQ OLD_TRAP ; ja, dann nix mehr MOVE.L 2(A0),OldScreen ; Adresse als die alte merken LEA fw_time_counter,A0 ; Timeoutzhler zurcksetzen MOVE.L fw_time_counter_max,(A0) ST fw_control ; Status zurcksetzen SF fw_status ; den Rest macht TOS OLD_TRAP: MOVE.L (SP)+,A0 MOVE.L fw_xbios_1(PC),-(SP) RTS Double: MOVE.L #'FWJH',D0 ; doppel Installation? BSR search_Cookie TST.L D0 SNE fw_control RTS ***************************************** * fw_init Installation fw_init: MOVE.L 4(A7),A5 ; Basepagepointer holen LEA inst_sp,A7 ; eigenen Stapel setzen MOVE.L $2C(A5),-(SP) ; Envionment freigeben MOVE.W #$49,-(SP) ; Mfree TRAP #1 ADDQ.L #6,SP MOVE.L codelen(A5),D0 ; Speicherplatz berechnen ADDI.L #256,D0 ; base page ADD.L datalen(A5),D0 ADD.L bsslen(A5),D0 MOVE.L D0,-(SP) ; New Size MOVE.L A5,-(SP) ; Basepage CLR.W -(SP) MOVE.W #$4A,-(SP) ; Mshrink TRAP #1 LEA $C(SP),SP LEA Double(PC),A0 BSR fw_supexec TST.B fw_control BNE is_installed LEA InstallCookie(PC),A0 BSR fw_supexec TST.B fw_control BNE no_mem MOVE.W fw_zeitscheibe_max,D0 ; Zhler initialisieren MOVE.W D0,fw_zeitscheibe MOVE.L fw_time_counter_max,D0 MOVE.L D0,fw_time_counter BSR fw_set BNE fw_init1 PEA Abbruch BRA.S output BRA.S output no_mem: PEA Abbruch2 BRA.S output is_installed: PEA Abbruch1 output: MOVE.W #9,-(SP) TRAP #1 ADDQ.L #6,SP MOVE.W #-1,-(SP) MOVE.W #$4C,-(SP) TRAP #1 ADDQ.L #6,SP BRA fw_very_bad ; hierher darf die CPU nicht ; kommen fw_init1: PEA Meldung MOVE.W #9,-(SP) TRAP #1 ADDQ.L #6,SP SF fw_status SF fw_in_Timer ; Timer Routine freigeben MOVE.L codelen(A5),D0 ; Speicherplatz berechnen ADDI.L #256,D0 ; base page ADD.L datalen(A5),D0 ADD.L bsslen(A5),D0 CLR.W -(SP) ; Returncode 0 MOVE.L D0,-(SP) MOVE.W #$31,-(SP) ; Ptermres TRAP #1 ADDQ.L #8,SP fw_lock_timer: TAS fw_in_Timer ; Timer Routine blockieren BEQ fw_lock_timer ; Endlosschleife, falls hier ; ein Busproblem auftaucht BSR fw_reset ; Vektoren zurck PEA Error ; Fehlermeldung ausgeben MOVE.W #9,-(SP) TRAP #1 ADDQ.L #6,SP MOVE.W #-1,-(SP) ; Pterm, Returncode -1 MOVE.W #$4C,-(SP) TRAP #1 ADDQ.L #4,SP fw_very_bad: PEA Bad MOVE.W #9,-(SP) TRAP #1 ADDQ.L #6,SP LEA fw_stop_all(PC),A0 BRA fw_supexec fw_stop_all: STOP #$2700 ; bis zum nchsten Interrupt ; schlafen gehen MOVE.W #-1,-(SP) ; Pterm, nchster Versuch MOVE.W #$4C,-(SP) TRAP #1 ADDQ.L #4,SP BRA.S fw_stop_all ;***************************************************************** valsave: DC.L 0 DC.L 'XBRA' DC.L 'FWJH' vecsave: DC.L 0 CookieReset: CLR.L $5A0.W MOVE.L vecsave(PC),$42A.W MOVE.L valsave(PC),$426.W JMP (A6) ;***************************************************************** InstallCookie: ;(* eigenes Cookie installieren *) MOVEA.L $5A0.W,A0 CMPA.L #0,A0 BEQ ICookieEnde MOVE.L #'TMon',D0 BSR search_Cookie TST.L D0 BEQ ICookieEnde MOVEQ #1,D1 BRA.S CoTest CoLoop: ADDQ.L #1,D1 LEA 8(A0),A0 CoTest: TST.L (A0) BNE.S CoLoop CMP.L 4(A0),D1 BGE CopyCookie MOVE.L 4(A0),D1 CLR.L 8(A0) MOVE.L D1,12(A0) LEA fw_control,A1 MOVE.L A1,4(A0) MOVE.L #'FWJH',(A0)+ BRA ICookieEnde NoCookie: MOVEQ #8*8,D0 BSR GetMem BEQ ICookieAbort MOVE.L D0,A0 MOVE.L A0,$5A0.W MOVE.L #'FWJH',(A0)+ LEA fw_control,A1 MOVE.L A1,(A0)+ CLR.L (A0)+ MOVE.L #8,(A0) MOVE.L $426.W,valsave MOVE.L $42A.W,vecsave LEA CookieReset(PC),A0 MOVE.L A0,$42A.W MOVE.L #$31415926,$426.W BRA ICookieEnde CopyCookie: MOVE.L D1,D2 ASL.L #3,D2 ; mal 8; pro Eintrag 8 Bytes ADD.L D2,D0 ADDI.L #8*8,D0 ; 8 neue Eintrge fr den CookieJar BSR GetMem BEQ ICookieAbort MOVE.L D0,A1 ; A0 zeigt auf MaxCookie MOVE.L $5A0.W,A2 MOVE.L A1,$5A0.W ADDQ.L #8,D1 CopyCookieLoop: MOVE.L (A2)+,(A1)+ MOVE.L (A2)+,(A1)+ CMPA.L A2,A0 BNE.S CopyCookieLoop LEA fw_control,A0 MOVE.L #'FWJH',(A1)+ MOVE.L A0,(A1)+ CLR.L (A1)+ ; MaxCookie anlegen MOVE.L D1,(A1)+ InitCookieLoop: CMPA.L D0,A1 BCC ICookieEnde CLR.L (A1)+ BRA.S InitCookieLoop ICookieEnde: SF fw_control RTS ICookieAbort: ST fw_control RTS ;***************************************************************** GetMem: MOVEM.L D1/D2/A0-A2,-(SP) MOVE.L D0,-(SP) MOVE.W #$48,-(SP) TRAP #1 ADDQ.L #6,SP MOVEM.L (SP)+,D1/D2/A0-A2 TST.L D0 RTS ***************************************** DATA ***************************************** Meldung: DC.B 13,10,27,'p',' FIREWORK ',27,'q' DC.B 13,10,'TempleMon screensaver by Johannes Hill' DC.B 13,10,'Fireworkanimation (c) Kniss Software' DC.B 13,10,0 Abbruch: DC.B 7,13,10,'First install TempleMon!',13,10 DC.B 'FIREWORK installation aborted.',13,10,0 Abbruch1: DC.B 7,13,10,'I do NOT install me twice!',13,10 DC.B 'FIREWORK installation aborted.',13,10,0 Abbruch2: DC.B 7,13,10,'I need more memory!',13,10 DC.B 'FIREWORK installation aborted.',13,10,0 Error: DC.B 7,13,10,'Error during resident termination.',13,10 DC.B 'FIREWORK installation removed.' DC.B 13,10,0 Bad: DC.B 7,13,10,'Worse error during termination.',13,10 DC.B 'FIREWORK can NOT be terminated.' DC.B 13,10,0 EVEN fw_pictures: DC.L fw_atari DC.L fw_ball2 DC.L fw_ball1 DC.L fw_edison DC.L fw_ball3 DC.L fw_nopic fw_atari: DC.W $F0DF,$00DF,$10DF,$000F DC.W $00FF,$00EF,$F0CF,$00CF DC.W $10CF,$F0BF,$00BF,$10BF DC.W $E8EF,$E0FF,$D007,$C00F DC.W $18EF,$3007,$20FF,$400F DC.W $F0B1,$00AF,$10AF,$0000 fw_edison: DC.W $FCD3,$F7D8,$01D8,$0CDB DC.W $18E0,$20E8,$28F8,$2800 DC.W $2808,$2018,$1820,$1028 DC.W $0838,$0840,$0848,$F0F8 DC.W $F801,$01F8,$0800,$10F8 DC.W $F838,$0038,$0050,$F850 DC.W $F048,$F040,$F038,$E828 DC.W $E020,$D818,$D008,$D000 DC.W $D0F8,$D8E8,$E0E0,$ECDB DC.W $D4F0,$24F0,$D410,$2410 DC.W $EC30,$0C30,$E800,$0000 fw_ball1: DC.W $00F1,$12FD,$0F12,$F315 DC.W $E703,$EEE6,$00DE,$26E0 DC.W $31FC,$3221,$1C38,$ED39 DC.W $CC26,$C401,$D4D7,$06C2 DC.W $1FC6,$39D9,$45FB,$4821 DC.W $3548,$0B53,$E756,$A92E DC.W $ABF8,$BCDA,$EAB1,$02AD DC.W $27B3,$44D1,$4EEF,$5C3C DC.W $475D,$EF5C,$C953,$B0ED DC.W $B5C0,$D7A4,$F89A,$2E9B DC.W $50B4,$5FDE,$670D,$5F49 DC.W $0000 fw_ball2: DC.W $02E6,$0F03,$F821,$E708 DC.W $EBEA,$23D4,$3C15,$0747 DC.W $C939,$CCEF,$01BD,$38C5 DC.W $46E8,$4312,$3133,$0A47 DC.W $D53A,$AE1C,$B0EF,$D6CC DC.W $07C3,$2ED9,$45FC,$3029 DC.W $0838,$9C03,$9CBD,$BFA2 DC.W $FBA3,$48BF,$5CE5,$4B10 DC.W $253D,$C13B,$C6EB,$DACC DC.W $0AB4,$30AB,$43BB,$4DF2 DC.W $5338,$2D57,$D342,$C51A DC.W $DAE8,$FBCB,$25D1,$34FC DC.W $1225,$E026,$0000 fw_ball3: DC.W $00DD,$1CFB,$FD2D,$D421 DC.W $DBF2,$EFE7,$F307,$2128 DC.W $3006,$28E4,$0ABD,$DDB6 DC.W $BAD9,$BF11,$E253,$1156 DC.W $3E45,$531C,$53F6,$3FCA DC.W $0FA1,$B335,$DAD2,$F9B4 DC.W $1DB8,$39D8,$4A14,$2A3D DC.W $F747,$CF3C,$AC0C,$B3E1 DC.W $CBBB,$0000 fw_nopic: DC.W $0000 fw_random_val: DC.W $0000 DC.B 'FIREWORK Cookie:' fw_control: DC.W -1 fw_in_Timer: DC.B -1 fw_status: DC.B 0 fw_time_counter_max: DC.L 120*200 fw_zeitscheibe_max: DC.W 1 background: DC.B -1 ScreenNotOff: DC.B 0 fw_timeintervall: DC.L $12 fw_timeincrement: DC.L $2 fw_corners: DC.B %01111000 fw_flags: DC.B 15 ***************************************** BSS ***************************************** fw_globals: DS.B $0FC4 fw_endtime: DS.L 1 fw_acttime: DS.L 1 _kbdv_base: DS.L 1 _line_a: DS.L 1 fw_stack: DS.L 1 fw_register: DS.L 16 invalidMCH: DS.B 1 TT_Hoch: DS.B 1 STE: DS.B 1 MSTE: DS.B 1 TT: DS.B 1 color: DS.B 1 fw_time_counter: DS.L 1 fw_zeitscheibe: DS.W 1 Screen: DS.L 1 TScreen: DS.L 1 ScreenSize: DS.L 1 OldScreen: DS.L 1 TMon: DS.L 1 _v_ikbd: DS.L 1 o_ikbd: DS.L 1 o_xbios: DS.L 1 DS.B $0800 inst_sp: DS.B $0800 new_SP: DS.L 1 save_SP: DS.L 1 ***************************************** END ***************************************** TT's, TempleMon switches the hardware to a standard resolution.Help for 'Colors' Here you can make your personal color definition for the TempleMon screen. On a ST or STE, TempleMon use ST MID resolution on a color monitor and ST HIGH on the SM124 or SM144. On TT machines TempleMon uses ST HIGH resolution (Duochrome) when connected to a VGA monitor or TT HIGH on a TTM 194 or compatible, and you have no possibility to change the colors. If you have started SysMon after TempleMon, you'll recognize inverted colors on TT HIGH. This is made by SysMon throught changing the font to have a unique display.Help on 'Behaviour at MOVE from SR' With this function you can decide whether TempleMon is taking the privilege violation exeption caused by TempleMon 2.02 (c) Johannes Hill & Thomas Tempelmann ====================================================== This is a new release of TempleMon. It can be considered FREEWARE. It does support MultiTOS and with restrictions the FALCON030 hardware. TempleMon release 2.02 will be only available with english textes. The large demand for the symbol support of TempleMon is the reason for the publication of this release. For FALCON030 users: This release of TempleMon does work with the FALCON030 hardware in principal, but there are still problems with the video hardware programming which are not solved yet. I hope the next release will run better on FALCON030 machines. Short instruction in english how to use TempleMon: -------------------------------------------------- TempleMon is a command oriented monitoring program. It works well on all existing Atari machines but will require updates if new machines will be produced. The reason: TempleMon has own drawing routines, which are at the moment not resolution independent. A short OnLine help in english is also included in this archive. It does include the most important informations to use TempleMon, but not all! Normally TempleMon should not be activated. Only if hardware exceptions due to an programm error or via keyboard hot key TempleMon is activated. Then you can type commands on a command line. Generating TempleMon: --------------------- Start TMONINST (take use of it's help windows!) and generate TempleMon with your personal preferences. Take care of how many additional buffered editor lines you are using. Each buffered editor line will require 80 bytes RAM. The default setting of 300 buffered lines will increase the amount of RAM TempleMon needs to work about 24KB! New features of TempleMon: -------------------------- Besides of the MultiTOS and FALCON030 support (which is not completed yet!) TempleMon supports symbols included in the program file of all loadad programs. Therefor the symbol driver is needed. This archive carries an example of the symbol capabilities. The program is called FIREWORK and is included also in source code. If you want to play with the new feature, start the program FIREWORK (it's a background screensaver for systems where TempleMon is installed with firework animation). Then look at the source code. Don't forget to install the command line extension file TMonMODS.EXE. If you want see all loaded symbols of the program FIREWORK, type !#firework:* at the TempleMon command line prompt. If you want to use symbols to reference addresses place the character '#' in front of the symbol everywhere where TempleMon expects addresses. Installing TempleMon and the SYMBOL driver: ------------------------------------------- - The normal installing order in your AUTO folder would be: 1. SYMBOL.PRG 2. SYSTEM.SMB 3. TemplMon.PRG 4. TMonHELP.EXE 5. TMonMODP.EXE 6. TMonMODS.EXE Copy also TMonCONF.CPX into your CPX folder. Symbol is a resident symbol driver for TempleMon. It collects all symbol tables of all started programs. It does also work with MultiTOS but then you have to choose an other starting order! If you have all installed reboot. After booting finished call TempleMon via keyboard (default key CONTROL HELP if you haven't changed with TMONINST) and then press HELP. Now you will see a large display with all available commands. Read all of it. Take use of the sceen buffering if the HELP textes scrolled out of the visible area! Try also the various combinations with CONTROL, SHIFT and HELP to get the display of all help screens. - If you use SYSMON but not MultiTOS you have to change the starting order due a bug which will occur when SYSMON is started after SYMBOL! It's yet not know who is responsible for that bug! This modified order will also work without SYSMON installed. 1. TemplMon.PRG 2. TMonHELP.EXE 3. TMonMODP.EXE 3. SYSMON.PRG 4. SYMBOL.PRG 5. SYSTEM.SMB 6. TMonMODS.PRG (therefoe rename TMonMODS.EXE to TMonMODS.PRG!) Copy also TMonCONF.CPX into your CPX folder. - If your are using MultiTOS you can copy SYMBOL.PRG and TemplMon.PRG into your AUTO folder but they won't work because MultiTOS steals the TRAP #1 and many other exception vectors. Install them into your MiNT.CNF (via exec)! You can leave all modules in your AUTO folder. There is an additional modul, named TMONMODT, which allows you to place a seperate address translation table for TempleMon. Look into the sourcecode if you want to know more details, or contact me (Johannes). In use with the current flat memory model of MultiTOS Release 1.0 you need not to do anything. TempleMon installs an own flat address translation table for 68030 CPU's without any access restrictions for TempleMon. Taking use of the OnLine help and the command line extensions: -------------------------------------------------------------- You must place the file TMonHELP.EXE in same folder as TempleMon if you want to use the OnLine help (this file contains the OnLine help). It is also responsible for the loading of all other command line extension like the TMonMODP (PMMU commands) or the TMonMODS (symbol driver commands). READ THIS READ THIS READ THIS READ THIS READ THIS READ THIS READ THIS READ -------------------------------------------------------------------------- This archive carries the symbol driver version 1.20. Thanks to Robert Federle for his excellent symbol driver. If you want new releases of the symbol driver contact Robert Federle. Building a NMI-Interrupt button for TempleMon: ---------------------------------------------- If you have a TT or MegaSTE machine, you can use the signal /SYSFAIL on the VME connector as an NMI generator. It will activate TempleMon even if the machine disabled all available interrupts (interrupt level 7). To enable this signal, start the program ENABIRQ7.PRG 0\OLxNup` Warning: use TCFLTLIB to get float support for printf. H0O$H&I>68jx`p@c8?|dTMonTMonConfpXL.O*M*M.OLLp8pxpTemplMon Config`$N/ / G7'o N! k0(gp`E3D k0(f8HjHRHjHjHjHjHjHHjR@g62SAgSAgSAgSAg`*x`*x`0R@gU@g| gS@g`z`HStr"Jp UNXO>R@g62JAgUAgSAgVSAg`z*BD`H0R@|b@0;NF:.`8z0-N ,`lHStr"Jp UN~XO>R@g60-N 0J@gpS@gU@gS@g`*x`HmtrCp UN0XO>R@g;G2I U"h|"0-N Uhz`HzBgHmp?Bgr?t?p?r?/ m h(NO`HzBgHmp?Bgr?t?p?r?/ m h(NO`zHmp? m hVN\OpNjHzZHmp?Bgr?t?/ m h0NO`XHzBgHmp?Bgr?t ?p ?r ?/ m h(NO`HzVBgHmp?Bgr?t ?p ?r ?/ m h(NO`Hmp? m hVN\OpNHzHmp?Bgr ?t ?/ m h0NO`Hz6BgHmp?Bgr??t?r?/ m h(NO`THzBgHmp?Bgr?t?p?r?/ m h(NO` Hmp? m hVN\OpNHzHmp?Bgr?t?/ m h0NOHmBg m hVN\O`0rAXWf0(N $hz20-N `HStr"Jp UNXO>R@g6r0-N 0J@gS@gS@gU@g`HmtrC,p UNRXO>R@g;G2I U"h",r0-N | Uh?,?,?,4rB@ UN\O`0rAXWf0(NHStr"Jp UNXO>R@gJ62JAgSAgXSAg\SAg`.*x U1T U1l?,?,?,4rB@ UN\O Uh" UA(C""HoCp UNXO?/?/?/4/rp UN\O`0/ |g|g`vJCg0JEg 0-fNB@OLXO?/?/?/4/rp RN\OPO$_Nu/ QOE7r R h0*N RAC""HoCp RNXO?/?/?/4/rp RN\OPO$_Nu/ E7r R h0*NBp?Bg?*r?t?/ j h$NOr R h,0*NvBp?Bg?*r ?t ?/ j h$NOr R h0*NBBp?Bg?*r?t?/ j h$NO$_NuH8 E7Jg* R"hl QBB@???C6p R h PN\O`" R"hl QB??C6 R h PNXO???C6 R h PN\OA70+ng "P2)R|`r"PiR"P3AR0+pg "P4)|`t"Pi"P3B0+g r"Pij` "P2)j|"P3Aj0+Vg "P4)|`t"Pi"y73BA70+rh`J@g t"Pi` "P4)|"P3B0+rhv`J@g x"Pi` "P8)|"P3D0+r ht`J@g v"Pi` "P6)|"P3C0+r ht`J@g x"Pi` "P8)|"P3D0+r ht`J@g v"Pi*` "P6)*|"P3C*0+Hr`J@g t"PiB` "P4)B|"P3BB0+Hr`J@g v"PiZ` "P6)Z|"P3CZ0+Hr`J@g t"Pir` "P4)r|"P3Br0+Hr`J@g v"Pi` "P6)|"P3C0+Hr`J@g t"Pi` "P4)|"P3BBAB@NTOL Nu/ A7E9p"PiRgBA`2<5Anp"PigBB`4<5Bpp"Pijg2<`BA5Ap y7hgBB`4<5BA7p"Pigr`BAj|jp"Pigr`BAj|Ijp"Pigr`BAj|Ijp"Pigr`BAj|Ijp"Pi*gr`BAj|Ijp"PiBgr`BAj|Ijp"PiZgr`BAj|IIjp"Pirgr`BAj|IIjp"Pigr`BAj|IIjp"Pigr`BAj|IIjpCAVN <"J jN $_Nu/ / A3lC9E9298P498PJB498PJB&Q64|bDB4; N  $,4"9`&"9`"9`"9`"9`"9&Q0P382IP384JP38N&_$_NuH86E9G7I9JAgf RBp Shjgr`B Rp Shgr`B Rp Shgr`B Rp Shgr`B R S"hT QN l0J@gS@gS@g S@g&`2)|9%$9$`")|9l`)|9n`)|9I$9Hp Rg r"Sij` S2(j| S1Ajp Rg t"Si` S4(| S1Bp Rg r"Si` S2(| S1Ap Rg t"Si` S4(| S1Br S"hT Q$lB@NLNu/ $HA: B1|1|1|1| 1| 1@ JB@N$_NuH8$H6t4"ҁ҂82G: I7n`p2H ЀЁ rf202 H|NZ6J@m4H"ҁ҂50HA% 2H ЀЁ42m J0N|2H ЀЁ82DfLNuA7jBA` f0NuRHRAfpNuH8O$o$>BoG67j0jS@7@2+jSA7AI90+f2+g Kr0N pjgDrj 6tj 7BpS7@rk7A0rN BA0N Lr0N ^ K0N pjg j` jA )HB@7@67|7|7j 7j pk7@ rk 7A0N HWHlC Kr0N POr0N B@OLNuH (N R&$x CN F f `f J`PJ fLNu/YOM, IC HzaXO VBXO,_Nu"VS@eQ,NuH8]O$H&I(o&BCx%p JR@g2fJ@g@HNBEg>BA< <b;k`|<*f<`&<0< b ACp a $Wb<gt<.f6<*f4`$<0< b ACp a$Wb4g<߲<Lf g`<hggr@dp|?@0;N`````N`N``````````````````````````NNN````````````````` [0`|A`0A2"LaN@`\ [2"LaL@`JJEj `p0?4 La"TO@`*JEj `0H?4 LaTO@` JEj `p0?4 LaTO@`JEj `p0?4 LaTO@`@HN0\OLxNup24C8jxA aA pJWF@?@gA 2SAktaSb (Q2/@4/(jt@jtBgf 0Ao@@Alx?B?D`hH0$H&IB(v`H0$H&IvJWFCJBj4Cb6xJAkCc8Cf K0a0 JN` 0 JN0 Kap0DL Nu6x0/g f@ JaP0/g@AN0/g@ Ja,0/g@A N0/g g@ Ja0OLNuH0E6`H0E4&H6g8Kg SC JpNQ J0|gNL Nu00000000 ??B@CgJ1kB@BA< C(<-Wg<+fg"1bAg1b @8@@D`JgD@86Nu//O4UB|"bBJ@j < fD@-CtH@B@H@&HC;0(RBH@B@H@fQBO _&Nu3!7`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ JgJgJgJgJg JgJgJfSHggggg ggf @Nu g<g8g4g0g,g(g$g ggggg ggf @NuSeg gb pNuJfpNupNuH0$H|g|$bG>rtgJ3kSJgtJ@f"p <0f:pgb<߶<Xf(pf"`N|f<0fg><߶<Xfg.G3d"3d&HCHCJCfԃԁd` & gSJ"L Nu3"7p` 3!7p& g"`//"4UB|"bZC"t&HCJCf&HC;0NRBH@B@H@f`$?&8BCHC06H@0HC;0&RBJf8QB" _&Nu3!7`0123456789abcdefghijklmnopqrstuvwxyzJg/bg2 4gf!Sf`f`!Sg"gH?LxH?LxH?LxH?Lx`H?Lx8H?LxH?LxH?LxH?LxH?LxpH?LxHH?Lx H?LH?SfvLx2|HgS@!!Q|gSA!Q`2 4gfSf`f`S"gH?LxHxLxHx(LxHxPLxHxxLxHxLxHxLxHxLxHxLxHx@LxHxhLxHxLxHxLHSfxLx2|HgS@ Q|gSAQ _Nu@@@@@@@@@@@@@@@@@@@@@@@@@@@::::::8888888888888888888866666644444444444444444444@  !"#  !"#/ /?< NA\O$_Nu/A:"1|1|!I!o1A"o 1Y1Q"_A000000000A:"ry`A:"1ABh1|r`A:"Bh1|1Arh`A:"Bh1|1Ar`C:"3|3|3AC0""A:"2<`ZC?R2222A:"1|Bh1| r `0A:"BhBhr{`A:"Bh1|1Arz`/ 1@ 0"<7psNBA;0$_Nup `x#=:A:000000p*`T/ #=:3:p,a@"_2"o2Nu/ /pMa*"_2"_2"o2"o2Nu#=:3:pN`/ 3:"@@A"C:$B@22220<"<"NBA;0$_Nu:":@:;=:?: 333333333333333333444!4&3345334Q334e33444!4}33433444433433444!433433433444433433533533444!5335'3355335J335Z335j335}33533533444!     $%&'()-./0126789:;<=>?@ABCD EFG HIJ KLMQRSTUVWXYZ[\]^_`abcdefghijk @           %  @   ccc    ! "    %#! @ !  @A@*@   @ A @+ @@A@,@   !34  5@ !x ! @   ! xxxx        !NO   P` ( @ ( x x x x xxxxxx !lm  %n 9KTMONCONF.RSC55555)5556666(656B6O Main menue TempleMon isnot resident in memory.Betaversion 1.20x from 32.08.91 ABORTOKSAVE Options... Move from SR activates TMonWake up screensaverDiv by 0 activates TMon Colors... RED16GREENBLUE Duochrome 1 White on Black in ST-Hoch Keys... ___Scancode: ___999Shift rightShift leftAlternateControl Call via PMMU... Supervisor ViolationWrite ViolationLimit ViolationInvalid DescriptorError in TablesearchactivTempleMon is not activMain menue Options... Colors... Keys... ST-MID 0 ST-Mid 1 ST-Mid 2 ST-Mid 3 Duochrome 0Duochrome 1Aufruf Intenal syncExtenal syncResync TemplemonVarEndnotBetaversion %x.%02x%cfrom %2x/%02x/%04xVersion %x.%02x?0 ($$"D!!"D$$(0 ??          ? 0'''' 0 0     0@X XX2XbXY[^\X@@@@@@@@@@@@@oxc667*:":?R;<: d^<(ZZZX(j  J$ Jt .  PZ" ~0B "  8 D@@@@@@@@@@@@@@@@@@@@@@@@@@@::::::8888888888888888888866666644444444444444444444@`P``h>>>> PURE-C <<<< for ATARI-ST Version 1.0 (C)88-90 Borland International &H f&op`B@#ht3hx k #h~ Ј<.@#hzJyhxg<"@(I$k,"Jf"JfB// ?<?<JNAO A<~kRrRAfA6<HCBB`6 !jBJ)gHiRC` "fSI "WSAkHiRCBSQJ)gHiRCHy`$ON&0 J"LN? 9g @N 9g @NN?<LNAH (N2&$x CN& f `f J`PJ fLNuHOT6(HNKh H`#..y2ax.y.LJ6gJg /96 9>Nu/ pA&yh&kN#6#*&_Nu#>H`#..y2a.y.LJ:gJg /9: 9>Nu 9hzм#2NuA(p"@ "BygA1B3g3gO"Nu/ Hz?<&NN\O$_Nu 9hg @0<PNHz /<?BA< <b;k`|<*f<`&<0< b ACp a$Wb<gt<.f6<*f4`$<0< b ACp a$Wb4g<߲<Lf g`<hggr@dp|?@0;N`````N`N``````````````````````````NNN````````````````` [0`|A`0A2"LaN@`\ [2"LaL@`JJEj `p0?4 La"TO@`*JEj `0H?4 LaTO@` JEj `p0?4 LaTO@`JEj `p0?4 LaTO@`@HN0\OLxNup24C8jxA aA pJWF@?@gA 2SAktaSb (Q2/@4/(jt@jtBgf 0Ao@@Alx?B?D`hH0$H&IB(v`H0$H&IvJWFCJBj4Cb6xJAkCc8Cf K0a0 JN` 0 JN0 Kap0DL Nu6x0/g f@ JaP0/g@AN0/g@ Ja,0/g@A N0/g g@ Ja0OLNuH0E6`H0E4&H6g8Kg SC JpNQ J0|gNL Nu00000000 ChaAhp `\/ / B@JgB)g@)fJ&Q(i ge"// Ia"_ _J@f&Q`B@"(_&_Nu3 p`#H#H&HJfS#K " I(Ia:"LJ@f`H:$H&I(S&gfJg^+g`)ft,k x$ڹd SfRe`.&// Ka$"J@k,f4(SSfRf& L\Nu3 p`"`&x,A'J'JE8'J & KaxJ@kfRf"`(g4(f>"P | dNu?/a8 _2J@f 0Nu3 pNuC!I!IR!I `H&H(k6+"+g0DtaJk+fZ"S"L Ip gSj`*| // " 0a`"_"JkNgPAp SjH@" 0a<߶<Xfg.G(3d"3d&HCHCJCfԃԁd` & gSJ"L Nu3"p` 3!p& g"`"CB@f ANu//"4UB|"bZC"t&HCJCf&HC;0NRBH@B@H@f`$?&8BCHC06H@0HC;0&RBJf8QB" _&Nu3!`0123456789abcdefghijklmnopqrstuvwxyz/ &yhl g/ &S?<INA\O`&yhp g/ &S?<INA\O`&_NuJg/bg2 4gf!Sf`f`!Sg"gH?LxH?LxH?LxH?Lx`H?Lx8H?LxH?LxH?LxH?LxH?LxpH?LxHH?Lx H?LH?SfvLx2|HgS@!!Q|gSA!Q`2 4gfSf`f`S"gH?LxHxLxHx(LxHxPLxHxxLxHxLxHxLxHxLxHxLxHx@LxHxhLxHxLxHxLHSfxLx2|HgS@ Q|gSAQ _Nu  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~@@@@@@@@@@@@@@@@@@@@@@@@@@@::::::8888888888888888888866666644444444444444444444@  !"#  !"#??<LNA/ /?<;NA\O$_Nu?/?<1NA/ /?< NA\O$_Nu/ ?/?<GNAPO$_Nu/ //H>KNAO$_Nu/ /|?// ?</NATO&?<NA\O?<NNAPO/&?<NA\OJfB@&$_Nup3`/ //?</NATO&?<NA\O?<ONATO/&?<NA\OJfB@&$_Nup3#` There is no help for this command yet available. Short display about build in commands and functions in TempleMon: ----------------------------------------------------------------- & Convert from decimal to hexadecimal notation. ' Insert ASCII character into memory. : Modify memory. ? Calculation of two different numbers. B View, add, delete and change breakpoint. C Copy from memory to memory. D Disassemble. F Fill memory. G (Go) Continue execution at interrupted PC-address. H Hunt in memory for one byte or a chain of bytes. I Display memory as ASCII-characters. L Load from disk. M Modify memory in hexadecimal notation. O Display, set, modify, delete offset variable. P Start, end of protocolling. Q (Quit) Perform PTerm call. R Display and modify register contents. S Save to disk. T Set or reset trace condition. V (Verify) Compare two different memory locations. VI Vector initialising. For extended help for a specific command type the desired command at the commandline and press CONTROL HELP. For a general help about the syntax of addresses as parameters for commands press SHIFT-LEFT CONTROL HELP. To display the editor commands press SHIFT-LEFT SHIFT-RIGHT CONTROL HELP. Editor key functions: ----------------------- SHIFT-LEFT HELP Jump to SysMon (if present and in secure state). ESC Clear whole commandline. SHIFT HOME Clear commandline starting at current cursor position. CONTROL HOME Jump to last screen line. HOME Jump to first screen line. SHIFT CURSOR LEFT Jump to start of commandline. SHIFT CURSOR RIGHT Jump to end of commandline. CURSOR LEFT Move cursor one character left. CURSOR RIGHT Move cursor one character right. DELETE Delete character under cursor. BACKSPACE Delete character left of cursor. CONTROL CURSOR LEFT Jump one word left. CONTROL CURSOR RIGHT Jump one word right. SHIFT CONTROL CURSOR LEFT Jump to beginning of current word. SHIFT CONTROL CURSOR RIGHT Jump to end of current word. INSERT Either toggle between insert and overwrite editor modus or insert a single space (see also HELP of TMonINST about editor modus). CURSOR UP Move cursor one line up. CURSOR DOWN Move cursor one line down. SHIFT CURSOR UP Search in history buffer in upper direction. SHIFT CURSOR DOWN Search in history buffer in lower direction. CONTROL CURSOR UP Move cursor one page up. CONTROL CURSOR DOWN Move cursor one page down. The functionality of SHIFT CURSOR UP/DOWN can be exchanged with these of CONTROL CURSOR UP/DOWN by the install program! SHIFT CONTROL CURSOR UP Jump to start of screen buffer. SHIFT CONTROL CURSOR DOWN Jump to end of screen buffer. UNDO Restore destroyed commandline through searching in the history buffer or through clearing. RETURN or ENTER Parse and execute current commandline. F1 Switch to TempleMon screen. F2 Switch to user screen. While tracing some of the following keys can be used: ------------------------------------------------------- SPACE Trace next instruction. ESC Return to commandline input. O Display off. Blind tracing A Trace all. Same as key O, but the trace bit is set every time before the next instruction. This allows the tracing of traps. R Return from subroutine. Switches tracing off as long as the processor executes a subroutine. F Fast. Executes instructions without tracing but if flow control is returned to TempleMon the trace bit is set automatically. Practical in use with B (see below). C Continued. Same as continued hold down of the key SPACE. 0 Clear trace bit. 1 Set trace bit. D Disassemble the next instruction. Can be repeated more than once. S Skip next instruction. B Set short-lived breakpoint behind last disassembled instruction. In use with D and F practical not to trace loops. The syntax of addresses as parameters of commands: ---------------------------------------------------- In the extended help for each specific command addresses are given in brackets like as address or as end address. Where ever you find brackets in the explanation you have to omit them and write the address or the number without the brackets. - Addresses are normally written in hexadecimal notation. Therefor you need not a leading prefix. Example : 42E - Addresses or numbers can also be typed in decimal notation with the leading &-prefix. Example : &56 - Addresses or numbers can also be given as contents of a processor register. Therefor you need the leading R-prefix. The following list of registers can be used (if your processor owns them): D0-D7, A0-A7, USP, SSP, ISP, MSP, PC, CRP, SRP, URP, VBR, CAAR, FPIAR. Example: RPC. - Addresses or numbers can also be given in the four internal variables O, S, E and L. Behind the address offset variable O a constant offset can be placed, Example: O12. For the other three variables you must use an expression (see below) if you need an offset. - Addresses or numbers can consist of an complex expression with addition or subtraction. Example: RPC-20 - If the symbol driver is present symbols can also be used to formulate an address. Therefor the leading #-prefix is used. Example: #start. If you want to disassemble from the symbol start you just have to type: D #start. Symbols are case sensitive! - It is possible to make indirect addresses - a pointer, or a pointer of a pointer. Therefor use the P-prefix with round brackets. Example: if you want to disassemble the TRAP 1 handler you can type D P(84). & Displays the hexadecimal value of the decimal number . Do not use a leading prefix for the decimal number. ' abc... Inserts max. 32 characters into memory starting with address . Write the characters in ASCII notation without prefixes. : ... Modify memory starting with address by writing the bytes etc. into memory. Memory accesses are perfomed physically as 8 bit wide accesses. :w ... Modify memory starting with address by writing the words etc. into memory. Memory accesses are perfomed physically as 16 bit wide accesses. :l ... Modify memory starting with address by writing the longwords etc. into memory. Memory accesses are perfomed physically as 32 bit wide accesses. ? Calculate the numbers and by using the operation and display the result. Valid operations are: +, -, *, /, O (binary OR), A (binary AND) and E (binary EXOR). The result of the carry is also displayed when calculating an addition or subtraction. The result of the reminder is displayed when calculating a division. Both operands of a multiply and the divisor of a division are only 16 bit wide sized. B Displays all used breakpoints. The number behind the B of the display is the number of the breakpoint (range 0-7). Then follows the address of the breakpoint, the initializa- tion number (this the initialization value of the breakpoint counter) and the breakpoint counter (every time when the CPU reaches the brakpoint address this counter is decreased, but TempleMon interruptes the program flow only if the counter was decimated to zero). B Sets the breakpoint with the number to address . The breakpoint counter und initialization value is set to 1. A breakpoint is assumed to be deleted if it's address is zero. B Like the command above but additionally sets the breakpoint counter and initialization value to . B Like the command above but additionally sets the breakpoint counter to and the initialization number to . B - Deletes all breakpoints (a breakpoint isn't valid any longer when it's address is set to zero). BU Display address of user-trace routine. If it is zero the user won't be called. BU Sets the user-trace routine to address . BU 0 Delete calling of the user-trace routine. C Copy the contents of the memory beginning with address ending with address to address . Memory accesses are performed physically as 8 bit wide accesses. D Disassemble from address to . If the end address is omitted only one single line is displayed. D Disassemble from last used start address. D . Disassemble from last used end address. D: Switch disassembler to the CPU indicated with the number . Valid numbers are : 0=68000, 1=68010, 2=68020, 3=68030 and 4=68040. F 'abc...' Fill memory beginning at address ending at address with charcters abc... . F ... Fill memory beginning at address ending at address with bytes etc. All bytes marked with questionmark are not replaced! G Go. Continious the interrupted program with the instruction where the PC register points to. G Continious the interrupted program with the instruction residing in address . GS Go Sub. Starts the subroutine specified through address . The subroutine must end with the instruction RTS. The contents of the registers might be destroyed. Use the register save (RS) command to save the register set before using the command GS. After return from the subroutine TempleMon resets to PC register to zero and will abuse the command G as long as you haven't restored the PC (e.g. with register restore (RR) command). That will remind you that have to reset a valid register set. G ,, ... G , ... GS , ... Go and set short-lived breakpoints (range 0-7) ... These breakpoints will be initialized with breakpoint counter value 1 (look at command B for meaning of initialization and breakpoint counter). These breakpoints will by deleted at the next entry of TempleMon. It doesn't depend on how TempleMon is entered - through these short lived breakpoints or through any other way. H 'abc...' Hunt for the characters abc... in the memory beginning at address ending at address . H ... Hunt for the chain of bytes ... in the memory beginning at address ending at address . Bytes can be marked with the questionmark to define a joker character. I Display contents of memory as character beginning at address ending at addess .If the end address is omitted only one single line is displayed. I Display contents of memory as character from last used start address. I . Display contents of memory as character from last used end address. L Load file from disk. Therefore memory is allocated with GemDos call Malloc. The loading address is displayed and also stored into the variable S, the end address is stored into the variable E and the file length is stored into variable L. This function uses GemDos calls. Depending on the state of GemDos this command might not be executed due to the fact that GemDos is not reentrant. L , Load file from disk to address without allocating memory. L ,, Load file from disk to memory beginning at address but maximal to address to save the memory above the address . L- Free allocated memory. is the address of the allocated memory returned from command L L ,@ L ,@, L ,@,, Similar to the commands above but with the difference that the file isn't loaded from the beginning of the file but from the distance (in bytes) to the beginning of the file. M Display contents of memory in hexadecimal bytes beginning at address ending at address . Instead of the command M the command MB can be used. MW Display contents of memory in hexadecimal words beginning at address ending at address . ML Display contents of memory in hexadecimal longwords beginning at address ending at address . If no address is specified memory will be display from the last used start address. If a single point is specified as beginning address memory will be displayed from the last used end address. Accesses to memory are performed physically as wide as the widness of the output of the values. That's important for I/O registers! O Sets the address offset variable to the number . O Displays the value of the address offset variable. The address offset variable can be used without any restrictions. It's not touched by command or any result through TempleMon except the command O. P Clears the screen and puts a formfeed character into a protocol file if a protocol file is open. P Opens a protocol file with the name . All display output will then also be put into the protocol file. The filename PRN: will protocol directly to a printer. This function uses GemDos calls. Depending on the state of GemDos this command might not be executed due to the fact that GemDos is not reentrant. PC Close protocol file. PF Put formfeed character into protocol file. Useful for page oriented printers like a laser printer. Q Quit. Executes the GemDos call PTerm(-1), resets all breakpoints and closes the protocol file. Don't use this command to continioue an interrupted program because otherwiese it will be terminated (instead of it use the command G)! R Displays the values of all selected registers. R+ Displays the values of all available registers. R- Displays last entrance message. R ... Displays the values of the named registers etc. R = Sets the register to value . R .= .= ... Sets the bitspecifier of register to value , the bitspecifier of other register to value , etc. R := = ... Sets the bitspecifier of register to value , the bitspecifier of the same register to value , etc. R: Displays register selection. R: ... Defines registers etc. as new register selection. R:+ ... Adds registers etc. to current register selection. R:- ... Removes registers etc. from current register selection. R: Defines all registers of CPU type as new register selection. Valid CPU types: 0=68000, 1=68010, 2=68020, 3=68030 and 4=68040. R:8 Adds all registers of FPU 68881/882 to current register selection. R:B- or R:. Selects short display form for those registers who have some different names for their bitfields. R:B+ or R:* Selects extended display form for those registers who have some different names for their bitfields. RS Saves the contents of all registers. RR Restores the contents of all registers. Requires a former command RS. RW Switches to register selection at display of entrance message. RD Switches to default registers (PC, SR and all SPs) at display of entrance message. S , Saves the contents of the memory from address to address . An existing file will be overwritten. S ,@, Saves the contents of the memory from address to address into an existing file on file position . Both commands are using GemDos calls. Depending on the state of GemDos these commands might not be executed due to the fact that GemDos is not reentrant. T Displays actual trace mode (activ or inactiv). T+ Switches to trace mode and sets the T bit in the saved SR register. T- Resets the trace mode and clears the T bit in the saved SR register. T0 Selects trace on flow control for CPU 68020 or higher on next T+ command. T0+ Selects trace on flow control for CPU 68020 or higher and switches to trace mode. T1 Deselects trace on flow control for CPU 68020 or higher on next T+ command. T1+ Deselects trace on flow control for CPU 68020 or higher and switches to trace mode. V Verifies the contents of the memory beginning with address ending with address by comparing it to memory space beginning with address . Memory accesses are performed physically as 8 bit wide accesses. VI Vector init. Resets all exception vectors to TempleMons routines. Modular modul loader V1.0 for TempleMon (c) 1992 by Johannes HillLoading TempleMon moduls from %s TMONMOD?.EXEModul loader initialisation failed. Installation aborted. ggghr  T*f&,"(L      ,((0 ` J .Df4A6A`JGka,a,4Aj6A` aa6A3@ 3@"ApJVV.?a`?p!aҐpBaҊ0aՌaL8LC 1@/aJa6(C01@ aTa$(C01@"aB:`BJl.ga8LJ@gaR eNuC a`Ӹk aj)Aa&pOaa ,a`ӐC?aӈtaԬaf4Jg0atQ/ ?, Bl C?NaԈaN2aT9_ "_  g`DAdr. Rootpointer = Adr. TC = CaDA  a\Ca2A  aJ`kh Kg Mg aak>>> PURE-C <<<< for ATARI-ST Version 1.0 (C)88-90 Borland International &H f&op`B@#V3Z k #` Ј<.@#\JyZg<"@(I$k,"Jf"JfB// ?<?<JNAO A<~kRrRAfA6<HCBB`6 !jBJ)gHiRC` "fSI "WSAkHiRCBSQJ)gHiRCHy`$ONf0 J"LN? 9g @N 9g @NN(?<LNAH8UO$H(IG/ Ho"KAN]fPOJ@g0gfB@`@C LNp\ LN~ g"K/ p\ LNRH"_N` "K LNpTOLNuOCANvJ@gANJ@jApNXONu?/ B>E,BC`& Tfp C JNJ@f#>` RJRC|mBC`& TfpC JNJ@f#^` RJRC|m$_6NuH8UOIb Jg*???BA???Ci$l j PNO `d?????C l$h RNO `@C l$h RN`*C l$h RN`C l$h RNTOLNu <_VDON] g mr`r3fNu3fNu3FȄpNu/ EȆ0*nfr`BAp+ jN0*pfr`BAp, jN0*fBA`rp- jN$_NuH>O8*HvEN\J@fANpNr yʶlA3pNX` LANZdJ@fApNX` .G0+R@HN#fApNX3NANNIMȆpA.ArB@NABAB@N|f mN&"m KNp\ KN g4"m LNp\ LNB(p\ KN"HRIAN`6N<A|:B@ANC0 LN6"KANC2 LN6N .g "@ N <N*p"nAN*N*ArB@NIʦ W0NZArB@N W0NZArB@N W0NZAr B@N W0NZAr B@N W0NZAr B@N W0NZAr B@N W0NZN=R nHhHhHhHhrB@N>OBg/.rB@N\OI HTHTHT"L nAN2O ?94?92BgBgBgBgBBBApNO p nNNؑB@N,KHnHo HoHnHnBgBgBgBgBgBgBgBgBgBgBgBgp?C M42pN>O.8r@g U fztof02-| |%bA2;NzfL "NX:Db"KA8NJ@g KNn`."KAKNJ@gNN`"KAfNJ@gN`N(`N `HjzC A!NHXO`||HjCSANHXO/fZB.S`RHjCDAENHXO`:HjCgAhNHXO`"HjCiAjNHXO` N`Nb`N`N"`0.ngBA`2<=AnJAfr`BAp+ nN`0.pgBA`2<=ApJAfr`BAp, nN`0.gBA`2<=AJAfBA`rp- nN`^N'`TN)`JN+^`@ApNX`00-| |%b@0;NLlV "dz8NN`N1lA>N> `N1lA?N> `N1lA@N> `~N1lA@N> `hN1lAAN> `RBC`LN1lAAN> `6N1lABN> ` N1lACWN> ` N1lAD*N> `N1lADN> `N1lAE0N> `N1lAFN> `N1lAHFN> `N1lAIpN> `N1lAKN> `pN1lALN> `\N1lANN> `HN1lAQN> `4N1lAUN> ` N1lAW2N> ` ApNXr0- nN` MN4&pDgl2.0.NJ@fX?.4.rp nNTO:k:"L2. nNjJ@f$0W@|b@0;N"xhp(BC`A>pNXU@f .gV".gP"@ N <N*p"nAN*`.N`fNb`^N`VN"`NN `FNN`:"KAiNJ@g, KNnN`"KAfNJ@g`A{pNX2H ЀЁ np n?(?(?(4(0rN\OpDgTHoC2/ n0/ N^XOJ@g4?| ?yʰBoBA0/ nNA r09ʰN"JCfTN=|N]VB@OL|8NuH8OpN,Ef"JANd&H fApNX`"KrpA,NZrgAZpNX` o`,gApNX`IBAp KNJ@fv"Krp LNZrfR Tf>"Kp ANZrfvp C LNJ@fS`*BA  KNJ@foA|pNX`Bx ؃BA  KNJ@gA pNX`"Krp LNZrfR Tfh"KpANZrgAcpNX`pC LNJ@f"SBA  KNJ@g:A&pNX`BA  KNJ@f฼otApNX`"KrpANZrf^ /tcA*pNX`JpCAFN*BA  KNJ@fr"Kr <AȆNZrg ApNX KNB@N,OHLNuH8OpN,Ef"JANd&H fAypNX`6"KrpA,NZrgApNX` o`,gA.pNX`IBAp KNJ@fv"Krp LNZrfR TfR"Kp ANZrf|p C LNJ@fSx ؃BA  KNJ@g"`BA  KNJ@frn`"Krp LNZrfR Tfh"KpANZrgApNX`pC LNJ@f"SBA  KNJ@g:ApNX`BA  KNJ@f฼otA!pNX`"KrpANZrgAppNX` /rcApNX`lBA  KNJ@gApNX`N"Kr <AȆNrf&  KBANJ@f8"KrpANrg AppNX KNB@N,OHLNuH0&HpN,C9 KNd$H fAODE:N<A|:|\B@ANGfCf JN6M,KI,pN6BHkkHo"L JN]fPOJ@f B@N6`J@g`ApNX`C{ NN"L NN6C NN6 NpNXU@f MNJ@gApNX`OL|NuHOArB@NGIKM HSHTHU"N o N2O ????BgBgBBBAB@NO ????BgBgBBBApNO ???4rB@ oN\Op WN6H"ҁҀ Wp ????BgBgBBpBANO ????BgBgBBBApNO O LxNuHOArB@N WhR Whj WhGȆB@+dJ@g|g ` Whj` Wh` WhR<+eg r Wh` W2(| W1AIKMHTHUHVC o N2O ????/BgBgBBBAB@NO ????/BgBgBBBApNO ???4/rB@ oN\Op WN6H"ҁҀ Wp ????/BgBgBBpBANO ????/BgBgBBBApNO | gFp WhjgB+dp Whg|dp WhRg|dp Whg+e`+eO LxNuHOArB@Nr W"hT Qp09Nr W"hl QB@9N r W"h QB@9N IKMG HTHUHV"K o N2O ????BgBgBBBAB@NO ????BgBgBBBApNO ???4rB@ oN\Op WN6H"ҁҀ Wp ????BgBgBBpBANO ????BgBgBBBApNO | gJ W"hT QN3 W"hl QNB|o<` W"h QNBO LxNuHOArB@NGȆ0+ng W2(R|`r WhR W1AR0+pg W4(j|`t Whj W1Bj0+g r Wh` W2(| W1A W"h Q +r NIKMHTHUHVC o N2O ????/BgBgBBBAB@NO ????/BgBgBBBApNO ???4/rB@ oN\Op WN6H"ҁҀ Wp ????/BgBgBBpBANO ????/BgBgBBBApNO | gTp WhRgBA`2<7Anp WhjgBB`4<7Bpp Whg2<`BA7A W"h QN'@O LxNuHOArB@NGIK M HSHTHU"N oN2O ????BgBgBBBAB@NO ????BgBgBBBApNO EȆ???4rB@ oN\Op oN6H"ҁҀ op 4|bB4; N  "DZpHyC A!NXO`bHyCSANXOfFB*S`@HyCDAENpXO`*HyCDAhNZXO`Hy/CDAjNDXO|f"????BgBgBBBApNO ????BgBgBBBApNO OL|NuH $H</ jB@rN r jTB@N r jB@N Af0BAHАAS@5@2BBH…ВBSA5AZ0BBH…АBS@5@LxNuH.OBCpCAN*I Lr B@N T8(hRDphgKp ThgKp ThgK p ThgK p ThZgKp ThrgKpWg T2(|`r Th T1ApWgtA` T4(| T1BMf-.<N.>O.0 TNTOEHRHoHo"C( TN2O ??/?/?/"BgBgBBBAB@NO ??/?/?/"BgBgBBBApNO ??/?/4/"r0 TN\Op TN?@]@|$b@0;N4VxJzdJzdB@R@2@l.`t`8B@S@jB`<`"trp TN?@.2Hr T hB@N 0BAH֐AS@ T1@v`B@R@2@l.`t`8B@S@jB`<`"tr#p" TN?@.2Hr T hTB@N 0BAH֐AS@ T1@Zv `zB@R@2@l.`t`8B@S@jB`<`"tr)p( TN?@.2Hr T hB@N 0BAH֐AS@ T1@v&`B@VBAVIABBVJB:K`B@VBAVIABBVJB:K`B@VBAVIABBVJB:K `dB@VBAVIABBVJB:K `BB@VBAVIABBVJB:K` B@VBAVIABBVJB:K-.<N.>O.0 TN*TOv og of2/H ЀЁ Tp ??/?/?/"BgBgBBpBANO ??/?/?/"BgBgBBBApNO og>B@VBAVIABBVJB:r ThgBB`t>pCAN*OLtNuHOAr B@NGȆ0+g W2(R|`r WhR W1AR0+g t Whj` W4(j| W1Bj/+CG o h PNXO/+CG o h PNXOKMIHUHVHTC o N2O ????/BgBgBBBAB@NO ????/BgBgBBBApNO ???4/rB@ oN\Op WN6H"ҁҀ Wp ????/BgBgBBpBANO ????/BgBgBBBApNO | gNp WhRgBA`2<7AHkCG o(h TNXOHkCG o(h TNXOO LxNuHOAr B@N09g r WhR` W2(R| W1ARBC`Fp2IC2H$Ԃԁ W h PN*2H ЀЁ W"h QB(RC| mIKMG HTHUHV"K o N2O ????BgBgBBBAB@NO ????BgBgBBBApNO ???4rB@ oN\Op WN8H"ҁҀ Wp ????BgBgBBpBANO ????BgBgBBBApNO |gNp WhRg2<`BA3BC`,p4H"ҁ҂ W"h"Q8LAN*RC| mO LxNuHOAr B@NGȆ0+rh`J@g t Wh` W4(| W1B0+rht`J@g p Wh` W0(| W1@2+t ipaJAg r Wh*` W2(*| W1A*0+t hr`J@g p WhB` W0(B| W1@B2+t ipaJAg r WhZ` W2(Z| W1AZ0+Ht`J@g r Wh` W2(| W1A0+Ht`J@g r Wh` W2(| W1A0+Ht`J@g r Wh` W2(| W1A0+Ht`J@g r Wh` W2(| W1A0+Ht`J@g r Wh` W2(| W1AIKMHTHUHVC o N2O ????/BgBgBBBAB@NO ????/BgBgBBBApNO ???4/rB@ oN\Op WN6H"ҁҀ Wp ????/BgBgBBpBANO ????/BgBgBBBApNO |gHp Whgr`BAk|kp Whgr`BAk|Ikp Wh*gr`BAk|Ikp WhBgr`BAk|Ikp WhZgr`BAk|Ikp Whgr`BAk|Ikp Whgr`BAk|IIkp Whgr`BAk|IIkp Whgr`BAk|IIkp Whgr`BAk|IIkO LxNuA"Pp` R29RAHmBhBh!P0(gN=0NuABhBh"P!I!I09"P!INuBAA`4J"p i f INuRA|m |NuHO>?A?B?o40<N,pN6Gʤr0NBA0N"r0NIɄ6,yʬKHmHmHmHUr 0, N>OM`"MAN`S@fp??-4-2-0N]XO<=m0mS@=@2-mSA=A N0NBD`FBB`0lBl lf RBlmB7 A42,0N(yʬRDlmHmHmHmHUr 0, N>O0-f62-f.B@N60<N,p??-4-2-0N]XOOLxNuH8QO yNfAPpNX`EɄ0gr 0* N`xG0*Sl`05@I0*Tl`05@HjRHjTHjPHjNrB@N>OHjHj?*R?*T?*PCA4*N2<pNO?*?*4*2*0<NXO5@ J@lApNX`ȑ0<N,Hyr0* NXO0*Sg02*H 눐Ё2jHN~?r0* NTO0*Tg02*H 눐Ё2jHN~?r 0* NTOAʪ0*Hаjl`0*5@Cʬ0*HѰjl`0*5@2*5A0*5@HWHo??*BgCABB2<B@NO2*H 눐Ё2HN~?r0* NTO2*H 눐Ё2HN~?r0* NTO??/4*RoH…jP2*ToHjN0* NXOHjHjHjHjr0* N>O0<N,4POLNuH>$H0*Nx&H dApNX` Rf r 0+ NIɄ Rf 0+ l f?*4* 2* 0*NPTO Rf>?*?* ?* ?*r0+ NPOHkHkHkHkr0+ N>OKM Rf7k 7k0*|b@0;N&Hh0+ko`B@7@`0+k2kAl`0k7@`0+SkJ@o 0+Sk`B@7@`0+Rk2kAl 0+Rk`0k7@`z0+ko`B@7@`d0+k2kAl`0k7@`D0+SkJ@o 0+Sk`B@7@`&0+Rk2kAl 0+Rk`0k7@0+ kf 2+kg0+ l f?,4,2,0,NTO0+Vg02+H 눐Ё2kHN~?r0+ NTO0+Ug02+H 눐Ё2kHN~?r 0+ NTO Rf7k 0kH2*HN4"<N~2kAl`0k7@2+ @gX4+ l f?,0,2,4,NTO0+Vg02+H 눐Ё2kHN~?r0+ NTO Rf7k0kH2*HN4"<N~2kAl`0k7@2+@gX4+ l f?,0,2,4,NTO0+Ug02+H 눐Ё2kHN~?r 0+ NTO Rf4HkHk?*?* ?* CA4*2<pNO0+Hʪ|o`pVl0+Hʪ|o`p`07@ʪ7@2+Hʬ[Ao4+H…ʬ`tUl"0+Hʬ[@o2+Hʬ`r`27Aʬ7A0+4kBl`0k7@2+4kBl`2k7AHjHj ?+?+?+C A4+B@2<NO?*?* ?* ?*r0+ NPOHkHkHkHkr0+ N>O2,H 눐Ё2HN~?r0, NTO2,H 눐Ё2HN~?r0, NTO0+Vg02+H 눐Ё2kHN~?r0+ NTO0+Ug02+H 눐Ё2kHN~?r 0+ NTO RfHkHk?,R?,T?,PCA4,N2<pNO0+Vg02+H 눐Ё2kHN~?r0+ NTO0+Ug02+H 눐Ё2kHN~?r 0+ NTO0+HʪVl`07@2+HʬUl`27A0+ʪ7@2+ʬ7A0+4kBl`0k7@2+4kBl`2k7AHkHk?+?+BgCABBB@2<NO2+H 눐Ё2HN~?r0+ NTO2+H 눐Ё2HN~?r0+ NTO?+?+0,RkHlP?2,TkHlN?0+ rNPOHkHkHkHkr0+ N>O2+H 눐Ё2HN~?r0+ NTO2+H 눐Ё2HN~?r0+ NTO0+Vg02+H 눐Ё2kHN~?r0+ NTO0+Ug02+H 눐Ё2kHN~?r 0+ NTO Rf0+ N*0+ NBS7| L|Nu/ EɄ?*4*2*0*NTO$_NuN(NAɄBP1|J1| !HJBhBhNu?/ BCE`*0H r2g0( N*2I r0( NRC|m$_6Nu/ A"P09E`ڵeSh0( 2($P!J` e$_Nu/ / $HN*G`|B@| gW@g`(RS0ymNBk0 k'H`@ kRRk0+ym&BkRS0 k'H0ymN,RJfN&_$_NuHelp for 'Save TempleMon' TMonInst carries TempleMon.PRG inside. With this function you can save TempleMon with your choosen setup to disk. As default name TEMPLMON.PRG in the AUTO folder on the boot drive is assumed.Help for 'Read setup' If you have worked with TempleMon above version 2 you can take over your older setup to the new release by reading it.Help for 'Patch TempleMon' If you have a TempleMon version 2 or above you can overwrite it's setup on disk with this function.Help for 'New Folder' With this function you can make a new folder on your disk. Therefor you'll be asked for the folder name.Help for 'Delete file' With this function you can delete files on your disk. Therefor you'll be asked for the name of the file to be deleted. You can use common wildcards.Help for 'Call key' Here you can determine the key combination which activates TempleMon via keyboard. Remind those combinations which are reserved for TOS! They won't activate TempleMon!Help for 'Abort installation' Here you can determine the combination of the keys SHIFT, ALTERNATE and CONTROL, which will be checked at installation of TempleMon for the abort of installation.Help for 'Shifter resynchronisation' This function determines the keycombination which toggles for a short time on the ATARI ST between internal und external synchronisation to resynchronisate the shifter.Help for 'Internal synchronisation' With this key combination you can switch to internal synchronisation on ATARI ST machines.Help for 'External synchronisation' With this key combination you can switch to external synchronisation on ATARI ST machines.Help for 'Edit mode' With this function you can choose between the different edit modes of the TempleMon editor. The choice you can do is general insert mode, where INSERT inserts a blank character, and the toggle mode, where INSERT toggles between inserting and overwriting. For the toggle mode you determine the start mode - either inserting or overwriting.Help for 'Editor memory' Here you can choose the size of the editor memory which determines the number of lines which are kept in memory after they are scrolled out of the visible screen. Additionally you can determine the minimum length of a command line which is placed in to the history buffer. Remember each buffered lines requires 80 bytes additional memory which are caught up at initialization of TempleMon.Help for 'Screen resolution' Here you can insert the parameter of the non standard screen resolution. All resolutions which requires more than 32KB memory are thretten as non standard. With use of AutoSwitch OverScan for ST and TT's, TempleMon switches the hardware to a standard resolution.Help for 'Colors' Here you can make your personal color definition for the TempleMon screen. On a ST or STE, TempleMon use ST MID resolution on a color monitor and ST HIGH on the SM124 or SM144. On TT machines TempleMon uses ST HIGH resolution (Duochrome) when connected to a VGA monitor or TT HIGH on a TTM 194 or compatible, and you have no possibility to change the colors. If you have started SysMon after TempleMon, you'll recognize inverted colors on TT HIGH. This is made by SysMon throught changing the font to have a unique display.Help on 'Behaviour at MOVE from SR' With this function you can decide whether TempleMon is taking the privilege violation exeption caused by a MOVE from SR, or if it is calling the TOS exeption routine. This only appears on 68010, 68020, 68030 and 68040 CPU's.Help for 'Behaviour on Division by Zero' With this function you can decide whether TempleMon is taking the division by zero exeption or calling TOS. Many applications do not recognize division by zero exeptions even it is a bug in those applications while TOS returns immediatly without bombs. So far those applications would be interrupted every time on this exeption by TempleMon which can be very nervous. Remeber: an application which causes an division by zero exeption is buggy.Help for 'Wake up screensavers' A screensaved display can be a problem when an exeption occurs. In that case, TempleMon will switch to it's own screen and update the colors. Now at the first press of a key in TempleMon the saver will assume to end screensaving and restore screen or colors of the TempleMon screen to the GEM screen. When leaving TempleMon's command line prompt TempleMon will restore the screen and colors of the saved screen, but the screensaver will assume that the GEM screen is already restored. The result is a ugly saved screen instead of the GEM screen. TempleMon can handle this situation by making the saver believe a key was pressed before it switches to the TempleMon screen. Therefor it calls the IKBDSYS vector where most screensavers recognize a pressed key. You should use this option with maccel for instance.Help for 'OS start/end' Here you can suspend the automatic search of the OS start and end by TempleMon. The knowledge of the OS start and end is required by TempleMon for the desition whether a TRAP vector points to the OS or not. If any of the 15 TRAPs points to the OS TempleMon hugs this vector, otherwise not. The search of the OS start is easy and legal possible, but the end is not possibly to find with legal methods. The method TempleMon uses is to find out where the GEM magic points to and assuming this address at the end of the OS instruction code - this magic points in ATARI TOS versions to a variable inside the data segment of TOS, which resides behind the instruction segment of TOS. If you have a non ATARI TOS you have to test if this method comes along. At older proVME030 TOS it definitivly works not. In that case, you'll give the start and end address directly to TempleMon and suspend the automatic detection by TempleMon.Help for 'Keyboard vector' With this function you can suspend or activate the test of the condition of the keyboard. Therefor TempleMon tries to detach blocked interrupts in the MFP and tests the IKBDSYS and MFP interrupt vector if they point to TempleMon or a list of known owners via XBRA method. Any miscondition will be tried to be solved but this will not help in every case.Help for'PMMU generated BUS erros' The PMMU can generate BUS errors. TempleMon examines the cause of the BUS error to find out, if the PMMU generated this BUS error and which was the reason. For each of those reasons you can determine whether TempleMon catches the exception and is activated or if he passes it through the old owner of the BUS error vector, normally TOS. You can mark a bypass with a cross for each PMMU caused exception. This decision of a bypass depends on whether TempleMon was activ (you can see his display) or not. Normally you should pass all exceptions generated by the PMMU pass to MultiTOS when TempleMon is not activ and pass none to it when TempleMon is activ, but to check some strange situations, it might be useful to change TempleMons default reaction to PMMU BUS errors.H0E< R6(p0("Ё"@&QBD` 0 KNLRDDnA"Rp0)" Ё pL Nu/ $HAB1|1|1|1| 1| 1@ JB@N$_NuH8$H6t4"ҁ҂82GIv`p2H ЀЁ rf202 H|NZ6J@m4H"ҁ҂50HA% 2H ЀЁ42m J0N|2H ЀЁ82DfLNuArBA` f0NuRHRAfpNuH8O$o$>BoG67j0jS@7@2+jSA7AI0+f2+g Kr0NGpjgDrj 6tj 7BpS7@rk7A0rNG?A6BSC?C0oS@?@A2/09ʤNEPO6NuH (ND&$x CND f `f J`PJ fLNuH>O(H?A/I&o@26t@gr`BA?At@gr`BA?At@gr`BA>0/|?@$ g8BC?l0/H"ҁҀ?t?| E M 2/H ЀЁ<42H ЀЁ44||fp4H"ҁ҂t f~*t MN9(`SDJDm 5 @fJDmDA@N8rb4RD5@H|FfA@N8Jc~F`RD5@HBVJGf(0/f2f0/N>?0N>°_f`|FfHVCZA@N'XO0_@gv|?g|g |g~`0/g2g A62&`|Yg|Zf*0/N>BJ@g0@AD20|4/Af6/`X0@AD60`J0gF2gA62:`:0@A60`,0/g&2g"A62`0/f2f4/f 8gD62@JCgof o0 6p`L2H ЀЁ<4of<2/H ЀЁ?t2/ H ЀЁ?t o fB@OL|Nu?/0Po`02)ho`2(4i6hCl`4h6)i8(hDl`6(h23A8@3D0C3HBlClx`BD0(6NuH8]O$H&I(o&BCx%p JR@g|fJ@g@HNBEgvBA< <b;k`|<*f<`&<0< b ACp a6$Wb<gt<.f6<*f4`$<0< b ACp a6Z$Wb4g<߲<Lf g`<hggr@d|?@0;N>nBXr [0`|A`0A2"La#@`\ [2"La#@`JJEj `p0?4 La"ZTO@`*JEj `0H?4 La!TO@` JEj `p0?4 La"(TO@`JEj `p0?4 La"HTO@`A 2"La@`A 2"La@`A 2"La&@`|@HN0\OLxNup` Warning: use TCFLTLIB to get float support for printf. H0O$H&I>68jx`p@c8?|0|g" J0R@CDHoBaXO0?| JoBg|-?| `&g|+?| `g | ?| ?| ?D62XAXAt0gJf$B RoDJDf f2SA`.C"SDQ` X JDf fSA`C"SDmQto An ?B?B`ff ?C?B`?C?BC8?|@gE`e0/DS@jD@-`+/ r AJa0"_AFpJWF@rg SAkt0QS@k AFQ`"H0O$H&I?|@>>68jx0|g JpCDHoBa XO?| JoBg|-?| `&g|+?| `g | ?| :/DlDE|0 ?| |JDffSFDged?DD?|6`8JEfp?@?@6`& JpCDHoBaXO 5d?EE?|6`SE?EE|1"p?@6@`E|b J0CDHoBa6XO0@E:/DDEE?D6DC"SDmQ?EE`?|0D|b JCDHoBaXO0D0:/D<RFDJDffSF?D6t0JfB ?| RoDC"SDk6Q`.C ?E SEj0?| RF`QC"SDkQto Fn ?B?B`ff ?C?B`?B?C`|? ?| x?D ?D?D6|`H0O$H&I?|@>>68k |kx`x0|gR JCNaANJfJfJPg|ANCXaAXVH?a_ JCDHoB|k4@k0DR@2|kAa~XOD 0VJDjLBD`F0a\XO 0VSD`BDBoBBoD` 6x0/gf@ Ka^0/ g@AN0/g@ Ka80/ g@A NJof Jo6fgp@A .N0/g@ Ka0/6g@A"N0/@g@A8N0/gg@ Ka0ObL Nu0<HS@rJrf?Av8z0| ~E0NJ@kFRG2kNSGESDeN<+g<-f SDeNfSDeN`SDeNb QSDeNc<.f0`<.f&SDeNbQSDelNc<߲<EfHSDePN<+g<-fSDeMHGGCA 0jD@aAC a `arAC a " P?b Cla SG`A6"$RGJDoGn| Fo| o00CC?SFpԂӁ@Q` pԂӁ@*(6ԂӁ@ԂӁ@ԅӄC<0QBJjR! :fg0`1RPOpAL@Nu"oHQaXONuH|~trp  g  g -Wg +f 0m 9oX .ghg If Nf Ffp`p o0 ]H` 0m 9n @la`RF` .f 0m 9n @laSF`G EfJDg"LUR@JDfJEj&zRӅdR@`JfJf BYBBTO`.a2""//?A0aNC o$aO JgPLNuԂӁ@*(6ԂӁ@ԂӁ@ԅӄCvG0ԇӃCNu o?jD@ @c0<?>@2AA@AC,0 ]HOgCbC Oda8JGf>J_k BNu?@@@@ @@P@$@@ @4ɿ@iŭ+p@xIϦAGɀCQ~ގFMHvuu Z;]=]u%`R log?֛w9?H?bf?޴@DLd>@8<HDBD/DBAavIaaZKxA !%!%1%xavKMaNMQC a^Ca6OL`NuA"o4CG?/p<6>܇׀HAHBHDHE>܇׀?<BCHCHF.HG܇׀.HG܇׀.HG܇׀.HG܇׀.HGև.HGևр?<6HCHFp>܇׀>܇׀>և(".Jkއ9sgJg j c a0JfJg9sg9sfJkt`Jk`h/"HA.HGpށ@H@HG0BGHBHE2tށـׂ݂p"Jk އل݆׃SANu b c0a b f$JfgJk؄݆׃SAR׀fRA` Jk؄݆׃SA Ae "$Hzan` ҁQ !1LNudivCAr/ / ? AaA0 ]HNu4CG?bfb RGd6|/|$F,HF.h.BGHG҇~`"BAHA,HFpHAHB024 6<?~Gj SWԅӄGd, Q,HF.h.BGHG҇~HA`"BAHB02BB6|FjSG҄FdHG>HG9sf,⎜bHFRFkHz``, c9sg~9sfJkb`lJkf`X//&HC0BCHCH@B@4rЂׁ"$dSGԅӄNu9sf╚kfg` JfJg`,HFRdR`,HF  @c"$HzaB` ЀP !1L Nu5|$Ap" EP jW5|H j W$$$ jW5B j W$$$ jW5|h j Wf !R!R$ANu5|$Ap" EP jW5B j W$$$ jW5|h j Wf"#R#R$ANu$(0r@Ag8"(jNufJf @DNuH@aJ@jR@fЀPDNu"(fJfJ@kDNuDNuDNu2""]INur2` r`r2""]INuap` ap`apHQ//aP.Nu6C`6*)<<HFFg6()kfJfU`SCڅلj0"$HFFgJjNuf4Jf0]Nu()fJfY`JfJf  Nu\HNuJkS@ԂӁjNu0<rtv`H@Frtv`<<6(FgF Cpn @b:H@@9sg 9sg 69r[Ck S@rt`rtv` @n0H@@rtv9sgv9sgl89r\Dj`t`PvxR@fЀP9sfg,` 9sg 9sgJ@k`J@j JgRdR !1.Nuv]H//?HW//0aPO0 ]H.Nu/ / o\H// ? o \H\I//!?!// ? //*?As2DAZA g&C^H 1g"@?BPANAr0J@f0 @c 3"`3!` o4C0 O$ _"_NuakvifflH@B@NuD@R@ @or`$ᩳ "@B@`\ <9sgz9sf9sghJf$ g`249rZBkP`P <`Hp`B"B@@?o @bHH@B@9sfgJf $ fgRJPj@NuaHfpNu@|@k <`D@ @cpNu JPjDNuA(p"@ "ByrA1B3r3tO"Nu/ Hz?<&NN\O$_Nu@TXJ? ?ry@ڢ!h5?ڢ!h5?ڢ!h5?@@NaN-INF+INF(C)Xmath by d'ART/YOM, IC Hza6XO VBXO,_Nu"VS@eQ,NuH Ov Jj|-?|D`g|+?|`g| ?|`~?|`vH Ov ?|`dH Ovf?|`L|0f|x?|`2|X?|`$H Ovf?|` |0?|$H>C8jxA aRG4`kI4`b,ֆSDgNRG4`b`NSGB@$2LNup`NSGp`H8vBG8ghzB$H&IINJ@kbRG4`k<0fSDgBNRG<߰<Xf SDg.NRGIV4`b,ֆSDgNRG4`b`NSGB@$2LNuP`NSGp`H8vBE8gjB$H&IINJ@kdRE4`k<-Wg<+fNREI4`< b<ֆSDg NRE4`< b փ"փփց`NSE$JgD2B@LNup`NSEp`H<8z$H&II|NJ@knREJ4k| gNSEJj$JDgJNREJ@kB| gJ4jNSE`0SDf`**o JDg NREJ@k| gJ4jNSE`SDfB2QL<8NuP`H06g(8$H&IJCjvJj NJ@kSCf` NJ@kSCfQC2L NuP`H<6g^8BE$H&I(o$Jj$NJ@j P`FNJ@k> F4Pg>SCf`**o NJ@j P`NJ@k F4PgSCfBQC2L<8NuBN`CaAp `r/ / B@JgB)g@)fJ&Q(i ge"// Ia"_ _J@f&Q`B@"(_&_Nu3 p`#H#H&HJfS#K " I(Ia"LJ@f`H:$H&I(S&gfJg^+g`)ft,k x$ڹd SfRe`.&// Kav$"J@k,f4(SSfRf& L\Nu3 p`"`&x,A'J'JE8'J & Ka J@kfRf"`H:$H&I(Sx&gZJgV+gX,k$dSfRe`6+g// Ka$"J@f.// Ka.$"J@kf(S,k`& L\Nu3 p`H&H&8|f֓b e&`8+g+g2 Ka8J@f:"40+ajJk* k&'HpLNu3 `3p`p/alXONu(g4(f>"P | dNu?/a _2J@f 0Nu3 pNuC!I!IR!I `H&H(o Ia6kl g La` a,Jf\(H <a )HgN0@0;` Ka|gB9@{0dQ l)H()H C# LLNup`p`p 3 g la Z`a)b*a)b* YOCBgg Ar`THWf0XONup`rwar+w+a+rbwbabr+b rb+ w+b wb+ a+b ab+ Ap`Ar(WVNu?/ Aa4Aa*G6<`Gp+g Ka Q&_6Nu/ &H+g+g8aJ@f80+aJ@k,+g ka B@7@? Ka0&_Nu3 p`H&H(k L0+"+ aJkRgF+f, L"St gSj`"HSISSk ögSjJg&"'LBLNup`p`H&H(k6+"+g0Dta$Jk+fZ"S"L Ip gSj`*| // " 0a"_"JkNgPAp SjH@" 0aLJk*g,`0" La|Jkg&'LB@LNup`p`H06&Hp Cgp@CfFpC?/ ?<=NAPOJk&8jaTpCgF?<?p/?<BNAO Jj.`Br߲fNAXONuaj3p`ް|c/ ??<>NAXO$_JkpNua@3pNu/ /?<ANA\OJkp$_Nua3p$_Nu/ J@f//aJ@fBg`//??<?NAO $_JkNu  _`a3pNuH&Hx&SgkJ94kvf~a<g&< g<<gP< g< e޸dRa`JgSSKpap apa`Rp a4p a`bJg^4`TxB94`Jx B94`4p a2 L$_NuBx`xB94`x B94`?<NATONu??<NAXONuH@??<@NAO $_JkfNua3pNu3Nu/ |b2@?? /?<BNAO JjfSBg jX?<? p/?<BNAO Jk$`X?<? p/?<BNAO JkzЁ"kt?<? p/?<BNAO Jk\$`?<? p/?<BNAO Jk@$Ҁk: $k2HzN <e/`/? ?<@NAO Jkb $_Nua3p$_Nu0<`H 6?<?B?<BNAO (Bg?/<?<BNAO *Bg?/?<BNAO JWHL8NuHR C6$Q`"J$R" gf"Aa Ja$_NuD@| |"b;NupNu   ??B@C gJ1kB@BA< C (<-Wg<+fg"1bAg1b @8@@D`JgD@86Nu?/BC gP1kpr6< (<-Wg<+fg&C Z1bЁg1b Ѐ(ЀЀЄ`JgD(6Nu//O4UB|"bBJ@j < fD@-CtH@B@H@&HC;0(RBH@B@H@fQBO _&Nu3!`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ//"4UB|"bjJj < f-DC"t&HCJCf&HC;0NRBH@B@H@f`$?&8BCHC06H@0HC;0&RBJf8QB" _&Nu3!`0123456789abcdefghijklmnopqrstuvwxyz JgJgJgJgJg JgJgJfSHggggg ggf @NugfSHNuJgNug fC`Jg INuSHNu g<g8g4g0g,g(g$g ggggg ggf @Nu"HJgJgJgJgJg JgJgJf SNuSeg gb pNuJfpNupNu g"@gfSHNuNuH0$H|g|$bGrtgJ3kSJgtJ@f"p <0f:pgb<߶<Xf(pf"`N|f<0fg><߶<Xfg.Gh3d"3d&HCHCJCfԃԁd` & gSJ"L Nu3"p` 3!p& g"`"C B@f ANu//"4UB|"bZC"t&HCJCf&HC;0NRBH@B@H@f`$?&8BCHC06H@0HC;0&RBJf8QB" _&Nu3!`0123456789abcdefghijklmnopqrstuvwxyzH &/?<HNA\OJf 9ͦg @ NJ@fp @LNuH0&gPR<e a g!CC: "A`rG>&S f. < a gj&@Ap !| 'H&>#>A"P` )d I"Q f`rd ` #@#C"nAL Nuk |`3 `/ oLQ d nf@axJg*`6C: g,g"@ f` "/?<INA\OJj`p$_Nugp`/ &y: g/ &S?<INA\O`&y> g/ &S?<INA\O`&_NuH8$< CG> g" c &@ f`(@ ,gb*"Ҩeg ` )H`p"@")Ө )H`>"@ gb" ҩeg`N"(ө`" "H" ҩf @"(ө" l eb&/ ?<INA\OJfQLNuP`Jg/bg2 4gf!Sf`f`!Sg"gH?LxH?LxH?LxH?Lx`H?Lx8H?LxH?LxH?LxH?LxH?LxpH?LxHH?Lx H?LH?SfvLx2|HgS@!!Q|gSA!Q`2 4gfSf`f`S"gH?LxHxLxHx(LxHxPLxHxxLxHxLxHxLxHxLxHxLxHx@LxHxhLxHxLxHxLHSfxLx2|HgS@ Q|gSAQ _Nu|A0|@NuBAA0Nu  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~@@@@@@@@@@@@@@@@@@@@@@@@@@@::::::8888888888888888888866666644444444444444444444@  !"#  !"#$jD BJjD$HBJBf"$HBJBf $jDNuHBЂ$jDNuHBЂ$jDNu$jD"BJjD$HBJBf4$HBJBfH@B@H@$ jDNuB@H@HB0@0H@0H@$ jDNu AH@r2B@tЀӁd҈рӁQF@$ jDNu/ /|?// ?</NATO&?<NA\O?<NNAPO/&?<NA\OJfB@&$_Nup3`/ //?</NATO&?<NA\O?<ONATO/&?<NA\OJfB@&$_Nup3#`/ ?<NATO$_Nu/ /?<9NA\O$_Nu/ /?< NA\O$_Nu/ ?/?<GNAPO$_Nu/ /?<&NN\O$_Nu/Aͪ1|1|!I!o1A"o 1Y1Q"_A000000000Aͪry`AͪBh1|1Ar`Aͪ1ABh1|r`AͪBh1|1Arh`AͪBh1|1Ar`vAͪBh1|1Ar`\AͪBh1|1Ar `BCͪ3|3|3AC0""Aͪ2<`C2222Aͪ1|Bh1| r `AͪBhBhre`Cͪ3A03B23|CrtRB2fAͪ1Br`AͪBhBhr{`3Ͷ/ Cͪ2dBi3| Cp 2Q"<ps/ NB$_ _0ͶAh"op,2QAp 2QNuͪhhAͪBh1|1Arz`/ 1@ 0"<BpsNBAh0$_Nup `^#Ah00p `Hp`B#/ Ah00000 0 0000000000 pa"_2"o2"o"2"o&2"o*2"o.2Nu#Ah000000p*`#Ah0000p+`#3hp2`~#Ah0000000 0 0p3`N/ #p6a@"_2"o2"o2"o 2Nu#3hp4`/ Ch22#p8a"_2Nu/Ah00ppa"_"Nu#3hpr`#3hp`#Ah00p`#Ah00p!`/ /pMa"_2"_2"o2"o2Nu#Ah000pL`T#3hpN`B/ ?Ah00pha.2CSA|;$Y4Q$_NuAh00000pd`Ah00000pe`3hpg`Ah000000 pi`3h3jpj`/ /Ah0000 00plal"_2"_2"o 2"o2Nu3hpf`J3hpk`>##pZa,"o2Nu###p[a "o2Nu/ 3ͪ@@A"CͬB@22220<"<NBAh0$_Nuͪhh C:\AUTO\TEMPLEMON.PRGC:\AUTO\*.PR?TEMPLMON.PRGK*** Generate Fflder ***[3][ | Failed to generate the | Folder ! ][ Abort ]TemplemonVarTemplemonVarEndresident. (Betaversion %x.%02x%c from %2x/%02x/%04x)resident. (Version %x.%02x from %2x/%02x/%04x)in a version < 2.00 resident.in v version < 2.00 resident.not resident.Failed to Initialize GEM ![3][ The resolution is too | low ! Please use the medium | or high resolution ! ][ Abort ]TMONINST.RSC[3][ Fatal error ! | TMONINST.RSC not found ][ Abort ][3][ Fatal error ! | Not enough memory for | the Screenbuffer ! | No helg available ! ][ OK ]\*.PR?*** Save TMon ****** Load prerefenences ****** Modify TMon ***Call keyAbort installationResyncronize the shifterSwitch to internal syncSwitch to external sync[3][ | Not yet implemented ! ][ SORRY ][3][ | No Help available for | this funktion ! ][ OK ][3][ | Reset to defaults ? ][ Abort | OK ]*** Save TMon ***[3][ | Not yet implemented ! ][ Sorry ]rb+[3][ | Error while reading | the Prereferences ! | Programmfile not found !][ Abort ][3][ | Error while reading | the Prereferences ! | Can't read the programmheader !][ Abort ][3][ | Error while reading | the Prereferences ! | Wrong programmagic !][ Abort ][3][ | Error while reading | the Prereferences ! | Error while positioning !][ Abort ][3][ | Error while reading | the Prereferences ! | Error reading the patchvars !][ Abort ][3][ Error while reading | the Prereferences ! | Error reading the patchvars !][ Abort ]TemplemonVar[3][ Error while reading | the Prereferences ! | Error while positioning !][ Abort ][3][ | Error while reading | the Prereferences ! | Magic not found !][ Abort ]TemplemonVarEnd[3][ Error while reading | the Prereferences ! | Magic not found !][ Abort ][3][ | This is a version < 2.00. | The prereferences can't be read !][ Abort ][3][ | Error while writing | the Prereferences ! | Programmfile not found ! !][ Abort ][3][ | Error while writing | the Prereferences ! | Can't read the programmheader !][ Abort ][3][ | Error while writing | the Prereferences ! | Wrong programmagic !][ Abort ][3][ | Error while writing | the Prereferences ! | Error while positioning !][ Abort ][3][ | Error while writing | the Prereferences ! | Read error !][ Abort ][3][ | Error while writing | the Prereferences ! | Magic not found !][ Abort ][3][ | Error while writing | the Prereferences ! | Can't read the patchvars !][ Abort ][3][ | This is a version < 2.00. | The prereferences can't be saved !][ Abort ][3][ | Error while writing | the Prereferencesn ! | Error while positioning !][ Abort ][3][ | Error while writing | the Prereferences ! | Error while writing the | patchvars !][ Abort ]wb[3][ | Error while generating the | program ! Can't open the programmfile !][ Abort ][3][ | Error while writing the | programfile ! ][ Abort ]\*.*Delete Files*?[2][ Are you shure you want to | delete the file | ? ][ NO | YES ][2][ Failed to delete the file !][ Abort ][1][ No file with this name !][ Abort ];<=>?@ABCD )bacdefSRHGghiJ !"#$%&'(+KPMjklN`,-./012345mnor9:pqCall KeyAbort installationResyncronize the shifterSwitch to internal syncSwitch to external sync%08lX[3][ This funktion is locked | due to memory leakage ! ][ Abort ][3][ | Sorry no more windows availabe ! ][ Abort ]Helpwindow[3][ Interner Error !! | Send a detailed report how this | happend to the Author ][ Abort ]`CE&NMegamax Modula-2 V2`|Rv$$*$*$8$8$"$$$$$%l%%%%%%%4*,^..//6/0:0D0Z0j0z0000DDLLF HZHHHHHHHHKNjE E6EBELAADTemplemonVar  b SdP2X f 0%0% N J,TMonMM2XSMonKbEvPROTEUekmacctmONTemplemonVarEndBreak by user trace programException # : Error: Loading from Saving from , first unused address: Return from GSKeyboard active edge restoredKeyboard data direction restoredInterrupt vector register restoredKeyboardinterrupt disabledInterruptregister A pending : Interruptregister B pending : Keyboardinterrupt maskedInterruptregister A in Service : ACSI Bus Interrupt in ServiceKeyboardinterrupt in ServiceMFP-Keyboardinterruptvector restored to TempleMonIKBDSYS-Keyboardinterruptvector restored to TempleMonTraceMMU Configuration ErrorLine F CodeCoprocessor Protocol Error : CPU detected hardware failureContents of FPU Coprocessor Interface Register RESPONSE : Coprocessor Protocol Error : unexpected access to FPUFPU : Unordered ConditionFPU : Division by zeroFPU : Inexact ResultFPU : UnderflowFPU : OverflowFPU : Operand errorFPU : Not a numberFPU : Unimplemented data typFormat ErrorIllegal instructionUninitialized interruptIllegal interruptInterrupt #Trap #TRAPV instructionCHK instructionBREAK instructionDivision by zeroPrivilege violationKeyboard breakDirect call (JSR)Entry by breakpointEntry by breakpoint #Tracemode not activeactive C: R:BUS ERROR at MMU: Invalid Descriptor or Page Fault MMU: BUS ERROR during table search MMU: Limit violation MMU: Write violation MMU: Supervisor violationADDRESS ERROR at - SR: / super SR: / instruction: Protocol file openedclosed TOS error #Breakpoint set at Skipped.Unable to set breakpoint at No breakpoints set No sufficient memory block available OK. Block hasn't been allocated TempleMon is already installed.  TempleMon not installed.  p TempleMon release 2.02 June 15 1993 q 1986-93 by Johannes Hill & Thomas Tempelmann Restore vector at / old value Illegal command. Enter '?' for informationNumber expectedNumber too bigStart address exceeds end addressIllegal characters in command lineOdd addressSPACE expectedWrong name for registerG-function with PC = 0 not allowedEmpty string is not allowedString too longMissing address / parameterBUS ERRORADDRESS ERRORSyntax errorOperator expectedIllegal registerToo many parametersCoprocessor protocol violationUnknown symbolUndefined errorSNANINFINITY@|/ z0(hVHH _FNu@|H z0("P 11hLFNu/ zp _NuP @#0(-2 7p<AF`KPUPZ_d@ins0x} p  ` P @ 0 p `P@ 0" 'p, lкNu mкNu :кaA Nu :携aA NuHB2, :ƐaA aLNuH":`H瀀B0, кaA aLNuH瀀 :`H瀀 :Av azLNuH瀀 :rAb atLNu :N^gpNupNu :@Hg` :0@gdк@80c` : ge$кb`A0, @ 0l z e z@NuH@`H@":Bg* zX"(g Hz /"pNuJf z>PLJNuLNuBBPC"L|H>L|H>L|pH>L|@H>L|H>L|H>L|H>L|H>L|PH>L| H>L|H>L|H>L|H>L|`H>L|0H>L|H>L|H>L|H>L|pH>L|@H>L|H>L|H>L|H>Q L|H>L|H>L|H>L|pH>L|@H>L|H>L|H>L|H>L|H>L|PH>L| H>L|H>L|H>L|H>L|`H>L|0H>LNuH z4W"H p:L,H,L,H,L,`H,`L,8H,8L,H,L,H,L, H, L,H,L,H,L,XH,XL,H,L,H,L,@H,@L,H,L,H,L,xH,xL,H,L,H,L,`H,`L,8H,8L,H,L,H,L, H, L,H,L,H,L,XH,XL,H,L,H,L,@H,@L,H,L,H,L,xH,x QzL/NuHRl 0, l et0, S@9@ aDJ@ga`2a": :pAxf Ar ?, Bl a9_ LNu?, Bl B4, SB?a6al 4Q9_ LNuHSl jBl aJ@ga`0, l eBl `FRl 0, l cBl `.Sl d9l Sl `arr `)zސ aJl fara9| Nu)zp Jl g?ara0Bl NuBl Nua fB @ d< @ g @ g @g @ g @g @g @gz @gNu?a"0raJ`*a|?a 0r`4HaFL?NuHaXL?NuJ gS fJl g`?, *Bl *a9_ *Nu@@ H`@@ HJ, fa0,  g dp.Jl *gL d g f:f4@ A //<?, *?<@NA Jk , f < `aQL?NuJl fgvH2, HAJAgHARA Afra l dLNu l g^e,Hr' l' cDLNu l b8Hr`&Hr`H2, HAJAgHARAal dLNua~p ap!a`alp aap !faaba ,g$ >g ^g |gACgm``p axp `rp `l f$p a^` fpaNp aHp `Bp aCa*.J 1 g g fAnJl bgA`| fAvJl bfl a `b f ,`\ f ,`J f ,`> Be8<C~gJl bfA `/&$"av&Nuax`axNuHB*8, fa`l DbB Dg$9| a Rf(Bl a !f9D `"Bl a !f9D `9D aNpRaJ*k^?a4ap:a` Bga`af(B*l R@l m&apRaJ*k?aha4p:a?20gaRC`p=a6B*@BB20RC20J*g kARC20RCA0 Am HHa`0 AmHaR0 AmHaD0a>J20f:LNua, gCӀa0, aC|a"l a, g< , aCجa0, aCةa0, a l f , &g"@a, g0, aNuC׃aj,gC׉`Cx`Ta^A faC7a:0, aZJlg(,*,a% NualpRa@tataJl fg tat`taH` tr2,fEdJl fgEdBa~LNuEd(Jl fgEdd`H` t",ZEdfJl dgEdxJl bgEd`H` t Jl bf r2,jEd`",jEd`Jl bgH` t",fEe`H t",fEeZap$Ђ$fpЂ$fpЂ$Ђ$Ђ$Ђ| ffCe@0)l e Sa@Ce,aLNuH 0t!Gn"Ee(aj0, @l m a pRa/at.aCe` CeaCe ax +aL NuH 0t"Gv`Jl bfH` t",^Ed`vH` t0",Ee `dH` t.",Ed`RJl bfH` t",bEd`:H` t1",Ed`(H` t/",Ed`H` t+r",Ed`H` t,",Ee(`/Ag` _NuH0:ϸJ@g>@|(zBJ, fCAA)Q a gP  0, Jf& yC )Q A?Vag0, P9@  gg 9HgH fJ9 g9 @ F 9 gy F f9gA F9g 9g9 9B aFaRLNuH`4$9KB#*OB$Q"f2 XBRAf(GD"gg`"*f$jR`a.M$H`Jg"p#L,JNu/ @|(zRJ, g # Q 0, Jg y!l  B9@ F(_Nu0, g aHC΋a0, g a2CΓav0, g aCΞa`0, g aCΫaJ0, gaCΰa4, a\0, gaCαa, a>0, g aCβa0, gaCεa, a 0, g aCιa0,  g ajCa0,  g aTCa0,  g a>CaNuBl Bga)I a`*B@AzFa5a5aa`.B@AzFgaha5da5aavaP.l aja6BSa\k !g gCj4<ALgXQ`a2 N`BBJl ,ga?CZaCK`JgJfQa`T|`|`|`|`|`|`|`|`|`| `| `| `/ (zB &Jl dg6Jzˤg.HNz/ OA hfNz"H)h &Jl bf)h "0( N{fg 0Aa`0AaA "b2 f. gAЕp`B gggA^p`"gA9p`fAp`Ap)H &2:J,gAgVJl *g0/ "l &ahC6a` , &azC+aP , "aja"_ _N{L(_.7JNu PC= FA=B & _N{L(_Nu)h "0( N{g g g g f g h f gh`HNz)A "f  f$`f"ffgp f`dfNza*gNza"g`JNzag Nzaf8g0`H0gr$HB6C JCHB4&HCKBHBBfNg  fBg<f&$f &$, "f L <NuL <NuPahaa", &g "Aaa| `azat| `alafC8aCapa`aFJ@ga`aaQ Da0, M2Q H`a0, A2 @PdB0R@`a@B`9| M2R`vC20, S@ 1 g 1 fQR@l m0, S@A2  g l  fl  gS,HA2 9@ ` l g@A2"HR ( g  fSo fo gR,HA2 9@ `C20, S@ 1 g 1 fQR@l m0, S@A2  g.l  fS,HA2 9@ l m0, S@9@ ,H`XA2"HR  f ( go fR,HA2 9@ ` A20, S@ 0 g 0 fQR@l m0, S@,H9@ `gRl `anH$@paBC A2a$N/faHab9| LM2*N NuaJgaH@ bfa g ,gnaJgf < `XJ, f H@ y"O@ET#J gNJ gH$l Jf@$l  f4JR#P aH?@NFLxaaQ `a4.IF#Lp` ;f aap )y4)y|)y`Jl ffB,:B,>KxP#K# K#4K#|K#`Nu@|aK2+y#FNu|QA2##:Q#> #4#|#`Nu zb ae NuRa g |fJGNuR g |fJGNu 0e 9c Ae Fb0<Nu<Nu 0e 9b` cLagH -g. +g( .g, :g& g ,g EfD<NuD<NuD<NuD<Nu OgD Sg> Ng8 Lg2 &g, #g& Rg Pg (g |ga,fa<NuHxJl `g6G BBBak BBBva,j$ -fak ga kgtAÉaNg.AÂaFg*A~a>f0+@7@BBBk`p`pr'ABA'A'@`a0`a(g g<Nu<NuhtR+`|ak gapkTi`d fF`f@fJfHBfBBRBHB`fRBg A`A C d0RC`f C dA0BatkL< gFaij -faRkaf@@aa o-gү`"/O )fa`,<Jl ff,<B?<`?aa&J_gӗ`a +g -fp`"JGNu (fa` Pfa`| OfaQ @a ҬJGNuP @B |gT &gR #gr Rg SgF NgJ LgNag J, @g`XbV鉂a:kavgJGNua*ahf b첆b,HH/ҟҀ`HGaJGk" g ,g +g -g )g`Ag$B ,g$@H?NLpJf "L`zL` H al?a "g> !g8 2g g g -g6 d>AJ"0 L`>AJ"0 Jl bfL`",>L`a ", `a", `a",  `akafa$AJGkak| .g4 Zgt Lgn Xf.akRafLaLҊdr f`ahk0ahf*aX&Ab"JGgNu$i`$Q&|`&J`a"jr`a&`a:k fa,jJGNua$k . fak/aҽgSa`ajNu aնQNu +fBl XNu -fP XNu Bg Wg LgL`aC aj|a֌p:a` a6Jl ffaBECaa>0 faREfdQa a\fa~gSf`a)J`֦J, Xf. l> daֺ`Craֶp|aSE aQNuaC aj |ap:aԪpwaԤ azrJl fgradBECaR02av0 fa>a:TEfbQa\afagSf`aB)J`alC afjx|aDp:apla arJl fgraBECaaռ "a0 aծaժXEfbQaafa(gSf`a)J`NC  agajNu a*AcRR#bNuڵeNu . f IfaJpra)`a*Aaaz f eaNu"JSa(p-a"MSa graaBgaԢNuSf aԘaԺz ap:a`ak aj )AapBaҾpUaҸaԀ ,aՈ`NaCpBQ QBNu :fa -g +fP *NuQ *NuCabk Ug -gaf bH8apk\ fa4p4@6@ a"#@f4A6A`JGkaa4Aj6A` aa6A3@ 3@"ApJVVB?a`?p!apBa0aaӆ8LC 1@/aԄap(C01@ aԎa^(C01@"a|:`$BJlBga8LJ@gaR eNuC a `k aZj)Aa`pOa4a ,a`CFataaRf4Jg0aҮQ/ ?, *Bl *CFxaa2aҎ9_ *"_  g`~k Kg MgK aak4/aakaajabp=aАaX  +g0 -g& *gB /gF Egb Ogf Af`J`Ё@a>CJa0aB`a"`JAg垀/aC a H@a`Ѱa`Ѧa`ќk -f`aa`ф SfpDAC"QNu Rf/,:/,>pDCA"Q)_:)_>NuPNuQNu +g. :g p Wg Dg . gBBa F*(`xz,f` a|(,*, JjBC fH <Ȁfv L04 c0@g`ggpL`( f,g gf g^  gV gNJl bf !g@ "g8 g0 g( 0g 1g .g /g +g ,g #gm, *b&ap@B<# A~20FAgnp0`jpB CfX@`^ C f Jl bfRX@`N C!f Jl bfBY@`> C"f Jl bf2Y@`. C+fpE`$ C-fp@` C,fpA` C#gm C*bp3fl dJH aL0 g frD`  frAp;a͆à`pRaxg p:alp+afJl fg gaJCf fBRCpJl hgpJl fg pJl dgp"c"Jl `gp-e #dv#`BC f`ά f,g&,gtJl fgt,gt`tNuJl bg !g g f f ` HtJl bgBHBBB$NC;A<Jl hg"A<Jl fgA<Jl dgA<#Jl bgAJGka| +f` -fNuB`#Jl hgB`"Jl fgB`"Jl dg)|`"Jl bg)|`"Jl `g ,)@`"jBBBaLg`">appRaBp:a<(,*,` Bg Wg @Lg`aH akj"A)IadfJGjJl XfPH9|> 0, ?g l dSl p|a$lrbH`aLRl 0, l e9_ LNua RfabNua atk"A)Iafl2JGj`bNuaJ Rf:aNuah a.k"A)Iaf&"JGj`Nua RfaNu`akl +gN -g&`LkZJ, f`Jl fg 0g 1g -faB,B,` +faA#$|aЎaaC-a8aD`JaB.C `ӜJ, gPDaf`& ",.JGkV Sf aVkba ,g a k0 ,fN lFdza$/aa"aJGjJg0 AJP)A.Jj2,fC2`C6Jl fgCR,gCNK: Q! "PDadgRh,fB,Jj(Jy>f,' 'f`aZJ,k,fgaB`af` g*Jl ^gJ pg Hz/, pNuC zfaGQDa(aaJlg pra@BlJl hg ,BN{ ,FN{ ,JN{Jl fg ,ZN{Jl bgD ,N{ ,N{ ,N{ ,N{ ,jN{ ,fN{ ,N{ ,vN{`v ,VN{Jl dgbA^Ab /9"O@A#E Af@E Aj`E AnME AvI#F$Jl `g8Jl bf AJg0@ @f B(,~,JgP l2N`Jl fg.lR,lNN{`.l6Jyg*,g@ f=<-,.=,N{?<`?</,.?,LQNs.INBl G!G`кB@A$,.g R@ @fNu @Nu0,FAH$,.`WNuXBRATMon/pa HT(z"PH)_9_)_.Jl hgNz)@BNz)@FNz)@JJl fgNz)@ZJl bg>Nz)@fNz)@Nz)@Nz)@N{)@Nz)@jNz)@Nz`HNz)@VJl dg4A^ AbAfBAjbAnNAvJadJl `gA,B0:,~Jl hgJ9_Jl fg@ Nz)@NNz)@R0,@ @f$X)OR lN9X)X.9X)HN`B,.)O6Nh)H2.l aBJ,@ga,fj`,g* l6X6Jl fg$,f lRXR` lNXN` l2X2)P.Jl ffB,.NuJaa",g K.gf ,gV,g&Jl ff)l6*`,f)lR*`)lN*`)l2*A"@a( HNLJgC`gapfgazCJ,gͪJ,Bg,a,g&YSh"f1h "9@ C| `͂`fgN,fA2`A6Jl fgAR,gAN ,氐b l. PNug PNwg PNsffTPDfa?Bg (,*,aZ$l.a$P, &Ja&> @0@ @e AzFaɒa,g aJgarafg g Cf ` g̰ 0faa` 1fa` Ff`f RfJ,k>,f6,fC2`C6Jl fgCR,gCN QK~! "`,f)l2` )l6Jl fg)lR,g)lN` Og g Af` Df$Fa#a#, a` Sf)K.C/a`V Bf"agCa aa`0,F @ gAHH!RlFNua2.KF`42J QJf NuJ,Dg?HQCaf ala20tNu/9&O@A#YBBBDAE0,@g #`Jg"haTJRD eC@BC0,FgBDAHEl` "XalTJRDQ9C~#JBgaTC.aa*< g<ftNuBGE0@g "S QJf2XTR eNuB,6,~g,Bl~0,FBBCHEl`g Q PJf0XITJRBQBlFNu :g4C  aja!aתffe`Sf)J `Nuaڂk 0g> 1g> 2gD 3gF 4gH 8gN FgH`9l ` JBl RBl PBl NBl LNuBl J`Bl JaP RNuaP P`aP N`aP JP L`P JNuak0tBC a6gR*NgD gFRB  g ?f fR`g `aٰar ah`aٜjɲJBkNu C  agɲapB f@Rd RDBc`NujrJ, fa PaVaaJlg pra nBlaaJNg.l60,@8@FQ?Nz)@fNz)@Nz)@Nz)@N{)@Nz)@jNz)@Nz`HNz)@VJl dg4A^ AbAfBAjbAnNAvJa\Jl `gA,B0:,~aZ&_a8)O6Nh)H2Jl fgNz)@NNz)@R.l 9B)A 9F 9D 9EJyfpug U@ @d`)M.Jl ffB,.| NXBRATMon/pa a|av9| C`LXBRATMon/pa aN9| C`$0:NuXBRATMon/pa a l. PJgC`aC:g:CxgtC6g2,aNf"adgT.C`ŪXBRATMonJaC`ŐXBRATMon/p a aDC$`XBRATMon/pa a"Ch`XBRATMon/p a HNz/pN{y (z9@ N{LaJl gC:`FC`@XBRATMon/p ax aCi`XBRATMon/p aV aC`ĶXBRATMon/p a4 af0, @`@9@  C\`XBRATMon/p a a20, H@9@  C4`XBRATMon/pa aC`tXBRATMon/pa aC `RXBRATMon/pa ?:J_g/:NuaC`"XBRATMon/paX H瀈(zJl hg o0@ @@f0::g L/:NuLaXC`XBRATMon zr?( zN zd2(_g:"h 1H@:gT:g| z:6fJ9f PL`L`H0a: gZ:gL `EGd$$yE G$&y kbB B&B:B yNEG$$yE G$&y kb~ yN/an:f|H@A :gA@.2:j9` g&Jgg2:N`2:J`g2:@`2:<,.  Q,. L `| `t/a:fB@ `X `P/a:fB@ `4 `,XBRATMonJ9fJyg?<Hz6@/:NuH$y N$yN9gL/J9gQJj/,z,_Nsa@AzF,gJljap,`LCP ` aNk)A "A fR g`NuC  aJj\|?a(p'a aa:a.a(faJgSf`e)J `pp `?, P a9_ NuaJCgCatCal`>Nuaؐk46, * aкSj Fg Cg -gaBg/aИjBg .:g?<<` ?<=?|NAPJkDJ@jD@?CaCaa9_ *Nu", :gB :?/?<INA\02, ,Bl ,`2, *Bl *?a*4jCa0D@a`t2, ,Bl ,`2, *Bl * AcH???<>NAXLNuCaja<` a׊k/ ,g aϴk fBg B :B 6Q >aϐaRk6 @f"a~a)A 6P >a4k ,fa`C  aZ"_Nu/ ??, ,/?<BNA $_JkNu -f:a( aj8/?<INA\ Jg CYa`lCGa``a$/ Bg/ ?<=NAP$_J@k9@ ,pra~)@ 2p", 6ap", 2 6)A .f/ /?<HNA\$_Jgk$@)@ :f&J .Ca )@ a*/ / / ?, ,?<?NAP$_&_JkaJCa )@ a` +fPNu -fQNuaRgL/ Jl >g ?</ ?<=`Bg/ ?<)@ ::)@P* Nu AaNu z", "lNuGa NC6" CNuGa :C"" CNuGNu*oB?< NA\A A ( y|fHz?< NA\`?azJl jf9`faJl jg 9b f9|< 9|*a>:H9@0Bl,aLxaLJl fg A  Jl nfvaLfJl jfjJl lfd`Jl jg9b fB`Fa9@&Jl jf9@*J@gaaΰl&ga8Fl,Bl*`9`fa`ad ЍAF !@!@ !@B:6 ЂA, A "@A A 2, A ЁA A 2:g ЁA "A ana bк)@ .@NgA // Bg?<JNAO <}Jl jg,29bA Af :z)@ Bg/?<DNAP`LJl lfJl,fJl&g ,P*)@ Bg/?<DNAPJgH f , /?<HNA\Jg&@A A0?<"NNT# @C Qa# @C Qa#ByP?<?<NNX#praZBaݶ"y0| ig i$C"a8ana6/<NNXA A2|!Q" yCd#h !I aVaaL~a , @eP P/:?< NA\Hz:?< NA\Q` Bg/:?<1NAHz?< NA\/:?< NA\BgNA`L~Jl bg ,)@ ,)@Nu C  agDaaz Jl fgz?B f2@1@g ReT`JRDcA gg^e\cֵ:e0cA2ePcAePc a8SEfa:`aaag`XBRATMon/pa / (zrJl bg/0/@ @ g (_a$C` (_/:NuXBRATMon/pa aC`nXBRATMon/pa aC`LXBRATMon/pa aC`*XBRATMon/pa` aC`XBRATMon/pa> apC`XBRATMon/pa aNC`XBRATMon/pa a,C`XBRATMon/pa a C`#(z&PH)yJl hgNz)@BNz)@FNz)@JJl fgNz)@ZJl bg>Nz)@fNz)@Nz)@Nz)@N{)@Nz)@jNz)@Nz`HNz)@VJl dg4A^ AbAfBAjbAnNAvJaEJl `gA,Ba*,~"_9_)_.Jl ffB,.JygJ02@ @g9AX@A`(Nz9Z)Z.09@X@Ah)JNN{)O6Nh)H2Jl fgNz)@NNz)@R.l HQJl ffBJygB@0,@9@ ` H@H9@ | `42 TH @Cg4<a Q@LNu<`<`JfB/a@|9}9f9g9g Fa"pNuFa"BNuH`pr lNLJfNu XBRAfC Q`NuJf H@C abLNuHrp lNLNuJfH@`Hr`H C4, B$1 "z$ e"z""""""""""""""""""""LNu`N````J```````>`\`4``F`r`8``````````bJ@g opr$ A"A$AFNuH *K(zrGdN&ML0FNu < |NuG  S g&NuH@ g)HaFpraLLpNuH )@J,faaLNuANuPNu)H Nu)H NuJ, f

L`NuJg`aNu/ Ga"_/ IGa"H _Nu,@9@`AZNu0, P9A P"l R)H RA ,NuG xa/ IG ta|/ JG pap$H Ma @f9| j`4 @f$P na9@|9@ ga` P ^`P lLNu9l R \9l P Z9l N X9l L V9l J Ta,`z9l h \9l f Z9l d X9l b V9l ` Taa`aBlp!aPp,Jl Zf .fp>`"CABp@rffQp,`p^`H"J9l R \9l P Z9l N X9l L V9l J Ta>$IL{NuH"J9l h \9l f Z9l d X9l b V9l ` T`CJ,ga aCCP Ia@$z0, @ l g@8,pr lg`HaLNu +fJl g9l  Bl ` -f Jl g9l Nu9| 9| 9|9|P)|}BBl*Nu9| 9| 9|9|)|}BBl*NuHzHz~Hz?<?<KNAOJjHzdHzdHzh?<?<KNAOJkDB/)@B?<?<KNAOJ@g(BBB l/(,?<INA\/,?<INA\`\\AUTO\\AUTO\TMONHELP.EXEC  @g @fNu@|C0h a3l 3l ~3l 3l 3l 3l 3l |3l r3l z3l x3l v3l t3l p3l n3l bf0, ||dl3l d`3l j3l h3l l3l ` 3l fA, @, J@gAE@9@@ @eE$$$$Bl \FNuC PgJl \f0i 9i 9i ~9i 9i 9i 9i 9i |9i r9i z9i x9i v9i t9i p9i n9if b9i` d9i j9i h9i l9i `9i fA, @, J@gAE@9@@ @eE Nu@|P \C0B) 9@@ A@N````6a3|3|3|3|3|3|3|3|3|3|3|s3|PBiBi3|f3|3|(3|3| Bi/a0a#0a### l g9@ a>FNua.3|3|BiBi3|C3|c3|3|BiBi3|3| BiBiBif3|`3|3|(3|3| Biad3@`pa aL0a(#0a#0a#0a # FNuHpXB2AXB6CBXB6C LNua a3@3B3D3FFNuSR D0 D1 D2 D3 D4 D5 D6 D7 A0 A1 A2 A3 A4 A5 A6 A7 PC USP SSP BEV AEV SFC DFC VBR MSP ISP CAAR CACR TT0 TT1 TC PSR CRP SRP FP0 FP1 FP2 FP3 FP4 FP5 FP6 FP7 FPCR FPSR FPIARDTT0 DTT1 ITT0 ITT1 URP TS IXNZVCTT1T0S M IXNZVCT1T0 CCEFE WA DBE CD CED FD EDIBECICEIFIEI DEIEBLS A W I M GCT#  ADDRESS B G U1 U0SCMMOWTRESREFCLPSISTIA TIBTICTIDEPB | TC invalid L/ULIMITDT .ADDRESS= LABLAMECI R/W RWMFCBFCM LABLAMES U1 U0CMW BSUNSNANOPerr OVFL UNFL DZ INEX2 INEX1PRECRND  FPCC.NFPCC.ZFPCC.IFPCC.NANQUOT.SIGNQUOT.QUOTEXC.BSUNEXC.SNANEXC.OPerr EXC.OVFL EXC.UNFL EXC.DZ EXC.INEX2 EXC.INEX1AEXC.IOPAEXC.OVFLAEXC.UNFLAEXC.DZAEXC.INEXTempleMon version 2.02 Jun 15 1993. TempleMon has been developed with Megamax Modula-2. Try the newest version of SysMon in combination with TempleMon. Order SysMon from the author Karsten Isakovic, Wilmersdorferstrae 82, D-10629 Berlin, Germany. Start SysMon after TempleMon. Both programs complete each other. Have a lot of fun! --- press SPACE --- ------------------------------ TempleMon 2.02 ------------------ Jun 15 1993 -- Copyright (C) 1990, Johannes Hill Copyright (C) 1986, Thomas Tempelmann Johannes Hill, Unteres Kirchfeld 23, D-68259 Mannheim, Germany Thomas Tempelmann, Schusterwolfstr. 13, D-81241 Mnchen, Germany ------------------------------------------------------------------------------- This release of TempleMon does support MultiTOS. The FALCON030 support is not complete! Don't ask for any information about this machine which were necessary to implement FALCON support. It's not perfect now! You won't get any information about it even if you threaten to shoot me! This TempleMon release is only available with english messages. It is published in this unfinished state because of heavy demand for symbol support. Better running releases will be available in the future also in german. Then a new program description will also be available. This relese can be considered FREEWARE.------------------------------------------------------------------------------- We hope that you will find TempleMon useful and that your bug-swatting problemsare eased by this monitor. Regards, Johannes Hill, Thomas Tempelmanna3|q3|k3|e3|/3|o3|3|>3|43|23| 3|?3|BiBiBif3|`3|3|P3|3| Bil g9@ aa& lPkPBla "a  aDa4)I6<xKK2AL00SCjAAP)ONa l2ka aa0,|OdgJl Zf H@aaPNuH@aH@?Ha0?a00 9c^`J,g0Jg*HH> lNL|Jf"HZaLNuLNuT F HILSCCCSNEEQVCVSPLMIGELTGTLERASRF EQ OGT OGE OLT OLE OGL OR UN UEQ UGT UGE ULT ULE NE T SF SEQ GT GE LT LE GL GLE NGLENGL NLE NLT NGE NGT SNE ST kX| D kY+`'@ p   @ L aL fgXƀLkPfZs & $KSkQ$@).)ۀ.).(.b\b\'kPmX!"l!TOS`OkPkPkP(kPp@BOfkVOkVqO$qNs aBO % EkX@ F"""mP "m0 | E D ` `+ @ . . mYP mY0   D#D#D#gD#ZD#:D#LD#TD# d_bJ-J,YJ+_bJ- :J*+4.]`. :0Y/k_13_b22]@2422]Ih24*23wC21h72520h20f20h 242521h25.?25 ?23w23~23~20E020423p20F20021B21F21`23^@20H@23j24&242424Հ24 24`=025'@2424P2121'P24)24S21)21S24ț24B24V2121B21V24Q21'Q23_b@53_b73_b33_b43_b64:1;5$83094bM4:>E`>`T`\````````````0`^`j```&````8`L`^`n```` `p``0`` ``p`````^```r```.`<`h```d```<`~```` a8pP`"a2pX`a,pD`a&pS`a pL` apB`apWa$a lkNup.`p]` p[`p)`p(`p#`p$`p,`p!`p:`<:9DDA*&0@$0@0X@ @f"Jl Tgf.pR@Jl XgJl VgR@`pJl \g R@Jl ZgR@g +f0X@ @gJ @gD =g 2fg2 g, 02H@ @fAAP0A2H@gx:]E Df &熀0aSDfvCA$(N@g> @fp2`0 @f p. Ef"p1` @f Eg p1ap6`p0`@@`Nu/AJ,gAP/  f9H _vp*avQaL"lUa.lNu6KƼ Cg CfJl Zga8alJl Zga:`& Cf Jl Zfa` Cfp-a CkapD CgpAa0@|0a Ck Cg,a Cfp+aNuaa`a0` apD2jpAa0HH@|0ap.apW g$pLJl ZgaxIIgp*ahp`@0a\`P2fnaH g$aHaaBpAa20@@0a$`.HHЉUag aa\a pPapCaapDgpA`<0@ @g20@@g&gfag6faa6a\aaa`a|aaDapaa`la a0a``g gabaZ0ag0aNuga@6KC Cgf,pAa0@@0`gpZapPapC`pZapBapR`fZgapDgpAa0X@@0ap.apW gpLa6CCCgp*ap`@0aNug<ga|fp0aga`a` agaJaNu6C8 CgLRDfJ6C Cf6[C Cg0`>6KKC CfXD` CgCCfg`^D6KCC`|  f6[ g"6 fRD`TD6 fRD`Jl XfXD[CgRD``TNpNqNrNsNtNuNvNwJNzHHH@HHINXNPHN`N@LL@NN@DBFHH@JHL@BDFJ !&6A/ Cp2gQeƙAgR@`gFR@g>g6`2 @%f,Jl Zf6C? C:dK Cg`  g"_@`6C CgRD Cf0@ @e @eRDC CgRDgvRD`p`lgd`6C CgRRD C@gHRD Cfg8f0`nRDC CgR CgRD`6<eRD`C0 CgRD`h6C CofC CgRD6C8 CgRD`6CAp2gNAgR@`6[ f&rAt0[CC6<g@``6 d@`NPD6<eKKCC<da`J dfNuaF? F:j F8 Ff(`HaF? Fg0@f00a0a0@f Dgp/av` p-anRC C8fNu8 6C8 C gK`KaaL8aNua8 Da 0a*`Xa8Da D kp0R@| D ja80|0`.p.a*pLa$8af D(a pUa pSapP`aa D aXNuaaa8Da@NualaapSapR`aVaapCaa`aJ8a jpAa`0H@0`Ra,aL`~8 Da HLLaNu faa&a&0ara 8aNua,: g0Xaa8`8aa0X`h0H@gS@gS@g`"pa80a@a0@a6a8aJNu8DDDggA\SDg AZSDgAFN?gpA`pDah00`Zpa860aa\0aaL0@aaJ0@aa8a&0Xaaa.a0Xa`a?8aa 0X`8DDD gFASDkdASDkZAN0@2YAANuap?ap!`0a*a0X`:(pU gpSag f agpLaja00@? @gNu:Ea`vp+`Fa gabaa<4ZaTa4Nuga aFaa6gNua*aaa `"````````g0X@ @gA@Ng0X@A@NpFaݎpP`݈@?a0@0`vg /p/ah Nu gaapCaPpRaJ gaapSa:pRa4 gaapIa$pAapRaNu6)g a:8?0@H@B@a6`Ba0XaZ2AA0X@Af"0, @g. @d @d" @le @e0, @g a0@`Nu6)[C Cg0@@ @g6)(a2 g aad`?a aZ6`0@? @a`Ra"a`H?aBa6`?a4a6pDaۄ0@@` fXr0g.aaRA d&gRA dfSAp-a>0aRA eNuA@0`r0g"aaSAkgSAkfRAp-a0aSAjNu6)a20@aPa(?an60@ @ fXp{aڶ g0@@a,`8agp-aڒa0@D@`a0@? @ea`ap}`dNu@@A*aP gaD ga8 ga,Nu0)a0@ @g @g, @fhaaa `Baaa0`6Nu0a~a Ug6)HC6ր`6)Hր`0)aNa(`H0)a`:`*`&``$``aB0`׎a80`|a.` a(` a"` a^ aX `RD,h aÔ`.T,h aÄ`H,h at`L,h adA g gaָ`Nu6KC B`k BbjC AF00a֐00`ֈNuA PJPgA RJgH"HA ,0, PNL@| :rJl bf.A ,MA 4IA @A D A <@$`: , ,N{ , 4N{ , @N{ , DN{ , HN{ , LN{ , {A }D!G"#$ % &'()*+,!-$.'/,0115283>4A5D6G789 : ;<=>?@A"B%C(D-E1F5G9H>IAJDKGL M N O P Q R S T U V! W$ X' Y> ZA [D \G ] ^ _& `> aD b, 9d$<e' pJ:-6Ie~ 4% 95(5 oo o o   oo  oo &  @A@@ &!% "@$##A"@%@  '+ (@*))A(@+@ & 4 .P( )ool  '  4.. x0 L  h      , '".H(( d      x x xxx( x"x"x"x"x"'!HI'JWX Y9  %  8  !567EFGPQ Rghi}~  %+)-X+\_* #*+,HIJghi~&)&-V)]*     ( 1:L Uefg   #(-27<AFKPUhij PÒ0EXITResolutionColorsModeMemoryReset to defaultsChange keysModify TMonGenerate TMonOptionsOK TMonInst Files Keyboard Screen Editor Options Help About TMonInst...--------------------123456 Read setup from disk... ^R Patch TMon on Disk... ^P Save TMon... ^S~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ New folder... ^N Delete files... ^D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Quit ^Q Call Key... Abort installation...~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Resynchronize shifter... Internal synchronisation... External synchronisation... Screen resolution... Colors... Editor mode... Editor memory... Move from SR -> TMon Division by 0 -> TMon Wake up screensavers~~~~~~~~~~~~~~~~~~~~~~~~ PMMU Errorhandling... Keyboard vector... OS start/end... To get Help select the menu- entry while holding down the CONTROL key.AbortOKAbortOKAbortOKMonochromColorTT-HirezOKAbortF1F2F3F4F5F6F7F8F9F10ESC1234567890'#BSPHelpUndo()/*TABQWERTZUIOP+DELINSCLR789-CTRLASDFGHJKLCR~456+SH<YXCVBNM,.-SH123EALTSPACECAPS0.deactivatedOKAbortCall keyAbort installationResynchronisize the shifterInternal synchronizationExternal synchronizationEXITAbortOKST-Mid 0ST-Mid 1ST-Mid 2ST_Mid 3Duochome 0Duochome 1Black on whiteWhite on black161616AbortOKAbortOKAbortOK TempleMon Installationprogram V 1.02 TempleMon isnicht im Speicher resident (Version 1.20x vom 31.08.91) Screen Editor Installationprogram by Stefan WolfTempleMon by Johannes Hill & Thomas Tempelmann 1986.. TempleMon Install Installationprogramfor TempleMon 1991 Install Version 1.02Installationprogramwritten byStefan WolfInstall is written in Pure CTempleMon is wiritten in MM2Select the editorparameters___Number of lines for the screenbuffer : ___999___Number of historylines : ___999__Minimum length for a historyline : __99Select the editorparametersInsert modeOverwrite modeInsert inserts spacesInsert toggelsBrowsing with shift cursor up/downSelect the optionsMove from SR aktivates TMonDivision by 0 aktivates TMonWake up screensavers_____Cursor blink rate : _____99999Set up screenresolutions___Bytes per scanline : ___999______Required memory in Bytes : ______999999______Offset to the upper left corner : ______999999Tastencodes fr alles Mgliche einstellenSelect keycodesSelect the colors Colors ST-High REDGREENBLUEOperatingsystem start/endAutomatic detection________start: ________ nnnnnnnn________end: ________ nnnnnnnnSelect manuallySet up keyboard vector handlingsearch in keyboard vector chainfor the XBRA-ID's________XXXX________XXXX________XXXX________XXXX________XXXX________XXXX________XXXX________XXXX________XXXX________XXXXPMMU ErrorhandlingSupervisor violationWrite violationLimit violationInvalid descriptorError in tablesearchTempleMon isinaktivaktiv 1a@C0D> @`À5C  @hB@;"nH `x8@X  D  & @|08k@ ? p x  0` 0 ,`@@@ @ `8? \ < @ 5b 8T @bHFzb?R8@ |MwHH@J ;  GփHD@@Q.0 @b @  D@@@@@@@@@@@@@@@@` 0  0 `@@@@@@@@@@@@@@@@?0 ($$"D!!"D$$(0 ??          ? 0'''' 0 0     0@X XX2XbXY[^\X@@@@@@@@@@@@@oxc[[IJ[29)     3 54   43` ` 0. !"# $ % & 2 1/-,'()5 0. !"# $ % & 2 1/-,'+(+9 xy)#{|}*+3,5-4.~xyz{|}~4:3;`<`>@0. !"#$%&21/-,'[\(])^5_0. !"#$%&21/-,'{+|(}+~;<=>?@ABCDTUVWXYZ[\];<=>?@ABCD;<=>?@ABCD%dnjnjnjͪhhfsel_pat0fsel_namev_bufhmouse_xxmouse_yzmouse_k|nclick~tmoncookɀcolor_he"Rkeytab~scr_up=windowsdesk_xdesk_ydesk_hdesk_wrsc_AesCtrl~_ScnIntD_MemBlkL:_VdiCtrl_ScnFltn*_BasPagV_ScnCarD_ScnCarH_ScnCarO(write`v_bar_ret012unlinkvswr_modwin_upda=0work_out2v_show_cwork_inultoa:vrt_cpyfwindow_e4&vst_colowin_init=Rstrcpyv_opnvwkpwin_exit=|strcat6set_os'wind_crestrchr~strupr&Superwind_opewind_upd6wind_clo*wind_fintoupper&wind_delwind_get>wind_setstrlenscreenwind_calsscanfsquarewwrite_vastrtodqset_xbra)write_in> set_virt+^set_vidpvsl_colopset_patcset_keysHremovereadvsf_periVstrtoulTSupexecsprintfset_edimset_edibbvsf_intehelp_resCWhelp_ediE0help_ediFhelp_scrHFhelp_kbdUhelp_savNhelp_calAhelp_pat@form_butjInit_GEM\findnext>form_dogeh_wind/form_aleXform_diaform_cen2desktopȀfindfirscnv_striʺclosefind_swi[bufptrfind_coo]is_menu_^bufendevnt_mul>Dcreatefreopenactlinactcolatoldelete_f atoiBatofpgl_apidʰfsel_exi\endrunnibgraf_mou,fsel_inpBgraf_sligl_wboxʮgl_hboxʬgraf_hanconvert_Zdefaultv>_xlcnv_xwcnv_xscnv:_xxdiv}dgl_hcharʨ_ldiv~gl_wcharʪ__exit__text_fabswExit_GEM]V__bssV_xxoverf_txoverf_xcpqDgetpath_appZclipping]_xyentry_xxmul{2bootdevȄ_lmul4enddefau^_xxinexa__xxsubx_xxentrycols_in__xcpi_xxflowendpatchF_xcph_txmover__logv__xxmul{B_logv_xxdivze_xxunder__xxinv}H_xxinval_txinval_xcex_xxaddyDgetdrv_AtExitV_xxincy _xxdecx_xxsubxclear_sc/<__data__xxincy __xxdiv}t__squarexappl_exi8__xxdecxappl_wri"appl_ini__xxaddy$bufstartcheckmar2_fpuxxopx_INFPdraw_pro[_NAN_fpuvect^_INFM_FreeAll(_ScanFj"_PrintFa<_fpumoder_OutStr_fpuinitf_StkSize _xmather_fpuctrlt_squarew_StdOutF_StdPrnF_OutIntD$_OutFixFg_OutFixe_StkLim\_OutFltd$_FlshBufR_norm012r_normA0L_OutCarDv_OutCarH_OutCarO_OutChrr_xcln2_xclg2__log2v_log2v_xc2_log21wH__log1w _log1w_xc1_StdErrF_log10v_pow10r_xc10_StdAuxF_FillBuf_global_UpcTab4_StdInFv__log21wH__log10v_heapErrͦ_RemoveT_InsFreB^_TmpFile6_FilSysV_RedirTad_XltErr_FilTabr        Hh$        F$ ,,, p               P"4"  $    "  6       "" ,"r .n" ,t  .Z&8$$ >B$  0 " <..TB"" &Z&Z&\"DJ " .*  ,D ,"&& .d H  .."   *0 **P 6&H *$ f$ f6d  **6,*` > ** (( *$, PZꆂ f0T *<0&8 4B @ (& .* J 4 & t Z @h `z Z v*$Db 2> b @D.R,<*DZB $ " j ,$   0> 4  ,(@0000000`H000000000x00`00H000H000H`x0`0`00`0H000 LQDB1 >|H,F J.ILJB JF!IK(GG'I'IDHDG@HFJFJ# JJF0DLJHJGI'CDF,CD@AH&F#AGEJHKF:KKE1FKHHIG@FHHIGF JHIJA&KKGKKIKLIK%E:\PC\TMONINST.ENG\TMONHELP.SR`" 6``.>>>> PURE-C <<<< for ATARI-ST Version 1.0 (C)88-90 Borland International &H f&op`B@#.3. k #. Ј<.@#.Jy.g<"@(I$k,"Jf"JfB// ?<?<JNAO A<~kRrRAfA6<HCBB`6 !jBJ)gHiRC` "fSI "WSAkHiRCBSQJ)gHiRCHy`$ONV0 J"LN? 9"g @N 9"g @NN?<LNAH (N &$x CN f `f J`PJ fLNu x"f ` fNuPH"fNu/ / A.trp$y.$jNE*̓ɑtrp&y.&kN4| fBR0y.&_$_NuH0O$IA"C2<GQJf 64OAtrp&y.&kN4pOHL NuHo`C KNB@ JN>?AN J@f 09.g`C0A.N N|`vBy* OL>NEI. r 9@Z$ļ9B\ 9@^rj9A`$ļp9Bx rt)Bt)|zBC` r穳zRCCnBC`p2A4[h9RRC|mBlrBC`0@24RgtC9BrRC|mKb <,[t,y*v`0H"54B4 [4J+ RClrmxBC` pr㨱RClxmBC`0HABRC|m9|~Blp9@9@M*prf|`|Hp)@)@Bl9|BC` /$/0H"ND"p$NDXOچRClRmtrpN|G*/,t//"K LN O N yf//9C2 LN fPO`209f//9CY LN HPO`//9C LN 2PON/9/9C LN PON/,zC LN XONzC LNNl?,`?,^?,\?,ZC LNPONL?,X?,V?,T?,RC; LNPON,/- /-/-/C] LNON C LNN?,?,?,C LNj\ONC LNZN09*fJGfjBl~Bl*r¹tf|`|Hp)@)@Bl9|BC` /$/0H"N"p$NXOچRClRmtrpN`bJGo^C LNNJC LNN<*prf|`|HBC` /$/0H"N"p$NXOچRClRmB@L|NuH0>*,/ 29*f4G/jRk$Btj|fv`vHpf(`(*0J@gS@g(S@gS@g` kgt" N`pf<"¼4+H²f,+z~ E g4|"“ N` 2+Hf$+z~, gj4*|"“ N``VȼRk0+g NNJ@fO NBk'C'D7EL 8NuBAA/z`4J fpNuRA|mBA`4J$0 f 4J! `RA|mB@NuH8UO>,&./&29*f>$Bpj|fx`xHrf*`**G*I.2JAgSAg,SAgSAg`///CE LNhO N`pfj"¼////Cg LNBA< <b;k`|<*f<`&<0< b ACp a 2$Wb<gt<.f6<*f4`$<0< b ACp a$Wb4g<߲<Lf g`<hggr@dp|?@0;N`````N`N``````````````````````````NNN````````````````` [0`|A`0A2"LaN@`\ [2"LaL@`JJEj `p0?4 La"TO@`*JEj `0H?4 LaTO@` JEj `p0?4 LaTO@`JEj `p0?4 LaTO@`@HN0\OLxNup24C8jxA aA pJWF@?@gA 2SAktaSb (Q2/@4/(jt@jtBgf 0Ao@@Alx?B?D`hH0$H&IB(v`H0$H&IvJWFCJBj4Cb6xJAkCc8Cf K0a0 JN` 0 JN0 Kap0DL Nu6x0/g f@ JaP0/g@AN0/g@ Ja,0/g@A N0/g g@ Ja0OLNuH0E6`H0E4&H6g8Kg SC JpNQ J0|gNL Nu00000000 C.PaA.Pp `/ / B@JgB)g@)fJ&Q(i ge"// Ia"_ _J@f&Q`B@"(_&_Nu3 "p`#H#H&HJfS#K " I(Iap"LJ@f`(g4(f>"P | dNu?/a8 _2J@f 0Nu3 "pNuC!I!IR!I `H&H(k6+"+g0DtaJk+fZ"S"L Ip gSj`*| // " 0a`"_"JkNgPAp SjH@" 0a<߶<Xfg.G(3d"3d&HCHCJCfԃԁd` & gSJ"L Nu3""p` 3!"p& g"`"CB@f ANu//"4UB|"bZC"t&HCJCf&HC;0NRBH@B@H@f`$?&8BCHC06H@0HC;0&RBJf8QB" _&Nu3!"`0123456789abcdefghijklmnopqrstuvwxyz/ &y. g/ &S?<INA\O`&y. g/ &S?<INA\O`&_NuJg/bg2 4gf!Sf`f`!Sg"gH?LxH?LxH?LxH?Lx`H?Lx8H?LxH?LxH?LxH?LxH?LxpH?LxHH?Lx H?LH?SfvLx2|HgS@!!Q|gSA!Q`2 4gfSf`f`S"gH?LxHxLxHx(LxHxPLxHxxLxHxLxHxLxHxLxHxLxHx@LxHxhLxHxLxHxLHSfxLx2|HgS@ Q|gSAQ _Nu  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~@@@@@@@@@@@@@@@@@@@@@@@@@@@::::::8888888888888888888866666644444444444444444444@  !"#  !"#$jD BJjD$HBJBf"$HBJBf $jDNuHBЂ$jDNuHBЂ$jDNu#/#/NA$y/ y/N/ ??<>NAXO$_Nu??<LNA?/?<1NA/ /?< NA\O$_Nu/ ?/?<=NAPO$_Nu PMMU address translation table modul V2.0. New commands: 'MT' : Display actual table head 'MT ' : Display table head of prozess 'MT ' : Display table head of prozess 'MTS' : Display supervisor table head 'MTU' : Display user table head 'MS' : Short display of actual table 'MS ' : Short display of process table 'MS ' : Short display of process table 'MSS' : Short display of supervisor table 'MSU' : Short display of user table 'MF' : Full display of actual table 'MF ' : Full display of process table 'MF ' : Full display of process table 'MF' : Full display of supervisor table 'MF' : Full display of user table The actual table is selected by testing the S-bit in the SR register. User or supervisor table are selected from the rootpointer registers. The commands with or are only available on MultiTOS. is the process identifier number without brackets! is the process name without brackets and without file extensions! The joker char <*> can be used in the specification. GemDos calls are made to get the pointer of the pointer of the context structure of each process. Due to the fact that GemDos is not reentrant it might be possible that the commands with or are rejected. U:\PROC\ Requested process not found or access to GemDos functions denied. Process : %s Basepage : $%08lX, Struct Process : $%08lX, Struct Context : $%08lX TEXT Segment DATA Segment BSS Segment $%08lX - $%08lX $%08lX - $%08lX $%08lX - $%08lX*.%03d.*p PMMU modul V2.1 q PMMU table commands for TEMPLEMON installed. 1992 by Johannes Hill & Karsten Isakovic Modulinitialisation failed. Installation aborted. TC......$%08lX {Mask $%08lX Pagesize %08lx} CRP.....$%08lX RootTable....$%08lX Rootreg.$%08lX RootTable....$%08lX SRP.....$%08lX RootTable....$%08lX TT0.....$%08lX TT1..........$%08lX PMask...$%08lX ------------------------------------------------------- Bits /Level %8d %8d %8d %8d Anz /Level %8d %8d %8d %8d Offset/Level $%08lX $%08lX $%08lX $%08lX Entrys.. %8d Tables.......%4d/%4d with doubles [ Table : Entry ] Log.Addr = Phys.Addr Flags %08lX - %08lX : Invalid %08lX - %08lX = %c %c %c %c %c [%8lx : %08lX] %08lX = invalid [%8lx : %08lX] %08lX = %08lX [%8lx : %08lX %08lX] %08lX = %08lX [%8lx : %08lX] -> Table %08lX [%8lx : %08lX %08lX] -> Table %08lX %c %c %c ....Pr  ` &&:0` p B  @ \  R DR.V       LDh `z ZJ .Z; ************************************************************************* ; * * ; * T M O N M O D T . E X E * ; * * ; * 1992 by Johannes Hill * ; * * ; * This program adds a new address translation table to TempleMon. The * ; * address translation structur is linear and flat. This table does not * ; * limit access of TempleMon to any address space! * ; * * ; ************************************************************************* ; * * ; * This program requires memory protection state GLOBAL! Set also the * ; * program flags FASTLOAD, LOAD INTO TT RAM and ALTERNATE MALLOC! * ; * * ; ************************************************************************* ; This is a specific optimized PMMU table for TempleMon only! ; DO NOT USE for TOS! ; No guarantee for correct behavior! ; Only for 68030 CPU's! ; DO NOT USE with other PMMU programming programms! ; If a 'PMMU` cookie jar entry is found this will program abort ; (for VRAM and OUTSIDE)! ; This table does only use three stages of address translation! All page ; descriptors are early termination desriptors! anfang: bra start ; These leading words are necessary to move the table to a quad word beginning ; address! DO NOT remove them! dc.l 0 dc.l 0 dc.l 0 dc.l 0 table_main: dc.l $00000002 ; short format table descriptor ; will point to label table_00_B dc.l $10000001 ; short format early termination dc.l $20000001 ; short format early termination dc.l $30000001 ; short format early termination dc.l $40000001 ; short format early termination dc.l $50000001 ; short format early termination dc.l $60000001 ; short format early termination dc.l $70000001 ; short format early termination dc.l $80000001 ; short format early termination dc.l $90000001 ; short format early termination dc.l $A0000001 ; short format early termination dc.l $B0000001 ; short format early termination dc.l $C0000001 ; short format early termination dc.l $D0000001 ; short format early termination dc.l $E0000001 ; short format early termination dc.l $F0000001 ; short format early termination ; cache inhibit for I/O and VME via ; register TT0! table_00_B: dc.l $00000002 ; short format table descriptor ; will point to label table_00_C dc.l $01000001 ; short format early termination dc.l $02000001 ; short format early termination dc.l $03000001 ; short format early termination dc.l $04000001 ; short format early termination dc.l $05000001 ; short format early termination dc.l $06000001 ; short format early termination dc.l $07000001 ; short format early termination dc.l $08000001 ; short format early termination dc.l $09000001 ; short format early termination dc.l $0A000001 ; short format early termination dc.l $0B000001 ; short format early termination dc.l $0C000001 ; short format early termination dc.l $0D000001 ; short format early termination dc.l $0E000001 ; short format early termination dc.l $0F000001 ; short format early termination table_00_C: dc.l $00000001 ; short format early termination dc.l $00100001 ; short format early termination dc.l $00200001 ; short format early termination dc.l $00300001 ; short format early termination dc.l $00400001 ; short format early termination dc.l $00500001 ; short format early termination dc.l $00600001 ; short format early termination dc.l $00700001 ; short format early termination dc.l $00800001 ; short format early termination dc.l $00900001 ; short format early termination dc.l $00A00001 ; short format early termination dc.l $00B00001 ; short format early termination dc.l $00C00001 ; short format early termination dc.l $00D00001 ; short format early termination dc.l $00E00001 ; short format early termination dc.l $00F00041 ; short format early termination, ; with cache inhibit table_end: start: move.l 4(SP),A5 move.l A5,basepage lea stackhigh,SP move.l SP,A6 suba.l A5,A6 addq.l #2,A6 move.l A6,-(SP) move.l A5,-(SP) clr.w -(SP) move.w #$4A,-(SP) ; Mshrink trap #1 lea $C(SP),SP clr.l -(SP) ; switch to supervisor mode move.w #$20,-(SP) trap #1 addq.l #6,SP pea Mess(PC) ; print program message move.w #9,-(SP) trap #1 addq.l #6,SP movea.l $05A0,A3 ; check Cookie Jar movea.l A3,A0 tst.l $05A0 ; abort if cookie jar is absent beq no_TMon search_pmmu: cmpi.l #'PMMU',(A0) ; check for 'PMMU' cookie beq PMMU ; and abort if found addq.l #8,A0 tst.l (A0) bne search_pmmu search: cmpi.l #'TMon',(A3) ; check for 'TMon' cookie beq dotmon ; start building address transl. table addq.l #8,A3 tst.l (A3) bne search PMMU: pea PMMU_Mess(PC) ; abort if 'PMMU' cookie found bra prg_abort no_TMon: pea no_TMon_Mess(PC) ; abort if TempleMon not found bra prg_abort no_68030: pea no_68030_Mess(PC) ; abort if no 68030 CPU prg_abort: move.w #9,-(SP) ; print abort message trap #1 addq.l #6,SP move.w #-1,-(SP) move.w #$4C,-(SP) trap #1 ; PTERM(-1) bra no_TMon dotmon: move.l 4(A3),A3 ; get TempleMon function handler moveq #0,D0 ; get TempleMon internal stuff jsr (A3) ; call TempleMon andi.b #$F,D1 ; mask CPU identifier cmpi.b #3,D1 ; is CPU 68030? bne no_68030 ; abort if not moveq #23,D0 ; get/set address translation stuff moveq #0,D1 ; switch off TempleMon address table move.l D1,A0 ; no extra routine for TempleMon to be ; called from TempleMon just before it ; switches to its own address tree jsr (A3) ; call TempleMon move.l A0,A4 ; save pointer to PMMU register structure lea table_main(PC),A0 ; compute quad wird address move.l A0,D0 andi.w #$FFF0,D0 move.l D0,A1 move.l A1,A2 lea table_end(PC),A5 loop: move.l (A0)+,(A2)+ ; move table to quad word address cmpa.l A5,A0 bcs loop move.l #table_00_B-table_main,D0 add.l A1,D0 ; install pointer to stage B in table or.l D0,(A1) move.l #table_00_C-table_main,D0 add.l A1,D0 ; install pointer to stage C in table or.l D0,table_00_B-table_main(A1) move.l #$80000002,D0 move.l D0,(A4) ; set High-long word of CRP move.l A1,4(A4) ; set table address of CRP move.l D0,8(A4) ; set High-long word of SRP move.l A1,12(A4) ; set table address of SRP move.l #$80F04445,16(A4) ; set TC move.l #$FE018707,20(A4) ; set TT0 clr.l 24(A4) ; set TT1 suba.l a0,a0 ; no additinal routine for TempleMon moveq #23,D0 ; get/set address translation stuff moveq #-1,D1 ; switch on TempleMon address table jsr (A3) ; call TempleMon pea installed(PC) ; print install message move.w #9,-(SP) trap #1 addq.l #6,SP clr.w -(SP) ; keep only table resident in memory lea table_end(PC),A0 suba.l basepage,A0 move.l A0,-(SP) move.w #$31,-(SP) trap #1 bra no_TMon Mess: dc.b $1B,'p TMONMODT V1.0 07/01/92',$1B,'q',13,10 dc.b ' Johannes Hill',13,10,0 no_TMon_Mess: dc.b ' TempleMon not found! ',13,10,7,0 no_68030_Mess: dc.b ' Sorry, wrong CPU! ',13,10,7,0 PMMU_Mess: dc.b ' Sorry, PMMU programming program found! ',13,10,0 installed: dc.b ' New PMMU table for TempleMon installed.',13,10,0 BSS basepage: ds.l 1 stack: ds.b 1024 stackhigh: ds.b 2 END . X.. 0BEISPIELC DBEISPIELTOS DCHANGES README )AWATCHDOGACC DSHOWSYMBC BTMONMODSEXE E) SHOWSYMBH B SYM2SMB PRG Cn SYMBOL PRG s!WDOG_TSRPRG DSHOWSYMBPRJ CnWATCHDOGRSC D SUBROUT S C h SYSTEM SMB CZvoid sub1 (void) { long i; for (i = 0; i < 100000L; i++) ; } void sub2 (void) { long i; for (i = 0; i < 500000L; i++) ; } void sub3 (void) { long i; for (i = 0; i < 1000000L; i++) ; } void main (void) { sub1 (); sub2 (); sub3 (); } `N*&^``>>>> PURE-C <<<< for ATARI-ST Version 1.0 (C)88-90 Borland International &H f&op`B@#x3| k # Ј<.@#~Jy|g<"@(I$k,"Jf"JfB// ?<?<JNAO A<~kRrRAfA6<HCBB`6 !jBJ)gHiRC` "fSI "WSAkHiRCBSQJ)gHiRCHy`$ON0 J"LN? 9Pg @N 9Tg @NN?<LNAp`RmNup`R mNup`RB@mNuNNNNuA(p"@ "BylA1B3l3nO"Nu/ Hz?<&NN\O$_Nu/ &yp g/ &S?<INA\O`&yt g/ &S?<INA\O`&_Nu_PgmSize_MemCluLt_MemBlkLp_BasPagxsub3sub2sub1mainexitrerrnoN__exit__text__bssx_app|_AtExitVP__dataN_fpuvectX_FreeAll_fpumodel_fpuinit_StkSize_fpuctrln_StkLim~_FilSysVT_RedirTar  V QDB1lbd0/~Uq  % * *>* (D:\C\DIVERSES\BEISPIEL.Cisub3sub2sub1main***************************************** * nderungen am Resident Symbol Driver: * ***************************************** nderungen der Version 1.20 gegenber 1.19: =========================================== - Ab der Version 1.20 wird auch das Erweiterte Symbolformat von Sozobon 2.0 untersttzt. Damit ist es nun auch Benutzern dieses Public-Domain-Compilers mglich, Acessories und TSR-Programme mit den vollstndigen Symbol-Namen zu debuggen. nderungen der Version 1.19 gegenber 1.18: =========================================== - Die Programmnamen mssen nun nicht mehr den Dateityp (neudeutsch Extension) beinhalten, wenn man auf die zugehrigen Symboltabellen zugreifen will. So reicht z.B. "FIREWORK" aus, um "FIREWORK.PRG" auszuwhlen. Natrlich kann man auch mit dem Wildcard '*' arbeiten. - Als weitere Anpassung an MiNT knnen nun die Programmnamen maximal 15 Zeichen (14 Zeichen + 1 Nullbyte) gro werden. Damit verschieben sich aber alle anderen Werte in der Struktur um 2 Bytes!! Es ist aber besser, diese nderung jetzt als spter vorzunehmen, bevor andere Programme (auer meinen eigenen) sich auf die Anordnung der Elemente in der Struktur verlassen. nderungen der Version 1.18 gegenber 1.17: =========================================== - Die Routine GetSymbolValue wurde dahingehend gendert, da man nicht mehr den vollstndigen Symbolnamen eingeben mu. Man kann nun bei einer beliebigen Stelle den Wildcard '*' einsetzen. - Weitere Erweiterungen fr MiNT wurden vorgenommen. So werden nun auch die neuen PEXEC-Modi 100, 104, und 106 beachtet und ausgewertet. - Die nachfolgenden GEMDOS-Routinen werden nun "sauber" angesprungen. nderungen der Version 1.17 gegenber 1.16: =========================================== - Anpassung an die mehrfache Installation des Symbol-Treibers vorgenommen. Damit kann man nun mehrere Treiber laden!! (unter MiNT hilfreich) - Unter MiNT wird immer Mxalloc(Gre,0x4030) benutzt, so da die vom Treiber nachgeladenen Symboltabellen von allen Prozessen im Supervisor-Modus erreicht werden knnen. Zudem wird auf diese Art und Weise unter MiNT die Freigabe des Speichers bei der Prozessbeendigung verhindert. nderungen der Version 1.16 gegenber 1.15: =========================================== - Stabilitt des Treibers verbessert. Nun kann man auch INTERFACE mehrmals aufrufen. Leider bietet das TOS bis heute keine vernnftige und legale Methode an, damit sich ein speicherresidentes Utility jederzeit Speicher fr sich reservieren kann, ohne da bei einer Programmbeendigung dieser Speicher wieder freigegeben wird. Vielleicht wird das ja mal besser... nderungen der Version 1.15 gegenber 1.14: =========================================== - Die Funktion AddSymbolTable wurde erweitert. Wenn nun statt der Adresse der Basepage eines Programmes der Wert NULL bergeben wird, so wird eine fertige Symboltabelle geladen. Das Format dieser Symboltabelle kann der Datei README entnommen werden. - Die Routinen AddSymbolTable und RemoveSymbolTable besitzen nun einen neuen Returncode: der Wert 2 besagt, da die Funktion nicht ausgefhrt werden konnte, da gerade ein Zugriff auf die Tabellen erfolgt (kann eigentlich nur unter MultiTOS passieren). Dieser Returncode mu also einen neuen Versuch nach sich ziehen, die betreffende Funktion mu also nochmals aufgerufen wer- den. - Wenn nun versucht wird, eine beliebige Datei als Programm zu starten, so wird dies nun bemerkt und mit dem GEMDOS-Fehler -66 abgebrochen. - Fehler bei der Zusammenarbeit mit GEMDOS beseitigt. Nachdem das letzte Auto- Ordner-Programm gestartet wurde, erfolgt ein PEXEC (0, NULL (!!!), ...), der zu einer gewaltigen Verwirrung gefhrt hat, da beim folgenden FOPEN-Aufruf des Symbol-Treibers ein Fehler zwar entdeckt, jedoch nicht mehr an die nach- folgenden TRAP-Handler weitergeleitet wurde. Dies geschah in der Annahme, da es ausreicht, den Fehler an den Aufrufer zurckzugeben. Jedoch mu man bei einem NULL-Zeiger als Programmnamen jeden Fehler ignorieren!! - Beim Programmstart versucht der Symbol-Treiber, die Datei "\AUTO\SYSTEM.SMB" zu laden. Hierbei handelt es sich um eine fertige Symboltabelle, die die Adressen der bekannten Systemvariablen und Hardware-Bausteine beinhaltet. - Fehler bei der Behandlung des MFREE-Aufrufs von Chamleon beseitigt. Man sollte halt nie versuchen, einen Speicherbereich mehrfreich freizugeben... nderungen der Version 1.14 gegenber 1.13: =========================================== - Die Funktion GetSymbolValue wurde komplett berarbeitet. Neben der bisher vorhandenen Mglichkeit, einen Programmnamen zu bergeben, gibt es nun auch eine andere Variante: Hierzu bergibt man in A0 einen String des Formats "Programmname:Symbolname" und in A1 einen NULL-Zeiger. Dies erleichtert die Zusammenarbeit mit Programmen wie z.B. Templmon, da nun der Resident Symbol Driver diesen String "zerlegt". - Bei der Suche eines Symbols arbeitet GetSymbolValue nun nach dem folgenden Prinzip: wenn ein Programmname angegeben wurde, so wird das Symbol nur in den Programmen gesucht, fr die der Name pat. Andernfalls wird zuerst die Symboltabelle des aktiven Programmes durchsucht. Sollte danach das Symbol immer noch nicht gefunden sein, so werden zuletzt alle Tabellen berprft. - Der Resident Symbol Driver braucht nicht mehr vor dem Templemon gestartet zu werden, da er sich nun mit einer neuen Funktion des Templemons nachtrglich installieren kann. nderungen der Version 1.13 gegenber den Vorgngern: ===================================================== - Beim Aufruf der Funktion GetSymbolValue ist es nun mglich, innerhalb des Programmnamens den Allquantor '*' einzusetzen. Somit braucht nicht mehr der gesamte Name angegeben werden (z.B.: "NVDI*") - Der Treiber kann nun auch in den AUTO-Ordner kopiert werden. Sinnvollerweise sollte er mglichst am Anfang der Programme stehen, damit von allen folgenden Programmen die Symboltabellen geladen werden. - Ein Fehler bei der Sortierung der Symbole wurde beseitigt. Nun werden wirklich alle Symbole bernommen. ******************************** * Resident Symbol Driver V1.20 * ******************************** * Public-Domain-Software * * (Stand 05.08.92) * ******************************** Unter der Voraussetzung, da die Dateien README (diese Datei) CHANGES (bisherige nderungen am Symbol-Treiber) C_SOURCE\ SHOWSYMB.C (ein Beispielprogramm in C) SHOWSYMB.H (die Definitionen der Symbol-Strukturen) SHOWSYMB.PRJ (die TurboC/PureC-Projektdatei) SUBROUT.S (die Assembler-C-Schnittstelle) SYMBOL.120\ SYMBOL.PRG (Resident Symbol Driver - der eigentliche Treiber) SYSTEM.SMB (die System-Symboltabelle (s.u.)) SYM2SMB.PRG (Konvertierer TurboAss *.SYM => *.SMB) TEMPLMON.MOD\ CHANGES (nderungen am Templemon-Modul) DEUTSCH\ TMONMODS.EXE (Templemon-Modul zur Symboltabellen-Verwaltung) ENGLISH\ TMONMODS.EXE (Templemon-Modul (Texte in Englisch)) WATCHDOG.110\ README (README zum Shareware-Programm WATCHDOG) CHANGES (nderungen von WATCHDOG) WATCHDOG.ACC (Steueraccessory von WATCHDOG) WATCHDOG.RSC (Resourcedatei fr das Accessory) WDOG_TSR.PRG (speicherresidenter Teil von WATCHDOG) BEISPIEL.TOS (Beispielprogramm; nheres siehe WATCHDOG\README) BEISPIEL.C (Source-Code zum Beispielprogramm) unverndert kopiert werden, darf dieses Programm fr private Anwender frei kopiert und benutzt werden. Kommerzielle Nutzung in jeder Form (dies schliet auch den Vertrieb ber Public-Domain-Sammeldisketten oder hnliches ein) ist **************************** ** NICHT GESTATTET !! ** **************************** Hinweis / Copyright: ==================== Fr eventuelle auftretende Probleme oder Datenverluste, die bei Benutzung dieses Programmes entstehen, wird keine Haftung bernommen. Aufgrund der Funktionsweise kann es zu Strungen beim Betrieb mit anderen Programmen kommen. Da ich nicht in der Lage bin, Tests ber die Vertrglichkeit mit allen vorhandenen Programmen zu machen, wre ich jedem dankbar, der mir ein Problem beschreiben knnte. Dazu brauche ich allerdings die Sicherheit, da der Fehler nur im Zusammenhang mit dem betreffenden Programm auftritt und nicht der Seiteneffekt eines anderen Programmes ist. Deshalb sollte man vorher alle anderen Programme entfernen und versuchen, die Bedingungen, unter denen der Fehler auftrat, wiederherzustellen. Wenn der Fehler dann immer noch auftritt, so bitte ich die betreffende Person, sich mit mir schriftlich in Verbindung zu setzen. Fr Fragen, Wnsche, Verbesserungen oder Probleme wenden Sie sich bitte an: Robert Federle, Rungestr. 3, W-8900 Augsburg 22 Funktion: ========= Dieses Programm installiert fr jedes geladene Programm zustzlich eine Symboltabelle im Speicher, falls das Programm eine solche Tabelle besitzt. Damit ist es nun mglich, in Verbindung mit einem entsprechend angepaten Debugger (z.B. Templemon) Accessories und speicherresidente Programm wie ein normales Programm zu debuggen. Der Treiber installiert sich resident im Speicher und verbiegt den GEMDOS-Vektor (TRAP #1) sowie etv_term nach dem XBRA-Verfahren. Auerdem wird in der Cookie-Jar-Tabelle ein Cookie mit dem Namen "SYMB" angelegt, dessen Parameter ein Zeiger auf die Schnittstellen-Struktur SymbolCookie (siehe unten) ist. Folgende GEMDOS-Funktionsaufrufe werden abgefangen: PEXEC, PTERM0, PTERM, PTERMRES und MFREE. Wenn nun ein Programm mit PEXEC (0, ...) oder PEXEC (3, ...) gestartet wird, so wird aus dem Dateikopf ermittelt, ob eine Symboltabelle an das Programm angehngt ist. Dann wird ein Speicherblock angefordert, der gro genug ist, die Tabelle sowie Zusatzinformationen aufzunehmen. Diese Tabelle wird ber eine Struktur in die verkettete Liste eingehngt. Danach wird das Programm mit dem Modus 3 geladen, die Daten aus der Basepage geholt und dann PEXEC (4, ...) ausgefhrt. Wenn ein Programm beendet wird, so wird die zugehrige Struktur aus der Liste ausgehngt und der Speicher fr das Programm sowie fr die Symboltabelle freigegeben. Der MFREE-Aufruf wird nur deshalb abgefangen, um auch das Debuggen von ACCs, die mit Hilfe von Chamleon nachgeladen wurden, zu ermglichen. Diese ACCs werden mittels PEXEC (3, ...) geladen, jedoch niemals mit PTERM o.. beendet!! Aus diesem Grund wird bei einem MFREE-Aufruf geprft, ob es sich bei der bergebenen Adresse um die Basepage eines im Speicher befindlichen Programms handelt. Die verwendeten Strukturen: =========================== Die Liste der im Speicher befindlichen Symbol-Strukturen ist ber den Cookie "SYMB" erreichbar. Der Cookie-Parameter stellt dabei einen Zeiger auf folgende Struktur dar: typedef struct SYMBOLCOOKIE { WORD Version; /* Aktuelle Versionsnummer des Treibers */ WORD Revision; /* Aktuelle Revisionsnr. des Treibers */ SymbolHeader *First; /* Zeiger auf die 1. Struktur oder NULL */ long (*GetSymbolName) (); /* Adresse in Symbolnamen umwandeln */ long (*GetSymbolValue) (); /* Symbolname in Adresse umwandeln */ long (*AddSymbolTable) (); /* Symboltabelle hinzufgen */ long (*RemoveSymbolTable) (); /* Symboltabelle entfernen */ } SymbolCookie; oder in Assembler: SymbolCookie: Version EQU 0 Revision EQU 2 First EQU 4 GetSymbolName EQU 8 GetSymbolValue EQU 12 AddSymbolTable EQU 16 RemoveSymbolTable EQU 20 Die Struktur fr jede Symbol-Tabelle hat folgendes Format: typedef struct SYMBOLHEADER { char ProgramName [13]; /* Programmname (gro, 0-terminiert) */ char reserved; /* reserviert */ WORD SymbolCount; /* Anzahl der Symbole (TEXT, DATA, BSS) */ WORD FirstData; /* Index des ersten DATA-Symbols */ WORD FirstBss; /* Index des ersten BSS-Symbols */ void *SymbolValues; /* Zeiger auf die Werte-Offset-Tabelle */ void *SymbolNames; /* Zeiger auf die Namens-Offset-Tabelle */ Symbol *SymbolData; /* Zeiger auf die Symboldaten */ LONG FirstAddress; /* TEXT-Segment-Start */ LONG LastAddress; /* BSS-Segment-Start + BSS-Segment-Gre */ BASPAG *Basepage; /* Zeiger auf die Basepage des Programms */ struct SYMBOLHEADER *Next; /* Zeiger auf die nchste Struktur */ } SymbolHeader; oder in Assembler: ProgramName: ds.b 13 reserved: ds.b 1 SymbolCount: ds.w 1 FirstData: ds.w 1 FirstBss: ds.w 1 SymbolValues: ds.l 1 SymbolNames: ds.l 1 SymbolData: ds.l 1 FirstAddress: ds.l 1 LastAddress: ds.l 1 Basepage: ds.l 1 Next: ds.l 1 Bei den Offsettabellen SymbolValues und SymbolNames handelt es sich jeweils um 16-Bit groe Eintrge, die relativ zu den Symboldaten ab SymbolData zu verstehen sind. Die Symboldaten werden in einem eigenen Format im Speicher abgelegt: typedef struct SYMBOL { LONG Value; /* Wert des Symbols */ BYTE Type; /* Typ-Byte / Gren-Byte des Symbols */ BYTE Name []; /* Symbolname (0-terminiert) */ } Symbol; oder in Assembler: Symbol: Value: ds.l 1 Type: ds.b 1 Name: ds.b 1 ; bis zu 22 Zeichen + 1 Null-Byte Die Bits 7 bis 5 von Type bestimmen den Typ des Symbols. Wenn Bit 7 gesetzt ist, so handelt es sich um ein DATA-Symbol. Bit 6 ist fr TEXT-Symbole und Bit 5 fr BSS-Symbole zustndig. Wenn alle 3 Bits gesetzt sind, so handelt es sich um ein System-Symbol aus einer Symboldatei. Die restlichen Bits 6-0 geben an, wie gro die aktuelle Struktur in Bytes ist. Beispieladressierung: ===================== Jeder Eintrag in der Offset-Tabelle gibt an, ab welcher Position in den Symboldaten das zugehrige Symbol steht. Z.B.: SymbolData = $10000, Offset = $246 => Symboldaten stehen bei $10246 Um z.B. das erste DATA-Symbol zu erreichen, sind folgende Schritte ntig: In C: (Pointer zeigt auf die Symbol-Struktur) WORD Index, Offset; Symbol *SymbolPointer; Index = Pointer->FirstData; Offset = (Pointer->SymbolValues) [Index]; SymbolPointer = (Symbol *) ((LONG) Pointer->SymbolData + (LONG) (Offset); oder in Assembler: (A0 zeigt auf die Symbol-Struktur) move.w FirstData(A0),D0 ; 1. Index der DATA-Symbole holen add.w D0,D0 ; mal 2 (wegen WORD) movea.l SymbolValues(A0),A1 ; Zeiger auf die Werte-Offsets holen move.w 0(A1,D0.w),D0 ; Offset holen movea.l SymbolData(A0),A1 ; Zeiger auf die Symbol-Daten holen adda.w D0,A1 ; Offset addieren Die Funktionen-Schnittstelle: ============================= Der Cookie-Wert zeigt auf die Schnittstellen-Struktur vom Typ SymbolCookie. In diese Struktur sind die Adressen von 4 Routinen eingetragen, mit denen die internen Routinen aufgerufen werden knnen. Allen Routinen ist gemeinsam, da sie nur die Register verndern, die fr die Parameterbergabe bentigt werden. Die restlichen Register werden von den Routinen vorher gerettet. Folgende Routinen stehen derzeit zur Verfgung: ****************** * GetSymbolName: * **************************************************** * IN: D0.l: Adresse, zu der der Name gesucht wird * * OUT: D0.l: = 0: Symbol gefunden * * A0.l: Zeiger auf Symboldaten * * A1.l: Zeiger auf die Struktur * * <>0: Symbol nicht gefunden * **************************************************** Diese Routine wird eingesetzt, um zu einer bekannten Adresse einen passenden Symbolnamen zu suchen, falls ein Symbol mit einem entsprechenden Wert in einem der im Speicher befindlichen Programm existiert. Die Adresse, zu der der Symbolwert gesucht wird, wird in D0 bergeben. Nach Aufruf der Routine gibt D0 an, ob das Symbol gefunden wurde (D0.l = 0) oder ob ein passendes Symbol nicht existiert (D0.l <> 0). Nach einer erfolgreichen Suche zeigt A0 auf die interne Symbolstruktur (siehe unten), wohingegen das Register A1 auf die zugehrige Symboltabellenstruktur zeigt. Somit kann man herausbekommen, in welchem Programm die Adresse liegt. ******************* * GetSymbolValue: * ********************************************************************** * IN: A0.l: Zeiger auf Symbolnamen * * A1.l: Zeiger auf Programmnamen oder NULL fr alle Programme * * Der Programmname kann auch den Allquantor '*' enthalten * * OUT: D0.l: = 0: Symbol gefunden * * A0.l: Zeiger auf Symboldaten * * A1.l: Zeiger auf die Struktur * * <>0: Symbol nicht gefunden * ********************************************************************** Diese Routine stellt das Gegenstck zu GetSymbolName dar, indem zu einem gegebenen Symbolnamen der zugehrige Symbolwert gesucht wird. Hierzu wird in A0 ein Zeiger auf den 0-terminierten Symbolnamen und in A1 ein Zeiger auf den Programmnamen bergeben. Wenn in A1 der Wert NULL bergeben wird, so wird zuerst die Symboltabelle des aktuellen Programms durchsucht. Sollte dabei kein Treffer erzielt werden, so wird die Tabelle vom Anfang an durchsucht. Wenn in A1 ein Zeiger ungleich NULL bergeben wird oder wenn der in A0 bergebene String das Format 'Programmname:Symbolname' besitzt, so werden nur die Symboltabellen der Programme untersucht, auf die der Programmname pat. Da im Programmnamen auch der Wildcard '*' zugelassen ist, kann man somit auch Programme debuggen, die aus mehreren Teilen bestehen (z.B. ein vektorverbiegen- des, residentes Programm zusammen mit seinem Steueraccessory). In D0 wird nach dem Aufruf wieder der Erfolg (D0.l = 0) oder Misserfolg (D0.l <> 0) gemeldet. Die Register A0 und A1 enthalten nach einer erfolgreichen Suche die entsprechenden Zeiger (nheres siehe GetSymbolName). ******************* * AddSymbolTable: * ************************************************ * IN: A0.l: Zeiger auf den Programmnamen * * A1.l: Zeiger auf die Basepage oder NULL * * OUT: D0.l: = 0: Tabelle geladen * * <>0: Fehler aufgetreten * ************************************************ Mit dieser Funktion kann nachtrglich eine Symboltabelle in die verkette Liste eingehngt werden. Hierzu wird in A0 ein Zeiger auf den Programmnamen und in A1 ein Zeiger auf die Basepage im Speicher oder der Wert NULL bergeben. A0 mu dabei auch den Pfad enthalten, wenn das Programm nicht im aktuellen Directory steht. Der Wert NULL hat fr das Register A1 eine besondere Bedeutung: hiermit wird angezeigt, da es sich bei dem Pfadnamen in A0 um den Namen einer fertigen Symboltabelle handelt, die nur eingelesen werden mu. Als Ergebnis erhlt man in D0 entweder den Wert 0 (= Tabelle konnte geladen werden), den Wert 1 (= ein Fehler ist aufgetreten) oder den Wert 2 (= der Treiber ist gerade durch einen anderen Prozess belegt). ********************** * RemoveSymbolTable: * ******************************************* * IN: A0.l: Zeiger auf Programmnamen * * OUT: D0.l: = 0: Tabelle entfernt * * <>0: Programm nicht gefunden * ******************************************* Mit dieser Routine kann eine Symboltabelle aus der verketten Liste ausgehngt werden. Hierzu bergibt man in A0 einen Zeiger auf den eigentlichen Programmname (z.B. "EDITOR.PRG"). Als Ergebnis erhlt man in D0 entweder den Wert 0 (= Tabelle konnte entfernt werden), den Wert 1 (= Programm konnte nicht gefunden werden) oder den Wert 2 (= der Treiber ist gerade durch einen anderen Prozess belegt). Beispielprogramm: ================= Im Ordner C_SOURCE findet sich der Sourcecode fr ein Programm, mit dem die im Speicher befindlichen Strukturen angezeigt werden knnen. Dieses Programm demonstriert auerdem die Anwendung der internen Funktionen und stellt zustzlich eine Schnittstelle fr PureC-Programm dar (siehe SUBROUT.S). Utilities: ========== Die Datei SYSTEM.SMB enthlt alle Definitionen bis einschlielich TOS 3.01, die fr die Betriebssystemvariablen und Hardwareadressen ntig sind (entnommen aus dem Atari Profibuch ST/STE/TT von Jankowski/Rabich/Reschke aus dem Sybex- Verlag. Diese Datei sollte in den Auto-Ordner des Bootlaufwerks kopiert werden, da der Symbol-Treiber beim Hochfahren des Rechners diese Datei automatisch ldt. Das Format einer solchen Symboldatei mu wie folgt aussehen: typedef struct { LONG Size; /* Gre der Symboldaten in Bytes */ WORD Count; /* Anzahl der folgenden Symbole */ Symbol Data [Size]; /* Symboldaten */ } SymbolFile; Bei den Symboldaten mu man darauf achten, da jedes Symbol aus einer geraden Anzahl an Bytes besteht. Notfalls mu man ein Fllbyte am Schlu hinzufgen und die Gre der Symbolstruktur (Definition siehe oben) anpassen. Die Dateiextension fr die Symboldateien des Resident Symbol Drivers sollte SMB lauten, damit es nicht zu einer Verwechslung mit den TurboAss-Symboldateien *.SYM kommt. Damit die Erstellung einer Symboldatei einfacher ist, kann man das Programm SYM2SMB.PRG benutzen, das eine Symboldatei des TurboAss von -Soft in das bentigte Symbolformat konvertiert. *************************************************************************** * Achtung! Die Symboldateien tauchen in der Programmbersicht nicht auf!! * *************************************************************************** Autor: ====== Robert Federle Rungestr. 3 8900 Augsburg 22