diff --git a/include/c64/charwin.c b/include/c64/charwin.c index eb913f2..64ba4b7 100644 --- a/include/c64/charwin.c +++ b/include/c64/charwin.c @@ -291,6 +291,17 @@ void cwin_put_chars_raw(CharWin * win, const char * chars, char num, char color) } } +char cwin_put_string_raw(CharWin * win, const char * str, char color) +{ + char n = cwin_putat_string_raw(win, win->cx, win->cy, str, color); + win->cx += n; + if (win->cx >= win->wx) + { + win->cx = 0; + win->cy++; + } + return n; +} @@ -342,7 +353,6 @@ char cwin_putat_string(CharWin * win, char x, char y, const char * str, char col #pragma native(cwin_putat_string) - void cwin_putat_char_raw(CharWin * win, char x, char y, char ch, char color) { int offset = mul40[y] + x; @@ -371,6 +381,25 @@ void cwin_putat_chars_raw(CharWin * win, char x, char y, const char * chars, cha #pragma native(cwin_putat_chars_raw) +char cwin_putat_string_raw(CharWin * win, char x, char y, const char * str, char color) +{ + int offset = mul40[y] + x; + + char * sp = win->sp + offset; + char * cp = win->cp + offset; + + char i = 0; + while (char ch = str[i]) + { + sp[i] = ch; + cp[i] = color; + i++; + } + + return i; +} + +#pragma native(cwin_putat_string_raw) char cwin_getat_char(CharWin * win, char x, char y) { diff --git a/include/c64/charwin.h b/include/c64/charwin.h index f554d7c..f59f231 100644 --- a/include/c64/charwin.h +++ b/include/c64/charwin.h @@ -71,6 +71,10 @@ void cwin_put_char_raw(CharWin * win, char ch, char color); // void cwin_put_chars_raw(CharWin * win, const char * chars, char num, char color); +// Put a zero terminated raw string at the cursor location and advance the cursor +// +char cwin_put_string_raw(CharWin * win, const char * str, char color); + // Put a single char at the given window location @@ -94,6 +98,10 @@ void cwin_putat_char_raw(CharWin * win, char x, char y, char ch, char color); // void cwin_putat_chars_raw(CharWin * win, char x, char y, const char * chars, char num, char color); +// Put a zero terminated string at the given window location +// +char cwin_putat_string_raw(CharWin * win, char x, char y, const char * str, char color); + // Get a single char at the given window location //