SBslave

1 REMark Get an SBASIC job to work as
2 REMark a slave of another SBASIC.
3 REMark Expects to be run in standard
4 REMark SB 3-window confinguration.
5 :
6 REMark By pjwitte January 23rd 2001+
7 REMark V0.02
8 :
9 REMark Init
10 ch = 1: cu = 0: CLS#ch: CLS#cu
11 pip$ = 'pipe_p' & HEX$(DATE,32)
12 :
13 JOB_NAME 'Master'
14 :
15 REMark Plumb in SBAS slave
16 co = FOPEN(pip$ & 'o_2048'): ERT co
17 :
18 REMark lrun our command stream
19 cm$ = 'ci = fop_in(#0; "' & pip$ & 'o")': REMark 'lrun "' & pip$ & 'o"'
20 :
21 REMark Start SBAS with command
22 EXEP 'SBASIC'; cm$
23 :
24 REMark We control command channel
25 PRINT#co; 'JOB_NAME "Slave"'
26 PRINT#co; 'ch = fopen(#1; "' & pip$ & 'i_1024")'
27 PRINT#co; 'ce = fopen(#2; "' & pip$ & 'err_1024")'
28 :
29 REMark Messages come out here
30 ci = FOP_IN(pip$ & 'i'): IF ci < 0: CLOSE: ERT ci
31 ce = FOP_IN(pip$ & 'err'): IF ci < 0: CLOSE: ERT ci
32 :
33 REMark Give slave some tools
34 LIST#co; 1000 TO
35 :
36 REMark Test
37 PRINT#co; 'echo "Hello": beep 2000, 2'
38 IF Answer < 0: CLOSE: STOP
39 :
40 REMark Torment!
41 CLS#cu: PRINT#cu; 'Type in your commands'
42 REPeat sb
43  INPUT#cu; '>'! cm$
44  IF cm$ = '' OR cm$ == 'quit': EXIT sb
45  PRINT#co; cm$
46  GetErr
47  IF Answer < 0: EXIT sb
48 END REPeat sb
49 :
50 PRINT#co; 'beep 2000, 2: quit'
51 CLOSE
52 :
53 :
54 DEFine FuNction  Answer
55 LOCal il, ans%, k$(1), l$
56 ans% = 0
57 REPeat il
58  k$ = INKEY$(#ci; 20)
59  IF LEN(k$) = 0: EXIT il
60  INPUT#ci; l$: echo k$ & l$
61   ans% = 1
62 END REPeat il
63 IF EOF(#ci): ans% = -10
64 IF ans% = 0: echo 'no answer'
65 IF ans% < 0: echo 'Slave died'
66 RETurn ans%
67 END DEFine
68 :
69 DEFine PROCedure GetErr
70 LOCal il, k$(1), l$
71 ans% = 0
72 REPeat il
73  k$ = INKEY$(#ce; 20)
74  IF LEN(k$) = 0: EXIT il
75  INPUT#ce; l$: PRINT#0; k$ & l$
76 END REPeat il
77 END DEFine
78 :
1000 DEFine PROCedure echo(t$)
1010 PRINT t$
1020 END DEFine
1030 :
  
Generated with sb2htm on 2019 Mar 28
©pjwitte March 2oi9