mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-08-30 14:52:51 +08:00
cmd: reg{get,set}: more small refactor
Refactor some value checking. Simplified hexvalue to addr. Updated some comments. Remove extra debug prints and EOL after the command.
This commit is contained in:
+18
-19
@@ -304,8 +304,7 @@ void parse_regget(void)
|
|||||||
{
|
{
|
||||||
uint16_t reg = 0;
|
uint16_t reg = 0;
|
||||||
|
|
||||||
if (cmd_words_b[2] < 0) {
|
if (cmd_words_b[1] < 0) {
|
||||||
write_char('v');
|
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -315,10 +314,10 @@ void parse_regget(void)
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hex_size == 1) {
|
|
||||||
reg = hexvalue[0];
|
reg = hexvalue[0];
|
||||||
} else {
|
if (hex_size == 2) {
|
||||||
reg = (((uint16_t)hexvalue[0]) << 8) | hexvalue[1];
|
reg <<= 8;
|
||||||
|
reg |= hexvalue[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
print_string("REGGET: ");
|
print_string("REGGET: ");
|
||||||
@@ -327,7 +326,6 @@ void parse_regget(void)
|
|||||||
|
|
||||||
reg_read_m(reg);
|
reg_read_m(reg);
|
||||||
print_sfr_data();
|
print_sfr_data();
|
||||||
write_char('\n');
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
@@ -340,41 +338,42 @@ void parse_regset(void)
|
|||||||
{
|
{
|
||||||
uint16_t reg = 0;
|
uint16_t reg = 0;
|
||||||
|
|
||||||
uint8_t hex_size = atoi_hex(cmd_words_b[1]);
|
if (cmd_words_b[2] < 0) {
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t hex_size = atoi_hex(cmd_words_b[1]);
|
||||||
if (hex_size == 0 || hex_size > 2) {
|
if (hex_size == 0 || hex_size > 2) {
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hex_size == 1) {
|
|
||||||
reg = hexvalue[0];
|
reg = hexvalue[0];
|
||||||
} else {
|
if (hex_size == 2) {
|
||||||
reg = (((uint16_t)hexvalue[0]) << 8) | hexvalue[1];
|
reg <<= 8;
|
||||||
|
reg |= hexvalue[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
hex_size = atoi_hex(cmd_words_b[2]);
|
hex_size = atoi_hex(cmd_words_b[2]);
|
||||||
|
if (hex_size == 0 || hex_size > 4) {
|
||||||
if (hex_size == 0 || hex_size > 4 || cmd_words_b[3] < 0) {
|
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
print_string("REGSET: ");
|
// zero sfr memory data
|
||||||
print_short(reg);
|
|
||||||
print_string(": VAL: ");
|
|
||||||
|
|
||||||
// zero sfp data
|
|
||||||
sfr_set_zero();
|
sfr_set_zero();
|
||||||
|
|
||||||
|
// copy data over sfr memory
|
||||||
uint8_t offset = 4 - hex_size;
|
uint8_t offset = 4 - hex_size;
|
||||||
// copy data over
|
|
||||||
while(hex_size) {
|
while(hex_size) {
|
||||||
hex_size -= 1;
|
hex_size -= 1;
|
||||||
sfr_data[offset + hex_size] = hexvalue[hex_size];
|
sfr_data[offset + hex_size] = hexvalue[hex_size];
|
||||||
}
|
}
|
||||||
|
print_string("REGSET: ");
|
||||||
|
print_short(reg);
|
||||||
|
|
||||||
reg_write_m(reg);
|
reg_write_m(reg);
|
||||||
|
|
||||||
|
print_string(": VAL: ");
|
||||||
print_sfr_data();
|
print_sfr_data();
|
||||||
write_char('\n');
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
|
|||||||
+1
-1
@@ -26,4 +26,4 @@ Other memory:
|
|||||||
---------------- -------- -------- -------- --------
|
---------------- -------- -------- -------- --------
|
||||||
PAGED EXT. RAM 0 256
|
PAGED EXT. RAM 0 256
|
||||||
EXTERNAL RAM 0x0001 0x1ae8 6888 16777216
|
EXTERNAL RAM 0x0001 0x1ae8 6888 16777216
|
||||||
ROM/EPROM/FLASH 0x0000 0x1c735 47029 16777216
|
ROM/EPROM/FLASH 0x0000 0x1c71b 47003 16777216
|
||||||
|
|||||||
Reference in New Issue
Block a user