diff --git a/src/sbbs3/dosxtrn/dosxtrn.c b/src/sbbs3/dosxtrn/dosxtrn.c index 89f13d41be7da339fe9b5618dd6f835120657fe8..ecf73c9bd79bc62aa7fbb06a740693dd3aefaf53 100644 --- a/src/sbbs3/dosxtrn/dosxtrn.c +++ b/src/sbbs3/dosxtrn/dosxtrn.c @@ -45,7 +45,10 @@ #include "execvxd.h" #include "isvbop.h" /* ddk\inc */ #include "fossdefs.h" +#include "../git_branch.h" +#include "../git_hash.h" +#define DOSXTRN_REVISION 26 #define VDD_FILENAME "sbbsexec.dll" /****************************************************************************/ @@ -63,7 +66,6 @@ static void truncsp(char *str) short vdd=0; BYTE node_num=0; int mode=0; -int revision; char id_string[128]; #ifdef DEBUG_INT_CALLS ulong int14calls=0; @@ -215,6 +217,32 @@ WORD PortStatus() #ifdef DEBUG_FOSSIL_CALLS DWORD fossil_calls[0x100]; + +const char* fossil_func(int func) +{ + switch(func) { + case FOSSIL_FUNC_SET_RATE: return "set rate"; + case FOSSIL_FUNC_PUT_CHAR: return "put char"; + case FOSSIL_FUNC_GET_CHAR: return "get char"; + case FOSSIL_FUNC_GET_STATUS: return "get status"; + case FOSSIL_FUNC_INIT: return "init"; + case FOSSIL_FUNC_UNINIT: return "uninit"; + case FOSSIL_FUNC_DTR: return "dtr"; + case FOSSIL_FUNC_GET_TIMER: return "get timer"; + case FOSSIL_FUNC_FLUSH_OUT: return "flush out"; + case FOSSIL_FUNC_PURGE_OUT: return "purge out"; + case FOSSIL_FUNC_PURGE_IN: return "purge in"; + case FOSSIL_FUNC_WRITE_CHAR: return "write char"; + case FOSSIL_FUNC_PEEK: return "peek"; + case FOSSIL_FUNC_GET_KB: return "get kb"; + case FOSSIL_FUNC_GET_KB_WAIT: return "get kb wait"; + case FOSSIL_FUNC_FLOW_CTRL: return "flow_ctrl"; + case FOSSIL_FUNC_CTRL_C: return "ctrl_c"; + case FOSSIL_FUNC_BREAK: return "break"; + case FOSSIL_FUNC_GET_INFO: return "get info"; + default: return "unknown"; + } +} #endif void interrupt winNTint14( @@ -233,7 +261,7 @@ void interrupt winNTint14( fossil_info_t info = { sizeof(info) ,FOSSIL_REVISION - ,revision /* driver revision */ + ,DOSXTRN_REVISION /* driver revision */ ,0 /* ID string pointer */ ,0,0 /* receive buffer size/free (overwritten later) */ ,0,0 /* transmit buffer size/free (overwritten later) */ @@ -345,6 +373,9 @@ void interrupt winNTint14( _fmemcpy(p, &info, wr); _ax=wr; break; + case FOSSIL_FUNC_GET_KB: + _ax=0xffff; + break; } } @@ -482,9 +513,7 @@ int main(int argc, char **argv) WORD buf_seg; WORD w; - sscanf("$Revision: 1.25 $", "%*s 1.%u", &revision); - - sprintf(id_string,"Synchronet FOSSIL Driver (DOSXTRN) revision %u", revision); + sprintf(id_string,"Synchronet FOSSIL Driver (DOSXTRN) revision %u %s/%s", DOSXTRN_REVISION, GIT_BRANCH, GIT_HASH); if(argc<2) { fprintf(stderr ,"%s - Copyright %s Rob Swindell\n" @@ -590,7 +619,7 @@ int main(int argc, char **argv) vdd_str(VDD_LOAD_INI_SECTION, getfname(arg[0])); - sprintf(str,"%s, rev %u, %s %s", __FILE__, revision, __DATE__, __TIME__); + sprintf(str,"%s, rev %u, %s %s mode=%u", __FILE__, DOSXTRN_REVISION, __DATE__, __TIME__, mode); vdd_str(VDD_DEBUG_OUTPUT, str); i=vdd_op(VDD_OPEN); @@ -642,10 +671,10 @@ int main(int argc, char **argv) vdd_str(VDD_DEBUG_OUTPUT, str); #ifdef DEBUG_INT_CALLS - sprintf(str,"int14h calls: %u", int14calls); vdd_str(VDD_DEBUG_OUTPUT, str); - sprintf(str,"int16h calls: %u", int16calls); vdd_str(VDD_DEBUG_OUTPUT, str); - sprintf(str,"int21h calls: %u", int21calls); vdd_str(VDD_DEBUG_OUTPUT, str); - sprintf(str,"int29h calls: %u", int29calls); vdd_str(VDD_DEBUG_OUTPUT, str); + sprintf(str,"int14h calls: %lu", int14calls); vdd_str(VDD_DEBUG_OUTPUT, str); + sprintf(str,"int16h calls: %lu", int16calls); vdd_str(VDD_DEBUG_OUTPUT, str); + sprintf(str,"int21h calls: %lu", int21calls); vdd_str(VDD_DEBUG_OUTPUT, str); + sprintf(str,"int29h calls: %lu", int29calls); vdd_str(VDD_DEBUG_OUTPUT, str); #endif #ifdef DEBUG_DOS_CALLS for(i=0;i<0x100;i++) { @@ -659,9 +688,10 @@ int main(int argc, char **argv) #ifdef DEBUG_FOSSIL_CALLS for(i=0;i<0x100;i++) { if(fossil_calls[i]>0) { - sprintf(str,"int14h function %02X calls: %u" - ,i, fossil_calls[i]); - vdd_str(VDD_DEBUG_OUTPUT, str); } + sprintf(str,"int14h function %02X (%-10s) calls: %lu" + ,i, fossil_func(i), fossil_calls[i]); + vdd_str(VDD_DEBUG_OUTPUT, str); + } } #endif