%EXTERNALREALFN DISTANCE(%STRING(8) NAM1,%INTEGER R1,C1,P1,PINS1, %C %REAL X1,Y1,%STRING(8) NAM2,%INTEGER R2,C2,P2,PINS2,%REAL X2,Y2) %INTEGER W %IF NAM1=NAM2='C' %AND C1=C2 %THEN %START %IF P1<=8 %AND P2<=8 %THEN %START %IF R1=R2 %THEN %RESULT=!P1-P2!*0.1 %IF P1+P2<=9 %THEN %RESULT=(P1+P2)*0.1+0.4+!R1-R2!*1.1 %RESULT=2.2-(P1+P2)*0.1+!R1-R2!*1.1 %FINISH %IF P1>8 %AND P2>8 %THEN %START %IF R1=R2 %THEN %RESULT=!P1-P2!*0.1 %IF P1+P2<=25 %THEN %RESULT=(P1+P2)*0.1-1.2+!R1-R2!*1.1 %RESULT=3.8-(P1+P2)*0.1+!R1-R2!*1.1 %FINISH %IF P2=8 %THEN %RESULT=2.8-(P2-P1)*0.1+(R2-R1)*1.1 %RESULT=1.2+(P2-P1)*0.1+(R2-R1)*1.1 %FINISH %ELSE %START %IF R1=R2+1 %THEN %RESULT=!P1+P2-17!*0.1+0.4 %IF P2-P1>=8 %THEN %RESULT=2.5-(P2-P1)*0.1+(R1-R2)*1.1 %RESULT=0.9+(P2-P1)*0.1+(R1-R2)*1.1 %FINISH %FINISH %RESULT=!X1-X2!+!Y1-Y2! %END %EXTERNALROUTINE POSITION(%STRING(8) NAM,%INTEGER R,C,P,PINS, %C %REALNAME X,Y) %IF NAM='C' %THEN %START %IF PINS#16 %THEN PRINT STRING('CHIP IN C(') %AND %C WRITE(R,1) %AND PRINT SYMBOL(',') %AND WRITE(C,1) %AND %C PRINT STRING(') ISN''T A 16 PIN CHIP !!! ') %AND %STOP %IF P<=PINS/2 %THEN Y=R*1.1 %AND X=C*1.4+P*0.1+0.4 %ELSE %C Y=R*1.1+0.7 %AND X=C*1.4+0.1*(PINS-P)+0.5 %RETURN ; %FINISH %IF NAM='CONN01' %THEN Y=R*0.15+0.125 %AND X=12.9 %AND %RETURN %IF NAM='CONN02' %THEN Y=R*0.15+0.125 %AND X=13.1 %AND %RETURN %IF NAM='CONN11' %THEN Y=R*0.15+7.625 %AND X=12.9 %AND %RETURN %IF NAM='CONN12' %THEN Y=R*0.15+7.625 %AND X=13.1 %AND %RETURN %IF NAM='CONN21' %THEN Y=4.85-R*0.15 %AND X=0.15 %AND %RETURN %IF NAM='CONN22' %THEN Y=4.85-R*0.15 %AND X=0 %AND %RETURN %IF NAM='CONN31' %THEN Y=R*0.15+8.9 %AND X=0.15 %AND %RETURN %IF NAM='CONN32' %THEN Y=R*0.15+8.9 %AND X=0 %AND %RETURN PRINT STRING(' CHIP OR EDGE NAMED '.NAM.' IN CALL OF ''POSITION'' ROUTINE') %MONITORSTOP %END %ENDOFFILE