From ea50d77dde924e81311ddebff2cf5f77c95d2229 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 25 Apr 2012 23:23:00 +0000 Subject: spec 1.4 new op hcf --- dcpu16.h | 2 +- emu.c | 7 +++++++ gramar.y | 3 ++- lexer.l | 1 + 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; -- cgit v1.2.3