1: /* $Header: util.c,v 10.3 86/02/01 15:47:51 tony Rel $ */
   2: /* util.c		Various utilities
   3:  *
   4:  *	ErrorString	Interprets an error string
   5:  *	SoundBell	Generate audible bell
   6:  *	SetKeyClick	Control key click
   7:  *	SetAutoRepeat	Control auto repeat
   8:  *	SetLockLED	Control Lock LED
   9:  *	QueryShape	Determine shapes
  10:  *	SetVideo	Set video blanking
  11:  *	ResolveColors	does nothing
  12:  *	StoreColors	does nothing
  13:  *
  14:  */
  15: 
  16: /****************************************************************************
  17:  *									    *
  18:  *  Copyright (c) 1983, 1984 by						    *
  19:  *  DIGITAL EQUIPMENT CORPORATION, Maynard, Massachusetts.		    *
  20:  *  All rights reserved.						    *
  21:  * 									    *
  22:  *  This software is furnished on an as-is basis and may be used and copied *
  23:  *  only with inclusion of the above copyright notice. This software or any *
  24:  *  other copies thereof may be provided or otherwise made available to     *
  25:  *  others only for non-commercial purposes.  No title to or ownership of   *
  26:  *  the software is hereby transferred.					    *
  27:  * 									    *
  28:  *  The information in this software is  subject to change without notice   *
  29:  *  and  should  not  be  construed as  a commitment by DIGITAL EQUIPMENT   *
  30:  *  CORPORATION.							    *
  31:  * 									    *
  32:  *  DIGITAL assumes no responsibility for the use  or  reliability of its   *
  33:  *  software on equipment which is not supplied by DIGITAL.		    *
  34:  * 									    *
  35:  *									    *
  36:  ****************************************************************************/
  37: 
  38: #include "vs100.h"
  39: #include "reason.h"
  40: 
  41: extern int sys_nerr;
  42: extern char *sys_errlist[];
  43: 
  44: char *AllocateSpace();
  45: 
  46: struct _ErrEntry {
  47:     int code;
  48:     char *reason;
  49: } errorList[NUM_ERR_CODES] = {
  50:     {INT_ID     , INT_ID_MSG},
  51:     {INT_CD     , INT_CD_MSG},
  52:     {INT_SE     , INT_SE_MSG},
  53:     {INT_BE     , INT_BE_MSG},
  54:     {INT_CM     , INT_CM_MSG},
  55:     {INT_TM     , INT_TM_MSG},
  56:     {INT_MM     , INT_MM_MSG},
  57:     {INT_PD     , INT_PD_MSG},
  58:     {ERR_NYI    , ERR_NYI_MSG},
  59:     {ERR_IFC    , ERR_IFC_MSG},
  60:     {ERR_ICC    , ERR_ICC_MSG},
  61:     {ERR_RN     , ERR_RN_MSG},
  62:     {ERR_RO     , ERR_RO_MSG},
  63:     {ERR_LD     , ERR_LD_MSG},
  64:     {ERR_BE     , ERR_BE_MSG},
  65:     {ERR_AE     , ERR_AE_MSG},
  66:     {ERR_SI     , ERR_SI_MSG},
  67:     {ERR_II     , ERR_II_MSG},
  68:     {ERR_BN     , ERR_BN_MSG},
  69:     {ERR_BNI    , ERR_BNI_MSG},
  70:     {ERR_KBO    , ERR_KBO_MSG},
  71:     {ERR_TBO    , ERR_TBO_MSG},
  72:     {ERR_BBO    , ERR_BBO_MSG},
  73:     {ERR_ITP    , ERR_ITP_MSG},
  74:     {ERR_ISRCMB , ERR_ISRCMB_MSG},
  75:     {ERR_ISRCBW , ERR_ISRCBW_MSG},
  76:     {ERR_ISRCBH , ERR_ISRCBH_MSG},
  77:     {ERR_ISRCC  , ERR_ISRCC_MSG},
  78:     {ERR_ISRCBD , ERR_ISRCBD_MSG},
  79:     {ERR_ISRCD  , ERR_ISRCD_MSG},
  80:     {ERR_IMSKMB , ERR_IMSKMB_MSG},
  81:     {ERR_IMSKBW , ERR_IMSKBW_MSG},
  82:     {ERR_IMSKBH , ERR_IMSKBH_MSG},
  83:     {ERR_IMSKBD , ERR_IMSKBD_MSG},
  84:     {ERR_IDSTMB , ERR_IDSTMB_MSG},
  85:     {ERR_IDSTBW , ERR_IDSTBW_MSG},
  86:     {ERR_IDSTBH , ERR_IDSTBH_MSG},
  87:     {ERR_IDSTBD , ERR_IDSTBD_MSG},
  88:     {ERR_NOAREA , ERR_NOAREA_MSG},
  89:     {ERR_IMAPMB , ERR_IMAPMB_MSG},
  90:     {ERR_IMAPFC , ERR_IMAPFC_MSG},
  91:     {ERR_ZIMAP  , ERR_ZIMAP_MSG},
  92:     {ERR_ZCIMAP , ERR_ZCIMAP_MSG},
  93:     {ERR_ICLPMB , ERR_ICLPMB_MSG},
  94:     {ERR_ICLPRC , ERR_ICLPRC_MSG},
  95:     {ERR_SMC_ITC    , ERR_SMC_ITC_MSG},
  96:     {ERR_ITC_MULT   , ERR_ITC_MULT_MSG},
  97:     {ERR_ITC_DIV    , ERR_ITC_DIV_MSG},
  98:     {ERR_ICD    , ERR_ICD_MSG},
  99:     {ERR_MO_IBC , ERR_MO_IBC_MSG},
 100:     {ERR_MO_IOT , ERR_MO_IOT_MSG},
 101:     {ERR_MO_IDT , ERR_MO_IDT_MSG},
 102:     {ERR_IPC    , ERR_IPC_MSG},
 103:     {ERR_DC_IPC , ERR_DC_IPC_MSG},
 104:     {ERR_DC_IPSL    , ERR_DC_IPSL_MSG},
 105:     {ERR_DC_IPSM    , ERR_DC_IPSM_MSG},
 106:     {ERR_DC_ICF , ERR_DC_ICF_MSG},
 107:     {ERR_DC_IPSP    , ERR_DC_IPSP_MSG},
 108:     {ERR_DC_IPSMB   , ERR_DC_IPSMB_MSG},
 109:     {ERR_DC_IPMMB   , ERR_DC_IPMMB_MSG},
 110:     {ERR_DC_IPSC    , ERR_DC_IPSC_MSG},
 111:     {ERR_DC_ISSRCBW , ERR_DC_ISSRCBW_MSG},
 112:     {ERR_DC_ISSRCBH , ERR_DC_ISSRCBH_MSG},
 113:     {ERR_DC_ISSRCBD , ERR_DC_ISSRCBD_MSG},
 114:     {ERR_DC_ISSRCC  , ERR_DC_ISSRCC_MSG},
 115:     {ERR_DC_IDPM    , ERR_DC_IDPM_MSG},
 116:     {ERR_PT_ICSL    , ERR_PT_ICSL_MSG},
 117:     {ERR_PT_ICSO    , ERR_PT_ICSO_MSG},
 118:     {ERR_PT_ICSP    , ERR_PT_ICSP_MSG},
 119:     {ERR_PT_ITSL    , ERR_PT_ITSL_MSG},
 120:     {ERR_PT_ICI , ERR_PT_ICI_MSG},
 121:     {ERR_PT_TSE , ERR_PT_TSE_MSG},
 122:     {ERR_PT_NFP , ERR_PT_NFP_MSG},
 123:     {ERR_PT_ISRCFW  , ERR_PT_ISRCFW_MSG},
 124:     {ERR_PT_ISRCFH  , ERR_PT_ISRCFH_MSG},
 125:     {ERR_PT_ISRCFD  , ERR_PT_ISRCFD_MSG},
 126:     {ERR_PT_IMSKFW  , ERR_PT_IMSKFW_MSG},
 127:     {ERR_PT_IMSKFH  , ERR_PT_IMSKFH_MSG},
 128:     {ERR_PT_IMSKFD  , ERR_PT_IMSKFD_MSG},
 129:     {ERR_PT_CSMF    , ERR_PT_CSMF_MSG},
 130:     {ERR_FA_ISRCB   , ERR_FA_ISRCB_MSG},
 131:     {ERR_FA_SPIOB   , ERR_FA_SPIOB_MSG},
 132:     {ERR_FA_SO  , ERR_FA_SO_MSG},
 133:     {ERR_FA_IBMMB   , ERR_FA_IBMMB_MSG},
 134:     {ERR_FP_ISRCB   , ERR_FP_ISRCB_MSG},
 135:     {ERR_FP_SO  , ERR_FP_SO_MSG},
 136:     {ERR_FP_IPC , ERR_FP_IPC_MSG},
 137:     {ERR_FP_ICF , ERR_FP_ICF_MSG},
 138:     {ERR_68K    , ERR_68K_MSG},
 139:     {ERR_RC     , ERR_RC_MSG},
 140:     {ERR_PR     , ERR_PR_MSG},
 141:     {ERR_CRT    , ERR_CRT_MSG},
 142:     {ERR_TU     , ERR_TU_MSG},
 143:     {ERR_KU     , ERR_KU_MSG},
 144:     {ERR_FOE    , ERR_FOE_MSG},
 145:     {ERR_VTO    , ERR_VTO_MSG},
 146:     {ERR_SB     , ERR_SB_MSG},
 147:     {ERR_BS     , ERR_BS_MSG},
 148:     {ERR_BC     , ERR_BC_MSG},
 149:     {ERR_TTO    , ERR_TTO_MSG},
 150:     {ERR_FOO    , ERR_FOO_MSG},
 151:     {ERR_KTO    , ERR_KTO_MSG},
 152:     {ERR_KST    , ERR_KST_MSG},
 153:     {ERR_LDC_IATRV  , ERR_LDC_IATRV_MSG},
 154:     {ERR_LDC_ICH    , ERR_LDC_ICH_MSG},
 155:     {ERR_LDC_ICW    , ERR_LDC_ICW_MSG},
 156:     {ERR_NOVALCUR   , ERR_NOVALCUR_MSG}
 157: };
 158: 
 159: /* Interpret a string corresponding to an error code.  This doesn't
 160:  * work very well since the driver can't return enough bits for the
 161:  * code, but we do our best */
 162: 
 163: char *ErrorString (error)
 164:     int error;
 165: {
 166:     register int i;
 167: 
 168:     for (i = 0; i < NUM_ERR_CODES; i++) {
 169:         if (errorList[i].code == error)
 170:         return (errorList[i].reason);
 171:     }
 172:     if (error > 0 && error < sys_nerr)
 173:         return (sys_errlist[error]);
 174:     return ("Unknown error");
 175: }
 176: 
 177: SoundBell (volume)
 178:     int volume;
 179: {
 180:     char *buf;
 181: 
 182:     if ((buf = (char *) AllocateSpace(4)) == NULL)
 183:         return;
 184:     buf[0] = 3;
 185:     buf[1] = 0x23;
 186:     buf[2] = 0x87 - volume;
 187:     buf[3] = 0xa7;
 188:     SendToPeripheral(buf, 4, VSE_DKB);
 189: }
 190: 
 191: SetKeyClick (volume)
 192:     int volume;
 193: {
 194:     char *buf;
 195: 
 196:     if ((buf = (char *) AllocateSpace(3)) == NULL)
 197:         return;
 198:     if (volume) {
 199:         buf[0] = 2;
 200:         buf[1] = 0x1b;
 201:         buf[2] = 0x88 - volume;
 202:     } else {
 203:         buf[0] = 1;
 204:         buf[1] = 0x99;
 205:         buf[2] = 0x99;
 206:     }
 207:     SendToPeripheral(buf, 3, VSE_DKB);
 208: }
 209: 
 210: QueryShape (shape, width, height)
 211:     int shape;
 212:     short *width, *height;
 213: {
 214:     switch (shape) {
 215:     case CursorShape:
 216:         if (*width > 64)
 217:         *width = 64;
 218:         if (*height > 64)
 219:         *height = 64;
 220:         break;
 221:     case TileShape:
 222:         *width = *height = 16;
 223:         break;
 224:     }
 225: }
 226: 
 227: SetAutoRepeat (onoff)
 228:     int onoff;
 229: {
 230:     char *buf;
 231: 
 232:     if ((buf = (char *) AllocateSpace(2)) == NULL)
 233:         return;
 234:     buf[0] = 1;
 235:     buf[1] = onoff ? 0xe3 : 0xe1;
 236:     SendToPeripheral(buf, 2, VSE_DKB);
 237: }
 238: 
 239: /*ARGSUSED*/
 240: SetLockLED (onoff)
 241:     int onoff;
 242: {
 243: }
 244: 
 245: SetVideo (onoff)
 246:     int onoff;
 247: {
 248:     return (onoff - 1);
 249: }
 250: 
 251: /*ARGSUSED*/
 252: ResolveColor (red, green, blue)
 253:     unsigned short *red, *green, *blue;
 254: {
 255: }
 256: 
 257: /*ARGSUSED*/
 258: StoreColors (count, entries)
 259:     int count;
 260:     ColorDef *entries;
 261: 
 262: {
 263: }

Defined functions

ErrorString defined in line 163; used 2 times
QueryShape defined in line 210; never used
ResolveColor defined in line 252; never used
SetAutoRepeat defined in line 227; never used
SetKeyClick defined in line 191; never used
SetLockLED defined in line 240; never used
SetVideo defined in line 245; never used
SoundBell defined in line 177; never used
StoreColors defined in line 258; never used

Defined variables

errorList defined in line 49; used 2 times

Defined struct's

_ErrEntry defined in line 46; never used
Last modified: 1986-02-01
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 964
Valid CSS Valid XHTML 1.0 Strict