! ! ERCC DOUBLE HEIGHT BOARD 2000/00/07 ! %BOARDDEF RCC2007(%CHIPARRAY IC16(1:7/'ABCDXFG',1:8), & ! %CHIPARRAY IC40(5:5/'E',1:5), & ! %EDGEARRAY A1,A2,B1,B2(1:18/'ABCDEFHJKLMNPRSTUV') ! %EXTERNALREALFN DISTANCE(%STRING(8) NAM1,%INTEGER COL1,ROW1,PIN1, %C NOP1,%REAL X1,Y1,%STRING(8) NAM2,%INTEGER COL2,ROW2,PIN2,NOP2, %C %REAL X2,Y2) %RESULT=SQRT((X1-X2)**2+(Y1-Y2)**2) %END %EXTERNALROUTINE POSITION(%STRING(8) NAM,%INTEGER COL,ROW,PIN,NOP, %C %REALNAME X,Y) %CONSTREALARRAY IC16Y(1:7)=-1.1,-2.0,-3.1,-4.0,1,-5.1,-6.1 %CONSTREALARRAY ABCDX(1:8)=4.75,4.15,3.55,2.95,2.35,1.75,1.15,0.55 %CONSTREALARRAY EFX(1:4)=4.15,3.25,2.35,1.45 %CONSTREALARRAY ABY(1:18)=-0.25,0,-0.25,0,-0.25,0,-0.25,0,-0.25,0,-0.25, 0,-0.25,0,-0.25,0,-0.25,0 %CONSTREALARRAY ABX(1:18)=2.25,2.0(2),1.75(2),1.5(2),1.25(2),1.0(2), 0.75(2),0.5(2),0.25(2),0 %IF NAM='IC16' %THEN %START %IF PIN<=NOP/2 %THEN %START Y=IC16Y(COL)+0.1*(1-PIN) %IF COL<=4 %THEN X=ABCDX(ROW) %ELSE X=EFX(ROW) %FINISH %ELSE %START Y=IC16Y(COL)+0.1*(PIN-NOP) %IF COL<=4 %THEN X=ABCDX(ROW)-0.3 %ELSE X=EFX(ROW)-0.3 %FINISH %RETURN %FINISH %IF NAM='IC40' %THEN %START %IF PIN<=NOP/2 %THEN Y=0.1*(1-PIN)-5.1 %AND X=0.9*(5-ROW)+1.15 %C %ELSE Y=0.1*(PIN-NOP)-5.1 %AND X=0.9*(5-ROW)+0.55 %RETURN %FINISH %IF NAM='A1' %THEN Y=ABY(COL)-0.5 %AND X=ABX(COL)+2.75 %AND %RETURN %IF NAM='A2' %THEN Y=ABY(COL) %AND X=ABX(COL)+2.75 %AND %RETURN %IF NAM='B1' %THEN Y=ABY(COL)-0.5 %AND X=ABX(COL) %AND %RETURN %IF NAM='B2' %THEN Y=ABY(COL) %AND X=ABX(COL) %AND %RETURN PRINT STRING('CHIP OR EDGE NAME '.NAM.' USED IN ''POSITION'' CALL') %STOP %END %ENDOFFILE