diff --git a/data/languages/sm83.sinc b/data/languages/sm83.sinc index d065d91..58a92d8 100644 --- a/data/languages/sm83.sinc +++ b/data/languages/sm83.sinc @@ -236,7 +236,7 @@ macro aluDec(op8) { macro aluRlc(op8) { # TODO: double-check flags local x:1 = op8; - local co:1 = (x >> 7); + local co:1 = x[7,1]; local tmp:1 = (x << 1) | co; $(Z_flag) = (tmp == 0); $(N_flag) = 0; @@ -248,8 +248,8 @@ macro aluRlc(op8) { macro aluRrc(op8) { # TODO: double-check flags local x:1 = op8; - local co:1 = x & 1; - local tmp:1 = (x >> 1) | (co << 7); + local co:1 = x[0,1]; + local tmp:1 = (co << 7) | (x >> 1); $(Z_flag) = (tmp == 0); $(N_flag) = 0; $(H_flag) = 0; @@ -260,7 +260,7 @@ macro aluRrc(op8) { macro aluRl(op8) { # TODO: double-check flags local x:1 = op8; - local co:1 = (x >> 7); + local co:1 = x[7,1]; local tmp:1 = (x << 1) | $(C_flag); $(Z_flag) = (tmp == 0); $(N_flag) = 0; @@ -272,8 +272,8 @@ macro aluRl(op8) { macro aluRr(op8) { # TODO: double-check flags local x:1 = op8; - local co:1 = x & 1; - local tmp:1 = (x >> 1) | ($(C_flag) << 7); + local co:1 = x[0,1]; + local tmp:1 = ($(C_flag) << 7) | (x >> 1); $(Z_flag) = (tmp == 0); $(N_flag) = 0; $(H_flag) = 0; @@ -284,7 +284,7 @@ macro aluRr(op8) { macro aluSla(op8) { # TODO: double-check flags local x:1 = op8; - local co:1 = x >> 7; + local co:1 = x[7,1]; local tmp:1 = x << 1; $(Z_flag) = (tmp == 0); $(N_flag) = 0; @@ -296,7 +296,7 @@ macro aluSla(op8) { macro aluSra(op8) { # TODO: double-check flags local x:1 = op8; - local co:1 = x & 1; + local co:1 = x[0,1]; local tmp:1 = x s>> 1; $(Z_flag) = (tmp == 0); $(N_flag) = 0; @@ -308,7 +308,7 @@ macro aluSra(op8) { macro aluSwap(op8) { # TODO: double-check flags local x:1 = op8; - local tmp:1 = (x >> 4) | (x << 4); + local tmp:1 = (x[0,4] << 4) | x[4,4]; $(Z_flag) = (tmp == 0); $(N_flag) = 0; $(H_flag) = 0; @@ -319,7 +319,7 @@ macro aluSwap(op8) { macro aluSrl(op8) { # TODO: double-check flags local x:1 = op8; - local co:1 = x & 1; + local co:1 = x[0,1]; local tmp:1 = x >> 1; $(Z_flag) = (tmp == 0); $(N_flag) = 0; diff --git a/data/languages/sm83_instructions.sinc b/data/languages/sm83_instructions.sinc index efcc748..4097abd 100644 --- a/data/languages/sm83_instructions.sinc +++ b/data/languages/sm83_instructions.sinc @@ -218,7 +218,7 @@ :RLCA is op0_8=0x07 { # TODO: double-check flags - local co:1 = (A >> 7); + local co:1 = A[7,1]; A = (A << 1) | co; $(Z_flag) = 0; $(N_flag) = 0; @@ -228,7 +228,7 @@ :RLA is op0_8=0x17 { # TODO: double-check flags - local co:1 = (A >> 7); + local co:1 = A[7,1]; A = (A << 1) | $(C_flag); $(Z_flag) = 0; $(N_flag) = 0; @@ -238,8 +238,8 @@ :RRCA is op0_8=0x0f { # TODO: double-check flags - local co:1 = A & 1; - A = (A >> 1) | (co << 7); + local co:1 = A[0,1]; + A = (co << 7) | (A >> 1); $(Z_flag) = 0; $(N_flag) = 0; $(H_flag) = 0; @@ -248,8 +248,8 @@ :RRA is op0_8=0x1f { # TODO: double-check flags - local co:1 = A & 1; - A = (A >> 1) | ($(C_flag) << 7); + local co:1 = A[0,1]; + A = ($(C_flag) << 7) | (A >> 1); $(Z_flag) = 0; $(N_flag) = 0; $(H_flag) = 0;