Annotation of 43BSDTahoe/new/X/libapollo/initial.c, revision 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.