|
|
1.1 root 1: /* Copyright Bell Telephone Laboratories Whippany, N.J.
2:
3: * ***********************************
4: * ***********************************
5: * ********** GOSUB-RETURN ***********
6: * *** R. B. Drake WH 8C-005 X4163 ***
7: * **** Fri Aug 24 17:32:25 1979 *****
8: * ***********************************
9: * ***********************************
10:
11: */
12: /* "@(#) gosub.c: V 1.1 12/21/80" */
13:
14: #include "bas.h"
15: int rtnflg;
16: extern int singflg;
17: extern int singst;
18: gosub()
19: {
20: extern char *ptr;
21: extern int stpflg;
22: char *save;
23: int savno;
24: rtnflg = 0;
25:
26: save = ptr; /* save the incoming program pointer */
27: savno=inst.thing.linno;/* save the gosub line number for diagnostic reasons */
28: if(singflg == 1)
29: {
30: if(singwt() < 0)
31: {
32: rtnflg=stpflg=singflg=0;
33: return(0);
34: }
35: }
36: if(fetch(atoi(expr),&ptr) != 0)
37: {
38: error(savno,0); /* Bad line number */
39: ptr=save;
40: inst.thing.linno=savno;
41: return(-1);
42: }
43: /* the following is a local duplicate of the run command */
44: if(inst.thing.linno == singst)
45: singflg = 1;
46: if(singflg == 1)
47: {
48: if(singex() < 0)
49: {
50: singflg=stpflg=rtnflg=0;
51: return(0);
52: }
53: }
54: else
55: if(bascall(inst.thing.opcode.lobyte) != 0)
56: {
57: ptr=save;
58: return(-1);
59: }
60: while(fetch(-1,&ptr) == 0 && stpflg == 0 && rtnflg == 0)
61: {
62: if(inst.thing.linno == singst)
63: singflg=1;
64: if(singflg == 1)
65: {
66: if(singex() < 0)
67: {
68: singflg=stpflg=rtnflg=0;
69: return(0);
70: }
71: }
72: else
73: if(bascall(inst.thing.opcode.lobyte) != 0)
74: {
75: ptr=save;
76: return(-1);
77: }
78: }
79: ptr=save;
80: if(rtnflg==0)
81: {
82: error(savno,14);
83: return(-1);
84: }
85: stpflg = 0;
86: rtnflg=0;
87: return(0);
88: }
89: /* This is the extremely complex retrun function */
90: __return()
91: {
92: rtnflg = 1;
93: return(0);
94: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.