Pakete für Turbo-Pascal: Turbo Professional und Turbo Talk

Rund um die LCL und andere Komponenten
KarlZeilhofer
Beiträge: 10
Registriert: So 18. Jun 2017, 18:36

Re: Pakete für Turbo-Pascal: Turbo Professional und Turbo Ta

Beitrag von KarlZeilhofer »

ja, bitte gerne.
meine Kontaktdaten findest du unter http://zeilhofer.co.at/kontakt

KarlZeilhofer
Beiträge: 10
Registriert: So 18. Jun 2017, 18:36

Re: Pakete für Turbo-Pascal: Turbo Professional und Turbo Ta

Beitrag von KarlZeilhofer »

ich bekomm in Turbo Pascal 6.0 unter MS-DOS grad die Fehlermeldung: "Error 1: Out of memory."

Wie kann ich das beheben?

Unter Options waren für Stack size 16k und für Heap 64k eingestellt. Hab das nun auf 30k und 200k erhöht, ändert aber nix. Fehlermeldung kommt genau an der gleichen Stelle.
Ich glaub, der Compiler selbst hat "zu wenig" Speicher. Die Datei hat 1000 Zeilen, und die Prozedur, in der der Fehler auftritt ca. 680 Zeilen.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Pakete für Turbo-Pascal: Turbo Professional und Turbo Ta

Beitrag von wp_xyz »

Wieviel Speicher ist vor dem Start von TP noch frei? Es gab da doch sowas wie MEM, mit dem man den freien Speicher abfragen konnte. Mein DOS6.22-VM hat 522KB frei, und da läuft Borland Pascal 7 einwandfrei. Ansonsten war damals der Trick, alles mögliche in den EM/XMS-Speicher auszulagern (LOADHI o.ä. - ich hab das alles vergessen).

Borland Pascal musste man übrigens patchen, um es auf modernen Rechnern laufen lassen zu können (siehe Anhang). Wie es bei Turbo 6 ist, weiß ich nicht

P.S.
Der beigefügte Patch ist nur zur Information gedacht. Angewendet auf TP6 wird er sicher nicht funktionieren, da er die system.tpu verändert, die je nach Version verschieden ist.
Dateianhänge
CRTFix.zip
(29.87 KiB) 52-mal heruntergeladen

KarlZeilhofer
Beiträge: 10
Registriert: So 18. Jun 2017, 18:36

Re: Pakete für Turbo-Pascal: Turbo Professional und Turbo Ta

Beitrag von KarlZeilhofer »

585kByte sind noch frei vor dem Start von turbo.exe

ich probiers nun mal mit dem Kommandozeilen-Kompiler, der braucht viele Optionen, aber vielleicht braucht er auch weniger Speicher..

Danke für den Hinweis mit der Geschwindigkeit. Das Problem ist mir bei der Recherche schon untergekommen - aber noch ist es nicht soweit.
Dateianhänge
2017-06-22_004.png
2017-06-22_004.png (5.27 KiB) 2684 mal betrachtet

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Pakete für Turbo-Pascal: Turbo Professional und Turbo Ta

Beitrag von Timm Thaler »

Wenn die TTalk die serielle Schnittstelle bedient, kannst Du das eh vergessen.

Damals wurde auf die Serielle per Register zugegriffen, sprich da wurden an bestimmte Speicheradressen bestimmte Werte geschrieben um sie zu aktivieren und Daten zu senden, und aus anderen Adressen gelesen um die Daten abzufragen. Das wurde unter Windows95 dann teilweise, unter Windows98 völlig unterbunden. Ist auch sinnvoll, weil eine Serielle heutzutage eben nicht mehr ein adressierbarer Steckplatz auf einer ISA-Karte ist, sondern auch ein USB-seriell-Wandler sein kann. Das Ansprechen erfolgt über Treiber.

Ergo musst Du die Funktionen der Ttalk mit modernen Zugriffsmethoden nachbauen. Entweder über das erwähnte Synase oder über die serial.pp, die etwas einfacher zu handhaben ist und eigentlich auch alles kann. Wenn da allerdings Bitbanging betrieben wird, vielleicht noch mit kritischem Timing, wird das lustig. Zum Beispiel verhindern USB-seriell-Wandler oft durch internes Puffern erfolgreich Bitbanging.

Versuche erstmal die Hardware-Parameter der Schnittstelle herauszufinden, so richtig auf die harte Tour mit Oszi oder Datenlogger: Baudrate, Datenbits, Stoppbits, Handshakeleitungen, Datenprotokoll. Dann kannst Du Dir Gedanken machen, wie Du die Serielle daraufhin neu programmierst. Aber die TTalk einfach "umzuschreiben" wird unter einem modernen OS nicht gehen.

KarlZeilhofer
Beiträge: 10
Registriert: So 18. Jun 2017, 18:36

Re: Pakete für Turbo-Pascal: Turbo Professional und Turbo Ta

Beitrag von KarlZeilhofer »

Timm, danke für die Info.

Da werden noch ganz andere Probleme auftreten, nicht zu vergessen sind die 200kB ASM-Code. Mir ist klar, dass all die Low-Level-Sachen nicht einfach so auf einem modernen System laufen. Vorerst möchte ich einfach mal den aktuellen Code compilieren, um zu schauen, ob alles noch so tut wie es soll - alter Code mit alter Maschine, jedoch neu kompiliert.

Ich steh immer noch mit dem Speicherproblem an. Ich hab nun mit der Kommandozeile, ohne IDE, einiges mehr kompilieren können, aber nun scheiterts dann beim Programm selbst. D.h. alle Abhängigkeiten dürften schon erledigt sein.
Hat hier wer einen Tipp?

LG, Karl

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Pakete für Turbo-Pascal: Turbo Professional und Turbo Ta

Beitrag von Mathias »

Kann Turbo Pascal 6 überhaupt Klassen verwenden?
Nein nur Object, diese gehen statisch und dynamisch, wie bei FPC.

Borland Pascal musste man übrigens patchen, um es auf modernen Rechnern laufen lassen zu können (siehe Anhang). Wie es bei Turbo 6 ist, weiß ich nicht

Das Problem war, etwas in der Unit CRT, ohne Unit CRT, liefen die Programme auch auf schnelleren PCs.

Ansonsten war damals der Trick, alles mögliche in den EM/XMS-Speicher auszulagern (LOADHI o.ä. - ich hab das alles vergessen).

Ob das TP unterstützte, ich glaube kaum.

585kByte sind noch frei vor dem Start von turbo.exe

Dies war dazumal sehr viel,.
Die Datei hat 1000 Zeilen, und die Prozedur, in der der Fehler auftritt ca. 680 Zeilen.

Dies sollte eigentlich keine Hürde sein, da eine *.pas dazumal nur max 64KB gross sein konnte.


Mein DOS6.22-VM hat 522KB frei, und da läuft Borland Pascal 7 einwandfrei.

Einst darfst du nicht vergessen, TP lief im Real-Modus mit max 640KB, BP lief aber im Protect-Modus.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

braunbär
Beiträge: 369
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: 64Bit
Wohnort: Wien

Re: Pakete für Turbo-Pascal: Turbo Professional und Turbo Ta

Beitrag von braunbär »

Ich fürchte, dass es praktisch überhaupt nicht möglich sein wird, unter einem neueren Windows aus einem DOS-Programm heraus auf serielle Schnittstellen zuzugreifen, auch wenn du alle anderen Probleme erfolgreich meisterst. Du kommst aus der DOS Umgebung an die Windows Treiber einfach nicht heran. Und wenn du es trotzdem versuchen willst, würde ich an deiner Stelle als Erstes schauen, ob du dieses Problem irgendwie gelöst bekommst, bevor du dich deinem Code widmest, sonst machst du viele leere Kilometer.

Ich würde an deiner Stelle gleich versuchen, den Code auf Windows zu portieren, beim Pascal Code selbst ändert sich ja nicht viel. Ist natürlich eine Mords Arbeit, aber in Summe wahrscheinlich weniger, als das zuerst unter Turbo Pascal in Gang zu bekommen und dann erst recht die Umstellung machen zu müssen.

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Pakete für Turbo-Pascal: Turbo Professional und Turbo Ta

Beitrag von Timm Thaler »

braunbär hat geschrieben:Ich fürchte, dass es praktisch überhaupt nicht möglich sein wird, unter einem neueren Windows aus einem DOS-Programm heraus auf serielle Schnittstellen zuzugreifen...


Da fürchtest Du zurecht.

Ich kenne einige Labore, in denen noch Win3.11 läuft, weil die Software eben auf diese Weise auf die Ports zugreift (meist Parallelport), und ein Perkin Elmer HPLC oder Massenspektrometer für 300.000 Eier schmeisst man nicht weg, nur weil das Windows nicht mehr aktuell ist. ;-)

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Pakete für Turbo-Pascal: Turbo Professional und Turbo Ta

Beitrag von Mathias »

Ich fürchte, dass es praktisch überhaupt nicht möglich sein wird, unter einem neueren Windows aus einem DOS-Programm heraus auf serielle Schnittstellen zuzugreifen...

Vielleicht hat man eine Chance, wen man das DOS-Programm in der Virtual-Box laufen lässt. Dort kann man Com-Port durchreichen. MS-DOS erkennt sie auf jeden Fall.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

braunbär
Beiträge: 369
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: 64Bit
Wohnort: Wien

Re: Pakete für Turbo-Pascal: Turbo Professional und Turbo Ta

Beitrag von braunbär »

Vielleicht geht das in der Dosbox irgend wie, hab mich mit dem Ding noch nicht ernsthaft beschäftigt. Mir ist es aus der Dosbox heraus nicht einmal gelungen, einen Windows Drucker anzusteuern, hab darauf allerdings nicht sehr viel Zeit investiert. Aber wie gesagt, ich würde das auf jeden Fall als erstes sicherstellen, bevor du dir eine Menge Arbeit umsonst machst.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Pakete für Turbo-Pascal: Turbo Professional und Turbo Ta

Beitrag von Mathias »

Interessant wäre mal zu wissen, was das überhaupt für ein Gerät am COM-Port ist.
Wen es etwas ist, was der Norm entspricht, dann sollte mit Lazarus problemlos ein Zugriff sein.
Die modernen OS kümmern sich um Puffer, etc.
Unter DOS musste man sich um alles selbst kümmern.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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: Pakete für Turbo-Pascal: Turbo Professional und Turbo Ta

Beitrag von af0815 »

Was auch ein Unterschied ist, ob man einen Emulator oder einen virtualizer verwendet. QEMU kann IMHO auch eine x86 CPU emulieren

Code: Alles auswählen

Zitat: The virtual x86 CPU supports 16 bit and 32 bit addressing with segmentation.
....
For system emulation, the following hardware targets are supported:
 
PC (x86 or x86_64 processor)
ISA PC (old style PC without PCI bus)
 .....
 


Das ist auch noch einen Versuch Wert, wenn man mit dem Rücken zur Wand steht :mrgreen:

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Pakete für Turbo-Pascal: Turbo Professional und Turbo Ta

Beitrag von Mathias »

Vielleicht hat man eine Chance, wen man das DOS-Programm in der Virtual-Box laufen lässt.

Ich habe gerade einen Versuch gemacht.
Eine Uralte-Serial-Maus an einen USB-Com-Port. Von Linux selbst wird sie nicht erkannt.
Aber das WinXP mit durchgeschleiften Com-Port in der VB hat die Maus erkannt. Ich denke, dies sagt schon recht viel.
Man muss dafür aber die Marktintegration deaktivieren.

Auf diese Methode könnten 2 Nutzer den PC gleichzeigt nutzen.
Der einte spielt Solitär in der VB und der andere bedient Linux ganz normal. :mrgreen:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

KarlZeilhofer
Beiträge: 10
Registriert: So 18. Jun 2017, 18:36

Re: Pakete für Turbo-Pascal: Turbo Professional und Turbo Ta

Beitrag von KarlZeilhofer »

Die Lösung bez. Speicher war nun tpcx.exe anstatt tpc.exe zu verwenden. Dies ist der Kommandozeilen-Kompiler mit Extended Memory, siehe http://computer-programming-forum.com/2 ... 291a18.htm

Und es wurde erfolgreich gebaut, das Programm! Ein großer Schritt ist also nun gemacht :)

Bezüglich direktem Speicherzugriff: DLPORTIO
Wir haben das damals in der Schule (ca. 2004) auf Win2000 verwendet, um direkt den RS232-Chip anzusteuern. War zwar nicht lustig, aber lehrreich, und interessant, da man von der normalen PC-Umgebung auf einmal mit Registern zu tun hat, wie man es sonst nur von Mikrocontrollern kennt.

https://www.entwickler-ecke.de/topic_Dl ... 132,0.html

Ob das heute auch noch so geht, weiß ich nicht.

Ich halte euch am Laufenden.
Dateianhänge
2017-06-23_001.png
2017-06-23_001.png (6.69 KiB) 2570 mal betrachtet

Antworten