GetPLATiles:
PROC
RETURNS[tiles:
REF TileVarieties] = {
IF TileBuffer # NIL THEN RETURN[TileBuffer];
TerminalIO.PutRope["Initialize PLA tiles\n"];
tiles ← TileBuffer ← NEW[TileVarieties];
tiles.glue ← NEW[GlueTiles];
tiles.and ← NEW[NormalTiles];
tiles.or ← NEW[NormalTiles];
tiles.glue [header][leftSide] ← Get["CC.HPlaHLeftSide.sch", TRUE];
tiles.glue [header][between] ← Get["CC.HPlaHBetween.sch", TRUE];
tiles.glue [header][rightSide] ← Get["CC.HPlaHRightSide.sch", TRUE];
tiles.and [header][nc] ← Get["CC.HPlaHAnd.sch", TRUE];
tiles.or [header][nc] ← Get["CC.HPlaHOr.sch", FALSE];
tiles.or [header][extra] ← Get["CC.HPlaHOrEx.sch", TRUE];
tiles.glue [footer][leftSide] ← FlipY[ tiles.glue [header][leftSide] ];
tiles.glue [footer][between] ← FlipY[ tiles.glue [header][between] ];
tiles.glue [footer][rightSide] ← FlipY[ tiles.glue [header][rightSide] ];
tiles.and [footer][nc] ← FlipY[ tiles.and [header][nc] ];
tiles.or [footer][nc] ← FlipY[ Get["CC.BPlaHOr.sch", FALSE]];
tiles.or [footer][extra] ← FlipY[ tiles.or [header][extra] ];
tiles.glue [blank][leftSide] ← Get["CC.HPlaBLeftSide.sch", TRUE];
tiles.glue [blank][between] ← Get["CC.HPlaBBetween.sch", TRUE];
tiles.glue [blank][rightSide] ← Get["CC.HPlaBRightSide.sch", TRUE];
tiles.and [blank][nc] ← Get["CC.HPlaBAnd.sch", TRUE];
tiles.or [blank][nc] ← Get["CC.BOr.sch", TRUE];
tiles.or [blank][extra] ← Get["CC.HPlaBOrEx.sch", TRUE];
tiles.glue [conn][leftSide] ← Get["CC.HPlaBLeftSide.sch", TRUE];
tiles.glue [conn][between] ← Get["CC.HPlaBBetween.sch", TRUE];
tiles.glue [conn][rightSide] ← Get["CC.HPlaCRightSide.sch", TRUE];
tiles.and [conn][nc] ← Get["CC.HPlaBAnd.sch", TRUE];
tiles.or [conn][left] ← Get["CC.COr.sch", TRUE];
tiles.or [conn][nc] ← Get["CC.COrNC.sch", TRUE];
tiles.or [conn][extra] ← Get["CC.HPlaCOrEx.sch", TRUE];
tiles.glue [dataUp][leftSide] ← Get["CC.HPlaDLeftSide.sch", FALSE];
tiles.glue [dataUp][between] ← Get["CC.HPlaDBetween.sch", TRUE];
tiles.glue [dataUp][rightSide] ← Get["CC.HPlaDRightSide.sch", TRUE];
tiles.and [dataUp][left] ← Get["CC.DAndLt.sch", FALSE];
tiles.and [dataUp][right] ← Get["CC.DAndRt.sch", FALSE];
tiles.and [dataUp][nc] ← Get["CC.DAnd.sch", TRUE];
tiles.or [dataUp][left] ← Get["CC.DOr.sch", FALSE];
tiles.or [dataUp][nc] ← Get["CC.DOrNC.sch", TRUE];
tiles.or [dataUp][extra] ← Get["CC.HPlaDOrEx.sch", TRUE];
tiles.glue [dataDn][leftSide] ← tiles.glue [dataUp][leftSide];
tiles.glue [dataDn][between] ← FlipY[ tiles.glue [dataUp][between] ];
tiles.glue [dataDn][rightSide] ← FlipY[ tiles.glue [dataUp][rightSide] ];
tiles.and [dataDn][left] ← tiles.and [dataUp][left];
tiles.and [dataDn][right] ← tiles.and [dataUp][right];
tiles.and [dataDn][nc] ← tiles.and [dataUp][nc];
tiles.and [dataDn][extra] ← tiles.and [dataUp][extra];
tiles.or [dataDn][left] ← FlipY[ tiles.or [dataUp][left] ];
tiles.or [dataDn][nc] ← FlipY[ tiles.or [dataUp][nc] ];
tiles.or [dataDn][extra] ← FlipY[ tiles.or [dataUp][extra] ];
RETURN[tiles]};
GetPLADriverTiles:
PROC
RETURNS[drivers: DriverTiles] = {
IF DriverBuffer # NIL THEN RETURN[DriverBuffer];
TerminalIO.PutRope["Initialize PLA Buffer tiles\n"];
drivers ← DriverBuffer ← NEW[DriverTileArry];
drivers[left] ← Get["CC.BPlaDrLeftSide.sch", TRUE];
drivers[in] ← Get["CC.BPlaDrDualIn.sch", FALSE];
drivers[between] ← Get["CC.BPlaDrBetween.sch", TRUE];
drivers[extra] ← Get["CC.BPlaDrOrEx.sch", TRUE];
drivers[out2] ← Get["CC.BPlaDrDualOutInv.sch", FALSE];
drivers[out1] ← Get["CC.BPlaDrSingOutInv.sch", FALSE];
drivers[rightHalf] ← Get["CC.BPlaDrRightSideHalf.sch", TRUE]};