amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > C Kompiler? / SAS/C? [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

08.08.2001, 23:59 Uhr

AgentR2
Posts: 52
Nutzer
Hallo,

ich suche einen C Kompiler. Ich habe auf der Amiga Developer CD 2.1 zwar den StormC 3.1 erhalten, aber sobald ich ein (bereits bestehndendes!) Programm damit kompilieren will und das Kompilierte Programm starte, stürzt es beim ersten zugriff auf die lowlevel.library ab.

Das Original wurde mit SAS/C kompiliert, und zwar problemlos.
Bekomme ich SAS/C noch irgendwo? Oder gibt es andere (kostenlose!) C-Kompiler für 68k Amiga?
Zielplatofrm ist ein 68EC020

[ - Antworten - Zitieren - Direktlink - ]

09.08.2001, 00:08 Uhr

zacman
Posts: 450
Nutzer
vbcc 0.8
gcc 2.95.3

[ - Antworten - Zitieren - Direktlink - ]

09.08.2001, 06:18 Uhr

DJBase
Posts: 3354
[Ex-Mitglied]
Den SAS/C wirst Du leider nirgendwo mehr bekommen. Außer auf dem Gebrauchtmarkt. SAS hat die Amiga version eingestellt.
--
Member of Amiga User Group 99 - http://www.aug99.com

eMail - webmaster@djbase.de

[ - Antworten - Zitieren - Direktlink - ]

09.08.2001, 14:14 Uhr

MagicSN
Posts: 238
Nutzer
Hallo!

Ich tippe auf einen Bug im Source-Code oder was Compiler-Spezifisches (wird LowLevelBase mit oder ohne "extern" oder "static" deklariert ? Manche Compiler haben da verschiedene Konventionen).

In Freespace verwende ich auch die lowlevel.library, und das tut tadellos (ist mit StormC 4 compiliert). Und auch in ZhaDoom, WarpSNES u.a. verwende ich lowlevel.library (allerdings sind neuere Versionen von WarpSNES mit gcc-WarpUP und nicht StormC compiliert, ich habe es aber frueher mit StormC compiliert, und funktionierte tadellos).

Ich tippe daher auf nen Compiler-spezifischen Unterschied. Sollte mit nem Debugger zu finden sein (und StormC hat ja einen).

Steffen

[ - Antworten - Zitieren - Direktlink - ]

09.08.2001, 20:55 Uhr

AgentR2
Posts: 52
Nutzer
Das hier ist der Original Source Code, läuft mit SAS/C einwandfrei.
StormC will es so nicht kompilieren, da der Linker das Symbol "_LowLevelBase" nicht findet.
ich habe unter den #include's folgendes eingefügt: struct Library *LowLevelBase = NULL;
Damit wird es gelinkt, stürzt dann aber ab.

Source Code:

/*
joypad.c check your joypad buttons in scripts

by Daniel Balster. Example usage:

joypad blue
if warn
echo "blue pressed"
endif

joypad fwd rew
if warn
echo "forward&rewind pressed"
endif

joypad play ; this could be in your s:startup-sequence ?
if warn
cd GAMES:
GamesMenu
endif

joypad red green
if warn
GFX:3D-View
endif

(not much comments in it - forgive me)
*/

#include <exec/exec.h>
#include <dos/dos.h>
#include <libraries/lowlevel.h>
#include <devices/cd.h>
#include <proto/exec.h>
#include <proto/dos.h>
#include <proto/lowlevel.h>


#define TEMPLATE "RED/S,BLUE/S,YELLOW/S,GREEN/S,FWD/S,REW/S,PLAY/S,PORT/N,QUIET/S"

#define BUTTON_MASK (JPF_BUTTON_RED|JPF_BUTTON_BLUE|JPF_BUTTON_GREEN|JPF_BUTTON_YELLOW \
|JPF_BUTTON_FORWARD|JPF_BUTTON_REVERSE|JPF_BUTTON_PLAY)

struct abc {
ULONG red,blue,yellow,green,fwd,rew,play;
ULONG port;
ULONG quiet;
ULONG pads[7]; /* someone said RDArgs must be sized to a 16-longs boundary ??? */
};

int main (void)
{
struct RDArgs *rdargs;
struct abc args = {0};
ULONG bits, port=1, mymask;
ULONG check = RETURN_OK;

if (rdargs=ReadArgs(TEMPLATE,(LONG*)&(args),NULL))
{
if(!args.quiet)
PutStr("*** JoyPad Version 1.0.0 *** by Daniel Balster\n");

if (args.port) port = *(ULONG*)args.port;

bits = ReadJoyPort (port);

if ((bits & JP_TYPE_MASK)==JP_TYPE_NOTAVAIL)
PutStr ("port not available\n");
if ((bits & JP_TYPE_MASK)==JP_TYPE_UNKNOWN)
PutStr ("controller type unknown\n");

mymask = 0x00000000;

/* create a bit-set comparison mask */

if (args.red) mymask |= JPF_BUTTON_RED;
if (args.blue) mymask |= JPF_BUTTON_BLUE;
if (args.green) mymask |= JPF_BUTTON_GREEN;
if (args.yellow) mymask |= JPF_BUTTON_YELLOW;
if (args.fwd) mymask |= JPF_BUTTON_FORWARD;
if (args.rew) mymask |= JPF_BUTTON_REVERSE;
if (args.play) mymask |= JPF_BUTTON_PLAY;

/* compare two sets */

if ((bits&BUTTON_MASK) == mymask) check=RETURN_WARN;

if (check && !args.quiet) PutStr ("button combination pressed!\n");

FreeArgs(rdargs);
}
else PrintFault(IoErr(),0);

return check;
}

[ - Antworten - Zitieren - Direktlink - ]

09.08.2001, 22:14 Uhr

ac-logic
Posts: 91
Nutzer
Du hast vergessen die library auch zu öffnen, es ist also kein
Wunder, daß dein Programm beim Zugriff auf Funktionen der
lowlevel.library abstürzt.


[ Dieser Beitrag wurde von ac-logic am 09.08.2001 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

09.08.2001, 22:32 Uhr

zacman
Posts: 450
Nutzer
Nicht wirklich. Wenn sein Compiler das automatische Oeffnen der
Libraries kann, sollte es auch so funktionieren.

[ - Antworten - Zitieren - Direktlink - ]

10.08.2001, 01:28 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von zacman:
Nicht wirklich. Wenn sein Compiler das automatische Oeffnen der
Libraries kann, sollte es auch so funktionieren.

Aber da die Library-Base in der entsprechenden Link-Bibliothek nicht vorhanden ist, wird es beim auto-open nicht unterstützt (vereinfacht gesagt). Also muß man die Library entweder von Hand öffnen, oder auto-open für die lowlevel.library einrichten.

mfg

--

Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > C Kompiler? / SAS/C? [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.