TUI programmieren [C]

DOSferatu
DOS-Übermensch
Beiträge: 1189
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Re: TUI programmieren [C]

Beitragvon DOSferatu » Mo 17. Jan 2011, 16:26

Normalerweise kommentiere ich so gut wie gar nicht. Und da ich den in TP eingebauten Assembler benutze, benutze ich sogar normalerweise das Feature, die Befehle durch Semikolon trennen zu können und klatsche soviel wie möglich auf eine Zeile....
Ich habe wie gesagt den obengenannten Pascal-Source nur aus der SWAG (es ist also nicht auf meinem Mist gewachsen) - und habe nicht extra nachgeschaut, wie die VGA-Register heißen und was sie tun. Und ja, ich habe eine vollständige Doku in Buchform zur ET4000 hier - fast DIN A4 groß und 1,5 cm dick und da sind wirklich ALLE BITS ALLER REGISTER drin aufgezählt und erklärt.
Es heißt "ET4000 / W32 Data Book" (also zusätzlich etwas Doku zu der Win32 Version drin) und ist original von Tseng Labs. Das habe ich mal von einem (ehemaligen) Computerfreak geschenkt bekommen.
Und JA - ich hätte jetzt in diesem Buch einzeln nachschauen können, wie die Register heißen und so weiter, aber dachte, Dir reicht erstmal der Code.
Sollte mich irgendwann mal der Hafer stechen, werd ich das Teil mal Seite für Seite aufn Scanner packen und einscannen und dann vielleicht mit nem gescheiten OCR-Programm drübergehen und das ganze Zeugs online stellen...
Die Auszüge, die freecrac gesendet hat, stammen aus "Ralph Brown's Interrupt List" - die enthält ja bekanntlich nicht nur eine Liste der INT-Funktionen, sondern auch Files mit Listen für Ports und "wichtige Speicherstellen" (BIOS-"SpeicherSeite") usw.
freecrac
DOS-Guru
Beiträge: 861
Registriert: Mi 21. Apr 2010, 11:44
Wohnort: Hamburg Horn

Re: TUI programmieren [C]

Beitragvon freecrac » Mo 17. Jan 2011, 18:21

DOSferatu hat geschrieben:Normalerweise kommentiere ich so gut wie gar nicht. Und da ich den in TP eingebauten Assembler benutze, benutze ich sogar normalerweise das Feature, die Befehle durch Semikolon trennen zu können und klatsche soviel wie möglich auf eine Zeile....
Ich habe wie gesagt den obengenannten Pascal-Source nur aus der SWAG (es ist also nicht auf meinem Mist gewachsen) - und habe nicht extra nachgeschaut, wie die VGA-Register heißen und was sie tun. Und ja, ich habe eine vollständige Doku in Buchform zur ET4000 hier - fast DIN A4 groß und 1,5 cm dick und da sind wirklich ALLE BITS ALLER REGISTER drin aufgezählt und erklärt.
Es heißt "ET4000 / W32 Data Book" (also zusätzlich etwas Doku zu der Win32 Version drin) und ist original von Tseng Labs. Das habe ich mal von einem (ehemaligen) Computerfreak geschenkt bekommen.

WOW, das ist super.

Und JA - ich hätte jetzt in diesem Buch einzeln nachschauen können, wie die Register heißen und so weiter, aber dachte, Dir reicht erstmal der Code.
Sollte mich irgendwann mal der Hafer stechen, werd ich das Teil mal Seite für Seite aufn Scanner packen und einscannen und dann vielleicht mit nem gescheiten OCR-Programm drübergehen und das ganze Zeugs online stellen...

Ohne irgendwelche Dokus über die ET4000 zu haben konnte ich die Ports für die Bankumschaltung aus dem Bios auslesen, in dem ich die dortige Routine dafür durchsuchte.
Diese Ports für die Bankumschaltung habe ich mir gemerkt Port: 3CDh und für höhere Banknummer(von der W32) Port 3CBh.

Dirk
Benutzeravatar
oDOSseus
LAN Manager
Beiträge: 241
Registriert: Di 10. Aug 2010, 15:21

Re: TUI programmieren [C]

Beitragvon oDOSseus » Mo 17. Jan 2011, 20:12

hat jemand einen vorschlag für ein 8x8 Piktogramm einer Festplatte oder irgendeinem, dass ein Laufwerk darstellt?
meiner wäre jetzt:

Code: Alles auswählen


XXXXXXXX
X      X
X XXXX X
XXXXXXXX
X XXXX X
X      X
XXXXXXXX
Benutzeravatar
oDOSseus
LAN Manager
Beiträge: 241
Registriert: Di 10. Aug 2010, 15:21

Re: TUI programmieren [C]

Beitragvon oDOSseus » So 6. Feb 2011, 10:19

Ich hänge grad so ein bisschen fest.
Mitlerweile klappen alle einzelteile.
Aber wie soll ich das mit den überlappenden Fenstern machen?
ich habe in jedem ELEMENT object (Alles von ner Checkbox bis zum Fenster ist hierbei ein Element) ein "nDepth"-Feld beigefügt, dass angibt, wie weit im Hintergrund das teil liegt. Das is ja auch bei 1em Fenster ganz gut. Nur wenn ich die nach vorne und hinten verschieben möchte, müsste ich ja alle werte iwi ändern, weil die ja absolut und nicht relativ sind, weil ich mit der relativität noch probleme hab.
Hat jemand schonmal sowas gemacht? ich komme damit nicht klar...
DOSferatu
DOS-Übermensch
Beiträge: 1189
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Re: TUI programmieren [C]

Beitragvon DOSferatu » So 6. Feb 2011, 13:40

Ich habe es bei meinem Pirate-Chat (Textmode) mit überlappenden Fenstern schon gemacht. Es sind maximal 16 Fenster zugelassen. Ich habe ein Array angelegt, das für jede "Zeichenposition" ein Word (also 16bit) enthält, welches Fenster gerade aktiv ist. Wenn ich Fenster "nach vorn" hole, ändere ich deren Index auf den "obersten"... Bei der Anzeige funktioniert das dann so, daß ich evtl das ganze Bild anzeige, beim jeweiligen "Zeichen" sehe ich, welches das oberste Bit ist und das Zeichen des Fensters an der Position zeige ich an... Hm... irgendwie n bißchen kompliziert, das jetzt so theoretisch zu erklären...
Benutzeravatar
oDOSseus
LAN Manager
Beiträge: 241
Registriert: Di 10. Aug 2010, 15:21

Re: TUI programmieren [C]

Beitragvon oDOSseus » Mo 7. Feb 2011, 14:11

Das heißt also, dass du die Tiefer/Höhe der Fenster absolut angibst und die Elemente innerhalb der Fenster wieder relativ?
DOSferatu
DOS-Übermensch
Beiträge: 1189
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Re: TUI programmieren [C]

Beitragvon DOSferatu » Di 8. Feb 2011, 13:16

Hm... ja, jedes Fenster hat einen Parameter-Record (in C heißen die Dinge struct). Ich kann diese Records austauschen, d.h. wenn ich ein Fenster nach vorn hole, tausche ich die Records...
Die Fenster bleiben quasi immer gleich - ich sortiere sie nur um.
Sie haben einen Sub-Index, der z.B. dafür da ist, sie mit dem richtigen Inhalt zu verknüpfen, dann noch die Rahmenfarbe, den Fenstertyp, die Koordinaten, die Breite und Höhe, den "Eigner" (also wem das Fenster gehört) und so weiter... Ist eben speziell ausgelegt auf diesen IRC-Client.
Das mit den Bits habe ich gemacht, weil es ja auch passieren kann, daß mittendrin ein Fenster gelöscht oder verschoben wird usw. Bei der Anzeige muß man dann eben nur nach dem höchsten Bit gehen und das Fenster zeigt man dann an - bzw das Zeichen/Farbe, das das Fenster an dieser Position hat. Sind alle Bits=0 (d.h. das Word an dieser Stelle =0) zeige ich an der Stelle den "Hintergrund" an. (Bei mir besteht der nur aus vielen gleichen Zeichen.)

D.h. meine Ausgaberoutinen schreiben immer direkt in das Fenster rein (in den Fensterpuffer) und zusätzlich auf den Screen. (Wahlweise auch nur Screen oder nur Puffer.)

Damit man die Fenster auch nachträglich vergrößern/verkleinern kann und trotzdem der gesamte Inhalt, mit richtigen Umbrüchen, angezeigt wird, hat jedes Fenster so einen "Inhalts-Ringpuffer", in den immer reingeschrieben wird und den ich pro Fenster 16 kB groß gemacht habe. Wenn man das Fenster also größer macht (oder auch wenn man die Auflösung größer macht und das Fenster auf Maximalgröße zieht), zeigt er auch noch Text an, der in der kleineren Auflösung schon verschwunden wäre. (Die Ringpuffer sind nicht im Heap, sondern in einem externen File, das eben genau 256 kB groß ist (16 Fenster à 16 kB).

Ich hab das eben alles so speziell auf diesen Client ausgelegt, daher ist das alles so "seltsam". Aber ich dachte, vielleicht kannst Du daraus irgendwelche Anregungen oder Ideen ziehen für Dein Projekt.
Benutzeravatar
oDOSseus
LAN Manager
Beiträge: 241
Registriert: Di 10. Aug 2010, 15:21

Re: TUI programmieren [C]

Beitragvon oDOSseus » Fr 25. Feb 2011, 16:21

Die Lust, weiterzumachen schwindet doch enorm, wenn man sich mit so ner verdammten Fensterreihenfolge rumschlagen muss.
Habe das Problem zu Beginn gar nicht gesehen... Aber jetzt fällts mir auf.
Ich lerne erstmal fürs Vorabi und programmier dann und wann ein wenig auf dem c64 (hab ein interessantes Zahlenrätsel gebaut, falls wer interesse hat, stell ichs online. is in basic). Dann schaue ich mal weiter. Ich will das Projekt ja auch nicht sterben lassen
Benutzeravatar
oDOSseus
LAN Manager
Beiträge: 241
Registriert: Di 10. Aug 2010, 15:21

Re: TUI programmieren [C]

Beitragvon oDOSseus » Mi 4. Mai 2011, 11:00

Sooo. Die erste Abitur Klausur is geschrieben. Werde Ende diesen Monats also wieder Zeit haben zu Programmieren und vllt. krieg ich das mit der verdammten Fensterreiehenfolge ja dann mal geschissen.
Benutzeravatar
oDOSseus
LAN Manager
Beiträge: 241
Registriert: Di 10. Aug 2010, 15:21

Re: TUI programmieren [C]

Beitragvon oDOSseus » Mi 25. Mai 2011, 12:24

Das war die letzt Prüfung, Entwicklung wieder aufgenommen!
------------
Ich würde mich wirklich sehr freuen wenn jemand hier ideen hat wie man das machen kann.
Benutzeravatar
oDOSseus
LAN Manager
Beiträge: 241
Registriert: Di 10. Aug 2010, 15:21

Re: TUI programmieren [C]

Beitragvon oDOSseus » Mo 6. Jun 2011, 17:52

Interessiert das hier überhaupt keinen mehr?
DOSferatu
DOS-Übermensch
Beiträge: 1189
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Re: TUI programmieren [C]

Beitragvon DOSferatu » Mo 6. Jun 2011, 18:00

Doch, natürlich ist es interessant. Weiß nur im Moment nicht, was ich dazu schreiben soll. Schreib' doch einfach mal, was es so neues an Deiner TUI gibt (wenn es etwas neues gibt).

Das einzige, was mir im Moment erstmal einfällt, ist: Herzlichen Glückwunsch zum Abitur.

Und wegen der Fensterreihenfolge hatte ich ja schon Vorschläge gemacht.
freecrac
DOS-Guru
Beiträge: 861
Registriert: Mi 21. Apr 2010, 11:44
Wohnort: Hamburg Horn

Re: TUI programmieren [C]

Beitragvon freecrac » Mo 6. Jun 2011, 21:09

oDOSseus hat geschrieben:Interessiert das hier überhaupt keinen mehr?

Na doch, aber mir geht es ähnlich wie DOSferatu und auch ich kann dir erstmal nur mit Glückwunsch zum Abi gratulieren.
Ich warte auch ob es was Neues gibt.

Dirk
Benutzeravatar
oDOSseus
LAN Manager
Beiträge: 241
Registriert: Di 10. Aug 2010, 15:21

Re: TUI programmieren [C]

Beitragvon oDOSseus » Di 7. Jun 2011, 12:43

Achsoo
okay. Danke euch beiden =)
Ich habe das ganze System der reihenfolge umgeschmissen.
Es gibt nun Eltern-Elemente und Kind-Elemente. Das allerhöchste Elternelement ist NO_PARENT, also quasi der desktop. alle Kindelemente davon haben ein Feld in dem die ID des Eltern-Elements steht (in diesem konkreten Beispiel NO_PARENT). haben diese Kindelemente wiederum kinder, dann haben die natürlich auch wieder die ID ihres Eltern-Elements usw. usw.
Also in Baumstruktur:

Code: Alles auswählen

          +--Window1
NO_PARENT-+          +---Label1
          +--Window2-+
                     +---Textarea1

Nur das Zeichnen verursacht noch probleme. Und danach muss ich mich den klicks zuwenden. Und wenn das endlich klappt, dann kann ich mich daran machen, die Reihefolge zu ändern.
Benutzeravatar
oDOSseus
LAN Manager
Beiträge: 241
Registriert: Di 10. Aug 2010, 15:21

Re: TUI programmieren [C]

Beitragvon oDOSseus » Fr 15. Jul 2011, 17:10

Das ist jetzt hart für mich zu schreiben, aber ich habe mich übernommen.

Eine halbgare Lösung kommt für mich nicht in Frage. Und eine komplettlösung ist vielleicht eine Nummer zu groß für mich. Was ich auch versuche, es kommen immer neue Probleme. Und bei vielen tausend zeilen Code und auch noch eine typunsichere Sprache wie C ist das für nur eine Person einfach zu viel. Ich weiß nicht ob ich das Projekt noch einmal antaste, aber ich werde es wahrscheinlich Ruhen lassen. Wer das selber weiter machen will, der kann den Code gerne haben. Ich habe alles kommentiert und eig. ganz logisch geschrieben. Tut mir leid, falls das hier jemanden enttäuschen sollte, aber ein ganzes GUI-Framework ist einfach zu viel Arbeit für mich alleine, auch wenn ich -glaube ich - 92% des Weges schon geschafft habe. Hinderlich ist auch das Fehlen von Beispielcode im Internet.

Vllt. greife ich das Projekt nochmal bei meinem Informatikstudium, dass dieses Wintersemester beginnt auf. Aber ich verspreche diesmal besser nix.

mfG,
oDOSseus

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast