FreeBASIC

Aus Lowlevel
Version vom 16. August 2008, 00:36 Uhr von Taljeth (Diskussion | Beiträge) (_start auch noch exportieren, dann wird das langsam was)
Wechseln zu:Navigation,

Ob man BASIC für einen Kernel benutzen kann, ist in erster Linie eine akademische Frage. Der typische BASIC-Programmierer hat nicht die Kenntnisse, ein OS zu schreiben, und die Fortgeschritteneren wollen mit BASIC in aller Regel nichts zu tun haben.

Der Vollständigkeit halber: Es geht. Ich habe dazu FreeBASIC als Compiler benutzt.

Testkernel in BASIC

<freebasic>DIM video AS BYTE POINTER DIM hello AS BYTE POINTER

video = CAST(BYTE POINTER, &Hb8000)

hello = strptr("Hello world")

WHILE *hello <> 0

   *video = *hello
   hello = hello + 1
   video = video + 2

WEND

DO : LOOP

CONST mb_magic = &H1BADB002 CONST mb_flags = 3

ASM .global _start _start:

   call fb_ctor__kernel
   jmp $

fb_RtInit:

   ret

mb_header:

   .align 4
   .int mb_magic
   .int mb_flags
   .int -mb_magic-mb_flags

END ASM</freebasic>

Gebaut wird das ganze mit den folgenden Befehlen:

fbc -c kernel.bas
ld -Ttext=0x100000 kernel.o -melf_i386 -o basic.krn

Weblinks