Hallo, guten Tag.
Mein WIN98 ist zu schnell für Pascal 7.0
Wo gibt es bitte ein Programm um es für das Pascal zu verlangsamen ?
Danke.
Hallo, guten Tag.
Mein WIN98 ist zu schnell für Pascal 7.0
Wo gibt es bitte ein Programm um es für das Pascal zu verlangsamen ?
Danke.
Wie Turbo Pascal 7.0 kann zu schnell sein ?
Der Thinclient mit dem VIA C3 ?
softfsb und setmul
Redest du vom Runtime Error 200? (Fehler in der Unit CRT der dazu führt dass Pascalprogramme ab etwa 233MHz Prozessorgeschwindigkeit direkt beim Start abstürzen - dafür gibts Patches)
Ja , es ist Runtime Error 200
Danke habe ein Patch gefunden für das EXE-Programm
Jetzt funktioniert es.
Aber es ist nicht gut, wenn man sich mühe gibt gute schnelle Programme zu schreiben und ist dann umsonst.
Dann kann man auch gleich schlampige Programme schreiben....
Gruss
Aber es ist nicht gut, wenn man sich mühe gibt gute schnelle Programme zu schreiben und ist dann umsonst.Dann kann man auch gleich schlampige Programme schreiben....
Der Patch funktioniert anders. Das Programm wird nicht langsamer. Der Schleifenzähler, der bei TP sonst ab etwa 200 MHz überläuft und auch zum Crash führt, wird einfach seltener hochgezählt.
Der Schleifenzähler
Genauer gesagt: Die Initialisierungsroutine für die Funktion Delay läuft über.
Einfach gesagt zählt Die Unit bei der Initialisierung eine gewisse Zeit lang Schäfchen und berechnet aus der Anzahl der gezählten Schäfchen wie lange der Prozessor zählen muss um 1ms beschäftigt zu sein.
Dieses Wissen wird dann für die Funktion Delay genutzt.
DAS ist schlampige Programmierung - zumindest aus heutiger Sicht, seinerzeit war dies recht normal - bei Singletasksystemen ist die vergeudete CPU-Zeit egal und Stromsparen kannte man damals auch noch nicht.
PS. lass doch einfach die Unit CRT weg, das meiste funktioniert auch ohne.
PPS. Der Patch macht auch nichts langsamer, da wird nur die Delayroutine und ihre Initialisierung geändert.
BTW. Windows lief beim K6 in einen ähnlichen Fehler weil der Loopbefehl im K6 rattenschnell war: https://www.heise.de/ct/artike…sorgefluester-285254.html (ganz unten )
Zitat...und auch zum Crash führt, wird einfach seltener hochgezählt.
Das merkt man , wenn man eine saubere Bewegung mit Sprite hat in der DosBox.
Die Bewegung ist dann im Win98 unruhiger und ruckelt ungleichmäßig.
Es macht die Grafik unansehnlich.
Zitat
PS. lass doch einfach die Unit CRT weg, das meiste funktioniert auch ohne.
Das ist halber kram.
Gruss
Die Bewegung ist dann im Win98 unruhiger und ruckelt ungleichmäßig.
Das liegt eher am Multitasking von Windows - Dosprogramme sind es nicht gewohnt dass sich noch jemand CPU-Zeit abzwackt.
Das ist halber kram.
Warum? Die wohl wichtigsten Routinen die wegfallen sind readkey, delay und gotoxy - die kann man sich recht einfach selberbasteln. Die Write- und Readbefehle hingegen sind alle noch da.
Ich programmieren gerne mit Pascal und habe mir schon vor rund 20 Jahren einen eigenen Ersatz für die CRT geschrieben.
Die Units habe ich auch bei meinem Treiber für Opti Soundkarten genutzt und auf GitHub zur freien Verfügung gestellt. Die findet ihr hier
Einmal die TEXTMODE.PAS für Bildschirmausgaben. Daneben könnte auch die m MISC.PAS interessant für euch sein.
Zitat
Das liegt eher am Multitasking von Windows - Dosprogramme sind es nicht gewohnt dass sich noch jemand CPU-Zeit abzwackt.
Da ist aber mehr drin:
{*******************************************************}
{ }
{ Turbo Pascal Version 7.0 }
{ CRT Interface Unit }
{ }
{ Copyright (C) 1988,92 Borland International }
{ }
{*******************************************************}
unit Crt;
{$D-,I-,S-}
interface
const
{ CRT modes }
BW40 = 0; { 40x25 B/W on Color Adapter }
CO40 = 1; { 40x25 Color on Color Adapter }
BW80 = 2; { 80x25 B/W on Color Adapter }
CO80 = 3; { 80x25 Color on Color Adapter }
Mono = 7; { 80x25 on Monochrome Adapter }
Font8x8 = 256; { Add-in for ROM font }
{ Mode constants for 3.0 compatibility }
C40 = CO40;
C80 = CO80;
{ Foreground and background color constants }
Black = 0;
Blue = 1;
Green = 2;
Cyan = 3;
Red = 4;
Magenta = 5;
Brown = 6;
LightGray = 7;
{ Foreground color constants }
DarkGray = 8;
LightBlue = 9;
LightGreen = 10;
LightCyan = 11;
LightRed = 12;
LightMagenta = 13;
Yellow = 14;
White = 15;
{ Add-in for blinking }
Blink = 128;
var
{ Interface variables }
CheckBreak: Boolean; { Enable Ctrl-Break }
CheckEOF: Boolean; { Enable Ctrl-Z }
DirectVideo: Boolean; { Enable direct video addressing }
CheckSnow: Boolean; { Enable snow filtering }
LastMode: Word; { Current text mode }
TextAttr: Byte; { Current text attribute }
WindMin: Word; { Window upper left coordinates }
WindMax: Word; { Window lower right coordinates }
{ Interface procedures }
procedure AssignCrt(var F: Text);
function KeyPressed: Boolean;
function ReadKey: Char;
procedure TextMode(Mode: Integer);
procedure Window(X1,Y1,X2,Y2: Byte);
procedure GotoXY(X,Y: Byte);
function WhereX: Byte;
function WhereY: Byte;
procedure ClrScr;
procedure ClrEol;
procedure InsLine;
procedure DelLine;
procedure TextColor(Color: Byte);
procedure TextBackground(Color: Byte);
procedure LowVideo;
procedure HighVideo;
procedure NormVideo;
procedure Delay(MS: Word);
procedure Sound(Hz: Word);
procedure NoSound;
Alles anzeigen
Ihr wollt mir unbedingt euer Bier verkaufen.
Das sieht ja gut aus.
Hast ja richtig Erfahrung mit dem Turbo Pascal
Werde ich morgen mal testen ob es damit weiter läuft bei mir ohne die Crt im Borland Pascal 7.0
und mit deiner Ergänzung.
readkey vermisse ich , brauche ich für die case.
Habt mich jetzt erstmal überzeugt.
Musst mir als Anfänger nur noch zeigen wie ich diese TPU für TP 7.0 aus deinem konstrukt gemacht werden.
Es geht darum wie werden eigentlich TPU erstellt.
Danke.
Gruss
Alles anzeigenDas sieht ja gut aus.
Hast ja richtig Erfahrung mit dem Turbo Pascal
Werde ich morgen mal testen ob es damit weiter läuft bei mir ohne die Crt im Borland Pascal 7.0
und mit deiner Ergänzung.
readkey vermisse ich , brauche ich für die case.
Habt mich jetzt erstmal überzeugt.
Musst mir als Anfänger nur noch zeigen wie ich diese TPU für TP 7.0 aus deinem konstrukt gemacht werden.
Es geht darum wie werden eigentlich TPU erstellt.
Danke.
Gruss
In meiner MISC.PAS findest du einmal getkey und einmal catchkey. Getkey wartet wie readkey auf den Tastendruck, catchkey holt den Tastencode ohne zu warten, was nützlich in Spielen ist.
Ich habe nur die Funktionen in meinen Units, die ich oft brauche und bei weitem nicht alles aus der CRT. Mehr als delay, Tastatur und Bildschirmausgaben habe ich eigentlich nie gebraucht oder immer selber in Assembler geschrieben, weil es schneller war.
Ich habe die Prozeduren und Funktionen teilweise anders benannt, damit ich im Fall der Fälle auch die CRT noch nutzen konnte.
Xdelay, getkey usw. In meiner Textmode unit sind auch deutlich mehr Funktionen für die Textausgabe, das zeichnen von Fenstern usw.
Verkaufen oder aufdrängen will ich hier niemandem was. Nur einfach als eine mögliche Hilfe/Lösung anbieten, da es ja hier gut zum Thema passt.
Catchkey liefert den Wert einer gedrückten Taste zurück ohne auf sie zu warten.
Du suchst ja das Pendant zu keypressed und das ist bei mir iskeypressed.
Also:
Die while-Schleife löscht eventuell noch vorhandene Tastendrücke im Tastaturpuffer.
Du kannst aber natürlich gerne meinen Code anpassen und die Funktionen bennennen wie du willst. Also aus dem iskeypressed ein keypressed o.ä.
alles klar.
danke.
gruss
Hallo, guten Tag.
Bei manchen Programmen kommt noch die Meldung "Run Time Error 200" obwohl die CRT draussen ist.
Gibt es noch einzelne versteckte Routinen.
Gruss
Das sollte nicht so sein. Wenn es nur bei manchen Programmen auftritt, muss es ja an einer dort verwendeten Unit o.ä. liegen.
Oder irgendwo tritt tatsächlich eine division durch 0 oder ein Überlauf einer Variable aus anderen Gründen auf.
Ich habe mal den blöden Fehler gemacht und in einer eigenen Unit "uses CRT" versehentlich drinnengelassen. Da war ich auf der Suche nach einem Bug gewesen und hatte die CRT reingenommen, um schnell mit writeln die Inhalte einer Variable ausgeben zu können. Als der Fehler gefunden war, habe ich die Ausgabe der Variable rausgenommen, aber die CRT vergessen. Fiel mir dann erst viel viel später auf, als ich die Rückmeldung bekam, mein Programm würde auf schnellen Rechnern nicht laufen. Ich habe auch keinen DOS PC mit mehr als 300 MHz, mir selbst fällt das also gar nicht auf
Hallo, guten Tag.
Ich habe jetzt Turbo Pascal 6.01 installiert.
Und habe keinen absturz mehr mit Runtime Error 200.
Ich möchte jetzt 6.01 beibehalten.
Was ich noch nicht erkenne sind die Unit.
Die heissen wie ich erkannt habe INT , ist das richtig ? und befinden sich
komischerweise in einem Ordner DOC.
Gruss
Die Units sind die .TPU-Dateien. Ordner weiß ich gerade nicht auswendig, aber such sie mal
TP 6.01 gilt als die beste Version, verwende ich auch, kann nur gerade leider nicht nachsehen.
Ich habe die "TPU" gefunden im Ordner TVISION.
Danke.
Gruss
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!