as seen by Sammael (Arthur, The., etc)
v2.2fb4.0 July 29, 1990
@program <program name> (creates a new program if none match) @edit <program name or number>
<number> i insert before <number> . exit insert mode c compile <number1> <number2> l list <number1> <number2> d delete <letter> <letter> a show macros (abridged) <letter> <letter> s show macros (long) <program#> v view program header <program#> p list prog's public functs. h help on edit mode u uncompile q quit editor mode
$echo <string> Echos <string> during compile $define <defname> <defin.> $enddef Defines <defname> to <defin.> $def <defname> <defin.> Same, but stops at end of line $undef <defname> Undefines <defname> $include <obj> Load $defines from <obj> $ifdef <defname>[<comparison>] Starts $ifdef clause. $ifndef <defname>[<comparison>] Starts $ifndef clause. $else Compile if $if[n]def failed. $endif Marks end of $if[n]def clause
__version is a standard $define, containing the server version.
: <funcname> <instruction> [<instruction> ... ] ;
If-then statements use the structure
<comparisons> if <cmds_if_true> [else <cmds_if_false>] then
Loops can use two different structures.
Both types of loops can contain as many of the following as needed.begin <instructions> <comparisons> until (repeats loop until comparison is true) begin <instructions> repeat (repeat loop)
<comparison> while (if comparison is false, exit the loop) break (exit the loop. Often used inside if-thens) continue (go to the start of the loop. used in if-thens)
( ... ) commments : begin user-def word ; end user-def word var <VARNAME> variable declaration lvar <VARNAME> local variable declaration. public <FUNCNAME> declares a function public. checkargs ( s -- ) checks stack against 's' arg. desc. if ( i -- ) else ( -- ) then ( -- ) begin ( -- ) defines the beginning of loops. while ( i -- ) break out of loop if value is false break ( -- ) break out of loop. continue ( -- ) jump to beginning of loop. until ( i -- ) ends begin-until. repeats if false. repeat ( -- ) ends begin-repeat. jumps to begin. jmp ( a -- ) jumps execution to given address. exit ( -- ) exit the current subroutine. abort ( s -- ) stop MUF prog w/ given error mesg. execute ( a -- ??? ) call a given subroutine by address. call ( d -- ??? ) call remote program or ( d s -- ??? ) call public function in remote prog preempt ( -- ) stops multitasking. background ( -- ) starts multitasking, no blocking. foreground ( -- ) starts multitasking, blocking user input for that user. sleep ( i -- ) pause the program for i seconds fork ( -- i ) forks off BG muf process. Returns pid to parent and 0 to child. queue ( i d s -- i ) queue event to run prog d after i seconds with s on the stack. Returns pid of queued process. kill ( i -- ) kills process of given pid. ispid? ( i -- i ) processID -- process_exists? pop ( x -- ) dup ( x -- x x ) swap ( x y -- y x ) over ( x y -- x y x ) rot ( x y z -- y z x ) rotate ( ni ... n1 i -- n(i-1) ... n1 ni ) pick ( ni ... n1 i -- n1 ni ) put ( ni ... n1 x i -- x ... n1 ) ! ( x v -- ) store value x in var v. value may be any type data @ ( v -- x ) fetch value x from var v atoi ( s -- i ) string --> integer intostr ( i -- s ) integer || dbref --> string dbref ( i -- d ) integer --> dbref int ( x -- i ) VAR || object --> integer variable ( i -- v ) integer --> VAR ref + - * / % ( i1 i2 -- i ) < > = <= >= ( i1 i2 -- i ) strcmp, stringcmp ( s1 s2 -- i ) strcmp == case sens. stringpfx ( s1 s2 -- i ) return 0 if s2 is prefix of s1 strncmp ( s1 s2 n -- i ) compares only n letters number? ( s -- i ) dbcmp ( d1 d2 -- i ) and or ( i1 i2 -- i ) not ( i -- i' ) strlen ( s -- i ) strcat ( s1 s2 -- s ) instr ( s1 s2 -- i ) finds s2 in s1. 0 if !found strcut ( s i -- s1 s2 ) cuts string at pos. i explode ( s1 s2 -- ... i ) s2 is the partition, len >0 subst ( s1 s2 s3 -- s ) string, replacement, tobesub pronoun_sub ( d s -- s' ) does % subs a la osucc/ofail read ( -- s ) notify ( d s -- ) player, message notify_except ( d1 d2 s -- ) place, player, message notify_exclude (s dn..d1 i dr-- ) Send s to all players in room dr except for the i players listed in d1 through dn. pennies ( d -- i ) addpennies ( d i -- ) player, pennies random ( -- i ) getpropval ( d s -- i ) zero if none getpropstr ( d s -- s ) "" if none addprop ( d s1 s2 i -- ) ignores i unless s2 is "" remove_prop ( d s -- ) desc, name, succ, fail, drop, osucc, ofail, odrop: ( d -- s ) retrieve message setname, setdesc, setsucc, setfail, setdrop, setosucc, setofail: ( d s -- ) set message player?, thing?, room?, program?, exit?, ok?: ( d -- i ) boolean location ( d -- d' ) owner ( d -- d' ) moveto ( d1 d2 -- ) moves d1 to d2 set ( d s -- ) object, string (flag) flag? ( d s -- i ) object, string -- boolean mlevel ( d -- i ) object -- mucker level. match ( s -- d ) thing, dbref (#-1 = NOTHING, #-2 = AMBIGUOUS, #-3 = HOME) rmatch ( d s -- d ) object, thing, dbref part_pmatch ( s -- d ) partial name -- dbref copyobj ( d -- d' ) returns dbref of new object contents ( d -- ... i ) returns stack of dbrefs and i time ( -- i i i) seconds, minutes, hours date ( -- i i i) monthday, month, year systime ( -- i ) system time in secs since 00:00 1/1/70 GMT timesplit ( i -- i8 ... i1) sec, m, hr, dy, mnth, yr, wkdy, yrdy timefmt ( s i -- s ) format, systime -- timestring gmtoffset ( -- s ) seconds offset from GMT time. setlink ( d d -- ) object, dest setown ( d d -- ) object, newowner newobject ( d s -- d ) location, name -- new objref newroom ( d s -- d ) parent, name -- new objref newexit ( d s -- d ) attached-to, name -- new objref recycle ( d -- ) item to recycle stats ( d -- i7 ... i1) owner -- totalowned, #rooms, #exits, #things, #programs, #players, #garbage. int? ( ? -- i ) is top stack item an integer? string? ( ? -- i ) is top stack item a string? dbref? ( ? -- i ) is top stack item a dbref? nextprop ( d s -- s ) object, propname -- next propname propdir? ( d s -- i ) object, propname--is it a propdir? awake? ( d -- i ) player -- number of connections online ( -- dN ... d1 N ) all connected players w/ count concount ( -- i ) # of connections to the server condbref ( i -- d ) connection number -- player conidle ( i -- i ) conn. # -- idle time in secs contime ( i -- i ) conn. # -- online time in secs conhost ( i -- s ) conn. # -- hostname conboot ( i -- ) connection number connotify ( i s -- ) connection number, string condescr ( i -- i ) connection# -- descriptor# descrcon ( i -- i ) descriptor# -- connection# nextdescr ( i -- i ) descriptor# -- next descriptor# descriptors ( d -- ix..i1 i ) plyr -- descriptors... count bitor ( i i -- i ) int, int -- bitwise or result bitxor ( i i -- i ) int, int -- bitwise exclusive-or bitand ( i i -- i ) int, int -- bitwise and result bitshift ( i i -- i ) int, #bits -- bitwise shift version ( -- s ) Version String depth ( -- i ) stack depth dbtop ( -- d ) top of database + 1 item. prog ( -- d ) this program's dbref trig ( -- d ) a secure form of trigger @ caller ( -- d ) the program that called this one. force ( d s -- ) player, force string localvar ( i -- l ) local var num -- localvar locked? ( d d -- i ) player, object -- is object locked? getlockstr ( d -- s ) object -- lockstring setlockstr ( d s -- i ) object, lockstr -- successful? toupper ( s -- s ) uppercases all letters in the string tolower ( s -- s ) lowercases all letters in the string instring ( s s -- i ) case insensitive version of instr rinstring ( s s -- i ) case insensitive version of rinstr striplead ( s -- s ) Strip leading spaces from string. striptail ( s -- s ) Strip tail spaces from string. strip ( s -- s ) Basically 'striplead striptail' unparseobj ( d -- s ) object -- name-and-flags-string. smatch ( s s -- i ) string, smatch string -- matched? envpropstr ( d s -- d s ) startobj, propname -- obj strval
$include $lib/<libraryname>
_defs/<callname>:"$<libname>" match "<funcname>"
@set lib-strings=_defs/.split:"$lib/strings" match "split" call