00001
00014 #include "contributors.h"
00015 #include "global.h"
00016 #include "mbuffer.h"
00017
00029 void error(char *text, int code)
00030 {
00031 fprintf(stderr, "%s\n", text);
00032 flush_dpb();
00033 exit(code);
00034 }
00035
00036 #if TRACE
00037
00038 static int bitcounter = 0;
00039
00046 void dectracebitcnt(int count)
00047 {
00048 bitcounter -= count;
00049 }
00050
00058 void tracebits(
00059 const char *trace_str,
00060 int len,
00061 int info,
00062 int value1)
00063 {
00064 int i, chars;
00065
00066
00067 if(len>=64)
00068 {
00069 snprintf(errortext, ET_SIZE, "Length argument to put too long for trace to work");
00070 error (errortext, 600);
00071 }
00072
00073 putc('@', p_trace);
00074 chars = fprintf(p_trace, "%i", bitcounter);
00075 while(chars++ < 5)
00076 putc(' ',p_trace);
00077
00078 chars += fprintf(p_trace, " %s", trace_str);
00079 while(chars++ < 55)
00080 putc(' ',p_trace);
00081
00082
00083 if(len<15)
00084 {
00085 for(i=0 ; i<15-len ; i++)
00086 fputc(' ', p_trace);
00087 }
00088
00089
00090 for(i=0 ; i<len/2 ; i++)
00091 {
00092 fputc('0', p_trace);
00093 }
00094
00095 fprintf(p_trace, "1");
00096
00097
00098 for(i=0 ; i<len/2 ; i++)
00099 {
00100 if (0x01 & ( info >> ((len/2-i)-1)))
00101 fputc('1', p_trace);
00102 else
00103 fputc('0', p_trace);
00104 }
00105
00106 fprintf(p_trace, " (%3d) \n", value1);
00107 bitcounter += len;
00108
00109 fflush (p_trace);
00110 }
00111
00118 void tracebits2(
00119 const char *trace_str,
00120 int len,
00121 int info)
00122 {
00123
00124 int i, chars;
00125
00126
00127 if(len>=64)
00128 {
00129 snprintf(errortext, ET_SIZE, "Length argument to put too long for trace to work");
00130 error (errortext, 600);
00131 }
00132
00133 putc('@', p_trace);
00134 chars = fprintf(p_trace, "%i", bitcounter);
00135
00136 while(chars++ < 5)
00137 putc(' ',p_trace);
00138
00139 chars += fprintf(p_trace, " %s", trace_str);
00140
00141 while(chars++ < 55)
00142 putc(' ',p_trace);
00143
00144
00145 if(len < 15)
00146 {
00147 for(i = 0; i < 15 - len; i++)
00148 fputc(' ', p_trace);
00149 }
00150
00151 bitcounter += len;
00152 while (len >= 32)
00153 {
00154 for(i = 0; i < 8; i++)
00155 {
00156 fputc('0', p_trace);
00157 }
00158 len -= 8;
00159 }
00160
00161
00162 for(i=0 ; i<len ; i++)
00163 {
00164 if (0x01 & ( info >> (len-i-1)))
00165 fputc('1', p_trace);
00166 else
00167 fputc('0', p_trace);
00168 }
00169
00170 fprintf(p_trace, " (%3d) \n", info);
00171
00172 fflush (p_trace);
00173 }
00174 #endif
00175