<> <> <> <> <> DIRECTORY CD, CDColors, CDOps, CDPanel, CDSil, CDTipEtc, CDValue, CDViewer, Commander USING [CommandProc, Register], IO, Rope, TerminalIO; CDSilImpl: CEDAR PROGRAM IMPORTS CD, CDTipEtc, CDColors, CDOps, CDPanel, CDValue, CDViewer, Commander, IO, TerminalIO EXPORTS CDSil = BEGIN cdsil: PUBLIC CD.Technology ~ CD.RegisterTechnology[$chipnsil, "chipnsil"]; <> xneutral: PUBLIC CD.Layer; -- 00 xred: PUBLIC CD.Layer; -- 01 xyellow: PUBLIC CD.Layer; -- 02 xgreen: PUBLIC CD.Layer; -- 03 xcyan: PUBLIC CD.Layer; -- 04 xviolet: PUBLIC CD.Layer; -- 05 xmagenta: PUBLIC CD.Layer; -- 06 xwhite: PUBLIC CD.Layer; -- 07 xbrown: PUBLIC CD.Layer; -- 08 xorange: PUBLIC CD.Layer; -- 09 xlime: PUBLIC CD.Layer; -- 10 xturquise: PUBLIC CD.Layer; -- 11 xaqua: PUBLIC CD.Layer; -- 12 xultraviolet: PUBLIC CD.Layer; -- 13 xpink: PUBLIC CD.Layer; -- 14 xsmoke: PUBLIC CD.Layer; -- 15 tipTable: Rope.ROPE _ NIL; Load: Commander.CommandProc = BEGIN cmd.out.PutRope["chipnsil loaded\n"]; END; NewSWorld: Commander.CommandProc = BEGIN design: CD.Design ~ CDOps.CreateDesign[cdsil]; [] _ CDViewer.CreateViewer[design]; END; Init: PROC [] = BEGIN xneutral _ CD.NewLayer[cdsil, $xneutral]; -- 00 xred _ CD.NewLayer[cdsil, $xred]; -- 01 xyellow _ CD.NewLayer[cdsil, $xyellow]; -- 02 xgreen _ CD.NewLayer[cdsil, $xgreen]; -- 03 xcyan _ CD.NewLayer[cdsil, $xcyan]; -- 04 xviolet _ CD.NewLayer[cdsil, $xviolet]; -- 05 xmagenta _ CD.NewLayer[cdsil, $xmagenta]; -- 06 xwhite _ CD.NewLayer[cdsil, $xwhite]; -- 07 xbrown _ CD.NewLayer[cdsil, $xbrown]; -- 08 xorange _ CD.NewLayer[cdsil, $xorange]; -- 09 xlime _ CD.NewLayer[cdsil, $xlime]; -- 10 xturquise _ CD.NewLayer[cdsil, $xturquise]; -- 11 xaqua _ CD.NewLayer[cdsil, $xaqua]; -- 12 xultraviolet _ CD.NewLayer[cdsil, $xultraviolet]; -- 13 xpink _ CD.NewLayer[cdsil, $xpink]; -- 14 xsmoke _ CD.NewLayer[cdsil, $xsmoke]; -- 15 CDTipEtc.SetTipTable[cdsil, "Standard"]; <> <> <> CDColors.DefineColor[xneutral, NEW[CDColors.Brick_[10*1010H, 10*0101H, 10*1010H, 10*0101H]], bit4]; CDColors.DefineColor[xneutral, NEW[CDColors.Brick_[10*1010H, 10*0101H, 10*1010H, 10*0101H]], bit8]; CDColors.DefineColor[xneutral, NEW[CDColors.Brick_[05H*1111H, 0AH*1111H, 05H*1111H, 0AH*1111H]], bw]; -- 00 CDColors.DefineColor[xred, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit4]; CDColors.DefineColor[xred, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit8]; CDColors.DefineColor[xred, NEW[CDColors.Brick_[0EH*1111H, 0DH*1111H, 0BH*1111H, 07H*1111H]], bw]; -- 01 CDColors.DefineColor[xyellow, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit4]; CDColors.DefineColor[xyellow, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit8]; CDColors.DefineColor[xyellow, NEW[CDColors.Brick_[0EH*1111H, 0DH*1111H, 0BH*1111H, 07H*1111H]], bw]; -- 02 CDColors.DefineColor[xgreen, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit4]; CDColors.DefineColor[xgreen, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit8]; CDColors.DefineColor[xgreen, NEW[CDColors.Brick_[0EH*1111H, 0DH*1111H, 0BH*1111H, 07H*1111H]], bw]; -- 03 CDColors.DefineColor[xcyan, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit4]; CDColors.DefineColor[xcyan, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit8]; CDColors.DefineColor[xcyan, NEW[CDColors.Brick_[0EH*1111H, 0DH*1111H, 0BH*1111H, 07H*1111H]], bw]; -- 04 CDColors.DefineColor[xviolet, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit4]; CDColors.DefineColor[xviolet, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit8]; CDColors.DefineColor[xviolet, NEW[CDColors.Brick_[0EH*1111H, 0DH*1111H, 0BH*1111H, 07H*1111H]], bw]; -- 05 CDColors.DefineColor[xmagenta, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit4]; CDColors.DefineColor[xmagenta, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit8]; CDColors.DefineColor[xmagenta, NEW[CDColors.Brick_[0EH*1111H, 0DH*1111H, 0BH*1111H, 07H*1111H]], bw]; -- 06 CDColors.DefineColor[xwhite, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit4]; CDColors.DefineColor[xwhite, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit8]; CDColors.DefineColor[xwhite, NEW[CDColors.Brick_[0EH*1111H, 0DH*1111H, 0BH*1111H, 07H*1111H]], bw]; -- 07 CDColors.DefineColor[xbrown, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit4]; CDColors.DefineColor[xbrown, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit8]; CDColors.DefineColor[xbrown, NEW[CDColors.Brick_[0EH*1111H, 0DH*1111H, 0BH*1111H, 07H*1111H]], bw]; -- 08 CDColors.DefineColor[xorange, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit4]; CDColors.DefineColor[xorange, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit8]; CDColors.DefineColor[xorange, NEW[CDColors.Brick_[0EH*1111H, 0DH*1111H, 0BH*1111H, 07H*1111H]], bw]; -- 09 CDColors.DefineColor[xlime, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit4]; CDColors.DefineColor[xlime, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit8]; CDColors.DefineColor[xlime, NEW[CDColors.Brick_[0EH*1111H, 0DH*1111H, 0BH*1111H, 07H*1111H]], bw]; -- 10 CDColors.DefineColor[xturquise, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit4]; CDColors.DefineColor[xturquise, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit8]; CDColors.DefineColor[xturquise, NEW[CDColors.Brick_[0EH*1111H, 0DH*1111H, 0BH*1111H, 07H*1111H]], bw]; -- 11 CDColors.DefineColor[xaqua, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit4]; CDColors.DefineColor[xaqua, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit8]; CDColors.DefineColor[xaqua, NEW[CDColors.Brick_[0EH*1111H, 0DH*1111H, 0BH*1111H, 07H*1111H]], bw]; -- 12 CDColors.DefineColor[xultraviolet, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit4]; CDColors.DefineColor[xultraviolet, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit8]; CDColors.DefineColor[xultraviolet, NEW[CDColors.Brick_[0EH*1111H, 0DH*1111H, 0BH*1111H, 07H*1111H]], bw]; -- 13 CDColors.DefineColor[xpink, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit4]; CDColors.DefineColor[xpink, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit8]; CDColors.DefineColor[xpink, NEW[CDColors.Brick_[0EH*1111H, 0DH*1111H, 0BH*1111H, 07H*1111H]], bw]; -- 14 CDColors.DefineColor[xsmoke, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit4]; CDColors.DefineColor[xsmoke, NEW[CDColors.Brick_[10*1111H, 10*1111H, 10*1111H, 10*1111H]], bit8]; CDColors.DefineColor[xsmoke, NEW[CDColors.Brick_[0EH*1111H, 0DH*1111H, 0BH*1111H, 07H*1111H]], bw]; -- 15 CDPanel.DefineLayerEntry[cdsil, xneutral, "black", 0, CD.lambda]; CDPanel.DefineLayerEntry[cdsil, xcyan, "other", 0, CD.lambda]; <<>> CDPanel.DefineIntEntry[cdValueKey: $CDxSelectNewMode, tech: cdsil, text: "select new:", min: 0, max: 1, default: 1]; CDPanel.DefineNewLine[cdsil]; CDPanel.DefineIntEntry[cdValueKey: $CDxStepValue, tech: cdsil, text: "step moves size:", min: 1, default: 4]; CDPanel.DefineIntEntry[cdValueKey: $CDxStretchyMove, tech: cdsil, text: "stretchy:", min: 0, max: 1, default: 0]; CDPanel.DefineNewLine[cdsil]; CDValue.StoreInt[boundTo: cdsil, key: $CDxInitScale, value: 9]; CDValue.StoreInt[boundTo: cdsil, key: $CDxInitGrid, value: 8]; Commander.Register[ key: "CDSil", proc: Load, doc: "loads ChipNSil" ]; Commander.Register[ key: "cdnewsil", proc: NewSWorld, doc: "Creates new chipndale 'sil' design" ]; TerminalIO.WriteRope["ChiPencil impl\n"]; END; Init[] END.