|
|
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.