fixup commit for tag 'release-5-6'
This commit is contained in:
parent
e8b47b4745
commit
cf1a80ecb6
366 changed files with 0 additions and 13719 deletions
|
@ -1,3 +0,0 @@
|
|||
p=/proj/em/Work
|
||||
sh TakeAction 'make distr' $p/distr/Action
|
||||
sh TakeAction 'make distr' $p/distr/Action1
|
35
Makefile
35
Makefile
|
@ -1,35 +0,0 @@
|
|||
cmp: # compile everything and compare
|
||||
(cd etc ; make cmp )
|
||||
(cd util ; make cmp )
|
||||
(cd lang ; make cmp )
|
||||
(cd mach ; make cmp )
|
||||
|
||||
install: # compile everything to machine code
|
||||
(cd etc ; make install )
|
||||
(cd util ; make install )
|
||||
(cd lang/cem ; make install )
|
||||
(cd mach ; make install )
|
||||
(cd lang/pc ; make install )
|
||||
|
||||
clean: # remove all non-sources, except boot-files
|
||||
(cd doc ; make clean )
|
||||
(cd man ; make clean )
|
||||
(cd h ; make clean )
|
||||
(cd etc ; make clean )
|
||||
(cd util ; make clean )
|
||||
(cd lang ; make clean )
|
||||
(cd mach ; make clean )
|
||||
|
||||
opr: # print all sources
|
||||
make pr | opr
|
||||
|
||||
pr: # print all sources
|
||||
@( pr Makefile ; \
|
||||
(cd doc ; make pr ) ; \
|
||||
(cd man ; make pr ) ; \
|
||||
(cd h ; make pr ) ; \
|
||||
(cd etc ; make pr ) ; \
|
||||
(cd lang ; make pr ) ; \
|
||||
(cd util ; make pr ) ; \
|
||||
(cd mach ; make pr ) \
|
||||
)
|
225
lib/descr/fe.src
225
lib/descr/fe.src
|
@ -1,225 +0,0 @@
|
|||
# (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||
# $Header$
|
||||
#
|
||||
# Don't generate line updating code by default (i.e.: -L flag provided to cem).
|
||||
# To put it on again: use -NL
|
||||
var LFLAG=-L
|
||||
var C_INCLUDES=-I{EM}/include/_tail_cc
|
||||
var ANSI_C_INCLUDES=-I{EM}/include/tail_ac
|
||||
|
||||
callname ack
|
||||
name cpp
|
||||
# no from, this is a preprocessor
|
||||
to .i
|
||||
program {EM}/lib/cpp{ANSI_C?}
|
||||
mapflag -I* CPP_F={CPP_F?} -I*
|
||||
mapflag -U* CPP_F={CPP_F?} -U*
|
||||
mapflag -D* CPP_F={CPP_F?} -D*
|
||||
mapflag -P CPP_F={CPP_F?} -P
|
||||
mapflag -C CPP_F={CPP_F?} -C
|
||||
mapflag -wo CPP_F={CPP_F?} -o
|
||||
mapflag -ansi ANSI_C=.ansi
|
||||
args {CPP_F?} ({SUFFIX?}:.ocm=-I{EM}/include/occam) \
|
||||
({ANSI_C?}:.ansi={SYSINCLUDES?} {ANSI_C_INCLUDES} {INCLUDES?}) \
|
||||
({ANSI_C?.c}:{SUFFIX}={SYSINCLUDES?} {C_INCLUDES} {INCLUDES?}) \
|
||||
-D{NAME} \
|
||||
({ANSI_C?.xx}:.xx=-DEM_WSIZE={w} -DEM_PSIZE={p} \
|
||||
-DEM_SSIZE={s} -DEM_LSIZE={l} -DEM_FSIZE={f} -DEM_DSIZE={d}) \
|
||||
-D_EM_WSIZE={w} -D_EM_PSIZE={p} \
|
||||
-D_EM_SSIZE={s} -D_EM_LSIZE={l} -D_EM_FSIZE={f} -D_EM_DSIZE={d} \
|
||||
<
|
||||
stdout
|
||||
prep is
|
||||
end
|
||||
name cem
|
||||
from .c
|
||||
to .k
|
||||
program {EM}/lib/em_cemcom{ANSI_C?}
|
||||
mapflag -ansi ANSI=ansi
|
||||
# mapflag -I* CPP_F={CPP_F?} -I*
|
||||
# mapflag -U* CPP_F={CPP_F?} -U*
|
||||
# mapflag -D* CPP_F={CPP_F?} -D*
|
||||
mapflag -M* CEM_F={CEM_F?} -M*
|
||||
mapflag -L CEM_F={CEM_F?} -L
|
||||
mapflag -A CEM_F={CEM_F?} -A
|
||||
mapflag -NL LFLAG=
|
||||
mapflag -KR CEM_F={CEM_F?} -R
|
||||
mapflag -w CEM_F={CEM_F?} -w
|
||||
mapflag -wa CEM_F={CEM_F?} -a
|
||||
mapflag -wo CEM_F={CEM_F?} -o
|
||||
mapflag -ws CEM_F={CEM_F?} -s
|
||||
mapflag -g CEM_F={CEM_F?} -g
|
||||
mapflag -p CEM_F={CEM_F?} -p
|
||||
mapflag -V* CEM_F={CEM_F?} -V*
|
||||
rts .c
|
||||
need .c
|
||||
args \
|
||||
{CPP_F?} \
|
||||
{SYSINCLUDES?} \
|
||||
({ANSI_C?}:.ansi={ANSI_C_INCLUDES}) \
|
||||
({ANSI_C?.c}:.c={C_INCLUDES}) \
|
||||
{INCLUDES?} \
|
||||
-D{NAME} \
|
||||
-D_EM_WSIZE={w} -D_EM_PSIZE={p} \
|
||||
-D_EM_SSIZE={s} -D_EM_LSIZE={l} -D_EM_FSIZE={f} -D_EM_DSIZE={d} \
|
||||
-Vw{w}.{w}i{w}.{w}p{p}.{w}f{f}.{w}s{s}.{s}l{l}.{w}d{d}.{w} \
|
||||
{CC_ALIGN?} \
|
||||
{CEM_F?} {LFLAG?} < >
|
||||
callname acc
|
||||
callname cc
|
||||
end
|
||||
name pc
|
||||
from .p
|
||||
to .k
|
||||
program {EM}/lib/em_pc
|
||||
mapflag -L PC_F={PC_F?} -L
|
||||
# mapflag -s PC_F={PC_F?} -s
|
||||
mapflag -_ PC_F={PC_F?} -U
|
||||
mapflag -w PC_F={PC_F?} -w
|
||||
mapflag -V* PC_F={PC_F?} -V*
|
||||
mapflag -M* PC_F={PC_F?} -M*
|
||||
# mapflag -i* PC_F={PC_F?} -i*
|
||||
mapflag -A PC_F={PC_F?} -A
|
||||
# mapflag -R PC_F={PC_F?} -R
|
||||
mapflag --* PC_F={PC_F?} -*
|
||||
#range checks can only be disabled through comments
|
||||
args \
|
||||
-Vw{w}.{w}i{w}.{w}l{l}.{w}p{p}.{w}f{d}.{w}S{w}.{w} \
|
||||
{PC_F?} < > {SOURCE}
|
||||
prep cond
|
||||
rts .p
|
||||
need .p
|
||||
callname apc
|
||||
callname pc
|
||||
end
|
||||
name m2
|
||||
from .mod.def
|
||||
to .k
|
||||
program {EM}/lib/em_m2
|
||||
mapflag -I* M2_INCL={M2_INCL?} -I*
|
||||
mapflag -L M2_F={M2_F?} -L
|
||||
mapflag -g M2_F={M2_F?} -g
|
||||
mapflag -w* M2_F={M2_F?} -w*
|
||||
mapflag -W* M2_F={M2_F?} -W*
|
||||
mapflag -_ M2_F={M2_F?} -U
|
||||
mapflag -M* M2_F={M2_F?} -M*
|
||||
mapflag -x M2_F={M2_F?} -x
|
||||
mapflag -Xs M2_F={M2_F?} -s
|
||||
mapflag -V* M2_F={M2_F?} -V*
|
||||
mapflag --* M2_F={M2_F?} -*
|
||||
args \
|
||||
{M2_INCL?} -I{EM}/lib/m2 {M2SYSLIB?} \
|
||||
-Vw{w}.{w}i{w}.{w}p{p}.{w}l{l}.{w}f{f}.{w}d{d}.{w} \
|
||||
{M2_ALIGN?} {M2_F?} < >
|
||||
prep cond
|
||||
rts .mod
|
||||
need .mod
|
||||
callname m2
|
||||
end
|
||||
name ocm
|
||||
from .ocm
|
||||
to .k
|
||||
program {EM}/lib/em_occam
|
||||
mapflag -L OCM_F={OCM_F?} -L
|
||||
mapflag -V* OCM_F={OCM_F?} -V*
|
||||
args -Vw{w}p{p}l{l} {OCM_F?}
|
||||
stdin
|
||||
stdout
|
||||
rts .ocm
|
||||
need .ocm
|
||||
prep cond
|
||||
callname ocm
|
||||
end
|
||||
name abc
|
||||
from .b
|
||||
to .k
|
||||
program {EM}/lib/em_bem
|
||||
mapflag -h ABC_F={ABC_F?} -h
|
||||
mapflag -w ABC_F={ABC_F?} -w
|
||||
mapflag -L ABC_F={ABC_F?} -L
|
||||
mapflag -E ABC_F={ABC_F?} -E
|
||||
# mapflag -d ABC_F={ABC_F?} -d
|
||||
args -Vw{w}p{p}f{d} {ABC_F?} < > {SOURCE}
|
||||
prep cond
|
||||
rts .b
|
||||
need .b
|
||||
callname abc
|
||||
end
|
||||
var A68INIT={EM}/lib/em_a68s_init
|
||||
name a68s
|
||||
from .8.a68
|
||||
to .k
|
||||
program {EM}/lib/em_a68s{w}{p}
|
||||
mapflag -PA* A68INIT=*
|
||||
args < > {SOURCE}.lst {A68INIT}{w}{p} /dev/null
|
||||
prep cond
|
||||
rts .8
|
||||
need .8
|
||||
callname a68s
|
||||
end
|
||||
name encode
|
||||
from .e
|
||||
to .k
|
||||
program {EM}/lib/em_encode
|
||||
args <
|
||||
prep cond
|
||||
stdout
|
||||
end
|
||||
name opt
|
||||
from .k
|
||||
to .m
|
||||
program {EM}/lib/em_opt
|
||||
mapflag -LIB OPT_F={OPT_F?} -L
|
||||
args {OPT_F?} <
|
||||
stdout
|
||||
optimizer
|
||||
end
|
||||
name ego
|
||||
from .m.ma
|
||||
to .gk
|
||||
program {EM}/lib/em_ego
|
||||
mapflag -EGO-* EGO_F={EGO_F?} -*
|
||||
# The following lines are obsolete, but here for backwards compatibility.
|
||||
# They should be removed some day.
|
||||
mapflag -IL* EGO_F={EGO_F?} -IL*
|
||||
mapflag -CS* EGO_F={EGO_F?} -CS*
|
||||
mapflag -SR* EGO_F={EGO_F?} -SR*
|
||||
mapflag -UD* EGO_F={EGO_F?} -UD*
|
||||
mapflag -LV* EGO_F={EGO_F?} -LV*
|
||||
mapflag -SA* EGO_F={EGO_F?} -RA*
|
||||
mapflag -SP* EGO_F={EGO_F?} -SP*
|
||||
mapflag -BO* EGO_F={EGO_F?} -BO*
|
||||
mapflag -CJ* EGO_F={EGO_F?} -CJ*
|
||||
mapflag -EV EGO_F={EGO_F?} -V
|
||||
# End of obsolete lines
|
||||
mapflag -Q* EGO_F={EGO_F?} -Q*
|
||||
mapflag -T* EGO_F={EGO_F?} -T*
|
||||
mapflag -S* EGO_F={EGO_F?} -S*
|
||||
mapflag -s* EGO_F={EGO_F?} -s*
|
||||
mapflag -a EGO_F={EGO_F?} -a
|
||||
mapflag -O* EGO_F={EGO_F?} -O*
|
||||
args \
|
||||
{EGO_F?} -P {EM}/lib/ego \
|
||||
-M{EM}/lib/ego/{M}descr <
|
||||
optimizer 2
|
||||
stdout
|
||||
combiner
|
||||
end
|
||||
name opt2
|
||||
# output of the global optimizer is processed by a stripped version
|
||||
# of the em peephole optimizer
|
||||
from .gk
|
||||
to .g
|
||||
program {EM}/lib/em_opt2
|
||||
# mapflag -LIB OPT_F={OPT_F?} -L
|
||||
args {OPT_F?} <
|
||||
optimizer
|
||||
stdout
|
||||
end
|
||||
name decode
|
||||
from .k.m.g.gk
|
||||
to .e
|
||||
program {EM}/lib/em_decode
|
||||
args <
|
||||
stdout
|
||||
end
|
|
@ -1,40 +0,0 @@
|
|||
# $Revision$
|
||||
var w=2
|
||||
var p=2
|
||||
var s=2
|
||||
var l=4
|
||||
var f=4
|
||||
var d=8
|
||||
var NAME=i8086
|
||||
var M=i86
|
||||
var LIB=lib/i86/tail_
|
||||
var LIBIBM=lib/ibm/tail_
|
||||
var RT=lib/i86/head_
|
||||
var RTIBM=lib/ibm/head_
|
||||
var CPP_F=-Dunix
|
||||
var INCLUDES=-I{EM}/include -I{EM}/lib/ibm/include
|
||||
name be
|
||||
from .m.g
|
||||
to .s
|
||||
program {EM}/lib/{M}/cg
|
||||
args <
|
||||
stdout
|
||||
need .e
|
||||
end
|
||||
name asld
|
||||
from .s.a
|
||||
to .out
|
||||
outfile a.out
|
||||
program {EM}/lib/{M}/as
|
||||
mapflag -l* LNAME={EM}/{LIB}*
|
||||
mapflag -i IFILE={EM}/{RT}i
|
||||
args {IFILE?} (.e:{HEAD}={EM}/{RTIBM}em) \
|
||||
({RTS}:.b.c={EM}/{RT}cc) ({RTS}:.p={EM}/{RT}pc) -o > < \
|
||||
(.p:{TAIL}={EM}/{LIB}pc) \
|
||||
(.b:{TAIL}={EM}/{LIB}bc) \
|
||||
(.b.c:{TAIL}={EM}/{LIB}cc.1s {EM}/{LIB}cc.2g) \
|
||||
(.e:{TAIL}={EM}/{LIBIBM}em) \
|
||||
(.b.c.p:{TAIL}={EM}/{LIBIBM}mon) \
|
||||
(.e:{TAIL}={EM}/{LIBIBM}em.vend)
|
||||
linker
|
||||
end
|
|
@ -1,35 +0,0 @@
|
|||
# $Revision$
|
||||
var w=2
|
||||
var p=2
|
||||
var s=2
|
||||
var l=4
|
||||
var f=4
|
||||
var d=8
|
||||
var M=int
|
||||
var NAME=int22
|
||||
var LIB=lib/int22/tail_
|
||||
var RT=lib/int22/head_
|
||||
var SIZE_FLAG=-sm
|
||||
var CPP_F=-Dunix=unix
|
||||
var INCLUDES=-I{EM}/include/_tail_cc -I{EM}/include/_tail_mon
|
||||
name asld
|
||||
from .k.m.a.g
|
||||
to .out
|
||||
outfile e.out
|
||||
program {EM}/lib/em_ass
|
||||
mapflag -l* LNAME={EM}/{LIB}*
|
||||
mapflag -+* ASS_F={ASS_F?} -+*
|
||||
mapflag --* ASS_F={ASS_F?} --*
|
||||
mapflag -s* SIZE_FLAG=-s*
|
||||
args {SIZE_FLAG} \
|
||||
({RTS}:.ocm.b.c={EM}/{RT}cc) \
|
||||
({RTS}:.mod={EM}/{RT}m2) \
|
||||
({RTS}:.p={EM}/{RT}pc) -o > < \
|
||||
(.p:{TAIL}={EM}/{LIB}pc) \
|
||||
(.b:{TAIL}={EM}/{LIB}bc) \
|
||||
(.ocm:{TAIL}={EM}/{LIB}ocm) \
|
||||
(.mod:{TAIL}={EM}/{LIB}m2) \
|
||||
(.ocm.b.c:{TAIL}={EM}/{LIB}cc.1s {EM}/{LIB}cc.2g) \
|
||||
(.mod.ocm.b.c.p:{TAIL}={EM}/{LIB}mon)
|
||||
linker
|
||||
end
|
|
@ -1,39 +0,0 @@
|
|||
# $Revision$
|
||||
var w=2
|
||||
var p=4
|
||||
var s=2
|
||||
var l=4
|
||||
var f=4
|
||||
var d=8
|
||||
var NAME=m68k2
|
||||
var M=m68k2
|
||||
var LIBDIR=/lib/{M}
|
||||
var LIB=lib/{M}/tail_
|
||||
var RT=lib/{M}/head_
|
||||
var INCLUDES=-I{EM}/include -I/usr/include
|
||||
name be
|
||||
from .m.g
|
||||
to .s
|
||||
program {EM}/lib/{M}/cg
|
||||
args <
|
||||
stdout
|
||||
need .e
|
||||
end
|
||||
name asld
|
||||
from .s.a
|
||||
to .out
|
||||
outfile a.out
|
||||
program {EM}/lib/{M}/as
|
||||
mapflag -l* LNAME={EM}/{LIB}*
|
||||
args (.e:{HEAD}={EM}/{RT}em) \
|
||||
({RTS}:.b.c={EM}/{RT}cc) ({RTS}:.p={EM}/{RT}pc) -o > < \
|
||||
(.p.c.b:{TAIL}={EM}/{LIBDIR}/sys1.s) (.p:{TAIL}={EM}/{LIBDIR}/sys2.s) \
|
||||
(.c:{TAIL}={EM}/{LIBDIR}/write.s) \
|
||||
(.p:{TAIL}={EM}/{LIB}pc) \
|
||||
(.b:{TAIL}={EM}/{LIB}bc) \
|
||||
(.b.c:{TAIL}={EM}/{LIB}cc.1s {EM}/{LIB}cc.2g) \
|
||||
(.b.c:{TAIL}={EM}/{LIB}mon {EM}/{LIB}fake) \
|
||||
(.e:{TAIL}={EM}/{LIB}em.rt {EM}/{LIB}em.vend)
|
||||
prep cond
|
||||
linker
|
||||
end
|
|
@ -1,30 +0,0 @@
|
|||
# $Revision$
|
||||
var w=1
|
||||
var p=2
|
||||
var s=1
|
||||
var l=2
|
||||
var f=4
|
||||
var d=8
|
||||
var NAME=nascom
|
||||
var M=z80a
|
||||
var LIB=lib/{M}/tail_
|
||||
var RT=lib/{M}/head_
|
||||
var INCLUDES=-I{EM}/include -I/usr/include
|
||||
name be
|
||||
from .m.g
|
||||
to .s
|
||||
program {EM}/lib/{M}/be
|
||||
args <
|
||||
stdout
|
||||
need .e
|
||||
end
|
||||
name asld
|
||||
from .s.a
|
||||
to .out
|
||||
outfile a.out
|
||||
program {EM}/lib/z80/as
|
||||
mapflag -l* LNAME={EM}/{LIB}*
|
||||
args (.e:{HEAD}={EM}/{RT}em) ({RTS}:.b.c={EM}/{RT}cc) -o > \
|
||||
(.e:{TAIL}={EM}/{LIB}em.1 {EM}/{LIB}em.2)
|
||||
linker
|
||||
end
|
|
@ -1,32 +0,0 @@
|
|||
var w=2
|
||||
var p=2
|
||||
var s=2
|
||||
var l=4
|
||||
var f=4
|
||||
var d=8
|
||||
var NAME=i8086
|
||||
var M=i86
|
||||
var LIB=mach/i86/lib/tail_
|
||||
var RT=mach/i86/lib/head_
|
||||
var INCLUDES=-I{EM}/include -I/usr/include
|
||||
name be
|
||||
from .m
|
||||
to .s
|
||||
program {EM}/lib/{M}_cg
|
||||
args <
|
||||
prop >
|
||||
need .e
|
||||
end
|
||||
name asld
|
||||
from .s.a
|
||||
to a.out
|
||||
program {EM}/lib/{M}_as
|
||||
mapflag -l* LNAME={EM}/{LIB}*
|
||||
mapflag -i IFILE={EM}/{RT}i
|
||||
args {IFILE?} (.e:{HEAD}={EM}/{RT}em) \
|
||||
({RTS}:.c={EM}/{RT}cc) ({RTS}:.p={EM}/{RT}pc) -o > < \
|
||||
(.p:{TAIL}={EM}/{LIB}pc) (.c:{TAIL}={EM}/{LIB}cc.1s {EM}/{LIB}cc.2g) \
|
||||
(.c.p.e:{TAIL}={EM}/{LIB}netio) (.c.p.e:{TAIL}={EM}/{LIB}alo) \
|
||||
(.c.p:{TAIL}={EM}/{LIB}mon) (.e:{TAIL}={EM}/{LIB}em)
|
||||
prop C
|
||||
end
|
|
@ -1,34 +0,0 @@
|
|||
var w=2
|
||||
var p=2
|
||||
var s=2
|
||||
var l=4
|
||||
var f=4
|
||||
var d=8
|
||||
var NAME=i8086
|
||||
var M=i86
|
||||
var LIB=mach/i86/lib/tail_
|
||||
var ALIB=mach/i86/lib/sat_tail_
|
||||
var RT=mach/i86/lib/head_
|
||||
var ART=mach/i86/lib/sat_head_
|
||||
var CCP_F=-Dunix
|
||||
var INCLUDES=-I{EM}/include -I/usr/include
|
||||
name be
|
||||
from .m
|
||||
to .s
|
||||
program {EM}/lib/{M}_cg
|
||||
args <
|
||||
prop >
|
||||
need .e
|
||||
end
|
||||
name asld
|
||||
from .s.a
|
||||
to a.out
|
||||
program {EM}/lib/{M}_as
|
||||
mapflag -l* LNAME={EM}/{LIB}*
|
||||
args (.e:{HEAD}={EM}/{ART}em) \
|
||||
({RTS}:.c={EM}/{RT}cc) ({RTS}:.p={EM}/{RT}pc) -o > < \
|
||||
(.p:{TAIL}={EM}/{LIB}pc) (.c:{TAIL}={EM}/{LIB}cc.1s {EM}/{LIB}cc.2g) \
|
||||
(.c.p:{TAIL}={EM}/{ALIB}mon) (.c.p.e:{TAIL}={EM}/{LIB}alo) \
|
||||
(.e:{TAIL}={EM}/{LIB}em)
|
||||
prop C
|
||||
end
|
|
@ -1,59 +0,0 @@
|
|||
/* Error codes. They are negative since a few system calls, such as READ, can
|
||||
* either return a positive number indicating success, or an error code.
|
||||
*/
|
||||
|
||||
#define NERROR 34
|
||||
#define OK 0
|
||||
#define ERROR -1
|
||||
#define EPERM -1
|
||||
#define ENOENT -2
|
||||
#define ESRCH -3
|
||||
#define EINTR -4
|
||||
#define EIO -5
|
||||
#define ENXIO -6
|
||||
#define E2BIG -7
|
||||
#define ENOEXEC -8
|
||||
#define EBADF -9
|
||||
#define ECHILD -10
|
||||
#define EAGAIN -11
|
||||
#define ENOMEM -12
|
||||
#define EACCES -13
|
||||
#define EFAULT -14
|
||||
#define ENOTBLK -15
|
||||
#define EBUSY -16
|
||||
#define EEXIST -17
|
||||
#define EXDEV -18
|
||||
#define ENODEV -19
|
||||
#define ENOTDIR -20
|
||||
#define EISDIR -21
|
||||
#define EINVAL -22
|
||||
#define ENFILE -23
|
||||
#define EMFILE -24
|
||||
#define ENOTTY -25
|
||||
#define ETXTBSY -26
|
||||
#define EFBIG -27
|
||||
#define ENOSPC -28
|
||||
#define ESPIPE -29
|
||||
#define EROFS -30
|
||||
#define EMLINK -31
|
||||
#define EPIPE -32
|
||||
#define EDOM -33
|
||||
#define ERANGE -34
|
||||
|
||||
#define E_LOCKED -101
|
||||
#define E_BAD_CALL -102
|
||||
#define E_LONG_STRING -103
|
||||
#define EOF -104 /* End Of File - used by drivers */
|
||||
|
||||
/* The following error codes are generated by the kernel itself. */
|
||||
#define E_BAD_DEST -1 /* destination address illegal */
|
||||
#define E_BAD_SRC -2 /* source address illegal */
|
||||
#define E_TRY_AGAIN -3 /* can't send-- tables full */
|
||||
#define E_OVERRUN -4 /* interrupt for task that is not waiting */
|
||||
#define E_BAD_BUF -5 /* message buf outside caller's addr space */
|
||||
#define E_TASK -6 /* can't send to task */
|
||||
#define E_NO_MESSAGE -7 /* RECEIVE failed: no message present */
|
||||
#define E_NO_PERM -8 /* ordinary users can't send to tasks */
|
||||
#define E_BAD_FCN -9 /* only valid fcns are SEND, RECEIVE, BOTH */
|
||||
#define E_BAD_ADDR -10 /* bad address given to utility routine */
|
||||
#define E_BAD_PROC -11 /* bad proc number given to utility */
|
|
@ -1,59 +0,0 @@
|
|||
/* Error codes. They are negative since a few system calls, such as READ, can
|
||||
* either return a positive number indicating success, or an error code.
|
||||
*/
|
||||
|
||||
#define NERROR 34
|
||||
#define OK 0
|
||||
#define ERROR -1
|
||||
#define EPERM -1
|
||||
#define ENOENT -2
|
||||
#define ESRCH -3
|
||||
#define EINTR -4
|
||||
#define EIO -5
|
||||
#define ENXIO -6
|
||||
#define E2BIG -7
|
||||
#define ENOEXEC -8
|
||||
#define EBADF -9
|
||||
#define ECHILD -10
|
||||
#define EAGAIN -11
|
||||
#define ENOMEM -12
|
||||
#define EACCES -13
|
||||
#define EFAULT -14
|
||||
#define ENOTBLK -15
|
||||
#define EBUSY -16
|
||||
#define EEXIST -17
|
||||
#define EXDEV -18
|
||||
#define ENODEV -19
|
||||
#define ENOTDIR -20
|
||||
#define EISDIR -21
|
||||
#define EINVAL -22
|
||||
#define ENFILE -23
|
||||
#define EMFILE -24
|
||||
#define ENOTTY -25
|
||||
#define ETXTBSY -26
|
||||
#define EFBIG -27
|
||||
#define ENOSPC -28
|
||||
#define ESPIPE -29
|
||||
#define EROFS -30
|
||||
#define EMLINK -31
|
||||
#define EPIPE -32
|
||||
#define EDOM -33
|
||||
#define ERANGE -34
|
||||
|
||||
#define E_LOCKED -101
|
||||
#define E_BAD_CALL -102
|
||||
#define E_LONG_STRING -103
|
||||
#define EOF -104 /* End Of File - used by drivers */
|
||||
|
||||
/* The following error codes are generated by the kernel itself. */
|
||||
#define E_BAD_DEST -1 /* destination address illegal */
|
||||
#define E_BAD_SRC -2 /* source address illegal */
|
||||
#define E_TRY_AGAIN -3 /* can't send-- tables full */
|
||||
#define E_OVERRUN -4 /* interrupt for task that is not waiting */
|
||||
#define E_BAD_BUF -5 /* message buf outside caller's addr space */
|
||||
#define E_TASK -6 /* can't send to task */
|
||||
#define E_NO_MESSAGE -7 /* RECEIVE failed: no message present */
|
||||
#define E_NO_PERM -8 /* ordinary users can't send to tasks */
|
||||
#define E_BAD_FCN -9 /* only valid fcns are SEND, RECEIVE, BOTH */
|
||||
#define E_BAD_ADDR -10 /* bad address given to utility routine */
|
||||
#define E_BAD_PROC -11 /* bad proc number given to utility */
|
|
@ -1,26 +0,0 @@
|
|||
struct stat {
|
||||
short int st_dev;
|
||||
unsigned short st_ino;
|
||||
unsigned short st_mode;
|
||||
short int st_nlink;
|
||||
short int st_uid;
|
||||
short int st_gid;
|
||||
short int st_rdev;
|
||||
long st_size;
|
||||
long st_atime;
|
||||
long st_mtime;
|
||||
long st_ctime;
|
||||
};
|
||||
|
||||
/* Some common definitions. */
|
||||
#define S_IFMT 0170000 /* type of file */
|
||||
#define S_IFDIR 0040000 /* directory */
|
||||
#define S_IFCHR 0020000 /* character special */
|
||||
#define S_IFBLK 0060000 /* block special */
|
||||
#define S_IFREG 0100000 /* regular */
|
||||
#define S_ISUID 04000 /* set user id on execution */
|
||||
#define S_ISGID 02000 /* set group id on execution */
|
||||
#define S_ISVTX 01000 /* save swapped text even after use */
|
||||
#define S_IREAD 00400 /* read permission, owner */
|
||||
#define S_IWRITE 00200 /* write permission, owner */
|
||||
#define S_IEXEC 00100 /* execute/search permission, owner */
|
|
@ -1,17 +0,0 @@
|
|||
/* The <dir.h> header gives the layout of a directory. */
|
||||
|
||||
#ifndef _DIR_H
|
||||
#define _DIR_H
|
||||
|
||||
#define DIRBLKSIZ 512 /* size of directory block */
|
||||
|
||||
#ifndef DIRSIZ
|
||||
#define DIRSIZ 14
|
||||
#endif
|
||||
|
||||
struct direct {
|
||||
ino_t d_ino;
|
||||
char d_name[DIRSIZ];
|
||||
};
|
||||
|
||||
#endif /* _DIR_H */
|
|
@ -1,58 +0,0 @@
|
|||
#define NCALLS 70 /* number of system calls allowed */
|
||||
|
||||
#define EXIT 1
|
||||
#define FORK 2
|
||||
#define READ 3
|
||||
#define WRITE 4
|
||||
#define OPEN 5
|
||||
#define CLOSE 6
|
||||
#define WAIT 7
|
||||
#define CREAT 8
|
||||
#define LINK 9
|
||||
#define UNLINK 10
|
||||
#define CHDIR 12
|
||||
#define TIME 13
|
||||
#define MKNOD 14
|
||||
#define CHMOD 15
|
||||
#define CHOWN 16
|
||||
#define BRK 17
|
||||
#define STAT 18
|
||||
#define LSEEK 19
|
||||
#define GETPID 20
|
||||
#define MOUNT 21
|
||||
#define UMOUNT 22
|
||||
#define SETUID 23
|
||||
#define GETUID 24
|
||||
#define STIME 25
|
||||
#define PTRACE 26
|
||||
#define ALARM 27
|
||||
#define FSTAT 28
|
||||
#define PAUSE 29
|
||||
#define UTIME 30
|
||||
#define ACCESS 33
|
||||
#define SYNC 36
|
||||
#define KILL 37
|
||||
#define RENAME 38
|
||||
#define MKDIR 39
|
||||
#define RMDIR 40
|
||||
#define DUP 41
|
||||
#define PIPE 42
|
||||
#define TIMES 43
|
||||
#define SETGID 46
|
||||
#define GETGID 47
|
||||
#define SIGNAL 48
|
||||
#define IOCTL 54
|
||||
#define FCNTL 55
|
||||
#define EXEC 59
|
||||
#define UMASK 60
|
||||
#define CHROOT 61
|
||||
|
||||
/* The following are not system calls, but are processed like them. */
|
||||
#define KSIG 64 /* kernel detected a signal */
|
||||
#define UNPAUSE 65 /* to MM or FS: check for EINTR */
|
||||
#define BRK2 66 /* to MM: used to say how big FS & INIT are */
|
||||
#define REVIVE 67 /* to FS: revive a sleeping process */
|
||||
#define TASK_REPLY 68 /* to FS: reply code from tty task */
|
||||
|
||||
/* The following IS a system call for amoeba transactions */
|
||||
#define AM_SYSCALL 69
|
|
@ -1,166 +0,0 @@
|
|||
/* System calls. */
|
||||
#define SEND 1 /* function code for sending messages */
|
||||
#define RECEIVE 2 /* function code for receiving messages */
|
||||
#define BOTH 3 /* function code for SEND + RECEIVE */
|
||||
#define ANY (NR_PROCS+100) /* receive(ANY, buf) accepts from any source */
|
||||
|
||||
/* Task numbers, function codes and reply codes. */
|
||||
|
||||
#define TTY -NR_TASKS /* terminal I/O class */
|
||||
# define TTY_READ 3 /* fcn code for reading from tty */
|
||||
# define TTY_WRITE 4 /* fcn code for writing to tty */
|
||||
# define TTY_IOCTL 5 /* fcn code for ioctl */
|
||||
# define TTY_SETPGRP 6 /* fcn code for setpgrp */
|
||||
# define TTY_OPEN 7 /* fcn code for opening tty */
|
||||
# define TTY_CLOSE 8 /* fcn code for closing tty */
|
||||
# define SUSPEND -998 /* used in interrupts when tty has no data */
|
||||
|
||||
#ifdef AM_KERNEL
|
||||
#define AMOEBA
|
||||
#endif
|
||||
|
||||
#ifdef AMOEBA
|
||||
|
||||
/* There are AM_NTASK copies of the amoeba kernel task.
|
||||
* If you change AM_NTASKS be sure to adjust kernel/table.c and fs/table.c
|
||||
*/
|
||||
#define AM_NTASKS 4 /* number of kernel tasks of this class */
|
||||
|
||||
#define AMINT_CLASS (TTY+1) /* Amoeba event handler */
|
||||
#define AMOEBA_CLASS (AMINT_CLASS+AM_NTASKS) /* transaction handlers */
|
||||
# define ETHER_ARRIV 1 /* fcn code for packet arrival */
|
||||
# define AM_TRANS 2 /* amoeba transaction */
|
||||
# define AM_GETREQ 3 /* amoeba getrequest */
|
||||
# define AM_PUTREP 4 /* amoeba putrep */
|
||||
# define AM_REVIVE 6 /* used by kernel task to revive luser task */
|
||||
# define AM_TIMEOUT 8 /* used to talk to clock task */
|
||||
# define AM_PUTSIG 9 /* when the luser hits the DEL ! */
|
||||
# define AM_TASK_DIED 10 /* sent if task died during a transaction */
|
||||
|
||||
#else /* if AMOEBA not defined */
|
||||
|
||||
#define AMOEBA_CLASS TTY
|
||||
|
||||
#endif /* AMOEBA */
|
||||
|
||||
/*
|
||||
* New class definitions should go here and should be defined relative
|
||||
* to AMOEBA_CLASS (ie. as AMOEBA_CLASS+n, for the nth task added).
|
||||
*/
|
||||
|
||||
#define IDLE (AMOEBA_CLASS+1) /* task to run when there's nothing to run */
|
||||
|
||||
#define PRINTER -7 /* printer I/O class */
|
||||
/* The printer uses the same commands as TTY. */
|
||||
|
||||
#define WINCHESTER -6 /* winchester (hard) disk class */
|
||||
#define FLOPPY -5 /* floppy disk class */
|
||||
# define DISK_READ 3 /* fcn code to DISK (must equal TTY_READ) */
|
||||
# define DISK_WRITE 4 /* fcn code to DISK (must equal TTY_WRITE) */
|
||||
# define DISK_IOCTL 5 /* fcn code for setting up RAM disk */
|
||||
# define SCATTERED_IO 6 /* fcn code for multiple reads/writes */
|
||||
# define OPTIONAL_IO 16 /* modifier to DISK_* codes within vector */
|
||||
|
||||
#define MEM -4 /* /dev/ram, /dev/(k)mem and /dev/null class */
|
||||
# define RAM_DEV 0 /* minor device for /dev/ram */
|
||||
# define MEM_DEV 1 /* minor device for /dev/mem */
|
||||
# define KMEM_DEV 2 /* minor device for /dev/kmem */
|
||||
# define NULL_DEV 3 /* minor device for /dev/null */
|
||||
#if (CHIP == INTEL)
|
||||
# define PORT_DEV 4 /* minor device for /dev/port */
|
||||
#endif
|
||||
|
||||
#define CLOCK -3 /* clock class */
|
||||
# define SET_ALARM 1 /* fcn code to CLOCK, set up alarm */
|
||||
# define GET_TIME 3 /* fcn code to CLOCK, get real time */
|
||||
# define SET_TIME 4 /* fcn code to CLOCK, set real time */
|
||||
# define REAL_TIME 1 /* reply from CLOCK: here is real time */
|
||||
|
||||
#define SYSTASK -2 /* internal functions */
|
||||
# define SYS_XIT 1 /* fcn code for sys_xit(parent, proc) */
|
||||
# define SYS_GETSP 2 /* fcn code for sys_sp(proc, &new_sp) */
|
||||
# define SYS_SIG 3 /* fcn code for sys_sig(proc, sig) */
|
||||
# define SYS_FORK 4 /* fcn code for sys_fork(parent, child) */
|
||||
# define SYS_NEWMAP 5 /* fcn code for sys_newmap(procno, map_ptr) */
|
||||
# define SYS_COPY 6 /* fcn code for sys_copy(ptr) */
|
||||
# define SYS_EXEC 7 /* fcn code for sys_exec(procno, new_sp) */
|
||||
# define SYS_TIMES 8 /* fcn code for sys_times(procno, bufptr) */
|
||||
# define SYS_ABORT 9 /* fcn code for sys_abort() */
|
||||
# define SYS_FRESH 10 /* fcn code for sys_fresh() (Atari only) */
|
||||
# define SYS_KILL 11 /* fcn code for sys_kill(proc, sig) */
|
||||
# define SYS_GBOOT 12 /* fcn code for sys_gboot(procno, bootptr) */
|
||||
# define SYS_UMAP 13 /* fcn code for sys_umap(procno, etc) */
|
||||
# define SYS_MEM 14 /* fcn code for sys_mem() */
|
||||
# define SYS_TRACE 15 /* fcn code for sys_trace(req,pid,addr,data) */
|
||||
|
||||
#define HARDWARE -1 /* used as source on interrupt generated msgs*/
|
||||
|
||||
/* Names of message fields for messages to CLOCK task. */
|
||||
#define DELTA_TICKS m6_l1 /* alarm interval in clock ticks */
|
||||
#define FUNC_TO_CALL m6_f1 /* pointer to function to call */
|
||||
#define NEW_TIME m6_l1 /* value to set clock to (SET_TIME) */
|
||||
#define CLOCK_PROC_NR m6_i1 /* which proc (or task) wants the alarm? */
|
||||
#define SECONDS_LEFT m6_l1 /* how many seconds were remaining */
|
||||
|
||||
/* Names of message fields used for messages to block and character tasks. */
|
||||
#define DEVICE m2_i1 /* major-minor device */
|
||||
#define PROC_NR m2_i2 /* which (proc) wants I/O? */
|
||||
#define COUNT m2_i3 /* how many bytes to transfer */
|
||||
#define POSITION m2_l1 /* file offset */
|
||||
#define ADDRESS m2_p1 /* core buffer address */
|
||||
|
||||
/* Names of message fields for messages to TTY task. */
|
||||
#define TTY_LINE m2_i1 /* message parameter: terminal line */
|
||||
#define TTY_REQUEST m2_i3 /* message parameter: ioctl request code */
|
||||
#define TTY_SPEK m2_l1 /* message parameter: ioctl speed, erasing */
|
||||
#define TTY_FLAGS m2_l2 /* message parameter: ioctl tty mode */
|
||||
#define TTY_PGRP m2_i3 /* message parameter: process group */
|
||||
|
||||
/* Names of messages fields used in reply messages from tasks. */
|
||||
#define REP_PROC_NR m2_i1 /* # of proc on whose behalf I/O was done */
|
||||
#define REP_STATUS m2_i2 /* bytes transferred or error number */
|
||||
|
||||
/* Names of fields for copy message to SYSTASK. */
|
||||
#define SRC_SPACE m5_c1 /* T or D space (stack is also D) */
|
||||
#define SRC_PROC_NR m5_i1 /* process to copy from */
|
||||
#define SRC_BUFFER m5_l1 /* virtual address where data come from */
|
||||
#define DST_SPACE m5_c2 /* T or D space (stack is also D) */
|
||||
#define DST_PROC_NR m5_i2 /* process to copy to */
|
||||
#define DST_BUFFER m5_l2 /* virtual address where data go to */
|
||||
#define COPY_BYTES m5_l3 /* number of bytes to copy */
|
||||
|
||||
/* Field names for accounting, SYSTASK and miscellaneous. */
|
||||
#define USER_TIME m4_l1 /* user time consumed by process */
|
||||
#define SYSTEM_TIME m4_l2 /* system time consumed by process */
|
||||
#define CHILD_UTIME m4_l3 /* user time consumed by process' children */
|
||||
#define CHILD_STIME m4_l4 /* sys time consumed by process' children */
|
||||
|
||||
#define PROC1 m1_i1 /* indicates a process */
|
||||
#define PROC2 m1_i2 /* indicates a process */
|
||||
#define PID m1_i3 /* process id passed from MM to kernel */
|
||||
#define STACK_PTR m1_p1 /* used for stack ptr in sys_exec, sys_getsp */
|
||||
#define PR m6_i1 /* process number for sys_sig */
|
||||
#define SIGNUM m6_i2 /* signal number for sys_sig */
|
||||
#define FUNC m6_f1 /* function pointer for sys_sig */
|
||||
#define MEM_PTR m1_p1 /* tells where memory map is for sys_newmap */
|
||||
#define CANCEL 0 /* general request to force a task to cancel */
|
||||
#define SIG_MAP m1_i2 /* used by kernel for passing signal bit map */
|
||||
|
||||
#ifdef AMOEBA
|
||||
|
||||
/* Names of message fields for amoeba tasks */
|
||||
#define AM_OP m2_i1 /* one of the above operators */
|
||||
#define AM_PROC_NR m2_i2 /* process # of proc doing operation */
|
||||
#define AM_COUNT m2_i3 /* size of buffer for operation */
|
||||
#define AM_ADDRESS m2_p1 /* address of buffer for operation */
|
||||
|
||||
/* For communication between MM and AMOEBA_CLASS kernel tasks */
|
||||
#define AM_STATUS m2_i3 /* same use as REP_STATUS but for amoeba */
|
||||
#define AM_FREE_IT m2_l1 /* 1=not a getreq, 0=is a getreq */
|
||||
|
||||
/* Special for passing a physical address from the ethernet driver */
|
||||
#define AM_PADDR m2_l1 /* to the transaction layer */
|
||||
|
||||
#endif /* AMOEBA */
|
||||
|
||||
#define HARD_INT 2 /* fcn code for all hardware interrupts */
|
|
@ -1,88 +0,0 @@
|
|||
/* Copyright (C) 1990 by Prentice-Hall, Inc. Permission is hereby granted
|
||||
* to redistribute the binary and source programs of this system for
|
||||
* educational or research purposes. For other use, written permission from
|
||||
* Prentice-Hall is required.
|
||||
*/
|
||||
|
||||
#define EXTERN extern /* used in *.h files */
|
||||
#define PRIVATE static /* PRIVATE x limits the scope of x */
|
||||
#define PUBLIC /* PUBLIC is the opposite of PRIVATE */
|
||||
#define FORWARD static /* some compilers require this to be 'static'*/
|
||||
|
||||
#define TRUE 1 /* used for turning integers into Booleans */
|
||||
#define FALSE 0 /* used for turning integers into Booleans */
|
||||
|
||||
#define HZ 60 /* clock freq (software settable on IBM-PC) */
|
||||
#define BLOCK_SIZE 1024 /* # bytes in a disk block */
|
||||
#define SUPER_USER (uid_t) 0 /* uid_t of superuser */
|
||||
|
||||
#define MAJOR 8 /* major device = (dev>>MAJOR) & 0377 */
|
||||
#define MINOR 0 /* minor device = (dev>>MINOR) & 0377 */
|
||||
|
||||
#ifdef AM_KERNEL
|
||||
#define NR_TASKS 14 /* must be 5 more than without amoeba */
|
||||
#else
|
||||
#define NR_TASKS 9 /* number of tasks in the transfer vector */
|
||||
#endif
|
||||
|
||||
#define NR_PROCS 32 /* number of slots in proc table */
|
||||
#define NR_SEGS 3 /* # segments per process */
|
||||
#define T 0 /* proc[i].mem_map[T] is for text */
|
||||
#define D 1 /* proc[i].mem_map[D] is for data */
|
||||
#define S 2 /* proc[i].mem_map[S] is for stack */
|
||||
|
||||
#define MAX_P_LONG 2147483647 /* maximum positive long, i.e. 2**31 - 1 */
|
||||
|
||||
/* Memory is allocated in clicks. */
|
||||
#if (CHIP == INTEL) || (CHIP == M68000)
|
||||
#define CLICK_SIZE 256 /* unit in which memory is allocated */
|
||||
#define CLICK_SHIFT 8 /* log2 of CLICK_SIZE */
|
||||
#endif
|
||||
|
||||
#define click_to_round_k(n) \
|
||||
((unsigned) ((((unsigned long) (n) << CLICK_SHIFT) + 512) / 1024))
|
||||
#if CLICK_SIZE < 1024
|
||||
#define k_to_click(n) ((n) * (1024 / CLICK_SIZE))
|
||||
#else
|
||||
#define k_to_click(n) ((n) / (CLICK_SIZE / 1024))
|
||||
#endif
|
||||
|
||||
/* Process numbers of some important processes */
|
||||
#define MM_PROC_NR 0 /* process number of memory manager */
|
||||
#define FS_PROC_NR 1 /* process number of file system */
|
||||
#define INIT_PROC_NR 2 /* init -- the process that goes multiuser */
|
||||
#define LOW_USER 2 /* first user not part of operating system */
|
||||
|
||||
/* Miscellaneous */
|
||||
#define BYTE 0377 /* mask for 8 bits */
|
||||
#define TO_USER 0 /* flag telling to copy from fs to user */
|
||||
#define FROM_USER 1 /* flag telling to copy from user to fs */
|
||||
#define READING 0 /* copy data to user */
|
||||
#define WRITING 1 /* copy data from user */
|
||||
|
||||
#if (MACHINE != ATARI)
|
||||
#define ABS -999 /* this process means absolute memory */
|
||||
#endif
|
||||
|
||||
#define WORD_SIZE 2 /* number of bytes per word */
|
||||
|
||||
#define NIL_PTR (char *) 0 /* generally useful expression */
|
||||
|
||||
#define NO_NUM 0x8000 /* used as numerical argument to panic() */
|
||||
#define SIG_PUSH_BYTES (4*sizeof(int)) /* how many bytes pushed by signal */
|
||||
|
||||
/* Flag bits for i_mode in the inode. */
|
||||
#define I_TYPE 0170000 /* this field gives inode type */
|
||||
#define I_REGULAR 0100000 /* regular file, not dir or special */
|
||||
#define I_BLOCK_SPECIAL 0060000 /* block special file */
|
||||
#define I_DIRECTORY 0040000 /* file is a directory */
|
||||
#define I_CHAR_SPECIAL 0020000 /* character special file */
|
||||
#define I_NAMED_PIPE 0010000 /* named pipe (FIFO) */
|
||||
#define I_SET_UID_BIT 0004000 /* set effective uid_t on exec */
|
||||
#define I_SET_GID_BIT 0002000 /* set effective gid_t on exec */
|
||||
#define ALL_MODES 0006777 /* all bits for user, group and others */
|
||||
#define RWX_MODES 0000777 /* mode bits for RWX only */
|
||||
#define R_BIT 0000004 /* Rwx protection bit */
|
||||
#define W_BIT 0000002 /* rWx protection bit */
|
||||
#define X_BIT 0000001 /* rwX protection bit */
|
||||
#define I_NOT_ALLOC 0000000 /* this inode is free */
|
|
@ -1,59 +0,0 @@
|
|||
/* Error codes. They are negative since a few system calls, such as READ, can
|
||||
* either return a positive number indicating success, or an error code.
|
||||
*/
|
||||
|
||||
#define NERROR 34
|
||||
#define OK 0
|
||||
#define ERROR -1
|
||||
#define EPERM -1
|
||||
#define ENOENT -2
|
||||
#define ESRCH -3
|
||||
#define EINTR -4
|
||||
#define EIO -5
|
||||
#define ENXIO -6
|
||||
#define E2BIG -7
|
||||
#define ENOEXEC -8
|
||||
#define EBADF -9
|
||||
#define ECHILD -10
|
||||
#define EAGAIN -11
|
||||
#define ENOMEM -12
|
||||
#define EACCES -13
|
||||
#define EFAULT -14
|
||||
#define ENOTBLK -15
|
||||
#define EBUSY -16
|
||||
#define EEXIST -17
|
||||
#define EXDEV -18
|
||||
#define ENODEV -19
|
||||
#define ENOTDIR -20
|
||||
#define EISDIR -21
|
||||
#define EINVAL -22
|
||||
#define ENFILE -23
|
||||
#define EMFILE -24
|
||||
#define ENOTTY -25
|
||||
#define ETXTBSY -26
|
||||
#define EFBIG -27
|
||||
#define ENOSPC -28
|
||||
#define ESPIPE -29
|
||||
#define EROFS -30
|
||||
#define EMLINK -31
|
||||
#define EPIPE -32
|
||||
#define EDOM -33
|
||||
#define ERANGE -34
|
||||
|
||||
#define E_LOCKED -101
|
||||
#define E_BAD_CALL -102
|
||||
#define E_LONG_STRING -103
|
||||
#define EOF -104 /* End Of File - used by drivers */
|
||||
|
||||
/* The following error codes are generated by the kernel itself. */
|
||||
#define E_BAD_DEST -1 /* destination address illegal */
|
||||
#define E_BAD_SRC -2 /* source address illegal */
|
||||
#define E_TRY_AGAIN -3 /* can't send-- tables full */
|
||||
#define E_OVERRUN -4 /* interrupt for task that is not waiting */
|
||||
#define E_BAD_BUF -5 /* message buf outside caller's addr space */
|
||||
#define E_TASK -6 /* can't send to task */
|
||||
#define E_NO_MESSAGE -7 /* RECEIVE failed: no message present */
|
||||
#define E_NO_PERM -8 /* ordinary users can't send to tasks */
|
||||
#define E_BAD_FCN -9 /* only valid fcns are SEND, RECEIVE, BOTH */
|
||||
#define E_BAD_ADDR -10 /* bad address given to utility routine */
|
||||
#define E_BAD_PROC -11 /* bad proc number given to utility */
|
|
@ -1,26 +0,0 @@
|
|||
struct stat {
|
||||
short int st_dev;
|
||||
unsigned short st_ino;
|
||||
unsigned short st_mode;
|
||||
short int st_nlink;
|
||||
short int st_uid;
|
||||
short int st_gid;
|
||||
short int st_rdev;
|
||||
long st_size;
|
||||
long st_atime;
|
||||
long st_mtime;
|
||||
long st_ctime;
|
||||
};
|
||||
|
||||
/* Some common definitions. */
|
||||
#define S_IFMT 0170000 /* type of file */
|
||||
#define S_IFDIR 0040000 /* directory */
|
||||
#define S_IFCHR 0020000 /* character special */
|
||||
#define S_IFBLK 0060000 /* block special */
|
||||
#define S_IFREG 0100000 /* regular */
|
||||
#define S_ISUID 04000 /* set user id on execution */
|
||||
#define S_ISGID 02000 /* set group id on execution */
|
||||
#define S_ISVTX 01000 /* save swapped text even after use */
|
||||
#define S_IREAD 00400 /* read permission, owner */
|
||||
#define S_IWRITE 00200 /* write permission, owner */
|
||||
#define S_IEXEC 00100 /* execute/search permission, owner */
|
|
@ -1,134 +0,0 @@
|
|||
#ifndef _TYPE_H
|
||||
#define _TYPE_H
|
||||
/* Macros */
|
||||
#define MAX(a,b) ((a) > (b) ? (a) : (b))
|
||||
#define MIN(a,b) ((a) < (b) ? (a) : (b))
|
||||
|
||||
/* Type definitions */
|
||||
typedef unsigned short unshort; /* must be 16-bit unsigned */
|
||||
typedef unshort block_nr; /* block number */
|
||||
typedef unshort zone_nr; /* zone number */
|
||||
|
||||
#define MAX_BLOCK_NR ((block_nr) 0177777) /* largest block number */
|
||||
#define HIGHEST_ZONE ((zone_nr) 0177777) /* largest zone number */
|
||||
#define MAX_INODE_NR ((ino_t 0177777) /* largest inode number */
|
||||
#define MAX_FILE_POS 017777777777L /* largest legal file offset */
|
||||
|
||||
#define NO_BLOCK ((block_nr) 0) /* absence of a block number */
|
||||
#define NO_ENTRY ((ino_t) 0) /* absence of a dir entry */
|
||||
#define NO_ZONE ((zone_nr) 0) /* absence of a zone number */
|
||||
#define NO_DEV ((dev_t) ~0) /* absence of a device numb */
|
||||
|
||||
typedef unshort bit_nr; /* if ino_t & zone_nr both unshort,
|
||||
then also unshort, else long */
|
||||
typedef long zone_type; /* zone size */
|
||||
|
||||
#if (CHIP == INTEL)
|
||||
typedef unsigned vir_bytes; /* virtual addresses and lengths in bytes */
|
||||
#endif
|
||||
|
||||
#if (CHIP == M68000)
|
||||
typedef long vir_bytes; /* virtual addresses and lengths in bytes */
|
||||
#endif
|
||||
|
||||
typedef unsigned vir_clicks; /* virtual addresses and lengths in clicks */
|
||||
typedef long phys_bytes; /* physical addresses and lengths in bytes */
|
||||
typedef unsigned phys_clicks; /* physical addresses and lengths in clicks */
|
||||
typedef int signed_clicks; /* same length as phys_clicks, but signed */
|
||||
|
||||
/* Types relating to messages. */
|
||||
#define M1 1
|
||||
#define M3 3
|
||||
#define M4 4
|
||||
#define M3_STRING 14
|
||||
|
||||
typedef struct {int m1i1, m1i2, m1i3; char *m1p1, *m1p2, *m1p3;} mess_1;
|
||||
typedef struct {int m2i1, m2i2, m2i3; long m2l1, m2l2; char *m2p1;} mess_2;
|
||||
typedef struct {int m3i1, m3i2; char *m3p1; char m3ca1[M3_STRING];} mess_3;
|
||||
typedef struct {long m4l1, m4l2, m4l3, m4l4;} mess_4;
|
||||
typedef struct {char m5c1, m5c2; int m5i1, m5i2; long m5l1, m5l2, m5l3;} mess_5;
|
||||
#if _ANSI
|
||||
typedef struct {int m6i1, m6i2, m6i3; long m6l1; void (*m6f1)(int);} mess_6;
|
||||
#else
|
||||
typedef struct {int m6i1, m6i2, m6i3; long m6l1; void (*m6f1)();} mess_6;
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
int m_source; /* who sent the message */
|
||||
int m_type; /* what kind of message is it */
|
||||
union {
|
||||
mess_1 m_m1;
|
||||
mess_2 m_m2;
|
||||
mess_3 m_m3;
|
||||
mess_4 m_m4;
|
||||
mess_5 m_m5;
|
||||
mess_6 m_m6;
|
||||
} m_u;
|
||||
} message;
|
||||
|
||||
#define MESS_SIZE (sizeof(message))
|
||||
#define NIL_MESS (message *) 0
|
||||
|
||||
/* The following defines provide names for useful members. */
|
||||
#define m1_i1 m_u.m_m1.m1i1
|
||||
#define m1_i2 m_u.m_m1.m1i2
|
||||
#define m1_i3 m_u.m_m1.m1i3
|
||||
#define m1_p1 m_u.m_m1.m1p1
|
||||
#define m1_p2 m_u.m_m1.m1p2
|
||||
#define m1_p3 m_u.m_m1.m1p3
|
||||
|
||||
#define m2_i1 m_u.m_m2.m2i1
|
||||
#define m2_i2 m_u.m_m2.m2i2
|
||||
#define m2_i3 m_u.m_m2.m2i3
|
||||
#define m2_l1 m_u.m_m2.m2l1
|
||||
#define m2_l2 m_u.m_m2.m2l2
|
||||
#define m2_p1 m_u.m_m2.m2p1
|
||||
|
||||
#define m3_i1 m_u.m_m3.m3i1
|
||||
#define m3_i2 m_u.m_m3.m3i2
|
||||
#define m3_p1 m_u.m_m3.m3p1
|
||||
#define m3_ca1 m_u.m_m3.m3ca1
|
||||
|
||||
|
||||
#define m4_l1 m_u.m_m4.m4l1
|
||||
#define m4_l2 m_u.m_m4.m4l2
|
||||
#define m4_l3 m_u.m_m4.m4l3
|
||||
#define m4_l4 m_u.m_m4.m4l4
|
||||
|
||||
#define m5_c1 m_u.m_m5.m5c1
|
||||
#define m5_c2 m_u.m_m5.m5c2
|
||||
#define m5_i1 m_u.m_m5.m5i1
|
||||
#define m5_i2 m_u.m_m5.m5i2
|
||||
#define m5_l1 m_u.m_m5.m5l1
|
||||
#define m5_l2 m_u.m_m5.m5l2
|
||||
#define m5_l3 m_u.m_m5.m5l3
|
||||
|
||||
#define m6_i1 m_u.m_m6.m6i1
|
||||
#define m6_i2 m_u.m_m6.m6i2
|
||||
#define m6_i3 m_u.m_m6.m6i3
|
||||
#define m6_l1 m_u.m_m6.m6l1
|
||||
#define m6_f1 m_u.m_m6.m6f1
|
||||
|
||||
struct mem_map {
|
||||
vir_clicks mem_vir; /* virtual address */
|
||||
phys_clicks mem_phys; /* physical address */
|
||||
vir_clicks mem_len; /* length */
|
||||
};
|
||||
|
||||
struct copy_info { /* used by sys_copy(src, dst, bytes) */
|
||||
int cp_src_proc;
|
||||
int cp_src_space;
|
||||
vir_bytes cp_src_vir;
|
||||
int cp_dst_proc;
|
||||
int cp_dst_space;
|
||||
vir_bytes cp_dst_vir;
|
||||
vir_bytes cp_bytes;
|
||||
};
|
||||
|
||||
struct iorequest_s {
|
||||
long io_position; /* position in device file (really off_t) */
|
||||
char *io_buf; /* buffer in user space */
|
||||
unsigned short io_nbytes; /* size of request */
|
||||
unsigned short io_request; /* read, write (optionally) */
|
||||
};
|
||||
#endif /* _TYPE_H */
|
|
@ -1,74 +0,0 @@
|
|||
# $Revision$
|
||||
var w=4
|
||||
var p=4
|
||||
var s=2
|
||||
var l=4
|
||||
var f=4
|
||||
var d=8
|
||||
var NAME=vax4
|
||||
var M=vax4
|
||||
var LIB=lib/{M}/tail_
|
||||
var RT=lib/{M}/head_
|
||||
var CPP_F=-Dunix -Dvax
|
||||
var CC_ALIGN=-Vw4.1
|
||||
# 413 align is the default, rom in text
|
||||
var ALIGN=-a0:4 -a1:4 -a2:0x400 -a3:4
|
||||
var C_LIB={EM}/{LIB}cc.1s {EM}/{LIB}cc.2g
|
||||
var OLD_C_LIB={C_LIB}
|
||||
name be
|
||||
from .m.g
|
||||
to .s
|
||||
program {EM}/lib/{M}/cg
|
||||
args <
|
||||
stdout
|
||||
need .e
|
||||
end
|
||||
name asopt
|
||||
from .s
|
||||
to .so
|
||||
program {EM}/lib/{M}/top
|
||||
args
|
||||
optimizer
|
||||
stdin
|
||||
stdout
|
||||
end
|
||||
name as
|
||||
from .s.so
|
||||
to .o
|
||||
program {EM}/lib/{M}/as
|
||||
args - -o > <
|
||||
prep cond
|
||||
end
|
||||
name led
|
||||
from .o.a
|
||||
to .out
|
||||
program {EM}/lib/em_led
|
||||
mapflag -l* LNAME={EM}/{LIB}*
|
||||
mapflag -N ALIGN=-a0:4 -a1:4 -a2:4 -a3:4
|
||||
mapflag -r ALIGN=-a0:4 -a1:0x400 -a2:4 -a3:4
|
||||
mapflag -ansi C_LIB={EM}/{LIB}ac
|
||||
args {ALIGN} (.e:{HEAD}= {EM}/{RT}em) \
|
||||
({RTS}:.ocm.b={EM}/{RT}cc) \
|
||||
({RTS}{ANSI?}:.c={EM}/{RT}cc) \
|
||||
({RTS}{ANSI?}:.cansi={EM}/{RT}ac) \
|
||||
({RTS}:.mod={EM}/{RT}m2) \
|
||||
({RTS}:.p.8={EM}/{RT}pc) \
|
||||
-o > < \
|
||||
(.8:{TAIL}={EM}/{LIB}a68s) \
|
||||
(.p.8:{TAIL}={EM}/{LIB}pc) \
|
||||
(.b:{TAIL}={EM}/{LIB}bc) \
|
||||
(.ocm:{TAIL}={EM}/{LIB}ocm) \
|
||||
(.mod:{TAIL}={EM}/{LIB}m2) \
|
||||
(.ocm.b:{TAIL}={OLD_C_LIB}) \
|
||||
(.c:{TAIL}={C_LIB}) \
|
||||
(.e:{TAIL}={EM}/{LIB}em {EM}/{LIB}mon {EM}/lib/{M}/end_em)
|
||||
linker
|
||||
end
|
||||
name cv
|
||||
from .out
|
||||
to .cv
|
||||
program {EM}/lib/{M}/cv
|
||||
mapflag -n CV_ARG=-n
|
||||
args {CV_ARG?} < >
|
||||
outfile a.out
|
||||
end
|
104
lib/vax4/sedf
104
lib/vax4/sedf
|
@ -1,104 +0,0 @@
|
|||
# $Header$
|
||||
/movab/ {
|
||||
s/movab 1(\(.*\)),\1$/incl \1/
|
||||
s/movab -1(\(.*\)),\1$/decl \1/
|
||||
s/movab \([0-9]*\)(\(.*\)),\2$/addl2 $\1,\2/
|
||||
s/movab -\([0-9]*\)(\(.*\)),\2$/subl2 $\1,\2/
|
||||
s/movab 0(\(.*\)) \[\(.*\)\],\1$/addl2 \2,\1/
|
||||
s/movab 0(\(.*\)) \[\(.*\)\],\2$/addl2 \1,\2/
|
||||
}
|
||||
/$0/ {
|
||||
s/movz[bw]\([wl]\) $0,/clr\1 /
|
||||
s/mov\([bwl]\) $0,/clr\1 /
|
||||
s/cvt[bw]\([wl]\) $0,/clr\1 /
|
||||
}
|
||||
/add/ {
|
||||
s/\(add[fdlw]\)3 \(.*\),\(.*\),\3$/\12 \2,\3/
|
||||
s/\(add[fdlw]\)3 \(.*\),\(.*\),\2$/\12 \3,\2/
|
||||
s/add\([wl]\)2 \$-\([0-9]*\),/sub\12 $\2,/
|
||||
s/add\([wl]\)3 \$-\([0-9]*\),/sub\13 $\2,/
|
||||
s/add\([wl]\)3 \(.*\),\$-\([0-9]*\),/sub\13 $\3,\2,/
|
||||
}
|
||||
/mul/ {
|
||||
s/\(mul[fdlw]\)3 \(.*\),\(.*\),\3$/\12 \2,\3/
|
||||
s/\(mul[fdlw]\)3 \(.*\),\(.*\),\2$/\12 \3,\2/
|
||||
}
|
||||
/sub/ {
|
||||
s/\(sub[fdlw]\)3 \(.*\),\(.*\),\3$/\12 \2,\3/
|
||||
s/sub\([wl]\)2 \$-\([0-9]*\),/add\12 $\2,/
|
||||
s/sub\([wl]\)3 \$-\([0-9]*\),/add\13 $\2,/
|
||||
}
|
||||
/div/s/\(div[fdlw]\)3 \(.*\),\(.*\),\3$/\12 \2,\3/
|
||||
/bi/s/\(bi[cs][lw]\)3 \(.*\),\(.*\),\3$/\12 \2,\3/
|
||||
/bis/s/\(bis[lw]\)3 \(.*\),\(.*\),\2$/\12 \3,\2/
|
||||
/xor/ {
|
||||
s/\(xor[lw]\)3 \(.*\),\(.*\),\3$/\12 \2,\3/
|
||||
s/\(xor[lw]\)3 \(.*\),\(.*\),\2$/\12 \3,\2/
|
||||
}
|
||||
/$1/ {
|
||||
s/add\([wl]\)2 \$1,/inc\1 /
|
||||
s/sub\([wl]\)2 \$1,/dec\1 /
|
||||
}
|
||||
/$-1/ {
|
||||
s/add\([wl]\)2 \$-1,/dec\1 /
|
||||
s/sub\([wl]\)2 \$-1,/inc\1 /
|
||||
}
|
||||
/cmp[bwl].*$0/ {
|
||||
N
|
||||
s/cmp\([bwl]\) \(.*\),$0$/tst\1 \2/
|
||||
s/cmp\([bwl]\) $0,\(.*\)\njneq/tst\1 \2\
|
||||
jneq/
|
||||
s/cmp\([bwl]\) $0,\(.*\)\njeql/tst\1 \2\
|
||||
jeql/
|
||||
s/cmp\([bwl]\) $0,\(.*\)\njgtr/tst\1 \2\
|
||||
jlss/
|
||||
s/cmp\([bwl]\) $0,\(.*\)\njlss/tst\1 \2\
|
||||
jgtr/
|
||||
s/cmp\([bwl]\) $0,\(.*\)\njgeq/tst\1 \2\
|
||||
jleq/
|
||||
s/cmp\([bwl]\) $0,\(.*\)\njleq/tst\1 \2\
|
||||
jgeq/
|
||||
P
|
||||
D
|
||||
}
|
||||
/(sp)+/ {
|
||||
N
|
||||
s/movl (sp)+,\(.*\)\npushl \1$/movl (sp),\1/
|
||||
s/tst[wl] (sp)+\nmovl fp,sp$/movl fp,sp/
|
||||
s/tst\([wl]\) (sp)+\nmov\1 \(.*\),-(sp)/mov\1 \2,(sp)/
|
||||
s/tst\([wl]\) (sp)+\nclr\1 -(sp)/clr\1 (sp)/
|
||||
s/tst\([wl]\) (sp)+\nmovzb\1 \(.*\),-(sp)/movzb\1 \2,(sp)/
|
||||
s/tst\([wl]\) (sp)+\ncvtb\1 \(.*\),-(sp)/cvtb\1 \2,(sp)/
|
||||
s/tst\([wl]\) (sp)+\ntst\1 \(.*\)$/mov\1 \2,(sp)+/
|
||||
s/tstl (sp)+\npushl \(.*\)$/movl \1,(sp)/
|
||||
s/tstl (sp)+\npusha\([bwlq]\) \(.*\)$/mova\1 \2,(sp)/
|
||||
P
|
||||
D
|
||||
}
|
||||
/^addl2 .*,sp/ {
|
||||
N
|
||||
s/addl2 .*,sp\nmovl fp,sp$/movl fp,sp/
|
||||
s/^addl2 $6,sp\nmovw \(.*\),-(sp)/tstl (sp)+\
|
||||
movw \1,(sp)/
|
||||
s/^addl2 $6,sp\nclrw -(sp)/tstl (sp)+\
|
||||
clrw (sp)/
|
||||
s/^addl2 $8,sp\nmovq \(.*\),-(sp)/movq \1,(sp)/
|
||||
P
|
||||
D
|
||||
}
|
||||
/clrw -(sp)/ {
|
||||
N
|
||||
s/clrw -(sp)\nmovw \($[0-9]*\),-(sp)/pushl \1/
|
||||
s/clrw -(sp)\nmnegw $\([0-9]*\),-(sp)/movzwl $-\1,-(sp)/
|
||||
s/clrw -(sp)\nmovw \(.*\),-(sp)/movzwl \1,-(sp)/
|
||||
s/clrw -(sp)\ncvtbw \(\$[0-9]*\),-(sp)/pushl \1/
|
||||
s/clrw -(sp)\ncvtbw \(\$.*\),-(sp)/movzwl \1,-(sp)/
|
||||
P
|
||||
D
|
||||
}
|
||||
/mov/ {
|
||||
N
|
||||
s/mov\([wl]\) \(.*\),\(.*\)\ntst\1 \3$/mov\1 \2,\3/
|
||||
P
|
||||
D
|
||||
}
|
|
@ -1,67 +0,0 @@
|
|||
# $Header$
|
||||
EMHOME = ../../..
|
||||
h = $(EMHOME)/h
|
||||
LIBOBJ = $(EMHOME)/modules/lib/libobject.a
|
||||
CDIR = $(EMHOME)/mach/proto/as
|
||||
CPP = $(EMHOME)/lib/cpp
|
||||
DEF =
|
||||
|
||||
FFLAG =
|
||||
INCL = -I. -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O $(INCL)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG)
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = comm3.o comm4.o comm5.o \
|
||||
comm6.o comm7.o comm8.o
|
||||
MACH = mach0.c mach1.c mach2.c mach3.c mach4.c mach5.c
|
||||
COMM = $(CDIR)/comm0.h $(CDIR)/comm1.h $(CDIR)/comm2.y $(CSRC)
|
||||
|
||||
all: as
|
||||
|
||||
install:all
|
||||
../../install as
|
||||
|
||||
cmp:
|
||||
-../../compare as
|
||||
|
||||
clean:
|
||||
rm -f *.o as as.[cy] y.tab.h
|
||||
|
||||
pr: $(MACH)
|
||||
@pr -n $(MACH)
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
as: $(COBJ) as.o
|
||||
$(CC) $(LDFLAGS) $(COBJ) as.o $(LIBOBJ) -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
-@if test -f Expect ; then cat Expect ; else echo "expect 1 shift/reduce conflict"; fi
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
lint $(INCL) $(CSRC) as.c
|
||||
|
||||
y.tab.h: as.c
|
||||
$(COBJ): y.tab.h
|
||||
$(COBJ) as.y: $(CDIR)/comm0.h mach0.c
|
||||
$(COBJ) as.y: $(CDIR)/comm1.h mach1.c
|
||||
as.y: mach2.c
|
||||
comm3.o: mach3.c
|
||||
as.y: mach4.c
|
||||
comm8.o: mach5.c
|
||||
comm3.o: $(CDIR)/comm3.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm3.c
|
||||
comm4.o: $(CDIR)/comm4.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm4.c
|
||||
comm5.o: $(CDIR)/comm5.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm5.c
|
||||
comm6.o: $(CDIR)/comm6.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm6.c
|
||||
comm7.o: $(CDIR)/comm7.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm7.c
|
||||
comm8.o: $(CDIR)/comm8.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm8.c
|
|
@ -1,184 +0,0 @@
|
|||
# $Header$
|
||||
|
||||
EMHOME=../../..
|
||||
PREFLAGS=-I$(EMHOME)/h -I. -I$(EMHOME)/mach -I$(EMHOME)/modules/h -DNDEBUG
|
||||
PFLAGS=
|
||||
CFLAGS=$(PREFLAGS) $(PFLAGS) -O
|
||||
LDFLAGS=$(PFLAGS)
|
||||
LINTOPTS=-hbxac
|
||||
LIBS=$(EMHOME)/lib/em_data.a $(EMHOME)/modules/lib/libflt.a
|
||||
CDIR=$(EMHOME)/mach/proto/cg
|
||||
CFILES=$(CDIR)/codegen.c $(CDIR)/compute.c $(CDIR)/equiv.c $(CDIR)/fillem.c \
|
||||
$(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/main.c $(CDIR)/move.c \
|
||||
$(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c $(CDIR)/salloc.c \
|
||||
$(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
|
||||
OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o main.o\
|
||||
move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
|
||||
|
||||
all: tables.c
|
||||
make "EMHOME="$(EMHOME) cg
|
||||
|
||||
cg: tables.o $(OFILES)
|
||||
$(CC) $(LDFLAGS) $(OFILES) tables.o $(LIBS) -o cg
|
||||
|
||||
tables.o: tables.c
|
||||
$(CC) -c $(PREFLAGS) -I$(CDIR) tables.c
|
||||
|
||||
codegen.o: $(CDIR)/codegen.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/codegen.c
|
||||
compute.o: $(CDIR)/compute.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/compute.c
|
||||
equiv.o: $(CDIR)/equiv.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/equiv.c
|
||||
fillem.o: $(CDIR)/fillem.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/fillem.c
|
||||
gencode.o: $(CDIR)/gencode.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/gencode.c
|
||||
glosym.o: $(CDIR)/glosym.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/glosym.c
|
||||
main.o: $(CDIR)/main.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/main.c
|
||||
move.o: $(CDIR)/move.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/move.c
|
||||
nextem.o: $(CDIR)/nextem.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/nextem.c
|
||||
reg.o: $(CDIR)/reg.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/reg.c
|
||||
regvar.o: $(CDIR)/regvar.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/regvar.c
|
||||
salloc.o: $(CDIR)/salloc.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/salloc.c
|
||||
state.o: $(CDIR)/state.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/state.c
|
||||
subr.o: $(CDIR)/subr.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/subr.c
|
||||
var.o: $(CDIR)/var.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/var.c
|
||||
|
||||
install: all
|
||||
../../install cg
|
||||
|
||||
cmp: all
|
||||
-../../compare cg
|
||||
|
||||
distr: tables.c
|
||||
rm -f tables1.[ch]
|
||||
cp tables.c tables1.c
|
||||
cp tables.h tables1.h
|
||||
chmod -w tables1.[ch]
|
||||
|
||||
|
||||
tables.c: table
|
||||
-mv tables.h tables.h.save
|
||||
$(EMHOME)/lib/cpp -P table | $(EMHOME)/lib/cgg > debug.out
|
||||
-if cmp -s tables.h.save tables.h; then mv tables.h.save tables.h; else exit 0; fi
|
||||
-if cmp -s /dev/null tables.h; then mv tables.h.save tables.h; else exit 0; fi
|
||||
|
||||
lint: $(CFILES)
|
||||
lint $(LINTOPTS) $(PREFLAGS) $(CFILES)
|
||||
clean:
|
||||
rm -f *.o tables.c tables.h debug.out cg tables.h.save
|
||||
|
||||
codegen.o: $(CDIR)/assert.h
|
||||
codegen.o: $(CDIR)/data.h
|
||||
codegen.o: $(CDIR)/equiv.h
|
||||
codegen.o: $(CDIR)/extern.h
|
||||
codegen.o: $(CDIR)/param.h
|
||||
codegen.o: $(CDIR)/result.h
|
||||
codegen.o: $(CDIR)/state.h
|
||||
codegen.o: tables.h
|
||||
codegen.o: $(CDIR)/types.h
|
||||
compute.o: $(CDIR)/assert.h
|
||||
compute.o: $(CDIR)/data.h
|
||||
compute.o: $(CDIR)/extern.h
|
||||
compute.o: $(CDIR)/glosym.h
|
||||
compute.o: $(CDIR)/param.h
|
||||
compute.o: $(CDIR)/result.h
|
||||
compute.o: tables.h
|
||||
compute.o: $(CDIR)/types.h
|
||||
equiv.o: $(CDIR)/assert.h
|
||||
equiv.o: $(CDIR)/data.h
|
||||
equiv.o: $(CDIR)/equiv.h
|
||||
equiv.o: $(CDIR)/extern.h
|
||||
equiv.o: $(CDIR)/param.h
|
||||
equiv.o: $(CDIR)/result.h
|
||||
equiv.o: tables.h
|
||||
equiv.o: $(CDIR)/types.h
|
||||
fillem.o: $(CDIR)/assert.h
|
||||
fillem.o: $(CDIR)/data.h
|
||||
fillem.o: $(CDIR)/extern.h
|
||||
fillem.o: mach.c
|
||||
fillem.o: mach.h
|
||||
fillem.o: $(CDIR)/param.h
|
||||
fillem.o: $(CDIR)/regvar.h
|
||||
fillem.o: $(CDIR)/result.h
|
||||
fillem.o: tables.h
|
||||
fillem.o: $(CDIR)/types.h
|
||||
gencode.o: $(CDIR)/assert.h
|
||||
gencode.o: $(CDIR)/data.h
|
||||
gencode.o: $(CDIR)/extern.h
|
||||
gencode.o: $(CDIR)/param.h
|
||||
gencode.o: $(CDIR)/result.h
|
||||
gencode.o: tables.h
|
||||
gencode.o: $(CDIR)/types.h
|
||||
glosym.o: $(CDIR)/glosym.h
|
||||
glosym.o: $(CDIR)/param.h
|
||||
glosym.o: tables.h
|
||||
glosym.o: $(CDIR)/types.h
|
||||
main.o: $(CDIR)/param.h
|
||||
move.o: $(CDIR)/assert.h
|
||||
move.o: $(CDIR)/data.h
|
||||
move.o: $(CDIR)/extern.h
|
||||
move.o: $(CDIR)/param.h
|
||||
move.o: $(CDIR)/result.h
|
||||
move.o: tables.h
|
||||
move.o: $(CDIR)/types.h
|
||||
nextem.o: $(CDIR)/assert.h
|
||||
nextem.o: $(CDIR)/data.h
|
||||
nextem.o: $(CDIR)/extern.h
|
||||
nextem.o: $(CDIR)/param.h
|
||||
nextem.o: $(CDIR)/result.h
|
||||
nextem.o: tables.h
|
||||
nextem.o: $(CDIR)/types.h
|
||||
reg.o: $(CDIR)/assert.h
|
||||
reg.o: $(CDIR)/data.h
|
||||
reg.o: $(CDIR)/extern.h
|
||||
reg.o: $(CDIR)/param.h
|
||||
reg.o: $(CDIR)/result.h
|
||||
reg.o: tables.h
|
||||
reg.o: $(CDIR)/types.h
|
||||
regvar.o: $(CDIR)/assert.h
|
||||
regvar.o: $(CDIR)/data.h
|
||||
regvar.o: $(CDIR)/extern.h
|
||||
regvar.o: $(CDIR)/param.h
|
||||
regvar.o: $(CDIR)/regvar.h
|
||||
regvar.o: $(CDIR)/result.h
|
||||
regvar.o: tables.h
|
||||
regvar.o: $(CDIR)/types.h
|
||||
salloc.o: $(CDIR)/assert.h
|
||||
salloc.o: $(CDIR)/data.h
|
||||
salloc.o: $(CDIR)/extern.h
|
||||
salloc.o: $(CDIR)/param.h
|
||||
salloc.o: $(CDIR)/result.h
|
||||
salloc.o: tables.h
|
||||
salloc.o: $(CDIR)/types.h
|
||||
state.o: $(CDIR)/assert.h
|
||||
state.o: $(CDIR)/data.h
|
||||
state.o: $(CDIR)/extern.h
|
||||
state.o: $(CDIR)/param.h
|
||||
state.o: $(CDIR)/result.h
|
||||
state.o: $(CDIR)/state.h
|
||||
state.o: tables.h
|
||||
state.o: $(CDIR)/types.h
|
||||
subr.o: $(CDIR)/assert.h
|
||||
subr.o: $(CDIR)/data.h
|
||||
subr.o: $(CDIR)/extern.h
|
||||
subr.o: $(CDIR)/param.h
|
||||
subr.o: $(CDIR)/result.h
|
||||
subr.o: tables.h
|
||||
subr.o: $(CDIR)/types.h
|
||||
var.o: $(CDIR)/data.h
|
||||
var.o: $(CDIR)/param.h
|
||||
var.o: $(CDIR)/result.h
|
||||
var.o: tables.h
|
||||
var.o: $(CDIR)/types.h
|
|
@ -1,20 +0,0 @@
|
|||
EMHOME=../../..
|
||||
CFLAGS=-O -I$(EMHOME)/h
|
||||
|
||||
dl: dl.o
|
||||
$(CC) -o dl dl.o $(EMHOME)/modules/lib/libobject.a
|
||||
|
||||
install: dl
|
||||
../../install dl
|
||||
|
||||
cmp: dl
|
||||
-../../compare dl
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@pr `pwd`/dl.c
|
||||
|
||||
clean:
|
||||
-rm -f *.o *.old dl
|
|
@ -1,21 +0,0 @@
|
|||
all:
|
||||
|
||||
install:
|
||||
../../install head_em.s head_em
|
||||
../../install libem_s.a tail_em
|
||||
../../install end.s end_em
|
||||
|
||||
cmp:
|
||||
-../../compare head_em.s head_em
|
||||
-../../compare libem_s.a tail_em
|
||||
-../../compare end.s end_em
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@pr `pwd`/head_em.s
|
||||
@arch pv libem_s.a | pr -h `pwd`/libem_s.a
|
||||
@pr `pwd`/end.s
|
||||
|
||||
clean:
|
|
@ -1,17 +0,0 @@
|
|||
.define endtext, enddata, endbss, end
|
||||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
.sect .text
|
||||
|
||||
.sect .text
|
||||
endtext:
|
||||
.align 2
|
||||
.sect .data
|
||||
.align 2
|
||||
enddata:
|
||||
.sect .bss
|
||||
.align 2
|
||||
endbss:
|
||||
end:
|
|
@ -1,233 +0,0 @@
|
|||
.define WRCH, RDCH, Earray, Erange, Eset
|
||||
.define Eiovfl, Eidivz, Eiund, Econv
|
||||
.define Estack, Eheap, Eillins, Eoddz
|
||||
.define Ecase , Ebadmon, OSBYTE, MON
|
||||
.define Ebadlin, Ebadgto, BASE, NBYTES
|
||||
.define hol0, IGNMASK, ADDR, PROGNAME
|
||||
.define LB, LBl, SP, HP, ERRPROC, UNSIGN
|
||||
.define Ytmp, EXG, ARTH, RETURN, SIGN
|
||||
.define RETSIZE, TRAPVAL, STACK, BRANCH
|
||||
.define start, Push, Pop, STACKTh, STACKTl
|
||||
.define F_DUM
|
||||
.sect .zero
|
||||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
.sect .text
|
||||
|
||||
! DEFINITIONS
|
||||
|
||||
! The next three definitions are special for the
|
||||
! BBC microcomputer
|
||||
|
||||
WRCH = 0x0FFEE ! This subroutine writes the character in
|
||||
! register A to the screen
|
||||
RDCH = 0x0FFE0 ! This subroutine returns a character in
|
||||
! register A from the current input stream
|
||||
OSBYTE = 0x0FFF4 ! This subroutine performs miscelaneous
|
||||
! operating system calls
|
||||
|
||||
F_DUM = 0 ! Dummy floating point constant
|
||||
|
||||
! Here are the error numbers
|
||||
|
||||
Earray = 0
|
||||
Erange = 1
|
||||
Eset = 2
|
||||
Eiovfl = 3
|
||||
Eidivz = 6
|
||||
Eiund = 8
|
||||
Econv = 10
|
||||
Estack = 16
|
||||
Eheap = 17
|
||||
Eillins = 18
|
||||
Eoddz = 19
|
||||
Ecase = 20
|
||||
Ebadmon = 25
|
||||
Ebadlin = 26
|
||||
Ebadgto = 27
|
||||
MON = 0x78D0
|
||||
|
||||
BASE = 240 ! This is the offset from the localbase
|
||||
! for the second localbase
|
||||
|
||||
STACKTh = 0x78 ! This is the top of the stack
|
||||
STACKTl = 0x0D0
|
||||
|
||||
! Some zeropage declarations
|
||||
|
||||
.sect .zero
|
||||
|
||||
RES: .space 76 ! special for the operating system
|
||||
|
||||
hol0: .space 16 ! the hol0 block
|
||||
|
||||
IGNMASK: .space 2 ! can hold the ingnore mask
|
||||
|
||||
ADDR: .space 4 ! used for indirect addressing
|
||||
|
||||
LB: .space 2 ! the localbase
|
||||
|
||||
LBl: .space 2 ! the second localbase (localbase-BASE)
|
||||
|
||||
SP: .space 3 ! the stackpointer (real_stack)
|
||||
|
||||
HP: .space 2 ! the heap pointer
|
||||
|
||||
BRANCH: .space 2 ! used for branch instructions
|
||||
|
||||
ERRPROC: .space 2 ! can hold the address of the error handler
|
||||
|
||||
Ytmp: .space 1 ! used for intermediate storage in Y
|
||||
|
||||
EXG: .space 2 ! used by the exchange subroutine Exg
|
||||
|
||||
ARTH: .space 16 ! used for arithmetic
|
||||
|
||||
NBYTES: .space 2 ! containes the number of bytes for a block move
|
||||
|
||||
|
||||
RETURN: .space 4 ! the return area
|
||||
|
||||
RETSIZE: .space 1 ! the size of the object returned
|
||||
|
||||
SIGN: .space 1 ! the sign of the calculation
|
||||
|
||||
UNSIGN : .space 1 ! is it signed or unsigned arithmetic
|
||||
|
||||
TRAPVAL: .space 1 ! intermediate storage of the error number
|
||||
|
||||
STACK: .space 1 ! contains the hardware stackpointer on
|
||||
! entering _m_a_i_n for a neat return
|
||||
|
||||
RESERVED: .space 112 ! used by the operating system
|
||||
|
||||
.sect .text
|
||||
.base 0x0E02 ! where to start in the BBC micro
|
||||
! GENERAL PURPOSE ROUTINES
|
||||
|
||||
start:
|
||||
tsx
|
||||
stx STACK ! save stackpointer for exit and error
|
||||
|
||||
! The following three operating system calls are only
|
||||
! for the BBC microcomputer
|
||||
|
||||
lda #2
|
||||
ldx #0
|
||||
ldy #0
|
||||
jsr OSBYTE ! return control to the keyboard
|
||||
lda #15
|
||||
ldx #0
|
||||
ldy #0
|
||||
jsr OSBYTE ! clear all internal buffers
|
||||
lda #3
|
||||
ldx #5
|
||||
ldy #0
|
||||
jsr OSBYTE ! output to screen and RS423
|
||||
|
||||
lda #STACKTl
|
||||
sta LB ! set localbase (lowbyte)
|
||||
sta SP+2
|
||||
lda #0
|
||||
sta SP ! set stackpointer (lowbyte)
|
||||
sta ERRPROC ! set start address for error handler (lowbyte)
|
||||
sta ERRPROC+1 ! set start address for error handler (highbyte)
|
||||
sta hol0 ! set the line number (lowbyte)
|
||||
sta hol0+1 ! set the line number (highbyte)
|
||||
lda #STACKTh
|
||||
sta SP+1 ! set the stacpointer (highbyte)
|
||||
sta LB+1 ! set the localbase (highbyte)
|
||||
lda #[endbss].l
|
||||
sta HP ! set the heap pointer (lowbyte)
|
||||
lda #[endbss].h
|
||||
sta HP+1 ! set the heap pointer (highbyte)
|
||||
lda #[PROGNAME].l
|
||||
sta hol0+4 ! set fake programname pointer (lowbyte)
|
||||
lda #[PROGNAME].h
|
||||
sta hol0+5 ! set fake programname pointer (highbyte)
|
||||
lda #[beginbss].l
|
||||
sta ADDR ! start address of bss block (lowbyte)
|
||||
lda #[beginbss].h
|
||||
sta ADDR+1 ! start address of bss block (highbyte)
|
||||
ldy #0
|
||||
lda #0
|
||||
4: ldx #[endbss].h ! clear bss block
|
||||
cpx ADDR+1
|
||||
bcc 1f ! end of bss block reached
|
||||
bne 2f
|
||||
ldx #[endbss].l
|
||||
cpx ADDR
|
||||
bcc 1f ! end of bss block reached
|
||||
2: sta (ADDR),y
|
||||
inc ADDR
|
||||
bne 3f
|
||||
inc ADDR+1
|
||||
3: jmp 4b
|
||||
1: lda #0
|
||||
tax
|
||||
jsr Push ! push fake envelope pointer
|
||||
lda #[PROGNAME].h
|
||||
ldx #[PROGNAME].l
|
||||
jsr Push ! push argv[0]
|
||||
lda #0
|
||||
ldx #1
|
||||
jsr Push ! push argc
|
||||
jsr __m_a_i_n ! start the real program
|
||||
|
||||
lda #0x0FF
|
||||
jsr WRCH ! send end of program to R423
|
||||
lda #3
|
||||
ldx #0
|
||||
jsr OSBYTE ! send output to screen only
|
||||
lda #2
|
||||
ldx #1
|
||||
jsr OSBYTE ! input only from R423
|
||||
rts
|
||||
|
||||
|
||||
! The subroutine Push pushes the registerpair AX onto the stack.
|
||||
|
||||
Push:
|
||||
sty Ytmp ! save Y
|
||||
ldy SP+2
|
||||
bne 1f ! lowbyte of stackpointer <> 0
|
||||
dec SP+1 ! decrement highbyte of stackpointer
|
||||
1: dey
|
||||
dey ! decrement lowbyte of stackpointer
|
||||
sty SP+2 ! save lowbyte of stackpointer
|
||||
pha ! save A
|
||||
txa
|
||||
sta (SP),y ! push X onto the stack
|
||||
iny
|
||||
pla ! get A
|
||||
sta (SP),y ! push A onto the stack
|
||||
ldy Ytmp ! restore Y
|
||||
rts
|
||||
|
||||
|
||||
! The subroutine Pop pops the registerpair AX from the stack.
|
||||
|
||||
Pop:
|
||||
sty Ytmp ! save Y
|
||||
ldy SP+2
|
||||
lda (SP),y ! pop X from the stack
|
||||
tax
|
||||
iny
|
||||
lda (SP),y ! pop A from the stack
|
||||
iny
|
||||
bne 1f ! lowbyte of stackpointer <> 0
|
||||
inc SP+1 ! increment highbyte of stackpointer
|
||||
1: sty SP+2 ! store lowbyte of stackpointer
|
||||
pha ! save A
|
||||
pla ! get A
|
||||
ldy Ytmp ! restore Y
|
||||
rts
|
||||
|
||||
|
||||
.sect .data
|
||||
PROGNAME: ! for initialising the programname pointer
|
||||
.asciz "program"
|
||||
.sect .bss
|
||||
beginbss:
|
|
@ -1,40 +0,0 @@
|
|||
.define Mon
|
||||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
.sect .text
|
||||
|
||||
! This subroutine performs some monitor calls.
|
||||
! The exit call just resets the hardware_stackpointer so
|
||||
! this routine will return to the operating system.
|
||||
! The close call just returns a zero.
|
||||
! The ioctl call just pops its arguments and returns a zero.
|
||||
! The write routine is a real one.
|
||||
|
||||
|
||||
Mon:
|
||||
cpx #1
|
||||
bne 1f ! exit
|
||||
ldx STACK ! load stackpointer
|
||||
dex
|
||||
dex ! adjust stackpointer
|
||||
txs ! set stackpointer
|
||||
rts
|
||||
1: cpx #4
|
||||
bne 1f
|
||||
jmp Mwrite
|
||||
1: cpx #6 ! facked
|
||||
bne 1f ! close
|
||||
lda #0
|
||||
tax ! return zero
|
||||
rts
|
||||
1: cpx #54
|
||||
jsr Pop ! pop first argument (fildes)
|
||||
jsr Pop ! pop second argument (request)
|
||||
jsr Pop ! pop third argument (argp)
|
||||
lda #0
|
||||
tax ! return zero
|
||||
rts
|
||||
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
.define Mprint
|
||||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
.sect .text
|
||||
|
||||
! This subroutine prints a zero terminated ascii string.
|
||||
! The registerpair AX contains the start of the string.
|
||||
! The subroutine WRCH is a special routine on the BBC microcomputer
|
||||
! which prints the character in A to the screen.
|
||||
! The subroutine WRCH is a special one provided by the BBC
|
||||
! microcomputer.
|
||||
|
||||
|
||||
Mprint:
|
||||
stx ADDR ! start address of string (lowbyte)
|
||||
sta ADDR+1 ! start address of string (highbyte)
|
||||
ldy #0
|
||||
1: lda (ADDR),y ! get ascii character
|
||||
beq 2f
|
||||
jsr WRCH ! put it on the screen
|
||||
iny
|
||||
bne 1b
|
||||
2: rts
|
||||
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
.define Printhex
|
||||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
.sect .text
|
||||
|
||||
! This subroutine print the contents of register A to the screen
|
||||
! in hexadecimal form.
|
||||
! The subroutine WRCH is a special one provided by the BBC
|
||||
! microcomputer.
|
||||
|
||||
|
||||
Printhex:
|
||||
pha ! save A
|
||||
lsr a
|
||||
lsr a
|
||||
lsr a
|
||||
lsr a ! get four high bits
|
||||
jsr 1f
|
||||
pla ! restore A
|
||||
and #0x0F ! get four low bits
|
||||
jsr 1f
|
||||
rts
|
||||
1: sed ! print in hex
|
||||
clc
|
||||
adc #0x90
|
||||
adc #0x40
|
||||
cld
|
||||
jmp WRCH
|
||||
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
.define Printstack
|
||||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
.sect .text
|
||||
|
||||
! This a special subroutine which prints some things to the
|
||||
! monitorscreen for debugging.
|
||||
|
||||
|
||||
Printstack:
|
||||
ldy #0
|
||||
2: lda (hol0+4),y
|
||||
beq 1f
|
||||
jsr WRCH ! print filename
|
||||
iny
|
||||
jmp 2b
|
||||
1: lda #32
|
||||
jsr WRCH ! print a space
|
||||
lda hol0+1
|
||||
jsr Printhex ! print line number (highbyte)
|
||||
lda hol0
|
||||
jsr Printhex ! print line number (lowbyte)
|
||||
lda #32
|
||||
jsr WRCH ! print a space
|
||||
lda SP+1
|
||||
jsr Printhex ! print stackpointer (highbyte)
|
||||
lda SP+2
|
||||
jsr Printhex ! print stackpointer (lowbyte)
|
||||
lda #32
|
||||
jsr WRCH ! print a space
|
||||
lda LB+1
|
||||
jsr Printhex ! print real localbase (highbyte)
|
||||
lda LB
|
||||
jsr Printhex ! print real localbase (lowbyte)
|
||||
lda #32
|
||||
jsr WRCH ! print a space
|
||||
lda LBl+1
|
||||
jsr Printhex ! print second lowerbase (highbyte)
|
||||
lda LBl
|
||||
jsr Printhex ! print second lowerbase (lowbyte)
|
||||
lda #10
|
||||
jsr WRCH ! print a newline
|
||||
lda #13
|
||||
jsr WRCH ! print a carriagereturn
|
||||
rts
|
||||
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
.define Mread
|
||||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
.sect .text
|
||||
|
||||
! This subroutine reads characters from the standard input.
|
||||
! It ignores the filedes.
|
||||
! It reads atmost 255 characters. So the runtime system must
|
||||
! provide a way of dealing with this.
|
||||
! The subroutine RDCH is a special one provided by the BBC
|
||||
! microcomputer.
|
||||
|
||||
|
||||
Mread:
|
||||
jsr Pop ! ignore filedescriptor
|
||||
jsr Pop ! bufptr
|
||||
stx ADDR ! address of character buffer (lowbyte)
|
||||
sta ADDR+1 ! address of character buffer (highbyte)
|
||||
jsr Pop ! number of characters
|
||||
ldy #0 ! <= 255
|
||||
inx
|
||||
1: jsr RDCH ! read a character from the current inputstream
|
||||
bcs 8f
|
||||
sta (ADDR),y
|
||||
iny
|
||||
dex
|
||||
bne 1b
|
||||
8: tya
|
||||
tax
|
||||
lda #0
|
||||
jsr Push ! number of characters red.
|
||||
tax ! report a succesfull read.
|
||||
rts
|
||||
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
.define Mwrite
|
||||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
.sect .text
|
||||
|
||||
! This subroutine performs the monitor call write.
|
||||
! Writing is always done to standardoutput.
|
||||
! A zero is returned on exit.
|
||||
! The subroutine WRCH is a special routine of the BBC
|
||||
! microcomputer.
|
||||
|
||||
|
||||
Mwrite:
|
||||
jsr Pop ! get fildes
|
||||
jsr Pop ! get address of characterbuffer
|
||||
stx ADDR ! bufferaddress (lowbyte)
|
||||
sta ADDR+1 ! bufferaddress (highbyte)
|
||||
jsr Pop ! number of characters to be writen.
|
||||
ldy #0
|
||||
1: lda (ADDR),y
|
||||
cmp #10
|
||||
bne 2f
|
||||
pha
|
||||
lda #13
|
||||
jsr WRCH
|
||||
pla
|
||||
2: jsr WRCH
|
||||
iny
|
||||
dex
|
||||
bne 1b
|
||||
tya
|
||||
tax
|
||||
lda #0
|
||||
jsr Push
|
||||
tax
|
||||
rts
|
||||
|
|
@ -1,67 +0,0 @@
|
|||
# $Header$
|
||||
EMHOME = ../../..
|
||||
h = $(EMHOME)/h
|
||||
LIBOBJ = $(EMHOME)/modules/lib/libobject.a
|
||||
CDIR = $(EMHOME)/mach/proto/as
|
||||
CPP = $(EMHOME)/lib/cpp
|
||||
DEF =
|
||||
|
||||
FFLAG =
|
||||
INCL = -I. -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O $(INCL)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG)
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = comm3.o comm4.o comm5.o \
|
||||
comm6.o comm7.o comm8.o
|
||||
MACH = mach0.c mach1.c mach2.c mach3.c mach4.c mach5.c
|
||||
COMM = $(CDIR)/comm0.h $(CDIR)/comm1.h $(CDIR)/comm2.y $(CSRC)
|
||||
|
||||
all: as
|
||||
|
||||
install:all
|
||||
../../install as
|
||||
|
||||
cmp:
|
||||
-../../compare as
|
||||
|
||||
clean:
|
||||
rm -f *.o as as.[cy] y.tab.h
|
||||
|
||||
pr: $(MACH)
|
||||
@pr -n $(MACH)
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
as: $(COBJ) as.o
|
||||
$(CC) $(LDFLAGS) $(COBJ) as.o $(LIBOBJ) -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
-@if test -f Expect ; then cat Expect ; else echo "expect 1 shift/reduce conflict"; fi
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
lint $(INCL) $(CSRC) as.c
|
||||
|
||||
y.tab.h: as.c
|
||||
$(COBJ): y.tab.h
|
||||
$(COBJ) as.y: $(CDIR)/comm0.h mach0.c
|
||||
$(COBJ) as.y: $(CDIR)/comm1.h mach1.c
|
||||
as.y: mach2.c
|
||||
comm3.o: mach3.c
|
||||
as.y: mach4.c
|
||||
comm8.o: mach5.c
|
||||
comm3.o: $(CDIR)/comm3.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm3.c
|
||||
comm4.o: $(CDIR)/comm4.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm4.c
|
||||
comm5.o: $(CDIR)/comm5.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm5.c
|
||||
comm6.o: $(CDIR)/comm6.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm6.c
|
||||
comm7.o: $(CDIR)/comm7.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm7.c
|
||||
comm8.o: $(CDIR)/comm8.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm8.c
|
|
@ -1,67 +0,0 @@
|
|||
# $Header$
|
||||
EMHOME = ../../..
|
||||
h = $(EMHOME)/h
|
||||
LIBOBJ = $(EMHOME)/modules/lib/libobject.a
|
||||
CDIR = $(EMHOME)/mach/proto/as
|
||||
CPP = $(EMHOME)/lib/cpp
|
||||
DEF =
|
||||
|
||||
FFLAG =
|
||||
INCL = -I. -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O $(INCL)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG)
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = comm3.o comm4.o comm5.o \
|
||||
comm6.o comm7.o comm8.o
|
||||
MACH = mach0.c mach1.c mach2.c mach3.c mach4.c mach5.c
|
||||
COMM = $(CDIR)/comm0.h $(CDIR)/comm1.h $(CDIR)/comm2.y $(CSRC)
|
||||
|
||||
all: as
|
||||
|
||||
install:all
|
||||
../../install as
|
||||
|
||||
cmp:
|
||||
-../../compare as
|
||||
|
||||
clean:
|
||||
rm -f *.o as as.[cy] y.tab.h
|
||||
|
||||
pr: $(MACH)
|
||||
@pr -n $(MACH)
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
as: $(COBJ) as.o
|
||||
$(CC) $(LDFLAGS) $(COBJ) as.o $(LIBOBJ) -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
-@if test -f Expect ; then cat Expect ; else echo "expect 1 shift/reduce conflict"; fi
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
lint $(INCL) $(CSRC) as.c
|
||||
|
||||
y.tab.h: as.c
|
||||
$(COBJ): y.tab.h
|
||||
$(COBJ) as.y: $(CDIR)/comm0.h mach0.c
|
||||
$(COBJ) as.y: $(CDIR)/comm1.h mach1.c
|
||||
as.y: mach2.c
|
||||
comm3.o: mach3.c
|
||||
as.y: mach4.c
|
||||
comm8.o: mach5.c
|
||||
comm3.o: $(CDIR)/comm3.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm3.c
|
||||
comm4.o: $(CDIR)/comm4.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm4.c
|
||||
comm5.o: $(CDIR)/comm5.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm5.c
|
||||
comm6.o: $(CDIR)/comm6.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm6.c
|
||||
comm7.o: $(CDIR)/comm7.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm7.c
|
||||
comm8.o: $(CDIR)/comm8.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm8.c
|
|
@ -1,67 +0,0 @@
|
|||
# $Header$
|
||||
EMHOME = ../../..
|
||||
h = $(EMHOME)/h
|
||||
LIBOBJ = $(EMHOME)/modules/lib/libobject.a
|
||||
CDIR = $(EMHOME)/mach/proto/as
|
||||
CPP = $(EMHOME)/lib/cpp
|
||||
DEF =
|
||||
|
||||
FFLAG =
|
||||
INCL = -I. -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O $(INCL)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG)
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = comm3.o comm4.o comm5.o \
|
||||
comm6.o comm7.o comm8.o
|
||||
MACH = mach0.c mach1.c mach2.c mach3.c mach4.c mach5.c
|
||||
COMM = $(CDIR)/comm0.h $(CDIR)/comm1.h $(CDIR)/comm2.y $(CSRC)
|
||||
|
||||
all: as
|
||||
|
||||
install:all
|
||||
../../install as
|
||||
|
||||
cmp:
|
||||
-../../compare as
|
||||
|
||||
clean:
|
||||
rm -f *.o as as.[cy] y.tab.h
|
||||
|
||||
pr: $(MACH)
|
||||
@pr -n $(MACH)
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
as: $(COBJ) as.o
|
||||
$(CC) $(LDFLAGS) $(COBJ) as.o $(LIBOBJ) -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
-@if test -f Expect ; then cat Expect ; else echo "expect 1 shift/reduce conflict"; fi
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
lint $(INCL) $(CSRC) as.c
|
||||
|
||||
y.tab.h: as.c
|
||||
$(COBJ): y.tab.h
|
||||
$(COBJ) as.y: $(CDIR)/comm0.h mach0.c
|
||||
$(COBJ) as.y: $(CDIR)/comm1.h mach1.c
|
||||
as.y: mach2.c
|
||||
comm3.o: mach3.c
|
||||
as.y: mach4.c
|
||||
comm8.o: mach5.c
|
||||
comm3.o: $(CDIR)/comm3.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm3.c
|
||||
comm4.o: $(CDIR)/comm4.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm4.c
|
||||
comm5.o: $(CDIR)/comm5.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm5.c
|
||||
comm6.o: $(CDIR)/comm6.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm6.c
|
||||
comm7.o: $(CDIR)/comm7.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm7.c
|
||||
comm8.o: $(CDIR)/comm8.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm8.c
|
|
@ -1,67 +0,0 @@
|
|||
# $Header$
|
||||
EMHOME = ../../..
|
||||
h = $(EMHOME)/h
|
||||
LIBOBJ = $(EMHOME)/modules/lib/libobject.a
|
||||
CDIR = $(EMHOME)/mach/proto/as
|
||||
CPP = $(EMHOME)/lib/cpp
|
||||
DEF =
|
||||
|
||||
FFLAG =
|
||||
INCL = -I. -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O $(INCL)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG)
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = comm3.o comm4.o comm5.o \
|
||||
comm6.o comm7.o comm8.o
|
||||
MACH = mach0.c mach1.c mach2.c mach3.c mach4.c mach5.c
|
||||
COMM = $(CDIR)/comm0.h $(CDIR)/comm1.h $(CDIR)/comm2.y $(CSRC)
|
||||
|
||||
all: as
|
||||
|
||||
install:all
|
||||
../../install as
|
||||
|
||||
cmp:
|
||||
-../../compare as
|
||||
|
||||
clean:
|
||||
rm -f *.o as as.[cy] y.tab.h
|
||||
|
||||
pr: $(MACH)
|
||||
@pr -n $(MACH)
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
as: $(COBJ) as.o
|
||||
$(CC) $(LDFLAGS) $(COBJ) as.o $(LIBOBJ) -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
-@if test -f Expect ; then cat Expect ; else echo "expect 1 shift/reduce conflict"; fi
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
lint $(INCL) $(CSRC) as.c
|
||||
|
||||
y.tab.h: as.c
|
||||
$(COBJ): y.tab.h
|
||||
$(COBJ) as.y: $(CDIR)/comm0.h mach0.c
|
||||
$(COBJ) as.y: $(CDIR)/comm1.h mach1.c
|
||||
as.y: mach2.c
|
||||
comm3.o: mach3.c
|
||||
as.y: mach4.c
|
||||
comm8.o: mach5.c
|
||||
comm3.o: $(CDIR)/comm3.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm3.c
|
||||
comm4.o: $(CDIR)/comm4.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm4.c
|
||||
comm5.o: $(CDIR)/comm5.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm5.c
|
||||
comm6.o: $(CDIR)/comm6.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm6.c
|
||||
comm7.o: $(CDIR)/comm7.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm7.c
|
||||
comm8.o: $(CDIR)/comm8.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm8.c
|
|
@ -1,22 +0,0 @@
|
|||
EMHOME=../../..
|
||||
OBJLIB=$(EMHOME)/modules/lib/libobject.a
|
||||
|
||||
head: cv
|
||||
|
||||
cv: cv.c
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -I$(EMHOME)/h -o cv cv.c $(OBJLIB)
|
||||
|
||||
install: head
|
||||
../../install cv
|
||||
|
||||
cmp: head
|
||||
../../compare cv
|
||||
|
||||
clean:
|
||||
rm -f *.o
|
||||
|
||||
pr:
|
||||
@pr `pwd`/Makefile `pwd`/cv.c
|
||||
|
||||
opr:
|
||||
make pr | opr
|
|
@ -1,21 +0,0 @@
|
|||
all:
|
||||
|
||||
install:
|
||||
../../install head_em.s head_em
|
||||
../../install libem_s.a tail_em
|
||||
../../install end.s end_em
|
||||
|
||||
cmp:
|
||||
-../../compare head_em.s head_em
|
||||
-../../compare libem_s.a tail_em
|
||||
-../../compare end.s end_em
|
||||
|
||||
clean:
|
||||
|
||||
opr :
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@pr `pwd`/head_em.s
|
||||
@arch pv libem_s.a | pr -h `pwd`/libem_s.a
|
||||
@pr `pwd`/end.s
|
|
@ -1,16 +0,0 @@
|
|||
.define _endtext,_enddata,_endbss
|
||||
.sect .text
|
||||
.align 4
|
||||
.sect .rom
|
||||
.align 4
|
||||
.sect .data
|
||||
.align 4
|
||||
.sect .bss
|
||||
.align 4
|
||||
|
||||
.sect .text
|
||||
_endtext:
|
||||
.sect .data
|
||||
_enddata:
|
||||
.sect .bss
|
||||
_endbss:
|
|
@ -1,178 +0,0 @@
|
|||
! head_em.s
|
||||
.define begdat,begbss,hol0,argv,envp,_RegHp,_incptflag
|
||||
.define _Lineno,_Filna,_IgnoreMask,_TrpReg
|
||||
|
||||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
|
||||
.sect .text
|
||||
.base 0x8000
|
||||
ADR R0,begbss
|
||||
ADR R1,_endbss
|
||||
MOV R2,#0
|
||||
ADR R3,_incptflag
|
||||
STR R2,[R3]
|
||||
1:
|
||||
STR R2,[R0],#4
|
||||
CMP R0,R1
|
||||
BLT 1B
|
||||
! the next 2 lines are OS specific:
|
||||
SWI 16 ! OS_Getenv
|
||||
SUB R12, R1, #8 ! Get end of ram
|
||||
! R0 points to command string
|
||||
! (argv,argc) code for C
|
||||
! or Pascal file names
|
||||
MOV R9,R0 ! save pt in R0
|
||||
MOV R8,#0 ! string length
|
||||
len:
|
||||
LDR.B R7,[R9],#1
|
||||
CMP R7,#0
|
||||
ADD.NE R8,R8,#1
|
||||
BNE len
|
||||
MOV R7,R8 ! save len in R7
|
||||
! round up to multiple of 4
|
||||
ADD R8,R8,#4
|
||||
MVN R6, #3 !FFFFFFFC
|
||||
AND R8,R8,R6
|
||||
! make room on stack
|
||||
SUB R12,R12,R8 ! word aligned
|
||||
! now determine argc
|
||||
! OS intercepts blank lines, so
|
||||
! there must be at least one arg
|
||||
MOV R9,R0
|
||||
MOV R6,#0 ! holds argc
|
||||
MOV R5,#0 ! char count
|
||||
loop1:
|
||||
CMP R5,R7
|
||||
BGT next1
|
||||
LDR.B R4,[R9],#1
|
||||
ADD R5,R5,#1
|
||||
CMP R4,#32
|
||||
BEQ loop1 !skip spaces
|
||||
ADD R6,R6,#1 ! new arg
|
||||
nospace1:
|
||||
CMP R5,R7
|
||||
BGT next1
|
||||
LDR.B R4,[R9],#1
|
||||
ADD R5,R5,#1
|
||||
CMP R4,#32
|
||||
BNE nospace1
|
||||
CMP R5,R7
|
||||
BCC loop1
|
||||
! BEQ loop1
|
||||
next1:
|
||||
! store argc
|
||||
ADR R5,argc
|
||||
STR R6,[R5]
|
||||
! copy the string
|
||||
! onto the stack
|
||||
MOV R9,R0 !source
|
||||
MOV R2,R12 !dest
|
||||
MOV R3,R7 !#chars
|
||||
loop2:
|
||||
LDR.B R4,[R9],#1
|
||||
STR.B R4,[R2],#1
|
||||
SUB.S R3,R3,#1
|
||||
BNE loop2
|
||||
MOV R4, #0 ! zero terminator
|
||||
STR.B R4,[R2]
|
||||
! create space on the stack for
|
||||
! the pointers to individual args
|
||||
MOV R11, R12 ! string pt
|
||||
MOV R8,R6,LSL #2
|
||||
SUB R12,R12,R8
|
||||
! save pointer to argv[0]
|
||||
ADR R1,argv
|
||||
STR R12,[R1]
|
||||
! determine argv[0] .. argv[argc-1]
|
||||
! and store on stack
|
||||
! R11 = start of string
|
||||
! R7 = string lenth
|
||||
! R12 = stack pointer
|
||||
! R6 = argc
|
||||
MOV R9, #0 !char count
|
||||
MOV R8, #0 !arg count
|
||||
MOV R5,R11
|
||||
loop3:
|
||||
CMP R9,R7
|
||||
BGT next2
|
||||
LDR.B R4,[R5],#1
|
||||
ADD R9,R9,#1
|
||||
CMP R4,#32
|
||||
BEQ loop3
|
||||
CMP R9,R7
|
||||
BGT next2
|
||||
SUB R4,R5,#1 !compensate for incr
|
||||
STR R4,[R12,R8,LSL #2]
|
||||
ADD R8,R8,#1
|
||||
nospace2:
|
||||
CMP R9,R7
|
||||
BGT next2
|
||||
LDR.B R4,[R5],#1
|
||||
ADD R9,R9,#1
|
||||
CMP R4,#32
|
||||
BNE nospace2
|
||||
CMP R9,R7
|
||||
BCC loop3
|
||||
! BEQ loop3
|
||||
! finally, replace spaces by 0
|
||||
next2:
|
||||
MOV R5,R11 !string ptr
|
||||
MOV R6,R7 !string length
|
||||
MOV R3,#0
|
||||
loop4:
|
||||
CMP R6,#0
|
||||
BEQ next3
|
||||
LDR.B R4,[R5]
|
||||
CMP R4,#32
|
||||
STR.EQ.B R3,[R5]
|
||||
ADD R5,R5,#1
|
||||
SUB R6,R6,#1
|
||||
BAL loop4
|
||||
next3:
|
||||
ADR R11, envp
|
||||
STMFD R12<,{R11}
|
||||
ADR R11,argv
|
||||
LDR R11,[R11]
|
||||
STMFD R12<,{R11}
|
||||
ADR R11, argc
|
||||
LDR R11,[R11]
|
||||
STMFD R12<,{R11}
|
||||
BAL.L __m_a_i_n
|
||||
MOV R11,#0
|
||||
STMFD R12<,{R11}
|
||||
MOV R11,#1
|
||||
STMFD R12<,{R11}
|
||||
BAL.L _EmMon
|
||||
|
||||
.sect .bss
|
||||
begbss:
|
||||
.sect .data
|
||||
begdat:
|
||||
hol0:
|
||||
.data4 0
|
||||
.data4 0
|
||||
argv:
|
||||
.data4 0
|
||||
envp:
|
||||
.data4 0
|
||||
argc:
|
||||
.data4 0
|
||||
2:
|
||||
.asciz 'PROGRAM'
|
||||
.align
|
||||
_RegHp:
|
||||
.data4 _endbss
|
||||
_Lineno:
|
||||
.data4 0
|
||||
_Filna:
|
||||
.data4 0
|
||||
_IgnoreMask:
|
||||
.data4 0
|
||||
_TrpReg:
|
||||
.data4 0
|
||||
_incptflag:
|
||||
.data4 0
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
EMHOME=../../..
|
||||
SUF=so
|
||||
MAKEFILE=$(EMHOME)/mach/proto/fp/Makefile
|
||||
MACHDEF="MACH=arm" "CFLAGS=-DUSE_DIVIDE" "SUF=$(SUF)" "ASAR=arch"
|
||||
|
||||
all:
|
||||
make -f $(MAKEFILE) $(MACHDEF) all
|
||||
|
||||
install:
|
||||
make -f $(MAKEFILE) $(MACHDEF) install
|
||||
|
||||
cmp: all
|
||||
-../../compare FP_$(MACH).a tail_fp
|
||||
|
||||
clean:
|
||||
make -f $(MAKEFILE) $(MACHDEF) clean
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@pr Makefile
|
|
@ -1,15 +0,0 @@
|
|||
all:
|
||||
|
||||
install:
|
||||
../../install libros_s.a tail_ros
|
||||
|
||||
cmp:
|
||||
-../../compare libros_s.a tail_ros
|
||||
|
||||
clean:
|
||||
|
||||
opr :
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@arch pv libros_s.a | pr -h `pwd`/libros_s.a
|
|
@ -1,197 +0,0 @@
|
|||
# $Header$
|
||||
|
||||
EMHOME=../../..
|
||||
#preprocessor flags for table
|
||||
TABLEFLAGS=
|
||||
#cgg options
|
||||
CGGFLAGS=
|
||||
|
||||
PREFLAGS=-I$(EMHOME)/h -I. -I$(EMHOME)/mach -I$(EMHOME)/modules/h -DNDEBUG
|
||||
PFLAGS=
|
||||
CFLAGS=$(PREFLAGS) $(PFLAGS) -O
|
||||
LDFLAGS=$(PFLAGS)
|
||||
LINTOPTS=-bx
|
||||
LIBS=$(EMHOME)/lib/em_data.a $(EMHOME)/modules/lib/libflt.a
|
||||
CDIR=$(EMHOME)/mach/proto/ncg
|
||||
CGG=$(EMHOME)/lib/ncgg
|
||||
CPP=$(EMHOME)/lib/cpp
|
||||
CFILES=$(CDIR)/codegen.c $(CDIR)/compute.c $(CDIR)/equiv.c $(CDIR)/fillem.c \
|
||||
$(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/label.c $(CDIR)/main.c \
|
||||
$(CDIR)/move.c $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c \
|
||||
$(CDIR)/salloc.c $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
|
||||
OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o label.o \
|
||||
main.o move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
|
||||
|
||||
all: tables.c
|
||||
make "EMHOME="$(EMHOME) cg
|
||||
|
||||
cg: tables.o $(OFILES)
|
||||
$(CC) $(LDFLAGS) $(OFILES) tables.o $(LIBS) -o cg
|
||||
|
||||
tables.o: tables.c
|
||||
$(CC) -c $(PREFLAGS) -I$(CDIR) tables.c
|
||||
|
||||
codegen.o: $(CDIR)/codegen.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/codegen.c
|
||||
compute.o: $(CDIR)/compute.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/compute.c
|
||||
equiv.o: $(CDIR)/equiv.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/equiv.c
|
||||
fillem.o: $(CDIR)/fillem.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/fillem.c
|
||||
gencode.o: $(CDIR)/gencode.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/gencode.c
|
||||
glosym.o: $(CDIR)/glosym.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/glosym.c
|
||||
label.o: $(CDIR)/label.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/label.c
|
||||
main.o: $(CDIR)/main.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/main.c
|
||||
move.o: $(CDIR)/move.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/move.c
|
||||
nextem.o: $(CDIR)/nextem.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/nextem.c
|
||||
reg.o: $(CDIR)/reg.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/reg.c
|
||||
regvar.o: $(CDIR)/regvar.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/regvar.c
|
||||
salloc.o: $(CDIR)/salloc.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/salloc.c
|
||||
state.o: $(CDIR)/state.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/state.c
|
||||
subr.o: $(CDIR)/subr.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/subr.c
|
||||
var.o: $(CDIR)/var.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/var.c
|
||||
|
||||
install: all
|
||||
$(EMHOME)/mach/install cg
|
||||
|
||||
cmp: all
|
||||
-$(EMHOME)/mach/compare cg
|
||||
|
||||
|
||||
tables.c: table $(CGG)
|
||||
$(CPP) $(TABLEFLAGS) table | $(CGG) $(CGGFLAGS)
|
||||
-cmp tables.h tables.H || cp tables.H tables.h
|
||||
|
||||
lint: $(CFILES) tables.c
|
||||
lint $(LINTOPTS) $(PREFLAGS) -I$(CDIR) $(CFILES) tables.c
|
||||
clean:
|
||||
rm -f *.o tables.c tables.h debug.out cg tables.H
|
||||
|
||||
distr: tables.c
|
||||
rm -f tables1.c tables1.h
|
||||
cp tables.c tables1.c
|
||||
cp tables.h tables1.h
|
||||
chmod -w tables1.[ch]
|
||||
|
||||
codegen.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
codegen.o: $(CDIR)/data.h
|
||||
codegen.o: $(CDIR)/equiv.h
|
||||
codegen.o: $(CDIR)/extern.h
|
||||
codegen.o: $(CDIR)/param.h
|
||||
codegen.o: $(CDIR)/result.h
|
||||
codegen.o: $(CDIR)/state.h
|
||||
codegen.o: tables.h
|
||||
codegen.o: $(CDIR)/types.h
|
||||
compute.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
compute.o: $(CDIR)/data.h
|
||||
compute.o: $(CDIR)/extern.h
|
||||
compute.o: $(CDIR)/glosym.h
|
||||
compute.o: $(CDIR)/label.h
|
||||
compute.o: $(CDIR)/param.h
|
||||
compute.o: $(CDIR)/result.h
|
||||
compute.o: tables.h
|
||||
compute.o: $(CDIR)/types.h
|
||||
equiv.o: $(CDIR)/assert.h
|
||||
equiv.o: $(CDIR)/data.h $(EMHOME)/h/cgg_cg.h
|
||||
equiv.o: $(CDIR)/equiv.h
|
||||
equiv.o: $(CDIR)/extern.h
|
||||
equiv.o: $(CDIR)/param.h
|
||||
equiv.o: $(CDIR)/result.h
|
||||
equiv.o: tables.h
|
||||
equiv.o: $(CDIR)/types.h
|
||||
fillem.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
fillem.o: $(CDIR)/data.h
|
||||
fillem.o: $(CDIR)/extern.h
|
||||
fillem.o: mach.c
|
||||
fillem.o: mach.h
|
||||
fillem.o: $(CDIR)/param.h
|
||||
fillem.o: $(CDIR)/regvar.h
|
||||
fillem.o: $(CDIR)/result.h
|
||||
fillem.o: tables.h
|
||||
fillem.o: $(CDIR)/types.h
|
||||
gencode.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
gencode.o: $(CDIR)/data.h
|
||||
gencode.o: $(CDIR)/extern.h
|
||||
gencode.o: $(CDIR)/param.h
|
||||
gencode.o: $(CDIR)/result.h
|
||||
gencode.o: tables.h
|
||||
gencode.o: $(CDIR)/types.h
|
||||
glosym.o: $(CDIR)/glosym.h
|
||||
glosym.o: $(CDIR)/param.h
|
||||
glosym.o: tables.h
|
||||
glosym.o: $(CDIR)/types.h
|
||||
label.o: $(CDIR)/label.h
|
||||
label.o: $(CDIR)/param.h
|
||||
label.o: tables.h
|
||||
label.o: $(CDIR)/types.h
|
||||
main.o: $(CDIR)/param.h
|
||||
main.o: tables.h
|
||||
move.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
move.o: $(CDIR)/data.h
|
||||
move.o: $(CDIR)/extern.h
|
||||
move.o: $(CDIR)/param.h
|
||||
move.o: $(CDIR)/result.h
|
||||
move.o: tables.h
|
||||
move.o: $(CDIR)/types.h
|
||||
nextem.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
nextem.o: $(CDIR)/data.h
|
||||
nextem.o: $(CDIR)/extern.h
|
||||
nextem.o: $(CDIR)/param.h
|
||||
nextem.o: $(CDIR)/result.h
|
||||
nextem.o: tables.h
|
||||
nextem.o: $(CDIR)/types.h
|
||||
reg.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
reg.o: $(CDIR)/data.h
|
||||
reg.o: $(CDIR)/extern.h
|
||||
reg.o: $(CDIR)/param.h
|
||||
reg.o: $(CDIR)/result.h
|
||||
reg.o: tables.h
|
||||
reg.o: $(CDIR)/types.h
|
||||
regvar.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
regvar.o: $(CDIR)/data.h
|
||||
regvar.o: $(CDIR)/extern.h
|
||||
regvar.o: $(CDIR)/param.h
|
||||
regvar.o: $(CDIR)/regvar.h
|
||||
regvar.o: $(CDIR)/result.h
|
||||
regvar.o: tables.h
|
||||
regvar.o: $(CDIR)/types.h
|
||||
salloc.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
salloc.o: $(CDIR)/data.h
|
||||
salloc.o: $(CDIR)/extern.h
|
||||
salloc.o: $(CDIR)/param.h
|
||||
salloc.o: $(CDIR)/result.h
|
||||
salloc.o: tables.h
|
||||
salloc.o: $(CDIR)/types.h
|
||||
state.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
state.o: $(CDIR)/data.h
|
||||
state.o: $(CDIR)/extern.h
|
||||
state.o: $(CDIR)/param.h
|
||||
state.o: $(CDIR)/result.h
|
||||
state.o: $(CDIR)/state.h
|
||||
state.o: tables.h
|
||||
state.o: $(CDIR)/types.h
|
||||
subr.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
subr.o: $(CDIR)/data.h
|
||||
subr.o: $(CDIR)/extern.h
|
||||
subr.o: $(CDIR)/param.h
|
||||
subr.o: $(CDIR)/result.h
|
||||
subr.o: tables.h
|
||||
subr.o: $(CDIR)/types.h
|
||||
var.o: $(CDIR)/data.h $(EMHOME)/h/cgg_cg.h
|
||||
var.o: $(CDIR)/param.h
|
||||
var.o: $(CDIR)/result.h
|
||||
var.o: tables.h
|
||||
var.o: $(CDIR)/types.h
|
|
@ -1,42 +0,0 @@
|
|||
EMHOME=../../..
|
||||
LIBS=$(EMHOME)/modules/lib/libstring.a
|
||||
PREFLAGS=-I.
|
||||
PFLAGS=
|
||||
CFLAGS=$(PREFLAGS) $(PFLAGS) -O -DNDEBUG
|
||||
LDFLAGS=$(PFLAGS)
|
||||
LINTOPTS=-bx
|
||||
CDIR=$(EMHOME)/mach/proto/top
|
||||
CFILES=$(CDIR)/top.c $(CDIR)/queue.c
|
||||
OFILES=top.o queue.o
|
||||
|
||||
all: gen.c
|
||||
make top
|
||||
|
||||
top: $(OFILES)
|
||||
$(CC) $(LDFLAGS) $(OFILES) $(LIBS) -o top
|
||||
|
||||
top.o: $(CDIR)/top.c gen.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/top.c
|
||||
|
||||
queue.o: $(CDIR)/queue.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/queue.c
|
||||
|
||||
install: all
|
||||
$(EMHOME)/mach/install top
|
||||
|
||||
cmp: all
|
||||
-$(EMHOME)/mach/compare top
|
||||
|
||||
gen.c: table
|
||||
$(EMHOME)/lib/topgen table
|
||||
|
||||
lint: $(CFILES)
|
||||
lint $(LINTOPTS) $(PREFLAGS) $(CFILES)
|
||||
|
||||
clean:
|
||||
rm -f *.o gen.c gen.h top
|
||||
|
||||
top.o: gen.h
|
||||
top.o: $(CDIR)/top.h
|
||||
top.o: $(CDIR)/queue.h
|
||||
queue.o: $(CDIR)/queue.h
|
|
@ -1,7 +0,0 @@
|
|||
case $# in
|
||||
1) DEST="$1" ;;
|
||||
2) DEST="$2" ;;
|
||||
*) echo $0 [source] destination ;;
|
||||
esac
|
||||
MACH=`(cd .. ; basename \`pwd\`)`
|
||||
cmp "$1" ../../../lib/${MACH}/$DEST
|
|
@ -1,67 +0,0 @@
|
|||
# $Header$
|
||||
EMHOME = ../../..
|
||||
h = $(EMHOME)/h
|
||||
LIBOBJ = $(EMHOME)/modules/lib/libobject.a
|
||||
CDIR = $(EMHOME)/mach/proto/as
|
||||
CPP = $(EMHOME)/lib/cpp
|
||||
DEF =
|
||||
|
||||
FFLAG =
|
||||
INCL = -I. -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O $(INCL)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG)
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = comm3.o comm4.o comm5.o \
|
||||
comm6.o comm7.o comm8.o
|
||||
MACH = mach0.c mach1.c mach2.c mach3.c mach4.c mach5.c
|
||||
COMM = $(CDIR)/comm0.h $(CDIR)/comm1.h $(CDIR)/comm2.y $(CSRC)
|
||||
|
||||
all: as
|
||||
|
||||
install:all
|
||||
../../install as
|
||||
|
||||
cmp:
|
||||
-../../compare as
|
||||
|
||||
clean:
|
||||
rm -f *.o as as.[cy] y.tab.h
|
||||
|
||||
pr: $(MACH)
|
||||
@pr -n $(MACH)
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
as: $(COBJ) as.o
|
||||
$(CC) $(LDFLAGS) $(COBJ) as.o $(LIBOBJ) -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
-@if test -f Expect ; then cat Expect ; else echo "expect 1 shift/reduce conflict"; fi
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
lint $(INCL) $(CSRC) as.c
|
||||
|
||||
y.tab.h: as.c
|
||||
$(COBJ): y.tab.h
|
||||
$(COBJ) as.y: $(CDIR)/comm0.h mach0.c
|
||||
$(COBJ) as.y: $(CDIR)/comm1.h mach1.c
|
||||
as.y: mach2.c
|
||||
comm3.o: mach3.c
|
||||
as.y: mach4.c
|
||||
comm8.o: mach5.c
|
||||
comm3.o: $(CDIR)/comm3.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm3.c
|
||||
comm4.o: $(CDIR)/comm4.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm4.c
|
||||
comm5.o: $(CDIR)/comm5.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm5.c
|
||||
comm6.o: $(CDIR)/comm6.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm6.c
|
||||
comm7.o: $(CDIR)/comm7.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm7.c
|
||||
comm8.o: $(CDIR)/comm8.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm8.c
|
|
@ -1,26 +0,0 @@
|
|||
EMHOME = ../../..
|
||||
CEG = $(EMHOME)/lib/ceg/util
|
||||
OBJ = obj
|
||||
|
||||
all:
|
||||
make -f $(CEG)/make_asobj "OBJ="$(OBJ)
|
||||
|
||||
install:
|
||||
make -f $(CEG)/make_asobj "OBJ="$(OBJ) install
|
||||
|
||||
cmp:
|
||||
-make -f $(CEG)/make_asobj "OBJ="$(OBJ) cmp
|
||||
|
||||
pr:
|
||||
@pr Makefile EM_table mach.h mach.c as_table as.h as.c
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
# total cleanup
|
||||
clean:
|
||||
make -f $(CEG)/make_asobj "OBJ="$(OBJ) clean
|
||||
|
||||
# only remove ce, ceg, and back directories
|
||||
dclean:
|
||||
make -f $(CEG)/make_asobj "OBJ="$(OBJ) dclean
|
|
@ -1,25 +0,0 @@
|
|||
EMHOME = ../../..
|
||||
LIBOBJ = $(EMHOME)/modules/lib/libobject.a
|
||||
INCLUDE = $(EMHOME)/h
|
||||
CFLAGS = -I. -I$(INCLUDE) -O
|
||||
TARGETS = cv
|
||||
|
||||
all: $(TARGETS)
|
||||
|
||||
install: all
|
||||
../../install cv
|
||||
|
||||
cmp: all
|
||||
-../../compare cv
|
||||
|
||||
cv: cv.o
|
||||
$(CC) $(LDFLAGS) -o cv cv.o $(LIBOBJ)
|
||||
|
||||
clean:
|
||||
rm -f $(TARGETS) *.o nohup.out Out
|
||||
|
||||
pr:
|
||||
@pr Makefile cv.c
|
||||
|
||||
opr:
|
||||
make pr | opr
|
|
@ -1,30 +0,0 @@
|
|||
# $Header$
|
||||
MACH=i386
|
||||
|
||||
all: libem_o.a end.o
|
||||
|
||||
install: all
|
||||
../../install libem_o.a tail_em
|
||||
../../install end.o end_em
|
||||
|
||||
cmp: all
|
||||
-../../compare libem_o.a tail_em
|
||||
-../../compare end.o end_em
|
||||
|
||||
|
||||
end.o: end.s
|
||||
$(MACH) -I../../../h -O -c end.s
|
||||
|
||||
libem_o.a: libem_s.a
|
||||
ASAR=aal ; export ASAR ;\
|
||||
march . libem_o.a
|
||||
|
||||
clean:
|
||||
rm -f *.o libem_o.a
|
||||
|
||||
opr :
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@arch pv libem_s.a | pr -h `pwd`/libem_s.a
|
||||
@pr `pwd`/end.s
|
|
@ -1,4 +0,0 @@
|
|||
if i386 -c $1 1>&2
|
||||
then echo `basename $1 $2`.o
|
||||
else exit 1
|
||||
fi
|
|
@ -1,17 +0,0 @@
|
|||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
||||
.define endtext,enddata,endbss
|
||||
.define _end,_etext,_edata
|
||||
|
||||
! $Header$
|
||||
.sect .text
|
||||
endtext:
|
||||
_etext:
|
||||
.align 4
|
||||
.sect .data
|
||||
enddata:
|
||||
_edata:
|
||||
.align 4
|
||||
.sect .endsect
|
||||
_end:
|
||||
endbss:
|
||||
.align 4
|
|
@ -1,38 +0,0 @@
|
|||
.define .adf4, .adf8, .sbf4, .sbf8, .mlf4, .mlf8, .dvf4, .dvf8
|
||||
.define .ngf4, .ngf8, .fif4, .fif8, .fef4, .fef8
|
||||
.define .cif4, .cif8, .cuf4, .cuf8, .cfi, .cfu, .cff4, .cff8
|
||||
.define .cmf4, .cmf8
|
||||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
|
||||
! $Header$
|
||||
|
||||
.sect .text
|
||||
.adf4:
|
||||
.adf8:
|
||||
.sbf4:
|
||||
.sbf8:
|
||||
.mlf4:
|
||||
.mlf8:
|
||||
.dvf4:
|
||||
.dvf8:
|
||||
.ngf4:
|
||||
.ngf8:
|
||||
.fif4:
|
||||
.fif8:
|
||||
.fef4:
|
||||
.fef8:
|
||||
.cif4:
|
||||
.cif8:
|
||||
.cuf4:
|
||||
.cuf8:
|
||||
.cfi:
|
||||
.cfu:
|
||||
.cff4:
|
||||
.cff8:
|
||||
.cmf4:
|
||||
.cmf8:
|
||||
mov eax,18 ! illegal instruction EILLINS
|
||||
jmp .trp
|
|
@ -1,17 +0,0 @@
|
|||
.define .sdret, .dsret, .sret, .dret, .cret
|
||||
.sect .text
|
||||
|
||||
.dsret:
|
||||
pop edi
|
||||
.sret:
|
||||
pop esi
|
||||
.cret:
|
||||
mov esp,ebp
|
||||
pop ebp
|
||||
ret
|
||||
|
||||
.sdret:
|
||||
pop esi
|
||||
.dret:
|
||||
pop edi
|
||||
jmp .cret
|
|
@ -1,5 +0,0 @@
|
|||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
||||
.sect .text
|
||||
.define .stop
|
||||
.stop:
|
||||
jmp __exit
|
|
@ -1,22 +0,0 @@
|
|||
EMHOME=../../..
|
||||
SUF=o
|
||||
MAKEFILE=$(EMHOME)/mach/proto/fp/Makefile
|
||||
MACHDEF="MACH=i386" "CFLAGS=-DUSE_DIVIDE" "SUF=$(SUF)" "ASAR=aal"
|
||||
|
||||
all:
|
||||
make -f $(MAKEFILE) $(MACHDEF) all
|
||||
|
||||
install:
|
||||
make -f $(MAKEFILE) $(MACHDEF) install
|
||||
|
||||
cmp: all
|
||||
-../../compare FP_$(MACH).a tail_fp
|
||||
|
||||
clean:
|
||||
make -f $(MAKEFILE) $(MACHDEF) clean
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@pr Makefile
|
|
@ -1,28 +0,0 @@
|
|||
# $Header$
|
||||
MACH=i386
|
||||
all: libmon_o.a head_em.o
|
||||
|
||||
install: all
|
||||
../../install libmon_o.a tail_mon
|
||||
../../install head_em.o head_em
|
||||
|
||||
cmp: all
|
||||
-../../compare libmon_o.a tail_mon
|
||||
-../../compare head_em.o head_em
|
||||
|
||||
libmon_o.a: libmon_s.a
|
||||
ASAR=aal ; export ASAR ;\
|
||||
march . libmon_o.a
|
||||
|
||||
head_em.o: head_em.s
|
||||
$(MACH) -O -c head_em.s
|
||||
|
||||
clean:
|
||||
rm -f *.o libmon_o.a
|
||||
|
||||
opr :
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@pr `pwd`/head_em.s
|
||||
@arch pv libmon_s.a | pr -h `pwd`/libmon_s.a
|
|
@ -1,12 +0,0 @@
|
|||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
||||
.define __pipe
|
||||
.sect .text
|
||||
__pipe:
|
||||
mov ax,42
|
||||
callf 0x7:0x0
|
||||
jae 1f
|
||||
jmp cerror
|
||||
1:
|
||||
shl dx,0x10
|
||||
or eax,edx
|
||||
ret
|
|
@ -1,6 +0,0 @@
|
|||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
||||
.define __profil
|
||||
.sect .text
|
||||
__profil:
|
||||
mov ax,44
|
||||
jmp syscal
|
|
@ -1,6 +0,0 @@
|
|||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
||||
.define __stime
|
||||
.sect .text
|
||||
__stime:
|
||||
mov ax,25
|
||||
jmp sysx
|
|
@ -1,6 +0,0 @@
|
|||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
||||
.define __time
|
||||
.sect .text
|
||||
__time:
|
||||
mov ax,13
|
||||
jmp syscal
|
|
@ -1,12 +0,0 @@
|
|||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
||||
.define __wait
|
||||
.sect .text
|
||||
__wait:
|
||||
mov ax,7
|
||||
callf 0x7:0x0
|
||||
jb 1f
|
||||
shl dx,0x10
|
||||
or eax,edx
|
||||
ret
|
||||
1:
|
||||
jmp cerror
|
|
@ -1,4 +0,0 @@
|
|||
if i386 -c -L $1 1>&2
|
||||
then echo `basename $1 $2`.o
|
||||
else exit 1
|
||||
fi
|
|
@ -1,197 +0,0 @@
|
|||
# $Header$
|
||||
|
||||
EMHOME=../../..
|
||||
#preprocessor flags for table
|
||||
TABLEFLAGS=
|
||||
#cgg options
|
||||
CGGFLAGS=
|
||||
|
||||
PREFLAGS=-I$(EMHOME)/h -I. -I$(EMHOME)/mach -I$(EMHOME)/modules/h -DNDEBUG
|
||||
PFLAGS=
|
||||
CFLAGS=$(PREFLAGS) $(PFLAGS) -O
|
||||
LDFLAGS=$(PFLAGS)
|
||||
LINTOPTS=-bx
|
||||
LIBS=$(EMHOME)/lib/em_data.a $(EMHOME)/modules/lib/libflt.a
|
||||
CDIR=$(EMHOME)/mach/proto/ncg
|
||||
CGG=$(EMHOME)/lib/ncgg
|
||||
CPP=$(EMHOME)/lib/cpp
|
||||
CFILES=$(CDIR)/codegen.c $(CDIR)/compute.c $(CDIR)/equiv.c $(CDIR)/fillem.c \
|
||||
$(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/label.c $(CDIR)/main.c \
|
||||
$(CDIR)/move.c $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c \
|
||||
$(CDIR)/salloc.c $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
|
||||
OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o label.o \
|
||||
main.o move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
|
||||
|
||||
all: tables.c
|
||||
make "EMHOME="$(EMHOME) cg
|
||||
|
||||
cg: tables.o $(OFILES)
|
||||
$(CC) $(LDFLAGS) $(OFILES) tables.o $(LIBS) -o cg
|
||||
|
||||
tables.o: tables.c
|
||||
$(CC) -c $(PREFLAGS) -I$(CDIR) tables.c
|
||||
|
||||
codegen.o: $(CDIR)/codegen.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/codegen.c
|
||||
compute.o: $(CDIR)/compute.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/compute.c
|
||||
equiv.o: $(CDIR)/equiv.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/equiv.c
|
||||
fillem.o: $(CDIR)/fillem.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/fillem.c
|
||||
gencode.o: $(CDIR)/gencode.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/gencode.c
|
||||
glosym.o: $(CDIR)/glosym.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/glosym.c
|
||||
label.o: $(CDIR)/label.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/label.c
|
||||
main.o: $(CDIR)/main.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/main.c
|
||||
move.o: $(CDIR)/move.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/move.c
|
||||
nextem.o: $(CDIR)/nextem.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/nextem.c
|
||||
reg.o: $(CDIR)/reg.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/reg.c
|
||||
regvar.o: $(CDIR)/regvar.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/regvar.c
|
||||
salloc.o: $(CDIR)/salloc.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/salloc.c
|
||||
state.o: $(CDIR)/state.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/state.c
|
||||
subr.o: $(CDIR)/subr.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/subr.c
|
||||
var.o: $(CDIR)/var.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/var.c
|
||||
|
||||
install: all
|
||||
$(EMHOME)/mach/install cg
|
||||
|
||||
cmp: all
|
||||
-$(EMHOME)/mach/compare cg
|
||||
|
||||
|
||||
tables.c: table $(CGG)
|
||||
$(CPP) $(TABLEFLAGS) table | $(CGG) $(CGGFLAGS)
|
||||
-cmp tables.h tables.H || cp tables.H tables.h
|
||||
|
||||
lint: $(CFILES) tables.c
|
||||
lint $(LINTOPTS) $(PREFLAGS) -I$(CDIR) $(CFILES) tables.c
|
||||
clean:
|
||||
rm -f *.o tables.c tables.h debug.out cg tables.H
|
||||
|
||||
distr: tables.c
|
||||
rm -f tables1.c tables1.h
|
||||
cp tables.c tables1.c
|
||||
cp tables.h tables1.h
|
||||
chmod -w tables1.[ch]
|
||||
|
||||
codegen.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
codegen.o: $(CDIR)/data.h
|
||||
codegen.o: $(CDIR)/equiv.h
|
||||
codegen.o: $(CDIR)/extern.h
|
||||
codegen.o: $(CDIR)/param.h
|
||||
codegen.o: $(CDIR)/result.h
|
||||
codegen.o: $(CDIR)/state.h
|
||||
codegen.o: tables.h
|
||||
codegen.o: $(CDIR)/types.h
|
||||
compute.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
compute.o: $(CDIR)/data.h
|
||||
compute.o: $(CDIR)/extern.h
|
||||
compute.o: $(CDIR)/glosym.h
|
||||
compute.o: $(CDIR)/label.h
|
||||
compute.o: $(CDIR)/param.h
|
||||
compute.o: $(CDIR)/result.h
|
||||
compute.o: tables.h
|
||||
compute.o: $(CDIR)/types.h
|
||||
equiv.o: $(CDIR)/assert.h
|
||||
equiv.o: $(CDIR)/data.h $(EMHOME)/h/cgg_cg.h
|
||||
equiv.o: $(CDIR)/equiv.h
|
||||
equiv.o: $(CDIR)/extern.h
|
||||
equiv.o: $(CDIR)/param.h
|
||||
equiv.o: $(CDIR)/result.h
|
||||
equiv.o: tables.h
|
||||
equiv.o: $(CDIR)/types.h
|
||||
fillem.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
fillem.o: $(CDIR)/data.h
|
||||
fillem.o: $(CDIR)/extern.h
|
||||
fillem.o: mach.c
|
||||
fillem.o: mach.h
|
||||
fillem.o: $(CDIR)/param.h
|
||||
fillem.o: $(CDIR)/regvar.h
|
||||
fillem.o: $(CDIR)/result.h
|
||||
fillem.o: tables.h
|
||||
fillem.o: $(CDIR)/types.h
|
||||
gencode.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
gencode.o: $(CDIR)/data.h
|
||||
gencode.o: $(CDIR)/extern.h
|
||||
gencode.o: $(CDIR)/param.h
|
||||
gencode.o: $(CDIR)/result.h
|
||||
gencode.o: tables.h
|
||||
gencode.o: $(CDIR)/types.h
|
||||
glosym.o: $(CDIR)/glosym.h
|
||||
glosym.o: $(CDIR)/param.h
|
||||
glosym.o: tables.h
|
||||
glosym.o: $(CDIR)/types.h
|
||||
label.o: $(CDIR)/label.h
|
||||
label.o: $(CDIR)/param.h
|
||||
label.o: tables.h
|
||||
label.o: $(CDIR)/types.h
|
||||
main.o: $(CDIR)/param.h
|
||||
main.o: tables.h
|
||||
move.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
move.o: $(CDIR)/data.h
|
||||
move.o: $(CDIR)/extern.h
|
||||
move.o: $(CDIR)/param.h
|
||||
move.o: $(CDIR)/result.h
|
||||
move.o: tables.h
|
||||
move.o: $(CDIR)/types.h
|
||||
nextem.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
nextem.o: $(CDIR)/data.h
|
||||
nextem.o: $(CDIR)/extern.h
|
||||
nextem.o: $(CDIR)/param.h
|
||||
nextem.o: $(CDIR)/result.h
|
||||
nextem.o: tables.h
|
||||
nextem.o: $(CDIR)/types.h
|
||||
reg.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
reg.o: $(CDIR)/data.h
|
||||
reg.o: $(CDIR)/extern.h
|
||||
reg.o: $(CDIR)/param.h
|
||||
reg.o: $(CDIR)/result.h
|
||||
reg.o: tables.h
|
||||
reg.o: $(CDIR)/types.h
|
||||
regvar.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
regvar.o: $(CDIR)/data.h
|
||||
regvar.o: $(CDIR)/extern.h
|
||||
regvar.o: $(CDIR)/param.h
|
||||
regvar.o: $(CDIR)/regvar.h
|
||||
regvar.o: $(CDIR)/result.h
|
||||
regvar.o: tables.h
|
||||
regvar.o: $(CDIR)/types.h
|
||||
salloc.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
salloc.o: $(CDIR)/data.h
|
||||
salloc.o: $(CDIR)/extern.h
|
||||
salloc.o: $(CDIR)/param.h
|
||||
salloc.o: $(CDIR)/result.h
|
||||
salloc.o: tables.h
|
||||
salloc.o: $(CDIR)/types.h
|
||||
state.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
state.o: $(CDIR)/data.h
|
||||
state.o: $(CDIR)/extern.h
|
||||
state.o: $(CDIR)/param.h
|
||||
state.o: $(CDIR)/result.h
|
||||
state.o: $(CDIR)/state.h
|
||||
state.o: tables.h
|
||||
state.o: $(CDIR)/types.h
|
||||
subr.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
subr.o: $(CDIR)/data.h
|
||||
subr.o: $(CDIR)/extern.h
|
||||
subr.o: $(CDIR)/param.h
|
||||
subr.o: $(CDIR)/result.h
|
||||
subr.o: tables.h
|
||||
subr.o: $(CDIR)/types.h
|
||||
var.o: $(CDIR)/data.h $(EMHOME)/h/cgg_cg.h
|
||||
var.o: $(CDIR)/param.h
|
||||
var.o: $(CDIR)/result.h
|
||||
var.o: tables.h
|
||||
var.o: $(CDIR)/types.h
|
|
@ -1,67 +0,0 @@
|
|||
# $Header$
|
||||
EMHOME = ../../..
|
||||
h = $(EMHOME)/h
|
||||
LIBOBJ = $(EMHOME)/modules/lib/libobject.a
|
||||
CDIR = $(EMHOME)/mach/proto/as
|
||||
CPP = $(EMHOME)/lib/cpp
|
||||
DEF =
|
||||
|
||||
FFLAG =
|
||||
INCL = -I. -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O $(INCL)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG)
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = comm3.o comm4.o comm5.o \
|
||||
comm6.o comm7.o comm8.o
|
||||
MACH = mach0.c mach1.c mach2.c mach3.c mach4.c mach5.c
|
||||
COMM = $(CDIR)/comm0.h $(CDIR)/comm1.h $(CDIR)/comm2.y $(CSRC)
|
||||
|
||||
all: as
|
||||
|
||||
install:all
|
||||
../../install as
|
||||
|
||||
cmp:
|
||||
-../../compare as
|
||||
|
||||
clean:
|
||||
rm -f *.o as as.[cy] y.tab.h
|
||||
|
||||
pr: $(MACH)
|
||||
@pr -n $(MACH)
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
as: $(COBJ) as.o
|
||||
$(CC) $(LDFLAGS) $(COBJ) as.o $(LIBOBJ) -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
-@if test -f Expect ; then cat Expect ; else echo "expect 1 shift/reduce conflict"; fi
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
lint $(INCL) $(CSRC) as.c
|
||||
|
||||
y.tab.h: as.c
|
||||
$(COBJ): y.tab.h
|
||||
$(COBJ) as.y: $(CDIR)/comm0.h mach0.c
|
||||
$(COBJ) as.y: $(CDIR)/comm1.h mach1.c
|
||||
as.y: mach2.c
|
||||
comm3.o: mach3.c
|
||||
as.y: mach4.c
|
||||
comm8.o: mach5.c
|
||||
comm3.o: $(CDIR)/comm3.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm3.c
|
||||
comm4.o: $(CDIR)/comm4.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm4.c
|
||||
comm5.o: $(CDIR)/comm5.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm5.c
|
||||
comm6.o: $(CDIR)/comm6.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm6.c
|
||||
comm7.o: $(CDIR)/comm7.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm7.c
|
||||
comm8.o: $(CDIR)/comm8.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm8.c
|
|
@ -1,25 +0,0 @@
|
|||
EMHOME=../../..
|
||||
OBJLIB=$(EMHOME)/modules/lib/libobject.a
|
||||
|
||||
head: mccpm nascom
|
||||
|
||||
mccpm: mccpm.c
|
||||
$(CC) -I$(EMHOME)/h -o mccpm mccpm.c $(OBJLIB)
|
||||
|
||||
nascom: nascom.c
|
||||
$(CC) -I$(EMHOME)/h -o nascom nascom.c $(OBJLIB)
|
||||
|
||||
install: head
|
||||
@echo Nothing is installed
|
||||
|
||||
cmp: head
|
||||
@echo Nothing is compared
|
||||
|
||||
clean:
|
||||
rm -f *.o
|
||||
|
||||
pr:
|
||||
@pr `pwd`/Makefile `pwd`/mccpm.c `pwd`/nascom.c
|
||||
|
||||
opr:
|
||||
make pr | opr
|
|
@ -1,29 +0,0 @@
|
|||
# $Header$
|
||||
MACH=i80
|
||||
all: libem_o.a end.o
|
||||
|
||||
install: all
|
||||
../../install end.o end_em
|
||||
../../install libem_o.a tail_em
|
||||
|
||||
|
||||
cmp: all
|
||||
-../../compare end.o end_em
|
||||
-../../compare libem_o.a tail_em
|
||||
|
||||
libem_o.a: libem_s.a
|
||||
ASAR=aal ; export ASAR ;\
|
||||
march . libem_o.a
|
||||
|
||||
end.o: end.s
|
||||
$(MACH) -I../../../h -c end.s
|
||||
|
||||
clean:
|
||||
rm -f *.o libem_o.a
|
||||
|
||||
opr :
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@pr `pwd`/end.s
|
||||
@arch pv libem_s.a | pr -h `pwd`/libem_s.a
|
|
@ -1,4 +0,0 @@
|
|||
if i80 -c $1 1>&2
|
||||
then echo `basename $1 $2`.o
|
||||
else exit 1
|
||||
fi
|
|
@ -1,17 +0,0 @@
|
|||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
||||
.define endtext,enddata,endbss
|
||||
.define _end,_etext,_edata
|
||||
|
||||
! $Header$
|
||||
.sect .text
|
||||
endtext:
|
||||
_etext:
|
||||
.align 2
|
||||
.sect .data
|
||||
enddata:
|
||||
_edata:
|
||||
.align 2
|
||||
.sect .endsect
|
||||
_end:
|
||||
endbss:
|
||||
.align 2
|
|
@ -1,29 +0,0 @@
|
|||
# $Header$
|
||||
MACH=i80
|
||||
all: libsys_o.a head_em.o
|
||||
|
||||
install: all
|
||||
../../install head_em.o head_em
|
||||
../../install libsys_o.a tail_sys
|
||||
|
||||
|
||||
cmp: all
|
||||
-../../compare head_em.o head_em
|
||||
-../../compare libsys_o.a tail_sys
|
||||
|
||||
libsys_o.a: libsys_s.a
|
||||
ASAR=aal ; export ASAR ;\
|
||||
march . libsys_o.a
|
||||
|
||||
head_em.o: head_em.s
|
||||
$(MACH) -I../../../h -c head_em.s
|
||||
|
||||
clean:
|
||||
rm -f *.o libsys_o.a
|
||||
|
||||
opr :
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@pr `pwd`/head_em.s
|
||||
@arch pv libsys_s.a | pr -h `pwd`/libsys_s.a
|
|
@ -1,4 +0,0 @@
|
|||
if i80 -c -L $1 1>&2
|
||||
then echo `basename $1 $2`.o
|
||||
else exit 1
|
||||
fi
|
|
@ -1,49 +0,0 @@
|
|||
.define hol0, argv, envp, begbss
|
||||
.define .ignmask,.reghp,.trapproc,.fra
|
||||
.define .retadr,.retadr1,.areg,.bcreg,.tmp1
|
||||
.define block1, block2, block3
|
||||
.define .stop
|
||||
|
||||
.base 0x1000
|
||||
.text
|
||||
lxi h,0x1000 ! stack will grow from 0x1000 downwards
|
||||
sphl
|
||||
lxi h,begbss ! clear bss
|
||||
lxi d,endbss-begbss
|
||||
mvi c,0
|
||||
|
||||
2: mov m,c
|
||||
inx h
|
||||
dcx d
|
||||
mov a,e
|
||||
ora d
|
||||
jnz 2b
|
||||
|
||||
lxi h,envp ! call main
|
||||
push h
|
||||
lxi h,argv
|
||||
push h
|
||||
lxi h,0
|
||||
push h
|
||||
call _m_a_i_n
|
||||
.stop: jmp 0xfb52
|
||||
|
||||
.bss
|
||||
begbss:
|
||||
.trapproc: .space 2
|
||||
.ignmask: .space 2
|
||||
.data
|
||||
hol0: .space 8
|
||||
.reghp: .word endbss
|
||||
argv: .word 0
|
||||
envp: .word 0
|
||||
.retadr: .space 2 ! used to save return address
|
||||
.retadr1: .space 2 ! reserve
|
||||
.bcreg: .space 2 ! used to save localbase
|
||||
.areg: .space 1
|
||||
.tmp1: .space 2
|
||||
.fra: .space 8 ! 8 bytes function return area
|
||||
block1: .space 4 ! used by 32 bits divide and
|
||||
block2: .space 4 ! multiply routines
|
||||
block3: .space 4
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
.define endtext, enddata, endbss
|
||||
.text
|
||||
endtext: .align 2
|
||||
.data
|
||||
enddata: .align 2
|
||||
.bss
|
||||
endbss: .align 2
|
|
@ -1,197 +0,0 @@
|
|||
# $Header$
|
||||
|
||||
EMHOME=../../..
|
||||
#preprocessor flags for table
|
||||
TABLEFLAGS=
|
||||
#cgg options
|
||||
CGGFLAGS=
|
||||
|
||||
PREFLAGS=-I$(EMHOME)/h -I. -I$(EMHOME)/mach -I$(EMHOME)/modules/h -DNDEBUG
|
||||
PFLAGS=
|
||||
CFLAGS=$(PREFLAGS) $(PFLAGS) -O
|
||||
LDFLAGS=$(PFLAGS)
|
||||
LINTOPTS=-bx
|
||||
LIBS=$(EMHOME)/lib/em_data.a $(EMHOME)/modules/lib/libflt.a
|
||||
CDIR=$(EMHOME)/mach/proto/ncg
|
||||
CGG=$(EMHOME)/lib/ncgg
|
||||
CPP=$(EMHOME)/lib/cpp
|
||||
CFILES=$(CDIR)/codegen.c $(CDIR)/compute.c $(CDIR)/equiv.c $(CDIR)/fillem.c \
|
||||
$(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/label.c $(CDIR)/main.c \
|
||||
$(CDIR)/move.c $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c \
|
||||
$(CDIR)/salloc.c $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
|
||||
OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o label.o \
|
||||
main.o move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
|
||||
|
||||
all: tables.c
|
||||
make "EMHOME="$(EMHOME) cg
|
||||
|
||||
cg: tables.o $(OFILES)
|
||||
$(CC) $(LDFLAGS) $(OFILES) tables.o $(LIBS) -o cg
|
||||
|
||||
tables.o: tables.c
|
||||
$(CC) -c $(PREFLAGS) -I$(CDIR) tables.c
|
||||
|
||||
codegen.o: $(CDIR)/codegen.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/codegen.c
|
||||
compute.o: $(CDIR)/compute.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/compute.c
|
||||
equiv.o: $(CDIR)/equiv.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/equiv.c
|
||||
fillem.o: $(CDIR)/fillem.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/fillem.c
|
||||
gencode.o: $(CDIR)/gencode.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/gencode.c
|
||||
glosym.o: $(CDIR)/glosym.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/glosym.c
|
||||
label.o: $(CDIR)/label.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/label.c
|
||||
main.o: $(CDIR)/main.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/main.c
|
||||
move.o: $(CDIR)/move.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/move.c
|
||||
nextem.o: $(CDIR)/nextem.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/nextem.c
|
||||
reg.o: $(CDIR)/reg.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/reg.c
|
||||
regvar.o: $(CDIR)/regvar.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/regvar.c
|
||||
salloc.o: $(CDIR)/salloc.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/salloc.c
|
||||
state.o: $(CDIR)/state.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/state.c
|
||||
subr.o: $(CDIR)/subr.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/subr.c
|
||||
var.o: $(CDIR)/var.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/var.c
|
||||
|
||||
install: all
|
||||
$(EMHOME)/mach/install cg
|
||||
|
||||
cmp: all
|
||||
-$(EMHOME)/mach/compare cg
|
||||
|
||||
|
||||
tables.c: table $(CGG)
|
||||
$(CPP) $(TABLEFLAGS) table | $(CGG) $(CGGFLAGS)
|
||||
-cmp tables.h tables.H || cp tables.H tables.h
|
||||
|
||||
lint: $(CFILES) tables.c
|
||||
lint $(LINTOPTS) $(PREFLAGS) -I$(CDIR) $(CFILES) tables.c
|
||||
clean:
|
||||
rm -f *.o tables.c tables.h debug.out cg tables.H
|
||||
|
||||
distr: tables.c
|
||||
rm -f tables1.c tables1.h
|
||||
cp tables.c tables1.c
|
||||
cp tables.h tables1.h
|
||||
chmod -w tables1.[ch]
|
||||
|
||||
codegen.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
codegen.o: $(CDIR)/data.h
|
||||
codegen.o: $(CDIR)/equiv.h
|
||||
codegen.o: $(CDIR)/extern.h
|
||||
codegen.o: $(CDIR)/param.h
|
||||
codegen.o: $(CDIR)/result.h
|
||||
codegen.o: $(CDIR)/state.h
|
||||
codegen.o: tables.h
|
||||
codegen.o: $(CDIR)/types.h
|
||||
compute.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
compute.o: $(CDIR)/data.h
|
||||
compute.o: $(CDIR)/extern.h
|
||||
compute.o: $(CDIR)/glosym.h
|
||||
compute.o: $(CDIR)/label.h
|
||||
compute.o: $(CDIR)/param.h
|
||||
compute.o: $(CDIR)/result.h
|
||||
compute.o: tables.h
|
||||
compute.o: $(CDIR)/types.h
|
||||
equiv.o: $(CDIR)/assert.h
|
||||
equiv.o: $(CDIR)/data.h $(EMHOME)/h/cgg_cg.h
|
||||
equiv.o: $(CDIR)/equiv.h
|
||||
equiv.o: $(CDIR)/extern.h
|
||||
equiv.o: $(CDIR)/param.h
|
||||
equiv.o: $(CDIR)/result.h
|
||||
equiv.o: tables.h
|
||||
equiv.o: $(CDIR)/types.h
|
||||
fillem.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
fillem.o: $(CDIR)/data.h
|
||||
fillem.o: $(CDIR)/extern.h
|
||||
fillem.o: mach.c
|
||||
fillem.o: mach.h
|
||||
fillem.o: $(CDIR)/param.h
|
||||
fillem.o: $(CDIR)/regvar.h
|
||||
fillem.o: $(CDIR)/result.h
|
||||
fillem.o: tables.h
|
||||
fillem.o: $(CDIR)/types.h
|
||||
gencode.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
gencode.o: $(CDIR)/data.h
|
||||
gencode.o: $(CDIR)/extern.h
|
||||
gencode.o: $(CDIR)/param.h
|
||||
gencode.o: $(CDIR)/result.h
|
||||
gencode.o: tables.h
|
||||
gencode.o: $(CDIR)/types.h
|
||||
glosym.o: $(CDIR)/glosym.h
|
||||
glosym.o: $(CDIR)/param.h
|
||||
glosym.o: tables.h
|
||||
glosym.o: $(CDIR)/types.h
|
||||
label.o: $(CDIR)/label.h
|
||||
label.o: $(CDIR)/param.h
|
||||
label.o: tables.h
|
||||
label.o: $(CDIR)/types.h
|
||||
main.o: $(CDIR)/param.h
|
||||
main.o: tables.h
|
||||
move.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
move.o: $(CDIR)/data.h
|
||||
move.o: $(CDIR)/extern.h
|
||||
move.o: $(CDIR)/param.h
|
||||
move.o: $(CDIR)/result.h
|
||||
move.o: tables.h
|
||||
move.o: $(CDIR)/types.h
|
||||
nextem.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
nextem.o: $(CDIR)/data.h
|
||||
nextem.o: $(CDIR)/extern.h
|
||||
nextem.o: $(CDIR)/param.h
|
||||
nextem.o: $(CDIR)/result.h
|
||||
nextem.o: tables.h
|
||||
nextem.o: $(CDIR)/types.h
|
||||
reg.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
reg.o: $(CDIR)/data.h
|
||||
reg.o: $(CDIR)/extern.h
|
||||
reg.o: $(CDIR)/param.h
|
||||
reg.o: $(CDIR)/result.h
|
||||
reg.o: tables.h
|
||||
reg.o: $(CDIR)/types.h
|
||||
regvar.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
regvar.o: $(CDIR)/data.h
|
||||
regvar.o: $(CDIR)/extern.h
|
||||
regvar.o: $(CDIR)/param.h
|
||||
regvar.o: $(CDIR)/regvar.h
|
||||
regvar.o: $(CDIR)/result.h
|
||||
regvar.o: tables.h
|
||||
regvar.o: $(CDIR)/types.h
|
||||
salloc.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
salloc.o: $(CDIR)/data.h
|
||||
salloc.o: $(CDIR)/extern.h
|
||||
salloc.o: $(CDIR)/param.h
|
||||
salloc.o: $(CDIR)/result.h
|
||||
salloc.o: tables.h
|
||||
salloc.o: $(CDIR)/types.h
|
||||
state.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
state.o: $(CDIR)/data.h
|
||||
state.o: $(CDIR)/extern.h
|
||||
state.o: $(CDIR)/param.h
|
||||
state.o: $(CDIR)/result.h
|
||||
state.o: $(CDIR)/state.h
|
||||
state.o: tables.h
|
||||
state.o: $(CDIR)/types.h
|
||||
subr.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
subr.o: $(CDIR)/data.h
|
||||
subr.o: $(CDIR)/extern.h
|
||||
subr.o: $(CDIR)/param.h
|
||||
subr.o: $(CDIR)/result.h
|
||||
subr.o: tables.h
|
||||
subr.o: $(CDIR)/types.h
|
||||
var.o: $(CDIR)/data.h $(EMHOME)/h/cgg_cg.h
|
||||
var.o: $(CDIR)/param.h
|
||||
var.o: $(CDIR)/result.h
|
||||
var.o: tables.h
|
||||
var.o: $(CDIR)/types.h
|
|
@ -1,67 +0,0 @@
|
|||
# $Header$
|
||||
EMHOME = ../../..
|
||||
h = $(EMHOME)/h
|
||||
LIBOBJ = $(EMHOME)/modules/lib/libobject.a
|
||||
CDIR = $(EMHOME)/mach/proto/as
|
||||
CPP = $(EMHOME)/lib/cpp
|
||||
DEF =
|
||||
|
||||
FFLAG =
|
||||
INCL = -I. -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O $(INCL)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG)
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = comm3.o comm4.o comm5.o \
|
||||
comm6.o comm7.o comm8.o
|
||||
MACH = mach0.c mach1.c mach2.c mach3.c mach4.c mach5.c
|
||||
COMM = $(CDIR)/comm0.h $(CDIR)/comm1.h $(CDIR)/comm2.y $(CSRC)
|
||||
|
||||
all: as
|
||||
|
||||
install:all
|
||||
../../install as
|
||||
|
||||
cmp:
|
||||
-../../compare as
|
||||
|
||||
clean:
|
||||
rm -f *.o as as.[cy] y.tab.h
|
||||
|
||||
pr: $(MACH)
|
||||
@pr -n $(MACH)
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
as: $(COBJ) as.o
|
||||
$(CC) $(LDFLAGS) $(COBJ) as.o $(LIBOBJ) -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
-@if test -f Expect ; then cat Expect ; else echo "expect 1 shift/reduce conflict"; fi
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
lint $(INCL) $(CSRC) as.c
|
||||
|
||||
y.tab.h: as.c
|
||||
$(COBJ): y.tab.h
|
||||
$(COBJ) as.y: $(CDIR)/comm0.h mach0.c
|
||||
$(COBJ) as.y: $(CDIR)/comm1.h mach1.c
|
||||
as.y: mach2.c
|
||||
comm3.o: mach3.c
|
||||
as.y: mach4.c
|
||||
comm8.o: mach5.c
|
||||
comm3.o: $(CDIR)/comm3.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm3.c
|
||||
comm4.o: $(CDIR)/comm4.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm4.c
|
||||
comm5.o: $(CDIR)/comm5.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm5.c
|
||||
comm6.o: $(CDIR)/comm6.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm6.c
|
||||
comm7.o: $(CDIR)/comm7.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm7.c
|
||||
comm8.o: $(CDIR)/comm8.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm8.c
|
|
@ -1,9 +0,0 @@
|
|||
The mach?.c files in this directory were made for an earlier version of
|
||||
the universal assembler and are too dependent on its innards.
|
||||
I have no idea in what way they should be changed.
|
||||
|
||||
Duk Bekema
|
||||
|
||||
I adapted them to the new framework. It appears to work now.
|
||||
|
||||
Ceriel Jacobs
|
|
@ -1,26 +0,0 @@
|
|||
EMHOME = ../../..
|
||||
CEG = $(EMHOME)/lib/ceg/util
|
||||
OBJ = obj
|
||||
|
||||
all:
|
||||
make -f $(CEG)/make_asobj "OBJ="$(OBJ)
|
||||
|
||||
install:
|
||||
make -f $(CEG)/make_asobj "OBJ="$(OBJ) install
|
||||
|
||||
cmp:
|
||||
-make -f $(CEG)/make_asobj "OBJ="$(OBJ) cmp
|
||||
|
||||
pr:
|
||||
@pr Makefile EM_table mach.h mach.c as_table as.h as.c
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
# total cleanup
|
||||
clean:
|
||||
make -f $(CEG)/make_asobj "OBJ="$(OBJ) clean
|
||||
|
||||
# only remove ce, ceg, and back directories
|
||||
dclean:
|
||||
make -f $(CEG)/make_asobj "OBJ="$(OBJ) dclean
|
|
@ -1,25 +0,0 @@
|
|||
EMHOME = ../../..
|
||||
LIBOBJ = $(EMHOME)/modules/lib/libobject.a
|
||||
INCLUDE = $(EMHOME)/h
|
||||
CFLAGS = -I. -I$(INCLUDE) -O
|
||||
TARGETS = cv
|
||||
|
||||
all: $(TARGETS)
|
||||
|
||||
install: all
|
||||
../../install cv
|
||||
|
||||
cmp: all
|
||||
../../compare cv
|
||||
|
||||
cv: cv.o
|
||||
$(CC) $(LDFLAGS) -o cv cv.o $(LIBOBJ)
|
||||
|
||||
clean:
|
||||
rm -f $(TARGETS) *.o nohup.out Out
|
||||
|
||||
pr:
|
||||
@pr Makefile cv.c
|
||||
|
||||
opr:
|
||||
make pr | opr
|
|
@ -1,30 +0,0 @@
|
|||
# $Header$
|
||||
MACH=i86
|
||||
|
||||
all: libem_o.a end.o
|
||||
|
||||
install: all
|
||||
../../install libem_o.a tail_em
|
||||
../../install end.o end_em
|
||||
|
||||
cmp: all
|
||||
-../../compare libem_o.a tail_em
|
||||
-../../compare end.o end_em
|
||||
|
||||
|
||||
end.o: end.s
|
||||
$(MACH) -I../../../h -O -c end.s
|
||||
|
||||
libem_o.a: libem_s.a
|
||||
ASAR=aal ; export ASAR ;\
|
||||
march . libem_o.a
|
||||
|
||||
clean:
|
||||
rm -f *.o libem_o.a
|
||||
|
||||
opr :
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@arch pv libem_s.a | pr -h `pwd`/libem_s.a
|
||||
@pr `pwd`/end.s
|
|
@ -1,4 +0,0 @@
|
|||
if i86 -c $1 1>&2
|
||||
then echo `basename $1 $2`.o
|
||||
else exit 1
|
||||
fi
|
|
@ -1,17 +0,0 @@
|
|||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
||||
.define endtext,enddata,endbss
|
||||
.define _end,_etext,_edata
|
||||
|
||||
! $Header$
|
||||
.sect .text
|
||||
endtext:
|
||||
_etext:
|
||||
.align 2
|
||||
.sect .data
|
||||
enddata:
|
||||
_edata:
|
||||
.align 2
|
||||
.sect .endsect
|
||||
_end:
|
||||
endbss:
|
||||
.align 2
|
|
@ -1,38 +0,0 @@
|
|||
.define .adf4, .adf8, .sbf4, .sbf8, .mlf4, .mlf8, .dvf4, .dvf8
|
||||
.define .ngf4, .ngf8, .fif4, .fif8, .fef4, .fef8
|
||||
.define .cif4, .cif8, .cuf4, .cuf8, .cfi, .cfu, .cff4, .cff8
|
||||
.define .cmf4, .cmf8
|
||||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
|
||||
! $Header$
|
||||
|
||||
.sect .text
|
||||
.adf4:
|
||||
.adf8:
|
||||
.sbf4:
|
||||
.sbf8:
|
||||
.mlf4:
|
||||
.mlf8:
|
||||
.dvf4:
|
||||
.dvf8:
|
||||
.ngf4:
|
||||
.ngf8:
|
||||
.fif4:
|
||||
.fif8:
|
||||
.fef4:
|
||||
.fef8:
|
||||
.cif4:
|
||||
.cif8:
|
||||
.cuf4:
|
||||
.cuf8:
|
||||
.cfi:
|
||||
.cfu:
|
||||
.cff4:
|
||||
.cff8:
|
||||
.cmf4:
|
||||
.cmf8:
|
||||
mov ax,18 ! illegal instruction EILLINS
|
||||
jmp .trp
|
|
@ -1,40 +0,0 @@
|
|||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
||||
.sect .text
|
||||
.define printf
|
||||
.extern printc, printd, prints
|
||||
|
||||
printf:
|
||||
pop bx ! return address
|
||||
xchg ax,di
|
||||
mov si,sp
|
||||
1:
|
||||
movb al,(di)
|
||||
inc di
|
||||
testb al,al
|
||||
jz 6f
|
||||
cmpb al,'%'
|
||||
je 3f
|
||||
2:
|
||||
call printc
|
||||
jmp 1b
|
||||
3:
|
||||
movb al,(di)
|
||||
inc di
|
||||
cmpb al,'c'
|
||||
jne 4f
|
||||
lods
|
||||
jmp 2b
|
||||
4:
|
||||
cmpb al,'d'
|
||||
jne 5f
|
||||
lods
|
||||
call printd
|
||||
jmp 1b
|
||||
5:
|
||||
cmpb al,'s'
|
||||
jne 2b
|
||||
lods
|
||||
call prints
|
||||
jmp 1b
|
||||
6:
|
||||
jmp bx
|
|
@ -1,5 +0,0 @@
|
|||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
||||
.sect .text
|
||||
.define .stop
|
||||
.stop:
|
||||
int 3
|
|
@ -1,16 +0,0 @@
|
|||
.define endtext,enddata,endbss
|
||||
.define _end,_etext,_edata
|
||||
|
||||
! $Header$
|
||||
.text
|
||||
endtext:
|
||||
_etext:
|
||||
.align 2
|
||||
.data
|
||||
enddata:
|
||||
_edata:
|
||||
.align 2
|
||||
.bss
|
||||
_end:
|
||||
endbss:
|
||||
.align 2
|
|
@ -1,22 +0,0 @@
|
|||
EMHOME=../../..
|
||||
SUF=o
|
||||
MAKEFILE=$(EMHOME)/mach/proto/fp/Makefile
|
||||
MACHDEF="MACH=i86" "SUF=$(SUF)" "ASAR=aal"
|
||||
|
||||
all:
|
||||
make -f $(MAKEFILE) $(MACHDEF) all
|
||||
|
||||
install:
|
||||
make -f $(MAKEFILE) $(MACHDEF) install
|
||||
|
||||
cmp: all
|
||||
-../../compare FP_$(MACH).a tail_fp
|
||||
|
||||
clean:
|
||||
make -f $(MAKEFILE) $(MACHDEF) clean
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@pr Makefile
|
|
@ -1,27 +0,0 @@
|
|||
# $Header$
|
||||
MACH=i86
|
||||
all: libmon_o.a head_em.o
|
||||
|
||||
install: all
|
||||
../../install libmon_o.a tail_mon
|
||||
../../install head_em.o head_em
|
||||
|
||||
cmp: all
|
||||
-../../compare libmon_o.a tail_mon
|
||||
-../../compare head_em.o head_em
|
||||
|
||||
libmon_o.a: libmon_s.a
|
||||
ASAR=aal ; export ASAR ;\
|
||||
march . libmon_o.a
|
||||
|
||||
head_em.o: head_em.s
|
||||
$(MACH) -O -c head_em.s
|
||||
clean:
|
||||
rm -f *.o libmon_o.a
|
||||
|
||||
opr :
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@pr `pwd`/head_em.s
|
||||
@arch pv libmon_s.a | pr -h `pwd`/libmon_s.a
|
|
@ -1,4 +0,0 @@
|
|||
if i86 -c -L $1 1>&2
|
||||
then echo `basename $1 $2`.o
|
||||
else exit 1
|
||||
fi
|
|
@ -1,197 +0,0 @@
|
|||
# $Header$
|
||||
|
||||
EMHOME=../../..
|
||||
#preprocessor flags for table
|
||||
TABLEFLAGS=
|
||||
#cgg options
|
||||
CGGFLAGS=
|
||||
|
||||
PREFLAGS=-I$(EMHOME)/h -I. -I$(EMHOME)/mach -I$(EMHOME)/modules/h -DNDEBUG
|
||||
PFLAGS=
|
||||
CFLAGS=$(PREFLAGS) $(PFLAGS) -O
|
||||
LDFLAGS=$(PFLAGS)
|
||||
LINTOPTS=-bx
|
||||
LIBS=$(EMHOME)/lib/em_data.a $(EMHOME)/modules/lib/libflt.a
|
||||
CDIR=$(EMHOME)/mach/proto/ncg
|
||||
CGG=$(EMHOME)/lib/ncgg
|
||||
CPP=$(EMHOME)/lib/cpp
|
||||
CFILES=$(CDIR)/codegen.c $(CDIR)/compute.c $(CDIR)/equiv.c $(CDIR)/fillem.c \
|
||||
$(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/label.c $(CDIR)/main.c \
|
||||
$(CDIR)/move.c $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c \
|
||||
$(CDIR)/salloc.c $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
|
||||
OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o label.o \
|
||||
main.o move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
|
||||
|
||||
all: tables.c
|
||||
make "EMHOME="$(EMHOME) cg
|
||||
|
||||
cg: tables.o $(OFILES)
|
||||
$(CC) $(LDFLAGS) $(OFILES) tables.o $(LIBS) -o cg
|
||||
|
||||
tables.o: tables.c
|
||||
$(CC) -c $(PREFLAGS) -I$(CDIR) tables.c
|
||||
|
||||
codegen.o: $(CDIR)/codegen.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/codegen.c
|
||||
compute.o: $(CDIR)/compute.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/compute.c
|
||||
equiv.o: $(CDIR)/equiv.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/equiv.c
|
||||
fillem.o: $(CDIR)/fillem.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/fillem.c
|
||||
gencode.o: $(CDIR)/gencode.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/gencode.c
|
||||
glosym.o: $(CDIR)/glosym.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/glosym.c
|
||||
label.o: $(CDIR)/label.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/label.c
|
||||
main.o: $(CDIR)/main.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/main.c
|
||||
move.o: $(CDIR)/move.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/move.c
|
||||
nextem.o: $(CDIR)/nextem.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/nextem.c
|
||||
reg.o: $(CDIR)/reg.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/reg.c
|
||||
regvar.o: $(CDIR)/regvar.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/regvar.c
|
||||
salloc.o: $(CDIR)/salloc.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/salloc.c
|
||||
state.o: $(CDIR)/state.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/state.c
|
||||
subr.o: $(CDIR)/subr.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/subr.c
|
||||
var.o: $(CDIR)/var.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/var.c
|
||||
|
||||
install: all
|
||||
$(EMHOME)/mach/install cg
|
||||
|
||||
cmp: all
|
||||
-$(EMHOME)/mach/compare cg
|
||||
|
||||
|
||||
tables.c: table $(CGG)
|
||||
$(CPP) $(TABLEFLAGS) table | $(CGG) $(CGGFLAGS)
|
||||
-cmp tables.h tables.H || cp tables.H tables.h
|
||||
|
||||
lint: $(CFILES) tables.c
|
||||
lint $(LINTOPTS) $(PREFLAGS) -I$(CDIR) $(CFILES) tables.c
|
||||
clean:
|
||||
rm -f *.o tables.c tables.h debug.out cg tables.H
|
||||
|
||||
distr: tables.c
|
||||
rm -f tables1.c tables1.h
|
||||
cp tables.c tables1.c
|
||||
cp tables.h tables1.h
|
||||
chmod -w tables1.[ch]
|
||||
|
||||
codegen.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
codegen.o: $(CDIR)/data.h
|
||||
codegen.o: $(CDIR)/equiv.h
|
||||
codegen.o: $(CDIR)/extern.h
|
||||
codegen.o: $(CDIR)/param.h
|
||||
codegen.o: $(CDIR)/result.h
|
||||
codegen.o: $(CDIR)/state.h
|
||||
codegen.o: tables.h
|
||||
codegen.o: $(CDIR)/types.h
|
||||
compute.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
compute.o: $(CDIR)/data.h
|
||||
compute.o: $(CDIR)/extern.h
|
||||
compute.o: $(CDIR)/glosym.h
|
||||
compute.o: $(CDIR)/label.h
|
||||
compute.o: $(CDIR)/param.h
|
||||
compute.o: $(CDIR)/result.h
|
||||
compute.o: tables.h
|
||||
compute.o: $(CDIR)/types.h
|
||||
equiv.o: $(CDIR)/assert.h
|
||||
equiv.o: $(CDIR)/data.h $(EMHOME)/h/cgg_cg.h
|
||||
equiv.o: $(CDIR)/equiv.h
|
||||
equiv.o: $(CDIR)/extern.h
|
||||
equiv.o: $(CDIR)/param.h
|
||||
equiv.o: $(CDIR)/result.h
|
||||
equiv.o: tables.h
|
||||
equiv.o: $(CDIR)/types.h
|
||||
fillem.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
fillem.o: $(CDIR)/data.h
|
||||
fillem.o: $(CDIR)/extern.h
|
||||
fillem.o: mach.c
|
||||
fillem.o: mach.h
|
||||
fillem.o: $(CDIR)/param.h
|
||||
fillem.o: $(CDIR)/regvar.h
|
||||
fillem.o: $(CDIR)/result.h
|
||||
fillem.o: tables.h
|
||||
fillem.o: $(CDIR)/types.h
|
||||
gencode.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
gencode.o: $(CDIR)/data.h
|
||||
gencode.o: $(CDIR)/extern.h
|
||||
gencode.o: $(CDIR)/param.h
|
||||
gencode.o: $(CDIR)/result.h
|
||||
gencode.o: tables.h
|
||||
gencode.o: $(CDIR)/types.h
|
||||
glosym.o: $(CDIR)/glosym.h
|
||||
glosym.o: $(CDIR)/param.h
|
||||
glosym.o: tables.h
|
||||
glosym.o: $(CDIR)/types.h
|
||||
label.o: $(CDIR)/label.h
|
||||
label.o: $(CDIR)/param.h
|
||||
label.o: tables.h
|
||||
label.o: $(CDIR)/types.h
|
||||
main.o: $(CDIR)/param.h
|
||||
main.o: tables.h
|
||||
move.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
move.o: $(CDIR)/data.h
|
||||
move.o: $(CDIR)/extern.h
|
||||
move.o: $(CDIR)/param.h
|
||||
move.o: $(CDIR)/result.h
|
||||
move.o: tables.h
|
||||
move.o: $(CDIR)/types.h
|
||||
nextem.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
nextem.o: $(CDIR)/data.h
|
||||
nextem.o: $(CDIR)/extern.h
|
||||
nextem.o: $(CDIR)/param.h
|
||||
nextem.o: $(CDIR)/result.h
|
||||
nextem.o: tables.h
|
||||
nextem.o: $(CDIR)/types.h
|
||||
reg.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
reg.o: $(CDIR)/data.h
|
||||
reg.o: $(CDIR)/extern.h
|
||||
reg.o: $(CDIR)/param.h
|
||||
reg.o: $(CDIR)/result.h
|
||||
reg.o: tables.h
|
||||
reg.o: $(CDIR)/types.h
|
||||
regvar.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
regvar.o: $(CDIR)/data.h
|
||||
regvar.o: $(CDIR)/extern.h
|
||||
regvar.o: $(CDIR)/param.h
|
||||
regvar.o: $(CDIR)/regvar.h
|
||||
regvar.o: $(CDIR)/result.h
|
||||
regvar.o: tables.h
|
||||
regvar.o: $(CDIR)/types.h
|
||||
salloc.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
salloc.o: $(CDIR)/data.h
|
||||
salloc.o: $(CDIR)/extern.h
|
||||
salloc.o: $(CDIR)/param.h
|
||||
salloc.o: $(CDIR)/result.h
|
||||
salloc.o: tables.h
|
||||
salloc.o: $(CDIR)/types.h
|
||||
state.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
state.o: $(CDIR)/data.h
|
||||
state.o: $(CDIR)/extern.h
|
||||
state.o: $(CDIR)/param.h
|
||||
state.o: $(CDIR)/result.h
|
||||
state.o: $(CDIR)/state.h
|
||||
state.o: tables.h
|
||||
state.o: $(CDIR)/types.h
|
||||
subr.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
subr.o: $(CDIR)/data.h
|
||||
subr.o: $(CDIR)/extern.h
|
||||
subr.o: $(CDIR)/param.h
|
||||
subr.o: $(CDIR)/result.h
|
||||
subr.o: tables.h
|
||||
subr.o: $(CDIR)/types.h
|
||||
var.o: $(CDIR)/data.h $(EMHOME)/h/cgg_cg.h
|
||||
var.o: $(CDIR)/param.h
|
||||
var.o: $(CDIR)/result.h
|
||||
var.o: tables.h
|
||||
var.o: $(CDIR)/types.h
|
21
mach/install
21
mach/install
|
@ -1,21 +0,0 @@
|
|||
case $# in
|
||||
1) DEST="$1" ;;
|
||||
2) DEST="$2" ;;
|
||||
*) echo $0 [source] destination ;;
|
||||
esac
|
||||
MACH=`(cd .. ; basename \`pwd\`)`
|
||||
mkdir ../../../lib/$MACH >/dev/null 2>&1
|
||||
if cp "$1" ../../../lib/${MACH}/$DEST >/dev/null 2>&1 ||
|
||||
{ rm -f ../../../lib/${MACH}/$DEST >/dev/null 2>&1 &&
|
||||
cp "$1" ../../../lib/${MACH}/$DEST >/dev/null 2>&1
|
||||
}
|
||||
then
|
||||
if (ar t ../../../lib/${MACH}/$DEST | grep __.SYMDEF ) >/dev/null 2>&1
|
||||
then
|
||||
ranlib ../../../lib/${MACH}/$DEST
|
||||
fi
|
||||
exit 0
|
||||
else
|
||||
echo Sorry, can not create "lib/${MACH}/$DEST".
|
||||
exit 1
|
||||
fi
|
|
@ -1,67 +0,0 @@
|
|||
# $Header$
|
||||
EMHOME = ../../..
|
||||
h = $(EMHOME)/h
|
||||
LIBOBJ = $(EMHOME)/modules/lib/libobject.a
|
||||
CDIR = $(EMHOME)/mach/proto/as
|
||||
CPP = $(EMHOME)/lib/cpp
|
||||
DEF =
|
||||
|
||||
FFLAG =
|
||||
INCL = -I. -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O $(INCL)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG)
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = comm3.o comm4.o comm5.o \
|
||||
comm6.o comm7.o comm8.o
|
||||
MACH = mach0.c mach1.c mach2.c mach3.c mach4.c mach5.c
|
||||
COMM = $(CDIR)/comm0.h $(CDIR)/comm1.h $(CDIR)/comm2.y $(CSRC)
|
||||
|
||||
all: as
|
||||
|
||||
install:all
|
||||
../../install as
|
||||
|
||||
cmp:
|
||||
-../../compare as
|
||||
|
||||
clean:
|
||||
rm -f *.o as as.[cy] y.tab.h
|
||||
|
||||
pr: $(MACH)
|
||||
@pr -n $(MACH)
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
as: $(COBJ) as.o
|
||||
$(CC) $(LDFLAGS) $(COBJ) as.o $(LIBOBJ) -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
-@if test -f Expect ; then cat Expect ; else echo "expect 1 shift/reduce conflict"; fi
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
lint $(INCL) $(CSRC) as.c
|
||||
|
||||
y.tab.h: as.c
|
||||
$(COBJ): y.tab.h
|
||||
$(COBJ) as.y: $(CDIR)/comm0.h mach0.c
|
||||
$(COBJ) as.y: $(CDIR)/comm1.h mach1.c
|
||||
as.y: mach2.c
|
||||
comm3.o: mach3.c
|
||||
as.y: mach4.c
|
||||
comm8.o: mach5.c
|
||||
comm3.o: $(CDIR)/comm3.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm3.c
|
||||
comm4.o: $(CDIR)/comm4.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm4.c
|
||||
comm5.o: $(CDIR)/comm5.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm5.c
|
||||
comm6.o: $(CDIR)/comm6.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm6.c
|
||||
comm7.o: $(CDIR)/comm7.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm7.c
|
||||
comm8.o: $(CDIR)/comm8.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm8.c
|
|
@ -1,26 +0,0 @@
|
|||
EMHOME = ../../..
|
||||
CEG = $(EMHOME)/lib/ceg/util
|
||||
OBJ = obj
|
||||
|
||||
all:
|
||||
make -f $(CEG)/make_asobj "OBJ="$(OBJ)
|
||||
|
||||
install:
|
||||
make -f $(CEG)/make_asobj "OBJ="$(OBJ) install
|
||||
|
||||
cmp:
|
||||
-make -f $(CEG)/make_asobj "OBJ="$(OBJ) cmp
|
||||
|
||||
pr:
|
||||
@pr Makefile EM_table mach.h mach.c as_table as.h as.c
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
# total cleanup
|
||||
clean:
|
||||
make -f $(CEG)/make_asobj "OBJ="$(OBJ) clean
|
||||
|
||||
# only remove ce, ceg, and back directories
|
||||
dclean:
|
||||
make -f $(CEG)/make_asobj "OBJ="$(OBJ) dclean
|
|
@ -1,22 +0,0 @@
|
|||
CFLAGS=-O -I../../../h
|
||||
LDFLAGS =
|
||||
|
||||
cv: cv.o
|
||||
$(CC) -o cv $(LDFLAGS) cv.o
|
||||
|
||||
install: ins_cv
|
||||
ins_cv: cv
|
||||
../../install cv
|
||||
|
||||
cmp: cmp_cv
|
||||
cmp_cv: cv
|
||||
-../../compare cv
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@pr `pwd`/cv.c
|
||||
|
||||
clean:
|
||||
-rm -f *.o *.old cv
|
|
@ -1,38 +0,0 @@
|
|||
# $Header$
|
||||
MACH=m68020
|
||||
ASAR=aal
|
||||
all: libem_o.a end.a
|
||||
|
||||
install: all
|
||||
../../install libem_o.a tail_em
|
||||
../../install end.a end_em
|
||||
|
||||
cmp: all
|
||||
-../../compare libem_o.a tail_em
|
||||
-../../compare end.a end_em
|
||||
|
||||
end.a: em_end.s etext.s edata.s end.s
|
||||
$(MACH) -I../../../h -c em_end.s
|
||||
$(MACH) -I../../../h -c edata.s
|
||||
$(MACH) -I../../../h -c etext.s
|
||||
$(MACH) -I../../../h -c end.s
|
||||
$(ASAR) cr end.a em_end.o etext.o edata.o end.o
|
||||
|
||||
libem_o.a: libem_s.a
|
||||
ASAR=$(ASAR) ; export ASAR ;\
|
||||
march . libem_o.a
|
||||
|
||||
clean:
|
||||
rm -f *.o libem_o.a end.a
|
||||
|
||||
opr :
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@arch pv libem_s.a | pr -h `pwd`/libem_s.a
|
||||
@pr `pwd`/em_end.s `pwd`/edata.s `pwd`/etext.s `pwd`/end.s
|
||||
|
||||
trpstr.s: trpstr.c strscript
|
||||
sh strscript
|
||||
|
||||
distr: trpstr.s
|
|
@ -1,4 +0,0 @@
|
|||
if m68020 -c $1 1>&2
|
||||
then echo `basename $1 $2`.o
|
||||
else exit 1
|
||||
fi
|
|
@ -1,9 +0,0 @@
|
|||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
.define _edata
|
||||
.sect .data
|
||||
.align 4
|
||||
.sect .data
|
||||
_edata:
|
|
@ -1,22 +0,0 @@
|
|||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
.define endtext,enddata,endbss,__end
|
||||
.sect .text
|
||||
.align 4
|
||||
.sect .rom
|
||||
.align 4
|
||||
.sect .data
|
||||
.align 4
|
||||
.sect .bss
|
||||
.align 4
|
||||
.sect .end ! only for declaration of _end, __end and endbss.
|
||||
|
||||
.sect .text
|
||||
endtext:
|
||||
.sect .data
|
||||
enddata:
|
||||
.sect .end
|
||||
__end:
|
||||
endbss:
|
|
@ -1,7 +0,0 @@
|
|||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
.define _end
|
||||
.sect .end ! only for declaration of _end, __end and endbss.
|
||||
_end:
|
|
@ -1,9 +0,0 @@
|
|||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
.define _etext
|
||||
.sect .text
|
||||
.align 4
|
||||
.sect .text
|
||||
_etext:
|
|
@ -1,39 +0,0 @@
|
|||
.define .adf4, .adf8, .sbf4, .sbf8, .mlf4, .mlf8, .dvf4, .dvf8
|
||||
.define .ngf4, .ngf8, .fif4, .fif8, .fef4, .fef8
|
||||
.define .cif4, .cif8, .cuf4, .cuf8, .cfi, .cfu, .cff4, .cff8
|
||||
.define .cmf4, .cmf8
|
||||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
|
||||
! $Header$
|
||||
|
||||
.sect .text
|
||||
.adf4:
|
||||
.adf8:
|
||||
.sbf4:
|
||||
.sbf8:
|
||||
.mlf4:
|
||||
.mlf8:
|
||||
.dvf4:
|
||||
.dvf8:
|
||||
.ngf4:
|
||||
.ngf8:
|
||||
.fif4:
|
||||
.fif8:
|
||||
.fef4:
|
||||
.fef8:
|
||||
.cif4:
|
||||
.cif8:
|
||||
.cuf4:
|
||||
.cuf8:
|
||||
.cfi:
|
||||
.cfu:
|
||||
.cff4:
|
||||
.cff8:
|
||||
.cmf4:
|
||||
.cmf8:
|
||||
move.l #18,-(sp)
|
||||
jsr (.trp)
|
||||
rts
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue