/* * XE Bank Memory Access Test */#include "D:stdio.h"extern char *_freelist;XE_END();traverse(){  char *block;  for (    block = _freelist;    block != 0;    block = xint(block, 0))  {    printf("Block %04X, %u bytes\n",      block, xint(block, -2));  }}char line[40];main (argc, argv)int argc;char *argv[];{  int quit;  char *addr, *len;  if (!xebank())  {    printf("no XE memory available\n");    exit();  }  xinit(65534);  quit = 0;  while (!quit)  {    printf("\nTEST> ");    fgets(line, 40, stdin);    switch (toupper(*line))    {    case 'Q': /* quit */      quit = 1;      break;    case 'A': /* allocate */      len  = atoib(line+2, 10);      addr = xalloc(len);      printf("Allocated %u at %04x\n",        len, addr);      break;    case 'F': /* free */      addr = atoib(line+2, 10);      xfree(addr);      printf("Freed at %04x\n", addr);      break;    case 'T': /* traverse */      traverse();      break;    case 'I': /* initialize */      len = atoib(line+2, 10);      xinit(len);      break;    case 'E':      printf("%04X\n", XE_END);      break;    case '?':      printf("%s%s%s%s%s%s%s",        "A len  - allocate\n",        "F addr - free\n",        "T      - traverse\n",        "Q      - quit\n",        "I      - initialize\n",        "E      - end address\n",        "X      - existence\n");      break;    default:      printf("%s?\n", line);    }  }}