--routeControl.mesa
DIRECTORY RouteDefs;
RouteControl:PROGRAM IMPORTS RouteDefs=BEGIN
OPEN RouteDefs;
Error:SIGNAL=CODE;
GetNewProblem:CtlProc=BEGIN
chipmonk←TRUE; 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.