mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-24 00:44:23 +00:00
Upload
Digital Research
This commit is contained in:
114
CPM OPERATING SYSTEMS/CPM 68K/1.0X SOURCES/v102a/c068/interf.c
Normal file
114
CPM OPERATING SYSTEMS/CPM 68K/1.0X SOURCES/v102a/c068/interf.c
Normal file
@@ -0,0 +1,114 @@
|
||||
/*
|
||||
Copyright 1982
|
||||
Alcyon Corporation
|
||||
8716 Production Ave.
|
||||
San Diego, Ca. 92121
|
||||
*/
|
||||
|
||||
#include "parser.h"
|
||||
short bol;
|
||||
|
||||
outinit(tp,type) /* returns - none*/
|
||||
struct tnode *tp;
|
||||
{
|
||||
outexpr(tnalloc(INIT,type,0,0,tp));
|
||||
}
|
||||
|
||||
outcforreg(tp)
|
||||
struct tnode *tp;
|
||||
{
|
||||
outexpr(tnalloc(CFORREG,tp->t_type,0,0,tp));
|
||||
}
|
||||
|
||||
outifgoto(tp,dir,lab)
|
||||
struct tnode *tp;
|
||||
int dir;
|
||||
int lab;
|
||||
{
|
||||
outexpr(tnalloc(IFGOTO,dir,lab,0,tp));
|
||||
}
|
||||
|
||||
/* outasm - outputs asm literal. [vlh] 4.2 asm instruction */
|
||||
outasm()
|
||||
{
|
||||
register char *p;
|
||||
|
||||
if (lineno != lst_ln_id) {
|
||||
outline();
|
||||
OUTNULL();
|
||||
}
|
||||
putchar('\t');
|
||||
for (p = cstr; *p ; p++) {
|
||||
putchar(*p);
|
||||
if (*p == '\n')
|
||||
putchar('\t');
|
||||
}
|
||||
putchar('\n');
|
||||
}
|
||||
|
||||
outexpr(tp)
|
||||
struct tnode *tp;
|
||||
{
|
||||
if (!tp)
|
||||
return;
|
||||
outline();
|
||||
outtree(tp);
|
||||
}
|
||||
|
||||
/* interprets and prints the parse tree */
|
||||
outtree(tp)
|
||||
struct tnode *tp;
|
||||
{
|
||||
short w1, w2;
|
||||
|
||||
if( !tp )
|
||||
return;
|
||||
|
||||
printf("%x.%x",tp->t_op,tp->t_type);
|
||||
|
||||
switch( tp->t_op ) {
|
||||
|
||||
case CINT:
|
||||
printf(".%x\n",((struct conode *)tp)->t_value);
|
||||
break;
|
||||
|
||||
case CLONG:
|
||||
w1 = ((struct lconode *)tp)->t_lvalue.hiword;
|
||||
w2 = ((struct lconode *)tp)->t_lvalue.loword;
|
||||
printf(".%x.%x\n",w1,w2);
|
||||
break;
|
||||
|
||||
case CFLOAT: /*[vlh] 3.4*/
|
||||
w1 = ((struct lconode *)tp)->t_lvalue.hiword;
|
||||
w2 = ((struct lconode *)tp)->t_lvalue.loword;
|
||||
printf(".%x.%x\n",w1,w2);
|
||||
break;
|
||||
|
||||
case SYMBOL:
|
||||
printf(".%x",((struct symnode *)tp)->t_sc);
|
||||
if( ((struct symnode *)tp)->t_sc == EXTERNAL )
|
||||
printf(".%.8s\n",((struct extnode *)tp)->t_symbol);
|
||||
else
|
||||
printf(".%x\n",((struct symnode *)tp)->t_offset);
|
||||
break;
|
||||
|
||||
case 0:
|
||||
putchar('\n');
|
||||
break;
|
||||
|
||||
case IFGOTO:
|
||||
case BFIELD:
|
||||
printf(".%x\n",tp->t_dp);
|
||||
outtree(tp->t_left);
|
||||
break;
|
||||
|
||||
default:
|
||||
putchar('\n');
|
||||
outtree(tp->t_left);
|
||||
if( BINOP(tp->t_op) ) {
|
||||
outtree(tp->t_right);
|
||||
}
|
||||
break;
|
||||
} /* end of case... */
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user