summaryrefslogtreecommitdiff
path: root/programs/sub-suite/shift_line.c
diff options
context:
space:
mode:
Diffstat (limited to 'programs/sub-suite/shift_line.c')
-rw-r--r--programs/sub-suite/shift_line.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/programs/sub-suite/shift_line.c b/programs/sub-suite/shift_line.c
index 255d21b..365666b 100644
--- a/programs/sub-suite/shift_line.c
+++ b/programs/sub-suite/shift_line.c
@@ -24,6 +24,12 @@ uint8_t bitpos(unsigned int row, uint8_t *mask) {
}
+uint8_t getbit(unsigned int row, unsigned int offset) {
+ uint8_t mask;
+ uint8_t byte = bitpos(row+offset, &mask);
+ return (bitabl[byte] & mask);
+}
+
void setbit(unsigned int row) {
uint8_t mask;
uint8_t byte = bitpos(row, &mask);
@@ -48,7 +54,7 @@ void shift_line(char *str, int cursor, int left) {
if (left) {
int i = end-1;
int j = end;
- for (; i > cursor; i--, j--) {
+ for (; i >= cursor; i--, j--) {
if (i < 0) {
i = 0;
str[i] = 0;
@@ -72,7 +78,7 @@ void shift_line(char *str, int cursor, int left) {
str[i] = 0;
}
end = find_end(str, i);
- if ((end % maxcol) == 0 && (end/maxcol) > scr_row) {
+ if (((end-1) % maxcol) == 0 && ((end-1)/maxcol) > scr_row) {
clrbit(end/maxcol);
}
}