diff --git a/graphics/dhgr_viewer/Makefile b/graphics/dhgr_viewer/Makefile new file mode 100644 index 00000000..dacc899a --- /dev/null +++ b/graphics/dhgr_viewer/Makefile @@ -0,0 +1,31 @@ +include ../../Makefile.inc + +DOS33 = ../../utils/dos33fs-utils/dos33 +B2D = ../../utils/bmp2dhr/b2d +PNG_TO_40x96 = ../../utils/gr-utils/png_to_40x96 +PNG_TO_RLE = ../../utils/gr-utils/png2rle +EMPTY_DISK = ../../empty_disk/empty.dsk +TOKENIZE = ../../utils/asoft_basic-utils/tokenize_asoft + +all: make_dhgr_viewer + + +### + +make_dhgr_viewer: make_dhgr_viewer.o + $(CC) $(LFLAGS) -o make_dhgr_viewer make_dhgr_viewer.o + +make_dhgr_viewer.o: make_dhgr_viewer.c + $(CC) $(CFLAGS) -c make_dhgr_viewer.c + +### + +HELLO: hello.bas + $(TOKENIZE) < hello.bas > HELLO + +### + + +clean: + rm -f *~ *.o *.lst HELLO make_dhgr_viewer + diff --git a/graphics/dhgr_viewer/make_dhgr_viewer.c b/graphics/dhgr_viewer/make_dhgr_viewer.c new file mode 100644 index 00000000..674cda9b --- /dev/null +++ b/graphics/dhgr_viewer/make_dhgr_viewer.c @@ -0,0 +1,288 @@ +/* TODO: bail if will over-write files */ + + +#include +#include +#include +#include + +#define MAX_FILES 1024 + +static char *png_filenames[MAX_FILES]; +static char *zx02_aux_filenames[MAX_FILES]; +static char *zx02_bin_filenames[MAX_FILES]; +static char *labels[MAX_FILES]; + +/* Format: + +file_label FILE.ZX02 file.png + +*/ + +int main(int argc, char **argv) { + + char *result; + char string[BUFSIZ]; + int num_files=0; + int i,j,count,line=0; + char temp_png[BUFSIZ]; + char temp_zx02[BUFSIZ]; + char temp_label[BUFSIZ]; + char s_filename[BUFSIZ]; + char filename_base[BUFSIZ]; + char temp[BUFSIZ]; + + FILE *sss; + + /******************************************/ + /* parse command line */ + /******************************************/ + + if (argc>1) { + strcpy(filename_base,argv[1]); + } + else { + strcpy(filename_base,"dhires_plain"); + } + sprintf(s_filename,"%s.s",filename_base); + + /******************************************/ + /* scan in data */ + /******************************************/ + + while(1) { + line++; + result=fgets(string,BUFSIZ,stdin); + if (result==NULL) { + break; + } + if (result[0]=='#') continue; + + count=sscanf(string,"%s %s %s",temp_label,temp_zx02,temp_png); + if (count!=3) { + fprintf(stderr,"WARNING! weird input line %d (%d)\n",line,count); + fprintf(stderr,"\t%s",string); + } + else { + labels[num_files]=strdup(temp_label); + png_filenames[num_files]=strdup(temp_png); + + sprintf(temp,"%s.AUX.ZX02",temp_zx02); + zx02_aux_filenames[num_files]=strdup(temp); + + sprintf(temp,"%s.BIN.ZX02",temp_zx02); + zx02_bin_filenames[num_files]=strdup(temp); + + num_files++; + if (num_files>=MAX_FILES) { + fprintf(stderr,"ERROR! Too many files!\n"); + exit(-1); + } + } + } + + if (num_files==0) { + fprintf(stderr,"ERROR! No files found!\n"); + exit(-1); + } + + /******************************************/ + /* generate S file */ + /******************************************/ + + sss=fopen(s_filename,"w"); + if (sss==NULL) { + fprintf(stderr,"ERRROR opening %s\n",s_filename); + exit(-1); + } + + + fprintf(sss,"; Some nice hires images\n\n"); + fprintf(sss,".include \"../dhires_main.s\"\n\n"); + fprintf(sss,"MAX_FILES = %d\n\n",num_files); + + fprintf(sss,"bin_filenames_low:\n"); + for(i=0;i%s_filename_bin\n",labels[i]); + } + fprintf(sss,"\n"); + + fprintf(sss,"aux_filenames_low:\n"); + for(i=0;i%s_filename_aux\n",labels[i]); + } + fprintf(sss,"\n"); + + + fprintf(sss,"; filename to open is 30-character Apple text:\n"); + + for(i=0;i HELLO\n\n"); + + fprintf(sss,"####\n\n"); + + fprintf(sss,"%s.dsk:\tHELLO DHIRES\\\n",filename_base); + for(i=0;i