Example #1
0
void dpy_writechar(int x, int y, uni_t c)
{
	unsigned int id = glyphcache_id(c, defaultattr);
	sput(backbuffer, x, y, id);
	if (emu_wcwidth(c) == 2)
		sput(backbuffer, x+1, y, 0);
}
Example #2
0
gen_code (struct pred_list *programme, struct put_fnct *put)
{
	sprintf (buf, "/* C program translated from Prolog code */\n");
	sput (put, buf);
	sput (put, "#include \"coroutin.h\"\n");
	sput (put, "#include \"expr.h\"\n");
/*	sput (put, "#define MAX_NEW_CONS 50\n");
	sput (put, "#define UNDEF 0x7FFD\n");*/
	sput (put, "#include \"prolog.h\"\n");
	for ( ; programme != NULL; programme = programme->next)
		gen_pred (programme, put);
	sprintf (buf, "\n/* End of translation */\n");
	sput (put, buf);
}
Example #3
0
File: lct.c Project: jbailhache/log
term lambda_1 (term v, term x)
{
term f, a;
type tf;
	if (v->k != TERM_VAR)
	{
		sput ("lambda: 1st arg not variable\n", err);
		return UNDEF_TERM;
	}
	if (x->k == TERM_VAR && !strcmp (x->var.name, v->var.name) &&
		equal_type (x->var.typ, v->var.typ))
		return I (v->var.typ);
	if (!occur (v, x))
		return ap (K (type_term (x), v->var.typ), x);
	f = x->ap.fnc;
	a = x->ap.arg;
	if (a->k == TERM_VAR && !strcmp (a->var.name, v->var.name) &&
		equal_type (a->var.typ, v->var.typ) &&
		!occur (v, f))
		return f;
	tf = type_term (f);
	return ap (ap (S (v->var.typ, type_term (a), tf->fnc.res),
			lambda (v, f)),
				lambda (v, a));
}
Example #4
0
File: lct.c Project: jbailhache/log
type type_term (term x)
{
type t;
#ifdef TRACE
	sput ("Type of ", err);
	write_term (x, err);
	sput ("...\n", err);
#endif
	t = type_term_1 (x);
#ifdef TRACE
	sput ("type of ", err);
	write_term (x, err);
	sput ("is ", err);
	write_type (t, err);
	sput (".\n", err);
#endif
	return t;
}
Example #5
0
File: lct.c Project: jbailhache/log
write_type (type t, struct put_fnct *put)
{
	switch (t->k)
	{
		case TYPE_ORD:
			sput ("O", put);
			break;
		case TYPE_FNC:
			if (t->fnc.arg->k == TYPE_FNC)
				sput ("(", put);
			write_type (t->fnc.arg, put);
			if (t->fnc.arg->k == TYPE_FNC)
				sput (")", put);
			sput ("->", put);
			write_type (t->fnc.res, put);
			break;
		default:
			sput ("?", put);
	}
}
Example #6
0
void dpy_setcursor(int x, int y)
{
	if (frontbuffer)
	{
		for (int xx=(cursorx-1); xx<=(cursorx+1); xx++)
			for (int yy=(cursory-1); yy<=(cursory+1); yy++)
				sput(frontbuffer, xx, yy, 0);
	}

	cursorx = x;
	cursory = y;
}
Example #7
0
gen_expr (plexpr x, struct put_fnct *put)
{
int i;
	switch (x->type)
	{
		case PLTYPE_INT:
			sprintf (buf, "%d", x->n);
			sput (put, buf);
			break;
		case PLTYPE_STRING:
			sprintf (buf, "%s", x->s);
			sput (put, buf);
			break;
		case PLTYPE_VAR:
			sprintf (buf, "var_%s", x->name);
			sput (put, buf);
			break;
		case PLTYPE_SYMB:
			sprintf (buf, "nx[pnx++] = cons (symbol(\"%s\"),\n", x->name);
			sput (put, buf);
			for (i=0; i<x->n; i++)
			{
				sput (put, "\t\t\tnx[pnx++] = cons (");
				gen_expr (x->args[i], put);
				sput (put, ",\n");
			}
			sput (put, "\t\t\t0"); /* nil */
			for (i=0; i<x->n; i++)
				sput (put, ")");
			sput (put, ")");
			break;
		default:
			sprintf (buf, "Error /* Invalid type %d */", x->type);
			sput (put, buf);
	}
}
Example #8
0
File: lct.c Project: jbailhache/log
type type_term_1 (term x)
{
	switch (x->k)
	{
		case TERM_I: 	/* a->a */
			return fnc (x->I.a, x->I.a);
		case TERM_K:    /* a->(b->a) */
			return fnc (x->K.a, fnc (x->K.b, x->K.a));
		case TERM_S:	/* (a->b->c) -> (a->b) -> a -> c */
			return fnc (fnc (x->S.a, fnc (x->S.b, x->S.c)),
				fnc (fnc (x->S.a, x->S.b),
					fnc (x->S.a, x->S.c)));
		case TERM_Y:
			return fnc (fnc (x->Y.a, x->Y.a), x->Y.a);
		case TERM_ZERO:
			return ORD;
		case TERM_SUC:
			return fnc (ORD, ORD);
		case TERM_LIM:
			return fnc (fnc (ORD, ORD), ORD);
		case TERM_REP:
			return fnc (ORD, fnc (fnc (x->rep.a, x->rep.a),
						fnc (x->rep.a, x->rep.a)));
		case TERM_AP:
		{
		type tf;
			tf = type_term (x->ap.fnc);
			if (tf->k != TYPE_FNC)
			{
				sput ("type_term: invalid function\n", err);
				return UNDEF;
			}
			return tf->fnc.res;
		}
		case TERM_VAR:
			return x->var.typ;
		default:
			return UNDEF;
	}
}
Example #9
0
File: lct.c Project: jbailhache/log
term lambda (term v, term x)
{
term r;
#ifdef TRACE
	sput ("Lambda ", err);
	write_term (v, err);
	sput (" . ", err);
	write_term (x, err);
	sput ("...\n", err);
#endif
	r = lambda_1 (v, x);
#ifdef TRACE
	sput ("lambda ", err);
	write_term (v, err);
	sput (" . ", err);
	write_term (x, err);
	sput (" = ", err);
	write_term (r, err);
	sput (".\n", err);
#endif
	return r;
}
Example #10
0
File: lct.c Project: jbailhache/log
term ap (term fnc, term arg)
{
type tf, ta;
	tf = type_term (fnc);
	if (tf->k != TYPE_FNC)
		sput ("ap: invalid function\n", err);
	ta = type_term (arg);
	if (!equal_type (ta, tf->fnc.arg))
	{
		sput ("ap: bad type\n\tfunction ", err);
		write_term (fnc, err);
		sput (" has type ", err);
		write_type (tf, err);
		sput ("\n\targument ", err);
		write_term (arg, err);
		sput (" has type ", err);
		write_type (ta, err);
		sput ("\n", err);
	}
	return ap1 (fnc, arg);
}
Example #11
0
void dpy_cleararea(int x1, int y1, int x2, int y2)
{
	for (int y=y1; y<=y2; y++)
		for (int x=x1; x<=x2; x++)
			sput(backbuffer, x, y, glyphcache_id(' ' , defaultattr));
}
Example #12
0
gen_pred (struct pred_list *pred, struct put_fnct *put)
{
int i;
struct clause_list *clause;

	sprintf (buf, "pl_%s_%d (struct coroutine *k",
			pred->name, pred->n_args);
	sput (put, buf);
	for (i=0; i<pred->n_args; i++)
	{
		sprintf (buf, ", expr a%d", i);
		sput (put, buf);
	}
	sput (put, ")\n{\nexpr nx[MAX_NEW_CONS];\n");
	sput (put, "int pnx, i;\nstruct process_list *alt_process;\n");
	sput (put, "\tpnx = 0;\n\tbegin_decl ();\n");
	for (i=0; i<pred->n_args; i++)
	{
		sprintf (buf, "\tdecl_expr (&a%d);\n", i);
		sput (put, buf);
	}
	/*
	sput (put, "\tfor (i=0; i<MAX_NEW_CONS; i++)\n\t{\n");
	sput (put, "\t\tnx[i] = 0;\n");
	sput (put, "\t\tdle (nx[i]);\n\t}\n");
	*/
	sput (put, "\tfor (i=0; i<MAX_NEW_CONS; i++)\n");
	sput (put, "\t\tdle (nx[i]);\n");

	sput (put, "#ifdef TRACE\n");
	for (i=0; i<pred->n_args; i++)
	{
		sprintf (buf, "\tprintf (\"\\n%s: a%d = \"); print_expr (a%d);\n",
				pred->name, i, i);
		sput (put, buf);
	}
	sput (put, "#endif\n");

	for (clause = pred->clauses;
		clause != NULL;
		clause = clause->next)
	{
		sput (put, "\tif (alt (k, 1, 0))\n\t{\n");
		/* sput (put, "\talt_process = getpl() -> alt;\n\t{"); */
		gen_clause (clause, pred->n_args, put);
		/* sput (put, "\t}\n\t} else\n"); */
		sput (put, "\t} else\n");
	}
	sput (put, "\tend (k);\n\tfree_expr ();\n}\n");

}
Example #13
0
void p_f_iles(void)
	{
	print_at(2,2);
	printf("3. DEMO: Filehandling\n");
	print_at(2,4);
	printf("   Fileselectorbox, Alertbox, Auslesen eines Files, RELSEEK, SEEK, LOF, LOC ..\n");
	bild_char = sget(bild_char);
	chdrive(1);
	msprintf(a_char,"*.LST");
	msprintf(b_char,"A:\\GFA_TEST\\");
	chdir( b_char);
	fileselect(mstrcat( b_char,a_char),a_char,c_char);
	sput( bild_char);
	if(strcmp(c_char,""))
		{
		if((FP[1] = fopen(c_char,"r")) == NULL)
			{
			printf("\nFehler beim �ffnen der Datei !");
			getchar();
			r_aus(-1);
			}
		c_long=lof(FP[1]);
		msprintf(c_char,"%s",mid(c_char,rinstr(c_char,"\\")+1,-1));
		print_at(5,6);
		printf("L�nge der Datei %c%s%c%s: %ld\n",*chr(34),c_char,*chr(34),space(15-strlen(c_char)),c_long);
		relseek(FP[1],10);
		print_at(5,7);
		printf("Suche Position                   : %ld\n",loc(FP[1]));
		relseek(FP[1],10);
		print_at(5,8);
		printf("Erh�he den Filepointer um 10 Byte: %ld\n",loc(FP[1]));
		seek(FP[1],10);
		print_at(5,9);
		printf("Stelle den Pointer auf Position  : %ld\n",loc(FP[1]));
		print_at(5,11);
		printf("Auslesen und Anzeigen der Datei >>%s<< (Stop/Abbruch: Taste)\n",c_char);
		p_s_top();
		printf("\33E");
		do
			{
			printf("%c", *chr(fgetc(FP[1])));
			if(strcmp(inkey(),""))
				{
				a_lert( 2,"Abbruch",2,"JA|NEIN",back_long);
				if(back_long==1)
					{
					goto raus;
					}
				}
			if(feof(FP[1]))
				goto M2;
			}
		while(1);
		M2:
		raus:

		print_at(5,25);
		printf("Ausgelesen bis Position: %ld%s\n",loc(FP[1]),space(54-strlen(ltoab(loc(FP[1]),-1,-1))));
		fclose(FP[1]);
		}
	else
		{
		print_at(5,6);
		printf("Sie haben keine Datei ausgew�hlt!\n");
		}
	p_s_top();
	printf("\33E");
	}
Example #14
0
File: lct.c Project: jbailhache/log
main ()
{
term x, n;
type t;
term plus_omega, omega_2, plus_omega_2, plus_omega_n, omega_n, omega_omega,
	plus_omega_omega;
term f, p;

	param_out.fd = stdout;
	param_err.fd = stderr;
	init ();
	/* Exemple : construction de l'ordinal omega * 2 */
	x = ap (LIM, ap (ap (S(ORD,ORD,ORD),
		ap (ap (S(ORD,fnc(ORD,ORD),fnc(ORD,ORD)),rep(ORD)),
			ap(K(fnc(ORD,ORD),ORD),SUC))),
		ap(K(ORD,ORD),ap(LIM,I(ORD)))));
	sput ("x = ", out);
	write_term (x, out);
	t = type_term (x);
	sput ("\nt = ", out);
	write_type (t, out);
	sput ("\n", out);

	n = var ("n", ORD);
	/*
	x = ap (LIM, lambda (n,
		ap (ap (ap (rep(ORD), n), SUC), ap (LIM, I(ORD)))
			));
		*/
	x = ap (ap (ap (rep(ORD), n), SUC), ap (LIM, I(ORD)));
	/*   x = ap (rep(ORD), n); */

	sput ("x = ", out);
	write_term (x, out);
	t = type_term (x);
	sput ("\nt = ", out);
	write_type (t, out);
	sput ("\n", out);

	x = lambda (n, x);
	sput ("x = ", out);
	write_term (x, out);
	t = type_term (x);
	sput ("\nt = ", out);
	write_type (t, out);
	sput ("\n", out);

	x = ap (LIM, x);
	sput ("x = ", out);
	write_term (x, out);
	t = type_term (x);
	sput ("\nt = ", out);
	write_type (t, out);
	sput ("\n", out);

	x = var ("x", ORD);
	plus_omega = lambda (x, lim (lambda (n,
		rpt (ORD, n, SUC, x)
			)));
	omega_2 = lim (lambda (n, rpt (ORD, n, plus_omega, ZERO)));
	t = type_term (omega_2);
	sput ("Type of omega_2 = ", out);
	write_type (t, out);
	sput ("\n", out);

	plus_omega_2 = lambda (x, lim (lambda (n,
		rpt (ORD, n, plus_omega, x))));
	t = type_term (plus_omega_2);
	sput ("Type of plus_omega_2 is ", out);
	write_type (t, out);

	f = var ("f", fnc(ORD,ORD));
	p = var ("p", ORD);

	plus_omega_n = lambda (n, rpt (fnc(ORD,ORD), n, lambda (f,
		lambda (x, lim (lambda (p, rpt (ORD, p, f, x)))) ),
		SUC));
	/*
	next_power = lambda (f,
		lambda (x, lim (lambda (p, rpt (ORD, p, f, x)))));
	plus_omega_n = lambda (n, rpt (fnc(ORD,ORD), n,
	*/
	t = type_term (plus_omega_n);
	sput ("\nType of plus_omega_n is ", out);
	write_type (t, out);

	omega_n = lambda (n, ap (ap (plus_omega_n, n), ZERO));
	t = type_term (omega_n);
	sput ("\nType of omega_n is ", out);
	write_type (t, out);

	omega_omega = lim (omega_n);
	t = type_term (omega_omega);
	sput ("\nType of omega_omega is ", out);
	write_type (t, out);

	plus_omega_omega = lambda (x, lim (lambda (n,
					    ap (ap (plus_omega_n, n), x) )));
	t = type_term (plus_omega_omega);
	sput ("\nType of plus_omega_omega is ", out);
	write_type (t, out);

	sput ("\n", out);

}
Example #15
0
void p_grafik(void)
	{
	deftext( 1,24,0,32);
	text( 174,200,-1,"4. DEMO: GRAFIK");
	p_s_top();
	printf("\33E");
	deftext( -1,1,0,13);
	for(h_long=1;h_long<=2;h_long++)
		{
		for(j_long=4;j_long<=24 ;j_long+= 4)
			{
			for(i_long=0;i_long<=5;i_long++)
				{
				deftext( -1,pow(2,i_long),-1,-1);
				text( 320,50+i_long*(16+j_long*2),-1,"B_NACH_C");
				}
			pause( 10);
			printf("\33E");
			deftext( -1,-1,-1,j_long);
			}
		deftext( -1,-1,h_long*1800,-1);
		}
	deftext( -1,1,-1,13);
	for(h_long=1;h_long<=4;h_long++)
		{
		for(i_long=2;i_long<=3;i_long++)
			{
			for(j_long=0;j_long<=2;j_long++)
				{
				defline( h_long,i_long,j_long,j_long);
				draw(100+50*j_long,50+25*j_long , 539-50*j_long,50+25*j_long);
				box( 50+50*j_long,150,320-50*j_long,350);
				circle( 480,250,20+40*j_long);
				}
			pause( 10);
			printf("\33E");
			}
		}
	defline( 1,2,1,1);
	deffill( 1,1,1);
	for(i_long=2;i_long<=3;i_long++)
		{
		for(j_long=1;j_long<=20;j_long++)
			{
			deffill( 1,i_long,j_long);
			pbox( 16*j_long-16,10,655-16*j_long,190);
			pcircle( 160,299,105-5*j_long);
			pellipse( 480,299,5*j_long,105-5*j_long);
			}
		if(j_long>20 &  i_long==2)
			{
			bild_char = sget(bild_char);
			}
		}
	pause( 50);
	s_adr_long=(long)(bild_char);
	d_adr_long=xbios(2);
	for(i_long=1;i_long<=1000;i_long++)
		{
		rc_copy(s_adr_long,(int)((double)rand()*(10)/32767)*64,(int)((double)rand()*(10)/32767)*40,64,40 ,d_adr_long,(int)((double)rand()*(10)/32767)*64,(int)((double)rand()*(10)/32767)*40,
	-1);
		}
	pause( 100);
	printf("\33E");
	sput( bild_char);
	deffill( 1,1,1);
Example #16
0
File: lct.c Project: jbailhache/log
write_term (term x, struct put_fnct *put)
{
	switch (x->k)
	{
		case TERM_I:
			sput (" I [", put);
			write_type (x->I.a, put);
			sput ("] ", put);
			break;
		case TERM_K:
			sput (" K [", put);
			write_type (x->K.a, put);
			sput (", ", put);
			write_type (x->K.b, put);
			sput ("] ", put);
			break;
		case TERM_S:
			sput (" S [", put);
			write_type (x->S.a, put);
			sput (", ", put);
			write_type (x->S.b, put);
			sput (", ", put);
			write_type (x->S.c, put);
			sput ("] ", put);
			break;
		case TERM_Y:
			sput (" Y [", put);
			write_type (x->Y.a, put);
			sput ("] ", put);
			break;
		case TERM_ZERO:
			sput (" 0 ", put);
			break;
		case TERM_SUC:
			sput (" suc ", put);
			break;
		case TERM_LIM:
			sput (" lim ", put);
			break;
		case TERM_REP:
			sput (" rep [", put);
			write_type (x->rep.a, put);
			sput ("] ", put);
			break;
		case TERM_AP:
			sput ("-", put);
			write_term (x->ap.fnc, put);
			write_term (x->ap.arg, put);
			break;
		case TERM_VAR:
			sput (" <", put);
			sput (x->var.name, put);
			sput (":", put);
			write_type (x->var.typ, put);
			sput ("> ", put);
			break;
		case TERM_UNDEF:
			sput (" U ", put);
			break;
		default:
			sput ("?", put);

	}
}
Example #17
0
gen_clause (struct clause_list *clause, int n_args, struct put_fnct *put)
{
struct expr_list *l, *vars, *var;
int i;

	sput (put, "\t/* clause */\n");

	vars = NULL;

	for (i=0; i<n_args; i++)
		vars = aj_vars (vars, clause->args[i]);
	for (l=clause->corps; l!=NULL; l=l->next)
		vars = aj_vars (vars, l->first);

	for (var=vars; var!=NULL; var=var->next)
	{
		sprintf (buf, "\texpr val_%s, var_%s;\n",
				var->first->name, var->first->name);
		sput (put, buf);
	}

	sput (put, "\t\talt_process = getpl (k) -> alt;\n");

	for (var=vars; var!=NULL; var=var->next)
	{
		sprintf (buf, "\t\tdle(val_%s) dle(var_%s)\n",
				var->first->name, var->first->name);
		sput (put, buf);
	}

	for (var=vars; var!=NULL; var=var->next)
	{
		sprintf (buf, "\t\tval_%s=UNDEF; var_%s=mk_var(&val_%s);\n",
				var->first->name, var->first->name,
				var->first->name);
		sput (put, buf);
	}

	sput (put, "#ifdef TRACE\n");
	for (i=0; i<n_args; i++)
	{
		sprintf (buf, "\t\tprintf (\"\\n\\ta%d = \"); print_expr (a%d);\n",
				i, i);
		sput (put, buf);
	}
	sput (put, "#endif\n");

	for (i=0; i<n_args; i++)
	{
		sput (put, "\t\tunify (k, ");
		gen_expr (clause->args[i], put);
		sprintf (buf, ", a%d);\n", i);
		sput (put, buf);
		sput (put, RESET_NX);
	}

	for (l=clause->corps; l!=NULL; l=l->next)
	{
		if (!strcmp (l->first->name, "c_code"))
		{
			sput (put, "\t/* C code inclusion */\n\t");
			sput (put, l->first->args[0]->s);
			sput (put, "\n\t/* End of C code inclusion */\n");
		}
		else
		{
			sprintf (buf, "\t\tpl_%s_%d (k",
				l->first->name, l->first->n);
			sput (put, buf);
			for (i=0; i<l->first->n; i++)
			{
				sput (put, ", ");
				gen_expr (l->first->args[i], put);
			}
			sput (put, ");\n");
			sput (put, RESET_NX);
		}
	}

	for (i=0; i<n_args; i++)
	{
		sprintf (buf, "\t\tunify (k, a%d, ", i);
		sput (put, buf);
		gen_expr (clause->args[i], put);
		sput (put, ");\n");
		sput (put, RESET_NX);
	}

	sput (put, "#ifdef TRACE\n");
	for (i=0; i<n_args; i++)
	{
		sprintf (buf, "\t\tprintf (\"\\n\\ta%d = \"); print_expr (a%d);\n",
				i, i);
		sput (put, buf);
	}
	sput (put, "#endif\n");

}