home *** CD-ROM | disk | FTP | other *** search
/ Excalibur 60 / Excalibur_60_cd.bin / amiga / util / boot / setpsm.lha / SetPSM / SetPSM.c < prev    next >
C/C++ Source or Header  |  1997-03-20  |  2KB  |  85 lines

  1. /****************************************************************
  2. *
  3. * Name : SetPSM.c
  4. *
  5. * Description : Set the public screen flags SHANGHAI and POPPUBSCREEN
  6. *
  7. *****************************************************************/
  8.  
  9. /******** */
  10.  
  11. #define DOSLIB  "dos.library"
  12. #define DOSVER  36L
  13. #define INTUILIB  "intuition.library"
  14. #define INTUIVER  36L
  15.  
  16. #define THISPROC   ((struct Process *)(SysBase->ThisTask))
  17. #define Result2(x) THISPROC->pr_Result2 = x
  18.  
  19. #define TEMPLATE  "SHANGHAI/S,POP=POPPUBSCREEN/S"
  20. #define OPT_SHANG 0
  21. #define OPT_POP   1
  22. #define OPT_COUNT 2
  23.  
  24. /******** */
  25.  
  26. #define __USE_SYSBASE
  27. #include <exec/types.h>
  28. #include <exec/execbase.h>
  29. #include <intuition/intuition.h>
  30. #include <dos/rdargs.h>
  31.  
  32. #include <clib/exec_protos.h>
  33. #include <clib/dos_protos.h>
  34. #include <clib/intuition_protos.h>
  35.  
  36. #include <pragmas/exec_pragmas.h>
  37. #include <pragmas/dos_pragmas.h>
  38. #include <pragmas/intuition_pragmas.h>
  39.  
  40. #include <string.h>
  41.  
  42. /******** */
  43.  
  44. static char VersTag[]="\0$VER: SetPSM 1.0 (20.3.97) Tak Tang";
  45.  
  46. /******** */
  47.  
  48. int cmd_SetPSM( void ) {
  49.   struct ExecBase *SysBase = (*((struct ExecBase **) 4));
  50.   struct DosLibrary *DOSBase;
  51.   struct Library *IntuitionBase;
  52.   long opts[OPT_COUNT];
  53.   long rc;
  54.   struct RDArgs *rdargs;
  55.   UWORD oldmode;
  56.  
  57.   rc = RETURN_FAIL;
  58. á if ((DOSBase = (struct DosLibrary *)OpenLibrary(DOSLIB, DOSVER))) {
  59.     memset((char *)opts, 0, sizeof(opts));
  60.     rdargs = ReadArgs(TEMPLATE, opts, NULL);
  61.     if ( rdargs ) {
  62.   á   if ((IntuitionBase = (struct Library *)OpenLibrary(INTUILIB, INTUIVER))) {
  63.         oldmode=SetPubScreenModes( ((opts[OPT_SHANG])?SHANGHAI:0) |
  64.                                    ((opts[OPT_POP])?POPPUBSCREEN:0) );
  65.         rc = (oldmode && SHANGHAI?5:0) + (oldmode && POPPUBSCREEN?10:0);
  66.       } else {
  67.         PrintFault(IoErr(), NULL);
  68.       }
  69.       CloseLibrary(IntuitionBase);
  70.  
  71.       FreeArgs(rdargs);
  72.     } else {
  73.       PrintFault(IoErr(), NULL);
  74.     }
  75.     CloseLibrary((struct Library *)DOSBase);
  76.   } else {
  77.     Result2(ERROR_INVALID_RESIDENT_LIBRARY);
  78.   }
  79.  
  80.   return(rc);
  81. } // main
  82.  
  83. /******** */
  84.  
  85.