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 */