<> <> <> <<>> DIRECTORY CD, CDBasics, CDInstances, CDOps, Commander, DABasics, IO, ProcessProps, PW, Rope; SoftHdwCheckTiles: CEDAR PROGRAM IMPORTS CD, CDBasics, CDInstances, CDOps, IO, ProcessProps, PW EXPORTS = BEGIN out: IO.STREAM _ NARROW [ProcessProps.GetProp[$CommanderHandle], Commander.Handle].out; Sources: TYPE = {OLD, RU, ORU, LD, L}; Sinks: TYPE = {I, RU, L, LD}; TileIndex: TYPE = {OLDToI, RUToRU, ORUToI, OLDToL, LDToLD, OLDToRU, RUToI, ORUToLD, LToI, LDToI}; tileNames: ARRAY TileIndex OF Rope.ROPE _ ["OLDToI", "RUToRU", "ORUToI", "OLDToL", "LDToLD", "OLDToRU", "RUToI", "ORUToLD", "LToI", "LDToI"]; tileObjects: ARRAY TileIndex OF CD.Object _ ALL[NIL]; source: ARRAY TileIndex OF Sources _ [OLD, RU, ORU, OLD, LD, OLD, RU, ORU, L, LD]; sink: ARRAY TileIndex OF Sinks _ [I, RU, I, L, LD, RU, I, LD, I, I]; tiles: ARRAY TileIndex OF BOOL _ ALL[FALSE]; count: INT _ 0; il: CD.InstanceList _ NIL; y: INT _ 0; ySpace: INT _ 4*8*8; xSpace: INT _ 5*8*8; Check: PROC [tiles: ARRAY TileIndex OF BOOL, index: TileIndex] = { sourceUsed: ARRAY Sources OF BOOL _ ALL[FALSE]; sinkUsed: ARRAY Sinks OF BOOL _ ALL[FALSE]; FOR search: TileIndex IN [FIRST[TileIndex]..index] DO IF tiles[search] THEN { IF sinkUsed[sink[search]] THEN RETURN; <