Meme (Multitasking Extensible Messaging Environment): Multiuser Forth VR (1994)
Immersive Systems Inc:<p><a href="https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;19990125100147&#x2F;http:&#x2F;&#x2F;www.immersive.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;19990125100147&#x2F;http:&#x2F;&#x2F;www.immers...</a><p>[I&#x27;ll quote some of the page here for people with sensitive eyes]<p>&gt;Meme tm: Real VR for the Net!<p>&gt;&quot;A brilliant idea...&quot; -Andries van Dam<p>&gt;Meme tm was designed from the ground up for multi-user networked virtual worlds.<p>&gt;Meme tm is a platform-independent standard for networked virtual reality.<p>&gt;High performance. Self-contained. FAST real-time 3D. Easily customized for use with head-mounted displays, data gloves, and other VR peripherals.<p>&gt;Meme tm is designed so it can run on memory-limited machines such as settop boxes and game consoles.  Meme tm can also take full advantage of the most advanced graphics hardware.<p>&gt;&quot;This is what VRML 3.0 hopes to be.&quot; -Tony Parisi, VRML co-inventor<p>&gt;Meme tm enables the construction of virtual worlds on the Internet.<p>&gt;Fully interactive. Inhabitable by many users. Quickly constructed. Complex lifelike behavior. Easy to deploy.<p>&gt;&quot;Marc de Groot is a brilliant programmer.&quot; -Mark Pesce, VRML co-inventor<p>&gt;Highly efficient virtual machine used by NASA and the aerospace industry.
Will run on any system that has a 3D rendering engine.
Portable to platforms with primitive or non-existent operating systems.
Really works identically on all platforms.
Runs in less than 500 kilobytes of memory.
Upwards of a million context switches per second on current-generation processors.<p>&gt;&quot;How the hell did you do that?&quot; -unknown attendee, Web Interactive &#x27;96<p>[Click through for more praise for Meme, colorful images, and awesome 1994 web site design!]<p>An Overview of Meme:<p><a href="https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;19990504200616&#x2F;http:&#x2F;&#x2F;www.immersive.com&#x2F;overview.htm" rel="nofollow">https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;19990504200616&#x2F;http:&#x2F;&#x2F;www.immers...</a><p>&gt;Meme TM--The Multitasking Extensible Messaging Environment
Meme TM is a software package for the development of virtual world applications.<p>&gt;Worlds built with Meme TM can be inhabited by multiple users who are connected to a computer network. Meme TM virtual worlds distinguish themselves by providing rich object behavior, unlike menu-driven systems that offer a fixed set of choices.<p>&gt;Meme TM is designed to be interoperable, that is, Meme TM worlds and objects will behave identically on any computer running Meme TM, irrespective of differences in the underlying hardware.<p>&gt;Meme TM was conceived to enable the construction of a shared virtual universe for everyone on the Internet.<p>&gt;what kind of software package is Meme TM?<p>&gt;Meme TM does not easily fit into a well-known category. It incorporates elements of an operating system, an interactive development environment, and a programming language.<p>&gt;Meme TM is an operating system [...]<p>&gt;Meme TM is an interactive development environment [...]<p>&gt;Meme TM is a programming language [...]<p>Meme Development System for Windows Product Specification:<p><a href="https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;19990422114909&#x2F;http:&#x2F;&#x2F;www.immersive.com&#x2F;mdswin.htm" rel="nofollow">https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;19990422114909&#x2F;http:&#x2F;&#x2F;www.immers...</a><p>&gt;Required hardware: PC, 80386 or better with math coprocessor, 8 MB RAM, VGA, mouse, Ethernet or 10BaseT card or modem (for network connection.)<p>Meme Demos:<p><a href="https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;19990504193428&#x2F;http:&#x2F;&#x2F;www.immersive.com&#x2F;memedemo.htm" rel="nofollow">https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;19990504193428&#x2F;http:&#x2F;&#x2F;www.immers...</a><p>Meme Programming Guide:<p><a href="https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;19980110220614&#x2F;http:&#x2F;&#x2F;www.immersive.com&#x2F;pgmguide.htm" rel="nofollow">https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;19980110220614&#x2F;http:&#x2F;&#x2F;www.immers...</a><p>[It&#x27;s totally programmable in FORTH! What more is there to say? ;) So here&#x27;s some code! ]<p>&gt;Writing Meme TM code<p>&gt;Writing code for use in a multi-user universe is an undertaking that requires some sophistication. Often, the programmer wants to try out an idea quickly, without concern for the demands of multi-user distributed programming.<p>&gt;For instance, let&#x27;s assume the programmer would like to spin a ball, all alone, in the virtual world. Meme TM makes it easy to animate such a scene. The following text is the actual code that implements a spinning ball, and is very similar to the spinning ball demonstration on the demo page. The backslash character (\) is used to delimit a comment to end-of-line.<p>&gt;The comments assume that each line is being typed by hand at Meme TM&#x27;s command prompt, with pauses between the lines to observe the effect on the displayed scene.<p><pre><code>    \ First we create an eyepoint with which we view the scene.
    \ The eyepoint is initially positioned at the origin, looking down the
    \ negative Z axis (away from the user).
    Eye: eyepoint

    \ Let&#x27;s put the eyepoint at +20 on the Z axis.  This moves the camera
    \ away from the origin, towards the user.
    10e0 eyepoint z!

    \ We put a ball in the scene.  It is created at the origin.
    &quot; sphere.rwx&quot; Shape: ball

    \ Up until now, the display has remained blank.  To draw a single frame
    \ on the display, we execute the meme &quot;render&quot;.
    render

    \ There is now a ball on the display.  Rather than type &quot;render&quot; each time
    \ we want to draw a frame, let&#x27;s start a background task that redisplays the
    \ scene continuously.

    background r                    \ Define a new task called &quot;r&quot;.
            begin                   \ Start of a looping structure
                    render          \ Draw one frame
                    pause           \ Switch to the next task
            again                   \ Loop forever
    ;                               \ End definition

    r wake                          \ Start execution of the rendering task.

    \ Let&#x27;s define another background task to make the ball spin.

    background spin                 \ Define a new task called &quot;spin&quot;.
            begin                   \ Start of a looping structure
                    1e0 ball yaw+!  \ Increment the yaw angle by one degree
                    pause           \ Switch to the next task
            again                   \ Loop forever
    ;                               \ End definition

    spin wake                       \ Start execution of the spinning task</code></pre>