/*UTFX.C*/#include "GLOBALS.H";extern int pconf();extern int getconfn();extern int getstr();extern int setdrive();extern int getdrive();extern char msg2[],msg3[];extern char mes0[],mes9[];extern int columns;extern char d6[];char mms1[] = "  Read Αll Πersonal Μastread Γonference";char mms2[] = "  Ρuit Φiew Conf.data Σet Screen width";char  p01[] = "Quit to DOS? y/[n]";menud(ret,rover)DISK *ret, *rover;$(  DISK rr, rov;  char f[64], cy, cx;  int cn;  while(1)  $(    *ret = rr = *rover = NULL;    poke(82,0);    poke(752,1);    printf("\f%s",mes0);    report();    printf("\n\n%s",mms1);    printf("\n%s",mms2);    printf("\n\n%s",mes9);    cy = toupper(getkey());    switch(cy)    $(      case 'Q':      $(        printf("\n\n%s",p01);        cx = toupper(getkey());        if(cx == 'Y')          exit();        return -1;      $)      break;      case 'V':        pconf();      break;      case 'S':        docol();      break;      case 'A':      $(        *ret = -1;        return 1;      $)      break;      case 'P':      $(        *ret = 1;        return 1;      $)      break;      case 'L':      $(        rr = loadptr(&rov);        if(rr)        $(          *rover = rov;          *ret = -1;          return 1;        $)      $)      break;      case 'C':      $(        cn = getconfn();        if(cn >= 0)        $(          *ret = 0;          return cn;        $)      $)      break;      default: ; break;    $)  $)$)char  p08[] = "Screen width is: ";char  p09[] = "Input desired width\n-->";char  p88[] = "<Return> = No change";docol()$(  char buf[8], *ptr;  int d;  d = columns;  printf("\n%s%d",p08,d);  printf("\n%s",p88);  printf("\n%s",p09);  ptr = buf;  getstr(ptr,7);  d = val(ptr);  if(ptr[0] == '\0') d = columns;  else if((d >= MAXL) || (d < 40))  $(    d = columns;    printf("\nOut of range");    printf("\n <40 to 132>");  $)  columns = d;$)char mptrx[] = "LASTREAD.PTR";loadptr(rec)DISK *rec;$(  DISK *rc;  char w[12], *p, f0[64];  int ib, mm, cc, flag;  flag = 0;  strcpy(f0,mptrx);  ib = getdrive(f0,'r');  if(ib>0)  $(    flag = 1;    printf("\nReading %s\n",f0);    p = w;    cgets(p,ib);    cgets(p,ib);    mm = val(p);    cgets(p,ib);    close(ib);    cc = val(p);    rc = getmes(mm,cc);    *rec = rc;  $)  else *rec = NULL;  return flag;$)saveptr(mm,cc)int mm, cc;$(  DISK *r;  CONF *rr;  char f0[64], cx;  int ib, count;  strcpy(f0,mptrx);  printf("\n%s",d6);  if((cx=getkey()) == '\n')    cx = '1';  setdrive(f0,cx);  if((ib=copen(f0,'w'))<1)  $(    printf("\nCan't open %s",f0);    printf("\n%s\n",msg2);    getkey();    return;  $)  else  $(    printf(ib,"%d\n",mm);    printf(ib,"%d\n",mm);    printf(ib,"%d\n",cc);    close(ib);    printf("\n%s\n",msg3);    getkey();  $)$)getmes(mnum,cnm)int mnum,cnm;$(  DISK *r;  int flag;  r = db->mhead;  if((mnum >= 0) && (cnm >= 0))  $(    flag = 0;    while((r != NULL) && !flag)      if((mnum == r->mesn) && (cnm == r->confn))        flag = 1;      else r = r->dnext;  $)  return r;$)char ppx[] = "  Summary of index to MESSAGES.DAT";char ppy[] = "Confn#   #msgs     Msg#: low to high";report()$(  CONF *rvr;  int tcount, tpcount, count;  printf("%s",ppx);  printf("\n%s\n",ppy);  count = tcount = tpcount = 0;  count = 4;  rvr = db->lhead;  while(rvr != NULL)  $(    tcount += rvr->nmes;    tpcount += rvr->npers;    if(rvr->nmes > 0)    $(      printf("\n");      if(rvr->npers > 0) printf("+");      else printf(" ");      printf(" #%-3d %3d message(s) %6d to %-6d", rvr->cnum, rvr->nmes, rvr->lo, rvr->hi);      count++;    $)    if(count >= 22)    $(      printf("\n>- More -<");      getkey();      printf("\f%s",mes0);      printf("%s",ppx);      printf("\n%s\n",ppy);      count = 4;    $)    rvr = rvr->cnext;  $)  printf("\n\nTotal:%3d message(s) %3d personal(+)",tcount,tpcount);$)