[comp.sources.x] v11i087: Another Star Trek Game, Part01/14

pfuetz@agd.fhg.de (02/26/91)

Submitted-by: pfuetz@agd.fhg.de
Posting-number: Volume 11, Issue 87
Archive-name: xstrek/part01

This is the game strek (Star Trek Version 3.0) ported to X11.
It contains 14 parts. See README for further information.
=== ls -lg of the 14 parts ===
-rw-rw-r--  1 pfuetz   siemcad     69511 Feb  8 14:41 apollo_inc.shar
-rw-rw-r--  1 pfuetz   siemcad     62642 Feb  8 14:49 f_changed.shar.01
-rw-rw-r--  1 pfuetz   siemcad     49498 Feb  8 14:50 f_changed.shar.02
-rw-rw-r--  1 pfuetz   siemcad     41664 Feb  8 14:51 f_changed.shar.03
-rw-rw-r--  1 pfuetz   siemcad     27801 Feb  8 14:45 original_code.shar.01
-rw-rw-r--  1 pfuetz   siemcad     49604 Feb  8 14:46 original_code.shar.02
-rw-rw-r--  1 pfuetz   siemcad     75089 Feb  8 14:47 original_code.shar.03
-rw-rw-r--  1 pfuetz   siemcad     52819 Feb  8 14:48 original_code.shar.04
-rw-rw-r--  1 pfuetz   siemcad     86874 Feb  8 14:53 xstrek.shar.01
-rw-rw-r--  1 pfuetz   siemcad     31172 Feb  8 14:54 xstrek.shar.02
-rw-rw-r--  1 pfuetz   siemcad     78314 Feb  8 14:56 xstrek.shar.03
-rw-rw-r--  1 pfuetz   siemcad     61959 Feb  8 14:57 xstrek.shar.04
-rw-rw-r--  1 pfuetz   siemcad     56810 Feb  8 14:58 xstrek.shar.05
-rw-rw-r--  1 pfuetz   siemcad     68028 Feb  8 14:58 xstrek.shar.06
=== end of ls -lg of the 14 parts ===

#!/bin/sh
# To unshare, sh or unshar this file
mkdir xstrek 2>/dev/null
mkdir xstrek/f_changed 2>/dev/null
mkdir xstrek/original_code 2>/dev/null
mkdir xstrek/original_code/apollo_inc 2>/dev/null
echo xstrek/original_code/apollo_inc/base.ins.c 1>&2
sed -e 's/^X//' > xstrek/original_code/apollo_inc/base.ins.c <<'E!O!F! xstrek/original_code/apollo_inc/base.ins.c'
X/*  BASE.INS.C, /sys/ins, ers, 04/02/86
X    base include file for customer use
X
X   Changes:                            
X      05/20/86 mishkin added ios_$id_t, ios_$max, and ios_$seek_key_t.
X      04/02/86 joelm added proc1_$n_user_processes
X      02/05/86 leduc Fixed declaration of status_$ok to be 0L instead of 0.
X      12/06/85 mishkin Added changes for IOS.
X      03/18/85 RpS  Added declarations for set-manipulation library calls.
X      09/04/84 knw  The "Pascal-ish" boolean true value should be FF, not FFFF.
X      03/26/84 jrw  spelling corrections.
X      09/15/83 ems  removed async field from status_$t
X      08/23/83 knw  Changed the definition of "binteger" to be "unsigned short",
X                    instead of "unsigned char".  Altho a binteger implies an 8-
X                    bit value, Pascal really stores them in 16 bit integers,
X                    EXCEPT in a PACKED RECORD.  Most simple usages of binteger
X                    should allocate 16 bits in C.
X      11/30/82 jrw  added true, false
X      09/28/82 ers  original coding */
X
X
X/*  Pascal-ish booleans:  */
X
X#define false           ((unsigned char) 00)
X#define true            ((unsigned char) 0xff)
X
Xtypedef unsigned char boolean;
X
X/*  System-defined stream id's:  */
X
X#define stream_$stdin   0
X#define stream_$stdout  1
X#define stream_$errin   2
X#define stream_$errout  3
X
X#define ios_$stdin   0
X#define ios_$stdout  1
X#define ios_$errin   2
X#define ios_$errout  3
X
X
X
X/*  Common datatypes:  A note about the "binteger" definition:  In Pascal, the
X *                     binteger definition is 0..255; a subrange of integer.
X *                     Although the definition implies an 8-bit datum, Pascal
X *                     allocates a 16-bit integer for it in all cases EXCEPT for
X *                     Pascal "PACKED RECORDS".  Only in that case are only 8 bits
X *                     allocated.  So, most simple C usages for Pascal interfaces
X *                     must also allocate 16 bits.  To make a C structure which
X *                     mimics a Pascal PACKED RECORD, use bit fields.
X */
X
Xtypedef unsigned short binteger;       /* positive 8 bit integer */
Xtypedef unsigned short pinteger;       /* positive 16 bit integer */
Xtypedef unsigned int linteger;         /* positive 31 bit integer */
X
X
X
X/*  Common status datatype returned by most Apollo-supplied procedures:  */
X
Xtypedef union {
X    struct {
X        unsigned fail : 1,          /* true if module couldn't handle error */
X                 subsys : 7,        /* subsystem code */
X                 modc : 8;          /* module code */
X        short    code;              /* module specific error */
X    } s;
X    long all;                       /* used for testing for specific value */
X} status_$t;
X
X#define status_$ok  0L              /* returned if called proc successful */
X
X
X/*  System clock types:  */
X
Xtypedef unsigned int time_$clockh_t;    /* high 32 bits of time_$clock */
X
Xtypedef union {
X    struct {
X        time_$clockh_t high;
X        pinteger       low;
X    } c1;
X    struct {
X        pinteger high16;
X        unsigned int low32;
X    } c2;
X} time_$clock_t;
X
X
X/*  Number of user processes */
X 
X#define proc1_$n_user_processes 56
X
X
X/*  Commonly used naming server constants and types:  */
X
X#define name_$pnamlen_max 256       /* max length of pathname */
X#define name_$complen_max  32       /* max length of entry name */
X
Xtypedef char name_$pname_t[name_$pnamlen_max];
Xtypedef char name_$name_t[name_$complen_max];
X
X
X
X/*  Commonly used streams types:  */
X
X#define ios_$max  127
X
Xtypedef short ios_$id_t;            /* open stream identifier */
Xtypedef struct {
X        linteger rec_adr;
X        linteger byte_adr;
X} ios_$seek_key_t;
X
Xtypedef short stream_$id_t;         /* open stream identifier (same as ios_$id_t) */
Xtypedef union {
X    long offset;
X    struct {
X        linteger rec_adr;
X        linteger byte_adr;
X        linteger flags;
X    } key;
X} stream_$sk_t;                     /* seek key returned on most stream calls */
X
Xtypedef struct {
X        long high;
X        long low;
X} uid_$t;                           /* for type uids returned by streams */
X
Xtypedef struct {
X        long rfu1;
X        long rfu2;
X        uid_$t uid;
X} xoid_$t;
X
X/*  User eventcount definitions */
X
Xtypedef struct {
X        long value;                 /* current ec value */
X        pinteger awaiters;          /* first process waiting */
X} ec2_$eventcount_t;
X
Xtypedef ec2_$eventcount_t *ec2_$ptr_t;
X
Xextern uid_$t uid_$nil;
X
X/*  Library calls for set manipulation */
X
Xstd_$call void lib_$init_set();             /* initialize a set */
Xstd_$call void lib_$add_to_set();           /* add an element to a set */
Xstd_$call void lib_$clr_from_set();         /* remove an element from a set */
Xstd_$call boolean lib_$member_of_set();     /* return membership of an element in a set */
X
X#eject
E!O!F! xstrek/original_code/apollo_inc/base.ins.c
echo xstrek/original_code/apollo_inc/cal.ins.c 1>&2
sed -e 's/^X//' > xstrek/original_code/apollo_inc/cal.ins.c <<'E!O!F! xstrek/original_code/apollo_inc/cal.ins.c'
X/*  CAL.INS.C, /sys/ins, ers, 07/24/86
X   calendar maintenance routines - insert file
X
X   Changes:
X      07/24/86 knw  changed cal_dpval_t from array 1..2 of linteger to DOUBLE.
X      04/02/86 lwa  change enum to short enum
X      05/06/85 gms  added cal_$remove_local_offset
X      10/07/82 ers  original coding  */
X
X
X#define cal_$bad_syntax        0x00150001
X#define cal_$out_of_range      0x00150002
X#define cal_$empty_string      0x00150003
X#define cal_$unknown_timezone  0x00150004
X#define cal_$invalid_tzdif     0x00150005
X
X
X
X#define cal_$string_size 80
X
X
Xtypedef char cal_$string_t[cal_$string_size];
X
Xtypedef char cal_$tz_name_t[4];   /* timezone name */
X
Xtypedef struct {
X           short year,
X               month,
X               day,
X               hour,
X               minute,
X               second;
X} cal_$timedate_rec_t;  /* returned from cal_$decode_time */
X
Xtypedef short enum {cal_$sun, cal_$mon, cal_$tue, cal_$wed, cal_$thu,
X                         cal_$fri, cal_$sat} cal_$weekday_t;
X
Xtypedef struct {
X           short utc_delta;           /* # minutes from UTC */
X           cal_$tz_name_t tz_name;    /* timezone name */
X           time_$clock_t drift;       /* drift adjustment made by user */
X} cal_$timezone_rec_t;
X
Xtypedef double cal_$dpval_t;
X
X
Xstd_$call void  cal_$decode_ascii_time ();
Xstd_$call void  cal_$decode_ascii_date ();
Xstd_$call void  cal_$decode_ascii_tzdif ();       /* decode timezone difference */
Xstd_$call void  cal_$decode_time ();
Xstd_$call void  cal_$encode_time ();              /* encode time -> secs past 1/1/80 */
Xstd_$call void  cal_$decode_local_time ();         /* decode & return local time */
Xstd_$call cal_$weekday_t cal_$weekday ();          /* determine day of week */
Xstd_$call void  cal_$apply_local_offset ();        /* apply local offset to a time_$clock_t */
Xstd_$call void  cal_$remove_local_offset ();       /* remove local offset from a time_$clock_t */
Xstd_$call void  cal_$get_local_time ();            /* get clock w/ local adjustment */
Xstd_$call void  cal_$write_timezone ();           /* write tz onto boot volume */
Xstd_$call void  cal_$sec_to_clock ();             /* convert seconds to clockt */
Xstd_$call long  cal_$clock_to_sec ();             /* convert clockt to seconds */
Xstd_$call void  cal_$get_info ();                 /* read calendar info from os */
Xstd_$call void  cal_$float_clock ();              /* convert time_$clock_t to d.p. floating */
Xstd_$call void  cal_$add_clock ();                /* add 2 clocks */
Xstd_$call short cal_$sub_clock ();                   /* subtract 2 clocks, return true if */
Xstd_$call short cal_$cmp_clock ();                   /* compare 2 clocks, return: */
X#eject
E!O!F! xstrek/original_code/apollo_inc/cal.ins.c
echo xstrek/original_code/apollo_inc/gpr.ins.c 1>&2
sed -e 's/^X//' > xstrek/original_code/apollo_inc/gpr.ins.c <<'E!O!F! xstrek/original_code/apollo_inc/gpr.ins.c'
X/*  gpr.ins.c, /sys/ins, dpg, 09/16/83
X    graphics primitive package definitions  */
X
X#ifndef gpr_$gpr_ins_c
X#define gpr_$gpr_ins_c
X
X#define gpr_$operation_ok               0x00000000
X#define gpr_$not_initialized            0x06010001
X#define gpr_$already_initialized        0x06010002
X#define gpr_$wrong_display_hardware     0x06010003
X#define gpr_$illegal_for_frame          0x06010004
X#define gpr_$must_borrow_display        0x06010005
X#define gpr_$no_attributes_defined      0x06010006
X#define gpr_$no_more_space              0x06010007
X#define gpr_$dimension_too_big          0x06010008
X#define gpr_$dimension_too_small        0x06010009
X#define gpr_$bad_bitmap                 0x0601000a
X#define gpr_$bad_attribute_block        0x0601000b
X#define gpr_$window_out_of_bounds       0x0601000c
X#define gpr_$source_out_of_bounds       0x0601000d
X#define gpr_$dest_out_of_bounds         0x0601000e
X#define gpr_$invalid_plane              0x0601000f
X#define gpr_$cant_deallocate            0x06010010
X#define gpr_$coord_out_of_bounds        0x06010011
X#define gpr_$invalid_color_map          0x06010012
X#define gpr_$invalid_raster_op          0x06010013
X#define gpr_$bitmap_is_read_only        0x06010014
X#define gpr_$internal_error             0x06010015
X#define gpr_$font_table_full            0x06010016
X#define gpr_$bad_font_file              0x06010017
X#define gpr_$invalid_font_id            0x06010018
X#define gpr_$window_obscured            0x06010019
X#define gpr_$not_in_direct_mode         0x0601001a
X#define gpr_$not_in_polygon             0x0601001b
X#define gpr_$kbd_not_acq                0x0601001c
X#define gpr_$display_not_acq            0x0601001d
X#define gpr_$illegal_pixel_values       0x0601001e
X#define gpr_$illegal_when_imaging       0x0601001f
X#define gpr_$invalid_imaging_format     0x06010020
X#define gpr_$must_release_display       0x06010021
X#define gpr_$cant_mix_modes             0x06010022
X#define gpr_$no_input_enabled           0x06010023
X#define gpr_$duplicate_points           0x06010024
X#define gpr_$array_not_sorted           0x06010025
X#define gpr_$character_not_in_font      0x06010026
X#define gpr_$illegal_fill_pattern       0x06010027
X#define gpr_$illegal_fill_scale         0x06010028
X#define gpr_$incorrect_alignment        0x06010029
X#define gpr_$illegal_text_path          0x0601002a
X#define gpr_$unable_to_rotate_font      0x0601002b
X#define gpr_$font_is_read_only          0x0601002c
X#define gpr_$illegal_pattern_length     0x0601002d
X#define gpr_$illegal_for_pixel_bitmap   0x0601002e
X#define gpr_$too_many_input_windows     0x0601002f
X#define gpr_$illegal_software_version   0x06010030
X#define gpr_$bitmap_not_a_file_bitmap   0x06010031
X#define gpr_$no_color_map_in_file       0x06010032
X#define gpr_$incorrect_decomp_tech      0x06010033
X#define gpr_$no_reset_decomp_in_pgon    0x06010034
X#define gpr_$specific_nonzero_only      0x06010035
X#define gpr_$arc_overflow_16bit_bounds  0x06010036
X#define gpr_$invalid_virt_dev_id        0x06010037
X#define gpr_$bad_decomp_tech            0x06010038
X#define gpr_$empty_rop_prim_set         0x06010039
X#define gpr_$rop_sets_not_equal         0x0601003A
X#define gpr_$must_have_display          0x0601003B
X#define gpr_$style_call_not_active      0x0601003C
X#define gpr_$no_more_fast_buffers       0x0601003D
X#define gpr_$input_buffer_overflow      0x0601003E
X
X#define gpr_$default_list_size 10
X
X#define gpr_$black   ((gpr_$pixel_value_t) 0x000000) /* color value for black */
X#define gpr_$white   ((gpr_$pixel_value_t) 0xffffff) /* color value for white */
X#define gpr_$red     ((gpr_$pixel_value_t) 0xff0000) /* color value for red */
X#define gpr_$green   ((gpr_$pixel_value_t) 0x00ff00) /* color value for green */
X#define gpr_$blue    ((gpr_$pixel_value_t) 0x0000ff) /* color value for blue */
X#define gpr_$cyan    ((gpr_$pixel_value_t) 0x00ffff) /* color value for cyan (blue + green) */
X#define gpr_$magenta ((gpr_$pixel_value_t) 0xff00ff) /* color value for magenta (red + blue) */
X#define gpr_$yellow  ((gpr_$pixel_value_t) 0xffff00) /* color value for yellow (red + green) */
X
X#define gpr_$transparent ((gpr_$pixel_value_t)(-1))  /* pixel value for transparent (no change) */
X#define gpr_$background  ((gpr_$pixel_value_t)(-2))  /* pixel value for window background */
X
X#define gpr_$string_size 256            /* number of chars in a gpr string */
X#define gpr_$max_x_size 8192            /* max # bits in bitmap x dimension */
X#define gpr_$max_y_size 8192            /* max # bits in bitmap y dimension */
X#define gpr_$highest_plane 7            /* max plane number in a bitmap */
X#define gpr_$highest_rgb_plane 31       /* max plane number in a true color bitmap */
X#define gpr_$nil_attribute_desc 0l      /* value of a descriptor of nonexistent attributes */
X#define gpr_$nil_bitmap_desc 0l         /* value of a descriptor of a nonexistent bitmap */
X
X#define gpr_$max_bmf_group 0            /* max group # in external bitmaps */
X#define gpr_$bmf_major_version 1
X#define gpr_$bmf_minor_version 1
X
X#define gpr_$rop_zeros                   0  /* symbolic constants for rops. */
X#define gpr_$rop_src_and_dst             1
X#define gpr_$rop_src_and_not_dst         2
X#define gpr_$rop_src                     3
X#define gpr_$rop_not_src_and_dst         4
X#define gpr_$rop_dst                     5
X#define gpr_$rop_src_xor_dst             6
X#define gpr_$rop_src_or_dst              7
X#define gpr_$rop_not_src_and_not_dst     8
X#define gpr_$rop_src_equiv_dst           9
X#define gpr_$rop_not_dst                10
X#define gpr_$rop_src_or_not_dst         11
X#define gpr_$rop_not_src                12
X#define gpr_$rop_not_src_or_dst         13
X#define gpr_$rop_not_src_or_not_dst     14
X#define gpr_$rop_ones                   15
X
Xtypedef short enum { gpr_$keystroke, gpr_$buttons, gpr_$locator,
X                     gpr_$entered_window, gpr_$left_window,
X                     gpr_$locator_stop, gpr_$no_event, 
X                     gpr_$locator_update, gpr_$dial
X} gpr_$event_t;  
X
X
Xtypedef unsigned long gpr_$keyset_t[8];    /* this is supposed to be set of char */
X
Xtypedef short enum { gpr_$ok_if_obs, gpr_$error_if_obs,
X                     gpr_$pop_if_obs, gpr_$block_if_obs,
X                     gpr_$input_ok_if_obs
X} gpr_$obscured_opt_t;
X
Xtypedef short enum {gpr_$input_ec} gpr_$ec_key_t;
X
Xtypedef void (*gpr_$rwin_pr_t)();
Xtypedef void (*gpr_$rhdm_pr_t)();
X
X            /* the five ways to use this package */
Xtypedef short enum {
X        gpr_$borrow,
X        gpr_$frame,
X        gpr_$no_display,
X        gpr_$direct,
X        gpr_$borrow_nc,
X        gpr_$direct_rgb,
X        gpr_$borrow_rgb,
X        gpr_$borrow_rgb_nc                         
X} gpr_$display_mode_t;
X
X            /* possible display hardware configurations */
Xtypedef short enum {
X        gpr_$bw_800x1024,           /* dn100, dn400 */
X        gpr_$bw_1024x800,           /* dn3xx, dn4xx */
X        gpr_$color_1024x1024x4,     /* dn6xx */
X        gpr_$color_1024x1024x8,     /* dn6xx */
X        gpr_$color_1024x800x4,      /* dn550/560 */
X        gpr_$color_1024x800x8,      /* dn550/560 */
X        gpr_$color_1280x1024x8,     /* dn580 */
X        gpr_$color1_1024x800x8,     /* dn570 */
X        gpr_$color2_1024x800x4,     /* dn3000c */
X        gpr_$bw_1280x1024,          /* dn3000m mono high res */
X        gpr_$color2_1024x800x8,     /* dn3000e */  
X        gpr_$bw5_1024x800,          /* dn3000m mono low  res */
X        gpr_$color2_1280x1024x8     /* dn4000e high res */
X} gpr_$display_config_t;
X
X            /* possible directions for arcs drawn using gpr_$arc_c2p */
Xtypedef short enum {
X        gpr_$arc_ccw,               /* counter-clockwise */
X        gpr_$arc_cw                 /* clockwise */
X} gpr_$arc_direction_t;
X
X            /* possible options on co-incident points in gpr_$arc_c2p */
Xtypedef short enum {
X        gpr_$arc_draw_none,        /* draw nothing */
X        gpr_$arc_draw_full         /* draw full circle */
X} gpr_$arc_option_t;
X
X            /* imaging vs interactive display formats */
Xtypedef short enum {
X        gpr_$interactive,
X        gpr_$imaging_1024x1024x8,
X        gpr_$imaging_512x512x24,
X        gpr_$double_bufferx8,
X        gpr_$imaging_1280x1024x24,
X        gpr_$imaging_windowx24
X} gpr_$imaging_format_t;
X
X            /* unique number corresponding to display controller type */
Xtypedef short enum {
X        gpr_$ctl_none,         /* none or not applicable */
X        gpr_$ctl_mono_1,       /* dn100/400/420/460 */
X        gpr_$ctl_mono_2,       /* dn300/320/330 */
X        gpr_$ctl_color_1,      /* dn600/660/550/560 */
X        gpr_$ctl_color_2,      /* dn580 */
X        gpr_$ctl_color_3,      /* dn570, dn570a */
X        gpr_$ctl_color_4,      /* dn3000c */
X        gpr_$ctl_mono_4,       /* dn3000m mono high res */
X        gpr_$ctl_color_5,      /* dn3000e */
X        gpr_$ctl_mono_5,       /* dn3000m mono low res */
X        gpr_$ctl_color_6       /* dn4000e high res */
X} gpr_$controller_type_t;
X
X            /* unique number corresponding to graphics accelerator processor type */
Xtypedef short enum {
X        gpr_$accel_none,        /* none or not applicable */
X        gpr_$accel_1            /* 3dga */
X} gpr_$accelerator_type_t;
X
X            /* kinds of overlaps between different classes of buffer memory */
Xtypedef short enum {
X        gpr_$hdm_with_bitm_ext,     
X        gpr_$hdm_with_buffers,      
X        gpr_$bitm_ext_with_buffers  
X} gpr_$memory_overlap_t;
X
X            /* legal allocated sizes of pixel cells in bitmap sections for direct access */
Xtypedef short enum {
X        gpr_$alloc_1,       /* one bit per pixel cell (i.e. by-plane) */
X        gpr_$alloc_2,       /* two bits per pixel cell */
X        gpr_$alloc_4,       /* four bits per pixel cell */
X        gpr_$alloc_8,       /* one byte per pixel cell */
X        gpr_$alloc_16,      /* two bytes per pixel cell */
X        gpr_$alloc_32       /* four bytes per pixel cell */
X} gpr_$access_allocation_t;
X
X            /* kinds of color map implementation */
Xtypedef short enum {
X        gpr_$no_invert,         /* not applicable, eg, color or no display */
X        gpr_$invert_simulate,   /* simulated in software */
X        gpr_$invert_hardware    /* implemented in hardware */
X} gpr_$disp_invert_t;
X
Xtypedef short enum {
X        gpr_$rgb_none,
X        gpr_$rgb_24             /* Modes for separate values for RGB */
X} gpr_$rgb_modes_t;
X
Xtypedef short gpr_$rgb_modes_set_t;
X
X
X
X            /* list of display device characteristics */
Xtypedef struct {
X        gpr_$controller_type_t controller_type;    /* type of graphics controller */
X        gpr_$accelerator_type_t accelerator_type;  /* type of graphics accelerator */ 
X        short x_window_origin;           /* x origin of window screen area in pixels */ 
X        short y_window_origin;           /* y origin of window screen area in pixels */ 
X        short x_window_size;             /* x dimension of window screen area in pixels */ 
X        short y_window_size;             /* y dimension of window screen area in pixels */ 
X        short x_visible_size;            /* x dimension of visible screen area in pixels */ 
X        short y_visible_size;            /* y dimension of visible screen area in pixels */ 
X        short x_extension_size;          /* x dimension of maximum extended bitmap size in pixels */ 
X        short y_extension_size;          /* y dimension of maximum extended bitmap size in pixels */ 
X        short x_total_size;              /* x dimension of total buffer area in pixels */ 
X        short y_total_size;              /* y dimension of total buffer area in pixels */ 
X        short x_pixels_per_cm;           /* number of pixels in x dimension per centimeter */ 
X        short y_pixels_per_cm;           /* number of pixels in y dimension per centimeter */ 
X        short n_planes;                  /* number of planes available */ 
X        short n_buffers;                 /* number of display buffers available */ 
X        short delta_x_per_buffer;        /* relative displacement of buffers in x */ 
X        short delta_y_per_buffer;        /* relative displacement of buffers in y */ 
X        short delta_planes_per_buffer;   /* relative displacement of buffers in depth */ 
X        unsigned short mem_overlaps;     /* set of overlaps among classes of buffer memory */ 
X        short x_zoom_max;                /* maximum pixel-replication zoom factor for x */ 
X        short y_zoom_max;                /* maximum pixel-replication zoom factor for y */ 
X        short video_refresh_rate;        /* refresh rate in hz */ 
X        short n_primaries;               /* number of primary colors (1 -> monochrome; 3 -> color */ 
X        short lut_width_per_primary;     /* number of bits in possible shortensity values per primary */ 
X        unsigned short avail_formats;    /* set of available shorteractive/imaging formats */ 
X        unsigned short avail_access;     /* set of available pixel sizes for direct access */ 
X        short access_address_space;      /* number of 1kb pages of address space available for direct access */ 
X        gpr_$disp_invert_t invert;       /* INVert implemention */
X        short num_lookup_tables;         /* Number of color lookup tables */
X        gpr_$rgb_modes_set_t rgb_color;  /* Modes for separate values for RGB */
X} gpr_$disp_char_t;
X
X            /* bitmap coordinates */
Xtypedef short gpr_$coordinate_t;
X
X            /* lists of bitmap coordinates */
Xtypedef gpr_$coordinate_t gpr_$coordinate_array_t[16384];
X
X            /* bitmap positions */
Xtypedef struct {
X            gpr_$coordinate_t x_coord, y_coord;
X} gpr_$position_t;
X
X            /* bitmap offsets */
Xtypedef struct {
X            gpr_$coordinate_t x_size, y_size;
X} gpr_$offset_t;
X
X            /* windows on a bitmap */
Xtypedef struct {
X            gpr_$position_t window_base;
X            gpr_$offset_t window_size;
X} gpr_$window_t;
X
Xtypedef gpr_$window_t gpr_$window_list_t[gpr_$default_list_size];
X
X            /* horizontal line segments */
Xtypedef struct {
X            gpr_$coordinate_t x_coord_l, x_coord_r, y_coord;
X} gpr_$horiz_seg_t;
X
X            /* trapezoids with horizontal bases:  defined as 2 horizontal
X              line segments, top and bottom */
Xtypedef struct {
X            gpr_$horiz_seg_t top, bot;
X} gpr_$trap_t;
X
X            /* lists of trapezoids with horizontal bases */
Xtypedef gpr_$trap_t gpr_$trap_list_t[gpr_$default_list_size];
X
X            /* triangles */
Xtypedef struct {
X            gpr_$position_t p1, p2, p3;
X            short           winding_no;
X} gpr_$triangle_t;
X
X            /* lists of triangles */
Xtypedef gpr_$triangle_t gpr_$triangle_list_t[gpr_$default_list_size];
X
X            /* filling winding number specifications */
Xtypedef short enum {
X         gpr_$parity, 
X         gpr_$nonzero, 
X         gpr_$specific 
X} gpr_$winding_set_t;
X
X            /* triangle filling criteria */ 
Xtypedef struct {
X         gpr_$winding_set_t  wind_type;
X         short               winding_no
X} gpr_$triangle_fill_criteria_t;
X
X            /* area decomposition techniques */ 
Xtypedef short enum {
X         gpr_$fast_traps,
X         gpr_$precise_traps,
X         gpr_$non_overlapping_tris,
X         gpr_$render_exact
X} gpr_$decomp_technique_t;
X
X            /* graphics primitive strings */
Xtypedef char gpr_$string_t[gpr_$string_size];
X
X            /* bitmap plane numbers */
Xtypedef unsigned short gpr_$plane_t;
Xtypedef unsigned short gpr_$rgb_plane_t;
X
X            /* pointer to main mem bitmap */
Xtypedef char *gpr_$plane_ptr_t;
X
X            /* bitmap plane masks (bit vector) */
Xtypedef short gpr_$mask_t; 
Xtypedef linteger gpr_$mask_32_t; 
X
X            /* color values */
Xtypedef linteger gpr_$color_t;
X
X            /* pixel values */
Xtypedef linteger gpr_$pixel_value_t;
X
X            /* arrays of color values */
Xtypedef gpr_$color_t gpr_$color_vector_t[256];
X
X            /* arrays of pixel values */
Xtypedef gpr_$pixel_value_t gpr_$pixel_array_t[131073];
X
X            /* raster operation opcodes */
Xtypedef unsigned short gpr_$raster_op_t;
X
X            /* arrays of raster operation opcodes */
Xtypedef gpr_$raster_op_t gpr_$raster_op_array_t[32];
X
X            /* raster op prim set elements */ 
Xtypedef short enum { gpr_$rop_blt, gpr_$rop_line, gpr_$rop_fill } gpr_$rop_prim_set_elems_t;
X
X            /* raster op prim set */
Xtypedef short gpr_$rop_prim_set_t;
X
X            /* scalar type for directions */
Xtypedef short enum {gpr_$up, gpr_$down, gpr_$left, gpr_$right} gpr_$direction_t;
X
X            /* line drawing styles */
Xtypedef short enum {gpr_$solid, gpr_$dotted} gpr_$linestyle_t;
X
Xtypedef short gpr_$line_pattern_t[4];
X
X            /* attribute block descriptors */
Xtypedef linteger gpr_$attribute_desc_t;
X
X            /* bitmap descriptors */
Xtypedef linteger gpr_$bitmap_desc_t;
X
Xtypedef struct {
X    short major,minor;
X} gpr_$version_t;
X
X
Xtypedef struct {
X    short n_sects;
X    short pixel_size;
X    short allocated_size;
X    short bytes_per_line;
X    linteger       bytes_per_sect;
X    char          *storage_offset;
X} gpr_$bmf_group_header_t;
X
Xtypedef gpr_$bmf_group_header_t gpr_$bmf_group_header_array_t[gpr_$max_bmf_group+1];
X
Xtypedef short enum {gpr_$create,gpr_$update, gpr_$write, gpr_$readonly} gpr_$access_mode_t;
X
Xtypedef linteger gpr_$virt_dev_id_t;
X
Xtypedef struct {
X    short n_sects;
X    short pixel_size;
X    short allocated_size;
X    short bytes_per_line;
X    linteger       bytes_per_sect;
X    char          *storage_offset;
X} gpr_$group_header_t;
X
Xtypedef short enum {gpr_$undisturbed_buffer, gpr_$clear_buffer, gpr_$copy_buffer} gpr_$double_buffer_option_t;
X
Xtypedef union {
X            struct {
X                linteger dial_number;
X                linteger dial_value;
X            } gpr_$dial;
X        } gpr_$event_data_t;
X
X#eject
X/*  initialization and termination.  */
X
X
X
X/*  gpr_$init initializes the graphics primitive package.  */
X
Xstd_$call void   gpr_$init ();
X
X
X
X/*  gpr_$terminate terminates this package's operation.  */
X
Xstd_$call void   gpr_$terminate ();
X#eject
X/*  set and inquire operations for the display.  */
X
X/*  gpr_$inq_config returns the current display configuration.  */
X
Xstd_$call void   gpr_$inq_config ();
X
X
X
X/* gpr_$inq_disp_characterisitics returns the current display characterisitcs */
X
Xstd_$call void   gpr_$inq_disp_characteristics ();
X
X
X
X/*  gpr_$set_color_map gives new values for the color map.  */
X
Xstd_$call void   gpr_$set_color_map ();
X
X
X
X/*  gpr_$inq_color_map returns current values in the color map.  */
X
Xstd_$call void   gpr_$inq_color_map ();
X
X
X
X/*  gpr_$set_bitmap_file_color_map stores a color map with a bitmap file */
X
Xstd_$call void   gpr_$set_bitmap_file_color_map ();
X
X
X
X/*  gpr_$inq_bitmap_file_color_map returns the color map stored with a bitmap file */
X
Xstd_$call void   gpr_$inq_bitmap_file_color_map ();
X
X
X
X/*  gpr_$set_cursor_pattern loads a cursor pattern.  */
X
Xstd_$call void   gpr_$set_cursor_pattern ();
X
X
X
X/*  gpr_$set_cursor_active specifies whether the cursor should be on or off.  */
X
Xstd_$call void   gpr_$set_cursor_active ();
X
X
X
X/*  gpr_$set_cursor_position gives the position at which the cursor is
X   to be displayed, in the current bitmap.  */
X
Xstd_$call void   gpr_$set_cursor_position ();
X
X
X/* gpr_$set_origin gives the cursor-relative psoition of its pixel
X   which is to be placed at the cursor position.  */
X
Xstd_$call void   gpr_$set_cursor_origin ();
X
X
X/*  gpr_$inq_cursor returns information about the cursor.  */
X
Xstd_$call void   gpr_$inq_cursor ();
X
X
X
X/*  gpr_$wait_frame causes the color display hardware to defer processing
X   further requests until the next end-of-frame.  */
X
Xstd_$call void   gpr_$wait_frame ();
X#eject
X/*  bitmap control functions.  */
X
X
X
X/*  gpr_$set_bitmap establishes the current bitmap for subsequent operations.  */
X
Xstd_$call void   gpr_$set_bitmap ();
X
X
X
X/*  gpr_$inq_bitmap returns a descriptor of the current bitmap.  */
X
Xstd_$call void   gpr_$inq_bitmap ();
X
X
X
X/*  gpr_$allocate_bitmap allocates a bitmap in main memory.  */
X
Xstd_$call void   gpr_$allocate_bitmap ();
X
X
X
X/*  gpr_$allocate_bitmap_nc allocates a bitmap in main memory without zeroing it.  */
X
Xstd_$call void   gpr_$allocate_bitmap_nc ();
X
X
X
X/*  gpr_$allocate_hdm_bitmap allocates a bitmap in hidden_display memory.  */
X
Xstd_$call void   gpr_$allocate_hdm_bitmap ();
X
X
X
X/*  gpr_$open_bitmap_file obtains access to an external bitmap  */
X
Xstd_$call void gpr_$open_bitmap_file ();
X
X
X
X/*  gpr_$deallocate_bitmap deallocates a bitmap allocated by allocate_bitmap.  */
X
Xstd_$call void   gpr_$deallocate_bitmap ();
X
X
X
X/*  gpr_$inq_bitmap_pointer returns a pointer to the storage/display memory
X   for the given bitmap and the number of words each scan line occupies.
X   this information can be used to directly manipulate the bits in the bitmap.  */
X
Xstd_$call void   gpr_$inq_bitmap_pointer ();
X
X
X
X/*  gpr_$inq_bitmap_position returns the position of the upper left corner of
X   the specified bitmap. this is normally the screen position, although it does
X   have some significance for main memory bitmaps.  it is not meaningful if the
X   bitmap is a dm pad (i.e. a frame mode bitmap).                               */
X
Xstd_$call void  gpr_$inq_bitmap_position ();
X
X
X
X/*  gpr_$inq_bm_bit_offset returns the number of bits in the most significant
X   part of the first word of each scanline which are not part of the given bitmap.
X   in other words, the offset is the number of bits between a 16-bit word boundary
X   and the left edge of the bitmap.
X   currently this number can only be nonzero for direct graphics bitmaps.  */
X
Xstd_$call void   gpr_$inq_bm_bit_offset ();
X
X
X
X/*  gpr_$select_color_frame selects whether frame 0 (top 1024 lines) or
X   frame 1 (bottom 1024 lines) is visible.  normally frame 0 is visible.  */
X
Xstd_$call void   gpr_$select_color_frame ();
X
X
X
X/*  gpr_$remap_color_memory sets the plane of frame 0 of color display memory
X   (normally visible) which is mapped at the address returned by inq_bitmap_pointer.  */
X
Xstd_$call void   gpr_$remap_color_memory ();
X
X
X
X/*  gpr_$remap_color_memory_1 sets the plane of frame 1 of color display memory
X   (normally hidden) which is mapped at the address returned by inq_bitmap_pointer.  */
X
Xstd_$call void   gpr_$remap_color_memory_1 ();
X
X
X
X/*  gpr_$color_zoom sets the zoom scale factors for the color display.  */
X
Xstd_$call void   gpr_$color_zoom ();
X
X
X
X/*  gpr_$enable_direct_access waits for display hardware to finish current
X   operations so that the user can access display memory directly.  */
X
Xstd_$call void   gpr_$enable_direct_access ();
X
X
X
X/*  gpr_$set_bitmap_dimensions changes the size and number of planes
X   of the given bitmap.  */
X
Xstd_$call void   gpr_$set_bitmap_dimensions ();
X
X
X
X/*  gpr_$inq_bitmap_dimensions returns the size and number of planes
X   of the given bitmap.  */
X
Xstd_$call void   gpr_$inq_bitmap_dimensions ();
X
X
X
X/*  gpr_$allocate_attribute_block allocates an attribute block,
X   initialized to default settings.  */
X
Xstd_$call void   gpr_$allocate_attribute_block ();
X
X
X
X/*  gpr_$deallocate_attribute_block deallocates an attribute block allocated
X   by allocate_attribute_block.  */
X
Xstd_$call void   gpr_$deallocate_attribute_block ();
X
X
X
X/*  gpr_$set_attribute_block establishes the given attributes as the attributes
X   of the current bitmap.  */
X
Xstd_$call void   gpr_$set_attribute_block ();
X
X
X
X/*  gpr_$attribute_block returns as the function value a descriptor of
X   the attributes of the given bitmap.  */
X
Xstd_$call gpr_$attribute_desc_t gpr_$attribute_block ();
X#eject
X/*  set and inquire operations for bitmap attributes.  */
X
Xstd_$call void   gpr_$raster_op_prim_set ();
X
Xstd_$call void   gpr_$inq_raster_op_prim_set ();
X
X
X/*  gpr_$set_attribute sets an attribute in the current bitmap.
X   the list of calls follows.  */
X
Xstd_$call void   gpr_$set_clip_window ();
X
Xstd_$call void   gpr_$set_clipping_active ();
X
Xstd_$call void   gpr_$set_text_font ();
X
Xstd_$call void   gpr_$set_text_path ();
X
Xstd_$call void   gpr_$set_coordinate_origin ();
X
Xstd_$call void   gpr_$set_plane_mask ();
X
Xstd_$call void   gpr_$set_draw_value ();
X
Xstd_$call void   gpr_$set_text_value ();
X
Xstd_$call void   gpr_$set_text_background_value ();
X
Xstd_$call void   gpr_$set_fill_value ();
X
Xstd_$call void   gpr_$set_fill_background_value ();
X
Xstd_$call void   gpr_$set_fill_pattern ();
X
Xstd_$call void   gpr_$set_raster_op ();
X
Xstd_$call void   gpr_$set_linestyle ();
X
Xstd_$call void   gpr_$set_line_pattern ();
X
Xstd_$call void   gpr_$set_draw_pattern ();
X
Xstd_$call void   gpr_$set_draw_width ();
X
Xstd_$call void   gpr_$set_character_width ();
X
Xstd_$call void   gpr_$set_horizontal_spacing ();
X
Xstd_$call void   gpr_$set_space_size ();
X
Xstd_$call void   gpr_$set_raster_op_mask ();
X
X
X
X/*  gpr_$inq_attributes returns the current settings of a group
X   of attributes for the current bitmap.  */
X
Xstd_$call void   gpr_$inq_constraints ();
X
Xstd_$call void   gpr_$inq_text ();
X
Xstd_$call void   gpr_$inq_text_path ();
X
Xstd_$call void   gpr_$inq_coordinate_origin ();
X
Xstd_$call void   gpr_$inq_draw_value ();
X
Xstd_$call void   gpr_$inq_text_values ();
X
Xstd_$call void   gpr_$inq_fill_value ();
X
Xstd_$call void   gpr_$inq_fill_background_value ();
X
Xstd_$call void   gpr_$inq_fill_pattern ();
X
Xstd_$call void   gpr_$inq_raster_ops ();
X
Xstd_$call void   gpr_$inq_linestyle ();
X
Xstd_$call void   gpr_$inq_line_pattern ();
X
Xstd_$call void   gpr_$inq_draw_pattern ();
X
Xstd_$call void   gpr_$inq_line_width ();
X
Xstd_$call void   gpr_$inq_character_width ();
X
Xstd_$call void   gpr_$inq_horizontal_spacing ();
X
Xstd_$call void   gpr_$inq_space_size ();
X
Xstd_$call void   gpr_$inq_plane_mask_32 ();
X
Xstd_$call gpr_$pixel_value_t  gpr_$inq_background ();
X
Xstd_$call gpr_$pixel_value_t  gpr_$inq_foreground ();
X
X#eject
X/*  drawing operations.  */
X
X
X
X/*  gpr_$move sets the cp to the given position.  */
X
Xstd_$call void   gpr_$move ();
X
X
X
X/*  gpr_$inq_cp returns the current position.  */
X
Xstd_$call void   gpr_$inq_cp ();
X
X
X
X/*  gpr_$line draws a line from the cp to the given position
X   and sets the cp to the given position.  */
X
Xstd_$call void   gpr_$line ();
X
X
X
X/*  gpr_$polyline does a series of lines, starting from the cp.  */
X
Xstd_$call void   gpr_$polyline ();
X
X
X
X/*  gpr_$multiline does a series of alternate moves and lines. */
X
Xstd_$call void   gpr_$multiline ();
X
X
X
X/*  gpr_$draw_box draws a rectangular box  */
X
Xstd_$call void   gpr_$draw_box ();
X
X
X
X/*  gpr_$arc_3p draw an arc from current point through two points p2 and p3. */
X
Xstd_$call void   gpr_$arc_3p ();
X
X
X
X/*  gpr_$arc_c2p draw an arc centered at point `center', starting
X    at current point, going clockwise or counterclockwise according
X    to `direction', and ending at point p2, or at the line going through
X    `center' and p2.  The current position is updated to the actual
X    end point. */
X
Xstd_$call void   gpr_$arc_c2p ();
X
X
X
X/*  gpr_$circle draws a circle of radius around point center. */
X
Xstd_$call void   gpr_$circle ();
X
X
X
X/*  gpr_$circle_filled draws a filled circle of radius around point center. */
X
Xstd_$call void   gpr_$circle_filled ();
X
X
X
X/*  gpr_$spline_cubic_p draws a parametric cubic spline through the control points. */
X
Xstd_$call void   gpr_$spline_cubic_p ();
X
X
X
X/*  gpr_$spline_cubic_x draws a cubic spline as a function of x through the control points. */
X
Xstd_$call void   gpr_$spline_cubic_x ();
X
X
X
X/*  gpr_$spline_cubic_y draws a cubic spline as a function of y through the control points. */
X
Xstd_$call void   gpr_$spline_cubic_y ();                       
X#eject
X/*  text operations.  */
X
X
X
X/*  gpr_$load_font_file loads a font contained in a file into an appro-
X   priate area (based on the current display mode and configuration).  */
X
Xstd_$call void   gpr_$load_font_file ();
X
X
X
X/*  gpr_$unload_font_file unloads a font that has been loaded by
X   load_font_file.  */
X
Xstd_$call void   gpr_$unload_font_file ();
X
X
X
X/*  gpr_$text writes text to a bitmap from the current position ("cp").  */
X
Xstd_$call void   gpr_$text ();
X
X
X
X/*  gpr_$inq_text_extent returns the x- and y-offsets the given string
X   would span if written with text.  */
X
Xstd_$call void   gpr_$inq_text_extent ();
X
X
X
X/*  gpr_$inq_text_offset returns the x- and y-offsets that must be added to the
X   coordinates of the desired upper left pixel of the string to give the pixel
X   from which the text call should be made, and the x_offset of the pixel
X   which would be the updated cp.  */
X
Xstd_$call void   gpr_$inq_text_offset ();
X
X
X
X/*  gpr_$replicate_font creates and loads a read/write copy of the original font. */
X
Xstd_$call void   gpr_$replicate_font ();
X#eject
X/*  data transfer operations.  */
X
X
X
X/*  gpr_$clear clears the current bitmap to a given pixel value.  */
X
Xstd_$call void   gpr_$clear ();
X
X
X
X/*  gpr_$read_pixels reads the pixels from the given window of the current
X   bitmap and stores them in a pixel array.  */
X
Xstd_$call void   gpr_$read_pixels ();
X
X
X
X/*  gpr_$write_pixels writes the pixels from a pixel array into the given
X   window of the current bitmap.  */
X
Xstd_$call void   gpr_$write_pixels ();
X#eject
X/*  blt operations.  */
X
X
X
X/*  gpr_$pixel_blt moves a rectangle of whole pixels from the source
X   bitmap to a position in the current bitmap.  */
X
Xstd_$call void   gpr_$pixel_blt ();
X
X
X/*  gpr_$bit_blt moves a rectangle of bits from a plane of the source
X   bitmap to a position in a plane of the current bitmap.  */
X
Xstd_$call void   gpr_$bit_blt ();
X
X
X/*  gpr_$additive_blt moves a rectangle of bits from a plane of the source
X   bitmap to a position in every plane of the current bitmap.  */
X
Xstd_$call void   gpr_$additive_blt ();
X#eject
X/*  fill operations.  */
X
X
X
X/*  gpr_$rectangle fills a rectangle in the current bitmap.  */
X
Xstd_$call void   gpr_$rectangle ();
X
X
X
X/*  gpr_$trapezoid fills a trapezoid in the current bitmap.  */
X
Xstd_$call void   gpr_$trapezoid ();
X
X
X
X/*  gpr_$multitrapezoid fills a list of trapezoids in the current bitmap.  */
X
Xstd_$call void   gpr_$multitrapezoid ();
X
X
X
X/*  gpr_$triangle fills a triangle in the current bitmap.  */
X
Xstd_$call void   gpr_$triangle ();
X
X
X
X/*  gpr_$multitriangle fills a list of triangles in the current bitmap.  */
X
Xstd_$call void   gpr_$multitriangle ();
X
X
X
X/*  gpr_$start_pgon starts a polygon boundary loop.  */
X
Xstd_$call void   gpr_$start_pgon ();
X
X
X
X/*  gpr_$pgon_polyline defines a series of line segments as part of
X   the current polygon boundary loop.  */
X
Xstd_$call void   gpr_$pgon_polyline ();
X
X
X
X/*  gpr_$close_fill_pgon closes and fills the currently open polygon.  */
X
Xstd_$call void   gpr_$close_fill_pgon ();
X
X
X
X/*  gpr_$close_return_pgon closes the currently open polygon,
X   decomposes it, and returns the list of trapezoids.  */
X
Xstd_$call void   gpr_$close_return_pgon ();
X
X
X
X/*  gpr_$close_return_pgon_tri closes the currently open polygon,
X   decomposes it, and returns the list of triangles.  */
X
Xstd_$call void   gpr_$close_return_pgon_tri ();
X
X
X
X/* gpr_$pgon_decomp_technique establishes the polygon decomposition technique
X   to be used.  */
X
Xstd_$call void   gpr_$pgon_decomp_technique ();
X
X/* gpr_$inq_pgon_decomp_technique returns the polygon decomposition technique
X   being used.  */
X
Xstd_$call void   gpr_$inq_pgon_decomp_technique ();
X
X
Xstd_$call void   gpr_$set_triangle_fill_criteria ();
Xstd_$call void   gpr_$inq_triangle_fill_criteria ();
X#eject
X
X
X/* direct graphics */
X
X
Xstd_$call void gpr_$set_acq_time_out();
X
X
X/* gpr_set_obscured_opt sets obscured selection attribute for display in
X  direct mode */
X
Xstd_$call void gpr_$set_obscured_opt();
X
X
X/* gpr_$acquire_display gives the user exclusive access to all display operations
X  in the acquired window */
X
Xstd_$call boolean gpr_$acquire_display();
X
X
X/* gpr_$inq_vis_list returns list of visible subwindows when a window is obscured */
X
Xstd_$call void gpr_$inq_vis_list();
X
X
X/* gpr_$force_release releases the display regardless of how many times it
X  was previously acquired */
X
Xstd_$call void gpr_$force_release();
X
X
X/* gpr_$release_display will release the display only if acq_rel_cnt is 1 */
X
Xstd_$call void gpr_$release_display();
X
X
X/* gpr_$set_refresh_entry provides two procedures which will refresh the user's
X  window and refresh hidden display memory */
X
Xstd_$call void gpr_$set_refresh_entry();
X
X
X/* gpr_$inq_refresh_entry returns the two procedures which will refresh the
X   window and refresh hidden display memory.  */
X
Xstd_$call void   gpr_$inq_refresh_entry ();
X
X
X/* gpr_$set_auto_refresh tells dm to save bitmap and refresh screen when needed */
X
Xstd_$call void gpr_$set_auto_refresh();
X
X
X/* gpr_$event_wait hangs until input or time out; returns boolean to indicate
X  obscured window */
X
Xstd_$call boolean gpr_$event_wait();
X
X
X/* gpr_$cond_event_wait returns immediately and reports if any input */
X
Xstd_$call boolean gpr_$cond_event_wait();
X
X
X/* gpr_$enable_input enables event type and selected set of keys to be
X   recognized by event_wait */
X
Xstd_$call void gpr_$enable_input();
X
X
X/* gpr_$disable_input disables event type */
X
Xstd_$call void gpr_$disable_input();
X
X
X/* gpr_$get_ec gets event count */
X
Xstd_$call void gpr_$get_ec();
X
X/* gpr_$set_input_sid establishes the stream id for gpr input in frame mode
X   if not standard input */
X
Xstd_$call void gpr_$set_input_sid();
X
X/* gpr_$set_window_id sets the character identifying the current displayed
X   bitmap for input identification purposes */
X
Xstd_$call void gpr_$set_window_id();
X
X/* gpr_$inq_window_id returns the character identifying the current displayed
X   bitmap for input identification purposes */
X
Xstd_$call void gpr_$inq_window_id();
X
X#eject
X
X/* imaging format calls */
X
X/* gpr_$set_imaging_format sets the dn600 display format */
X
Xstd_$call void gpr_$set_imaging_format();
X
X/* gpr_$inq_imaging_format returns the current dn600 display format */
X
Xstd_$call void gpr_$inq_imaging_format();
X#eject
X
X/* blank timeout calls */
X
X/* gpr_$set_blank_timeout sets the timeout value for screen blanking */
X
Xstd_$call void   gpr_$set_blank_timeout ();
X
X/* gpr_$inq_blank_timeout returns the timeout value for screen blanking */
X
Xstd_$call void   gpr_$inq_blank_timeout ();
X#eject
X    
X/* gpr_$return_virt_dev_id returns the virtual device id */
X
Xstd_$call void gpr_$return_virt_dev_id();
X
X/* gpr_$validate_virt_dev restores the virtual device to the  attributes 
X   that the gpr state has saved */
X
Xstd_$call void gpr_$validate_virt_dev();
X
X/* GPR_$SET_PLANE_MASK_32 sets the plane mask for a rgb bitmap */
Xstd_$call void gpr_$set_plane_mask_32();
X
Xstd_$call void gpr_$allocate_buffer();
X
Xstd_$call void gpr_$deallocate_buffer();
X
Xstd_$call void gpr_$select_display_buffer();
X
Xstd_$call void gpr_$inq_visible_buffer();
X               
Xstd_$call void gpr_$make_bitmap_from_array();
X
X/* gpr_$inq_event_data returns additional event data */
Xstd_$call void gpr_$inq_event_data();
X
X#endif /* gpr_$gpr_ins_c */
X         
X#eject
X
E!O!F! xstrek/original_code/apollo_inc/gpr.ins.c
echo xstrek/original_code/apollo_inc/kbd.ins.c 1>&2
sed -e 's/^X//' > xstrek/original_code/apollo_inc/kbd.ins.c <<'E!O!F! xstrek/original_code/apollo_inc/kbd.ins.c'
X/*   KBD.INS.C, /sys/ins, JBT, 05/08/85 
X
X   Changes:
X      10/01/85 ltk  added F0, F9 and keypad escape
X      05/08/85 ems  added mouse button definitions. */
X
X/*   Definitions for non-ascii keyboard keys, for use in borrow
X    mode and direct mode in gpr_$event_wait.   */
X
X
X#define KBD_$L1  0x81
X#define KBD_$L2  0x82
X#define KBD_$L3  0x83
X#define KBD_$L4  0x84
X#define KBD_$L5  0x85
X#define KBD_$L6  0x86
X#define KBD_$L7  0x87
X#define KBD_$L8  0x88
X#define KBD_$L9  0x89
X#define KBD_$LA  0x8A
X#define KBD_$LB  0x8B
X#define KBD_$LC  0x8C
X#define KBD_$LD  0x8D
X#define KBD_$LE  0x8E
X#define KBD_$LF  0x8F
X    
X#define KBD_$L1U 0xA1
X#define KBD_$L2U 0xA2
X#define KBD_$L3U 0xA3
X#define KBD_$L4U 0xA4
X#define KBD_$L5U 0xA5
X#define KBD_$L6U 0xA6
X#define KBD_$L7U 0xA7
X#define KBD_$L8U 0xA8
X#define KBD_$L9U 0xA9
X#define KBD_$LAU 0xAA
X#define KBD_$LBU 0xAB
X#define KBD_$LCU 0xAC
X#define KBD_$LDU 0xAD
X#define KBD_$LEU 0xAE
X#define KBD_$LFU 0xAF
X
X#define KBD_$L1S 0xC9
X#define KBD_$L2S 0xCA
X#define KBD_$L3S 0xCB
X#define KBD_$L4S 0xCC
X#define KBD_$L5S 0xCD
X#define KBD_$L6S 0xCE
X#define KBD_$L7S 0xCF
X#define KBD_$L8S 0xD8
X#define KBD_$L9S 0xD9
X#define KBD_$LAS 0xDA
X#define KBD_$LBS 0xDB
X#define KBD_$LCS 0xDC
X#define KBD_$LDS 0xDD
X#define KBD_$LES 0xDE
X#define KBD_$LFS 0xDF
X
X#define KBD_$L1A 0xE8
X#define KBD_$L2A 0xE9
X#define KBD_$L3A 0xEA
X#define KBD_$L1AS 0xEC
X#define KBD_$L2AS 0xED
X#define KBD_$L3AS 0xEE
X#define KBD_$L1AU 0xF8
X#define KBD_$L2AU 0xF9
X#define KBD_$L3AU 0xFA
X
X#define KBD_$R1  0x90
X#define KBD_$R2  0x91
X#define KBD_$R3  0x92
X#define KBD_$R4  0x93
X#define KBD_$R5  0x94
X#define KBD_$R6  0xEB
X    
X#define KBD_$R1U 0xB0
X#define KBD_$R2U 0xB1
X#define KBD_$R3U 0xB2
X#define KBD_$R4U 0xB3
X#define KBD_$R5U 0xB4
X#define KBD_$R6U 0xFB
X
X#define KBD_$R1S 0xC8
X#define KBD_$R2S 0xB5
X#define KBD_$R3S 0xB6
X#define KBD_$R4S 0xB7
X#define KBD_$R5S 0xB8
X#define KBD_$R6S 0xEF
X
X#define KBD_$BS  0x95
X#define KBD_$CR  0x96
X#define KBD_$TAB 0x97
X#define KBD_$STAB 0x98
X#define KBD_$CTAB 0x99
X
X#define KBD_$F1  0xC0
X#define KBD_$F2  0xC1
X#define KBD_$F3  0xC2
X#define KBD_$F4  0xC3
X#define KBD_$F5  0xC4
X#define KBD_$F6  0xC5
X#define KBD_$F7  0xC6
X#define KBD_$F8  0xC7
X#define KBD_$F9  0xBB
X#define KBD_$F0  0xBA
X    
X#define KBD_$F1S 0xD0
X#define KBD_$F2S 0xD1
X#define KBD_$F3S 0xD2
X#define KBD_$F4S 0xD3
X#define KBD_$F5S 0xD4
X#define KBD_$F6S 0xD5
X#define KBD_$F7S 0xD6
X#define KBD_$F8S 0xD7
X#define KBD_$F9S 0xBF
X#define KBD_$F0S 0xBE
X
X#define KBD_$F1U 0xE0
X#define KBD_$F2U 0xE1
X#define KBD_$F3U 0xE2
X#define KBD_$F4U 0xE3
X#define KBD_$F5U 0xE4
X#define KBD_$F6U 0xE5
X#define KBD_$F7U 0xE6
X#define KBD_$F8U 0xE7
X#define KBD_$F9U 0xBD
X#define KBD_$F0U 0xBC
X                    
X#define KBD_$F1C 0xF0
X#define KBD_$F2C 0xF1
X#define KBD_$F3C 0xF2
X#define KBD_$F4C 0xF3
X#define KBD_$F5C 0xF4
X#define KBD_$F6C 0xF5
X#define KBD_$F7C 0xF6
X#define KBD_$F8C 0xF7
X#define KBD_$F9C 0xFD
X#define KBD_$F0C 0xFC
X
X    /* mouse buttons */
X
X#define KBD_$M1D 'a' /* left-down   */
X#define KBD_$M1U 'A' /* left-up     */ 
X#define KBD_$M2D 'b' /* middle-down */
X#define KBD_$M2U 'B' /* middle-up   */
X#define KBD_$M3D 'c' /* right-down  */
X#define KBD_$M3U 'C' /* right-up    */
X
X    /* some tablets have 4 button pucks */
X
X#define KBD_$M4D 'd'
X#define KBD_$M4U 'D'
X
X    /* the following names refer to the key cap names on the APOLLO 1 and
X      APOLLO 2 keyboards. These names can be used only if the key caps are
X      in the standard APOLLO locations.  IF a 1 follows a defined name then 
X      the key cap name refers to an APOLLO 1 keyboard if a 2 follows then 
X      the name refers to an APOLLO 2.  A '1' or '2'  has only been added to 
X      key cap names that are common to both keyboards, but the key caps are in 
X      different locations on the keyboards. */
X
X
X    /* key caps common to both APOLLO 1 and APOLLO 2 keyboards */
X    
X#define KBD_$LINE_DEL     KBD_$L2
X#define KBD_$CHAR_DEL     KBD_$L3                            
X#define KBD_$CMD          KBD_$L5
X#define KBD_$UP_ARROW     KBD_$L8
X#define KBD_$LEFT_ARROW   KBD_$LA
X#define KBD_$NEXT_WIN     KBD_$LB
X#define KBD_$RIGHT_ARROW  KBD_$LC
X#define KBD_$DOWN_ARROW   KBD_$LE
X#define KBD_$L_BAR_ARROW  KBD_$L4
X#define KBD_$R_BAR_ARROW  KBD_$L6
X#define KBD_$L_BOX_ARROW  KBD_$L7
X#define KBD_$R_BOX_ARROW  KBD_$L9
X#define KBD_$READ         KBD_$R3
X#define KBD_$EDIT         KBD_$R4
X     
X    
X    /* APOLLO 1 keys */
X
X#define KBD_$DOWN_BOX_ARROW1  KBD_$LD
X#define KBD_$UP_BOX_ARROW1    KBD_$LF
X#define KBD_$INS_MODE1        KBD_$L1
X#define KBD_$MARK1            KBD_$R1
X#define KBD_$SHELL1           KBD_$R2
X#define KBD_$HOLD1            KBD_$R5
X
X
X    /* APOLLO 2 keys */
X                     
X#define KBD_$DOWN_BOX_ARROW2  KBD_$LF
X#define KBD_$UP_BOX_ARROW2    KBD_$LD
X#define KBD_$INS_MODE2        KBD_$L1S
X#define KBD_$COPY             KBD_$L1A
X#define KBD_$CUT              KBD_$L1AS
X#define KBD_$PASTE            KBD_$L2A
X#define KBD_$UNDO             KBD_$L2AS
X#define KBD_$MARK2            KBD_$L1
X#define KBD_$SHELL2           KBD_$L5S
X#define KBD_$GROW             KBD_$L3A
X#define KBD_$MOVE             KBD_$L3AS
X#define KBD_$POP              KBD_$R1
X#define KBD_$AGAIN            KBD_$R2
X#define KBD_$EXIT             KBD_$R5
X#define KBD_$HOLD2            KBD_$R6
X#define KBD_$SAVE             KBD_$R4S
X#define KBD_$ABORT            KBD_$R5S
X#define KBD_$HELP             KBD_$R6S
X
X    /* APOLLO 3 key */
X
X#define KBD_$NUMERIC_KEYPAD   0x9E
E!O!F! xstrek/original_code/apollo_inc/kbd.ins.c
echo xstrek/original_code/apollo_inc/smdu.ins.c 1>&2
sed -e 's/^X//' > xstrek/original_code/apollo_inc/smdu.ins.c <<'E!O!F! xstrek/original_code/apollo_inc/smdu.ins.c'
X/*  SMDU.INS.C, /sys/ins, ers, 09/14/83
X    Display driver definitions - for users and display manager
X*/
X
X
X#define smd_$operation_ok         0x00000000
X#define smd_$illegal_unit         0x00130001
X#define smd_$font_not_loaded      0x00130002
X#define smd_$font_table_full      0x00130003
X#define smd_$illegal_caller       0x00130004
X#define smd_$font_too_large       0x00130005
X#define smd_$hdmt_unload_err      0x00130006
X#define smd_$illegal_direction    0x00130007
X#define smd_$unexp_blt_inuse      0x00130008
X#define smd_$protocol_viol        0x00130009
X#define smd_$too_many_pages       0x0013000A
X#define smd_$unsupported_font_ver 0x0013000B
X#define smd_$invalid_buffer_size  0x0013000C
X#define smd_$display_map_error    0x0013000D
X#define smd_$borrow_error         0x0013000E
X#define smd_$display_in_use       0x0013000F
X#define smd_$access_denied        0x00130010
X#define smd_$return_error         0x00130011
X#define smd_$not_borrowed         0x00130012
X#define smd_$cant_borrow_both     0x00130013
X#define smd_$already_borrowed     0x00130014
X#define smd_$invalid_pos          0x00130015
X#define smd_$invalid_window       0x00130016
X#define smd_$invalid_length       0x00130017
X#define smd_$invalid_direction    0x00130018
X#define smd_$invalid_displacement 0x00130019
X#define smd_$invalid_blt_mode     0x0013001A
X#define smd_$invalid_blt_ctl      0x0013001B
X#define smd_$invalid_bltd_int     0x0013001C
X#define smd_$invalid_ir_state     0x0013001D
X#define smd_$invalid_blt_coord    0x0013001E
X#define smd_$font_not_mapped      0x0013001F
X#define smd_$already_mapped       0x00130020
X#define smd_$not_mapped           0x00130021
X#define smd_$quit_while_waiting   0x00130022
X#define smd_$invalid_crsr_number  0x00130023
X#define smd_$hdm_full             0x00130024
X#define smd_$wait_quit            0x00130025
X#define smd_$invalid_key          0x00130026
X#define smd_$not_on_color         0x00130027
X#define smd_$not_implemented      0x00130028 
X#define smd_$invalid_wid          0x00130029 
X#define smd_$window_obscured      0x0013002A 
X#define smd_$no_more_wids         0x0013002B 
X#define smd_$process_not_found    0x0013002C 
X#define smd_$disp_acqd            0x0013002D   /* signal not allowed with display acquired */
X#define smd_$already_acquired     0x0013002E 
X#define smd_$acquire_timeout      0x0013002F
X
X#define smd_$string_size 120             /* max # chars passed to write_str */
X#define smd_$max_event_data_size 32      /* max # words in event data buffer */
X#define smd_$max_request_size 16         /* max # words passed in req buf */
X/* If smd_$max_loaded_fonts changes, you need to change smdlib_data.asm!! */
X#define smd_$max_loaded_fonts 8          /* max # loaded fonts */
X#define smd_$max_font_length 0x10000     /* max font length, 64KB */
X
X#define smd_$black 0                    /* color values for smd_$color */
X#define smd_$white 1
X
Xtypedef struct {
X        short line;
X        short column;
X} smd_$pos_t;
X
Xtypedef struct {
X           short xs;
X           short xe;
X           short ys;
X           short ye;
X} smd_$window_limits_t;
X
Xtypedef char smd_$string_t[smd_$string_size];
X
Xtypedef struct {
X        pinteger mode;              /* mode register */
X        linteger cs;                /* control (source) */
X        linteger cd;                /* control (dest) */
X        pinteger ssy;               /* start source y */
X        pinteger ssx;               /* start source x */
X        pinteger sdy;               /* start destination y */
X        pinteger sdx;               /* start destination x */
X        pinteger esy;               /* end source y */
X        pinteger esx;               /* end source x */
X        pinteger edy;               /* end destination y */
X        pinteger edx;               /* end destination x */
X} smd_$blt_regs_t;
X
Xtypedef short enum {smd_$up, smd_$down, smd_$left, smd_$right} smd_$direction_t;
X
Xtypedef short enum {
X        smd_$input, smd_$signal, smd_$scroll_blt_complete,
X        smd_$borrow_req, smd_$return_req, smd_$kbd_return_req,
X        smd_$keyswitch_off, smd_$tpad_and_input, smd_$tpad_data,
X        smd_$no_event
X} smd_$event_t;
Xtypedef union {
X    char input_char;
X    pinteger dbuf[smd_$max_event_data_size];
X    struct {
X        smd_$pos_t pos;
X        short buttons;      /* non_zero only for bitpad */
X    } tpad_data;
X    struct {
X        char tp_inchar;
X        smd_$pos_t ipos;
X    } tpad_and_input;
X} smd_$event_data_t;
X
Xtypedef pinteger smd_$request_t[smd_$max_request_size];
X
Xtypedef pinteger smd_$display_memory_t[1024][64];
X
Xtypedef smd_$display_memory_t *smd_$display_memory_ptr_t;
Xtypedef pinteger *smd_$display_control_ptr_t;
X
Xtypedef struct {       /* version 1 font desc table entry */
X           char left;                 /* # rasters to left of curr x */
X           char right;                /* rasters to right of curr x */
X           char up;                   /* rasters above curr y */
X           char down;                 /* rasters below curr y */
X           char width;                /* character width, rasters */
X           char x_pos;                /* horiz pos in font image offs 800 */
X           short y_pos;               /* vpos in image, offs fit.y_offset */
X} smd_$v1_fdte_t;
X
Xtypedef struct {       /* version 2 font desc table entry */
X           short left;                /* # rasters to left of curr x */
X           short right;               /* rasters to right of curr x */
X           short up;                  /* rasters above curr y */
X           short down;                /* rasters below curr y */
X           pinteger width;            /* character width, rasters */
X           pinteger x_pos;            /* horiz pos in font image */
X           pinteger y_pos;            /* vpos in image, offs fit.y_offset */
X           pinteger reserved;         /* future use, to make 16 bytes */
X}  smd_$v2_fdte_t;
X
Xtypedef struct {
X            pinteger
X                version,               /* font table version # */
X                image_offset,       /* image offset from 1st wd of hdr */
X                chars_in_font,      /* # characters in font */
X                raster_lines,       /* # raster lines reqd for image */
X                image_size,         /* image size, bytes */
X                max_height,         /* max char height, rasters */
X                max_width,          /* max char width, rasters */
X                v_spacing,          /* vertical (inter-line) spacing */
X                h_spacing,          /* horiz (inter-character) spacing */
X                space_size,         /* width of space character */
X                max_right,          /* char max right, rasters */
X                max_up,             /* char max up, rasters */
X                max_down;           /* char max down, rasters */
X            char index_table[128];  /* desc tab offsets per char */
X            smd_$v1_fdte_t desc_table[128];  /* desc table */
X} smd_$font_table_t;
X
Xtypedef smd_$font_table_t *smd_$font_table_ptr_t;
X
Xtypedef pinteger smd_$cursor_bitmap_t[16];
X
Xtypedef short enum {
X        smd_$none, 
X        smd_$bw_15P, 
X        smd_$bw_19L, 
X        smd_$color_display, 
X        smd_$800_color,
X        smd_$color2_display,
X        smd_$color3_display,
X        smd_$reserved_display,
X        smd_$color4_display,
X        smd_$bw4_1280x1024,
X        smd_$color5_display,
X        smd_$bw5_1024x800,
X        smd_$color6_display
X} smd_$display_type_t;
X
Xtypedef short enum {smd_$input_ec, smd_$scroll_blt_ec} smd_$ec_key_t;
X
X
X#define smd_$font_header_size 26          /* # bytes in font header */
X#define smd_$font_index_table_size 128    /* # bytes in index table */
X#define smd_$v1_fdte_size 8               /* # bytes in 1 descriptor table entry */
X
X
X/*  Display mode register declaration.  This is the C template for the
X   display hardware mode register.  */
X
Xtypedef struct {
X        unsigned short blt: 1,          /* 8000 - bit blt start / run flag */
X                 dummy: 6,              /* 7E00 - pad */
X                 noninterlace: 1,       /*  100 - hardware noninterlace mode */
X                 from_mm: 1,            /*   80 - from main memory */
X                 to_mm: 1,              /*   40 - to main memory */
X                 ieof: 1,               /*   20 - interrupt at eof */
X                 idone: 1,              /*   10 - interrupt on blt done */
X                 nonconform: 1,         /*    8 - nonconforming areas */
X                 decr: 1,               /*    4 - decrement mode (whadis?) */
X                 clrmode: 1,            /*    2 - clear mode */
X                 dispon: 1;             /*    1 - display on if true */
X} smd_$display_modereg_t;
X#eject
X/*  Following are user-mode calls to the display driver.  These may be
X   invoked while the display is "borrowed" by the user.  */
X
X
X/*   SMD_$LOAD_FONT_U is called to load a font into the hidden portion
X    of display memory.  The font_id returned by this procedure is used in
X    all future calls to write_string to identify the font.  */
X
Xstd_$call pinteger smd_$load_font_u();
X
X
X/*   SMD_$UNLOAD_FONT_U is called to unload a font from the hidden
X    portion of display memory.  This routine is invoked to make space for
X    another font when the hdm (hidden display memory) or a font table
X    becomes full.  */
X
Xstd_$call void  smd_$unload_font_u();
X
X
X/*  SMD_$LOAD_FONT_FILE_U maps a named font file into memory and loads it
X   using the load_font routine described above.  */
X
Xstd_$call void  smd_$load_font_file_u();
X
X
X/*  SMD_$UNLOAD_FONT_FILE_U unloads a font and unmaps the associated font
X   file.  This routine should be used for each font loaded with the
X   load_font_file routine.  */
X
Xstd_$call void  smd_$unload_font_file_u();
X
X
X/*  SMD_$WRITE_STRING_U is called to write a text string on the display.  */
X
Xstd_$call void  smd_$write_string_u();
X
X
X/*  SMD_$SOFT_SCROLL_U is used to start a soft scroll operation.  The specified
X   area of the screen is scrolled, 2 raster lines at a time, until the
X   number of raster lines moved is equal to <displacement>.  (If this is
X   odd, the last blt will be move the area 1 line.)  This routine returns
X   prior to the completion of the scroll.
X
X   Any smd routine which does not require the services of the interrupt
X   routine may be called and executed while the scroll is in progress
X   without waiting for the scroll to complete.  If an smd routine which
X   requires the services of the interrupt handler is called, execution of
X   that process is suspended until the scroll completes.  */
X
Xstd_$call void  smd_$soft_scroll_u();
X
X
X/*  SMD_$EVENT_WAIT_U causes the calling process to be suspended until a
X   screen manager event occurs.  These events are enumerated in the
X   smd_$event_t type definition.  User processes will only be notified
X   of scroll/blt completion and keyboard input; never of screen manager
X   requests.  */
X
Xstd_$call void  smd_$event_wait_u();
X
X
X/*  SMD_$COND_EVENT_WAIT_U is a conditional version of event_wait.  It returns
X   smd_$no_event, if no event has occurred.  It never waits.   */
X
Xstd_$call void  smd_$cond_event_wait_u();
X
X
X/*  SMD_$COND_INPUT_U performs conditional input.  If a character has been
X   typed, it is returned in "ch" and the function value is true.  If not,
X   the value of "ch" is undefined and the function value is false.  */
X
Xstd_$call short smd_$cond_input_u();
X
X
X/*  SMD_$BLT_U is called to start and optionally wait for the completion
X   of a display blt operation.
X
X   The procedure will return without waiting for completion if the
X   "interrupt when blt done" mode register bit is set.
X
X   The state of the "display on" and "interrupt at end of frame" bits are
X   irrelevant, as the default mode register, internal to the smd, is used
X   to obtain this information.  */
X
Xstd_$call void  smd_$blt_u();
X
X
X/*  SMD_$DRAW_BOX_U is called to draw a box around a window.  Lines are drawn
X   to vertically and horizontally connect the 4 given endpoints.  */
X
Xstd_$call void  smd_$draw_box_u();
X
X
X/*  SMD_$CLEAR_WINDOW_U is called by the sm to clear the area of the screen
X   enclosed within the 4 specified endpoints.  This routine does not return
X   until the clear is complete.  (This makes it eligible to interlace with
X   soft scrolling.)  */
X
Xstd_$call void  smd_$clear_window_u();
X
X
X/*  SMD_$MOVE_KBD_CURSOR_U causes the keyboard cursor to be moved from its
X   present position to the position specified.  The display driver's
X   knowledge of cursor position is also updated.  */
X
Xstd_$call void  smd_$move_kbd_cursor_u();
X
X
X/*  SMD_$CLEAR_KBD_CURSOR_U is used to clear the keyboard-associated cursor
X   from the display and inhibit cursor blinking.  */
X
Xstd_$call void  smd_$clear_kbd_cursor_u();
X
X
X/*  SMD_$BORROW_DISPLAY_U is called by the user to ask to borrow the display
X   memory and a subset of the display driver routines.  */
X
Xstd_$call void  smd_$borrow_display_u();
X
X
X/*  SMD_$BORROW_DISPLAY_NC_U is called by the user to ask to borrow the display
X   memory and a subset of the display driver routines.  It is similar to the
X   normal borrow_display procedure, except that the display is not cleared.  */
X
Xstd_$call void  smd_$borrow_display_nc_u();
X
X
X/*  SMD_$RETURN_DISPLAY_U is called by the user to terminate his exclusive
X   use of the display and smd routines.  The display is unmapped from his
X   address space and further use of the smd routines is disallowed.  */
X
Xstd_$call void  smd_$return_display_u();
X
X
X/*  SMD_$OP_WAIT_U waits for the current soft scroll or blt operation to
X   complete, then returns.  */
X
Xstd_$call void smd_$op_wait_u();
X
X
X/*  SMD_$MAP_DISPLAY_U maps the display memory into the user's address space
X   and returns a pointer to the first byte.  */
X
Xstd_$call void  smd_$map_display_u();
X
X
X/*  SMD_$UNMAP_DISPLAY_U unmaps the display memory from the user's address
X   space.  It must previously have been mapped with SMD_$MAP_DISPLAY_U.  */
X
Xstd_$call void  smd_$unmap_display_u();
X
X
X/*  SMD_$VECTOR_INIT_U initializes the vector drawing routines SMD_$DRAW_ABS_U,
X   SMD_$DRAW_REL_U, SMD_$MOVE_ABS_U, SMD_$MOVE_REL_U.  */
X
Xstd_$call void  smd_$vector_init_u();
X
X
X
X/*  SMD_$DRAW_ABS_U draws a vector from the current point to the point specified,
X   in absolute screen coordinates.  */
X
Xstd_$call void  smd_$draw_abs_u();
X
X
X/*  SMD_$DRAW_REL_U draws a vector from the current point to the point specified,
X   in pixels relative to the current point.  */
X
Xstd_$call void  smd_$draw_rel_u();
X
X
X/*  SMD_$MOVE_ABS_U moves the "current" position to that specified by the x and
X   y arguments, in absolute screen coordinates.  */
X
Xstd_$call void  smd_$move_abs_u();
X
X
X/*  SMD_$MOVE_REL_U moves the "current" position to that specified by the x and
X   y coordinates, relative to the current position.  */
X
Xstd_$call void  smd_$move_rel_u();
X
X/*  SMD_$COLOR sets the color (black or white/green) of subsequent lines to
X   be drawn by draw_abs_u or draw_rel_u   */
X
Xstd_$call void smd_$color();
X
X/*  SMD_$SET_TP_CURSOR offers touchpad (or other locator device) data to the
X   driver, which then displays a different cursor shape, that follows the
X   pos data, and eventually delivers the data to the display manager or
X   other process owning the display.  */
X
Xstd_$call void smd_$set_tp_cursor();
X
X/*  SMD_$STOP_TP_CURSOR turns off the touchpad cursor and puts back the blinking
X   keyboard cursor, if it is supposed to be up.  */
X
Xstd_$call void smd_$stop_tp_cursor();
X
X/*  SMD_$TP_ENABLE allows the touchpad cursor to be displayed
X   and moved around the screen.  Initial state is off.   */
X
Xstd_$call void smd_$tp_enable();
X
X/*  SMD_$TP_DISABLE is the routine of choice to call when preparing to
X   touch display memory directly in user mode, since it both prevents
X   interference from the touchpad cursor and guarantees that the blt
X   is clear.  Note that operations within the driver automatically take
X   down the tp cursor if it is up, since the caller does not know where
X   it is, and hence cannot take it down conditionally.  */
X
Xstd_$call void smd_$tp_disable();
X
X/*  SMD_$TP_DIRECT sets or clears the tpad_direct bit.
X
X   If tpad_direct is set, then touchpad data does not put a cursor on the
X   screen, but delivers the data through smd_$event_wait, as a special
X   event type.  If not set, then the cursor is moved around by tp data,
X   and the new position will be delivered with the next keystroke, as
X   a keystroke with cursor event.   */
X
Xstd_$call void smd_$tp_direct();
X
X
X/*  SMD_$LOAD_CRSR_BITMAP - Define a bitmap for one of the internal cursors  */
X
Xstd_$call void smd_$load_crsr_bitmap();
X
X
X/*  SMD_$READ_CRSR_BITMAP - Return the bitmap for one of the internal cursors  */
X
Xstd_$call void smd_$read_crsr_bitmap();
X
X
X/*  SMD_$SET_QUIT_CHAR defines the character which causes a quit to be
X   sent to the borrowing process.  */
X
Xstd_$call void smd_$set_quit_char();
X
X
X/*  SMD_$INQ_DISP_TYPE returns the type of the display physically attached to
X   the given unit number.   */
X
Xstd_$call smd_$display_type_t smd_$inq_disp_type();
X
X
X/*  SMD_$ALLOC_HDM
X
X   Allocate space in hidden display memory.  It returns an smd_$pos_t
X   indicating the x/y position in overall display memory, and works for
X   both portrait and landscape displays.  The returned space is always
X   224 bits wide, and on the landscape display, may wrap across column
X   boundaries.  */
X
Xstd_$call void  smd_$alloc_hdm();
X
X
X/*  SMD_$FREE_HDM
X
X   Free previously allocated space in hidden display memory   */
X
Xstd_$call void  smd_$free_hdm();
X
X
X/*  SMD_$INVERT
X
X   Invert the display, and all subsequent operations   */
X
Xstd_$call void  smd_$invert();
X
X
X/*  SMD_$GET_EC exports level 1 eventcounts to user-space.  */
X
Xstd_$call void  smd_$get_ec();
X
X#eject
E!O!F! xstrek/original_code/apollo_inc/smdu.ins.c
echo xstrek/original_code/apollo_inc/time.ins.c 1>&2
sed -e 's/^X//' > xstrek/original_code/apollo_inc/time.ins.c <<'E!O!F! xstrek/original_code/apollo_inc/time.ins.c'
X/*  TIME.INS.C  /sys/ins, ers, 09/29/82
X   customer-callable timer routines
X
X   Changes:
X      04/02/86 lwa  Change enum to short enum.
X      09/29/82 ers  original coding.
X*/
X
X#define time_$no_q_entry  0x000D0001  /* error from time_$advance */
X#define time_$not_found   0x000D0002  /* entry to be canceled not found */
X#define time_$wait_quit   0x000D0003  /* wait interrupted by quit fault */
X#define time_$bad_int     0x000D0004  /* bad timer interrupt */
X#define time_$bad_key     0x000D0005  /* bad key to time_$get_ec */
X
Xtypedef short enum {time_$relative, time_$absolute} time_$rel_abs_t;
X
Xtypedef short enum {time_$clockh_key} time_$key_t;
X
Xstd_$call void time_$clock();  /* read the whole clock */
Xstd_$call void time_$wait();
Xstd_$call void time_$get_ec();
X
X#eject
E!O!F! xstrek/original_code/apollo_inc/time.ins.c
exit
===========
            @work:            | Matthias Pfuetzner  |         @home:
  ZGDV, Wilhelminenstrasse 7  | 6100 Darmstadt, FRG |  Lichtenbergstrasse 73
    +49 6151 155-164 or -101  \    <- Tel.nr. ->    /     +49 6151 75717
   pfuetzner@agd.fhg.de    pfuetzner@zgdvda.UUCP    XBR1YD3U@DDATHD21.BITNET

--
Dan Heller
------------------------------------------------
O'Reilly && Associates		ZipCode Software
Senior Writer			       President
argv@ora.com			argv@zipcode.com