From 45b50fe78afe981f25fb79527b9e55d75bc3f71a Mon Sep 17 00:00:00 2001 From: kichikuou Date: Tue, 16 Nov 2021 21:37:14 +0900 Subject: [PATCH] ZT counter: wrap around on 16-bit overflow This behavior matches System 3.9. --- src/cmdz.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/cmdz.c b/src/cmdz.c index 68607a1..401a7ef 100644 --- a/src/cmdz.c +++ b/src/cmdz.c @@ -248,8 +248,7 @@ void commandZT2() { int *var = getCaliVariable(); int val = get_counter(0) / 100; - if (val > 65535) val = 65535; - *var = val; + *var = val & 0xffff; DEBUG_COMMAND("ZT2 %p:\n", var); } @@ -259,8 +258,7 @@ void commandZT3() { int *var = getCaliVariable(); int val = get_counter(0) * 3 / 100; - if (val > 65535) val = 65535; - *var = val; + *var = val & 0xffff; DEBUG_COMMAND("ZT3 %p:\n", var); } @@ -270,8 +268,7 @@ void commandZT4() { int *var = getCaliVariable(); int val = get_counter(0) * 3 / 50; - if (val > 65535) val = 65535; - *var = val; + *var = val & 0xffff; DEBUG_COMMAND("ZT4 %p:\n", var); } @@ -281,8 +278,7 @@ void commandZT5() { int *var = getCaliVariable(); int val = get_counter(0) / 10; - if (val > 65535) val = 65535; - *var = val; + *var = val & 0xffff; DEBUG_COMMAND("ZT5 %d:\n", val); } @@ -314,7 +310,7 @@ void commandZT11() { if (num > 256) WARNING("invalid timer id %d\n", num); else - *var = get_counter(num) / divisor; + *var = (get_counter(num) / divisor) & 0xffff; DEBUG_COMMAND("ZT11 %d,%d:\n", num, *var); }