[sci.virtual-worlds] The COMET Environment

esz001@cck.coventry.ac.uk (Will Overington) (04/25/91)

I am interested in the use of virtual reality in order to develop
a useful user interface for various ideas of mine which have
developed over many years.

Last year, I did quite a lot of work on developing a piece of
software which I called comet and I enclose some of the built in
notes for the system, which hopefully will give an overview of
the ideas behind the system.

I have noticed recent items in sci.virtual-worlds from people
interested in architecture and so on, so I thought that perhaps
people might like to read about my ideas and perhaps, who knows,
those interested in architecture might like to think about how it
could all be realized using virtual world technology.


This is the text file version of the text that appears when using
the comet environment in response to using the command office and
the command ask subsequently.

Welcome to the office of the COMET environment.

The office facility in this piece of software is intended for the
use of anyone who would like to contribute some 1456 software or
a file describing translation to the machine code of some
microprocessor.

If you are simply trying to use the comet environment with
whatever files happen to have been supplied along with it, then
you do not need to use the office.

Telesoftware is the invention that produces a remote access
interactive computer system by means of the unidirectional cyclic
broadcasting of software. No telephone line nor any return
information link is needed to the central broadcasting computer.
W. J. G. Overington has devised an Opportunity Creating
Infrastructure for Telesoftware to contain his ideas for the way
that he would like to see his invention used.

The aim is to be able to provide fee-free education by distance
teaching methods around the world.  The idea is that software
would be repetitively broadcast on some of the teletext lines of
various direct broadcast satellite channels.  The idea is that
the software would be provided, written in 1456 object code, or
in languages where there is also broadcast a compiler for that
language itself written in 1456 object code, by those users of
the system that were able and willing to do so.  It is envisaged
that the software would be marshalled together by a specially
formed incorporated company and that that company would pay for
the broadcasting time used.

The company would gain advertising revenue from selling up to ten
per cent of the space in the telesoftware service for the
carrying of advertisements, such as video game programs to find
various varieties of a manufacturers products in a maze,
adventures with various products being mentioned, and so on.
Only acceptable products would be advertisable on this service.
The idea is that all educational software submitted to the
company would be accepted for broadcasting.  A person submitting
software to the company would be issued with a token, a sort of
trading stamp issued by the company.  Of the money earned by the
company, some would be used to provide merchandise to collectors
of the tokens. The exchange rate of tokens to real world money
would be able to float to its own level so that there would never
be any question of only a given quota of software being accepted
from software authors.  The company would be first and foremost
an educational facility.  The redemption merchandise would
include educational materials, such as textbooks and so on.  The
magic ingredient of the idea is that one of the items offered
would be a share in the company itself.  This would be the only
way for a share to be issued, except for literally but a few
shares issued directly for money in order that the company could
actually have officers to start off.  These would only go to
people who had already deposited some software.

This is a far off dream, and may, in fact, remain but a dream.
Who knows?

Over the last few years I have, from time to time, as a leisure
activity been writing a sort of science fiction book, though I
would like to think that it would be regarded as a piece of
literature in the utopian tradition.

Two young men from the city of Florence visit a fictional, small
city state in Italy as part of their studies. The story is set in
the autumn of the year 1456 and during their visit they find out
about a new invention recently brought from Mainz in Germany.  It
is a printing press.  Later they go through a time warp and are
just over 540 years into the future where they visit the
Telesoftware Institute, which is a somewhat idealized version of
the possible company mentioned above.  Both the fictional city
state and the Telesoftware Institute are characterized by tokens
that are only of value in dealings with the fictional issuer, and
the relation to real world money of the tokens is explored.
Certainly, I am hoping that my fictional work will influence the
real world.  Only time will tell.

However, this software is being distributed around the world on
floppy discs and if anyone would like to send some 1456 software
to me I will marshall what I get up into, hopefully, a number of
library discs.  There is no specially formed company, no tokens,
no redemption merchanise, no shares.

But there is the adventure of it all!

----

Supplementary note, not built into the comet system.

In August and September 1990 I extended the concept of the book
to describe a concept, for which I have coined the word
teleutopia, that I propose might have been used as a staging
point in the establishment of the fictional Telesoftware
Institute, which lies somewhere "in the near future".

It is, in reality, a way that I am developing as a practical
method of moving forward from the existing real world situation
towards a real life implementation of my ideas for a Telesoftware
Institute.  It may not work, but I feel that it is worth a try.

A new concept in forming large software systems and its possible
application to virtual reality research.

I am developing a concept for which I have coined the word
teleutopia, that is "tel" plus "eutopia", (and thus pronounced
with five syllables, tel-eu-top-i-a, phonetically tel-yoo-tope-
ee-uh).  I envisage a teleutopia as using the existing shareware
and the like mechanisms for distribution of software, but whereas
the software in any one "package" of shareware, is, if I
understand it correctly, usually written by one person or a group
of people working together at the same  company, educational
institute or computer club, with a teleutopia the "package" is
formed by a gradual aggregation of files prepared by individuals
all over the world to quite detailed specifications.  The
specification would, for any given teleutopia, be devised by the
person who originated that particular teleutopia.

I am not envisaging collections as general as "collections of
pascal programs" being aggregated together as teleutopiaware, but
items far more specific, such as, as a simple example, a videotex
system for PCs forming the starting point for a teleutopia and
designs for character sets, be they roman, greek, hebrew &c being
in the files that people around the world send in.

This is only a simple example, I feel that the concept of
teleutopias could have far reaching effects in the fields of
knowledge bases and open systems.  Each teleutopia would then
have a possibly lengthy document specifying how contributions
should be prepared.  Naturally, systems would need to have scope
to evolve, rather than being locked in for years to a
specification document that had become obsolescent.

I am researching methods as to how such teleutopian knowledge
bases could be restructured as items gradually aggregated to the
teleutopia.  I am also looking at the legal matters.

Being also interested in virtual reality systems, and wishing to
work in applying virtual worlds technology to produce new ways of
presenting and analyzing knowledge, I am wondering whether an
initial attempt to see if a teleutopia is a workable proposition
might be tried in this field, using a sort of virtual reality,
just on a regular PC, without a helmet or goggles, as the way to
help one select what one wants from the knowledge base.  That is,
the items in the knowledge base would be items of use to virtual
reality researchers.

It seems to me that as well as software, it might be possible to
gradually aggregate data files of objects of many kinds into such
a knowledge base.  I feel that, although this approach may well,
in principle, reduce the unnecessary repetion of coding up
various objects by each research group, the practical effect will
be that each group will have available many more types of object
than if each group were having to prepare all its own data files.
An added bonus would be that people could refer to such objects
in communications, both over the net, on the telephone, in print,
and others wishing to try out their results for themselves would
be able to get copies of the objects from the teleutopian
knowledge base, a copy of which they might already have.

+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+
Will Overington
Department of Electrical, Electronic and Systems Engineering,
Coventry Polytechnic,
Priory Street,
Coventry CV1 5FB,
England.
+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+
Putting forward new ideas is like being a quarterback.
First of all you will loose a few yards by even starting the
play.

Then there will be people trying to put you down.

Sometimes it's best to hand the football to someone who is better
at running, sometimes it's best to forward pass in a controlled,
planned way, but at times, the only thing to do is just hurl it
up in the air in a long forward pass attempt, and hope that
someone out there catches it and RUNS!
+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+

Supplementary document on 1456 object code, in case anyone is
interested.

This document provides an introduction to writing software in
1456 object code.























An interesting feature of 1456 object code is that the actual
codes used as input to the comet program are the normal way of
writing 1456 object code.  That is, although there is an
assembler equivalent, it is not regarded as the main way of
writing 1456 object code, as 1456 object code is designed for
ease of being directly written.

Consider the following assembler style language program.  It is
not for any particular processor, but, if you have used
assemblers, you will probably recognize the general flavour of a
label field, which may be left empty, an operation code field and
a parameter field, which may or may not have anything in it,
depending upon the particular operation code.

START LOAD #3
      ADD  #2
      STORE ALPHA
      HALT
ALPHA DATA 0

For the avoidance of doubt, this program loads the immediate data
of value 3 into a register called 1456A, adds the immediate data
of value 2, stores the result in the data storage unit at the
label ALPHA and then halts.

Consider now rewriting the program so that there is not a
separate label field, but that instead there is a pseudo-
operation called LABEL, that generates no code, but merely
informs us where the label is located.


LABEL START
LOAD #3
ADD  #2
STORE ALPHA
HALT
LABEL ALPHA
DATA 0

Consider now using numbers instead of names for labels.  The
program can now be written as below.

LABEL 1






















LOAD #3
ADD  #2
STORE 2
HALT
LABEL 2
DATA 0

In most, possibly all, microprocessor assembly languages that I
have studied, the operation codes for LOAD IMMEDIATE and LOAD
FROM MEMORY are different, but which of these operation codes is
used in assembling any given use of a LOAD instruction is
determined by examining the parameter field, not the LOAD
instruction itself.

For example,

LOAD #$40
and
LOAD $40
respectively, and not, say,

LOAD# $40
and
LOADM $40

In 1456 object code, each operation code is either one letter, or
two characters, the first of which is ! (in speech "super").
There are 100 operation codes available, namely,
A .. N, P .. Z, a .. k, m .. z,
!A .. !N, !P .. !Z, !a .. !k, !m .. !z

The letters uppercase O and lowercase l are omitted in order to
avoid confusion between uppercase O and the figure 0 and between
lowercase l and figure 1.

The LOAD IMMEDIATE is w in 1456 object code and the LOAD FROM
MEMORY is W with the argument being a label number, in octal.

In 1456 object code there is also what I call software
punctuation.  These are items that in an assembler language would
be called pseudo-operation codes. This software punctuation
consists of label identification, generation of data spaces and
so on.  So we may convert our example to something approaching
1456 object code, though as we shall see, there are a few extra






















steps yet.

: 1
w 3
p 2
S 2
H
: 2
/ 0

In order to avoid, when assembling the above, having to look
beyond the length of the last digit in the parameter, because one
does not know that it is the last digit of the parameter until
one has already looked beyond it, the order of the operation code
and its parameter, if any, are reversed. This means that a
parameter, which must be a number, in octal, is ended by the
operation code that uses that parameter.

We thus have the following.

1 :
3 w
2 p
2 S
H
2 :
0 /

We also convert all numbers to being in octal format, though, as
the numbers in this example are all of value less than 8, there
is not any observable difference in doing that here.

A space character and a return character have no significance in
the code thus produced, so it is perfectly acceptable to place it
in free format on as few or as many lines as is desired.  We need
to add an = sign, to signify that that is the end of the program,
and we could then have,

1:3w2p2SH2:0/=

but that is somewhat confusing to a human, so it is conventional
to separate each operation by a space character, though it is
usual to omit the space after a : symbol, so as to reinforce the
fact that the : is but a label and is not assembled to give






















output code of itself.

1:3w 2p 2S H 2:0/ =

In the above example, note that the figure 2 appears three times.
In the first usage it is immediate data, because p uses it as
immediate data; in the second usage it is the use of a label
address, because S uses it as a label address; in the third usage
it is the definition of label 2, because : is used to define a
label.

Comments can be included in 1456 object code between a *
character and a ; character.

MODULES IN 1456 OBJECT CODE

The 1456 object code system supports separate compilation of
modules in a program.  This is performed by using a + character
to signify the end of the module.  Compilation of a 1456 object
code program is by two pass assembly.  When a module is
separately compiled, both passes of that module are performed
before the first pass of the next module is started.  This means
that any label address may be used locally within two or more
different modules without conflict.  Only label addresses that
need to be referenced from outside the module need be chosen to
avoid conflict.  A practice that is used is that label addresses
in the range 1 to 77 octal may be freely used as local labels
within a module and that higher numbers are allocated to external
entry points to modules.  Labels in the range 100 to 177 octal
are for your own module library.



























-- 

esz001@cck.coventry.ac.uk (Will Overington) (04/26/91)

Actually, I was thinking last night, and have come in this morning with
the intention, of actually trying to get something going along the lines
of a Teleutopia Of Virtual Reality Objects and working out how I should do
it.

My initial thoughts are for triple coordinates from 0 to 999999999 in
each direction, that is, a nice round number of points compatible with
easy, don't worry about a sign bit, numbers that can fit within a 32
bit word; in particular within a pascal longint type. This huge data
size will enable one to build up detailed objects by scaling and adding.
For example, a renaissance villa could have fancy column capitals added
onto the top of each column by scaling down a design for a column capital
and adding in copies translated to various locations, and so on.

In my research projects on the restructuring of knowledge bases I have
devised a system whereby software and data can be entwined together
by using a language based on a language (alcor) that I designed a few
years ago, which was itself based on forth.

The method is that each software word starts with a triple letter,
for example zzzif   zzzthen   zzzelseif and so on.
The zzz words are fixed in the language, but fff words are user defined
for fields within a relational database structure, for example fffquantity.
This means that field lengths do not need to be fixed.

I have it in mind to extend this concept for the files for the objects,
using vvv as the triple key and words like vvvx vvvy vvvz and so on.
This will give scope for files to be built that could be treated almost
as data files by fairly simple software, yet be obeyed by something a bit
more powerful. For example, commands such as vvvfill and so on,
whatever that is defined as meaning when I think it out fully. :-)

Incidentally, while writing, can I mention a few other points.
I have not read all of each of the items, but on the matter of floating
point numbers being needed or used for rotating objects in space, I was
reminded that a lot of early forth stuff avoided floating point operations
and instead preferred to do things like integer multiply by an integer and
then integer divide by some large number. Could this be an approach for
virtual reality systems, bearing in mind that eventually one needs to
end up with integers in order to light up pixels, no matter how detailed
a display system one has available. Perhaps things like taking care to
avoid accumulating rounding errors need to be taken into account, whether
using integers or floating point, for example, if one rotates 40 degrees
and then wishes to rotate 25 degrees further on, maybe one should go back
to the original and rotate that 65 degrees, rather than rotating the
already rotated design a further 25 degrees.

I am hoping that, if I can get this teleutopia going, then it will attract
not only everyday objects but also will be treated as a medium for
original art. There could be designing something on paper and putting it
into the required format, but there could also be the concept of the
person who wrote in sci.virtual-worlds of working using a helmet to create
an object in some virtual material. Did that person suggest, or did I
imagine, this as a sort of fluorescent green weightless clay. I am
wondering, should someone be able to create a piece of art in this way,
how it could be saved into a machine readable form so that it could be sent
over the net and someone elsewhere be able to have a copy of the art object.

Will Overington

+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+
Putting forward new ideas is like being a quarterback.
First of all you will loose a few yards by even starting the play.
Then there will be people trying to put you down.
Sometimes it's best to hand the football to someone who is better at running,
sometimes it's best to forward pass in a controlled, planned way,
but at times, the only thing to do is just hurl it up in the air in a long
forward pass attempt, and hope that someone out there catches it and RUNS!
+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+

-- 

lance@motcsd.csd.mot.com (lance.norskog) (04/27/91)

About the information publishing part: publishing data to subscribers
and getting paid will involve some level of encryption technology.
This is available today, and if you believe people in sci.crypt, 
it's trustworthy.  The comm broadcast portion is called UseNet 
and has already been debugged, mostly.  A production version of 
UseNet would not require a trained hacker at each node.  It's close, 
but it's not there yet.  There are a few other interesting protocols
in this area: IRC, for example, is a worldwide Internet CB-style
chat program (quite a trick).

About the 1456 part: performance doesn't matter in software.  
Functionality matters.  Programmers are more productive in languages
higher-level language than 1456.  Also, the more abstract the language,
the smaller the code (usually).  This is a big win for broadcasting 
programs on any comm line with less bandwidth than fiber optic.
The current wave in making cheaper faster computing is RISC,
and picking a CISC object code would have been a bad idea.
The next wave will be parallel (2-16 processor) computing.  
A "dissemination" language should be carefully designed for 
efficient parallel execution, and the programmer's monoprocessor 
workstation should include a parallel simulator to ensure that 
software will work well on a subscriber's parallel machine.

Lance Norskog