|
|
1.1 ! root 1: /* Copyright Bell Telephone Laboratories Whippany, N.J. ! 2: ! 3: * *********************************** ! 4: * *********************************** ! 5: * *** CALL (OVERLAY) A SUBROUTINE *** ! 6: * *** R. B. Drake WH 8C-005 X4163 *** ! 7: * **** Wed Aug 29 16:40:29 1979 ***** ! 8: * *********************************** ! 9: * *********************************** ! 10: * Calling sequence: ! 11: * ! 12: * call name,line# ! 13: * ! 14: * "call" lokks at line "line#" and if that line contains "rem name" ! 15: * it does a gosub to that line. If that line does not contain "rem name" ! 16: * it searches the current directory for a file "name.b" and loads or ! 17: * overlays it according to the line numbers that exist in the file. ! 18: * then it executes a gosub line#. ! 19: ! 20: */ ! 21: /* "@(#) call.c: V 1.1 12/21/80" */ ! 22: ! 23: #include "bas.h" ! 24: static int li; ! 25: static char file[15],Line[15]; ! 26: call() ! 27: { ! 28: int cur; ! 29: FILE *pathopen(),*fp; ! 30: char *prncpy(),*pt; ! 31: char name[15]; ! 32: extern char *expr; ! 33: cur=inst.thing.linno; ! 34: pt=prncpy(file,expr); ! 35: if(*pt++ != ',') ! 36: { ! 37: error(cur,8); ! 38: return(-1); ! 39: } ! 40: pt=prncpy(Line,pt); ! 41: li=atoi(Line); ! 42: if(ch()) return(0); ! 43: strcpy(name,file); ! 44: postb(name); ! 45: if((fp=pathopen(name)) == 0) ! 46: { ! 47: error(cur,4); ! 48: return(-1); ! 49: } ! 50: while(bed(fp) == 0); ! 51: fclose(fp); ! 52: if(ch()) return(0); ! 53: error(cur,43); ! 54: return(-1); ! 55: } ! 56: ch() ! 57: { ! 58: char *ptr; ! 59: fetch(li,&ptr); ! 60: if(!strcmp(file,expr)) ! 61: { ! 62: expr=Line; ! 63: if(gosub() == -1) return(0); ! 64: return(1); ! 65: } ! 66: return(0); ! 67: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.