Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

                              *****************
                              *  BLISS DEMOS  *
                              *****************


                    SIZE OF SOURCE AND IMAGE FOR EACH EXAMPLE
                    -----------------------------------------

   NAME                 SOURCE SIZE             IMAGE SIZE
   ----                 -----------             ----------
BANNER                    2 Blocks              35 Blocks
BOUNCE                   75   ""                21   ""
DATETIME                 16   ""                15   ""
DEMOMENU                 24   ""                17   ""
SIMPLE_BANNER            27   ""                17   ""
-----------------------------------------------------------
TOTALS                  142  Blocks             105 Blocks


                MODULES, HOW THEY ARE BUILT AND BRIEF DESCRIPTION
                -------------------------------------------------

BANNER.EXE, BANNER.COM


DESCRIPTION:

        This demo runs a banner on your workstation.  This banner has a
        clock, day/date, cube, cpu monitor, and disk information written
        into its window, it must be run from a priveleged account.
        If you wish for the demo banner to come up automatically every time the
        system is booted, edit SYSTARTUP.COM in the SYS$MANAGER directory to
        include the previous command(s) at the end of that file.  To do this,
        log into the SYSTEM account as previously described and type the
        following at the "$" prompt:

                SET DEF SYS$MANAGER:
                EDIT SYSTARTUP.COM

        If you should next get a "*" prompt, type a "C" and hit carriage-return.
        Otherwise, hit the PF1 key followed by the "4" key on the numeric keypad
        At the bottom of the file just type one or both of the following lines:

                $ @SYS$SYSDEVICE:[VWSDEMO.COM]BANNER.COM

        Next, hit <CTRL>Z on the keyboard by holding down the control <CTRL>
        key and hitting the "Z" key.  At the "*" prompt, type "EXIT".  Now the
        demo banner will automatically be run each time the system is rebooted.



COMPILE/LINK:

        No sources available yet for BANNER

RUN: (from a priveledged account)
        @SYS$SYSDEVICE:[VWSDEMO.COM]banner

*****
DATETIME.B32, DATETIME.COM


DESCRIPTION:

        This program will create a window that will have just the DATE
        and TIME displayed.

COMPILE/LINK:

        BLISS/OPTIMIZE=(LEVEL=3, SPEED) datetime

        LINK/EXE=DATETIME -
                datetime, clock, -      !clock is a PLI routine
                cliutl/library/include=(cvttime), -
                sys$input/options
        SYS$LIBRARY:uisshr /share


RUN:

        @SYS$SYSDEVICE:[VWSDEMO.COM]datetime

*****
BOUNCE.B32, BOUNCE.COM
    w/  BOUNCE_SUBS.FOR
    w/  BOUNCE_ICON.MAR  -  draws the icon state of the bounce demo


DESCRIPTION:

        This program is an animation demo that moves bouncing balls across a
        window. It works as follows: Each data structure for a ball is kept in
        a singly-linked list pointed to by BALL_LIST. Each iteration, the ball
        on the front of the list is removed and placed on the CURRENT_BALL
        pointer. Its new position is computed, and the ball will be deflected
        off any sides of the window it may hit. Then the list of other balls is
        recursively examined, and the ball is collided with any other balls.
        When the end of the list is reached, that ball is placed on the end of
        the list.

        The mouse buttons allow three functions: Button one, when depressed,
        creates a new ball. The ball is given a random velocity (determined in
        the routine GET_SPEED), and started from the pointer position. Button
        two, when depressed and held down, can catch a ball. This will be the
        first ball encountered by moving the mouse pointer near the ball. It
        can be carried about until the button is released. The other balls
        will continue to move while a ball is caught. Button three, when
        depressed, will destroy a caught ball.

        There is a global routine SHOW_BALLS that is not called. It can be
        used for debugging purposes to show all balls. It recursively walks
        the execution list.
        Some routines, notably GET_SPEED and COLLISION_STUFF, are written in
        FORTRAN and are in the file BOUNCE_SUBS.FOR.
        COLLISION_STUFF does not currently calculate truly elastic collisions.
        This is an area for enhancement.

COMPILE/LINK:

        FORTRAN bounce_subs
        MACRO bounce_icon
        BLISS/OPTIMIZE=(LEVEL=3, SPEED) bounce

        LINK/EXE=BOUNCE  -
                bounce, bounce_subs, bounce_icon -
                sys$input/options
        SYS$LIBRARY:uisshr /share

RUN:
        @SYS$SYSDEVICE:[VWSDEMO.COM]BOUNCE


*****
DEMOMENU.B32, DEMOMENU.COM
    w/ demomenu2.com
    w/ demomenu.dat


DESCRIPTION:

        This module creates and mantains the workstation demo menu.  The
        files included in the menu are included in demomenu.dat and
        demomenu.com.  When the menu comes up, select demos by moving the
        mouse cursor over the menu and hitting any button.  The selected
        item will then be "checkmarked" to show that the item is selected.
        Please wait a couple seconds for the demo to actually begin running.
        It is advised that you only run a couple demos at the same time due
        to the fact that most of them are very output driven.  To stop a demo
        once it has been started, either exit that demo by selecting an exit
        item if that demo has one, or merely select that demo again from the
        demo menu.  The checkmark will disappear and the demo will be deleted.
        You may place anything you desire in the menu.  If you look through
        demomenu.com and demomenu.dat just follow the procedure that they
        have already taken.

COMPILE/LINK:

                BLISS/OPTIMIZE=(LEVEL=3, SPEED) demomenu

                LINK/EXE=demomenu  -
                        demomenu,          -
                        SYS$LIBRARY:uisbg/library,       -
                        SYS$SYSTEM:uisloasym.stb/select,-
                        sys$input/options
                sys$library:uisshr/share


RUN:

        @SYS$SYSDEVICE:[VWSDEMO.COM]demomenu


*****
SIMPLE_BANNER.B32, SIMPLE_BANNER.COM
    w/  CLOCK.PLI


DESCRIPTION:

        This demo is much like the BANNER program from before, the difference
        being that this module only runs the banner with none of the other
        modules that are linked with the previous BANNER.  This module
        is compiled and linked the exact same way that the DATETIME demo was
        compiled and linked except insert SIMPLE_BANNER in place of DATETIME.


COMPILE/LINK:

        BLISS/OPTIMIZE=(LEVEL=3, SPEED) banner
        PLI/NOWARN CLOCK

        LINK /EXE=BANNER -
                banner, clock, -
                cliutl/library/include=(cvttime), -
                sys$input/options
        sys$library:uisshr/share

RUN: (from a priveledged account)

        @SYS$SYSDEVICE:[VWSDEMO.COM]simple_banner

________________________________________________________________________________
________________________________________________________________________________























                                **************
                                *   C DEMOS  *
                                **************

                    SIZE OF SOURCE AND IMAGE FOR EACH EXAMPLE
                    -----------------------------------------

   NAME                 SOURCE SIZE             IMAGE SIZE
   ----                 -----------             ----------
CHROMA_TRIANGLE         15  Blocks               94  Blocks
CPETAL                   9    ""                 93    ""
DELAUNAY                23    ""                 99    ""
DISPLAY_LIST            19    ""                 90    ""
DOPEXAMPLE              12    ""                 91    ""
DOP_FILLED_CIRCLES_C    37    ""                 91    ""
FLAG                    77    ""                101    ""
JTRACE                  12    ""                 90    ""
KEYBOARD                13    ""                 90    ""
MENU                    53    ""                 99    ""
MENU_C                  25    ""                 92    ""
MOUSEAST                 7    ""                 88    ""
MOUSEOVERHEAD            9    ""                 92    ""
NOBANN_NOBORD            7    ""                 87    ""
PATTERN                 18    ""                 91    ""
QUAD_DEMO               16    ""                 93    ""
RUBBERBOX               54    ""                107    ""
SCROLLFILE              15    ""                 91    ""
SCROLLINE               14    ""                 90    ""
SDYN                    11    ""                 94    ""
SHAPES                  10    ""                 92    ""
VWS_MENU                33    ""                 97    ""
VWS_SCROLL_FILE         38    ""                 94    ""
------------------------------------------------------------
TOTALS                  539  Blocks             2166  Blocks


                MODULES, HOW THEY ARE BUILT AND BRIEF DESCRIPTION
                -------------------------------------------------



CHROMA_TRIANGLE.C


DESCRIPTION:

        This demo will plot a constant intensity chromanince triangle.
        In order to stop the demo you must hit a ^Y, then stop.  This
        demo works best on an 8-plane GPX.

COMPILE/LINK:


        CC chroma_triangle

        define lnk$library sys$library:vaxcrtl.olb

        LINK/EXE = CHROMA_TRIANGLE -
                chroma_triangle,  -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR/SHARE
RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.CC]chroma_triangle

*****
CPETAL.C


DESCRIPTION:

        This demo shows a ROSE filled with colored, overlapping, line segments
        stepping thru the vector lengths.  In order to stop the demo, you must
        type a ^Y, then  STOP.


COMPILE/LINK:


        C cpetal

        DEFINE lnk$library sys$library:vaxcrtl.olb
        LINK/EXE = cpetal  -
                cpetal,  -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR/SHARE

RUN:

        define the symbol CPETAL = "$SYS$SYSDEVICE:[VWSDEMO.CC]CPETAL"
        then say:

                CPETAL n, where 3 <= n <= 511

*****
DELAUNAY.C


DESCRIPTION:


        Experiment with Voronoi diagrams and Delaunay triangulations in the
        plane.  This program is based on the paper:

                "Primitives for the Manipulation of General Subdivisions and
                the Computation of Voronoi Diagrams"

                L. Guibas, J. Stolfi, ACM TOG, April 1985

        The numbers required on running the program can be just about anything


COMPILE/LINK:

        C delaunay

        DEFINE lnk$library sys$library:vaxcrtl.olb
        LINK/EXE = DELAUNAY  -
                delaunay,  -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR/SHARE

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.CC]delaunay

*****
DISPLAY_LIST.C


DESCRIPTION:

        This program shows how to solve the problem of the internal display
        list stored in VWS.  In certain cases, when the display list is
        disabled and/or erased, the window contents are still saved in another
        display list used by VWS.  This problem is seen when a viewport is
        occluded, then popped to the foreground and the driver's display list
        is redrawn.  To solve this problem, scroll the window one pixel using
        UISDC$MOVE_AREA after the window is created.


COMPILE/LINK:

        C display_list

        LINK/EXE = DISPLAY_LIST  -
                display_list,    -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR/SHARE

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.CC]display_list

*****
DOPEXAMPLE.C


DESCRIPTION:

        Plot filled triangles using device coordinates and DOP'S
        This program shows the performance increase when using hardware
        polygon fill vs the UIS scan line algorithm.  When you first run
        the program you are given the option to use DOP's or not to,
        try both ways, and see the difference in time.

COMPILE/LINK:

        C dopexample

        LINK/EXE = DOPEXAMPLE  -
                dopexample,    -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR/SHARE
RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.CC]dopexample


*****
DOP_FILLED_CIRCLES_C.C


DESCRIPTION:

        This  program  will test the speed of drawing filled circles  using
        DOPs.    A  scan line approximation has been used to calcualte  the
        circles.    Each  of the circles drawn in made up of 58  horizontal
        lines.    It  was  found  that  any fewer lines left "holes" in the
        circle.  Any more are unneeded data.

        To average  any optimization that may occur at particular points on
        the window, the center points are generated randomly.
        One advantage that has been used in this program is an optimization
        for all of the  circles  having the same radius.  Since this is the
        case, we can calculate the  line  point offsets from (0,0) once and
        then  use these values to figure  the  coordinates  of  the  actual
        lines.

COMPILE/LINK:

        C dop_filled_circles_c

        LINK/EXE = DOP_FILLED_CIRCLES_C -
                dop_filled_circles_c, -
                sys$input/options
        SYS$LIBRARY:uisshr/share

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]dop_filled_circles_c


*****
FLAG_DEMO.C,
    w/  FLAGS.C,
    w/  FLAG_COLORS.C


DESCRIPTION:
        Main module flag_demo.c does the following:
        1. checks that the hardware is at least a four plane GPX before
           proceeding.
        2. calls function define_flags in module flags.c, to define flag
           geometry composition and color
        3. creates a demo display window
        4. sets the flag colors and drawing mode by calling function
           set_flag_drawmode() in module flag_colors.c
        5. sets the window background - left half black, right half white
        6. draws flags by calling the function draw_a_flag() in module flags.c
        7. waits for any keyboard input before exiting


        Module flags.c is a resource to main module flag_demo.c
        This module declares the flag data structure, defines some 17 flags
        with that data structure, and draws a desired flag in a given location
        of a given virtual display according to a x and y scaling factor.
        I choose to model a flag as "bounding" quadilateral with corner
        coordinates:(0.0,0.0), (100.0,0.0), (100.0,100.0), (0.0,100.0).
        Within these bounds, the flag is defined as a group of quadilaterals,
        circles,triangles, lines,stars. Each individual quad, circle, triangle,
        line, and star has a color index associated with. Further, within the
        flag data structure you can define the drawing order ("priority") of
        each group, i.e., draw the quadilaterals first, circles second, etc.


        Module flag_colors.c is a resource to main module flag_demo.c.
        Function set_flag_drawmode does the following:
        1. sets the color entries in the virtual color map
        2. sets writing attribute block 1 to solid fill the foreground pattern

        Press <RETURN> to EXIT demo, after started.

LINK/COMPILE:


        DEFINE LNK$LIBRARY SYS$LIBRARY:VAXCRTL.OLB

        CC flag_demo
        CC flag_colors
        CC flags
        LINK /EXE=FLAG
                flag_demo,-
                flag_colors,-
                flags, -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR/SHARE


RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]flag
*****
JTRACE.C,  JTRACE.COM

DESCRIPTION:

        A simple example of creating a window and then drawing a SINE wave
        trace continuously inside that window.

COMPILE/LINK:

        C jtrace

        LINK/EXE = JTRACE  -
                jtrace,    -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR/SHARE

RUN:

        @SYS$SYSDEVICE:[VWSDEMO.COM]jtrace


*****
KEYBOARD.C


DESCRIPTION:

        An example of how to attach a keyboard to a window and type keyboard
        characters within the window.  To exit, use the F5 CYCLE key to
        attach the keyboard to the window that is running the demo, then
        type a character and return.  You can echo 30 characters before
        program resets.

COMPILE/LINK:

        C keyboard

        LINK/EXE = KEYBOARD  -
                keyboard,    -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR/SHARE

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]keyboard

*****
MENU.C, CREATE_MENU.C, KILLPID.C, LOADMENU.C, MENUDEF.H, MENUFILE.TXT


DESCRIPTION:

        A simple example of creating a menu where menu information resides
        in an ascii file menufile.txt.

            main module: menu.c
            resource modules: create_menu.c, loadmenu.c, killpid.c
            menu data definitions: menudef.h
            menu text file : menufile.txt

        Main module MENU.C does the following:
                - clears exit event flag
                - calls function get_pids() to load into an array all current
                        process ids
                - calls function load_menu_commands() to load menu strings
                        and commands from a menufile and is returned the
                        number of menu choices.
                - calls function create_menu which creates a proportionate
                        menu window for the number of menu choices and the
                        length of the menu strings, menu selection ast
                        handling is also created to perform the menu commands.
                - waits for exit event flag to be set and then exits.


        Module KILLPID.C  -
                contains two functions:
                        1. get_pids() which loads all the "accessible" process
                           ids into an array pid_arr[] ; kill_demo_pids()
                        2. gets all "accessible process ids when called and
                           delete those which were not loaded in the array
                           pid_arr[], presumably this would be all process ids
                           being used by demos.

                Note: some menu commands may create privileged processes which
                      will either have to police themselves or the "menu"
                      process will have to be a privileged process as well.


        Module LOADMENU.C  -
                Opens a menufile and from that file loads into arrays of
                structs both the menu strings (the lines of text that appears
                in the window) and the command strings which will be spawned
                DCL Command Lines.  Afterwards, the menufile is closed and the
                number of menu entries read from the menufile is returned.


        Module CREATE_MENU.C -
                Will create a menu window in the lower left corner called
                " Example Menu". The size of the menu_window is "figured" to
                be no larger than the widest menu-string is wide or taller than
                the number of menu_string choices needed. As the mouse moves
                the cursor into a menu selection rectangle that selection
                rectangle is XORed. Depressing any mouse button in that XORed
                selection rectangle, selects that command.


COMPILE/LINK:

        CC MENU
        CC KILLPID
        CC LOADMENU
        CC CREATE_MENU

        define lnk$library sys$library:vaxcrtl.olb

        LINK/EXE = MENU -
                menu,         -
                create_menu,  -
                loadmenu,     -
                killpid,      -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR/SHARE

RUN:

        RUN /DET SYS$SYSDEVICE:[VWSDEMO.CC]menu


*****
MENU_C.C


DESCRIPTION:

        This demo will create a menu window in the lower left corner
        called "Selection Menu". As the mouse moves the cursor into a menu
        selection rectangle that selection rectangle is XORed. Depressing any
        mouse button in that XORed selection rectangle, selects that command.


        If you want to modify MENU_C.C for your own use, you might want to
        do the following:

            1.  Redefine the descriptor "menu_title", unless you want the menu
                titled "Selection Menu"
            2.  Redefine NUM_OF_CHOICES = the number of menu choices you want.
                Edit function load_menu_commands() for appropriate menu
                strings and commands.
            3.  Edit function selected() for appropriate action to be taken at
                a selected menu command.
            4.  Recompile, relink.


COMPILE/LINK:

        CC menu_c

        define lnk$library sys$library:vaxcrtl.olb
        LINK/EXE = MENU_C -
                menu_c,   -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR/SHARE


RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.CC]menu_c


*****
MOUSEAST.C


DESCRIPTION:

        This example creates a grid of xinc by yinc rectangles in a window
        with diagonal bounds (xmin,ymin), (xmax,ymax) and reports mouse move-
        ments in these grid rectangles via UIS$SET_POINTER_AST instruction.
        The grid rectangles are numbered from bottom to top , left to right
        starting at 0. So with the example values, the bottom left rectangle
        is 0, the rectangle above it is 1, the rectangle to the right is 10;
        the top left hand rectangle is 9, ..., the top right hand rectangle
        is 99.right hand rectangle is 99. To exit, press <RETURN>.


COMPILE/LINK:

        C mouseast

        LINK/EXE = MOUSEAST  -
                mouseast,    -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR/SHARE

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]mouseast

*****
NOBANN_NOBORD.C


DESCRIPTION:

        This demo simply creates a window that is both borderless and
        bannerless.

COMPILE/LINK:

        C nobann_nobord

        LINK/EXE = NOBANN_NOBORD -
                nobann_nobord,   -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR/SHARE

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]nobord_nobann

*****
PATTERN.C


DESCRIPTION:
        This demo create a window and then fills two circles with UIS Fill
        Patterns and displays their pattern number as defined in:
                 SYS$LIBRARY:UISUSRDEF.H.
        This tool can be used whenever one needs a fill pattern for a writing
        attribute block.  When you run the program you will see a pattern
        number to the left of each circle cooresponding to fill pattern
        definition in UISUSRDEF.H.  For example, run the program, move cursor
        into the window and click left or right mouse button. You see

               Pattern 1

        and nothing else! The circle is there, recall pattern 1 is defined as
        PATT$C_BACKGROUND, the background color. Click mouse buttons again
        and play.
        To EXIT press middle mouse_button.

COMPILE/LINK:

        C pattern

        LINK/EXE =  PATTERN -
                pattern,    -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR/SHARE

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]pattern

*****
RUBBERBOX.C, RUBBERBAND.C, RUBBER.H


DESCRIPTION:


        A demo that will create rubber band boxes in a given window. These
        boxes may be just outline or solid fill and/or color.  This routine
        is also able to delete boxes, hence keep track of the created boxes.
        You can also ask the routine for 'n' rubberband boxes, and are able
        to ask the routine to return a variable number of rubberband boxes
        where completion is signaled by some input event ( e.g. a right mouse
        button click).  This demo incorporates the following UIS capabilities:

            1. determines hardware device characteristics (i.e. color or mono)
            2. creates a demo window
            3. sets up attribute blocks for demo
            4. prints directions to the user
            5. demos calls to create_rubberband_boxes (either color or mono)


COMPILE/LINK:

        CC RUBBERBOX
        CC RUBBERBAND
        define lnk$library sys$library:vaxcrtl.olb
        LINK/EXE = RUBBERBOX -
                rubberbox,  -
                rubberband, -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR/SHARE


RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.CC]rubberbox

*****
QUAD_DEMO.C


DESCRIPTION:

        A simple example which draws 2000 overlapping color quadilaterals,
        each bisected by a vertical line (hopefully of a different color ).
        So 2000 quads and 2000 lines are drawn.



COMPILE/LINK:

        CC quad_demo

        define lnk$library sys$library:vaxcrtl.olb
        LINK/EXE = QUAD_DEMO -
                quad_demo, -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR/SHARE

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.CC]quad_demo


*****
SCROLLFILE.C


DESCRIPTION:

        This demo shows how one can read in text from a file, in this case the
        source file, and scroll it through a window.


COMPILE/LINK:

        C scrollfile

        LINK/EXE =  SCROLLFILE -
                scrollfile,    -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR/SHARE

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]scrollfile

*****
SCROLLLINE.C


DESCRIPTION:

        This demo scrolls a line of text through a window

COMPILE/LINK:

        C scrolline

        LINK/EXE = SCROLLINE  -
                scrolline,    -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR/SHARE

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]scrolline

*****
SDYN.C


DESCRIPTION:

        This demo shows the dynamics of a few sorting techniques.


COMPILE/LINK:

        C sdyn

        LINK/EXE = SDYN  -
                sdyn,    -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR/SHARE


RUN:

        define the symbol  SDYN = "$SYS$SYSDEVICE:[VWSDEMO.CC]SDYN"
        Then say:

                SDYN  { quicksort |  shellsort | treesort }

*****
SHAPES.C

DESCRIPTION:

        This simple demo creates a window, and then this demo will draw out
        a set of shapes to a window:
                1. a set of concentric circles
                2. a flower type pattern
                3. the a spiral box pattern
                4. a diamond shaped pattern
                5. a spiral

COMPILE/LINK:

        C shapes

        LINK/EXE = SHAPES -
                shapes,   -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR/SHARE

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]shapes

*****
VWS_MENU.C


DESCRIPTION:

        This demo will create a menu in which you may select some simple
        VMS commands from by pressing the left button of the mouse.  To
        exit press <RETURN> from the window that you started the demo from.


COMPILE/LINK:

        C vws_menu

        LINK/EXE = VWS_MENU -
                vws_menu,   -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR/SHARE

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]vws_menu

*****
VWS_SCROLL_BAR.C


DESCRIPTION:

        Many applications require a scroll bar.  A scroll bar is usually used
        to navigate around a virtual display.  The virtual display may be
        graphics and/or text, such as mail messages, a file for an editor, or
        an IC chip layout.  A scroll bar allows the user to access different
        portions of a display horizontally, vertically or diagonally.  As
        mentioned above, a simple scroll bar may be used to access a list
        of information.  For example, in an applicaton, long list of names,
        addresses and phone numbers are in stored in a database.  the window
        displaying the last names is not large enough to present the entire
        list.  Rather than allowing the user to resize the window, he or she
        may access other portions of the list using the scroll bar.  The
        simple scroll bar needed for this applicaton consists of two direction
        regions (up and down arrow icons), and a pointer inside the middle
        area of the bar to allow the user to select specific data.

        +------+
        |  /\  |
        | /__\ |   Up Arrow to access previous page
        |  ||  |   of information
        +------+
        |      |
        |      |
        |      |
        |+---->|   Mouse cursor to select information
        |      |   currently in window
        |      |
        |      |
        |      |
        |      |
        |      |
        +------+
        |  ||  |   Down Arrow to access next page
        | \--/ |   of information
        |  \/  |
        +------+

        An arrow icon is highlighted when the mouse cursor is moved over it.
        When a mouse button is pressed in an arrow, the information is scrolled
        appropriately.  When the mouse cursor is moved into the middle area,
        the cursor changes to a horizontal arrow.  The user moves the cursor
        vertically in this region to choose a name from the list.  The appro-
        priate line of information i.e. a last name) indicated by the cursor
        is also highlighted.  When the mouse button is pressed, the person's
        full name, address, and phone number are displayed in a separate window.
        A general scroll bar procedure would contain the following parameters:
        the location of the scroll bar in the application window, procedures
        for actions that occur when the up and down arrows icons are selected,
        and procedures for the actions that occur when the mouse cursor enters
        the middle region and when a mouse button is pressed in the middle
        region.  To EXIT just type <RETURN> in the main calling window.


COMPILE/LINK:

        C vws_scroll_bar

        LINK/EXE = VWS_SCROLL_BAR -
                vws_scroll_bar,   -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR/SHARE

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]vws_scroll_bar

____________________________________________________________________________

















































                              *********************
                              * ELN PASCAL DEMOS  *
                              *********************


                    SIZE OF SOURCE AND IMAGE FOR EACH EXAMPLE
                    -----------------------------------------

   NAME                 SOURCE SIZE             IMAGE SIZE
   ----                 -----------             ----------
CDOODLE                 107  Blocks             43  Blocks
DOODLE                   73    ""               30    ""
  +shared macros         80    ""
CPUZZLE                  53    ""               17    ""
DESK                    129    ""               28    ""
-----------------------------------------------------------
TOTALS                  442  Blocks             118  Blocks


                MODULES, HOW THEY ARE BUILT AND BRIEF DESCRIPTION
                -------------------------------------------------


CDOODLE.EPAS, DOODLE.EPAS, RUN_DOODLE.COM
    w/  ALPHA.MAR -
    w/  BRUSH.MAR - draws the BRUSH icon
    w/  CIRCLE.MAR - draws the open CIRCLE icon
    w/  ELLIPSE.MAR - draws the open ELLIPSE icon
    w/  ERASER.MAR - draws the ERASER icon
    w/  FCIRCLE.MAR - draws the filled CIRCLE icon
    w/  FELLIPSE.MAR - draws the filled ELLIPSE icon
    w/  FPOLY.MAR - draws the filled POLY icon
    w/  FRECTANGLE.MAR - draws the filled RECTANGLE icon
    w/  MOVEC.MAR - draws the MOVEC icon
    w/  MOVER.MAR - draws the MOVER icon
    w/  PENCIL.MAR - draws the PENCIL icon
    w/  POLY.MAR - draws the open POLY icon
    w/  RECTANGLE.MAR - draws the open RECTANGLE icon

    w/  RLINE.MAR - draws the slanted LINE icon
    w/  SPRAY.MAR - draws the SPRAY can icon


DESCRIPTION:

        A simple drawing program.  Doodle is really a color demonstration of
        application input using the mouse.

        You can select free hand pencil drawing, paint brushing, rubber-band
        line drawing, rubber-band boxes (filled and unfilled), and polygons
        (filled and unfilled).  Filled patterns are selected at the bottom as
        is line thickness.  You can erase parts of the picture selectivity by
        picking the eraser (right top menu choice) or erase the whole picture
        by clicking the mouse button twice in the eraser box. You may select a
        color by simply picking a new color off the color bar on the top of
        the doodle window.

        I. Tools

        The tool area is the set of 12 boxes (6x2) on the left side of the
        screen.  The current tool's icon is shown reversed.  Currently the
        following tools have the following capabilities:

                a) pencil - writes with currently selected line width (style)

                b) eraser - currently there is just one eraser width (fixed and
                            independent of the line type).  To erase the entire
                            drawing area, double click the eraser icon

                c) brush - draws (by plotting boxes sized by the currently
                           selected line width) with the current fill pattern

                d) spray - not functional

                e) rubberband line - writes rubberband line with currently
                                     selected line width (style)

                f) rectangle - writes rubberband rectangle with currently
                               selected line width (style)

                g) filled rectangle - same as rectangle except rectangular
                                      area is filled with current fill pattern

                h) circle  - writes a rubberband circle with currently selected
                             line width (style)

                i) filled circle - same as circle excepts that circular
                                   area is filled with current fill pattern


        II. Line widths (style)

        The box in the lower left had corner of the screen is used to select
        the line width.  The check mark indicates the current width.

        III. Fill patterns

        The box across the bottom is used to select the fill pattern.  There
        is space for 28 fill patterns (not all are currently used).  Selecting
        a fill pattern with the mouse updates the large fill pattern on the
        left end of the box used to display the current pattern.  Fill patterns
        are used for brush and filled rectangles and circles.



COMPILE/LINK:   (this demo requires that you have ELN PASCAL)

        MACRO ALPHA
        MACRO PENCIL
        MACRO ERASER
        MACRO BRUSH
        MACRO SPRAY
        MACRO RECTANGLE
        MACRO FRECTANGLE
        MACRO CIRCLE
        MACRO FCIRCLE
        MACRO POLY
        MACRO FPOLY
        MACRO RLINE
        MACRO MOVER
        MACRO MOVEC
        MACRO ELLIPSE
        MACRO FELLIPSE
        EPASCAL  cdoodle.epas+euis/MODULE
        EPASCAL  doodle.epas+euis/MODULE

        LIBRARY/CREATE  DOODLEICON -
                PENCIL, ERASER, BRUSH, SPRAY, RECTANGLE, FRECTANGLE, -
                CIRCLE, FCIRCLE, POLY, FPOLY, ALPHA, LINE, MOVER, -
                MOVEC, ELLIPSE, FELLIPSE

        LINK  /EXE = CDOODLE     -
                CDOODLE,           -
                DOODLEICON/LIB,     -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR /SHARE

        LINK  /EXE = CDOODLE     -
                CDOODLE,           -
                DOODLEICON/LIB,     -
                SYS$INPUT/OPTIONS
        SYS$LIBRARY:UISSHR /SHARE

RUN:

        @SYS$SYSDEVICE:[VWSDEMO.COM]run_doodle

*****
CPUZZLE.EPAS, CPUZZLE.COM

DESCRIPTION:

        Puzzle is an interactive, mouse driven demo depicting a "rearrange
        the numbers" game.  The main functionality shown is the ability to
        copy one region of the screen to another very quickly, in this case,
        small, rectangular regions.  The object is to arrange the numbers in
        order with 1,2,3,4 being in the top row, 5,6,7,8 being in the second
        row, etc.  To move a number, point the mouse at a number that happens
        to be next to the empty space.  That number will move into the empty
        space, and the location it had occupied will become the new empty
        space.  When all the numbers are in order, a small window will be
        created telling you how long it took in both time and number of moves.


COMPILE/LINK:

        EPASCAL cpuzzle.epas +euis/MODULE
        LINK /EXE = cpuzzle -
                cpuzzle,   -
                elnrtl/lib,-
                sys$input/options
        sys$library:uisshr/share

RUN:

        @SYS$SYSDEVICE:[VWSDEMO.COM]cpuzzle

*****
DESK.EPAS,
    w/  CALC.EPAS,
    w/  CALENDAR.EPAS,
    w/  DIGITALCLOCK.EPAS,
    w/  MENU.EPAS
    w/  CALCI.MAR - CALCULATOR icon
    w/  CALENDARI.MAR - CALENDAR icon
    w/  CLOCKI.MAR - CLOCK icon
    w/  CLOCK.MAR - CLOCK information

DESCRIPTION:

        This is a demonstration of the use of Icons.  Icons are an important
        element in multi-windowing systems and can represent whatever functions
        the user needs.  These functions are "stored" in a small, graphical
        window called an Icon and, when selected, bring up the functionality
        needed.  When the user is done with the function, he can "store" it
        back in the Icon.  The functionality exemplified by Desk are a Clock,
        a Calendar, and a Calculator.

        Once Desk is selected from the demo menu, three Icons will appear on
        the edge of the screen.  To select a function, move the mouse cursor
        over one of the items and click the left mouse button twice in quick
        succession.  To remove an item, or "store" it back in the Icon, move
        the mouse into the [ ] area of the window, and click the left mouse
        button.
                The calendar allows you to manipulate the months and years
        by pointing at the commands on the top row and hitting the left mouse
        button.  The calendar demo is able to scroll forward a month, backward
        a month, forward a year, and backward a year.
                The calculator can be operated either by using the mouse to
        select buttons or using the numeric keypad on the right of the keyboard
        with each of the keys corresponding to the buttons on the calculator.
        The calculator demo is able to perform the add, subtract, multiply,
        divide, equals, and clear operations.
                The clock is updated once every second, and the date is
        rolled over at the end of the day.


COMPILE/LINK:

        MACRO CALCI
        MACRO CALENDARI
        MACRO CLOCKI
        LIBRARY/CREATE DESKLIB -
                EUIS, -
                CALCI, CALENDARI, CLOCKI

        EPASCAL menu +desklib/lib
        LIBRARY/REPLACE desklib menu

        EPASCAL CALC +desklib/lib
        LIBRARY/REPLACE desklib calc

        EPASCAL CALENDAR +desklib/lib
        LIBRARY/REPLACE desklib calendar

        EPASCAL DIGITALCLOCK +desklib/lib
        LIBRARY/REPLACE desklib digitalclock

        EPASCAL DESK +desklib
        LIBRARY/REPLACE desklib desk

        LINK /EXE=desk -
                desk,        -
                desklib/lib, -
                elnrtl/lib,  -
                sys$input/options
        sys$library:uisshr/share

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]desk


____________________________________________________________________________

























                              *******************
                              * FORTRAN  DEMOS  *
                              *******************


                    SIZE OF SOURCE AND IMAGE FOR EACH EXAMPLE
                    -----------------------------------------

   NAME                 SOURCE SIZE             IMAGE SIZE
   ----                 -----------             ----------
ALL_COLORS              18  Blocks               9  Blocks
AST                      5    ""                 7    ""
BUTTONAST                6    ""                 7    ""
CUBE                    14    ""                11    ""
DISTORT                  5    ""                 7    ""
DOILOOP                  7    ""                 7    ""
DOILYDC                  8    ""                 7    ""
DOP_FILLED_CIRCLES_FOR  13    ""                10    ""
FONTS2                  17    ""                15    ""
MODE                    10    ""                 9    ""
OR_MODE                  5    ""                 7    ""
PAN                     10    ""                 9    ""
QIX                     14    ""                14    ""
QIXLOOP                 15    ""                14    ""
PSYCHO                  13    ""                 9    ""
READCHAR                 5    ""                 6    ""
ROSE                    11    ""                11    ""
SPIRO                   12    ""                11    ""
STRPCHRT                 7    ""                 8    ""
WHEEL                    9    ""                 8    ""
WHEEL_UISDC             10    ""                 8    ""
ZOOM                    11    ""                10    ""
-----------------------------------------------------------
TOTAL                   225  Blocks             204  Blocks


                MODULES, HOW THEY ARE BUILT AND BRIEF DESCRIPTION
                -------------------------------------------------

ALL_COLORS.FOR

DESCRIPTION:

        This program demonstrates how one might go about setting up their
        program to use all 256 colors of the GPX hardware color map (thus
        overriding the system color map).  This program has the additional
        feature that if for any reason the application color map (all of
        the virtual color map or any part of it) is removed  from  the
        hardware color map, all the user has to do to reload his color map
        is to move the pointer into his display area.


COMPILE/LINK:

        FORTRAN all_colors
        LINK all_colors

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]all_colors

*****
AST.FOR

DESCRIPTION:

        This demo shows how one can type from a keyboard in a window.  To
        use this demo you must CYCLE F5 to the created window.

COMPILE/LINK:

        FORTRAN ast
        LINK ast

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]ast

*****
BUTTONAST.FOR


DESCRIPTION:

        This demo uses the mouse input to tell exactly where the mouse is
        positioned inside the window when you click the mouse.  To exit
        click inside the STOP area of the window.


COMPILE/LINK:

        FORTRAN buttonast

        LINK buttonast

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]buttonast

*****
CUBE.FOR,  CUBE.COM


DESCRIPTION:

        This program is an animation demo that displays a rotating cube.
        The rotating cube grows and shrinks thus creating the illusion that
        the cube is moving away then coming back into closer range.  Resize
        is the only active ast.

COMPILE/LINK:

        FORTRAN cube

        LINK cube

RUN:

        @SYS$SYSDEVICE:[VWSDEMO.COM]cube
*****
DISTORT.FOR


DESCRIPTION:

        This program is designed to show the possible distortion or
        unexpected results that may appear due to an aspect ratio that is
        not square (equal to 1).


COMPILE/LINK:

        FORTRAN distort

        LINK distort

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]distort
*****
DOILOOP.FOR


DESCRIPTION:

        This demo creates a window and draws lines between a user specified
        number of points.  The program uses DOPS to draw these lines.  The
        pattern that is shown is always trying to make a circles out of
        the specified number of points.


COMPILE/LINK:

        FORTRAN doiloop

        LINK doiloop

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]doiloop

*****
DOILYDC.FOR, DOILYDC.COM


DESCRIPTION:

        This program is much the same as the last in principle.  The difference
        being that in this demo the resolution of the drawing can be picked.
        The smaller your xres, and yres values the smaller the drawing
        inside the window.  Do not give too large a number for the number
        of points, or else the 'circle' that is made from the lines, will
        appear to be filled.


COMPILE/LINK:

        FORTRAN doilydc

        LINK doilydc

RUN:

        @SYS$SYSDEVICE:[VWSDEMO.COM]doilydc

*****
DOP_FILLED_CIRCLES_FOR.FOR


DESCRIPTION:

        This  program  will test the speed of drawing filled circles  using
        DOPs.    A  scan line approximation has been used to calcualte  the
        circles.    Each  of the circles drawn in made up of 58  horizontal
        lines.    It  was  found  that  any fewer lines left "holes" in the
        circle.  Any more are unneeded data.

        To average  any optimization that may occur at particular points on
        the window, the center points are generated randomly.
        One advantage that has been used in this program is an optimization
        for all of the  circles  having the same radius.  Since this is the
        case, we can calculate the  line  point offsets from (0,0) once and
        then  use these values to figure  the  coordinates  of  the  actual
        lines.


COMPILE/LINK:

        FORTRAN dop_filled_circles_for

        LINK dop_filled_circles_for

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]dop_filled_circles_for

*****

FONTS2.FOR,  DEFINE_FONTS.COM


DESCRIPTION:

        This demo prints out the different fonts available to the user.


COMPILE/LINK:

        FORTRAN fonts2

        LINK fonts2

RUN:

        @SYS$SYSDEVICE:[VWSDEMO.COM]DEFINE_FONTS
        RUN SYS$SYSDEVICE:[VWSDEMO.COM]fonts2

*****
MODE.FOR


DESCRIPTION:

        This demo simply goes throught the different writing modes available.


COMPILE/LINK:

        FORTRAN mode

        LINK mode

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]mode

*****
OR_MODE.FOR


        This demo creates a window then it first writes a square to the
        window in the foreground color, then it writes the same square to
        the same window in BIT MODE SET complement.


DESCRIPTION:


COMPILE/LINK:

        FORTRAN or_mode

        LINK or_mode

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]or_mode
*****
PAN.FOR


DESCRIPTION:


        This program creates a line graph, and then, using another window,
        pans across the original graph.  It also makes use of such features
        as exact window placement and window attributes.


COMPILE/LINK:

        FORTRAN pan
        LINK pan

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]pan

*****
PSYCHO.FOR

DESCRIPTION:

        This program plots the x,y coordinates for the solution of
        two simultaneous differential equations of the form:
                x = x + y/4 + c1
                y = y - x''/4 + c2
        To exit the program, type ^Y followed by EXIT.  This
        applies even if you use the full-screen option.
        If you have a color system, you may want to modify the
        source for this program to plot the points in color rather
        than simply white.
        Also, note that some combinations of numbers that have very
        simple initial patterns may develop over several minutes.
        For an initial attempt, you might try the numbers:

                1234 12352365 314637 1376

COMPILE/LINK:

        FOR psycho
        LINK psycho

RUN:

        RUN psycho

*****
QIX.FOR,  QIX.COM
    w/  SETUP_COLOR.PAS

and
QIXLOOP.FOR,  QIXLOOP.COM
    w/  SETUP_COLORS.PAS


DESCRIPTION:


        This program is an animation demo that moves a bunch of lines around
        within the window.  There are 10 lines.  The line currently at the front
        of the bunch is repeatedly erased then redrawn at the rear of the bunch
        to create the illusion that the lines are moving.  When the lines
        hit any side of the window, they are deflected off.


COMPILE/LINK:

        FORTRAN qix
        FORTRAN qixloop
        PASCAL setup_colors
        LINK qix, setup_colors
        LINK qixloop, setup_colors

RUN:

        @SYS$SYSDEVICE:[VWSDEMO.COM]qix
        @SYS$SYSDEVICE:[VWSDEMO.COM]qixloop

*****
READCHAR.FOR


DESCRIPTION:

        This demo will read a character from the terminal that started it
        and then write it out to the window, as well as give its hexadecimal
        value in the window of the creating process.  It will display 10
        characters before quitting.


COMPILE/LINK:

        FORTRAN readchar

        LINK readchar

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]readchar

*****
ROSE.FOR,  ROSE.COM
    w/  SETUP_COLORS.PAS


DESCRIPTION:
        This program accepts a user specified number of points.  A line is drawn
        from each point to every other possible point thus creating a rosette.

COMPILE/LINK:

        FORTRAN rose
        PASCAL setup_colors
        LINK rose, setup_colors

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]rose

*****
SPIRO.FOR,  SPIRO.COM
    w/  SETUP_COLORS.PAS


DESCRIPTION:

        This program draws a spiro design using the values specified by the
        user.

COMPILE/LINK:

        FORTRAN spiro
        PASCAL setup_colors
        LINK spiro, setup_colors

RUN:

        @SYS$SYSDEVICE:[VWSDEMO.COM]spiro

*****
STRPCHRT.FOR, STRIP.COM


DESCRIPTION:

        This demo does a sine wave trace that looks much like a trace that
        would show up on a hospital chart.  Or if you prefer how the stock
        market daily graph looks.

COMPILE/LINK:

        FORTRAN strpchrt
        LINK strpchrt

RUN:

        @SYS$SYSDEVICE:[VWSDEMO.COM]strip

*****
WHEEL.FOR

DESCRIPTION:

        This program draws a color wheel of 241 colors using a UIS color
        map.  You will notice that entries 0 and 1 of the map have not
        been used by this program.  This is because these are the two
        entries used by UIS to store the background color and the default
        writing index colors.


COMPILE/LINK:

        FORTRAN wheel

        LINK wheel

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]wheel

*****
WHEEL_UISDC.FOR


DESCRIPTION:

        This demo is the same as the WHEEL.FOR demo, except that the wheel
        is output using DOPS.


COMPILE/LINK:

        FORTRAN wheel_uisdc
        LINK wheel_uisdc

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]wheel_uisdc

*****
ZOOM.FOR


DESCRIPTION:

        This program draws a picture, and then "zooms" in on the four
        corners.  This is one of two ways to do a zoom in UIS.

COMPILE/LINK:

        FORTRAN zoom
        LINK zoom

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]zoom
____________________________________________________________________________
____________________________________________________________________________
























































                                ****************
                                * PASCAL DEMOS *
                                ****************



                    SIZE OF SOURCE AND IMAGE FOR EACH EXAMPLE
                    -----------------------------------------

   NAME                 SOURCE SIZE             IMAGE SIZE
   ----                 -----------             ----------
DECLANDER               1649  Blocks            235  Blocks
DOP_FILLED_CIRCLES_PAS    13    ""                7    ""
FONTS                      6    ""                6    ""
TEXTPOS                    8    ""               12    ""
-------------------------------------------------------------
TOTALS                  1682  Blocks            260  Blocks


                MODULES, HOW THEY ARE BUILT AND BRIEF DESCRIPTION
                -------------------------------------------------


DECLANDER.PAS,  DECLANDER.COM
    w/  ARCH_DATA.MAR - ARCH image
    w/  ASTRO_DATA.MAR - little man from the ship
    w/  DUST_DATA.MAR - space DUST image
    w/  FLAG_DATA.MAR - FLAG that man puts into ground upon successful landing
    w/  RAND.MAR - RANDom numbers
    w/  SHIP_DATA.MAR - draw the image of the SHIP
    w/  YCOOR.MAR - draws the Y-COORDINATE for the demo
    w/  DLGLOBALS.INC - Contains all global variable declarations/definition
    w/  DLFUNC.INC - Contains all the global function/procedures
    w/  DLCREATE.INC - Procedures/Functions to create and setup displays
    w/  DLUPDATE.INC - Procedures/Functions to update all the displays
    w/  DLINIT.INC - Startup/Initializations procedures and functions
    w/  DLDRAW.INC - All the necessary drawing routines
    w/  DLMOVE.INC - All th procedures to move the ship


DESCRIPTION:

        DECLander is  a game where you are commander of the Digital Excursion
        Module, (DEM).  Your mission is to land the DEM safely on the
        surface of the moon.  You control the ship with the mouse as follows...

        The mouse cursor (the arrow), must be within the boundaries of the
        window entitled 'THRUST' for it to have any effect on the game.
        While in this area the mouse can do the following...

                Left button:    Rotates the ship Counter-Clockwise.

                Right button:   Rotates the ship Clockwise.
                Middle button:  Controls the percentage of thrust.  Move the
                                cursor to the desired amount of thrust, and
                                then press the middle button.

        To land the ship:  First, manuever the ship to one of the three
        designated landing sites.  There is a landing site at the far left
        of the screen, a small one in the middle of the screen, and a large
        one towards the right of the screen.  If you touch the sides of any
        mountains you will crash the ship.  If you have made it to one of
        the landing sites, then the screen will 'blow up' and show you a close
        up view of the area.  Just bring the ship down to the surface with the
        following criteria...

                The vertical velocity must not exceed -600.

                The horizontal velocity must be between -50 and +50.

                The ship must be upright. (The heading must be >= 355 or <= 5)

        After you have landed the ship, you will be scored on how well you
        did it.  The score will be based on the remaining fuel, the velocities
        at touchdown, the time it took you to land the ship, and which landing
        site you are at.

        If you would like to end a particular game early, (chicken) then move
        the mouse to the rectangle which says 'Abort Mission', and hit the
        left button.

        Be careful not to crash into the mountains or to go off the radar.
        Watch your fuel and velocities !!


COMPILE/LINK:

        MACRO ARCH_DATA
        MACRO ASTRO_DATA
        MACRO DUST_DATA
        MACRO FLAG_DATA
        MACRO RAND
        MACRO SHIP_DATA
        MACRO YCOOR
        PASCAL DECLANDER

        LINK/EXE = DECLANDER -
                declander,   -
                arch_data, astro_data, -
                dust_data, flag_date,  -
                rand, ship_data, ycoor, -
                sys$input/options
        sys$library:uisshr/share

RUN:

        @SYS$SYSDEVICE:[VWSDEMO.COM]declander

*****
DOP_FILLED_CIRCLES_PAS.PAS

DESCRIPTION:

        This  program  will test the speed of drawing filled circles  using
        DOPs.    A  scan line approximation has been used to calcualte  the
        circles.    Each  of the circles drawn in made up of 58  horizontal
        lines.    It  was  found  that  any fewer lines left "holes" in the
        circle.  Any more are unneeded data.

        To average  any optimization that may occur at particular points on
        the window, the center points are generated randomly.
        One advantage that has been used in this program is an optimization
        for all of the  circles  having the same radius.  Since this is the
        case, we can calculate the  line  point offsets from (0,0) once and
        then  use these values to figure  the  coordinates  of  the  actual
        lines.


COMPILE/LINK:

        PASCAL dop_filled_circles_pas

        LINK / EXE DOP_FILLED_CIRCLES_PAS -
                dop_filled_circles_pas,   -
                sys$input/options
        sys$library:uisshr/share

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]dop_filled_circles_pas

*****
FONTS.PAS

DESCRIPTION:

        This demo create a window and writes out 14 differents fonts to
        that window.  The fonts are named as they are in sys$font

COMPILE/LINK:

        PASCAL fonts

        LINK / EXE = FONTS -
                fonts,     -
                sys$input/options
        sys$library:uisshr/share


RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]fonts

*****
TEXTPOS.PAS


DESCRIPTION:

        This demo gives statistics of writing text to a window.


COMPILE/LINK:

        PASCAL textpos

        LINK/EXE = TEXTPOS -
                textpos,   -
                sys$input/options
        sys$library:uisshr/share

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]textpos

____________________________________________________________________________
____________________________________________________________________________




































                                *************
                                * PLI DEMOS *
                                *************


                    SIZE OF SOURCE AND IMAGE FOR EACH EXAMPLE
                    -----------------------------------------

   NAME                 SOURCE SIZE             IMAGE SIZE
   ----                 -----------             ----------
BOXES                   15  Blocks              14   Blocks
CLOCK                   19    ""                 8     ""
DESIGNS                 19    ""                17     ""
DIGICLOCK               41    ""                15     ""
DISPFONT                12    ""                10     ""
FILLPAT                  9    ""                 6     ""
GRAY                     9    ""                 6     ""
SHOWFONT                11    ""                10     ""
SPEED                   20    ""                17     ""
-----------------------------------------------------------
TOTALS                  155  Blocks             103 Blocks



                MODULES, HOW THEY ARE BUILT AND BRIEF DESCRIPTION
                -------------------------------------------------


BOXES.PLI,  BOXES.COM
    w/ SETUP_COLORS.PAS

DESCRIPTION:

        This program draws boxes in the user specified writing mode.  The
        boxes are filled randomly with the fill patterns specified by the
        user.  The number of boxes drawn, number of windows created, and
        and the dimensions of the window are all user specified inputs.

COMPILE/LINK:

        PLI/NOWARN boxes
        PAS setup_colors

        LINK /EXE = boxes -
                boxes, setup_colors, -
                sys$input/options
        sys$library:uisshr/share

RUN:

        @SYS$SYSDEVICE:[VWSDEMO.COM]boxes

*****
CLOCK.PLI, CLOCK.COM

DESCRIPTION:

        This program displays an analog clock with the second hand.

COMPILE/LINK:

        PLI/NOWARN clock

        LINK /EXE=CLOCK -
                clock,  -
                sys$input/options
        sys$library:uisshr/share

RUN:

        @SYS$SYSDEVICE:[VWSDEMO.COM]clock

*****
DISPFONT.PLI,  DISPFONT.COM


DESCRIPTION:

        This program displays the fonts available on the VAXstation II.  The
        user may specify a single font name or view all the fonts by entering
        an asterisk for the font name.  The user may also choose to view a
        selected string of fonts by entering the font names one aside of the
        other, separated by only a comma.  No spaces or carriage returns are
        allowed in order to specify a string of fonts.  Each font is displayed
        in a different window.

COMPILE/LINK:

        PLI/NOWARN dispfont
        LINK /EXE = DISPFONT  -
                dispfont, -
                sys$input/options
        sys$library:uisshr/share

RUN:

        @SYS$SYSDEVICE:[VWSDEMO.COM]dispfont

*****
DIGICLOCK.PLI, DIGICLOCK.COM


DESCRIPTION:

        Digiclock is an AST driven demo which makes few demands of system
        resources, so you need not be concerned about the cost of running it.
        The following is a detailed description of how to use the clock:


        MOVING THE CLOCK AROUND THE SCREEN:
          You can point to the border, press and hold the left mouse button,
          and drag the clock to where you want it.

          Or, you can pretend there are nine boxes laid out in a 3 x 3 grid
          over the face of Digiclock. Place the cursor into one of these
          boxes and click the right mouse button - Digiclock will jump to the
          corresponding place on your screen.

        SELECTING DISPLAY FORMATS:
          You may turn the seconds update on or off by moving the mouse to
          the seconds display (it will be highlighted) and clicking the left
          button.

          You may select 12 or 24 time format by mouse to the AM/PM indicator
          (it will be highlighted) and clicking the left button. In 12 hour
          mode, either AM or PM will be displayed; in 24 hour mode the AM/PM
          spot (over the seconds display) will be blank.

          You may select one of the two date formats: "Month DD, YYYY" or
          "DD-Mmm-YYYY".  Place the cursor on the date (it will be highlighted)
          and press the leftmouse button to change the date format.

        COLOR CONTROL:
          By default, DigiClock uses as it's color default the current window
          foreground and background values. However, it does try to translate
          the following 6 logical names and interpret their values as floating
          point number between 0.0 and 1.0:
            DIGICLOCK_g_c   where g is "F" for Foreground or "B" for Background
                            where c is "R", "G" or "B" for Red, Green or Blue

          Example: DEFINE DIGICLOCK_F_R "0.750"
                ! Set Foreground Red to 75% Intensity

          Illegal values are ignored.

        DEFAULTS:
          Position: Upper Right
          Seconds:  One second update
          12/24:    12 Hour Mode
          Date:     Month DD, YYYY
          Colors:   Same as Default Window Background & Foreground

        REFRESHING THE CLOCK:
          If the middle mouse button is pressed while the pointer is within the
          DigiClock window, then the clock window will be erased and redrawn.
          This feature was added as we have been having some window corruption
          problems with UIS recently. Refreshing also re-translates the color
          logicals and reset the clocks private virtual color map.


COMPILE/LINK:

        PLI/NOWARN digiclock

        LINK /EXE=DIGICLOCK -
                digiclock,  -
                sys$input/options
        sys$library:uisshr/share

RUN:

        @SYS$SYSDEVICE:[VWSDEMO.COM]digiclock


*****
FILLPAT.PLI,  FILLPAT.COM

DESCRIPTION:

        This program displays the first 36 fill patterns listed in module
        UISUSRDEF.PLI.  These patterns include the background, foreground,
        vertical bars, horizontal bars, diagonal bars, and brick patterns.

COMPILE/LINK:

        PLI/NOWARN FILLPAT

        LINK/EXE = FILLPAT -
                fillpat, -
                sys$input/options
        sys$library:uisshr/share

RUN:

        @SYS$SYSDEVICE:[VWSDEMO.COM]fillpat

*****
GRAY.PLI,  GRAY.COM

DESCRIPTION:

        This program displays the grey shades available in UISUSRDEF.PLI
        fill patterns module.

COMPILE/LINK:

        PLI/NOWARN GRAY

        LINK/EXE = GRAY -
                gray,   -
                sys$input/options
        sys$library:uisshr/share

RUN:

        @SYS$SYSDEVICE:[VWSDEMO.COM]gray


*****
SHOWFONT.PLI,  SHOWFONT.COM

DESCRIPTION:

        This program displays the fonts available on the VAXstation II.  The
        user may specify a single font name or view all the fonts by entering
        an asterisk for the font name.  The user may also choose to view a
        selected string of fonts by entering the font names one aside of the
        other, separated by only a comma.  No spaces or carriage returns are
        allowed in order to specify a string of fonts.  All fonts are displayed
        in a single window.


COMPILE/LINK:

        PLI/NOWARN  SHOWFONT

        LINK/EXE = SHOWFONT -
                showfont,   -
                sys$input/options
        sys$library:uisshr/share

RUN:

        @SYS$SYSDEVICE:[VWSDEMO.COM]showfont


*****
SPEED.PLI

DESCRIPTION:

        This demo tests the speed of UIS graphics.  The demo does a number
        of tests with and without display lists to test the speed between
        the two.  It also tests the speed using different sizes.  All of
        the speed (or not so speedy) information is then displayed to the user.

COMPILE/LINK:

        PLI/NOWARN speed
        LINK/EXE = SPEED -
                speed,   -
                sys$input/options
        sys$library:uisshr/share

RUN:

        RUN SYS$SYSDEVICE:[VWSDEMO.COM]speed

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026