Software > Coding
Mit Pure C ja, mit AHCC nein.
laufkopf:
Sorry für den dämlichen Betreff. Mir ist nichts weiter eingefallen.
Aufgrund von ataristar Anliegen Betreff seines Acc, hatte ich auch mal angefangen etwas in C zu schreiben. Unter Pure C funktioniert übersetzen und ausführen tadellos. Mit AHCC wird auch übersetzt, aber das Programm stürzt ab und ich habe keinen Plan warum ???
--- Code: ---#include <stdint.h>
#include <aes.h>
#include <tos.h>
#include <stdio.h>
#include <float.h>
DISKINFO *phdfree;
void main (void){
char acc_name[] = " HD Info...";
int16_t ap_id, menu_id;
int16_t msg_buf[8];
int16_t ret, i;
int32_t laufwerke, lw[32];
char alw = 'A';
double gesamt[32], frei[32];
ap_id = appl_init();
if (ap_id >= 0)
{
menu_id = menu_register(ap_id, acc_name);
if (menu_id >= 0)
{
for (;;)
{
evnt_mesag (msg_buf);
switch (msg_buf[0])
{
case AC_OPEN:
if (msg_buf[4] == menu_id)
{
if (Pdomain(-1) == 1)
{
printf("\nWir laufen in einer MiNT-Domain.");
}
else
{
printf("\nWir laufen in einer TOS-Domain.");
}
laufwerke = Drvmap();
printf("\nLaufwerke laut Drvmap(): ");
for(i=0;i<32;i++)
{
lw[i]=((laufwerke>>i)&1);
printf("%ld",lw[i]);
}
printf("\nDetails..\n");
for(i=2;i<32;i++)
{
if(lw[i] == 1)
{
ret = Dfree(phdfree, i+1);
if (ret == 0)
{
printf("\nLW %c Anz freie Cluster : %ld\n",alw+i,(*phdfree).b_free);
printf("Geamtzahl Cluster : %ld\n",(*phdfree).b_total);
printf("Bytes pro Sektor : %ld\n",(*phdfree).b_secsiz);
printf("Sektoren / Cluster: %ld\n",(*phdfree).b_clsiz);
gesamt[i] = (double) (((((double)(*phdfree).b_clsiz * (double)(*phdfree).b_secsiz) * (double)(*phdfree).b_total) / (double)1024) / (double)1024);
frei[i] = (double) (((((double)(*phdfree).b_clsiz * (double)(*phdfree).b_secsiz) * (double)(*phdfree).b_free) / (double)1024) / (double)1024);
printf("Gesamt Speicher in MB: %.2lf\n", gesamt[i]);
printf("Freier Speicher in MB: %.2lf", frei[i]);
/*form_alert( 1, "[1][Accessorie][ OK ]");*/
}
}
}
}
break;
case AC_CLOSE:
if (msg_buf[3] == menu_id)
{
}
break;
}
}
}
}
for(;;) evnt_mesag (msg_buf);
}
--- Ende Code ---
Vielleicht habt ihr ja nen Rat ?
mfro:
--- Zitat von: laufkopf am Fr 05.06.2015, 18:06:32 ---Vielleicht habt ihr ja nen Rat ?
--- Ende Zitat ---
Nur mal so ins Blaue: AHCC kann keine floats und doubles. Jedenfalls dann nicht, wenn keine FPU im Rechner steckt.
HelmutK:
Ohne debugger würde ich printfs einbauen, um rauszubekommen wo es passiert. Mit dem pure-debugger kann man sich ansonsten auch anhand der Crash-Adresse die Codestelle anzeigen lassen ("View source", dann crash-PC+(akt.-text-start-crash-text-start)). Der text ist im PD in _base.
Erstmal würde ich auf stack-Überlauf tippen, aber mit AHCC kenn ich mich überhaupt nicht aus.
-Helmut
laufkopf:
Die Ausgabe läuft definitiv bis zu dieser passage
gesamt = (double) (((((double)(*phdfree).b_clsiz * (double)(*phdfree).b_secsiz) * (double)(*phdfree).b_total) / (double)1024) / (double)1024);
frei = (double) (((((double)(*phdfree).b_clsiz * (double)(*phdfree).b_secsiz) * (double)(*phdfree).b_free) / (double)1024) / (double)1024);
Im Anhang n Shot vom build
KarlMüller:
--- Zitat von: laufkopf am Fr 05.06.2015, 22:35:57 ---Im Anhang n Shot vom build
--- Ende Zitat ---
Nach den Ausgaben zu urteilen nutzt Du die ST Version. Wie Markus schon schrieb Du benötigst einen 68020 und 68881/2 oder höher.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln