From 1c864648856daab4c827261da0c28416ae25da9f Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Fri, 27 Apr 2012 13:25:06 +0000 Subject: revert undocument in-joke halt catch fire opcode --- dcpu16.h | 2 +- emu.c | 8 ++++++++ gramar.y | 3 ++- lexer.l | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/dcpu16.h b/dcpu16.h index 44b065e..8e7b936 100644 --- a/dcpu16.h +++ b/dcpu16.h @@ -28,7 +28,7 @@ enum { EXT, SET, ADD, SUB, MUL, MLI, DIV, DVI, STI = 0x1e, STD, nOpt }; enum { NOP, JSR, BRK, - INT = 0x08, IAG, IAS, RFI, IAQ, + HCF = 0x07, INT, IAG, IAS, RFI, IAQ, HWN = 0x10, HWQ, HWI, nExt }; #define MEMSZ 0x10000 diff --git a/emu.c b/emu.c index fbcf362..c14fe39 100644 --- a/emu.c +++ b/emu.c @@ -49,6 +49,13 @@ stop(unsigned short *a) cycle += 1; } +void +hcf(unsigned short *a) +{ + /* TODO: halt catch fire */ + cycle += 9; +} + void intr(unsigned short *a) { @@ -109,6 +116,7 @@ void (*extop[nExt])(unsigned short *) = { [NOP] = nop, [JSR] = jsr, [BRK] = stop, + [HCF] = hcf, [INT] = intr, [IAG] = iag, [IAS] = ias, diff --git a/gramar.y b/gramar.y index c81560c..7580ff8 100644 --- a/gramar.y +++ b/gramar.y @@ -68,7 +68,7 @@ struct label { %token SET ADD SUB MUL MLI DIV DVI MOD MDI AND BOR XOR SHR ASR SHL %token IFB IFC IFE IFN IFG IFA IFL IFU ADX SBX STI STD %token NOP BRK DAT ORG -%token JSR INT IAG IAS RFI IAQ HWN HWQ HWI +%token JSR HCF INT IAG IAS RFI IAQ HWN HWQ HWI %token LBR RBR LBRACE RBRACE LPAR RPAR %token COMMA DP %token PLUS MINUS EMUL EDIV EMOD ENOT EXOR EAND EOR SHIFTL SHIFTR @@ -244,6 +244,7 @@ opcode extended : JSR { $$ = 0x01; } + | HCF { $$ = 0x07; } | INT { $$ = 0x08; } | IAG { $$ = 0x09; } | IAS { $$ = 0x0a; } diff --git a/lexer.l b/lexer.l index ea57002..d738d4b 100644 --- a/lexer.l +++ b/lexer.l @@ -67,7 +67,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