|
|
1.1 ! root 1: #include <stdio.h> ! 2: #include <signal.h> ! 3: #include "pico.h" ! 4: ! 5: extern short CUROLD, CURSCRATCH; ! 6: extern struct SRC src[MANY]; ! 7: extern char linenumber; ! 8: extern FILE *INPUT; ! 9: extern int nsrc; ! 10: extern int DEF_LL, DEF_NL; ! 11: ! 12: Usage(s) ! 13: char *s; ! 14: { ! 15: if (strlen(s) > 0) ! 16: fprintf(stderr, "pico: %s\n", s); ! 17: fprintf(stderr, "usage: pico -fto -m[0-9] -wN -hN [filenames]\n"); ! 18: fprintf(stderr, "\t-f open framebuffer display (kwee)\n"); ! 19: fprintf(stderr, "\t-m[012..] open metheus display /dev/om[012..]\n"); ! 20: fprintf(stderr, "\t-t show parse trees\n"); ! 21: fprintf(stderr, "\t-o turn off optimizer\n"); ! 22: fprintf(stderr, "\t-wN set width work buffer to N pel\n"); ! 23: fprintf(stderr, "\t-hN set depth work buffer to N pel\n"); ! 24: exit(1); ! 25: } ! 26: ! 27: whatarray(inname) ! 28: char *inname; ! 29: { ! 30: int i, j, k; ! 31: ! 32: j = findbase(inname); ! 33: for (i = 2; i < nsrc; i++) ! 34: { k = findbase(src[i].fname); ! 35: if (strcmp(&inname[j], &src[i].fname[k]) == 0) ! 36: return i; ! 37: } ! 38: return -1; ! 39: } ! 40: ! 41: findbase(inname) ! 42: char *inname; ! 43: { ! 44: int i = strlen(inname)+1; ! 45: ! 46: while (--i > 0) ! 47: if (inname[i] == '/') ! 48: return i+1; ! 49: return 0; ! 50: } ! 51: ! 52: wsize(a,b,c,d) { fprintf(stderr, "(%d,%d,%d,%d)\n", a,b,c,d); } ! 53: ! 54: files() ! 55: { int i; ! 56: ! 57: fprintf(stderr, "$0:\told\t"); ! 58: fprintf(stderr, "%s\t\t", (src[CUROLD].nchan >= 3)?"color" : "b&w "); ! 59: fprintf(stderr, "%s\t", (src[CUROLD].incore==2)?"resident" : "absent "); ! 60: wsize(src[CUROLD].sx, src[CUROLD].sy, src[CUROLD].ex, src[CUROLD].ey); ! 61: if (nsrc==2) fprintf(stderr, "no files open\n"); ! 62: for (i = 2; i < nsrc; i++) ! 63: { fprintf(stderr, "$%d:\t%s\t", i-1, src[i].fname); ! 64: if (strcmp(src[i].fname, " empty") == 0) ! 65: { fprintf(stderr, "\n"); ! 66: continue; ! 67: } ! 68: fprintf(stderr, "%s ", (src[i].nchan >= 3)?"color":"b&w "); ! 69: fprintf(stderr, "%s ", (src[i].incore==2)? "resident":"absent "); ! 70: fprintf(stderr, "xo %d yo %d ", src[i].ox, src[i].oy); ! 71: fprintf(stderr, "ll %d nl %d ", src[i].ll, src[i].nl); ! 72: wsize(src[i].sx, src[i].sy, src[i].ex, src[i].ey); ! 73: } ! 74: } ! 75: ! 76: char * ! 77: Emalloc(N) ! 78: unsigned N; ! 79: { ! 80: char *try, *malloc(); ! 81: if ((try = malloc(N)) == NULL) ! 82: whoops("out of memory"); ! 83: return try; ! 84: } ! 85: ! 86: whoops(s) ! 87: char *s; ! 88: { ! 89: fprintf(stderr, "pico: fatal error `%s'\n", s); ! 90: exit(1); ! 91: } ! 92: ! 93: append(n, m, k, l, s) ! 94: char *s; ! 95: { int i, reopened=0; ! 96: ! 97: if ((i = whatarray(s)) >= 2 && strcmp(s, src[i].fname) == 0) ! 98: { lseek(src[i].fd, src[i].sop, 0); ! 99: reopened = 1; ! 100: } else ! 101: i = prepare(s); ! 102: ! 103: if (i < 2) return 0; ! 104: ! 105: src[i].ox = src[i].oy = 0; ! 106: if (n > 0) ! 107: { src[i].sx = src[i].sx - n; ! 108: if (src[i].sx < 0) ! 109: { src[i].ox = min(src[i].ll, -src[i].sx); ! 110: src[i].sx = 0; ! 111: } ! 112: } else src[i].sx = min(DEF_LL, src[i].sx - n); ! 113: ! 114: if (m > 0) ! 115: { src[i].sy = src[i].sy - m; ! 116: if (src[i].sy < 0) ! 117: { src[i].oy = min(src[i].nl, -src[i].sy); ! 118: src[i].sy = 0; ! 119: } ! 120: } else src[i].sy = min(DEF_LL, src[i].sy - m); ! 121: ! 122: if (k > 0) src[i].ll = k; ! 123: if (l > 0) src[i].nl = l; ! 124: ! 125: src[i].ex = min(DEF_LL, src[i].sx + src[i].ll - src[i].ox); ! 126: src[i].ey = min(DEF_NL, src[i].sy + src[i].nl - src[i].oy); ! 127: ! 128: if (reopened && src[i].incore==2) ! 129: src[i].incore = 1; ! 130: ! 131: return i; ! 132: } ! 133: ! 134: setwindow(a, b, c, d) ! 135: { ! 136: int e = min(DEF_LL, a+c); ! 137: int f = min(DEF_NL, b+d); ! 138: ! 139: (Old)->sx = (Scratch)->sx = a; ! 140: (Old)->sy = (Scratch)->sy = b; ! 141: (Old)->ex = (Scratch)->ex = e; ! 142: (Old)->ey = (Scratch)->ey = f; ! 143: setmid(); ! 144: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.