1746-BAS got some of it to work

Jean, You have come thru yet again. Works great. (CALL 57) Got one more question about string compare. I tried this but get an error.
10 STRING 1000,100
100 N=110
120 PUSH N : PUSH 110 : CALL 24
130 PUSH 20 : CALL 57 : POP X
150 $(1)="Aud^M\00In08"
160 IF $(1)="Aud^M\00In08" THEN I=18
170 IF $(1)="Aud^M\00In09" THEN I=19
171 IF $(1)="Aud" THEN I=23
180 CALL 38
190 CALL 53
200 PUSH 201
210 CALL 14
220 POP X
240 PUSH I
250 PUSH 201
260 CALL 24
270 CALL 54
280 POP Y
290 GOTO 150
ERROR: BAD SYNTAX - IN LINE 160
 
I think you can't use "=" to compare 2 strings. It must be just for numerical values.

It's possible to compare 2 strings character by character, using ASC function, in a loop
180 IF ASC($(2,I)=ASC($(1,I) THEN RSLT=RSLT.AND.RSLT

But i think easier to use CALL 64 (find a string in another) : if the result is 1 and if the lengths of the 2 strings are equals (using CALL 68), the strings are identicals.
 
1 STRING 1000,100
2 $(1)="Aud^M\00In02"
3 $(2)="Aud^M\00In02"
10 FOR I=1 TO 12
20 REM
30 IF ASC($(2,I)=ASC($(1,I) THEN PRINT "EQUAL"
40 NEXT I



ERROR: BAD SYNTAX - IN LINE 30

30 IF ASC($(2,I)=ASC($(1,I) THEN PRINT "EQUAL"
-------------------X
 
try
FOR I=1 TO 12
A=ASC($(2,I)
B=ASC($(1,I)
if A=B then THEN PRINT "EQUAL"
NEXT I


I think that this would be easier:
1 STRING 1000,100
2 $(1)="Aud^M\00In02" : ASC((1),13)=13
3 $(2)="Aud^M\00In02" : ASC((2),13)=13
10 PUSH 1 : CALL 68 : POP L1 : REM LEHGTH OF $(1)
20 PUSH 2 : CALL 68 : POP L2 : REM LEHGTH OF $(2)
30 IF L1<>L2 THEN GOTO 500 : REM LENGTH NOT EQUAL
40 PUSH 1 : PUSH 2 : CALL 64 : POP POS : VERIFYING IF $(1) IS IN $(2)
50 IF POS<>1 THEN GOTO 500 : REM NOT FOUND AT POSITION 1
60..... TREATEMENT IF TRUE

500 TREATMENT IF FALSE
 
I used the code you provided and it dose not like it.
>1 string 1000,100
>2 $(1)="aud^m\00in02" : Asc((1),13)=13
>3 $(2)="aud^m\00in02" : Asc((2),13)=13
>10 push 1 : Call 68 : Pop l1 : Rem lehgth of $(1)
>20 push 2 : Call 68 : Pop l2 : Rem lehgth of $(2)
>30 if l1<>l2 then goto 500 : Rem length not equal
>40 push 1 : Push 2 : Call 64 : Pop pos : Verifying if $(1) is in $(2)
>50 if pos<>1 then goto 500 : Rem not found at position 1
>run



error: Bad syntax - in line 2

2 $(1)="aud^m\00in02" : Asc((1),13)=13
----------------------------------x
THIS IS THE ERROR Asc((1),13)=13
 
I got it () was of thas all.
Now i am getting stoped at the INPS command. It stays there. I tried this code.
10 STRING 1000,100
30 $(2)="Aud^M\00IM01"
40 PUSH 2 : CALL 37 : REM RESET BUFFER
60 PUSH 6 : CALL 56 : POP S
70 PUSH 100 : CALL 14 : POP MQ1
80 PUSH 101 : CALL 14 : POP MQ2
90 PUSH MI1 : PUSH 110 : CALL 24
100 REM
140 IF MQ1=1 THEN PRINT #MQ2,"*1$" : REM VID 1
150 IF MQ1=2 THEN PRINT #MQ2,"*2$" : REM VID 2
160 PUSH 1 : CALL 36 : POP POB
170 PRINT "P2 OUT BUFF",POB
180 IF POB<>0 THEN GOTO 200 ELSE GOTO 60
200 INPS #$(1),20
240 FOR I=1 TO 12
250 A=ASC($(2),I)
260 B=ASC($(1),I)
270 IF (A=B) THEN CT=1
280 IF A<>B THEN CT=-1
290 IF CT=-1 THEN GOTO 800
291 IF CT=1 THEN GOTO 900
292 PRINT " I=",I
300 NEXT I
301 REM
310 PUSH 2 : CALL 37 : REM RESET BUFFER
800 MI1=-1
801 GOTO 60
900 MI1=2
910 GOTO 60
 
Sorry it was ASC($(1),13)=13 and Asc($(2),13)=13..

In your new code, I don't understand how you are stopped but may be: With the GOTO of lines 290 and 291 before the next statement, you will never end the "for next" loop and never pass in the line 292.

I didn't test it bat I propose this string compare function to you
. Beware with GOSUB call: you can't call an gosub if you already are in an gosub call (I hope I was clear)
I'm not sure It's possible to use $(NSTRT1) for string use. Maybe it will be necessary to use $(1) and $(2) directly in the function. In fact you can use $(8) and $(9) if you want, and do $(8)=$(1) and $(9)=$(2) before the call

1 STRING 1000,100
2 $(1)="Aud^M\00In02"
3 $(2)="Aud^M\00In02"
50 NSTRT1=1 : NSTRT2=2 : LSTRT=12 : GOSUB 9000
60 IF RSTRT=1 THEN .... <RSTRT IS AN INTEGER>

9000 REM ***************************************************************
9001 REM * COMPARE 2 STRINGS FUNCTION *
9002 REM * PARAMETER NSTRST1 : FIRST STRING INDEX *
9003 REM * PARAMETER NSTRST2 : SECOND STRING INDEX *
9004 REM * PARAMETER LSTRST : NUMBER OF CHARACTER TO TEST (BEGIN TO 1) *
9005 REM * INTERNAL ISTRT : LOOP INDEX *
9006 REM * RESULT RSTRT : IF 0 FALSE, IF 1 TRUE *
9009 REM ***************************************************************
9010 RSTRT=0 : ISTRT=1 : REM INIT FUNCTION
9020 STR1=ASC($(NSTRT1),ISTRT) : STR2=ASC($(NSTRT2),ISTRT) : REM GOT CHARACTER VALUE
9030 IF STR1<>STR2 THEN GOTO 9060 : REM IF DIFFERENT ABORT WITH RSTRT=0
9040 IF ISTRT<LSTRT THEN ISTRT=ISTRT+1 : GOTO 9000 : REM END OF LOOP
9050 RSTRT=1 : REM STRING ARE EQUALS
9060 RETURN : REM END OF GOSUB CALL

Second version

1 STRING 1000,100
2 $(1)="Aud^M\00In02"
3 $(2)="Aud^M\00In02"
50 $(8)=$(1) : $(9)=$(2) : LSTRT=12 : GOSUB 9000
60 IF RSTRT=1 THEN .... <RSTRT IS AN INTEGER>

9000 REM ***************************************************************
9001 REM * COMPARE 2 STRINGS FUNCTION *
9002 REM * PARAMETER $(8) : FIRST STRING to compare *
9003 REM * PARAMETER $(9) : SECOND STRING to compare *
9004 REM * PARAMETER LSTRST : NUMBER OF CHARACTER TO TEST (BEGIN TO 1) *
9005 REM * INTERNAL ISTRT : LOOP INDEX *
9006 REM * RESULT RSTRT : IF 0 FALSE, IF 1 TRUE *
9009 REM ***************************************************************
9010 RSTRT=0 : ISTRT=1 : REM INIT FUNCTION
9020 STR1=ASC($(8),ISTRT) : STR2=ASC($(9),ISTRT) : REM GOT CHARACTER VALUE
9030 IF STR1<>STR2 THEN GOTO 9060 : REM IF DIFFERENT ABORT WITH RSTRT=0
9040 IF ISTRT<LSTRT THEN ISTRT=ISTRT+1 : GOTO 9000 : REM END OF LOOP
9050 RSTRT=1 : REM STRING ARE EQUALS
9060 RETURN : REM END OF GOSUB
 
Thanks for all the help Jean!!
Here is something I came up with, your help.
What I am trying to do is test the whole string SAVE the status and then set a bit to the PLC if true or false. This seems not to work so well.


10 STRING 1000,100
20 $(1)="Out01Aud"
30 $2)="N"
40 SLN8=0 : SLN9=0 : SLN10=0 : SLN11=0 : SLN12=0 : SLN13=0 : SLN14=0
50 PUSH 6 : CALL 56 : POP S
60 PUSH 100 : CALL 14 : POP MQ1
70 PUSH 101 : CALL 14 : POP MQ2
80 IF MQ1=1 THEN $(2)="Out01Aud"
90 IF MQ1=2 THEN $(2)="Out06Aud"
100 T=0 : T=T+1 : IF T=500 THEN T=0
110 REM IF T>400 THEN GOTO 81
120 FOR I=1 TO 14
130 REM GOTO 30
140 A=ASC($(2),I)
150 B=ASC($(1),I)
160 IF (A<>B) THEN CT=200
170 IF (A=B) THEN CT=1
180 IF A=B.AND.I=1 THEN SLN1=1 ELSE SLN1=2
190 IF A=B.AND.I=2 THEN SLN2=1 ELSE SLN2=2
200 IF A=B.AND.I=3 THEN SLN3=1 ELSE SLN3=2
210 IF A=B.AND.I=4 THEN SLN4=1 ELSE SLN4=2
220 IF A=B.AND.I=5 THEN SLN5=1 ELSE SLN5=2
230 IF A=B.AND.I=6 THEN SLN5=1 ELSE SLN6=2
240 IF A=B.AND.I=7 THEN SLN7=1 ELSE SLN7=2
250 IF A=B.AND.I=8 THEN SLN8=1 ELSE SLN8=2
260 IF A=B.AND.I=9 THEN SLN9=1 ELSE SLN9=2
270 IF A=B.AND.I=10 THEN SLN10=1 ELSE SLN10=2
280 IF A=B.AND.I=11 THEN SLN11=1 ELSE SLN11=2
290 IF A=B.AND.I=12 THEN SLN12=1 ELSE SLN12=2
300 IF A=B.AND.I=13 THEN SLN13=1 ELSE SLN13=2
310 IF A=B.AND.I=14 THEN SLN14=1 ELSE SLN14=2
320 PRINT I
330 NEXT I
340 PRINT SLN1,SLN2,SLN3,SLN4,SLN4,SLN6,SLN7
350 PRINT SLN8,SLN9,SLN10,SLN11,SLN12,SLN13,SLN14
360 GOTO 50

PS PLC coding is wayyyy easier that this BAS card but I want to learn as much as I can.
Thanks,
Matt
 
From I=9 to 14, you don't know what are the characters in $(1) and $(2)

Are you sure that M0:0 is equal to 1 in the CLP ? It would explain the result. please add this line before the test

105 PRINT "MQ1=",MQ1
 
Jean thanks again. You put me on to something. I put your code in and sure enough MQ1 stayed at o even when I made sure that it was set to a value. that pointed to me breaking down the code to each call to the PLC or from and I found if you have a M1 call the MO call wont work at the same time. so I am trying for loops and GOSUB but no luck.
here is the code I have so far seems like it could be shorter.
CODE VER 1.0
FOUND THAT IF MI1 IS CALLED AT ALL IT STOPS
THE MQ1 FROM EVEN PRINTING
OR WORKING AT ALL ???
TO TRY AND CATCH IF EACH
TIME IN FOR LOOP IF
TRUE OR FALSE


10 MODE (PRT2,19200,N,8,1,N,)
20 MODE (PRT1,19200,N,8,1,N,)
30 PUSH 2 : CALL 37 : REM RESET BUFFER
40 STRING 4000,100
50 T=0 : T=T+1 : IF T=500 THEN T=0
60 $(1)="Out01 In01 Aud"
70 REM $(2)="Out01 In01 Aud"
80 SLN1=0 : SLN2=0 : SLN3=0 : SLN4=0 : SLN5=0 : SLN6=0 : SLN7=0
90 SLN8=0 : SLN9=0 : SLN10=0 : SLN11=0 : SLN12=0 : SLN13=0 : SLN14=0
91 TFT = 234
92 MI1=TFT
100 PUSH 10 : CALL 56 : POP S
110 PUSH 100 : CALL 14 : POP MQ1
120 PUSH 101 : CALL 14 : POP MQ2
121 PUSH 102 : CALL 14 : POP MQ3
122 PUSH 103 : CALL 14 : POP MQ4
130 IF MQ2=1 THEN PRINT #"1*1$" : REM HMI NDE AUD 01-01
140 IF MQ2=2 THEN PRINT #"2*1$" : REM HMI NDE AUD 02-01
150 IF MQ2=3 THEN PRINT #"3*1$" : REM HMI NDE AUD 03-01
160 IF MQ2=4 THEN PRINT #"4*1$" : REM HMI NDE AUD 04-01
170 IF MQ2=5 THEN PRINT #"1*0Z" : REM UNMUTE AUD O1
180 REM MF1=TFT
181 REM
190 REM
200 PUSH MF1 : PUSH 110 : CALL 24 : PUSH 20 : CALL 57 : POP X
210 PUSH MI2 : PUSH 111 : CALL 24 : PUSH 20 : CALL 57 : POP X
220 PUSH MI3 : PUSH 112 : CALL 24 : PUSH 20 : CALL 57 : POP X
230 PUSH MI4 : PUSH 113 : CALL 24 : PUSH 20 : CALL 57 : POP X
240 PUSH MI5 : PUSH 114 : CALL 24 : PUSH 20 : CALL 57 : POP X
250 PUSH MI6 : PUSH 115 : CALL 24 : PUSH 20 : CALL 57 : POP X
260 REM
261 REM
270 REM IF T>400 THEN GOTO 81
280 REM
290 REM GOTO 30
300 PUSH 1 : CALL 36 : POP POB
310 REM Print"P2 OUT BUFF", POB
320 IF POB<>0 THEN GOTO 340
330 IF POB=0 THEN GOTO 100
340 INPS #$(2),20
350 FOR I=1 TO 14
360 A=ASC($(2),I)
370 B=ASC($(1),I)
380 IF (A<>B) THEN CT=200
390 IF (A=B) THEN CT=1
400 : REM IF A=B.AND.I=0 THEN SLN0=1
410 : REM IF A<>B.AND.I=0 THEN SLN0=2
420 IF A=B.AND.I=1 THEN SLN1=1
430 IF A<>B.AND.I=1 THEN SLN1=20
440 IF A=B.AND.I=2 THEN SLN2=1
450 IF A<>B.AND.I=2 THEN SLN2=20
460 IF A=B.AND.I=3 THEN SLN3=1
470 IF A<>B.AND.I=3 THEN SLN3=20
480 IF A=B.AND.I=4 THEN SLN4=1
490 IF A<>B.AND.I=4 THEN SLN4=20
500 IF A=B.AND.I=5 THEN SLN5=1
510 IF A<>B.AND.I=5 THEN SLN5=20
520 IF A=B.AND.I=6 THEN SLN6=1
530 IF A<>B.AND.I=6 THEN SLN6=20
540 IF A=B.AND.I=7 THEN SLN7=1
550 IF A<>B.AND.I=7 THEN SLN7=20
560 IF A=B.AND.I=8 THEN SLN8=1
570 IF A<>B.AND.I=8 THEN SLN8=20
580 IF A=B.AND.I=9 THEN SLN9=1
590 IF A<>B.AND.I=9 THEN SLN9=20
600 IF A=B.AND.I=10 THEN SLN10=1
610 IF A<>B.AND.I=10 THEN SLN10=20
620 IF A=B.AND.I=11 THEN SLN11=1
630 IF A<>B.AND.I=11 THEN SLN11=20
640 IF A=B.AND.I=12 THEN SLN12=1
650 IF A<>B.AND.I=12 THEN SLN12=20
660 IF A=B.AND.I=13 THEN SLN13=1
670 IF A<>B.AND.I=13 THEN SLN13=20
680 IF A=B.AND.I=14 THEN SLN14=1
690 IF A<>B.AND.I=14 THEN SLN14=20
700 REM PRINT $(2)
710 PRINT I,A,B
720 NEXT I
730 TFAD=SLN1+SLN2+SLN3+SLN4+SLN4+SLN6+SLN7+SLN8+SLN9+SLN10+SLN11+SLN12
740 TFT=TFAD+SLN13+SLN14
750 PUSH 2 : CALL 37 : REM RESET BUFFER
760 PRINT TFT
770 PRINT SLN1,SLN2,SLN3,SLN4,SLN4,SLN6,SLN7,SLN8,SLN9,SLN10,SLN11,SLN12
780 PRINT SLN13,SLN14
790 PRINT $(2)
800 GOTO 100
 
OK I can see it stops at the
340 INPS #$(2),20
changed it to
340 INPS #$(2),14
it runs once and stops there.
Any Ideas?
Thanks
 
GOT it sorted. except for on thing. My string $(3) will not return a value.
The rest of the code seems to work.

CODE
0 MODE (PRT2,19200,N,8,1,N,)
20 MODE (PRT1,19200,N,8,1,N,)
30 PUSH 2 : CALL 37 : REM RESET BUFFER
40 PUSH 3 : CALL 120 : REM CLEAR SLC MO AND M1 FILES
50 PUSH 12 : CALL 120 : REM CLEAR SLC O AND I FILES
60 STRING 4000,100
70 $(1)="Out01 In04 Aud"
80 PRINT @$(1)
90 REM $(2)="Out01 In04 Aud"
100 SLN1=0 : SLN2=0 : SLN3=0 : SLN4=0 : SLN5=0 : SLN6=0 : SLN7=0
110 SLN8=0 : SLN9=0 : SLN10=0 : SLN11=0 : SLN12=0 : SLN13=0 : SLN14=0
120 PRINT @"1%"
130 T=T+1 : IF T>4 THEN T=1
140 T1=T1+1 : IF T1>4000 THEN T1=1
150 REM PRINT "TFT",TFT,"MF1",MF1,"MQ1",MQ1
160 REM IF T=1 GOTO 200 : REM CHECK SENT FROM PLC
170 REM IF T=2 GOTO 810 : REM SEND BUFFER TO PLC
180 PUSH 1 : CALL 36 : POP POB
190 PRINT "P2 OUT BUFF",POB
200 IF POB<>0 THEN GOTO 250
210 IF POB=0 THEN GOTO 650
220 IF MQ1=1 THEN W=16
230 IF MQ1=5 THEN W=5
240 REM
250 IF MQ1<=1.AND.MQ1>=4 THEN INPS #$(3),16
260 IF MQ1=5 THEN INPS #$(3),7
270 PRINT "ST B",$(3)
280 FOR I=1 TO 16
290 A=ASC($(1),I)
300 B=ASC($(3),I)
310 IF A=B.AND.I=1 THEN SLN1=1
320 IF A<>B.AND.I=1 THEN SLN1=20
330 IF A=B.AND.I=2 THEN SLN2=1
340 IF A<>B.AND.I=2 THEN SLN2=20
350 IF A=B.AND.I=3 THEN SLN3=1
360 IF A<>B.AND.I=3 THEN SLN3=20
370 IF A=B.AND.I=4 THEN SLN4=1
380 IF A<>B.AND.I=4 THEN SLN4=20
390 IF A=B.AND.I=5 THEN SLN5=1
400 IF A<>B.AND.I=5 THEN SLN5=20
410 IF A=B.AND.I=6 THEN SLN6=1
420 IF A<>B.AND.I=6 THEN SLN6=20
430 IF A=B.AND.I=7 THEN SLN7=1
440 IF A<>B.AND.I=7 THEN SLN7=20
450 IF A=B.AND.I=8 THEN SLN8=1
460 IF A<>B.AND.I=8 THEN SLN8=20
470 IF A=B.AND.I=9 THEN SLN9=1
480 IF A<>B.AND.I=9 THEN SLN9=20
490 IF A=B.AND.I=10 THEN SLN10=1
500 IF A<>B.AND.I=10 THEN SLN10=20
510 IF A=B.AND.I=11 THEN SLN11=1
520 IF A<>B.AND.I=11 THEN SLN11=20
530 IF A=B.AND.I=12 THEN SLN12=1
540 IF A<>B.AND.I=12 THEN SLN12=20
550 IF A=B.AND.I=13 THEN SLN13=1
560 IF A<>B.AND.I=13 THEN SLN13=20
570 IF A=B.AND.I=14 THEN SLN14=1
580 IF A<>B.AND.I=14 THEN SLN14=20
590 PRINT "INDEX",I
600 PRINT "LP",I,"A",A,"B",B
610 PRINT SLN1,SLN2,SLN3,SLN4,SLN4,SLN6,SLN7,SLN8,SLN9,SLN10,SLN11,SLN1
620 PRINT SLN13,SLN14
630 NEXT I
640 GOTO 770
650 PUSH 10 : CALL 56 : POP S
660 PUSH 100 : CALL 14 : POP MQ1
670 PUSH 101 : CALL 14 : POP MQ2
680 PUSH 102 : CALL 14 : POP MQ3
690 PUSH 103 : CALL 14 : POP MQ4
700 REM IF MQ2=0 THEN PRINT #"1%"
710 IF MQ2=1 THEN PRINT #"1*1$" : REM HMI NDE AUD 01-01
720 IF MQ2=2 THEN PRINT #"2*1$" : REM HMI NDE AUD 02-01
730 IF MQ2=3 THEN PRINT #"3*1$" : REM HMI NDE AUD 03-01
740 IF MQ2=4 THEN PRINT #"4*1$" : REM HMI NDE AUD 04-01
750 IF MQ2=5 THEN PRINT #"1*0Z" : REM UNMUTE AUD O1
760 GOTO 130
770 TFAD=SLN1+SLN2+SLN3+SLN4+SLN4+SLN6+SLN7+SLN8+SLN9+SLN10+SLN11+SLN12
780 TFT=TFAD+SLN13+SLN14
790 MF1=TFT
800 PUSH 2 : CALL 37 : REM RESET BUFFER
810 MI2=203 : MI3=T1 : MI6=115
820 PUSH MF1 : PUSH 202 : CALL 24 : CALL 54 : POP X
830 PUSH MI2 : PUSH 203 : CALL 24 : CALL 54 : POP X
840 PUSH MI3 : PUSH 204 : CALL 24 : CALL 54 : POP X
850 PUSH MI4 : PUSH 113 : CALL 24 : CALL 54 : POP X
860 PUSH MI5 : PUSH 114 : CALL 24 : CALL 54 : POP X
870 PUSH MI6 : PUSH 115 : CALL 24 : CALL 54 : POP X
880 PUSH 3 : CALL 120 : REM CLEAR SLC MO
890 REM PRINT "TFT",TFT,"MF1",MF1,"MQ1",MQ1
900 GOTO 130

what I get in to print output
P2 OUT BUFF 0
P2 OUT BUFF 16
ST B
INDEX 1
LP 1 A 79 B 0
20 20 20 20 20 20 20 20 20 20 20 20
20 20
INDEX 2
LP 2 A 117 B 0
20 20 20 20 20 20 20 20 20 20 20 20
20 20
INDEX 3
LP 3 A 116 B 0
20 20 20 20 20 20 20 20 20 20 20 20
20 20
INDEX 4
LP 4 A 48 B 0
20 20 20 20 20 20 20 20 20 20 20 20
20 20
INDEX 5
LP 5 A 49 B 0
20 20 20 20 20 20 20 20 20 20 20 20
20 20
INDEX 6
LP 6 A 32 B 0
20 20 20 20 20 20 20 20 20 20 20 20
20 20
INDEX 7
LP 7 A 73 B 0
20 20 20 20 20 20 20 20 20 20 20 20
20 20
INDEX 8
LP 8 A 110 B 0
20 20 20 20 20 20 20 20 20 20 20 20
20 20
INDEX 9
LP 9 A 48 B 0
20 20 20 20 20 20 20 20 20 20 20 20
20 20
INDEX 10
LP 10 A 52 B 0
20 20 20 20 20 20 20 20 20 20 20 20
20 20
INDEX 11
LP 11 A 32 B 0
20 20 20 20 20 20 20 20 20 20 20 20
20 20
INDEX 12
LP 12 A 65 B 0
20 20 20 20 20 20 20 20 20 20 20 20
20 20
INDEX 13
LP 13 A 117 B 0
20 20 20 20 20 20 20 20 20 20 20 20
20 20
INDEX 14
LP 14 A 100 B 0
20 20 20 20 20 20 20 20 20 20 20 20
20 20

says there are 16 characters but B = 0 the whole for I statement.
Thanks,
Matt
 
I am at al loss

If the numbers are not equal why is the code telling me they are equal??


10 INPUT "MQ1 SET TO",MQ2
20 PRINT MQ2
30 IF MQ1=1 THEN $(3)="Out01 In01 Aud" : REM VID 1
40 IF MQ1=2 THEN $(3)="Out01 In02 Aud" : REM VID 2
50 IF MQ1=3 THEN $(3)="Out01 In03 Aud" : REM SHOW TIE
60 IF MQ1=4 THEN $(3)="Out01 In04 Aud" : REM SHOW TIE
70 IF MQ1=5 THEN $(3)="Out01 In05 Aud" : REM SHOW TIE
80 IF MQ1=6 THEN $(3)="Out01 In06 Aud" : REM SHOW TIE
90 IF MQ1=7 THEN $(3)="Out01 In07 Aud" : REM SHOW TIE
100 REM
101 IF MQ2=1 THEN PRINT #"01*01$"
102 IF MQ2=2 THEN PRINT #"01*02$"
103 IF MQ2=3 THEN PRINT #"01*03$"
104 IF MQ2=4 THEN PRINT #"01*04$"
105 IF MQ2=5 THEN PRINT #"01*05$"
106 IF MQ2=6 THEN PRINT #"01*06$"
107 IF MQ2=7 THEN PRINT #"01*07$"
110 STRING 4000,100
120 $(1)="Out01 In01 Aud"
130 $(4)="OMK01 In05 Aud"
140 REM
150 INPS #$(2),16
160 REM PRINT "ST RETURN",$(2)
170 FOR I=1 TO 16
180 A=ASC($(2),I)
190 B=ASC($(1),I)
200 REM SLN1=0 : SLN2=0 : SLN3=0 : SLN4=0 : SLN5=0 : SLN6=0 : SLN7=0
210 REM SLN8=0 : SLN9=0 : SLN10=0 : SLN11=0 : SLN12=0 : SLN13=0 : SLN14=0
211 IF I=4 THEN CH1=A
212 IF I=5 THEN CH2=A
213 IF I=9 THEN CH3=A
214 IF I=10 THEN CH4=A
215 IF I=12 THEN CH5=A
220 IF A=B.AND.I=1 THEN SLN1=1
230 IF A<>B.AND.I=1 THEN SLN1=20
240 IF A=B.AND.I=2 THEN SLN2=1
250 IF A<>B.AND.I=2 THEN SLN2=20
260 IF A=B.AND.I=3 THEN SLN3=1
270 IF A<>B.AND.I=3 THEN SLN3=20
280 IF A=B.AND.I=4 THEN SLN4=1
290 IF A<>B.AND.I=4 THEN SLN4=20
300 IF A=B.AND.I=5 THEN SLN5=1
310 IF A<>B.AND.I=5 THEN SLN5=20

320 IF A=B.AND.I=6 THEN SLN6=1
330 IF A<>B.AND.I=6 THEN SLN6=20
340 IF A=B.AND.I=7 THEN SLN7=1
350 IF A<>B.AND.I=7 THEN SLN7=20
360 IF A=B.AND.I=8 THEN SLN8=1
370 IF A<>B.AND.I=8 THEN SLN8=20
380 IF A=B.AND.I=9 THEN SLN9=1
390 IF A<>B.AND.I=9 THEN SLN9=20
400 IF A=B.AND.I=10 THEN SLN10=1
410 IF A<>B.AND.I=10 THEN SLN10=20
420 IF A=B.AND.I=11 THEN SLN11=1
430 IF A<>B.AND.I=11 THEN SLN11=20
440 IF A=B.AND.I=12 THEN SLN12=1
450 IF A<>B.AND.I=12 THEN SLN12=20
460 IF A=B.AND.I=13 THEN SLN13=1
470 IF A<>B.AND.I=13 THEN SLN13=20
480 IF A=B.AND.I=14 THEN SLN14=1
490 IF A<>B.AND.I=14 THEN SLN14=20
500 REM PRINT $(2)
510 PRINT "LP",I,"A",A,"B",B
520 NEXT I
530 TFAD=SLN1+SLN2+SLN3+SLN4+SLN4+SLN6+SLN7+SLN8+SLN9+SLN10+SLN11+SLN12
540 TFT=TFAD+SLN13+SLN14
550 PUSH 2 : CALL 37 : REM RESET BUFFER
560 REM
570 MF1=TFT
580 MI2=CH1 : MI3=CH2 : MI4=CH3 : MI5=CH4 : MI6=CH5
590 PUSH MF1 : PUSH 202 : CALL 24 : CALL 54 : POP X
591 PUSH MI2 : PUSH 203 : CALL 24 : CALL 54 : POP X
592 PUSH MI3 : PUSH 204 : CALL 24 : CALL 54 : POP X
593 PUSH MI4 : PUSH 205 : CALL 24 : CALL 54 : POP X
594 PUSH MI5 : PUSH 206 : CALL 24 : CALL 54 : POP X
595 PUSH MI6 : PUSH 207 : CALL 24 : CALL 54 : POP X
600 PRINT SLN1,SLN2,SLN3,SLN4,SLN4,SLN6,SLN7,SLN8,SLN9,SLN10,SLN11,SLN12
610 PRINT SLN13,SLN14
620 GOTO 10

READY
>RUN

MQ1 SET TO1
1
LP 1 A 79 B 79
LP 2 A 117 B 117
LP 3 A 116 B 116
LP 4 A 48 B 48
LP 5 A 49 B 49
LP 6 A 32 B 32
LP 7 A 73 B 73
LP 8 A 110 B 110
LP 9 A 48 B 48
LP 10 A 49 B 49
LP 11 A 32 B 32
LP 12 A 65 B 65
LP 13 A 117 B 117
LP 14 A 100 B 100
LP 15 A 13 B 13
LP 16 A 10 B 0
1 1 1 1 1 1 1 1 1 1 1 1
1 1
MQ1 SET TO2
2
LP 1 A 79 B 79
LP 2 A 117 B 117
LP 3 A 116 B 116
LP 4 A 48 B 48
LP 5 A 50 B 49
LP 6 A 32 B 32
LP 7 A 73 B 73
LP 8 A 110 B 110
LP 9 A 48 B 48
LP 10 A 49 B 49
LP 11 A 32 B 32
LP 12 A 65 B 65
LP 13 A 117 B 117
LP 14 A 100 B 100
LP 15 A 13 B 13
LP 16 A 10 B 0
1 1 1 1 1 1 1 1 1 1 1 1
1 1
MQ1 SET TO3
3
LP 1 A 79 B 79
LP 2 A 117 B 117
LP 3 A 116 B 116
LP 4 A 48 B 48
LP 5 A 51 B 49
LP 6 A 32 B 32
LP 7 A 73 B 73
LP 8 A 110 B 110
LP 9 A 48 B 48
LP 10 A 49 B 49
LP 11 A 32 B 32
LP 12 A 65 B 65
LP 13 A 117 B 117
LP 14 A 100 B 100
LP 15 A 13 B 13
LP 16 A 10 B 0
1 1 1 1 1 1 1 1 1 1 1 1
1 1
 

Similar Topics

Hello, We have an older SLC500 controlled system that is using a BASIC module to communicate to a third party device. Looking into converting the...
Replies
4
Views
1,279
I am trying to program a 1747-M2 EEPROM in a 1746-BAS module. I can download the program and I enter "PROG" and it says successful. I can use the...
Replies
5
Views
2,004
Hi, I am upgrading a AB PLc to Siemens PLC logic and everything is ready for siemens but the problem is the existing PLC is communicating to DCS...
Replies
7
Views
4,768
I'll admit that in all these years I have only encountered M0/M1 files one other time, and it was used to communicate with Eurodrives. In a SLC...
Replies
6
Views
1,727
We are using Sick CLX series bar code reader with AB 1746-BAS module in a outdated system . The processor is SLC 5/04.We want to revamp the system...
Replies
1
Views
1,472
Back
Top Bottom