<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.temlib.org/AtariForumWiki/index.php?action=history&amp;feed=atom&amp;title=REPLACEMENT_STOS_COMPILER_MANUAL</id>
	<title>REPLACEMENT STOS COMPILER MANUAL - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.temlib.org/AtariForumWiki/index.php?action=history&amp;feed=atom&amp;title=REPLACEMENT_STOS_COMPILER_MANUAL"/>
	<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=REPLACEMENT_STOS_COMPILER_MANUAL&amp;action=history"/>
	<updated>2026-05-02T04:00:11Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.2</generator>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=REPLACEMENT_STOS_COMPILER_MANUAL&amp;diff=16635&amp;oldid=prev</id>
		<title>&gt;Wongck at 11:45, 13 October 2011</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=REPLACEMENT_STOS_COMPILER_MANUAL&amp;diff=16635&amp;oldid=prev"/>
		<updated>2011-10-13T11:45:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&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;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:45, 13 October 2011&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-l586&quot;&gt;Line 586:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 586:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; 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;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; 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;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; 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;[[Category:STOS BASIC]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; 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;[[Category:STOS BASIC]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Programming]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>&gt;Wongck</name></author>
	</entry>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=REPLACEMENT_STOS_COMPILER_MANUAL&amp;diff=16634&amp;oldid=prev</id>
		<title>&gt;Tompee at 13:56, 1 November 2008</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=REPLACEMENT_STOS_COMPILER_MANUAL&amp;diff=16634&amp;oldid=prev"/>
		<updated>2008-11-01T13:56:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&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;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 09:56, 1 November 2008&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;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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;Please note that this manual was written as a '''replacement''' for the [[STOS BASIC COMPILER INSTRUCTIONS|Official STOS BASIC Compiler Manual]], which is also worth referencing.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; 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;CENTER&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; 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;CENTER&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; 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;H1&amp;gt;&amp;lt;B&amp;gt;The Complete STOS Reference&amp;lt;/B&amp;gt;&amp;lt;/H1&amp;gt;&amp;lt;/CENTER&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; 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;H1&amp;gt;&amp;lt;B&amp;gt;The Complete STOS Reference&amp;lt;/B&amp;gt;&amp;lt;/H1&amp;gt;&amp;lt;/CENTER&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>&gt;Tompee</name></author>
	</entry>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=REPLACEMENT_STOS_COMPILER_MANUAL&amp;diff=16633&amp;oldid=prev</id>
		<title>&gt;Tompee: COMPILER MANUAL moved to REPLACEMENT STOS COMPILER MANUAL: Moore meaningful title</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=REPLACEMENT_STOS_COMPILER_MANUAL&amp;diff=16633&amp;oldid=prev"/>
		<updated>2008-11-01T13:52:29Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/AtariForumWiki/index.php?title=COMPILER_MANUAL&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;COMPILER MANUAL (page does not exist)&quot;&gt;COMPILER MANUAL&lt;/a&gt; moved to &lt;a href=&quot;/AtariForumWiki/index.php/REPLACEMENT_STOS_COMPILER_MANUAL&quot; title=&quot;REPLACEMENT STOS COMPILER MANUAL&quot;&gt;REPLACEMENT STOS COMPILER MANUAL&lt;/a&gt;: Moore meaningful title&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 09:52, 1 November 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>&gt;Tompee</name></author>
	</entry>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=REPLACEMENT_STOS_COMPILER_MANUAL&amp;diff=16632&amp;oldid=prev</id>
		<title>&gt;Tompee at 13:44, 1 November 2008</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=REPLACEMENT_STOS_COMPILER_MANUAL&amp;diff=16632&amp;oldid=prev"/>
		<updated>2008-11-01T13:44:44Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&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;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 09:44, 1 November 2008&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-l580&quot;&gt;Line 580:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 580:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; 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;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; 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;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; 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;Back to [[Programming]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; 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;Back to [[Programming]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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;[[Category:STOS BASIC]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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;[[Category:Programming]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>&gt;Tompee</name></author>
	</entry>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=REPLACEMENT_STOS_COMPILER_MANUAL&amp;diff=16631&amp;oldid=prev</id>
		<title>&gt;Zorro 2 at 14:54, 11 September 2006</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=REPLACEMENT_STOS_COMPILER_MANUAL&amp;diff=16631&amp;oldid=prev"/>
		<updated>2006-09-11T14:54:25Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&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;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:54, 11 September 2006&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-l577&quot;&gt;Line 577:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 577:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; 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;found it of some use. Hopefully, i will be able to write similar stuff&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; 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;found it of some use. Hopefully, i will be able to write similar stuff&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; 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;in the future.David.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; 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;in the future.David.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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;Back to [[Programming]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>&gt;Zorro 2</name></author>
	</entry>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=REPLACEMENT_STOS_COMPILER_MANUAL&amp;diff=16630&amp;oldid=prev</id>
		<title>&gt;Zorro 2 at 11:41, 25 July 2006</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=REPLACEMENT_STOS_COMPILER_MANUAL&amp;diff=16630&amp;oldid=prev"/>
		<updated>2006-07-25T11:41:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;CENTER&amp;gt;&lt;br /&gt;
&amp;lt;H1&amp;gt;&amp;lt;B&amp;gt;The Complete STOS Reference&amp;lt;/B&amp;gt;&amp;lt;/H1&amp;gt;&amp;lt;/CENTER&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CENTER&amp;gt;&amp;amp;nbsp;&amp;lt;I&amp;gt;pre-release 0.2 Edited By Dr Phibes&amp;lt;/I&amp;gt;&amp;lt;/CENTER&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CENTER&amp;gt;&lt;br /&gt;
&amp;lt;H2&amp;gt;REPLACEMENT COMPILER MANUAL&amp;lt;/H2&amp;gt;&amp;lt;/CENTER&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CENTER&amp;gt;&amp;lt;B&amp;gt;&amp;lt;I&amp;gt;&amp;lt;FONT SIZE=+1&amp;gt;&amp;amp;nbsp;BY DAVID WILSON&amp;lt;/FONT&amp;gt;&amp;lt;/I&amp;gt;&amp;lt;/B&amp;gt;&amp;lt;/CENTER&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CENTER&amp;gt;&amp;amp;nbsp;&amp;lt;/CENTER&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;H2&amp;gt;What Is A Compiler?&amp;lt;/H2&amp;gt;&lt;br /&gt;
As you may know, the ST's 68000 processor is only capable of understanding&lt;br /&gt;
an internal language know as machine code. This means that you cannot simply&lt;br /&gt;
enter BASIC commands into your ST without first translating them into machine&lt;br /&gt;
code using Stos Basic. Supposing you were presented with some valuable&lt;br /&gt;
text written in a foreign language (say French). There are two ways this&lt;br /&gt;
could be translated into English. One idea might be to take each word in&lt;br /&gt;
the text and look it up in a French-English dictionary.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;P&amp;gt;&amp;amp;nbsp;This approach is known as interpretation, and is used by the standard&lt;br /&gt;
STOS basic. Whenever a program is run, each instruction is checked against&lt;br /&gt;
a dictionary stored somewhere in the St's memory, and the appropiate machine&lt;br /&gt;
code routine is subsequently executed.Another solution to the problem might&lt;br /&gt;
be to hand the text over to a professional translator. This person could&lt;br /&gt;
re-write the entire document in English, which you could then read directly.&lt;br /&gt;
The same idea can aldo be applied to a basic program. In this case, the&lt;br /&gt;
translator corresponds to a seperate program known as a compiler. The STOS&lt;br /&gt;
Basic compiler converts the complete STOS Basic program into machine code,&lt;br /&gt;
producing a new version which can be executed immediately without the need&lt;br /&gt;
for further translation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;P&amp;gt;The main advantages of a compiled program over an interpreted one can&lt;br /&gt;
be summarised like this:&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;&lt;br /&gt;
Compiled programs execute up to three time faster than the equivalent interpreted&lt;br /&gt;
program.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;LI&amp;gt;&lt;br /&gt;
Compiled programs can be run directly from the GEM desktop, or from and&lt;br /&gt;
AUTO folder. They do not need any of the files from the STOS folder in&lt;br /&gt;
order to run.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;LI&amp;gt;&lt;br /&gt;
Once a program has been compiled, it is impossible to translate it back&lt;br /&gt;
into STOS basic. So there is no chance of anyone stealing your original&lt;br /&gt;
code.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
Against this, there is one single disadvantage: Compiled programs are larger&lt;br /&gt;
than interpreted programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;P&amp;gt;This statement is actually misleading because the real size of an interpreted&lt;br /&gt;
program is far larger than you would initially expect. Take the game Orbit&lt;br /&gt;
for instance. Although this is apparently only 60k, if you were to create&lt;br /&gt;
a run-only version you would need to include all the seperate program modules&lt;br /&gt;
contained in the STOS folder. The total size of the program would therfore&lt;br /&gt;
be a surprising 270k. Contrast this with a compiled version of the same&lt;br /&gt;
program. The final length of Orbit after compilation is around 130k, which&lt;br /&gt;
is over 140k less than the interpreted version. So although a copiled program&lt;br /&gt;
may look larger than an interpreted one, it's often considerably smaller.&lt;br /&gt;
&amp;lt;H2&amp;gt;&lt;br /&gt;
Auto Loading The Compiler&amp;lt;/H2&amp;gt;&lt;br /&gt;
The action of the compiler is controlled through the accessory program&lt;br /&gt;
COMPILER.ACB. This can be loaded automatically by changing the EDITOR.ENV&lt;br /&gt;
file on the STOS boot disc. Insert the original STOS language disc into&lt;br /&gt;
drive A and run the configuration program CONFIG by typing&lt;br /&gt;
&amp;lt;pre&amp;gt;RUN &amp;quot;CONFIG.BAS&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
When the main menu appears, click on the next page icon. You can now add&lt;br /&gt;
COMPILER.ACB to the list of accesories which will be loaded on start-up.&lt;br /&gt;
Click the mouse on the first free space of the accessory list and enter&lt;br /&gt;
the line:&lt;br /&gt;
&amp;lt;pre&amp;gt;COMPILER.ACB&amp;lt;/pre&amp;gt;&lt;br /&gt;
It's a good idea to add the following function key definitions to the standard&lt;br /&gt;
list. This will simplify the process of loading and saving compiled programs&lt;br /&gt;
considerably:&lt;br /&gt;
&amp;lt;pre&amp;gt;F14(shift-F4) fload &amp;quot;*.CMP&amp;quot;&lt;br /&gt;
F15(shift-F5) fsave &amp;quot;*.CMP&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
You can now save the new configuration file onto your working copy of STOS&lt;br /&gt;
Basic using the 'SAVE ON DISC' command. Then copy the COMPILER.ACB onto&lt;br /&gt;
the language disc so that STOS basic can pick it up off the root directory&lt;br /&gt;
as it boots up.&lt;br /&gt;
&amp;lt;H2&amp;gt;&lt;br /&gt;
Using The Compiler&amp;lt;/H2&amp;gt;&lt;br /&gt;
The compiler accessory can be executed at any time directly from the [Help]&lt;br /&gt;
menu. In order for the compiler to work, the files contained in the COMPILER&lt;br /&gt;
folder should always be available from the current drive. This reduces&lt;br /&gt;
the amount of available memory used by the compiler to a mere 25k, and&lt;br /&gt;
allows you to compile acceptably large STOS basic programs on a 520 ST.The&lt;br /&gt;
optimum strategy for using this package varies depending on your precise&lt;br /&gt;
system configuration. Here is a full explanation of how the package can&lt;br /&gt;
be set up for use with most common ST systems.&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
USING THE COMPILER ON A 520 ST WITH ONE FLOPPY DRIVE&amp;lt;/H3&amp;gt;&lt;br /&gt;
If you are intending to compile large programs on an unexpanded machine,&lt;br /&gt;
it's wise to keep a copy of the compiler folder on every disc you will&lt;br /&gt;
be using for your programs. This will allow you to compile large program&lt;br /&gt;
onto disc, without the risk of running out of memory. A special program&lt;br /&gt;
called COMPCOPY is supplied for this purpose, which automatically copies&lt;br /&gt;
the appropiate files onto your discs. Insert the compiler disc into drive&lt;br /&gt;
A and type:&lt;br /&gt;
&amp;lt;pre&amp;gt;ACCLOAD &amp;quot;COMPCOPY&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
press HELP and select COMPCOPY with the appropiate function key. Now press&lt;br /&gt;
G to load the entire contents of the folder into the ST's memory. You will&lt;br /&gt;
then be prompted for a blank disc, which should be placed into drive, and&lt;br /&gt;
the compiler files will be copied onto your new disc.Depending on the format&lt;br /&gt;
of your drive, you will be left with either 200k or 480k on each disc.&lt;br /&gt;
This should prove more than adequate for all but the largest STOS programs.&lt;br /&gt;
Despite this, it's still possible that you may occaisionally run out of&lt;br /&gt;
memory. Try removing a few other accessories to save some space.Incidentally,&lt;br /&gt;
the STOS compiler does NOT allow you to swap discs during the compilation&lt;br /&gt;
process. So don't try to compile a program from drive A to drive B if you&lt;br /&gt;
are limited to a single drive.&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
USING THE COMPILER ON A 520 ST WITH TWO FLOPPY DRIVES&amp;lt;/H3&amp;gt;&lt;br /&gt;
Wehn you use the compiler, place a disc containing the COMPILER folder&lt;br /&gt;
into drive A, and your program disc in drive B. This will provide you with&lt;br /&gt;
plenty of disc space to compile even the largest STOS programs.&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
USING THE COMPILER WITH A RAMDISC (1040 ST OR HIGHER)&amp;lt;/H3&amp;gt;&lt;br /&gt;
You can increase the speed of the STOS Basic compiler significantly by&lt;br /&gt;
copying the contents of the COMPILER folder onto a ramdisk. Typical compilation&lt;br /&gt;
speeds are a staggering 10k per second.For STOS users with a single density&lt;br /&gt;
disc drive it is important to realise that the STOS language disc and COMPILER&lt;br /&gt;
folder won't both fit on a single sided disk.&lt;br /&gt;
&amp;lt;H2&amp;gt;&lt;br /&gt;
The Compiler Accessory&amp;lt;/H2&amp;gt;&lt;br /&gt;
If you found the installation procedure rather cumbersome, you will be&lt;br /&gt;
delighted to hear that the compilation process is simplicity in itself.&lt;br /&gt;
You begin by booting up your STOS Basic using the new configuration file.&lt;br /&gt;
This will automatically load the COMPILER accessory into the ST's memory&lt;br /&gt;
during initialisation.Alternatively you can load the accessory directly&lt;br /&gt;
from the compiler disc using the line;&lt;br /&gt;
&amp;lt;pre&amp;gt;ACCLOAD &amp;quot;COMPILER&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
You can now enter the compiler accessory from the [Help] menu in the normal&lt;br /&gt;
way, at which point you will be presented with the control panel.The main&lt;br /&gt;
features of the control panel are controlled theough a set of five 'buttons'.&lt;br /&gt;
These can be activated by simply moving the mouse pointer over the appropiate&lt;br /&gt;
are and clicking once on the left mouse key.Below follows an explanation&lt;br /&gt;
of these buttons:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
SOURCE&amp;lt;/H3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BLOCKQUOTE&amp;gt;The source button is used to determine whether a program is&lt;br /&gt;
to be compiled either from memory or the current disc. Clicking on the&lt;br /&gt;
box underneath toggles between the two possiblities.&lt;br /&gt;
&amp;lt;H4&amp;gt;&lt;br /&gt;
1) MEMORY&amp;lt;/H4&amp;gt;&lt;br /&gt;
This option informs the compileer that you wish to compile the program&lt;br /&gt;
you are currently editing. Any of the four program segments may be compiled&lt;br /&gt;
independently without affecting the conents of the others. Compiling from&lt;br /&gt;
memory is very fast, but it does consume a large amount of memory.&lt;br /&gt;
&amp;lt;H4&amp;gt;&lt;br /&gt;
2) DISC&amp;lt;/H4&amp;gt;&lt;br /&gt;
Some programs are simply too large to be compiled directly from memory.&lt;br /&gt;
In these cases, it's convienient to compile a program from a file on disc.&lt;br /&gt;
Obviously this is slower than the memory option, but most STOS programs&lt;br /&gt;
can still easily be compiled within a matter of minutes. Before using this&lt;br /&gt;
feature, remember to ensure that the COMPILER folder is accessible from&lt;br /&gt;
the current drive. Also note that the DISC option will be selected automatically&lt;br /&gt;
whenever memory is running short.&amp;lt;/BLOCKQUOTE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
DEST&amp;lt;/H3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BLOCKQUOTE&amp;gt;the DEST button selects the eventual destination of the compiled&lt;br /&gt;
program. Programs may be compiled either to memory or directly into a file&lt;br /&gt;
on disc.&lt;br /&gt;
&amp;lt;H4&amp;gt;&lt;br /&gt;
1) MEMORY&amp;lt;/H4&amp;gt;&lt;br /&gt;
This option compiles the program into memory. note that the memory used&lt;br /&gt;
by this feature is completely seperate from your original program. So you&lt;br /&gt;
can subsequently save the compiled program onto the disc without losing&lt;br /&gt;
your current STOS Basic program.&lt;br /&gt;
&amp;lt;H4&amp;gt;&lt;br /&gt;
2) DISC&amp;lt;/H4&amp;gt;&lt;br /&gt;
If you choose the disc as the destination, the code will be compiled straight&lt;br /&gt;
into a file without taking up any valuable memory. Since it's much slower&lt;br /&gt;
than the MEMORY directive, it's only really suitable for compiling particularly&lt;br /&gt;
large STOS Basic programs.&amp;lt;/BLOCKQUOTE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
COMPILE&amp;lt;/H3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BLOCKQUOTE&amp;gt;The compilation process is started when you click on the COMPILE&lt;br /&gt;
button with the mouse. As your program is compiled, a horizontal bar grows&lt;br /&gt;
across the screen. When this completes it's journey, the compilation has&lt;br /&gt;
been successfully concluded. But if an error is detected, the compiler&lt;br /&gt;
is terminated and you are returned to the STOS basic editor.Occaisionally,&lt;br /&gt;
errors will be generated from supposedly bug-free programs. The reason&lt;br /&gt;
for these errors is that the interpreter is only capable of detecting an&lt;br /&gt;
error in the line which is currently being run. So if an error exists in&lt;br /&gt;
a section of code which is rarely executed, it can easily be missed. Since&lt;br /&gt;
the compiler tests the whole program, rather than just the current line,&lt;br /&gt;
it is able to discover all the syntax errors in your program at once.&amp;lt;/BLOCKQUOTE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
QUIT&amp;lt;/H3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BLOCKQUOTE&amp;gt;This option exits the compiler accessory and returns you to&lt;br /&gt;
the editor.&amp;lt;/BLOCKQUOTE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
DISC&amp;lt;/H3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BLOCKQUOTE&amp;gt;This allows you to choose whether the compiled program is to&lt;br /&gt;
be run either from STOS Basic or directly from the GEM desktop.&lt;br /&gt;
&amp;lt;H4&amp;gt;&lt;br /&gt;
1)BASIC&amp;lt;/H4&amp;gt;&lt;br /&gt;
This is the default, and generates a compiled program which can only be&lt;br /&gt;
run within the STOS Basic system. Files produced with this option have&lt;br /&gt;
the extension &amp;quot;*.CMP&amp;quot;&lt;br /&gt;
&amp;lt;H4&amp;gt;&lt;br /&gt;
2)GEM&amp;lt;/H4&amp;gt;&lt;br /&gt;
The GEM directive allows you to create a program which can be run independently&lt;br /&gt;
of the STOS Basic system. These programs have the extension &amp;quot;*.PRG&amp;quot;, and&lt;br /&gt;
can only be executed from the GEM desktop. Furthermore, since they consist&lt;br /&gt;
entirely of machine code, they cannot be listed or amended from STOS Basic.&lt;br /&gt;
Programs in this format can be sold or distributed in any way you like.&lt;br /&gt;
Depending on the facilities used, the GEM run version of the file will&lt;br /&gt;
be between 40 and 80k larger than the equivalent STOS run program.&amp;lt;/BLOCKQUOTE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
OPTIONS&amp;lt;/H3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BLOCKQUOTE&amp;gt;Whenever the compiler is loaded, a number of configuration&lt;br /&gt;
seetings are read from a special OPTIONS.INF file in the COMPILER folder.&lt;br /&gt;
These settings provide you with the ability to fine tune the program to&lt;br /&gt;
your particular needs. They can be changed at any time by simply clicking&lt;br /&gt;
on the OPTIONS button from the menu. From here, the following options are&lt;br /&gt;
selectable.&amp;lt;/BLOCKQUOTE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
COMPILER TESTS&amp;lt;/H3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BLOCKQUOTE&amp;gt;This option is used to set the frequency of certain internal&lt;br /&gt;
checks. Although the co-ordinates of a STOS sprite are updated using interrupts,&lt;br /&gt;
the sprites on screen are only moved prior to the execution of a basic&lt;br /&gt;
instruction. While this is happening, STOS also checks for CONTROL + C&lt;br /&gt;
and tests whether the pulldown menus have been accessed by the user.&lt;br /&gt;
&amp;lt;H4&amp;gt;&lt;br /&gt;
1)COMPILER TEST OFF&amp;lt;/H4&amp;gt;&lt;br /&gt;
This completely removes the tests from the compiled code. The result is&lt;br /&gt;
that the program completely ignores CONTROL + C, refuses to open your menu's&lt;br /&gt;
and does not automatically update your sprites when they are moved. Set&lt;br /&gt;
against this however, is the fact that the final code will be about 10%&lt;br /&gt;
faster.&lt;br /&gt;
&amp;lt;H4&amp;gt;&lt;br /&gt;
2)COMPILER TEST NORMAL&amp;lt;/H4&amp;gt;&lt;br /&gt;
A check is performed before every branch such as GOTO, NEXT, REPEAT, WEND,&lt;br /&gt;
ELSE and THEN. Tests are also carried out prior to slow instructions such&lt;br /&gt;
as PRINT and INPUT. This setting is used as the default.&lt;br /&gt;
&amp;lt;H4&amp;gt;&lt;br /&gt;
3)COMPILER TEST ALWAYS&amp;lt;/H4&amp;gt;&lt;br /&gt;
Adds a test before every STOS Basic instruction, leading to particularly&lt;br /&gt;
smooth sprite movements. As you would expect, programs compiled this way&lt;br /&gt;
are slightly slower than with NORMAL or OFF settings.Note that these settings&lt;br /&gt;
can be changed directly from your STOS Basic programs.&amp;lt;/BLOCKQUOTE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
GEM RUN OPTIONS&amp;lt;/H3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BLOCKQUOTE&amp;gt;These options allow you to tailor the default environment of&lt;br /&gt;
the compiled program which is to be run from the desktop. They have no&lt;br /&gt;
effect on any programs compiled for use within STOS Basic.&lt;br /&gt;
&amp;lt;H4&amp;gt;&lt;br /&gt;
1)RESOLUTION MODE&amp;lt;/H4&amp;gt;&lt;br /&gt;
This directive allows you to select between Low or Medium resolution when&lt;br /&gt;
you program is executed from the desktop using a colour monitor. To change&lt;br /&gt;
the resolution simpy click on the relevant icon. Note that if your program&lt;br /&gt;
is subsequently run on a monochrome monitor, this option is completely&lt;br /&gt;
ignored.&lt;br /&gt;
&amp;lt;H4&amp;gt;&lt;br /&gt;
2)BLACK AND WHITE ENVIRONMENT&amp;lt;/H4&amp;gt;&lt;br /&gt;
Chooses between normal or inverse graphics when a Gem-run program is executed&lt;br /&gt;
on a monchrome monitor. NORMAL: Uses white text on a black background.INVERSE:&lt;br /&gt;
Produces a black text on white paper display.&lt;br /&gt;
&amp;lt;H4&amp;gt;&lt;br /&gt;
3)DEFAULT PALETTE&amp;lt;/H4&amp;gt;&lt;br /&gt;
This allows you to assign the colours which will be initially used for&lt;br /&gt;
your graphics.The first icons select one of the 16 possible colours to&lt;br /&gt;
be set (4 in medium resolution). Click on the ++ box to increment the colour&lt;br /&gt;
number by one, and to decrement the colour by one click on the -- box.The&lt;br /&gt;
rightmost icon buttons set the exact hue of this colour.Click on a + to&lt;br /&gt;
add one to the red, green or blue component to the colour respectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;P&amp;gt;- buttons subtract one from the appropiate colour value.For speed you&lt;br /&gt;
can simply step through the values by pressing the right mouse button.&lt;br /&gt;
But for subtle single steps use the left button. This applies for any other&lt;br /&gt;
option that uses + and - icons.&lt;br /&gt;
&amp;lt;H4&amp;gt;&lt;br /&gt;
4)FUNCTION KEYS&amp;lt;/H4&amp;gt;&lt;br /&gt;
The window used for the STOS function key assignments will normally be&lt;br /&gt;
drwan on screen during the initialisation process. This adds a slightly&lt;br /&gt;
unprofessional feel to your program. You can avoid this effect using the&lt;br /&gt;
following directive from the compiler menu.ON: The function key window&lt;br /&gt;
is automatically drawn at the top of the screen during initialisation.OFF:The&lt;br /&gt;
function key window is omitted.&lt;br /&gt;
&amp;lt;H4&amp;gt;&lt;br /&gt;
5)CURSOR&amp;lt;/H4&amp;gt;&lt;br /&gt;
Activates or deactivates the text cursor when the program is initialised.&lt;br /&gt;
This setting can be changed at any time from within your compiled program&lt;br /&gt;
using the CURS ON/OFF commands.&lt;br /&gt;
&amp;lt;H4&amp;gt;&lt;br /&gt;
6)MOUSE&amp;lt;/H4&amp;gt;&lt;br /&gt;
The MOUSE option allows you to decide whether the mouse will be turned&lt;br /&gt;
on or off as a default. As you might expect, you can reactivate the mouse&lt;br /&gt;
using the STOS Basic SHOW instruction.&lt;br /&gt;
&amp;lt;H4&amp;gt;&lt;br /&gt;
7)LANGUAGE&amp;lt;/H4&amp;gt;&lt;br /&gt;
Toggles the language used for any system messages between English and French.&lt;br /&gt;
&amp;lt;H4&amp;gt;&lt;br /&gt;
8)MAIN MENU&amp;lt;/H4&amp;gt;&lt;br /&gt;
Returns you to the main compiler menu.&lt;br /&gt;
&amp;lt;H4&amp;gt;&lt;br /&gt;
9)NEXT PAGE&amp;lt;/H4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BLOCKQUOTE&amp;gt;Displays the next page of options (see below).&lt;br /&gt;
&amp;lt;H5&amp;gt;&lt;br /&gt;
a)LOAD OPTIONS&amp;lt;/H5&amp;gt;&lt;br /&gt;
Loads an existing set of options from an OPTIONS.INF file from the disc.&lt;br /&gt;
&amp;lt;H5&amp;gt;&lt;br /&gt;
b)SAVE OPTIONS&amp;lt;/H5&amp;gt;&lt;br /&gt;
Saves the current options to an OPTIONS.INF file in the COMPILER directory.&lt;br /&gt;
&amp;lt;H5&amp;gt;&lt;br /&gt;
c)LOADED CHARACTER SETS&amp;lt;/H5&amp;gt;&lt;br /&gt;
The compiled program normally includes all three of the STOS character&lt;br /&gt;
sets. But if you only intend to run your program in a single resolution,&lt;br /&gt;
the character sets used by the remaining modes will waste valuable memory.&lt;br /&gt;
The STOS compiler therefore lets you select precisely which character sets&lt;br /&gt;
are to be loaded.&lt;br /&gt;
&lt;br /&gt;
WARNING! Any attempt to run your program in the wrong resolution after&lt;br /&gt;
this option has been set will crash the ST completely.&lt;br /&gt;
&amp;lt;H5&amp;gt;&lt;br /&gt;
d)LOADED MOUSE POINTERS&amp;lt;/H5&amp;gt;&lt;br /&gt;
As with the character sets, you can use this option to omit the data used&lt;br /&gt;
by the mouse pointers in the resolutions your program will not be using,&lt;br /&gt;
again, improper use will cause a crash.&lt;br /&gt;
&amp;lt;H5&amp;gt;&lt;br /&gt;
e)WINDOW BUFFER SIZE&amp;lt;/H5&amp;gt;&lt;br /&gt;
The windowing system used by STOS Basic, normally keeps a copy of the entire&lt;br /&gt;
contents of all windows which your program has defined. If your program&lt;br /&gt;
dosen't use windows, then this memory will be completely wasted. The default&lt;br /&gt;
setting is 32k. This can be altered in 1k steps by clicking on the '++'&lt;br /&gt;
and '--' boxes. You can calculate the memory needed by your windows by&lt;br /&gt;
using the following simple rules:Each character position, takes up two&lt;br /&gt;
bytes in medium/high resolution and four bytes in low resolution. In low&lt;br /&gt;
resolution the main STOS screen holds 1000 characters, so the memory taken&lt;br /&gt;
by this screen is 1000*4 or 4000 bytes. If you change this setting, don't&lt;br /&gt;
forget about the function key window and the file-selector!, these use&lt;br /&gt;
about 8k of memory.&lt;br /&gt;
&amp;lt;H5&amp;gt;&lt;br /&gt;
f)SPRITE BUFFER SIZE&amp;lt;/H5&amp;gt;&lt;br /&gt;
Before a STOS sprite is copied to the screen, it is first drawn into a&lt;br /&gt;
seperate memory buffer. If you are really pressed for space and you are&lt;br /&gt;
only using the smallest sprites, you can reduce this buffer to around 1k.Again,&lt;br /&gt;
be very careful with this, because one cock-up will crash your ST.Well,&lt;br /&gt;
i think thats about it for this issue, in third part we'll look at how&lt;br /&gt;
the compiler works.&amp;lt;/BLOCKQUOTE&amp;gt;&lt;br /&gt;
&amp;lt;/BLOCKQUOTE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;H2&amp;gt;&lt;br /&gt;
The Compiler&amp;lt;/H2&amp;gt;&lt;br /&gt;
The STOS Basic compiler was designed to use as little memory as possible.&lt;br /&gt;
In fact, most of the memory needed is borrowed from the sprite background&lt;br /&gt;
screen. Thats why the mouse disappears while the computer is executing.&lt;br /&gt;
&amp;lt;H2&amp;gt;&lt;br /&gt;
How The Compiler Works&amp;lt;/H2&amp;gt;&lt;br /&gt;
The compiler first reserves some memory in the current background screen.&lt;br /&gt;
It then looks in the COMPILER folder and opens the main Basic library (BASIC204.LIB).&lt;br /&gt;
The addresses of all the appropriate library routines are now loaded into&lt;br /&gt;
the ST's memory. The next action is to check for the existance of an extension&lt;br /&gt;
file ending in .EC?. These contain all the information required to compile&lt;br /&gt;
the BASIC commands added by an extension. Whenever an extension is discovered,&lt;br /&gt;
a full catalogue of the additional routines is then added to the current&lt;br /&gt;
list. The execution of the compiler is split into three seperate phases&lt;br /&gt;
which are known as passes.&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
PASS 0&amp;lt;/H3&amp;gt;&lt;br /&gt;
The first pass checks the STOS Basic program for possible syntax errors,&lt;br /&gt;
and makes an initial attempt at converting the program into machine code.&lt;br /&gt;
While it does this, it produces a full list of all the library routines&lt;br /&gt;
which will be called by the program. Note that no actual code is actually&lt;br /&gt;
generated by this pass as the intention is merely to estimate the final&lt;br /&gt;
size of the compiled program. The compiler can now safely reserve the precise&lt;br /&gt;
amount of space which will be needed, without wasting valuable memory.&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
PASS 1&amp;lt;/H3&amp;gt;&lt;br /&gt;
Analyses the Basic program using exactly the same method as pass 0. It&lt;br /&gt;
then converts the entire STOS Basic program into machine code, and copies&lt;br /&gt;
this data to either memory or the disk. At the same time it also creates&lt;br /&gt;
a number of tables including the relocation table.The compiler now incorporates&lt;br /&gt;
any library routines which are accessed from the compiled program. It is&lt;br /&gt;
important to note that only the routines which are actually used by the&lt;br /&gt;
program will be included in the final code. This reduces the size of the&lt;br /&gt;
compiled program to the absolute minimum. The following steps are then&lt;br /&gt;
performed by the compiler in quick succession:1) If an extension command&lt;br /&gt;
is used in the program, the extension libraries are searched and the appropriate&lt;br /&gt;
routines are written into the compiled program.2) The relocation table&lt;br /&gt;
is copied into the program. This allows the compiled program to be executed&lt;br /&gt;
anywhere in the ST's memory.3) The table used to hold the address of the&lt;br /&gt;
program lines is then added.4) Any string constants which are used are&lt;br /&gt;
tagged onto the end of the program.5) If the program is to be run from&lt;br /&gt;
GEM, the compiler copies over the various library routines needed by the&lt;br /&gt;
sprites, windows, menus, music and floating point arithmetic. These add&lt;br /&gt;
approximately 40k to the length of the program.&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
PASS 2&amp;lt;/H3&amp;gt;&lt;br /&gt;
This pass simply explores the relocation table created in pass 1, and sets&lt;br /&gt;
the required addresses in the compiled program. The compiler now closes&lt;br /&gt;
all the open disc files, and transfers the program to the current program&lt;br /&gt;
segment if required.Note that the eventual size of a compiled program depends&lt;br /&gt;
entirely on the precise mix of STOS instructions which are used. There's&lt;br /&gt;
no real relationship between the complexity of the program and the size&lt;br /&gt;
of the code.&lt;br /&gt;
&amp;lt;H2&amp;gt;&lt;br /&gt;
Troubleshooting&amp;lt;/H2&amp;gt;&lt;br /&gt;
If you are experiencing problems of one kind or the other, there may be&lt;br /&gt;
a solution for you in this, the final part of my guide to the compiler.&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
THE COMPILER GENERATES AN OUT OF MEMORY ERROR&amp;lt;/H3&amp;gt;&lt;br /&gt;
This can happen if you are trying to compile a large (100k +) program on&lt;br /&gt;
an unexpanded 520 ST. The compiler provides you with four different options&lt;br /&gt;
which can be used to conserve memory. Here is a list of the various possibilities&lt;br /&gt;
in descending order of speed&lt;br /&gt;
&amp;lt;pre&amp;gt;SOURCE&amp;amp;nbsp; DESTINATION&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; COMMENTS&lt;br /&gt;
MEMORY&amp;amp;nbsp; MEMORY&amp;amp;nbsp; Very fast, but uses the maximum amount of memory.&lt;br /&gt;
DISC&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; MEMORY&amp;amp;nbsp; Slower, but uses considerably less memory.&lt;br /&gt;
MEMORY&amp;amp;nbsp; DISC&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Slightly slower than disc to memory but the memory usage can occaisionally be less.&lt;br /&gt;
DISC&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; DISC&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Uses very little memory.&amp;lt;/pre&amp;gt;&lt;br /&gt;
The only limit to the size of your program is the amount of available disk&lt;br /&gt;
space. This is quite slow on a single floppy. Wen you get an out of memory&lt;br /&gt;
error, you should try each of the above options in turn. If you still have&lt;br /&gt;
problems, you will need to reduce the size of the program in some way.The&lt;br /&gt;
easiest solution is to get rid of the permanent memory banks which are&lt;br /&gt;
used by the program. These can be defined during program initialisation&lt;br /&gt;
using the RESERVE command and loaded seperately from disc. Your programs&lt;br /&gt;
initialisation phase will now include the following steps:&lt;br /&gt;
&amp;lt;OL&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;&lt;br /&gt;
Define each screen bank with RESERVE AS SCREEN&amp;lt;/LI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;LI&amp;gt;&lt;br /&gt;
Load these screens from the disk with LOAD&amp;lt;/LI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;LI&amp;gt;&lt;br /&gt;
Define any DATA banks in the original program as WORK banks. Use the RESERVE&lt;br /&gt;
AS WORK command for this purpose.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;LI&amp;gt;&lt;br /&gt;
Load the external data from the disc.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;/OL&amp;gt;&lt;br /&gt;
Since a large percentage of the space used by many STOS programs is taken&lt;br /&gt;
up by the memory banks, this technique can lead to drastic reductions is&lt;br /&gt;
size, without noticeably affecting the programs performance.Another idea&lt;br /&gt;
is to split your program into several parts, and load these into memory&lt;br /&gt;
with RUN as and when required. This technique is known as overlay programming,&lt;br /&gt;
and is commonly used in commercial games. If you do use this approach,&lt;br /&gt;
you will no to remember to compile each program module seperately. Don't&lt;br /&gt;
try to combine interpreted modules with compiled modules or your program&lt;br /&gt;
will fail when run from the desktop.&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
THE COMPUTER RETURNS AN UNDIMENSIONED ARRAY ERROR FOR AN ARRAY WHICH HAS&lt;br /&gt;
APPARENTLY BEEN CORRECTLY BEEN DIMENSIONED&amp;lt;/H3&amp;gt;&lt;br /&gt;
The compiler requires the DIM statement to occur in the listing BEFORE&lt;br /&gt;
the arrays are used. Take the following example.&lt;br /&gt;
&amp;lt;pre&amp;gt;10 gosub 1000&lt;br /&gt;
20 a(10)=50&lt;br /&gt;
30 end&lt;br /&gt;
1000 dim A(100):return&amp;lt;/pre&amp;gt;&lt;br /&gt;
This causes an error because when the compiler checks line 20, it has yet&lt;br /&gt;
to encounter the DIM statement at line 1000. It therefore generates an&lt;br /&gt;
erroneous error message. The solution to this problem is simply to dimension&lt;br /&gt;
all arrays at the start of the program. So you can fix the above routine&lt;br /&gt;
by replacing line 10 with:&lt;br /&gt;
&amp;lt;pre&amp;gt;10 DIM A(100)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
YOU GET A SYNTAX ERROR AT AN ON....GOTO or ON...GOSUB STATEMENT&amp;lt;/H3&amp;gt;&lt;br /&gt;
In order to optimise the speed of the compiler, the line numbers used by&lt;br /&gt;
ON GOTO and ON GOSUB are required to use constants rather than variables.So&lt;br /&gt;
a line like:&lt;br /&gt;
&amp;lt;pre&amp;gt;on A goto 1000,10000+a*5,500&amp;lt;/pre&amp;gt;&lt;br /&gt;
will produce a syntax error. This should be replace by:&lt;br /&gt;
&amp;lt;pre&amp;gt;on A goto 1000,10010,500&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
A PREVIOUSLY ERROR FREE PROGRAM RETURNS A SYNTAX ERROR WHEN COMPILED&amp;lt;/H3&amp;gt;&lt;br /&gt;
This happens quite often, and is simply a reflection of the improved sensitivity&lt;br /&gt;
of the compiler to genuine syntax errors. Take the following program:&lt;br /&gt;
&amp;lt;pre&amp;gt;10 print &amp;quot;hi there&amp;quot;&lt;br /&gt;
20 goto 10&lt;br /&gt;
30 prunt &amp;quot;this is an error&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you try to run this program using the interpreter, then the spelling&lt;br /&gt;
mistake at line 30 will be missed, since it is never actually executed.&lt;br /&gt;
But if you compile it, the compiler will detect it and ask you to correct&lt;br /&gt;
it.&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
PROBLEMS OCCUR WHEN YOU TRY TO COMPILE A PROGRAM USING CERTAIN EXTENSIONS&amp;lt;/H3&amp;gt;&lt;br /&gt;
Any extensions which are to be compiled need to have a seperate extension&lt;br /&gt;
file for the compiler. This has the extension &amp;quot;.EC?&amp;quot;, where the question&lt;br /&gt;
mark is the identifier of the extension file. The appropriate file will&lt;br /&gt;
normally be included along with the extensions, and should always be placed&lt;br /&gt;
in the COMPILER folder.&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
THE COLOURS OF A GEM RUN PROGRAM ARE DIFFERENT FROM AN INTERPRETED VERSION&amp;lt;/H3&amp;gt;&lt;br /&gt;
This problem can occur if you've been altering the default colour settings&lt;br /&gt;
using the options menu. Remember that when these are saved to disk, they&lt;br /&gt;
affect all subsequent compilation. Correct by simply restoring the standard&lt;br /&gt;
options from the original compiler disk.&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
A PROGRAM WHICH RESERVES A MEMORY BANK WITHIN A FOR..NEXT LOOP CRASHED&lt;br /&gt;
INEXPLICABLY&amp;lt;/H3&amp;gt;&lt;br /&gt;
A program which creates a memory bank within a for..next loop will behave&lt;br /&gt;
unpredictably if the bank number is held in an array. This could lead to&lt;br /&gt;
a total crash of the STOS Basic system. The reasons for these problems&lt;br /&gt;
are complex, but the sort of code to watch out for is:&lt;br /&gt;
&amp;lt;pre&amp;gt;10 dim b(15)&lt;br /&gt;
20 for b(3)=1 to 10&lt;br /&gt;
30 reserve as screen b(3)&lt;br /&gt;
40 next b(3)&amp;lt;/pre&amp;gt;&lt;br /&gt;
The difficulty can be avoided by either using a simple variable as the&lt;br /&gt;
index, or defining the banks explicitly outside the FOR..NEXT. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;20 for i=1 to 10&lt;br /&gt;
30 reserve as screen i&lt;br /&gt;
40 next i&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;H2&amp;gt;&lt;br /&gt;
Compiler Extension Commands&amp;lt;/H2&amp;gt;&lt;br /&gt;
he compiler adds three extended commands to the normal STOS Basic system.&lt;br /&gt;
These commands are only used in a compiled program. They have no effect&lt;br /&gt;
whatsoever when the code is interpreted.In a normal STOS Basic program&lt;br /&gt;
the following tests are performed at regular intervals.1) Sprite updates.2)&lt;br /&gt;
Menu checks3) Control and C tests.The COMPTEST instructions provide you&lt;br /&gt;
with fine control over the testing process.&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
COMPTEST ON&amp;lt;/H3&amp;gt;&lt;br /&gt;
Checks are only carried out before jup instructions such as GOTO and WHILE,&lt;br /&gt;
and the especially slow commands lilke PRINT and WAIT. Note that COMPTEST&lt;br /&gt;
ON is the default setting used by interpreted programs.&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
COMPTEST OFF&amp;lt;/H3&amp;gt;&lt;br /&gt;
The COMPTEST OFF command stops the testing completely, improving the speed&lt;br /&gt;
of the program by up to 10%. This allows you to optimise time critical&lt;br /&gt;
sections of a compiled program. It is particularly useful for routines&lt;br /&gt;
which have to perform lots of complicated calculations in a relatively&lt;br /&gt;
short space of time. Typical examples of such programs include 3d grphics&lt;br /&gt;
packages and fractal generators. One dangerous side-effect of this command&lt;br /&gt;
is that it is impossible to interrupt a program until the compiler tests&lt;br /&gt;
are restored. So try to get into the habit of saving your current program&lt;br /&gt;
before calling this function. Otherwise, an infinite loop could lock up&lt;br /&gt;
the system completely, losing all your valuable data.Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10 dim a(10000),b(10000)&lt;br /&gt;
20 for i=0 to 10000:a(i)=i:next i:rem load an array&lt;br /&gt;
30 comptest off:timer =0:print &amp;quot;compiler test off&amp;quot;&lt;br /&gt;
40 for i=0 to 10000:b(i)=a(i):next i&lt;br /&gt;
50 print &amp;quot;loop executed in&amp;quot;;timer/50.0;&amp;quot; seconds&amp;quot;&lt;br /&gt;
60 comptest on:timer =0:print &amp;quot;compiler test on&amp;quot;&lt;br /&gt;
70 for i=0 to 10000:b(i)=a(i):next i&lt;br /&gt;
80 print &amp;quot;loop executed in &amp;quot;;timer/50.0;&amp;quot; seconds&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Try stopping program with Control+C after the compiler tests have been&lt;br /&gt;
switched off. The program will terminate around lline 60, since this is&lt;br /&gt;
the first time the Control + C test has been performed.&lt;br /&gt;
&amp;lt;H3&amp;gt;&lt;br /&gt;
COMPTEST ALWAYS&amp;lt;/H3&amp;gt;&lt;br /&gt;
This adds a test before each and every STOS Basic instruction. It results&lt;br /&gt;
in slightly smoother sprite movement, and finer control over the menus.&lt;br /&gt;
The precise effect of this command will entirely depend on the mixture&lt;br /&gt;
of instructions in your program. If your program makes heavy use of instructions&lt;br /&gt;
such as GOTO and FOR...NEXT, the difference will be barely noticeable.&lt;br /&gt;
But if your routine will be performing extensive calculations while also&lt;br /&gt;
using the sprite commands, this instruction could prove invaluable.Well,&lt;br /&gt;
thats about if from me, and for this tutorial for that matter, i hope you&lt;br /&gt;
found it of some use. Hopefully, i will be able to write similar stuff&lt;br /&gt;
in the future.David.&lt;/div&gt;</summary>
		<author><name>&gt;Zorro 2</name></author>
	</entry>
</feed>