v50 Steam/Premium information for editors
  • v50 information can now be added to pages in the main namespace. v0.47 information can still be found in the DF2014 namespace. See here for more details on the new versioning policy.
  • Use this page to report any issues related to the migration.
This notice may be cached—the current version can be found here.

Difference between revisions of "User:Larix/MPL/3"

From Dwarf Fortress Wiki
Jump to navigation Jump to search
Line 71: Line 71:
  
 
There's a medium-friction track stop on each connection track, the final tile, under the pressure plate, is a corner sending the cart onto the "backwards" ramp of the partnered derailer. This results in the cart being so fast on entry that it derails over the ramp pit, slams into the wall and falls down onto the "forward" ramp. This greatly increases the time required to build up to derail speed, giving a full return time of 720 steps for each repeater. I started three of these repeaters 240 steps apart, so every 240 steps one "full round" signal is received and can be counted, five of them add up to a full day.
 
There's a medium-friction track stop on each connection track, the final tile, under the pressure plate, is a corner sending the cart onto the "backwards" ramp of the partnered derailer. This results in the cart being so fast on entry that it derails over the ramp pit, slams into the wall and falls down onto the "forward" ramp. This greatly increases the time required to build up to derail speed, giving a full return time of 720 steps for each repeater. I started three of these repeaters 240 steps apart, so every 240 steps one "full round" signal is received and can be counted, five of them add up to a full day.
 +
 +
 +
===Memory===
 +
 +
Minecarts can be held in a loop or on a straight rail just going back and forth by hatches and other buildings. By combining "data" and "enable" or "reset" buildings on the same circuit, all with their own links, this can be used to store data in an adressable form.
 +
 +
1. Basic Set/Re-set latch
 +
 +
{{diagram|spaces=yes|\
 +
.               
 +
  #  #  #    # 
 +
  ▼  ║  ▼    ▼ 
 +
  ▼  ║  ¢s  ¢s 
 +
  ║  #  ║    +e 
 +
  ▼  ║  ¢r  ¢r 
 +
  ▼  ║  ▼    ▼ 
 +
  ║  #  ^    ^ 
 +
  ▲      ▲    ▲ 
 +
  #      #    # 
 +
  1  2  3    4 
 +
.               
 +
}}
 +
 +
1. Track/ramps
 +
 +
2. engraved track on the ramps in the pits 
 +
 +
3. buildings 
 +
 +
4. space-saving "enabled" expansion suggested by Nil Eyeglazed/VasilN.
 +
 +
In the "off" state, the cart remains in the norther ramp-pit, because its exit is blocked by the closed hatch to the south.
 +
 +
If a "set" signal is received (and in the expansion, if the "enable" door is opened as well), the cart leaves the northern pit, jumps across the southern pit, bumps into the wall, gets reflected by the ramp and settles into the southern pit, bouncing between the hatch cover blocking exit to the north and the ramp above to the south, keeping the pressure plate activated. Further "set" signals will not do anything.
 +
 +
If a "reset" signal arrives (once again, only respected if "enable" is also set in the expansion), the cart leaves the southern half of the array travels north and settles into the northern pit, letting the pressure plate reset and thus dropping the saved bit. Additional reset signals, once again, will not change the memory state.
 +
 +
As usual in Set/Reset-latches, a currently-on cell will not react to changes of the "set" signal and vice versa, the memory cell will hold the saved state indefinitely if both inputs remain off and it will produce an erroneous output (false "on" in this case) if both signals are on simultaneously.
 +
 +
The possibility to "adress" this memory can be realised in different ways and a further non-destructive "read-out" producing a signal cycle instead of the constantly-held "on" could be added just by adding another pit to the south. It is a very compact design and can be packed extremely tightly.
 +
 +
2. Spin Memory
 +
 +
This one's more of a plaything, more remarkable for its style than for practicality. I used it to build a sample adressable memory and it works reliably, if quirkily. Building a large minecart memory would still be better done by building the above memory cells and adjusting them for easier adressing.
 +
{{diagram|spaces=yes|\
 +
 +
  ╔╗      ╔╗     
 +
  ▼╔╗    D¢╔╗   
 +
  #▼║▼╗  E#¢║¢╗R 
 +
  ║╚▼║  A║^▼║   
 +
  ╚═╚╝    ╚═╚^B 
 +
  Paths  Buildings
 +
}}
 +
 +
 +
All ramps are engraved with NS track.
 +
 +
In the "passive" state, the cart rests on top of the "E"nable hatch. If this hatch is opened, the cart falls into the pit and leaves it either to the north or to the south, depending on whether or not the "D"ata input is on or off. It will then make its way to the eastern ramp-pit, either onto the southeastern or the northwestern half-loop. If both hatches were open, the cart would constantly cycle through this pit, remaining in the same half-loop forever.
 +
 +
In the given architecture, however, the cart will only establish a stable cycle if the Data input was "on" and the cart went onto the northwestern loop, because the "signal" pressure plate at A is linked to the hatch cover at "R" and keeps it open. Pressure plate B is not linked like that, so the cart will pass over the still-closed hatch cover at R and returns to the enable hatch cover at E.
 +
 +
E must be operated through a signal cycle of calibrated length, not through a lever; when the Data input is off, the returning cart ''must'' reach E when it is already closed, so it properly stops on top of the hatch again. If the hatch closes over a cart in the pit, the cart will be caught and will spontaneously re-activate upon ''any'' "on" signal received by the data input, regardless of whether or not the cell is actually enabled.
 +
 +
A cycling "on" cart can keep a linked building constantly activated, but to read the information back to a data collector, an individual signal must be triggered. To achieve this, a signal cycle is sent to the "R"eset/read/clear hatch. After the signal times out, the hatch cover will close again, the cart is reflected out of the pit onto the southeastern loop, touches the pressure plate there and returns to the "E"nable hatch. This signal can be read and stored by a different memory cell.
 +
 +
While inferior to the straight-line latch above, the principle of this stable-speed loop can be used for a smaller design of the edge detector/double-action switch above.

Revision as of 18:07, 26 February 2014

Dedicated devices


As with other alternative logic disciplines, MPL is in many ways inferior to mechanical logic when it comes to the actual logic gates. Mechanical logic performs nearly instantaneously and requires little space. It's also a lot easier to run multiple mechanical operations off a single switch by running power through "master gears", while in MPL you have to individually connect every single device to every desired signal source. Mechanical logic, however, is not capable of generating signals by itself, of lasting data storage and incrementation ("counting") - the only "output" of mechanical logic is transfer of power and all states of mechanisms directly reflect the state of inputs, they cannot hold a "memory state" while input changes. Alternative logic types are required to generate and store signals. For counting, for repeating signals and to implement "memory", your options are fluids and minecarts, and MPL is an attractive choice here, because it's naturally liquid-less and can be implemented without use of power.

This is only a selection of MPL circuits i've built. They're mostly custom-made on the spot when i had the need for a circuit to perform a specific operation.

Counter

Zählwerk mit Bauten.png

For speed regulation and cart management, there are a bump wall and bunker pit to the east. The operational unit is the angled three-pit ramp in the middle. The ramps are engraved with track like this:

   ║
  =╠

When the hatch cover is open, a cart coming from the west will pass through to the east, one from the north will pass through to the south. If the hatch cover is closed, a cart coming either from the west or from the north will exit to the north. Thus, the procession of operation when counting is:

1. cart enters the circuit on the outer ring, entering the three-ramp pit from the west.

2. as long as the hatch cover remains open, the cart will pass the ramp West->East, gets regulated by the bunker pit and remains circling around the outer ring.

3. once the hatch cover closes, the cart is diverted to the north and starts bouncing between the bump wall and the closed hatch cover.

4. once the hatch cover opens again, the cart passes through the pit to the south and leaves the counter circuit, e.g. entering the next one in the line.

A series of such counters, arranged in a circle, can be operated from a single input signal connected to all hatch covers and will thus count how often this input has cycled. The reaction time to a changed signal is fairly long, up to 50 steps, so the input shouldn't cycle too quickly, or signals will get missed.

It is easy enough to glue two of these counters together and have a pressure plate on the connecting track, so it sends a signal of its own after every second advancement. This is in effect a binary counter, and combining several of these allows to perform binary addition and subtraction.

Luxury one-bit memory/counter

Rechner-Speicher-Zelle.png

This is a binary counter cell which can add and subtract, and can also be set to one or zero. In the adder/subtractor design i came up with, the "memory" is the part which performs the actual calculations, directed by signals sent from another circuit "reading" the input. All carry calculations are done in the counter/result memory itself and additions are performed from highest to lowest bit.

The device consists of two counters, linked through a northern and a southern loop. When the central hatch cover in the cart's current half of the cell opens, it passes through the loop to the other half. If the hatch in the pit on the loop is open, the cart passes through without further effects, if the hatch is closed, the cart is sent on the "inner" branch of the switchover loop and touches a pressure plate which sends the carry (south sends negative/subtractive, north sends positive/additive carries) to the next higher bit. If both operative hatches are opened, the memory cell's status will change to the opposite; depending on further hatches opened or not, this may generate carries and work as addition or subtraction. If only one operative hatch is opened, together with the hatch in the resultant switchover loop, the cell's value is "set" to a specific value - if the cart was already on the desired side of the cell, nothing changes, obviously.

Bridge Repeater

Brückentakter.png

A curiosity, a powerless repeater sending a signal every ~205 steps which can be used to operate a constantly opening and closing bridge. The only operational pit is the one to the north, a looped-ramp pit (ramps SW and NW) with the northern ramp covered with a hatch cover linked to the output plate. As long as the hatch cover is open, the cart will cycle through the pit and the flat half-circle directly west of it. Once the hatch closes - one hundred steps after the cart went over the pressure plate - the cart will pass over the hatch, bump into the wall and move incredibly slowly to the south, fall into the bunker pit, leave at a slightly more sustainable speed and touch the plate again.

Double-action switch

Kippschalter.png

An "edge detector" or, more simply put, a device to convert lever pulls into single on-and-off signals. The cart starts out on the hatch to the west, over the eastern ramp of a bunker pit. Once the input signal turns on, both hatches open, the cart falls into the pit, cannot leave to the west and thus leaves to the east, across the pressure plate and starts circling through the loop to the east until the hatches close again, when the cart will return from the pit to the north, pass the pressure plate again and bump against the wall to the west, coming to rest on the starting hatch cover again.

Alternatively, the hatch cover to the east can be operated by a different signal and a pressure plate placed upon the loop the cart will circle through. When receiving e.g. a "pulse" signal (i.e. an "on" followed shortly after by an "off", a common occurence when working with pressure plates), the cart will now generate a secondary "on" signal and will, by circulating over the pressure plate, keep the plate activated and thus whatever was activated by the signal constantly in the "on" state, even if the priming signal has turned off again. Only after a separate "off" signal is sent to the hatch in the loop will the cart stop circulating and allow the pressure plate to reset. This is, i believe, the basic function of a latch.

Auto-derailer

Und-Gatter ohne.png

A device i used quite a lot in my first designs. The ramps are engraved with NW and SW track. The cart will cycle through the array, generally emerging on the northern track tile, cycling around to the south and entering the ramp again. It will keep accelerating until it becomes fast enough to derail. If there is open track to the north of the northern ramp on the level below, the cart will leave the array to the north at this point. Depending on the starting conditions, the cart can take anywhere from ten to 350 steps before leaving the derailer. If the cart is kept in the derailer, e.g. by blocking the exit path with a door, the cart will not accelerate notably beyond the original derail speed, it will just be kept within the array at derail-capable speed.

Clock-capable repeaters

UhrwerkBremsen.png

The visible ramp openings belong to looped pits, engraved SE-SW on the southern branch, NW-NE on the northern branch, with the second pit covered by the straight track leading out of the niches. The track stops on the exit points have high friction, the track stop just south of the northeastern ramp has low friction, all others medium friction. The return time is exactly 300 steps, 1/4 of a DF day. Collecting a single signal and plugging it into a four-step counter will give a full day.

DieUhr1.png

These are actually four repeaters, three of which are used to run a precise clock. Each repeater consists of two derailers, coupled like this below:

DieUhr2.png

There's a medium-friction track stop on each connection track, the final tile, under the pressure plate, is a corner sending the cart onto the "backwards" ramp of the partnered derailer. This results in the cart being so fast on entry that it derails over the ramp pit, slams into the wall and falls down onto the "forward" ramp. This greatly increases the time required to build up to derail speed, giving a full return time of 720 steps for each repeater. I started three of these repeaters 240 steps apart, so every 240 steps one "full round" signal is received and can be counted, five of them add up to a full day.


Memory

Minecarts can be held in a loop or on a straight rail just going back and forth by hatches and other buildings. By combining "data" and "enable" or "reset" buildings on the same circuit, all with their own links, this can be used to store data in an adressable form.

1. Basic Set/Re-set latch

.
# # # #
¢ s ¢ s
# + e
¢ r ¢ r
# ^ ^
# # #
1 2 3 4
.

1. Track/ramps

2. engraved track on the ramps in the pits

3. buildings

4. space-saving "enabled" expansion suggested by Nil Eyeglazed/VasilN.

In the "off" state, the cart remains in the norther ramp-pit, because its exit is blocked by the closed hatch to the south.

If a "set" signal is received (and in the expansion, if the "enable" door is opened as well), the cart leaves the northern pit, jumps across the southern pit, bumps into the wall, gets reflected by the ramp and settles into the southern pit, bouncing between the hatch cover blocking exit to the north and the ramp above to the south, keeping the pressure plate activated. Further "set" signals will not do anything.

If a "reset" signal arrives (once again, only respected if "enable" is also set in the expansion), the cart leaves the southern half of the array travels north and settles into the northern pit, letting the pressure plate reset and thus dropping the saved bit. Additional reset signals, once again, will not change the memory state.

As usual in Set/Reset-latches, a currently-on cell will not react to changes of the "set" signal and vice versa, the memory cell will hold the saved state indefinitely if both inputs remain off and it will produce an erroneous output (false "on" in this case) if both signals are on simultaneously.

The possibility to "adress" this memory can be realised in different ways and a further non-destructive "read-out" producing a signal cycle instead of the constantly-held "on" could be added just by adding another pit to the south. It is a very compact design and can be packed extremely tightly.

2. Spin Memory

This one's more of a plaything, more remarkable for its style than for practicality. I used it to build a sample adressable memory and it works reliably, if quirkily. Building a large minecart memory would still be better done by building the above memory cells and adjusting them for easier adressing.

D ¢
# E # ¢ ¢ R
A ^
^ B
P a t h s B u i l d i n g s


All ramps are engraved with NS track.

In the "passive" state, the cart rests on top of the "E"nable hatch. If this hatch is opened, the cart falls into the pit and leaves it either to the north or to the south, depending on whether or not the "D"ata input is on or off. It will then make its way to the eastern ramp-pit, either onto the southeastern or the northwestern half-loop. If both hatches were open, the cart would constantly cycle through this pit, remaining in the same half-loop forever.

In the given architecture, however, the cart will only establish a stable cycle if the Data input was "on" and the cart went onto the northwestern loop, because the "signal" pressure plate at A is linked to the hatch cover at "R" and keeps it open. Pressure plate B is not linked like that, so the cart will pass over the still-closed hatch cover at R and returns to the enable hatch cover at E.

E must be operated through a signal cycle of calibrated length, not through a lever; when the Data input is off, the returning cart must reach E when it is already closed, so it properly stops on top of the hatch again. If the hatch closes over a cart in the pit, the cart will be caught and will spontaneously re-activate upon any "on" signal received by the data input, regardless of whether or not the cell is actually enabled.

A cycling "on" cart can keep a linked building constantly activated, but to read the information back to a data collector, an individual signal must be triggered. To achieve this, a signal cycle is sent to the "R"eset/read/clear hatch. After the signal times out, the hatch cover will close again, the cart is reflected out of the pit onto the southeastern loop, touches the pressure plate there and returns to the "E"nable hatch. This signal can be read and stored by a different memory cell.

While inferior to the straight-line latch above, the principle of this stable-speed loop can be used for a smaller design of the edge detector/double-action switch above.