home *** CD-ROM | disk | FTP | other *** search
- /*
- * Startup.c - Copyright © 1991 by S.R. & P.C.
- *
- * Created: 18 Feb 1991 11:36:37
- * Modified: 05 Feb 1992 21:06:28
- *
- * Make>> make
- */
-
- #include "ParMBase.h"
-
-
- extern struct ExecBase *SysBase;
- extern struct Library *DOSBase;
-
- struct ParMBase *ParMBase;
- struct ArpBase *ArpBase;
- struct ReqLib *ReqBase;
- struct IconBase *IconBase;
- struct IntuitionBase *IntuitionBase;
- struct LayersBase *LayersBase;
- struct GfxBase *GfxBase;
- struct WBStartup *WBenchMsg;
- int _argc;
- char **_argv;
-
- char HelpUsage[] = "ParM V3.6 © 1990-92 by S.R. & P.C.\n\
- MYMENU Attach menus to Workbench's (Like MyMenu)\n\
- CLIWINDOW Attach menus to CLI/Shell Window\n\
- OWNWINDOW Open its own window (default)\n\
- LEFTEDGE Left edge of ParM Window (default 0)\n\
- DETAILPEN Detail pen of ParM Window (default 1)\n\
- BLOCKPEN Block pen of ParM Window (default 2)\n\
- DRAGBAR ON|OFF Drag bar (You can't move ParM window) (default on)\n\
- DEPTH ON|OFF Depth gadgets (default off)\n\
- AUTOFRONT ON|OFF Automatic window to front (default on)\n\
- SHOWMEM ON|OFF Show available memory (default off)\n\
- SHOWTIME ON|OFF Show time. (default off)\n\
- REFRESHTIME Interval time for Mem/Time refresh in 0.1s (default 1s)\n\
- MTDETAILPEN DetailPen for Mem/Time (default DetailPen)\n\
- MTBLOCKPEN BlockPen for Mem/Time (default BlockPen)\n\
- MENUCOLOR Color for ParM's main menu (default DetailPen)\n\
- STACKSIZE Default stack size for commands (default: ParM process stack)\n\
- CONFIGFILE Configuration file (default: S:ParM.cfg)\n\
- USENULL ON|OFF Redirect output to NULL: for commands in RUN mode (default off)\n";
-
- char Template[] = "MYMENU/s,CLIWINDOW/s,OWNWINDOW/s,LEFTEDGE/k,TOPEGE/k,DETAILPEN/k,BLOCKPEN/k,DRAGBAR/k,DEPTH/k,AUTOFRONT/k,SHOWMEM/k,SHOWTIME/k,REFRESHTIME/k,MTDETAILPEN/k,MTBLOCKPEN/k,MENUCOLOR/k,STACKSIZE/k,CONFIGFILE/k,USENULL/k";
-
- /* Number of args in template */
- #define NUM_ARGS 19 /* WARNING: also defined in ParM.c */
-
- long DosWrite(BPTR file, char *buffer, long length);
- #pragma amicall(DOSBase, 0x30, DosWrite(d1,d2,d3))
-
- int main(int argc, char **argv);
-
-
- void exit(int code)
- {
- if (WBenchMsg) {
- Forbid();
- ReplyMsg((struct Message *)WBenchMsg);
- }
- CloseLibrary(ParMBase);
- Exit(code);
- }
-
-
- void _main(long alen, char *aptr)
- {
- struct Library *DOSBase;
- struct Process *pp;
-
- pp = (struct Process *)SysBase->ThisTask;
- if (!pp->pr_CLI) {
- WaitPort(&pp->pr_MsgPort);
- WBenchMsg = (struct WBStartup *)GetMsg(&pp->pr_MsgPort);
- }
- if (!(ParMBase = (struct ParMBase *)OpenLibrary("parm.library", 2L))) {
- if (pp->pr_CLI && (DOSBase = OpenLibrary("dos.library",0L))) {
- DosWrite(pp->pr_COS, "You need parm.library V2+\n", 26L);
- CloseLibrary(DOSBase);
- }
- if (WBenchMsg) {
- Forbid();
- ReplyMsg((struct Message *)WBenchMsg);
- }
- return;
- }
- ArpBase = ParMBase->ArpBase;
- ReqBase = ParMBase->ReqBase;
- IconBase = ParMBase->IconBase;
- LayersBase = ParMBase->LayersBase;
- IntuitionBase = (struct IntuitionBase *)ArpBase->IntuiBase;
- GfxBase = (struct GfxBase *)ArpBase->GfxBase;
-
- if (WBenchMsg) {
- CurrentDir(WBenchMsg->sm_ArgList->wa_Lock);
- _argv = (char **)WBenchMsg;
- }
- else {
- /*
- * WARNING: With that function, argv[] array will not start with the program
- * name but with it's first argument. If there's no args, argc will be zero.
- */
- _argv = ArpAlloc(sizeof(APTR) * (NUM_ARGS + 1));
- _argc = (int) GADS(aptr, alen, HelpUsage, _argv, Template);
- if (_argc < 0) {
- Puts(_argv[0]);
- exit(20);
- }
- }
-
- main(_argc, _argv);
-
- exit(0);
- }
-
-
-