⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vmsio.c

📁 spice中支持多层次元件模型仿真的可单独运行的插件源码
💻 C
字号:
/**********Copyright 1990 Regents of the University of California.  All rights reserved.**********//* * vmsio.c * * Written by Giles Billingsley, UC Berkeley. * sccsid "@(#)vmsio.c	1.9  9/3/83" * *     MFB is a graphics package that was developed by the integrated * circuits group of the Electronics Research Laboratory and the * Department of Electrical Engineering and Computer Sciences at * the University of California, Berkeley, California.  The programs * in MFB are available free of charge to any interested party. * The sale, resale, or use of these program for profit without the * express written consent of the Department of Electrical Engineering * and Computer Sciences, University of California, Berkeley, California, * is forbidden. * * Routines to replace stty on VMS. * *          dev_init(buf,size)   initialize this package *          dev_getchar()        input a char (no-echo, 1 char buff) *                               from stdin. *          dev_printf()         output a string of n chars with no *				 hacking of special characters to stdout *          dev_getc()           input a char (no-echo, 1 char buff) *          dev_write()          output a string of n chars with no *				 hacking of special characters */#include "spice.h"#ifdef vms#include ssdef#include descrip#include iodef#include rms#include "mfb.h"#include "suffix.h"static unsigned rfunc;static unsigned wfunc;static int dev_channel;static int initialized = 0;/* * Test routine for vmsio.c * * main(){ *     int c; *     dev_init(); *     c = dev_getchar(); *     printf("character = %d\n",c); *     c = dev_getchar(); *     printf("character = %d\n",c); *     c = dev_getchar(); *     printf("character = %d\n",c); *     c = dev_getchar(); *     printf("character = %d\n",c); *     c = dev_getchar(); *     printf("character = %d\n",c); *     dev_printf("this is a test",14); *     } *//*									*//*	DEV_INIT - initializes global variables in DISPLAY		*//*									*/dev_init() {    struct dsc$descriptor_s com_desc;    char *cp = "TT";    int status;    if(initialized)	return;    initialized = 1;    com_desc.dsc$w_length = strlen( cp );    com_desc.dsc$a_pointer = cp;    com_desc.dsc$b_class = DSC$K_CLASS_S;    com_desc.dsc$b_dtype = DSC$K_DTYPE_T;    wfunc = IO$_WRITEVBLK | IO$M_NOFORMAT;    rfunc = IO$_READVBLK | IO$M_NOECHO;    status = sys$assign(&com_desc,&dev_channel,0,0);    if(status != SS$_NORMAL){        printf("SYS$ASSIGN failed.  Status = %d\n",status);        exit(1);        }    }/*									*//*	DEV_OPEN - initializes global variables in DISPLAY.		*//*	open and assign the 'channel' to device 'name' (stdio by	*//*	default).							*//*									*/dev_open(name,channel)    char *name;    int *channel;    {    struct dsc$descriptor_s com_desc;    char *cp = "TT";    int status;    /* initialize stdio */    dev_init();    /* open the standard channel by default */    if(name == NULL || *name == NULL){	/* stdout by default */        com_desc.dsc$w_length = strlen( cp );        com_desc.dsc$a_pointer = cp;	}    else{        com_desc.dsc$w_length = strlen( name );        com_desc.dsc$a_pointer = name;	}    com_desc.dsc$b_class = DSC$K_CLASS_S;    com_desc.dsc$b_dtype = DSC$K_DTYPE_T;    wfunc = IO$_WRITEVBLK | IO$M_NOFORMAT;    rfunc = IO$_READVBLK | IO$M_NOECHO;    status = sys$assign(&com_desc,channel,0,0);    if(status != SS$_NORMAL){        printf("SYS$ASSIGN failed.  Status = %d\n",status);        exit(1);        }    }/*									*//*	DEV_PRINTF - dumps buffer to standard terminal			*//*									*//*	It is necessary to have the length argument because the		*//*	character buffer may have embedded nulls.			*//*									*/dev_printf(buffer,length)    char *buffer;    int length;    {    int status;    int f_status;    status = sys$qiow(6,dev_channel,wfunc,&f_status,0,0,buffer,length,0,0,0,0);    if(status != SS$_NORMAL){        printf("SYS$QIOW failed.  Status = %d\n",status);        }    return(status);    }/*									*//*  DEV_GETCHAR - get a character from the standard terminal		*//*									*/dev_getchar(){    char buf[10];    int status;    int f_status;    status = sys$qiow(7,dev_channel,rfunc,&f_status,0,0,buf,1,0,0,0,0);    return((int)buf[0]);    }/*									*//*	DEV_WRITE - dumps buffer to device channel			*//*									*//*	It is necessary to have the length argument because the		*//*	character buffer may have embedded nulls.			*//*									*/dev_write(channel,buffer,length)    char *buffer;    int channel;    int length;    {    int status;    int f_status;    status = sys$qiow(6,channel,wfunc,&f_status,0,0,buffer,length,0,0,0,0);    if(status != SS$_NORMAL){        printf("SYS$QIOW failed.  Status = %d\n",status);        }    return(status);    }/*									*//*  DEV_GETC - get a character from the device channel			*//*									*/dev_getc(channel)    int channel;    {    char buf[10];    int status;    int f_status;    status = sys$qiow(7,channel,rfunc,&f_status,0,0,buf,1,0,0,0,0);    return((int)buf[0]);    }#elseint Dummy_Symbol;#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -