diff options
Diffstat (limited to 'programs/sub-suite/tmp-stuff/cmd_cpy.c')
-rw-r--r-- | programs/sub-suite/tmp-stuff/cmd_cpy.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/programs/sub-suite/tmp-stuff/cmd_cpy.c b/programs/sub-suite/tmp-stuff/cmd_cpy.c new file mode 100644 index 0000000..6b89e7d --- /dev/null +++ b/programs/sub-suite/tmp-stuff/cmd_cpy.c @@ -0,0 +1,33 @@ +#include <stdint.h> + +int cmd_size = 0x400; +int maxcol = 80; + +extern uint8_t scr_row; +extern uint8_t scr_col; +extern uint8_t scr_str; + +int find_end(char *str, int pos) { + int i; + for (i = pos; str[i] != '\0'; i++); + return i; +} + +void cmd_cpy(char *scr_buf, char *cmd_buf, int pos) { + int end_line = (find_end(scr_buf, pos)/(maxcol+1)) - scr_str; + int start_line = (find_start(scr_buf, end_line) + scr_str) * (maxcol+1); + + for (int i = 0, done = 0; !done; i++) { + uint64_t tmp = (uint64_t)scr_buf[i]; + for (int j = 0; j < 8; j++ , tmp >>= 8) { + int idx = (i*8) + j; + uint8_t tmp2 = tmp; + if (idx >= cmd_size || !tmp2) { + done = 1; + cmd_buf[idx] = '\0'; + break; + } + cmd_buf[idx] = tmp2; + } + } +} |