diff --git a/src/sbbs3/dosxtrn/dosxtrn.c b/src/sbbs3/dosxtrn/dosxtrn.c
index bf5c587dda05ab9a87ae5ba081afabd118791cb0..83843fdfa3790aa108cfa29aca8600d17be986c8 100644
--- a/src/sbbs3/dosxtrn/dosxtrn.c
+++ b/src/sbbs3/dosxtrn/dosxtrn.c
@@ -62,6 +62,7 @@ short	vdd=0;
 BYTE	node_num=0;
 int		mode=0;
 DWORD	nodata=0;
+DWORD	polls_before_yield=10;
 
 void (interrupt *oldint14)();
 void (interrupt *oldint16)();
@@ -212,8 +213,6 @@ WORD PortStatus()
 	return(status);
 }
 
-#define POLLS_BEFORE_YIELD	10
-
 void interrupt winNTint14(
 	unsigned _es, unsigned _ds,
 	unsigned _di, unsigned _si,
@@ -270,7 +269,7 @@ void interrupt winNTint14(
 			break;
 		case 0x03:	/* request status */
 			_ax=PortStatus();
-			if(_ax==0x6088 && ++nodata>=POLLS_BEFORE_YIELD)
+			if(_ax==0x6088 && ++nodata>=polls_before_yield)
 				vdd_op(VDD_YIELD);
 			break;
 		case 0x04:	/* initialize */
@@ -328,7 +327,7 @@ void interrupt winNTint14(
 			info.outbuf_free=info.outbuf_size-vdd_status.outbuf_full;
 
 			if(vdd_status.inbuf_full==vdd_status.outbuf_full==0 
-				&& ++nodata>=POLLS_BEFORE_YIELD)
+				&& ++nodata>=polls_before_yield)
 				vdd_op(VDD_YIELD);			
 
 			p = _MK_FP(_es,_di);
@@ -365,7 +364,7 @@ void interrupt winNTint16(
 				nodata=0;
 				return;
 			} 
-			if(++nodata>=POLLS_BEFORE_YIELD)
+			if(++nodata>=polls_before_yield)
 				vdd_op(VDD_YIELD);
 			break;
     	case 0x01:	// Get keyboard status
@@ -378,7 +377,7 @@ void interrupt winNTint16(
 				nodata=0;
 				return;
 			}
-			if(++nodata>=POLLS_BEFORE_YIELD)
+			if(++nodata>=polls_before_yield)
 				vdd_op(VDD_YIELD);
 	        break;
 	}
@@ -440,6 +439,8 @@ int main(int argc, char **argv)
 		node_num=atoi(argv[3]);
 	if(argc>4)
 		mode=atoi(argv[4]);
+	if(argc>5)
+		polls_before_yield=atol(argv[5]);
 
 	if((fp=fopen(argv[1],"r"))==NULL) {
 		fprintf(stderr,"!Error opening %s\n",argv[1]);