Jake-S@cup.portal.com (Jake G Schwartz) (01/05/91)
Hi Guys - Recently I got Jan Brittenson's enormous HP48 symbol table file from Wayne Scott's HP-MAIL-SERVER at wscott@ecn.purdue.edu, and more recently downloaded Derek Nickel's HP48 address list. In comparing these two lists, it was obvious that each contained over a hundred locations different from the other, so I merged the two and sorted the whole thing with respect to increasing addresses. I wonder if anyone else is compiling a similar list based on his/her own research? I know that Rick Grevelle has been doing a lot of additional significant research, and intends to post his list soon as well. Perhaps we all should be POOLING our findings, so a central location could hold perhaps ALL these addresses. Then as new ones are found, the master list could be updated and dozens of people won't have to be reinventing the wheel over and over again. I would certainly be willing to accumulate these lists and repost them somewhere in a combined fashion. Perhaps we also need some common notation so all addresses' functions may be described with similar input and output descriptions. The more we work together, the more we'll accomplish in this task that the HP folks said would be practically impossible last June at the Chicago HP Handheld Users Conference. Keep up the good work, people! Jake Schwartz
ls0@engr.uark.edu (LI SHENG) (01/07/91)
In article <37588@cup.portal.com>, Jake-S@cup.portal.com(Jake G Schwartz)writes: > Hi Guys - > Recently I got Jan Brittenson's enormous HP48 symbol table file from > Wayne Scott's HP-MAIL-SERVER at wscott@ecn.purdue.edu, and more recently > downloaded Derek Nickel's HP48 address list. In comparing these two lists, > it was obvious that each contained over a hundred locations different from > the other, so I merged the two and sorted the whole thing with respect to > increasing addresses. > I wonder if anyone else is compiling a similar list based on his/her > own research? I know that Rick Grevelle has been doing a lot of additional > significant research, and intends to post his list soon as well. Perhaps Here are two programs that enable you to combine two HP48SX RPL address files into one. So now you can add new information into you list whenever it comes up. The first program is called "sorts.c". This program takes a list of RPL addresses sort them and put them in a file with standard format which is required by "combine", the program realy does the combining. To make the program run properly, there must be a delimitor between the RPL number and the comment for it. The delimitor can be either "=", ":", or a SPACE. Example: original file "test1" contain : 1c9b8=SIZE 71be:MC: continue RPL 1a5c4 BEEP <EOF> run the program : %sorts <test1 >test2 The results will be put in the file "test2". "test2" will have : 071BC MC: continue RPL 1A5C4 BEEP 1C9B8 SIZE <EOF> After you got the sorted file, run the program combine to combine two files together. The command format looks like : %combine file1 file2 file3 where : file1 = input file name #1 file2 = input file name #2 file3 = outfile name The program will take the information from "file1" and "file2" put them into file3. If the are two number that are the same, the comment from "file1" will be put into the output file. Example: "file1" contain : 00000 file1 line1 02222 file1 line2 03333 file1 line3 "file2" contain : 01111 file2 line1 02222 file2 line2 04444 file2 line3 After running "combine": "file3" contain : 00000 file1 line1 01111 file2 line1 02222 file1 line2 03333 file1 line3 04444 file2 line3 For DOS users : I did not try these programs on a PC. But I don't think there would be any trouble to run "combine". But "sorts" needs alot of memory; I suspect it will run. Try to compile with huge model. Before compile these programs on PC, add #include <string.h> after #include <stdio.h>. If you have any problems, don't hesitate to ask me. Email me at : ls0@engr.uark.edu Li Sheng --------------------- sorts.c Start --------------------------------- /************************************************************/ /* */ /* Program : sorts.c */ /* Programer : Li Sheng */ /* ls0@engr.uark.edu */ /* Date : 1-7-1991 */ /************************************************************/ #include <stdio.h> /* delete the comment mark when compile on a P #include <string.h> */ #define STRINGLEN 80 #define MAX_NUM 4000 struct { char fname[STRINGLEN+1]; int file_len; } fnames[MAX_NUM]; main() { int i, j; int tag[MAX_NUM]; char instr[80]; char *sizeptr, *nameptr; char temp[6]; /* Get the RPL number and comment for it */ for(i=0;(i<MAX_NUM) && gets(instr);i++) { sscanf(instr,"%[^:\=\?\ ]",temp); strcpy(fnames[i].fname, instr+strlen(temp)+1); sscanf(temp,"%x",&fnames[i].file_len); } /* do the sort */ bsort(i, tag); /* print sorted list out on */ for(j=0;j<i;j++) { if(fnames[tag[j]].file_len < 0xf) printf("0000"); else if(fnames[tag[j]].file_len < 0xff) printf("000"); else if(fnames[tag[j]].file_len <0xfff) printf("00"); else if(fnames[tag[j]].file_len < 0xffff) printf("0"); printf("%hX %s\n",fnames[tag[j]].file_len, fnames[tag[j]].fname); } } /*********************************************************************/ /* The following function does a indexed bubble sort */ /*********************************************************************/ bsort(entries, tag) int entries, tag[MAX_NUM]; { int swapped=1, i, hold; for(i=0;i<MAX_NUM;i++) tag[i] = i; while(swapped) /* do the loop until no elements are swapped */ { swapped = 0; for(i=0;i<entries-1;i++) if(fnames[tag[i]].file_len > fnames[tag[i+1]].file_len) { swapped = 1; hold = tag[i]; tag[i] = tag[i+1]; tag[i+1] = hold; } } } -------------------- sorts.c END -------------------------------- -------------------- combine.c Start -------------------------------- /************************************************************/ /* */ /* Program : combine.c */ /* By : Li Sheng */ /* ls0@engr.uark.edu */ /* Date : 1-7-1991 */ /************************************************************/ #include <stdio.h> /* delete the comment marks if compiled on PC #include <string.h> */ main(argc, argv) char **argv; { FILE *infile[2], *outfile; int i; char temp[6]; int file_flag; char in_string[2][80]; int item_id[2]; if(argc != 4) { printf("ERROR!!!!!\n"); printf("Format: combine in_file1 in_file2 outfile\n"); exit(); } infile[0]=fopen(argv[1],"r"); infile[1]=fopen(argv[2],"r"); outfile=fopen(argv[3],"w"); if((infile[0]==NULL)||(infile[1]==NULL)) { printf("File not exist\n"); exit(); } /* set up */ file_flag = 1; fgets(in_string[0],100,infile[0]); sscanf(in_string[0],"%x",&item_id[0]); /* do the combining */ while(fgets(in_string[file_flag],100,infile[file_flag])) { sscanf(in_string[file_flag],"%x",&item_id[file_flag]); if(item_id[0] == item_id[1]) { fputs(in_string[0],outfile); fgets(in_string[1],100,infile[1]); sscanf(in_string[1],"%x",&item_id[1]); file_flag = 0; } else if(item_id[0] < item_id[1]) { fputs(in_string[0],outfile); file_flag = 0; } else { fputs(in_string[1],outfile); file_flag = 1; } } /* file_flag points to the remaining file */ if(file_flag == 0) file_flag = 1; else file_flag = 0; do { fputs(in_string[file_flag],outfile); } while(fgets(in_string[file_flag],100,infile[file_flag])); fclose(infile[0]); fclose(infile[1]); fclose(outfile); } ------------------- combine.c END -------------------------