Programmieren für DOS/8086 mit Free Pascal?

  • Falls man (warum auch immer) für DOS noch selbst programmieren möchte, welche Hochsprache bietet sich da wohl an?


    Beruflich bin ich mit Python unterwegs und nutzte es auch ausgiebig in Hobby Projekten. Eigentlich stehe ich auf dem Standpunkt das man Python überall einsetzten kann... Aber das gilt eigentlich nur für halbwegs aktuelle Systeme...


    Es gibt zwar ein Python für DOS, heißt "PythonD" -> http://www.caddit.net/pythond/

    Aber sieht so aus, das dies nicht mehr aktuell gepflegt wird: Letzte Version ist aus 2005 und bietet somit nur die veraltete Python 2.4 Version an.

    Außerdem dürfte Python eh zu viel RAM kosten und einen zu großen "Overhead" haben, für alte DOS Rechner... Testen will ich das aber immer noch, aber mit Linux, dafür gibt es ja schon Projekt: Python per Linux auf 486/386er... ;)


    Wenn ich mich so umsehe, erscheint mit noch "Free Pascal" die beste Wahl zu sein, oder?

    Wäre charmant wenn man unter Linux für DOS programmieren könnte... Vermutlich könnte man das dann am schnellsten per DOSBOX "vortesten" ?!?


    Wie unter https://wiki.freepascal.org/DOS steht, ist eine ganze Menge möglich... u.a. gibt es den FPC Compiler für 8086 und GO32V2 für <=80368


    Siehe auch: https://wiki.freepascal.org/DOS#Tested_machines

    Zitat

    Tested machines

    Compiled programs have been tested and known to work on the following machines:

    • IBM PC 5150 (the first PC model ever), with a 4.77 MHz 8088 CPU, 512 KB RAM and a CGA card, running IBM DOS 3.30
    • HP 200LX, with a 7.91 MHz 80186 CPU, running MS-DOS 5.0
    • IBM PS/2 Model 30-286, with a 10 MHz 80286 CPU and an AMD 287 FPU, running MS-DOS 6.22
    • various boring 32-bit and 64-bit machines :)
    • DOSBox


    Offenbar wird der FPC Compiler auch aktuell gebaut: ftp://ftp.freepascal.org/pub/fpc/snapshot/trunk/i8086-msdos/ und wird noch aktuell dran entwickelt: https://svn.freepascal.org/cgi…8086/?sortby=date#dirlist


    Gibt es sonst noch OpenSource Hochsprachen die aktuell entwickelt werden und mit den man bis um 8086 kommt?

  • Ne, auf C hab ich keine Lust ;)


    Turbo Pascal wird IMHO nicht mehr weiter entwickelt. Und klar, BASIC geht auch... Aber das mache ich lieber auf meinem Dragon ;)


    Hab ein Freepascal "HelloWorld.pas" mit ppcross8086 kompiliert bekommen. In Doxbox läuft es auch. Will es gleich mal auf meinem 386 probieren...

    Hatte aber noch Probleme den crosscompiler zum laufen zu bekommen, siehe: https://www.lazarusforum.de/viewtopic.php?f=10&t=13123

  • Mit Pascal konnte ich mich nie sehr anfreunden.

    In der Ingenieurs Schule war Pascal Standard.

    Zu eng, zu eingeschränkt, zu formal.



    C stand ganz am Anfang.

    Es war Liebe auf den ersten Blick.

    Bis heute.


    Turbo Pascal ist ein guter Kompromiss.

    Die Syntax von Pascal und die Freiheiten und Möglichkeiten von C.

  • Funktioniert...


    fpc-3.2.0.x86_64-linux.cross.i8086-msdos.tar.xz download von https://freepascal.org/down/i8086/msdos.html und lokal ausgepacken. Info's dazu hier: https://wiki.freepascal.org/DOS


    Test programm code: test.pas

    Code
    program test;  // test.pas
    var
      i: Integer;
    begin
      for i := 1 to 10 do begin
        WriteLn(i, ' - Hello World !');
      end;
      WriteLn();
      WriteLn('Ende ;)');
    end.

    Kompilieren:


    Code
    jens@Intel4790K ~/FreePascal/u8086-msdos$ ./ppcross8086_large.sh test.pas
    + ./bin/ppcross8086 -vi -Tmsdos -WmSmall -Fu./lib/fpc/3.2.0/units/msdos/8086-small/rtl test.pas
    Target OS: MS-DOS 16-bit real mode
    Compiling test.pas
    Linking test.exe
    9 lines compiled, 0.0 sec, 13911 bytes code, 458 bytes data

    unter dosbox testen, einfach mit: dosbox test.exe


    ...und auf dem 368er sieht es dann so aus:


    • Offizieller Beitrag

    Also im Studium gabs bei uns ADA, FORTRAN und PASCAL. Letzteres mag ich immernoch gern.

    C hab ich nie richtig verstanden. Objektorintierung auch nicht :)


    Für DOS nutze ich heute wenn ich mal was programmiere immer gern Pascal.

    Für den 8088er am liebsten TP5.5, das ist schön fix.

    TP7.0 ist ein wenig zu lahm auf 4Mhz. Hat aber Fenster und Syntax Highlighting.

    Ab 286er würde ich TP7.0 nehmen.


    Ist doch egal ob es noch weiter entwickelt wird.

    Telex 563140 goap d

  • Turbo Pascal wird IMHO nicht mehr weiter entwickelt.

    Was will man den da noch weiterentwickeln. Das war damals schon gut.


    Bis auf das grottenlahme zeichenweise einlesen von Daten aus einer Datei. Nur deswegen habe ich dann oft zu Turbo-C gegriffen.

    Das erinnerte von der Geschwindigkeit irgendwie an das GET# von Commodore-Basic.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Turbo Pascal wird IMHO nicht mehr weiter entwickelt.

    Was will man den da noch weiterentwickeln. Das war damals schon gut.

    Naja, mit Freepascal komme ich von DOS/8088 bis zum aktuellen Rechner auf praktisch jedem Betriebsystem...

  • Du wirst aber kaum etwa, was auf einem aktuellen System "schön" sein soll, vernünftig auf einen 8086 oder 80286 umsetzen. Daher ist es wohl sowieso die erste Entscheidung, ob es für so eine alte Box sein soll - und wenn ja, dann ist es wohl auch nicht nötig, da einen Upgradepfad zu haben. Auf einem aktuellen System kann man dann nämlcih auch ganz prima Dosbox benutzen oder Wine.


    Viel interessanter würde ich ja finden, ob man gescheite Bibliotheken bekommt. Und das sollte Dir von Python bekannt vorkommen; die Sprache wäre ohne ihre ganzen import-Möglichkeiten auch nur eine weitere kleine Interpretersprache.


    Ich finde ja auch das TP 5.5 sehr gut für DOS. Würde aber, wenn, dann wohl auch heute eher das FreePascal nehmen wollen, mit der Idee, daß man es evtl. doch eben direkt auf auf aktuellem Gerät zum Laufen bekommt.


    Wichtig ist sowas wie SDL oder, gefällt mir gut für Basteleien, Allegro. Die sind dann auch hinreichend schnell an den Stellen, wo man evtl. selbst nicht besser wäre als die mitgelieferte Grafik des TP. Können aber auch I/O und teils 3D.


    Speziell für Pascal gab es immer mal noch so eine deutsche Grafikbibliothek GRAFPAS (?) oder so  GFX GrafkUnit von Mathias Roth . Von einem Einzelkämpfer, der die aber als eine Art PD im Netz hatte.



    Ansonsten - wenn Du Dich wirklich für was entscheiden willst, guck Dir wirklich mal noch C an.

    Das ist quasi ein Superset von Pascal ( deswegen auch gibt es so lustige Programme wie p2c d.h. den GNU Pascal Compiler ... ). Die Schreibweise ist anders - etwas klammerlastig, dafür fällt das nervige BEGIN END weg. Strukturiert bekommt man das genauso schön und es gibt wirklich für alles Compiler für diese Sprache. Für DOS dann gleich mehrere.

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

    2 Mal editiert, zuletzt von ThoralfAsmussen ()

  • also ich eh nicht die Zeit um große Projekte abzufangen. Wird, wenn überhaubt kleine mini tools...


    Eine Idee wäre es den Gegenpart zum ESP32 an RS232 zu programmieren... Mal sehen.


    Aber Fazit hier ist dann wohl das freepascal keine schlechte Wahl ist.

  • Richtig: FreePascal ist gut. Und hat auch eine ordentliche Oberfläche, für Leute, die das haben möchten.



    Und es würde mich sehr wundern, wenn man nicht Freepascal nach Delphi Wandler bekommt, womit man dann auch die andere große Pascal Variante bedienen kann.

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • Hier mal noch die Library - mittlerweile schon tatsächlich historisch und zur Dokumetantion oder "Bewahrung". Die Webseite findet man nur noch bei archive und die eMail geht schon lange nicht mehr.


    https://web.archive.org/web/20…ine.de/homepages/phoenix/


    Die Bibliothek kann sehr schön Linien, Kreise, Rectangle zeichnen. Aber zusätzlich auch Polygone und Bezierkurven. Sie hat einen brauchbare RAM to VideoRAM Copy Mode , den man auch andersherum benutzen kann, kennt DoubleBuffering und ein paar Importfunktionien (z.B. für BMPs). Außerdem ist einfaches Font Zeichnen möglich. Die Bedienung ist straight.forward und wie man das erwarten würde, wenn man schonmal die Borland Grafik TPU ausprobiert hat.


    Sehr schönes Teil ! Ist Opensource für eigene Projekte. Sobald es kommerziell wird, möchte der Auto aber gerne beteiligt werden und bittet daher für diesen Fall um Rückfrage; sieh readme.txt . Für private Sachen ist das Teil uneingeschränkt empfehlenswert. Und flott ist es auch.



    Wenn jemand die an einer neuen Stelle im Netz findet, dann bitte mal einen Hinweis geben.

  • Und der FreePascal Editor/Compiler/Debugger läuft dann auf dem DOS-Rechner?

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Wenn man alte Geräte oder ISA Karten auf einem PC programmieren möchte würde ich zu TP 5.5 greifen. Da ist die aufwärts Kompatibilität nämlich eh möglich... und ja das würde ich stilecht auf dem PC proggen. Das muß ich im Winter für z.B. einen alten EPROMMER tun, da der an einem 755c Thinkpad leider auf Grund der Prozessorgeschwindigkeit und des etwas anderen Timings der Parallelschnittstelle, nur am alten XT läuft. Das möchte ich aber gerne ändern.

    Gruß Torsten

    BFZ MFA, ZX80Core, AX81, ZX81, ZX81NU, Spectrum+, Harlequin, MSX VG8010, Amstrad NC100, Cambridge Z88, C64, C128D, Amiga 500 & 1200, Atari Portfolio, HP200LX, IBM PC5155, TP755c, TP755cx, T20, T41, T61, PS/2 (Model 40SX), PS/2E, Accura 101, Apple //e, Sharp PC1401 & PC1403H, TI59 m. PC-100c, HP48SX & HP48GX


    An die Person, die meine Schuhe versteckt hat, während ich auf der Hüpfburg war: Werd' erwachsen! :motz:


    ::matrix::

  • Das habe ich auch vor, sobald ich mal dazu gekommen bin, mir einen PC im Gehäuse zusammen zu bauen. Turbo Pasal und Turbo C direkt auf dem PC. :thumbup:

    Und da ich auch Hardware ansteuern will, wäre das mit einem Cross-Compiler auch eher suboptimal.


    Mit dem Compiler, womöglich unter Windows, das mache ich ja sowieso jeden Tag. Das wäre dann nur ein anderes Zielsystem. :nixwiss:

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Weiß auch nicht wie kompatibel irgendein verfügbares "DOS" Pascal mit freepascal ist.

    Ich meine ich hab noch ein borlandpascal hier...

    Du meinst, wie kompatibel irgendein Free Pascal mit Borland/Turbo Pascal ist. Turbo Pascal ist das original. :mrgreen:

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • (klugsch...ON) Nein, nein, nein. Das Original ist doch das Wirth Pascal und davon dann die ersten Ableitungen. Das Turbo Pascal ist nur ein wilde Mishcung von allem was gut ist in einer schönen Darreichungsform und sehr funktional , insbesondere in den Versionen vor der 7 (Achtung: hintergründiger Witz).(OFF)


    Link http://pascal.hansotten.com/ , mit neuer Abteilung zu UCSD p .

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • (klugsch...ON) Nein, nein, nein. Das Original ist doch das Wirth Pascal und davon dann die ersten Ableitungen. Das Turbo Pascal ist nur ein wilde Mishcung von allem was gut ist in einer schönen Darreichungsform und sehr funktional , insbesondere in den Versionen vor der 7 (Achtung: hintergründiger Witz).(OFF)


    Link http://pascal.hansotten.com/ , mit neuer Abteilung zu UCSD p .

    Ja, das stimmt natürlich. Wirth Pascal war natürlich DAS Original (logischerweise) und UCSD Pascal war auch vorher. Aber die waren mehr oder weniger nur akademisch nutzbar. Also auf dem PC jedenfalls. Auf anderen Systemen kenne ich mich nicht aus.


    Mit Turbo Pascal konnte man wirklich produktiv arbeiten. Deswegen wurde es zum Standard. Alles was danach kam, hat bei Turbo Pascal abgeschaut. ;)

    Auch Free Pascal wirbt mit Turbo-Pascal-Kompatibilität: "The language syntax has excellent compatibility with TP 7.0 as well as with most versions of Delphi"

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

    2 Mal editiert, zuletzt von detlef ()

  • Es gab für Dos einen sehr guten freien Modula 2 Compiler. Hat sehr an die alten TP Versionen erinnert. War aber meines Wissens nicht Opensource.


    Es gab auch ein tolles Scheme.


    Und dann natürlich XLisp.

  • Wenn man hier drei Leute fragt, bekommt man vier Antworten ... so scheint es jedenfalls ;)


    Ich würde empfehlen, bei DOS-Programmierung mit den Borland Compilern anzufangen.

    Also Turbo PASCAL oder Turbo C - die gibt's bei Embarcadero auch in einer freien Version, oder Googlen hilft dabei auch.

    Die Entwicklungsumgebung (IDE) hilft dabei erheblich, man braucht keinen zusätzlichen Editor und es ist es auch ein Debugger dabei.

    Und es gibt eine Unmenge Programmierbeispiele.


    Alles andere ist für mich exotisch bzw. brotlose Kunst. Selbst QB/QBASIC ist eher von historischem Interesse und nicht wirklich geeignet, modular und klar strukturiert arbeiten zu können.

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

  • Alles andere ist für mich exotisch bzw. brotlose Kunst. Selbst QB/QBASIC ist eher von historischem Interesse und nicht wirklich geeignet, modular und klar strukturiert arbeiten zu können.

    So sehr ich auch ein Verfechter der strukturierten Programmierung bin, habe ich damals auch viel mit QB und QBASIC gemacht und würde es heute für bestimmte Dinge auch wieder verwenden. Z.B. ist die Unterstützung der seriellen Schnittstelle mit allen Einstellmöglichkeiten unübertroffen.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • detlef : Das ist ein echter Sonderfall - die serielle Schnittstelle wird in (Q)BASIC tatsächlich gepuffert ausgelesen, und in genau diesem Fall würde ich auch wahrscheinlich (Q)BASIC nutzen, aber das sagt noch nichts darüber aus, ob der Rest der Sprache und des Compilers (bzw. Interpreters in diesem Fall) für alle anderen Fälle besser geeignet ist. Und oft wird halt in BASIC nur Spaghetti-Code programmiert, also alles monolitisch in einem Programm, viele GOTOs und am Besten nur globale Variablen. Nee Danke, für große Softwareprojekte ein Graus.

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

  • Also das stimmt mal nun so gar nicht, daß mir BASIC nur Spaghetti programmiert wird. Im Gegenteil, viele neuere BASIC Dialekte sind extrem gut strukturiert unterwegs und das sieht eigentlich nicht anders aus als bei Pascal. Nur die Wörter sind bißchen anders und es gibt evtl. so Konstrukte wie Mengen nicht. BBC BASIC oder GFA BASIC etwa. VisualBasic ist auch sowas und schon das QBasic nötigt einem das lokale Variablensystem geradezu auf.


    Die ganzen M$ Basic's der vielen Homecomputer auf die sich diese Krtik eigentlich wohl bezieht und evtl. die drei großen Sachen für PDPs o.ä. sind da natürlich außen vor, aber alles spätere ist eigentlich diesbezüglich bestens unterwegs - und die Leute haben es auch i.a. benutzt.


    Daß man für Programme mit 4 Bildschirmseiten jetzt nicht mit sowas anfängt oder gar objektorientiert unterwegs sein will, ist m.E. auch durchaus verständlich.


    Das QBasic hat z.B. auch schon so Konstrukte für automatishes "Event"-bearbeiten. Wobei man zugeben muß, daß es nicht so richtig gut funktioniert, aber der Ansatz ist schonmal da.


    GOTOs hat schon um 1990 herum niemand ernsthaft mehr benutzt ...



    Pascal ist trotzdem die bessere Wahl, wenn es was ernsteres werden soll. Schon weil es brauchbare Compiler gibt, die heut mehr oder weniger "free" sind.

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • Virtual Basic bietet sogar ein Klassen Modell, also Objekt orientierte Programmierung mit Ableitungen etc.


    Mengen?

    Es gibt Listen, also Arrays mit dynamischer Größe und Strings oder Zahlen als Index.


    Seit .net kann man sogar beliebig die Sprachen mischen.

  • So habe ich das auch in Erinnerung, daß Visual BASIC mit "BASIC" bis auf die "Notation" nicht mehr gar so viel zu tun hat - und ansonsten weit darüber hinausgeht. Und evtl. daß man nicht alle Variablen ansagen muß, wobei es aber die meisten PRGs doch machen, schon wegen der Vorbelegung.


    Mengen?

    Es gibt Listen, also Arrays mit dynamischer Größe und Strings oder Zahlen als Index.


    Ich meinte so "richtig" Mengen. Also, daß man einfach eine Reihe von Ausdrücken/Namen zu etwas zusammenfaßt und dann nur das als Inhalte benutzt. Entspricht quasi dem enum in C - ist aber bei Pascal noch ein wenig abgehobener.


    Standardbeispiel ist i.a. die Ampel mit ( rot, gelb, grün ) oder Spielkarte mit ( kreuz , herz , pik , karo ). Man könnte aber genausogut die natürlichen Zahlen auf sich selbst abbilden oder Buchstabenmengen definieren.

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • Du meinst sicherlich Visual BASIC, nicht Virtual Basic ;)

    Im Hobby-Bereich war und ist sicherlich auch noch Visual BASIC bis in die Gegenwart im Einsatz/beliebt.

    Kommerziell ist aber BASIC, egal welches Dialekt, schon lange tot.

    Alle großen Softwareprojekte sind meist in Java, C++ und C#, Javascript oder vor auch in Python programmiert .

    Suche mal auf github oder sf nach Softwareprojekten, die in BASIC geschrieben sind.... viel Spaß beim Suchen.


    Aber ich denke, hier im Thread ging es nicht um das "ernsthafte" Anwenden und Projekte stemmen, sondern um den hobbymässigen Einsatz.

    Da es aber um DOS ging, ist GFA BASIC oder BBC BASIC keine Option, und das Visual BASIC für DOS gab es auch nur in einer Version, bevor es den Kram nur noch für Windows gab.

    Für mich ist BASIC dennoch nur noch von historischem Belang. Aber das muss ja nicht schlecht sein. Hier geht's ja auch um historische Rechner ;)

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

  • wenn "strukturiertes Basic" strukturiert ist, hat es mit Basic aber nur noch den Namen gemein😉

    Genauso war Pascal nach Jensen/Wirth außer Lehrzwecken zu nix zu gebrauchen: "Why Pascal is Not My Favorite Programming Language" https://www.cs.princeton.edu/~…l.mirror/notfavorite.html