  Instruction Quick Reference

   / modifiers:
     * 98 Funge-98 only, not in Befunge-93.
     * 2D Minimum 2 dimensions (not in Unefunge).
     * 3D Minimum 3 dimensions (not in Unefunge or Befunge).
     * c Concurrent Funge. Check y to see if these instructions are
       implemented.
     * f Filesystem Funge. Check y to see if these instructions are
       implemented.

Note from jquelin:
In the ASCII column, I added a symbol telling the status of the
instruction in the interpreter.
-> a "X" means implemented and tested.
-> a "-" means implemented but won't be tested.
-> a "?" means unimplemented (irrelevant).


|       |     |             |Stack |  Stack  |                                   |
|Decimal|ASCII| Instruction |Before|  After  |           Other Effects           |
|       |     |             |----------------|                                   |
|       |     |             |(bottom ... top)|                                   |
+-------+-----+-------------+------+---------+-----------------------------------+
|32     |space|Space        |      |         |not normally executed              |
|33     |!    |Logical Not  |b     |NOT b    |                                   |
|34     |"    |Toggle       |      |         |stringmode <- NOT stringmode       |
|       |     |Stringmode   |      |         |                                   |
|35     |#  X |Trampoline   |      |         |pos <- pos + delta                 |
|36     |$    |Pop          |n     |         |                                   |
|37     |%  X |Remainder    |a b   |a REM b  |                                   |
|38     |&  - |Input Integer|      |a        |a = readint()                      |
|39     |'    |Fetch        |      |c        |pos <- pos + delta                 |
|       |     |Character/98 |      |         |                                   |
|40     |(    |Load         |en..e1|f 1      |overloads A-Z                      |
|       |     |Semantics/98 |n     |         |                                   |
|41     |)    |Unload       |en..e1|         |unloads last A-Z                   |
|       |     |Semantics/98 |n     |         |                                   |
|42     |*  X |Multiply     |a b   |a * b    |                                   |
|43     |+  X |Add          |a b   |a + b    |                                   |
|44     |,  X |Output       |c     |         |writechar(c)                       |
|       |     |Character    |      |         |                                   |
|45     |-  X |Subtract     |a b   |a - b    |                                   |
|46     |.  X |Output       |a     |         |writeint(a)                        |
|       |     |Integer      |      |         |                                   |
|47     |/  X |Divide       |a b   |a / b    |                                   |
|48     |0  X |Push Zero    |      |0        |                                   |
|49     |1  X |Push One     |      |1        |                                   |
|50     |2  X |Push Two     |      |2        |                                   |
|51     |3  X |Push Three   |      |3        |                                   |
|52     |4  X |Push Four    |      |4        |                                   |
|53     |5  X |Push Five    |      |5        |                                   |
|54     |6  X |Push Six     |      |6        |                                   |
|55     |7  X |Push Seven   |      |7        |                                   |
|56     |8  X |Push Eight   |      |8        |                                   |
|57     |9  X |Push Niner   |      |9        |                                   |
|58     |:    |Duplicate    |v     |v v      |                                   |
|59     |;    |Jump Over/98 |      |         |nothing executed until next        |
|       |     |             |      |         |semicolon                          |
|60     |<  X |Go West      |      |         |delta <- (-1,0)                    |
|61     |=    |Execute/98/f |STR   |r        |r = system-execute(STR)            |
|62     |>  X |Go East      |      |         |delta <- (1,0)                     |
|63     |?  X |Go Away      |      |         |delta <- (1,0)?(-1,0)?(0,1)?(0,-1) |
|64     |@    |Stop         |      |         |halt IP                            |
|65-90  |A-Z  |             |      |         |Fingerprint-Defined/98             |
|91     |[  X |Turn         |      |         |delta <- rot(-90, delta)           |
|       |     |Left/98/2D   |      |         |                                   |
|92     |\    |Swap         |a b   |b a      |                                   |
|93     |]  X |Turn         |      |         |delta <- rot(90, delta)            |
|       |     |Right/98/2D  |      |         |                                   |
|94     |^  X |Go North/2D  |      |         |delta <- (0,-1)                    |
|95     |_    |East-West If | b    |         |delta <- if (b) (-1,0) else (1,0)  |
|96     |`    |Greater Than | a b  |a > b    |either 1 or 0                      |
|97     |a  X |Push Ten/98  |      |10       |                                   |
|98     |b  X |Push         |      |11       |                                   |
|       |     |Eleven/98    |      |         |                                   |
|99     |c  X |Push         |      |12       |                                   |
|       |     |Twelve/98    |      |         |                                   |
|100    |d  X |Push         |      |13       |                                   |
|       |     |Thirteen/98  |      |         |                                   |
|101    |e  X |Push         |      |14       |                                   |
|       |     |Fourteen/98  |      |         |                                   |
|102    |f  X |Push         |      |15       |                                   |
|       |     |Fifteen/98   |      |         |                                   |
|103    |g    |Get          |Va    |v        |v = fetch-funge-space(offset+Va)   |
|104    |h  ? |Go High/98/3D|      |         |delta <- (0,0,-1)                  |
|105    |i    |Input        |Va f  |Va Vb    |inputs file                        |
|       |     |File/98/f    |STR   |         |                                   |
|106    |j    |Jump         |s     |         |pos <- pos + delta * s             |
|       |     |Forward/98   |      |         |                                   |
|107    |k    |Iterate/98   |n     |         |execute next instruction now, n    |
|       |     |             |      |         |times                              |
|108    |l  ? |Go Low/98/3D |      |         |delta <- (0,0,1)                   |
|109    |m    |High-Low     |b     |         |delta <- if (b) (0,0,-1) else      |
|       |     |If/98/3D     |      |         |(0,0,1)                            |
|110    |n    |Clear        |en..e1|         |                                   |
|       |     |Stack/98     |      |         |                                   |
|111    |o    |Output       |Va Vb |         |outputs file                       |
|       |     |File/98/f    |f STR |         |                                   |
|112    |p    |Put          |v Va  |         |store-funge-space(offset+Va,v)     |
|113    |q    |Quit/98      |r     |         |immediate exit, returncode = r     |
|114    |r  X |Reflect/98   |      |         |delta <- delta * -1                |
|115    |s    |Store        |c     |         |store-funge-space(position+delta,v)|
|       |     |Character/98 |      |         |                                   |
|116    |t    |Split/98/c   |      |         |Split IP                           |
|117    |u    |Stack Under  |n     |(en..e1) |                                   |
|       |     |Stack/98     |      |         |                                   |
|118    |v  X |Go South/2D  |      |         |delta <- (0,1)                     |
|119    |w    |Compare/98/2D|a b   |         |if (a>b) ']' elsif (a<b) '[' else  |
|       |     |             |      |         |'z'                                |
|120    |x  X |Absolute     |Va    |         |delta <- Va                        |
|       |     |Delta/98     |      |         |                                   |
|121    |y    |Get          |c     |en(..e1) |                                   |
|       |     |SysInfo/98   |      |         |                                   |
|122    |z    |No           |      |         |                                   |
|       |     |Operation/98 |      |         |                                   |
|123    |{    |Begin        |en..e1|(en..e1) |offset <- pos + delta, etc         |
|       |     |Block/98     |n     |         |                                   |
|124    ||    |North-South  |b     |         |delta <- if (b) (0,-1) else (0,1)  |
|       |     |If/2D        |      |         |                                   |
|125    |}    |End Block/98 |en..e1|(en..e1) |offset <- SOSS Va, etc             |
|       |     |             |n     |         |                                   |
|126    |~  - |Input        |      |c        |c = readchar()                     |
|       |     |Character    |      |         |                                   |
+-------+-----+-------------+------+---------+-----------------------------------+
