| Zeile 42: | Zeile 42: | ||
<pre>fbc -c kernel.bas | <pre>fbc -c kernel.bas | ||
ld -Ttext=0x100000 kernel.o -melf_i386 -o basic.krn</pre> | ld -Ttext=0x100000 kernel.o -melf_i386 -o basic.krn</pre> | ||
| + | |||
| + | == Anfang einer kleinen RTLib == | ||
| + | Möchte man FB-Funktionen wie IN oder OUT benutzen, muss erstmal eine Runtime-Lib her, die die Funktionen zur Verfügung stellt. Die ist normalerweise in C geschrieben, aber das geht (zumindest für einfache Dinge) auch in FREEBASIC. Hier Beispiele für IN und OUT: | ||
| + | |||
| + | <freebasic> | ||
| + | SUB fb_Out CDECL ALIAS "fb_Out" (port as USHORT, value as UBYTE) | ||
| + | ASM | ||
| + | movw dx, [port] | ||
| + | movb al, [value] | ||
| + | outb dx, al | ||
| + | END ASM | ||
| + | END SUB | ||
| + | |||
| + | FUNCTION fb_In CDECL ALIAS "fb_In" (port as USHORT) AS UBYTE | ||
| + | DIM value AS UBYTE | ||
| + | |||
| + | ASM | ||
| + | movw dx, [port] | ||
| + | inb al, dx | ||
| + | mov [value], al | ||
| + | END ASM | ||
| + | |||
| + | RETURN value | ||
| + | END FUNCTION | ||
| + | </freebasic> | ||
| + | |||
| + | Diese werden in die Datei rtlib.bas gepackt, danach wie oben angegeben kompiliert. Zum linken muss jetzt der folgende Befehl benutzt werden: | ||
| + | <pre>ld -Ttext=0x100000 kernel.o rtlib.o -melf_i386 -o basic.krn</pre> | ||
== Weblinks == | == Weblinks == | ||