aboutsummaryrefslogtreecommitdiff
path: root/tsalis/README.md
blob: 8fddfdb502d0092848464bee7ef3d5331be10acf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# TSALIS
*TSALIS* is a text user interface (TUI) designed to communicate with *SALIS*.
Its only dependencies are ncurses and the *SALIS* library itself. It should be
portable enough and should run easily in any terminal environment.

## Building instructions
You'll need nothing but a C compiler (C89). You must build the program and link
it with *SALIS* (e.g. *libsalis.a*) and ncurses. A sample makefile
(Makefile) is provided for GNU Make. You can also just run the `make` command
inside the salis directory and it will automate the building and linking of
both the library and this application. Feel free to edit both makefiles as
needed. If you run into any difficulties, please let me know!

## List of commands
### Command-line arguments
You may run *TSALIS* from the terminal in any of these three ways (arguments
are being represented by *XX*). Note that, upon exit, *SALIS* automatically
generates a save (by default called *def.sim*). This save file may be freely
renamed (any name 10 characters or shorter) and reloaded as needed.

|Arguments      |Action                                                                          |
|:--------------|-------------------------------------------------------------------------------:|
|tsalis         |If file *def.sim* exists in directory, loads simulation from that file.         |
|tsalis         |If file *def.sim* does not exist, creates new simulation (memory size 2^16).    |
|tsalis n*XX*   |Creates new simulation with memory size 2^*XX*.                                 |
|tsalis l*XX*   |Loads simulation from file named *XX*.                                          |

### Keyboard commands
|Key            |Action                                                                                       |
|:--------------|--------------------------------------------------------------------------------------------:|
|Left arrow     |Previous page                                                                                |
|Right arrow    |Next page                                                                                    |
|wasd           |Scroll (PROCESS and WORLD page)                                                              |
|W              |Scroll to top (PROCESS and WORLD page)                                                       |
|A              |Scroll to left (PROCESS page)                                                                |
|zx             |Zoom in/out (WORLD page)                                                                     |
|op             |Select previous/next organism                                                                |
|g              |Toggle data/gene view (PROCESS page)                                                         |
|c              |Open console (pauses simulation)                                                             |
|Space          |Run/pause simulation                                                                         |
|jl             |Select first/last organism                                                                   |
|k              |Go to selected organism (PROCESS and WORLD page)                                             |
|Numbers (1-0)  |Cycle simulation 2^(n-1) steps (i.e. 1 = 1 step, 2 = 2 steps, 3 = 4 steps, 4 = 8 steps, ...) |

### Console commands
The console opens up when 'c' is pressed. Commands, with their respective
parameters separated by underscores, may be written in order to modify or
control some aspects of the simulation. Parameters here are represented by
*XX*.

|Command     |Param. 1    |Param. 2    |Action                                                                |
|:-----------|:-----------|:-----------|---------------------------------------------------------------------:|
|q           |---         |---         |Save and quit simulation.                                             |
|i*XX*\_*XX* |address     |instructions|Writes given instructions into address.                               |
|c*XX*\_*XX* |address     |file name   |Compiles given file into address.                                     |
|n*XX*\_*XX* |address     |size        |Initializes organism of given size into address.                      |
|k           |---         |---         |Kills organism at bottom of queue (first organism).                   |
|m*XX*       |address     |---         |Scroll/move (PROCESS and WORLD page) to given process/address.        |
|p*XX*       |process id  |---         |Select given process.                                                 |
|s           |---         |---         |Save simulation.                                                      |
|r*XX*       |name        |---         |Rename simulation (will be automatically saved to this name on exit). |
|a*XX*       |interval    |---         |Set simulation's auto-save interval.                                  |

### Legend
In WORLD view, as well as in PROCESS view (when gene mode is selected), each
cell is colored according to the following legend:

|Background color |Meaning                                 |
|:----------------|---------------------------------------:|
|BLUE             |Non-allocated cell                      |
|CYAN             |Allocated cell                          |
|WHITE            |Start of memory block                   |
|YELLOW           |Main memory block of selected organism  |
|GREEN            |Child memory block of selected organism |
|MAGENTA          |SP of selected organism                 |
|RED              |IP of selected organism                 |