100 ' Title : HP9111 110 ' 120 ' Purpose : To receive, scale, and plot x-y coordinate pairs transmitted 130 ' by an hp 9111A digitizer on an IBM graphics display. 140 ' 150 CLEAR 160 DEFINT P,N 172 DEF SEG=0 ' find IEEE interface code memory location 173 IEEE=PEEK(&H182)+256*PEEK(&H183) 174 IF IEEE=0 THEN PRINT "BASIC488 not installed" : STOP 175 DEF SEG=IEEE 180 SEND = 9 : ENTER = 21 'offset addresses 190 DIGITIZER.ADDRESS% = 6 210 DIM PIXEL%(4) 220 SCREEN 2,0,0 :PSET(0,0) :GET (0,0)-(0,0),PIXEL% :CLS :KEY OFF 240 PF% = 1 'pen flag 250 R$=SPACE$(30) 'receive string for x-y pairs 260 XS=.0532 :YS=.0228 'x-y scaling factors for IBM 270 DEF FNCHOP$(X$)=RIGHT$(X$,LEN(X$)-INSTR(X$,",")) 280 ' 290 ' INITIALIZE THE INTERFACE AND THE DIGITIZER 300 ' 310 CALL INITIALIZE (PC.ADDR%, SYSTEM.CONT%) 320 S$="IN;DF;CN" 325 CALL SEND (DIGITIZER.ADDRESS%,S$,STATUS%) 330 LOCATE 1,20 :PRINT "PRESS PEN TO MOVE OR DIGITIZE" 340 X$="X= " :Y$=" Y= " 345 S$="OC" : R$=SPACE$(40) 350 ' 360 ' LOOP TO GET COORDINATES 370 ' 380 CALL SEND (DIGITIZER.ADDRESS%,S$,STATUS%) 385 CALL ENTER (R$,LENGTH%,DIGITIZER.ADDRESS%,STATUS%) 390 X=VAL(R$) :Y=VAL(FNCHOP$(R$)) :P=VAL(FNCHOP$(FNCHOP$(R$))) 400 X1=INT(X*XS) :Y1=INT(199-(Y*YS)) 410 IF X1<0 THEN X1=0 420 IF X1>639 THEN X1=639 430 IF Y1<0 THEN Y1=0 440 IF Y1>199 THEN Y1=199 445 LOCATE 1,1 :PRINT USING "&###&###";X$;X1;Y$;Y1 450 IF P=1 THEN PF%=NOT PF% :GOSUB 520 460 IF PF%>0 THEN PUT(X1,Y1),PIXEL% :FOR I=1 TO 10 :NEXT :PUT(X1,Y1),PIXEL% 470 IF PF%<0 THEN LINE-(X1,Y1) 480 GOTO 380 490 ' 500 ' Signal pen press. 510 ' 520 B$="BP25,15,4;" 525 CALL SEND (DIGITIZER.ADDRESS%,S$,STATUS%) 530 CALL SEND (DIGITIZER.ADDRESS%,S$,STATUS%) 540 CALL ENTER (R$,LENGTH%,DIGITIZER.ADDRESS%,STATUS%) 550 P=VAL(FNCHOP$(FNCHOP$(R$))) 560 IF P=0 THEN RETURN ELSE 530