Example #1
0
  static void interrupt newinterrupt(void)
  {
    (*oldinterrupt)();
    DISABLE();
    if (inside)
    {
      static UINT tempstack [STK_SIZE];
  #ifdef __WATCOMC__
      stackset (&tempstack[STK_SIZE-1]);
  #else
        static UINT old_SP;
        static WORD old_SS;
        asm  mov ax,ss
        asm  mov old_SS,ax
        asm  mov ax,sp
        asm  mov old_SP,ax
        asm  mov ax,ds
        asm  mov ss,ax
        asm  lea sp,tempstack[STK_SIZE-1]

  #endif
      ENABLE();

      if (userRoutine)
        (*userRoutine)();
      tcp_tick (NULL);

      DISABLE();

  #ifdef __WATCOMC__
      stackrestore();
  #else
      asm  mov ax,old_SS
      asm  mov ss,ax
      asm  mov ax,old_SP
      asm  mov sp,ax

  #endif
      inside = 0;
    }
    ENABLE();
  }
Example #2
0
void Stack_mode(struct stack *s){
	int data;
	while(1){
		printf("1->setdata\n2->initialize \n3->output\n4->back\nWhich?: ");
		scanf("%d", &data);
		if(data == 1){
			stackset(s);
		}else if(data == 2){
				free(s -> data);
			initialize_s(s);
		}else if(data == 3){
			stackout(s);
		}else if(data == 4){
			free(s -> data);
			selectmode();
		}else{
			printf("error.\n");
		}
	}
}