Six years apart -- in December 1998 and in December 2004 --
Dr. Paul Frenger of the Association for Computing Machinery
(ACM) has written the following papers on Mind.Forth AI.
The prime directive of the Mind.Forth proliferation principle is to propagate and
spread all possible varieties and strains of the primitive artificial intelligence.
Therefore anyone is free to sell on e-Bay or elsewhere either archived versions
of public-domain Mind.Forth or special versions with special features such as
tailor-made advertisements written to order; special knowledge-bases (KB)
on popular topics or as ontologized for the special needs of potential customers;
or versions showing new creativity with additions such as robot
motor control.
lim --> ***
"The stars are the limit."
Amiga Mind.Forth in (Mountain View Press) MVP-Forth (Screen # 18 below)
was first uploaded to the Web on Fri.6.MAR.1998 and frequently updated
(27+ times) until July of 1999, when a switch was made from Amiga code
to a Windows 98 platform with the use of F-PC (Forth for Personal Computers).
Before 2001, Mind.Forth was still coded first on the Amiga, then in F-PC.
In 2001, the current Win32Forth was adopted with minimal tweaking from F-PC.
One more switch to a 64-bit Forth on a 64-bit platform would be nice.
After the (0-89) ninety-screen 28may1998 Amiga Mind.Forth of this archive,
the program was thoroughly reorganized and reduced down to (0-44) 45 screens.
Just by chance, Dr. Frenger's December 1998 ACM article happened to describe
the final version of a very broadly stubbed-in but very shallowly coded AI.
Based on the "980528atm" version archived below, Dr. Frenger was able to write
a thorough analysis of what Mind.Forth was intended to be -- just before the intention-only
stubs were yanked. In between the two articles six years apart by Dr. Frenger, many stubs
were filled back in with functional Forth code, so that Dr. Frenger's comments were
presciently predictive of how Mind.Forth grew in ways not pre-announced after 28may1998.
On page 27 of Dr. Frenger's ACM 1998 article, he mentions the plan in Screen 69
below for someone to "claim the distinction of the longest running robot brain."
Such competitive AI mind culture was not easily possible until 5 March 2005, when
TIME&DATE code was inserted and announced in the
Win32Forth Yahoo group.
The archive dates from the final decade of the previous millennium,
that is, from the first full decade of the World Wide Web. Over time,
websites uninterruptedly in existence since the 1990's may attain a
special status as curiosities, as dinosaurs of the Information Age,
or as historical artefacts fortuitously belonging to that one special
decade before everything changed forever (because information escaped
from hardcopy page-bondage to 'Net-wide Web freedom -- at risk of loss!).
Although this archive, having peregrinated from website to website since
its initial uploading to the Web on Thurs.28.MAY.1998, has not continuously
been at its current Web address or in its current form uninterruptedly since
1998, the source code is untouched and unchanged as it was on 28 May 1998.
Screen # 0 ram:robot
--------------------------------
0 \ Mind.forth Source Code -- thurs.28.may.1998 980528atm
1 \ Jump to the Main Program Loop .
2 \ Be advised of the Prosperity Engine.
3 \ Consider The Singularity .
4 \ Philosophy of Mind.
5 \ Consciousness Studies.
6 \ Mind On CD-ROM (or DVD)
7 \ Implications for Machine Translation .
8 \ Port Mind.forth to other languages and other hardware.
9 \ Massively Parallel Processing (MPP) .
10 \ Forth Resources .
11 \ Linguistics Resources.
12 \ Neuroscience Resources.
13 \ Robotics Resources.
14 \ src1
15 \ src2
--------------------------------
Screen # 1 ram:robot
--------------------------------
0 \ LOAD screens 2 thru 89 for a total of 90 screens. 980528atm
1 : RELEASE# ." 28mayA4th" ; ( 2Brodie "Thinking Forth" p. 122)
2 DECIMAL
3
4 CR ." Please wait; loading screens: " CR
5 2 89 THRU
6
7 CR ." Preliminary usage: Test Mind.forth by entering a simple"
8 CR ." three-word sentence such as, Robots make robots [RETURN]."
9
10
11 CR ." To run Mind.forth, please enter: MIND [RETURN]. "
12
13
14
15
--------------------------------
Screen # 2 ram:robot
--------------------------------
0 \ Apportionment of Mind.forth Screens. 980505atm
1 \ LOAD VARIABLES ARRAY UPSET-(audition) AUDITION-(sensorium)
2 \ STRING-EFFECT- COMPARATOR-(s.t.m.) SHORTTERMMEM-(sensorium)
3 \ AUDIODAMP- ATTACH-(newc. + oldc.) INSTANTIATE-(newc. + oldc.)
4 \ HOLODYNE-(oldconcept) OLDCONCEPT-(comparator)
5 \ NEWCONCEPT-(retro) RETRO-(sensorium) SENSORIUM-(reentry+mind)
6 \ INSTINCT-(emotion) EMOTION-(mind)
7 \ SPREADACT-(associative) ASSOCIATIVE-(language?)
8 \ DEEP-STRUCTURE-(subject) REENTRY-(nounphrase + predicate)
9 \ TRANSFERACT-(nounp+pred) FIBERDAMP-(nounphrase + predicate)
10 \ IDEADAMP-(nounphrase) NOUNPHRASE-(subject + predicate)
11 \ SUBJECT-(syntax) PREDICATE-(syntax)
12 \ SYNTAX-(language) LANGUAGE-(think)
13 \ EXAMINE-(think) THINK-(mind)
14 \ LOCOMOTION-(motorium) MOTORIUM-(volition) VOLITION-(mind)
15 \ AUDPANEL- MINDCORE + BOOTSTRAP DREAM-(sleep) SLEEP- MIND
--------------------------------
Screen # 3 ram:robot
--------------------------------
0 \ variables starting with A B C 980526atm
1 variable a \ a(ctivation) flag in SHORTTERMMEM
2 variable alert \ as alert-WHILE flag in Main Program Loop
3 -1 alert ! \ 13apr1998: Start alert as -1 true.
4 variable audmem \ 12apr1998: used in UPSET.
5
6 variable b 0 b ! \ b(eginning)? flag set in SENSORIUM;
7 \ used in COMPARATOR
8 variable blankt \ RETRO: time immediately prior to an input
9 0 blankt ! \ 5may1998: Initialize blankt.
10 variable bo 0 bo ! \ 23may1998: b-override for COMPARATOR
11 variable c \ c(ontinuation)? flag in SHORTTERMMEM
12 variable cand \ candidate, as in 26nov1994 Mind.rexx
13 variable cata \ cata(mnesis) SENSORIUM, S.T.M. for reentry
14 variable control \ a control flag, e.g., "R" for reentry
15
--------------------------------
Screen # 4 ram:robot
--------------------------------
0 \ variables starting with D E F G 980526atm
1 variable d \ d(eep) for inbound association to the mindcore
2 1 d ! \ 26may1998: init d to chase away a bug
3 variable datum \ 12apr1998: for use during THINK.
4 variable dex \ COMPARATOR; with move-tag "mt"
5 variable earshut \ exit flag for SENSORIUM: until earshut
6
7 variable eureka \ 27apr1998 STRING-EFFECT: finding a tag
8
9 variable favorite \ COMPARATOR; "favorite" candidate
10
11
12
13 variable g \ for grammar category ruled by syntax
14 1 g ! \ 26may1998: init g to chase away a bug
15
--------------------------------
Screen # 5 ram:robot
--------------------------------
0 \ variables starting with H I J K L and some M 980527atm
1
2
3 variable holdf \ COMPARATOR; for hold-phoneme (?)
4
5
6
7 variable mekos \ 27MAY1998: word "length" in RETRO and
8 0 mekos ! \ in SENSORIUM, for new concepts.
9
10
11
12
13
14
15
--------------------------------
Screen # 6 ram:robot
--------------------------------
0 \ variables starting with (some M) N O 980527atm
1 variable mt 0 mt ! \ 23may1998: move-tag "mt" in COMPARATOR
2 \ gets its value from a discovered "ut" ultimate-tag.
3 \ If SPACE is entered, RETRO stores the available "mt" as the
4 \ ultimate-tag of a known word now being stored.
5 variable mu \ for use in RETRO
6
7 variable n 1 n ! \ basic associative tag n(umber) of a concept
8 \ n is used in NEWCONCEPT
9 variable oldtbase \ 12apr1998: Used in EXAMINE.
10 variable onset \ COMPARATOR; with blankt
11 variable onsettime \ RETRO; COMPARATOR; with "tc"
12 1 onsettime ! \ 27may1998: Init onsettime for RETRO.
13 variable ov 1 ov ! \ onset-vector used in SENSORIUM
14 variable ovnew \ new onset-vector for reentry
15
--------------------------------
Screen # 7 ram:robot
--------------------------------
0 \ variables starting with P Q R S 980526atm
1 variable p \ p(honeme) in SHORTTERMMEM
2
3
4 variable ph \ ph(oneme) for use in COMPARATOR
5 variable phoneme \ for use in STRING-EFFECT
6 variable pretbase \ 26apr1998 EXAMINE: for longer review.
7 variable r \ for recall-vector to an auditory engram
8 0 r ! \ 26may1998: init r to chase away a bug.
9 variable s \ SHORTTERMMEM s(ource) flag: -internal +external
10
11
12 variable sonus \ COMPARATOR: sonus, "sound" (Latin)
13
14 variable stoprace \ a flag to "stop" the "race" of loops.
15
--------------------------------
Screen # 8 ram:robot
--------------------------------
0 \ variables starting with T U V W X Y Z 980526atm
1 variable t 0 t ! \ both time and a memory index
2 \ "t" is incremented in MIND; SENSORIUM; ...?
3 variable tbasex \ base time for sake of EXAMINE
4 variable tc 1 tc ! \ comparator-time? with blankt and tdavno
5 variable tdavno \ COMPARATOR: t(ime) "long ago" (Russian)
6 variable tse \ "time (in) STRING-EFFECT"
7 variable tult \ RETRO: t(ime-)ult(imate) just past
8 variable tdec \ 26apr1998: t.decrement for COMPARATOR
9
10 variable u 0 u ! \ u(ltimate) tag in SHORTTERMMEM; RETRO.
11 variable ut 0 ut ! \ COMPARATOR; "ultimate-tag"
12 variable v \ for momentary v(alence) of a concept
13 0 v ! \ 26may1998: init v to chase away a bug.
14 variable x \ for "transiting" through the "lexicon{}"
15 1 x ! \ 26may1998: init x to chase away a bug.
--------------------------------
Screen # 9 ram:robot
--------------------------------
0 \ variables in the form of callable definitions 980412atm
1
2
3 : CELL+ 2+ ;
4
5 : CELLS 2* ;
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 10 ram:robot
--------------------------------
0 \ array for kioku{} memory storage 980427atm
1 : ARRAY ( #rows #columns --)
2 CREATE \ 1Brodie p. 207; returns address of new name.
3 OVER ( a b -- a b a ) ( #r #c -- #r #c #r )
4 \ Make copy of 2nd item (#rows) and push it on top.
5 , \ Store number of rows from stack to the array.
6 * CELLS ( Feed product of columns X rows to ALLOT )
7 ALLOT ( Reserve given quantity of cells for array. )
8 DOES> ( member; row col -- a-addr ) \ e.g., 34 0 kioku{}
9 \ row col pfa ( contents of stack)
10 DUP @ \ row col pfa #rows ( duplicates top stack item )
11 ROT * \ row pfa col-index ( changes top 2 to a product )
12 ROT + \ pfa index ( adds the product to the row# )
13 1 + \ because first cell has #rows.
14 CELLS \ from number of items to number of bytes in offset.
15 + ; \ ideas from jethomas@ix.netcom.com on mon16mar1998
--------------------------------
Screen # 11 ram:robot
--------------------------------
0 \ creation and blanking of array kioku{} 980412atm
1
2
3 999 6 ARRAY kioku{}
4
5
6 : BLANKKIOKU
7 999 0 DO 0 I 0 kioku{} ! LOOP
8 999 0 DO 0 I 1 kioku{} ! LOOP
9 999 0 DO 0 I 2 kioku{} ! LOOP
10 999 0 DO 0 I 3 kioku{} ! LOOP
11 999 0 DO 0 I 4 kioku{} ! LOOP
12 999 0 DO 0 I 5 kioku{} ! LOOP
13 ; \ BLANKKIOKU will be used at the start of each run.
14 \ It initializes all flags of kioku{} at all time-points.
15 \ It is called from the Main Program Loop.
--------------------------------
Screen # 12 ram:robot
--------------------------------
0 \ Machine Translation 980428atm
1 \ Because Mind.forth has separate arrays:
2 \ monad{} for the deep concepts of the mindcore, and
3 \ lexicon{} for the lexical concepts controlled by syntax,
4 \ a thought being generated in the "monad{}" mindcore is not
5 \ expressed in a particular natural language until the thought
6 \ rises to the surface of the mind by percolating through the
7 \ Chomskyan grammar structures of the particular human language
8 \ in which the robot mind is currently thinking or communicating
9 \ its ideas.
10
11
12
13
14
15
--------------------------------
Screen # 13 ram:robot
--------------------------------
0 \ shallow concept array "lexicon{}" 980428atm
1
2
3 999 6 ARRAY lexicon{}
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 14 ram:robot
--------------------------------
0 \ Elements of the array "lexicon{}" 980428atm
1 \ The "fiber.n" array of the 26nov1994 Mind.rexx program becomes
2 \ the lexical array "lexicon{}" in Mind.forth. "lexicon{}" does
3 \ not actually contain English words, but rather controls the
4 \ associative tags which will activate words stored in auditory
5 \ memory. The array "lexicon{}" uses the following flags:
6 \ "n" for the number of the concept;
7 \ "v" for the momentary valence of the concept;
8 \ "g" for the grammar category ruled by syntax;
9 \ "d" or deep, for an inbound association to the mindcore;
10 \ "x" for exiting association from the mindcore;
11 \ "r" for recall vector to an auditory engram.
12
13
14
15
--------------------------------
Screen # 15 ram:robot
--------------------------------
0 \ OLFACTION stub routine 980505atm
1 \ This area of Mind.forth (or of Mind.xyz) is reserved for
2 \ roboticists who have access to the "sniffing" machines used
3 \ in such industries as wine and cheese-making.
4
5 \ Since the (expensive and very high-tech) hardware already
6 \ exists for the machine detection and identification of smells,
7 \ any robot AI must make allowances for the incorporation of a
8 \ sense of smell (OLFACTION) into the machine intelligence.
9
10 \ The Wall Street Journal thurs.30.apr.1998 p. B8 reports that
11 \ Cyrano Sciences Inc. of Pasadena CA USA plans to develop four
12 \ chips each having 8 vapor sensors for a total of 32 sensors.
13 \ Other artificial nose companies are Alpha M.O.S. SA of France;
14 \ Neotronics Scientific Ltd. and AromaScan PLC of England.
15 \ OLFACTION will return to the SENSORIUM function.
--------------------------------
Screen # 16 ram:robot
--------------------------------
0 \ VISION 980420atm
1
2 \ The public-domain AI program Mind.forth for amateur robotics
3 \ concentrates on a sense of virtual AUDITION for communication
4 \ with humans, and the cyborg AI is not yet capable of VISION.
5
6 \ This area of Mind.forth is reserved for inserting the code and
7 \ functionality of anyone who can implement the sense of VISION
8 \ in a robot AI such as the Forthmind.
9
10 \ A visual memory channel designed to receive and record images
11 \ as engrams of VISION must be carefully designed in advance so
12 \ as to interface properly with the associative tag requirements
13 \ of the multisensory mindgrid which lies at the core of the AI.
14
15 \ VISION will return to the SENSORIUM function.
--------------------------------
Screen # 17 ram:robot
--------------------------------
0 \ Vinge: The Singularity 980528atm
1
2
3 \ Visit the Singular Vernor Vinge Page:
4 \ Vinge
5 \ and follow links to read Vernor Vinge's article published in
6 \ the Winter 1993 Whole Earth Review on The Singularity.
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 18 ram:robot
--------------------------------
0 \ Forth Resources 980528atm
1
2 \ Camel Forth
3
4
5 \ Misty Beach Forth
6 \ MVP Forth
7 \ Pilot Forth
8 \ P4th
9 \ is a version of Forth for the Palm Pilot from Neal Bridges.
10
11 \ Jack Woehr
12
13
14
15
--------------------------------
Screen # 19 ram:robot
--------------------------------
0 \ UPSET subroutine 980504atm
1 : UPSET \ FORTH Fundamentals, V. 1, p. 156, by C. Kevin McCabe
2 audmem @ DUP \ 1Brodie p. 53 DUP ( n -- n n )
3 96 > \ ASCII 97 is a; 98 is b; i.e., lowercase.
4 IF \ If item is higher than ASCII uppercase,
5 DUP \ make a copy of the non-uppercase item.
6 123 < \ Small "z" = ASCII 122.
7 IF \ If item therefore is ASCII 97 thru 122,
8 32 - \ subtract 32 to convert to uppercase.
9 ENDIF \ End the inner conditional test.
10
11 ENDIF \ End the outer conditional test.
12 DUP EMIT
13 audmem !
14 \ Take the item from the stack and return it as "audmem".
15 ; \ UPSET returns to AUDITION.
--------------------------------
Screen # 20 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 21 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 22 ram:robot
--------------------------------
0 \ AUDITION subroutine 980526atm
1 : AUDITION CR ." AUDITION; ENTER: "
2 ?TERMINAL -1 = IF
3
4
5 KEY datum ! ( discard the pre-existing keypress) THEN
6 KEY audmem ! ( must be outside the above IF-test)
7
8
9
10
11 ( ) UPSET ( insist on uppercase input)
12
13
14 CR
15 ; \ AUDITION returns to SENSORIUM
--------------------------------
Screen # 23 ram:robot
--------------------------------
0 \ Infra-red Palm Pilot: Avenue of Communication? 980528atm
1
2 \ The Palm Pilot
3 \ with its new (April 1998) infra-red link may be a suitable
4 \ device for verbal communication with a mobile AI robot.
5
6 \ Pilot Forth
7 \ P4th
8 \ is a version of Forth for the Palm Pilot from Neal Bridges.
9
10
11
12
13
14
15
--------------------------------
Screen # 24 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 25 ram:robot
--------------------------------
0 \ ATTACH subroutine 980504atm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 \ ATTACH returns to NEWCONCEPT or OLDCONCEPT.
--------------------------------
Screen # 26 ram:robot
--------------------------------
0 \ 980504atm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 27 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 28 ram:robot
--------------------------------
0 \ STRING-EFFECT 980527atm
1 : STRING-EFFECT \ increases a(ctivation) of next-in-line char
2
3 ph @ phoneme ! \ "cand" became "ph" in COMPARATOR
4 tdec @ 1+ tse ! \ tse = "time (in) string-effect"
5
6 tse @ 1 kioku{} @ 8 + a ! ( get a; increase it by 8)
7 a @ tse @ 1 kioku{} ! \ Store the higher a(ctivation).
8 CR ." STRING-EFFECT: Increasing a(ctivation) of "
9 ph @ EMIT ." by 8 at time = " tse @ .
10
11
12
13
14
15 0 a ! ; \ return to COMPARATOR.
--------------------------------
Screen # 29 ram:robot
--------------------------------
0 \ STRING-EFFECT programming notes 980414atm
1 \ tdec is a "dec(remental) t(ime)" formerly (pre-4may1998) from
2 \ COMPARATOR but subsequently from [ needs a location ].
3
4 \ tdec shows the decrementing of time "t" while the COMPARATOR
5 \ DO-loop moves backwards through time in search of matches
6 \ between the incoming character and all recently stored
7 \ characters. Just before the COMPARATOR DO-loop starts, tdec
8 \ must get its starting value from the "blankt" of RETRO.
9
10
11
12
13
14
15
--------------------------------
Screen # 30 ram:robot
--------------------------------
0 \ Ideas for primitive concepts in the Mind Core. 980528atm
1 \ 28may1998: Two screens below, there is the start of a list
2 \ of "core ideas" to be provided as a kind of innate ontology
3 \ in the "Mind Core" of the robot AI.
4 \ Having a built-in ontology of concepts does not reflect a
5 \ belief (a la Jerry Fodor) that concepts are pre-existent in
6 \ the human mind at birth. Rather, the best use of Mind.forth
7 \ as a demonstration AI will result if the robot brain is primed
8 \ with ready-to-go concepts as a basis for the operation of the
9 \ Chomskyan linguistic structures at the core of the robot mind,
10 \ and as a basis for the interaction of a robot with its world.
11 \ Any person implementing or porting Mind.forth is free to
12 \ tinker with the set of Mind Core concepts. Please keep in
13 \ mind that, after a reserve of, say, 64 or even 1,024 memory
14 \ elements to hold innate core concepts, the assignment of new
15 \ concepts must start with, say, "n = 65" or "n = 1025".
--------------------------------
Screen # 31 ram:robot
--------------------------------
0 \ INSTANTIATE subroutine 980504atm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 \ INSTANTIATE returns to NEWCONCEPT or OLDCONCEPT.
--------------------------------
Screen # 32 ram:robot
--------------------------------
0 \ temporary list of robot "Mind Core" concepts. 980528atm
1 \ [ self ] self Andru
2 \ we
3 \ [ action--be ] be exist live die seem
4 \ am
5 \ [ action--think/will ] think know remember say
6 \ want prefer like dislike dream
7 \ [ action--do ] do feel see taste touch smell hear
8 \ go stop
9 \ [ person/thing ] other person you he she it they
10 \ something what wheel block robot human who
11 \ [ space/time ] space where here left right
12 \ time when now never always past future
13 \ [ logic ] if not yes no therefore
14 \ number one two both three big small some all
15 \ [ idea ] idea why how
--------------------------------
Screen # 33 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 34 ram:robot
--------------------------------
0 \ AUDIODAMP subroutine 980427atm
1 : AUDIODAMP
2
3 999 0 DO 0 I 1 kioku{} !
4
5 LOOP ;
6
7
8
9
10
11
12
13
14
15 \ 27apr1998: AUDIODAMP returns to SENSORIUM.
--------------------------------
Screen # 35 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 36 ram:robot
--------------------------------
0 \ Massive Parallelism 980528atm
1 \ 28may1998: As a demo AI, Mind.forth shows the information
2 \ flow and the cognitive architecture of a phenomenon which
3 \ must really be done with massively parallel processing (MPP).
4 \ However, it may be possible to begin parallelizing the
5 \ input of words to the auditory memory channel on a piecemeal
6 \ basis by dividing up the mental lifespan of the robot AI into
7 \ "epochs" or periods, each contained within the memory array
8 \ [ "kioku{}" in Mind.forth ] of an individual computer linked
9 \ with other computers in a small network or a "farm" of CPUs.
10 \ Although the conceptual Mind Core should not be broken up
11 \ in the same fashion, it only needs to receive mssages of
12 \ recognition of verbal input passing through the stretches of
13 \ "episodic memory" comprising a life span. Therefore a form
14 \ of "creeping" parallelization may be possible for AI robots
15 \ even before truly massive parallelism becomes available.
--------------------------------
Screen # 37 ram:robot
--------------------------------
0 \ RANDOM subroutine 980528atm
1
2 \ 28MAY1998: Here is a stub for making random choices,
3 \ perhaps by monitoring the keystrokes of the human user
4 \ to generate strings of random outcomes in case the Robot AI
5 \ needs to make some random choices for heuristic purposes.
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 38 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 39 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 40 ram:robot
--------------------------------
0 \ NEWCONCEPT subroutine 980527atm
1 : NEWCONCEPT
2 CR ." NEWCONCEPT: n & r = " n @ . ." " r @ .
3 t @ n @ 0 lexicon{} ! \ Store t(ime) of new concept.
4 v @ n @ 1 lexicon{} ! \ Store the v(alence) level.
5 g @ n @ 2 lexicon{} ! \ Store the g(rammar) category.
6 d @ n @ 3 lexicon{} ! \ Store the mindcore d(eep) tag.
7 x @ n @ 4 lexicon{} ! \ Core (e)x(iting) association.
8 r @ n @ 5 lexicon{} ! \ r(ecall) vector into audition.
9 CR ." NEWCONCEPT: Storing concept #" n @ .
10 ." with onset-tag " r @ . ." leading to engram: "
11 r @ 0 kioku{} @ EMIT r @ 1+ 0 kioku{} @ EMIT
12 r @ 2+ 0 kioku{} @ EMIT ." ..."
13 0 r ! ( reset)
14 n @ 1+ n ! ( NEWCONCEPT is the proper place to increment n.)
15 ; \ NEWCONCEPT returns to RETRO.
--------------------------------
Screen # 41 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 42 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 43 ram:robot
--------------------------------
0 \ HOLODYNE subroutine 980412atm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 \ HOLODYNE returns to OLDCONCEPT.
--------------------------------
Screen # 44 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 45 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 46 ram:robot
--------------------------------
0 \ OLDCONCEPT subroutine 980525atm
1 : OLDCONCEPT
2
3 CR ." OLDCONCEPT: COMPARATOR has recognized a word "
4 ." for concept #" mt @ .
5
6 CR ." OLDCONCEPT: Concept # " mt @ . ." is the word "
7
8 mt @ 5 lexicon{} @ datum ! ( get the onset time )
9 datum @ 0 kioku{} @ EMIT datum @ 1+ datum !
10 datum @ 0 kioku{} @ EMIT datum @ 1+ datum !
11 datum @ 0 kioku{} @ EMIT datum @ 1+ datum !
12 datum @ 0 kioku{} @ EMIT 0 datum ! ( reset)
13 ;
14
15 \ 27apr1998: OLDCONCEPT now returns to COMPARATOR
--------------------------------
Screen # 47 ram:robot
--------------------------------
0 \ OLDCONCEPT programming considerations. 980523atm
1 \ 23may1998: Although OLDCONCEPT is still only a stub while we
2 \ try to perfect the COMPARATOR mechanism, today we establish a
3 \ b-override variable "bo" for use in the COMPARATOR, where we
4 \ want Mind.forth (or Mind.xyz in any programming language) to
5 \ be able to recognize multiple subwords (e.g., sub + word + s)
6 \ within a compound word. First we will tackle actual subwords
7 \ before we address inflectional endings such as "s" or "-ing."
8 \ If necessary, we can simply test for all known inflectional
9 \ endings within a particular language, or we can remain true
10 \ to the theory (q.v. as linked to from the Mentifex website)
11 \ and create an "inflection cable" both to recognize and to
12 \ activate inflectional endings stored within auditory memory.
13
14
15
--------------------------------
Screen # 48 ram:robot
--------------------------------
0 \ COMPARATOR rationale and concerns 980505atm
1 \ 05may1998: In the early stages of the Mind.forth programming,
2 \ the COMPARATOR is the "conditio sine qua non" for an AI robot.
3
4 \ The "spreading-activation" algorithm of the COMPARATOR is one
5 \ of hopefully several original contributions to general AI from
6 \ Project Mentifex.
7
8 \ AI enthusiast programmers in other languages are invited to
9 \ re-implement the Mind.forth COMPARATOR in their own language
10 \ as the first step in porting the entire Mind.forth AI program.
11
12 \ The Mind.forth COMPARATOR is more powerful than the original
13 \ 26nov1994 Mind.rexx comparator, because the Forth version
14 \ recognizes not only whole words but parts of compound words,
15 \ and without the Mind.rexx mistake of concatenating strings.
--------------------------------
Screen # 49 ram:robot
--------------------------------
0 \ COMPARATOR subroutine 980528atm
1 : COMPARATOR ( See the next Screen for detailed explanation.)
2 0 mt ! 0 tdavno ! blankt @ tc ! tc @ tdec ! tc @ tse !
3 ( to) tdavno @ ( from) tc @ DO I 0 kioku{} @ ph !
4 ph @ cand @ = IF ( match) I 1 kioku{} @ a ! ( fetch "a")
5 I 2 kioku{} @ 1 = IF 8 a +! THEN
6 a @ 0 > IF
7 I 4 kioku{} @ ut !
8 ut @ 0 > IF ut @ mt !
9 4 ut @ 1 lexicon{} ! ( increase valence;) 0 ut !
10 ELSE 0 mt !
11 ENDIF
12 ( ) STRING-EFFECT ( )
13 ENDIF 0 a !
14 ENDIF tse @ 1 + tse ! tdec @ 1- tdec !
15 -1 +LOOP ; \ COMPARATOR returns to SHORTTERMMEM
--------------------------------
Screen # 50 ram:robot
--------------------------------
0 \ COMPARATOR programming notes. 980528atm
1 \ IF stored "ph(oneme)" = incoming "cand(idate)"...
2 \ fetch "a(ctivation)" level "a" of "ph(oneme)";
3 \ IF "b" flag of "ph" = 1 (true), add 8 to "a"...
4 \ THEN (ENDIF) (in line 5 in COMPARATOR).
5 \ IF "a" is greater than zero (even if just set!)...
6 \ fetch ultimate-tag "ut" of "ph(oneme)";
7 \ IF "ut" is greater than zero (i.e., if exists)...
8 \ transfer value of "ut" to move-tag "mt";
9 \ add a valence of 4 to concept # "ut" in "lexicon{}";
10 \ reset "ut" variable back to zero;
11 \ ELSE store zero ("0") in move-tag "mt";
12 \ ENDIF (from line 8 in COMPARATOR);
13 \ call STRING-EFFECT function (to pass activation down);
14 \ ENDIF (from line 6 in COMPARATOR).
15 \ ENDIF (from line 4 in COMPARATOR).
--------------------------------
Screen # 51 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 52 ram:robot
--------------------------------
0 \ SHORTTERMMEM 980527atm
1 : SHORTTERMMEM
2
3 audmem @ 32 > IF ( ) COMPARATOR ( )
4 THEN
5 CR ." SHORTTERMMEM: onset = " onset @ .
6 cand @ p ! 0 a ! 43 s !
7 p @ 32 = IF 0 a ! 0 b ! 0 c ! 0 u ! 0 s ! CR ." STM:SP" THEN
8 p @ t @ 0 kioku{} ! \ Store the phoneme p at time t.
9 a @ t @ 1 kioku{} ! \ Store the a(ctivation) level.
10 b @ t @ 2 kioku{} ! \ b(eginning)? 1 Yes or 0 No.
11 c @ t @ 3 kioku{} ! \ c(ontinuation)? 1=Y or 0 = N.
12 u @ t @ 4 kioku{} ! \ u(ltimate) tag # to a concept.
13 s @ t @ 5 kioku{} ! \ s(ource): internal -, external +
14
15 cand @ 32 = IF t @ blankt ! THEN ; \ returns to SENSORIUM.
--------------------------------
Screen # 53 ram:robot
--------------------------------
0 \ SHORTTERMMEM programming notes. 980523atm
1 \ 23may1998: The "b(eginning)" flag is set in the "SENSORIUM"
2 \ function, to indicate that a character being stored is the
3 \ first (beginning) letter (as if phoneme) in a stored word.
4 \ This method is not sacrosanct; a different Mind.robot could
5 \ simply inspect the blank space before a stored word in order
6 \ to determine the associative "onset-tag" of the stored word.
7 \ Nevertheless, it is very important to fix the onset-tag of a
8 \ word stored in auditory memory, so that a Chomskyan language
9 \ structure may activate that word and cause it to be "heard"
10 \ within the auditory memory channel during the generation of a
11 \ sentence of thought. Here within Mind.forth, we are about to
12 \ let the "COMPARATOR" function declare secondary or tertiary
13 \ "b" onset-tags within a stored word so that the AI may parse
14 \ a compound word down into its smaller subwords -- a function
15 \ absolutely essential if Mind.forth is going to learn German.
--------------------------------
Screen # 54 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 55 ram:robot
--------------------------------
0 \ RETRO subroutine 980528atm
1 : RETRO \ Called by SENSORIUM when incoming candidate = 32 "SP"
2 t @ blankt ! \ preserve blankt(ime) of a pre-word SPACE-bar.
3 t @ 1 - tult ! CR ." RETRO: tult = " tult @ .
4 0 tult @ 3 kioku{} ! \ Set 0 "false" continuation-flag.
5 CR ." RETRO: mt from COMPARATOR = " mt @ .
6 mt @ 0 > IF
7 mt @ tult @ 4 kioku{} ! \ Store the move-tag "mt".
8 ( ) OLDCONCEPT ( ) 0 mt ! ( reset)
9 ELSE mekos @ 0 > IF CR ." RETRO: mekos = " mekos @ .
10 onset @ r !
11 n @ tult @ 4 kioku{} ! \ Store new concept ultimate-tag.
12 ( ) NEWCONCEPT ( )
13 ENDIF
14 ENDIF t @ 1+ onsettime !
15 0 mu ! 0 u ! 0 mt ! 0 mekos ! ; \ RETRO returns to SENSORIUM
--------------------------------
Screen # 56 ram:robot
--------------------------------
0 \ RETRO programming notes. 980523atm
1 \ 5may1998: "blankt" in RETRO will be used as the starting
2 \ value for dec(remental) t(ime) "tdec" as initialized in
3 \ COMPARATOR and as used in STRING-EFFECT.
4
5 \ 23may1998: move-tag "mt" from COMPARATOR passes unscathed
6 \ through SHORTTERMMEM and SENSORIUM until the move-tag is
7 \ needed to provide the value of an old ultimate-tag in RETRO.
8
9
10
11
12
13
14
15
--------------------------------
Screen # 57 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 58 ram:robot
--------------------------------
0 \ SENSORIUM subroutine 980527atm
1 : SENSORIUM ." SENSORIUM: clearing memory" AUDIODAMP 80 0 DO
2 tbasex @ t @ = IF t @ oldtbase ! THEN 1 t +!
3 ( ) AUDITION ( calls subroutine)
4 audmem @ 27 = IF CR ." SENSORIUM: halt" 0 audmem ! QUIT THEN
5 audmem @ cand ! ( transfer value)
6 audmem @ 13 = IF -1 earshut ! 1 b ! 0 alert !
7 t @ blankt ! 32 cand ! 32 audmem ! THEN
8 cand @ 32 = IF ( ) RETRO ( ) THEN
9 1 b ! 1 c ! blankt @ 1 + onset !
10 CR ." SENSORIUM: t & onset = " t @ . ." " onset @ .
11 t @ onset @ = IF 1 b ! ELSE 0 b ! THEN audmem @ 32 > IF
12 mekos @ 1+ mekos !
13 ( ) SHORTTERMMEM ( ) THEN
14 CR ." SENSORIUM: mekos = " mekos @ .
15 earshut @ -1 = IF LEAVE THEN LOOP ; \ ret to REENTRY or MIND
--------------------------------
Screen # 59 ram:robot
--------------------------------
0 \ SENSORIUM programming notes 980504atm
1 \ The DO loop iterates up to 80 times because McCabe on page 105
2 \ of "FORTH Fundamentals" says that the terminal input buffer or
3 \ TIB can hold up to eighty characters.
4
5 \ 04may1998: Today we radically change part of the hierarchy of
6 \ Forth screens. In Screen 58 above, we have SENSORIUM call
7 \ SHORTTERMMEM directly instead of going first to COMPARATOR.
8
9 \ Then COMPARATOR will no longer call SHORTTERMMEM, but rather
10 \ the reverse will be true, and SHORTTERMMEM calls COMPARATOR.
11 \ It makes more sense in general if a sensorium calls memory
12 \ storage, which in turn calls a comparison function.
13
14
15
--------------------------------
Screen # 60 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 61 ram:robot
-------------------------------
0 \ INSTINCT subroutine stub 980505atm
1
2
3 ( SELF-PRESERVATION ? )
4
5
6 ( REPRODUCTION ? )
7
8
9 ( CURIOSITY -- the urge to know? )
10
11
12 ( some behaviors found only in infants? )
13
14
15 \ INSTINCT if implemented will return to EMOTION.
--------------------------------
Screen # 62 ram:robot
--------------------------------
0 \ 980504atm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 63 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 64 ram:robot
--------------------------------
0 \ EMOTION subroutine stub 980505atm
1
2
3
4 ( try to implement JOIE DE VIVRE )
5
6
7 \ EMOTION may call INSTINCT .
8
9
10
11
12
13
14
15 \ EMOTION if implemented returns to the Main Program Loop MIND.
--------------------------------
Screen # 65 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 66 ram:robot
--------------------------------
0 \ The Prosperity Engine 980420atm
1
2 \ Let there be no doubt about what Project Mentifex means to do:
3 \ not only create artificial intelligence, but also make robots
4 \ who ("who" qua persons) will constitute a "Prosperity Engine"
5 \ for eliminating poverty from the human condition.
6
7 \ In the face of the coming superiority of machine intelligence
8 \ over human intelligence, all the varying levels of giftedness,
9 \ which currently (1998) lead to vast economic disparities among
10 \ humans, will soon count for nothing when NO human is any match
11 \ for the superintelligent machines. Gone will be any basis for
12 \ the enrichment of the few and the impoverishment of the many.
13
14 \ A Nietzschean transformation of values will ensue, with those
15 \ humans being materially rewarded who give more of themselves.
--------------------------------
Screen # 67 ram:robot
--------------------------------
0 \ EXAMINE subroutine 980525atm
1 : EXAMINE ( lets us "examine" the kioku{} memory array )
2 CR ." EXAMINE: Memory is at time " t @ . ." p a b c u s"
3 oldtbase @ pretbase ! ( look further back than the input )
4 t @ 12 > IF oldtbase @ 12 - pretbase ! THEN
5 t @ pretbase @ DO ( review robot output AND current input)
6 CR ." EXAMINE: Engram is at time " I . ." "
7 I 0 kioku{} @ 33 < IF ." " ELSE
8 I 0 kioku{} @ EMIT ." " I 1 kioku{} @ . ." "
9 I 2 kioku{} @ . ." " I 3 kioku{} @ . ." "
10 I 4 kioku{} @ . ." " I 5 kioku{} @ EMIT THEN LOOP
11 CR ." EXAMINE: Lexicon items when n = " n @ . ." are:"
12 CR ." n v g d x r:" n @ 1 DO CR
13 I @ 1 lexicon{} @ . ." " I @ 2 lexicon{} @ . ." "
14 I @ 3 lexicon{} @ . ." " I @ 4 lexicon{} @ . ." "
15 I @ 5 lexicon{} @ . LOOP ; \ EXAMINE returns to THINK.
--------------------------------
Screen # 68 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 69 ram:robot
--------------------------------
0 \ The "quickening" of Mind.forth 980528atm
1 \ 28MAY1998: Until the language and reentry structures have
2 \ been coded, the "THINK" subroutine in the next Screen is a
3 \ convenient place to show the user/programmer what is going on
4 \ internally during each trial run of the Mind.forth AI.
5 \ Eventually, such diagnostic inspection code will have to
6 \ be moved elsewhere so that "THINK" can serve its true purpose
7 \ of calling the various Chomskyan structures of syntax.
8 \ Finally, all the "stops" will be pulled out of the THINK
9 \ subroutine and it will be possible for Mind.forth to run
10 \ uninterrupted WITH or WITHOUT human input. The robot mind
11 \ will have "quickened" within its neural circuitry. However,
12 \ programmers must be careful to permit recirculation of memory
13 \ channels so that the AI does not suddenly hit a wall and die.
14 \ Whoever runs Mind.forth or Mind.xyz with an enormous memory
15 \ may claim the distinction of the longest running robot brain.
--------------------------------
Screen # 70 ram:robot
--------------------------------
0 \ THINK subroutine 980504atm
1 : THINK
2
3
4 t @ 1 > IF
5 ( ) EXAMINE ( calls subroutine )
6 THEN
7 CR ." THINK: Press [ESC] to quit, or [TAB] to begin entry:"
8
9 KEY datum ! datum @ 27 = IF CR ." THINK: halt" QUIT THEN
10
11
12 datum @ 9 = IF -1 alert ! CR ." THINK: [TAB]" THEN
13
14 CR ." THINK: Now I will listen to you...." ;
15 \ THINK returns to MIND.
--------------------------------
Screen # 71 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 72 ram:robot
--------------------------------
0 \ 980528atm
1
2 \ Dan Danknick
3
4
5
6 \ Marc Thorpe
7
8
9
10
11 \ D.B. Young
12
13
14
15
--------------------------------
Screen # 73 ram:robot
--------------------------------
0 \ LOCOMOTION stub 980505atm
1 : LOCOMOTION
2
3
4 CR ." LOCOMOTION CHOICES: "
5 CR ." GO_FORWARD"
6 CR ." GO_BACKWARD"
7 CR ." LEFT_TURN"
8 CR ." RIGHT_TURN"
9 CR ." STOP_MOTION"
10
11 ;
12
13
14
15 \ LOCOMOTION will return to the MOTORIUM subroutine.
--------------------------------
Screen # 74 ram:robot
--------------------------------
0 \ Robotics Resources 980528atm
1
2 \ Angelus Research
3 \ Mark Tilden's BEAM = Biology Electronics Aesthetics Mechanics
4 \ BEAM Robotics
5 \ Steve Budgell?
6 \ Future
7 \ Lynxmotion
8
9 \ Robojoc
10
11 \ Robot Sci & Tech Mag.
12
13 \ Solarbotics
14 \ TR
15 \ See also Robotics Clubs and Groups .
--------------------------------
Screen # 75 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 76 ram:robot
--------------------------------
0 \ MOTORIUM stub 980420atm
1 : MOTORIUM ( further logic will select the motor option )
2 ( ) LOCOMOTION ( calls stub )
3 ( a whole panoply of WORK subroutines could be called: )
4 ( REACH TOUCH GRASP LIFT BURN FREEZE LOWER RELEASE )
5 ; \ MOTORIUM returns to the VOLITION subroutine.
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 77 ram:robot
--------------------------------
0 \ Robotics Clubs and Groups 980528atm
1
2
3 \ Dallas Personal Robotics
4
5 \ Portland, OR
6
7 \ Seattle Robotics
8
9
10
11 \ United Kingdom
12
13
14
15 \ See also Personal Robotics Pages.
--------------------------------
Screen # 78 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 79 ram:robot
--------------------------------
0 \ VOLITION stub 980505atm
1
2 \ The robot will have free will inasmuch as it matches its motor
3 \ options with its perceived or instinctual values. The process
4 \ of thinking about values or goals and how to attain them will
5 \ initiate the formulation of goal-directed motor strategies.
6
7 \ A robotic free will can be designed to pursue any suggested
8 \ motor option only when all related mental associations have
9 \ died down below a threshold level. If the associations cause
10 \ concern, fear or alarm, they will not acquiesce in the action.
11
12 \ If all pertinent thought ratifies a proposed motor action,
13 \ the MOTORIUM initiates an option.
14
15 \ VOLITION will return to the Main Program Loop MIND.
--------------------------------
Screen # 80 ram:robot
--------------------------------
0 \ Personal Robotics Pages 980528atm
1
2 \ Boris Project
3
4 \ Dalton
5
6 \ Peter Harrison
7
8 \ Kurt Konolige
9 \ Andrew Miller
10 \ Herb Montes
11
12 \ Hans Moravec
13 \ J.M.
14 \ Newmyer
15
--------------------------------
Screen # 81 ram:robot
--------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 82 ram:robot
--------------------------------
0 \ DREAM subroutine stub 980420atm
1 : DREAM ( called by SLEEP) ;
2 \ We include here a DREAM subroutine merely to show that it is
3 \ possible and where the DREAM function would fit within the
4 \ overall scheme of the artificial mind.
5
6 \ In accordance with the theory of REENTRY as elucidated by both
7 \ Gerald Edelman in a Theory of Neuronal Group Selection (TNGS)
8 \ [ insert appropriate TNGS Web link here, if obtainable ]
9 \ and bt mentifex@scn.org in the Nolarbeit Theory Journal (NTJ),
10 \ any memories which are activated during and AS a dream will be
11 \ remembered by the waking consciousness only if such memories
12 \ also trigger the REENTRY function that re-records the memories
13 \ in their hodgepodge pastiche ensemble as a new experience made
14 \ up of reentrant bits and snippets of previously recorded data.
15 \ DREAM will return to the SLEEP subroutine +/- REENTRY.
--------------------------------
Screen # 83 ram:robot
--------------------------------
0 \ HALLUCINATION not implemented 980505atm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 \ HALLUCINATION if implemented would return to TRANCE.
---------------------------------
Screen # 84 ram:robot
---------------------------------
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--------------------------------
Screen # 85 ram:robot
---------------------------------
0 \ SLEEP subroutine stub 980420atm
1
2 \ During robot SLEEP, we may be able to consolidate memories and
3 \ thus boost intelligence by canvassing the sparse memory arrays
4 \ for associative tags which need not be widely separated, and
5 \ we may be able to crowd together the associative tags formed
6 \ during the period of consciousness immediately prior to SLEEP.
7
8 ( ) DREAM ( calls subroutine )
9
10
11
12
13
14
15 \ SLEEP will return to the Main Program Loop "MIND"
--------------------------------
Screen # 86 ram:robot
--------------------------------
0 \ TRANCE not implemented 980505atm
1
2 \ There is no intention here to make TRANCE a feature of the
3 \ AI mind of intelligent robots. Instead, TRANCE is mentioned
4 \ only in order to show its place within a Theory of Mind.
5
6 \ The theory speculates that hypnosis works by suggesting to
7 \ a subject mind that it is asleep, i.e, in a condition where
8 \ any experience, such as a dream, is to be interpreted as true
9 \ WITHIN THE FRAMEWORK OF THE DREAM. But since the hypnotized
10 \ mind is actually not asleep, it ill-advisedly trusts the
11 \ hypnotist and lends full credence to suggestions, resulting
12 \ in HALLUCINATION -- a mental feature
13 \ which we are not eager to implement in a trustworthy robot.
14
15 \ TRANCE if implemented would return to Main Program Loop MIND.
--------------------------------
Screen # 87 ram:robot
--------------------------------
0 \ Mind.forth is a Unified Theory of Cognition 980414atm
1 \ Hearing Vision Concepts Emotion Robot Output
2 \ /iiiiiii\ /!i!i!i!\ Volition /YYYYYYYYYYYY\
3 \ | ||||||| || ||||||| | T | |||||||||||| |
4 \ | ||||||| || | ___ | | + | |||||||||||| |
5 \ | ||||||| || / \ | + | |S|||||||||| |
6 \ | ||||||| || (image)-|---+_ | |H|||||||||| |
7 \ | ||||||| || \___/ | / \ | |A|||||||||| |
8 \ | ||||||| || | (idea) __ | |K|||||||||| |
9 \ | | ||||| || | \__/------------/ \ | |E|||R|||||| |
10 \ | |d------||---------|---+ ____ (fear)-|--*|||U|||||| |
11 \ | ||||o|| || | +----/ \----\__/ | |||||N|||P|| |
12 \ | ||g|||| || | + / de- \---------|------*|||E|| |
13 \ | || |||| || | + ( ci- ) | |||||||||T|| |
14 \ | ||||||| || | + \ sion /---------|----------*|| |
15 \ | ||||||| || | + \____/ | |||||||||||| |
--------------------------------
Screen # 88 ram:robot
--------------------------------
0 \ Main Program Loop 980516atm
1 : MIND CR ." Clearing memory..." BLANKKIOKU 1 t ! 0 blankt !
2 BEGIN 0 earshut ! t @ tbasex ! ( base time for EXAMINE )
3 \ ( stub ) SLEEP ( consolidation)
4 \ ( theory ) TRANCE ( not implemented )
5 \ ( stub ) EMOTION ( = motivation? )
6 ( ) THINK ( will call LANGUAGE )
7
8 alert @ -1 = IF CR ." MIND: alert flag = -1 true " CR THEN
9 alert @ 0 = IF CR ." MIND: alert flag = 0 false " CR THEN
10 \ ( stub ) VOLITION ( free will )
11 alert WHILE alert @ 0= NOT IF t @ blankt ! CR
12 ( ) SENSORIUM ( subroutine) THEN
13 CR ." MIND: post flag area, alert = " alert @ . CR
14 1 t +!
15 t @ 999 > IF ." timed out" CR QUIT THEN REPEAT ;
--------------------------------
Screen # 89 ram:robot
-------------------------------
0 \ disclaimers 980428atm
1
2 \ You have an obligation thoroughly to understand Mind.forth
3 \ before you adapt the program for use on any sort of robot.
4
5 \ Although Mind.forth is an attempt to design an intelligence
6 \ with a free will for robots, all responsibility for the use
7 \ of Mind.forth and its derivatives rests with whoever installs
8 \ such software as the operating system (OS) in control of a
9 \ robot.
10
11 \ Mind.forth is in the public domain and may therefore be used
12 \ for any purpose, with the user taking full responsibility
13 \ for any and all consequences of the use of Mind.forth AI.
14
15 \ You have reached the end of the Mind.forth source code.
--------------------------------
/projects/mind
Last updated: 27 March 2005
Return to top; or to the
Sitemap of the AI Mind Project.