#define EQ(A,B) !strcmp((A),(B))
#define MEMSIZE 0x10000
-#define DODUMP 1
+//#define DODUMP 1
typedef struct
{
int numlinenum=0;
_linenum * linenum=NULL;
-
+#if 0
typedef struct
{
char * name;
{
{"CSEG", 0},
{"GSINIT", 0},
+ {"GSINIT0", 0},
+ {"GSINIT1", 0},
+ {"GSINIT2", 0},
+ {"GSINIT3", 0},
+ {"GSINIT4", 0},
+ {"GSINIT5", 0},
{"GSFINAL", 0},
{"HOME", 0},
{"XINIT", 0},
{"BSEG", 4},
{"", 5} /*A typeless number?*/
};
-
+#endif
char * UsageTypeName[]={"CODE", "XDATA", "DATA", "IDATA", "BIT", "NUMBER"};
int AddNumber;
unsigned char * ihxBuff=NULL;
/*Content Record*/
OutputByte(0x06);/*REC TYPE*/
+ if(procedure[k].EndAdd==-1) procedure[k].EndAdd=HexSize;
recsize=procedure[k].EndAdd-procedure[k].BeginAdd+1+4;
OutputWord(recsize);/*Record Length*/
OutputByte(0x00);/*SEG ID*/
{
case 'C': /*Code*/
case 'D': /*Code/static segment*/
+ case 'Z': /*Functions and undefined code space*/
symbol[numsym].UsageType=0x40;
break;
break;
default:
- printf("Name: %s, AddressSpace:%c\n", symbol[numsym].name, AddressSpace);
+ printf("Unknown scope information for: %s, AddressSpace:%c\n", symbol[numsym].name, AddressSpace);
break;
}
numsym++;
symbol[numsym].UsageType=0x00;/*A procedure name symbol*/
symbol[numsym].Procedure=-1; /*Global symbol*/
symbol[numsym].Address=-1;/*Collected later*/
+ symbol[numsym].Static=-1; // o_gloom
numsym++;
}
break;
fclose(CDBin);
}
-int hex2dec (char hex_digit)
+int hex2dec (unsigned char hex_digit)
{
- int j;
- j=toupper(hex_digit)-'0';
- if (j>9) j -= 7;
- return j;
+ if (isdigit (hex_digit))
+ return hex_digit-'0';
+ else
+ return toupper (hex_digit)-'A'+10;
}
unsigned char GetByte(char * buffer)