#include <perms.h>
extern void RECTANGLE(int XL, int YL, int XU, int YU) /* See
                                                         https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html
                                                       */
    ;
extern void TERMINATEEDWIN(void) /* See
                                    https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html
                                  */
    ;
extern void SETCOLOUR(int COLOUR) /* See
                                     https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html
                                   */
    ;
extern void CHARACTER(int CH) /* See
                                 https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html
                               */
    ;
extern void LINEREL(int X, int Y) /* See
                                     https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html
                                   */
    ;
extern void MOVEABS(int X, int Y) /* See
                                     https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html
                                   */
    ;
extern void NEWFRAME(void) /* See
                              https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html
                            */
    ;
extern void INITIALISEFOR(int TYPE) /* See
                                       https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html
                                     */
    ;
extern void WINDOW(int X0, int Y0, int X1, int Y1) /* See
                                                      https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html
                                                    */
    ;
extern void VIEWPORT(int X0, int Y0, int X1, int Y1) /* See
                                                        https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html
                                                      */
    ;
extern void SETCHARQUALITY(int TITS) /* See
                                        https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html
                                      */
    ;
extern void SETCHARSIZE(int SIZE) /* See
                                     https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html
                                   */
    ;
extern void SETSHADEMODE(int ASSHOLE) /* See
                                         https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html
                                       */
    ;
int _imp_mainep(int _imp_argc, char **_imp_argv) {
  _imp_enter();
  typedef struct MDBF {
    short TSLC;
    char VERTINT;
    char SOFTINT;
    short CONTROL;
    char CUX;
    char CUY;
    char FAT;
    char FCC;
    int RCBP;

  } MDBF;

  typedef struct SEGMENTF {
    int CCP;
    int AP;
    char HIDDEN;
    char VISIBLE;

  } SEGMENTF;

  typedef struct RCBF {
    int RRDBP;
    SEGMENTF SEGMENT[2 - 0 + 1];
    int RCBP;

  } RCBF;

  typedef struct RRDBF {
    short RR[4 - 0 + 1];

  } RRDBF;

  typedef struct WDBF {
    char SWR;
    char EWR;
    char SWC;
    char EWC;
    int WRCBP;
    int WDBP;

  } WDBF;

  typedef struct WRCBF {
    int WRDBP;
    SEGMENTF SEGMENT;
    int WRCBP;

  } WRCBF;

  label... label... const char VERTICAL = 0;
  const char SOFT = 0;
  const short DEFATTRIB = 0;
  int TOP;
  int TOW;
  int SPARERCB;
  MDBF MDB;
  MDBF SPAREMDB;
  RCBF RCB[27 - 0 + 1];
  RRDBF RRDB;
  RRDBF WRDB;
  WDBF WDB[5 - 0 + 1];
  WRCBF WRCB[52 - 0 + 1];
  char CHARACTERCODE[27 - 0 + 1][79 - 0 + 1];
  short ATTCODE[27 - 0 + 1][79 - 0 + 1];
  char CHAR;
  const int BLEN = 80;
  char BUFFER[BLEN - 0 + 1];
  int BESP;
  int BFSP;
  int CURRENTRCB;
  int DUMMYRCB;
  int LASTRCB;
  int RCB0;
  int RCB1;
  short ATTRIB;
  short AMASK;
  char TABSTOPS[79 - 0 + 1];
  char SECURITY;
  char BLINKY;
  int BLINKRCB;
  char CH;
  char X;
  char Y;
  char INSERTON;

  label... label... label... label... static void *CHARCODE[127 - 0 + 1] = {
      /* These need to be filled in from associated code block */};
  auto void MASKADDRESSZERO(void) {
    _imp_enter();
    asm("move.l a0,d0");
    asm("and.l #16_ffffff,d0");
    asm("movea.l d0,a0");

    _imp_leave();
  }
  auto void MASKADDRESSTWO(void) {
    _imp_enter();
    asm("move.l a2,d0");
    asm("and.l #16_ffffff,d0");
    asm("move.b #0,d0");
    asm("movea.l d0,a2");

    _imp_leave();
  }
  auto void MASKADDRESSONE(void) {
    _imp_enter();
    asm("move.l a0,d0");
    asm("move.b #1,d0");
    asm("movea.l d0,a0");

    _imp_leave();
  }
  auto void XSTATUS(void) {
    _imp_enter();
    int X;
    int X1;
    asm("movea.l top,a0");
    asm("move.b 4(a0),d4");
    asm("move.l d4,x");
    X1 = X / 10;
    X = X - (X1 * 10);
    asm("addi.l #48,x");
    asm("addi.l #48,x1");
    asm("movea.l rcb0,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l #22,a0");
    asm("move.l x1,d0");
    asm("move.b d0,(a0)+");
    asm("move.l x,d0");
    asm("move.b d0,(a0)+");

    _imp_leave();
  }
  auto void YSTATUS(void) {
    _imp_enter();
    int Y;
    int Y1;
    asm("movea.l top,a0");
    asm("move.b 5(a0),d4");
    asm("move.l d4,y");
    asm("subq.l #2,y");
    Y1 = Y / 10;
    Y = Y - (Y1 * 10);
    asm("addi.l #48,y");
    asm("addi.l #48,y1");
    asm("movea.l rcb0,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l #29,a0");
    asm("move.l y1,d0");
    asm("move.b d0,(a0)+");
    asm("move.l y,d0");
    asm("move.b d0,(a0)+");

    _imp_leave();
  }
  auto void CAPSLOCKSET(void) {
    _imp_enter();
    asm("movea.l rcb0,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l #1,a0");
    asm("move.b #16_43,(a0)+");
    asm("move.b #16_41,(a0)+");
    asm("move.b #16_50,(a0)+");
    asm("move.b #16_53,(a0)");

    _imp_leave();
  }
  auto void CAPSLOCKRESET(void) {
    _imp_enter();
    asm("movea.l rcb0,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l #1,a0");
    asm("move.b #32,(a0)+");
    asm("move.b #32,(a0)+");
    asm("move.b #32,(a0)+");
    asm("move.b #32,(a0)+");

    _imp_leave();
  }
  auto void INSERTSTATUSSET(void) {
    _imp_enter();
    INSERTON = 1;
    asm("movea.l rcb0,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l #7,a0");
    asm("move.b #16_49,(a0)+");
    asm("move.b #16_4e,(a0)+");
    asm("move.b #16_53,(a0)+");
    asm("move.b #16_20,(a0)");

    _imp_leave();
  }
  auto void INSERTSTATUSRESET(void) {
    _imp_enter();
    INSERTON = 0;
    asm("movea.l rcb0,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l #7,a0");
    asm("move.b #32,(a0)+");
    asm("move.b #32,(a0)+");
    asm("move.b #32,(a0)+");
    asm("move.b #32,(a0)+");

    _imp_leave();
  }
  auto void HIGHLIGHTSTATUSSET(void) {
    _imp_enter();
    asm("movea.l rcb0,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l #12,a0");
    asm("move.b #16_46,(a0)+");
    asm("move.b #16_4f,(a0)+");
    asm("move.b #16_52,(a0)+");
    asm("move.b #16_45,(a0)+");

    _imp_leave();
  }
  auto void HIGHLIGHTSTATUSRESET(void) {
    _imp_enter();
    asm("movea.l rcb0,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l #12,a0");
    asm("move.b #16_42,(a0)+");
    asm("move.b #16_41,(a0)+");
    asm("move.b #16_43,(a0)+");
    asm("move.b #16_4b,(a0)");

    _imp_leave();
  }
  auto void UNDERLINESTATUSSET(void) {
    _imp_enter();
    asm("movea.l rcb0,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l #50,a0");
    asm("move.b #16_55,(a0)+");
    asm("move.b #16_4e,(a0)+");
    asm("move.b #16_44,(a0)+");

    _imp_leave();
  }
  auto void UNDERLINESTATUSRESET(void) {
    _imp_enter();
    asm("movea.l rcb0,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l #50,a0");
    asm("move.b #16_20,(a0)+");
    asm("move.b #16_20,(a0)+");
    asm("move.b #16_20,(a0)+");

    _imp_leave();
  }
  auto void STRIKETHROUGHSTATUSSET(void) {
    _imp_enter();
    asm("movea.l rcb0,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l #44,a0");
    asm("move.b #16_53,(a0)+");
    asm("move.b #16_54,(a0)+");
    asm("move.b #16_52,(a0)+");
    asm("move.b #16_4b,(a0)+");

    _imp_leave();
  }
  auto void STRIKETHROUGHSTATUSRESET(void) {
    _imp_enter();
    asm("movea.l rcb0,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l #44,a0");
    asm("move.b #16_20,(a0)+");
    asm("move.b #16_20,(a0)+");
    asm("move.b #16_20,(a0)+");
    asm("move.b #16_20,(a0)");

    _imp_leave();
  }
  auto void SUBSCRIPTSTATUSSET(void) {
    _imp_enter();
    asm("movea.l rcb0,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l #34,a0");
    asm("move.b #16_53,(a0)+");
    asm("move.b #16_55,(a0)+");
    asm("move.b #16_42,(a0)+");

    _imp_leave();
  }
  auto void SUBSCRIPTSTATUSRESET(void) {
    _imp_enter();
    asm("movea.l rcb0,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l #34,a0");
    asm("move.b #16_20,(a0)+");
    asm("move.b #16_20,(a0)+");
    asm("move.b #16_20,(a0)+");

    _imp_leave();
  }
  auto void SUPERSCRIPTSTATUSSET(void) {
    _imp_enter();
    asm("movea.l rcb0,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l #34,a0");
    asm("move.b #16_53,(a0)+");
    asm("move.b #16_55,(a0)+");
    asm("move.b #16_50,(a0)+");

    _imp_leave();
  }
  auto void SUPERSCRIPTSTATUSRESET(void) {
    _imp_enter();
    asm("movea.l rcb0,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l #34,a0");
    asm("move.b #16_20,(a0)+");
    asm("move.b #16_20,(a0)+");
    asm("move.b #16_20,(a0)+");

    _imp_leave();
  }
  auto void REVERSESTATUSSET(void) {
    _imp_enter();
    asm("movea.l rcb0,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l #39,a0");
    asm("move.b #16_52,(a0)+");
    asm("move.b #16_45,(a0)+");
    asm("move.b #16_56,(a0)+");

    _imp_leave();
  }
  auto void REVERSESTATUSRESET(void) {
    _imp_enter();
    asm("movea.l rcb0,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l #39,a0");
    asm("move.b #16_20,(a0)+");
    asm("move.b #16_20,(a0)+");
    asm("move.b #16_20,(a0)+");

    _imp_leave();
  }
  auto void TABSSTATUS(void) {
    _imp_enter();
    int X;
    asm("movea.l rcb1,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("movea.l a0,a3");
    for (X = 0; X != 79 + 1; X += 1) {
      if (TABSTOPS[X] == 0) {
        asm("move.b #46,(a3)+");

      } else {
        asm("move.b #33,(a3)+");
      }
    }

    _imp_leave();
  }
  auto void XYINSTATUS(void) {
    _imp_enter();
    asm("movea.l rcb0,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l #19,a0");
    asm("move.b #16_58,(a0)+");
    asm("move.b #16_2d,(a0)+");
    asm("adda.l #5,a0");
    asm("move.b #16_59,(a0)+");
    asm("move.b #16_2d,(a0)+");

    _imp_leave();
  }
  auto void CURSORRIGHT(void);
  auto void FINDRCB(char N, int *P);
  auto void WRITECHAR(char CHAR) {
    _imp_enter();
    int X1;
    int Y1;
    int AX;
    if (SECURITY == 0) {
      asm("movea.l top,a0");
      asm("move.b 4(a0),d4");
      asm("move.l d4,x1");
      asm("move.b 5(a0),d4");
      asm("move.l d4,y1");
      AX = X1 * 2;
      asm("movea.l currentrcb,a0");
      asm("movea.l 10(a0),a1           {attribs in a1}");
      asm("movea.l 6(a0),a0            {chars in a0}");
      MASKADDRESSZERO();
      asm("adda.l x1,a0");
      asm("adda.l ax,a1");
      asm("move.b char,(a0)");
      asm("move.w attrib,(a1)");
      CURSORRIGHT();
      if (Y1 == BLINKY) {
        asm("move.w #1,d0");
        asm("or.w d0,(a1)");
      }
    }
    _imp_leave();
  }
  auto void BLINKON(int RCBPOINTER) {
    _imp_enter();
    char I;
    asm("move.b #0,i");
    asm("move.l #65537,d1                {....001 00000000 00000001 }");
    asm("movea.l rcbpointer,a0");
    asm("movea.l 10(a0),a1");
    do {
      asm("or.l d1,(a1)+");
      asm("addq.b #1,i");
    } while (I != 40);
    _imp_leave();
  }
  auto void BLINKOFF(int RCBPOINTER) {
    _imp_enter();
    char I;
    asm("move.b #0,i");
    asm("move.w #65534,d1");
    asm("movea.l rcbpointer,a0");
    asm("movea.l 10(a0),a1");
    do {
      asm("and.w d1,(a1)+");
      asm("and.w d1,(a1)+");
      asm("addq.b #1,i");
    } while (I != 40);
    _imp_leave();
  }
  auto void RESETBLINK(void) {
    _imp_enter();
    BLINKOFF(BLINKRCB);
    FINDRCB(BLINKY, BLINKRCB);
    BLINKON(BLINKRCB);
    _imp_leave();
  }
  auto void ERASELINE(int RCBPOINTER) {
    _imp_enter();
    char I;
    short ATT;
    asm("clr.b i");
    asm("movea.l rcbpointer,a0");
    asm("movea.l 10(a0),a1");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("movea.l a0,a2");
    do {
      asm("move.w (a1),att");
      if ((ATT | 64) == ATT) {
        asm("move.b #32,(a2)+");
        asm("move.w #64,att");

      } else {
        asm("move.b (a2),(a2)+");
      }
      asm("move.w att,(a1)+");
      asm("addq.b #1,i");
    } while (I != 80);
    if (RCBPOINTER == BLINKRCB) BLINKON(BLINKRCB);
    _imp_leave();
  }
  auto void FINDRCB(char N, int *P) {
    _imp_enter();
    asm("subq.b #1,n");
    asm("movea.l rcb1,a0");
    while (N > 0) {
      asm("movea.l (a0),a0");
      asm("subq.b #1,n");
    }
    asm("movea.l p,a1");
    asm("move.l a0,(a1)");

    _imp_leave();
  }
  auto void BLANKLINE(int RCBPOINTER) {
    _imp_enter();
    char I;
    asm("clr.b i");
    asm("movea.l rcbpointer,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("movea.l a0,a1                {address of chars in a1}");
    asm("movea.l rcbpointer,a0");
    asm("movea.l 10(a0),a0            {address of attribs in a0}");
    do {
      asm("move.w #8224,(a1)+           {blank chars             }");
      asm("move.w amask,(a0)+        {blank attribs with amask}");
      asm("move.w amask,(a0)+");
      asm("addq.b #1,i");
    } while (I != 40);
    if (BLINKRCB == RCBPOINTER) BLINKON(BLINKRCB);
    _imp_leave();
  }
  auto void BLANKTOENDLINE(int RCBPOINTER) {
    _imp_enter();
    char I;
    int J;
    int K;
    asm("movea.l top,a0");
    asm("move.b 4(a0),i");
    J = I;
    I = 80 - J;
    K = J * 2;
    asm("movea.l rcbpointer,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("movea.l a0,a1              {address of chars in a1}");
    asm("movea.l rcbpointer,a0");
    asm("movea.l 10(a0),a0          {address of attribs in a0}");
    asm("adda.l j,a1");
    asm("adda.l k,a0");
    do {
      asm("move.b #32,(a1)+");
      asm("move.w amask,(a0)+");
      asm("subq.b #1,i");
    } while (I != 0);
    if (RCBPOINTER == BLINKRCB) BLINKON(BLINKRCB);
    _imp_leave();
  }
  auto void CURSORHOME(void) {
    _imp_enter();
    asm("movea.l top,a0");
    asm("move.w #2,4(a0)");
    asm("movea.l rcb1,a0");
    asm("move.l (a0),currentrcb");
    XSTATUS();
    YSTATUS();
    _imp_leave();
  }
  auto void CURSORUP(void) {
    _imp_enter();
    char T1;
    asm("movea.l top,a0");
    asm("move.b 5(a0),t1");
    if (T1 > 2) {
      asm("subq.b #1,5(a0)");
      asm("move.b 5(a0),t1");
      FINDRCB(T1, CURRENTRCB);
      YSTATUS();
    }
    _imp_leave();
  }
  auto void CURSORDOWN(void) {
    _imp_enter();
    char T1;
    asm("movea.l top,a0");
    asm("move.b 5(a0),t1");
    if (T1 < 25) {
      asm("addq.b #1,5(a0)");
      asm("movea.l currentrcb,a0");
      asm("move.l (a0),currentrcb");
      YSTATUS();
    }
    _imp_leave();
  }
  auto void CURSORRIGHT(void) {
    _imp_enter();
    char T1;
    asm("movea.l top,a0");
    asm("move.b 4(a0),t1");
    if (T1 < 79) {
      asm("addq.b #1,4(a0)");
      XSTATUS();
    }
    _imp_leave();
  }
  auto void CURSORLEFT(void) {
    _imp_enter();
    char T1;
    asm("movea.l top,a0");
    asm("move.b 4(a0),t1");
    if (T1 > 0) {
      asm("subq.b #1,4(a0)");
      XSTATUS();
    }
    _imp_leave();
  }
  auto void CURSORUPSCROLL(void) {
    _imp_enter();
    char T1;
    asm("movea.l top,a0");
    asm("move.b 5(a0),t1");
    if (T1 != 2) {
      CURSORUP();

    } else {
      asm("movea.l rcb1,a0          {a0=rcb1}");
      asm("movea.l sparercb,a1      {a1=sparercb}");
      asm("move.l sparercb,currentrcb");
      asm("move.l (a0),(a1)");
      asm("move.l a1,(a0)");
      asm("move.l lastrcb,sparercb");
      asm("move.w #0,amask");
      FINDRCB(25, LASTRCB);
      asm("movea.l lastrcb,a1");
      asm("move.l dummyrcb,(a1)");
      BLANKLINE(SPARERCB);
      if (BLINKY < 30) RESETBLINK();
    }

    _imp_leave();
  }
  auto void CURSORADDRESS(char X, char Y) {
    _imp_enter();
    if (X >= 0 && X <= 79 && Y >= 0 && Y <= 23) {
      Y = Y + 2;
      asm("movea.l top,a0");
      asm("move.b x,4(a0)");
      asm("move.b y,5(a0)");
      FINDRCB(Y, CURRENTRCB);
      XSTATUS();
      YSTATUS();
    }
    _imp_leave();
  }
  auto void SETFOREGROUND(void) {
    _imp_enter();
    ATTRIB = ATTRIB | 64;
    HIGHLIGHTSTATUSSET();
    _imp_leave();
  }
  auto void SETBACKGROUND(void) {
    _imp_enter();
    ATTRIB = ATTRIB & 65471;
    HIGHLIGHTSTATUSRESET();
    _imp_leave();
  }
  auto void SETUNDERLINE(void) {
    _imp_enter();
    ATTRIB = ATTRIB | 2;
    UNDERLINESTATUSSET();
    _imp_leave();
  }
  auto void RESETUNDERLINE(void) {
    _imp_enter();
    ATTRIB = ATTRIB & 65533;
    UNDERLINESTATUSRESET();
    _imp_leave();
  }
  auto void SETSTRIKETHROUGH(void) {
    _imp_enter();
    ATTRIB = ATTRIB | 4;
    STRIKETHROUGHSTATUSSET();
    _imp_leave();
  }
  auto void RESETSTRIKETHROUGH(void) {
    _imp_enter();
    ATTRIB = ATTRIB & 65531;
    STRIKETHROUGHSTATUSRESET();
    _imp_leave();
  }
  auto void SETSUBSCRIPT(void) {
    _imp_enter();
    ATTRIB = ATTRIB | 8;
    ATTRIB = ATTRIB & 65519;
    SUBSCRIPTSTATUSSET();
    _imp_leave();
  }
  auto void RESETSUBSCRIPT(void) {
    _imp_enter();
    ATTRIB = ATTRIB & 65527;
    SUBSCRIPTSTATUSRESET();
    _imp_leave();
  }
  auto void SETSUPERSCRIPT(void) {
    _imp_enter();
    ATTRIB = ATTRIB | 16;
    ATTRIB = ATTRIB & 65527;
    SUPERSCRIPTSTATUSSET();
    _imp_leave();
  }
  auto void RESETSUPERSCRIPT(void) {
    _imp_enter();
    ATTRIB = ATTRIB & 65519;
    SUPERSCRIPTSTATUSRESET();
    _imp_leave();
  }
  auto void SETREVERSE(void) {
    _imp_enter();
    ATTRIB = ATTRIB | 32;
    REVERSESTATUSSET();
    _imp_leave();
  }
  auto void RESETREVERSE(void) {
    _imp_enter();
    ATTRIB = ATTRIB & 65503;
    REVERSESTATUSRESET();
    _imp_leave();
  }
  auto void TAB(void) {
    _imp_enter();
    char X;
    int AX;
    short ATT;
    asm("movea.l top,a0");
    asm("move.b 4(a0),x");
    if (X < 79) {
      do {
        asm("addq.b #1,x");
      } while (TABSTOPS[X] != 1 && X != 79);
    }
    if (TABSTOPS[X] == 0) {
      asm("movea.l top,a0");
      asm("move.b 4(a0),x");
      AX = X * 2;
      asm("movea.l currentrcb,a0");
      asm("move.l 10(a0),a1");
      asm("adda.l ax,a1");
      asm("move.w (a1)+,att");
      while ((ATT | 64) == ATT) {
        asm("move.w (a1)+,att");
        asm("addq.b #1,x");
        if (X == 80) goto FAIL;
      }
      while ((ATT & 65471) == ATT) {
        asm("move.w (a1)+,att");
        asm("addq.b #1,x");
        if (X == 80) goto FAIL;
      }
    }
    asm("movea.l top,a0");
    asm("move.b x,4(a0)");
    XSTATUS();
  FAIL:;

    _imp_leave();
  }
  auto void BACKTAB(void) {
    _imp_enter();
    int AX;
    char X;
    short ATT;
    asm("movea.l top,a0");
    asm("move.l 4(a0),x");
    if (X > 0) {
      do {
        asm("subq.b #1,x");
      } while (TABSTOPS[X] != 1 && X != 0);
    }
    if (TABSTOPS[X] == 0) {
      asm("movea.l top,a0");
      asm("move.b 4(a0),x");
      asm("subq.b #1,x");
      if (X <= 0) goto FAILL;
      AX = X * 2;
      asm("movea.l currentrcb,a0");
      asm("move.l 10(a0),a1");
      asm("adda.l ax,a1");
      asm("move.w (a1),att");
      while ((ATT & 65471) == ATT) {
        asm("move.w -(a1),att");
        asm("subq.b #1,x");
        if (X == 0) goto FAILL;
      }
      while ((ATT | 64) == ATT) {
        asm("move.w -(a1),att");
        asm("subq.b #1,x");
        if (X == 0) goto FAILL;
      }
      asm("addq.b #1,x");
    }
    asm("movea.l top,a0");
    asm("move.l x,4(a0)");
    XSTATUS();
  FAILL:;

    _imp_leave();
  }
  auto void SETTAB(void) {
    _imp_enter();
    int X;
    asm("movea.l top,a0");
    asm("move.b 4(a0),d4");
    asm("move.l d4,x");
    TABSTOPS[X] = 1;
    asm("movea.l rcb1,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l x,a0");
    asm("move.b #33,(a0)");

    _imp_leave();
  }
  auto void CLEARTAB(void) {
    _imp_enter();
    int X;
    asm("movea.l top,a0");
    asm("move.b 4(a0),d4");
    asm("move.l d4,x");
    TABSTOPS[X] = 0;
    asm("movea.l rcb1,a0");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l x,a0");
    asm("move.b #46,(a0)");

    _imp_leave();
  }
  auto void CLEARALLTABS(void) {
    _imp_enter();
    int X;
    for (X = 0; X != 79 + 1; X += 1) {
      TABSTOPS[X] = 0;
    }
    TABSSTATUS();
    _imp_leave();
  }
  auto void CLEARLINE(void) {
    _imp_enter();
    AMASK = 64;
    BLANKLINE(CURRENTRCB);
    asm("movea.l top,a0");
    asm("move.b #0,4(a0)");
    XSTATUS();
    _imp_leave();
  }
  auto void CLEARPAGE(void) {
    _imp_enter();
    int I;
    AMASK = 64;
    asm("movea.l rcb1,a0");
    for (I = 0; I != 23 + 1; I += 1) {
      asm("movea.l (a0),a0");
      asm("move.l a0,currentrcb");
      BLANKLINE(CURRENTRCB);
      asm("movea.l currentrcb,a0");
    }
    CURSORHOME();
    _imp_leave();
  }
  auto void CLEAREOPAGE(void) {
    _imp_enter();
    char Y;
    int TEMPRCB;
    BLANKTOENDLINE(CURRENTRCB);
    asm("movea.l top,a0");
    asm("move.b 5(a0),y");
    Y = 25 - Y;
    asm("move.l currentrcb,temprcb");
    do {
      asm("movea.l temprcb,a0");
      asm("movea.l (a0),a0");
      asm("move.l a0,temprcb");
      BLANKLINE(TEMPRCB);
      asm("subq.b #1,y");
    } while (Y != 0);
    _imp_leave();
  }
  auto void CLEARENDOFLINE(void) {
    _imp_enter();
    AMASK = 64;
    BLANKTOENDLINE(CURRENTRCB);
    _imp_leave();
  }
  auto void CLEARTOENDOFPAGE(void) {
    _imp_enter();
    AMASK = 64;
    CLEAREOPAGE();
    _imp_leave();
  }
  auto void CLEARENDOFPAGEBKGND(void) {
    _imp_enter();
    AMASK = 0;
    CLEAREOPAGE();
    _imp_leave();
  }
  auto void ERASEENDOFFIELD(void) {
    _imp_enter();
    int TEMPRCB;
    int X;
    int AX;
    short ATT;
    AMASK = 64;
    asm("move.l currentrcb,temprcb");
    asm("movea.l top,a0");
    asm("move.b 4(a0),d4");
    asm("move.l d4,x");
    AX = X * 2;
    asm("movea.l temprcb,a0");
    asm("movea.l 10(a0),a1");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l x,a0");
    asm("adda.l ax,a1");
    asm("move.w (a1),att");
    asm("movea.l a0,a2");
    while ((ATT | 64) == ATT) {
      asm("move.b #32,(a2)+");
      asm("move.w amask,(a1)+");
      asm("addq.l #1,x");
      if (TEMPRCB == BLINKRCB) BLINKON(BLINKRCB);
      if (X > 80) {
        asm("movea.l temprcb,a2");
        asm("move.l (a2),temprcb");
        asm("movea.l temprcb,a2");
        asm("movea.l 10(a2),a1");
        asm("movea.l 6(a2),a2");
        MASKADDRESSTWO();
        asm("move.l #0,x");
      }
      asm("move.w (a1),att");
    }

    _imp_leave();
  }
  auto void ERASEENDOFLINE(void) {
    _imp_enter();
    int X;
    int AX;
    short ATT;
    asm("movea.l top,a0");
    asm("move.b 4(a0),d4");
    asm("move.l d4,x");
    AX = X * 2;
    asm("movea.l currentrcb,a0");
    asm("movea.l 10(a0),a1");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l x,a0");
    asm("adda.l ax,a1");
    X = 80 - X;
    asm("movea.l a0,a2");
    do {
      asm("subq.l #1,x");
      asm("move.w (a1),att");
      if ((ATT | 64) == ATT) {
        asm("move.b #32,(a2)+");
        asm("move.w #64,att");

      } else {
        asm("move.b (a2),(a2)+");
      }
      asm("move.w att,(a1)+");
    } while (X != 0);
    if (CURRENTRCB == BLINKRCB) BLINKON(BLINKRCB);
    _imp_leave();
  }
  auto void ERASEENDOFPAGE(void) {
    _imp_enter();
    char Y;
    int TEMPRCB;
    AMASK = 64;
    ERASEENDOFLINE();
    asm("movea.l top,a0");
    asm("move.b 5(a0),y");
    Y = 25 - Y;
    asm("move.l currentrcb,temprcb");
    do {
      asm("movea.l temprcb,a0");
      asm("movea.l (a0),a0");
      asm("move.l a0,temprcb");
      ERASELINE(TEMPRCB);
      asm("subq.b #1,y");
    } while (Y != 0);
    _imp_leave();
  }
  auto void ERASEPAGE(void) {
    _imp_enter();
    int I;
    asm("movea.l rcb1,a0");
    for (I = 0; I != 23 + 1; I += 1) {
      asm("movea.l (a0),a0");
      asm("move.l a0,currentrcb");
      ERASELINE(CURRENTRCB);
      asm("move.l currentrcb,a0");
    }
    CURSORHOME();
    _imp_leave();
  }
  auto void INSERTLINE(void) {
    _imp_enter();
    char Y;
    int TEMPRCB;
    asm("movea.l top,a0");
    asm("move.b 5(a0),y");
    asm("move.b #0,4(a0)");
    FINDRCB((Y - 1), TEMPRCB);
    asm("movea.l temprcb,a0");
    asm("movea.l sparercb,a1");
    asm("move.l sparercb,currentrcb");
    asm("move.l (a0),(a1)");
    asm("move.l a1,(a0)");
    asm("move.l lastrcb,sparercb");
    AMASK = 0;
    FINDRCB(25, LASTRCB);
    asm("movea.l lastrcb,a1");
    asm("move.l dummyrcb,(a1)");
    BLANKLINE(SPARERCB);
    if (BLINKY < 30) RESETBLINK();
    XSTATUS();
    _imp_leave();
  }
  auto void DELETELINE(void) {
    _imp_enter();
    char Y;
    int TEMPRCB;
    asm("movea.l top,a0");
    asm("move.b 5(a0),y");
    asm("move.b #0,4(a0)");
    FINDRCB((Y - 1), TEMPRCB);
    asm("movea.l sparercb,a1");
    asm("movea.l lastrcb,a0");
    asm("move.l dummyrcb,(a1)");
    asm("move.l sparercb,(a0)");
    asm("move.w #0,amask");
    asm("move.l sparercb,lastrcb");
    asm("move.l currentrcb,sparercb");
    asm("movea.l currentrcb,a0");
    asm("movea.l temprcb,a1");
    asm("move.l (a0),(a1)");
    asm("move.l (a0),currentrcb");
    BLANKLINE(SPARERCB);
    if (BLINKY < 30) RESETBLINK();
    XSTATUS();
    _imp_leave();
  }
  auto void DELETECHARACTER(void) {
    _imp_enter();
    int X;
    int AX;
    short ATT;
    asm("movea.l top,a0");
    asm("move.b 4(a0),d4");
    asm("move.l d4,x");
    AX = X * 2;
    asm("movea.l currentrcb,a0");
    asm("movea.l 10(a0),a1");
    asm("movea.l 6(a0),a0");
    MASKADDRESSZERO();
    asm("adda.l x,a0");
    asm("adda.l ax,a1");
    asm("movea.l a0,a2");
    asm("movea.l a1,a3");
    asm("adda.l #1,a2");
    asm("adda.l #2,a3");
    asm("move.w (a3),att");
    while ((ATT | 64) == ATT && X < 79) {
      asm("movea.l a2,a0");
      asm("suba.l #1,a0");
      asm("move.w (a3)+,(a1)+");
      asm("move.b (a2)+,(a0)+");
      asm("move.w (a3),att");
      asm("addq.l #1,x");
    }
    asm("movea.l a2,a0");
    asm("suba.l #1,a0");
    asm("move.b #32,(a0)");
    asm("move.w attrib,(a1)");
    if (CURRENTRCB == BLINKRCB) {
      asm("move.w #1,d0");
      asm("or.w d0,(a1)");
    }
    _imp_leave();
  }
  auto void SETSECURITY(void) {
    _imp_enter();
    SECURITY = 1;
    _imp_leave();
  }
  auto void RESETSECURITY(void) {
    _imp_enter();
    SECURITY = 0;
    _imp_leave();
  }
  auto void BLINKLINE(void) {
    _imp_enter();
    if (BLINKY < 30) {
      BLINKOFF(BLINKRCB);
    }
    BLINKON(CURRENTRCB);
    asm("movea.l top,a0");
    asm("move.b 5(a0),blinky");
    asm("move.l currentrcb,blinkrcb");

    _imp_leave();
  }
  auto void STOPBLINK(void) {
    _imp_enter();
    BLINKOFF(BLINKRCB);
    asm("move.b #30,blinky");
    asm("move.l #0,blinkrcb");

    _imp_leave();
  }
  auto void READCURSORADDRESS(char *X, char *Y) {
    _imp_enter();
    asm("movea.l top,a0");
    asm("move.l 4(a0),x");
    asm("move.l 5(a0),y");

    _imp_leave();
  }
  auto void CARRIAGERETURN(void) {
    _imp_enter();
    asm("movea.l top,a0");
    asm("move.b #0,4(a0)");
    XSTATUS();
    _imp_leave();
  }
  auto void LINEFEED(void) {
    _imp_enter();
    char T1;
    asm("movea.l top,a0");
    asm("move.b 5(a0),t1");
    if (T1 != 25) {
      CURSORDOWN();

    } else {
      asm("move.l sparercb,currentrcb");
      asm("movea.l sparercb,a1");
      asm("movea.l lastrcb,a0");
      asm("move.l dummyrcb,(a1)");
      asm("move.l a1,(a0)");
      asm("move.l sparercb,lastrcb");
      asm("movea.l rcb1,a0");
      asm("move.l (a0),sparercb");
      asm("move.l (a0),a1");
      asm("move.l (a1),(a0)");
      asm("move.w #0,amask");
      BLANKLINE(SPARERCB);
      if (BLINKY < 30) RESETBLINK();
    }

    _imp_leave();
  }
  auto void INSERTCHAR(char CHAR) {
    _imp_enter();
    char X;
    char I;
    char Y;
    if (SECURITY == 0) {
      asm("movea.l top,a0");
      asm("move.b 4(a0),x");
      asm("move.b 5(a0),y");
      I = 79 - X;
      asm("movea.l currentrcb,a0");
      asm("movea.l 10(a0),a1");
      asm("movea.l 6(a0),a0");
      MASKADDRESSZERO();
      asm("adda.l #79,a0");
      asm("adda.l #158,a1");
      asm("movea.l a0,a2");
      asm("movea.l a1,a3");
      asm("adda.l #1,a2");
      asm("adda.l #2,a3");
      while (I > 0) {
        asm("move.b -(a0),-(a2)");
        asm("move.w -(a1),-(a3)");
        asm("subq.b #1,i");
      }
      asm("move.b char,(a0)");
      asm("move.w attrib,(a1)");
      if (Y == BLINKY) {
        asm("move.w #1,d0");
        asm("or.w d0,(a1)");
      }
      CURSORRIGHT();
    }
    _imp_leave();
  }
  auto void SOUNDBELL(void) {
    _imp_enter();

    label... asm("move.l   #16_04, 16_401E               {turn bell 1 on}");
    asm("move.l   #16_2710, d0");

  DELAY:;
    asm("subq.l   #1, d0                        {delay for 100000 instr}");
    asm("bne      delay");
    asm("move.l   #16_04, 16_401C               {turn bell 1 off}");

    _imp_leave();
  }
  auto void INITIALISEJKC(void) {
    _imp_enter();
    asm("movea.l top,a0");
    asm("move.l (a0),rcb0");
    asm("movea.l (a0),a0");
    asm("move.l (a0),rcb1");
    asm("movea.l (a0),a0");
    asm("move.l (a0),currentrcb");
    asm("move.w #0,attrib");
    CLEARALLTABS();
    TABSTOPS[7] = 1;
    TABSTOPS[15] = 1;
    TABSTOPS[23] = 1;
    TABSTOPS[31] = 1;
    TABSTOPS[39] = 1;
    TABSTOPS[47] = 1;
    TABSTOPS[55] = 1;
    TABSTOPS[63] = 1;
    TABSTOPS[71] = 1;
    TABSTOPS[79] = 1;
    SECURITY = 0;
    BLINKY = 35;
    BLINKRCB = 0;
    FINDRCB(25, LASTRCB);
    asm("movea.l lastrcb,a0");
    asm("move.l (a0),dummyrcb");
    BLANKLINE(SPARERCB);
    BLANKLINE(RCB0);
    BLANKLINE(RCB1);
    TABSSTATUS();
    XYINSTATUS();
    XSTATUS();
    YSTATUS();
    SETBACKGROUND();
    _imp_leave();
  }
  auto void XON(void) {
    _imp_enter();

    _imp_leave();
  }
  auto void XOFF(void) {
    _imp_enter();

    _imp_leave();
  }
  auto void SENDACK(void) {
    _imp_enter();

    _imp_leave();
  }
  auto void SETPADFUNCTION(void) {
    _imp_enter();

    _imp_leave();
  }
  auto void RESETPADFUNCTION(void) {
    _imp_enter();

    _imp_leave();
  }
  auto void LOCKKEYBOARD(void) {
    _imp_enter();

    _imp_leave();
  }
  auto void UNLOCKKEYBOARD(void) {
    _imp_enter();

    _imp_leave();
  }
  auto void READTERMINALID(void) {
    _imp_enter();

    _imp_leave();
  }
  auto void READTERMINALSTATUS(void) {
    _imp_enter();

    _imp_leave();
  }
  auto void SETHOLDSCREEN(void) {
    _imp_enter();

    _imp_leave();
  }
  auto void RESETHOLDSCREEN(void) {
    _imp_enter();

    _imp_leave();
  }
  auto void PRINTERCOMMAND(void) {
    _imp_enter();

    _imp_leave();
  }
  auto void SOUNDBELL(void) {
    _imp_enter();

    _imp_leave();
  }
  auto void SLOWSCROLLENABLE(void) {
    _imp_enter();

    _imp_leave();
  }
  auto void SLOWSCROLLDISABLE(void) {
    _imp_enter();

    _imp_leave();
  }
  auto void PUTINBUFFER(char CHAR) {
    _imp_enter();
    BUFFER[BESP] = CHAR;
    if (BESP == BLEN)
      BESP = 0;
    else
      BESP = BESP + 1;
    _imp_leave();
  }
  auto int NEXTFROMBUFFER(void) {
    _imp_enter();
    int I;
    I = BFSP;
    if (BFSP == BLEN)
      BFSP = 0;
    else
      BFSP = BFSP + 1;
    return (BUFFER[I]);
    _imp_leave();
  }
  auto int EMPTYBUFFER(void) {
    _imp_enter();
    if (BESP == BFSP) return (1);
    return (0);
    _imp_leave();
  }
  auto void UPDATE(void);
  auto void TRAP8(void) {
    _imp_enter();
    char CHAR;
    int VALUE;
    if (EMPTYBUFFER()) {
      UPDATE(); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      ; /*ERROR: name_sym_idx is -1!*/         /*C_NAME*/
      ; /*ERROR: name_sym_idx is -1!*/         /*C_NAME*/
      ;
      NEWLINE(); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      ;
      NEWLINE(); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      ;
      NEWLINE(); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      ;
      NEWLINE(); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      ;
      NEWLINE(); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      ;
      NEWLINE(); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      ;
      NEWLINE(); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      ;
      NEWLINE(); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      ;
      NEWLINE(); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      ;
      NEWLINE(); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      ;
      NEWLINE(); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      ;
      NEWLINE();
      NEWLINE(); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      ; /*ERROR: name_sym_idx is -1!*/          /*C_NAME*/
      ;
      NEWLINE(); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      ;
      NEWLINE(); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      ;
      NEWLINE(); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      ;
      NEWLINE(); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      ;
      NEWLINE(); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      ;
      NEWLINES(2); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      ; /*ERROR: name_sym_idx is -1!*/            /*C_NAME*/
      ;
      while (CHAR != 10) {
        if (CHAR == '~') {
          TERMINATEEDWIN();
          exit(0);
        }
        if (CHAR == '/') {
          VALUE = 0; /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
          ;
          while (CHAR != '/') {
            VALUE = (CHAR - 48) + (VALUE * 10);
                /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
            ;
          }
          CHAR = VALUE & 255;
        }
        PUTINBUFFER(CHAR); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
        ;
      }
    }
    CHAR = NEXTFROMBUFFER();
    asm("move.b char,d0");

    _imp_leave();
  }
  auto void INITIALISE(void) {
    _imp_enter();
    int I;
    int J;
    /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/ TOP = MISSING_RHS;
    TOW = 0; /*ERROR: name_sym_idx is -1!*/                /*C_NAME*/
    SPARERCB = MISSING_RHS; /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    MDB.RCBP = MISSING_RHS;
    MDB.CUX = 0;
    MDB.CUY = 2;
    MDB.FAT = 0b0;
    MDB.FCC = 32;
    MDB.CONTROL = 0xA500;
    MDB.VERTINT = VERTICAL;
    MDB.SOFTINT = SOFT;
    MDB.TSLC = 12;
    for (I = 0; I != 27 + 1; I += 1) {
      if (I < 27) /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
        RCB[I].RCBP = MISSING_RHS;
      RCB[I].SEGMENT[0].HIDDEN = 0;
      RCB[I].SEGMENT[0].VISIBLE = 25; /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      RCB[I].SEGMENT[0].CCP = () | 0x8000;
          /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      RCB[I].SEGMENT[0].AP = MISSING_RHS;
      RCB[I].SEGMENT[1].HIDDEN = 0;
      RCB[I].SEGMENT[1].VISIBLE = 25; /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      RCB[I].SEGMENT[1].CCP = () | 0x8000;
          /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      RCB[I].SEGMENT[1].AP = MISSING_RHS;
      RCB[I].SEGMENT[2].HIDDEN = 0;
      RCB[I].SEGMENT[2].VISIBLE = 30; /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      RCB[I].SEGMENT[2].CCP = MISSING_RHS;
          /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      RCB[I].SEGMENT[2].AP = MISSING_RHS;
          /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      RCB[I].RRDBP = MISSING_RHS;
    }
    /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/ RCB[26].RCBP = MISSING_RHS;
    RCB[26].SEGMENT[0].CCP = 0;
    RCB[27].RCBP = 0;
    RRDB.RR[0] = 0b0011000001001010;
    RRDB.RR[1] = 0b0000000000101001;
    RRDB.RR[2] = 0b0000000001101011;
    RRDB.RR[3] = 0b0000000000101011;
    RRDB.RR[4] = 0b0000000101100111;
    for (I = 0; I != 27 + 1; I += 1) {
      for (J = 0; J != 79 + 1; J += 1) {
        CHARACTERCODE[I][J] = I + 97;
        ATTCODE[I][J] = 0;
      }
    }
    BESP = 0;
    BFSP = 0;
    _imp_leave();
  }
  auto void UPDATE(void) {
    _imp_enter();
    int X;
    int Y;
    int CX;
    int CY;
    int I;
    RCBF *NEXT;
    MDBF *MDB;
    auto void DISPLAYCHAR(char CHAR, short ATTRIB, int X, int Y) {
      _imp_enter();
      int COLOUR;
      int DISP;
      int L;
      COLOUR = 0;
      DISP = 0;
      L = 0;
      if ((ATTRIB & 0x2000) != 0) {
        COLOUR = 0;

      } else {
        if ((ATTRIB & 0x1) != 0) COLOUR = COLOUR | 4;
        if ((ATTRIB & 0x20) != 0) COLOUR = COLOUR | 2;
        if ((ATTRIB & 0x40) != 0) COLOUR = COLOUR | 1;
        COLOUR = COLOUR + 1;
      }
      if ((ATTRIB & 0x10) != 0) DISP = 1;
      if ((ATTRIB & 0x8) != 0) DISP = -1;
      if ((ATTRIB & 0x4) != 0) L = 6;
      if ((ATTRIB & 0x2) != 0) L = 1;
      if (COLOUR == 8) COLOUR = 1;
      SETCOLOUR(COLOUR);
      MOVEABS(X * 8, Y * 13 + 2 + DISP);
      CHARACTER(CHAR);
      if (L != 0) {
        MOVEABS(X * 8, Y * 13 + L);
        LINEREL(7, 0);
      }
      if (X == CX && 25 - Y == CY) {
        SETCOLOUR(1); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
        ;
      }
      _imp_leave();
    }
    auto void DISPLAYSEGMENT(int *X, int *Y, SEGMENTF SEG) {
      _imp_enter();
      int NOOFCHAR;
      int I;
      int CBASE;
      int ABASE;
      int AR3;
      char CHAR;
      short ATTRIB;
      NOOFCHAR = SEG.HIDDEN + SEG.VISIBLE;
      CBASE = SEG.CCP;
      ABASE = SEG.AP;
      while (NOOFCHAR != 0) {
        asm("move.l a3, ar3");
        asm("move.l cbase, a3");
        asm("move.b (a3), char");
        asm("move.l abase, a3");
        asm("move.w (a3), attrib");
        asm("move.l ar3, a3");
        CBASE = CBASE + 1;
        ABASE = ABASE + 2;
        DISPLAYCHAR(CHAR, ATTRIB, X, Y);
        X = X + 1;
        NOOFCHAR = NOOFCHAR - 1;
      }

      _imp_leave();
    }
    NEWFRAME(); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
        /*ERROR: name_sym_idx is -1!*/         /*C_NAME*/
    MDB = &; /*ERROR: name_sym_idx is -1!*/    /*C_NAME*/
    NEXT = &;
    CX = MDB->CUX;
    CY = MDB->CUY;
    Y = 25;
    while (/*ERROR: name_sym_idx is -1!*/ /*C_NAME*/ () != NEXT->RCBP &&
           NEXT->SEGMENT[0].CCP != 0) {
      X = 0;
      for (I = 0; I != 2 + 1; I += 1) {
        DISPLAYSEGMENT(X, Y, NEXT->SEGMENT[I]);
      }
      Y = Y - 1; /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
      NEXT = &;
    }

    _imp_leave();
  }
  INITIALISE();
  INITIALISEJKC();
  INITIALISEFOR('F'); /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
  ; /*ERROR: name_sym_idx is -1!*/                   /*C_NAME*/
  ;
  SETCHARQUALITY(12);
  SETCHARSIZE(6);
  SETSHADEMODE(0);
  goto PARSER;
PARSER:;
  INSERTON = 0;
ERROR:;

START:;
  TRAP8();
  asm("cmpi.b #32, d0");
  asm("blt non alpha");
  asm("cmpi.b #126, d0");
  asm("bgt decide");
  asm("move.b d0, ch");
  if (INSERTON == 0) /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    WRITECHAR();
  else /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/
    INSERTCHAR();
  goto START;
NONALPHA:;
  asm("cmpi.b #27, d0");
  asm("bne decide");
  TRAP8();
  asm("cmpi.b #89, d0");
  asm("bne decide");
  TRAP8();
  asm("subi.b #32, d0");
  asm("move.b d0, x");
  TRAP8();
  asm("subi.b #32, d0");
  asm("move.b d0, y");
  asm("moveq #89, d0");

DECIDE:;
  asm("cmpi.b #127,d0");
  asm("bgt error");
  asm("move.b d0, ch");
  goto /*ERROR: name_sym_idx is -1!*/ /*C_NAME*/ *CHARCODE[];
CHARCODE_0:;
CHARCODE_1:;
CHARCODE_2:;
CHARCODE_3:;
CHARCODE_4:;
  goto ERROR;
CHARCODE_5:;
  SENDACK();
  goto START;
CHARCODE_6:;
  goto START;
CHARCODE_7:;
  SOUNDBELL();
  goto START;
CHARCODE_8:;
  CURSORLEFT();
  goto START;
CHARCODE_9:;
  TAB();
  goto START;
CHARCODE_10:;
  LINEFEED();
  goto START;
CHARCODE_11:;
  LINEFEED();
  goto START;
CHARCODE_12:;
  LINEFEED();
  goto START;
CHARCODE_13:;
  CARRIAGERETURN();
  goto START;
CHARCODE_14:;
CHARCODE_15:;
CHARCODE_16:;
  goto ERROR;
CHARCODE_17:;
  XON();
  goto START;
CHARCODE_18:;
  goto ERROR;
CHARCODE_19:;
  XOFF();
  goto START;
CHARCODE_20:;
CHARCODE_21:;
CHARCODE_22:;
CHARCODE_23:;
CHARCODE_24:;
CHARCODE_25:;
CHARCODE_26:;
CHARCODE_27:;
CHARCODE_28:;
CHARCODE_29:;
CHARCODE_30:;
CHARCODE_31:;
CHARCODE_32:;
  goto ERROR;
CHARCODE_33:;
  SETSUPERSCRIPT();
  goto START;
CHARCODE_34:;
  goto ERROR;
CHARCODE_35:;
  RESETSUPERSCRIPT();
  goto START;
CHARCODE_36:;
CHARCODE_37:;
CHARCODE_38:;
CHARCODE_39:;
CHARCODE_40:;
CHARCODE_41:;
  goto ERROR;
CHARCODE_42:;
  SETSUBSCRIPT();
  goto START;
CHARCODE_43:;
  RESETSUBSCRIPT();
  goto START;
CHARCODE_44:;
CHARCODE_45:;
CHARCODE_46:;
CHARCODE_47:;
  goto ERROR;
CHARCODE_48:;
  SETSTRIKETHROUGH();
  goto START;
CHARCODE_49:;
  SETTAB();
  goto START;
CHARCODE_50:;
  CLEARTAB();
  goto START;
CHARCODE_51:;
  SETFOREGROUND();
  goto START;
CHARCODE_52:;
  SETBACKGROUND();
  goto START;
CHARCODE_53:;
  RESETSTRIKETHROUGH();
  goto START;
CHARCODE_54:;
CHARCODE_55:;
CHARCODE_56:;
CHARCODE_57:;
CHARCODE_58:;
CHARCODE_59:;
CHARCODE_60:;
  goto ERROR;
CHARCODE_61:;
  SETPADFUNCTION();
  goto START;
CHARCODE_62:;
  RESETPADFUNCTION();
  goto START;
CHARCODE_63:;
CHARCODE_64:;
  goto ERROR;
CHARCODE_65:;
  CURSORUP();
  goto START;
CHARCODE_66:;
  CURSORDOWN();
  goto START;
CHARCODE_67:;
  CURSORRIGHT();
  goto START;
CHARCODE_68:;
  CURSORLEFT();
  goto START;
CHARCODE_69:;
  SETUNDERLINE();
  goto START;
CHARCODE_70:;
CHARCODE_71:;
  goto ERROR;
CHARCODE_72:;
  CURSORHOME();
  goto START;
CHARCODE_73:;
  CURSORUPSCROLL();
  goto START;
CHARCODE_74:;
  ERASEENDOFPAGE();
  goto START;
CHARCODE_75:;
  ERASEENDOFLINE();
  goto START;
CHARCODE_76:;
  INSERTLINE();
  goto START;
CHARCODE_77:;
  DELETELINE();
  goto START;
CHARCODE_78:;
  goto ERROR;
CHARCODE_79:;
  DELETECHARACTER();
  goto START;
CHARCODE_80:;
  goto ERROR;
CHARCODE_81:;
  RESETUNDERLINE();
  goto START;
CHARCODE_82:;
  SETREVERSE();
  goto START;
CHARCODE_83:;
  goto ERROR;
CHARCODE_84:;
  RESETREVERSE();
  goto START;
CHARCODE_85:;
CHARCODE_86:;
  goto ERROR;
CHARCODE_87:;
  PRINTERCOMMAND();
  goto START;
CHARCODE_88:;
  PRINTERCOMMAND();
  goto START;
CHARCODE_89:;
  CURSORADDRESS(X, Y);
  goto START;
CHARCODE_90:;
  READTERMINALID();
  goto START;
CHARCODE_91:;
  SETHOLDSCREEN();
  goto START;
CHARCODE_92:;
  RESETHOLDSCREEN();
  goto START;
CHARCODE_93:;
  PRINTERCOMMAND();
  goto START;
CHARCODE_94:;
  PRINTERCOMMAND();
  goto START;
CHARCODE_95:;
  PRINTERCOMMAND();
  goto START;
CHARCODE_96:;
  goto ERROR;
CHARCODE_97:;
  SETSECURITY();
  goto START;
CHARCODE_98:;
  RESETSECURITY();
  goto START;
CHARCODE_99:;
  SLOWSCROLLENABLE();
  goto START;
CHARCODE_100:;
  SLOWSCROLLDISABLE();
  goto START;
CHARCODE_101:;
  READTERMINALSTATUS();
  goto START;
CHARCODE_102:;
  ERASEENDOFFIELD();
  goto START;
CHARCODE_103:;
  CLEARALLTABS();
  goto START;
CHARCODE_104:;
  LOCKKEYBOARD();
  goto START;
CHARCODE_105:;
  INSERTSTATUSSET();
  goto START;
CHARCODE_106:;
  INSERTSTATUSRESET();
  goto START;
CHARCODE_107:;
  STOPBLINK();
  goto START;
CHARCODE_108:;
  UNLOCKKEYBOARD();
  goto START;
CHARCODE_109:;
CHARCODE_110:;
CHARCODE_111:;
CHARCODE_112:;
CHARCODE_113:;
  goto ERROR;
CHARCODE_114:;
  READCURSORADDRESS(X, Y);
  goto START;
CHARCODE_115:;
  BLINKLINE();
  goto START;
CHARCODE_116:;
  CLEARLINE();
  goto START;
CHARCODE_117:;
  CLEARENDOFPAGEBKGND();
  goto START;
CHARCODE_118:;
  CLEARPAGE();
  goto START;
CHARCODE_119:;
  ERASEPAGE();
  goto START;
CHARCODE_120:;
  CLEARENDOFLINE();
  goto START;
CHARCODE_121:;
  CLEARTOENDOFPAGE();
  goto START;
CHARCODE_122:;
  BACKTAB();
  goto START;
CHARCODE_123:;
CHARCODE_124:;
CHARCODE_125:;
CHARCODE_126:;
  goto ERROR;
CHARCODE_127:;
  CURSORLEFT();
  DELETECHARACTER();
  goto START;
  _imp_leave();
  exit(0);
  return (0);
}
