<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.freitagsrunde.org/index.php?action=history&amp;feed=atom&amp;title=Forth</id>
	<title>Forth - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.freitagsrunde.org/index.php?action=history&amp;feed=atom&amp;title=Forth"/>
	<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Forth&amp;action=history"/>
	<updated>2026-05-19T03:10:02Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in FreitagsrundenWiki</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Forth&amp;diff=16482&amp;oldid=prev</id>
		<title>Loofmann am 6. September 2011 um 17:34 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Forth&amp;diff=16482&amp;oldid=prev"/>
		<updated>2011-09-06T17:34:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Version vom 6. September 2011, 17:34 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Wunderschöne Programmiersprache! :-)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Wunderschöne Programmiersprache! :-)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Hier mal als Beispiel ein in Forth programmiertes [&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;[&lt;/del&gt;Pong&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;]&lt;/del&gt;] für das Open Firmare von [&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;[Mac|&lt;/del&gt;Apple Macintosh-Rechnern]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Hier mal als Beispiel ein in Forth programmiertes [&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;https://secure.wikimedia.org/wikipedia/de/wiki/Pong &lt;/ins&gt;Pong] für das Open Firmare von [&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;https://secure.wikimedia.org/wikipedia/de/wiki/Apple_Macintosh &lt;/ins&gt;Apple Macintosh-Rechnern]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\ \ http://members.aol.com/plforth/ofpong/20020313/ofpong.txt&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\ \ http://members.aol.com/plforth/ofpong/20020313/ofpong.txt&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff::1.12:old-332:rev-16482 --&gt;
&lt;/table&gt;</summary>
		<author><name>Loofmann</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Forth&amp;diff=332&amp;oldid=prev</id>
		<title>Thomas am 24. Oktober 2004 um 17:49 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Forth&amp;diff=332&amp;oldid=prev"/>
		<updated>2004-10-24T17:49:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Version vom 24. Oktober 2004, 17:49 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l641&quot; &gt;Zeile 641:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 641:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\ \ (end of file) \ \&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\ \ (end of file) \ \&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Kategorie:Fachbegriffe der Informatik]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff::1.12:old-331:rev-332 --&gt;
&lt;/table&gt;</summary>
		<author><name>Thomas</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Forth&amp;diff=331&amp;oldid=prev</id>
		<title>Thomas am 24. Oktober 2004 um 17:48 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Forth&amp;diff=331&amp;oldid=prev"/>
		<updated>2004-10-24T17:48:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Version vom 24. Oktober 2004, 17:48 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Wunderschöne &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Sprache&lt;/del&gt;! :-)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Wunderschöne &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Programmiersprache&lt;/ins&gt;! :-)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Hier mal als Beispiel ein in Forth programmiertes [[Pong]] für das Open Firmare von [[Mac|Apple Macintosh-Rechnern]].&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\ \ http://members.aol.com/plforth/ofpong/20020313/ofpong.txt&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\ \ http://members.aol.com/plforth/ofpong/20020313/ofpong.txt&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff::1.12:old-330:rev-331 --&gt;
&lt;/table&gt;</summary>
		<author><name>Thomas</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Forth&amp;diff=330&amp;oldid=prev</id>
		<title>Thomas am 7. Oktober 2004 um 23:04 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Forth&amp;diff=330&amp;oldid=prev"/>
		<updated>2004-10-07T23:04:33Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Version vom 7. Oktober 2004, 23:04 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Wunderschöne Sprache! :-)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\ \ http://members.aol.com/plforth/ofpong/20020313/ofpong.txt&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\ \ http://members.aol.com/plforth/ofpong/20020313/ofpong.txt&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff::1.12:old-329:rev-330 --&gt;
&lt;/table&gt;</summary>
		<author><name>Thomas</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Forth&amp;diff=329&amp;oldid=prev</id>
		<title>Thomas am 7. Oktober 2004 um 22:41 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Forth&amp;diff=329&amp;oldid=prev"/>
		<updated>2004-10-07T22:41:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Version vom 7. Oktober 2004, 22:41 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;p&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;pre&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\ \ http://members.aol.com/plforth/ofpong/20020313/ofpong.txt&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\ \ http://members.aol.com/plforth/ofpong/20020313/ofpong.txt&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\ \&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\ \&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff::1.12:old-328:rev-329 --&gt;
&lt;/table&gt;</summary>
		<author><name>Thomas</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Forth&amp;diff=328&amp;oldid=prev</id>
		<title>Thomas am 7. Oktober 2004 um 22:41 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Forth&amp;diff=328&amp;oldid=prev"/>
		<updated>2004-10-07T22:41:30Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;p&amp;gt;&lt;br /&gt;
\ \ http://members.aol.com/plforth/ofpong/20020313/ofpong.txt&lt;br /&gt;
\ \&lt;br /&gt;
\ \ Wednesday, March 13, 2002&lt;br /&gt;
\ \ See also http://members.aol.com/plforth/ofpong/index.html&lt;br /&gt;
\ \&lt;br /&gt;
\ \&lt;br /&gt;
\ \ Hello, this is the game of Pong.&lt;br /&gt;
\ \&lt;br /&gt;
\ \ To play, store this file in the root folder of your Macintosh&lt;br /&gt;
\ \ HD, boot with Command+Option+O+F held down, and then enter&lt;br /&gt;
\ \ the command `boot hd:\ofpong.txt` but without the quotes.&lt;br /&gt;
\ \&lt;br /&gt;
\ \ While playing, hold down the A and Z keys to move the left &lt;br /&gt;
\ \ paddle up and down, hold down the ' and / keys to move the&lt;br /&gt;
\ \ right paddle up and down, press Esc to start a new game,&lt;br /&gt;
\ \ press Delete to quit.&lt;br /&gt;
\ \&lt;br /&gt;
\ \ After playing, enter the command `pong` to play some more,&lt;br /&gt;
\ \ or enter the command `bye` to get back to MacOS.&lt;br /&gt;
\ \&lt;br /&gt;
\ \&lt;br /&gt;
\ \ This code has been seen to work on a classic iMac, on an iBook,&lt;br /&gt;
\ \ and on a flat-planel iMac.  Please write to tell us if it&lt;br /&gt;
\ \ doesn't work on your Mac.  (Our web pages suggest addresses.)&lt;br /&gt;
\ \&lt;br /&gt;
\ \ Before modifying this code, you probably want to comment&lt;br /&gt;
\ \ out (or delete) the line at the end that says `pong`.  That&lt;br /&gt;
\ \ way when you `boot` this code you can look at it and modify&lt;br /&gt;
\ \ it before running it.&lt;br /&gt;
\ \&lt;br /&gt;
\ \&lt;br /&gt;
\ \ To construct this file, we modified a copy of the&lt;br /&gt;
\ \ 1.0d1 MacHack '98 release of OFPong.of found in OFPONG.SIT.&lt;br /&gt;
\ \&lt;br /&gt;
\ \ 1) We copied the text into a SimpleText file, so that `boot`&lt;br /&gt;
\ \ knows it can read the text. (The original was a BBEdit file.)&lt;br /&gt;
\ \ To let us edit this in Mac OS X, we had to tell TextEdit to&lt;br /&gt;
\ \ make this a plain text file, not an Rtf text file.&lt;br /&gt;
\ \&lt;br /&gt;
\ \ 2) We commented out the source code below that begins with \.&lt;br /&gt;
\ \&lt;br /&gt;
\ \ 3) We added the source below that ends with \.&lt;br /&gt;
\ \&lt;br /&gt;
\ \ 4) We added the comments you see here that begin with \ \.&lt;br /&gt;
\ \&lt;br /&gt;
\ \&lt;br /&gt;
\ \ Technically speaking, our modifications included:&lt;br /&gt;
\ \&lt;br /&gt;
\ \ 1) Begin with a \ comment, like `boot` wants.&lt;br /&gt;
\ \&lt;br /&gt;
\ \ 2) Comment out the `dl` command, guessing that has something&lt;br /&gt;
\ \ to do with running this game over a serial or Usb connection,&lt;br /&gt;
\ \ as opposed to using `boot` to run this from a file system.&lt;br /&gt;
\ \&lt;br /&gt;
\ \ 3) End with a `pong` command so that `boot` runs the game.&lt;br /&gt;
\ \&lt;br /&gt;
\ \ 4) Use `dev keyboard` where `dev kbd` is unavailable, and&lt;br /&gt;
\ \ accordingly adjust which bits of the key-map to poll to see&lt;br /&gt;
\ \ the keys A Z ' / Esc Delete held down.&lt;br /&gt;
\ \&lt;br /&gt;
\ \ 5) Use [ s&amp;quot; dev keyboard get-key-map 0 to active-package&amp;quot;&lt;br /&gt;
\ \ evaluate ] in place of [ &amp;quot; get-key-map&amp;quot; ... $call-method ]&lt;br /&gt;
\ \ because [ s&amp;quot; keyboard&amp;quot; open-dev ] crashes a classic iMac hard.&lt;br /&gt;
\ \&lt;br /&gt;
\ \ 6) Draw with the background-color and erase with the&lt;br /&gt;
\ \ foreground-color, rather than with colors -1 and 0, because&lt;br /&gt;
\ \ on a flat-panel iMac the color -1 is black or transparent, not&lt;br /&gt;
\ \ visibly different from the black background color 0.&lt;br /&gt;
\ \&lt;br /&gt;
\ \&lt;br /&gt;
\ \ If you display this source code in a fixed width font like&lt;br /&gt;
\ \ Courier or Monaco, then the column ruler here might help you&lt;br /&gt;
\ \ keep your lines of source code short:&lt;br /&gt;
\ \&lt;br /&gt;
\ \ 0000011111111111222222222223333333333344444444444555555555556666&lt;br /&gt;
\ \ 56789_0123456789_0123456789_0123456789_0123456789_0123456789_123&lt;br /&gt;
&lt;br /&gt;
\ dl&lt;br /&gt;
&lt;br /&gt;
decimal&lt;br /&gt;
&lt;br /&gt;
0 value gscreen&lt;br /&gt;
&amp;quot; screen&amp;quot; open-dev to gscreen&lt;br /&gt;
&lt;br /&gt;
0 value gkbd&lt;br /&gt;
&amp;quot; kbd&amp;quot; open-dev to gkbd&lt;br /&gt;
&lt;br /&gt;
\ 0 value gkeyboard \&lt;br /&gt;
\ &amp;quot; keyboard&amp;quot; open-dev to gkeyboard \&lt;br /&gt;
&lt;br /&gt;
0 value erasecol&lt;br /&gt;
-1 value drawcol&lt;br /&gt;
foreground-color to erasecol \&lt;br /&gt;
background-color to drawcol \&lt;br /&gt;
&lt;br /&gt;
0 value key_left_up&lt;br /&gt;
0 value key_left_down&lt;br /&gt;
0 value key_right_up&lt;br /&gt;
0 value key_right_down&lt;br /&gt;
0 value key_esc&lt;br /&gt;
0 value key_off&lt;br /&gt;
&lt;br /&gt;
get-msecs value grandseed&lt;br /&gt;
0 value glastupdate&lt;br /&gt;
0 value loopcount&lt;br /&gt;
0 value totalupdate&lt;br /&gt;
&lt;br /&gt;
0 value ballstop&lt;br /&gt;
&lt;br /&gt;
0 value ballx&lt;br /&gt;
0 value bally&lt;br /&gt;
&lt;br /&gt;
0 value balldx&lt;br /&gt;
0 value balldy&lt;br /&gt;
&lt;br /&gt;
0 value leftbaty&lt;br /&gt;
0 value rightbaty&lt;br /&gt;
0 value batdy&lt;br /&gt;
&lt;br /&gt;
0 value leftscore&lt;br /&gt;
0 value rightscore&lt;br /&gt;
&lt;br /&gt;
640 value screenx&lt;br /&gt;
480 value screeny&lt;br /&gt;
&lt;br /&gt;
: screen-prop@ ( prop-name prop-len -- value )&lt;br /&gt;
  gscreen ihandle&amp;gt;phandle get-package-property&lt;br /&gt;
  0= if&lt;br /&gt;
    decode-int -rot 2drop&lt;br /&gt;
  else&lt;br /&gt;
    256&lt;br /&gt;
  then&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
&amp;quot; width&amp;quot; screen-prop@ to screenx&lt;br /&gt;
&amp;quot; height&amp;quot; screen-prop@ to screeny&lt;br /&gt;
&lt;br /&gt;
20 value ballsize&lt;br /&gt;
ballsize 2 / value scoresize&lt;br /&gt;
ballsize 5 * value batsize&lt;br /&gt;
1000 value pscale&lt;br /&gt;
&lt;br /&gt;
screenx ballsize - pscale * value ball_limit_x&lt;br /&gt;
ballsize pscale * value ball_limit_lo_y&lt;br /&gt;
screeny ballsize 2 * - pscale * value ball_limit_hi_y&lt;br /&gt;
&lt;br /&gt;
ballsize pscale * value bat_limit_lo_y&lt;br /&gt;
screeny ballsize batsize + - pscale * value bat_limit_hi_y&lt;br /&gt;
&lt;br /&gt;
0 value hit_limit_left_lo_x&lt;br /&gt;
ballsize 2 * pscale * value hit_limit_left_hi_x&lt;br /&gt;
screenx ballsize 3 * - pscale * value hit_limit_right_lo_x&lt;br /&gt;
screenx ballsize - pscale * value hit_limit_right_hi_x&lt;br /&gt;
&lt;br /&gt;
ballsize pscale * value reflect_left_x&lt;br /&gt;
screenx ballsize 2 * - pscale * value reflect_right_x&lt;br /&gt;
&lt;br /&gt;
: random ( -- n ) grandseed 16807 * 17 + abs to grandseed grandseed 1000 mod ;&lt;br /&gt;
: unscale ( n -- n ) pscale 2 / + pscale / ;&lt;br /&gt;
: calcbatx ( n -- x ) screenx ballsize 3 * - * ballsize + ;&lt;br /&gt;
: paintrect ( c pixx pixy pixw pixh -- ) &amp;quot; fill-rectangle&amp;quot; gscreen $call-method ;&lt;br /&gt;
&lt;br /&gt;
: rectcol ( startx starty x1 y1 x2 y2 c -- startx starty )&lt;br /&gt;
  { startx starty x1 y1 x2 y2 c }&lt;br /&gt;
  &lt;br /&gt;
  c&lt;br /&gt;
  x1 scoresize * startx +&lt;br /&gt;
  y1 scoresize * starty +&lt;br /&gt;
  x2 x1 - scoresize *&lt;br /&gt;
  y2 y1 - scoresize *&lt;br /&gt;
  paintrect&lt;br /&gt;
  &lt;br /&gt;
  startx starty&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: blackrect ( startx starty x1 y1 x2 y2 -- ) drawcol rectcol ;&lt;br /&gt;
: whiterect ( startx starty x1 y1 x2 y2 -- ) erasecol rectcol ;&lt;br /&gt;
&lt;br /&gt;
: drawblank ( startx starty -- startx starty )&lt;br /&gt;
  0 0 4 7 whiterect&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: drawzero ( startx starty -- startx starty )&lt;br /&gt;
  0 0 1 7 blackrect&lt;br /&gt;
  1 0 3 1 blackrect&lt;br /&gt;
  1 6 3 7 blackrect&lt;br /&gt;
  3 0 4 7 blackrect&lt;br /&gt;
  1 3 3 4 whiterect&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: drawone ( startx starty -- startx starty )&lt;br /&gt;
  3 0 4 7 blackrect&lt;br /&gt;
  0 0 3 7 whiterect&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: drawtwo ( startx starty -- )&lt;br /&gt;
  0 0 4 1 blackrect&lt;br /&gt;
  3 1 4 3 blackrect&lt;br /&gt;
  0 3 4 4 blackrect&lt;br /&gt;
  0 4 1 6 blackrect&lt;br /&gt;
  0 6 4 7 blackrect&lt;br /&gt;
  0 1 1 3 whiterect&lt;br /&gt;
  3 4 4 6 whiterect&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: drawthree ( startx starty -- startx starty )&lt;br /&gt;
  0 0 4 1 blackrect&lt;br /&gt;
  3 1 4 3 blackrect&lt;br /&gt;
  0 3 4 4 blackrect&lt;br /&gt;
  3 4 4 6 blackrect&lt;br /&gt;
  0 6 4 7 blackrect&lt;br /&gt;
  0 1 1 3 whiterect&lt;br /&gt;
  0 4 1 6 whiterect&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: drawfour ( startx starty -- startx starty )&lt;br /&gt;
  0 0 1 3 blackrect&lt;br /&gt;
  0 3 3 4 blackrect&lt;br /&gt;
  3 0 4 7 blackrect&lt;br /&gt;
  1 0 3 1 whiterect&lt;br /&gt;
  0 4 3 7 whiterect&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: drawfive ( startx starty -- startx starty )&lt;br /&gt;
  0 0 4 1 blackrect&lt;br /&gt;
  0 1 1 3 blackrect&lt;br /&gt;
  0 3 4 4 blackrect&lt;br /&gt;
  3 4 4 6 blackrect&lt;br /&gt;
  0 6 4 7 blackrect&lt;br /&gt;
  3 1 4 3 whiterect&lt;br /&gt;
  0 4 1 6 whiterect&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: drawsix ( startx starty -- startx starty )&lt;br /&gt;
  0 0 1 7 blackrect&lt;br /&gt;
  1 3 3 4 blackrect&lt;br /&gt;
  1 6 3 7 blackrect&lt;br /&gt;
  3 3 4 7 blackrect&lt;br /&gt;
  1 0 4 3 whiterect&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: drawseven ( startx starty -- startx starty )&lt;br /&gt;
  0 0 3 1 blackrect&lt;br /&gt;
  3 0 4 7 blackrect&lt;br /&gt;
  0 1 3 7 whiterect&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: draweight ( startx starty -- startx starty )&lt;br /&gt;
  0 0 4 1 blackrect&lt;br /&gt;
  0 1 1 3 blackrect&lt;br /&gt;
  3 1 4 3 blackrect&lt;br /&gt;
  0 3 4 4 blackrect&lt;br /&gt;
  0 4 1 6 blackrect&lt;br /&gt;
  3 4 4 6 blackrect&lt;br /&gt;
  0 6 4 7 blackrect&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: drawnine ( startx starty -- startx starty )&lt;br /&gt;
  0 0 1 4 blackrect&lt;br /&gt;
  1 0 3 1 blackrect&lt;br /&gt;
  1 3 3 4 blackrect&lt;br /&gt;
  3 0 4 7 blackrect&lt;br /&gt;
  0 4 3 7 whiterect&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: drawdigit ( startx starty n -- )&lt;br /&gt;
  { n }&lt;br /&gt;
  n 0 = if drawzero then&lt;br /&gt;
  n 1 = if drawone then&lt;br /&gt;
  n 2 = if drawtwo then&lt;br /&gt;
  n 3 = if drawthree then&lt;br /&gt;
  n 4 = if drawfour then&lt;br /&gt;
  n 5 = if drawfive then&lt;br /&gt;
  n 6 = if drawsix then&lt;br /&gt;
  n 7 = if drawseven then&lt;br /&gt;
  n 8 = if draweight then&lt;br /&gt;
  n 9 = if drawnine then&lt;br /&gt;
  2drop&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: drawnumber ( startx starty num -- )&lt;br /&gt;
  { startx starty num }&lt;br /&gt;
  startx starty num abs 100 mod 10 / drawdigit&lt;br /&gt;
  startx scoresize 5 * + starty num abs 10 mod drawdigit&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: plotball ( x y -- ) { x y } drawcol x unscale y unscale ballsize ballsize paintrect ;&lt;br /&gt;
: eraseball ( x y -- ) { x y } erasecol x unscale y unscale ballsize ballsize paintrect ;&lt;br /&gt;
: plotbat ( n y -- ) { n y } drawcol n calcbatx y unscale ballsize batsize paintrect ;&lt;br /&gt;
: erasebat ( n y -- ) { n y } erasecol n calcbatx y unscale ballsize batsize paintrect ;&lt;br /&gt;
&lt;br /&gt;
: redraw ( -- )&lt;br /&gt;
  drawcol 0 0 screenx ballsize paintrect&lt;br /&gt;
  drawcol 0 screeny ballsize - screenx ballsize paintrect&lt;br /&gt;
&lt;br /&gt;
  drawcol screenx scoresize - 2 / ballsize 2 * scoresize screeny ballsize 4 * - paintrect&lt;br /&gt;
  &lt;br /&gt;
  ballsize 7 * ballsize 2 * leftscore drawnumber&lt;br /&gt;
  screenx ballsize 7 * 9 scoresize * + - ballsize 2 * rightscore drawnumber&lt;br /&gt;
  0 leftbaty plotbat&lt;br /&gt;
  1 rightbaty plotbat&lt;br /&gt;
  ballx bally plotball&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: drawboard ( -- )&lt;br /&gt;
  drawcol 0 0 screenx screeny paintrect&lt;br /&gt;
  erasecol 0 0 screenx screeny paintrect&lt;br /&gt;
  redraw&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: resetball ( -- )&lt;br /&gt;
  500 to ballstop&lt;br /&gt;
  screenx ballsize - 2 / pscale * ballx pscale mod + random + to ballx&lt;br /&gt;
  screeny ballsize - 2 / pscale * bally pscale mod + random + to bally&lt;br /&gt;
  &lt;br /&gt;
  random screenx pscale * * 2000000 / to balldx&lt;br /&gt;
  random screeny pscale * * 2000000 / to balldy&lt;br /&gt;
  balldx screenx pscale * 3000 / + to balldx&lt;br /&gt;
  balldy screeny pscale * 6000 / + to balldy&lt;br /&gt;
  &lt;br /&gt;
  random 500 &amp;lt; if&lt;br /&gt;
    balldx negate to balldx&lt;br /&gt;
  then&lt;br /&gt;
  random 500 &amp;lt; if&lt;br /&gt;
    balldy negate to balldy&lt;br /&gt;
  then&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: initvalues ( -- )&lt;br /&gt;
  ballsize 2 * pscale * to leftbaty&lt;br /&gt;
  screeny ballsize 2 * - batsize - pscale * to rightbaty&lt;br /&gt;
  &lt;br /&gt;
  screeny pscale * 1000 / to batdy&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: doreset ( -- )&lt;br /&gt;
  resetball&lt;br /&gt;
  0 to leftscore&lt;br /&gt;
  0 to rightscore&lt;br /&gt;
  drawboard&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: testkey ( map index mask -- bool )&lt;br /&gt;
  { map index mask } map index ca+ c@ mask and 0&amp;lt;&amp;gt;&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
\ : scankeys ( -- )&lt;br /&gt;
: gkbd-scankeys ( -- )&lt;br /&gt;
  &amp;quot; get-key-map&amp;quot; gkbd $call-method&lt;br /&gt;
  drop&lt;br /&gt;
  dup 0 128 testkey to key_left_up&lt;br /&gt;
  dup 0 2 testkey to key_left_down&lt;br /&gt;
  dup 4 1 testkey to key_right_up&lt;br /&gt;
  dup 5 8 testkey to key_right_down&lt;br /&gt;
  dup 6 4 testkey to key_esc&lt;br /&gt;
  dup 6 16 testkey to key_off&lt;br /&gt;
  drop&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: gkeyboard-scankeys ( -- ) \&lt;br /&gt;
  s&amp;quot; dev keyboard get-key-map 0 to active-package&amp;quot; evaluate \&lt;br /&gt;
  dup 0 8 testkey to key_left_up \ the A key&lt;br /&gt;
  dup 3 4 testkey to key_left_down \ the Z key&lt;br /&gt;
  dup 6 8 testkey to key_right_up \ the ' key&lt;br /&gt;
  dup 7 128 testkey to key_right_down \ the / key&lt;br /&gt;
  dup 5 64 testkey to key_esc \ the Esc key&lt;br /&gt;
  dup 5 32 testkey to key_off \ the Delete key&lt;br /&gt;
  drop \&lt;br /&gt;
; \&lt;br /&gt;
&lt;br /&gt;
: forth-scankeys \&lt;br /&gt;
  0 to key_esc&lt;br /&gt;
  key? if \&lt;br /&gt;
    key&lt;br /&gt;
    dup 64 or [char] a = to key_left_up \&lt;br /&gt;
    dup 64 or [char] z = to key_left_down \&lt;br /&gt;
    dup [char] ' = to key_right_up \&lt;br /&gt;
    dup [char] / = to key_right_down \&lt;br /&gt;
    dup 27 = to key_esc \&lt;br /&gt;
    dup 8 = to key_off \&lt;br /&gt;
    drop \&lt;br /&gt;
  then \&lt;br /&gt;
; \&lt;br /&gt;
&lt;br /&gt;
: roelf-scankeys \&lt;br /&gt;
  key? if key case \&lt;br /&gt;
    [char] a of true to key_left_up endof \&lt;br /&gt;
    [char] z of true to key_left_down endof \&lt;br /&gt;
    [char] ' of true to key_right_up endof \&lt;br /&gt;
    [char] / of true to key_right_down endof \&lt;br /&gt;
    [char] q of true to key_esc endof \&lt;br /&gt;
    true to key_off endof \&lt;br /&gt;
  endcase then \&lt;br /&gt;
; \&lt;br /&gt;
&lt;br /&gt;
: scankeys ( -- ) \&lt;br /&gt;
    \ forth-scankeys \&lt;br /&gt;
    \ roelf-scankeys \&lt;br /&gt;
    gkbd if gkbd-scankeys else gkeyboard-scankeys then \&lt;br /&gt;
; \&lt;br /&gt;
&lt;br /&gt;
: moveball ( oldx oldy newx newy -- )&lt;br /&gt;
  { oldx oldy newx newy }&lt;br /&gt;
  oldx oldy eraseball&lt;br /&gt;
  newx newy plotball&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: doupdateball ( delta -- )&lt;br /&gt;
  ballx swap bally swap&lt;br /&gt;
  &lt;br /&gt;
  dup&lt;br /&gt;
  &lt;br /&gt;
  balldx * ballx + to ballx&lt;br /&gt;
  balldy * bally + to bally&lt;br /&gt;
&lt;br /&gt;
  ballx 0&amp;lt; if&lt;br /&gt;
    resetball&lt;br /&gt;
    balldx abs negate to balldx&lt;br /&gt;
    ballx ballsize 2 * pscale * + to ballx&lt;br /&gt;
    rightscore 1 + to rightscore&lt;br /&gt;
    rightscore 15 = if&lt;br /&gt;
      -1 to ballstop&lt;br /&gt;
    then&lt;br /&gt;
  then&lt;br /&gt;
  ballx ball_limit_x &amp;gt; if&lt;br /&gt;
    resetball&lt;br /&gt;
    balldx abs to balldx&lt;br /&gt;
    ballx ballsize 2 * pscale * - to ballx&lt;br /&gt;
    leftscore 1 + to leftscore&lt;br /&gt;
    leftscore 15 = if&lt;br /&gt;
      -1 to ballstop&lt;br /&gt;
    then&lt;br /&gt;
  then&lt;br /&gt;
&lt;br /&gt;
  bally ball_limit_lo_y &amp;lt; if&lt;br /&gt;
    balldy negate to balldy&lt;br /&gt;
    ball_limit_lo_y 2 * bally - to bally&lt;br /&gt;
  then&lt;br /&gt;
  bally ball_limit_hi_y &amp;gt; if&lt;br /&gt;
    balldy negate to balldy&lt;br /&gt;
    ball_limit_hi_y 2 * bally - to bally&lt;br /&gt;
  then&lt;br /&gt;
  &lt;br /&gt;
  balldx 0&amp;lt; if&lt;br /&gt;
    ballx hit_limit_left_lo_x hit_limit_left_hi_x between if&lt;br /&gt;
      bally leftbaty ballsize pscale * - leftbaty batsize pscale * + between if&lt;br /&gt;
        &lt;br /&gt;
        bally leftbaty &amp;lt; if&lt;br /&gt;
          balldy abs negate to balldy&lt;br /&gt;
        then&lt;br /&gt;
        &lt;br /&gt;
        bally leftbaty batsize ballsize - pscale * + &amp;gt; if&lt;br /&gt;
          balldy abs to balldy&lt;br /&gt;
        then      &lt;br /&gt;
&lt;br /&gt;
        ballx reflect_left_x &amp;gt; if&lt;br /&gt;
          balldx abs random 50 / + to balldx&lt;br /&gt;
&lt;br /&gt;
          leftbaty bally - unscale&lt;br /&gt;
          dup 0 batsize between if&lt;br /&gt;
            batsize 2 / - random * 2 / batsize / 25 / balldy + to balldy&lt;br /&gt;
          else&lt;br /&gt;
            drop&lt;br /&gt;
          then&lt;br /&gt;
        then&lt;br /&gt;
      then&lt;br /&gt;
    then&lt;br /&gt;
  then&lt;br /&gt;
  &lt;br /&gt;
  balldx 0&amp;gt; if&lt;br /&gt;
    ballx hit_limit_right_lo_x hit_limit_right_hi_x between if&lt;br /&gt;
      bally rightbaty ballsize pscale * - rightbaty batsize pscale * + between if&lt;br /&gt;
      &lt;br /&gt;
        bally rightbaty &amp;lt; if&lt;br /&gt;
          balldy abs negate to balldy&lt;br /&gt;
        then&lt;br /&gt;
        &lt;br /&gt;
        bally rightbaty batsize ballsize - pscale * + &amp;gt; if&lt;br /&gt;
          balldy abs to balldy&lt;br /&gt;
        then      &lt;br /&gt;
&lt;br /&gt;
        ballx reflect_right_x &amp;lt; if&lt;br /&gt;
          balldx abs random 50 / + negate to balldx&lt;br /&gt;
&lt;br /&gt;
          rightbaty bally - unscale&lt;br /&gt;
          dup 0 batsize between if&lt;br /&gt;
            batsize 2 / - random * 2 / batsize / 25 / balldy + to balldy&lt;br /&gt;
          else&lt;br /&gt;
            drop&lt;br /&gt;
          then&lt;br /&gt;
        then&lt;br /&gt;
      then&lt;br /&gt;
    then&lt;br /&gt;
  then&lt;br /&gt;
&lt;br /&gt;
  bally ball_limit_lo_y &amp;lt; if&lt;br /&gt;
    ball_limit_lo_y to bally&lt;br /&gt;
  then&lt;br /&gt;
  bally ball_limit_hi_y &amp;gt; if&lt;br /&gt;
    ball_limit_hi_y to bally&lt;br /&gt;
  then&lt;br /&gt;
&lt;br /&gt;
  ballx bally moveball&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: updateball ( delta -- )&lt;br /&gt;
  ballstop 0= if&lt;br /&gt;
    doupdateball&lt;br /&gt;
  else&lt;br /&gt;
    ballstop -1 = if&lt;br /&gt;
      drop&lt;br /&gt;
    else&lt;br /&gt;
      ballstop swap - to ballstop&lt;br /&gt;
      ballstop 0&amp;lt;= if&lt;br /&gt;
        0 to ballstop&lt;br /&gt;
      then&lt;br /&gt;
    then&lt;br /&gt;
  then&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: movebatup ( n oldp delta -- )&lt;br /&gt;
  { n oldp delta }&lt;br /&gt;
  erasecol n calcbatx oldp batsize + delta + ballsize delta negate paintrect&lt;br /&gt;
  drawcol n calcbatx oldp delta + ballsize delta negate paintrect&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: movebatdown ( n oldp delta -- )&lt;br /&gt;
  { n oldp delta }&lt;br /&gt;
  erasecol n calcbatx oldp ballsize delta paintrect&lt;br /&gt;
  drawcol n calcbatx oldp batsize + ballsize delta paintrect&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: movebat ( n oldy newy -- )&lt;br /&gt;
  { n oldy newy }&lt;br /&gt;
  newy unscale oldy unscale -&lt;br /&gt;
  dup abs batsize &amp;lt; if&lt;br /&gt;
    dup 0&amp;lt;&amp;gt; if&lt;br /&gt;
      dup 0&amp;lt; if&lt;br /&gt;
        n swap oldy unscale swap movebatup&lt;br /&gt;
      else&lt;br /&gt;
        n swap oldy unscale swap movebatdown&lt;br /&gt;
      then&lt;br /&gt;
    else&lt;br /&gt;
      drop&lt;br /&gt;
    then&lt;br /&gt;
  else&lt;br /&gt;
    drop&lt;br /&gt;
    n oldy erasebat&lt;br /&gt;
    n newy plotbat&lt;br /&gt;
  then&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: updatebats ( delta -- )&lt;br /&gt;
  { delta }&lt;br /&gt;
  0 leftbaty 0&lt;br /&gt;
  over bat_limit_lo_y &amp;gt; if&lt;br /&gt;
  key_left_up 0&amp;lt;&amp;gt; if&lt;br /&gt;
    batdy -&lt;br /&gt;
  then then&lt;br /&gt;
  over bat_limit_hi_y &amp;lt; if&lt;br /&gt;
  key_left_down 0&amp;lt;&amp;gt; if&lt;br /&gt;
    batdy +&lt;br /&gt;
  then then&lt;br /&gt;
  delta * over +&lt;br /&gt;
  dup to leftbaty&lt;br /&gt;
  movebat&lt;br /&gt;
  &lt;br /&gt;
  1 rightbaty 0&lt;br /&gt;
  over bat_limit_lo_y &amp;gt; if&lt;br /&gt;
  key_right_up 0&amp;lt;&amp;gt; if&lt;br /&gt;
    batdy -&lt;br /&gt;
  then then&lt;br /&gt;
  over bat_limit_hi_y &amp;lt; if&lt;br /&gt;
  key_right_down 0&amp;lt;&amp;gt; if&lt;br /&gt;
    batdy +&lt;br /&gt;
  then then&lt;br /&gt;
  delta * over +&lt;br /&gt;
  dup to rightbaty&lt;br /&gt;
  movebat&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: initeverything ( -- )&lt;br /&gt;
  cr&lt;br /&gt;
  0 to loopcount&lt;br /&gt;
  0 to totalupdate&lt;br /&gt;
  initvalues&lt;br /&gt;
  10 0 do scankeys loop&lt;br /&gt;
  doreset&lt;br /&gt;
  get-msecs to glastupdate &lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: doloop ( delta -- )&lt;br /&gt;
  loopcount 1 + to loopcount&lt;br /&gt;
  dup totalupdate + to totalupdate&lt;br /&gt;
  &lt;br /&gt;
  dup updatebats&lt;br /&gt;
  dup updateball&lt;br /&gt;
  redraw&lt;br /&gt;
  &lt;br /&gt;
  glastupdate + to glastupdate&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: page 12 emit ; \&lt;br /&gt;
&lt;br /&gt;
: runpong ( -- )&lt;br /&gt;
  initeverything&lt;br /&gt;
  begin&lt;br /&gt;
    get-msecs glastupdate -&lt;br /&gt;
      dup 0&amp;gt; if&lt;br /&gt;
        dup 250 &amp;gt; if&lt;br /&gt;
          drop&lt;br /&gt;
          get-msecs to glastupdate&lt;br /&gt;
          250&lt;br /&gt;
        then&lt;br /&gt;
        doloop&lt;br /&gt;
      else&lt;br /&gt;
        drop&lt;br /&gt;
      then&lt;br /&gt;
    scankeys&lt;br /&gt;
    key_esc 0&amp;lt;&amp;gt; if&lt;br /&gt;
      doreset&lt;br /&gt;
    then&lt;br /&gt;
  key_off 0&amp;lt;&amp;gt; until&lt;br /&gt;
  page base @ decimal \&lt;br /&gt;
  &amp;quot; Count:&amp;quot; type loopcount s. cr&lt;br /&gt;
  &amp;quot; Avg millisec:&amp;quot; type totalupdate loopcount / s. cr&lt;br /&gt;
  base ! \&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
: pong runpong ; \&lt;br /&gt;
&lt;br /&gt;
hex \&lt;br /&gt;
&lt;br /&gt;
pong \&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\ \ (end of file) \ \&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>
		
	</entry>
</feed>