amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > C Kompiler? / SAS/C? [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2001-08-08, 23:59 h

AgentR2
Posts: 52
User
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

[ - Answer - Quote - Direct link - ]

2001-08-09, 00:08 h

zacman
Posts: 450
User
vbcc 0.8
gcc 2.95.3

[ - Answer - Quote - Direct link - ]

2001-08-09, 06:18 h

DJBase
Posts: 3354
[Former member]
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

[ - Answer - Quote - Direct link - ]

2001-08-09, 14:14 h

MagicSN
Posts: 238
User
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

[ - Answer - Quote - Direct link - ]

2001-08-09, 20:55 h

AgentR2
Posts: 52
User
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 Balstern");

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

bits = ReadJoyPort (port);

if ((bits & JP_TYPE_MASK)==JP_TYPE_NOTAVAIL)
PutStr ("port not availablen");
if ((bits & JP_TYPE_MASK)==JP_TYPE_UNKNOWN)
PutStr ("controller type unknownn");

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;
}

[ - Answer - Quote - Direct link - ]

2001-08-09, 22:14 h

ac-logic
Posts: 91
User
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. ]

[ - Answer - Quote - Direct link - ]

2001-08-09, 22:32 h

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

[ - Answer - Quote - Direct link - ]

2001-08-10, 01:28 h

Holger
Posts: 8116
User
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.

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > C Kompiler? / SAS/C? [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.