C, C++, E?

Fórumok

Debian rendszerben letöltöttem néhány minimális konverziós utility-t, ami nagyon hasznos lenne számomra. A többsége egyszerű C program, és sikeresen le is fordulnak, de van köztük pár ".e" kiterjesztésű. Ezekkel nem tudok mit kezdeni. Próbáltam, utánakeresni, lefordítani gcc, g++ segítségével, de egyelőre sikertelenül.

Van esélyem ezeket a fájlokat lefordítani különösebb varázslat nélkül? Mi ez az E egyáltalán? Ez tényleg valami C++ fejlesztés, mint a D? (D programokat már írtam, de ahhoz külön fordító kellett.)

Tud valaki segíteni, hogy ezt a pár ".e" konvertert le tudjam fordítani linux környezetben?

Minden információt megköszönök a témában!

Hozzászólások

 

I never heard of that file type in connection with C before, but after checking the files and the Makefile it seems to be variables and functions that are exported, therefore the .e extension.

 

They seem to be created by a special program (which comes with the package) called cexport whose manual page states:

A fileok elerhetoseget direkt tartod titokban? :D A vegen meg, ha valaki belenezne, rogton meg tudna mondani, hogy mi az.

OPT AMIGAE,NOPTRTOCHAR

MODULE 'dos/dos','exec/memory'

PROC main()
DEF rargs=NIL:PTR TO LONG,templ,args,infile[512]:STRING,outfile[512]:STRING
DEF fhand=NIL,fhandout=NIL,c,s=$0B,top=1,verstr,len,mem,temp[5]:STRING,chksum=0

verstr:='$VER: Pot81 1.1 (09.02.99)'

WriteF('Pot81 by Chris Young <chrisdpy@bigfoot.com>\n')
WriteF('Converts ZX81 snaps to and from .P and .81 formats\n')

rargs:=[0,0,0,0]
templ:='INFILE/A,OUTFILE/A,P/S,81/S,CHECKSUM/S'
IF args:=ReadArgs(templ,rargs,NIL)
        IF rargs[0] THEN StrCopy(infile,rargs[0])
        IF rargs[1] THEN StrCopy(outfile,rargs[1])
        IF StrCmp(UpperStr(RightStr(temp,infile,2)),'.P',2) THEN top:=0
        IF rargs[2] THEN top:=0
        IF rargs[3] THEN top:=1
        IF rargs[4]
                top:=1
                s:=0
                chksum:=1
        ENDIF
        FreeArgs(args)

        IF top
                IF fhand:=Open(infile,MODE_OLDFILE)
                        IF fhandout:=Open(outfile,MODE_NEWFILE)
                                WHILE (c:=FgetC(fhand))<>-1
                                        IF chksum       THEN    s:=Eor(s,c)
                                        FputC(fhandout,c)
                                ENDWHILE
                                FputC(fhandout,s)
                                Close(fhandout)
                                WriteF('\nCreated .P\n')
                        ELSE
                                WriteF('\nunable to open output file\n')
                        ENDIF
                        Close(fhand)
                ELSE
                        WriteF('\nunable to open input file\n')
                ENDIF
        ELSE
                IF fhand:=Open(infile,MODE_OLDFILE)
                        len:=FileLength(infile)
                        IF mem:=AllocMem(len,MEMF_CLEAR)
                                Read(fhand,mem,len-1)

                                IF fhandout:=Open(outfile,MODE_NEWFILE)
                                        Write(fhandout,mem,len-1)
                                        Close(fhandout)
                                        WriteF('\nCreated .81\n')
                                ELSE
                                        WriteF('\nunable to open output file\n')
                                ENDIF
                                FreeMem(mem,len)
                        ELSE
                                WriteF('\nnot enough memory\n')
                        ENDIF
                        Close(fhand)
                ELSE
                        WriteF('\nunable to open input file\n')
                ENDIF

        ENDIF
ELSE
        WriteF('\nrequired argument missing\n\n')
        WriteF('Usage: Pot81 <input file> <output file> [P|81]\n\n')
        WriteF('Pot81 converts based on the input file extension.\n')
        WriteF('Specify the input format using the optional P or 81 switch.\n')
ENDIF
ENDPROC
Szerkesztve: 2024. 07. 21., v – 16:02

A megfejtés:

Amiga E

Van esélyem ezeket a fájlokat lefordítani különösebb varázslat nélkül?

Ami a fordítást illeti, hát sok sikert, talán PortablE? De ahogy elnézem, elég sok Amiga rendszerspecifikus cucc van még egy ilyen nyúlfarknyi kódrészletben is, szóval kizárt dolognak tartom, hogyha még sikerül is beröffenteni egy Linux-os fordítót, akkor egy-az-egyben le tudnád fordítani Linux alatt.

Tud valaki segíteni, hogy ezt a pár ".e" konvertert le tudjam fordítani linux környezetben?

Szerintem inkább izzíts be egy Amiga emulátort, és azon próbálkozz fordítani az eredeti E fordítóval (itt ugyanis lesznek dos/dos.library meg exec/memory.library függvénykönyvtárak, Linux-on kevésbé).

Ebből kifolyólag gyanítom, hogy a maradék C és C++ sem POSIX-os környezetre íródott, hanem Amigásra, szóval azoknál sem lesz elég a mezei Linux-os gcc meg a glibc. De ez csak tipp, mert nem láttam bele a forrásba.
Mindenesetre eléggé valószínűtlen, hogy komoly portolási munka nélkül fordítható lenne Linux alatt.

Mik nincsenek. Se az Eiffel-ről, se az E-ről, se erről az Amiga E-nyelvről nem hallottam még a büdös életben, de olyan szinten, hogy még ilyen nyelvi csoportosításokban, felsorolásokban sem találkoztam egyikkel sem.

Egyedül a D, amit a kolléga említ, az szerintem közismert, de abban sem programozik a kutya sem, pedig az a nyelv anno úgy lett beharangozva, hogy majd meglátjuk, hogy a C-t, meg a C++-t is kiszorítja. Aha.

Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”