Fehlermeldung "Nicht unterstützte 16 Bit-Anwendung



  • Pastebin.com ist ganz gut zum quelltext zeigen



  • Hallo Bashar und alle anderen, kann bzw. darf man bei
    diesem Forum über Mail Adressen kommunizieren?
    Dann würde ich die ganze Datei versenden und wer kann
    und mag schaut sich das Dilemma einfach mal komplett an.
    Schon mal vielen Dank. LG jueppes



  • Normalerweise unterstützt C Plattformunabhängigkeit. Dafür wurde die Sprache ja u.a. entwickelt.
    Spannend ist jetzt der Teil, der nicht übertragbar ist.

    Das kann Betriebssystemcode sein, welcher auf den Prozessor zugeschnitten ist, oder bestimmte andere Prozessorbefehle, Anleihen von Bios-System oder auch Formatangaben, (die im Hexeditor angezeigt werden (beim fertigen Programm), oder eben (z.B.) der Import von bestimmten 16-Bit Programmen (Interrupts, Steuerbefehle exotischer Plattformen z.B.).

    Für solche Fälle gibt es aber einschlägige Werkzeuge und Crosscompiler.
    Es gibt auch zahlreiche Anleitungen im Internet, wie bei bestimmten Plattformen crosscompiliert wird.

    Eine andere Strategie ist Emulatoren einzusetzen bzw. Kompatibilitätsmodi.

    (Eine recht einfache Problemlösung (bei Pentiums) könnte sein, das Programm zuerst auf einem 32bit-System anzuschauen und zu bearbeiten.)
    (bzw. mit dem Compiler nach 32bit übertragen)

    Auf https://www.mikrocontroller.net werden solche Probleme öfters angesprochen, und dort gibt es auch die Möglichkeit, Dateien hochzuladen/anzuhängen.

    Ich würde aber nicht empfehlen, das komplette Programm hineinzustellen. Es reicht völlig, den problematischen Teil zu skizzieren/ Plattform/Betriebssystemangaben ausreichend zu beschreiben.



  • Hallo Nachtfeuer und alle anderen Leser,
    erst mal Danke für die ausführliche Antwort.
    Ich werde versuchen mich da morgen mal ordentlich einzulesen.
    Aber jetzt die Frage, wäre jemand bereit mich bei der Umsetzung
    (auch gegen Unkosten Erstattung oder Aufwandsentschädigung)
    zu unterstützen? Für einen Profi ist es vielleicht nur eine
    Kleinigkeit das Programm ans laufen zu bekommen.
    Ich werde mich da noch mal richtig reinhängen.
    Bis Morgen, schönen Abend noch. jueppes



  • suche Hilfe bei einem (kleinen) C++ Projekt, NRW/Duisburg

    nicht an mehreren Stellen im Forum um Hilfe fragen

    kannst du deinen Quelltext einfach bei pastebin.com reinstellen und die pastebin-Link hier posten?



  • also:

    0. Was macht das Programm?
    1. Quelltext bei pastebin.com rein
    2. was ist das Original-Entwicklungs-System, DOS und Turbo-C?
    3. Es ist also eine 16-Bit Anwendung?
    4. Gibt es Hardwarezugriff? RS232, BIOS/Interrupts usw.?
    5. Wieviel Zeilen Code sind es denn? 100, 100, 1Mio?



  • Guten Morgen, so habe den Quelltext bei pastebin reingestellt.
    Sollte man unter DDCMP.C finden. (Was ist mit der Header Datei?)
    Es sind 1410 Zeilen. Das Programm sollte so genannten EVADTS Daten
    aus einem Automaten auslesen und über die RS232 in eine Datei ausgeben.
    Die Daten werden vom Programm geparst und sichtbar gemacht.
    Habe hoffentlich alle Fragen beantwortet. Sonst einfach nochmal
    nachfragen. Schon mal vielen Dank für die Hilfe, jueppes



  • sorry ganz vergessen hier der pastebin Link.

    https://pastebin.com/TLZqDKFw

    schönen Sonntag, jueppes



  • Das ist kein compilierbarer Stand und obendrein schlimmes Gehacke.
    Die Header fehlen, evtl. fehlen auch noch Libs?
    Wenn die Lizenzbedingungen es hergeben, lade es in Github hoch und hoffe, dass sich dann jemand des Problems annimmt.



  • Hallo Wutz, erst mal Danke für deine Hilfe.
    Ja 20 Jahre altes Programm, was kann ich zur
    Unterstützung der Umsetzung beitragen? MFG jueppes



  • Welche externen Libs sind denn noch dabei (anscheinend über die Headerdatei "asynch_1.h" eingebunden)?
    Und hast du auch noch die Sourcen davon?

    Ich gehe davon aus, daß die Libs (DLLs) selbst als 16-Bit kompiliert sind und daher daraus dann keine 32- oder 64-bit Anwendung erstellt werden kann.

    Und welche Windows-Version hast du?

    PS: Hast du denn überhaupt (noch) einen Rechner mit einem nativen RS232-Anschluß? Oder benutzt du einen "USB Seriell RS232 Adapter"?



  • Hallo,

    da gehört noch eine Library dazu. Wir sehen hier nur, dass ein Header "asynch_1.h" eingebunden wird. Die wird man vermutlich nicht zum Laufen kriegen, d.h. man wird das ganze RS232-Handling durch ein modernes Äquivalent ersetzen müssen. Das läuft also auf Reverse-Engineering hinaus.

    Ich schätze, zusätzlich zur reinen Anpassung an moderne Systeme werden folgende Schwierigkeiten hinzukommen:

    • Crashes wegen unsauberem Pointer-Gefummel, was zu DOS-Zeiten einfach nicht aufgefallen ist
    • man müsste es im Zusammenspiel mit der Hardware testen und debuggen, die hast aber nur du zur Verfügung

    Als Option würde ich erwägen, einen DOS-Rechner anzuschaffen und das im Original zu betreiben. Der Digital Mars Compiler kann das vielleicht übersetzen, so dass man nicht auf dem DOS-Rechner arbeiten muss.

    http://www.digitalmars.com/download/freecompiler.html

    Nur so ein paar Ideen.



  • Darüberhinaus wäre die dos.h zu ersetzen, falls man zu Fuß übersetzen muss.
    Die Digital Mars-Seite schreibt zu seiner dos.h:

    These are interfaces to the DOS operating system. They generally correspond directly to DOS API calls. They are not portable to operating systems other than DOS.

    ( http://www.digitalmars.com/rtl/dos.html )

    Es könnte aber schon reichen, zum Übersetzen ein 32Bit Windows zu nehmen (weil z.B. Windows Vista 32 recht gute Dos-Kombatibilität hatte bzw. z.B. bei einigen schwierigen Vertretern wie exe2bin ( https://de.wikipedia.org/wiki/EXE2BIN ) mitgemacht hatte ohne meckernd den Dienst zu versagen.)
    Bei schwierigen .com Programmen mit Grafik wollte aber die Grafikkarte nicht mehr so recht mitmachen weswegen
    -> Dosbox https://www.dosbox.com auch noch einen Platz auf der Platte bekommen hatte.



  • Hallo an Alle, super vielen Dank für die Anregungen und Hinweise.
    Jetzt mal von Anfang an, ich habe von diesem EVADTS Verein eine
    komplette Datei per Mail gesendet bekommen. Diese beinhaltet ein
    Programm in C/C++ welches ich zum auslesen der RS232 benutzen wollte.
    (gerne sende ich Euch oder Interessenten die Datei per Mail)
    Auf meinem Computer Windows7 64bit bekomme ich das Programm weder
    mit Visual Studio noch mit Code : Blocks ans laufen. Keine Chance

    Die Maschine sendet die Daten über das Menü "Daten an
    Drucker senden" auch als ASCI Files über die serielle Schnittstelle.
    Das klappt super und ist auch ganz einfach, man kann dann über ein
    Terminalprogramm die Daten einlesen und sofort weiterverarbeiten.
    Leider sind die ASCI Daten nicht komplett bzw. nur ein kleiner Teil.
    Deshalb die Suche nach einem Programm mit dem ich die Daten komplett
    auslesen kann. Dieses Programm von EVADTS ist wohl über 20 Jahre alt.
    So und jetzt die Gretchenfrage: Soll ich versuchen die alte Version
    ans laufen zu bekommen oder soll ich was neues machen? Programme die
    die RS232 Schnittstelle abfragen gibt es schon und sind auch nicht
    so kompliziert Aber ich muss ja auch noch die Daten parsen und um so was
    allein zu programmieren fehlt mir das Wissen und die Zeit, deshalb suche
    ich hier jemanden der mich bei diesem Projekt unterstützt. Wenn jemand
    Lösungsvorschläge hat "Bitte melden" Liebe Grüße jueppes



  • - du kannst versuchen, dein unverändertes Programm in einem DOS-Emulator laufen zu lassen
    - Portierungsversuche klappen prinzipiell nur, wenn du die kompletten Sourcen (d.h. die aller externen Libs) hast
    - und auch dann solltest du prüfen, wieviel DOS-Abhängigkeiten vorhanden sind (typischerweise haben die 16-Bit Jünger damals gern direkt irgendwelche Register beschrieben, Interrupts umgebogen oder gar direkt auf irgendwelche festen Speicheradressen geschrieben)
    - du darfst dein Thema nicht aus den Augen verlieren - du willst keinen DOS-Emulator schreiben sondern dein Programm unter Win32 zum Laufen bringen und deshalb prüfe, wieviele reine DOS-Abhängigkeiten (ohne RS232) vorhanden sind und entscheide, ob du das schaffst
    - wie du richtig erkannt hast gibt es haufenweise Win32-Libs für RS232, du musst dann nur in der Lage sein, diese RS232-Abhängigkeiten in dem alten Programm zu lokalisieren und auf deine neue RS232-Lib umzubiegen - dabei stellt sich natürlich auch die prinzipielle Frage - soll es noch eine Portierung werden und doch gleich eine Neuimplementierung; das hängt von deiner Einschätzung ab, wieviel aus deinem alten Programm ausserhalb der RS232 für dich wichtig ist



  • du bist sehr unklar in deiner Kommunikation:

    ich habe von diesem EVADTS Verein eine
    komplette Datei per Mail gesendet bekommen. Diese beinhaltet ein
    Programm in C/C++ welches ich zum auslesen der RS232 benutzen wollte.
    (gerne sende ich Euch oder Interessenten die Datei per Mail)

    was ist eine "komplette Datei"?

    (gerne sende ich Euch oder Interessenten die Datei per Mail)

    Ist das ein anderes C/C++ als das auf pastebin oder warum sonst sollte die Mail relevant sein?

    du beantwortest fast keine Fragen eindeutig und es ist noch immer unklar was du jetzt gerade überhaupt an Dateien/Programmen hast?

    1. Hast du ein DOS-Program? Fehlermeldung "Nicht unterstützte 16 Bit-Anwendung" deutet stark darauf hin - du hast es aber noch nicht klar gestellt und redest nur ständig von Quelltext den du bekommen hast

    ein Programm ist kein Quelltext

    2. wie viele Quelldateien sind es denn jetzt 1 oder mehrere?
    - in dem pastbin-Quelltext wird auf Dateien verwiesen die du nicht auf pastebin
    gestellt hast - hast du die oder ist das Programm gar nicht kompilierbar

    3. hast du nur die pastebin-Quelltextdatei von dem Verein bekommen? Woher hast
    du dann die DOS-Exe?

    Es kann doch echt nicht so schwer sein deutlich und eindeutig klar zu stellen was sich genau und in welchem Umfang in deinem Besitzt befindet - für den Anfang wäre das schon mal nicht so schlecht - es schreckt Leute massiv ab wenn man dir schon für solche minimal-Details tausend Fragen stellen muss



  • sorry, alles komplett neu für mich.
    da sind rudimentäre Kenntnisse in Basic,VB, HTML, PHP,
    C, C++ nicht hilfreich, ich hätte mich auf eine Sache
    konzentrieren sollen, aber ich gelobe Besserung:
    Ich will auch keinen abschrecken sondern Hilfe finden.
    Also wenn ich von der "Datei" die ich bekommen habe spreche,
    meine ich einen Ordner mit Object File Library, Object File,
    Header file und C source file. Bei pastebin habe ich nur die
    C source File Datei eingestellt. Es wäre bestimmt einfacher
    den ganzen Ordner per Mail zu versenden, oder? schon mal Danke jueppes



  • 1. Eine dos exe hast du doch auch, oder?
    2. Hast du ein dos system oder irgendwas wo die dos exe laeuft z.b. dos,win3.11,win95,win98,2000 oder sowas und mit deiner hardware richtig kommuniziert? Ein funktionierendes system ist sehr wichtig fuer tests wenn man nachprogrammiert, ohne das wird es ungleich schwieriger

    2 fragen gleich 2 antworten

    Am besten stellst du einfach ALLES also dateien und email text usw. Z.b. bei fastshare.org rein - wenn das geht

    Und nur so viel: der code nutzt interrupts fuer timer und direkte serielle port programmierung, das laesst sich definitiv nicht so einfach portieren
    Auch ist unklar wie wichtig das zeitverhalten bei timeouts usw. ist



  • Hallo an Alle, also meine Fähigkeiten reichen definitiv nicht aus das Programm ans laufen zu bekommen geschweige denn es umzuschreiben.
    Und deshalb frage ich jetzt ganz direkt, mag oder kann mir jemand das
    Programm für ein aktuelles Computer System ändern/umschreiben ?
    Wer Interesse hat kann sich ja mal melden.
    Ich sende dann das komplette Programm mit allen dazugehörigen Dateien
    per Mail. Wenn derjenige drüber geschaut hat, kann er mir auch (s)einen
    Preis nennen. Alles weitere werden wir dann sehen. Liebe Grüße jueppes



  • Hallo an Alle, also meine Fähigkeiten reichen definitiv nicht aus das Programm ans laufen zu bekommen geschweige denn es umzuschreiben.

    das haben wir uns schon gedacht 🙂

    Wenn derjenige drüber geschaut hat, kann er mir auch (s)einen
    Preis nennen.

    ohne Information ob du ein laufendes (altest DOS + die Hardware) Testsystem hast ist das schon mal schwierig

    noch dazu beantwortest du direkte Fragen so gut wie gar nicht (jedes ? wird einfach ignoriert) - meinst du das drückt den Preis, oder denkst du das macht man mal eben in 10min - ich schätze mit Tests können das locker 1-2 Tage werden, ohne echte Testumgebung vielleicht auch länger weil man ja keine Ahnung hat wie kritisch das Zeitverhalten, wackelig das Protokoll ist, dein Vorbereitung/Wissen über dein Wissen ist hier wichtig - da kommt so gut wie nichts

    nicht einfach davon ausgehen das es für einen "Profi" trivial ist und einfach immer nur Posts schreiben die in verschiedenen Formen deinen Anforderungen oder Fähigkeiten ausdrücken, das hilft nicht

    Es ist irrelevant wie gut du programmieren kannst - aber Fragen beantworten und detailliert und eindeutig sein wäre echt schon mal ein Anfang


Anmelden zum Antworten