diff --git a/src/sbbs3/dosxtrn/dosxtrn.c b/src/sbbs3/dosxtrn/dosxtrn.c
index bd5ddc3b1d97a7f00961b659a2ca5923b67572b4..7eef071384c405ef84e1dbeb41d2b51c7b7b232b 100644
--- a/src/sbbs3/dosxtrn/dosxtrn.c
+++ b/src/sbbs3/dosxtrn/dosxtrn.c
@@ -147,6 +147,7 @@ void vdd_getstatus(vdd_status_t* status)
 		memset(status,0,sizeof(vdd_status_t));
 }
 
+#define HAPPY_PORT_STATUS FOSSIL_MDM_STATUS_DCD_CHNG | FOSSIL_MDM_STATUS_DCD | FOSSIL_MDM_STATUS_CTS | FOSSIL_LINE_STATUS_THRE | FOSSIL_LINE_STATUS_TSRE
 WORD PortStatus()
 {
 	WORD			status=FOSSIL_MDM_STATUS_DCD_CHNG; /* AL bit 3 (change in DCD) always set */
@@ -170,6 +171,9 @@ WORD PortStatus()
 	if(!vdd_status.outbuf_full)		/* output buffer is empty */
 		status|=FOSSIL_LINE_STATUS_TSRE;
 
+	if(vdd_status.outbuf_full < vdd_status.outbuf_size)
+		status|=FOSSIL_MDM_STATUS_CTS;
+
 	return(status);
 }
 
@@ -263,7 +267,7 @@ void interrupt winNTint14(
 			break;
 		case FOSSIL_FUNC_GET_STATUS:	/* request status */
 			_ax=PortStatus();
-			if(_ax == FOSSIL_MDM_STATUS_DCD_CHNG | FOSSIL_MDM_STATUS_DCD | FOSSIL_LINE_STATUS_THRE | FOSSIL_LINE_STATUS_TSRE)
+			if(_ax == HAPPY_PORT_STATUS)
 				vdd_op(VDD_MAYBE_YIELD);
 			break;
 		case FOSSIL_FUNC_INIT:	/* initialize */