/* $Id: binds.c,v 1.3 1999/05/31 23:35:24 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */ static char *id = "$Id: binds.c,v 1.3 1999/05/31 23:35:24 sybalsky Exp $ Copyright (C) Venue"; /************************************************************************/ /* */ /* (C) Copyright 1989-95 Venue. All Rights Reserved. */ /* Manufactured in the United States of America. */ /* */ /* The contents of this file are proprietary information */ /* belonging to Venue, and are provided to you under license. */ /* They may not be further distributed or disclosed to third */ /* parties without the specific permission of Venue. */ /* */ /************************************************************************/ #include "version.h" #include #include "lispemul.h" #include "lspglob.h" #include "emlglob.h" /************************************************** N_OP_bind(stack_pointer, tos, n1, n2) Entry: BIND opcode[021] 1. bind PVAR slot to NIL. (n1 times) 2. bind PVAR slot to value of slot in Evaluation stack. (n2 times) or push TopOfStack to Evaluation stack. 3. Push [upper word] 1's complement of bind slots [lower word] 2word offset from PVar ***************************************************/ LispPTR *N_OP_bind(register LispPTR *stack_pointer, register LispPTR tos, int byte1, int byte2) { register int n1; /* # slots to bind to NIL (0, 0) */ register int n2; /* # slots to bind to value in stack */ register LispPTR *ppvar; /* pointer to argued slot in Pvar area */ register int i; /* temporary for control */ #ifdef TRACE printPC(); printf("TRACE: N_OP_bind()\n"); #endif n1 = byte1 >> 4; n2 = byte1 & 0xf; ppvar = (LispPTR *) PVar + 1 + byte2; for(i=0; i> 16); ppvar = (LispPTR *) (PVar + 2 + GetLoWord(value)); value = 0xffffffff; for(i=0; i