Anleitung: FPC und MSDOS Cross-Compiler

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut

Anleitung: FPC und MSDOS Cross-Compiler

Beitragvon Mathias » 21. Okt 2016, 19:49 Anleitung: FPC und MSDOS Cross-Compiler

Ich wollte probieren, ob ich ein MSDOS-Programm hinkriege.

Dazu habe ich folgendes unter WinXP installiert:
ftp://gd.tuwien.ac.at/languages/pascal/fpc/dist/3.0.2/i386-win32/fpc-3.0.2.i386-win32.cross.i8086-msdos.exe
ftp://gd.tuwien.ac.at/languages/pascal/fpc/dist/3.0.2/i386-win32/fpc-3.0.2.i386-win32.exe
Achtung, Links können sich ändern, wen ein neues FPC kommt.

Anschliessend muss man noch
http://www.stack.nl/~marcov/fpc-i8086-msdos-r25379.zip
runterladen.

Aus diesem Archiv kopiert man folgende Dateien in C:\FPC\3.0.0\bin\i386-win32: ( Befinden sich in .\pp16\bin )
Code: Alles auswählen
msdos-wlib.exe
msdos.wlink.exe
wlibd.dll
wlinkd.dll

dann muss man noch die beiden Dateien umbennen
Code: Alles auswählen
msdos-wlib.exe -> wlib.exe
msdos.wlink.exe -> wlink.exe


Zum ausprobieren habe ich ein HelloWorld geschrieben.
Code: Alles auswählen
program test;  // test.pas
uses
  Crt;
var
  i: Integer;
begin
  for i := 1 to 15 do begin
    TextAttr := i;
    WriteLn('Hello World !');
  end;
  WriteLn();
  WriteLn();
  TextAttr:=$07;
  WriteLn('<Taste> = weiter');
  repeat
  until KeyPressed;
end.


Kompilieren muss man es noch mit
Code: Alles auswählen
ppcross8086 -WmLarge test.pas

-WmLarge ist wichtig, wen man das gleiche Speichermodell wie von Turbo-Pascal will.
Macht sich besonders bemerkbar, wen Speicher hin und her schiebt, zB. VRAM. In ASM macht es sich mit LDS und LES bemerkbar.


Anschliessend habe ich die EXE im DOSBox Emulator laufen lassen, und siehe da es hat geklappt. :shock: :D
Zuletzt geändert von Mathias am 21. Nov 2017, 18:02, insgesamt 4-mal geändert.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3783
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Marsmännchen » 22. Okt 2016, 11:58 Re: Anleitung: FPC und MSDOS

Sorry, wenn ich blöd nachfragen muss :oops:

Normalerweise baut und kompiliert man sich seine Konsolenapplikationen ja direkt in Lazarus. Also was bewirkt der ganze Aufwand, den du da betreibst?
Ich mag Pascal...
Marsmännchen
 
Beiträge: 293
Registriert: 4. Mai 2014, 20:32
Wohnort: Berlin
OS, Lazarus, FPC: Ubuntu 16.04, FPC 3.0.2, Lazarus 1.6.4 | 
CPU-Target: 64bit
Nach oben

Beitragvon Mathias » 22. Okt 2016, 13:07 Re: Anleitung: FPC und MSDOS

Du verwechselst Konsole mit MSDOS.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3783
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Nixsager » 22. Okt 2016, 20:44 Re: Anleitung: FPC und MSDOS

Mathias ic h hätte mal da ein paar Fragen.

1. Gibt es noch eine neue Version für DOS von FP?

2. Wieso hast dur es installiert?

2. Wenn Windows 9X nicht mehr unterstützt wird, wieso dann DOS?
Jeder der sagt, ich könnte programmieren, der hat noch weniger Ahnung vom programmieren als ich!!!
Nixsager
 
Beiträge: 159
Registriert: 8. Okt 2016, 07:38
Wohnort: Polska
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon Marsmännchen » 22. Okt 2016, 21:26 Re: Anleitung: FPC und MSDOS

Mathias hat geschrieben:Du verwechselst Konsole mit MSDOS.

Lässt sich das vielleicht mit wenigen Worten erklären?
Ich mag Pascal...
Marsmännchen
 
Beiträge: 293
Registriert: 4. Mai 2014, 20:32
Wohnort: Berlin
OS, Lazarus, FPC: Ubuntu 16.04, FPC 3.0.2, Lazarus 1.6.4 | 
CPU-Target: 64bit
Nach oben

Beitragvon compmgmt » 22. Okt 2016, 21:42 Re: Anleitung: FPC und MSDOS

Marsmännchen hat geschrieben:
Mathias hat geschrieben:Du verwechselst Konsole mit MSDOS.

Lässt sich das vielleicht mit wenigen Worten erklären?

MS-DOS ist ein Betriebssystem. Die Windows Konsole nur ein Terminal. Hier eine genauere Erklärung:

Die Konsole (cmd) ist der Befehlszeilenprozessor unter Windows NT (Windows NT 3.x, NT 4.x, 2000, XP, Vista, 7, 8, 8.1, 10 und die zugehörigen Server-Versionen).
MS-DOS ist ein Betriebssystem. Windows 1.x, 2.x, 3.x und 9x sind nur Grafische Oberflächen für MS-DOS gewesen.
Der Prozesseinstiegspunkt "SignaturLaden" in Signatur.dll konnte nicht gefunden werden.
compmgmt
 
Beiträge: 308
Registriert: 25. Nov 2015, 17:06
Wohnort: in der Nähe von Stuttgart
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4 | 
CPU-Target: i386 + x86_64
Nach oben

Beitragvon marcov » 22. Okt 2016, 22:57 Re: Anleitung: FPC und MSDOS

Free Pascal nennt 16-bit dos "msdos". 32-bit Dos ist "go32v2".
marcov
 
Beiträge: 1028
Registriert: 5. Aug 2008, 08:37
Wohnort: Eindhoven (Niederlande)
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk) | 
CPU-Target: 32/64,PPC(+64), ARM
Nach oben

Beitragvon Mathias » 23. Okt 2016, 16:10 Re: Anleitung: FPC und MSDOS

2. Wieso hast dur es installiert?

Ich wollte es einfach mal ausprobieren, so wie ich es im ersten Post geschrieben habe.

Windows 1.x, 2.x, 3.x und 9x sind nur Grafische Oberflächen für MS-DOS gewesen.

Windows Millenium gehört da auch noch dazu. :wink:
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3783
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Mathias » 23. Okt 2016, 19:06 Re: Anleitung: FPC und MSDOS

Ich habe es unterdessen geschaft, das Programm direkt in Lazarus zu kompilieren.

Nur das starten ist ein Problem, ich habe verschiedenes bei Startprogramm ausprobiert,

C:\Programme\DOSBox-0.74\DOSBox.exe
C:\Programme\DOSBox-0.74\DOSBox.exe ($TargetCmdLine)

Wen ich es manuell in der Konsole mit,
Code: Alles auswählen
C:\Programme\DOSBox-0.74\DOSBox.exe  test.exe

mache, wird das Programm in der DOSBox gestartet.

Jemand eine Idee, was ich bei Startprogramm eingeben muss.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3783
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Marsmännchen » 23. Okt 2016, 20:05 Re: Anleitung: FPC und MSDOS

compmgmt hat geschrieben:Die Konsole (cmd) ist der Befehlszeilenprozessor unter Windows NT (Windows NT 3.x, NT 4.x, 2000, XP, Vista, 7, 8, 8.1, 10 und die zugehörigen Server-Versionen).
MS-DOS ist ein Betriebssystem. Windows 1.x, 2.x, 3.x und 9x sind nur Grafische Oberflächen für MS-DOS gewesen.


Danke :D . Dass DOS eine BS ist, war mir klar, schließlich habe ich es selbst noch auf meinen 386er SX gehabt (incl. Win 3.11 und Office 4.2... = 42 Disketten zu installieren :roll: ). Aber meine Vorstellung der Konsole/Eingabeaufforderung war völlig falsch. Ich dachte, das wäre eine Art DOS in der Box. Man lernt nie aus 8)
Ich mag Pascal...
Marsmännchen
 
Beiträge: 293
Registriert: 4. Mai 2014, 20:32
Wohnort: Berlin
OS, Lazarus, FPC: Ubuntu 16.04, FPC 3.0.2, Lazarus 1.6.4 | 
CPU-Target: 64bit
Nach oben

Beitragvon Mathias » 23. Okt 2016, 22:07 Re: Anleitung: FPC und MSDOS

Das ist schon dast wie in Turbo-Pascal Zeiten. 8)
Code: Alles auswählen
program test;
{$ASMMODE   intel}
uses
  Crt;
begin
  asm
    mov ax,$13  // Grafik-Modus mit 256 Farben
    int $10
  end;
  repeat
    Mem[$A000:random(64000)] := random(256);
  until KeyPressed;
end.

Demnächst probiere ich mal, ob ich ein älteres Programm kompilieren kann, welches ich dazumal mit TB entwickelt habe und Assembler enthält. :idea:
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3783
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon compmgmt » 24. Okt 2016, 09:27 Re: Anleitung: FPC und MSDOS

Mathias hat geschrieben:
Windows 1.x, 2.x, 3.x und 9x sind nur Grafische Oberflächen für MS-DOS gewesen.

Windows Millenium gehört da auch noch dazu. :wink:

Windows Me gehört zu 9x :wink:
"Microsoft Windows Me ist das letzte von Microsoft veröffentlichte Betriebssystem aus der Windows-9x-Linie, die auf MS-DOS aufsetzt." (https://de.wikipedia.org/wiki/Microsoft_Windows_Millennium_Edition)
Der Prozesseinstiegspunkt "SignaturLaden" in Signatur.dll konnte nicht gefunden werden.
compmgmt
 
Beiträge: 308
Registriert: 25. Nov 2015, 17:06
Wohnort: in der Nähe von Stuttgart
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4 | 
CPU-Target: i386 + x86_64
Nach oben

Beitragvon Nixsager » 24. Okt 2016, 13:11 Re: Anleitung: FPC und MSDOS

Marsmännchen hat geschrieben:Ich dachte, das wäre eine Art DOS in der Box. Man lernt nie aus 8)

So weit ich mich nicht irre, ist das ab Windows XP in der 32 Bit-Version so.
Bei den Dos-Windows ist das glaube ich anders.
Ich verstehe nicht, wieso DOS-Programme bei 64 den Bit-Versionen nicht gehen.
Jeder der sagt, ich könnte programmieren, der hat noch weniger Ahnung vom programmieren als ich!!!
Nixsager
 
Beiträge: 159
Registriert: 8. Okt 2016, 07:38
Wohnort: Polska
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon compmgmt » 24. Okt 2016, 15:42 Re: Anleitung: FPC und MSDOS

Nixsager hat geschrieben:
Marsmännchen hat geschrieben:Ich dachte, das wäre eine Art DOS in der Box. Man lernt nie aus 8)

So weit ich mich nicht irre, ist das ab Windows XP in der 32 Bit-Version so.
Bei den Dos-Windows ist das glaube ich anders.
Ich verstehe nicht, wieso DOS-Programme bei 64 den Bit-Versionen nicht gehen.

ab Windows 3 wurde DOS-Windows und Windows NT parallel programmiert. Windows NT war schon immer 32-Bit. Ab Windows 3 für DOS (oder 95, ich weiß es nicht genau) gab es ein sogenanntes "386 enhanced module". Dadruch lief eine 32-Bit grafische Oberfläche auf einem 16-Bit MS-DOS (ich weiß aber nicht wie genau das technisch funktioniert hat).

Warum 16-Bit Programme auf 64-Bit Windows nicht laufen, kann ich dir sagen.

Unter einem 32-Bit Windows gibt es ein WOW (Windows on Windows), welches 16-Bit Programme ausführen kann. Zusätzlich gibt es hier noch die NTVDM (New Technology Virtual DOS Machine), welche ein MS-DOS emuliert.
Unter einem 64-Bit Windows gibt es ein WOW64 (Windows on Windows64), welches 32-Bit Programme ausführen kann.

Um 16-Bit Programme unter Win64 ausführen zu können müsste man also ein Windows on Windows on Windows haben.

EDIT: die cmd.exe (Eingabeaufforderung) eine PE-Win32-Anwendung, command.com (DOS Prompt) ist eine COM-Anwendung. Mehr dazu hier:
https://de.wikipedia.org/wiki/Portable_Executable
https://de.wikipedia.org/wiki/COM-Datei

EDIT 2: Der PersistentHandler für die Dateiendungen exe und com sind die gleichen, d.h. com und exe Dateien sind identisch. Trotzdem ist die command.com eine DOS-EXE (MZ), während die cmd.exe eine NT-EXE (PE) ist.
Zuletzt geändert von compmgmt am 24. Okt 2016, 18:11, insgesamt 1-mal geändert.
Der Prozesseinstiegspunkt "SignaturLaden" in Signatur.dll konnte nicht gefunden werden.
compmgmt
 
Beiträge: 308
Registriert: 25. Nov 2015, 17:06
Wohnort: in der Nähe von Stuttgart
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4 | 
CPU-Target: i386 + x86_64
Nach oben

Beitragvon Mathias » 24. Okt 2016, 17:45 Re: Anleitung: FPC und MSDOS

Ich verstehe nicht, wieso DOS-Programme bei 64 den Bit-Versionen nicht gehen.
Weil M$ dies nicht für nötig hält, technisch kein Problem.
In dieser Richtung ist Linux mit Wine sogar kompatibler als M$ selbst, dort laufen 16,32 und 64Bit Programme. Immerhin gibt es noch den DOSBox Emulator, da laufen auch echte DOS-Programme.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3783
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

» Weitere Beiträge siehe nächste Seite »
Nächste

Zurück zu Freepascal



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried