You may want to change mach.c in this directory. Archives MUST have a table of contents. Arch in subdirectory arch automatically makes one when you change an archive. Several changes in the assembler were needed to have it generate the necessary output. A contextual diff follows. You can apply them as follows: patch -d /usr/em/philips/mach/68000/as < READ_ME *** comm0.h.old Thu Dec 6 16:18:39 1984 --- comm0.h Thu Dec 6 17:49:51 1984 *************** *** 213,218 /* * extra type bits out of S_ETC, internal use only * S_COM: * - symbols declared by .comm * S_VAR: --- 213,219 ----- /* * extra type bits out of S_ETC, internal use only + #ifndef DUK * S_COM: * - symbols declared by .comm #endif DUK *************** *** 215,220 * extra type bits out of S_ETC, internal use only * S_COM: * - symbols declared by .comm * S_VAR: * - type not known at end of PASS_1 (S_VAR|S_UND) * - value not known at end of PASS_2 (S_VAR|S_ABS) --- 216,222 ----- #ifndef DUK * S_COM: * - symbols declared by .comm + #endif DUK * S_VAR: * - type not known at end of PASS_1 (S_VAR|S_UND) * - value not known at end of PASS_2 (S_VAR|S_ABS) *************** *** 221,226 * S_DOT: * - dot expression */ #define S_COM 0x0100 #define S_VAR 0x0200 #define S_DOT 0x0400 --- 223,229 ----- * S_DOT: * - dot expression */ + #ifndef DUK #define S_COM 0x0100 #endif DUK #define S_VAR 0x0200 *************** *** 222,227 * - dot expression */ #define S_COM 0x0100 #define S_VAR 0x0200 #define S_DOT 0x0400 /* should be tested by preprocessor --- 225,231 ----- */ #ifndef DUK #define S_COM 0x0100 + #endif DUK #define S_VAR 0x0200 #define S_DOT 0x0400 /* should be tested by preprocessor *** comm2.y.old Thu Dec 6 16:19:07 1984 --- comm2.y Thu Dec 6 16:02:19 1984 *************** *** 229,234 { #ifdef RELOCATION if (rflag != 0 && PASS_RELO) newrelo($1.typ, (int)$0); #endif emitx($1.val, (int)$0); --- 229,239 ----- { #ifdef RELOCATION if (rflag != 0 && PASS_RELO) + #ifdef DUK + newrelo($1.typ, + (int)$0 | RELBR | RELWR + ); + #else DUK newrelo($1.typ, (int)$0); #endif DUK #endif *************** *** 230,235 #ifdef RELOCATION if (rflag != 0 && PASS_RELO) newrelo($1.typ, (int)$0); #endif emitx($1.val, (int)$0); } --- 235,241 ----- ); #else DUK newrelo($1.typ, (int)$0); + #endif DUK #endif emitx($1.val, (int)$0); } *************** *** 237,242 { #ifdef RELOCATION if (rflag != 0 && PASS_RELO) newrelo($3.typ, (int)$0); #endif emitx($3.val, (int)$0); --- 243,253 ----- { #ifdef RELOCATION if (rflag != 0 && PASS_RELO) + #ifdef DUK + newrelo($3.typ, + (int)$0 | RELBR | RELWR + ); + #else DUK newrelo($3.typ, (int)$0); #endif DUK #endif *************** *** 238,243 #ifdef RELOCATION if (rflag != 0 && PASS_RELO) newrelo($3.typ, (int)$0); #endif emitx($3.val, (int)$0); } --- 249,255 ----- ); #else DUK newrelo($3.typ, (int)$0); + #endif DUK #endif emitx($3.val, (int)$0); } *** comm3.c.old Wed Jul 11 09:22:24 1984 --- comm3.c Fri Dec 7 13:06:26 1984 *************** *** 11,16 struct outhead outhead = { O_MAGIC, O_STAMP, 0 #ifdef BYTES_REVERSED | HF_BREV #endif --- 11,17 ----- struct outhead outhead = { O_MAGIC, O_STAMP, 0 + #ifndef DUK #ifdef BYTES_REVERSED | HF_BREV #endif *************** *** 17,22 #ifdef WORDS_REVERSED | HF_WREV #endif }; #include "y.tab.h" --- 18,24 ----- #ifdef WORDS_REVERSED | HF_WREV #endif + #endif DUK }; #include "y.tab.h" *** comm5.c.old Thu Dec 6 16:19:40 1984 --- comm5.c Thu Oct 11 14:03:27 1984 *************** *** 162,167 #endif case STRING: p = stringbuf; *p++ = n = getc(tempfile); break; case OP_EQ: case OP_NE: --- 162,172 ----- #endif case STRING: p = stringbuf; + #ifdef DUK + *p++ = n = getc(tempfile); + p[n] = '\0'; + break; + #else DUK *p++ = n = getc(tempfile); break; #endif DUK case OP_EQ: *************** *** 163,168 case STRING: p = stringbuf; *p++ = n = getc(tempfile); break; case OP_EQ: case OP_NE: case OP_LE: --- 168,174 ----- break; #else DUK *p++ = n = getc(tempfile); break; + #endif DUK case OP_EQ: case OP_NE: case OP_LE: *************** *** 354,359 break; if (c == '\\') c = inescape(); if (p >= &stringbuf[STRINGMAX]) fatal("string buffer overflow"); *p++ = c; --- 360,368 ----- break; if (c == '\\') c = inescape(); + #ifdef DUK + if (p >= &stringbuf[STRINGMAX - 1]) + #else DUK if (p >= &stringbuf[STRINGMAX]) #endif DUK fatal("string buffer overflow"); *************** *** 355,360 if (c == '\\') c = inescape(); if (p >= &stringbuf[STRINGMAX]) fatal("string buffer overflow"); *p++ = c; } --- 364,370 ----- if (p >= &stringbuf[STRINGMAX - 1]) #else DUK if (p >= &stringbuf[STRINGMAX]) + #endif DUK fatal("string buffer overflow"); *p++ = c; } *************** *** 359,364 *p++ = c; } stringbuf[0] = p - stringbuf - 1; return(STRING); } --- 369,377 ----- *p++ = c; } stringbuf[0] = p - stringbuf - 1; + #ifdef DUK + *p = '\0'; + #endif DUK return(STRING); } *** comm6.c.old Thu Dec 6 16:20:22 1984 --- comm6.c Wed Oct 3 15:59:31 1984 *************** *** 106,111 sp = §[typ - S_MIN]; sp->s_item = ip; sp->s_lign = ALIGNSECT; ip->i_type = typ | S_EXT; ip->i_valu = 0; } else if (typ >= S_MIN) { --- 106,114 ----- sp = §[typ - S_MIN]; sp->s_item = ip; sp->s_lign = ALIGNSECT; + #ifdef DUK + ip->i_type = typ; + #else DUK ip->i_type = typ | S_EXT; #endif DUK ip->i_valu = 0; *************** *** 107,112 sp->s_item = ip; sp->s_lign = ALIGNSECT; ip->i_type = typ | S_EXT; ip->i_valu = 0; } else if (typ >= S_MIN) { sp = §[typ - S_MIN]; --- 110,116 ----- ip->i_type = typ; #else DUK ip->i_type = typ | S_EXT; + #endif DUK ip->i_valu = 0; } else if (typ >= S_MIN) { sp = §[typ - S_MIN]; *************** *** 180,185 * for possible relocation */ ip->i_valu = outhead.oh_nname; newsymb(ip->i_name, S_EXT|DOTTYP, (short)0, val); #endif } --- 184,192 ----- * for possible relocation */ ip->i_valu = outhead.oh_nname; + #ifdef DUK + newsymb(ip->i_name, S_COM|S_EXT|DOTTYP, (short)0, val); + #else DUK newsymb(ip->i_name, S_EXT|DOTTYP, (short)0, val); #endif DUK #endif *************** *** 181,186 */ ip->i_valu = outhead.oh_nname; newsymb(ip->i_name, S_EXT|DOTTYP, (short)0, val); #endif } --- 188,194 ----- newsymb(ip->i_name, S_COM|S_EXT|DOTTYP, (short)0, val); #else DUK newsymb(ip->i_name, S_EXT|DOTTYP, (short)0, val); + #endif DUK #endif } *************** *** 255,260 short s; { struct outrelo outrelo; if (rflag == 0) return; --- 263,271 ----- short s; { struct outrelo outrelo; + #ifdef DUK + int iscomm; + #endif DUK if (rflag == 0) return; *************** *** 272,277 * b=a * a: .data2 0 */ s &= ~S_COM; if ((n & RELPC) == 0 && s == S_ABS) return; --- 283,291 ----- * b=a * a: .data2 0 */ + #ifdef DUK + iscomm = s & S_COM; + #endif DUK s &= ~S_COM; if ((n & RELPC) == 0 && s == S_ABS) return; *************** *** 285,290 outrelo.or_type = (char)n; outrelo.or_sect = (char)DOTTYP; #ifndef ASLD if (s == S_UND) { assert(relonami != 0); outrelo.or_nami = relonami-1; --- 299,307 ----- outrelo.or_type = (char)n; outrelo.or_sect = (char)DOTTYP; #ifndef ASLD + #ifdef DUK + if (s == S_UND || iscomm) { + #else DUK if (s == S_UND) { #endif DUK assert(relonami != 0); *************** *** 286,291 outrelo.or_sect = (char)DOTTYP; #ifndef ASLD if (s == S_UND) { assert(relonami != 0); outrelo.or_nami = relonami-1; relonami = 0; --- 303,309 ----- if (s == S_UND || iscomm) { #else DUK if (s == S_UND) { + #endif DUK assert(relonami != 0); outrelo.or_nami = relonami-1; relonami = 0; *** comm7.c.old Thu Dec 6 16:20:50 1984 --- comm7.c Wed Oct 3 16:35:31 1984 *************** *** 19,24 return(ip->i_valu); return(ip->i_valu + sect[typ].s_base); #else if ((ip->i_type & S_TYP) == S_UND) { if (pass == PASS_3) { if (relonami != 0) --- 19,27 ----- return(ip->i_valu); return(ip->i_valu + sect[typ].s_base); #else + #ifdef DUK + if ((ip->i_type & S_TYP) == S_UND || (ip->i_type & S_COM)) { + #else DUK if ((ip->i_type & S_TYP) == S_UND) { #endif DUK if (pass == PASS_3) { *************** *** 20,25 return(ip->i_valu + sect[typ].s_base); #else if ((ip->i_type & S_TYP) == S_UND) { if (pass == PASS_3) { if (relonami != 0) serror("relocation error"); --- 23,29 ----- if ((ip->i_type & S_TYP) == S_UND || (ip->i_type & S_COM)) { #else DUK if ((ip->i_type & S_TYP) == S_UND) { + #endif DUK if (pass == PASS_3) { if (relonami != 0) serror("relocation error"); *** mach0.c.old Thu Dec 6 16:21:11 1984 --- mach0.c Fri Sep 14 14:15:54 1984 *************** *** 1,3 /* @(#)mach0.c 1.5 */ /* * Motorola 68000/68010 options --- 1,4 ----- + #define DUK /* @(#)mach0.c 1.5 */ /* * Motorola 68000/68010 options *** mach4.c.old Thu Dec 6 16:21:30 1984 --- mach4.c Thu Dec 6 16:05:00 1984 *************** *** 21,26 fit(fitw($4.val)); emit2($1 | $2); #ifdef RELOCATION newrelo($4.typ, RELPC|RELO2); #endif emit2(loww($4.val)); --- 21,29 ----- fit(fitw($4.val)); emit2($1 | $2); #ifdef RELOCATION + #ifdef DUK + newrelo($4.typ, RELPC|RELO2|RELBR|RELWR); + #else DUK newrelo($4.typ, RELPC|RELO2); #endif DUK #endif *************** *** 22,27 emit2($1 | $2); #ifdef RELOCATION newrelo($4.typ, RELPC|RELO2); #endif emit2(loww($4.val)); } --- 25,31 ----- newrelo($4.typ, RELPC|RELO2|RELBR|RELWR); #else DUK newrelo($4.typ, RELPC|RELO2); + #endif DUK #endif emit2(loww($4.val)); } *** mach5.c.old Thu Dec 6 16:21:54 1984 --- mach5.c Thu Dec 6 16:07:05 1984 *************** *** 37,42 #ifdef RELOCATION RELOMOVE(relonami, rel_1); if (flag & ~0xFF) newrelo(exp_1.typ, flag>>8); #endif if (flag & PUTL) --- 37,45 ----- #ifdef RELOCATION RELOMOVE(relonami, rel_1); if (flag & ~0xFF) + #ifdef DUK + newrelo(exp_1.typ, (flag>>8) | RELBR | RELWR); + #else DUK newrelo(exp_1.typ, flag>>8); #endif DUK #endif *************** *** 38,43 RELOMOVE(relonami, rel_1); if (flag & ~0xFF) newrelo(exp_1.typ, flag>>8); #endif if (flag & PUTL) emit4(exp_1.val); --- 41,47 ----- newrelo(exp_1.typ, (flag>>8) | RELBR | RELWR); #else DUK newrelo(exp_1.typ, flag>>8); + #endif DUK #endif if (flag & PUTL) emit4(exp_1.val); *************** *** 357,362 fit(fitw(exp.val)); emit2(opc); #ifdef RELOCATION newrelo(exp.typ, RELPC|RELO2); #endif emit2(loww(exp.val)); --- 361,369 ----- fit(fitw(exp.val)); emit2(opc); #ifdef RELOCATION + #ifdef DUK + newrelo(exp.typ, RELPC|RELO2|RELBR|RELWR); + #else DUK newrelo(exp.typ, RELPC|RELO2); #endif DUK #endif *************** *** 358,363 emit2(opc); #ifdef RELOCATION newrelo(exp.typ, RELPC|RELO2); #endif emit2(loww(exp.val)); } --- 365,371 ----- newrelo(exp.typ, RELPC|RELO2|RELBR|RELWR); #else DUK newrelo(exp.typ, RELPC|RELO2); + #endif DUK #endif emit2(loww(exp.val)); }