Kann mir jemand sagen, wie man in Free Pascal den Bildwiederholspeicher
ansprechen kann (lesen, schreiben)?
In Turbo Pascal war es mit so einem netten MEM[] Feld einfach über
MEMW[screenseg:offset]. Leider war das wie so manches ein nur Borland
Standard und es geht in Free Pascal nicht. In meiner Anlage sind jeweils
eine 16bit und eine konvertierte 32bit Version meines Programmes - nur
daß letztere fehlerhaft ist, weil die CloseWindow nicht funktionieren da
in dem VideoBuf Feld zu dem Zeitpunkt "Schrott" drin war.
Ausgangspunkt in der Unit Fenster waren die netten MEMW[] Anweisungen.
Da wo sie sich nur auf den Stack bezogen, habe ich sie hoffentlich alle
repariert, nur beim Zugriff auf den Bildwiederholspeicher habe ich keine
Idee.
Ich habe die Unit Video probiert. Leider fehlen da ein paar ganz wichtige
Befehle so wie das WINDOW, ohne dem geht es natürlich nicht (Rechteck
festlegen, Attribute und ClrScr oder Write) - um das zu umschreiben müßte
man die komplette Logik ändern und es erschiene mir total umständlich
und rückschrittlich. Den Ersatz der CRT für die Tastatur mittels der
Unit Keyboard bekomme ich ja noch hin, aber so ohne WINDOW?!
Also nahm ich trotz Warnhinweis die Unit CRT hinzu. Soweit sogut - nur
leider wirken sich die "normalen" Ausgaben per Write, Window, ClrScr usw.
überhaupt nicht auf das VideoBuf Feld aus (nur die direkten Speicherungen
darein) - so daß VideoBuf und angezeigtes Bild natürlich total auseinander
laufen. Das kleine Analyse-Programm zeigt im Debug-Modus ganz klar dieses
Verhalten, die "normalen" Writes usw. kommen im VideoBuf nicht an.
Wenn man nur CRT benutzt, muß doch das Bildschirmbild auch unter Windows 32bit
auch noch einen Speicherbereich als Entsprechung haben? Nur wie kommt man da
ran? Meine Pointer-Versuche (siehe auch die IN_MEMW und OUT_MEMW) waren irgend-
wie nicht von Erfolg gekrönt. Aber vielleicht hat schon jemand das Problem
gelöst?
a) nur mit CRT (eigentlich fehlt nur der Zugriff BWS)
b) nur mit Video? Aber dann bräuchte man wohl weitere Units? Denn daß es
überhaupt kein WINDOW mehr geben sollte, will mir nicht in den Kopf
c) mit Video und CRT (vielleicht gibt es einen Trick wie man Bildschirm
und VideoBuf synchronisieren muß)?
d) oder hat jemand eine ähnliche Window/Menue Verwaltung?
Ich bin schon reichlich verwirrt und verzweifelt...
By the way: Rufe ich die Free Pascal Version des Tollzeit auf (egal ob
an meiner 8 Jahre alten XP Kiste oder dem eigentlich superschnellen
großen PC unter Vista), braucht er bald eine Ewigkeit für die Ausgabe des
Anfangsbildes (die 1840 Writes $178). Ich wollte mich doch verbessern?!
Wo ist der BWS im FreePascal :-)
Wo ist der BWS im FreePascal :-)
- Dateianhänge
-
tollzeit.zip
- Anhang korrigiert.
- (90.83 KiB) 71-mal heruntergeladen
Zuletzt geändert von alfware17 am Do 30. Dez 2010, 13:38, insgesamt 1-mal geändert.
-
- Beiträge: 1102
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: Wo ist der BWS im FreePascal :-)
Das Problem ist das das nicht ein Borland oder TP feature ist, aber eine reine DOS feature.alfware17 hat geschrieben:Kann mir jemand sagen, wie man in Free Pascal den Bildwiederholspeicher
ansprechen kann (lesen, schreiben)?
In Turbo Pascal war es mit so einem netten MEM[] Feld einfach über
MEMW[screenseg:offset]. Leider war das wie so manches ein nur Borland
In zb Borland Delphi (TP's Nachfolger) gibts nicht, weil es (32-bit) Windows ist. (16-bit Windows Versionen sind Dos basiert)
Es funktioniert auch mit Free Pascal, aber nur in modus "TP", UND auf Dos (Go32v2)Standard und es geht in Free Pascal nicht.
Keine Ahnung, aber unit Video initializiert videobuf nur wenn das OS das kann.In meiner Anlage sind jeweils
eine 16bit und eine konvertierte 32bit Version meines Programmes - nur
daß letztere fehlerhaft ist, weil die CloseWindow nicht funktionieren da
in dem VideoBuf Feld zu dem Zeitpunkt "Schrott" drin war.
Das ist das ersten Mal das ich "nett" und "mem[]" in einer Satz gesehen habeAusgangspunkt in der Unit Fenster waren die netten MEMW[] Anweisungen.

Video ist nicht für Crt konzipiert, aber für TV (Turbo Vision). Der Textmodus-IDE ist ganz TV basiert, und macht windowingIch habe die Unit Video probiert. Leider fehlen da ein paar ganz wichtige
Befehle so wie das WINDOW, ohne dem geht es natürlich nicht

Mann konnte aber technisch ein Crt für KVM machen, aber bis heute hat keiner das gemacht. Nicht extrem schwierig, aber man muss dafür Video und Crt Konzepte völlig (intern) verstehen.
Zb auf Unix gibts es mehrere "crt" units (crt,ncrt,pcrt usw), und die sich unterscheiden in welcher Bibliothek oder API sie nutzen für die Ausgabe.
Ich warne nochmal. Das hat kein Zweck. Entweder Crt, oder Keyboard+Video+Mouse. (Mouse gehoert auch dabei, von hier an aus werde ich das KVM nennen)(Rechteck
festlegen, Attribute und ClrScr oder Write) - um das zu umschreiben müßte
man die komplette Logik ändern und es erschiene mir total umständlich
und rückschrittlich.
Den Ersatz der CRT für die Tastatur mittels der
Unit Keyboard bekomme ich ja noch hin, aber so ohne WINDOW?!
Also nahm ich trotz Warnhinweis die Unit CRT hinzu.
Wenn man unbedingt Crt benoetigt soll man anfangen ein Crt auf Video Basis zu implementieren. Insgesamt das abfangen von Write usw.
Den Textmode IDE (FP) setzt den Standard was möglich ist mit KVM
Nein. WeilWenn man nur CRT benutzt, muß doch das Bildschirmbild auch unter Windows 32bit
auch noch einen Speicherbereich als Entsprechung haben?
1) 32/64-bit Windows initializiert hardware (memory mapped) textmode nicht eben.
2) Eben wenn es wurde, es gibt nur eins, und man kann mehrere Dos-prompts Öffnen
Unter Windows ist es aber möglich der Konsole Speicherbereich mit Funktionen zu lesen, aber es gibt da allerhande Problem (zb mit Encodings, also umlaute sind raus oder schwierig)
Die meisten habe ihre Kode ganz modernisiert. Ein paar habe sich begnügt mit was Crt gibt. Ein paar haben endlich sich mal richtig an TV/FV an gesetzt.Aber vielleicht hat schon jemand das Problem
gelöst?
Das Signalwort ist "nur". Wenn das in einer Post ist, dann gibt es Probleme

Es gibt drei Lösungen:
- Das Dos basierter Konzept vergessen, und entweder Lazarus oder Turbo Vision nutzen.
Dos ist 15 Jahre Tot, las es in ruhe rotten - Crt + windows specifische API kodierung.
Vorteile:- wenn nur sehr wenig gelesen wird kann es relativ einfach sein.
- Windows Crt ist komplexer dann man denkt. Es ist schon eine teilweise Dos emulierung.
- Als Konzept schon nicht Portabel, weil manche OSen lesen nicht unterstützen
- schwierig da später mehr Funktionalität hineinzulegen, oder das jemand anders die Erfahrung wieder gebrauchen kann.
- Crt auf Windows ist noch Relativ gut. Auf zb Linux oder OS X ist Crt in viele Details anders.
- hat noch nie jemand gemacht. Es gibt immer ein Risiko das man etwas findet das ein großes Problem darstellt.
- ein neues Crt machen, die sich basiert auf Crt units hin.
Vorteile- KVM units sind besser multi platform gedebugged, und haben mehr Funktionalität
- TV stresst fast alles in unit Video/KVM was nötig ist. Mehr Arbeit, aber keine Überraschungen
- ein Paar mehr Personen möchten daran interessiert sein, und/oder Rat geben.
- funktioniert auch auf Systemen die das Screen nicht lesen können.
- Video ist konzipiert um batch-updates nach Speicher zu machen, und das Speicher dann
so effizient möglich an das OS an zu bieten. Also zb mit nur einen einzigen Write, oder
gar mit mehrere, aber so klein Mögliche, gleich was das OS wünscht - Maus Support integriert.
- mehr Arbeit, viel davon bevor man überhaupt etwas sieht, aber, ärger,
- man muss wissen wie Crt und KVM funktionieren.
- Mehr eben wenn man das mit FPC's Qualitätsansprüche machen will.
Ein Problem ist auch das Crt Windowing nur ein bisschen dabei macht, und TV da _alles_ machen will, und das Problem ganz anders löst. (zb event-driven). Es sind die einige zwei in Free Pascal, aber dazwischen gibst mehrere Ebenen. Weil es mehrere Beispiele gibt für TP in SWAG, hat der Lösung in Modula2 (Pascal's nachfolger) standard unit "Window" oder "textwindow" mich am meisten gefallen, speziell die von "Topspeed". (dieser Bibliothek ist Prozedurel, aber mit OOP Konzepte. (handle based). Also man kann da Windows herstellen, verbergen, wieder sichtbar machen usw)
Nein, die meisten gehen dann ganz für das TV Konzept (wo die Menüs der Textmode IDE mit gemacht sein),d) oder hat jemand eine ähnliche Window/Menue Verwaltung?
aber das ist Eventdriven und schwer OOP, und das mögen die meiste CRT Liebhaber nicht. Die wollen nur ein bisschen basteln.
Was ist Tollzeit? M ein Deutsch ist nicht so gut.By the way: Rufe ich die Free Pascal Version des Tollzeit auf
Siehe das Punkt zu den KVM units über das virtualisiertes Speicher so effizient möglich an das OS anzubieten. Ich glaube das Win32 Textmodus schnell sein kann, aber da muss man ein paar Dinge machen. Video macht das. Und wieder den Hinweis das den Textmode IDE da demonstriert was möglich ist. (und das ist schnell genug, eben auf mein P-II 233MHz). Dass ist alles für Crt's Konzept schwieriger, weil Crt Output immer direkt schreiben muss, und Video zb writes aufhalten kann.(egal ob
an meiner 8 Jahre alten XP Kiste oder dem eigentlich superschnellen
großen PC unter Vista), braucht er bald eine Ewigkeit für die Ausgabe des
Anfangsbildes (die 1840 Writes $178). Ich wollte mich doch verbessern?!
Crt wird auch genuzt fuer normale Zeilen basierter aufgabe (zb ein normales terminal program mit ein download
Zuletzt geändert von marcov am Do 30. Dez 2010, 15:37, insgesamt 4-mal geändert.
- af0815
- Lazarusforum e. V.
- Beiträge: 6773
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Wo ist der BWS im FreePascal :-)
Es hat sich viel zwischen DOS und den aktuellen BS geändert. Das spiegelt sich auch in den Behandlungen des Zugriffes auf externe Komponenten wieder. Weg von 'direct' Zugriffen hin zur (zwingenden) Benutzung von APIs.
Zu den units VIDEO und CRT - Hinweis aus der Doku
Eine generelle Frage ist, ob bei dem Code sich nicht die Umstellung auf ein aktuelleres Design lohnen würde.
Zu den units VIDEO und CRT - Hinweis aus der Doku
Code: Alles auswählen
Remark: The video unit should not be used together with the crt unit. Doing so will result in very strange behaviour, possibly program crashes.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Wo ist der BWS im FreePascal :-)
Vielen Dank für die prompte und umfangreiche Antwort.
Das muß ich genau studieren. Aber den Compile wollte ich gleich probieren.
Leider mault der FP noch (siehe Screenshot). Wie bringe ich ihm die fehlende Unit bei?
"Was ist Tollzeit? M ein Deutsch ist nicht so gut."
Mein 8-Buchstaben-Versuch für einen Datei/Programmnamen von damals...
"toll" müßte es im Niederländischen auch geben? Hier ist aber eher das gemeint,
was im Englischen "fine" oder "great" ist, nicht etwa "wild" oder "crazy".
Das muß ich genau studieren. Aber den Compile wollte ich gleich probieren.
Leider mault der FP noch (siehe Screenshot). Wie bringe ich ihm die fehlende Unit bei?
"Was ist Tollzeit? M ein Deutsch ist nicht so gut."
Mein 8-Buchstaben-Versuch für einen Datei/Programmnamen von damals...
"toll" müßte es im Niederländischen auch geben? Hier ist aber eher das gemeint,
was im Englischen "fine" oder "great" ist, nicht etwa "wild" oder "crazy".
- Dateianhänge
-
2010-12-30_130654.pdf
- (275.76 KiB) 56-mal heruntergeladen
-
- Beiträge: 1102
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: Wo ist der BWS im FreePascal :-)
FP hat eine eigene Version von der Compiler, und deshalb auch ein eigene Konfiguration:alfware17 hat geschrieben:Vielen Dank für die prompte und umfangreiche Antwort.
Das muß ich genau studieren. Aber den Compile wollte ich gleich probieren.
Leider mault der FP noch (siehe Screenshot). Wie bringe ich ihm die fehlende Unit bei?
Options -> Directories, und da unter "unit directories" dies eingeben
c:\fpc\$FPCVERSION\units\$FPCTARGET
c:\fpc\$FPCVERSION\units\$FPCTARGET\rtl
c:\fpc\$FPCVERSION\units\$FPCTARGET\*
(annehmend das FPC in c:\fpc installiert wurde).
Aber ich meinte der IDE meistens als eine Demonstration was alles möglich ist mit Turbo Vision und Textmodus programmieren in FPC in generellen . Ihres Program wird gleich so funktionieren als ohne IDE.
Ich habe schon verstanden das es den Projektnamen ist. Ich dachte "xx des Tollzeits" wäre eine Redensart für "damals" (oder Prähistorisch) oder so.Mein 8-Buchstaben-Versuch für einen Datei/Programmnamen von damals..."Was ist Tollzeit? M ein Deutsch ist nicht so gut."
Ich weiß natürlich was "toll" ist aufs Deutsch, ich hatte nur mehr dahinten gesucht."toll" müßte es im Niederländischen auch geben? Hier ist aber eher das gemeint,
was im Englischen "fine" oder "great" ist, nicht etwa "wild" oder "crazy".
Und nein, ein ähnliches Wort gibst nicht im Niederländischen. "geweldig" (Gewaltig oder Großartig aufs Deutsch) oder "fantastisch" (wie in Deutsch) deckt das am Besten.
Vielleicht kommt "toll" mehr vom Alemannischen Bereich. (spezifisch Hoch-Deutsch).
Auch ins Platt kennt ich es nicht (das lokalen (Limburgischen) Platt ist ähnlich wie im Aachen/Ruhrpott, und hört sich Deutscher an als reines Niederländisch. zb "ich" statt "ik" usw)
Re: Wo ist der BWS im FreePascal :-)
http://de.wiktionary.org/wiki/toll" onclick="window.open(this.href);return false;marcov hat geschrieben:Vielleicht kommt "toll" mehr vom Alemannischen Bereich. (spezifisch Hoch-Deutsch).
-
- Beiträge: 1102
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: Wo ist der BWS im FreePascal :-)
Ah, also vielleicht doch. Es gibt "Dol", aber das wird anders genutzt, mehr als "wild/aufgeregt", "verrückt" oder schwindlig (von drehen).theo hat geschrieben:http://de.wiktionary.org/wiki/toll" onclick="window.open(this.href);return false;marcov hat geschrieben:Vielleicht kommt "toll" mehr vom Alemannischen Bereich. (spezifisch Hoch-Deutsch).
Das Diminutiv (dolletjes, das wurde "toll-e-chen" oder so etwas sein auf Deutsch) wird in der Tat wie das Deutsche "toll" genutzt, aber nicht oft. Es hört sich auch ein bisschen Flower Power (siebziger Jahre) an, und ist heute oft mehr sarkastisch gemeint als nicht.