diff --git a/src/conio/cterm.c b/src/conio/cterm.c
index c463386094edac9daed54e9e90dde24045510dcf..fa45a1fd6e140b553c12d3589b3fe9b0e343cded 100644
--- a/src/conio/cterm.c
+++ b/src/conio/cterm.c
@@ -870,7 +870,7 @@ void cterm_init(int height, int width, int xpos, int ypos, int backlines, unsign
 	cterm.backpos=0;
 	cterm.backlines=backlines;
 	cterm.scrollback=scrollback;
-	cterm.log=LOG_NONE;
+	cterm.log=CTERM_LOG_NONE;
 	cterm.logfile=NULL;
 	if(cterm.scrollback!=NULL)
 		memset(cterm.scrollback,0,cterm.width*2*cterm.backlines);
@@ -895,7 +895,7 @@ void ctputs(char *buf)
 	_wscroll=0;
 	cx=wherex();
 	cy=wherey();
-	if(cterm.log==LOG_ASCII)
+	if(cterm.log==CTERM_LOG_ASCII)
 		fputs(buf, cterm.logfile);
 	for(p=buf;*p;p++) {
 		switch(*p) {
@@ -991,7 +991,7 @@ char *cterm_write(unsigned char *buf, int buflen, char *retbuf, int retsize, int
 		case 0:
 			break;
 		default:
-			if(cterm.log==LOG_RAW)
+			if(cterm.log==CTERM_LOG_RAW)
 				fwrite(buf, buflen, 1, cterm.logfile);
 			prn[0]=0;
 			for(j=0;j<buflen;j++) {
@@ -1023,6 +1023,8 @@ char *cterm_write(unsigned char *buf, int buflen, char *retbuf, int retsize, int
 						case 7:			/* Beep */
 							ctputs(prn);
 							prn[0]=0;
+							if(cterm.log==CTERM_LOG_ASCII)
+								fputs("\t", cterm.logfile);
 							#ifdef __unix__
 								putch(7);
 							#else
@@ -1032,6 +1034,8 @@ char *cterm_write(unsigned char *buf, int buflen, char *retbuf, int retsize, int
 						case 12:		/* ^L - Clear screen */
 							ctputs(prn);
 							prn[0]=0;
+							if(cterm.log==CTERM_LOG_ASCII)
+								fputs("\t", cterm.logfile);
 							clearscreen(cterm.attr);
 							gotoxy(1,1);
 							break;
@@ -1043,6 +1047,8 @@ char *cterm_write(unsigned char *buf, int buflen, char *retbuf, int retsize, int
 						case '\t':
 							ctputs(prn);
 							prn[0]=0;
+							if(cterm.log==CTERM_LOG_ASCII)
+								fputs("\t", cterm.logfile);
 							for(k=0;k<11;k++) {
 								if(cterm_tabs[k]>wherex()) {
 									gotoxy(cterm_tabs[k],wherey());
@@ -1072,7 +1078,24 @@ char *cterm_write(unsigned char *buf, int buflen, char *retbuf, int retsize, int
 	return(retbuf);
 }
 
+int cterm_openlog(char *logfile, int logtype)
+{
+	cterm.logfile=fopen(logfile, "a");
+	if(cterm.logfile==NULL)
+		return(0);
+	cterm.log=logtype;
+	return(1);
+}
+
+void cterm_closelog()
+{
+	if(cterm.logfile != NULL)
+		fclose(cterm.logfile);
+	cterm.logfile=NULL;
+	cterm.log=CTERM_LOG_NONE;
+}
+
 void cterm_end(void)
 {
-	/* Nothing to be done here at the moment */
+	cterm_closelog();
 }
diff --git a/src/conio/cterm.h b/src/conio/cterm.h
index 61cf760ec69ae2f3920fe16fdf5d08cc1834f87e..c6d3d67accd0873f0876ae004406dfa36dcdd033 100644
--- a/src/conio/cterm.h
+++ b/src/conio/cterm.h
@@ -43,11 +43,14 @@ enum {
 };
 
 enum {
-	 LOG_NONE
-	,LOG_ASCII
-	,LOG_RAW
+	 CTERM_LOG_NONE
+	,CTERM_LOG_ASCII
+	,CTERM_LOG_RAW
 };
 
+#define CTERM_LOG_MASK	0x7f
+#define CTERM_LOG_PAUSED	0x80
+
 struct cterminal {
 	int	height;
 	int	width;
@@ -83,6 +86,8 @@ extern struct cterminal cterm;
 
 void cterm_init(int height, int width, int xpos, int ypos, int backlines, unsigned char *scrollback);
 char *cterm_write(unsigned char *buf, int buflen, char *retbuf, int retsize, int *speed);
+int cterm_openlog(char *logfile, int logtype);
+void cterm_closelog();
 void cterm_end(void);
 #ifdef __cplusplus
 }