C PROGRAM MOUSE.FT C ------------------- C C C SUBROUTINE MOUSE(IXOFF,IYOFF,IX,IY,ISW,MGPSW) C C C P LEMKIN C NIH C BETHESDA, MD C C C JAN 23, 1977 C JAN 16, 1977 C C C PURPOSE C ------- C THE MOUSE PROCEDURE WILL GET (X,Y) DATA FROM AN INPUT C DEVICE SPECIFIED BY MGPSW AND RETURN IT IN (IX,IY). C IN ADDITION, IT WILL MOVE THE QMT CURSOR TO (IXOFF+IX,IYOFF+IY). C C C THE X,Y COORDINATES ARE MAPPED TO [0:255]. IN ADDITION A "DATA ACTIVE" C VARIABLE "ISW" WILL BE SET=1 IF THE CORRESPONDING KEY IS PRESSED C OTHERWISE IT IS SET TO 0. C C C MGPSW MOUSE FUNCTION C ----- -------------- C 0 RETURN GRAPHPEN DATA [0:255] AND PENTIP SWITCH==>ISW. C 1 RETURN PDP8E A/D CHANNELS (MCHAN, MCHAN+1)==>(IX,IY) C SCALED TO [0:255] AND THE EXECUTE KEY ==>ISW. C C C DIMENSION IAD(16) C C CC [1] INITIALIZATION MGRFPEN=17 MSAMPLE=31 MRDFBW=22 MLDCURSOR=18 C C ==== DEFINE A/D CHANNELS==== MCHAN=6 C C C DISPATCH IF(MGPSW)300,200,300 C C C [2] GRAPHPEN 200 JX=IXOFF JY=IYOFF CALL BMOMNI(0,0,JX,JY,0,JSW,MGRFPEN) IX=JX IY=JY ISW=JSW RETURN C C C [3] DO THE MOUSE 300 CONTINUE C READ THE A/D CHANNELS CALL BMOMNI(0,0, 0,0,0, IAD,MSAMPLE) C JX=IAD(MCHAN+1) JY=IAD(MCHAN+2) C S TAD \JX /MAP: 0:1024==>0:255 S CLL RAR ; CLL RAR /DIVIDE BY 4 S DCA I \IX C S TAD \JY S CLL RAR; CLL RAR S DCA I \IY C C C POST THE CURSOR JX=IXOFF+IX JY=IYOFF+IY CALL BMOMNI(0,0,JX,JY,0,JUNK,MLDCURSOR) C C GET THE "ACTIVE KEY" - EXECUTE KEY FBW12[0] OR [11]. CALL BMOMNI(0,0, 0,0,0, IAD,MRDFBW) IFBW12=IAD(10) S TAD \IFBW12 S AND (4001 /BITS 0 OR 11 S SZA CLA S IAC /FORCE IT TO BE 1 S DCA I \ISW C RETURN END