*** empty log message ***
authorkeie <none@none>
Mon, 10 Jun 1985 16:05:04 +0000 (16:05 +0000)
committerkeie <none@none>
Mon, 10 Jun 1985 16:05:04 +0000 (16:05 +0000)
mach/i80/as/mach0.c [new file with mode: 0644]
mach/i80/as/mach1.c [new file with mode: 0644]
mach/i80/as/mach2.c [new file with mode: 0644]
mach/i80/as/mach3.c [new file with mode: 0644]
mach/i80/as/mach4.c [new file with mode: 0644]
mach/i80/as/mach5.c [new file with mode: 0644]

diff --git a/mach/i80/as/mach0.c b/mach/i80/as/mach0.c
new file mode 100644 (file)
index 0000000..94fae31
--- /dev/null
@@ -0,0 +1,9 @@
+#define DUK
+#define RCSID0 "$Header$"
+
+/*
+ * Intel 8080 options
+ */
+#define        LISTING
+#define RELOCATION
+#define NOLD
diff --git a/mach/i80/as/mach1.c b/mach/i80/as/mach1.c
new file mode 100644 (file)
index 0000000..888e567
--- /dev/null
@@ -0,0 +1,19 @@
+#define RCSID1 "$Header$"
+
+/*
+ * Intel 8080 register names
+ */
+
+#define        B       0
+#define        C       1
+#define        D       2
+#define        E       3
+#define        H       4
+#define        L       5
+#define        M       6
+#define        A       7
+#define        SP      6
+#define        PSW     6
+
+#define        low3(z)         ((z) & 07)
+#define        fit3(z)         (low3(z) == (z))
diff --git a/mach/i80/as/mach2.c b/mach/i80/as/mach2.c
new file mode 100644 (file)
index 0000000..4ca1fd2
--- /dev/null
@@ -0,0 +1,19 @@
+#define RCSID2 "$Header$"
+
+/*
+ * Intel 8080 tokens
+ */
+%token <y_word> REG
+%token <y_word> NOOPOP
+%token <y_word> DSTOP
+%token <y_word> SRCOP
+%token <y_word> D8OP
+%token <y_word> D16OP
+%token <y_word> R16OP
+%token <y_word> MOV
+%token <y_word> MVI
+%token <y_word> LXI
+%token <y_word> RST
+%token <y_word> STLDAX
+
+%type <y_word> r16 r8
diff --git a/mach/i80/as/mach3.c b/mach/i80/as/mach3.c
new file mode 100644 (file)
index 0000000..05b2867
--- /dev/null
@@ -0,0 +1,95 @@
+#define RCSID3 "$Header$"
+
+/*
+ * Intel 8080 keywords
+ */
+0,     REG,            B,              "b",
+0,     REG,            C,              "c",
+0,     REG,            D,              "d",
+0,     REG,            E,              "e",
+0,     REG,            H,              "h",
+0,     REG,            L,              "l",
+0,     REG,            M,              "m",
+0,     REG,            A,              "a",
+0,     REG,            SP,             "sp",
+0,     REG,            PSW,            "psw",
+0,     D16OP,          0315,           "call",
+0,     D16OP,          0334,           "cc",
+0,     D16OP,          0324,           "cnc",
+0,     D16OP,          0314,           "cz",
+0,     D16OP,          0304,           "cnz",
+0,     D16OP,          0364,           "cp",
+0,     D16OP,          0374,           "cm",
+0,     D16OP,          0354,           "cpe",
+0,     D16OP,          0344,           "cpo",
+0,     NOOPOP,         0311,           "ret",
+0,     NOOPOP,         0330,           "rc",
+0,     NOOPOP,         0320,           "rnc",
+0,     NOOPOP,         0310,           "rz",
+0,     NOOPOP,         0300,           "rnz",
+0,     NOOPOP,         0360,           "rp",
+0,     NOOPOP,         0370,           "rm",
+0,     NOOPOP,         0350,           "rpe",
+0,     NOOPOP,         0340,           "rpo",
+0,     RST,            0307,           "rst",
+0,     D8OP,           0333,           "in",
+0,     D8OP,           0323,           "out",
+0,     LXI,            0001,           "lxi",
+0,     R16OP,          0305,           "push",
+0,     R16OP,          0301,           "pop",
+0,     D16OP,          0062,           "sta",
+0,     D16OP,          0072,           "lda",
+0,     NOOPOP,         0353,           "xchg",
+0,     NOOPOP,         0343,           "xthl",
+0,     NOOPOP,         0371,           "sphl",
+0,     NOOPOP,         0351,           "pchl",
+0,     R16OP,          0011,           "dad",
+0,     STLDAX,         0002,           "stax",
+0,     STLDAX,         0012,           "ldax",
+0,     R16OP,          0003,           "inx",
+0,     MOV,            0100,           "mov",
+0,     NOOPOP,         0166,           "hlt",
+0,     MVI,            0006,           "mvi",
+0,     DSTOP,          0004,           "inr",
+0,     DSTOP,          0005,           "dcr",
+0,     SRCOP,          0200,           "add",
+0,     SRCOP,          0210,           "adc",
+0,     SRCOP,          0220,           "sub",
+0,     SRCOP,          0230,           "sbb",
+0,     SRCOP,          0240,           "ana",
+0,     SRCOP,          0250,           "xra",
+0,     SRCOP,          0260,           "ora",
+0,     SRCOP,          0270,           "cmp",
+0,     D8OP,           0306,           "adi",
+0,     D8OP,           0316,           "aci",
+0,     D8OP,           0326,           "sui",
+0,     D8OP,           0336,           "sbi",
+0,     D8OP,           0346,           "ani",
+0,     D8OP,           0356,           "xri",
+0,     D8OP,           0366,           "ori",
+0,     D8OP,           0376,           "cpi",
+0,     NOOPOP,         0007,           "rlc",
+0,     NOOPOP,         0017,           "rrc",
+0,     NOOPOP,         0027,           "ral",
+0,     NOOPOP,         0037,           "rar",
+0,     D16OP,          0303,           "jmp",
+0,     D16OP,          0332,           "jc",
+0,     D16OP,          0322,           "jnc",
+0,     D16OP,          0312,           "jz",
+0,     D16OP,          0302,           "jnz",
+0,     D16OP,          0362,           "jp",
+0,     D16OP,          0372,           "jm",
+0,     D16OP,          0352,           "jpe",
+0,     D16OP,          0342,           "jpo",
+0,     R16OP,          0013,           "dcx",
+0,     NOOPOP,         0057,           "cma",
+0,     NOOPOP,         0067,           "stc",
+0,     NOOPOP,         0077,           "cmc",
+0,     NOOPOP,         0047,           "daa",
+0,     D16OP,          0042,           "shld",
+0,     D16OP,          0052,           "lhld",
+0,     NOOPOP,         0373,           "ei",
+0,     NOOPOP,         0363,           "di",
+0,     NOOPOP,         0000,           "nop",
+0,     NOOPOP,         0040,           "rim",          /* 8085 */
+0,     NOOPOP,         0060,           "sim",          /* 8085 */
diff --git a/mach/i80/as/mach4.c b/mach/i80/as/mach4.c
new file mode 100644 (file)
index 0000000..30e083b
--- /dev/null
@@ -0,0 +1,97 @@
+#define RCSID4 "$Header$"
+
+/*
+ * (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
+ *
+ *          This product is part of the Amsterdam Compiler Kit.
+ *
+ * Permission to use, sell, duplicate or disclose this software must be
+ * obtained in writing. Requests for such permissions may be sent to
+ *
+ *      Dr. Andrew S. Tanenbaum
+ *      Wiskundig Seminarium
+ *      Vrije Universiteit
+ *      Postbox 7161
+ *      1007 MC Amsterdam
+ *      The Netherlands
+ *
+ */
+
+/*
+ * Intel 8080 parsing rules
+ */
+operation
+       :       NOOPOP
+                       {       emit1($1);}
+       |
+               D8OP expr
+                       {       emit1($1);
+#ifdef RELOCATION
+                               newrelo($2.typ, RELO1);
+#endif
+                               emit1($2.val);
+                       }
+       |
+               D16OP expr
+                       {       emit1($1);
+#ifdef RELOCATION
+                               newrelo($2.typ, RELO2);
+#endif
+                               emit2($2.val);
+                       }
+       |
+               R16OP r16
+                       {       emit1($1 | ($2 << 3));}
+       |
+               MOV r8 ',' r8
+                       {       if ($2 == M && $4 == M)
+                                       serror("register error");
+                               emit1($1 | ($2 << 3) | $4);
+                       }
+       |
+               MVI r8 ',' expr
+                       {       emit1($1 | ($2 << 3));
+#ifdef RELOCATION
+                               newrelo($4.typ, RELO1);
+#endif
+                               emit1($4.val);
+                       }
+       |
+               LXI r16 ',' expr
+                       {       emit1($1 | ($2 << 3));
+#ifdef RELOCATION
+                               newrelo($4.typ, RELO2);
+#endif
+                               emit2($4.val);
+                       }
+       |
+               SRCOP r8
+                       {       emit1($1 | $2);}
+       |
+               DSTOP r8
+                       {       emit1($1 | ($2 << 3));}
+       |
+               RST absexp
+                       {       fit(fit3($2));
+                               emit1($1 | (low3($2) << 3));
+                       }
+       |
+               STLDAX r16
+                       {
+                               if ($2 != B && $2 != D)
+                                       serror("register error");
+                               emit1($1 | (($2 & 02) << 3));
+                       }
+       ;
+r16    :       REG
+                       {       if ($1 & ~06)
+                                       serror("register error");
+                               $$ = $1 & 06;
+                       }
+       ;
+r8     :       REG
+                       {       if (($1 & ~07) != 0)
+                                       serror("register error");
+                               $$ = $1 & 07;
+                       }
+       ;
diff --git a/mach/i80/as/mach5.c b/mach/i80/as/mach5.c
new file mode 100644 (file)
index 0000000..e69de29