Kaynağa Gözat

Added some prototyping to stop a compile error with gcc 4.

dtrg 19 yıl önce
ebeveyn
işleme
bc2672d642
100 değiştirilmiş dosya ile 4638 ekleme ve 0 silme
  1. 3 0
      DistrAction
  2. 35 0
      Makefile
  3. 225 0
      lib/descr/fe.src
  4. 40 0
      lib/descr/ibm.nosid
  5. 35 0
      lib/descr/int
  6. 39 0
      lib/descr/m68k2.macs
  7. 30 0
      lib/descr/nascom
  8. 32 0
      lib/descr/net86
  9. 34 0
      lib/descr/sat86
  10. 59 0
      lib/minix/include/minix/error.h
  11. 59 0
      lib/minix/include/minix/sgtty.h
  12. 26 0
      lib/minix/include/minix/stat.h
  13. 17 0
      lib/minix/include/sys/dir.h
  14. 58 0
      lib/minixST/include/minix/callnr.h
  15. 166 0
      lib/minixST/include/minix/com.h
  16. 88 0
      lib/minixST/include/minix/const.h
  17. 59 0
      lib/minixST/include/minix/error.h
  18. 26 0
      lib/minixST/include/minix/stat.h
  19. 134 0
      lib/minixST/include/minix/type.h
  20. 74 0
      lib/vax4/descr.src
  21. 104 0
      lib/vax4/sedf
  22. 67 0
      mach/6500/as/Makefile
  23. 184 0
      mach/6500/cg/Makefile
  24. 20 0
      mach/6500/dl/Makefile
  25. 21 0
      mach/6500/libem/Makefile
  26. 17 0
      mach/6500/libem/end.s
  27. 233 0
      mach/6500/libem/head_em.s
  28. 40 0
      mach/6500/libem/mon.s
  29. 27 0
      mach/6500/libem/print.s
  30. 32 0
      mach/6500/libem/printhex.s
  31. 49 0
      mach/6500/libem/printstack.s
  32. 37 0
      mach/6500/libem/read.s
  33. 39 0
      mach/6500/libem/write.s
  34. 67 0
      mach/6800/as/Makefile
  35. 67 0
      mach/6805/as/Makefile
  36. 67 0
      mach/6809/as/Makefile
  37. 67 0
      mach/arm/as/Makefile
  38. 22 0
      mach/arm/cv/Makefile
  39. 21 0
      mach/arm/libem/Makefile
  40. 16 0
      mach/arm/libem/end.s
  41. 178 0
      mach/arm/libem/head_em.s
  42. 22 0
      mach/arm/libfp/Makefile
  43. 15 0
      mach/arm/libmon/Makefile
  44. 197 0
      mach/arm/ncg/Makefile
  45. 42 0
      mach/arm/top/Makefile
  46. 7 0
      mach/compare
  47. 67 0
      mach/i386/as/Makefile
  48. 26 0
      mach/i386/ce/Makefile
  49. 25 0
      mach/i386/cv/Makefile
  50. 30 0
      mach/i386/libem/Makefile
  51. 4 0
      mach/i386/libem/compmodule
  52. 17 0
      mach/i386/libem/end.s
  53. 38 0
      mach/i386/libem/fakfp.s
  54. 17 0
      mach/i386/libem/return.s
  55. 5 0
      mach/i386/libem/stop.s
  56. 22 0
      mach/i386/libfp/Makefile
  57. 28 0
      mach/i386/libsys/Makefile
  58. 12 0
      mach/i386/libsys/_pipe.s
  59. 6 0
      mach/i386/libsys/_profil.s
  60. 6 0
      mach/i386/libsys/_stime.s
  61. 6 0
      mach/i386/libsys/_time.s
  62. 12 0
      mach/i386/libsys/_wait.s
  63. 4 0
      mach/i386/libsys/compmodule
  64. 197 0
      mach/i386/ncg/Makefile
  65. 67 0
      mach/i80/as/Makefile
  66. 25 0
      mach/i80/dl/Makefile
  67. 29 0
      mach/i80/libem/Makefile
  68. 4 0
      mach/i80/libem/compmodule
  69. 17 0
      mach/i80/libem/end.s
  70. 29 0
      mach/i80/libmon/Makefile
  71. 4 0
      mach/i80/libmon/compmodule
  72. 49 0
      mach/i80/libmon/head.s
  73. 7 0
      mach/i80/libmon/tail.s
  74. 197 0
      mach/i80/ncg/Makefile
  75. 67 0
      mach/i86/as/Makefile
  76. 9 0
      mach/i86/as/READ_ME
  77. 26 0
      mach/i86/ce/Makefile
  78. 25 0
      mach/i86/cv/Makefile
  79. 30 0
      mach/i86/libem/Makefile
  80. 4 0
      mach/i86/libem/compmodule
  81. 17 0
      mach/i86/libem/end.s
  82. 38 0
      mach/i86/libem/fakfp.s
  83. 40 0
      mach/i86/libem/printf.s
  84. 5 0
      mach/i86/libem/stop.s
  85. 16 0
      mach/i86/libem/tail.s
  86. 22 0
      mach/i86/libfp/Makefile
  87. 27 0
      mach/i86/libsys/Makefile
  88. 4 0
      mach/i86/libsys/compmodule
  89. 197 0
      mach/i86/ncg/Makefile
  90. 21 0
      mach/install
  91. 67 0
      mach/m68020/as/Makefile
  92. 26 0
      mach/m68020/ce/Makefile
  93. 22 0
      mach/m68020/cv/Makefile
  94. 38 0
      mach/m68020/libem/Makefile
  95. 4 0
      mach/m68020/libem/compmodule
  96. 9 0
      mach/m68020/libem/edata.s
  97. 22 0
      mach/m68020/libem/em_end.s
  98. 7 0
      mach/m68020/libem/end.s
  99. 9 0
      mach/m68020/libem/etext.s
  100. 39 0
      mach/m68020/libem/fakfp.s

+ 3 - 0
DistrAction

@@ -0,0 +1,3 @@
+p=/proj/em/Work
+sh TakeAction 'make distr' $p/distr/Action
+sh TakeAction 'make distr' $p/distr/Action1

+ 35 - 0
Makefile

@@ -0,0 +1,35 @@
+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 - 0
lib/descr/fe.src

@@ -0,0 +1,225 @@
+# (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

+ 40 - 0
lib/descr/ibm.nosid

@@ -0,0 +1,40 @@
+# $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

+ 35 - 0
lib/descr/int

@@ -0,0 +1,35 @@
+# $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

+ 39 - 0
lib/descr/m68k2.macs

@@ -0,0 +1,39 @@
+# $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

+ 30 - 0
lib/descr/nascom

@@ -0,0 +1,30 @@
+# $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

+ 32 - 0
lib/descr/net86

@@ -0,0 +1,32 @@
+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

+ 34 - 0
lib/descr/sat86

@@ -0,0 +1,34 @@
+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

+ 59 - 0
lib/minix/include/minix/error.h

@@ -0,0 +1,59 @@
+/* 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 */

+ 59 - 0
lib/minix/include/minix/sgtty.h

@@ -0,0 +1,59 @@
+/* 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 */

+ 26 - 0
lib/minix/include/minix/stat.h

@@ -0,0 +1,26 @@
+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 */

+ 17 - 0
lib/minix/include/sys/dir.h

@@ -0,0 +1,17 @@
+/* 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 */

+ 58 - 0
lib/minixST/include/minix/callnr.h

@@ -0,0 +1,58 @@
+#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

+ 166 - 0
lib/minixST/include/minix/com.h

@@ -0,0 +1,166 @@
+/* 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 */

+ 88 - 0
lib/minixST/include/minix/const.h

@@ -0,0 +1,88 @@
+/* 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 */

+ 59 - 0
lib/minixST/include/minix/error.h

@@ -0,0 +1,59 @@
+/* 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 */

+ 26 - 0
lib/minixST/include/minix/stat.h

@@ -0,0 +1,26 @@
+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 */

+ 134 - 0
lib/minixST/include/minix/type.h

@@ -0,0 +1,134 @@
+#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 */

+ 74 - 0
lib/vax4/descr.src

@@ -0,0 +1,74 @@
+# $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 - 0
lib/vax4/sedf

@@ -0,0 +1,104 @@
+# $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
+}

+ 67 - 0
mach/6500/as/Makefile

@@ -0,0 +1,67 @@
+# $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

+ 184 - 0
mach/6500/cg/Makefile

@@ -0,0 +1,184 @@
+# $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

+ 20 - 0
mach/6500/dl/Makefile

@@ -0,0 +1,20 @@
+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

+ 21 - 0
mach/6500/libem/Makefile

@@ -0,0 +1,21 @@
+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:

+ 17 - 0
mach/6500/libem/end.s

@@ -0,0 +1,17 @@
+.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:

+ 233 - 0
mach/6500/libem/head_em.s

@@ -0,0 +1,233 @@
+.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:

+ 40 - 0
mach/6500/libem/mon.s

@@ -0,0 +1,40 @@
+.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
+
+

+ 27 - 0
mach/6500/libem/print.s

@@ -0,0 +1,27 @@
+.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
+
+

+ 32 - 0
mach/6500/libem/printhex.s

@@ -0,0 +1,32 @@
+.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
+
+

+ 49 - 0
mach/6500/libem/printstack.s

@@ -0,0 +1,49 @@
+.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
+
+

+ 37 - 0
mach/6500/libem/read.s

@@ -0,0 +1,37 @@
+.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
+
+

+ 39 - 0
mach/6500/libem/write.s

@@ -0,0 +1,39 @@
+.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
+

+ 67 - 0
mach/6800/as/Makefile

@@ -0,0 +1,67 @@
+# $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

+ 67 - 0
mach/6805/as/Makefile

@@ -0,0 +1,67 @@
+# $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

+ 67 - 0
mach/6809/as/Makefile

@@ -0,0 +1,67 @@
+# $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

+ 67 - 0
mach/arm/as/Makefile

@@ -0,0 +1,67 @@
+# $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

+ 22 - 0
mach/arm/cv/Makefile

@@ -0,0 +1,22 @@
+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

+ 21 - 0
mach/arm/libem/Makefile

@@ -0,0 +1,21 @@
+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

+ 16 - 0
mach/arm/libem/end.s

@@ -0,0 +1,16 @@
+.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:

+ 178 - 0
mach/arm/libem/head_em.s

@@ -0,0 +1,178 @@
+! 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
+

+ 22 - 0
mach/arm/libfp/Makefile

@@ -0,0 +1,22 @@
+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

+ 15 - 0
mach/arm/libmon/Makefile

@@ -0,0 +1,15 @@
+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

+ 197 - 0
mach/arm/ncg/Makefile

@@ -0,0 +1,197 @@
+# $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

+ 42 - 0
mach/arm/top/Makefile

@@ -0,0 +1,42 @@
+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

+ 7 - 0
mach/compare

@@ -0,0 +1,7 @@
+case $# in
+1)	DEST="$1" ;;
+2)	DEST="$2" ;;
+*)	echo $0 [source] destination ;;
+esac
+MACH=`(cd .. ; basename \`pwd\`)`
+cmp "$1" ../../../lib/${MACH}/$DEST

+ 67 - 0
mach/i386/as/Makefile

@@ -0,0 +1,67 @@
+# $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

+ 26 - 0
mach/i386/ce/Makefile

@@ -0,0 +1,26 @@
+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

+ 25 - 0
mach/i386/cv/Makefile

@@ -0,0 +1,25 @@
+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

+ 30 - 0
mach/i386/libem/Makefile

@@ -0,0 +1,30 @@
+# $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

+ 4 - 0
mach/i386/libem/compmodule

@@ -0,0 +1,4 @@
+if i386 -c $1 1>&2
+then echo `basename $1 $2`.o
+else exit 1
+fi

+ 17 - 0
mach/i386/libem/end.s

@@ -0,0 +1,17 @@
+.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

+ 38 - 0
mach/i386/libem/fakfp.s

@@ -0,0 +1,38 @@
+.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

+ 17 - 0
mach/i386/libem/return.s

@@ -0,0 +1,17 @@
+.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

+ 5 - 0
mach/i386/libem/stop.s

@@ -0,0 +1,5 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.sect .text
+.define .stop
+.stop:
+	jmp	__exit

+ 22 - 0
mach/i386/libfp/Makefile

@@ -0,0 +1,22 @@
+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

+ 28 - 0
mach/i386/libsys/Makefile

@@ -0,0 +1,28 @@
+# $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

+ 12 - 0
mach/i386/libsys/_pipe.s

@@ -0,0 +1,12 @@
+.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

+ 6 - 0
mach/i386/libsys/_profil.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define __profil
+.sect .text
+__profil:
+	mov	ax,44
+	jmp	syscal

+ 6 - 0
mach/i386/libsys/_stime.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define __stime
+.sect .text
+__stime:
+	mov	ax,25
+	jmp	sysx

+ 6 - 0
mach/i386/libsys/_time.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define __time
+.sect .text
+__time:
+	mov	ax,13
+	jmp	syscal

+ 12 - 0
mach/i386/libsys/_wait.s

@@ -0,0 +1,12 @@
+.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

+ 4 - 0
mach/i386/libsys/compmodule

@@ -0,0 +1,4 @@
+if i386 -c -L $1 1>&2
+then echo `basename $1 $2`.o
+else exit 1
+fi

+ 197 - 0
mach/i386/ncg/Makefile

@@ -0,0 +1,197 @@
+# $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

+ 67 - 0
mach/i80/as/Makefile

@@ -0,0 +1,67 @@
+# $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

+ 25 - 0
mach/i80/dl/Makefile

@@ -0,0 +1,25 @@
+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

+ 29 - 0
mach/i80/libem/Makefile

@@ -0,0 +1,29 @@
+# $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

+ 4 - 0
mach/i80/libem/compmodule

@@ -0,0 +1,4 @@
+if i80 -c $1 1>&2
+then echo `basename $1 $2`.o
+else exit 1
+fi

+ 17 - 0
mach/i80/libem/end.s

@@ -0,0 +1,17 @@
+.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

+ 29 - 0
mach/i80/libmon/Makefile

@@ -0,0 +1,29 @@
+# $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

+ 4 - 0
mach/i80/libmon/compmodule

@@ -0,0 +1,4 @@
+if i80 -c -L $1 1>&2
+then echo `basename $1 $2`.o
+else exit 1
+fi

+ 49 - 0
mach/i80/libmon/head.s

@@ -0,0 +1,49 @@
+.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
+

+ 7 - 0
mach/i80/libmon/tail.s

@@ -0,0 +1,7 @@
+.define endtext, enddata, endbss
+.text
+endtext:	.align 2
+.data
+enddata:	.align 2
+.bss
+endbss:		.align 2

+ 197 - 0
mach/i80/ncg/Makefile

@@ -0,0 +1,197 @@
+# $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

+ 67 - 0
mach/i86/as/Makefile

@@ -0,0 +1,67 @@
+# $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

+ 9 - 0
mach/i86/as/READ_ME

@@ -0,0 +1,9 @@
+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

+ 26 - 0
mach/i86/ce/Makefile

@@ -0,0 +1,26 @@
+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

+ 25 - 0
mach/i86/cv/Makefile

@@ -0,0 +1,25 @@
+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

+ 30 - 0
mach/i86/libem/Makefile

@@ -0,0 +1,30 @@
+# $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

+ 4 - 0
mach/i86/libem/compmodule

@@ -0,0 +1,4 @@
+if i86 -c $1 1>&2
+then echo `basename $1 $2`.o
+else exit 1
+fi

+ 17 - 0
mach/i86/libem/end.s

@@ -0,0 +1,17 @@
+.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

+ 38 - 0
mach/i86/libem/fakfp.s

@@ -0,0 +1,38 @@
+.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

+ 40 - 0
mach/i86/libem/printf.s

@@ -0,0 +1,40 @@
+.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

+ 5 - 0
mach/i86/libem/stop.s

@@ -0,0 +1,5 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.sect .text
+.define .stop
+.stop:
+	int     3

+ 16 - 0
mach/i86/libem/tail.s

@@ -0,0 +1,16 @@
+.define	endtext,enddata,endbss
+.define _end,_etext,_edata
+
+        ! $Header$
+	.text
+endtext:
+_etext:
+	.align 2
+	.data
+enddata:
+_edata:
+	.align 2
+	.bss
+_end:
+endbss:
+	.align 2

+ 22 - 0
mach/i86/libfp/Makefile

@@ -0,0 +1,22 @@
+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

+ 27 - 0
mach/i86/libsys/Makefile

@@ -0,0 +1,27 @@
+# $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

+ 4 - 0
mach/i86/libsys/compmodule

@@ -0,0 +1,4 @@
+if i86 -c -L $1 1>&2
+then echo `basename $1 $2`.o
+else exit 1
+fi

+ 197 - 0
mach/i86/ncg/Makefile

@@ -0,0 +1,197 @@
+# $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 - 0
mach/install

@@ -0,0 +1,21 @@
+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

+ 67 - 0
mach/m68020/as/Makefile

@@ -0,0 +1,67 @@
+# $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

+ 26 - 0
mach/m68020/ce/Makefile

@@ -0,0 +1,26 @@
+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

+ 22 - 0
mach/m68020/cv/Makefile

@@ -0,0 +1,22 @@
+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

+ 38 - 0
mach/m68020/libem/Makefile

@@ -0,0 +1,38 @@
+# $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

+ 4 - 0
mach/m68020/libem/compmodule

@@ -0,0 +1,4 @@
+if m68020 -c $1 1>&2
+then echo `basename $1 $2`.o
+else exit 1
+fi

+ 9 - 0
mach/m68020/libem/edata.s

@@ -0,0 +1,9 @@
+.sect .text
+.sect .rom
+.sect .data
+.sect .bss
+.define	_edata
+.sect .data
+	.align 4
+	.sect .data
+_edata:

+ 22 - 0
mach/m68020/libem/em_end.s

@@ -0,0 +1,22 @@
+.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:

+ 7 - 0
mach/m68020/libem/end.s

@@ -0,0 +1,7 @@
+.sect .text
+.sect .rom
+.sect .data
+.sect .bss
+.define	_end
+.sect .end ! only for declaration of _end, __end and endbss.
+_end:

+ 9 - 0
mach/m68020/libem/etext.s

@@ -0,0 +1,9 @@
+.sect .text
+.sect .rom
+.sect .data
+.sect .bss
+.define	_etext
+.sect .text
+	.align 4
+	.sect .text
+_etext:

+ 39 - 0
mach/m68020/libem/fakfp.s

@@ -0,0 +1,39 @@
+.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

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor