TIS-100

TIS-100

103 ratings
Quick Reference Guide & Solutions
By SeltDude
A quick reference guide for the Tessellated Intelligence Systems TIS-100. A handy reference for when the manual is not around! Sample program listings (with scores) included.
   
Award
Favorite
Favorited
Unfavorite
TIS-100 Quick Reference Guide
Basic Execution Node Instruction Set
NOP NO OPERATION MOV <SRC>, <DST> MOVE <SRC> TO <DST>; COMMA IS OPTIONAL SWP SWAP ACC AND BAK SAV SAVE ACC TO BAK ADD <SRC> ADD <SRC> TO ACC SUB <SRC> SUBTRACT <SRC> FROM ACC NEG NEGATE ACC (NEG 0 = 0) JMP <LABEL> JUMP TO <LABEL> JEZ <LABEL> JUMP TO <LABEL> IF ACC = 0 JNZ <LABEL> JUMP TO <LABEL> IF ACC != 0 JGZ <LABEL> JUMP TO <LABEL> IF ACC > 0 JLZ <LABEL> JUMP TO <LABEL> IF ACC < 0 JRO <SRC> JUMP TO RELATIVE OFFSET <SRC> (A value of 0 causes an infinite loop. Both positive and negative jumps are bounded by the node's first and last instructions.) HCF HALT & CATCH FIRE (Undocumented; resets the TIS-100.) <SRC> Refers to ACC, UP, DOWN, LEFT, RIGHT, ANY, LAST, NIL, or a literal (-999...999) <DST> Refers to ACC, UP, DOWN, LEFT, RIGHT, ANY, LAST, or NIL <LABEL> Refers to location marked by alphanumeric label '<LABEL>:' # Indicates a comment in source code. ## Indicates program title to the debugger. ! Triggers a breakpoint when using the debugger.
Registers and Ports
Registers can store integers in the range of -999 to 999. ACC The primary storage and computational register in each node. BAK The BAK register cannot be directly addressed (see SWP, SAV). UP, DOWN, LEFT, RIGHT Each output port holds its value until read, thereby behaving like an additional register. ANY Reads to or writes from the next available port (UP, RIGHT, DOWN, or LEFT) that is receiving or sending a value. LAST Maps to the last port selected by ANY. LAST maps to NIL if ANY has not been used. NIL As a source, NIL produces a 0. As a destination, it has no effect.
Nodes
Up to 12 nodes are available per program. There are two types of nodes available on the TIS-100: Basic Execution and Stack Memory. A defective or damaged node is automatically disabled. Basic Execution Node (T21) - Each node can run a subprogram with up to 15 instructions. Labels are not considered instructions. - When the last instruction in a node is run, execution continues with the first instruction. Note that this wraparound does not cost any cycles. Stack Memory Node (T30) - Can hold up to 15 values. - Supports push/pop from any connected port. - Pop from an empty stack node will stall. - Push to a full stack node will stall. - Note that push/pop stalls can be recovered if another port is used to remove/add a value from the stack.
Cycles
- Writes take 2 cycles. Other operations require only one cycle, assuming data is available. - The first "step" in a run does not count as a cycle. - A cycle is needed to complete the last write out to an output port.
Image Console
The image console (aka visualization module) is able to display 4-color graphics on a 30 x 18 display screen. Each pixel is addressable by a (X,Y) coordinate system, with (0,0) mapping to the upper left corner. Pixels are updated with command packets, which have the following format: - X coordinate - Y coordinate - Color value 0 - ... - Color value N - End packet marker (any negative value) One or more color values may be used per packet. For each color value after the initial value, X is incremented automatically. There is no automatic wraparound. Color values are: - 0: Black - 1: Dark grey - 2: Light grey - 3: White - 4: Red
Sample Programs
TIS-100 SEGMENT MAP
00150 SELF-TEST DIAGNOSTIC [BUSY_LOOP: 100001/8/24][ALMOST: 100000/8/20] 10981 SIGNAL AMPLIFIER [DUAL PATHS: 84/5/11] 20176 DIFFERENTIAL CONVERTER [NEGATE: 201/5/11] 21340 SIGNAL COMPARATOR [UNCONDITIONAL: 232/6/34] 22280 SIGNAL MULTIPLEXER [PARALLEL: 203/8/22] 30647 SEQUENCE GENERATOR [DISTRIBUTED: 106/5/18] 31904 SEQUENCE COUNTER [NO_BACKUP: 231/6/25] 32050 SIGNAL EDGE DETECTOR [DUAL THREADS: 202/7/29] 33762 INTERRUPT HANDLER [CYCLES: 176/10/44] 40196 SIGNAL PATTERN DETECTOR [STATE MACHINE: 174/4/17] 41427 SEQUENCE PEAK DETECTOR [CYCLES: 267/6/34] 42656 SEQUENCE REVERSER [NO_MEMORY: 647/4/41][STACK: 314/4/9] 43786 SIGNAL MULTIPLIER [JUMP TABLES: 537/5/32] 50370 IMAGE TEST PATTERN 1 [CYCLES: 1239/2/23] 51781 IMAGE TEST PATTERN 2 [CYCLES: 1238/3/25] 52544 EXPOSURE MASK VIEWER [JUMP TABLE: 708/5/40] 53897 HISTOGRAM VIEWER [SIMPLE: 3421/4/18][TWO AT ONCE: 2173/9/59] 60099 SIGNAL WINDOW FILTER [ONE PATH: 557/7/29][TWO PATHS: 479/9/36] 61212 SIGNAL DIVIDER [BALANCED LOOPS: 4654/5/24] 62711 SEQUENCE INDEXER [CALC INDEX: 1182/6/32] 63534 SEQUENCE SORTER [INSERTION SORT: 528/8/82] 70601 STORED IMAGE DECODER [DECREMENT: 2358/5/20][JRO BURSTS: 1360/6/47]
ANTI-TAMPER CERTIFICATION
????? D..$A5R.5SRD.. [RUN-LENGTH: 693/4/33]
TIS-NET DIRECTORY
NEXUS 00.526.6 SEQUENCE MERGER [COMPARE MERGE: 467/6/34] NEXUS 01.874.8 INTEGER SERIES CALCULATOR [THREE THREADS: 2059/9/94] NEXUS 02.981.2 SEQUENCE RANGE LIMITER [COMPARE NODES: 430/6/38] NEXUS 03.176.9 SIGNAL ERROR CORRECTOR [LOW MEMORY: 439/5/18][LOW CYCLES: 237/6/22] NEXUS 04.340.5 SUBSEQUENCE EXTRACTOR [USING JRO: 119/4/27] NEXUS 05.647.1 SIGNAL PRESCALER [DIV 128: 2446/6/28] NEXUS 06.786.0 SIGNAL AVERAGER [DIV 32: 3347/5/39] NEXUS 07.050.0 SUBMAXIMUM SELECTOR [BRUTE FORCE: 620/8/62] NEXUS 08.633.9 DECIMAL DECOMPOSER [QUICK DIVIDE: 1143/7/52] NEXUS 09.904.9 SEQUENCE MODE CALCULATOR [UNROLLED LOOPS: 1268/7/85] NEXUS 10.656.5 SEQUENCE NORMALIZER [STACK MARKER: 696/5/43] NEXUS 11.711.2 IMAGE TEST PATTERN 3 [STAGES: 1752/11/82] NEXUS 12.534.4 IMAGE TEST PATTERN 4 [DISTRIBUTED: 1380/7/45] NEXUS 13.370.9 SPATIAL PATH VIEWER [JRO ANGLE: 1985/4/42][X&Y PATHS: 1292/9/47] NEXUS 14.781.3 CHARACTER TERMINAL [INDEXED: 1120/8/77][SCANLINES: 965/9/77] NEXUS 15.897.9 BACK-REFERENCE REIFIER [JRO SELECTOR: 661/9/42] NEXUS 16.212.8 DYNAMIC PATTERN DETECTOR [TRIPLETS ONLY: 454/8/44] NEXUS 17.135.0 SEQUENCE GAP INTERPOLATOR [RECONSTRUCT: 719/5/56] NEXUS 18.427.7 DECIMAL TO OCTAL CONVERTER [DIV 24,8: 804/4/22] NEXUS 19.762.9 PROLONGED SEQUENCE SORTER [COUNT VALUES: 1251/6/58] NEXUS 20.433.1 PRIME FACTOR CALCULATOR [TEST ODDS: 8401/5/57][BRUTE FORCE: 10882/4/48] NEXUS 21.601.6 SIGNAL EXPONENTIATOR [NO STACK: 1888/6/53] NEXUS 22.280.8 T20 NODE EMULATOR [JRO OPCODE: 213/6/22] NEXUS 23.727.9 T31 NODE EMULATOR [STACK INDEX: 429/4/41] NEXUS 24.511.7 WAVE COLLAPSE SUPERVISOR [COMPARE NODES: 479/7/40]
6 Comments
SeltDude  [author] Mar 1 @ 8:08pm 
Thank you, SiriusBacon.
SiriusBacon Jan 12 @ 12:30pm 
Amazing work, dude.
elidoran Jan 28, 2023 @ 4:57pm 
Thank you for posting all these. I enjoy seeing how others solve this stuff because most of the time they're so much better than mine. :)

The Prime Factor Calculator can be improved by focusing on the fact the only primes which need to be tested are 2, 3, 5, and 7. If the last value for an N can't be factored by any of those four primes then that current value of N is the last prime factor. So, output it and then a zero. For example, Test 1 uses an N of 69 with the answer being "3, 23, 0". Testing with 2 fails cuz it's odd, of course, 3 gives the 23, and then 3, 5, and 7 all fail with 23, so then output the 23 and a 0 and it's done.

I wasn't able to make a compact looking version like yours, however, the screenshot shows a solution which is both fast and has some parallelization. Perhaps, armed with this knowledge, you could produce a better version than mine.

https://steamcommunity.com/sharedfiles/filedetails/?id=2925118360
L9 ♥♥♥ Aug 21, 2020 @ 1:04pm 
what the hell you're crazy i spend like 6 hours on the fifth level
SeltDude  [author] Jan 6, 2019 @ 7:53pm 
Thanks for the comment! I just tried the dynamic pattern detector solution...it still works for me at the same 454/8/44.
Tetra._ Nov 21, 2018 @ 1:24pm 
the dynamic pattern detector solution doesnt apper to work however my version does with the same 454/8/44 will upload a screen shot soon