Skip to content
Snippets Groups Projects
Commit 05fbe5b8 authored by deuce's avatar deuce
Browse files

Add support for DoorWay mode.

parent c2e0d260
Branches
Tags
No related merge requests found
......@@ -914,10 +914,14 @@ void do_ansi(char *retbuf, size_t retsize, int *speed)
case 'g': /* ToDo? VT100 Tabs */
break;
case 'h': /* ToDo? Scrolling regeion, word-wrap, doorway mode */
if(!strcmp(cterm.escbuf,"[=255h"))
cterm.doorway_mode=1;
break;
case 'i': /* ToDo? Printing */
break;
case 'l': /* ToDo? Scrolling regeion, word-wrap, doorway mode */
if(!strcmp(cterm.escbuf,"[=255l"))
cterm.doorway_mode=0;
break;
case 'm':
*(p--)=0;
......@@ -1882,47 +1886,68 @@ char *cterm_write(unsigned char *buf, int buflen, char *retbuf, size_t retsize,
}
}
else { /* ANSI-BBS */
switch(buf[j]) {
case 0:
break;
case 7: /* Beep */
ctputs(prn);
prn[0]=0;
if(cterm.log==CTERM_LOG_ASCII && cterm.logfile != NULL)
fputs("\x07", cterm.logfile);
#ifdef __unix__
putch(7);
#else
MessageBeep(MB_OK);
#endif
break;
case 12: /* ^L - Clear screen */
ctputs(prn);
prn[0]=0;
if(cterm.log==CTERM_LOG_ASCII && cterm.logfile != NULL)
fputs("\x0c", cterm.logfile);
clearscreen((char)cterm.attr);
gotoxy(1,1);
break;
case 27: /* ESC */
ctputs(prn);
prn[0]=0;
cterm.sequence=1;
break;
case '\t':
ctputs(prn);
prn[0]=0;
if(cterm.log==CTERM_LOG_ASCII && cterm.logfile != NULL)
fputs("\t", cterm.logfile);
for(k=0;k<11;k++) {
if(cterm_tabs[k]>wherex()) {
gotoxy(cterm_tabs[k],wherey());
break;
}
if(cterm.doorway_char) {
ctputs(prn);
ch[1]=cterm.attr;
puttext(cterm.x+wherex()-1,cterm.y+wherey()-1,cterm.x+wherex()-1,cterm.y+wherey()-1,ch);
ch[1]=0;
if(wherex()==cterm.width) {
if(wherey()==cterm.height) {
scrollup();
gotoxy(1,wherey());
}
break;
default:
strcat(prn,ch);
else
gotoxy(1,wherey()+1);
}
else
gotoxy(wherex()+1,wherey());
cterm.doorway_char=0;
}
else {
switch(buf[j]) {
case 0:
if(cterm.doorway_mode)
cterm.doorway_char=1;
break;
case 7: /* Beep */
ctputs(prn);
prn[0]=0;
if(cterm.log==CTERM_LOG_ASCII && cterm.logfile != NULL)
fputs("\x07", cterm.logfile);
#ifdef __unix__
putch(7);
#else
MessageBeep(MB_OK);
#endif
break;
case 12: /* ^L - Clear screen */
ctputs(prn);
prn[0]=0;
if(cterm.log==CTERM_LOG_ASCII && cterm.logfile != NULL)
fputs("\x0c", cterm.logfile);
clearscreen((char)cterm.attr);
gotoxy(1,1);
break;
case 27: /* ESC */
ctputs(prn);
prn[0]=0;
cterm.sequence=1;
break;
case '\t':
ctputs(prn);
prn[0]=0;
if(cterm.log==CTERM_LOG_ASCII && cterm.logfile != NULL)
fputs("\t", cterm.logfile);
for(k=0;k<11;k++) {
if(cterm_tabs[k]>wherex()) {
gotoxy(cterm_tabs[k],wherey());
break;
}
}
break;
default:
strcat(prn,ch);
}
}
}
}
......
......@@ -85,6 +85,8 @@ struct cterminal {
int font_size;
int font_read;
int font_start_time;
int doorway_mode;
int doorway_char;
};
#define CTERM_MUSIC_SYNCTERM 0
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment