aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2012-04-25 23:23:00 +0000
committerDimitri Sokolyuk <demon@dim13.org>2012-04-25 23:23:00 +0000
commitea50d77dde924e81311ddebff2cf5f77c95d2229 (patch)
tree0248f5be2d328e016f8e1b920088d2d9f6b53fee
parent9fe4b4f26402142dbe812d61107bb1a0668a9450 (diff)
spec 1.4 new op hcf
-rw-r--r--dcpu16.h2
-rw-r--r--emu.c7
-rw-r--r--gramar.y3
-rw-r--r--lexer.l1
4 files changed, 11 insertions, 2 deletions
diff --git a/dcpu16.h b/dcpu16.h
index bf6280f..581fd9b 100644
--- a/dcpu16.h
+++ b/dcpu16.h
@@ -27,7 +27,7 @@ enum { EXT, SET, ADD, SUB, MUL, MLI, DIV, DVI,
ADX = 0x1a, SBX, nOpt };
enum { NOP, JSR, BRK,
- INT = 0x08, IAG, IAS,
+ HCF = 0x07, INT, IAG, IAS,
HWN = 0x10, HWQ, HWI, nExt };
#define MEMSZ 0x10000
diff --git a/emu.c b/emu.c
index ea351c6..44dc49d 100644
--- a/emu.c
+++ b/emu.c
@@ -47,6 +47,12 @@ stop(unsigned short *a)
cycle += 1;
}
+void
+hcf(unsigned short *a)
+{
+ /* TODO */
+ cycle += 9;
+}
void
intr(unsigned short *a)
@@ -94,6 +100,7 @@ void (*extop[nExt])(unsigned short *a) = {
[NOP] = nop,
[JSR] = jsr,
[BRK] = stop,
+ [HCF] = hcf,
[INT] = intr,
[IAG] = iag,
[IAS] = ias,
diff --git a/gramar.y b/gramar.y
index 1a40b44..d697835 100644
--- a/gramar.y
+++ b/gramar.y
@@ -67,7 +67,7 @@ struct label {
%token SET ADD SUB MUL MLI DIV DVI MOD AND BOR XOR SHR ASR SHL STI
%token IFB IFC IFE IFN IFG IFA IFL IFU ADX SBX
%token NOP BRK DAT ORG
-%token JSR INT IAG IAS HWN HWQ HWI
+%token JSR HCF INT IAG IAS HWN HWQ HWI
%token LBR RBR LBRACE RBRACE LPAR RPAR
%token COMMA DP PLUS MINUS MULT
%token DOT HASH MACRO INCLUDE
@@ -231,6 +231,7 @@ opcode
extended
: JSR { $$ = 0x01; }
+ | HCF { $$ = 0x07; }
| INT { $$ = 0x08; }
| IAG { $$ = 0x09; }
| IAS { $$ = 0x0a; }
diff --git a/lexer.l b/lexer.l
index 1c9e6c3..2799022 100644
--- a/lexer.l
+++ b/lexer.l
@@ -64,6 +64,7 @@ DEC [0-9]+
[Nn][Oo][Pp] return NOP;
[Jj][Ss][Rr] return JSR;
[Bb][Rr][Kk] return BRK;
+[Hh][Cc][Ff] return HCF;
[Ii][Nn][Tt] return INT;
[Ii][Aa][Gg] return IAG;
[Ii][Aa][Ss] return IAS;