On 13/07/2011 17:48, pjwitte wrote:
On 13/07/2011 14:10, Martyn Hill wrote:
Hi everyone
Something got lost in translation.. Heres a tidier version
Per
SBslave
100 REMark Get an SBASIC job to work as
110 REMark a slave of another SBASIC.
120 REMark Full programmable interpreter
130 REMark via PRINT statements!
140 REMark By pjwitte January 23rd 2001
150 :
160 REMark Init
170 ch = 1: cu = 0: CLS#ch: CLS#cu
180 pip$ = 'pipe_p' & HEX$(DATE,32)
190 :
200 JOB_NAME 'Master'
210 :
220 REMark Plumb in SBAS slave
230 co = FOPEN(pip$ & 'o_2048')
240 ERT co
250 REMark lrun our command stream
260 cm$ = 'lrun "' & pip$ & 'o_1024"'
270 REMark Start SBAS with command
280 EXEP 'SBASIC'; cm$
290 REMark We control command channel
300 PRINT#co; 'ch = fopen(#0;"' & pip$ & 'i_64")'
310 PRINT#co; 'JOB_NAME "Slave"'
320 REMark Messages come out here
330 ci = FOP_IN(pip$ & 'i'): IF ci < 0: CLOSE
340 ERT ci
350 :
360 REMark Give slave some tools
370 LIST#co; 1000 TO
380 :
390 REMark Test
400 PRINT#co; 'echo "Hello": beep 2000, 2'
410 IF Answer < 0: CLOSE: STOP
420 :
430 REMark Torment!
440 CLS#cu: PRINT#cu; 'Type in your commands'
450 REPeat sb
460 INPUT#cu; '>'! cm$
470 IF cm$ = '' OR cm$ == 'quit': EXIT sb
480 PRINT#co; cm$
490 IF Answer < 0: EXIT sb
500 END REPeat sb
510 PRINT#co; 'beep 2000, 2: quit'
520 CLOSE
530 :
540 DEFine FuNction Answer
550 ans% = 0
560 REPeat il
570 k$ = INKEY$(#ci; 20)
580 IF LEN(k$) = 0: EXIT il
590 INPUT#ci; l$: echo k$ & l$
600 ans% = 1
610 END REPeat il
620 IF EOF(#ci): ans% = -10
630 IF ans% = 0: echo 'no answer'
640 IF ans% < 0: echo 'Slave died'
650 RETurn ans%
660 END DEFine
670 :
1000 DEFine PROCedure echo(t$)
1010 PRINT#ch; t$
1020 END DEFine
1030 :
_______________________________________________
QL-Users Mailing List
http://www.q-v-d.demon.co.uk/smsqe.htm