home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d8xx / d886 / goalkeeper.lha / GoalKeeper / Sources / Results.c < prev    next >
C/C++ Source or Header  |  1993-07-16  |  16KB  |  522 lines

  1.  
  2. #include <intuition/intuition.h>
  3. #include <exec/memory.h>
  4.  
  5. struct GameData
  6. {
  7.    UBYTE  TeamA[12], TeamB[12];
  8.    ULONG  pl1_score, pl2_score;
  9. };
  10.  
  11. struct PlayerData
  12. {
  13.    UBYTE  pl_num;
  14.    UBYTE  pl_name[12];
  15.    UWORD  gw, gd, gl;
  16.    ULONG  gf, ga;
  17. };
  18.  
  19. struct DataSeg
  20. {
  21.    UBYTE  pl_entered;
  22.    UBYTE  games_played;
  23.    struct GameData  LastResults[8];
  24.    struct PlayerData  Player[8];
  25. };
  26.  
  27. struct NameGadget
  28. {
  29.    struct Gadget  ResetGadget, Pl1Gadget, Pl2Gadget;
  30.    struct StringInfo  SInfo;
  31.    struct Gadget  StringGadget;
  32. };
  33.  
  34. struct NG2     /* for easy copying of structure */
  35. {
  36.    struct NameGadget  NG;
  37. };
  38.  
  39. #define NGSIZE sizeof(struct NameGadget)
  40.  
  41. struct DataSeg  Temp;
  42. extern struct DataSeg  Data;
  43.  
  44. extern struct IntuitionBase  *IntuitionBase;
  45. struct Window *RWindow;
  46. struct RastPort  *RRPort;
  47. struct IntuiMessage *Rmessage, *mes2;
  48. void  *OpenLibrary();
  49. void  *AllocMem();
  50. struct NameGadget  *Gptr[8];
  51. UBYTE  Pl1_selected, Pl2_selected;
  52. UBYTE  Result[37];
  53. extern struct Window  *Window;
  54.  
  55. #define R_pl1_pos 0
  56. #define R_vs_pos  12
  57. #define R_pl2_pos 15
  58. #define R_sc1_pos 30
  59. #define R_ln_pos  32
  60. #define R_sc2_pos 35
  61. #define R_end_pos 36
  62.  
  63. extern struct TextAttr  Style;
  64.  
  65. struct IntuiText
  66. Sure_text = {  0, 1, JAM2, 10, 10, &Style,
  67.    (UBYTE *)"Warning: all player data will be lost!", NULL },
  68. Yes_text = {  0, 1, JAM2, 5, 3, &Style, (UBYTE *)"Continue", NULL },
  69. No_text = {  0, 1, JAM2, 5, 3, &Style, (UBYTE *)"Cancel", NULL },
  70. Result_text = {  2, 3, JAM2, 0, 0, &Style, Result, NULL },
  71. plscore_txt = {  1, 0, JAM2, -6, -12, &Style, (UBYTE *)"Score", NULL },
  72. OK_text = {  1, 0, JAM2, 6, 2, &Style, (UBYTE *)"Accept", NULL },
  73. Cancel_text = {  1, 0, JAM2, 6, 2, &Style, (UBYTE *)"Cancel", NULL },
  74. Reset_text = {  1, 0, JAM2, -14, -12, &Style, (UBYTE *)"Reset", NULL },
  75. TmA_text = {  1, 0, JAM2, -14, -12, &Style, (UBYTE *)"Team A", NULL },
  76. TmB_text = {  1, 0, JAM2, -14, -12, &Style, (UBYTE *)"Team B", NULL },
  77. plus   = {  1, 0, JAM2, 2, 2, &Style, (UBYTE *)"+", NULL },
  78. minus  = {  1, 0, JAM2, 2, 2, &Style, (UBYTE *)"-", NULL };
  79.  
  80. WORD  OKPairs[] =
  81. {  60, 1, 60, 11, 0, 11   };
  82. WORD  OKPairsa[] =
  83. {  0, 10, 0, 0, 60, 0   };
  84.  
  85. struct Border  OKBoxa =
  86. {  0, 0, 2, 0, JAM1, 3, OKPairsa, NULL  };
  87. struct Border  OKBox =
  88. {  0, 0, 1, 0, JAM1, 3, OKPairs, &OKBoxa  };
  89.  
  90. WORD  RGadgetPairs3[] =
  91. {  99, 1, 99, 11, 0, 11   };
  92. WORD  RGadgetPairs3a[] =
  93. {  0, 10, 0, 0, 99, 0   };
  94.  
  95. struct Border  RGadgetBorder3a =
  96. {  -2, -2, 2, 0, JAM1, 3, RGadgetPairs3a, NULL  };
  97. struct Border  RGadgetBorder3 =
  98. {  -2, -2, 1, 0, JAM1, 3, RGadgetPairs3, &RGadgetBorder3a  };
  99.  
  100. WORD  sbPairs[] =
  101. {  12, 1, 12, 11, 0, 11   };
  102. WORD  sbPairsa[] =
  103. {  0, 10, 0, 0, 12, 0   };
  104.  
  105. struct Border  squareboxa =
  106. {  0, 0, 2, 0, JAM1, 3, sbPairsa, NULL  };
  107. struct Border  squarebox =
  108. {  0, 0, 1, 0, JAM1, 3, sbPairs, &squareboxa  };
  109.  
  110. WORD  ResPairs[] =
  111. {  293, 1, 293, 11, 0, 11   };
  112. WORD  ResPairsa[] =
  113. {  0, 10, 0, 0, 293, 0   };
  114. WORD  ResPairsb[] =
  115. {  1, 1, 292, 1, 292, 10, 1, 10, 1, 1  };
  116.  
  117. struct Border  ResBorderb =
  118. {  -3, -2, 3, 0, JAM1, 5, ResPairsb, NULL  };
  119. struct Border  ResBordera =
  120. {  -3, -2, 1, 0, JAM1, 3, ResPairsa, &ResBorderb  };
  121. struct Border  ResBorder =
  122. {  -3, -2, 2, 0, JAM1, 3, ResPairs, &ResBordera  };
  123.  
  124. WORD  IntPairs[] =
  125. {  27, 1, 27, 11, 0, 11   };
  126. WORD  IntPairsa[] =
  127. {  0, 10, 0, 0, 27, 0   };
  128.  
  129. struct Border  IntBordera =
  130. {  -2, -2, 2, 0, JAM1, 3, IntPairsa, NULL  };
  131. struct Border  IntBorder =
  132. {  -2, -2, 1, 0, JAM1, 3, IntPairs, &IntBordera  };
  133.  
  134. struct NameGadget  OneNameGadget =
  135. {
  136.    NULL, 0, 0, 13, 12, GADGHCOMP, RELVERIFY,   /* ResetGadget */
  137.    BOOLGADGET, &squarebox, NULL, NULL, NULL, NULL, 0, NULL,
  138.    NULL, 0, 0, 13, 12, GADGHCOMP, TOGGLESELECT | GADGIMMEDIATE,   /* Pl1Gadget */
  139.    BOOLGADGET, (APTR)&squarebox, NULL, NULL, NULL, NULL, 0, NULL,
  140.    NULL, 0, 0, 13, 12, GADGHCOMP, TOGGLESELECT | GADGIMMEDIATE,   /* Pl2Gadget */
  141.    BOOLGADGET, (APTR)&squarebox, NULL, NULL, NULL, NULL, 0, NULL,
  142.    NULL, NULL, 0, 12, 0, 0, 0, 0, 0, 0,   /* SInfo */
  143.    NULL, 0, NULL,
  144.    NULL, 0, 0, 100, 12, GADGHCOMP, RELVERIFY, STRGADGET,   /* StrGadget */
  145.    (APTR)&RGadgetBorder3, NULL, NULL, NULL, NULL, 0, NULL
  146. };
  147.  
  148. UBYTE  pl1score_buf[3] = "0", pl2score_buf[3] = "0";
  149.  
  150. struct StringInfo  pl2score_SInfo =
  151. {
  152.    pl2score_buf, NULL, 0, 3, 0, 0, 0, 0, 0, 0,
  153.    NULL, 0, NULL
  154. };
  155.  
  156. struct StringInfo  pl1score_SInfo =
  157. {
  158.    pl1score_buf, NULL, 0, 3, 0, 0, 0, 0, 0, 0,
  159.    NULL, 0, NULL
  160. };
  161.  
  162. #define g_Pl1     20
  163. #define g_Pl2     30
  164. #define g_Reset   40
  165. #define g_String  50
  166. #define g_OK      10
  167. #define g_Cancel  11
  168. #define g_minus2   7
  169. #define g_plus2    6
  170. #define g_pl2score 2
  171. #define g_minus1   5
  172. #define g_plus1    4
  173. #define g_pl1score 1
  174.  
  175. struct Gadget  Cancel_gadget =
  176. {
  177.    NULL, 48, 142, 61, 12, GADGHCOMP, RELVERIFY, BOOLGADGET,
  178.    (APTR)&OKBox, NULL, (APTR)&Cancel_text, NULL, NULL, g_Cancel, NULL
  179. };
  180.  
  181. struct Gadget  OK_gadget =
  182. {
  183.    &Cancel_gadget, 48, 128, 61, 12, GADGHCOMP, RELVERIFY, BOOLGADGET,
  184.    (APTR)&OKBox, NULL, (APTR)&OK_text, NULL, NULL, g_OK, NULL
  185. };
  186.  
  187. struct Gadget  Minus_gadget2 =
  188. {
  189.    &OK_gadget, 245, 138, 13, 12, GADGHCOMP, RELVERIFY | GADGIMMEDIATE, BOOLGADGET,
  190.    (APTR)&squarebox, NULL, (APTR)&minus, NULL, NULL, g_minus2, NULL
  191. };
  192.  
  193. struct Gadget  Plus_gadget2 =
  194. {
  195.    &Minus_gadget2, 286, 138, 13, 12, GADGHCOMP, RELVERIFY | GADGIMMEDIATE,
  196.    BOOLGADGET, (APTR)&squarebox, NULL, (APTR)&plus, NULL, NULL, g_plus2, NULL
  197. };
  198.  
  199. struct Gadget  pl2score_gadget =
  200. {
  201.    &Plus_gadget2, 260, 140, 27, 14, GADGHCOMP, RELVERIFY | LONGINT | STRINGRIGHT,
  202.    STRGADGET, (APTR)&IntBorder, NULL, &plscore_txt, NULL, &pl2score_SInfo,
  203.    g_pl2score, NULL
  204. };
  205.  
  206. struct Gadget  Minus_gadget1 =
  207. {
  208.    &pl2score_gadget, 155, 138, 13, 12, GADGHCOMP, RELVERIFY | GADGIMMEDIATE,
  209.    BOOLGADGET, (APTR)&squarebox, NULL, (APTR)&minus, NULL, NULL, g_minus1, NULL
  210. };
  211.  
  212. struct Gadget  Plus_gadget1 =
  213. {
  214.    &Minus_gadget1, 196, 138, 13, 12, GADGHCOMP, RELVERIFY | GADGIMMEDIATE,
  215.    BOOLGADGET, (APTR)&squarebox, NULL, (APTR)&plus, NULL, NULL, g_plus1, NULL
  216. };
  217.  
  218. struct Gadget  pl1score_gadget =
  219. {
  220.    &Plus_gadget1, 170, 140, 27, 14, GADGHCOMP, RELVERIFY | LONGINT | STRINGRIGHT,
  221.    STRGADGET, (APTR)&IntBorder, NULL, &plscore_txt, NULL, &pl1score_SInfo,
  222.    g_pl1score, NULL
  223. };
  224.  
  225.  
  226. struct NewWindow NewRWindow =
  227. {
  228.    120, 10, 322, 177, -1, -1,
  229.    GADGETDOWN | GADGETUP,
  230.    WINDOWDEPTH | WINDOWDRAG | SMART_REFRESH | ACTIVATE,
  231.    &pl1score_gadget, NULL, (UBYTE *)"Match results",
  232.    NULL, NULL, 0, 0, 0, 0, WBENCHSCREEN,
  233. };
  234.  
  235. BOOL  GetResult()
  236. {
  237.    ULONG  MessageClass;
  238.    UWORD  code, GadgetNr;
  239.    struct Gadget *GadgetPtr;
  240.    struct Message  *GetMsg();
  241.    struct PlayerData  *Pptr;
  242.    ULONG  sc1, sc2;
  243.    int  i;
  244.  
  245.    Temp = Data;
  246.    pl1score_SInfo.LongInt = 0;
  247.    pl2score_SInfo.LongInt = 0;
  248.    strcpy(pl1score_buf, "0");
  249.    strcpy(pl2score_buf, "0");
  250.    DoGadgets();
  251.    ROpen_All();
  252.    MakeResString();
  253.  
  254.    FOREVER
  255.    {
  256.       if (!(Rmessage = (struct IntuiMessage *)
  257.           GetMsg(RWindow->UserPort)))
  258.       {
  259.          Wait(1L << RWindow->UserPort->mp_SigBit);
  260.          continue;
  261.       }
  262.       MessageClass = Rmessage->Class;
  263.       code = Rmessage->Code;
  264.       GadgetPtr = (struct Gadget *) Rmessage->IAddress;
  265.       GadgetNr = GadgetPtr->GadgetID;
  266.       ReplyMsg(Rmessage);
  267.       switch(MessageClass)
  268.       {
  269.          case GADGETUP:
  270.             if ((GadgetNr >= g_Reset) && (GadgetNr < g_Reset + 8))
  271.             {
  272.                if (AutoRequest(RWindow, &Sure_text, &Yes_text, &No_text,
  273.                   0L, 0L, IntuiTextLength(&Sure_text) + 60L, 60L))
  274.                {
  275.                   Pptr = &Temp.Player[GadgetNr - g_Reset];
  276.                   Pptr->gw = 0;
  277.                   Pptr->gd = 0;
  278.                   Pptr->gl = 0;
  279.                   Pptr->gf = 0;
  280.                   Pptr->ga = 0;
  281.                   strcpy(Pptr->pl_name, "Player x");
  282.                   Pptr->pl_name[7] = '1' + Pptr->pl_num;
  283.                   RefreshGList(&Gptr[GadgetNr - g_Reset]->StringGadget,
  284.                      RWindow, NULL, 1L);
  285.                   MakeResString();
  286.                }
  287.             }
  288.             else if ((GadgetNr >= g_String) && (GadgetNr < g_String + 8))
  289.                MakeResString();
  290.             else switch (GadgetNr)
  291.             {
  292.                case g_OK:
  293.                   sc1 = pl1score_SInfo.LongInt;
  294.                   sc2 = pl2score_SInfo.LongInt;
  295.                   Temp.Player[Pl1_selected].gf += sc1;
  296.                   Temp.Player[Pl1_selected].ga += sc2;
  297.                   Temp.Player[Pl2_selected].gf += sc2;
  298.                   Temp.Player[Pl2_selected].ga += sc1;
  299.                   if (sc1 > sc2)
  300.                   {
  301.                      Temp.Player[Pl1_selected].gw++;
  302.                      Temp.Player[Pl2_selected].gl++;
  303.                   }
  304.                   else if (sc1 == sc2)
  305.                   {
  306.                      Temp.Player[Pl1_selected].gd++;
  307.                      Temp.Player[Pl2_selected].gd++;
  308.                   }
  309.                   else
  310.                   {
  311.                      Temp.Player[Pl1_selected].gl++;
  312.                      Temp.Player[Pl2_selected].gw++;
  313.                   }
  314.                   if (Temp.games_played < 8)
  315.                   {
  316.                      strcpy(Temp.LastResults[Temp.games_played].TeamA,
  317.                         Temp.Player[Pl1_selected].pl_name);
  318.                      strcpy(Temp.LastResults[Temp.games_played].TeamB,
  319.                         Temp.Player[Pl2_selected].pl_name);
  320.                      Temp.LastResults[Temp.games_played].pl1_score = sc1;
  321.                      Temp.LastResults[Temp.games_played].pl2_score = sc2;
  322.                      Temp.games_played++;
  323.                   }
  324.                   else
  325.                   {
  326.                      for (i = 0; i < 7; i++)
  327.                         Temp.LastResults[i] = Temp.LastResults[i + 1];
  328.                      strcpy(Temp.LastResults[7].TeamA,
  329.                         Temp.Player[Pl1_selected].pl_name);
  330.                      strcpy(Temp.LastResults[7].TeamB,
  331.                         Temp.Player[Pl2_selected].pl_name);
  332.                      Temp.LastResults[7].pl1_score = sc1;
  333.                      Temp.LastResults[7].pl2_score = sc2;
  334.                   }
  335.                   Data = Temp;
  336.                   RClose_All();
  337.                   while (mes2 = (struct IntuiMessage *) GetMsg(Window->UserPort))
  338.                      ReplyMsg(mes2);
  339.                   return(TRUE);
  340.                   break;
  341.  
  342.                case g_Cancel:
  343.                   RClose_All();
  344.                   while (mes2 = (struct IntuiMessage *) GetMsg(Window->UserPort))
  345.                      ReplyMsg(mes2);
  346.                   return(FALSE);
  347.                   break;
  348.  
  349.                case g_pl1score:
  350.                   MakeResString();
  351.                   break;
  352.  
  353.                case g_pl2score:
  354.                   MakeResString();
  355.                   break;
  356.             }
  357.             break;
  358.  
  359.          case GADGETDOWN:
  360.             if ((GadgetNr >= g_Pl1) && (GadgetNr < g_Pl1 + 8))
  361.             {
  362.                if (GadgetNr - g_Pl1 != Pl2_selected)
  363.                {
  364.                   ToggleGadget(&Gptr[Pl1_selected]->Pl1Gadget);
  365.                   Pl1_selected = GadgetNr - g_Pl1;
  366.                }
  367.                else ToggleGadget(&Gptr[GadgetNr - g_Pl1]->Pl1Gadget);
  368.             }
  369.             else if ((GadgetNr >= g_Pl2) && (GadgetNr < g_Pl2 + 8))
  370.             {
  371.                if (GadgetNr - g_Pl2 != Pl1_selected)
  372.                {
  373.                   ToggleGadget(&Gptr[Pl2_selected]->Pl2Gadget);
  374.                   Pl2_selected = GadgetNr - g_Pl2;
  375.                }
  376.                else ToggleGadget(&Gptr[GadgetNr - g_Pl2]->Pl2Gadget);
  377.             }
  378.             else switch(GadgetNr)
  379.             {
  380.                case g_plus1:
  381.                   if (pl1score_SInfo.LongInt < 99)
  382.                      UpdateGadg(&pl1score_gadget, ++pl1score_SInfo.LongInt);
  383.                   break;
  384.  
  385.                case g_minus1:
  386.                   if (pl1score_SInfo.LongInt > 0)
  387.                      UpdateGadg(&pl1score_gadget, --pl1score_SInfo.LongInt);
  388.                   break;
  389.  
  390.                case g_plus2:
  391.                   if (pl2score_SInfo.LongInt < 99)
  392.                      UpdateGadg(&pl2score_gadget, ++pl2score_SInfo.LongInt);
  393.                   break;
  394.  
  395.                case g_minus2:
  396.                   if (pl2score_SInfo.LongInt > 0)
  397.                      UpdateGadg(&pl2score_gadget, --pl2score_SInfo.LongInt);
  398.                   break;
  399.             }
  400.             MakeResString();
  401.             break;
  402.       }
  403.    }
  404. }
  405.  
  406. ROpen_All()
  407. {
  408.    struct Window  *OpenWindow();
  409.  
  410.    if (!(RWindow = (struct Window *)
  411.        OpenWindow(&NewRWindow)))
  412.    {
  413.       puts(NULL, "Fout bij openen venster", NULL);
  414.       RClose_All();
  415.       return(FALSE);
  416.    }
  417.    RRPort = RWindow->RPort;
  418.    DrawBorder(RRPort, &ResBorder, 16L, 163L);
  419. }
  420.  
  421. RClose_All()
  422. {
  423.    int  i;
  424.  
  425.    if (RWindow) CloseWindow(RWindow);
  426.    for (i = 0; i < 8; i++) if (Gptr[i]) FreeMem(Gptr[i], NGSIZE);
  427. }
  428.  
  429. DoGadgets()
  430. {
  431.    int  i, j;
  432.    struct NG2  *G2ptr;
  433.  
  434.  
  435.    for (i= 0; i < 8; i++)
  436.    {
  437.       Gptr[i] =  (struct NameGadget *) AllocMem(NGSIZE, MEMF_PUBLIC | MEMF_CLEAR);
  438.       if (!Gptr[i]) puts("no memory!");
  439.       else
  440.       {
  441.          G2ptr = (struct NG2 *) Gptr[i];
  442.          G2ptr->NG = OneNameGadget;
  443.          if (i > 0) Gptr[i]->ResetGadget.NextGadget = &Gptr[i-1]->StringGadget;
  444.          else Gptr[i]->ResetGadget.NextGadget = NULL;
  445.          Gptr[i]->ResetGadget.LeftEdge = 20;
  446.          Gptr[i]->ResetGadget.TopEdge = 26 + 12*i;
  447.          Gptr[i]->ResetGadget.GadgetID = g_Reset + i;
  448.          Gptr[i]->Pl1Gadget.NextGadget = &Gptr[i]->ResetGadget;
  449.          Gptr[i]->Pl1Gadget.LeftEdge = 180;
  450.          Gptr[i]->Pl1Gadget.TopEdge = 26 + 12*i;
  451.          Gptr[i]->Pl1Gadget.GadgetID = g_Pl1 + i;
  452.          Gptr[i]->Pl2Gadget.NextGadget = &Gptr[i]->Pl1Gadget;
  453.          Gptr[i]->Pl2Gadget.LeftEdge = 270;
  454.          Gptr[i]->Pl2Gadget.TopEdge = 26 + 12*i;
  455.          Gptr[i]->Pl2Gadget.GadgetID = g_Pl2 + i;
  456.          Gptr[i]->StringGadget.NextGadget = &Gptr[i]->Pl2Gadget;
  457.          Gptr[i]->StringGadget.LeftEdge = 45;
  458.          Gptr[i]->StringGadget.TopEdge = 28 + 12*i;
  459.          Gptr[i]->StringGadget.SpecialInfo = &Gptr[i]->SInfo;
  460.          Gptr[i]->StringGadget.GadgetID = g_String + i;
  461.          Gptr[i]->SInfo.Buffer = Temp.Player[i].pl_name;
  462.       }
  463.       Gptr[0]->Pl1Gadget.Flags |= SELECTED;
  464.       Gptr[1]->Pl2Gadget.Flags |= SELECTED;
  465.       Pl1_selected = 0;
  466.       Pl2_selected = 1;
  467.       Gptr[0]->Pl1Gadget.GadgetText = &TmA_text;
  468.       Gptr[0]->Pl2Gadget.GadgetText = &TmB_text;
  469.       Gptr[0]->ResetGadget.GadgetText = &Reset_text;
  470.       Cancel_gadget.NextGadget = &Gptr[7]->StringGadget;
  471.    }
  472. }
  473.  
  474. UpdateGadg(gadg, LI)
  475. struct Gadget  *gadg;
  476. LONG  LI;
  477. {
  478.    struct StringInfo  *SIP;
  479.    UBYTE  *buf;
  480.  
  481.    SIP = (struct StringInfo *) gadg->SpecialInfo;
  482.    buf = SIP->Buffer;
  483.  
  484.    if (LI > 9)
  485.    {
  486.       buf[0] = '0' + LI / 10;
  487.       buf[1] = '0' + LI % 10;
  488.       buf[2] = 0;
  489.    }
  490.    else
  491.    {
  492.       buf[0] = '0' + LI;
  493.       buf[1] = 0;
  494.    }
  495.    RefreshGList(gadg, RWindow, NULL, 1L);
  496. }
  497.  
  498. ToggleGadget(gadg)
  499. struct Gadget  *gadg;
  500. {
  501.    RemoveGadget(RWindow, gadg);
  502.    RefreshGList(gadg, RWindow, NULL, 1L);
  503.    gadg->Flags ^= SELECTED;
  504.    AddGadget(RWindow, gadg, RWindow, -1L);
  505.    RefreshGList(gadg, RWindow, NULL, 1L);
  506. }
  507.  
  508. MakeResString()
  509. {
  510.    int  i;
  511.  
  512.    for (i = 0; i < R_end_pos; i++) Result[i] = ' ';
  513.    strcpynz(&Result[R_pl1_pos], Temp.Player[Pl1_selected].pl_name);
  514.    strcpynz(&Result[R_vs_pos], "vs");
  515.    strcpynz(&Result[R_pl2_pos], Temp.Player[Pl2_selected].pl_name);
  516.    longcpynz(&Result[R_sc1_pos], pl1score_SInfo.LongInt);
  517.    Result[R_ln_pos] = '-';
  518.    longcpynz(&Result[R_sc2_pos],  pl2score_SInfo.LongInt);
  519.    Result[R_end_pos] = 0;
  520.    PrintIText(RRPort, &Result_text, 16L, 163L);
  521. }
  522.