C C C This routine recieves data from the terminal C and the digitizer. C C SUBROUTINE LISTEN(NUMS,PNUM,STAT,IDX,IDY) BYTE NUMS(3),PNUM(15),NUM,DC,D CHARACTER*1 CHR_DC,CHR_D CHARACTER*3 CHR_RD CHARACTER*40 STRING INTEGER STAT LOGICAL FIRST DATA CHR_RD /'&pR'/,DC /17/,D/100/ C C CHR_D = CHAR(D) CHR_DC = CHAR(DC) FIRST = .FALSE. STRING = CHR_DC CALL SEND(STRING,2) ! transmitt command 5 IST = TT_IN_NUM(NUM) ! listen IF(NUM.EQ.83) GOTO 10 ! has the right character C ! come back from terminal GOTO 5 C 10 STRING = CHR_D !begin protocol sequence CALL SEND(STRING,1) 20 IST = TT_IN_NUM(NUM) IF(NUM.EQ.13.OR.NUM.EQ.10) GOTO 30 GOTO 20 30 STRING = CHR_DC CALL SEND(STRING,2) CALL SEND(CHR_RD,4) ! send talk command to the digitizer I = 0 35 IST = TT_IN_NUM(NUM) IF(NUM.EQ.13) GOTO 40 GOTO 35 40 IST = TT_IN_NUM(NUM) IF(NUM.EQ.13) GOTO 999 ! end of sequence IF(NUM.EQ.44.AND..NOT.FIRST) IDX=I IF(NUM.EQ.44)FIRST=.TRUE. IF(NUM.GT.47.AND.NUM.LT.58.OR.NUM.EQ.44) GOTO 50 GOTO 40 50 GOTO(60,70),STAT ! is the sequence a status or data 60 I = I + 1 NUMS(I) = NUM GOTO 40 70 I = I + 1 PNUM(I) = NUM GOTO 40 999 IDY = I RETURN END