|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T v
Length: 10819 (0x2a43) Types: TextFile Names: »vcnvrt.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/World/vcnvrt.c«
#include <stdio.h> /* World C Version 1.00 copyright 1987 J.D.McDonald Use as you like for non-commercial purposes, but please leave this note, and document any changes you make as yours */ int three[3], vrbpdo[100], vrbpio[100], vrbobj[100]; int pp1[15], pp2[15], pp3[8]; int obloc[200], obw3[200]; int obw4[200], obpprp[200], obimpr[200]; int dispat[300]; char chrbuf[81]; char astr[2], bstr[2], cstr[3], dstr[7]; char outstr[81], estr[8], fstr[7]; char obnoun[1200], obadjv[1400]; char *nounptr, *adjptr; int pnum, number, i, q, numx, vocdim, nvrbob, vocsz, m, q1; int loxx, loxxx, ppq1, ppq2, zz1, zz2, ttabsz, locat, qq1, qq2; int objmax, movmax, z, wt, size, value, floc, pprp, imprp; int iloc, cval, qqqq, ib; FILE *vocab_dat, *vocab_inc, *parame_inc, *verbtb_inc; FILE *data_dat, *trvtbl_inc, *locdat_inc, *objdat_inc; main() { astr[1] = 0; bstr[1] = 0; cstr[2] = 0; dstr[6] = 0; estr[7] = 0; fstr[6] = 0; obloc[0] = 0; obnoun[0] = 0; obadjv[0] = 0; obw3[0] = 0; obw4[0] = 0; obpprp[0] = 0; obimpr[0] = 0; dispat[0] = 0; vocab_dat = fopen("vocab.dat", "r"); vocab_inc = fopen("vocab.inc", "w"); parame_inc = fopen("parame.inc", "w"); verbtb_inc = fopen("verbtb.inc", "w"); fprintf(parame_inc, "#define ACTMAX 1\n"); number = 0; pnum = 0; lab110: for (i = 0; i < 81; i++) chrbuf[i] = ' '; if (fgets(chrbuf, 80, vocab_dat) == NULL) goto lab500; q = strlen(chrbuf) - 1; for (i = q; i < 80; i++) chrbuf[i] = ' '; if (chrbuf[0] == '*') goto lab110; if (chrbuf[0] < '0' || chrbuf[0] >= '9') goto lab111; numx = pnum + 1; if (chrbuf[0] == '1') { fprintf(parame_inc, "#define BUZMAX %5d\n", pnum); fprintf(parame_inc, "#define ADVMIN %5d\n", numx); } else if (chrbuf[0] == '2') { fprintf(parame_inc, "#define ADVMAX %5d\n", pnum); fprintf(parame_inc, "#define VRBMIN %5d\n", numx); } else if (chrbuf[0] == '3') { fprintf(parame_inc, "#define VRBMAX %5d\n", pnum); fprintf(parame_inc, "#define ADJMIN %5d\n", numx); } else if (chrbuf[0] == '4') { fprintf(parame_inc, "#define ADJMAX %5d\n", pnum); fprintf(parame_inc, "#define NUNMIN %5d\n", numx); } else if (chrbuf[0] == '5') { fprintf(parame_inc, "#define NUNMAX %5d\n", pnum); fprintf(parame_inc, "#define PRPMIN %5d\n", numx); } else if (chrbuf[0] == '6') { fprintf(parame_inc, "#define PRPMAX %5d\n", pnum); } else; if (chrbuf[0] != '6') goto lab110; goto lab500; lab111: number += 1; if (chrbuf[0] == '+') goto lab110; pnum += 1; for (i = 0; i < 6; i++) outstr[i] = chrbuf[i]; if (chrbuf[59] >= 'A' && chrbuf[59] <= 'Z') { for (i = 0; i < 6; i++) outstr[i] = chrbuf[59 + i]; } fprintf(parame_inc, "#define %6s %5d\n", outstr, pnum); goto lab110; lab500: fprintf(parame_inc, "#define VOCMAX %5d\n", number); vocdim = number * 3; fseek(vocab_dat, 0l, 0); fprintf(vocab_inc, " short vocab[%5d] = { 0 \n", vocdim + 1); nvrbob = 0; lab600: fgets(chrbuf, 80, vocab_dat); q = strlen(chrbuf) - 1; for (i = q; i < 80; i++) chrbuf[i] = ' '; if (chrbuf[0] == '*') goto lab600; vocsz = 0; lab820: if (fgets(chrbuf, 80, vocab_dat) == NULL) goto lab6000; q = strlen(chrbuf) - 1; for (i = q; i < 80; i++) chrbuf[i] = ' '; if (chrbuf[0] == '*') goto lab820; if (chrbuf[0] > '0' && chrbuf[0] < '9') goto lab820; m = 0; if (chrbuf[0] == '+') m = 1; cvt(&chrbuf[m]); if (m == 1) three[0] = -three[0]; vocsz += 3; q1 = (q < 9) ? q : 9; /* q1 = min (q,9) */ fprintf(vocab_inc, " , %6d, %6d, %6d /* %12.13s */\n", three[0], three[1], three[2], chrbuf); if (chrbuf[15] == ' ') goto lab820; for (i = 0; i < 15; i++) { pp1[i] = chrbuf[i + 14] - '0'; pp2[i] = chrbuf[i + 31] - '0'; } for (i = 0; i < 8; i++) pp3[i] = chrbuf[i + 49] - '0'; nvrbob += 1; vrbpdo[nvrbob] = 0; vrbpio[nvrbob] = 0; vrbobj[nvrbob] = 0; for (i = 0; i < 15; i++) { vrbpdo[nvrbob] = vrbpdo[nvrbob] * 2 + pp1[i]; vrbpio[nvrbob] = vrbpio[nvrbob] * 2 + pp2[i]; } for (i = 0; i < 8; i++) vrbobj[nvrbob] = vrbobj[nvrbob] * 2 + pp3[i]; goto lab820; lab6000: fprintf(verbtb_inc, " short vrbpdo[ %3d ] = { 0 \n", nvrbob + 1); for (i = 1; i <= nvrbob; i++) fprintf(verbtb_inc, " , %7d \n", vrbpdo[i]); fprintf(verbtb_inc, " } ; \n"); fprintf(verbtb_inc, " short vrbpio[ %3d ] = { 0 \n", nvrbob + 1); for (i = 1; i <= nvrbob; i++) fprintf(verbtb_inc, " , %7d \n", vrbpio[i]); fprintf(verbtb_inc, " } ; \n"); fprintf(verbtb_inc, " short vrbobj[ %3d ] = { 0 \n", nvrbob + 1); for (i = 1; i <= nvrbob; i++) fprintf(verbtb_inc, " , %7d \n", vrbobj[i]); fprintf(verbtb_inc, " } ; \n"); fprintf(vocab_inc, " } ; \n"); fclose(vocab_dat); fclose(vocab_inc); fclose(verbtb_inc); data_dat = fopen("data.dat", "r"); trvtbl_inc = fopen("trvtbl.inc", "w"); locdat_inc = fopen("locdat.inc", "w"); objdat_inc = fopen("objdat.inc", "w"); ttabsz = 0; fprintf(trvtbl_inc, " short trvtbl[] = { 0 \n"); lab1000: fgets(chrbuf, 80, data_dat); if (chrbuf[0] == '*') goto lab1000; locat = atoi(&chrbuf[1]); qq1 = atoi(&chrbuf[13]); qq2 = atoi(&chrbuf[16]); astr[0] = chrbuf[0]; cstr[0] = chrbuf[8]; cstr[1] = chrbuf[9]; bstr[0] = chrbuf[11]; if (locat == 9999) goto lab1200; ttabsz += 1; if (strcmp(cstr, "N ") == 0) ppq1 = 1; else if (strcmp(cstr, "NE") == 0) ppq1 = 2; else if (strcmp(cstr, "E ") == 0) ppq1 = 3; else if (strcmp(cstr, "SE") == 0) ppq1 = 4; else if (strcmp(cstr, "S ") == 0) ppq1 = 5; else if (strcmp(cstr, "SW") == 0) ppq1 = 6; else if (strcmp(cstr, "W ") == 0) ppq1 = 7; else if (strcmp(cstr, "NW") == 0) ppq1 = 8; else if (strcmp(cstr, "U ") == 0) ppq1 = 9; else if (strcmp(cstr, "D ") == 0) ppq1 = 10; else printf(" error in travel table\n"); if (bstr[0] == 'C') ppq1 += 16; if (bstr[0] == 'S') ppq1 += 32; if (bstr[0] == 'Q') ppq1 += 64; ppq2 = 512 * qq1 + qq2; zz2 = ttabsz * 2; zz1 = zz2 - 1; { if (locat != 0) { dispat[locat] = zz1; loxx = locat; } } fprintf(trvtbl_inc, " , %7d , %7d \n", ppq1, ppq2); goto lab1000; lab1200: loxxx = loxx + 1; fprintf(trvtbl_inc, " } ;\n"); fprintf(trvtbl_inc, " short dispat[] = { 0 \n"); for (i = 1; i < loxxx; i++) fprintf(trvtbl_inc, " , %5d \n", dispat[i]); fprintf(trvtbl_inc, " , %5d }; \n", zz2 + 1); fprintf(parame_inc, "#define LOCNUM %5d \n", loxx); fprintf(parame_inc, "#define TTABSZ %5d \n", zz2); fclose(trvtbl_inc); fprintf(locdat_inc, " short locdat[] = { 0 \n"); while (1) { do fgets(chrbuf, 80, data_dat); while (chrbuf[0] == '*'); locat = atoi(&chrbuf[1]); if (locat == 9999) break; ppq1 = atoi(&chrbuf[6]); fprintf(locdat_inc, " , %6d \n", ppq1); } fprintf(locdat_inc, " } ; \n"); fclose(locdat_inc); objmax = 0; movmax = 0; nounptr = obnoun; adjptr = obadjv; while (1) { do fgets(chrbuf, 80, data_dat); while (chrbuf[0] == '*'); z = atoi(&chrbuf[1]); if (z == 9999) break; for (i = 0; i < 6; i++) *nounptr++ = chrbuf[i + 7]; for (i = 0; i < 7; i++) *adjptr++ = chrbuf[i + 16]; wt = atoi(&chrbuf[24]); size = atoi(&chrbuf[30]); value = atoi(&chrbuf[36]); floc = atoi(&chrbuf[42]); pprp = atoi(&chrbuf[48]); imprp = atoi(&chrbuf[54]); iloc = atoi(&chrbuf[60]); cval = atoi(&chrbuf[66]); for (i = 0; i < 6; i++) fstr[i] = chrbuf[i + 72]; objmax += 1; movmax += 1; obw3[z] = wt * 256 + size; obw4[z] = value * 4096 + floc; obpprp[z] = pprp + 2048 * cval; obloc[z] = iloc; obimpr[z] = imprp; for (i = 0; i < 6; i++) if (fstr[i] == '\n') fstr[i] = ' '; fprintf(parame_inc, "#define %7.6s %5d\n", fstr, z); } while (1) { do fgets(chrbuf, 80, data_dat); while (chrbuf[0] == '*'); z = atoi(&chrbuf[1]); if (z == 9999) break; for (i = 0; i < 6; i++) *nounptr++ = chrbuf[i + 7]; for (i = 0; i < 7; i++) *adjptr++ = chrbuf[i + 16]; objmax += 1; obw3[objmax] = atoi(&chrbuf[30]); obw4[objmax] = atoi(&chrbuf[42]); pprp = atoi(&chrbuf[48]); obimpr[objmax] = atoi(&chrbuf[54]); cval = atoi(&chrbuf[66]); for (i = 0; i < 6; i++) fstr[i] = chrbuf[i + 72]; for (i = 0; i < 6; i++) if (fstr[i] == '\n') fstr[i] = ' '; obpprp[objmax] = pprp + 2048 * cval; fprintf(parame_inc, "#define %7.6s %5d\n", fstr, objmax); } fclose(data_dat); fprintf(parame_inc, "#define OBJMAX %5d\n", objmax); fprintf(parame_inc, "#define MOVMAX %5d\n", movmax); fprintf(parame_inc, "#define OBJMX2 %5d\n", objmax + 1); fclose(parame_inc); fprintf(objdat_inc, " short obloc[] = { 0 \n"); for (i = 1; i <= movmax; i++) { qqqq = obloc[i]; if (qqqq > 6000) qqqq += movmax - 4000; fprintf(objdat_inc, " , %7d \n", qqqq); } fprintf(objdat_inc, " } ;\n"); fprintf(objdat_inc, " short obw3[] = { 0 \n"); for (i = 1; i <= objmax; i++) { fprintf(objdat_inc, " , %7d \n", obw3[i]); } fprintf(objdat_inc, " } ;\n"); fprintf(objdat_inc, " short obw4[] = { 0 \n"); for (i = 1; i <= objmax; i++) { fprintf(objdat_inc, " , %7d \n", obw4[i]); } fprintf(objdat_inc, " } ;\n"); fprintf(objdat_inc, " short obpprp[] = { 0 \n"); for (i = 1; i <= objmax; i++) { fprintf(objdat_inc, " , %7d \n", obpprp[i]); } fprintf(objdat_inc, " } ;\n"); fprintf(objdat_inc, " short obimpr[] = { 0 \n"); for (i = 1; i <= objmax; i++) { fprintf(objdat_inc, " , %7d \n", obimpr[i]); } fprintf(objdat_inc, " } ;\n"); nounptr = obnoun; fprintf(objdat_inc, " short obnoun[] = { 0 \n"); for (i = 1; i <= objmax; i++) { for (ib = 0; ib < 6; ib++) dstr[ib] = *nounptr++; fprintf(objdat_inc, " , %7s \n", dstr); } fprintf(objdat_inc, " } ;\n"); adjptr = obadjv; fprintf(objdat_inc, " short obadjv[] = { 0 \n"); for (i = 1; i <= objmax; i++) { for (ib = 0; ib < 7; ib++) estr[ib] = *adjptr++; fprintf(objdat_inc, " , %8s \n", estr); } fprintf(objdat_inc, " } ;\n"); fclose(objdat_inc); } cvt(strptr) char *strptr; { int ii, ij, k; for (ii = 0; ii < 3; ii++) { three[ii] = 0; for (ij = 0; ij < 3; ij++) { k = *strptr++; if (k == 45) k = 91; k -= 64; if (k < 1 || k > 27) k = 0; three[ii] = three[ii] * 32 + k; } } }