[net.works] Visi On from a Software Developer's point of view

BRACKENRIDGE@USC-ISIB@sri-unix.UUCP (08/06/83)

From:  Billy <BRACKENRIDGE@USC-ISIB>

Here is a report written for INFO-IBMPC on my impressions after attending
a seminar for software developers at Visi Corp. I really haven't touched
on the human factors issues that make the bulk of discussion on the WORKS
list, but you might find this worth republishing anyway:
Date:    3 Aug 1983 1930-PDT
Subject: Visi-On for Software Developers
To:      INFO-IBMPC
From:    Billy <BRACKENRIDGE@USC-ISIB>

I recently returned from the Visi-On seminar for software developers.

The IBM-PC XT is the minimum processor Visi-On will run on.  Currently
it seems OK for the toy tasks they are running, but it looks like will
have to evolve as applications software gets more complex.  The IBM PC
graphics adapter card defines the absolute minimum acceptable
resolution display.

Visi-On appears to provide nearly all of the capability of any of the
window packages I have seen to date.  Of course the graphics adapter
card on the IBM-PC isn't up to the resolution of the Lisa, Xerox Star,
or SUN workstation.  Consequentially there are no icons. Menu choices
are represented by character strings and inverse video on selection.
The system was demonstrated on an IBM-PC XT with IBM Color display and
a Wang PC. The Wang has a higher resolution screen than the IBM and a
faster (8086) CPU.  I think IBM may be forced to upgrade their
hardware sooner than I might have expected as this is one of the few
office applications where more horsepower really makes a difference.

A major limitation of the window package is that the virtual image can
only be 64K bytes.  If one used 8 bit by 8 bit character
representations, this makes a maximum of 8K characters that can be
displayed on a virtual screen.  The raster operations would be
terribly slow on an 8086 if they had to span segment boundaries.

The Visi-On software for the IBM PC XT costs $495.  It requires a
mouse which costs an additional $250.  In addition Visi-Calc costs
$395, Visi-On Word (reputed to be a dog) $375, and Visi-On Graphics
$195.  I think the pricing is out of line and brought much glee to the
Apple contingent at the seminar.

Here are Visi-Corp's hardware requirements:

Processor:      16bit, Clock >= 4.7 MHz
Memory:         256KByte minimum
Display:        Directly addressable bit map
Resolution:     Capable of displaying 80X24 characters (8 X 8 pix characters)
Media:          1 Hard disk; 1 Floppy (for distribution)
Pointing:       100 counts/inch, 2 select buttons (mouse preferred)
Interrupts:     For I/O
Clock/Timer:    50ms maximum
Serial Number:  8 bits minimum

Note that this hardware description fits the 68000 and Zilog
processors as well as the 8086/8 family.  Currently IBM, Wang,
Honeywell, Texas Instruments, DEC, and Compaq have announced Visi-On
systems.  Visi Corp expects 4 or 5 manufacturers a quarter to join the
party.  All current systems are 8086 based.

The mouse of choice is the Summa optical mouse.  Demonstration systems
use the mechanical (Berkeley??) mouse but requires polling every 50ms.
I believe the clock is used only for mouse polling as there is no
concept of task scheduling in the Visi-On environment.  The Summa
Optical mouse has an internal processor and communicates over a RS-232
line at 1200 baud only when it detects motion.  The mouse (which sells
for $250) has a unique serial number which the software polls for
authentication.  Some sort of encryption algorithm is used at
installation time so the software can only be used with a given mouse.

At Visi Corp some of the IBM-PCs are running remote virtual disks over
an Ethernet.  This has left the marketing staff quite a dilemma.  On
the one hand this lowers the hardware costs of entry, but on the other
it ruins their carefully thought out software protection scheme.

The primary objectives of Visi-On is a consistent user interface and
portability.  Visi-On is designed to run on any operating system.  It
should run as well or better on a CPM or Unix system as it does under
MS-DOS.  Visi-On is an open system. Outside vendors and software
developers are encouraged to write applications for the Visi-On
environment.

In order to isolate the application program from any operating system
or hardware limitations Visi-Corp provides the Visi-Host.  The
Visi-Host is machine dependent and in the case of the IBM-PC contains
a lot of assembly code.  It interfaces to the host operating system
and where necessary directly to hardware.

The Visi-Host supports:

        Machine independent device interface
        Virtual memory (sort of)
        Limited Concurrent Processes (interrupt code)

The interface provides services:

        -Program control
        -process control
        -memory segment management
        -port management
        -raster operations
        -font management
        -file control
        -device background process management
        -keyboard management
        -mouse management
        -soundmaker management

Visi-Host is about 37K object code and 10K data.  It is 60%
assembly language and 40% C.

Above the Visi-Host sits the Visi-Machine.  This is the heart of
the Visi On system and is what both the programmer and end user
sees.  This is what you get for your $495.  Applications cost
extra.  Above Visi On resides the application program (or as
V-Corp prefers to call them activities).  Activities request
services from the Visi-Machine via Visi-Ops or via BITS (Basic
Interaction Techniques).  The two are distinguished in that a
Visi-Op call requires a process ID.  (A 16 bit number assigned by
Visi-Corp to a given application program).  BITS calls are
presumably lower overhead operations.

Examples of Visi-Ops calls:

        -Virtual screen management
        -archive (Visi-word for file management)
        -devices
        -memory management
        -background processing

Examples of BITS calls:

        -mouse and key input
        -line edit
        -menu
        -forms
        -sound
        -error

Occasionally the Visi-On must call the applications program.

Examples:

        -stop
        -help
        -transfer
        -scrolling
        -workspace
        -scripts

Application programs (Activities in Visi-Jargon) appear as an abstract
data type to the Visi Machine with multiple entry points.  The
application appears to run stand alone in its own address space.
Applications never communicate directly, only through use of the
Visi-Ops.  For example an application must advertise the types of
transfer data it will accept and export.  Many applications can pass
around spread sheet format, while others will only accept ascii text
strings or nothing at all.  All activities must be written in (you
guessed it) Visi-C and obey all the visi-conventions.

The following is a layer diagram for this scheme:


           Visi Corp supplied       Independent supplied
                   +---+                +---+  +---+
                   |   |                |   |  |   |
                   |   |                |   |  |   |
Activities         |   |                |   |  |   |
                   |   |                |   |  |   |
                   |   |                |   |  |   |
Visi Machine       |   |                |   |  |   |         
Interface       +--+---+----------------+---+--+---+------------+ 
                |                                               |
                |                                               | E A
                |               Visi Machine                    | X P
                |                                               | I P
                |                                               | S L
                |                                               | T I
                |                                               | I C
Visi Host       +-----------------------------------------------+ G A
Interface       |                                               |   T
                |                                               |   I
                |                                               |   O
                |               Visi Host (machine dependent)   |   N
                |                                               |   S
                |       +---------------------------------------+------------+
                |       |                                                    |
                |       |       Host operating system                        |
                +-------+----------------------------------------------------+
                |                                                            |
                |               Host hardware                                |
                +------------------------------------------------------------+


Visi-Corp provides a nice tool kit for software development.  It must
run on a real 32 bit machine such as a VAX or 68000 and must run under
a 32 bit Unix such as Berkeley or System3, Uniplus etc.  Visi Corp
admits Unix running on the 8086 just doesn't have the address space to
run the Unix software development environment.

In addition to the standard Unix development tools Visi Corp supplies
a Lantech C cross compiler and cross assembler, the Visicorp "LEO"
linker loader, and up and down load utilities.  The Loader has
provisions for overlays and the Visi On memory management scheme.

There are several developer utilities such as menu, help, and form
compilers.  These compilers have a very simple format and output C
code to define regions in a window, display menus, and define the help
file tree structure and link them to mouse traps.  The whole thing
appears really simple to use.

Also included is a Visi-Machine simulator (written in C and running
native on the Vax or 68000).  As applications are written in C they
can be run in the development environment in native code and debugged
with all the VAX source level debugging aids.

There is also a Distribution Media generator which loads the
application in a form for distribution and includes provisions for
copy protection.  An Application must be installed in a given Visi On
system.  Visi Corp assigns each application program a unique 16 bit
number similar to Ethernet addresses.

The Lantech C compiler is a small model C.  It can only address 64K of
memory at a time.  There is a notion of a long pointer, but it can't
be dereferenced like a normal C pointer.  In fact it isn't even a
segment offset pair.  It can only be used in calls to the Visi
Machine.  This mechanism allows them to implement a virtual memory
system on an 8086 which has no hardware support for this sort of
thing.  It also places a burden on the applications developer to be
very careful in allocating and de-allocating memory.  Bad memory
management at the applications level can cause garbage collections and
page thrashing.  Decisions must be carefully thought out as to the
trade offs involved and the applications programmer should really
understand the rather distasteful memory management scheme.

The Vax based system costs $7,500 and 68000 system costs $5,500 --
both include training credits.  There are no license fees for software
developed under these systems.  This may seem expensive, but unlike
the Apple system or Xerox Mesa development environment, it is
available to anyone who can show a Unix license and come up with the
cash.

All and all I'd give the system a pretty strong recommendation.
It is really the only game in town.  Xerox won't let out any 
Star development environment.  While the Apple attendees at the seminar
were claiming they would undercut this system in price and performance
they didn't volunteer to either let me buy a Lisa or peek at their
development environment.

A Unix implementation on a SUN terminal would be pretty trivial and
would allow much needed business software on this class of machines.
There are rumors that there is an effort to port Visi On to a Xerox
Dandelion processor.  While this would be nice I can't see it becoming
a commercial product.

I think a network mail reading package, document preparation system,
spread sheet program, and graphics package could be put together under
this system so that it could be ported to nearly any personal computer
that might arise over the next few years.  At ISI we view the IBM-PC
as a stop gap cost effective measure until some more powerful machine
comes along.  A few years from now the current crop of PCs will become
home terminals.  Something such as the Visi On system would assure
that software could be developed today that won't get obsolete when PC
class machines are phased out.

-------