summaryrefslogtreecommitdiff
path: root/programs/sub-suite/tmp-stuff/cmd_cpy.c
blob: 6b89e7d9aee272e91dc6ae90a49745b0155d1c66 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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;
		}
	}
}