Annotation of 42BSD/games/ddl/doc/wishlist, revision 1.1

1.1     ! root        1: Date: 25 Apr 1980 1546-PST (Friday)
        !             2: From: mike at UCLA Computer Science VAX (Mike Urban)
        !             3: Subject: ATTN: DDL Implementors
        !             4: To: cc (UCLA Computer Club)
        !             5: 
        !             6:    I would like the following changes made in DDL:
        !             7: 
        !             8: 1) Friendlier Parsing.  You should be able to say 
        !             9:        give troll the knife
        !            10:    and get away with it (with "knife" as Dobj and "troll" as Iobj).  You
        !            11:    should get messages like "I don't know how to tke" in the event
        !            12:    of a bad verb, and "I think 'north' is a verb" in the event
        !            13:    of a weird parse like "push north wall".  You should be able
        !            14:    to say things like "e.s.s.take thing. eat thing. look" and have
        !            15:    the parser treat the "." as equivalent to and end-of-line.  
        !            16:                /* ACCOMPLISHED 6/13/80.  Syntax errors are now
        !            17:                of the form "I don't know how to xxx" if an unknown
        !            18:                word is encountered (the whole word, not just 5 letters
        !            19:                is printed); "I don't know the word 'xxxxxx'" for other
        !            20:                unknown words; and "I don't understand, because I 
        !            21:                think 'xxxxxx' is a [noun/verb/adjective/etc]" for
        !            22:                other syntax errors.  The separator was already
        !            23:                built into the lexer, but it's a comma, not a period.
        !            24:                And VERB IOBJ DOBJ is a legal syntax now, but 
        !            25:                VERB PREP IOBJ DOBJ isn't (tho it's easy to add) */
        !            26:        MAYBE
        !            27:    (if it isn't hard), you should be able to say "take this, that, the other"
        !            28:    and have a more sophisticated control loop which causes it to act
        !            29:    like "take this.  take that.  take the other" with the EXCEPTION that
        !            30:    no daemon/fuse processing is performed (no turn increment) and that
        !            31:    the whole thing can be short-circuited by an appropriate Exit code.
        !            32: 
        !            33: 2) Generalized routine and object handling.  The routines associated with
        !            34:    objects should be properties of that object just like the others.  The
        !            35:    constants that tell WHICH property is, say, the Action property should
        !            36:    be predefined.  So ($setp room1 LDESC Rubbl) would set the long 
        !            37:    description of room1 to the routine Rubbl (which describes the rubble
        !            38:    left by the explosion you just triggered...).   
        !            39: 
        !            40:        /*** ACCOMPLISHED 6/6/80 ***/
        !            41: 
        !            42: 3) Improved global handling.  The programmer shouldn't have to know the
        !            43:    "address" of his globals.  Instead, a construct like 
        !            44:        VAR score
        !            45:    would be the equivalent of saying "score = xxx" where xxx is one less
        !            46:    than the last VAR done.  
        !            47: 
        !            48:        /*** ACCOMPLISHED 5/29/80 ***/
        !            49: 
        !            50: 
        !            51: 4) Improved grammeme access.  There should be predefined VARs which
        !            52:    contain the values of ($verb) ($dobj) and ($iobj).  You should
        !            53:    be able to re-assign these.  SO, you should be able to say
        !            54:        turn off lamp   
        !            55:    and the PreVerb routine for "turn" might contain something like
        !            56:        (($eq @Iobj off):
        !            57:                ($setg Verb douse)
        !            58:                ($setg Iobj 0)
        !            59:        )
        !            60:                /*** Accomplished 6/12/80; Only change in
        !            61:                        ddlrun is #defines for verbtodo, etc */
        !            62: 
        !            63:    Because verbs don't have properties, we may wish for functions
        !            64:    to access their preverb and action routines as well.
        !            65: 
        !            66: 5) String handling:  It'd sure be nice to have someone type
        !            67:        incant "abra ca dabra" 
        !            68:    and be able to talk about ($subs Dobj @var 1) or ($indx @Dobj "abra")
        !            69:    or whatever.  I don't know exactly how to implement it yet.
        !            70:                /*** Accomplished 7/28/80;  STRINGs are negative-valued
        !            71:                objects.  If the lexer gets a string, it puts it into
        !            72:                a temporary string area (that is flushed every turn) and
        !            73:                returns an index (not pointer) into that are as a negative
        !            74:                number.  The parser knows about these and can handle
        !            75:                verb string  and  verb string prep iobj   sentences.
        !            76:                (the latter being for "Incant "rise" over seed".)
        !            77: 
        !            78:                If the dobj or iobj of an input is a string, the dobj
        !            79:                and iobj routines called are the ones associated with
        !            80:                the object STRING (if such is defined by the DDL
        !            81:                programmer).  At present, the functions $substr, $length
        !            82:                and $eqst  are defined.  $substr returns a negative
        !            83:                pointer into the temp string area; this can be stored
        !            84:                in a global, for example.  A permanent string area
        !            85:                is available, but I haven't written the function 
        !            86:                ($sets glbl string) which would move the string to the
        !            87:                permanent area and put its index therein into glbl.
        !            88:                                Mike            ***/
        !            89:                /*** On 8/20/80, I added a new function (which, mirable dictu,
        !            90:                will allow coding of the "echo" room!), ($read), which
        !            91:                pauses, gets a line of input, and returns the line as
        !            92:                a string!  Gee, if we code up ($pars str verb dobj iobj)...
        !            93: 
        !            94: 6) Ctrl-D should terminate the program.  Ctrl-C should interrupt whatever
        !            95:    is happening and begin a new turn.
        !            96:    Note that this may leave things in a bad state.
        !            97: 
        !            98: 7) New language construct: (WHILE condexp : formlist) is essentially
        !            99:    equivalent to (condexp : formlist ($____ formlist+condexp)) where
        !           100:    "($____ formlist+condexp)" is a new operator, JUMPB (jump back),
        !           101:    which is just like the current $.... jump forward instruction, but
        !           102:    (obviously) negative, and unconditional.  It goes back exactly to
        !           103:    the beginning of the test.
        !           104:                /*** ACCOMPLISHED 8/18/80 --Mike ***/
        !           105: 
        !           106: 8) New routine ($rand n) produces a somewhat random number in the range
        !           107:    1..n .      /*** ACCOMPLISHED 8/18/80 ***/
        !           108: 
        !           109: 9) DDLRUN sources should be reorganized so as to enable recompilation
        !           110:    of less than the entire program if some less global change (such
        !           111:    as the addition of a new routine, or a bug fix in the parser) is
        !           112:    made.
        !           113:                /*** Somewhat accomplished 10/80.  Still needs 
        !           114:                     work.  In particular, changes in extvars.c must
        !           115:                     be reflected in extvars.h ***/
        !           116: 
        !           117: 10) The symbol table, and the hash routine, are simple-minded.  The
        !           118:    5-character limitation on names is a real pain for some people.
        !           119:    For example, you can't even fake the Zork puzzle room by allowing
        !           120:    someone to say "push northern wall".  
        !           121:    These changes don't have to go together.
        !           122: 
        !           123:                /*** ACCOMPLISHED(!!) 11/80.  Identifiers are pretty
        !           124:                        much as long as you like.  The symbol table,
        !           125:                        now alphabetized, contains indices (not pointers)
        !           126:                        into a pool of identifiers that starts at
        !           127:                        sbrk(0).  A binary search algorithm is used.
        !           128:                        This will enable a future version to respond
        !           129:                        correctly to unambiguous abbreviations for
        !           130:                        things at runtime (like news for the aard
        !           131:                        newspaper, for a cogent example).  This
        !           132:                        hasn't been tested for portability to a
        !           133:                        PDP-11 under V7, so beware. As of 11/18,
        !           134:                        the symbol table is still unencrypted ***/
        !           135:                /*** The runtime parser recognizes unambiguous 
        !           136:                        abbreviations.  The symbol table is still
        !           137:                        unencrypted.  1/81 ***/
        !           138: 
        !           139: 11) It should be available on a micro.
        !           140:                        /* Not yet.  But the thinking has begun! */
        !           141:                        /* This will necessitate some rearchitecture
        !           142:                           especially wrt buffering of routines/strings */
        !           143: 
        !           144: 12) The ACTION routine for verbs should execute AFTER the action 
        !           145:     routine for your room; this enables east(ACTION) to correctly
        !           146:     default to ($say "Can't go that way.") and allow one to generally
        !           147:     live without $hit and $miss, crocky routines that they are.
        !           148:     See ../sample (espec. transit.ddl) for a specimen of how this works.
        !           149: 
        !           150:                        /* 11/80 */
        !           151: 
        !           152: 13) Routines that get the action and preaction routines for verbs
        !           153:     should be made available.  
        !           154: 
        !           155: 14) Fuses and daemons aren't QUITE right (fuses go off after your daemon
        !           156:        has typed a prompt, for a real-world example).  Maybe they
        !           157:        shd be on a homogenized priority queue?
        !           158: 
        !           159: 15) It should be frozen real soon.
        !           160:                        /* As of 1/81, we're STILL thinking in terms
        !           161:                           of "just this ONE more feature..."  Damn. */
        !           162: 
        !           163: 
        !           164: 
        !           165:        Mike
        !           166: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.