home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ST-Computer Leser-CD 1999 January
/
STC_CD_01_1999.iso
/
base
/
pd_ph105
/
pd_mint.c
< prev
next >
Wrap
C/C++ Source or Header
|
2000-01-08
|
3KB
|
97 lines
/*
RUN_PD.C
startet den Pure Debugger unter MiNT
geschrieben 1994 von Thomas Künneth
Friedrich-Neuper-Str. 2b
90552 Röthenbach
modifiziert 1998 von Chris Felsch
Da nun auch den MiNT-Cookie geprüft wird, kann das Programm kann als
PD.PRG installiert werden und starter dann auch bei aktivem MagiC den
PD korrekt.
Vor der Installation mu₧ man allerdings den alten PD nach pd_org.prg
umbenennen!
modifiziert 1998 von Dimitri Junker
Um diesen Starter aus dem Starter von PD_PATCH aufrufen zu können
mu₧te eine Möglichkeit gefunden werden, dan Pfad des zu startenden
PD zu übergeben. Da ich diesen Starter nicht compilieren kann,
geschweige denn testen (Ich habe weder MiNT noch die MiNT Lib)
habe ich eine Methode gewählt, die zwar nicht den Preis für Eleganz
erhält, aber 'minimal invasiv' ist. (Nein ich bin kein Mediziner)
Ich habe also die 1. if/else Struktur eingefügt, und sonst
PD_ORG durch pd_pfad ersetzt. Ist START_PD.INF nicht vorhanden
funktioniert der Starter wie bisher.
*/
#include <cflib.h> /* für getcookie() */
#include <basepage.h>
#include <signal.h>
#include <stdio.h>
#include <string.h>
#define PD_ORG "g:\\purec\\pd_org.prg"
int abbruch = 1;
void cdecl signal_handler(long sgnl)
{
if ((int)sgnl == SIGCHLD)
abbruch = 1;
}
void main(void)
{ char pd_pfad[500];
FILE *inf_file;
if((inf_file=fopen("START_PD.INF","rb"))==NULL)
strcpy(pd_pfad,PD_ORG);
else
{ fseek(inf_file,sizeof(int),SEEK_SET);
fgets(pd_pfad,500,inf_file);
fclose(pfad);
}
if (getcookie("MiNT", NULL))
{
long error;
int fd;
if (getcookie("FSEL", NULL) || getcookie("VGAS", NULL))
{
appl_init();
form_alert(1, "[3][VGA-Simu oder Freedom laufen noch!][Abbruch]");
appl_exit();
exit(1);
}
/* physikalische Console zum Lesen und Schreiben öffnen */
error = Fopen("U:\\dev\\console", 2);
if (error >= 0)
{
fd = (int)error;
/* den Schalter umlegen ;-) */
Fforce(-1, fd);
/* Signal-Handler installieren */
Psignal(SIGCHLD, (long)signal_handler);
/* Kopie des Prozesses anlegen */
appl_init();
graf_mouse(0x8000, NULL);
appl_exit();
switch (Pfork())
{
case 0: /* child */
Pexec(0, pd_pfad, _base->p_cmdlin, _base->p_env);
exit(0);
default:
while (!abbruch)
Syield();
}
/* Datei schlie₧en */
Fclose(fd);
}
}
else /* MiNT nicht da, also einfach nur nachstarten */
Pexec(0, pd_pfad, _base->p_cmdlin, _base->p_env);
}