Annotation of 43BSDTahoe/new/X/libapollo/initial.c, revision 1.1.1.1

1.1       root        1:     /*
                      2: 
                      3:     Copyright 1986 by the University of Utah
                      4: 
                      5:     Permission to use, copy, modify, and distribute this
                      6:     software and its documentation for any purpose and without
                      7:     fee is hereby granted, provided that the above copyright
                      8:     notice appear in all copies and that both that copyright
                      9:     notice and this permission notice appear in supporting
                     10:     documentation, and that the name of the University of Utah
                     11:     not be used in advertising or publicity pertaining to 
                     12:     distribution of the software without specific, written 
                     13:     prior permission. The University of Utah makes no
                     14:     representations about the suitability of this software for
                     15:     any purpose.  It is provided "as is" without express or
                     16:     implied warranty.
                     17: 
                     18:     */
                     19: 
                     20: /* initial.c   Routines to open & close display
                     21:  *
                     22:  *     OpenDisplay             Open it
                     23:  *     InitDisplay             Download it
                     24:  *     DisplayDead             Check if dead
                     25:  *     Allocate_space          Allocate some temporary storage
                     26:  *
                     27:  */
                     28: 
                     29: /*
                     30:  *     ToDo:
                     31:  *             Look in environment/defaults for programs to start
                     32:  */
                     33: 
                     34: 
                     35: #include <stdio.h>
                     36: #include <fcntl.h>
                     37: #include <errno.h>
                     38: #include <sys/time.h>
                     39: #include <sys/ioctl.h>
                     40: #include <sys/signal.h>
                     41: #include "Xapollo.h"
                     42: 
                     43: unsigned char InvertedPixelArray[] = { 
                     44:  0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
                     45:  0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
                     46:  0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
                     47:  0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
                     48:  0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
                     49:  0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
                     50:  0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
                     51:  0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
                     52:  0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
                     53:  0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
                     54:  0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
                     55:  0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
                     56:  0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
                     57:  0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
                     58:  0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
                     59:  0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
                     60:  0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
                     61:  0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
                     62:  0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
                     63:  0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
                     64:  0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
                     65:  0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
                     66:  0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
                     67:  0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
                     68:  0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
                     69:  0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
                     70:  0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
                     71:  0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
                     72:  0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
                     73:  0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
                     74:  0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
                     75:  0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff,
                     76:  };
                     77: 
                     78: boolean borrow_flag = true;
                     79: long     old_zmask;
                     80: int      old_op = -1; 
                     81: struct Scr Screen;
                     82: int Xdbg;
                     83: extern int errno;
                     84: DEVICE *CurrentDevice;
                     85: gpr_$attribute_desc_t tmp_ab;
                     86: static gpr_$offset_t off;
                     87: gpr_$bitmap_desc_t TileBM;
                     88: gpr_$plane_t plane;
                     89: status_$t status;
                     90: 
                     91: extern int InputReader();
                     92: extern int InitInput();      
                     93: extern int check_status();
                     94: 
                     95: /*ARGSUSED*/
                     96: OpenDisplay (devname)
                     97:        char *devname;
                     98: {                     
                     99:     pad_$window_desc_t win;
                    100:     int vsdev = -1;
                    101: 
                    102:     win.top = 0;
                    103:     win.left = 0;
                    104:     win.width = 950;
                    105:     win.height = 750;
                    106:                        
                    107:     off.x_size = 1280;
                    108:     off.y_size = 1024;
                    109:     if (!borrow_flag || getenv("XPAD") )
                    110:         /* direct mode will probably not work correctly */
                    111:         {
                    112:         borrow_flag = false;
                    113:         pad_$create_window( "", (short)0, pad_$transcript, (short)1, win, Screen.fd, status );
                    114:         pad_$set_border( (short)Screen.fd, (short)1, 0, status );
                    115:         gpr_$init( gpr_$direct, Screen.fd, off, (short)7, Screen.bm, status );
                    116:        gpr_$acquire_display(status);
                    117:         }
                    118:     else
                    119:         gpr_$init( gpr_$borrow, (short)1, off, (short)7, Screen.bm, status );
                    120: 
                    121:     if( status.all != status_$ok ) {
                    122:         error_$print( status );
                    123:         return( NULL );             
                    124:         }
                    125:     vsdev = MakeGPRStream();
                    126:     return (vsdev);
                    127: 
                    128: }
                    129: 
                    130: InitDisplay (info)
                    131:        register DEVICE *info;
                    132: {
                    133:     register int i;
                    134:     static vsCursor vsc;
                    135:     static vsBox vsm;
                    136:     static vsEventQueue vsq = {
                    137:                               NULL,
                    138:                               0,
                    139:                               0,
                    140:                               0,
                    141:     };
                    142: 
                    143:     gpr_$set_bitmap( Screen.bm, status );
                    144:     gpr_$inq_bitmap_pointer( Screen.bm, Screen.ptr, Screen.line_width, status );
                    145:     gpr_$inq_bitmap_dimensions( Screen.bm, off, (short)plane, status );
                    146:     gpr_$allocate_attribute_block( Screen.ab, status);
                    147:     gpr_$set_attribute_block( Screen.ab, status );
                    148:     gpr_$set_obscured_opt(gpr_$block_if_obs, status);
                    149:     gpr_$set_clipping_active(true, status);
                    150:     Screen.depth = plane+1;
                    151:     Screen.plane_mask = (plane == 0) ? 1 : ((1<<Screen.depth) - 1);
                    152:     info->height = Screen.height = off.y_size;
                    153:     info->width = Screen.width = off.x_size;
                    154: 
                    155:     info->id = Screen.bm;
                    156:     info->planes = Screen.depth;
                    157:     info->entries = (plane == 0) ? 0 : 1<<Screen.depth;
                    158:     info->mouse = &vsc;
                    159:     info->mbox = &vsm;
                    160:     info->queue = &vsq;  
                    161: 
                    162:     /*  Allocate a bitmap for caching tiles */
                    163:     gpr_$allocate_attribute_block( tmp_ab, status);
                    164:     off.x_size = 32;
                    165:     off.y_size = 32;
                    166:     gpr_$allocate_bitmap( off, (short)plane, tmp_ab, TileBM, status);
                    167: 
                    168:     Define_input_handler(InputReader);
                    169:     CurrentDevice = info;
                    170: 
                    171:     InitInput();
                    172:     return (0); 
                    173: }
                    174: 
                    175: /* Check if display is dead */
                    176: 
                    177: DisplayDead ()
                    178: {
                    179:        return(0);
                    180: }
                    181: 
                    182: /* the presumption here is that only one Allocate_space call is made/request */
                    183: 
                    184: #define ABUFSIZE 3072
                    185: static char ABuffer[3072];     /* arbitrary size buffer for allocate space */
                    186: caddr_t AllocateSpace (size)
                    187:        register int size;
                    188: {
                    189:        if (size < ABUFSIZE) return(ABuffer);
                    190:        errno = ENOMEM;
                    191:        return (NULL);
                    192: }
                    193: 
                    194: #ifdef notdef
                    195: Setenv (var, value)
                    196: /*
                    197:    sets the value of var to be arg in the Unix 4.2 BSD environment env.
                    198:    Var should end with '='.
                    199:    (bindings are of the form "var=value")
                    200:    This procedure assumes the memory for the first level of environ
                    201:    was allocated using malloc.
                    202:  */
                    203: register char *var, *value;
                    204: {
                    205:     extern char **environ;
                    206:     register int index = 0;
                    207: 
                    208:     while (environ[index] != NULL) {
                    209:        if (strncmp(environ[index], var, strlen(var)) == 0) {
                    210:            /* found it */
                    211:            environ[index] = (char *) malloc(strlen(var) + strlen(value));
                    212:            strcpy(environ[index], var);
                    213:            strcat(environ[index], value);
                    214:            return;
                    215:        }
                    216:        index++;
                    217:     }
                    218: 
                    219:     if ((environ = (char **) realloc(environ, sizeof(char *) *
                    220:                                     (index + 2))) == NULL) {
                    221:        fprintf(stderr, "Setenv: malloc out of memory\n");
                    222:        exit(1);
                    223:     }
                    224: 
                    225:     environ[index] = (char *) malloc(strlen(var) + strlen(value));
                    226:     strcpy(environ[index], var);
                    227:     strcat(environ[index], value);
                    228:     environ[++index] = NULL;
                    229: }
                    230: #endif
                    231: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.