--- stack/stack.c 2002/03/07 03:28:29 1.91 +++ stack/stack.c 2002/03/08 06:44:15 1.92 @@ -930,7 +930,7 @@ } if(myenv.interactive) { - printf("Stack version $Revision: 1.91 $\n\ + printf("Stack version $Revision: 1.92 $\n\ Copyright (C) 2002 Mats Alritzson and Teddy Hogeborn\n\ Stack comes with ABSOLUTELY NO WARRANTY; for details type `warranty;'.\n\ This is free software, and you are welcome to redistribute it\n\ @@ -1782,3 +1782,78 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\n\ POSSIBILITY OF SUCH DAMAGES.\n"); } + +/* "*" */ +extern void sx_2a(environment *env) +{ + int a, b; + + if((env->head)==NULL || env->head->next==NULL) { + printerr("Too Few Arguments"); + env->err=1; + return; + } + + if(env->head->item->type!=integer + || env->head->next->item->type!=integer) { + printerr("Bad Argument Type"); + env->err=2; + return; + } + + a=env->head->item->content.val; + toss(env); if(env->err) return; + b=env->head->item->content.val; + toss(env); if(env->err) return; + push_int(env, b*a); +} + +/* "/" */ +extern void sx_2f(environment *env) +{ + int a, b; + + if((env->head)==NULL || env->head->next==NULL) { + printerr("Too Few Arguments"); + env->err=1; + return; + } + + if(env->head->item->type!=integer + || env->head->next->item->type!=integer) { + printerr("Bad Argument Type"); + env->err=2; + return; + } + + a=env->head->item->content.val; + toss(env); if(env->err) return; + b=env->head->item->content.val; + toss(env); if(env->err) return; + push_int(env, b/a); +} + +/* "mod" */ +extern void mod(environment *env) +{ + int a, b; + + if((env->head)==NULL || env->head->next==NULL) { + printerr("Too Few Arguments"); + env->err=1; + return; + } + + if(env->head->item->type!=integer + || env->head->next->item->type!=integer) { + printerr("Bad Argument Type"); + env->err=2; + return; + } + + a=env->head->item->content.val; + toss(env); if(env->err) return; + b=env->head->item->content.val; + toss(env); if(env->err) return; + push_int(env, b%a); +}