ftp.nice.ch/pub/next/developer/languages/lisp/AKCL.1.599.s.tar.gz#/akcl-1-599/c/sys.c

This is sys.c in view mode; [Download] [Up]

/*
(C) Copyright Taiichi Yuasa and Masami Hagiya, 1984.  All rights reserved.
*/

/*
	sys.c
	DG-SPECIFIC
*/

#include "include.h"

#define $ERMSG 0311
#define BUFLN 128

sys_emes(ecode)
int	ecode;
{
	int	ac1,ac2;
	int	ier;
	int	i;
	char	mess_buff[BUFLN];

	getemes(ecode, mess_buff);

	vs_push(make_simple_string(mess_buff));
	FEerror("~@(~A~).", 1, vs_head);
}

getemes(ecode, buff)
int	ecode;
char	*buff;
{
	int	ac0, ac1, ac2, ac3;

	for (ac0 = 0; ac0 < BUFLN; ac0++)
		buff[ac0] = '\0';

	ac0 = ecode;
	ac1 = BUFLN * 0400 + 0377;
	ac2 = buff;
	if (sys($ERMSG, &ac0, &ac1, &ac2))
		sprintf(buff, "System error, code : %o", ecode);
}

#define $PNAME	0116

char	mypid[4] = "000\0";

get_pid()
{
	int	ac0, ac1, ac2, ier, i;

	ac0 = 0;
	ac1 = -1;	/* get my pid */
	sys($PNAME, &ac0, &ac1, &ac2);		/* ignore error */

	for (i=2; i >= 0; i--) {
		ac0 = ac1 % 10;
		ac1 = ac1 / 10;
		mypid[i] = ac0 + '0';
		}
}

copypid(buffp)
char	*buffp;
{
	int	i;

	for (i=0; i <= 2; i++) buffp[i] = mypid[i];
}

#define $RUNTM 030

runtime()
{
	int	pack[4];
	int	ac0, ac1, ac2, ier;
		
	ac0 = -1;
	ac2 = pack;
	sys($RUNTM, &ac0, &ac1, &ac2);
	return(pack[1]);
}

#define FLOAT_OVF	010000000000
#define FLOAT_UNF	004000000000
#define FLOAT_DVZ	002000000000
#define FLOAT_MOF	001000000000

FERR(fstat)
int	fstat;
{
	if (fstat & FLOAT_OVF)
		FEerror("Floating point overflow.",0);
	if (fstat & FLOAT_UNF)
		FEerror("Floating point underflow.",0);
	if (fstat & FLOAT_DVZ)
		FEerror("Floating point fault : zero divide.",0);
	if (fstat & FLOAT_MOF)
		FEerror("Floating point mantissa overflow.",0);

	FEerror("Unknown floating point error.",0);
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.