! The ILAP contact symbols %include "ilap_inc" ! There now follows some tables which define the symbols - ! The max length of each contact symbol is - %const %integer sym len = 4 %const %integer subc start = 1 %const %integer dm start = subc start + sym len * 5 %const %integer pm start = dm start + sym len * 5 %const %integer pdms start = pm start + sym len * 5 %const %integer pdmn start = pdms start + sym len * 5 %const %integer pdmw start = pdmn start + sym len * 5 %const %integer pdme start = pdmw start + sym len * 5 %const %integer pdbns start = pdme start + sym len * 5 %const %integer pdbew start = pdbns start + sym len * 5 %const %integer pdcn start = pdbew start + sym len * 5 %const %integer pdcs start = pdcn start + sym len * 5 %const %integer pdce start = pdcs start + sym len * 5 %const %integer pdcw start = pdce start + sym len * 5 %const %integer pdbn start = pdcw start + sym len * 5 %const %integer pdbs start = pdbn start + sym len * 5 %const %integer pdbe start = pdbs start + sym len * 5 %const %integer pdbw start = pdbe start + sym len * 5 ! Format of the array is 4 lines of the form <-dx> per bax in the symbol. %const %byte %integer %array contacts (1:pdbw start + sym len * 5 - 1) = {subc} 'S', 2, 2, 2, 2, 'M', 2, 2, 2, 2, 'C', 1, 1, 1, 1, 'Z', 0, 0, 0, 0, {dm} 'M', 2, 2, 2, 2, 'D', 2, 2, 2, 2, 'C', 1, 1, 1, 1, 'Z', 0, 0, 0, 0, {pm} 'M', 2, 2, 2, 2, 'P', 2, 2, 2, 2, 'C', 1, 1, 1, 1, 'Z', 0, 0, 0, 0, {pdms} 'M', 2, 3, 2, 3, 'P', 2, 0, 2, 3, 'D', 2, 3, 2, 1, 'C', 1, 2, 1, 2, {pdmn} 'M', 2, 3, 2, 3, 'P', 2, 3, 2, 0, 'D', 2, 1, 2, 3, 'C', 1, 2, 1, 2, {pdmw} 'M', 3, 2, 3, 2, 'P', 0, 2, 3, 2, 'D', 3, 2, 1, 2, 'C', 2, 1, 2, 1, {pdme} 'M', 3, 2, 3, 2, 'P', 3, 2, 0, 2, 'D', 1, 2, 3, 2, 'C', 2, 1, 2, 1, {pdbns} 'D', 1, 3, 1, 3, 'P', 2, 1, 2, 1, 'B', 2, 3, 2, 3, 'I', 2, 3, 2, 3, {pdbew} 'D', 3, 1, 3, 1, 'P', 1, 2, 1, 2, 'B', 3, 2, 3, 2, 'I', 3, 2, 3, 2, {pdcn} 'D', 1, 1, 1, 3, 'P', 2, 2, 2, 1, 'B', 2, 2, 2, 3, 'I', 2, 2, 2, 3, {pdcs} 'D', 1, 3, 1, 1, 'P', 2, 1, 2, 2, 'B', 2, 3, 2, 2, 'I', 2, 3, 2, 2, {pdce} 'D', 1, 1, 3, 1, 'P', 2, 2, 1, 2, 'B', 2, 2, 3, 2, 'I', 2, 2, 3, 2, {pdcw} 'D', 3, 1, 1, 1, 'P', 1, 2, 2, 2, 'B', 3, 2, 2, 2, 'I', 3, 2, 2, 2, {pdbn} 'D', 1, 2, 1, 3, 'P', 2, 1, 2, 1, 'B', 2, 2, 2, 3, 'I', 2, 2, 2, 3, {pdbs} 'D', 1, 3, 1, 2, 'P', 2, 1, 2, 1, 'B', 2, 3, 2, 2, 'I', 2, 3, 2, 2, {pdbe} 'D', 2, 1, 3, 1, 'P', 1, 2, 1, 2, 'B', 2, 2, 3, 2, 'I', 2, 2, 3, 2, {pdbw} 'D', 3, 1, 2, 1, 'P', 1, 2, 1, 2, 'B', 3, 2, 2, 2, 'I', 3, 2, 2, 2 %routine draw contact (%integer start, x, y) %integer I %string (3) temp temp = c layer %for I = 1, 1, sym len %cycle %if contacts (start) # 'Z' %start layer (to string (contacts(start))) box (x - contacts(start+1), y - contacts(start+2), x + contacts(start+3), y + contacts(start+4)) %finish start = start + 5 %repeat layer (temp) %end %external %routine subc (%integer x, y) draw contact (subc start, x, y) %end %externalroutine dm (%integer x,y) draw contact (dm start, x, y) %end %externalroutine pm (%integer x,y) draw contact (pm start, x, y) %end %externalroutine pdms (%integer x, y) draw contact (pdms start, x, y) %end %externalroutine pdmn (%integer x, y) draw contact (pdmn start, x, y) %end %externalroutine pdmw (%integer x, y) draw contact (pdmw start, x, y) %end %externalroutine pdme (%integer x, y) draw contact (pdme start, x, y) %end %external %routine pdbns (%integer x, y) draw contact (pdbns start, x, y) %end %external %routine pdbew (%integer x, y) draw contact (pdbew start, x, y) %end %external %routine pdcn (%integer x, y) draw contact (pdcn start, x, y) %end %external %routine pdcs (%integer x, y) draw contact (pdcs start, x, y) %end %external %routine pdce (%integer x, y) draw contact (pdce start, x, y) %end %external %routine pdcw (%integer x, y) draw contact (pdcw start, x, y) %end %external %routine pdbn (%integer x, y) draw contact (pdbn start, x, y) %end %external %routine pdbs (%integer x, y) draw contact (pdbs start, x, y) %end %external %routine pdbe (%integer x, y) draw contact (pdbe start, x, y) %end %external %routine pdbw (%integer x, y) draw contact (pdbw start, x, y) %end %end %of %file