C PROGRAM MOVSTATE.FT C ---------------- C C PETER LEMKIN C IMAGE PROCESSING UNIT, DCBD C NATIONAL CANCER INSTITUTE C NATIONAL INSTITUTES OF HEALTH C 9000 ROCKVILLE PIKE C BETHESDA, MD. 20014 C C FEB 26, 1977 C FEB 23, 1977 C JAN 17, 1977 C JAN 16, 1977 C JAN 11, 1977 C JAN 10, 1977 C C INTRODUCTION C ------------ C MOVSTATE.FT IS A CHAINED PROGRAM USED WITH BMON2 C IT RECEIVES ITS ARGUMENTS FROM THE CD AREA AND THE IBM1,IHGH1 C IBM2,IHGH2, JBM, JHGH VARIABLES IN COMMON. COMMON IS RESTORED C FIRST BEFORE THE FUNCTION (TO BE INSERTED INTO THE BODY) IS C EVALUATED. AFTER THE FUNCTION IS PERFORME0LT, COMMON C IS SAVED AND BMON2 IS CHAINED BACK TO. C ANY COMPUTATIONS ARE DONE, THE ARGUMENTS ARE THEN CHECKED C C MOVSTATE, , C (Opt. /A for absolute otherwise relative) C (Opt. /N for distance to be specified in steps otherwise it C is specified in the rational units for the specific motor) C - move the x or y stage, focus, zoom, light source wavelength or C ND filter, or QMT threshold B or C the specified C distance (n/d) in rational units for the specified device. C The ::= SX | SY | SF | SZ | SW | SN | SB | SC. C Normally, the state is moved a relative number of steps unless /A C is specified. The /N switch overides the rational unit conversion C and allows the user to specify the distance in steps. C The rational units for x, y, focus are in microns C while the zoom is in X, etc. C C OPDEFS C ------ S OPDEF TADI 1400 S OPDEF DCAI 3400 C S OPDEF MQA 7501 S OPDEF MQL 7421 S OPDEF KRS 6034 S OPDEF BSW 7002 C C S OPDEF HPL 6360 S OPDEF HSR 6321 S OPDEF VPL 6362 S OPDEF VSR 6323 C [1] INITIALIZATION WRITE(1,995) 995 FORMAT('MOVSTATE 2/26/77 - 4:01PM') C C ET=TIMER(0) MNAME=KINFILE(5) INUMERATOR=ICNUM IDENOMINATOR=MAX(ICNUM(2),1) C C MAKE THE DISTANCE MINUS IF /M SIGN=1-(2*ISW(13)) DISTANCE=SIGN*FLOAT(INUMERATOR)/FLOAT(IDENOMINATOR) IF(MNAME)100,999,100 100 IF(DISTANCE)101,999,101 C C C [1.1] GET THE MOTOR NUMBER 101 CONTINUE DO 102 MTRNUM=1,8 S CLA CMA S TAD \MTRNUM S TAD PTABLE S DCA 25 S TAD I 25 S CIA S TAD \MNAME S SNA CLA S JMP \103 102 CONTINUE C C FAILED GOTO 999 C C C [1.2] CVT RATIONAL UNITS TO STEPS 103 IF(ISW(14))200,104,200 C CVT RATIONAL TO STEPS 104 GOTO(111,112,113,114,115,116,117,118),MTRNUM C C C [1.2.1] SW **FIX LATER** 111 DISTANCE=DISTANCE GOTO 200 C C [1.2.2] SN **FIX LATER*** 112 DISTANCE=DISTANCE GOTO 200 C C [1.2.3] SZ - INTERPOLATE DEENDING ON WHERE ON THE CURVE WE ARE. C IF /A C THEN Z=DISTANCE C ELSE Z=DISTANCE+ZOOM 113 IF(ISW)1113,1013,1113 1113 Z=DISTANCE GOTO 2013 1013 CALL BMAP(ZOOM,CURSYM,PUC,UNAME) Z=ZOOM+DISTANCE C INVERSE FN 2013 Z=Z GOTO 200 C C [1.2.4] SF 114 DISTANCE=DISTANCE/0.200 GOTO 200 C C [1.2.5] SY 115 DISTANCE=DISTANCE/0.509 GOTO 200 C C [1.2.6] SX 116 DISTANCE=DISTANCE/0.506 GOTO 200 C C [1.2.7] SB 117 DISTANCE=DISTANCE*256.0 GOTO 200 C C [1.2.8] SC 118 DISTANCE=DISTANCE*256.0 GOTO 200 C C C [2] SEE IF DISTANCE IS < 1.0 200 IF(ABS(DISTANCE)-1.0)201,300,300 201 WRITE(1,202) 202 FORMAT(' DISTANCE VALUE < 1 STEP') GOTO 998 C C C [3] GO MOVE THE STAGE 300 CALL STAGE(MTRNUM,DISTANCE,ISW,IERR) IF(IERR)301,998,301 301 WRITE(1,302)IERR 302 FORMAT(' MOTORS/MVMTR ERROR #=',I5) GOTO 998 C C C [999] ERROR RETURN 999 WRITE(1,996) 996 FORMAT('BAD MOVSTATE SPECIFICATION!') 998 ET=TIMER(1) CALL BSCOMMON(1) CALL CHAIN('BMON2') C C ****PARAMETERS**** S PTABLE, TABLE S TABLE, TEXT /SWSNSZSFSYSXSBSC/ END