Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Hallo World ohne OS
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
schildron



Anmeldungsdatum: 25.08.2008
Beiträge: 86

BeitragVerfasst am: 13.07.2009, 16:49    Titel: Hallo World ohne OS Antworten mit Zitat

DIe folgende Frage ist eher grundsätzlich, da sich ein solches Projekt in ferner Zukunft befindet. Allerdings möchte ich beginnen, mich mit dem folgendem Thema zu beschäftigen.
Die meisten FB Anwendungen laufen auf Windows oder Linux. Ein Hallo World Programm für diese Plattform sollte kein Problem darstellen.
Nun will ich aber den Hallo World Schriftzug nach dem BIOS Selftest und vor dem Start des Betriebssystem haben.
Ich interessiere mich hauptsächlich für die Grundsätzliche Funktionsweise eines solchen Programmes. (z.B.: wie muss es Compiliert werden)?. Brauche ich dafür einen eigenen Kernel?

Das Hallo World Programm sollte außerdem von einer Floppy Diskette starten. Ein dies für 2 Programmierer mit geringer-mittlerer Erfahrung in einem Annehmbaren Zeitraum möglich?

Danke im Voraus
Schildron
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 13.07.2009, 17:07    Titel: Antworten mit Zitat

Google mal nach "eigenes os schreiben" und du findest genug Skriptkiddie-Artikel, die dir einen dreißig zeiligen "Kernel" erklären.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 13.07.2009, 17:14    Titel: Antworten mit Zitat

das geht eigentlich ziemlich einfach... hab ich auch schon hingekriegt (allerdings nur theoretisch, ausgetestet mit bootloader hab ichs net. aber ich seh keinen grund, wieso es nicht hätte gehen sollen.)
im grunde musst du nur die richtigen bios-interrupts raussuchen, um zeichen auf den bildschirm zu bringen...

das eigentliche problem wird sein, mehr draus zu machen...
denn sobald du auf dateien zugreifen willst, auf hardware (teilweise zumindest) brauchst du auf jedenfall schonmal passende treiber (wozu ich auch dateisystemtreiber zähle)

EDIT: oops... mein beitrag war auf reinen assemblercode bezogen. ob man mit fb n "OS" schreiben kann, kA... mit powerbasic oder purebasic oder so hats mal (hier im forum!) einer geschafft, nen kernel zu schreiben. allerdings mit viiiel rumgetrickse, da PB-programme auf DOS prüfen.
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 13.07.2009, 17:42    Titel: Antworten mit Zitat

Vielleicht interessant zum Thema: http://lowlevel.brainsware.org/wiki/index.php/FreeBASIC
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 13.07.2009, 17:53    Titel: Antworten mit Zitat

hey cool xD
[ironie]los, lasst und FBOS1.0 bauen XD[/ironie]

nur mal aus interesse: wozu brauchst du das eigentlich?
soll daraus wirklich mal ein OS werden (ich will dir ja nicht den mut nehmen, aber das bezweifle ich stark), oder ist es was anderes?
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 13.07.2009, 18:09    Titel: Antworten mit Zitat

Kernel mit FB: http://www.freebasic-portal.de/index.php?s=projekt&id=26


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
schildron



Anmeldungsdatum: 25.08.2008
Beiträge: 86

BeitragVerfasst am: 13.07.2009, 18:37    Titel: Antworten mit Zitat

Also einmal Danke für die Posts!

Nein, es soll kein Betriebssystem werden. Bei uns haben gerade die Sommerferien begonnenund ich brauche halt ein bischen beschäftigung. Mein Hauptprojekt sollte in 2-3 Wochen fertig sein und ein kleines Nebenprojekt in 3-4 Wochen.

Es gibt allerdings noch einen 2. viel wichtigeren Grund: Ich möchte in den Grundzügen mir erarbeiten wie ein Betriebssystem arbeitet und aufgebaut ist, damit Programme laufen und dazu gehört auch zu wissen, wie einfache Programme ohne OS funktionieren. Quasi eine Aktion um mich Fort zu Bilden.

3. beginnen wir nächstes Jahr in der Schule mit VBA zu programmieren. Da aber die meisten meiner Schulkollegen unfähig in sachen programmieren sind, möchte ich mit dem 2. in meiner Klasse, der ungefähr so viel kann wie ich, uns nächstes Jahr ein bischen mit "fortschrittlicher" Programmierung beschäftigen.

Was es werden soll: Ein Quiz welches Schnell einsatzbereit ist (also ohne start von dem lahmen Windows)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 13.07.2009, 19:51    Titel: Antworten mit Zitat

dann ist ein kernel zwingend nötig .. ohne kernel gibts kein zugriff auf die hardware .. ob der kernel in deinem programm drin is, oder seperate gelagert wurde, ist hierbei irrelevant ..
kannst dir ja mal den von mir oben geposteten kernel reinziehen. dda sind grundlegend komponenten drin, die nötig sind, um wirklich simple programme zu schreibne. nicht alle funktionen die in FB genutzt werden funktionieren, aber die grundlegenden schon.

du musst bedenken, das dein programm , und auch FB selbst, auf funktionen zugreift (screen, put, get, open, close, print, usw.) alles befehle sind, die betriebssystemspezifisch sind. da du kein OS hast, musst du dir ein eigenes os schreiben, bzw einen kernel, der diese funktionen bereitstellt.
erst dan kannst du effektiv ein programm schreiben, das auf diese funktionen zugreift.

ohne kernel gehts also nicht.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Löwenherz



Anmeldungsdatum: 25.08.2008
Beiträge: 86
Wohnort: auf einer sonnigen Insel :)

BeitragVerfasst am: 15.07.2009, 22:35    Titel: Antworten mit Zitat

hallo puppetmaster, schildron,

ich hätte gerne gewußt, wie ich a) dieses skript für kernel-testen.bas kompiliere mit FBEDIT... komme nicht ganz klar damit...

Code:
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

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


bekomme eine datei heraus mit namen: "kernel-testen.o" (O-Datei) ! zwinkern

b) meine rtlib-test.bas

Code:
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


also ich brauche die Einstellungen, wo ich das genau bei FBEDIT einstellen kann... habe vorher FBIDE probiert... bei Einstellungen geschaut, aber wo genau und wie genau einstellen ? zwinkern

möchte das kernel.bas mal einfach antesten !

liebe Grüße, Löwenherz, völlig verschwitzt durch den heißen Tag !
_________________
Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
croco97



Anmeldungsdatum: 04.11.2005
Beiträge: 260

BeitragVerfasst am: 16.07.2009, 07:31    Titel: Antworten mit Zitat

schildron hat Folgendes geschrieben:
Also einmal Danke für die Posts!

3. beginnen wir nächstes Jahr in der Schule mit VBA zu programmieren. Da aber die meisten meiner Schulkollegen unfähig in sachen programmieren sind, möchte ich mit dem 2. in meiner Klasse, der ungefähr so viel kann wie ich, uns nächstes Jahr ein bischen mit "fortschrittlicher" Programmierung beschäftigen.



Das heisst, du denkst, VBA ist für die Katz?

Ich finde es grundsätzlich gut und nachvollziehbar, dass du mal einen Kernel programmieren willst. Kannst du x86-Assembler? Da wirst du dich etwas einarbeiten müssen.

Aber VBA würde ich auch ernstnehmen. Man kann schon recht komplexe Sachen und in Verbindung mit guten Excelkenntnissen faszinierende Sachen im Bereich Datenbank und Datenanalyse damit machen. VBA im Lebenslauf ist für mich immer ein Grund, mir die Bewerbung mal näher anzuschauen - gute VBA-Programmierkenntnisse trifft man nicht oft an.

VG!

Croco
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 16.07.2009, 09:46    Titel: Antworten mit Zitat

@Löwenherz

Ganz unten in dem code steht, wie du die kompilierung durchführen musst.
Code:
'fbc -c kernel.bas
'ld -Ttext=0x100000 kernel.o -melf_i386 -o basic.krn


Da dein Projekt jedoch ncith "kernel.bas" heist, sondern "kernel-testen.bas" musst du 3 dinge abändern.

einmal den "Einsprungspunkt" in dein Programm. Dieser wird hier definiert:
Code:
call fb_ctor__kernel

da musst du entsprechen zu
Code:
call fb_ctor__kernel-tester

abändern.

Ich weis jedoch nicht ob der linker mit "-" klar kommt. Eventuell musst du in der .bas das "-" durch "_" ersetzen.

anschliessend kompilierst du eine Objektdatei mit
Code:
fbc -c kernel.bas

Diese musst du anschliessend mit
Code:
ld -Ttext=0x100000 kernel.o -melf_i386 -o basic.krn
zu einer binary linken.
Auch hier must du darauf achten, das die Dateinamen "kernel.xxx" entsprechend den erzeugten Datein entsprechen.

Die ausgabedatei heist anschliessend, durch den linker angegeben: "basic.krn"

Hinzu kommt, das du nicht zwingend eine RTLib erzeugen musst, wenn du in deinem Programm keine FB internen kommandos nutzen willst.

Es empfiehlt sich jedoch, vorallem wenn du Strings verwenden willst, wenn du Konvertierungen nutzen willst (Val(), CInt(), ... )

Ich habe ein Linkerskript für den "FB Kernel" geschrieben, der alle nötigen operationen, unter anderem das kompilieren der RTLib, übernimmt: http://www.freebasic-portal.de/index.php?s=fbporticula&mode=show&id=701

Zus#ätzlich kopiert das skript auch gleich die erzeugte Binary in das Image für QEMU, so das ich QEmu direkt ausführen kann, ohne vorher die Binary, von hand, in das Image zu packen.

An dem oben angegebenem Link von mir: http://www.freebasic-portal.de/index.php?s=projekt&id=26 .. kannst du die grundlegenden Datein einsehen, die FBC braucht, wenn du seine entsprechenden funktionen nutzen willst, wie Print, usw.

dort findet sich auch der "Basic-Kernel" .. quasi das absolute grundgerüst zum "einfachen" Printen von Text. http://www.freebasic-portal.de/index.php?s=fbporticula&mode=show&id=679


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Löwenherz



Anmeldungsdatum: 25.08.2008
Beiträge: 86
Wohnort: auf einer sonnigen Insel :)

BeitragVerfasst am: 16.07.2009, 10:54    Titel: Antworten mit Zitat

hi tpm,

danke, ich habe schon etwas gefunden, "kernel.o" Datei gebaut, aber

aber wie handele ich das mit der zweiten Zeile... "ld -Ttext..usw", du hast von "linken" gesprochen... wie geht das ?

Benutze gerade FBIDE...

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


tschüss, ich probiere weiter aus... danke auch für die Links zu diesen ganzen kernel.bas + kernel.bi themen... uff... das sind ja reichlich, haha
aber vielleicht macht es klick bei mir und ich kapiers dann schnell...

schönen sonnigen Tag noch, danke nochmals... ich will das ja verstehen und es packen !

tschüss, Löwenherz
_________________
Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 16.07.2009, 11:04    Titel: Antworten mit Zitat

das compilat von fbc ist die .o datei ..
diese datei wurde von FBC erzeugt.

ld ist der linker. Das ist ein anderes programm, mit dem du die .ob von FBC in eine Binary umsetzen kannst.

Typsicherweise baust du das (wenn möglich) in ein skript ein, udn startest dieses, so das du nur einen aufruf druchfühen musst.

andernfalls musst du ne console öffnen, und dort das linking von hand ausführen.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Löwenherz



Anmeldungsdatum: 25.08.2008
Beiträge: 86
Wohnort: auf einer sonnigen Insel :)

BeitragVerfasst am: 16.07.2009, 11:35    Titel: Antworten mit Zitat

hi tpm!

sorry, aber das verstehe ich nicht... mit dem Linker zwinkern

ich brauche also nichts das zweite Mal kompilieren, richtig ?

wie zb:

Zitat:

compiler befehl:
"<$ld>" -Ttext=0x100000 kernel.o -melf_i386 -o basic.krn "<$file>"


ich brauche eine einfache Textdatei, wo ich diesen Code eingebe und dann ?

sorry, komme nicht weiter... lauter Bäume und kein Wald lächeln

tschüssi, Löwenherz
_________________
Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Löwenherz



Anmeldungsdatum: 25.08.2008
Beiträge: 86
Wohnort: auf einer sonnigen Insel :)

BeitragVerfasst am: 16.07.2009, 16:51    Titel: Linker für kernel.bas einsetzen, aber wie ? Antworten mit Zitat

... sorry, kann mir jemand weiterhelfen ?

wie soll ich den "Linker" für kernel.bas erstellen, bitte schrittweise erklären... komme nicht weiter... seufzer... habe schon viel ausprobiert... grummel-grummel...

die kernel.o Datei habe ich bereits erfolgreich kompiliert... und nu ?

beste grüße aus nordhessen, ich schwitze sogar im Stehen lächeln

löwenherz
_________________
Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 16.07.2009, 18:49    Titel: Antworten mit Zitat

Der Linker muss nicht erstellt werden, den hast du schon.
Das ist die ld.exe im bin-Ordner deines FreeBASIC-Verzeichnisses.

Öffne ein Consolenfenster und geh zu dem Ordner, wo die ld.exe ist. Alternativ kannst du die shell_start.exe auf dem FB-Ordner in den bin-Ordner reinkopieren und die starten (erspart dir das raussuchen vom richtigen Pfad in der Console).
Sobald du im richtigen Verzeichnis bist, tippst du das ein, was dir TPM gesagt hat, also das:
Code:
ld ...


Wenn du das dann mit Enter bestätigst, dann hast du das, was du willst.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Löwenherz



Anmeldungsdatum: 25.08.2008
Beiträge: 86
Wohnort: auf einer sonnigen Insel :)

BeitragVerfasst am: 16.07.2009, 19:43    Titel: Antworten mit Zitat

hi mod,

prima... habe das Verzeichnis mit der ld.exe gefunden und den schönen Text eingetippt.. ld -Ttext usw.

aber nach Return bekomme ich im Konsolenmodus danach diese Fehlermeldung...

Zitat:
unrecognised emulation mode: elf_i386
supported emulations: i386pe


immerhin ein großer Schritt weiter mit einer Fehlermeldung, aber was mache ich nun, grinse weiter... befinde mich auf einem fremden Planeten lächeln
habe verschiedene modi eingetippt mit wenig Erfolg, leider

beste Grüße, Löwenherz
_________________
Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 16.07.2009, 19:56    Titel: Antworten mit Zitat

"elf" ist eine ausführbare Linux-Datei, so viel kann ich dir sagen.
Deine ld.exe kann aber nur "pe", also ausführbare Dateien für Windows erstellen.

Entweder du machst das ganze gleich auf einem Linux-System oder du wartest da noch mal auf TPM, da ich auf dem Gebiet keine Erfahung hab und leider auch keine Zeit, das ganze auszuprobieren.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 16.07.2009, 21:54    Titel: Antworten mit Zitat

Nur mal so geraten: Ich denke, es liegt am Parameter -melf_i386.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 16.07.2009, 22:02    Titel: Antworten mit Zitat

Schon klar, nur ich weiß jetzt nicht, ob mit dem anderen Parameter das rauskommt, was er will. Kenn mich mit der Materie nicht aus.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz