/* EXPAND - Expand and display control sequence */ expand(kbuf) unsigned char *kbuf; { unsigned char *sptr, *kptr, c; unsigned char messbuf[MAXSTR], save[MAXSTR]; int getmess(); kptr = kbuf; sptr = save; /* Init PTR to buffer ending in 00 */ /* Convert "^Z" to CTRL-Z and change to use 00 terminator */ while (*kptr != KFF) { *sptr = *kptr++; if (*sptr == '^') { if (*kptr != '^') *sptr = *kptr & 0x1F; kptr++; } sptr++; } *sptr = 0; /* SAVE[] ends in 00 terminator */ sptr = save; if (*sptr == 0) { /* Change IBM System call to ROM call */ sptr++; *sptr |= 0x80; /* Set high bit on next char */ } if ( getmess(messbuf,sptr,topname) ) output("<%s>",messbuf); /* display string and key codes */ else { for (sptr=save; *sptr; sptr++) { c = *sptr; if (c & 0x80) { output("%s", func); c &= 0x7f; } mnemonic(c); /* Convert char to mnemonic if possible */ outc(SPACE); } } }