--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.