By means of a machine an applied force is increased, its direction is changed, or one form of motion or energy is changed into another form. Thus defined, such simple devices as the lever, the pulley, the inclined plane, the screw, and the wheel and axle are machines. They are called simple machines; more complicated machines are merely combinations of them. Of the five, the lever, the pulley, and the inclined plane are primary; the wheel and axle and the screw are secondary. The wheel and axle combination is a rotary lever, while the screw may be considered an inclined plane wound around a core. The wedge is a double inclined plane.
Complex machines are designated, as a rule, by the operations they perform; the complicated devices used for sawing, planing, and turning, for example, are known as sawing machines, planing machines, and turning machines respectively and as machine tools collectively. Machines used to transform other forms of energy (as heat) into mechanical energy are known as engines, i.e. the steam engine or the internal-combustion engine. The electric motor transforms electrical energy into mechanical energy. Its operation is the reverse of that of the electric generator, which transforms the energy of falling water or steam into electrical energy.
By means of a machine, a small force, or effort, can be applied to move a much greater resistance, or load. In doing so, however, the applied force must move through a much greater distance than it would if it could move the load directly. The mechanical advantage (MA) of a machine is the factor by which it multiplies any applied force. The MA may be calculated from the ratio of the forces involved or from the ratio of the distances through which they move. Ideally, the two ratios are equal, and it is simpler to calculate the ratio of the distance the effort moves to the distance the resistance moves; this is called the ideal mechanical advantage (IMA). In any real machine some of the effort is used to overcome friction. Thus, the ratio of the resistance force to the effort, called the actual mechanical advantage (AMA), is less than the IMA.
The efficiency of any machine measures the degree to which friction and other factors reduce the actual work output of the machine from its theoretical maximum. A frictionless machine would have an efficiency of 100%. A machine with an efficiency of 20% has an output only one fifth of its theoretical output. The efficiency of a machine is equal to the ratio of its output (resistance multiplied by the distance it is moved) to its input (effort multiplied by the distance through which it is exerted); it is also equal to the ratio of the AMA to the IMA. This does not mean that low-efficiency machines are of limited use. An automobile jack, for example, must overcome a great deal of friction and therefore has low efficiency, but it is extremely valuable because small effort can be applied to lift a great weight.
Although most machines are used to multiply an effort so that it may move a greater resistance, they may have other purposes. For example, a single, fixed pulley merely changes the direction of the applied force; the pulley may make it easier to lift the load, since a person can pull down on a rope, thus adding his or her own weight to the effort, rather than simply lifting the load. In a catapult an effort greater than the load moves through a short distance, causing the load to be moved through a large distance before being released. As the load is being moved, it picks up speed so that it is traveling at a considerable velocity when it leaves the catapult.
The "Z" of Z-machine stands for Zork, Infocom's first adventure game. Z-code files usually have names ending in .z1, .z2, .z3, .z4, .z5, .z6, .z7 or .z8, where the number is the version number of the Z-machine on which the file is intended to be run, as given by the first byte of the story file. This is a modern convention, however. Infocom itself used extensions of .dat (Data) and .zip (ZIP = Z-machine Interpreter Program), but the latter clashes with the present widespread use of .zip for PKZIP-compatible archive files (which did not exist yet during the time Infocom was active). Infocom produced six versions of the Z-machine. Files using versions 1 and 2 are very rare. Only two version 1 files are known to have been released by Infocom, and only two of version 2. Version 3 covers the vast majority of Infocom's released games. The later versions had more capabilities, culminating in some graphic support in version 6.
The compiler (called Zilch) which Infocom used to produce its story files has never been released, although documentation of the language used (called ZIL, for Zork Implementation Language) still exists. But in May 1993, Graham Nelson released the first version of his Inform compiler, which also generates Z-machine story files as its output, even though the Inform source language is quite different from ZIL. Most files produced by Inform are version 5.
Inform has since become very popular in the interactive fiction community and, as a consequence, a large proportion of the interactive fiction now produced is in the form of Z-machine story files. Demand for the ability to create larger game files led Graham Nelson to specify versions 7 and 8 of the Z-machine, though version 7 is very rarely used. Because of the way addresses are handled, a version 3 story file can be up to 128K in length, a version 5 story can be up to 256K in length, and a version 8 story can be up to 512k in length. Though these sizes may seem small by today's computing standards, for text-only adventures, these are large enough for very elaborate games.
Popular interpreters include Nitfol and Frotz. Nitfol makes use of the Glk API, and supports versions 1 through 8 of the Z-machine, including the version 6 graphical Z-machine. Save files are stored in the standard Quetzal save format. Binary files are currently available for several different operating systems, including Macintosh, Linux, MS-DOS, and Windows.
Frotz is perhaps the most well-known and popular Z-machine implementation available. Its advantages over other Z-machine interpreters are twofold: firstly, though it was not the first non-Infocom interpreter to be released, it was one of the early ones -- its initial release by Stefan Jokisch was in 1995. Secondly, because the program is written in highly portable C, it has been possible to port the original DOS version to most modern computer formats, including not only Unix and Windows but even palmtops and mobile phones. Various extensions have since been added, such as sound effects and graphics.
In 2002, the Frotz core codebase was picked up by David Griffith, who continues to develop it. The codebase was then distinctly split between the virtual machine and the user interface portions such that the virtual machine became entirely independent from any user interface. This allowed some clever programmers to create some of the stranger ports of Frotz. One of the strangest is also one of the simplest: an instant messenger bot is wrapped around a version of Frotz with the bare minimum of IO functionality creating a bot with which one can play most Z-machine games using an instant messenger.