#define TXTHDRSIZ (sizeof(txthdr))
readl(f,p,n) int f,n; long * p;{
do {t += read(f,&(p->loword),2); t += read(f,&(p->hiword),2); p++;} while (--n);
return(read(f,p,n*sizeof(long)));
IF readl(fsym, txthdr, TXTHDRSIZ/sizeof(txthdr[0]))==TXTHDRSIZ
IF magic!=0410 ANDF magic!=0407 ANDF magic!=0412 ANDF magic!=0413
symnum=txthdr[4]/SYMTABSIZ;
txtmap.f1=txtmap.f2=TXTHDRSIZ;
txtmap.f1=txtmap.f2=PAGSIZ;
txtmap.f1=txtmap.f2=PAGSIZ;
txtmap.b2=datbas=round(txtsiz,TXTRNDSIZ);
symbas += txthdr[6]+txthdr[7];
symbas += magic==0412||magic==0413 ? PAGSIZ : TXTHDRSIZ;
symvec=sbrk(shorten((1+symnum))*sizeof (SYMSLAVE));
THEN printf("%s\n",BADNAM);
symptr=symvec=sbrk(sizeof (SYMSLAVE));
WHILE (symp=symget()) ANDF errflg==0
symptr->valslave=symp->symv;
symptr->typslave=SYMTYPE(symflg);
#define STABTYPES 0340 /* from <a.out.h> */
IF (symflg & STABTYPES) != 0
IF magic==0 THEN txtmap.e1=maxfile; FI
IF read(fcor, &u, ctob(UPAGES))==ctob(UPAGES)
ANDF (u.u_pcb.pcb_ksp & 0xF0000000L)==0x80000000L
ANDF (u.u_pcb.pcb_usp & 0xF0000000L)==0x70000000L
THEN signo = u.u_arg[0]&017;
txtsiz = ctob(u.u_tsize);
datsiz = ctob(u.u_dsize);
stksiz = ctob(u.u_ssize);
datmap.b1 = datbas = (magic==0410?round(txtsiz,TXTRNDSIZ):0);
datmap.b1 = datbas = txtsiz;
datmap.e1=(magic==0407?txtsiz:datmap.b1)+datsiz;
datmap.f1 = ctob(UPAGES);
datmap.b2 = maxstor-stksiz;
datmap.f2 = ctob(UPAGES)+((magic==0410 || magic == 0413)
signo = *(ADDR *)(((ADDR)&u)+ctob(UPAGES)-4*sizeof(int));
IF magic ANDF magic!=u.u_exdata.ux_mag
THEN printf("%s , object = %o, core = %o\n"
ELSE datmap.e1 = maxfile;
THEN close(fd); return(open(f,wtflag));
THEN fsym=open(filnam,wtflag);
IF fsym<0 ANDF argcount>cnt
THEN fsym=create(filnam);
THEN printf("cannot open `%s'\n", filnam);