home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 351.lha / MoveSSP / MoveSSP.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-02-23  |  834 b   |  45 lines

  1. #include <proto/exec.h>
  2. #include <exec/memory.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <exec/execbase.h>
  6.  
  7.  
  8. void main(void);
  9.  
  10. void main()
  11. {
  12.  struct ExecBase **execbaseptr=(struct ExecBase **)4L;
  13.  struct ExecBase *execbase;
  14.  ULONG LoMem,HiMem,Size;
  15.  ULONG i;
  16.  char *NewStack,*src,*dest;
  17.  
  18.  
  19.  execbase = *execbaseptr;
  20.  LoMem = (ULONG)execbase->SysStkLower;
  21.  HiMem = (ULONG)execbase->SysStkUpper;
  22.  if (HiMem > 0x200000)
  23.   {
  24.    exit(0);
  25.   }
  26.  Size = HiMem - LoMem + 1;
  27.  if (!(NewStack = AllocMem(Size,MEMF_FAST|MEMF_CLEAR)))
  28.   {
  29.    exit(0);
  30.   }
  31.  Disable();
  32.  src = (char *)LoMem;
  33.  dest = NewStack;
  34.  for(i=0;i<Size;i++)
  35.   *dest++ = *src++;
  36.  HiMem = (ULONG)NewStack;
  37.  HiMem += Size;
  38.  HiMem--;
  39.  execbase->SysStkLower = (APTR)NewStack;
  40.  execbase->SysStkUpper = (APTR)HiMem;
  41.  LoMem = SuperState();
  42.  UserState((char *)HiMem);
  43.  Enable();
  44. }
  45.