summaryrefslogtreecommitdiff
path: root/programs/sub-suite/tmp-stuff/cmd_cpy.c
diff options
context:
space:
mode:
Diffstat (limited to 'programs/sub-suite/tmp-stuff/cmd_cpy.c')
-rw-r--r--programs/sub-suite/tmp-stuff/cmd_cpy.c33
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;
+ }
+ }
+}