keyboard-de Treiber

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:

Re: keyboard-de Treiber

Beitrag von oog »

Hallo Drohne,

danke für das Update.
Eine Frage habe ich zur Datei "os-1-bel-bios.spin". Ist das Deine neuere Version oder die von mir geänderte Version aus diesem Thread, wo ich nur den Dateinamen des Tastaturtreibers angepasst habe?

Ich habe mal in den Quelltext gesehen, und auch dort ist der VGA-Treiber fest eingebunden.
Nach dem Kommentar wurde zuletzt folgendes geändert:
22.03.2009 - abfrage für statustasten eingefügt

Falls es hier noch eine neuere Version von Dir gibt, könntest Du sie auch in den Download-Bereich stellen? Ich hoffe, ich nerve nicht. :?

Falls alle Tests positiv verlaufen, müsste die neueste Treiberdatei (keyboard-de.spin vom 05.09.2009) eingebunden werden. Sie enthält diverse Fehlerkorrekturen (u.a. bei der Cursorsteuerung) und unterstützt die Eingabe in Kombination mit AltGr.
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: keyboard-de Treiber

Beitrag von drohne235 »

Eine Frage habe ich zur Datei "os-1-bel-bios.spin". Ist das Deine neuere Version oder die von mir geänderte Version aus diesem Thread, wo ich nur den Dateinamen des Tastaturtreibers angepasst habe?
Ich hab meine aktuelle Version angepasst. Wenn es fertig ist werden wir am besten den Treiber von dir umbenennen, so das wir zwei Tastatur-Dateien haben ( *-en und *-de). Zu deiner BIOS-Version müsste es einen kleinen Unterschied geben: Mit der Funktionssequenz 0/5 kann man Rainers Routine zur Agfrage der laufenden COG's aufrufen. Ich glaub ich muss da mal ein bisschen ordentlicher werden :roll: und das immer gleich im Log dokumentieren, sonst haben wir bald Chaos.

Wenn du soweit ok gibst tauschen wir den bestehenden Treiber einfach aus und bleiben dann bei dem alten Namen denk ich.
"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
Opreuss
Beiträge: 59
Registriert: Do 28. Mai 2009, 18:09

Re: keyboard-de Treiber

Beitrag von Opreuss »

Hallo oog,

ich habe gerade Deine Keyboard-Tabelle in Regime V. 0.2 von Rainer eingebaut. Bei mir Funktioniert es sehr gut. Bisher konnte ich keine Fehler oder Inkompatibilitäten entdecken.

Danke,

Oliver
Am Anfang schuf Gott /dev/null und /dev/random. Und die /dev/random war wüst und leer, und es war finster...
Benutzeravatar
Rainer
Beiträge: 510
Registriert: Fr 29. Mai 2009, 16:11

Re: keyboard-de Treiber

Beitrag von Rainer »

Opreuss hat geschrieben:Hallo oog,

ich habe gerade Deine Keyboard-Tabelle in Regime V. 0.2 von Rainer eingebaut. Bei mir Funktioniert es sehr gut. Bisher konnte ich keine Fehler oder Inkompatibilitäten entdecken.

Danke,

Oliver
Sehr gut .. das spart mir Arbeit :)
Stell' das Ding online wenn Du fertig bist .. ich arbeite das dann ein und dokumentiere das dann.

Gruß.
Rainer
"Wer andauernd begreift, was er tut, bleibt unter seinem Niveau."
Opreuss
Beiträge: 59
Registriert: Do 28. Mai 2009, 18:09

Re: keyboard-de Treiber

Beitrag von Opreuss »

Hallo Rainer,

ich habe dabei lediglich in Deiner Datei "os-1-bel-bios.spin" den Verweis auf die Keyboardtabelle geändert:

OBJ

vga : "os-1-bel-vga1024"
keyb : "Keyboard-de" ' neue Keyboardtabelle




Oliver
Am Anfang schuf Gott /dev/null und /dev/random. Und die /dev/random war wüst und leer, und es war finster...
Benutzeravatar
oog
Beiträge: 103
Registriert: Do 30. Jul 2009, 14:12
Kontaktdaten:

Re: keyboard-de Treiber

Beitrag von oog »

Es gibt wieder etwas Neues. :)

Der Treiber von Parallax verwendet leider Steuercodes, die im Konflikt mit der deutschen Tastenbelegung stehen. :shock:

Daher musste ich einige Codes ändern (z.B. Caps-, Num- und Scr-Lock), die aber wohl kaum je von Programmen genutzt wurden.

Anders sieht es bei der Cursorsteuerung aus.
Hier gibt es einen Konflikt zwischen den Tasten "Ä" und "Pos1". In beiden Fällen liefert der Tastaturtreiber die gleichen Werte zurück, so dass ein Programm nicht unterscheiden kann, welche der beiden Tasten gedrückt wurde. :?

Dies liegt daran, dass Parallax für die Steuertasten die Codes $C0-$CF verwendet hat, welche im Bereich der nationalen Sonderzeichen liegt. (Genaue Belegung siehe Keyboard-de.spin).

Als Alternative habe ich mir "Easy codes" überlegt, deren Funktion durch ein passendes Symbol aus dem Zeichensatz dargestellt wird, z.B. "Pfeil Links" für "Cursor Links". ;)

Nachteil dabei ist, dass Programme, welche die Steuercodes nutzen, an die neuen Codes angepasst werden müssen.
Dies ist aber unvermeidbar, wenn man die deutsche Tastatur benutzen will, da Parallax die Cursor-Steuercodes in für nationale Tastaturlayouts ungünstige Bereiche gelegt hat.


Der vorliegende Treiber wurde von mir so gestaltet, dass beide Varianten implementiert sind. Die Steuercodes sind vorne im Programm als Konstante definiert. Durch Auskommentieren der nicht gewünschten Belegung kann man selber entscheiden, ob man die Parallax-Codes oder die Easy-Codes verwenden will. :!:

Ich empfehle die Verwendung der Easy-Codes, sonst funktioniert die Pos1-Taste nicht.


Zum Testen habe ich zwei Programme beigelegt:

keytype
Einfach auf den Bildschirm schreiben, Cursor ist steuerbar.
Version für den alten Tastaturtreiber.

keyeasy
Einfach auf den Bildschirm schreiben, Cursor ist steuerbar.
Version für den neuen Tastaturtreiber mit Easy-Codes.
(Foto)


Beim Einbinden des Tastaturtreibers in das Hive-OS habe ich wahrscheinlich einen Denkfehler.

Ich binde den Treiber ein in "os-1-bel-bios-de.spin" und flashe ihn in Bellatrix.
Der Treiber ist etwa 5K groß, das Bellatrix-BIOS aus "startdateien-05-06-2009-kr" hat jedoch nur 1K.

Zwar läuft Hive-OS, jedoch kommt es beim Start von Programmen, z.B. "stplay" zu Problemen bei der Bildausgabe (Foto).

Was mache ich falsch?
Dateianhänge
Keyboard-de.spin
Treiber als Source
(92.58 KiB) 487-mal heruntergeladen
keytype.spin
Programm als Source
(2.31 KiB) 481-mal heruntergeladen
keytype.bin
Programm als Bin, kann direkt auf die SD-Card kopiert werden
(2.7 KiB) 476-mal heruntergeladen
keyeasy.spin
Programm als Source
(2.12 KiB) 481-mal heruntergeladen
keyeasy.bin
Programm als Bin, kann direkt auf die SD-Card kopiert werden
(2.7 KiB) 480-mal heruntergeladen
Hive mit deutschem Tastaturtreiber
Hive mit deutschem Tastaturtreiber
Problem beim Start von stplay
Problem beim Start von stplay
Benutzeravatar
oog
Beiträge: 103
Registriert: Do 30. Jul 2009, 14:12
Kontaktdaten:

Re: keyboard-de Treiber

Beitrag von oog »

In der Dokumentation (readme.rtf in "startdateien-05-06-2009-kr") habe ich nützliche Hinweise gefunden, die aber weitere Fragen aufwerfen.

1. Das Bellatrix BIOS müsste ich gar nicht ändern und neu flashen, denn es lädt nach dem Reset die Datei "vid.bin" in Bellatrix, hinter welcher sich die Datei vga.bin oder tv.bin verbirgt.

2. Also muss ich den Tastaturtreiber in vga.bin und tv.bin integrieren?

3. Wo finde ich dann die Sourcen um eine vga.bin und eine tv.bin zu kompilieren?


Bei Erstellung der Testprogramme habe ich Funktionen zur Ermittlung der Displaygröße (z.B. GetCharMaxX, GetCharMaxY) vermisst.
Im Programm rufe ich für die Taste "Ende" die Funktion ios.cursetx(-1) mit dem Parameter -1 auf, was aber nicht zum gewünschten Ergebnis führt. Der Cursor springt dann zum Ende der nächsten oder übernächsten Zeile.
Eigentlich will ich so etwas machen

Code: Alles auswählen

ios.cursetx(ios.GetCharMaxX)   'Set cursor to end of line
um zum Ende der Zeile zu springen.
Benutzeravatar
Rainer
Beiträge: 510
Registriert: Fr 29. Mai 2009, 16:11

Re: keyboard-de Treiber

Beitrag von Rainer »

oog hat geschrieben:In der Dokumentation (readme.rtf in "startdateien-05-06-2009-kr") habe ich nützliche Hinweise gefunden, die aber weitere Fragen aufwerfen.

1. Das Bellatrix BIOS müsste ich gar nicht ändern und neu flashen, denn es lädt nach dem Reset die Datei "vid.bin" in Bellatrix, hinter welcher sich die Datei vga.bin oder tv.bin verbirgt.

2. Also muss ich den Tastaturtreiber in vga.bin und tv.bin integrieren?

3. Wo finde ich dann die Sourcen um eine vga.bin und eine tv.bin zu kompilieren?
"vid.bin" ist die Spin-Datei "os-1-bel-vga.spin"
oog hat geschrieben: Bei Erstellung der Testprogramme habe ich Funktionen zur Ermittlung der Displaygröße (z.B. GetCharMaxX, GetCharMaxY) vermisst.
Im Programm rufe ich für die Taste "Ende" die Funktion ios.cursetx(-1) mit dem Parameter -1 auf, was aber nicht zum gewünschten Ergebnis führt. Der Cursor springt dann zum Ende der nächsten oder übernächsten Zeile.
Eigentlich will ich so etwas machen

Code: Alles auswählen

ios.cursetx(ios.GetCharMaxX)   'Set cursor to end of line
um zum Ende der Zeile zu springen.
Genau das Problem habe ich auch immer. Darum liefere ich immer auch noch den Video-Treiber zu den jeweiligen Programmen mit, da die IMMER geändert sind.
Bei SFX-Helper z.B. habe ich einen komplett angepasste Zeichensätze, übermittle eigene Tastencodes um die Regler zu Steuern, usw.
Wenn ich da den Standard-Treiber verwenden würde, könnte ich die Funktionen nicht nutzen.
Das ist aber kein großes Problem, das drohne235 ja zum Glück die Nachladbarkeit des Bildschirmtreibers vorgesehen hat.

Eine ganz andere Baustelle ist da Regime. Das ist ja sozusagen das "Standardwerk", das jeder benutzt. Da kann man nicht mal einfach was ändern, da die anderen beiden Propeller von gewissen Vorraussetzungen ausgehen.... da läuft hinterher nichts mehr.
Darum verzögert sich auch meine Änderungen an Regime so stark. Um das zu machen was ich will, richte ich immense Kollateralschäden an. Regime hat mittlerweile die Version 0.5 bei mir und hat diverse Änderungen im IOS nach sich gezogen. z.B. kann ich Farbpaletten übergeben, Font ändern, es ist eine kleine "Text-Gui" integriert, ich kann eine RAM-Disk anlegen, Dateien vom PC up/downloaden (sozusagen ein "FTP over RS232" .. bedingt aber ein Programm auf dem PC, das den Server mimt), usw.
Das alles zu dokumentieren und im Forum zu kommunizieren ist mir ehrlich gesagt im Moment zu viel.

Das Problem mit der aktuellen Bildschirmauflösung hatte ich auch .. habe das mit einer neuen IOS-Abfrage gelöst ... nur der aktuelle Bildschirmtreiber muß natürlich eine Ahnung davon haben, was ich eigentlich von ihm will. Das wiederum heißt, eine neue "vid.bin" muß verteilt werden .... ist mir irgendwie im Moment zu viel Stress.

Wir sollten die ganzen "Versionen" von Regime mal unter drohne235's Kontrolle konsolidieren und dann als "Betriebsversion Version xxx" offiziell machen, sonst hat das alles keinen Sinn.
Ich kann ja nicht einfach hergehen und sagen, "so, hier ist Regime 1.0 + neues Bel-IOS + neues Adm-IOS .. jetzt flashed mal alle schön".

Gruß.
Rainer

P.s.: Laut Deinem Bild nutzt Du eine alte Version von Regime, wenn die Versionsnummer stimmt. Ich weiß nicht ob drohne235 da was integriert hat oder ob das die "Startversion" ist.
Das mit dem Startracker muß was anderes sein .. der benutzt ja einen eigenen Bildschirmtreiber, wenn ich richtig informiert bin (stvga.spin)
"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: keyboard-de Treiber

Beitrag von drohne235 »

Ich hab grad den Treiber mit den Easy-Codes eingebunden - eine tolle Sache. Ich muß ja gestehen, das ich zu dem Code von Parallax in seiner Verworrenheit keine wirklich persönliche Beziehung aufbauen konnte. Deshalb gab es halt bisher nur den Behelfstreiber. Aber schön das sich jemand mit Durchstehvermögen der Sache angenommen hat, das spart uns jetzt allen enorm viel Zeit.

Zu der Sache mit dem StarTracker: Die Ursache für die seltsamen Bildausgaben ist, das du direkt das Bios in den Flash gespeichert hast. Naja, eigentlich ist das auch logisch ;) und früher war das auch so. In der ersten Version des Systems wurde wirklich aus jedem EEProm quasi sein gesamter Code geladen. Aber bei der Grafik/Bellatrix erschien mir das nicht wirklich flexibel genug, denn man müsste ja ein sehr universelles und auch perfektes BIOS programmieren. Diese BIOS müsste dann alle Text- und Grafikmodis beherrschen, wenn man dann ein Änderung vornimmt kann es vorkommen, das man an vielen Programmen auch wieder Änderungen machen muss.
Deshalb dachte ich mir, es wäre doch praktisch, wenn die komplette Bellatrix-Software beim Starten des Rechners und wärend der Laufzeit einfach von SD-Card geladen werden kann. Und genau so läuft das jetzt auch: Das Bios wird nicht mehr in den EEProm geflasht, sondern einfach unter einem bestimmten Namen als BIN-Datei auf dem Laufwerk gespeichert. In den EEProm kommt adfür ein kleiner Loader (os-1-bel-loader.spin), welcher bei Reset gestartet wird und auf die Übertragung des eigentlichen "BIOS" von Regnatix wartet. Auf dem Laufwerk findest du folgende BIOS-Versionen:

vga.bin - BIOS für die VGA-Ausgabe
htext.bin - VGA-BIOS für hohe Auflösung
tv.bin - BIOS für die TV-Ausgabe
vid.bin - Dieses BIOS wird automatisch beim Systemstart geladen. Man kopiert also je nach Bedarf ein beliebiges BIOS in diese Datei, und der entsprechende Grafikmodus wird beim Start aktiviert. Wenn du also standartmäßig einen TV und keinen VGA am Hive angeschlossen hast, so speicherst du einfach tv.bin in der Datei vid.bin - und schon wird nach einem Reset automatisch der TV-Modus aktiviert.

Was ist nun in deinem Fall passiert? Im EEProm war nicht der Loader, sondern direkt das BIOS. Der StarTracker aber bringt seinen eigenen Treiber mit. Dieser Treiber enthält einige zusätzliche Funktionen um die LARCS-Oberfläche darzustellen. Nach dem starten des Programms überträgt er diesen Treiber - oder versucht es zumindest, was ja in deinem Fall nicht funktioniert. Die Bereich die du jetzt auf dem Screen "wackeln" siehst, sind genau diese speziellen Funktionsaufrufe, welche der Player tätigt, um den Bildschirm zu aktualisieren - also die Aussteuerungsbalken usw.

Der Loader selbst ist natürlich ein winziger Code, weshalb die Datei nur 1K groß ist. Also einfach den Loader in den EEProm flashen und das BIOS als vga.bin und vid.bin auf dem Medium speichern, dann funktioniert es wieder perfekt.
"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
oog
Beiträge: 103
Registriert: Do 30. Jul 2009, 14:12
Kontaktdaten:

Re: keyboard-de Treiber

Beitrag von oog »

Danke für die Tipps.

Ich habe Bellatrix jetzt mit dem Loader geflasht und das Bellatrix BIOS (bei mir die Datei "os-1-bel-bios-de.binary") als vga-de.bin und als vid.bin auf die SD-Karte kopiert. Nun bootet der Hive mit dem Grafiktreiber von SD-Karte und der Aufruf des Startrackers (stplay) funktioniert nun auch einwandfrei.

Kleine Beobachtung am Rande:
Nach dem Beenden des Startrackers ist die alte Tastaturbelegung aktiv. Vielleicht lädt er "vga.bin" beim Beenden in Bellatrix anstatt "vid.bin".
Nach der Eingabe des Kommandos "reboot" ist wieder die deutsche Tastenbelegung aktiv.

Den Tastaturtreiber in Verbindung mit einem Ziffernblock konnte ich noch nicht testen, da ich nur eine kleine Mini-Tastatur angeschlossen habe.
Nach den Tests mit "keycode" und "keyeasy" bin ich mit dem Ergebnis ganz zufrieden und hätte momentan nichts mehr zu ändern. Ich würde den Treiber damit vom Alpha- in den Beta-Status erheben und - falls er sich auch bei Euch im Test bewährt - zur Aufnahme in den Kernel empfehlen. Den äteren "*-de-s" Treiber würde ich aus den Quellen wieder entfernen, damit es nicht zu Verwechslungen kommt.
Ich schlage vor, dass Drohne bei der Übernahme in die offiziellen Quellen einen passenden Dateinamen vergibt.

@Rainer:
Danke für die Tipps mit "vid.bin".
Ich habe mich erst mal auf die Programmierung gestürzt, anstatt alle Dokumente zu lesen. Dein Tipp brachte den Durchbruch, endlich läuft auch der Startracker wieder.

Bezogen auf die Grafiktreiber wäre es sicher sinnvoll, eine API zu definieren, die auch einige Statusinformationen liefert. Joshi hat ja schon einige LCDs assimiliert. Wenn weitere hinzukommen, müssen sich die Programme wohl daran anpassen.

@Drohne:
Danke für die Erläuterungen.
Das mit dem Bootloader ist wirklich eine geniale und universelle Lösung.

Zu den Bildschirm-Modis noch eine Frage:

Ich würde den Tastaturtreiber gerne auch in tv.bin einbauen, da ich für Tests am Hive einen kleinen Monitor angeschlossen habe.
Kannst Du mir bitte sagen wo ich die Quellen dafür finde?

Die Datei htext.bin habe ich leider auch nicht gefunden. Im Download-File "startdateien-05-06-2009-kr" finde ich nur tv.bin, vid.bin und vga.bin. Vielleicht suche ich an der falschen Stelle.
[Edit: Die Datei htext.bin habe ich gefunden, sie steckt in "sdcard-mini-05-06-2009-kr"]
Antworten