--routeControlx.mesa DIRECTORY RouteDefs; RouteControl:PROGRAM IMPORTS RouteDefs=BEGIN OPEN RouteDefs; Error:SIGNAL=CODE; GetNewProblem:CtlProc=BEGIN chipmonk_FALSE; plot_FALSE; print_TRUE; example_2; RETURN[-1]; END; DealWithPowerAndGround:CtlProc={RETURN[-1]}; CreateRunsInsideTheChannels:CtlProc={RETURN[-1]}; InstallEdgeContacts:CtlProc={RETURN[-1]}; ImplementContacts:CtlProc={RETURN[-1]}; OneLambdaSave:CtlProc={RETURN[-1]}; --One day this will be much different. It should include backup controlTable:ARRAY [0..19) OF CtlProc= [GetNewProblem, CreateCells, --** CreateRectangles, --** RectLess, --*** MakeLevelers, --*** CreateTopology, --*** DealWithPowerAndGround, ChannelLevelRouting, --*** MakeHugs, RouteIntersections,--** CreateRunsInsideTheChannels, TheMainShowIsRouteRunsInChannels, --** InstallCrossChannelConnections, --*** InstallEdgeContacts, InstallInternalContacts,--***Crosses ImplementContacts, OneLambdaSave, DoSilicon,--*** CheckLayout--*** ]; Main:PROCEDURE=BEGIN i:INTEGER_0; InitStorage[]; DO what:INTEGER_-2; what_controlTable[i][!Interrupt=>EXIT]; SELECT what FROM -2=>RETURN; -1=>NULL; 1=>IF i=14 THEN {Return[]; ShowString["REDO MARGINS"]; IF FALSE THEN ShowString[" suppresed"] ELSE {i_4; LOOP}} ELSE Error; ENDCASE=>Error; IF (i_i+1)>=LENGTH[controlTable] THEN EXIT; ENDLOOP; ReturnStorage[]; END; Main[]; END.