See Also
The Tessellated Intelligence Systems TIS-100 is a massively parallel computer architecture comprised of non-uniformly interconnected heterogeneous nodes. The TIS-100 is ideal for applications requiring complex data stream processing, such as automated financial trading, bulk data collection, and civilian behavioral analysis. 'In the pursuit of clandestine R&D objectives, Zachtronics accidentally releases games from time to time. As of May 25, 2016, Zachtronics LLC. Windows Linux Mac. General troubleshooting. Known solutions to game issues. Other helpful articles. Do you have more questions?
- Graphics Display - How the 'visualization module' functions.
Speed
The TIS-100 runs at 50 Hz in RUN mode, 5,000 Hz in FAST mode, and 25 Hz when the STEP key (F6) is held down. (Holding the STEP button down only runs a single step.) Most assembly instructions run in a single cycle;
MOV
takes two cycles under some circumstances.Overall Node Behavior
The behavior of using
ANY
as a destination suggests that nodes are evaluted starting at the upper left, moving left to right, and advancing down one row and returning to the left edge upon reaching the end of a row. This behavior is not guaranteed and may change.Comments
The character # and any characters after it on a line are ignored. Comments may follow a label or opcode and arguments.
Characters following ## are treated as the program's title and are displayed in the menu. The ## does not need to be the start of comment. Spaces one the left and right side of the title are discarded. If multiple entries with ## are present, TIS-100 searches starting in the upper left node, searching from top to bottom inside of the node's assembly. If nothing is found, TIS-100 moves from left to right and repeats the search for the assembly in each node. Upon reaching the right edge, TIS-100 moves to the left of te next row down and repeats the procedure.
Title is 'B':
Title is '#### C ####':
Title is 'D':
Title is 'D':
Labels
A label, if present, must be the first thing on the line. It is terminated with a : which must be immediately adjacent to the label. Valid characters for labels are the letters A through Z, the digits 0 through 9, and the punctuation in the set of ~`$%^&*()_-+={}[]|;'<>,.?/ . There are no limitations on which characters may be in which positions of the label. A line may only have a single label. A label must have at least one character before the colon. Labels may be up to 18 characters long, but the longest addressable label is 14 characters.
Storage
ACC
- Accumulator. Register. Can be used as a source or destination. Initialized to 0. Reads and writes are instantaneous.BAK
- Backup. Register. Only SAV
and SWP
interact with BAK
. The identifier “BAK
” is never a valid identifier in a program.NIL
- Nothing. Register. Can be used as a source, in which case “0” is returned. Can be used as a destination, which which case the value is discarded.UP
, DOWN
, LEFT
, RIGHT
- Connections to adjacent nodes. Ports. Can be used as a source or a destination. When used as a destination, the value cannot be read by the adjacent node in the same cycle that it was written to. Blocks until a destination value is used as a source by the adjacent node or a source is used as a destination by an adjacent node.ANY
- Port. Can be used as a source, in which case the value will be read from the first port with a waiting value, as searched in the order LEFT, RIGHT, UP, DOWN. Can be used as a destination, in which case the value is available to all ports; it will be cleared from all ports as soon as any adjacent node reads it. Assuming all adjacent points try to read simulataneously, the winner will be selected in the order UP, LEFT, RIGHT, and DOWN. The search order is not formally part of the TIS-100 description, so it may change in future releases.LAST
- Port. Refers to the same port used by the last reference to ANY
, either in read or write. If ANY
has not been used, attempts to use LAST
as a source will return 0, while attempts to use LAST
as a destination will block forever.source can be ACC, NIL, UP, DOWN, LEFT, RIGHT, ANY, LAST, or an integer from −999 through 999, inclusive. If the value is an integer, it is used directory. Otherwise the register or port is read for the value to use.
destination can be ACC, NIL, UP, DOWN, LEFT, RIGHT, ANY, or LAST.
Opcodes
Each opcode has 0, 1, or 2 arguments. The opcode and arguments must be separated by at least one space or comma, but may be separated by any number of spaces or commas. The following are all equivalent:
NOP - No Operation - 1 cycle
Syntax:
NOP
Does nothing.
MOV - Move - 1-2 cycles
Syntax:
MOV
sourcedestinationReads a value from source and write it to destination. If source is a port, blocks until a value is present. If destination is a port, blocks until the value is received.
1 cycle when writing ACC or NIL.
2 cycles when writing to UP, DOWN, LEFT, or RIGHT, assuming the neighboring node is willing to retrieve the value on the second cycle. The data is not yet in the port until the end of the first cycle. This prevents a single value from travelling multiple nodes in a single cycle.
SWP - Swap - 1 cycle
Syntax:
SWP
Swaps the values of ACC and BAK
SAV - Save - 1 cycle
Syntax:
SAV
Copies the value of ACC to BAK
ADD - Add - 1 cycle
Syntax:
ADD
sourceThe source value is added to the value in ACC, and the result placed in ACC. Results greater than 999 are limited to 999. Results less than −999 are limited to −999.
SUB - Subtract - 1 cycle
Syntax:
SUB
sourceThe source value is subtracted to the value in ACC, and the result placed in ACC. Results greater than 999 are limited to 999. Results less than −999 are limited to −999.
NEG - Negate - 1 cycle
Syntax:
NEG
The value in ACC is negative (swapped between positive and negative) and written back into ACC. 0 is left unchanged.
JMP - Jump - 1 cycle
Syntax:
JMP
labelTransfer execution to the first instruction after label.
JEZ - Jump if equal to zero - 1 cycle
Syntax:
JEZ
labelIf the ACC is 0, transfer execution to the first instruction after label.
JNZ - Jump if not equal to zero - 1 cycle
Syntax:
JNZ
labelIf the ACC is not 0, transfer execution to the first instruction after label.
JGZ - Jump if greater than zero - 1 cycle
Syntax:
JGZ
labelIf the ACC is greater than 0, transfer execution to the first instruction after label.
JLZ - Jump if less than zero - 1 cycle
Syntax:
JLZ
labelIf the ACC is greater than 0, transfer execution to the first instruction after label.
JRO - Jump relative offset - 1 cycle
Syntax:
JRO
sourceTransfer execution to the offset specified by source. Offset is measured in instructions. Negative offsets can be used to move jump backward, positive offsets to jump forward, or 0 to execute the JRO instruction again.
HCF - Reboot
Syntax:
HCF
Causes the game to restart. Halt and Catch Fire. As execution of this instruction terminates the active run, it cannot be used in a puzzle solution.
CopyrightCopyright 2015 Alan De Smet.This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.Fork this on GitHub!
TIS-100 | |
---|---|
Developer(s) | Zachtronics Industries |
Publisher(s) | Zachtronics Industries |
Designer(s) | Zach Barth |
Engine | Unity |
Platform(s) | Microsoft Windows, OS X, Linux, iPad |
Release | |
Genre(s) | Puzzle, programming |
Mode(s) | Single-player |
TIS-100 is a programming/puzzle video game developed by Zachtronics Industries. The game has the player develop mock assembly language code to perform certain tasks on a virtualized 1970s computer that has been corrupted. The game was released for Microsoft Windows, OS X, and Linux personal computers in July 2015.
Gameplay[edit]
Within TIS-100, the player is said to have come across a malfunctioning TIS-100 computer ('Tessellated Intelligence System') and its manual, based on early computers of the 1980s. The computer is presented to the player as twelve separate processing nodes laid out in a four-by-three grid. Each node has a single processor register to store a numerical value as well as a backup register. Nodes also hold their own assembly language program as entered by the user. The assembly language, a simplified version of real-world assembly languages, allows the node to accept external input or a numerical value sent from an adjacent node, perform basic math and logic operations, store and backup the current data value, and then send results to an adjacent node or to the program's output. Later puzzles introduce stack nodes and an output to a simple 5-color graphics display.
The interface of TIS-100 presents the player with 12 assembly language-based nodes and other options to develop code in. In this puzzle, the top right node in red is unavailable for use.
The player is presented with a series of puzzles that require them to program the nodes to perform specific actions on a set of numbers from one or more input terminals to produce pre-determined output at other terminals. For example, one task requires the player to double the value of the input at the output terminal. The game presents the list of inputs and the target output values that it is expecting and requires the players to develop the code for each node to match this; if during execution the output nodes receive unexpected outputs, the execution will cease and the player will have to rework their solution. Not all nodes are available in certain puzzles, so the player will need to route around these nodes. The game offers the player the ability to step through the execution of the code and insert debugging statements to determine logic issues within their code. Once the target output conditions are met, the player is considered to have solved the puzzle. The nodes that are disabled in puzzles contain cryptic messages related to the narrative of the game and which contain more information that can be accessed when the entire game is completed.[1]
As with previous Zachtronics games such as SpaceChem and Infinifactory, once the player completes a puzzle, their solution is compared to other players through online leaderboards. The player is ranked based on the number of nodes used, the number of instructions within their code, and the number of instruction cycles used. The game allows the player to return to earlier puzzles to better their solution. The game launched in early access in June 2015 with about 25 puzzles within the game,[2] and another 25 were added by the time of its official release the following month.[3]
Computer architecture[edit]
A TIS-100 'machine' is made up of 12 interconnected nodes on a grid, either a compute node or a stack memory module. Each compute node may hold 15 instructions and each memory node may hold 15 values. Nodes at the top or the bottom may be connected to external sources of input or output respectively.[4]
Each TIS-100 compute node has two registers called ACC and BAK. ACC is used by most instructions, while BAK is only accessed by two instructions, one for swapping and one for copying. The instruction set contains 13 documented instructions for arithmetic, basic flow control (conditional jump), no-op, and sending data to adjacent nodes. The game also includes undocumented instructions, with HCF (reboot game) being the first known undocumented instruction.[5]
The TIS-100 architecture has also been implemented outside of the game in an emulator, intended to be used as an esoteric programming language.[4]
Development[edit]
TIS-100 was based on an idea that Zach Barth, the founder and lead game designer of Zachtronics, had years prior. The concept was named The Second Golden Age, which was set in the Middle East sometime in the near future, in which the player would program nanobots to be injected into the player-character's blood as to be able to solve various types puzzles akin to Myst. One aspect would be the player-character coming across a used electronics store and finding an old computer with corrupted areas, which as they worked to clear up, would discover these corrupted areas contained the core of an artificial intelligence. While developing Infinifactory, Barth wanted to try to start work on The Second Golden Age but found the effort, concurrent with Infinifactory, was far too difficult. However, he had completed the assembly-language puzzle aspect, and decided to go ahead and refine only that portion as a full game.[6] To finish off the game, he worked with Keith Holman to write the language's manual inspired by similar computer manuals of the time, and with Matthew Burns to craft a simple story around the game. They used concepts from a Mondo 2000 infographic based on cybertech fashions to write the tongue-in-cheek narrative for the game and manual.[6]
TIS-100 was released into Steam Early Access on June 1, 2015. Barth stated that he took a similar approach to Early Access as with Infinifactory, providing a game that was nearly complete to gain suggestions and improvements and the ability to add more content before releasing the final product. Barth estimated that the Early Access phase would last 1–2 months.[7] The final version was released on July 20, 2015.[8]
Reception[edit]
In its article 'Can Videogames Teach You Programming', Rock Paper Shotgun called the game's technology 'relevant' and said 'if you can survive its stiff challenge, you’re ready to code'.[9]
See also[edit]
- Core War, a programming game involving assembly language
- Connection Machine, a real life supercomputer family with a similar architecture
Tis-100 Mac Download
References[edit]
- ^Hudson, Laura (June 9, 2015). 'Program a strange, corrupted computer and discover its secrets'. Boing Boing. Retrieved June 9, 2015.
- ^'TIS-100'. Zachtronics Industries. June 1, 2015. Retrieved June 3, 2015.
- ^Matulef, Jeffrey (July 21, 2015). 'Zachtronics' programming puzzler TIS-100 now out of Early Access'. Eurogamer. Retrieved July 23, 2015.
- ^ abAnderson, Derek (March 28, 2018). 'Phlarx/tis: A TIS-100 emulator, uses TIS-100 save file format'.
- ^'Assembly'. TIS-100 Hacker's Guide.
- ^ abWawro, Alex (June 9, 2015). ''Things we create tell people who we are': Designing Zachtronics' TIS-100'. Gamasutra. Retrieved June 9, 2015.
- ^O'Conner, Alice (June 1, 2015). 'SpaceChem Dev's TIS-100: A Programming Puzzler'. Rock, Paper, Shotgun. Retrieved June 2, 2015.
- ^Estrada, Marcus (July 20, 2015). 'TIS-100 Just Launched Out of Early Access'. Hardcore Gamer. Retrieved July 21, 2015.
- ^Sayer, Matt (October 3, 2016). 'Can Videogames Teach You Programming'. Rock Paper Shotgun. Retrieved January 23, 2017.
External links[edit]
Tis-100 For Mac Os
Retrieved from 'https://en.wikipedia.org/w/index.php?title=TIS-100&oldid=992562150'