TV + VGA BIOS (Bellatrix)

Du hast ein Betriebssystem für den Hive geschrieben oder beschäftigst dich mit den grundlegenden Systemfunktionen, dann bist du hier richtig!
Benutzeravatar
oog
Beiträge: 103
Registriert: Do 30. Jul 2009, 14:12
Kontaktdaten:

TV + VGA BIOS (Bellatrix)

Beitrag von oog »

Bellatrix-BIOS-Source für TV und VGA

Basierend auf den letzten Bellatrix-BIOS-Sourcen habe ich die Quelltexte für VGA- und TV-Ausgabe in einen Quelltext zusammengeführt. Der deutsche Tastaturtreiber ist selbstverständlich eingebunden.
Dies soll die Pflege der einzelnen Versionen vereinfachen, da Änderungen und Ergänzungen nur in einem Quelltext eingepflegt werden müssen.

Je nachdem, welchen Ausgang man benötigt, kann man die entsprechenden Codeabschnitte auskommentieren

Code: Alles auswählen

{{ VGA start }}

  vga        : "os-1-bel-vga1024"

{{ VGA end }}

{{ TV start }}
{{
  tv         : "tv"
}}
{{ TV end }}
 
oder einbinden. Im Beispiel ist VGA eingebunden und TV auskommentiert. Dies muss man allerdings für alle entsprechend gekennzeichneten Codeabschnitte tun, das es wohl keinen Präprozessor gibt oder ich zumindest noch keinen gefunden habe.

Hinsichtlich der Cursorpositionierung habe ich etwas gepatcht, da ich im alten BIOS nie die Y-Position des Cursors zurückbekam, die ich gesetzt hatte.

Neu ist, dass beim Setzen der Cursorposition auf "-1" jeweils der Cursor automatisch auf den Größten Wert (X und Y) gesetzt wird.
Somit ist es auch möglich, die maximale Größe des Bildschirms zu ermitteln, für die es keine spezielle Funktion gibt.
Die Codefolge

Code: Alles auswählen

        ios.curgetx(ios.cursetx(-1))
liefert z.B. die Bildschirmgröße in X-Richtung.

Die Änderungen habe ich vorbereitend für weitere Software, z.B. einen Editor eingeführt.

Ein einfaches Testprogramm, mit dem man auf dem Bildschirm schreiben kann, ist "typer.spin". Ich habe es mit dem VGA- und TV-BIOS getestet.
Zur Steuerung verwandet man die Cursortasten, sowie Pos1, Ende, Bild auf und Bild ab.
Die "Esc"-Taste beendet das Programm.

Zu den Testdateien:
vid_tv.bin - Bellatrix BIOS für TV
vid_vga.bin - Bellatrix BIOS für VGA
typer.bin - Testprogramm

Zum Testen des jeweiligen BIOS gibt es zwei Möglichkeiten:
1) Umbenennen in "vid.bin" und auf SD-Karte kopieren. Hive rebooten.
2) Auf SD-Karte kopieren und laden mit "bload vid_vga.bin"

Das Programm typer.bin einfach auf SD-Karte kopieren und an der Kommandozeile mit "typer" starten.
Für BIOS und Testprogramm habe ich jeweils ein Zip-Archiv mit allen zur Kompilierung benötigten Sourcen und den fertig kompilierten Binärfiles angehängt.

Viel Spaß beim Testen.

Gruß, oog
Dateianhänge
BIOS_Bellatrix.zip
Bellatrix BIOS
(49.37 KiB) 537-mal heruntergeladen
Typer.zip
TYPER - Ein kleiner Bildschirmeditor zum testen
(11.42 KiB) 500-mal heruntergeladen
Benutzeravatar
Rainer
Beiträge: 510
Registriert: Fr 29. Mai 2009, 16:11

Re: TV + VGA BIOS (Bellatrix)

Beitrag von Rainer »

Wir müssen uns DRINGEND etwas überlegen, wie wir uns abstimmen. Ich weiß nicht wieviel Sinn es macht das wir gleichzeitig am Bel-Bios arbeiten, noch dazu mit verschiedenen Sourcen als Grundlage.

Deine Änderungen werden definitiv zumindestens in meinem Source nicht laufen, da ich zwar die Auflösung abfrage, aber noch keinerlei speziellen Routinen für TV drin habe. Ob die Änderungen in den Funktionsaufrufen der Cursorposition mit meinen collidieren weiß ich jetzt noch nicht, für die Sondertasten zur Cursorsteuerung habe ich schon eine eigene Lösung.

Ich bin gerade dabei, ladbare Fonts zu integrieren ... was das IOS und damit das Bel-Bios verändert, ich kann Farb-Paletten übergeben (wenn z.B. jemand lieber mit grüner Schrift auf schwarzen Hintergrund arbeiten will), was das IOS geändert hat, ich habe zig Benutzerdefinierte Zeichen, was das Bel-Bios geändert hat, kann Bildschirmkopien auf SD schreiben mit der [DRUCK]-Taste ... was das IOS und Bel-Bios geändert hat, ich habe eine einfache GUI (z.B. Message-Boxen und so Sachen), die das IOS und das Bel-Bios geändert haben,usw.

Entweder habe jetzt ich umsonst gearbeitet, oder Du ... beides ist nicht zufriedenstellend. Zwei komplett verschiedene Sourcen (vll. sogar 3 wenn drohne was gemacht hat) zu konsolidieren kann ziemlich schwierig werden.

Du siehst, wir arbeiten aneinander vorbei.

Gruß.
Rainer
"Wer andauernd begreift, was er tut, bleibt unter seinem Niveau."
Benutzeravatar
oog
Beiträge: 103
Registriert: Do 30. Jul 2009, 14:12
Kontaktdaten:

Re: TV + VGA BIOS (Bellatrix)

Beitrag von oog »

Rainer hat geschrieben:Wir müssen uns DRINGEND etwas überlegen, wie wir uns abstimmen. Ich weiß nicht wieviel Sinn es macht das wir gleichzeitig am Bel-Bios arbeiten, noch dazu mit verschiedenen Sourcen als Grundlage.
Hallo Rainer, da gebe ich Dir recht. Irgendwie müssen wir versuchen, uns selbst zu organisieren und zu koordinieren.

All zuviel Arbeit habe ich noch nicht reingesteckt, weil ich weiß, dass Du auch daran arbeitest.
Es ging mir vielmehr um einen funktionierenden TV-Treiber mit deutscher Tastenbelegung für weitere Tests. Drohne hat freundlicherweise die passenden Sourcen hochgeladen.

Mir ist daran gelegen, die TV-Schnittstelle nicht zu vernachlässigen, da ich davon ausgehe, dass wir zukünftig noch mehrere Treiber für diverse Bildformate, insbesondere für LCDs hinzubekommen.

Mit VGA und TV kann man seine Anwendungen zumindest schonmal auf Kompatibilität mit unterschiedlichen Text-Modes testen.

Ich habe die letzten offiziellen Sourcen verwendet, welche bereits die Abfrage der laufenden Cogs enthält.
Rainer hat geschrieben:Deine Änderungen werden definitiv zumindestens in meinem Source nicht laufen, da ich zwar die Auflösung abfrage, aber noch keinerlei speziellen Routinen für TV drin habe. Ob die Änderungen in den Funktionsaufrufen der Cursorposition mit meinen collidieren weiß ich jetzt noch nicht, für die Sondertasten zur Cursorsteuerung habe ich schon eine eigene Lösung.

Ich bin gerade dabei, ladbare Fonts zu integrieren ... was das IOS und damit das Bel-Bios verändert, ich kann Farb-Paletten übergeben (wenn z.B. jemand lieber mit grüner Schrift auf schwarzen Hintergrund arbeiten will), was das IOS geändert hat, ich habe zig Benutzerdefinierte Zeichen, was das Bel-Bios geändert hat, kann Bildschirmkopien auf SD schreiben mit der [DRUCK]-Taste ... was das IOS und Bel-Bios geändert hat, ich habe eine einfache GUI (z.B. Message-Boxen und so Sachen), die das IOS und das Bel-Bios geändert haben,usw.
Na, da höre ich aber das gesamte Kollektiv schon mit den Hufen scharren. ;) Wirst Du in nächster Zeit eine Preview veröffentlichen?
Ich würde es gerne testen, selbst wenn noch nicht alle Features, die Du geplant hast, integriert sind.
Wie gesagt, ich habe in die Version noch nicht viel Arbeit reingesteckt, aber ich weiß jetzt, dass man die Treiber für VGA und TV zusammenführen kann.
Rainer hat geschrieben:Entweder habe jetzt ich umsonst gearbeitet, oder Du ... beides ist nicht zufriedenstellend. Zwei komplett verschiedene Sourcen (vll. sogar 3 wenn drohne was gemacht hat) zu konsolidieren kann ziemlich schwierig werden.
Garantiert war Deine Arbeit nicht umsonst, da Du ja schon an neuen Features arbeitest. Da habe ich mich komplett rausgehalten.
Vielleicht könntest Du gelegentlich einen Zwischenstand posten, dann kann man schon mal testen und sich darauf einstellen. Vielleicht hilft es ja, sich zu koordinieren.
Rainer hat geschrieben:Du siehst, wir arbeiten aneinander vorbei.
Zum Teil tun wir das vielleicht, für mich zählt es aber noch zur Lernphase. Ich denke, dass im Moment alle erstmal etwas herumspielen.
Benutzeravatar
Rainer
Beiträge: 510
Registriert: Fr 29. Mai 2009, 16:11

Re: TV + VGA BIOS (Bellatrix)

Beitrag von Rainer »

Umm .. mein Text kam ein bißchen blöd rüber, sorry.

Du sollst Dich natürlich NICHT aus irgendwelchen Erweiterungen an Regime raushalten. Ich wollte nur darauf hinweisen, daß es ab einem gewissen Grad einfacher wird, alles neu zu schreiben als zig verschiedene Sourcen zu konsolidieren ;)

Ich will halt nur nicht, daß einer von uns beiden für den Mülleimer arbeitet ... natürlich heißt das nicht, daß ich irgendjemanden aufhalten will.

Nebenbei: Nachladbare Fonts sind schon eine harte Nuss ;)

drohne235 wird definitiv eine Träne im Auge haben wenn er sein Regime sieht (ob vor Glück oder Wut werden wir dann noch sehen *hehe*)
Mit dem Hive-Logo sieht es total geil aus .. noch dazu, weil ich jetzt den Schreibcursor auf die unterste Zeile gesetzt habe (wie man es halt von DOS her kennt).
Wenn ich Zeit habe stelle ich später mal einen Screenshot rein.

Lass' mich den Source noch weiter bearbeiten und vor allen Dingen dokumentieren.
Ich werde Dir auf alle Fälle was zukommen lassen damit Du testen kannst .. schätze irgendwann morgen.

Gruß.
Rainer
"Wer andauernd begreift, was er tut, bleibt unter seinem Niveau."
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: TV + VGA BIOS (Bellatrix)

Beitrag von drohne235 »

Super wäre noch ein Programm wie "beltest", welches die Grundfunktionen durchtestet. Damit hat man gleich einen Democode um zu schauen wie die Funktionen genutzt werden und kann Änderungen und neue Treiber gleich auf Kompatibilität abklopfen.

Ich selbst programmiere momentan nicht an TriOS/Regime, schreibe momentan ein Tutorial wie man von Null ein einfaches Betriebssystem selbst schreibt. Neben Regime steht bei mir Rainer auf dem Notizzettel... :) Ich hatte zwar mal zwischenzeitlich noch schnell Joker für das DIR-Kommando eingebaut, weil ich das irgendwie langsam brauche bei den vielen Dateien, aber das sind winzige Hacks die sich nicht lohnen weiter zu beachten.

Vielleicht machen wir mal eine Revision der TriOS-Dateien wenn Rainer mit Regime soweit ist und dann können wir ja mal gemeinsam schauen wie das im Repository ausschaut.
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
Rainer
Beiträge: 510
Registriert: Fr 29. Mai 2009, 16:11

Re: TV + VGA BIOS (Bellatrix)

Beitrag von Rainer »

drohne235 hat geschrieben: Ich selbst programmiere momentan nicht an TriOS/Regime, schreibe momentan ein Tutorial wie man von Null ein einfaches Betriebssystem selbst schreibt. Neben Regime steht bei mir Rainer auf dem Notizzettel... :) Ich hatte zwar mal zwischenzeitlich noch schnell Joker für das DIR-Kommando eingebaut, weil ich das irgendwie langsam brauche bei den vielen Dateien, aber das sind winzige Hacks die sich nicht lohnen weiter zu beachten.

Vielleicht machen wir mal eine Revision der TriOS-Dateien wenn Rainer mit Regime soweit ist und dann können wir ja mal gemeinsam schauen wie das im Repository ausschaut.
Hehe ... jaja, die Joker :)
Ich hatte einen Fehler in der Routine für Regime .... wollte mal kurz testen ob die Batch-Dateiverararbeitung mit Jokern auch funktioniert ... "del *.tst" in die Batchdatei ... und schon war die SD leer *lol*
Irgendwie hat die Abfrage nach "tst" nicht gegriffen. War wirklich Zufall das ich da drauf gekommen bin, da es nämlich in Regime selber funktioniert.
Seitdem teste ich alles erst 10mal .. will ja nicht exkommuniziert werden vom Kollektiv.
Außerdem hat digger meine Adresse ... und wenn ich von den Fotos ausgehe, ist er mir körperlich weit überlegen .... sind ja schon Leute in RL verprügelt worden, weil sie ein virtuelles Schwert in einem Onlinegame nicht mehr zurückgegeben haben ;)
drohne235 hat geschrieben:Super wäre noch ein Programm wie "beltest", welches die Grundfunktionen durchtestet. Damit hat man gleich einen Democode um zu schauen wie die Funktionen genutzt werden und kann Änderungen und neue Treiber gleich auf Kompatibilität abklopfen.
Apropos Testcode:
Ich hatte die Idee den Bel-Loader so zu verändern, daß er 1. was anzeigt, auch wenn er keine Treiber kriegt (großes Hive-Logo und "Waiting for gfx driver") und 2. mit einem Tastendruck in einen Testmodus geschalten werden kann. Ich habe da so einen lustigen Code für einen Echtzeit-Logikanalyzer mit dem ich am Bus (Adress/Daten) schnüffeln könnte, außerdem rudimentäre Tests für Maus und Keyboard.
Leider habe ich damit zu früh angefangen, ohne mir den Code des Loaders wirklich gründlich anzusehen. Jetzt habe ich das Problem, daß Du ja 32 kB für den Treiber reservierst (was ja auch logisch ist). An der Hürde scheitere ich aber jämmerlich. Mein Code darf und SOLL ja mit dem nachgeladenen Treiber überschrieben werden .. leider lässt mich das Prop-Tool gar nicht erst kompilieren, da zu viel Variablenspace belegt ist.
Irgendeine Idee wie ich das lösen könnte ?

Das angehängte Bild ist mein bisheriger Versuch.


Gruß.
Rainer
Dateianhänge
loader.jpg
loader.jpg (9.99 KiB) 10636 mal betrachtet
"Wer andauernd begreift, was er tut, bleibt unter seinem Niveau."
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: TV + VGA BIOS (Bellatrix)

Beitrag von drohne235 »

will ja nicht exkommuniziert werden vom Kollektiv
Nicht exkommuniziert, bei uns wird der Fehlerdämon mit einem Exorzisten augetrieben - danach bist du eine ganz neue drohne! :twisted:
Ich hatte die Idee den Bel-Loader so zu verändern, daß er 1. was anzeigt, auch wenn er keine Treiber kriegt
Find ich gut die Idee. Ist natürlich schwierig sich da in den Loader reinzuschummeln, ohne den Loadercode zu sehr aufzublähen - wir brauchen ja so viel wie möglich Speicher letztlich für den Treiber selbst. Also ohne fiese Tricks fällt mir da spontan nix ein, aber kann ja noch werden.

An sich kann man ja schon Code aus dem EEProm in den Heap nachladen und in einer extra COG starten, aber das erfordert halt auch erstmal zusätzlichen Code im Loader, oder man verlagert den Loader komplett als Maschinencode in eine COG - dann könnte man den HubRAM löschen und komplett selbst verwalten. Das ist aber erstmal kein Feierabend-Code... :mrgreen:
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
Rainer
Beiträge: 510
Registriert: Fr 29. Mai 2009, 16:11

Re: TV + VGA BIOS (Bellatrix)

Beitrag von Rainer »

Hmm .. kann man die Variable "heap" nicht einfach deklarieren, ohne eine definierte Länge von 32kB ?
Nur damit man den Startbereich hat und dann einfach von da aus aufsteigend den Treiber reinlädt ?
Weil dann wäre es nämlich egal wie groß der Loader ist .. er killt alles bis auf seine eigene Cog um weiterzulauschen .. den Startbildschirm mit der Diagnose braucht man ja nur bei einem Kaltstart (oder man macht einfach einen).

Hier ist übrigens ein Bild vom Scope das ich einsetzen will .... wenn man den Ramtest laufen lässt, gehts ganz schön ab am Bus *hehe*

Gruß.
Rainer
Dateianhänge
scope.jpg
"Wer andauernd begreift, was er tut, bleibt unter seinem Niveau."
Benutzeravatar
oog
Beiträge: 103
Registriert: Do 30. Jul 2009, 14:12
Kontaktdaten:

Re: TV + VGA BIOS (Bellatrix)

Beitrag von oog »

Rainer hat geschrieben:Umm .. mein Text kam ein bißchen blöd rüber, sorry.
Haha, nee. Wenn ich sehe, welchen Aufwand Du treibst, ist ja klar, wessen bisschen Code man wo reinfrickeln muss. Ich habe ja nur vorhandene Schippsel zusammengeschnippelt. Das würde ich sicher auch in einem anderen Quellcode hinbekommen. :geek:
Rainer hat geschrieben:wollte mal kurz testen ob die Batch-Dateiverararbeitung mit Jokern auch funktioniert
Du hast schon eine Batch-Verarbeitung drin? Das ist ja genial. Bin schon sehr gespannt auf die Testversion.
Ist schon erstaunlich, was Du noch alles so aus dem Ärmel zauberst.
Auch das Startbild finde ich klasse...tolle Arbeit. :D
Benutzeravatar
Rainer
Beiträge: 510
Registriert: Fr 29. Mai 2009, 16:11

Re: TV + VGA BIOS (Bellatrix)

Beitrag von Rainer »

Na, Batchverarbeitung wird erst interessant, wenn man mit Verzweigungen, if-Konstrukten und Errorleveln arbeiten kann.
Soweit bin ich noch nicht damit. Aber alles was man in Regime eingeben kann, kann man auch im Batch verwenden.
Im Moment liest er einfach jede Textzeile in einer Textdatei ("autoexec.bat" beim Start z.B.) und übergibt das dem ohnehin vorhandenen Parser in Regime.
Wenn ich z.B. mit "goto Label" arbeiten wollte, müsste ich aber die ganze Datei auf einmal einlesen und verarbeiten damit ich Sprungmarken usw. überhaupt lokalisieren kann... das hebe ich mir mal für später auf ;)

Macht aber trotz Einschränkungen jetzt schon Sinn, da man beim Start ja einiges abarbeiten lassen kann und sich das Eingeben spart.

Gruß.
Rainer
"Wer andauernd begreift, was er tut, bleibt unter seinem Niveau."
Antworten