Commit 859e7889 authored by Tom Barbalet's avatar Tom Barbalet

Clean up script examples and clear outdated documentation

parent f2f31612
Pipeline #121724520 passed with stages
in 53 minutes and 17 seconds
# doc.sh
#
# =============================================================
#
# Copyright 1996-2020 Tom Barbalet. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation
# files (the "Software"), to deal in the Software without
# restriction, including without limitation the rights to use,
# copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following
# conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#
# This software is a continuing work of Tom Barbalet, begun on
# 13 June 1996. No apes or cats were harmed in the writing of
# this software.
./build.sh --additional
rm longterm.o
rm draw.o
gcc ${CFLAGS} -c ./documentation/documentation.c -o documentation.o
gcc ${CFLAGS} -I/usr/include -o ./doc *.o
rm *.o
./doc
rm doc
This diff is collapsed.
[HTML] [HEAD] [TITLE]Introduction to ApeScript[/TITLE] [/HEAD] [BODY bgcolor="#ffffff"] [FONT FACE="Arial,Geneva,Helvetica" SIZE=3] [CENTER][A HREF="file.html"]File Format[/A] - [A HREF="index.html"]Contents[/A] - [A HREF="apescript_sim.html"]Scripting the Simulation[/A][/CENTER] [HR] [H2]INTRODUCTION TO APESCRIPT[/H2] [P] ApeScript was developed with a number of requirements. These included; [P]    (1)   Simple language - easy to learn, easy to maintain[BR]    (2)   Stable memory footprint - no allocation/free issues[BR]    (3)   Minimal crashes - good error handling and abort[BR]    (4)   Small code - maintains the Simulation's small size [P] From these basic elements the ApeScript language was built on a C/C++/Java style syntax with a couple of minor differences. Anyone familiar with these languages should have no problem with ApeScript. Similarly, as ApeScript is extremely simple, a non-programmer should be able to pick up ApeScript too. [P] In addition, there are a series of [A HREF="apescript_notes.html"]ApeScript examples and discussion notes to assist novice and advanced developers[/A]. [P] [B]ELEMENTS[/B] [P] Comments in ApeScript are denoted between /* and */. [P] [CENTER] [TABLE WIDTH=90%] [TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"] [FONT FACE="Courier, Courier New" SIZE=4]    /* This is an example comment */ [P]    /*[BR]       This is also a comment[BR]    */ [/TABLE][/CENTER] [P] [FONT FACE="Arial,Geneva,Helvetica" SIZE=3] ApeScript has two basic types numbers and variables. The variables may be [A HREF="apescript_sim.html"]pre-defined variables that come from the Simulation environment[/A] but other variables can be created on the fly. [P] A variable can only be made up of letters and underscore (_). No numbers can be included in a variable name. [P] A variable is defined through use. If a variable is not set at the time it is defined it is assumed the variable equals zero. For example; [P] [CENTER] [TABLE WIDTH=90%] [TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"] [FONT FACE="Courier, Courier New" SIZE=4]    this_is_a_test = what_is_the_value + 5; [/TABLE][/CENTER] [P] [FONT FACE="Arial,Geneva,Helvetica" SIZE=3] Would set this_is_a_test to 5 and if it was reused what_is_the_value to 0. Whilst this example is a created one, it is good to make distinct variable names to avoid any confusion with the [A HREF="apescript_sim.html"]Simulation variables[/A]. The numbers defined in ApeScript need to be whole integer numbers of the range from 0 to 65535. You can not define an ApeScript number as negative from the initial definition. However you can define a negative number through a subtraction. For example; [P] [CENTER] [TABLE WIDTH=90%] [TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"] [FONT FACE="Courier, Courier New" SIZE=4]    negative_five = 0 - 5; [/TABLE][/CENTER] [P] [FONT FACE="Arial,Geneva,Helvetica" SIZE=3] Similarly you can create numbers larger than 65535 through addition or multiplication. With this method you can create numbers between the range of -4294967296 to 4294967295. [P] [B]OPERATORS[/B] [P] In addition to numbers and variables, ApeScript allow the following mathematical and logical operators; [P] [CENTER] [TABLE WIDTH=90%] [TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"] [FONT FACE="Courier, Courier New" SIZE=4]    -   Subtract[BR]    +   Add[BR]    *   Multiply[BR]    /   Divide[BR]    %   Modulus[BR]    &   Binary And[BR]    ^   Binary Xor[BR]    |   Binary Or[BR]    ]]  Bit Shift Right[BR]    [[  Bit Shift Left[BR]    ]   Greater Than[BR]    [   Less Than[BR]    ]=  Greater Than or Equal To[BR]    [=  Less Than or Equal To[BR]    ==  Logical Equal To[BR]    !=  Logical Not Equal To[BR]    &&  Logical And[BR]    ||  Logical Or [/TABLE][/CENTER] [P] [FONT FACE="Arial,Geneva,Helvetica" SIZE=3] In order to maintain a small code-base for the interpreter only a single operation can be performed per line of code. Brackets can not be used with reference to operators. In C, a line of code may read; [P] [CENTER] [TABLE WIDTH=90%] [TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"] [FONT FACE="Courier, Courier New" SIZE=4]    /* C example */[BR]    number_value = ( number1 + number2 ) * 45; [/TABLE][/CENTER] [P] [FONT FACE="Arial,Geneva,Helvetica" SIZE=3] In ApeScript this would be written; [P] [CENTER] [TABLE WIDTH=90%] [TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"] [FONT FACE="Courier, Courier New" SIZE=4]    number_value = number_one + number_two;[BR]    number_value = number_value * 45; [/TABLE][/CENTER] [P][FONT FACE="Arial,Geneva,Helvetica" SIZE=3] [B]IF/WHILE[/B] [P] ApeScript has two additional operators, if and while. This provides conditional and loops respectively. If you require a standard ''for'' loop from 0 to 9, you can write it in ApeScript as follows; [P] [CENTER] [TABLE WIDTH=90%] [TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"] [FONT FACE="Courier, Courier New" SIZE=4]    while ( loop_condition [ 10 ) {[BR]       loop_condition = loop_condition + 1;   [BR]    } [/TABLE][/CENTER] [P][FONT FACE="Arial,Geneva,Helvetica" SIZE=3] Similarly, if you want to execute a section of ApeScript in a particular condition, you can use an if-statement; [P] [CENTER] [TABLE WIDTH=90%] [TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"] [FONT FACE="Courier, Courier New" SIZE=4]    if ( particular_condition ) {[BR]    } [/TABLE][/CENTER] [P][FONT FACE="Arial,Geneva,Helvetica" SIZE=3] While loops and if-statements can be layered. For example; [P] [CENTER] [TABLE WIDTH=90%] [TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"] [FONT FACE="Courier, Courier New" SIZE=4]    while ( loop_condition [ 230 ) {[BR]       if ( loop_condition [ 150 ) {   [BR]          loop_condition = loop_condition + 1;[BR]       }[BR]       loop_condition = loop_condition * 3;[BR]    } [/TABLE][/CENTER] [FONT FACE="Arial,Geneva,Helvetica" SIZE=3] [P] [B]FUNCTIONS[/B] [P] Functions are central to ApeScript. The being function is similar to main in C. Functions are special variables that are saved are in execution code memory allocations. They can be treated as variables. The code within the functions are not executed until they are run. Thus functions can be defined out of order provided the being function is placed last. [P] [CENTER] [TABLE WIDTH=90%] [TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"] [FONT FACE="Courier, Courier New" SIZE=4]    function ( physically_first ) {[BR]       test_value = 3;[BR]       run ( called_first );[BR]    } [P]    function ( called_first ) {[BR]       test_value = test_value + 4;[BR]    } [P]    function ( being ) {[BR]       test_value = 1;[BR]       run ( called_first );[BR]       run_function = physically_first;[BR]       if ( test_value ] 7 ) {[BR]          run_function = called_first;[BR]       }[BR]       run ( run_function );[BR]    } [/TABLE][/CENTER] [FONT FACE="Arial,Geneva,Helvetica" SIZE=3] [P] [B]ERRORS[/B] [P] For simplicity error reports are tracked per version release. If ApeScript reports an error, check it against [A HREF="apescript_sim.html"]this list[/A] for possible causes/fixes. [P] [B]LIMITS[/B] [P] With both variable allocation and while/if nesting (i.e. the number of layers of { }) there are limits for both. Developing actual ApeScript code for practical solutions, you should never reach these limits however if you have found a limit for your ApeScript code, please get in contact; [CENTER] [TABLE WIDTH=90%] [TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"] [FONT FACE="Courier, Courier New" SIZE=4]    tom at nobleape dot com [/TABLE][/CENTER] [P][FONT FACE="Arial,Geneva,Helvetica" SIZE=3] As these limits can be extended for actual use cases. [P] [B]MAILING LIST[/B] [P] The Noble Ape developer mailing list can provide feedback to your ApeScript questions. If you are starting out with ApeScript and you want a community, subscribe to the mailing list; [P]    [A HREF="http://www.nobleape.com/mailman/listinfo/developer_nobleape.com"]http://www.nobleape.com/mailman/listinfo/developer_nobleape.com[/A] [P] In addition to the active contributions to the mailing list, the link above provides an archive of the developer mailing list too. [HR] [CENTER][A HREF="file.html"]File Format[/A] - [A HREF="index.html"]Contents[/A] - [A HREF="apescript_sim.html"]Scripting the Simulation[/A][/CENTER] [/BODY] [/HTML]
\ No newline at end of file
This diff is collapsed.
[HTML] [HEAD] [TITLE]Scripting the Simulation[/TITLE] [/HEAD] [BODY bgcolor="#ffffff"] [FONT FACE="Arial,Geneva,Helvetica" SIZE=3] [CENTER][A HREF="apescript_intro.html"]Introduction to ApeScript[/A] - [A HREF="index.html"]Contents[/A] - [A HREF="apescript_notes.html"]ApeScript Notes[/A] [/CENTER] [HR] [H2]THE APESCRIPT INTERFACE INTO THE NOBLE APE SIMULATION[/H2] Variables automatically defined in [A HREF="apescript_intro.html"]ApeScript[/A] run in the Noble Ape Simulation. [P] [TABLE]
$ASI$ [TD][B]Variable[TD][B]Type[TD][B]Notes[TR] [TD][HR][TD][HR][TD][HR][TR] [TD][I]random[TD]output[TD]special - produces a 16-bit random number[TR] [TD][I]vector_angle[TD]input/output[TD]values from 0 to 255 with wrap-around (for greater values)[TR] [TD][I]vector_x [TD]output[TD]based on vector_angle (-840 to 840)[TR] [TD][I]vector_y[TD]output[TD]based on vector_angle (-840 to 840)[TR] [TD][HR][TD][B]Land[TD][HR][TR] [TD][I]test_x[TD]input/output[TD][TR] [TD][I]test_y[TD]input/output[TD][TR] [TD][I]test_z[TD]output[TD]based on test_x and test_y, provides numerical land height[TR] [TD][TD][TD][HR][TR] [TD][I]time[TD]output[TD]constant dt - numerical 24 hour time in minutes (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]date[TD]output[TD]constant dt - numerical date in days (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]weather[TD]output[TD]based on test_x and test_y, weather value and time of day/night - Daytime Sun(0), Daytime Cloudy(1), Daytime Rain(2), Nighttime Sun(3), Nighttime Cloudy(4), Nighttime Rain(5), Sunrise/Sunset(6) [TR] [TD][I]water_level[TD]output[TD]constant - the numerical water level (from z height)[TR] [TD][HR][TD][B]Being[TD][HR][TR] [TD][I]number_beings[TD]output[TD]constant dt[TR] [TD][I]current_being[TD]output[TD]constant db[TR] [TD][I]select_being[TD]input/output[TD]set to current_being initially[TR] [TD][TD][TD][HR][TR] [TD][I]location_x[TD]output[TD]based on select_being (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]location_y[TD]output[TD]based on select_being (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]location_z[TD]output[TD]based on location_x and location_y (ie select_being), provides numerical land height[TR] [TD][I]id_number[TD]output[TD]based on select_being (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]date_of_birth[TD]output[TD]based on select_being (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]state[TD]output[TD]based on select_being (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]listen[TD]output[TD]based on select_being from speak (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]facing[TD]i/o being[TD]NOT based on select_being (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]speed[TD]i/o being[TD]NOT based on select_being (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]energy[TD]i/o being[TD]NOT based on select_being (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]honor[TD]i/o being[TD]NOT based on select_being (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]parasites[TD]i/o being[TD]NOT based on select_being (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]height[TD]i/o being[TD]NOT based on select_being (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]family_name1[TD]i/o being[TD]NOT based on select_being (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]family_name2[TD]i/o being[TD]NOT based on select_being (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]goal_type[TD]i/o being[TD]NOT based on select_being (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]goal_x[TD]i/o being[TD]NOT based on select_being (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]goal_y[TD]i/o being[TD]NOT based on select_being (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]drive_hunger[TD]i/o being[TD]NOT based on select_being (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]drive_social[TD]i/o being[TD]NOT based on select_being (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]drive_fatigue[TD]i/o being[TD]NOT based on select_being (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]drive_sex[TD]i/o being[TD]NOT based on select_being (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]speak[TD]i/o being[TD]NOT based on select_being, to be spoken next dt (see [A HREF="file.html"]File Format[/A])[TR] [TD][I]hungry[TD]output[TD]constant - the numerical hunger level (from energy)[TR] [TD][TD][TD][HR][TR] [TD][I]is_visible[TD]output[TD]based on location_x, location_y, facing, test_x and test_y - shows if the test point is visible[BR] (NOTE the distinction between location_x/location_y vs facing if select_being != current_being, is_visible will allow this but it won't produce the desired results) [TR] [TD][TD][TD][HR][TR] [TD][I]brain_value[TD]i/o being[TD]based on brain_x, brain_y and brain_z[TR] [TD][I]brain_x[TD]input/output[TD][TR] [TD][I]brain_y[TD]input/output[TD][TR] [TD][I]brain_z[TD]input/output[TD][TR] [TD][HR][TD][B]Biology[TD][HR][TR] [TD][I]biology_operator[TD]input/output[TD][TR] [TD][I]biology_output[TD]output[TD]based on test_x, test_y and biology_operator[TR] [TD][TD][TD][HR][TR] [TD][I]biology_area[TD]output[TD][TR] [TD][I]biology_height[TD]output[TD][TR] [TD][I]biology_water[TD]output[TD][TR] [TD][I]biology_moving_sun[TD]output[TD][TR] [TD][I]biology_total_sun[TD]output[TD][TR] [TD][TD][TD][HR][TR] [TD][I]biology_bush[TD]output[TD][TR] [TD][I]biology_grass[TD]output[TD][TR] [TD][I]biology_tree[TD]output[TD][TR] [TD][TD][TD][HR][TR] [TD][I]biology_insect[TD]output[TD][TR] [TD][I]biology_mouse[TD]output[TD][TR] [TD][I]biology_parrot[TD]output[TD][TR] [TD][I]biology_lizard[TD]output[TD][TR] [TD][I]biology_eagle[TD]output[TD][TR] [TD][HR][TD][HR][TD][HR][TR] [TD][TD][B]Key[/B][TR] [TD][TD][I]constant[TD]remains the same[TR] [TD][TD][I]constant db[TD]constant for one being in this time cycle[TR] [TD][TD][I]constant dt[TD]constant for all beings in this time cycle[TR] [TD][TD][I]input/output[TD]can be read from and written to[TR] [TD][TD][I]i/o being[TD]like [I]input/output[/I] but set to and from the being[TR] [TD][TD][I]output[TD]can only be read from, not written to[TR] [TD][TD][I]special[TD]generated every time it is called [/TABLE] [HR] [H2]APESCRIPT ERRORS THAT CAN BE REPORTED IN THE SIMULATION[/H2] [P] This list shows some of the errors provided by ApeScript and their potential causes. (This document is due for an update with a full list of all the errors.) [P] $AER$
[HR] [CENTER][A HREF="apescript_intro.html"]Introduction to ApeScript[/A] - [A HREF="index.html"]Contents[/A] - [A HREF="apescript_notes.html"]ApeScript Notes[/A] [/CENTER] [/BODY] [/HTML]
\ No newline at end of file
[HTML] [TITLE]File Format[/TITLE] [BODY bgcolor="#ffffff"] [FONT FACE="Arial,Geneva,Helvetica" SIZE=3] [CENTER][A HREF="philosophic.html"]Noble Ape Philosophic[/A] - [A HREF="index.html"]Contents[/A] - [A HREF="apescript_intro.html"]Introduction to ApeScript[/A][/CENTER] [HR] [H2]File Format[/H2] The file format for the Noble Ape Simulation is text based and allows users to create their own Noble Ape Simulation environments. The following section explains the syntax of the Noble Ape Simulation's file format. [P] [B]Comments[/B] [P] Comments allow users (or the Simulation) to add human read-able comments to the files which won't be read by the Simulation. [BR] [CENTER] [TABLE WIDTH=90%] [TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"] [FONT FACE="Courier, Courier New" SIZE=4]    /* This is a comment */ [P]    /*[BR]       This is also a comment[BR]    */ [/TABLE][/CENTER] [P] [FONT FACE="Arial,Geneva,Helvetica" SIZE=3] Comments also allow users to remove sections of the file to test particular functionality or for temporary changes. [P] [B]Objects and Variables[/B] [P] The Noble Ape file format is based on objects and variables. The central elements are five letters that identify both objects and variables. An object includes a number of variables. The example definition of object 'objec' and variable 'varia', is as follows; [CENTER] [TABLE WIDTH=90%] [TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"] [FONT FACE="Courier, Courier New" SIZE=4]    objec{[BR]       varia = 123;[BR]    }; [/TABLE][/CENTER] [P][FONT FACE="Arial,Geneva,Helvetica" SIZE=3] Multiple values can be given for particular variables too. For example; [CENTER] [TABLE WIDTH=90%] [TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"] [FONT FACE="Courier, Courier New" SIZE=4]    airav = 123, 222, 111; [/TABLE][/CENTER] [P][FONT FACE="Arial,Geneva,Helvetica" SIZE=3] The Noble Ape Simulation supports two kinds of variables. One byte integers with values between 0 and 255 (inclusive), and two byte integers with values between 0 and 65535 (inclusive). Some variables will only accept one byte integers. In the file format variable definitions below, one_byte denotes a one byte value expected two_bytes denotes a two byte value expected.
[P] $FIL$ [H2]Partial Files[/H2] The file format supports partial files. If the user wants to change just the landscape characteristics or the time etc, they can create files that only change those variables. [HR] [CENTER][A HREF="philosophic.html"]Noble Ape Philosophic[/A] - [A HREF="index.html"]Contents[/A] - [A HREF="apescript_intro.html"]Introduction to ApeScript[/A][/CENTER] [/BODY] [/HTML]
\ No newline at end of file
[html]
[head]
[meta http-equiv="content-type" content="text/html;charset=utf-8"]
[meta name="AppleTitle" content="Noble Ape Help"]
[title]the Noble Ape Simulation Manual[/title]
[meta name="description" content="Main page of the Noble Ape Simulation documentation."]
[meta name="KEYWORDS" content="legal, started, noble ape, philosophic, file format, apescript"]
[meta name="ROBOTS" content="KEYWORDS"]
[meta http-equiv="Pragma" content="no-cache"]
[/head]
[body bgcolor="#ffffff"]
[FONT FACE="Arial,Geneva,Helvetica" SIZE=3]
[H1]the Noble Ape Simulation Manual[/H1]
$VER$
[P]
      [A HREF="legal.html"]Legal Notice[/A] - Noble Ape Open Source License
[BR]
      [A HREF="start.html"]Getting Started[/A] - overview of running the simulation
[BR]
      [A HREF="philosophic.html"]Noble Ape Philosophic[/A] - the ideas behind the Simulation
[BR]
      [A HREF="file.html"]File Format[/A] - how to use the Simulation saved files
[P]
      [B]ApeScript[/B]
[P]
            [A HREF="apescript_intro.html"]Introduction to ApeScript[/A] - the basics of the scripting language
[BR]
            [A HREF="apescript_sim.html"]Scripting the Simulation[/A] - variables and errors used in ApeScript
[BR]
            [A HREF="apescript_notes.html"]ApeScript Notes[/A] - examples of the practical use of ApeScript
[P]
      [B]Online[/B]
[P]
            [a href="http://www.nobleape.com/sim/"]Latest version[/A]
[BR]
            [a href="https://www.facebook.com/groups/nobleape/"]Facebook Group[/A]
[BR]
            [a href="http://www.cafepress.com/nobleape/"]CafePress Store[/A]
[BR]
            [a href="http://www.longfunk.com/"]Long Funk podcast[/A]
[P]
If you have comments, features, bugs or questions, please email them to;
[P]
      barbalet at gmail dot com
[P]
Please don't hesitate to [a href="http://www.nobleape.com/tom/"]get in contact[/A]!
[/body]
[/html]
[html] [head] [meta http-equiv="content-type" content="text/html;charset=utf-8"] [title]Legal Notice[/title] [meta name="description" content="Noble Ape Open Source License"] [meta name="KEYWORDS" content="legal, open source, license, 1996"] [meta name="ROBOTS" content="KEYWORDS"] [meta http-equiv="Pragma" content="no-cache"] [/head] [body bgcolor="#ffffff"] [FONT FACE="Arial,Geneva,Helvetica" SIZE=3] [CENTER][A HREF="index.html"]Contents[/A] - [A HREF="start.html"]Getting Started[/A][/CENTER] [HR] [H2]Noble Ape Open Source License[/H2] $COP$ All rights reserved. [P] Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: [P] The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. [P] THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. [P] This software is a continuing work of Tom Barbalet, begun on 13 June 1996. No apes or cats were harmed in the writing of this software. [HR] [CENTER][A HREF="index.html"]Contents[/A] - [A HREF="start.html"]Getting Started[/A][/CENTER] [/body] [/html]
\ No newline at end of file
This diff is collapsed.
[html] [title]Getting Started[/title] [body bgcolor="#ffffff"] [font FACE="Arial,Geneva,Helvetica" SIZE=3] [CENTER][a HREF="legal.html"]Legal Notice[/a] - [a HREF="index.html"]Contents[/a] - [A HREF="philosophic.html"]Noble Ape Philosophic[/A][/CENTER] [HR] [H2]Getting Started[/H2] When you run the Noble Ape Simulation, you will be presented with four windows. These windows show the main aspects of the Simulation. The Simulation creates a random environment for the Noble Apes (the red dots) to wander over. The Simulation shows the terrain the Noble Ape is moving over, the cognitive (brain) model of the Noble Ape and other information like the time and weather conditions. [P] [H2]Menus[/H2] The menus associated with controlling the Noble Ape Simulation have been progressively refined over the years. The current interface is as much driven by user mouse clicks on windows as it is by menus. The [I]File[/I] menu allows you to create new environments, open and save environments and open ApeScript files. The [I]Control[/I] menu allows you to pause the simulation, to hide and show windows, to cycle between selected apes and update the graphics only 15 times per second (through the [I]Timed[/I] menu item). You will see substantial speed improvements by setting the [i]Timed[/I] menu command or hiding the Brain and/or Terrain windows. [P] [CENTER][img SRC="img/map.gif"][/CENTER] [H2]Map[/H2] The map shows the environment from a top-down view. It enables the user to select a specific ape to view and control. This view is linked to the Terrain and Brain views by the selected ape. If the selected ape can see another ape, it is highlighted in bright red. [p] arrow keys - Move the ape around [p] option (Mac) / ctrl (Win) - up/down arrow - Change selected ape[br] option (Mac) / ctrl (Win) - right/left arrow - Turn selected ape [p] Clicking the mouse on an ape selects that ape. [p] Holding the option key (Mac) or the ctrl key (Win) down, and clicking the mouse on the map, moves the selected ape to the clicked location. [p] The weather information is show both as clouds and also rain (in particularly dense clouds). [H2]Terrain[/H2] The terrain gives the user a third-person-perspective of the selected ape's view of the environment. In this view, the ape selected ape can be seen in the centre of the window. The user has a 360 degree radial view of the surroundings of the ape (including other apes). [P] up/down arrow - Move ape forward/backward[br] right/left arrow - Turn ape left/right[br] option (Mac) / ctrl (Win) - up/down arrow - Change selected ape [p] Clicking the mouse in the terrain window moves the selected ape around. [p] [CENTER][img SRC="img/terrain.gif"][/CENTER] [B]Brain[/B] The brain rotates to show the 3D changes that occur in the structure of the ape's brain. The dots represent the large changes occurring in the ape's brain. The darker dots are those closer to the viewer, whilst the lighter dots are further from the viewer. This window also displays the brain cycles per second (BCPS). The brain can be rotated by clicking above and below the brain image. You will note that the ape's brain patterns change when it is asleep or awake. [P] Clicking the mouse and hold down option (Mac) / ctrl (Win) on the screen rotates the brain along the z-axis. [P] [B]Clock[/B] [p] The clock contains three pieces of information - the twelve hour time, the year clock (left small dial) and season clock (right small dial). Twenty-four hour time can be gauged through the weather information (which also shows day and night). [p] [B]Ape's Information[/B] [p] The terrain window also shows the selected Noble Ape's Information. From right to left, it shows the direction facing (pointing in the direction of movement on the Map Window), the Noble Ape's current energy and the Noble Ape's current speed. The small side markers (a good indication for the energy meter) show the rough maximum energy, the middle point and the hunger point for energy. The Ape will die with no energy (possibly caused by drowning). It is possible for the Simulation to run with no living apes. [P] It is possible for Apes to be born too. They will inherit genetics (shown as genetic bars in the window below the Noble Ape's energy). It is possible to track Ape families through their genetics. The second block of information below the direction facing and the Noble Ape's energy shows the Noble Ape's sex. Female is shown with a cross below the triangle and male with the arrow pointing to the right. [P] The Apes' communications can be viewed through the Map and Terrain windows as moving communications blocks. [p] [B]Weather[/B] [p] The weather is shown by an iconic representation in the top right corner. There are three basic weather conditions which can be applied to day or night - clear, cloudy or raining. The method of simulating the weather has changed in recent versions. The new method creates a weather system simulation also encoding the time of day in the output. [P]
[B]Console[/B]
[P]
There is a console command line that enables a greater interface into the simulation. The commands that drive this interface change periodically. These commands are updated automatically into the table below.
[P]
$CON$
[P]
In order to run the command line version of the Simulation open the Terminal application. It can be found in /Applications/Utilities
[P]
Open a Terminal window and type:
[P][FONT FACE="Courier, Courier New" SIZE=4]
   cd
[P][FONT FACE="Arial,Geneva,Helvetica" SIZE=3]
With a space after the cd and drag the Noble Ape application into the Terminal window. Press enter/return. Type:
[P][FONT FACE="Courier, Courier New" SIZE=4]
   cd Contents/MacOS/
[FONT FACE="Arial,Geneva,Helvetica" SIZE=3][P]
Press enter/return. Type:
[P][FONT FACE="Courier, Courier New" SIZE=4]
   ./NobleApe695 c
[FONT FACE="Arial,Geneva,Helvetica" SIZE=3][P]
Press enter/return. You are now running the Noble Ape Simulation through the command line. The commands in the table above provide all the commands available. The menu of the Simulation is also usable. There are YouTube videos periodically recorded on the command line version of the Simulation via [A HREF="http://www.youtube.com/barbalet/"]Tom Barbalet's YouTube channel[/A].
[P] For more information about the console implementation of the Noble Ape Simulation please contact [A HREF="http://www.nobleape.com/tom/"]Tom Barbalet[/A]. [HR] [CENTER][a HREF="legal.html"]Legal Notice[/a] - [a HREF="index.html"]Contents[/a] - [A HREF="philosophic.html"]Noble Ape Philosophic[/A][/CENTER] [/body] [/html]
\ No newline at end of file
This diff is collapsed.
<HTML><HEAD> <TITLE>Introduction to ApeScript</TITLE></HEAD><BODY bgcolor="#ffffff"><FONT FACE="Arial,Geneva,Helvetica" SIZE=3> <CENTER><A HREF="file.html">File Format</A> - <A HREF="index.html">Contents</A> - <A HREF="apescript_sim.html">Scripting the Simulation</A></CENTER><HR><H2>INTRODUCTION TO APESCRIPT</H2><P> ApeScript was developed with a number of requirements. These included;<P>&nbsp;&nbsp;&nbsp;(1)&nbsp;&nbsp;&nbsp;Simple language - easy to learn, easy to maintain<BR>&nbsp;&nbsp;&nbsp;(2)&nbsp;&nbsp;&nbsp;Stable memory footprint - no allocation/free issues<BR>&nbsp;&nbsp;&nbsp;(3)&nbsp;&nbsp;&nbsp;Minimal crashes - good error handling and abort<BR>&nbsp;&nbsp;&nbsp;(4)&nbsp;&nbsp;&nbsp;Small code - maintains the Simulation's small size<P> From these basic elements the ApeScript language was built on a C/C++/Java style syntax with a couple of minor differences. Anyone familiar with these languages should have no problem with ApeScript. Similarly, as ApeScript is extremely simple, a non-programmer should be able to pick up ApeScript too.<P> In addition, there are a series of <A HREF="apescript_notes.html">ApeScript examples and discussion notes to assist novice and advanced developers</A>.<P><B>ELEMENTS</B><P> Comments in ApeScript are denoted between /* and */.<P><CENTER><TABLE WIDTH=90%><TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"><FONT FACE="Courier, Courier New" SIZE=4>&nbsp;&nbsp;&nbsp;/* This is an example comment */<P>&nbsp;&nbsp;&nbsp;/*<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This is also a comment<BR>&nbsp;&nbsp;&nbsp;*/</TABLE></CENTER><P><FONT FACE="Arial,Geneva,Helvetica" SIZE=3> ApeScript has two basic types numbers and variables. The variables may be <A HREF="apescript_sim.html">pre-defined variables that come from the Simulation environment</A> but other variables can be created on the fly.<P> A variable can only be made up of letters and underscore (_). No numbers can be included in a variable name.<P> A variable is defined through use. If a variable is not set at the time it is defined it is assumed the variable equals zero. For example;<P><CENTER><TABLE WIDTH=90%><TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"><FONT FACE="Courier, Courier New" SIZE=4>&nbsp;&nbsp;&nbsp;this_is_a_test = what_is_the_value + 5;</TABLE></CENTER><P><FONT FACE="Arial,Geneva,Helvetica" SIZE=3> Would set this_is_a_test to 5 and if it was reused what_is_the_value to 0. Whilst this example is a created one, it is good to make distinct variable names to avoid any confusion with the <A HREF="apescript_sim.html">Simulation variables</A>. The numbers defined in ApeScript need to be whole integer numbers of the range from 0 to 65535. You can not define an ApeScript number as negative from the initial definition. However you can define a negative number through a subtraction. For example;<P><CENTER><TABLE WIDTH=90%><TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"><FONT FACE="Courier, Courier New" SIZE=4>&nbsp;&nbsp;&nbsp;negative_five = 0 - 5;</TABLE></CENTER><P><FONT FACE="Arial,Geneva,Helvetica" SIZE=3> Similarly you can create numbers larger than 65535 through addition or multiplication. With this method you can create numbers between the range of -4294967296 to 4294967295.<P><B>OPERATORS</B><P> In addition to numbers and variables, ApeScript allow the following mathematical and logical operators;<P><CENTER><TABLE WIDTH=90%><TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"><FONT FACE="Courier, Courier New" SIZE=4>&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;Subtract<BR>&nbsp;&nbsp;&nbsp;+&nbsp;&nbsp;&nbsp;Add<BR>&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;Multiply<BR>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;Divide<BR> &nbsp;&nbsp;&nbsp;%&nbsp;&nbsp;&nbsp;Modulus<BR> &nbsp;&nbsp;&nbsp;&&nbsp;&nbsp;&nbsp;Binary And<BR>&nbsp;&nbsp;&nbsp;^&nbsp;&nbsp;&nbsp;Binary Xor<BR>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;Binary Or<BR> &nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;Bit Shift Right<BR>&nbsp;&nbsp;&nbsp;<<&nbsp;&nbsp;Bit Shift Left<BR> &nbsp;&nbsp;&nbsp;>&nbsp;&nbsp;&nbsp;Greater Than<BR>&nbsp;&nbsp;&nbsp;<&nbsp;&nbsp;&nbsp;Less Than<BR> &nbsp;&nbsp;&nbsp;>=&nbsp;&nbsp;Greater Than or Equal To<BR>&nbsp;&nbsp;&nbsp;<=&nbsp;&nbsp;Less Than or Equal To<BR> &nbsp;&nbsp;&nbsp;==&nbsp;&nbsp;Logical Equal To<BR>&nbsp;&nbsp;&nbsp;!=&nbsp;&nbsp;Logical Not Equal To<BR>&nbsp;&nbsp;&nbsp;&&&nbsp;&nbsp;Logical And<BR>&nbsp;&nbsp;&nbsp;||&nbsp;&nbsp;Logical Or</TABLE></CENTER><P><FONT FACE="Arial,Geneva,Helvetica" SIZE=3> In order to maintain a small code-base for the interpreter only a single operation can be performed per line of code. Brackets can not be used with reference to operators. In C, a line of code may read;<P><CENTER><TABLE WIDTH=90%><TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"><FONT FACE="Courier, Courier New" SIZE=4>&nbsp;&nbsp;&nbsp;/* C example */<BR>&nbsp;&nbsp;&nbsp;number_value = ( number1 + number2 ) * 45;</TABLE></CENTER><P><FONT FACE="Arial,Geneva,Helvetica" SIZE=3> In ApeScript this would be written;<P><CENTER><TABLE WIDTH=90%><TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"><FONT FACE="Courier, Courier New" SIZE=4>&nbsp;&nbsp;&nbsp;number_value = number_one + number_two;<BR>&nbsp;&nbsp;&nbsp;number_value = number_value * 45;</TABLE></CENTER><P><FONT FACE="Arial,Geneva,Helvetica" SIZE=3><B>IF/WHILE</B><P> ApeScript has two additional operators, if and while. This provides conditional and loops respectively. If you require a standard ''for'' loop from 0 to 9, you can write it in ApeScript as follows;<P><CENTER><TABLE WIDTH=90%><TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"><FONT FACE="Courier, Courier New" SIZE=4>&nbsp;&nbsp;&nbsp;while ( loop_condition < 10 ) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loop_condition = loop_condition + 1;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;}</TABLE></CENTER><P><FONT FACE="Arial,Geneva,Helvetica" SIZE=3> Similarly, if you want to execute a section of ApeScript in a particular condition, you can use an if-statement;<P><CENTER><TABLE WIDTH=90%><TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"><FONT FACE="Courier, Courier New" SIZE=4>&nbsp;&nbsp;&nbsp;if ( particular_condition ) {<BR>&nbsp;&nbsp;&nbsp;}</TABLE></CENTER><P><FONT FACE="Arial,Geneva,Helvetica" SIZE=3> While loops and if-statements can be layered. For example;<P><CENTER><TABLE WIDTH=90%><TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"><FONT FACE="Courier, Courier New" SIZE=4>&nbsp;&nbsp;&nbsp;while ( loop_condition < 230 ) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( loop_condition < 150 ) {&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loop_condition = loop_condition + 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loop_condition = loop_condition * 3;<BR>&nbsp;&nbsp;&nbsp;}</TABLE></CENTER><FONT FACE="Arial,Geneva,Helvetica" SIZE=3><P><B>FUNCTIONS</B><P> Functions are central to ApeScript. The being function is similar to main in C. Functions are special variables that are saved are in execution code memory allocations. They can be treated as variables. The code within the functions are not executed until they are run. Thus functions can be defined out of order provided the being function is placed last.<P><CENTER><TABLE WIDTH=90%><TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"><FONT FACE="Courier, Courier New" SIZE=4>&nbsp;&nbsp;&nbsp;function ( physically_first ) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test_value = 3;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;run ( called_first );<BR>&nbsp;&nbsp;&nbsp;}<P>&nbsp;&nbsp;&nbsp;function ( called_first ) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test_value = test_value + 4;<BR>&nbsp;&nbsp;&nbsp;}<P>&nbsp;&nbsp;&nbsp;function ( being ) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test_value = 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;run ( called_first );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;run_function = physically_first;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( test_value > 7 ) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;run_function = called_first;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;run ( run_function );<BR>&nbsp;&nbsp;&nbsp;}</TABLE></CENTER><FONT FACE="Arial,Geneva,Helvetica" SIZE=3><P><B>ERRORS</B><P> For simplicity error reports are tracked per version release. If ApeScript reports an error, check it against <A HREF="apescript_sim.html">this list</A> for possible causes/fixes.<P><B>LIMITS</B><P> With both variable allocation and while/if nesting (i.e. the number of layers of { }) there are limits for both. Developing actual ApeScript code for practical solutions, you should never reach these limits however if you have found a limit for your ApeScript code, please get in contact;<CENTER><TABLE WIDTH=90%><TD ALIGN=LEFT VALIGN=TOP BGCOLOR="#eeeeee"><FONT FACE="Courier, Courier New" SIZE=4>&nbsp;&nbsp;&nbsp;tom at nobleape dot com</TABLE></CENTER><P><FONT FACE="Arial,Geneva,Helvetica" SIZE=3> As these limits can be extended for actual use cases.<P><B>MAILING LIST</B><P> The Noble Ape developer mailing list can provide feedback to your ApeScript questions. If you are starting out with ApeScript and you want a community, subscribe to the mailing list;<P>&nbsp;&nbsp;&nbsp;<A HREF="http://www.nobleape.com/mailman/listinfo/developer_nobleape.com">http://www.nobleape.com/mailman/listinfo/developer_nobleape.com</A><P> In addition to the active contributions to the mailing list, the link above provides an archive of the developer mailing list too.<HR><CENTER><A HREF="file.html">File Format</A> - <A HREF="index.html">Contents</A> - <A HREF="apescript_sim.html">Scripting the Simulation</A></CENTER></BODY></HTML>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<meta name="AppleTitle" content="Noble Ape Help">
<title>the Noble Ape Simulation Manual</title>
<meta name="description" content="Main page of the Noble Ape Simulation documentation.">
<meta name="KEYWORDS" content="legal, started, noble ape, philosophic, file format, apescript">
<meta name="ROBOTS" content="KEYWORDS">
<meta http-equiv="Pragma" content="no-cache">
</head>
<body bgcolor="#ffffff">
<FONT FACE="Arial,Geneva,Helvetica" SIZE=3>
<H1>the Noble Ape Simulation Manual</H1>
Noble Ape 0.699 Mar 29 2018
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="legal.html">Legal Notice</A> - Noble Ape Open Source License
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="start.html">Getting Started</A> - overview of running the simulation
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="philosophic.html">Noble Ape Philosophic</A> - the ideas behind the Simulation
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="file.html">File Format</A> - how to use the Simulation saved files
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>ApeScript</B>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="apescript_intro.html">Introduction to ApeScript</A> - the basics of the scripting language
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="apescript_sim.html">Scripting the Simulation</A> - variables and errors used in ApeScript
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="apescript_notes.html">ApeScript Notes</A> - examples of the practical use of ApeScript
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Online</B>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.nobleape.com/sim/">Latest version</A>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://www.facebook.com/groups/nobleape/">Facebook Group</A>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.cafepress.com/nobleape/">CafePress Store</A>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.longfunk.com/">Long Funk podcast</A>
<P>
If you have comments, features, bugs or questions, please email them to;
<P>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;barbalet at gmail dot com
<P>
Please don't hesitate to <a href="http://www.nobleape.com/tom/">get in contact</A>!
</body>
</html>
<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><title>Legal Notice</title><meta name="description" content="Noble Ape Open Source License"><meta name="KEYWORDS" content="legal, open source, license, 1996"><meta name="ROBOTS" content="KEYWORDS"><meta http-equiv="Pragma" content="no-cache"></head> <body bgcolor="#ffffff"><FONT FACE="Arial,Geneva,Helvetica" SIZE=3> <CENTER><A HREF="index.html">Contents</A> - <A HREF="start.html">Getting Started</A></CENTER><HR> <H2>Noble Ape Open Source License</H2> Copyright Tom Barbalet, 1996-2018. All rights reserved.<P> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:<P> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.<P> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.<P> This software is a continuing work of Tom Barbalet, begun on 13 June 1996. No apes or cats were harmed in the writing of this software.<HR><CENTER><A HREF="index.html">Contents</A> - <A HREF="start.html">Getting Started</A></CENTER></body></html>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment