Hello World mit bcc 3.1 und tlink



  • schau bitte mal in deinem compilerfaq des bccs nach (habe keinen hier, nur den tclite), wie man ordentlich tiny macht.

    im grunde muss es bei den anforderungen so gehen:

    DOS versions 3.2 and earlier include an EXE2BIN utility that
        converts EXE files to COM files. Users who do not have EXE2BIN can
        use TLINK, the Borland C++ command-line linker, to create a COM file
        instead of an EXE file. Use the /t option. For example:
           BCC -mt -lt tiny
        will create TINY.COM instead of TINY.EXE. The -l switch passes
        the /t argument to the linker in this case.
        There are certain limitations in converting an EXE file to a COM
        file. These limitations are documented in the IBM Disk Operating
        System manual under EXE2BIN.
        Borland C++'s TINY model is compatible with the COM format, but programs
        that use Borland C++'s floating-point routines cannot be used in a
        TINY model application.
    


  • die fehlermeldung sagt, du machst kein tiny. irgendwas stimmt hier nicht, entweder du hast doch einen anderen compiler, machst es über die konsole, und nicht dos direkt, oder dein tlink will /t und die reihenfolge meines tlinks..

    na ja, weitersuchen ... vielleicht kennt ein anderer deine versionen.



  • user4711 schrieb:

    Das anschließende Linken
    tlink -t c0s test.obj, test.com,, cs /c:\progra~1\bc\lib
    erzeugt weiterhin
    "Fatal: Cannot generate COM file : stack segment present"

    Ich mag mich irren, meine Borland-Zeit ist auch schon ein paar Jahre her, aber c0s ist doch die Standardlibrary für das Small-Modell. Gibts da keine für Tiny, mal geraten: c0t oder so?



  • gute idee, bashar,

    ----------------------
      C0S      OBJ  -  Small model startup code
      C0T      OBJ  -  Tiny model startup code
      C0L      OBJ  -  Large model startup code
    

    http://my.netian.com/~daewon24/Turbo C down.htm



  • So, jetzt habe ich wenigstens das "Hello-World.com" zum Laufen bekommen:
    BCC -mt -lt test.c
    tlink -t c0t test.obj, test.com,, cs /c:\bc\lib

    Mein ursprüngliches Testprogramm ist aber komplexer und da erhalte ich
    mit bcc.exe leider immer noch Fehler (obwohl es mit BC.EXE läuft):

    Turbo Link Version 5.1 Copyright (c) 1992 Borland International
    Fatal: Cannot generate COM file : segment-relocatable items present

    Leider kein Hinweis, wo die sein könnten.

    😞







  • Die Google-Suche habe ich natürlich auch schon in Erwägung gezogen (bin noch dabei, alles durchzuarbeiten, aber jetzt ist erst mal Wochenende) Dabei finde ich in dos-16.c den lapidaren Hinweis:
    'Note: use of 'interrupt' keyword may cause TLINK error
    "Cannot generate COM file : segment-relocatable items present" '
    (und ich muß 'interrupt' verwenden, weil ich in meinem anderen Thread noch keinen funktionierenden Hinweis fand, wie man es ersetzt; asm push ax usw reicht nicht),
    doch keinen Hinweis wie man den Fehler vermeidet.

    In http://www.vmlinux.org/~jakov/community.borland.com/16623.html finde ich:
    “Some of our library functions cannot be called from in the tiny model if one wants a .COM file. “,
    Bete jetzt nur, daß “interrupt“ nicht dazu gehört, sonst wird es schwierig...



  • user4711 schrieb:

    Dabei finde ich in dos-16.c den lapidaren Hinweis:
    'Note: use of 'interrupt' keyword may cause TLINK error
    "Cannot generate COM file : segment-relocatable items present" '
    (und ich muß 'interrupt' verwenden, weil ich in meinem anderen Thread noch keinen funktionierenden Hinweis fand, wie man es ersetzt; asm push ax usw reicht nicht),
    doch keinen Hinweis wie man den Fehler vermeidet.

    Ich glaube ehrlich gesagt nicht wirklich, dass dieser Hinweis eine Berechtigung hat. Durch welchen Mechanismus soll es da denn zu relozierbaren Adressen kommen?

    In http://www.vmlinux.org/~jakov/community.borland.com/16623.html finde ich:
    “Some of our library functions cannot be called from in the tiny model if one wants a .COM file. “,
    Bete jetzt nur, daß “interrupt“ nicht dazu gehört, sonst wird es schwierig...

    Nunja, interrupt ist keine Libraryfunktion 🙄. Ich würde an deiner Stelle mal die Anleitung dort drin befolgen, und ein Assembler-Listing erstellen lassen.



  • Bashar schrieb:

    user4711 schrieb:

    Dabei finde ich in dos-16.c den lapidaren Hinweis:
    'Note: use of 'interrupt' keyword may cause TLINK error
    "Cannot generate COM file : segment-relocatable items present" '
    (und ich muß 'interrupt' verwenden, weil ich in meinem anderen Thread noch keinen funktionierenden Hinweis fand, wie man es ersetzt; asm push ax usw reicht nicht),
    doch keinen Hinweis wie man den Fehler vermeidet.

    Ich glaube ehrlich gesagt nicht wirklich, dass dieser Hinweis eine Berechtigung hat. Durch welchen Mechanismus soll es da denn zu relozierbaren Adressen kommen?

    Sag ich doch 🙂 Siehe den anderen Thread, weder interrupt noch irgendwelche Libraryfunktionen lösen diesen Fehler aus, es ist eine fehlende "Optimierung" oder Typumwandlung des Compilers, die bei COM-Files nötig wäre, siehe http://www.c-plusplus.net/forum/viewtopic-var-p-is-890439.html#890439


Anmelden zum Antworten