<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
	<channel>
		<title>BlitzBasic Portal Worklogs - OSBasic</title>
		<link>https://www.blitzforum.de/worklogs/290/</link>
		<description>Worklog von DAK</description>
		<language>de</language>
		<managingEditor>mail@blitzforum.de</managingEditor>
		<webMaster>mail@blitzforum.de</webMaster>
		<pubDate>Thu, 05 Nov 2009 03:21:15 +0100</pubDate>
		<lastBuildDate>Thu, 05 Nov 2009 03:21:15 +0100</lastBuildDate>

		<item>
			<title>Matheparser</title>
			<link>https://www.blitzforum.de/worklogs/290/#1926</link>
			<guid>https://www.blitzforum.de/worklogs/290/#1926</guid>
			<author>DAK</author>
			<description>sodale, der matheparser ist jetz endlich auch fertig.&lt;br /&gt;&lt;br /&gt;aus&lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox0&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('0')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox0&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('0')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox0&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('0');&quot;&gt;x=y*&amp;#40;2+v&amp;#41;+1&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;wird wie gew&amp;uuml;nscht&lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox1&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('1')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox1&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('1')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox1&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('1');&quot;&gt;mov ax,0&lt;br /&gt;mov ah,0&lt;br /&gt;mov al,&amp;#91;var_y&amp;#93;&lt;br /&gt;mul bl&lt;br /&gt;mov dx,0&lt;br /&gt;mov bx,1&lt;br /&gt;mov &amp;#91;tmp_matharr+bx&amp;#93;,al&lt;br /&gt;mov ah,0&lt;br /&gt;mov bx,1&lt;br /&gt;mov al,&amp;#91;var_tmpmatharr+bx&amp;#93;&lt;br /&gt;mov bl,1&lt;br /&gt;add al,bl&lt;br /&gt;mov bx,2&lt;br /&gt;mov &amp;#91;tmp_matharr+bx&amp;#93;,al&lt;br /&gt;mov bx,2&lt;br /&gt;mov al,&amp;#91;tmp_matharr+bx&amp;#93;&lt;br /&gt;mov &amp;#91;var_x&amp;#93;,al&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;ich geb zu, das move ax,0 ist etwas sinnlos, aber zur sicherheit is es nicht b&amp;ouml;se es drinnen zu haben und ein einzelnes mov einer konstanten in ein register braucht quasi nix an zeit.&lt;br /&gt;&lt;br /&gt;als n&amp;auml;chstes kommt der syntaxbaum dran und dann endlich die function calls.&lt;br /&gt;&lt;br /&gt;zu den function calls noch eines:&lt;br /&gt;ich h&amp;auml;tt mir das so gedacht, dass es im grunde 2 arten von calls geben wird.&lt;br /&gt;das erste werden die normalen calls sein, das zweite die makro-calls.&lt;br /&gt;die normalen calls werden so ablaufen, dass die parameter der verkehrten reihenfolge nach auf den stack geschoben werden und dann von der funktion selbst ausgelesen werden (so wies zb auch in c++ und vielen anderen gro&amp;szlig;en programmiersprachen gemacht wird).&lt;br /&gt;die makro-calls rennen so, dass der coder selbst ein fasm-makro schreibt, dass dann von den parametern aus das ganze manuell verarbeitet. das ganze rennt allerdings nur rein-fasm, also nicht mit OSBasiccode sondern hald nur mit inline-fasm. der sinn des ganzen is, dass man so OSBasic um funktionen erweitern kann, auf die man nur mit fasm zugriff hat und/oder rechenzeitkritische programmteile direkt in fasm zu schreiben, um so die performance zu erh&amp;ouml;hen.&lt;br /&gt;&lt;br /&gt;(falls das ganze unverst&amp;auml;ndlich is, es is 20 nach 3. ich bin komplett hin&amp;uuml;ber. werds vllt noch mal morgen &amp;uuml;berarbeiten, den text.)</description>
			<pubDate>Thu, 05 Nov 2009 03:21:15 +0100</pubDate>
		</item>

		<item>
			<title>Tokenizer &amp; Analyser</title>
			<link>https://www.blitzforum.de/worklogs/290/#1907</link>
			<guid>https://www.blitzforum.de/worklogs/290/#1907</guid>
			<author>DAK</author>
			<description>sodale... Tokenizer und Analyser sind soweit fertig...&lt;br /&gt;&lt;br /&gt;aus &lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox2&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('2')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox2&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('2')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox2&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('2');&quot;&gt;If test = 1 Then&lt;br /&gt;Print&amp;#40;1+3&amp;#41;&lt;br /&gt;EndIf&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;wird&lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox3&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('3')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox3&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('3')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox3&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('3');&quot;&gt;##TOKENIZE##&lt;br /&gt;-----&lt;br /&gt;New Line&amp;#58; if test = 1 then&lt;br /&gt;New Token&amp;#58; if&lt;br /&gt;New Token&amp;#58; &amp;#40;&lt;br /&gt;New Token&amp;#58; test&lt;br /&gt;New Token&amp;#58; =&lt;br /&gt;New Token&amp;#58; 1&lt;br /&gt;New Token&amp;#58; &amp;#41;&lt;br /&gt;New Token&amp;#58; then&lt;br /&gt;-----&lt;br /&gt;New Line&amp;#58; print&amp;#40;1+3&amp;#41;&lt;br /&gt;New Token&amp;#58; print&lt;br /&gt;New Token&amp;#58; &amp;#40;&lt;br /&gt;New Token&amp;#58; 1&lt;br /&gt;New Token&amp;#58; +&lt;br /&gt;New Token&amp;#58; 3&lt;br /&gt;New Token&amp;#58; &amp;#41;&lt;br /&gt;-----&lt;br /&gt;New Line&amp;#58; endif&lt;br /&gt;New Token&amp;#58; endif&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;und dann&lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox4&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('4')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox4&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('4')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox4&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('4');&quot;&gt;&lt;br /&gt;##ANALYZE##&lt;br /&gt;-----&lt;br /&gt;New Line&amp;#58;&lt;br /&gt;SYNTAX&amp;#58;&amp;nbsp; if&lt;br /&gt;BRACKET&amp;#58;&amp;nbsp; &amp;#40;&lt;br /&gt;VARIABLE&amp;#58;&amp;nbsp; test&lt;br /&gt;OPERATOR&amp;#58;&amp;nbsp; =&lt;br /&gt;NUMBER&amp;#58;&amp;nbsp; 1&lt;br /&gt;BRACKET&amp;#58;&amp;nbsp; &amp;#41;&lt;br /&gt;SYNTAX&amp;#58;&amp;nbsp; then&lt;br /&gt;-----&lt;br /&gt;New Line&amp;#58;&lt;br /&gt;COMMAND&amp;#58;&amp;nbsp; print&lt;br /&gt;BRACKET&amp;#58;&amp;nbsp; &amp;#40;&lt;br /&gt;NUMBER&amp;#58;&amp;nbsp; 1&lt;br /&gt;OPERATOR&amp;#58;&amp;nbsp; +&lt;br /&gt;NUMBER&amp;#58;&amp;nbsp; 3&lt;br /&gt;BRACKET&amp;#58;&amp;nbsp; &amp;#41;&lt;br /&gt;-----&lt;br /&gt;New Line&amp;#58;&lt;br /&gt;SYNTAX&amp;#58;&amp;nbsp; endif&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;als n&amp;auml;chstes kommt der matheparser und der syntaxbaum dran.&lt;br /&gt;&lt;br /&gt;danke noch mal an coolo, deine worklogs sind ziemlich ausf&amp;uuml;hrlich und verst&amp;auml;ndlich, was das thema angeht.</description>
			<pubDate>Wed, 28 Oct 2009 11:40:56 +0100</pubDate>
		</item>

		<item>
			<title>OSBasic</title>
			<link>https://www.blitzforum.de/worklogs/290/#1904</link>
			<guid>https://www.blitzforum.de/worklogs/290/#1904</guid>
			<author>DAK</author>
			<description>Mir war letztens langweilig, also hab ich mir mal FASM angeschaut. Dabei ist mir der Gedanke gekommen, dass es doch 100k Noobs gibt, die in allen m&amp;ouml;glichen Foren kommen mit &amp;quot;ich m&amp;ouml;chte ein OS programmieren. Ich kann schon HTML/VisualBasic/BB/...&amp;quot; es aber keine M&amp;ouml;glichkeit gibt, was bootbares zu schrieben, ohne irgendein Assembler zu beherrschen.&lt;br /&gt;&lt;br /&gt;Deswegen hab ich mich dran gesetzt, und begonnen, eine basicartige Programmiersprache zu schreiben, deren Sinn und Zweck es ist, Billigst-&amp;quot;Betriebssysteme&amp;quot; zu schreiben.&lt;br /&gt;&lt;br /&gt;Ich hab f&amp;uuml;rs Erste einen einfachen Compiler geschrieben, der auf Basis von Left/Mid/... das Input-File in ein FASM-Codefile umwandelt, welches dann mit FASM kompiliert wird.&lt;br /&gt;&lt;br /&gt;Der Compiler l&amp;auml;uft per Commandline. IDE gibt es noch nicht.&lt;br /&gt;&lt;br /&gt;Kompilieren geht ganz einfach: einfach mit cmd in den Programmordner gehen und dort dann eingeben &amp;quot;compiler.exe inputfile.txt outputfile.img&amp;quot;, oder einfach die Namen in die make.bat eintragen und diese dann ausf&amp;uuml;hren.&lt;br /&gt;&lt;br /&gt;Dieses .img kann dann entweder auf ne Diskette gebrannt werden (CD geht noch nicht, USB-Stick bin ich mir nicht sicher) oder in einer VM geladen werden.&lt;br /&gt;&lt;br /&gt;Momentan vorhandene Befehle:&lt;br /&gt;byte variablenname = wert (der Wert kann entweder eine Zahl von 0-255 sein, oder ein String. F&amp;uuml;r ein Array einfach mehrere Werte getrennt mit Beistrichen eingeben)&lt;br /&gt;word variablenname = wert (das Gleiche wie byte nur mit einem 16Bit-Wert statt einem 8Bit-Wert)&lt;br /&gt;write variable (f&amp;uuml;r variable den variablennamen eines strings angeben)&lt;br /&gt;print variable (das selbe wie write, nur mit einem zeilenumbruch)&lt;br /&gt;setcolor variable/wert (wert = 0-15)&lt;br /&gt;getkey variable (gibt den ASCII-Wert der gedr&amp;uuml;ckten Taste zur&amp;uuml;ck)&lt;br /&gt;waitkey variable (wie getkey, wartet aber auf einen tastendruck)&lt;br /&gt;label labelname (setzt ein label f&amp;uuml;r goto)&lt;br /&gt;goto labelname (springt zu einem label)&lt;br /&gt;&lt;br /&gt;asm/endasm (leitet einen inline-asm-block ein oder beendet ihn. dabei ist zu beachten, alle variablen, die mit byte/word gesetzt werden haben den pr&amp;auml;fix var_ und alle mit label gesetzten labels haben den pr&amp;auml;fix label_)&lt;br /&gt;&lt;br /&gt;als n&amp;auml;chstes werde ich den billigcompiler durch einen besseren ersetzten (mit gescheitem lexer und dem ganzen, nach vorbild dessen, was coolo in seinen worklogs schreibt), den asm-part sch&amp;ouml;ner machen, mehr befehle einf&amp;uuml;gen und, wenn ich mit dem allen fertig bin, iwann vllt eine ide schreiben.&lt;br /&gt;&lt;br /&gt;wer testen will, was es jetzt schon gibt: &lt;a href=&quot;https://www.blitzforum.de/upload/file.php?id=7236&quot; target=&quot;_blank&quot;&gt;*klick*&lt;/a&gt;</description>
			<pubDate>Tue, 27 Oct 2009 20:50:42 +0100</pubDate>
		</item>


	</channel>
</rss>
