*** empty log message ***

This commit is contained in:
keie 1985-06-10 16:05:04 +00:00
parent 1b972eff60
commit 68e92c8319
6 changed files with 239 additions and 0 deletions

9
mach/i80/as/mach0.c Normal file
View file

@ -0,0 +1,9 @@
#define DUK
#define RCSID0 "$Header$"
/*
* Intel 8080 options
*/
#define LISTING
#define RELOCATION
#define NOLD

19
mach/i80/as/mach1.c Normal file
View file

@ -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))

19
mach/i80/as/mach2.c Normal file
View file

@ -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

95
mach/i80/as/mach3.c Normal file
View file

@ -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 */

97
mach/i80/as/mach4.c Normal file
View file

@ -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;
}
;

0
mach/i80/as/mach5.c Normal file
View file