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