<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="http://thomasefer.de/gadgets/Blog/templates/atom.xsl" ?><feed xmlns="http://www.w3.org/2005/Atom">
<link rel="self"  href="http://thomasefer.de/data/xml/blog.atom" title="ThomasEfer.de" />
<title  type="text" >ThomasEfer.de</title>
	<author>
		<name>Thomas Efer</name>
		<uri>http://thomasefer.de</uri>
	</author>
<subtitle  type="text" >Version 4.0β - jetzt neu mit Dipl.-Inf. (FH)...</subtitle>
<id>http://thomasefer.de</id>
<generator>JAWS 0.8.6</generator>
<rights  type="text" >2008, Thomas Efer</rights>
<updated>2009-07-05T17:29:39+02:00</updated>
<entry>
	<title  type="text" ><![CDATA[ LaTeX Syntax-Highlighting mit GeSHi ]]></title>
	<link rel="alternate"  type="text/html"  href="http://thomasefer.de/blog/show/LaTeX-Syntax-Highlighting-mit-GeSHi.html" title="LaTeX Syntax-Highlighting mit GeSHi" />
	<author>
		<name>Thomas Efer</name>
		<uri>http://thomasefer.de/admin.php</uri>
	</author>
	<id>http://thomasefer.de/blog/show/LaTeX-Syntax-Highlighting-mit-GeSHi.html</id>
	<updated>2007-06-25T20:00:00+02:00</updated>
	<published>2006-07-15T15:00:00+02:00</published>
	<summary  type="html" ><![CDATA[ <p><strong>Das Problem:</strong></p>
<p>Ich beschäftige mich an meiner Hochschule als Hilfskraft mit der Erstellung eines Wikis über "LaTeX für wissenschaftliche Arbeiten". Dabei muss ich nicht selten auch LaTeX-Sources einfügen. Und diese sehen, mit pre-Tags "formatiert", leider nur sehr unscheinbar und unübersichtlich aus. Aber, so dachte ich mir: MediaWiki kann doch alles - zumindest mit Plugins...</p>
<p>Doch zu meinem großen Erstaunen musste ich feststellen, dass es anscheined keine vernünftigen Syntax-Highlighter gibt, die in PHP geschrieben sind und LaTeX-Quelltexte hervorheben können. Eine einfache Integrierbarkeit eines solchen Tools in mein Wikisystem habe ich dabei noch garnicht vorausgesetzt.</p>
<p><strong>Die Lösung:</strong></p>
<p>Der <a title="GeSHi" href="http://qbnz.com/highlighter/">Generic Syntax Highlighter (GeSHi)</a> ist eine tolle PHP-Bibliothek mit der fast alle Sprachen "gehighlighted" werden können. Ein Mediawiki-Plugin dafür existiert auch schon. Von LaTeX gat der GeSHi allerdings (noch) keine Ahnung! Aber man kann ihm neue Sprachen beibringen. Dummerweise werden gerade jetzt bei der Weiterentwicklung von Version 1.0.x zu Version 1.1+ grundlegende Änderungen in den Sprachendateien stattfinden. Das bedeutet, dass man entweder für ein veraltetes System schreibt, oder schlecht dokumentierte neue Schnittstellen bedienen muss. Ich habe mich für "Variante 1" entschieden. Schließlich ist mein LaTeX-Highlighter ja auch eher für den "Hausgebrauch" gedacht. Und in meinem Wiki bestimme ich, was die "aktuelle" Version ist! <img src="plugins/Emoticons/images/icon_wink.gif" border="0" alt="icon_wink.gif "height="22px" style="margin-top: -4px; margin-bottom: -4px; vertical-align: -3px;"/></p>
<p>Nun habe ich mit meinem neu erlangten Wissen über Regular Expressions einen ersten Entwurf zusammenprogrammiert. Das Ganze hat sich als eine ziemliche Fummmelarbeit herausgestellt, unter anderem weil viele vorgefertigte GeSHi-Elemente für die (recht seltsame und "historisch gewachsene") TeX-Syntax nicht wirklich anwendbar sind.</p>
<p>Besonders toll ist, dass der Backslash sowohl in PHP als auch bei RegExes und natürlich in TeX selber ein Escape-Character ist... <img src="plugins/Emoticons/images/icon_arrow.gif" border="0" alt="icon_arrow.gif "height="22px" style="margin-top: -4px; margin-bottom: -4px; vertical-align: -3px;"/> "\\\\\\\\"</p>
<p>Mein Entwurf für die Sprachdefinitionsdatei ist unten angehängt. Viel Spaß damit - vielleicht wird er ja dem ein oder anderen nützlich sein.</p>
<p>Richtig zufrieden bin ich damit selbst noch nicht - immerhin gibt's jetzt LaTeX in bunt und übersichtlicher als nur "monospaced" dargestellt.</p>
<p><strong>Update (25. Juni 2007)</strong></p>
<p><a title="Matthias Pospiech" href="http://www.matthiaspospiech.de/blog/2007/06/25/syntaxhighlighting-von-latex-in-webseiten/">Matthias Pospiech</a> hat aufbauend auf meinem Entwurf (s. unten) zusammen mit dem Programmierer von GeSHi eine sehr vollständige Sprachdefinitionsatei für LaTeX erstellt. Diese ist jetzt Bestandteil von Geshi - und wird so auch mit MediaWiki, Wordpres, und vielen anderen großen PHP-Anwendungen mitgeliefert! <img src="plugins/Emoticons/images/icon_biggrin.gif" border="0" alt="icon_biggrin.gif "height="22px" style="margin-top: -4px; margin-bottom: -4px; vertical-align: -3px;"/></p>
<pre><div class="code"><div class="php php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">/*************************************************************************************
&#160;* efilatex.php
&#160;* -----
&#160;* Author: efi (mail_at_thomasefer_dot_de)
&#160;*************************************************************************************
&#160;*
&#160;* &#160; This file is not yet part of GeSHi. (and is not compatible to the 1.1+ branch)
&#160;*
&#160;* &#160; GeSHi is free software; you can redistribute it and/or modify
&#160;* &#160; it under the terms of the GNU General Public License as published by
&#160;* &#160; the Free Software Foundation; either version 2 of the License, or
&#160;* &#160; (at your option) any later version.
&#160;*
&#160;* &#160; GeSHi is distributed in the hope that it will be useful,
&#160;* &#160; but WITHOUT ANY WARRANTY; without even the implied warranty of
&#160;* &#160; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. &#160;See the
&#160;* &#160; GNU General Public License for more details.
&#160;*
&#160;* &#160; You should have received a copy of the GNU General Public License
&#160;* &#160; along with GeSHi; if not, write to the Free Software
&#160;* &#160; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA &#160;02111-1307 &#160;USA
&#160;*
&#160;************************************************************************************/</span>
<span style="color: #000088;">$language_data</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a> <span style="color: #009900;">&#40;</span>
&#160; &#160; <span style="">'LANG_NAME'</span> <span style="color: #339933;">=&gt;</span> <span style="">'efilatex'</span><span style="color: #339933;">,</span> <span style="color: #666666; font-style: italic;">// quick, dirty &amp; novice approach to highlight LaTeX</span>
&#160; &#160; <span style="">'COMMENT_SINGLE'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span> <span style="color: #339933;">=&gt;</span> <span style="">'%'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'COMMENT_MULTI'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'CASE_KEYWORDS'</span> <span style="color: #339933;">=&gt;</span> GESHI_CAPS_NO_CHANGE<span style="color: #339933;">,</span>
&#160; &#160; <span style="">'QUOTEMARKS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="">''</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'ESCAPE_CHAR'</span> <span style="color: #339933;">=&gt;</span> <span style="">''</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'KEYWORDS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; <span style="color: #cc66cc;">1</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="">'<span style="">\\</span>'</span>
&#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="color: #cc66cc;">2</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="">'cm'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="color: #cc66cc;">3</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="">'begin'</span><span style="color: #339933;">,</span> <span style="">'end'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="color: #cc66cc;">4</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="">'test4'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'SYMBOLS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; <span style="">'.'</span><span style="color: #339933;">,</span> <span style="">','</span><span style="color: #339933;">,</span><span style="">'<span style="">\\</span>'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;~&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;{&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;}&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;[&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;]&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;$&quot;</span>
&#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'CASE_SENSITIVE'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; GESHI_COMMENTS <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">true</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="color: #cc66cc;">1</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="color: #cc66cc;">2</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="color: #cc66cc;">3</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="color: #cc66cc;">4</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'STYLES'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; <span style="">'KEYWORDS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">1</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #b1b100; font-weight: bold;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">2</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #000000; font-weight: bold;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">3</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #000066; font-weight: normal;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">4</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #993333; font-weight: normal;'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="">'COMMENTS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">1</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #808080; font-style: italic;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">2</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #339933; font-weight: normal;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="">'MULTI'</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #808080; font-style: italic;'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="">'ESCAPE_CHAR'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color:#800080;">0</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #000099; font-weight: bold;'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="">'BRACKETS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color:#800080;">0</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #FF7766; font-weight: normal;'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="">'STRINGS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color:#800080;">0</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #ff0000; font-weight: normal;'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="">'NUMBERS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color:#800080;">0</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #cc66cc; font-weight: normal;'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="">'METHODS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">1</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #202020; font-weight: normal;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">2</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #202020; font-weight: normal;'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="">'SYMBOLS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color:#800080;">0</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #66ccFF; font-weight: normal;'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="">'REGEXPS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; <span style="color:#800080;">0</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #209090; font-weight: bold;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">1</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #202020; font-weight: bold;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">2</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #608020; font-weight: bold;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">3</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #F02020; font-weight: bold;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">4</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #CCF020; font-weight: bold;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">5</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #C000CC; font-weight: bold;'</span>
&#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="">'SCRIPT'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span>
&#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'URLS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'OOLANG'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'OBJECT_SPLITTERS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'REGEXPS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
<span style="color:#800080;">0</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_SEARCH <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;(<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>|~|&amp;|<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>_|<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>&amp;|<span style="color: #000099; font-weight: bold;">\\</span>$|<span style="color: #000099; font-weight: bold;">\|</span>)&quot;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_REPLACE <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>1'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_MODIFIERS <span style="color: #339933;">=&gt;</span> <span style="">''</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_BEFORE <span style="color: #339933;">=&gt;</span> <span style="">''</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_AFTER <span style="color: #339933;">=&gt;</span> <span style="">''</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="color: #666666; font-style: italic;">// \keywords</span>
<span style="color: #cc66cc;">1</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_SEARCH <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;(<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>)([a-zA-Z]+)&quot;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_REPLACE <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>1<span style="">\\</span>2'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_MODIFIERS <span style="color: #339933;">=&gt;</span> <span style="">''</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_BEFORE <span style="color: #339933;">=&gt;</span> <span style="">''</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_AFTER <span style="color: #339933;">=&gt;</span> <span style="">''</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="color: #666666; font-style: italic;">// {parameters}</span>
<span style="color: #cc66cc;">2</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_SEARCH <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;(<span style="color: #000099; font-weight: bold;">\\</span>{)(.+)(<span style="color: #000099; font-weight: bold;">\\</span>})&quot;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_REPLACE <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>2'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_MODIFIERS <span style="color: #339933;">=&gt;</span> <span style="">''</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_BEFORE <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>1'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_AFTER <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>3'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
<span style="color: #cc66cc;">3</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_SEARCH <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;(<span style="color: #000099; font-weight: bold;">\\</span>[)(.+)(<span style="color: #000099; font-weight: bold;">\\</span>])&quot;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_REPLACE <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>2'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_MODIFIERS <span style="color: #339933;">=&gt;</span> <span style="">''</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_BEFORE <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>1'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_AFTER <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>3'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
<span style="color: #cc66cc;">4</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_SEARCH <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;(<span style="color: #000099; font-weight: bold;">\\</span>$)(.+)(<span style="color: #000099; font-weight: bold;">\\</span>$)&quot;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_REPLACE <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>2'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_MODIFIERS <span style="color: #339933;">=&gt;</span> <span style="">''</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_BEFORE <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>1'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_AFTER <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>3'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
<span style="color: #cc66cc;">5</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_SEARCH <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;([&amp;])(.+?)([;])&quot;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_REPLACE <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>2<span style="">\\</span>3'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_MODIFIERS <span style="color: #339933;">=&gt;</span> <span style="">''</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_BEFORE <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>1'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_AFTER <span style="color: #339933;">=&gt;</span> <span style="">''</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'STRICT_MODE_APPLIES'</span> <span style="color: #339933;">=&gt;</span> GESHI_NEVER<span style="color: #339933;">,</span>
&#160; &#160; <span style="">'SCRIPT_DELIMITERS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'HIGHLIGHT_STRICT_BLOCK'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span>;

<span style="color: #000000; font-weight: bold;">?&gt;</span></div></div></pre> ]]></summary>
	<content  type="html" ><![CDATA[ <p><strong>Das Problem:</strong></p>
<p>Ich beschäftige mich an meiner Hochschule als Hilfskraft mit der Erstellung eines Wikis über "LaTeX für wissenschaftliche Arbeiten". Dabei muss ich nicht selten auch LaTeX-Sources einfügen. Und diese sehen, mit pre-Tags "formatiert", leider nur sehr unscheinbar und unübersichtlich aus. Aber, so dachte ich mir: MediaWiki kann doch alles - zumindest mit Plugins...</p>
<p>Doch zu meinem großen Erstaunen musste ich feststellen, dass es anscheined keine vernünftigen Syntax-Highlighter gibt, die in PHP geschrieben sind und LaTeX-Quelltexte hervorheben können. Eine einfache Integrierbarkeit eines solchen Tools in mein Wikisystem habe ich dabei noch garnicht vorausgesetzt.</p>
<p><strong>Die Lösung:</strong></p>
<p>Der <a title="GeSHi" href="http://qbnz.com/highlighter/">Generic Syntax Highlighter (GeSHi)</a> ist eine tolle PHP-Bibliothek mit der fast alle Sprachen "gehighlighted" werden können. Ein Mediawiki-Plugin dafür existiert auch schon. Von LaTeX gat der GeSHi allerdings (noch) keine Ahnung! Aber man kann ihm neue Sprachen beibringen. Dummerweise werden gerade jetzt bei der Weiterentwicklung von Version 1.0.x zu Version 1.1+ grundlegende Änderungen in den Sprachendateien stattfinden. Das bedeutet, dass man entweder für ein veraltetes System schreibt, oder schlecht dokumentierte neue Schnittstellen bedienen muss. Ich habe mich für "Variante 1" entschieden. Schließlich ist mein LaTeX-Highlighter ja auch eher für den "Hausgebrauch" gedacht. Und in meinem Wiki bestimme ich, was die "aktuelle" Version ist! <img src="plugins/Emoticons/images/icon_wink.gif" border="0" alt="icon_wink.gif "height="22px" style="margin-top: -4px; margin-bottom: -4px; vertical-align: -3px;"/></p>
<p>Nun habe ich mit meinem neu erlangten Wissen über Regular Expressions einen ersten Entwurf zusammenprogrammiert. Das Ganze hat sich als eine ziemliche Fummmelarbeit herausgestellt, unter anderem weil viele vorgefertigte GeSHi-Elemente für die (recht seltsame und "historisch gewachsene") TeX-Syntax nicht wirklich anwendbar sind.</p>
<p>Besonders toll ist, dass der Backslash sowohl in PHP als auch bei RegExes und natürlich in TeX selber ein Escape-Character ist... <img src="plugins/Emoticons/images/icon_arrow.gif" border="0" alt="icon_arrow.gif "height="22px" style="margin-top: -4px; margin-bottom: -4px; vertical-align: -3px;"/> "\\\\\\\\"</p>
<p>Mein Entwurf für die Sprachdefinitionsdatei ist unten angehängt. Viel Spaß damit - vielleicht wird er ja dem ein oder anderen nützlich sein.</p>
<p>Richtig zufrieden bin ich damit selbst noch nicht - immerhin gibt's jetzt LaTeX in bunt und übersichtlicher als nur "monospaced" dargestellt.</p>
<p><strong>Update (25. Juni 2007)</strong></p>
<p><a title="Matthias Pospiech" href="http://www.matthiaspospiech.de/blog/2007/06/25/syntaxhighlighting-von-latex-in-webseiten/">Matthias Pospiech</a> hat aufbauend auf meinem Entwurf (s. unten) zusammen mit dem Programmierer von GeSHi eine sehr vollständige Sprachdefinitionsatei für LaTeX erstellt. Diese ist jetzt Bestandteil von Geshi - und wird so auch mit MediaWiki, Wordpres, und vielen anderen großen PHP-Anwendungen mitgeliefert! <img src="plugins/Emoticons/images/icon_biggrin.gif" border="0" alt="icon_biggrin.gif "height="22px" style="margin-top: -4px; margin-bottom: -4px; vertical-align: -3px;"/></p>
<pre><div class="code"><div class="php php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">/*************************************************************************************
&#160;* efilatex.php
&#160;* -----
&#160;* Author: efi (mail_at_thomasefer_dot_de)
&#160;*************************************************************************************
&#160;*
&#160;* &#160; This file is not yet part of GeSHi. (and is not compatible to the 1.1+ branch)
&#160;*
&#160;* &#160; GeSHi is free software; you can redistribute it and/or modify
&#160;* &#160; it under the terms of the GNU General Public License as published by
&#160;* &#160; the Free Software Foundation; either version 2 of the License, or
&#160;* &#160; (at your option) any later version.
&#160;*
&#160;* &#160; GeSHi is distributed in the hope that it will be useful,
&#160;* &#160; but WITHOUT ANY WARRANTY; without even the implied warranty of
&#160;* &#160; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. &#160;See the
&#160;* &#160; GNU General Public License for more details.
&#160;*
&#160;* &#160; You should have received a copy of the GNU General Public License
&#160;* &#160; along with GeSHi; if not, write to the Free Software
&#160;* &#160; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA &#160;02111-1307 &#160;USA
&#160;*
&#160;************************************************************************************/</span>
<span style="color: #000088;">$language_data</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a> <span style="color: #009900;">&#40;</span>
&#160; &#160; <span style="">'LANG_NAME'</span> <span style="color: #339933;">=&gt;</span> <span style="">'efilatex'</span><span style="color: #339933;">,</span> <span style="color: #666666; font-style: italic;">// quick, dirty &amp; novice approach to highlight LaTeX</span>
&#160; &#160; <span style="">'COMMENT_SINGLE'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span> <span style="color: #339933;">=&gt;</span> <span style="">'%'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'COMMENT_MULTI'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'CASE_KEYWORDS'</span> <span style="color: #339933;">=&gt;</span> GESHI_CAPS_NO_CHANGE<span style="color: #339933;">,</span>
&#160; &#160; <span style="">'QUOTEMARKS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="">''</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'ESCAPE_CHAR'</span> <span style="color: #339933;">=&gt;</span> <span style="">''</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'KEYWORDS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; <span style="color: #cc66cc;">1</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="">'<span style="">\\</span>'</span>
&#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="color: #cc66cc;">2</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="">'cm'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="color: #cc66cc;">3</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="">'begin'</span><span style="color: #339933;">,</span> <span style="">'end'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="color: #cc66cc;">4</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="">'test4'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'SYMBOLS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; <span style="">'.'</span><span style="color: #339933;">,</span> <span style="">','</span><span style="color: #339933;">,</span><span style="">'<span style="">\\</span>'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;~&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;{&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;}&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;[&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;]&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;$&quot;</span>
&#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'CASE_SENSITIVE'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; GESHI_COMMENTS <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">true</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="color: #cc66cc;">1</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="color: #cc66cc;">2</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="color: #cc66cc;">3</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="color: #cc66cc;">4</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'STYLES'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; <span style="">'KEYWORDS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">1</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #b1b100; font-weight: bold;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">2</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #000000; font-weight: bold;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">3</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #000066; font-weight: normal;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">4</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #993333; font-weight: normal;'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="">'COMMENTS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">1</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #808080; font-style: italic;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">2</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #339933; font-weight: normal;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="">'MULTI'</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #808080; font-style: italic;'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="">'ESCAPE_CHAR'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color:#800080;">0</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #000099; font-weight: bold;'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="">'BRACKETS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color:#800080;">0</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #FF7766; font-weight: normal;'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="">'STRINGS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color:#800080;">0</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #ff0000; font-weight: normal;'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="">'NUMBERS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color:#800080;">0</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #cc66cc; font-weight: normal;'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="">'METHODS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">1</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #202020; font-weight: normal;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">2</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #202020; font-weight: normal;'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="">'SYMBOLS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color:#800080;">0</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #66ccFF; font-weight: normal;'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="">'REGEXPS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; <span style="color:#800080;">0</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #209090; font-weight: bold;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">1</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #202020; font-weight: bold;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">2</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #608020; font-weight: bold;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">3</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #F02020; font-weight: bold;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">4</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #CCF020; font-weight: bold;'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #cc66cc;">5</span> <span style="color: #339933;">=&gt;</span> <span style="">'color: #C000CC; font-weight: bold;'</span>
&#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="">'SCRIPT'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span>
&#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'URLS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'OOLANG'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'OBJECT_SPLITTERS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'REGEXPS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
<span style="color:#800080;">0</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_SEARCH <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;(<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>|~|&amp;|<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>_|<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>&amp;|<span style="color: #000099; font-weight: bold;">\\</span>$|<span style="color: #000099; font-weight: bold;">\|</span>)&quot;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_REPLACE <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>1'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_MODIFIERS <span style="color: #339933;">=&gt;</span> <span style="">''</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_BEFORE <span style="color: #339933;">=&gt;</span> <span style="">''</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_AFTER <span style="color: #339933;">=&gt;</span> <span style="">''</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="color: #666666; font-style: italic;">// \keywords</span>
<span style="color: #cc66cc;">1</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_SEARCH <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;(<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>)([a-zA-Z]+)&quot;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_REPLACE <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>1<span style="">\\</span>2'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_MODIFIERS <span style="color: #339933;">=&gt;</span> <span style="">''</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_BEFORE <span style="color: #339933;">=&gt;</span> <span style="">''</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_AFTER <span style="color: #339933;">=&gt;</span> <span style="">''</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="color: #666666; font-style: italic;">// {parameters}</span>
<span style="color: #cc66cc;">2</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_SEARCH <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;(<span style="color: #000099; font-weight: bold;">\\</span>{)(.+)(<span style="color: #000099; font-weight: bold;">\\</span>})&quot;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_REPLACE <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>2'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_MODIFIERS <span style="color: #339933;">=&gt;</span> <span style="">''</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_BEFORE <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>1'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_AFTER <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>3'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
<span style="color: #cc66cc;">3</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_SEARCH <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;(<span style="color: #000099; font-weight: bold;">\\</span>[)(.+)(<span style="color: #000099; font-weight: bold;">\\</span>])&quot;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_REPLACE <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>2'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_MODIFIERS <span style="color: #339933;">=&gt;</span> <span style="">''</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_BEFORE <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>1'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_AFTER <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>3'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
<span style="color: #cc66cc;">4</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_SEARCH <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;(<span style="color: #000099; font-weight: bold;">\\</span>$)(.+)(<span style="color: #000099; font-weight: bold;">\\</span>$)&quot;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_REPLACE <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>2'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_MODIFIERS <span style="color: #339933;">=&gt;</span> <span style="">''</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_BEFORE <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>1'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_AFTER <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>3'</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
<span style="color: #cc66cc;">5</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_SEARCH <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;([&amp;])(.+?)([;])&quot;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_REPLACE <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>2<span style="">\\</span>3'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_MODIFIERS <span style="color: #339933;">=&gt;</span> <span style="">''</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_BEFORE <span style="color: #339933;">=&gt;</span> <span style="">'<span style="">\\</span>1'</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; &#160; &#160; GESHI_AFTER <span style="color: #339933;">=&gt;</span> <span style="">''</span>
&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'STRICT_MODE_APPLIES'</span> <span style="color: #339933;">=&gt;</span> GESHI_NEVER<span style="color: #339933;">,</span>
&#160; &#160; <span style="">'SCRIPT_DELIMITERS'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&#160; &#160; <span style="">'HIGHLIGHT_STRICT_BLOCK'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
&#160; &#160; &#160; &#160; <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span>;

<span style="color: #000000; font-weight: bold;">?&gt;</span></div></div></pre> ]]></content>
		<category scheme="http://thomasefer.de/blog/category/14.html" term="14" label="LaTeX"/>
</entry>
<entry>
	<title  type="text" ><![CDATA[ Die Hanoier Stadtmusikanten ]]></title>
	<link rel="alternate"  type="text/html"  href="http://thomasefer.de/blog/show/Die-Hanoier-Stadtmusikanten.html" title="Die Hanoier Stadtmusikanten" />
	<author>
		<name>Thomas Efer</name>
		<uri>http://thomasefer.de/admin.php</uri>
	</author>
	<id>http://thomasefer.de/blog/show/Die-Hanoier-Stadtmusikanten.html</id>
	<updated>2009-02-04T16:31:47+02:00</updated>
	<published>2005-10-23T16:15:00+02:00</published>
	<summary  type="html" ><![CDATA[ <p><img style="float: left; margin-right: 6px; margin-bottom: 2px;" title="Die Hanoier Stadtmusikanten" src="images/hanoi.gif" alt="Screenshot des Spiels " width="240" height="122" />Wer Tiere mag und den Turmbau von Hanoi spannend findet, kann sich <a href="data/files/Programme/hanoi.zip">hier</a> die finale Version des wohl langweiligsten, je für den TI Voyage 200 enwtickelten Spiels herunterladen.</p>
<p><span style="font-style: italic;"> Tipp</span>: Wer über Titel und Screenshot nicht wenigstens schmunzeln kann, wird aller Voraussicht nach auch am Spiel selbst keine Freude haben und kann getrost auf den Download verzichten. <img src="plugins/Emoticons/images/icon_biggrin.gif" border="0" alt="icon_biggrin.gif "height="22px" style="margin-top: -4px; margin-bottom: -4px; vertical-align: -3px;"/></p> ]]></summary>
	<content  type="html" ><![CDATA[ <p><img style="float: left; margin-right: 6px; margin-bottom: 2px;" title="Die Hanoier Stadtmusikanten" src="images/hanoi.gif" alt="Screenshot des Spiels " width="240" height="122" />Wer Tiere mag und den Turmbau von Hanoi spannend findet, kann sich <a href="data/files/Programme/hanoi.zip">hier</a> die finale Version des wohl langweiligsten, je für den TI Voyage 200 enwtickelten Spiels herunterladen.</p>
<p><span style="font-style: italic;"> Tipp</span>: Wer über Titel und Screenshot nicht wenigstens schmunzeln kann, wird aller Voraussicht nach auch am Spiel selbst keine Freude haben und kann getrost auf den Download verzichten. <img src="plugins/Emoticons/images/icon_biggrin.gif" border="0" alt="icon_biggrin.gif "height="22px" style="margin-top: -4px; margin-bottom: -4px; vertical-align: -3px;"/></p> ]]></content>
		<category scheme="http://thomasefer.de/blog/category/3.html" term="3" label="Taschenrechner"/>
</entry>
<entry>
	<title  type="text" ><![CDATA[ TIGCC SpriteMaker ]]></title>
	<link rel="alternate"  type="text/html"  href="http://thomasefer.de/blog/show/TIGCC-SpriteMaker.html" title="TIGCC SpriteMaker" />
	<author>
		<name>Thomas Efer</name>
		<uri>http://thomasefer.de/admin.php</uri>
	</author>
	<id>http://thomasefer.de/blog/show/TIGCC-SpriteMaker.html</id>
	<updated>2009-02-23T13:57:09+02:00</updated>
	<published>2005-10-15T15:00:00+02:00</published>
	<summary  type="html" ><![CDATA[ <p><img style="vertical-align: baseline;" title="Screenshots" src="images/tigccsm.jpg" alt="Screenshots des TIGCCSM" width="460" height="160" /></p>
<p>Wer öfters grafiklastige Assemblerprogramme für TI-Taschenrechner programmiert, möchte vielleicht mein Tool, den TIGCC-SpriteMaker ausprobieren. Durch den TIGCCSM entfällt das lästige Pixel-für-Pixel-Eingeben und Sprites können mit der Maus gezeichnet werden. Das Programm wurde in VisualBasic 5 geschrieben und es ist möglich, dass es deswegen auf einigen modernen Systemen nicht läuft. Wenn das passiert, genügt eine Mail an mich und ich werde mir etwas neues (zum Beispiel .NET-taugliches) einfallen lassen.</p>
<p>Hier geht's zum <a href="data/files/Programme/tigccsm.exe">Download</a>!</p>
<p>Und hier noch was für unterwegs:</p>
<pre><div class="code"><div class="c c" style="font-family:monospace;"><span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> Sprite1<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #009900;">&#123;</span>
<span style="color: #208080;">0b00111100</span><span style="color: #339933;">,</span>
<span style="color: #208080;">0b01000010</span><span style="color: #339933;">,</span>
<span style="color: #208080;">0b10100101</span><span style="color: #339933;">,</span>
<span style="color: #208080;">0b10000001</span><span style="color: #339933;">,</span>
<span style="color: #208080;">0b10100101</span><span style="color: #339933;">,</span>
<span style="color: #208080;">0b10011001</span><span style="color: #339933;">,</span>
<span style="color: #208080;">0b01000010</span><span style="color: #339933;">,</span>
<span style="color: #208080;">0b00111100</span><span style="color: #009900;">&#125;</span>;</div></div></pre>
<p>In diesem Sinne: Viel Spaß!</p> ]]></summary>
	<content  type="html" ><![CDATA[ <p><img style="vertical-align: baseline;" title="Screenshots" src="images/tigccsm.jpg" alt="Screenshots des TIGCCSM" width="460" height="160" /></p>
<p>Wer öfters grafiklastige Assemblerprogramme für TI-Taschenrechner programmiert, möchte vielleicht mein Tool, den TIGCC-SpriteMaker ausprobieren. Durch den TIGCCSM entfällt das lästige Pixel-für-Pixel-Eingeben und Sprites können mit der Maus gezeichnet werden. Das Programm wurde in VisualBasic 5 geschrieben und es ist möglich, dass es deswegen auf einigen modernen Systemen nicht läuft. Wenn das passiert, genügt eine Mail an mich und ich werde mir etwas neues (zum Beispiel .NET-taugliches) einfallen lassen.</p>
<p>Hier geht's zum <a href="data/files/Programme/tigccsm.exe">Download</a>!</p>
<p>Und hier noch was für unterwegs:</p>
<pre><div class="code"><div class="c c" style="font-family:monospace;"><span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> Sprite1<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #009900;">&#123;</span>
<span style="color: #208080;">0b00111100</span><span style="color: #339933;">,</span>
<span style="color: #208080;">0b01000010</span><span style="color: #339933;">,</span>
<span style="color: #208080;">0b10100101</span><span style="color: #339933;">,</span>
<span style="color: #208080;">0b10000001</span><span style="color: #339933;">,</span>
<span style="color: #208080;">0b10100101</span><span style="color: #339933;">,</span>
<span style="color: #208080;">0b10011001</span><span style="color: #339933;">,</span>
<span style="color: #208080;">0b01000010</span><span style="color: #339933;">,</span>
<span style="color: #208080;">0b00111100</span><span style="color: #009900;">&#125;</span>;</div></div></pre>
<p>In diesem Sinne: Viel Spaß!</p> ]]></content>
		<category scheme="http://thomasefer.de/blog/category/3.html" term="3" label="Taschenrechner"/>
</entry>
<entry>
	<title  type="text" ><![CDATA[ Geplante Features in Terragen 0.9.x ]]></title>
	<link rel="alternate"  type="text/html"  href="http://thomasefer.de/blog/show/Geplante-Features-in-Terragen-0.9.x.html" title="Geplante Features in Terragen 0.9.x" />
	<author>
		<name>Thomas Efer</name>
		<uri>http://thomasefer.de/admin.php</uri>
	</author>
	<id>http://thomasefer.de/blog/show/Geplante-Features-in-Terragen-0.9.x.html</id>
	<updated>2009-07-05T17:29:39+02:00</updated>
	<published>2005-09-06T20:00:00+02:00</published>
	<summary  type="html" ><![CDATA[ <p>Hier habe ich ein paar interessante Screenshots von der Benutzeroberfläche von <a title="Terragen von Planetside" href="http://planetside.co.uk/">Terragen</a> 0,9,41 ausgestellt.</p>
<p>Die Bilder weichen etwas von der Standardausführung ab. Das, was da zusätzlich vorhanden ist entspringt allerdings nicht meiner Phantasie, sondern dem Programm selbst. Ich habe nichts hinzugedichtet, sondern nur verstecktes sichtbar gemacht. (...und dann rötlich eingefärbt.)</p>
<p>Auch sind die neuen Regler und Knöpfe noch nicht funktionstüchtig. Das ganze soll deswegen auch nur als kleiner Ein- und Ausblick auf Terragen "Classic" dienen.</p>
<p style="text-align:center; vertical-align: baseline; padding:2px; margin: 8px;"><img title="Animation" src="images/tg-anim.png" alt="Animationsmöglichkeiten" width="220px" /><br />Animation</p>
<p style="text-align:center; vertical-align: baseline; padding:2px; margin: 8px;"><img title="Kamera" src="images/tg-cam.png" alt="Kameraoptionen" width="340px" /><br />Kamera</p>
<p style="text-align:center; vertical-align: baseline; padding:2px; margin: 8px;"><img title="Wolken 1" src="images/tg-clouda.png" alt="Wolkenoptionen" width="430px" /><br />Wolken</p>
<p style="text-align:center; vertical-align: baseline; padding:2px; margin: 8px;"><img title="Wolken 2" src="images/tg-cloudb.png" alt="Wolkenoptionen" width="340px" /><br />Wolken</p>
<p style="text-align:center; vertical-align: baseline; padding:2px; margin: 8px;"><img title="Export 1" src="images/tg-expa.png" alt="Exportoptionen" width="430px" /><br />Export</p>
<p style="text-align:center; vertical-align: baseline; padding:2px; margin: 8px;"><img title="Export 2" src="images/tg-expb.png" alt="Exportoptionen" width="200px" /><br />Export</p>
<p style="text-align:center; vertical-align: baseline; padding:2px; margin: 8px;"><img title="Separation" src="images/tg-sep.png" alt="Optionen für separates Rendering" width="220px" /><br />Separates Rendering</p>
<p> </p> ]]></summary>
	<content  type="html" ><![CDATA[ <p>Hier habe ich ein paar interessante Screenshots von der Benutzeroberfläche von <a title="Terragen von Planetside" href="http://planetside.co.uk/">Terragen</a> 0,9,41 ausgestellt.</p>
<p>Die Bilder weichen etwas von der Standardausführung ab. Das, was da zusätzlich vorhanden ist entspringt allerdings nicht meiner Phantasie, sondern dem Programm selbst. Ich habe nichts hinzugedichtet, sondern nur verstecktes sichtbar gemacht. (...und dann rötlich eingefärbt.)</p>
<p>Auch sind die neuen Regler und Knöpfe noch nicht funktionstüchtig. Das ganze soll deswegen auch nur als kleiner Ein- und Ausblick auf Terragen "Classic" dienen.</p>
<p style="text-align:center; vertical-align: baseline; padding:2px; margin: 8px;"><img title="Animation" src="images/tg-anim.png" alt="Animationsmöglichkeiten" width="220px" /><br />Animation</p>
<p style="text-align:center; vertical-align: baseline; padding:2px; margin: 8px;"><img title="Kamera" src="images/tg-cam.png" alt="Kameraoptionen" width="340px" /><br />Kamera</p>
<p style="text-align:center; vertical-align: baseline; padding:2px; margin: 8px;"><img title="Wolken 1" src="images/tg-clouda.png" alt="Wolkenoptionen" width="430px" /><br />Wolken</p>
<p style="text-align:center; vertical-align: baseline; padding:2px; margin: 8px;"><img title="Wolken 2" src="images/tg-cloudb.png" alt="Wolkenoptionen" width="340px" /><br />Wolken</p>
<p style="text-align:center; vertical-align: baseline; padding:2px; margin: 8px;"><img title="Export 1" src="images/tg-expa.png" alt="Exportoptionen" width="430px" /><br />Export</p>
<p style="text-align:center; vertical-align: baseline; padding:2px; margin: 8px;"><img title="Export 2" src="images/tg-expb.png" alt="Exportoptionen" width="200px" /><br />Export</p>
<p style="text-align:center; vertical-align: baseline; padding:2px; margin: 8px;"><img title="Separation" src="images/tg-sep.png" alt="Optionen für separates Rendering" width="220px" /><br />Separates Rendering</p>
<p> </p> ]]></content>
		<category scheme="http://thomasefer.de/blog/category/10.html" term="10" label="Grafik"/>
</entry>
<entry>
	<title  type="text" ><![CDATA[ Hacking the CASIO CFX 9850GB PLUS-G ]]></title>
	<link rel="alternate"  type="text/html"  href="http://thomasefer.de/blog/show/Hacking-the-CASIO-CFX-9850GB-PLUS-G.html" title="Hacking the CASIO CFX 9850GB PLUS-G" />
	<author>
		<name>Thomas Efer</name>
		<uri>http://thomasefer.de/admin.php</uri>
	</author>
	<id>http://thomasefer.de/blog/show/Hacking-the-CASIO-CFX-9850GB-PLUS-G.html</id>
	<updated>2009-02-23T13:55:08+02:00</updated>
	<published>2003-06-01T00:00:00+02:00</published>
	<summary  type="html" ><![CDATA[ 
<h3>RAM-Hacking</h3>
<p>An jeder Ecke im Internet findet man (vorausgesetzt, dass man wirklich danach sucht) Tipps und Tricks, wie man mit Hilfe eines Computers, Link-Kabels und einfachen Texteditors die tollsten Sachen mit seinem CFX anstellen kann: Den Speicher nach 'System'-Variablen durchforsten und diese dann ändern; Assembler-Programme superschnell laufen lassen und und und...</p>
<p>Nirgendwo findet man allerdings Möglichkeiten, im RAM des Rechners herumzufuhrwerken, OHNE ein Kabel zu benutzen. (Casio - Kabel sind teuer und nicht jeder ist in der Lage, sich aus alten Platinen und Klingeldraht 'mal eben' einen eigenen Adapter zu löten)</p>
<p>Deswegen habe ich intensiv nach 'Geheimtürchen' in den Innereien des CFX9850 gesucht und bin in zahlreichen Foren und ähnlichem auch fündig geworden.</p>
<p>Zuerst einmal:   <span style="font-weight: bold;"><span style="color: #ff0000;">A C H T U N G ! ! !</span></span>   Die hier vorgestellten Kniffe können - und werden auch fast immer - zum vollständigen Reset des Taschenrechnerspeichers führen! Das heißt: Programme weg, Bildchen weg (PIC-Memory), Tabellen weg - ALLES weg! Im Gegenzug gibt es dann viel freien Speicherplatz. <img src="plugins/Emoticons/images/icon_wink.gif" border="0" alt="icon_wink.gif "height="22px" style="margin-top: -4px; margin-bottom: -4px; vertical-align: -3px;"/> Also: Falls ihr wichtige, einzigartige oder zeitaufwändige Dinge mit euerm Taschenrechner gemacht habt: Unbedingt Daten sichern. (Vielleicht kennt ihr ja Jemanden mit Kabel?)</p>
<p>Punkt zwei: Mir ist zwar kein solcher Fall bekannt, vielleicht ist es auch etwas übertrieben, aber: Rechnet bei den folgenden Tipps ständig damit, das euer lieber TR mit dem nächsten Tastendruck ausgeht und für immer aus bleibt! Ich möchte keine Mail bekommen, wo dann steht 'Du hast meinen Taschenrechner kaputt gemacht!'. Das wart ihr nämlich auf jeden Fall selbst.</p>
<p>Genug der Vorrede. Entscheidet selbst, ob ihr weiterlesen wollt oder nicht.</p>
<p>Wir starten gemächlich:</p>
<h3>Der Test-Modus <small>(die 'Ollen Kamellen' des TR-Hackens)</small></h3>
<ol>
<li>TR ausschalten</li>
<li>[a/b/c] [F6] und [AC/ON] gleichzeitig drücken. - Der Test-Mode startet</li>
<li>nun kann man mit                 <br />

<ul>
<li>Cnt  - den Kontrast überprüfen,</li>
<li>LCD - durch ein paar lustige Farbspielereien den Bildschirm testen,</li>
<li>Key  - prüfen, ob alle Tasten funktionieren, - (lässt sich zum Partyspaß ausbauen...)</li>
<li>DET - nichts wirklich produktives anfangen, (irgendwas mit der Stromversorgung)</li>
<li>TRS - überprüfen, ob und vor allem wie die Schnittstelle funktioniert.</li>
<li>ROM &amp; RAM - ROM &amp; RAM testen lassen, (toll)</li>
<li>RST - das Drücken des umseitig liegenden Reset (P) - Knopfes sparen und den Testmodus abbrechen.</li>
</ul>
</li>
</ol>
<h3>Der RAM-Spion (einzeilige Variante)</h3>
<ol>
<li>TR anschalten</li>
<li>Im Dyna-Modus die Funktion 'Y1 (bzw Y2,Y3...) = A' hinzufügen</li>
<li>[EXE] drücken</li>
<li>[F2] drücken (für RANGe)</li>
<li>als 'Start'-Wert eine große Zahl (am besten '9.e+13' oder größer) eingeben</li>
<li>als End und Pitch jeweils eine gleiche Zahl nehmen (z.B. '1')</li>
<li>noch zweimal [EXE] drücken, bis 'Ma ERROR' erscheint</li>
<li>[AC/on] drücken</li>
<li>[MENU] drücken</li>
<li>zu 'LIST' wechseln (z.B. mit [4])</li>
<li>[F1] drücken ('SRT-A')</li>
<li>einen unsinnigen Wert, wie '(' oder 'sin' oder... eingeben</li>
<li>[EXE] --&gt; 'Syn ERROR'</li>
<li>Pfeiltasten [&lt;--] oder [--&gt;] drücken fertig!</li>
</ol>
<p>Jetz könnt ihr durch den gesamten Arbeitsspeicher scrollen und sogar passwortgeschützte Programme ansehen.</p>
<p>Ihr könnt auch Zeichen, Funktionsnamen und Zahlen eintippen. Die werden direkt ins RAM geschrieben und sorgen oft dafür, dass die Listendarstellung lustig verformt wird. Oder dass der TR abstürzt. Kein Problem - Reset-Knopf auf der Rückseite mit einer Kulispitze drücken und ihr habt einen 'fabrikneuen' Taschenrechner. (Zumindest von 'innen')</p>
<h3>Der RAM-Spion deluxe (mehrzeilige Variante)</h3>
<ol>
<li>Taschenrechner resetten (meistens nötig)</li>
<li>folgende Matritzen erstellen:<br /> Mat A mit einer Dimension von 1x1<br /> Mat B mit 2x1<br /> Mat C (1x2)<br /> Mat D (2x2)<br /> Mat E (64x32)</li>
<li>Im GRAPH-Menü nun 'Y1 = X' als Funktion eingeben</li>
<li>ein Programm erstellen, (beliebiger Name) in dem auschließlich der Befehl DrawDyna steht<br /> Anleitung: ([SHIFT]+[VARS](PRGM) dann [F6] und schließlich [F2](DISP) und dann [F3](Dyna))</li>
<li>das Programm nun ausführen.<br />Es dürfte eigentlich nicht gehen - es geht aber!</li>
<li>wenn es dann endlich 'Y1=X' anzeigt, [AC/on] drücken</li>
<li>nun auf den Links- oder Rechtspfeil drücken<br /> der Editor ist nun wieder aktiv, zeigt aber als Programmname '1010101010' an.</li>
<li>jetzt den Cursor ein paar Mal nach links und dann nach oben bewegen<br /> Tata: das RAM (manchmal stockt die Anzeige etwas - wenn es SEHR LANGE nicht weitergeht, wieder versuchen, nach rechts und unten zu scrollen...)</li>
<li>
<p>Möchte man jetzt eine hübsche 128x128-Matrix, muss man folgendermaßen vorgehen:</p>
<ol>
<li>9.1. den text 'ppfppfff' suchen (recht weit oben!)</li>
<li>9.2. die letzten beiden 'ff's durch 'Pol(Pol('</li>
</ol>
<p>    (das entspricht Zeichen für 2xWert '128' und ist zu finden unter [OPTN]-[F6]-[F5](ANGL)-[F6]-[F1]).</p>
<p>Fertig! MatA dürfte nun 128x128 groß sein. Nun bloß nicht mehr daran herumspielen! (Anstatt 'Pol(' kann man auch andere Zeichen benutzen. Die Ergebnismatrix A hat dann aber natürlich eine andere Größe...)</p>
</li>
</ol>
<h3>Die 0te Dimension einer Matrix (einfach und genial)</h3>
<ol>
<li>TR Anschalten</li>
<li>ins Matrix-Menü wechseln</li>
<li>in eine Leere (None-) Matrix - zum Beipiel A - für die "X-Dimension" einen Wert zwischen 12 und 255 eingeben</li>
<li>mit [EXE] die Eingabe bestätigen, nun aber ohne weitere Eingabe über [MENU] in den RUN-Modus wechseln</li>
<li>[OPTN]-[F2](MAT)-[F6]-[F3](Fill) drücken</li>
<li>eine beliebige Zahl und anschließend ein (richtiges) Komma eingeben</li>
<li>
<p>wieder [F6] und dann [F1](Mat) drücken und den Buchstaben der Matrix (aus Schritt 3) eingeben</p>
<p>die Zeile sieht nun zum Beispiel folgendermaßen aus:</p>
<p><code>Fill(77,Mat B</code></p>
</li>
<li>mit [EXE] die Zeile ausführen</li>
</ol>
<h4>"Ergebnisse" oder "Was nun?"</h4>
<p>Oft stürzt während dieser Prozedur das Taschenrechnerbetriebssystem ab. Dann betätigt man einfach den Reset-Knopf auf der Rückseite. Man wird gar nicht mehr gefragt, ob man den Speicher löschen will, oder nicht. Es heißt gleich "MEMORY CLEARED".</p>
<p>Hat man aber Glück, so gelangt man nach einigen [AC/on] - Eingaben und Pfeiltastenbetätigungen über den [MENU] - Knopf ins Hauptmenü und kann dort - nun ja - zumindest einige Überraschungen erleben. (64KB freier Hauptspeicher - wenn auch nicht nutzbar, veränderte Menügrafiken ...)</p>
<h4>Hier noch eine Tabelle günstiger Kombinationen:</h4>
<p> </p>
<table border="0" align="center">
<caption></caption> <thead>
<tr>
<th>Dimension</th> <th>Matrix</th> <th>Füllzahl</th> <th>Bemerkung</th>
</tr>
</thead>
<tbody>
<tr>
<td> 33</td>
<td> A</td>
<td> 33</td>
<td> </td>
</tr>
<tr>
<td> 133</td>
<td> A</td>
<td> 133</td>
<td> </td>
</tr>
<tr>
<td> 12</td>
<td> A</td>
<td> 12</td>
<td> </td>
</tr>
<tr>
<td> 30</td>
<td> A</td>
<td> 30</td>
<td> </td>
</tr>
<tr>
<td> 13</td>
<td> B</td>
<td> 13</td>
<td> </td>
</tr>
<tr>
<td> 34</td>
<td> A</td>
<td> egal</td>
<td> Füllzahl ist dann in jedem Eingabefeld im TVM - Menü sichtbar</td>
</tr>
<tr>
<td> 78</td>
<td> A</td>
<td> 87</td>
<td> </td>
</tr>
<tr>
<td> 77</td>
<td> A</td>
<td> 7</td>
<td> </td>
</tr>
<tr>
<td> 111</td>
<td> A</td>
<td> 4*Pi</td>
<td> </td>
</tr>
<tr>
<td> 77</td>
<td> C</td>
<td> 987</td>
<td> </td>
</tr>
<tr>
<td> 40</td>
<td> A</td>
<td> 70.4</td>
<td> </td>
</tr>
<tr>
<td> 24</td>
<td> A</td>
<td> 24000</td>
<td> </td>
</tr>
<tr>
<td> 24</td>
<td> B</td>
<td> 48000</td>
<td> </td>
</tr>
<tr>
<td> 24</td>
<td> X</td>
<td> 48000</td>
<td> </td>
</tr>
<tr>
<td> 60</td>
<td> A</td>
<td> 60</td>
<td> </td>
</tr>
</tbody>
</table>
<p> </p> ]]></summary>
	<content  type="html" ><![CDATA[ 
<h3>RAM-Hacking</h3>
<p>An jeder Ecke im Internet findet man (vorausgesetzt, dass man wirklich danach sucht) Tipps und Tricks, wie man mit Hilfe eines Computers, Link-Kabels und einfachen Texteditors die tollsten Sachen mit seinem CFX anstellen kann: Den Speicher nach 'System'-Variablen durchforsten und diese dann ändern; Assembler-Programme superschnell laufen lassen und und und...</p>
<p>Nirgendwo findet man allerdings Möglichkeiten, im RAM des Rechners herumzufuhrwerken, OHNE ein Kabel zu benutzen. (Casio - Kabel sind teuer und nicht jeder ist in der Lage, sich aus alten Platinen und Klingeldraht 'mal eben' einen eigenen Adapter zu löten)</p>
<p>Deswegen habe ich intensiv nach 'Geheimtürchen' in den Innereien des CFX9850 gesucht und bin in zahlreichen Foren und ähnlichem auch fündig geworden.</p>
<p>Zuerst einmal:   <span style="font-weight: bold;"><span style="color: #ff0000;">A C H T U N G ! ! !</span></span>   Die hier vorgestellten Kniffe können - und werden auch fast immer - zum vollständigen Reset des Taschenrechnerspeichers führen! Das heißt: Programme weg, Bildchen weg (PIC-Memory), Tabellen weg - ALLES weg! Im Gegenzug gibt es dann viel freien Speicherplatz. <img src="plugins/Emoticons/images/icon_wink.gif" border="0" alt="icon_wink.gif "height="22px" style="margin-top: -4px; margin-bottom: -4px; vertical-align: -3px;"/> Also: Falls ihr wichtige, einzigartige oder zeitaufwändige Dinge mit euerm Taschenrechner gemacht habt: Unbedingt Daten sichern. (Vielleicht kennt ihr ja Jemanden mit Kabel?)</p>
<p>Punkt zwei: Mir ist zwar kein solcher Fall bekannt, vielleicht ist es auch etwas übertrieben, aber: Rechnet bei den folgenden Tipps ständig damit, das euer lieber TR mit dem nächsten Tastendruck ausgeht und für immer aus bleibt! Ich möchte keine Mail bekommen, wo dann steht 'Du hast meinen Taschenrechner kaputt gemacht!'. Das wart ihr nämlich auf jeden Fall selbst.</p>
<p>Genug der Vorrede. Entscheidet selbst, ob ihr weiterlesen wollt oder nicht.</p>
<p>Wir starten gemächlich:</p>
<h3>Der Test-Modus <small>(die 'Ollen Kamellen' des TR-Hackens)</small></h3>
<ol>
<li>TR ausschalten</li>
<li>[a/b/c] [F6] und [AC/ON] gleichzeitig drücken. - Der Test-Mode startet</li>
<li>nun kann man mit                 <br />

<ul>
<li>Cnt  - den Kontrast überprüfen,</li>
<li>LCD - durch ein paar lustige Farbspielereien den Bildschirm testen,</li>
<li>Key  - prüfen, ob alle Tasten funktionieren, - (lässt sich zum Partyspaß ausbauen...)</li>
<li>DET - nichts wirklich produktives anfangen, (irgendwas mit der Stromversorgung)</li>
<li>TRS - überprüfen, ob und vor allem wie die Schnittstelle funktioniert.</li>
<li>ROM &amp; RAM - ROM &amp; RAM testen lassen, (toll)</li>
<li>RST - das Drücken des umseitig liegenden Reset (P) - Knopfes sparen und den Testmodus abbrechen.</li>
</ul>
</li>
</ol>
<h3>Der RAM-Spion (einzeilige Variante)</h3>
<ol>
<li>TR anschalten</li>
<li>Im Dyna-Modus die Funktion 'Y1 (bzw Y2,Y3...) = A' hinzufügen</li>
<li>[EXE] drücken</li>
<li>[F2] drücken (für RANGe)</li>
<li>als 'Start'-Wert eine große Zahl (am besten '9.e+13' oder größer) eingeben</li>
<li>als End und Pitch jeweils eine gleiche Zahl nehmen (z.B. '1')</li>
<li>noch zweimal [EXE] drücken, bis 'Ma ERROR' erscheint</li>
<li>[AC/on] drücken</li>
<li>[MENU] drücken</li>
<li>zu 'LIST' wechseln (z.B. mit [4])</li>
<li>[F1] drücken ('SRT-A')</li>
<li>einen unsinnigen Wert, wie '(' oder 'sin' oder... eingeben</li>
<li>[EXE] --&gt; 'Syn ERROR'</li>
<li>Pfeiltasten [&lt;--] oder [--&gt;] drücken fertig!</li>
</ol>
<p>Jetz könnt ihr durch den gesamten Arbeitsspeicher scrollen und sogar passwortgeschützte Programme ansehen.</p>
<p>Ihr könnt auch Zeichen, Funktionsnamen und Zahlen eintippen. Die werden direkt ins RAM geschrieben und sorgen oft dafür, dass die Listendarstellung lustig verformt wird. Oder dass der TR abstürzt. Kein Problem - Reset-Knopf auf der Rückseite mit einer Kulispitze drücken und ihr habt einen 'fabrikneuen' Taschenrechner. (Zumindest von 'innen')</p>
<h3>Der RAM-Spion deluxe (mehrzeilige Variante)</h3>
<ol>
<li>Taschenrechner resetten (meistens nötig)</li>
<li>folgende Matritzen erstellen:<br /> Mat A mit einer Dimension von 1x1<br /> Mat B mit 2x1<br /> Mat C (1x2)<br /> Mat D (2x2)<br /> Mat E (64x32)</li>
<li>Im GRAPH-Menü nun 'Y1 = X' als Funktion eingeben</li>
<li>ein Programm erstellen, (beliebiger Name) in dem auschließlich der Befehl DrawDyna steht<br /> Anleitung: ([SHIFT]+[VARS](PRGM) dann [F6] und schließlich [F2](DISP) und dann [F3](Dyna))</li>
<li>das Programm nun ausführen.<br />Es dürfte eigentlich nicht gehen - es geht aber!</li>
<li>wenn es dann endlich 'Y1=X' anzeigt, [AC/on] drücken</li>
<li>nun auf den Links- oder Rechtspfeil drücken<br /> der Editor ist nun wieder aktiv, zeigt aber als Programmname '1010101010' an.</li>
<li>jetzt den Cursor ein paar Mal nach links und dann nach oben bewegen<br /> Tata: das RAM (manchmal stockt die Anzeige etwas - wenn es SEHR LANGE nicht weitergeht, wieder versuchen, nach rechts und unten zu scrollen...)</li>
<li>
<p>Möchte man jetzt eine hübsche 128x128-Matrix, muss man folgendermaßen vorgehen:</p>
<ol>
<li>9.1. den text 'ppfppfff' suchen (recht weit oben!)</li>
<li>9.2. die letzten beiden 'ff's durch 'Pol(Pol('</li>
</ol>
<p>    (das entspricht Zeichen für 2xWert '128' und ist zu finden unter [OPTN]-[F6]-[F5](ANGL)-[F6]-[F1]).</p>
<p>Fertig! MatA dürfte nun 128x128 groß sein. Nun bloß nicht mehr daran herumspielen! (Anstatt 'Pol(' kann man auch andere Zeichen benutzen. Die Ergebnismatrix A hat dann aber natürlich eine andere Größe...)</p>
</li>
</ol>
<h3>Die 0te Dimension einer Matrix (einfach und genial)</h3>
<ol>
<li>TR Anschalten</li>
<li>ins Matrix-Menü wechseln</li>
<li>in eine Leere (None-) Matrix - zum Beipiel A - für die "X-Dimension" einen Wert zwischen 12 und 255 eingeben</li>
<li>mit [EXE] die Eingabe bestätigen, nun aber ohne weitere Eingabe über [MENU] in den RUN-Modus wechseln</li>
<li>[OPTN]-[F2](MAT)-[F6]-[F3](Fill) drücken</li>
<li>eine beliebige Zahl und anschließend ein (richtiges) Komma eingeben</li>
<li>
<p>wieder [F6] und dann [F1](Mat) drücken und den Buchstaben der Matrix (aus Schritt 3) eingeben</p>
<p>die Zeile sieht nun zum Beispiel folgendermaßen aus:</p>
<p><code>Fill(77,Mat B</code></p>
</li>
<li>mit [EXE] die Zeile ausführen</li>
</ol>
<h4>"Ergebnisse" oder "Was nun?"</h4>
<p>Oft stürzt während dieser Prozedur das Taschenrechnerbetriebssystem ab. Dann betätigt man einfach den Reset-Knopf auf der Rückseite. Man wird gar nicht mehr gefragt, ob man den Speicher löschen will, oder nicht. Es heißt gleich "MEMORY CLEARED".</p>
<p>Hat man aber Glück, so gelangt man nach einigen [AC/on] - Eingaben und Pfeiltastenbetätigungen über den [MENU] - Knopf ins Hauptmenü und kann dort - nun ja - zumindest einige Überraschungen erleben. (64KB freier Hauptspeicher - wenn auch nicht nutzbar, veränderte Menügrafiken ...)</p>
<h4>Hier noch eine Tabelle günstiger Kombinationen:</h4>
<p> </p>
<table border="0" align="center">
<caption></caption> <thead>
<tr>
<th>Dimension</th> <th>Matrix</th> <th>Füllzahl</th> <th>Bemerkung</th>
</tr>
</thead>
<tbody>
<tr>
<td> 33</td>
<td> A</td>
<td> 33</td>
<td> </td>
</tr>
<tr>
<td> 133</td>
<td> A</td>
<td> 133</td>
<td> </td>
</tr>
<tr>
<td> 12</td>
<td> A</td>
<td> 12</td>
<td> </td>
</tr>
<tr>
<td> 30</td>
<td> A</td>
<td> 30</td>
<td> </td>
</tr>
<tr>
<td> 13</td>
<td> B</td>
<td> 13</td>
<td> </td>
</tr>
<tr>
<td> 34</td>
<td> A</td>
<td> egal</td>
<td> Füllzahl ist dann in jedem Eingabefeld im TVM - Menü sichtbar</td>
</tr>
<tr>
<td> 78</td>
<td> A</td>
<td> 87</td>
<td> </td>
</tr>
<tr>
<td> 77</td>
<td> A</td>
<td> 7</td>
<td> </td>
</tr>
<tr>
<td> 111</td>
<td> A</td>
<td> 4*Pi</td>
<td> </td>
</tr>
<tr>
<td> 77</td>
<td> C</td>
<td> 987</td>
<td> </td>
</tr>
<tr>
<td> 40</td>
<td> A</td>
<td> 70.4</td>
<td> </td>
</tr>
<tr>
<td> 24</td>
<td> A</td>
<td> 24000</td>
<td> </td>
</tr>
<tr>
<td> 24</td>
<td> B</td>
<td> 48000</td>
<td> </td>
</tr>
<tr>
<td> 24</td>
<td> X</td>
<td> 48000</td>
<td> </td>
</tr>
<tr>
<td> 60</td>
<td> A</td>
<td> 60</td>
<td> </td>
</tr>
</tbody>
</table>
<p> </p> ]]></content>
		<category scheme="http://thomasefer.de/blog/category/3.html" term="3" label="Taschenrechner"/>
</entry>
<entry>
	<title  type="text" ><![CDATA[ Jugend forscht 2003 ]]></title>
	<link rel="alternate"  type="text/html"  href="http://thomasefer.de/blog/show/Jugend-Forscht-2003.html" title="Jugend forscht 2003" />
	<author>
		<name>Thomas Efer</name>
		<uri>http://thomasefer.de/admin.php</uri>
	</author>
	<id>http://thomasefer.de/blog/show/Jugend-Forscht-2003.html</id>
	<updated>2009-07-05T15:39:29+02:00</updated>
	<published>2003-02-20T15:00:00+02:00</published>
	<summary  type="html" ><![CDATA[ <p><img title="Jugend forscht 2003" src="images/jufo2003.jpg" alt="Formeln und Bilder aus der Arbeit" width="460" height="345" /></p>
<p>Beim diesjährigen Regionalwettbewerb von <a href="https://www.jugend-forscht.de/">Jugend forscht</a> habe ich zusammen mit Andrej Machno eine Arbeit zur Chaosphysik über "Nichtlineare rückgekoppelte Systeme" präsentiert. Damit belegten wir den 2. Platz im Bereich Physik und bekamen sogar noch einen Sonderpreis in Form eines Jahresabbonements der "Bild der Wissenschaft"!</p>
<p>Im ersten Teil der Arbeit haben wir uns mit den chaotischen Aspekten der Populationsdynamik beschäftigt. Bei welcher Zahl Nachkommen einer Tierart lässt sich die Populationsgröße für das nächste Jahr noch gut voraussagen? Im zweiten Teil haben wir einen Schwingkreis betrachtet, in dem statt einer Spule eine Diode eingebaut ist. Die Diode hat eine nichtlineare Induktivität. Bei bestimmten Parametern des Schwinkgreises wird aus der Kennlinie der Diode im Phasenraum ein merkwürdiges Gebilde... Beide Schwerpunkte nähern sich der Thematik des deterministischen Chaos von unterschiedlichen Seiten, offenbaren dabei jedoch einige Gemeinsamkeiten.</p>
<p>Für den ersten Teil habe ich mit <a href="http://darkbasic.thegamecreators.com/">DarkBasic</a> ein Simulationsprogramm geschrieben, mit dem ein so genanntes <a href="http://de.wikipedia.org/wiki/Mitchell_Feigenbaum">Feigenbaum</a>-Senario der <a href="http://de.wikipedia.org/wiki/Pierre-François_Verhulst">Verhulst</a>schen Populationsdynamik interaktiv darstellbar ist. Der Quelltext ist unten angehängt. Eine ausführlichere Version (mit Kommentaren) kann <a href="data/files/Programme/feigenbaum.dba">hier</a> heruntergeladen werden.</p>
<pre><div class="code"><div class="vb vb" style="font-family:monospace;"><span style="color: #b1b100;">REM</span> * Title &#160;: Feigenbaumszenario
<span style="color: #b1b100;">REM</span> * Author : Thomas Efer
<span style="color: #b1b100;">REM</span> * <span style="color: #b1b100;">Date</span> &#160; : 15. 12. <span style="color: #cc66cc;">2002</span>
<span style="color: #b1b100;">New</span>:
ENABLE Escapekey
<span style="color: #b1b100;">SET</span> DISPLAY MODE <span style="color: #cc66cc;">800</span>,<span style="color: #cc66cc;">600</span>,<span style="color: #cc66cc;">16</span>
HIDE MOUSE

<span style="color: #b1b100;">SET</span> TEXT FONT <span style="color: #ff0000;">&quot;Tahoma&quot;</span>
<span style="color: #b1b100;">SET</span> TEXT SIZE <span style="color: #cc66cc;">32</span>
<span style="color: #b1b100;">SET</span> TEXT <span style="color: #b1b100;">TO</span> BOLD
INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span>,0,0<span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
TEXT <span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">1</span>, <span style="color: #ff0000;">&quot;Darstellung eines FEIGENBAUM-Szenarios durch mehrfache&quot;</span>
TEXT <span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">35</span>,<span style="color: #ff0000;">&quot;Iteration einer logistischen Parabel: I = A*I*(1-I)&quot;</span>
<span style="color: #b1b100;">SET</span> TEXT <span style="color: #b1b100;">TO</span> NORMAL
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">64</span>,<span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">64</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;Geben Sie bitte die gewünschten Parameter an:&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
<span style="color: #b1b100;">INPUT</span> <span style="color: #ff0000;">&quot;Anzahl der Iterationsstartwerte I pro A: &quot;</span>, Ianz
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
<span style="color: #b1b100;">INPUT</span> <span style="color: #ff0000;">&quot;Anzahl der Iterationen pro A-I-Kombination: &quot;</span>, nmax
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
<span style="color: #b1b100;">INPUT</span> <span style="color: #ff0000;">&quot;Soll jeweils der vorletzte Iterationswert mit ausgegeben werden? (1=Ja;0=Nein): &quot;</span>, Janz
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;Bildschirmmodus:&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; Wünschen sie eine Auflösung von&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &#160;1 - 800 x 600, &quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &#160;2 - 1024 x 768 oder &quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &#160;3 - 1600 x 1200&quot;</span>
<span style="color: #b1b100;">INPUT</span> <span style="color: #ff0000;">&quot; Bildpunkten? &quot;</span>, Disp
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span>,00,00<span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;Die Darstellung beginnt im Bereich von 1 bis 3 (waagerecht) für A, sowie 0 bis 1 (senkrecht) für I.&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;Das drücken der Leertaste führt zur Ausgabe der Koordinaten des aktuellen Darstellungsfensters.&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;Die Pfeil-nach-oben-Taste setzt die Anzeige auf den oben genannten Startbereich zurück.&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;Die Pfeil-nach-unten-Taste bringt sie zur Parametereingabe zurück.&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;Die Pfeil-nach-rechts-Taste speichert ein Abbild des Bildschirms als 'Feige.bmp' im Startverzeichnis des Programms.&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;Die Pfeil-nach-links-Taste wechselt zwischen den letzen beiden Ansichten (Neuberechnung)&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;Die [Esc]ape-Taste beendet das Programm&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;Mit zwei Mausklicks legen sie den Bereich für eine vergrößerte Darstellung fest.&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">64</span>,<span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">64</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;[...zum Fortfahren Maustaste drücken!]&quot;</span>

SHOW MOUSE
SUSPEND <span style="color: #b1b100;">FOR</span> MOUSE

<span style="color: #b1b100;">IF</span> Disp = <span style="color: #cc66cc;">1</span> &#160;<span style="color: #b1b100;">THEN</span> <span style="color: #b1b100;">SET</span> DISPLAY MODE <span style="color: #cc66cc;">800</span>, <span style="color: #cc66cc;">600</span>, <span style="color: #cc66cc;">16</span>
<span style="color: #b1b100;">IF</span> Disp = <span style="color: #cc66cc;">2</span> &#160;<span style="color: #b1b100;">THEN</span> <span style="color: #b1b100;">SET</span> DISPLAY MODE <span style="color: #cc66cc;">1024</span>, <span style="color: #cc66cc;">768</span>, <span style="color: #cc66cc;">16</span>
<span style="color: #b1b100;">IF</span> Disp = <span style="color: #cc66cc;">3</span> &#160;<span style="color: #b1b100;">THEN</span> <span style="color: #b1b100;">SET</span> DISPLAY MODE <span style="color: #cc66cc;">1600</span>, <span style="color: #cc66cc;">1200</span>, <span style="color: #cc66cc;">16</span>

SYNC <span style="color: #b1b100;">RATE</span> 0
CLS

<span style="color: #b1b100;">Reset</span>:
Amin# = <span style="color: #cc66cc;">1</span>
Amax# = <span style="color: #cc66cc;">4</span>
Imax# = <span style="color: #cc66cc;">1</span>
Imin# = 0
AminALT# =Amin#:AmaxALT#=Amax#:IminALT#=Imin#:ImaxALT#=Imax#

Start:
SYNC OFF
HIDE MOUSE

ink <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>,<span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
BOX <span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">1</span>,SCREEN <span style="color: #b1b100;">WIDTH</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> - <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">35</span>
ink <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span>,0,0<span style="color: #66cc66;">&#41;</span>,<span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
TEXT <span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">2</span>, <span style="color: #ff0000;">&quot;Bitte haben Sie etwas Geduld. Das Bild wird berechnet...&quot;</span>

SYNC <span style="color: #b1b100;">ON</span>

INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
BOX 0,0,SCREEN <span style="color: #b1b100;">WIDTH</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> - <span style="color: #cc66cc;">1</span>,SCREEN HEIGHT<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> - <span style="color: #cc66cc;">1</span>
INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
BOX <span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">1</span>,SCREEN <span style="color: #b1b100;">WIDTH</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> - <span style="color: #cc66cc;">2</span>,SCREEN HEIGHT<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> - <span style="color: #cc66cc;">2</span>
INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>

A# = Amin#

<span style="color: #b1b100;">FOR</span> Aakt = <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">TO</span> SCREEN <span style="color: #b1b100;">WIDTH</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
&#160;A# = A# + <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>Amax# - Amin#<span style="color: #66cc66;">&#41;</span> / SCREEN <span style="color: #b1b100;">WIDTH</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&#160;Ialt# = 0
&#160;<span style="color: #b1b100;">FOR</span> Iakt = <span style="color: #cc66cc;">2</span> <span style="color: #b1b100;">TO</span> Ianz + <span style="color: #cc66cc;">2</span>
&#160; Ialt# = Ialt# + <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1.0</span> / <span style="color: #66cc66;">&#40;</span>Ianz + <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&#160; I# = Ialt#
&#160; <span style="color: #b1b100;">FOR</span> n = <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">TO</span> nmax
&#160; &#160;J# = I#
&#160; &#160;I# = A# * I# - A# * I# * I#
&#160; <span style="color: #b1b100;">NEXT</span> n
&#160;DOT Aakt , <span style="color: #66cc66;">&#40;</span>Imax# - I#<span style="color: #66cc66;">&#41;</span> * SCREEN Height<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> / <span style="color: #66cc66;">&#40;</span>Imax# - Imin#<span style="color: #66cc66;">&#41;</span>
&#160;<span style="color: #b1b100;">IF</span> Janz = <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">AND</span> nmax &gt; <span style="color: #cc66cc;">2</span> <span style="color: #b1b100;">THEN</span> DOT Aakt , <span style="color: #66cc66;">&#40;</span>Imax# - J#<span style="color: #66cc66;">&#41;</span> * SCREEN Height<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> / <span style="color: #66cc66;">&#40;</span>Imax# - Imin#<span style="color: #66cc66;">&#41;</span>
&#160;<span style="color: #b1b100;">NEXT</span> Iakt
<span style="color: #b1b100;">NEXT</span> Aakt

SYNC OFF
SHOW MOUSE

<span style="color: #b1b100;">WHILE</span> mouseclick<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> = 0
&#160;<span style="color: #b1b100;">IF</span> spacekey<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> = <span style="color: #cc66cc;">1</span>
&#160; INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">64</span>,<span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">64</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
&#160; TEXT <span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">2</span>, <span style="color: #ff0000;">&quot;X-Koordinaten (A-Werte): von &quot;</span> + <span style="color: #b1b100;">STR</span>$<span style="color: #66cc66;">&#40;</span>Amin#<span style="color: #66cc66;">&#41;</span> + <span style="color: #ff0000;">&quot; (links) bis &quot;</span> + <span style="color: #b1b100;">STR</span>$<span style="color: #66cc66;">&#40;</span>Amax#<span style="color: #66cc66;">&#41;</span> + <span style="color: #ff0000;">&quot; (rechts)&quot;</span>
&#160; TEXT <span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">36</span>,<span style="color: #ff0000;">&quot;Y-Koordinaten (I-Werte): von &quot;</span> + <span style="color: #b1b100;">STR</span>$<span style="color: #66cc66;">&#40;</span>Imin#<span style="color: #66cc66;">&#41;</span> + <span style="color: #ff0000;">&quot; (unten) bis &quot;</span> + <span style="color: #b1b100;">STR</span>$<span style="color: #66cc66;">&#40;</span>Imax#<span style="color: #66cc66;">&#41;</span> + <span style="color: #ff0000;">&quot; (oben)&quot;</span>
&#160; INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
&#160;ENDIF
&#160;<span style="color: #b1b100;">IF</span> downkey<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> = <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">THEN</span> <span style="color: #b1b100;">GOTO</span> <span style="color: #b1b100;">New</span>
&#160;<span style="color: #b1b100;">IF</span> upkey<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> = <span style="color: #cc66cc;">1</span>
&#160; AminALT# =Amin#:AmaxALT#=Amax#:IminALT#=Imin#:ImaxALT#=Imax#
&#160; <span style="color: #b1b100;">GOTO</span> <span style="color: #b1b100;">Reset</span>
&#160;ENDIF

&#160;<span style="color: #b1b100;">IF</span> rightkey<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> = <span style="color: #cc66cc;">1</span> 
&#160; HIDE MOUSE
&#160; SAVE BITMAP <span style="color: #ff0000;">&quot;Feige.bmp&quot;</span>
&#160; SHOW MOUSE
&#160;ENDIF


&#160;<span style="color: #b1b100;">IF</span> leftkey<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> = <span style="color: #cc66cc;">1</span>
&#160; AminDummy#=Amin#:AmaxDummy#=Amax#:IminDummy#=Imin#:ImaxDummy#=Imax#
&#160; Amin#=AminALT#:Amax#=AmaxALT#:Imin#=IminALT#:Imax#=ImaxALT#
&#160; AminALT# =AminDummy#:AmaxALT#=AmaxDummy#:IminALT#=IminDummy#:ImaxALT#=ImaxDummy#
&#160; <span style="color: #b1b100;">GOTO</span> Start
&#160;ENDIF

ENDWHILE

AminALT# =Amin#:AmaxALT#=Amax#:IminALT#=Imin#:ImaxALT#=Imax#

SUSPEND <span style="color: #b1b100;">FOR</span> MOUSE

INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span>,0,0<span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
<span style="color: #b1b100;">LINE</span> 0,MouseY<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,SCREEN <span style="color: #b1b100;">WIDTH</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,MouseY<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #b1b100;">LINE</span> MouseX<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,0,MouseX<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,SCREEN HEIGHT<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
I1# = <span style="color: #66cc66;">&#40;</span>Imax# - Imin#<span style="color: #66cc66;">&#41;</span> / Screen Height<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> * <span style="color: #66cc66;">&#40;</span>Screen Height<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> - MouseY<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> + Imin#
A1# = <span style="color: #66cc66;">&#40;</span>Amax# - Amin#<span style="color: #66cc66;">&#41;</span> / Screen <span style="color: #b1b100;">Width</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> * &#160;MouseX<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> + Amin#

SUSPEND <span style="color: #b1b100;">FOR</span> MOUSE

INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span>,0,0<span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
<span style="color: #b1b100;">LINE</span> 0,MouseY<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,SCREEN <span style="color: #b1b100;">WIDTH</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,MouseY<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #b1b100;">LINE</span> MouseX<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,0,MouseX<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,SCREEN HEIGHT<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
I2# = <span style="color: #66cc66;">&#40;</span>Imax# - Imin#<span style="color: #66cc66;">&#41;</span> / Screen Height<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> * <span style="color: #66cc66;">&#40;</span>Screen Height<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> - MouseY<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> + Imin#
A2# = <span style="color: #66cc66;">&#40;</span>Amax# - Amin#<span style="color: #66cc66;">&#41;</span> / Screen <span style="color: #b1b100;">Width</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> * MouseX<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> + Amin#

<span style="color: #b1b100;">IF</span> A1# &lt; A2#: Amin# = A1# : Amax# = A2#:ENDIF
<span style="color: #b1b100;">IF</span> A2# &lt; A1#: Amin# = A2# : Amax# = A1#:ENDIF
<span style="color: #b1b100;">IF</span> I1# &lt; I2#: Imin# = I1# : Imax# = I2#:ENDIF
<span style="color: #b1b100;">IF</span> I2# &lt; I1#: Imin# = I2# : Imax# = I1#:ENDIF

<span style="color: #b1b100;">GOTO</span> Start</div></div></pre> ]]></summary>
	<content  type="html" ><![CDATA[ <p><img title="Jugend forscht 2003" src="images/jufo2003.jpg" alt="Formeln und Bilder aus der Arbeit" width="460" height="345" /></p>
<p>Beim diesjährigen Regionalwettbewerb von <a href="https://www.jugend-forscht.de/">Jugend forscht</a> habe ich zusammen mit Andrej Machno eine Arbeit zur Chaosphysik über "Nichtlineare rückgekoppelte Systeme" präsentiert. Damit belegten wir den 2. Platz im Bereich Physik und bekamen sogar noch einen Sonderpreis in Form eines Jahresabbonements der "Bild der Wissenschaft"!</p>
<p>Im ersten Teil der Arbeit haben wir uns mit den chaotischen Aspekten der Populationsdynamik beschäftigt. Bei welcher Zahl Nachkommen einer Tierart lässt sich die Populationsgröße für das nächste Jahr noch gut voraussagen? Im zweiten Teil haben wir einen Schwingkreis betrachtet, in dem statt einer Spule eine Diode eingebaut ist. Die Diode hat eine nichtlineare Induktivität. Bei bestimmten Parametern des Schwinkgreises wird aus der Kennlinie der Diode im Phasenraum ein merkwürdiges Gebilde... Beide Schwerpunkte nähern sich der Thematik des deterministischen Chaos von unterschiedlichen Seiten, offenbaren dabei jedoch einige Gemeinsamkeiten.</p>
<p>Für den ersten Teil habe ich mit <a href="http://darkbasic.thegamecreators.com/">DarkBasic</a> ein Simulationsprogramm geschrieben, mit dem ein so genanntes <a href="http://de.wikipedia.org/wiki/Mitchell_Feigenbaum">Feigenbaum</a>-Senario der <a href="http://de.wikipedia.org/wiki/Pierre-François_Verhulst">Verhulst</a>schen Populationsdynamik interaktiv darstellbar ist. Der Quelltext ist unten angehängt. Eine ausführlichere Version (mit Kommentaren) kann <a href="data/files/Programme/feigenbaum.dba">hier</a> heruntergeladen werden.</p>
<pre><div class="code"><div class="vb vb" style="font-family:monospace;"><span style="color: #b1b100;">REM</span> * Title &#160;: Feigenbaumszenario
<span style="color: #b1b100;">REM</span> * Author : Thomas Efer
<span style="color: #b1b100;">REM</span> * <span style="color: #b1b100;">Date</span> &#160; : 15. 12. <span style="color: #cc66cc;">2002</span>
<span style="color: #b1b100;">New</span>:
ENABLE Escapekey
<span style="color: #b1b100;">SET</span> DISPLAY MODE <span style="color: #cc66cc;">800</span>,<span style="color: #cc66cc;">600</span>,<span style="color: #cc66cc;">16</span>
HIDE MOUSE

<span style="color: #b1b100;">SET</span> TEXT FONT <span style="color: #ff0000;">&quot;Tahoma&quot;</span>
<span style="color: #b1b100;">SET</span> TEXT SIZE <span style="color: #cc66cc;">32</span>
<span style="color: #b1b100;">SET</span> TEXT <span style="color: #b1b100;">TO</span> BOLD
INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span>,0,0<span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
TEXT <span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">1</span>, <span style="color: #ff0000;">&quot;Darstellung eines FEIGENBAUM-Szenarios durch mehrfache&quot;</span>
TEXT <span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">35</span>,<span style="color: #ff0000;">&quot;Iteration einer logistischen Parabel: I = A*I*(1-I)&quot;</span>
<span style="color: #b1b100;">SET</span> TEXT <span style="color: #b1b100;">TO</span> NORMAL
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">64</span>,<span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">64</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;Geben Sie bitte die gewünschten Parameter an:&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
<span style="color: #b1b100;">INPUT</span> <span style="color: #ff0000;">&quot;Anzahl der Iterationsstartwerte I pro A: &quot;</span>, Ianz
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
<span style="color: #b1b100;">INPUT</span> <span style="color: #ff0000;">&quot;Anzahl der Iterationen pro A-I-Kombination: &quot;</span>, nmax
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
<span style="color: #b1b100;">INPUT</span> <span style="color: #ff0000;">&quot;Soll jeweils der vorletzte Iterationswert mit ausgegeben werden? (1=Ja;0=Nein): &quot;</span>, Janz
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;Bildschirmmodus:&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; Wünschen sie eine Auflösung von&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &#160;1 - 800 x 600, &quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &#160;2 - 1024 x 768 oder &quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &#160;3 - 1600 x 1200&quot;</span>
<span style="color: #b1b100;">INPUT</span> <span style="color: #ff0000;">&quot; Bildpunkten? &quot;</span>, Disp
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span>,00,00<span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;Die Darstellung beginnt im Bereich von 1 bis 3 (waagerecht) für A, sowie 0 bis 1 (senkrecht) für I.&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;Das drücken der Leertaste führt zur Ausgabe der Koordinaten des aktuellen Darstellungsfensters.&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;Die Pfeil-nach-oben-Taste setzt die Anzeige auf den oben genannten Startbereich zurück.&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;Die Pfeil-nach-unten-Taste bringt sie zur Parametereingabe zurück.&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;Die Pfeil-nach-rechts-Taste speichert ein Abbild des Bildschirms als 'Feige.bmp' im Startverzeichnis des Programms.&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;Die Pfeil-nach-links-Taste wechselt zwischen den letzen beiden Ansichten (Neuberechnung)&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;Die [Esc]ape-Taste beendet das Programm&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;Mit zwei Mausklicks legen sie den Bereich für eine vergrößerte Darstellung fest.&quot;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot; &quot;</span>
INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">64</span>,<span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">64</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
<span style="color: #b1b100;">PRINT</span> <span style="color: #ff0000;">&quot;[...zum Fortfahren Maustaste drücken!]&quot;</span>

SHOW MOUSE
SUSPEND <span style="color: #b1b100;">FOR</span> MOUSE

<span style="color: #b1b100;">IF</span> Disp = <span style="color: #cc66cc;">1</span> &#160;<span style="color: #b1b100;">THEN</span> <span style="color: #b1b100;">SET</span> DISPLAY MODE <span style="color: #cc66cc;">800</span>, <span style="color: #cc66cc;">600</span>, <span style="color: #cc66cc;">16</span>
<span style="color: #b1b100;">IF</span> Disp = <span style="color: #cc66cc;">2</span> &#160;<span style="color: #b1b100;">THEN</span> <span style="color: #b1b100;">SET</span> DISPLAY MODE <span style="color: #cc66cc;">1024</span>, <span style="color: #cc66cc;">768</span>, <span style="color: #cc66cc;">16</span>
<span style="color: #b1b100;">IF</span> Disp = <span style="color: #cc66cc;">3</span> &#160;<span style="color: #b1b100;">THEN</span> <span style="color: #b1b100;">SET</span> DISPLAY MODE <span style="color: #cc66cc;">1600</span>, <span style="color: #cc66cc;">1200</span>, <span style="color: #cc66cc;">16</span>

SYNC <span style="color: #b1b100;">RATE</span> 0
CLS

<span style="color: #b1b100;">Reset</span>:
Amin# = <span style="color: #cc66cc;">1</span>
Amax# = <span style="color: #cc66cc;">4</span>
Imax# = <span style="color: #cc66cc;">1</span>
Imin# = 0
AminALT# =Amin#:AmaxALT#=Amax#:IminALT#=Imin#:ImaxALT#=Imax#

Start:
SYNC OFF
HIDE MOUSE

ink <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>,<span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
BOX <span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">1</span>,SCREEN <span style="color: #b1b100;">WIDTH</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> - <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">35</span>
ink <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span>,0,0<span style="color: #66cc66;">&#41;</span>,<span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
TEXT <span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">2</span>, <span style="color: #ff0000;">&quot;Bitte haben Sie etwas Geduld. Das Bild wird berechnet...&quot;</span>

SYNC <span style="color: #b1b100;">ON</span>

INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
BOX 0,0,SCREEN <span style="color: #b1b100;">WIDTH</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> - <span style="color: #cc66cc;">1</span>,SCREEN HEIGHT<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> - <span style="color: #cc66cc;">1</span>
INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
BOX <span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">1</span>,SCREEN <span style="color: #b1b100;">WIDTH</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> - <span style="color: #cc66cc;">2</span>,SCREEN HEIGHT<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> - <span style="color: #cc66cc;">2</span>
INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>

A# = Amin#

<span style="color: #b1b100;">FOR</span> Aakt = <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">TO</span> SCREEN <span style="color: #b1b100;">WIDTH</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
&#160;A# = A# + <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>Amax# - Amin#<span style="color: #66cc66;">&#41;</span> / SCREEN <span style="color: #b1b100;">WIDTH</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&#160;Ialt# = 0
&#160;<span style="color: #b1b100;">FOR</span> Iakt = <span style="color: #cc66cc;">2</span> <span style="color: #b1b100;">TO</span> Ianz + <span style="color: #cc66cc;">2</span>
&#160; Ialt# = Ialt# + <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1.0</span> / <span style="color: #66cc66;">&#40;</span>Ianz + <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&#160; I# = Ialt#
&#160; <span style="color: #b1b100;">FOR</span> n = <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">TO</span> nmax
&#160; &#160;J# = I#
&#160; &#160;I# = A# * I# - A# * I# * I#
&#160; <span style="color: #b1b100;">NEXT</span> n
&#160;DOT Aakt , <span style="color: #66cc66;">&#40;</span>Imax# - I#<span style="color: #66cc66;">&#41;</span> * SCREEN Height<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> / <span style="color: #66cc66;">&#40;</span>Imax# - Imin#<span style="color: #66cc66;">&#41;</span>
&#160;<span style="color: #b1b100;">IF</span> Janz = <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">AND</span> nmax &gt; <span style="color: #cc66cc;">2</span> <span style="color: #b1b100;">THEN</span> DOT Aakt , <span style="color: #66cc66;">&#40;</span>Imax# - J#<span style="color: #66cc66;">&#41;</span> * SCREEN Height<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> / <span style="color: #66cc66;">&#40;</span>Imax# - Imin#<span style="color: #66cc66;">&#41;</span>
&#160;<span style="color: #b1b100;">NEXT</span> Iakt
<span style="color: #b1b100;">NEXT</span> Aakt

SYNC OFF
SHOW MOUSE

<span style="color: #b1b100;">WHILE</span> mouseclick<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> = 0
&#160;<span style="color: #b1b100;">IF</span> spacekey<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> = <span style="color: #cc66cc;">1</span>
&#160; INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">64</span>,<span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">64</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
&#160; TEXT <span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">2</span>, <span style="color: #ff0000;">&quot;X-Koordinaten (A-Werte): von &quot;</span> + <span style="color: #b1b100;">STR</span>$<span style="color: #66cc66;">&#40;</span>Amin#<span style="color: #66cc66;">&#41;</span> + <span style="color: #ff0000;">&quot; (links) bis &quot;</span> + <span style="color: #b1b100;">STR</span>$<span style="color: #66cc66;">&#40;</span>Amax#<span style="color: #66cc66;">&#41;</span> + <span style="color: #ff0000;">&quot; (rechts)&quot;</span>
&#160; TEXT <span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">36</span>,<span style="color: #ff0000;">&quot;Y-Koordinaten (I-Werte): von &quot;</span> + <span style="color: #b1b100;">STR</span>$<span style="color: #66cc66;">&#40;</span>Imin#<span style="color: #66cc66;">&#41;</span> + <span style="color: #ff0000;">&quot; (unten) bis &quot;</span> + <span style="color: #b1b100;">STR</span>$<span style="color: #66cc66;">&#40;</span>Imax#<span style="color: #66cc66;">&#41;</span> + <span style="color: #ff0000;">&quot; (oben)&quot;</span>
&#160; INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
&#160;ENDIF
&#160;<span style="color: #b1b100;">IF</span> downkey<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> = <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">THEN</span> <span style="color: #b1b100;">GOTO</span> <span style="color: #b1b100;">New</span>
&#160;<span style="color: #b1b100;">IF</span> upkey<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> = <span style="color: #cc66cc;">1</span>
&#160; AminALT# =Amin#:AmaxALT#=Amax#:IminALT#=Imin#:ImaxALT#=Imax#
&#160; <span style="color: #b1b100;">GOTO</span> <span style="color: #b1b100;">Reset</span>
&#160;ENDIF

&#160;<span style="color: #b1b100;">IF</span> rightkey<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> = <span style="color: #cc66cc;">1</span> 
&#160; HIDE MOUSE
&#160; SAVE BITMAP <span style="color: #ff0000;">&quot;Feige.bmp&quot;</span>
&#160; SHOW MOUSE
&#160;ENDIF


&#160;<span style="color: #b1b100;">IF</span> leftkey<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> = <span style="color: #cc66cc;">1</span>
&#160; AminDummy#=Amin#:AmaxDummy#=Amax#:IminDummy#=Imin#:ImaxDummy#=Imax#
&#160; Amin#=AminALT#:Amax#=AmaxALT#:Imin#=IminALT#:Imax#=ImaxALT#
&#160; AminALT# =AminDummy#:AmaxALT#=AmaxDummy#:IminALT#=IminDummy#:ImaxALT#=ImaxDummy#
&#160; <span style="color: #b1b100;">GOTO</span> Start
&#160;ENDIF

ENDWHILE

AminALT# =Amin#:AmaxALT#=Amax#:IminALT#=Imin#:ImaxALT#=Imax#

SUSPEND <span style="color: #b1b100;">FOR</span> MOUSE

INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span>,0,0<span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
<span style="color: #b1b100;">LINE</span> 0,MouseY<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,SCREEN <span style="color: #b1b100;">WIDTH</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,MouseY<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #b1b100;">LINE</span> MouseX<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,0,MouseX<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,SCREEN HEIGHT<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
I1# = <span style="color: #66cc66;">&#40;</span>Imax# - Imin#<span style="color: #66cc66;">&#41;</span> / Screen Height<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> * <span style="color: #66cc66;">&#40;</span>Screen Height<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> - MouseY<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> + Imin#
A1# = <span style="color: #66cc66;">&#40;</span>Amax# - Amin#<span style="color: #66cc66;">&#41;</span> / Screen <span style="color: #b1b100;">Width</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> * &#160;MouseX<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> + Amin#

SUSPEND <span style="color: #b1b100;">FOR</span> MOUSE

INK <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span>,0,0<span style="color: #66cc66;">&#41;</span>, <span style="color: #b1b100;">rgb</span><span style="color: #66cc66;">&#40;</span>0,0,0<span style="color: #66cc66;">&#41;</span>
<span style="color: #b1b100;">LINE</span> 0,MouseY<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,SCREEN <span style="color: #b1b100;">WIDTH</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,MouseY<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #b1b100;">LINE</span> MouseX<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,0,MouseX<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,SCREEN HEIGHT<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
I2# = <span style="color: #66cc66;">&#40;</span>Imax# - Imin#<span style="color: #66cc66;">&#41;</span> / Screen Height<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> * <span style="color: #66cc66;">&#40;</span>Screen Height<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> - MouseY<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> + Imin#
A2# = <span style="color: #66cc66;">&#40;</span>Amax# - Amin#<span style="color: #66cc66;">&#41;</span> / Screen <span style="color: #b1b100;">Width</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> * MouseX<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> + Amin#

<span style="color: #b1b100;">IF</span> A1# &lt; A2#: Amin# = A1# : Amax# = A2#:ENDIF
<span style="color: #b1b100;">IF</span> A2# &lt; A1#: Amin# = A2# : Amax# = A1#:ENDIF
<span style="color: #b1b100;">IF</span> I1# &lt; I2#: Imin# = I1# : Imax# = I2#:ENDIF
<span style="color: #b1b100;">IF</span> I2# &lt; I1#: Imin# = I2# : Imax# = I1#:ENDIF

<span style="color: #b1b100;">GOTO</span> Start</div></div></pre> ]]></content>
		<category scheme="http://thomasefer.de/blog/category/12.html" term="12" label="Wettbewerbe"/>
</entry>
</feed>
