VGA- und TV-Text-Mode vereinheitlicht
VGA- und TV-Text-Mode vereinheitlicht
Hallo zusammen,
im Anhang gibts die aktuelle Version des Bella-Codes, basierend auf Trios r51. Ich habe den VGA- und den TV-Textmodus zusammengeführt. Man wählt per Compile-Schalter, welches Binary erzeugt wird. Ein Umschalten ohne Neuladen des Codes, wie PIC es sich gewünscht hat, wurde nicht realisiert.
Schaut Euch einfach mit dem beltest aus dem Anhang an, was TV- und VGA-Text-Modus können.
Wenn keiner etwas einzuwenden hat, checke ich den Code in die Trios-Code-Verwaltung ein. Dann wird auch das vorhandene tv.bel ersetzt!
Ich brauche aber noch etwas Hilfe:
1. Es gibt noch kein schönes Logo für den TV-Modus. Das war mir zu anstrengend.
2. Die Color-Funktion setzt im TV-Modus auch die Hintergrundfarbe. Auch hier war ich froh, dass die Farbumschaltung überhaupt funktionierte.
3. Die Tab-Funktion ist immer noch dieselbe wie vor 1/2 Jahr: Tabulatoren gelten für alle Screens und alle Windows, wenn auch relativ zu den Fenstergrenzen (Oh - das habe ich nicht getestet!).
Vielleicht nützt der überarbeitete TV-Modus den Freunden des Rückfahrmonitors mit Ambitionen auf einen Hive-Laptop.
Weihnachtliche Grüße vom U-Held
im Anhang gibts die aktuelle Version des Bella-Codes, basierend auf Trios r51. Ich habe den VGA- und den TV-Textmodus zusammengeführt. Man wählt per Compile-Schalter, welches Binary erzeugt wird. Ein Umschalten ohne Neuladen des Codes, wie PIC es sich gewünscht hat, wurde nicht realisiert.
Schaut Euch einfach mit dem beltest aus dem Anhang an, was TV- und VGA-Text-Modus können.
Wenn keiner etwas einzuwenden hat, checke ich den Code in die Trios-Code-Verwaltung ein. Dann wird auch das vorhandene tv.bel ersetzt!
Ich brauche aber noch etwas Hilfe:
1. Es gibt noch kein schönes Logo für den TV-Modus. Das war mir zu anstrengend.
2. Die Color-Funktion setzt im TV-Modus auch die Hintergrundfarbe. Auch hier war ich froh, dass die Farbumschaltung überhaupt funktionierte.
3. Die Tab-Funktion ist immer noch dieselbe wie vor 1/2 Jahr: Tabulatoren gelten für alle Screens und alle Windows, wenn auch relativ zu den Fenstergrenzen (Oh - das habe ich nicht getestet!).
Vielleicht nützt der überarbeitete TV-Modus den Freunden des Rückfahrmonitors mit Ambitionen auf einen Hive-Laptop.
Weihnachtliche Grüße vom U-Held
- Dateianhänge
-
- bellatrix.zip
- zum Übersetzen ist Hive Trios nötig. make.bat evtl. anpassen
- (65.95 KiB) 715-mal heruntergeladen
Re: VGA- und TV-Text-Mode vereinheitlicht
Änderungen sind eingecheckt und grob getestet: Rev. 52. Bitte prüft mal, ob mir noch Fehler unterlaufen sind (bestimmt...).
Grüße vom U-Held
Grüße vom U-Held
- drohne235
- Administrator
- Beiträge: 2284
- Registriert: So 24. Mai 2009, 10:35
- Wohnort: Lutherstadt Wittenberg
- Kontaktdaten:
Re: VGA- und TV-Text-Mode vereinheitlicht
Bin aktuell gerade dabei die neue Version etwas intensiver zu testen. Klasse das die Funktionen für die Fenster schon eine kleine Testroutine in beltest haben!
Erstaunlich wie flott dabei das Scrolling bei drei verschiedenen Fenstern noch ist.
Da zwei der Fenster in der Testroutine rechts und unten über den Bildschirm standen, habe ich die Koordinaten etwas angepasst. Nachher ist mir dann eingefallen, dass diese Überlappung des Bildschirms Absicht sein könnte, um eventuelle Kollisionen oder Abstürze der Scrollfunktion zu testen!? Kann das sein?
Im wesentlichen funktionieren alle Programme korrekt. Einziger Unterschied der mir bisher aufgefallen ist: Die Funktion ios.screeninit funktioniert nicht mehr korrekt. Die Programme können damit ja die obere "Statuszeile" mit einem String oder dem Hive-Logo versehen und es wird zusätzlich die Variable sline gesetzt, um die obere Scrollzeile festzulegen. Wenn ich es richtig gesehen habe, erscheint der String aber jetzt um ein halbes Zeichen nach unten versetzt und wird dann gelöscht. (Habe das einfach mit waitcnt-Befehlen in der ios-Funktion verzögert und beobachtet.) Momentan kann ich aber noch nicht genau sehen, wo genau das Problem entsteht.
Eventuell können wir ios.screeninit auch umgestalten - ist ja irgendwie eine Funktionen, die noch ihre Wurzelm im Hive-Urschlamm hat. Mittlerweile gibt es ja durch die Fenster und verschiedene Screens eine deutlich veränderte Umgebung. Die Idee war eine handliche Funktion um den Screen zu initialisieren für Programme welche Vollscreen laufen. Damals mit einem Statusbereich am oberen Bildschirmrand und einem darunter befindlichen Scrollbereich über die gesamte Screenbreite.
Ansonsten kann ich momentan keine weiteren Differenzen erkennen.

Da zwei der Fenster in der Testroutine rechts und unten über den Bildschirm standen, habe ich die Koordinaten etwas angepasst. Nachher ist mir dann eingefallen, dass diese Überlappung des Bildschirms Absicht sein könnte, um eventuelle Kollisionen oder Abstürze der Scrollfunktion zu testen!? Kann das sein?
Im wesentlichen funktionieren alle Programme korrekt. Einziger Unterschied der mir bisher aufgefallen ist: Die Funktion ios.screeninit funktioniert nicht mehr korrekt. Die Programme können damit ja die obere "Statuszeile" mit einem String oder dem Hive-Logo versehen und es wird zusätzlich die Variable sline gesetzt, um die obere Scrollzeile festzulegen. Wenn ich es richtig gesehen habe, erscheint der String aber jetzt um ein halbes Zeichen nach unten versetzt und wird dann gelöscht. (Habe das einfach mit waitcnt-Befehlen in der ios-Funktion verzögert und beobachtet.) Momentan kann ich aber noch nicht genau sehen, wo genau das Problem entsteht.
Eventuell können wir ios.screeninit auch umgestalten - ist ja irgendwie eine Funktionen, die noch ihre Wurzelm im Hive-Urschlamm hat. Mittlerweile gibt es ja durch die Fenster und verschiedene Screens eine deutlich veränderte Umgebung. Die Idee war eine handliche Funktion um den Screen zu initialisieren für Programme welche Vollscreen laufen. Damals mit einem Statusbereich am oberen Bildschirmrand und einem darunter befindlichen Scrollbereich über die gesamte Screenbreite.
Ansonsten kann ich momentan keine weiteren Differenzen erkennen.

"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
Re: VGA- und TV-Text-Mode vereinheitlicht
Hallo drohne235!
Meine Idee war, auf dem kleinen TV-Bildschirm die Logo-Zeile wegzulassen. Wenn die Zeile wieder da sein soll, muss in belf-tv.spin die Konstante DEFAULT_Y0 auf 1 gesetzt werden.
Der Bug in print_logo (Verschiebung um 1/2 Zeile) ist unabhängig davon zu beheben.
Wer macht's? Du oder ich?
Grüße vom U-Held
Sieht zwar hässlich aus, war aber Absicht. Anfangs waren noch mehrere 1-daneben-Fehler enthalten, wodurch der eigentlich unsichtbare rechte Rand am linken Bildschirmende und der unsichtbare untere Rand auf dem nächsten Screen angezeigt wurden.drohne235 hat geschrieben:Da zwei der Fenster in der Testroutine rechts und unten über den Bildschirm standen, habe ich die Koordinaten etwas angepasst. Nachher ist mir dann eingefallen, dass diese Überlappung des Bildschirms Absicht sein könnte, um eventuelle Kollisionen oder Abstürze der Scrollfunktion zu testen!? Kann das sein?
...Na super. Und ich hab's nicht gemerkt.drohne235 hat geschrieben:Die Funktion ios.screeninit funktioniert nicht mehr korrekt.
Gut. Ich werde mal nach der Fehlerursache suchen. Wo hast Du die Waits eingefügt? Wie hast Du getestet?drohne235 hat geschrieben:Die Programme können damit ja die obere "Statuszeile" mit einem String oder dem Hive-Logo versehen und es wird zusätzlich die Variable sline gesetzt, um die obere Scrollzeile festzulegen. Wenn ich es richtig gesehen habe, erscheint der String aber jetzt um ein halbes Zeichen nach unten versetzt und wird dann gelöscht. (Habe das einfach mit waitcnt-Befehlen in der ios-Funktion verzögert und beobachtet.) Momentan kann ich aber noch nicht genau sehen, wo genau das Problem entsteht.
Meine Idee war, auf dem kleinen TV-Bildschirm die Logo-Zeile wegzulassen. Wenn die Zeile wieder da sein soll, muss in belf-tv.spin die Konstante DEFAULT_Y0 auf 1 gesetzt werden.
screen_init (in belflash) soll z.Z. alle Windows von Screen i (=Parameter) auf Standardgröße setzen, Window 1 wählen, den gesamten Screen löschen und den Cursor anschalten und auf Home-Position setzen. screeninit (in reg.ios) ruft erst print_logo auf und dann curhome. Das ist im TV-Modus ungünstig, wo Window 1 den gesamten Bildschirm belegt. Print_logo schreibt immer in Window 0 (absolute Position). Screeninit muss dann herausfinden, welche Zeile in Window 1 der 2. Zeile von Window 0 entspricht. Genau auf den Anfang dieser Zeile ist der Cursor zu setzen.drohne235 hat geschrieben:Eventuell können wir ios.screeninit auch umgestalten - ist ja irgendwie eine Funktionen, die noch ihre Wurzelm im Hive-Urschlamm hat. Mittlerweile gibt es ja durch die Fenster und verschiedene Screens eine deutlich veränderte Umgebung. Die Idee war eine handliche Funktion um den Screen zu initialisieren für Programme welche Vollscreen laufen. Damals mit einem Statusbereich am oberen Bildschirmrand und einem darunter befindlichen Scrollbereich über die gesamte Screenbreite.
Der Bug in print_logo (Verschiebung um 1/2 Zeile) ist unabhängig davon zu beheben.
Wer macht's? Du oder ich?
Grüße vom U-Held
- drohne235
- Administrator
- Beiträge: 2284
- Registriert: So 24. Mai 2009, 10:35
- Wohnort: Lutherstadt Wittenberg
- Kontaktdaten:
Re: VGA- und TV-Text-Mode vereinheitlicht
Na jetzt mal ehrlich: bei so einer masiven Änderung wie mit den Fensterroutinen ist doch so ein winziger Fehler absolut super. Ich hab da immer mehr Bugs drin......Na super. Und ich hab's nicht gemerkt.

Ist ja auch keine lebenswichtige Funktion, fällt kaum auf.
Hab in der ios.screeninit die Warteschleifen eingebaut:Wo hast Du die Waits eingefügt? Wie hast Du getestet?
Code: Alles auswählen
PUB screeninit(stradr,n) 'screen: löschen, kopfzeile ausgeben und setzen
{{screeninit(stradr,n) - screen löschen, kopfzeile ausgeben und setzen}}
curoff
printctrl(BEL_SINIT)
if stradr > 0
waitcnt(cnt+clkfreq*3)
print(stradr)
waitcnt(cnt+clkfreq*3)
printnl
else
printnl
printlogo(0,0)
waitcnt(cnt+clkfreq*3)
sline(n)
curhome
curon
ram_wrbyte(0,0,SIFLAG)
Also im ios den Modus abfragen (TV oder VGA?) und nur im VGA-Modus Status und Logo ausgeben? Kann ich einbauen, ist kein Problem.Wer macht's? Du oder 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
- drohne235
- Administrator
- Beiträge: 2284
- Registriert: So 24. Mai 2009, 10:35
- Wohnort: Lutherstadt Wittenberg
- Kontaktdaten:
Re: VGA- und TV-Text-Mode vereinheitlicht
Ich glaube ich hab was relevantes verstellt: Bei der relativen Positionierung (beltest) ist der Punkt bei 1,1 quasi in der zweiten Zeile. Bin mir aber sicher, das es vorer korrekt funktioniert hat. Kannst du mal schauen wie das bei dir aussieht? Hier im Video zu sehen:
http://youtu.be/Dg0iEim40Jw
Den überlappenden Test bauen wir wieder ein, das ist sinnvoll zu testen. Dann sind halt zwei Testphasen in beltest - einmal mit mittigen und einmal mit den Rand überlappenden Fenstern.
http://youtu.be/Dg0iEim40Jw
Den überlappenden Test bauen wir wieder ein, das ist sinnvoll zu testen. Dann sind halt zwei Testphasen in beltest - einmal mit mittigen und einmal mit den Rand überlappenden Fenstern.
"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
- drohne235
- Administrator
- Beiträge: 2284
- Registriert: So 24. Mai 2009, 10:35
- Wohnort: Lutherstadt Wittenberg
- Kontaktdaten:
Re: VGA- und TV-Text-Mode vereinheitlicht
Hab mal beltest mit einem Menü für eine Einzeltestauswahl und die Fenstertests um einen zweiten Part mit Randkollision (wie von dir angedacht) erweitert. Geht schneller bei der Fehlersuche.
- Dateianhänge
-
- beltest.spin
- (29.02 KiB) 718-mal heruntergeladen
"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
Re: VGA- und TV-Text-Mode vereinheitlicht
Hallo!
Es ist aber gar kein Problem, (1,1) in die linke obere Ecke zu setzen. (0,0) würde dann einfach ignoriert oder wie (1,1) interpretiert werden. In belflash.spin aus r52 müsste auf den Zeilen 854 und 867 ein " - 1" ergänzt werden, und aus dem davorstehenden "else" wird "elseif..." (für's Ignorieren - ungetestet):
und
Wird Clipping gewünscht, lässt man das else an beiden Stellen stehen und schreibt (ebenfalls ungetestet):
Grüße vom U-Held
Bei mir (Trios R52) sieht es genauso aus. Das war eine einsame Entscheidung von mir: Ich wollte noch das Feature "negative Positionswerte für Positionierung relativ zur rechten/unteren Kante" einbauen. Bei einem Byte für die Position kommt man aber nur noch von -128 bis +127. Um noch für VGA-Treiber mit 128 Spalten brauchbar zu sein (z.Z. nicht für den Hive portiert), habe ich einfach bei (0,0) angefangen. Und die Berechnung der Position wird auch geringfügig einfacher.drohne235 hat geschrieben:Ich glaube ich hab was relevantes verstellt: Bei der relativen Positionierung (beltest) ist der Punkt bei 1,1 quasi in der zweiten Zeile. Bin mir aber sicher, das es vorer korrekt funktioniert hat. Kannst du mal schauen wie das bei dir aussieht?
Es ist aber gar kein Problem, (1,1) in die linke obere Ecke zu setzen. (0,0) würde dann einfach ignoriert oder wie (1,1) interpretiert werden. In belflash.spin aus r52 müsste auf den Zeilen 854 und 867 ein " - 1" ergänzt werden, und aus dem davorstehenden "else" wird "elseif..." (für's Ignorieren - ungetestet):
Code: Alles auswählen
elseif code > 0
ccol += cx0 - 1
Code: Alles auswählen
elseif code > 0
crow += cy0 - 1
Code: Alles auswählen
ccol += (cx0 - 1) #> 0
- drohne235
- Administrator
- Beiträge: 2284
- Registriert: So 24. Mai 2009, 10:35
- Wohnort: Lutherstadt Wittenberg
- Kontaktdaten:
Re: VGA- und TV-Text-Mode vereinheitlicht
Ist ok, dass lassen wir so. Hab mich nur getäuscht.Bei mir (Trios R52) sieht es genauso aus. Das war eine einsame Entscheidung von mir: Ich wollte noch das Feature "negative Positionswerte für Positionierung relativ zur rechten/unteren Kante" einbauen. Bei einem Byte für die Position kommt man aber nur noch von -128 bis +127. Um noch für VGA-Treiber mit 128 Spalten brauchbar zu sein (z.Z. nicht für den Hive portiert), habe ich einfach bei (0,0) angefangen. Und die Berechnung der Position wird auch geringfügig einfacher.

"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
- drohne235
- Administrator
- Beiträge: 2284
- Registriert: So 24. Mai 2009, 10:35
- Wohnort: Lutherstadt Wittenberg
- Kontaktdaten:
Re: VGA- und TV-Text-Mode vereinheitlicht
Irgendwie blicke ich es gerade nicht: Kann man bel-tv.spin analog zum VGA-Treiber auf sechzehn Farben erweitern?

Aktuell sind acht Farbkombinationen Vordergrund/Hintergrund definiert. Wenn die Tabelle nicht erweitert werden kann, müssen an diversen Stellen (sysconf/beltest) Fallunterscheidungen durchgeführt werden für die korrekte Anzahl Farben.'' tv_colors
''
'' pointer to longs which define colorsets
'' number of longs must be 1..64
'' each long has four 8-bit fields which define colors for 2-bit (four color) pixels
'' first long's bottom color is also used as the screen background color
'' 8-bit color fields are as follows:
'' bits 7..4: chroma data (0..15 = blue..green..red..)*
'' bit 3: controls chroma modulation (0=off, 1=on)
'' bits 2..0: 3-bit luminance level:
'' values 0..1: reserved for sync - don't use
'' values 2..7: valid luminance range, modulation adds/subtracts 1 (beware of 7)
'' value 0 may be modulated to produce a saturated color toggling between levels 1 and 7
"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