4 LABELTAB *labels[LABELTABSIZE];
7 WORD getlabel(const char *prog, const char *label)
11 for(np = labels[hash(label, LABELTABSIZE)]; np != NULL; np = np->next) {
12 if(strcmp(label, np->label) == 0) {
20 bool addlabel(const char *prog, const char *label, WORD adr)
25 if(getlabel(prog, label) != 0xFFFF) {
26 setcerr(101, label); /* label already defined */
29 np = (LABELTAB *) malloc(sizeof(*np));
30 if(np == NULL || (np->label = strdup(label)) == NULL ||
31 (prog != NULL && (np->prog = strdup(prog)) == NULL))
33 setcerr(102, NULL); /* label table is full */
36 hashval = hash(label, LABELTABSIZE);
37 np->next = labels[hashval];
48 for(i = 0; i < LABELTABSIZE; i++) {
49 for(np = labels[i]; np != NULL; np = np->next) {
50 if(np->prog == NULL) {
51 fprintf(stdout, "%s ---> #%04X\n", np->label, np->adr);
53 fprintf(stdout, "%s.%s ---> #%04X\n", np->prog, np->label, np->adr);
64 for(i = 0; i < LABELTABSIZE; i++) {
65 for(np = labels[i]; np != NULL; np = nq){