#include <proto/exec.h>
#include <exec/memory.h>
#include <stdio.h>
#include <stdlib.h>
#include <exec/execbase.h>


void main(void);

void main()
{
 struct ExecBase **execbaseptr=(struct ExecBase **)4L;
 struct ExecBase *execbase;
 ULONG LoMem,HiMem,Size;
 ULONG i;
 char *NewStack,*src,*dest;


 execbase = *execbaseptr;
 LoMem = (ULONG)execbase->SysStkLower;
 HiMem = (ULONG)execbase->SysStkUpper;
 if (HiMem > 0x200000)
  {
   exit(0);
  }
 Size = HiMem - LoMem + 1;
 if (!(NewStack = AllocMem(Size,MEMF_FAST|MEMF_CLEAR)))
  {
   exit(0);
  }
 Disable();
 src = (char *)LoMem;
 dest = NewStack;
 for(i=0;i<Size;i++)
  *dest++ = *src++;
 HiMem = (ULONG)NewStack;
 HiMem += Size;
 HiMem--;
 execbase->SysStkLower = (APTR)NewStack;
 execbase->SysStkUpper = (APTR)HiMem;
 LoMem = SuperState();
 UserState((char *)HiMem);
 Enable();
}
