Additional Object Types:Two new types of object have been added to chipmonk. One is a regular array of wires,called a "bus"; the other is a new type of transistor: an "angled" transistor.Busses:A bus is a regular array of wires. Its parameters are: the layer of the wires, the wire width,the number of wires, the length of the first wire, the spacing of the wires (signed), theamount by which a wire's length differs from that of the previous (signed), and the offset ofthe "top" end of a wire from the previous (signed). Consequently, a bus can be made onlyfor wires where these things are constant. The wires must be all on the same layer, all thesame width, and evenly spaced. Furthermore, the ends of the wires must be in a straightline (at both ends). There are two says to make a bus. The first way is to draw the wires asordinary wires, then select them and turn them into an equivalent bus (see B andB, below). The second way is to draw the bus directly, in much the same wayas you would draw wires (see B-Draw, below). Busses can be turned back into wires withthe expand commands, like cells.Angled Transistors:An angled transistor is a transistor with one right angle in its gate. These may be stucktogether to form "button" transistors, "Z-shaped" transistors, and "U-shaped" transistors, etc.(The poly-extension of one transistor will overlap the gate of the other, but this is legal).Angled transistors can be created in much the same way as regular transistors with Z-Draw(below). When created, the "X-ratio" is used to set the ratio, as with regular transistors.The gate width is taken as the sum of the inside edges of the two "arms" of the angled gate(i.e. the "corner" square counts as zero).There are some slight changes in the way the "widen", "shorten", "narrow", and "lengthen"commands work, when applied to angled transistors. The widen and narrow commandschange the width of the bounding box, and hence the width of the horizontal arm (assumingstandard orientation) of the transistor, while the lengthen and shorten commands change theheight of the bounding box, and hence the "width" of the vertical arm. Consequently, all ofthese commands affect the "gate width", and none of them affects the "gate length". Thereis currently no command which will change the gate length of an angled transistor. Angledtransistors may be created as either enhancement or depletion (implanted) transistors.Further, there is a set of new commands which allow the implantation of existing transistorsto be changed (see the set of I commands, below). This is handy if you have created acomplicatedly shaped transistor with angles in it out of several transistors, but forgot to turnon implant.New Commands:A-DrawAlter. This command applies to either busses, or transistors (of any type,including pullups) and its effect depends on which. The commandsearches for the first selected bus or transistor which has the mark on it.If the first such thing is a transistor, the command applies to all selectedtransistors, and the effect is to change the poly or diffusion extension(the amount by which that layer extends beyond the gate). If the markis on the end of the poly extension, then that extension will be increasedor decreased by the difference between the mark and cursor. Similarlyfor the diffusion extension. This is logically like the stretch command.If the mark is not directly on the end of the extension (i.e. on thebounding box) the command will have no effect. The effect will beapplied to all selected transistors. Changing the diffusion extension ofpullups does not have a useful effect. `da'p ^q I \N YYor Vq_ U O SL Q= Pz/- NO Mr[ KJM <2!s ;AqB 9= 89* 5UN 3Q 2L/s q 0W /D9sq -0* ,< N *I )4G ' sq7 &,L $ ug p sq./@8/' e%/3A/S!s/q=/KA///C%$/&/ ;?/ #7 ` s#/ 3%q< ;YL2If the thing found is a bus, the effect is to change the relative offset ofthe ends of the wires. The command applies only to the bus which isselected and which has the mark on one of its wires. This is one ofthose things which is in fact simple, but which is complicated to explain,but here goes: The general idea of this command is to "stretch" theend of the wire that the mark is on by the difference between the markand the cursor, while holding another of the wires fixed, and changingall the other wires to keep the "slope" constant. This applies to the endwhich the mark is closer to. There are two things about this. First,since the offset between adjacent wires must be an integer, it is notalways possible to put the end in question exactly where you specify.Second is the matter of which wire is taken as the fixed one. You canspecifiy which is the fixed wire, and each bus remembers (independentlyfor the two ends) which is the fixed wire (it starts out as wire "0", butyou can't tell which one that is). A given wire is marked as the fixedone by placing the mark on it (near the end in question) and doing anAlter (A-Draw) with the cursor on top of the mark (i.e. a zero lengthAlter). This marks that wire as the fixed wire (for this end) untilanother is specified. As a side effect of all this, if you give an Alterwith non-zero length, for the fixed wire, all the wires in the bus willstretch by that amount (but the offset of the ends remains unchanged).In summary: there are three cases when an alter is given. If the cursorand mark coincide then mark that wire as the fixed one; else if themark is on the fixed wire, then stretch all the wires; else stretch the wirewith the mark, keeping the fixed one fixed (and all the others adjustedappropriately).W-DrawAlter width. This command applies only to busses and is used to changethe spacing of the wires. The command searches for the first selectedbus which has the mark on one of its wires. It then changes the wirespacing so that the wire with the mark will move by the differencebetween the mark and the cursor, with the fixed wire not moving. Thefixed wire is the one that has been marked as fixed (see Alter, above)for the end which the mark is nearer to. Since the spacing must be aninteger, it may not be possible to place the wire exactly where youspecify.BConvert to bus. This command looks at all selected wires anddetermines if they can be replaced by a bus. For them to be replacableby a bus they must: 1) be evenly spaced, 2) all be either horizontal orvertical, 3) all be on the same layer, 4) all be the same width, and 5)have a constant offset of the positions of both ends (i.e. the ends mustbe in a straight line). If the wires meet all these requirements, they aredeleted and replaced by a bus (note: there must be at least two wires).Otherwise nothing happens.BConvert to bus, dammit. This command looks replaces all selected wiresby a bus, without checking for consistency. Consequently, the bus willnot necessarily match the wires, and should be checked and fixed up.Note that expand (E) applied to a bus will replace it with its wires(though not with the wires it replaced).B-DrawStart drawing bus. This command starts a bus in much the same way as"Draw" starts a wire. When the command is given, the cursor shouldbe distinctly above/below or to the right/left of the mark, as thisdetermines whether the bus will be horrizontal or vertical (as withwires). When the command is given, it first asks you to mark the originof the second wire of the bus (the "mark" is the origin of the first wire).Move the cursor to the second wire origin and click the mark button.Nft/bq9/`5/_ sq!/]//\5/Z </Y2/W =/U*/TyE/R*/Qq"$/O8/NiB/L0/Ka 7/I>/HY'/F0/EQG/C)/BIs q%/@%/?A2/=3/<8 9Tsq= /7=A7y7/6K,/4&/3C@/1 </0;,/.9 /-3 *Nsq& /(1/'F4/%4/$>2/"./!6G/ s q+/I,/./AD/( sq>/T1/5 /L"!/ A/ D9/ .t y;]3You are then asked to type the number of wires in the bus. Type thenumber, terminated by or . You are now in bus-drawingmode. Two temporary busses are drawn from the mark to the cursor(as with wires), each consisting of three temp wires, one in the locationof the first wire, one in the location of the second wire, and one in thelocation of the last (or Nth) wire. From here on, things are much as forwires. Each time you click Draw, the first temp-bus is made permanent. will get you out. If you click Mark, the last two temp-busses aremade permanent (the terminal one will have its terminal ends in avertical or horizontal line) and you get out of drawing mode.Special commands with special meanings during bus-drawing: While you are in bus-drawing mode, there are several things which you can type to modifythe busses you are drawing. S will increment the spacing betweenwires of the second temp-bus (which affects the ends of the wires of thefirst temp-bus) while S will decrement the spacing. Iwill increment the wire-count of the first (and subsequent) temp-bus,while I will decrement it. If this is unclear, just try it.Z-DrawMake angled transistor. This command places an angled transistor, justas T-Draw (and X-Draw) do for "straight" transistors. The gate ratio istaken from the "X-Ratio" parameters (in the feed-back area) as for"straight" transistors. The gate width is the sum of the (short) width ofthe two arms (the corner part isn't counted). See the discussion ofangled transistors above. Note: these may be either implanted or not.Note: if the X-Ratio length is larger than 1, the transistors that arecreated will be peculiar.The following "I" commands apply to busses or transistors, with the shift key controlling the"direction" of the change. For transistors they turn Implant on (if no shift) and off (if shift).For busses they increment (if no shift) or decrement (if shift) the wire count.IIncrement wire count (busses) or turn on Implant (transistors). Thiscommand applies to all selected busses and transistors.IDecrement wire count (busses) or turn off Implant (transistors). Thiscommand applies to all selected busses and transistors.I-MarkIncrement/decrement wire count of bus pointed to, or turn Implanton/off for transistor pointed to. The Shift key controls the direction.No shift is increment/turn on; Shift is decrement/turn off.TEnter text. This command prompts for a text string (terminated by or ) and gives that name to the selected object (if morethan one object is selected, it gives it to one of them). Any instance ofany type of object can now have a name. If the object is a wire or acontact, the name is taken as the signal-name of that node. For othertypes of objects, the name has other uses. The name of an object getsdisplayed in the feed-back area under certain circumstances (see "Newfeed-back stuff", below).New Feed-back Stuff:There are two new things in the feed-back area, in the lower right. One is "Generic CellName" and the other is "Instance Name". These two fields get updated with theinformation from the newly selected object whenever you do a Select or a Select(they do not get updated at any other time, even when the object gets deleted). "GenericCell Name" displays the "Cell name" if the object in question is a cell, otherwise it tells youwhat type of object it is (wire, contact, etc.). "Instance Name" displays the text string, ifNft/bq//`)/_-/])/\4/Z9/Y!&/W//U7 /Ty=Qs9q/P4/N)3N5N/M//K*3/K-0K /JIJ(/H|*JH%0H| EsqG/DE/B>/A 4/?#!/>A/<B/: 8C 6H 5O 2)sq%/0*0N0 -s q 8/,<*+,< )Wsq9/'&"/&O; #jsq'/!)/ b+/6/Z2/5/R&/ Lr q< :(& 3 sqs 2q 2sq: B *[ ;](4any, which was given to that instance with the T-Mark or -T command.Nft bqJL a54 TIMESROMAN TIMESROMAN  TIMESROMAN  TIMESROMAN GACHA ] M :j/"  chip8.brPetitSeptember 29, 1981 4:46 PM