<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.sequencer.de/synth/index.php?action=history&amp;feed=atom&amp;title=MCV876_Controller_Update%3A_File_Converter</id>
	<title>MCV876 Controller Update: File Converter - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://www.sequencer.de/synth/index.php?action=history&amp;feed=atom&amp;title=MCV876_Controller_Update%3A_File_Converter"/>
	<link rel="alternate" type="text/html" href="https://www.sequencer.de/synth/index.php?title=MCV876_Controller_Update:_File_Converter&amp;action=history"/>
	<updated>2026-10-28T23:11:02Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Synthesizer Wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://www.sequencer.de/synth/index.php?title=MCV876_Controller_Update:_File_Converter&amp;diff=7327&amp;oldid=prev</id>
		<title>Fetz: /* Datenformat */</title>
		<link rel="alternate" type="text/html" href="https://www.sequencer.de/synth/index.php?title=MCV876_Controller_Update:_File_Converter&amp;diff=7327&amp;oldid=prev"/>
		<updated>2011-06-27T21:08:08Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Datenformat&lt;/span&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;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 27. Juni 2011, 22:08 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-l7&quot;&gt;Zeile 7:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 7:&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;== Datenformat ==  &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;== Datenformat ==  &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;Die Programm-Daten werden in 64-Byte Nutzdatenhäppchen eingepackt. Diese Pakete sind Brutto 84 Bytes lang.  &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;Die Programm-Daten werden in 64-Byte Nutzdatenhäppchen eingepackt. Diese Pakete sind Brutto 84 Bytes lang.  &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;Die Daten müssen für Midi umkodiert werden, da Midi nur 7 Bit Nutz-Daten übertragen kann. Dazu werden einfach immer die nächsten 7 bit aus dem 8-Bit breiten Datenstrom entnommen. Das gibt völlig undurchsichtige Werte, geht erst nach 7x8=56 Bits auf und ist ansonsten recht &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;einfacher &lt;/del&gt;Code, der kompakte Daten erzeugt. Um Datenübertragungsfehler zu erkennen, bekommt jedes Paket eine 16 Bit CRC als Prüfsumme. Und damit es als Midi durchgeht, kommen noch ein paar Bytes (&quot;hallo hier kommt ein SysEx&quot;) davor und ein Ende Byte dahinter.  &lt;/div&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;Die Daten müssen für Midi umkodiert werden, da Midi nur 7 Bit Nutz-Daten übertragen kann. Dazu werden einfach immer die nächsten 7 bit aus dem 8-Bit breiten Datenstrom entnommen. Das gibt völlig undurchsichtige Werte, geht erst nach 7x8=56 Bits auf und ist ansonsten recht &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kurzer &lt;/ins&gt;Code, der kompakte Daten erzeugt. Um Datenübertragungsfehler zu erkennen, bekommt jedes Paket eine 16 Bit CRC als Prüfsumme. Und damit es als Midi durchgeht, kommen noch ein paar Bytes (&quot;hallo hier kommt ein SysEx&quot;) davor und ein Ende Byte dahinter.  &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;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;Die 64 Byte sind eine für Midi, Sys-Ex und das Controller-RAM noch verträgliche Datensatzlänge. Und der Controller schreibt seinen Programm-Speicher in genau solchen 64 Byte Blöcken.  &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;Die 64 Byte sind eine für Midi, Sys-Ex und das Controller-RAM noch verträgliche Datensatzlänge. Und der Controller schreibt seinen Programm-Speicher in genau solchen 64 Byte Blöcken.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Fetz</name></author>
	</entry>
	<entry>
		<id>https://www.sequencer.de/synth/index.php?title=MCV876_Controller_Update:_File_Converter&amp;diff=7326&amp;oldid=prev</id>
		<title>Fetz: /* Datenformat */</title>
		<link rel="alternate" type="text/html" href="https://www.sequencer.de/synth/index.php?title=MCV876_Controller_Update:_File_Converter&amp;diff=7326&amp;oldid=prev"/>
		<updated>2011-06-27T21:07:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Datenformat&lt;/span&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;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 27. Juni 2011, 22:07 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-l7&quot;&gt;Zeile 7:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 7:&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;== Datenformat ==  &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;== Datenformat ==  &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;Die Programm-Daten werden in 64-Byte Nutzdatenhäppchen eingepackt. Diese Pakete sind Brutto 84 Bytes lang.  &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;Die Programm-Daten werden in 64-Byte Nutzdatenhäppchen eingepackt. Diese Pakete sind Brutto 84 Bytes lang.  &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;Die Daten müssen für Midi umkodiert werden, da Midi nur 7 Bit Nutz-Daten übertragen kann. Dazu werden einfach immer die nächsten 7 bit aus dem 8-Bit breiten Datenstrom entnommen. Das gibt völlig undurchsichtige Werte, geht erst nach 7x8=56 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Bytes &lt;/del&gt;auf und ist ansonsten recht einfacher Code, der kompakte Daten erzeugt. Um Datenübertragungsfehler zu erkennen, bekommt jedes Paket eine 16 Bit CRC als Prüfsumme. Und damit es als Midi durchgeht, kommen noch ein paar Bytes (&quot;hallo hier kommt ein SysEx&quot;) davor und ein Ende Byte dahinter.  &lt;/div&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;Die Daten müssen für Midi umkodiert werden, da Midi nur 7 Bit Nutz-Daten übertragen kann. Dazu werden einfach immer die nächsten 7 bit aus dem 8-Bit breiten Datenstrom entnommen. Das gibt völlig undurchsichtige Werte, geht erst nach 7x8=56 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Bits &lt;/ins&gt;auf und ist ansonsten recht einfacher Code, der kompakte Daten erzeugt. Um Datenübertragungsfehler zu erkennen, bekommt jedes Paket eine 16 Bit CRC als Prüfsumme. Und damit es als Midi durchgeht, kommen noch ein paar Bytes (&quot;hallo hier kommt ein SysEx&quot;) davor und ein Ende Byte dahinter.  &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;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;Die 64 Byte sind eine für Midi, Sys-Ex und das Controller-RAM noch verträgliche Datensatzlänge. Und der Controller schreibt seinen Programm-Speicher in genau solchen 64 Byte Blöcken.  &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;Die 64 Byte sind eine für Midi, Sys-Ex und das Controller-RAM noch verträgliche Datensatzlänge. Und der Controller schreibt seinen Programm-Speicher in genau solchen 64 Byte Blöcken.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Fetz</name></author>
	</entry>
	<entry>
		<id>https://www.sequencer.de/synth/index.php?title=MCV876_Controller_Update:_File_Converter&amp;diff=7325&amp;oldid=prev</id>
		<title>Fetz: /* Benutzen */</title>
		<link rel="alternate" type="text/html" href="https://www.sequencer.de/synth/index.php?title=MCV876_Controller_Update:_File_Converter&amp;diff=7325&amp;oldid=prev"/>
		<updated>2011-06-27T20:20:05Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Benutzen&lt;/span&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;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 27. Juni 2011, 21:20 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-l3&quot;&gt;Zeile 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 3:&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;== Benutzen ==  &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;== Benutzen ==  &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;Der Linker der Entwicklungsumgebung erzeugt ein .hex File. Dieses File zieht man einfach auf das Icon der sys876.exe. Kurz darauf taucht im gleichen Verzeichnis wie die .hex Datei eine .syx Datei sonst gleichen Namens auf. Das war es schon - diese Datei ist das Sys-Ex Update File, was man per Midi an den Controller schickt, worauf er dann sofort mit diesem neuen Programm los rennt.  &lt;/div&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;Der Linker der Entwicklungsumgebung erzeugt ein .hex File. Dieses File zieht man einfach auf das Icon der &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[http://www.kanowski.de/nordcore/sys876.exe &lt;/ins&gt;sys876.exe&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/ins&gt;. Kurz darauf taucht im gleichen Verzeichnis wie die .hex Datei eine .syx Datei sonst gleichen Namens auf. Das war es schon - diese Datei ist das Sys-Ex Update File, was man per Midi an den Controller schickt, worauf er dann sofort mit diesem neuen Programm los rennt.&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;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;== Datenformat ==  &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;== Datenformat ==  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Fetz</name></author>
	</entry>
	<entry>
		<id>https://www.sequencer.de/synth/index.php?title=MCV876_Controller_Update:_File_Converter&amp;diff=7322&amp;oldid=prev</id>
		<title>Fetz am 27. Juni 2011 um 20:02 Uhr</title>
		<link rel="alternate" type="text/html" href="https://www.sequencer.de/synth/index.php?title=MCV876_Controller_Update:_File_Converter&amp;diff=7322&amp;oldid=prev"/>
		<updated>2011-06-27T20:02:29Z</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;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 27. Juni 2011, 21:02 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=&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;= Worum geht&amp;#039;s? =  &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;= Worum geht&amp;#039;s? =  &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;Der File Konverter ist ein kleines Programm, dass vom Compiler/Linker erzeugte Binär-Datei (im [http://de.wikipedia.org/wiki/Intel_HEX Intel .hex Format])) in ein Datenformat wandelt, dass per Midi übertragen werden kann und das der Controller so versteht, dass er sich selber updaten kann.  &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;Der File Konverter ist ein kleines Programm, dass vom Compiler/Linker erzeugte Binär-Datei (im [http://de.wikipedia.org/wiki/Intel_HEX Intel .hex Format])) in ein Datenformat wandelt, dass per Midi übertragen werden kann und das der Controller so versteht, dass er sich selber updaten kann.  &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;== Benutzen == &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;Der Linker der Entwicklungsumgebung erzeugt ein .hex File. Dieses File zieht man einfach auf das Icon der sys876.exe. Kurz darauf taucht im gleichen Verzeichnis wie die .hex Datei eine .syx Datei sonst gleichen Namens auf. Das war es schon - diese Datei ist das Sys-Ex Update File, was man per Midi an den Controller schickt, worauf er dann sofort mit diesem neuen Programm los rennt. &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;== Datenformat ==  &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;== Datenformat ==  &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;Die Programm-Daten werden in 64-Byte Nutzdatenhäppchen eingepackt. Diese Pakete sind Brutto 84 Bytes lang.  &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;Die Programm-Daten werden in 64-Byte Nutzdatenhäppchen eingepackt. Diese Pakete sind Brutto 84 Bytes lang.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Fetz</name></author>
	</entry>
	<entry>
		<id>https://www.sequencer.de/synth/index.php?title=MCV876_Controller_Update:_File_Converter&amp;diff=7320&amp;oldid=prev</id>
		<title>Fetz: /* Worum geht&#039;s? */</title>
		<link rel="alternate" type="text/html" href="https://www.sequencer.de/synth/index.php?title=MCV876_Controller_Update:_File_Converter&amp;diff=7320&amp;oldid=prev"/>
		<updated>2011-06-27T18:59:35Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Worum geht&amp;#039;s?&lt;/span&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;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 27. Juni 2011, 19:59 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=&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;= Worum geht&amp;#039;s? =  &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;= Worum geht&amp;#039;s? =  &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;Der File Konverter ist ein kleines Programm, dass &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;die aus dem &lt;/del&gt;Compiler/Linker &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;stammende Programm&lt;/del&gt;-Datei (.hex) in ein Datenformat wandelt, dass per Midi übertragen werden kann und das der Controller so versteht, dass er sich selber updaten kann.  &lt;/div&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;Der File Konverter ist ein kleines Programm, dass &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vom &lt;/ins&gt;Compiler/Linker &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;erzeugte Binär&lt;/ins&gt;-Datei (&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;im [http://de.wikipedia.org/wiki/Intel_HEX Intel &lt;/ins&gt;.hex &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Format])&lt;/ins&gt;) in ein Datenformat wandelt, dass per Midi übertragen werden kann und das der Controller so versteht, dass er sich selber updaten kann.  &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;== Datenformat ==  &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;== Datenformat ==  &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;Die Programm-Daten werden in 64-Byte Nutzdatenhäppchen eingepackt. Diese Pakete sind Brutto 84 Bytes lang.  &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;Die Programm-Daten werden in 64-Byte Nutzdatenhäppchen eingepackt. Diese Pakete sind Brutto 84 Bytes lang.  &lt;/div&gt;&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-l13&quot;&gt;Zeile 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 13:&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;Das zweite Paket enthält nur die Info, dass es a)das erste Update-Pakte ist (d.h. es setzt den Empfänger auf &amp;quot;jetzt geht es los&amp;quot; zurück), und b)die Zahl der folgenden Blöcke (damit Vollständigkeit geprüft werden kann).  &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;Das zweite Paket enthält nur die Info, dass es a)das erste Update-Pakte ist (d.h. es setzt den Empfänger auf &amp;quot;jetzt geht es los&amp;quot; zurück), und b)die Zahl der folgenden Blöcke (damit Vollständigkeit geprüft werden kann).  &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;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; 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;Dann kommen die eigentlichen Programmdaten.  &lt;/div&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;Dann kommen die eigentlichen Programmdaten.&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;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;= Quelltext =&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;= Quelltext =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Fetz</name></author>
	</entry>
	<entry>
		<id>https://www.sequencer.de/synth/index.php?title=MCV876_Controller_Update:_File_Converter&amp;diff=7282&amp;oldid=prev</id>
		<title>Fetz: Created page with &#039;= Worum geht&#039;s? =  Der File Konverter ist ein kleines Programm, dass die aus dem Compiler/Linker stammende Programm-Datei (.hex) in ein Datenformat wandelt, dass per Midi übertr…&#039;</title>
		<link rel="alternate" type="text/html" href="https://www.sequencer.de/synth/index.php?title=MCV876_Controller_Update:_File_Converter&amp;diff=7282&amp;oldid=prev"/>
		<updated>2011-06-23T19:12:04Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;= Worum geht&amp;#039;s? =  Der File Konverter ist ein kleines Programm, dass die aus dem Compiler/Linker stammende Programm-Datei (.hex) in ein Datenformat wandelt, dass per Midi übertr…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Worum geht&amp;#039;s? = &lt;br /&gt;
Der File Konverter ist ein kleines Programm, dass die aus dem Compiler/Linker stammende Programm-Datei (.hex) in ein Datenformat wandelt, dass per Midi übertragen werden kann und das der Controller so versteht, dass er sich selber updaten kann. &lt;br /&gt;
== Datenformat == &lt;br /&gt;
Die Programm-Daten werden in 64-Byte Nutzdatenhäppchen eingepackt. Diese Pakete sind Brutto 84 Bytes lang. &lt;br /&gt;
Die Daten müssen für Midi umkodiert werden, da Midi nur 7 Bit Nutz-Daten übertragen kann. Dazu werden einfach immer die nächsten 7 bit aus dem 8-Bit breiten Datenstrom entnommen. Das gibt völlig undurchsichtige Werte, geht erst nach 7x8=56 Bytes auf und ist ansonsten recht einfacher Code, der kompakte Daten erzeugt. Um Datenübertragungsfehler zu erkennen, bekommt jedes Paket eine 16 Bit CRC als Prüfsumme. Und damit es als Midi durchgeht, kommen noch ein paar Bytes (&amp;quot;hallo hier kommt ein SysEx&amp;quot;) davor und ein Ende Byte dahinter. &lt;br /&gt;
&lt;br /&gt;
Die 64 Byte sind eine für Midi, Sys-Ex und das Controller-RAM noch verträgliche Datensatzlänge. Und der Controller schreibt seinen Programm-Speicher in genau solchen 64 Byte Blöcken. &lt;br /&gt;
&lt;br /&gt;
Vor die eigentlich Progamm-Daten werden noch zwei Pakete vorangestellt: &lt;br /&gt;
&lt;br /&gt;
Das erste schaltet einen in normalem Midi-Betrieb laufenden Controller auf den Boot-Lader um. Nach dem eigentlichen, kurzen Kommando, das den Normalbetrieb beendet, folgen 70 Nullen, die dem Controller mindestens 22ms Luft verschaffen, um auf den Bootlader zu wechseln. (Ist der Controller bereits im Bootlader wird dieses Paket nebst den Nullen schlichtweg überlesen/ignoriert. ) &lt;br /&gt;
&lt;br /&gt;
Das zweite Paket enthält nur die Info, dass es a)das erste Update-Pakte ist (d.h. es setzt den Empfänger auf &amp;quot;jetzt geht es los&amp;quot; zurück), und b)die Zahl der folgenden Blöcke (damit Vollständigkeit geprüft werden kann). &lt;br /&gt;
&lt;br /&gt;
Dann kommen die eigentlichen Programmdaten. &lt;br /&gt;
&lt;br /&gt;
= Quelltext =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
	Programm zum Erzeugen von Midi-Sys-Ex Software Update Files aus einer HEX-Datei &lt;br /&gt;
	für das MCV-876 Midi Interface mit ATMEL ATMEGA 88 Controller. &lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
    This program is free software: you can redistribute it and/or modify&lt;br /&gt;
    it under the terms of the GNU General Public License as published by&lt;br /&gt;
    the Free Software Foundation, either version 3 of the License, or&lt;br /&gt;
    (at your option) any later version.&lt;br /&gt;
&lt;br /&gt;
    This program is distributed in the hope that it will be useful,&lt;br /&gt;
    but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
    GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
    You should have received a copy of the GNU General Public License&lt;br /&gt;
    along with this program.  If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/*	&lt;br /&gt;
	Aufruf: &lt;br /&gt;
	sys676 avr-studio-compiler-out.hex &lt;br /&gt;
	&lt;br /&gt;
	das erzeugt dann eine Datei &lt;br /&gt;
	sys676 avr-studio-comipler-out.syx&lt;br /&gt;
	&lt;br /&gt;
	die mit Midi-OX (oder einen andern &amp;quot;ich kann Midi senden&amp;quot; Programm) an das &lt;br /&gt;
	Interface übertragen wird. &lt;br /&gt;
	&lt;br /&gt;
	Unter Windows kann man das übrigens bequem per &amp;quot;Drag and Drop&amp;quot; bedienen, einfach die &lt;br /&gt;
	.hex Datei auf die sys876.exe draufziehen, das Ergebnis taucht dann im gleichen Order wie &lt;br /&gt;
	die .hex Datei auf. (Man sieht halt keine Fehlermeldungen... ) &lt;br /&gt;
&lt;br /&gt;
	Erfolgreich übersetzt mit Visual Studio .net 2003 auf Windows XP &lt;br /&gt;
	Leeres Konsolenprojekt Namens syx876 erzeugen, diesen Quelltext in das .cpp &lt;br /&gt;
	File kopieren und bauen lassen. Ggfls. auf &amp;quot;Release&amp;quot; umstellen, im Release Ordner &lt;br /&gt;
	findet sich dann die fertige Applikation. &lt;br /&gt;
	&lt;br /&gt;
	Sollte sich nach marginalen Änderungen allerdings mit jedem Compiler übersetzen lassen. &lt;br /&gt;
	&lt;br /&gt;
*/&lt;br /&gt;
// für Windows =======================&lt;br /&gt;
#include &amp;quot;stdafx.h&amp;quot;&lt;br /&gt;
#define main _tmain &lt;br /&gt;
&lt;br /&gt;
// für normale Compiler =============&lt;br /&gt;
/*&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
*/&lt;br /&gt;
//===================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#define VERSION &amp;quot;1.00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define MAX_DATA 8192				// netto data size (ATMEGA 88 Flash Rom size) &lt;br /&gt;
#define MAX_SYX_DATA (2*MAX_DATA)	// max. complete syx-ex size&lt;br /&gt;
#define MAX_SYX_BLOCK (2*64)		// one Sys-Ex Block of 64 bytes netto data &lt;br /&gt;
&lt;br /&gt;
unsigned char data[MAX_DATA];	// holds binary program data &lt;br /&gt;
&lt;br /&gt;
// Convert one HEX-ASCII character to its numerical value, or -1 if illegal value &lt;br /&gt;
int conf( char c)&lt;br /&gt;
{&lt;br /&gt;
	switch (c)&lt;br /&gt;
	{&lt;br /&gt;
		case &amp;#039;0&amp;#039;: return 0;&lt;br /&gt;
		case &amp;#039;1&amp;#039;: return 1;&lt;br /&gt;
		case &amp;#039;2&amp;#039;: return 2;&lt;br /&gt;
		case &amp;#039;3&amp;#039;: return 3;&lt;br /&gt;
		case &amp;#039;4&amp;#039;: return 4;&lt;br /&gt;
		case &amp;#039;5&amp;#039;: return 5;&lt;br /&gt;
		case &amp;#039;6&amp;#039;: return 6;&lt;br /&gt;
		case &amp;#039;7&amp;#039;: return 7;&lt;br /&gt;
		case &amp;#039;8&amp;#039;: return 8;&lt;br /&gt;
		case &amp;#039;9&amp;#039;: return 9;&lt;br /&gt;
		case &amp;#039;a&amp;#039;: case &amp;#039;A&amp;#039;: return 10;&lt;br /&gt;
		case &amp;#039;b&amp;#039;: case &amp;#039;B&amp;#039;: return 11;&lt;br /&gt;
		case &amp;#039;c&amp;#039;: case &amp;#039;C&amp;#039;: return 12;&lt;br /&gt;
		case &amp;#039;d&amp;#039;: case &amp;#039;D&amp;#039;: return 13;&lt;br /&gt;
		case &amp;#039;e&amp;#039;: case &amp;#039;E&amp;#039;: return 14;&lt;br /&gt;
		case &amp;#039;f&amp;#039;: case &amp;#039;F&amp;#039;: return 15;&lt;br /&gt;
	}&lt;br /&gt;
	return (-1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// calculate 16 bit crc from previous crc and new data byte, initial (first) crc should be 0xffff, returns new crc &lt;br /&gt;
unsigned int crc16(unsigned int crc, unsigned char byte)&lt;br /&gt;
{&lt;br /&gt;
	int i; &lt;br /&gt;
	crc^=byte;&lt;br /&gt;
	for(i=0;i&amp;lt;8;++i)&lt;br /&gt;
	{&lt;br /&gt;
	    if (crc&amp;amp;1)&lt;br /&gt;
			crc=(crc&amp;gt;&amp;gt;1)^0xA001;&lt;br /&gt;
		else&lt;br /&gt;
			crc&amp;gt;&amp;gt;=1;&lt;br /&gt;
	}&lt;br /&gt;
	return crc &amp;amp; 0xffff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// generates first Sys-EX Block, this switches the interface from operation mode to boot-load mode&lt;br /&gt;
int makePrgPrep(unsigned char *str)&lt;br /&gt;
{&lt;br /&gt;
	int i; &lt;br /&gt;
	&lt;br /&gt;
	unsigned char a[] = { 0xF0, 0x70, 0x7D,0x00,0x16,0x04, 0x02, 0xF7 }; // the switch command string (see makeSysEx for byte value explanation) &lt;br /&gt;
	&lt;br /&gt;
	for(i=0;i&amp;lt;sizeof(a);i++)	&lt;br /&gt;
		*str++=a[i];&lt;br /&gt;
	for(;i&amp;lt;70;i++)	// 70 bytes * 0,32ms for midi data transmission gives the interface the time to start the bootloader &lt;br /&gt;
	{&lt;br /&gt;
		*str++=0;&lt;br /&gt;
	}&lt;br /&gt;
	return i; &lt;br /&gt;
}&lt;br /&gt;
// make a sys-ex data block with proper midi framing and crc from binary data in &amp;quot;block&amp;quot; &lt;br /&gt;
int makeSysEx(unsigned char *block, int len, unsigned char *syxTarget)&lt;br /&gt;
{&lt;br /&gt;
	int crc=0xffff;&lt;br /&gt;
	unsigned int out=0;&lt;br /&gt;
	int bits=0;&lt;br /&gt;
	int i;&lt;br /&gt;
	unsigned char c;  &lt;br /&gt;
	&lt;br /&gt;
	unsigned char *syxStr=syxTarget;&lt;br /&gt;
&lt;br /&gt;
	// make CRC &lt;br /&gt;
	for(i=0;i&amp;lt;len;i++)&lt;br /&gt;
	{&lt;br /&gt;
		c=block[i];&lt;br /&gt;
		crc=crc16(crc, c);&lt;br /&gt;
	}&lt;br /&gt;
	block[len++]= ( crc)&amp;amp;0xff;&lt;br /&gt;
	block[len++]= (crc &amp;gt;&amp;gt;8 ) &amp;amp;0xff;&lt;br /&gt;
	&lt;br /&gt;
	*syxStr++ = (0xF0);	// start sys ex &lt;br /&gt;
	*syxStr++ = (0x70);	// manufacturer id &lt;br /&gt;
	*syxStr++ = (0x7D);	// unit type  &lt;br /&gt;
	*syxStr++ = (0x00); // unit id &lt;br /&gt;
	*syxStr++ = (0x15);	// for normal sysEx it is a adress, here magic byte 1 &lt;br /&gt;
	*syxStr++ = (0x55); // magic byte 2 &lt;br /&gt;
		&lt;br /&gt;
	for(i=0;i&amp;lt;len;i++)	&lt;br /&gt;
	{&lt;br /&gt;
		c=block[i];	// data byte 	&lt;br /&gt;
		/*&lt;br /&gt;
			Midi data is 7 bit only, as MSB is command/data bit. &lt;br /&gt;
			So data must be converted to 7 bit. &lt;br /&gt;
			Each source data byte gives 8/7 target bytes, &lt;br /&gt;
			as soon as there is one complete byte more (which happens every 7 input bytes)&lt;br /&gt;
			two target bytes will be generated.&lt;br /&gt;
		*/&lt;br /&gt;
		out&amp;lt;&amp;lt;=8;	&lt;br /&gt;
		out|=c;&lt;br /&gt;
		bits+=8;&lt;br /&gt;
		while(bits&amp;gt;=7)&lt;br /&gt;
		{&lt;br /&gt;
			*syxStr++ = ((out&amp;gt;&amp;gt;(bits-7)) &amp;amp; 0x7f);&lt;br /&gt;
			bits-=7;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(bits)	// don&amp;#039;t forget about the last bits of the last data byte &lt;br /&gt;
	{&lt;br /&gt;
		out&amp;lt;&amp;lt;= 7-bits;  // this will pad last byte with up to 6 zero bits. &lt;br /&gt;
		*syxStr++ =  (out &amp;amp; 0x7f);&lt;br /&gt;
	}&lt;br /&gt;
	*syxStr++ = 0xF7;	// Sys-Ex end &lt;br /&gt;
&lt;br /&gt;
	return (int) (syxStr - syxTarget); // lenght of generated data &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// argv[1] is filename to be converted &lt;br /&gt;
int main(int argc, _TCHAR* argv[])&lt;br /&gt;
{&lt;br /&gt;
	FILE *fp; &lt;br /&gt;
	int minAdr=0xffff;&lt;br /&gt;
	int maxAdr=0;&lt;br /&gt;
	int chars=0;&lt;br /&gt;
	int error=0;&lt;br /&gt;
	int c; &lt;br /&gt;
	int val;&lt;br /&gt;
	int field=-1;&lt;br /&gt;
	int adress=0;&lt;br /&gt;
	int cnt; &lt;br /&gt;
	int sum=0; &lt;br /&gt;
	int field_len=0; &lt;br /&gt;
	int type=99;&lt;br /&gt;
	int line=0;&lt;br /&gt;
&lt;br /&gt;
	// the controller allways flashes 64 byte blocks, so the last block is padded with arbitrary data &lt;br /&gt;
	int padit[]= {110,111,114,100,99,111,114,101,32,119,97,115,32,104,101,114,101,32,43,43,43,32,&lt;br /&gt;
              110,111,114,100,99,111,114,101,32,119,97,115,32,104,101,114,101,32,43,43,43,32,&lt;br /&gt;
			  110,111,114,100,99,111,114,101,32,119,97,115,32,104,101,114,101,32,43 } ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	printf(&amp;quot;syx876 Version &amp;quot; VERSION &amp;quot;\nHex-File to Sys-Ex Converter for ATMega88 on MCV876\n&amp;quot;); &lt;br /&gt;
&lt;br /&gt;
	// &amp;#039;check&amp;#039; for proper input filename (it must have a &amp;quot;three byte extension&amp;quot; )&lt;br /&gt;
	//  *not* fool proof, try &amp;quot;/../a&amp;quot; and you&amp;#039;ll get interesting results&lt;br /&gt;
	size_t l=strlen(argv[1]);&lt;br /&gt;
&lt;br /&gt;
	if(argc !=2 || l&amp;lt;5 || *(argv[1]+l-4)!=&amp;#039;.&amp;#039; )&lt;br /&gt;
	{&lt;br /&gt;
		printf(&amp;quot;\nUsage: syx876 filename.hex\n&amp;quot;);&lt;br /&gt;
		return -1;&lt;br /&gt;
	}&lt;br /&gt;
	l -= 3; &lt;br /&gt;
	&lt;br /&gt;
	fp=fopen (argv[1],&amp;quot;rb&amp;quot;);	// open input files &lt;br /&gt;
	&lt;br /&gt;
	if(fp)&lt;br /&gt;
	{&lt;br /&gt;
		// make output file name &lt;br /&gt;
		*(argv[1]+l)=0;	&lt;br /&gt;
		strcat (argv[1],&amp;quot;syx&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		while( (c=fgetc(fp)) != EOF  ) // read input hex file &lt;br /&gt;
		{&lt;br /&gt;
			chars++;&lt;br /&gt;
			 &lt;br /&gt;
			if(c==&amp;#039;:&amp;#039;)&lt;br /&gt;
			{&lt;br /&gt;
				cnt=0;&lt;br /&gt;
				field=0;&lt;br /&gt;
				sum=0;&lt;br /&gt;
				line++;&lt;br /&gt;
			}&lt;br /&gt;
			else if ( conf( (unsigned char) c ) &amp;gt;=0 )&lt;br /&gt;
			{&lt;br /&gt;
				if(cnt==0)&lt;br /&gt;
					val=conf( (unsigned char) c );&lt;br /&gt;
				else &lt;br /&gt;
				{&lt;br /&gt;
					val&amp;lt;&amp;lt;=4;&lt;br /&gt;
					val += conf( (unsigned char) c );&lt;br /&gt;
				}&lt;br /&gt;
				cnt++;&lt;br /&gt;
				&lt;br /&gt;
				if(cnt==2)	// add up checksum&lt;br /&gt;
					sum+= val;&lt;br /&gt;
				if( cnt==4)&lt;br /&gt;
					sum += val &amp;amp; 0xff;&lt;br /&gt;
				&lt;br /&gt;
				if(field ==0 &amp;amp;&amp;amp; cnt==2)&lt;br /&gt;
				{	// byte count &lt;br /&gt;
					field_len=val; &lt;br /&gt;
					field =1;&lt;br /&gt;
					cnt=0;				&lt;br /&gt;
				}&lt;br /&gt;
				else if( field ==1 &amp;amp;&amp;amp; cnt == 4)&lt;br /&gt;
				{	// adress&lt;br /&gt;
					adress=val;&lt;br /&gt;
					field=2;&lt;br /&gt;
					cnt=0;&lt;br /&gt;
				}&lt;br /&gt;
				else if( field ==2 &amp;amp;&amp;amp; cnt == 2)&lt;br /&gt;
				{	// type &lt;br /&gt;
					type=val;&lt;br /&gt;
					field=4;&lt;br /&gt;
					cnt=0;&lt;br /&gt;
				}&lt;br /&gt;
				else if ( field ==4 &amp;amp;&amp;amp; cnt ==2 &amp;amp;&amp;amp; field_len&amp;gt;0)&lt;br /&gt;
				{	// data &lt;br /&gt;
					field_len--;&lt;br /&gt;
					&lt;br /&gt;
					if(adress &amp;lt; minAdr)&lt;br /&gt;
						minAdr=adress;&lt;br /&gt;
					if(adress&amp;gt;maxAdr)&lt;br /&gt;
						maxAdr=adress;&lt;br /&gt;
&lt;br /&gt;
					if(type==0 &amp;amp;&amp;amp; adress &amp;lt; MAX_DATA)&lt;br /&gt;
						data[adress]=val;&lt;br /&gt;
					adress++;&lt;br /&gt;
					cnt=0;&lt;br /&gt;
				}&lt;br /&gt;
				else if ( field ==4 &amp;amp;&amp;amp; cnt ==2 &amp;amp;&amp;amp; field_len == 0)&lt;br /&gt;
				{	// checksum &lt;br /&gt;
					cnt=0;&lt;br /&gt;
					sum &amp;amp;=0xff;&lt;br /&gt;
					if(sum)&lt;br /&gt;
					{&lt;br /&gt;
						error++;&lt;br /&gt;
						printf(&amp;quot;Line %d Checksum error (sum=%d)\n&amp;quot;,line, sum); &lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			else if( c !=10 &amp;amp;&amp;amp; c !=13)&lt;br /&gt;
			{&lt;br /&gt;
				error ++;&lt;br /&gt;
				printf( &amp;quot;Line %d unexpected character (%c)\n&amp;quot;,line, c); // characters I don&amp;#039;t know  &lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		printf( &amp;quot;\nread %d charactes, from adress %d to %d with %d errors\n&amp;quot;, chars, minAdr, maxAdr,error); &lt;br /&gt;
		&lt;br /&gt;
		// generate output data &lt;br /&gt;
		if(error==0 &amp;amp;&amp;amp; minAdr==0) &lt;br /&gt;
		{&lt;br /&gt;
			int blocks; &lt;br /&gt;
			int blockNr; &lt;br /&gt;
			unsigned char block[MAX_SYX_BLOCK];	// buffer to collect/prepare one binary data block &lt;br /&gt;
			unsigned char stp[MAX_SYX_DATA]; 	//  output data buffer, collects the sysEx data&lt;br /&gt;
			unsigned char *str;		// current write pointer &lt;br /&gt;
			int adr; &lt;br /&gt;
			int padded;&lt;br /&gt;
			FILE *wp;&lt;br /&gt;
			int i;&lt;br /&gt;
			&lt;br /&gt;
			str=stp; &lt;br /&gt;
			&lt;br /&gt;
			blocks= (((maxAdr)/64)+1);	// total number of blocks &lt;br /&gt;
						&lt;br /&gt;
			str+= makePrgPrep(str);		// generate sys-ex header (=switch to bootloader command) &lt;br /&gt;
			&lt;br /&gt;
			// first block is a spezial block - it tells controller number of blocks he has to expect. &lt;br /&gt;
			blockNr=0;&lt;br /&gt;
			block[0]=blockNr;&lt;br /&gt;
			block[1]=blocks;&lt;br /&gt;
			block[2]=0;	// reserved &lt;br /&gt;
			block[3]=0;	// reserved &lt;br /&gt;
			str += makeSysEx(block,4,str);	// generate SysEx from block data &lt;br /&gt;
			&lt;br /&gt;
			adr=minAdr;&lt;br /&gt;
			// make flash data blocks &lt;br /&gt;
			// flash data blocks are 65 bytes, 1 Byte Block number, 64 data bytes&lt;br /&gt;
			// the controller allways writes 64 byte blocks to flash, so this format &lt;br /&gt;
			// helps to keep the controller program straight. &lt;br /&gt;
			while (blockNr&amp;lt;blocks)&lt;br /&gt;
			{&lt;br /&gt;
				blockNr++;&lt;br /&gt;
				block[0]=blockNr;	// first data byte in block is block number (so controller sees, when a block is lost) &lt;br /&gt;
				padded=0; &lt;br /&gt;
				for(i=0;i&amp;lt;64;i++)&lt;br /&gt;
				{&lt;br /&gt;
					if(adr&amp;gt;maxAdr)	 // it beyond highest adresses from hex file:  last block is(must be) padded to 64 bytes &lt;br /&gt;
					{&lt;br /&gt;
						block[i+1]=padit[padded];&lt;br /&gt;
						padded++;&lt;br /&gt;
					}&lt;br /&gt;
					else	// write programm data &lt;br /&gt;
					{&lt;br /&gt;
						block[i+1]=data[adr++];					&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				str +=makeSysEx(block,65,str);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// write output file &lt;br /&gt;
			wp=fopen(argv[1],&amp;quot;wb&amp;quot;);&lt;br /&gt;
			if(wp)&lt;br /&gt;
			{&lt;br /&gt;
				fwrite ((void *) stp ,sizeof(unsigned char), str-stp, wp);&lt;br /&gt;
				fclose(wp);&lt;br /&gt;
				&lt;br /&gt;
				printf(&amp;quot;%d sysEx data blocks in %d bytes written\n&amp;quot;,blocks, str-stp);&lt;br /&gt;
			}&lt;br /&gt;
			else &lt;br /&gt;
				printf(&amp;quot;Cant open output file %s\n&amp;quot;,argv[1]);&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			if(minAdr)&lt;br /&gt;
				printf(&amp;quot;Lowest adress %d is not zero!\n&amp;quot;,minAdr);&lt;br /&gt;
			return -2;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	else&lt;br /&gt;
		printf (&amp;quot;Input file %s not found\n&amp;quot;,argv[1]);&lt;br /&gt;
&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fetz</name></author>
	</entry>
</feed>