hgr-utils: shape_table: add support for printing hex values

This commit is contained in:
Vince Weaver 2020-05-28 15:00:33 -04:00
parent 0bd8330cff
commit 91b603ec29

View File

@ -91,6 +91,10 @@ static int get_token(char *token, FILE *fff) {
} }
#define OUTPUT_BASIC 0
#define OUTPUT_BINARY 1
#define OUTPUT_HEX 2
int main(int argc, char **argv) { int main(int argc, char **argv) {
char string[BUFSIZ]; char string[BUFSIZ];
@ -102,10 +106,10 @@ int main(int argc, char **argv) {
int command=0,sub_pointer; int command=0,sub_pointer;
int output_binary=0; int output_type=OUTPUT_BASIC;
if (argc<2) { if (argc<2) {
output_binary=0; output_type=OUTPUT_BASIC;
} }
else { else {
if (argv[1][0]=='-') { if (argv[1][0]=='-') {
@ -116,10 +120,13 @@ int main(int argc, char **argv) {
print_usage(argv[0]); print_usage(argv[0]);
break; break;
case 'b': case 'b':
output_binary=1; output_type=OUTPUT_BINARY;
break; break;
case 'a': case 'a':
output_binary=0; output_type=OUTPUT_BASIC;
break;
case 'x':
output_type=OUTPUT_HEX;
break; break;
case 'd': case 'd':
debug=1; debug=1;
@ -267,7 +274,7 @@ int main(int argc, char **argv) {
table_size=current_offset; table_size=current_offset;
if (output_binary) { if (output_type==OUTPUT_BINARY) {
unsigned char header[4]; unsigned char header[4];
int offset=0x6000; int offset=0x6000;
@ -284,7 +291,7 @@ int main(int argc, char **argv) {
fwrite(table,sizeof(unsigned char),table_size,stdout); fwrite(table,sizeof(unsigned char),table_size,stdout);
} }
else { else if (output_type==OUTPUT_BASIC) {
/* put near highmem */ /* put near highmem */
int address=0x1ff0-table_size; int address=0x1ff0-table_size;
@ -306,6 +313,20 @@ int main(int argc, char **argv) {
} }
} }
else if (output_type==OUTPUT_HEX) {
for(i=0;i<current_offset;i++) {
if(i%8==0) printf(".byte\t");
printf("$%02x",table[i]);
if ((i%8==7)||(i==current_offset-1)) printf("\n");
else printf(",");
}
}
else {
fprintf(stderr,"Error, unknown output type %d\n",
output_type);
}
return 0; return 0;
} }