Anleitung: FPC und MSDOS Cross-Compiler

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Anleitung: FPC und MSDOS

Beitrag von Mathias »

Ich bin ein bisschen weiter gekommen, beim kompilieren meines alten Programmes.
Unter TP hatte ich LevelBild direkt als absolute in den VRAM deklariert.
Mit der forto-Schleife das Bild in den VRAM zu schreiben hat geklappt, auch kommt später das Menü richtig, welches mit der abolute-Deklaration verstückelt kam.
Ersetze ich dir forto-Schleife durch ein Move, dann habe ich den gleichen Fehler, wie mit dem absolute.
Es sieht so aus, wie wen nach dem Move, GotoXY nicht mehr richtig geht.

Code: Alles auswählen

type
  BildTyp = Array[0..3999] of Byte;
var
  fLevel            : file of Bildtyp;             { Fr Level Bilder ab Disk }
//  LevelBild         : Bildtyp absolute $B800:0000; { BS Adresse }
  LevelBild         : Bildtyp;  // FPC Cross8086
....
begin
  str1:='1';
  DateiName := LevelPfad + 'Level' + Str1 + '.SCR';
  assign(fLevel,DateiName);                         { Level Laden }
  reset(flevel);
  read(fLevel, Levelbild);
  close(flevel);
//  move(LevelBild, Mem[$B800:$0000], 4000);
  for i := 0 to 3999 do Mem[$B800:i] := LevelBild[i];
 
 // Menü zeichnen und Spiel starten.
 ...
end.


Weis jemand woran das liegen könnte ? :roll:

Ich habe mal im Anhang die EXE mit dem fehlerhaften Move.
Dateianhänge
PACMAN.zip
(57.96 KiB) 73-mal heruntergeladen
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Nixsager
Beiträge: 168
Registriert: Sa 8. Okt 2016, 08:38
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Polska

Re: Anleitung: FPC und MSDOS

Beitrag von Nixsager »

Mehr Informationen wären zur Anleitung nicht schlecht. Vor allem für Dummys wie mich.

Wollte noch was dazu sagen, aber ich habe raus gefunden das FP wohl in der Pfadangabe eingetragen wird.

Zum Spiel.
Wenn ich es mit FP kompiliere und dann starte, kriege ich 'Runtime error 2 at $0298' zu sehen.
Und wenn es ein FP-Projekt ist, wieso ist dann die Hauptdatei eine Lazarus-Projektdatei. Mal abgesehen davon das das dein Projekt ist, und du es machen kannst wie du willst.
Aber da das Thema 'Anleitung: FPC und MSDOS' ist, wäre eine Erklärung zu solchen Fällen in dem ersten Post vielleicht nicht schlecht.

Denn einfacher wäre es das Projekt unter FP für DOS zu öffnen und von da zu kompilieren.

Wäre es vielleicht möglich die TP-Version zu sehen/testen? Ich meine nicht den Quelltext, sondern das Programm.
Jeder der sagt, ich könnte programmieren, der hat noch weniger Ahnung vom programmieren als ich!!!

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

Re: Anleitung: FPC und MSDOS

Beitrag von Mathias »

Wen du den Cross8086 wie im ersten Post installiert hast, sollte es sich mit folgender Zeile kompilieren lassen.

Code: Alles auswählen

V:\MSDOS-Test\Borland Pascal\Alte_prg\PACMAN>c:\FPC\3.0.0\bin\i386-win32\ppcross8086.exe pacman.lpr


Und wenn es ein FP-Projekt ist, wieso ist dann die Hauptdatei eine Lazarus-Projektdatei.

Weil ich es mit Lazarus editiert habe, nur kompilieren lässt es sich dort nicht.
Ganz einfache MS-DOS-Programme gehen damit.

Denn einfacher wäre es das Projekt unter FP für DOS zu öffnen und von da zu kompilieren.

Mir ist die IDE Lazarus sympatischer als der FP. Auch kann ich dort MS-DOS nicht auswählen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Nixsager
Beiträge: 168
Registriert: Sa 8. Okt 2016, 08:38
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Polska

Re: Anleitung: FPC und MSDOS

Beitrag von Nixsager »

Das Lazarus einfacher zu bedienen ist, ist mir schon klar, aber wäre es dann nicht schlecht darauf einzugehen, wie man hinbekommt das man unter Lazarus die Programme kompilieren kann?
Ich habe es nicht hinbekommen, und weiß auch nicht wie.

Wie gesagt das Programm habe ich kompiliert, aber unter FP kriege ich eine Meldung das 'maxavail' in der Datei 'BILD.PAS' in der Zeile 289 nicht gefunden wurde.
Jeder der sagt, ich könnte programmieren, der hat noch weniger Ahnung vom programmieren als ich!!!

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

Re: Anleitung: FPC und MSDOS

Beitrag von Mathias »

Wie gesagt das Programm habe ich kompiliert, aber unter FP kriege ich eine Meldung das 'maxavail' in der Datei 'BILD.PAS' in der Zeile 289 nicht gefunden wurde.

Hast du es mit FP oder ppcross8086 kompiliert ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Nixsager
Beiträge: 168
Registriert: Sa 8. Okt 2016, 08:38
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Polska

Re: Anleitung: FPC und MSDOS

Beitrag von Nixsager »

Den Laufzeit-Fehler habe mit dem Programm bekommen das ich mit 'ppcross8086' kompiliert habe.
Denn wie gesagt unter der IDE kriege ich die Fehlermeldung mit der Datei 'BILD.PAS'.

Nachtrag:
Ich habe mal Die EXE-Dateien gelöscht, vielleicht war es auch ein von dir.
Das mit der Variabel 'maxavail' habe ich gelöst das ich in der Unit die Variabel 'maxavail' als Integer gesetzt habe.

Beim kompilieren kriege ich folgende Meldung:

Code: Alles auswählen

 
Der Befehl "C:/" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Free Pascal Compiler version 3.0.0 [2015/11/16] for i8086
Copyright (c) 1993-2015 by Florian Klaempfl and others
Target OS: MS-DOS 16-bit real mode
Compiling _PACMAN.pas
Compiling BILD.PAS
Compiling MAUS.PAS
Assembling with smartlinking maus
Der Befehl "C:/" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
MAUS.PAS(20,3) Error: Error while linking
MAUS.PAS(20,3) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
 


Und in der IDE kriege ich die Meldung das Far-Zeiger in der Datei 'PACMAN.lpr' nicht erlaubt sind.
Jeder der sagt, ich könnte programmieren, der hat noch weniger Ahnung vom programmieren als ich!!!

marcov
Beiträge: 1100
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: Anleitung: FPC und MSDOS

Beitrag von marcov »

Es gibt irgendwo c:/ im fpc.cfg oder so, das ist nicht DOS kompatible, sollte c:\ sein. (ich glaube LFN INTs akzeptieren es, aber normal dos nicht)

maxavail wird nicht durch FPC unterstützt, weil typisch es keine feste Speicherlimit gibt auf die meisten Targets.

Far zeiger warnungen konnte etwas mit memory model zu tun haben. (ein TP3 aehnliches Model selektiert nicht TP6/7)

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

Re: Anleitung: FPC und MSDOS

Beitrag von Mathias »

Das mit der Variabel 'maxavail' habe ich gelöst das ich in der Unit die Variabel 'maxavail' als Integer gesetzt habe.

maxavail ist eine System-Funktion, welche ermittelt wie viel Speicher noch zur Verfügung steht. Im MSDOS-Modus müsste es diese noch geben.

Beim kompilieren kriege ich folgende Meldung:

Wie hast du jetzt den Kompiler aufgerufen ?

Code: Alles auswählen

Der Befehl "C:/" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

Dies ist auch etwas komisch.

Code: Alles auswählen

Compiling _PACMAN.pas
Compiling BILD.PAS
Compiling MAUS.PAS

Pacman.pas müsste am Ende und nicht am Anfang kompiliert werden.
Irgendwas machst du falsch.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Nixsager
Beiträge: 168
Registriert: Sa 8. Okt 2016, 08:38
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Polska

Re: Anleitung: FPC und MSDOS

Beitrag von Nixsager »

Ich denke, ich soll 'ppcross8086 PACMAN.lpr' nutzen.

Dann wird auch 'PACMAN.lpr' als erstes kompiliert.
Jeder der sagt, ich könnte programmieren, der hat noch weniger Ahnung vom programmieren als ich!!!

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

Re: Anleitung: FPC und MSDOS

Beitrag von Mathias »

maxavail wird nicht durch FPC unterstützt, weil typisch es keine feste Speicherlimit gibt auf die meisten Targets.

Im MS-DOS-Modus scheint sie noch zu gehen, bei dem Spiel kommt 42994.

Es gibt irgendwo c:/ im fpc.cfg oder so, das ist nicht DOS kompatible, sollte c:\ sein. (ich glaube LFN INTs akzeptieren es, aber normal dos nicht)

Das sieht mir eher nach einem Fehler in eine .BAT-Datei aus. Wen ich einfach c:/ in der Konsole eingeben, dann kommt der gleiche Fehler.

Ich denke, ich soll 'ppcross8086 PACMAN.lpr' nutzen.

Dann wird auch 'PACMAN.lpr' als erstes kompiliert.

Genau.
Wen du aber in bild.pas etwas änderst, dann müsste diese an erster Stelle sein.
Pascal kompiliert zuerst die Units und dann das Haupt-Programm.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Nixsager
Beiträge: 168
Registriert: Sa 8. Okt 2016, 08:38
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Polska

Re: Anleitung: FPC und MSDOS

Beitrag von Nixsager »

Außer der beschriebenen änderung habe ich nichts gemacht, somit macht das keinen Sinn.
Jeder der sagt, ich könnte programmieren, der hat noch weniger Ahnung vom programmieren als ich!!!

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

Re: Anleitung: FPC und MSDOS

Beitrag von Mathias »

Nixsager hat geschrieben:Außer der beschriebenen änderung habe ich nichts gemacht, somit macht das keinen Sinn.

Aber hast es wenigsten versucht ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Nixsager
Beiträge: 168
Registriert: Sa 8. Okt 2016, 08:38
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Polska

Re: Anleitung: FPC und MSDOS

Beitrag von Nixsager »

Da würde ich mich ja selbst widersprechen. ;)
In der IDE kriege ich ja die Meldung mit den Far-Zeigern. Von denen habe ich keine Ahnung.

Habe wegen der Datei 'MAUS.PAS' versucht sie in der IDE zu kompilieren, aber dort kann er die Unit 'Ports' nicht finden.
Jeder der sagt, ich könnte programmieren, der hat noch weniger Ahnung vom programmieren als ich!!!

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

Re: Anleitung: FPC und MSDOS

Beitrag von Mathias »

und was passiert mit folgendem Kommando ?

Code: Alles auswählen

c:\FPC\3.0.0\bin\i386-win32\ppcross8086.exe pacman.lpr

oder bei dir mit

Code: Alles auswählen

c:\FPC\3.0.0\bin\i386-win32\ppcross8086.exe pacman.pas
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Nixsager
Beiträge: 168
Registriert: Sa 8. Okt 2016, 08:38
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Polska

Re: Anleitung: FPC und MSDOS

Beitrag von Nixsager »

Das hier pasiert bei mir.
Jeder der sagt, ich könnte programmieren, der hat noch weniger Ahnung vom programmieren als ich!!!

Antworten