//************************************************************************************
//**  
//**  Source name:   C:\FcM510\24\S3_24_1\S3_24_1.fcfx
//**  Title:         
//**  Description:   
//**  Device:        ESP.ESP32.ESP32-S3_MINI
//**  
//**  Generated by:  Flowcode v10.1.0.38
//**  Date:          Wednesday, April 10, 2024 11:26:41
//**  Users:         10
//**  Registered to: stefan.erni (66718025)
//**  Licence key: W94AZR
//**  
//**  
//**  https://www.flowcode.co.uk
//**  
//************************************************************************************


#include "C:\FcM510\24\S3_24_1\S3_24_1.h"


/*========================================================================*\
   Use :cal_spi1
       :GUID: c67171df-0ad6-4b11-8361-cfe14b072847
       :Location: C:\ProgramData\MatrixTSL\FlowcodeV10\Components\cal_spi.fcpx
       :Version: 13.0 (0x200128)
       :Timestamp: 22\02\2024
       :Variable declarations
       :Macro implementations
\*========================================================================*/
MX_GLOBAL MX_UINT32 FCV_01531_cal_spi1__CONSOLELOG;

/*=----------------------------------------------------------------------=*\
   Use :Outputs a low signal to the chip select pin to select the remote slave device.
\*=----------------------------------------------------------------------=*/
void FCD_01531_cal_spi1__Master_Enable_CS()
{
  //Local variable definitions
  #define FCLsz_STR 20
  MX_CHAR FCL_STR[FCLsz_STR];

  #if (1)
    #if (1) // 0 == 0
      #if (0)
      //Code has been optimised out by the pre-processor
      // #else
      #endif

    // #else
    //Code has been optimised out by the pre-processor
    #endif

  // #else
  //Code has been optimised out by the pre-processor
  #endif

  //Local variable definitions
  #undef FCLsz_STR
}

/*=----------------------------------------------------------------------=*\
   Use :Send text to the SPI console.
       :Exposed as part of the CAL_SPI component to allow none AutoCS pins and other.
       :
       :Parameters for macro Prv_TextConsole:
       :  str[20] : MX_CHAR (by-ref)
       :  Colour : 0=Default, 1=TX, 2=RX
       :  AppendTimestamp : 0=Don't Append / 1=Do Append
\*=----------------------------------------------------------------------=*/
void FCD_01531_cal_spi1__Prv_TextConsole(MX_CHAR *FCL_STR, MX_UINT16 FCLsz_STR, MX_UINT8 FCL_COLOUR, MX_UINT8 FCL_APPENDTIMESTAMP)
{
  //Local variable definitions
  #define FCLsz_TSTR 20
  MX_CHAR FCL_TSTR[FCLsz_TSTR];

  #if (0)
  //Code has been optimised out by the pre-processor
  // #else
  #endif

  //Local variable definitions
  #undef FCLsz_TSTR
}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro Prv_SimShowWaveform:
       :  RXData : MX_UINT8
       :  TXData : MX_UINT16
\*=----------------------------------------------------------------------=*/
void FCD_01531_cal_spi1__Prv_SimShowWaveform(MX_UINT8 FCL_RXDATA, MX_UINT16 FCL_TXDATA)
{
  #if (0)
  //Code has been optimised out by the pre-processor
  // #else
  #endif

}

/*=----------------------------------------------------------------------=*\
   Use :Outputs a high signal to the chip select pin to deselect the remote slave device.
\*=----------------------------------------------------------------------=*/
void FCD_01531_cal_spi1__Master_Disable_CS()
{
  //Local variable definitions
  #define FCLsz_STR 20
  MX_CHAR FCL_STR[FCLsz_STR];

  #if (1)
    #if (1) // 0 == 0
      #if (0)
      //Code has been optimised out by the pre-processor
      // #else
      #endif

    // #else
    //Code has been optimised out by the pre-processor
    #endif

  // #else
  //Code has been optimised out by the pre-processor
  #endif

  //Local variable definitions
  #undef FCLsz_STR
}


/*========================================================================*\
   Use :WidthData
       :GUID: dfb4d07a-3d70-45d5-83ef-07e3c95d86ab
       :Location: C:\ProgramData\MatrixTSL\FlowcodeV10\Components\lut.fcpx
       :Version: 11.0 (0x100728)
       :Timestamp: 07\06\2023
       :Variable declarations
       :Macro implementations
\*========================================================================*/
#define FCVsz_00fb8_WidthData__FLOATFIXEDLIST 1
#define FCVsz_00fb8_WidthData__INTFIXEDLIST 1
#define FCD_00fb8_WidthData__INTFIXEDLIST(ix) 0

/*=----------------------------------------------------------------------=*\
   Use :Gets the number of individual data entries stored in the LUT.
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_00fb8_WidthData__GetLUTCount()
{
  //Local variable definitions
  MX_UINT16 FCR_RETVAL;

  #if (0)
  //Code has been optimised out by the pre-processor
  #else
    // .Return = 0
    FCR_RETVAL = 0;

  #endif

  return (FCR_RETVAL);

}


/*========================================================================*\
   Use :ASCIIData
       :GUID: dfb4d07a-3d70-45d5-83ef-07e3c95d86ab
       :Location: C:\ProgramData\MatrixTSL\FlowcodeV10\Components\lut.fcpx
       :Version: 11.0 (0x100728)
       :Timestamp: 07\06\2023
       :Variable declarations
       :Macro implementations
\*========================================================================*/
#define FCVsz_00fb7_ASCIIData__FLOATFIXEDLIST 1
#define FCVsz_00fb7_ASCIIData__INTFIXEDLIST 1
#define FCD_00fb7_ASCIIData__INTFIXEDLIST(ix) 0

/*=----------------------------------------------------------------------=*\
   Use :Gets the number of individual data entries stored in the LUT.
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_00fb7_ASCIIData__GetLUTCount()
{
  //Local variable definitions
  MX_UINT16 FCR_RETVAL;

  #if (0)
  //Code has been optimised out by the pre-processor
  #else
    // .Return = 0
    FCR_RETVAL = 0;

  #endif

  return (FCR_RETVAL);

}


/*========================================================================*\
   Use :gLCD_Font4
       :GUID: 1b08885c-807e-4631-930e-a4fef06159dc
       :Location: C:\ProgramData\MatrixTSL\FlowcodeV10\Components\gLCD_Font.fcpx
       :Version: 10.0 (0x100028)
       :Timestamp: 01\03\2024
       :Variable declarations
       :Macro implementations
\*========================================================================*/
MX_GLOBAL MX_UINT8 FCV_09e54_gLCD_Font4__OLDCHAR = (0x0);
MX_GLOBAL MX_UINT16 FCV_09e54_gLCD_Font4__OLDPOSITION = (0x0);

/*=----------------------------------------------------------------------=*\
   Use :Adds up all the pixels widths before the selected character to get to the start of the pixel data
       :
       :Parameters for macro SumWidths:
       :  Character : MX_UINT8
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_09e54_gLCD_Font4__SumWidths(MX_UINT8 FCL_CHARACTER)
{
  //Local variable definitions
  MX_UINT8 FCL_WIDTH;
  MX_UINT16 FCR_RETVAL;

  // .Return = 0
  FCR_RETVAL = 0;

  #if (0)
  //Code has been optimised out by the pre-processor
  // #else
  #endif

  return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Gets the width of the ASCII character font data
       :
       :Parameters for macro ReadWidth:
       :  Character : ASCII position so A = 'A'
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_09e54_gLCD_Font4__ReadWidth(MX_UINT8 FCL_CHARACTER)
{
  //Local variable definitions
  MX_UINT16 FCL_POSITION;
  MX_UINT8 FCL_PWIDTH;
  MX_UINT8 FCR_RETVAL;

  #if (0)
  //Code has been optimised out by the pre-processor
  #else
    // .Return = 0
    FCR_RETVAL = 0;

  #endif

  return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Collects a stat about the selected font
       :
       :Parameters for macro ReadFontStat:
       :  Index : 0=SpaceColumns, 1=CharacterHeight
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_09e54_gLCD_Font4__ReadFontStat(MX_UINT8 FCL_INDEX)
{
  //Local variable definitions
  MX_UINT8 FCR_RETVAL;

  if (FCL_INDEX == 1)
  {
    // .Return = PixelHeight
    FCR_RETVAL = 36;

  } else {
    // .Return = FontSpace
    FCR_RETVAL = 1;

  }

  return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Gets a single pixel column byte from the selected ASCII character font data.
       :
       :Parameters for macro ReadASCIILUT:
       :  Character : ASCII position so A = 'A'
       :  ByteIndex : Range: 0 to ((PixelWidth - 1) * BytesPerColumn)
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_09e54_gLCD_Font4__ReadASCIILUT(MX_UINT8 FCL_CHARACTER, MX_UINT8 FCL_BYTEINDEX)
{
  //Local variable definitions
  MX_UINT16 FCL_POSITION;
  MX_UINT8 FCR_RETVAL;

  #if (0)
  //Code has been optimised out by the pre-processor
  #else
    // .Return = 0
    FCR_RETVAL = 0;

  #endif

  return (FCR_RETVAL);

}


/*========================================================================*\
   Use :WidthData
       :GUID: dfb4d07a-3d70-45d5-83ef-07e3c95d86ab
       :Location: C:\ProgramData\MatrixTSL\FlowcodeV10\Components\lut.fcpx
       :Version: 11.0 (0x100728)
       :Timestamp: 07\06\2023
       :Variable declarations
       :Macro implementations
\*========================================================================*/
#define FCVsz_00fb6_WidthData__FLOATFIXEDLIST 1
#define FCVsz_00fb6_WidthData__INTFIXEDLIST 1
#define FCD_00fb6_WidthData__INTFIXEDLIST(ix) 0

/*=----------------------------------------------------------------------=*\
   Use :Gets the number of individual data entries stored in the LUT.
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_00fb6_WidthData__GetLUTCount()
{
  //Local variable definitions
  MX_UINT16 FCR_RETVAL;

  #if (0)
  //Code has been optimised out by the pre-processor
  #else
    // .Return = 0
    FCR_RETVAL = 0;

  #endif

  return (FCR_RETVAL);

}


/*========================================================================*\
   Use :ASCIIData
       :GUID: dfb4d07a-3d70-45d5-83ef-07e3c95d86ab
       :Location: C:\ProgramData\MatrixTSL\FlowcodeV10\Components\lut.fcpx
       :Version: 11.0 (0x100728)
       :Timestamp: 07\06\2023
       :Variable declarations
       :Macro implementations
\*========================================================================*/
#define FCVsz_00fb5_ASCIIData__FLOATFIXEDLIST 1
#define FCVsz_00fb5_ASCIIData__INTFIXEDLIST 1
#define FCD_00fb5_ASCIIData__INTFIXEDLIST(ix) 0

/*=----------------------------------------------------------------------=*\
   Use :Gets the number of individual data entries stored in the LUT.
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_00fb5_ASCIIData__GetLUTCount()
{
  //Local variable definitions
  MX_UINT16 FCR_RETVAL;

  #if (0)
  //Code has been optimised out by the pre-processor
  #else
    // .Return = 0
    FCR_RETVAL = 0;

  #endif

  return (FCR_RETVAL);

}


/*========================================================================*\
   Use :gLCD_Font3
       :GUID: 1b08885c-807e-4631-930e-a4fef06159dc
       :Location: C:\ProgramData\MatrixTSL\FlowcodeV10\Components\gLCD_Font.fcpx
       :Version: 10.0 (0x100028)
       :Timestamp: 01\03\2024
       :Variable declarations
       :Macro implementations
\*========================================================================*/
MX_GLOBAL MX_UINT8 FCV_09e53_gLCD_Font3__OLDCHAR = (0x0);
MX_GLOBAL MX_UINT16 FCV_09e53_gLCD_Font3__OLDPOSITION = (0x0);

/*=----------------------------------------------------------------------=*\
   Use :Adds up all the pixels widths before the selected character to get to the start of the pixel data
       :
       :Parameters for macro SumWidths:
       :  Character : MX_UINT8
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_09e53_gLCD_Font3__SumWidths(MX_UINT8 FCL_CHARACTER)
{
  //Local variable definitions
  MX_UINT8 FCL_WIDTH;
  MX_UINT16 FCR_RETVAL;

  // .Return = 0
  FCR_RETVAL = 0;

  #if (0)
  //Code has been optimised out by the pre-processor
  // #else
  #endif

  return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Gets the width of the ASCII character font data
       :
       :Parameters for macro ReadWidth:
       :  Character : ASCII position so A = 'A'
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_09e53_gLCD_Font3__ReadWidth(MX_UINT8 FCL_CHARACTER)
{
  //Local variable definitions
  MX_UINT16 FCL_POSITION;
  MX_UINT8 FCL_PWIDTH;
  MX_UINT8 FCR_RETVAL;

  #if (0)
  //Code has been optimised out by the pre-processor
  #else
    // .Return = 0
    FCR_RETVAL = 0;

  #endif

  return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Collects a stat about the selected font
       :
       :Parameters for macro ReadFontStat:
       :  Index : 0=SpaceColumns, 1=CharacterHeight
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_09e53_gLCD_Font3__ReadFontStat(MX_UINT8 FCL_INDEX)
{
  //Local variable definitions
  MX_UINT8 FCR_RETVAL;

  if (FCL_INDEX == 1)
  {
    // .Return = PixelHeight
    FCR_RETVAL = 14;

  } else {
    // .Return = FontSpace
    FCR_RETVAL = 1;

  }

  return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Gets a single pixel column byte from the selected ASCII character font data.
       :
       :Parameters for macro ReadASCIILUT:
       :  Character : ASCII position so A = 'A'
       :  ByteIndex : Range: 0 to ((PixelWidth - 1) * BytesPerColumn)
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_09e53_gLCD_Font3__ReadASCIILUT(MX_UINT8 FCL_CHARACTER, MX_UINT8 FCL_BYTEINDEX)
{
  //Local variable definitions
  MX_UINT16 FCL_POSITION;
  MX_UINT8 FCR_RETVAL;

  #if (0)
  //Code has been optimised out by the pre-processor
  #else
    // .Return = 0
    FCR_RETVAL = 0;

  #endif

  return (FCR_RETVAL);

}


/*========================================================================*\
   Use :WidthData
       :GUID: dfb4d07a-3d70-45d5-83ef-07e3c95d86ab
       :Location: C:\ProgramData\MatrixTSL\FlowcodeV10\Components\lut.fcpx
       :Version: 11.0 (0x100728)
       :Timestamp: 07\06\2023
       :Variable declarations
       :Macro implementations
\*========================================================================*/
#define FCVsz_00fb4_WidthData__FLOATFIXEDLIST 1
#define FCVsz_00fb4_WidthData__INTFIXEDLIST 1
#define FCD_00fb4_WidthData__INTFIXEDLIST(ix) 0

/*=----------------------------------------------------------------------=*\
   Use :Gets the number of individual data entries stored in the LUT.
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_00fb4_WidthData__GetLUTCount()
{
  //Local variable definitions
  MX_UINT16 FCR_RETVAL;

  #if (0)
  //Code has been optimised out by the pre-processor
  #else
    // .Return = 0
    FCR_RETVAL = 0;

  #endif

  return (FCR_RETVAL);

}


/*========================================================================*\
   Use :ASCIIData
       :GUID: dfb4d07a-3d70-45d5-83ef-07e3c95d86ab
       :Location: C:\ProgramData\MatrixTSL\FlowcodeV10\Components\lut.fcpx
       :Version: 11.0 (0x100728)
       :Timestamp: 07\06\2023
       :Variable declarations
       :Macro implementations
\*========================================================================*/
#define FCVsz_00fb3_ASCIIData__FLOATFIXEDLIST 1
#define FCVsz_00fb3_ASCIIData__INTFIXEDLIST 1
#define FCD_00fb3_ASCIIData__INTFIXEDLIST(ix) 0

/*=----------------------------------------------------------------------=*\
   Use :Gets the number of individual data entries stored in the LUT.
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_00fb3_ASCIIData__GetLUTCount()
{
  //Local variable definitions
  MX_UINT16 FCR_RETVAL;

  #if (0)
  //Code has been optimised out by the pre-processor
  #else
    // .Return = 0
    FCR_RETVAL = 0;

  #endif

  return (FCR_RETVAL);

}


/*========================================================================*\
   Use :gLCD_Font2
       :GUID: 1b08885c-807e-4631-930e-a4fef06159dc
       :Location: C:\ProgramData\MatrixTSL\FlowcodeV10\Components\gLCD_Font.fcpx
       :Version: 10.0 (0x100028)
       :Timestamp: 01\03\2024
       :Variable declarations
       :Macro implementations
\*========================================================================*/
MX_GLOBAL MX_UINT8 FCV_09e52_gLCD_Font2__OLDCHAR = (0x0);
MX_GLOBAL MX_UINT16 FCV_09e52_gLCD_Font2__OLDPOSITION = (0x0);

/*=----------------------------------------------------------------------=*\
   Use :Adds up all the pixels widths before the selected character to get to the start of the pixel data
       :
       :Parameters for macro SumWidths:
       :  Character : MX_UINT8
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_09e52_gLCD_Font2__SumWidths(MX_UINT8 FCL_CHARACTER)
{
  //Local variable definitions
  MX_UINT8 FCL_WIDTH;
  MX_UINT16 FCR_RETVAL;

  // .Return = 0
  FCR_RETVAL = 0;

  #if (0)
  //Code has been optimised out by the pre-processor
  // #else
  #endif

  return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Gets the width of the ASCII character font data
       :
       :Parameters for macro ReadWidth:
       :  Character : ASCII position so A = 'A'
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_09e52_gLCD_Font2__ReadWidth(MX_UINT8 FCL_CHARACTER)
{
  //Local variable definitions
  MX_UINT16 FCL_POSITION;
  MX_UINT8 FCL_PWIDTH;
  MX_UINT8 FCR_RETVAL;

  #if (0)
  //Code has been optimised out by the pre-processor
  #else
    // .Return = 0
    FCR_RETVAL = 0;

  #endif

  return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Collects a stat about the selected font
       :
       :Parameters for macro ReadFontStat:
       :  Index : 0=SpaceColumns, 1=CharacterHeight
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_09e52_gLCD_Font2__ReadFontStat(MX_UINT8 FCL_INDEX)
{
  //Local variable definitions
  MX_UINT8 FCR_RETVAL;

  if (FCL_INDEX == 1)
  {
    // .Return = PixelHeight
    FCR_RETVAL = 11;

  } else {
    // .Return = FontSpace
    FCR_RETVAL = 1;

  }

  return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Gets a single pixel column byte from the selected ASCII character font data.
       :
       :Parameters for macro ReadASCIILUT:
       :  Character : ASCII position so A = 'A'
       :  ByteIndex : Range: 0 to ((PixelWidth - 1) * BytesPerColumn)
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_09e52_gLCD_Font2__ReadASCIILUT(MX_UINT8 FCL_CHARACTER, MX_UINT8 FCL_BYTEINDEX)
{
  //Local variable definitions
  MX_UINT16 FCL_POSITION;
  MX_UINT8 FCR_RETVAL;

  #if (0)
  //Code has been optimised out by the pre-processor
  #else
    // .Return = 0
    FCR_RETVAL = 0;

  #endif

  return (FCR_RETVAL);

}


/*========================================================================*\
   Use :WidthData
       :GUID: dfb4d07a-3d70-45d5-83ef-07e3c95d86ab
       :Location: C:\ProgramData\MatrixTSL\FlowcodeV10\Components\lut.fcpx
       :Version: 11.0 (0x100728)
       :Timestamp: 07\06\2023
       :Variable declarations
       :Macro implementations
\*========================================================================*/
#define FCVsz_00fb2_WidthData__FLOATFIXEDLIST 1
#define FCVsz_00fb2_WidthData__INTFIXEDLIST 95
#define FCD_00fb2_WidthData__INTFIXEDLIST(ix) FCD_00fb2_WidthData__INTFIXEDLIST_LUT[ix]
ROMARRAY_(MX_UINT8) FCD_00fb2_WidthData__INTFIXEDLIST_LUT ROMARRAY_E =
{
0x03,0x07,0x0F,0x0C,0x16,0x10,0x02,0x07,0x07,0x0B,0x0F,0x04,0x07,0x03,0x0A,0x0C,0x0A,0x0C,0x0B,0x0D,0x0C,0x0C,0x0C,0x0C,0x0D,0x03,0x04,0x0D,0x0E,0x0E,0x0A,0x14,0x10,0x0D,0x0F,0x0F,0x0C,0x0B,0x10,0x0E,0x06,0x08,0x0E,0x0B,0x10,0x0E,0x11,0x0C,0x11,0x0E,0x0D,0x0F,0x0D,0x0F,0x15,0x0E,0x0D,0x0E,0x06,0x0A,0x06,0x0E,0x0F,0x04,0x0B,0x0C,0x0B,0x0C,0x0C,0x07,0x0C,0x0B,0x03,0x06,0x0C,0x02,0x13,0x0B,0x0C,0x0C,0x0C,0x08,0x0A,0x08,0x0B,0x0C,0x11,0x0C,0x0C,0x0B,0x0B,0x02,0x0B,0x0F,0x00
};

/*=----------------------------------------------------------------------=*\
   Use :Gets the number of individual data entries stored in the LUT.
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_00fb2_WidthData__GetLUTCount()
{
  //Local variable definitions
  MX_UINT16 FCR_RETVAL;

  #if (1)
    // .Return = NumVals
    FCR_RETVAL = 95;

  #else
  //Code has been optimised out by the pre-processor
  #endif

  return (FCR_RETVAL);

}


/*========================================================================*\
   Use :ASCIIData
       :GUID: dfb4d07a-3d70-45d5-83ef-07e3c95d86ab
       :Location: C:\ProgramData\MatrixTSL\FlowcodeV10\Components\lut.fcpx
       :Version: 11.0 (0x100728)
       :Timestamp: 07\06\2023
       :Variable declarations
       :Macro implementations
\*========================================================================*/
#define FCVsz_00fb1_ASCIIData__FLOATFIXEDLIST 1
#define FCVsz_00fb1_ASCIIData__INTFIXEDLIST 4276
#define FCD_00fb1_ASCIIData__INTFIXEDLIST(ix) FCD_00fb1_ASCIIData__INTFIXEDLIST_LUT[ix]
ROMARRAY_(MX_UINT8) FCD_00fb1_ASCIIData__INTFIXEDLIST_LUT ROMARRAY_E =
{
0x38,0xF8,0xF8,0x00,0x7F,0x7F,0x00,0x0C,0x0C,0x00,0x00,0x00,0xFC,0xFC,0x00,0x00,0x00,0xFC,0xFC,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0xF0,0xB8,0x80,0x80,0x80,0xF8,0x98,0x80,0x80,0x40,0x60,0x61,0x61,0xF1,0x7F,0x43,0x41,0xE1,0xF9,0x7F,0x61,0x61,0x61,0x01,0x00,0x00,0x00,0x0F,0x03,0x00,0x00,0x08,0x0F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0x60,0x60,0xFC,0x60,0x60,0x60,0x60,0xE0,0x00,0x07,0x0F,0x1C,0x18,0x18,0xFF,0x38,0x30,0x30,0xE0,0xE0,0x80,0x06,0x0E,0x0C,0x0C,0x0C,0xFF,0x0C,0x0C,0x06,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF8,0x18,0x0C,0x0C,0x1C,0xF8,0xF0,0x00,0x00,0x00,0x00,0xC0,0xE0,0x38,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x0F,0x0C,0x08,0x08,0x0C,0x0F,0x07,0xC0,0xF0,0x3C,0x0F,0x03,0x00,0xF8,0xF8,0x0C,0x0C,0x0C,0x1C,0xF8,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0F,0x03,0x00,0x00,0x00,0x00,0x00,0x07,0x0F,0x0C,0x08,0x0C,0x0C,0x07,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0xF8,0xF8,0x0C,0x0C,0x0C,0x0C,0xF8,0xF8,0x60,0x00,0x00,0x00,0x00,0x00,0xC0,0xF0,0xF9,0x0F,0x07,0x06,0x0E,0x1B,0x31,0x71,0xE0,0xC0,0xFC,0x3C,0x00,0x00,0x00,0x03,0x07,0x0E,0x0C,0x0C,0x0C,0x0C,0x0C,0x06,0x07,0x03,0x03,0x07,0x0E,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0x78,0x1C,0x0C,0x04,0xFC,0xFF,0x07,0x00,0x00,0x00,0x00,0x01,0x0F,0x3F,0x78,0xE0,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x04,0x0C,0x1C,0x78,0xE0,0x80,0x00,0x00,0x00,0x00,0x00,0x87,0xFF,0xFC,0x00,0x80,0xE0,0x78,0x3F,0x0F,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x10,0x30,0x20,0x60,0xC0,0xFC,0xC0,0x60,0x20,0x30,0x10,0x02,0x02,0x03,0x01,0x01,0x1F,0x01,0x01,0x03,0x02,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xFF,0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFC,0x3E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xF8,0x3C,0x04,0x00,0x00,0x00,0xC0,0xF8,0x3F,0x07,0x00,0x00,0x00,0xE0,0x78,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xF0,0x78,0x18,0x0C,0x0C,0x0C,0x18,0x38,0xF0,0xE0,0x80,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE1,0xFF,0x3F,0x01,0x07,0x07,0x0C,0x0C,0x0C,0x0C,0x0C,0x0E,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x70,0xF8,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0C,0x0C,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x0C,0x0C,0x0C,0x1C,0x18,0x78,0xF0,0xE0,0x00,0x00,0x00,0x80,0xC0,0xE0,0x70,0x38,0x1C,0x0F,0x07,0x01,0x00,0x0E,0x0F,0x0F,0x0D,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x1C,0x0C,0x0C,0x0C,0x1C,0x38,0xF8,0xF0,0x00,0x00,0x00,0x00,0x04,0x0E,0x0E,0x0E,0x1B,0xF9,0xF0,0x06,0x0E,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0E,0x07,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x60,0x30,0xF8,0xF8,0xF8,0x00,0x00,0x70,0x78,0x6E,0x67,0x63,0x61,0x60,0x60,0xFF,0xFF,0xFF,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x07,0x07,0x06,0x06,0x06,0x06,0x0E,0x0C,0xFC,0xF8,0xE0,0x06,0x0E,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0E,0x07,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xF0,0x30,0x18,0x18,0x08,0x0C,0x0C,0x0C,0x00,0x00,0xFF,0xFF,0x0C,0x06,0x06,0x06,0x06,0x06,0x0E,0xBC,0xF8,0xF0,0x01,0x03,0x07,0x0E,0x0C,0x0C,0x0C,0x0C,0x0E,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x98,0xF8,0x78,0x38,0x00,0x00,0x00,0x00,0xC0,0xF0,0x78,0x1E,0x07,0x01,0x00,0x00,0x00,0x00,0x0C,0x0F,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xF0,0xB8,0x1C,0x0C,0x0C,0x0C,0x0C,0x18,0xF8,0xF0,0x00,0xF1,0xF3,0x1F,0x0E,0x06,0x0C,0x0C,0x1C,0x1E,0xF3,0xF1,0xC0,0x03,0x07,0x0E,0x0C,0x0C,0x08,0x08,0x0C,0x0C,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xF0,0x18,0x18,0x0C,0x0C,0x0C,0x18,0x38,0xF0,0xE0,0xC0,0x01,0x0F,0x1F,0x18,0x38,0x30,0x30,0x30,0x10,0x98,0xFF,0xFF,0x0F,0x00,0x00,0x0C,0x0C,0x0C,0x0C,0x0C,0x0E,0x06,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x03,0x03,0x03,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x03,0x03,0x03,0xE0,0xFC,0x3E,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0xC0,0x18,0x38,0x38,0x6C,0x6C,0xC6,0xC6,0xC3,0x83,0x81,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x03,0x03,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x83,0x83,0xC3,0xC6,0x66,0x6C,0x3C,0x38,0x38,0x10,0x06,0x03,0x03,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x0C,0x0C,0x0C,0x1C,0x18,0xF8,0xF0,0xE0,0x00,0x00,0x00,0x78,0x78,0x0C,0x0E,0x07,0x03,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x60,0x30,0x18,0x18,0x88,0x88,0x8C,0x8C,0x8C,0x88,0x88,0x18,0x30,0x70,0xE0,0x80,0x00,0x7C,0xFF,0x01,0x00,0x00,0xFC,0xFF,0x83,0x01,0x01,0x01,0x01,0x81,0xFF,0x00,0x00,0x00,0x00,0xFF,0x7C,0x00,0x03,0x07,0x0C,0x18,0x30,0x31,0x23,0x23,0x63,0x63,0x63,0x61,0x23,0x03,0x02,0x02,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xF8,0x38,0x38,0xF8,0xE0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xF8,0x7F,0x6F,0x61,0x60,0x60,0x60,0x67,0x7F,0xFC,0xE0,0x00,0x00,0x08,0x0E,0x0F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x0F,0x0F,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0xB8,0xF0,0xE0,0x00,0xFF,0xFF,0xFF,0x0C,0x0C,0x0C,0x0C,0x0E,0x0E,0x0F,0x1D,0xF8,0xF0,0x0F,0x0F,0x0F,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0E,0x06,0x07,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xF0,0x38,0x18,0x18,0x0C,0x0C,0x0C,0x1C,0x18,0x18,0x38,0x30,0x1E,0xFF,0xF3,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x07,0x07,0x0E,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0E,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x30,0x70,0xE0,0xC0,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xF3,0xFF,0x3F,0x0F,0x0F,0x0F,0x0C,0x0C,0x0C,0x0C,0x0C,0x0E,0x06,0x07,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xFF,0xFF,0xFF,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x0F,0x0F,0x0F,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xFF,0xFF,0xFF,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x00,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xF0,0x30,0x18,0x18,0x08,0x0C,0x0C,0x0C,0x0C,0x18,0x18,0x38,0x30,0x1E,0xFF,0xF3,0x80,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x38,0xF8,0xF8,0x00,0x00,0x03,0x03,0x07,0x0E,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0E,0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0xF8,0xFF,0xFF,0xFF,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0xF8,0xF8,0x08,0x08,0x00,0x00,0xFF,0xFF,0x00,0x00,0x0C,0x0C,0x0F,0x0F,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0xF8,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x0C,0x0C,0x0C,0x0C,0x0C,0x07,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0xF8,0x00,0x00,0x00,0x80,0xC0,0xE0,0x70,0x38,0x18,0x08,0x00,0xFF,0xFF,0xFF,0x1C,0x1E,0x1F,0x7F,0xF1,0xE0,0xC0,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x0E,0x0C,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0xF8,0x78,0xE0,0x80,0x00,0x00,0x00,0x00,0x80,0xE0,0x78,0x38,0xF8,0xF8,0xFF,0xFF,0xFF,0x00,0x01,0x07,0x1E,0x78,0x70,0x3E,0x07,0x01,0x00,0x00,0xFF,0xFF,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0xF8,0x38,0xF0,0xC0,0x80,0x00,0x00,0x00,0x00,0xF8,0xF8,0xF8,0xFF,0xFF,0xFF,0x00,0x00,0x03,0x0F,0x3E,0xF8,0xE0,0x80,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x07,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xF0,0x38,0x18,0x18,0x0C,0x0C,0x0C,0x18,0x18,0x38,0xF0,0xE0,0x80,0x00,0x1E,0xFF,0xF3,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xF3,0xFF,0x3E,0x00,0x00,0x03,0x07,0x06,0x0E,0x0C,0x0C,0x0C,0x0C,0x0C,0x0E,0x06,0x07,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0xF8,0x18,0x18,0x18,0x18,0x18,0x38,0x70,0xE0,0xC0,0xFF,0xFF,0xFF,0x10,0x10,0x18,0x18,0x18,0x1C,0x0E,0x07,0x03,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xF0,0x38,0x18,0x18,0x0C,0x0C,0x0C,0x18,0x18,0x38,0xF0,0xE0,0x80,0x00,0x1E,0xFF,0xF3,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE7,0xFF,0x1E,0x00,0x00,0x03,0x07,0x06,0x0E,0x0C,0x0C,0x0C,0x1C,0x7C,0xFE,0xC6,0xC7,0x83,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0xF8,0xF8,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0x78,0xF0,0xC0,0x00,0x00,0xFF,0xFF,0xFF,0x18,0x18,0x18,0x38,0x78,0xEC,0xC7,0x87,0x01,0x00,0x00,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x0F,0x0E,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xF0,0x38,0x18,0x1C,0x0C,0x0C,0x0C,0x1C,0x18,0x18,0x18,0x00,0x03,0x07,0x07,0x0E,0x0C,0x0C,0x0C,0x1C,0x1C,0x18,0x78,0xF0,0xE0,0x06,0x0E,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0E,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0xF8,0xF8,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x03,0x07,0x0E,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x07,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0xF8,0xE0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xF8,0x78,0x08,0x00,0x01,0x07,0x3F,0xFC,0xE0,0x00,0x00,0xC0,0xF0,0x7E,0x0F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x0F,0x0F,0x0E,0x0F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xF8,0xF8,0x80,0x00,0x00,0x00,0x00,0x00,0xF0,0x78,0xF8,0xF0,0x00,0x00,0x00,0x00,0x00,0xC0,0xF8,0x78,0x00,0x00,0x0F,0x7F,0xF8,0x80,0x00,0xF0,0x7F,0x07,0x00,0x00,0x0F,0xFF,0xF0,0x00,0xC0,0xFC,0x7F,0x07,0x00,0x00,0x00,0x00,0x00,0x07,0x0F,0x0F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x38,0xF0,0xE0,0x80,0x00,0x00,0x00,0xC0,0xE0,0x78,0x38,0x18,0x00,0x00,0x00,0x80,0xE1,0x77,0x3F,0x1E,0x7F,0xF3,0xC0,0x80,0x00,0x00,0x08,0x0C,0x0F,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x03,0x07,0x0E,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x78,0xF0,0xC0,0x80,0x00,0x00,0x00,0x80,0xE0,0xF0,0x38,0x08,0x00,0x00,0x00,0x03,0x07,0xFE,0xFC,0xFE,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x98,0xF8,0xF8,0x38,0x18,0x00,0x00,0x80,0xC0,0xE0,0x70,0x3C,0x0E,0x07,0x03,0x01,0x00,0x00,0x00,0x0C,0x0E,0x0F,0x0D,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x04,0x04,0x04,0x04,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0C,0x3C,0xF8,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x07,0x3E,0xF8,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x3F,0x78,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x04,0xFC,0xFC,0x00,0x00,0x00,0x00,0xFF,0xFF,0x80,0x80,0x80,0x80,0xFF,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x80,0xC0,0xE0,0x38,0x18,0x38,0x70,0xE0,0x80,0x00,0x00,0x00,0x0C,0x0E,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x07,0x0E,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0F,0x1C,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0xE1,0xE1,0x31,0x31,0x31,0x11,0x19,0x19,0xFF,0xFF,0x03,0x07,0x0F,0x0C,0x0C,0x0C,0x0C,0x0C,0x06,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0xFF,0xFF,0x03,0x01,0x01,0x01,0x01,0x01,0x03,0x8F,0xFE,0xF8,0x0F,0x0F,0x0E,0x0C,0x0C,0x0C,0x0C,0x0C,0x0E,0x07,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0xF8,0xFE,0x8F,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x03,0x07,0x0E,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0xC0,0xC0,0x80,0x80,0xFC,0xFC,0xF8,0xFE,0x8F,0x03,0x01,0x00,0x00,0x01,0x01,0x03,0xFF,0xFF,0x00,0x03,0x07,0x0E,0x0C,0x0C,0x0C,0x0C,0x06,0x06,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xC0,0xC0,0xC0,0x80,0x80,0x00,0x00,0x78,0xFE,0xFF,0x33,0x31,0x31,0x30,0x31,0x31,0x33,0x3F,0x3C,0x00,0x03,0x07,0x06,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0E,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xF8,0xBC,0x8C,0x8C,0x8C,0x01,0xFF,0xFF,0x01,0x01,0x01,0x01,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x78,0xFE,0xCF,0x03,0x01,0x01,0x01,0x01,0x01,0x03,0xFF,0xFE,0x00,0x03,0xC7,0x86,0x8E,0x8C,0x8C,0x86,0xC6,0xF7,0x7F,0x0F,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0xFC,0xFC,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0xFF,0xFF,0x03,0x03,0x01,0x01,0x01,0x01,0x03,0xFF,0xFE,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9C,0x9C,0x00,0xFF,0xFF,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x9C,0x9C,0x00,0x01,0x01,0x01,0xFF,0xFF,0x80,0x80,0x80,0xC0,0xFF,0x7F,0x80,0x80,0x80,0x80,0x00,0x00,0xFC,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0xFF,0xFF,0xE0,0x70,0x78,0xFC,0xCE,0x87,0x03,0x01,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x0E,0x0C,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0xFF,0xFF,0x0F,0x0F,0x00,0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0xFF,0xFF,0x03,0x03,0x01,0x01,0x01,0x01,0x07,0xFF,0xFF,0x03,0x01,0x01,0x01,0x01,0x03,0xFF,0xFF,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0xFF,0xFF,0x03,0x03,0x01,0x01,0x01,0x01,0x03,0xFF,0xFE,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0xC0,0xC0,0x80,0x00,0x00,0x00,0xF8,0xFE,0x8F,0x03,0x01,0x00,0x00,0x01,0x01,0x07,0xFF,0xFC,0x00,0x03,0x07,0x0E,0x1C,0x18,0x18,0x1C,0x0C,0x07,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0xFF,0xFF,0x03,0x01,0x01,0x01,0x01,0x01,0x03,0x8F,0xFE,0x78,0xFF,0xFF,0x0E,0x0C,0x0C,0x0C,0x0C,0x0C,0x06,0x07,0x01,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x78,0xFE,0xCF,0x03,0x01,0x01,0x01,0x01,0x01,0x03,0xFF,0xFF,0x00,0x03,0x07,0x0E,0x0C,0x0C,0x0C,0x0C,0x06,0x07,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0xFF,0xFF,0x07,0x03,0x01,0x01,0x01,0x01,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x1F,0x3F,0x31,0x31,0x71,0x61,0x61,0xE1,0xC3,0x06,0x0E,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xF8,0xF8,0x80,0x80,0x80,0x80,0x80,0x01,0xFF,0xFF,0x01,0x01,0x01,0x01,0x01,0x00,0x03,0x07,0x0F,0x0C,0x0C,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x03,0x07,0x0F,0x0C,0x0C,0x0C,0x0C,0x06,0x06,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x01,0x07,0x3F,0xF8,0xE0,0x00,0x00,0xC0,0xF8,0x3E,0x0F,0x01,0x00,0x00,0x00,0x00,0x07,0x0F,0x0F,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x01,0x1F,0xFF,0xF0,0x00,0x80,0xF8,0x3F,0x07,0x0F,0x7E,0xF0,0x80,0x80,0xF8,0x7F,0x07,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x01,0x00,0x00,0x00,0x00,0x03,0x0F,0x0F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x03,0x8F,0xDC,0xF8,0xF8,0xFC,0x8E,0x07,0x01,0x00,0x08,0x0C,0x0F,0x03,0x01,0x00,0x00,0x01,0x03,0x0F,0x0E,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x01,0x07,0x3F,0xFC,0xE0,0x80,0x00,0xE0,0xF8,0x3E,0x0F,0x01,0x00,0x00,0x00,0x80,0xF3,0x7F,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x01,0x01,0x81,0xC1,0xE1,0x71,0x1D,0x0F,0x07,0x03,0x00,0x0C,0x0E,0x0F,0x0D,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x0C,0x0C,0x04,0x04,0x30,0x30,0x30,0x78,0xCE,0x87,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x7F,0xFE,0xC0,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xFC,0xFC,0xFF,0xFF,0xFF,0xFF,0x80,0x80,0x04,0x04,0x0C,0x0C,0x3C,0xF8,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x87,0xCF,0x58,0x70,0x30,0x30,0x80,0x80,0x80,0xC0,0xF0,0x7F,0x1F,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x78,0x1C,0x06,0x06,0x06,0x0C,0x18,0x30,0x60,0x60,0x60,0x60,0x3E,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

/*=----------------------------------------------------------------------=*\
   Use :Gets the number of individual data entries stored in the LUT.
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_00fb1_ASCIIData__GetLUTCount()
{
  //Local variable definitions
  MX_UINT16 FCR_RETVAL;

  #if (1)
    // .Return = NumVals
    FCR_RETVAL = 4276;

  #else
  //Code has been optimised out by the pre-processor
  #endif

  return (FCR_RETVAL);

}


/*========================================================================*\
   Use :gLCD_Font1
       :GUID: 1b08885c-807e-4631-930e-a4fef06159dc
       :Location: C:\ProgramData\MatrixTSL\FlowcodeV10\Components\gLCD_Font.fcpx
       :Version: 10.0 (0x100028)
       :Timestamp: 01\03\2024
       :Variable declarations
       :Macro implementations
\*========================================================================*/
MX_GLOBAL MX_UINT8 FCV_09e51_gLCD_Font1__OLDCHAR = (0x0);
MX_GLOBAL MX_UINT16 FCV_09e51_gLCD_Font1__OLDPOSITION = (0x0);

/*=----------------------------------------------------------------------=*\
   Use :Adds up all the pixels widths before the selected character to get to the start of the pixel data
       :
       :Parameters for macro SumWidths:
       :  Character : MX_UINT8
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_09e51_gLCD_Font1__SumWidths(MX_UINT8 FCL_CHARACTER)
{
  //Local variable definitions
  MX_UINT8 FCL_WIDTH;
  MX_UINT16 FCR_RETVAL;

  // .Return = 0
  FCR_RETVAL = 0;

  #if (1)
    #if (1) // 0 == 0
      while (FCL_CHARACTER > 0)
      {
        // .Character = .Character - 1
        FCL_CHARACTER = FCL_CHARACTER - 1;

        FCL_WIDTH = FCD_00fb2_WidthData__INTFIXEDLIST(FCL_CHARACTER);

        // .Return = .Return + .width
        FCR_RETVAL = FCR_RETVAL + FCL_WIDTH;


      }

      // .Return = .Return * BytesPerColumn
      FCR_RETVAL = FCR_RETVAL * 4;

    // #else
    //Code has been optimised out by the pre-processor
    #endif

  // #else
  //Code has been optimised out by the pre-processor
  #endif

  return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Gets the width of the ASCII character font data
       :
       :Parameters for macro ReadWidth:
       :  Character : ASCII position so A = 'A'
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_09e51_gLCD_Font1__ReadWidth(MX_UINT8 FCL_CHARACTER)
{
  //Local variable definitions
  MX_UINT16 FCL_POSITION;
  MX_UINT8 FCL_PWIDTH;
  MX_UINT8 FCR_RETVAL;

  #if (1)
    #if (0) // 255 < 255
    //Code has been optimised out by the pre-processor
    // #else
    #endif

    #if (0)
    //Code has been optimised out by the pre-processor
    #else
      if ((FCL_CHARACTER < 33) || (FCL_CHARACTER >= (33 + 95)))
      {
        if (FCL_CHARACTER == 32)
        {
          // .Return = SpaceWidth
          FCR_RETVAL = 4;

        } else {
          //Comment:
          //Out of range

          // .Return = 0
          FCR_RETVAL = 0;

        }

      } else {
        // .Character = .Character - FirstChar
        FCL_CHARACTER = FCL_CHARACTER - 33;

        FCR_RETVAL = FCD_00fb2_WidthData__INTFIXEDLIST(FCL_CHARACTER);

      }

    #endif

  #else
  //Code has been optimised out by the pre-processor
  #endif

  return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Collects a stat about the selected font
       :
       :Parameters for macro ReadFontStat:
       :  Index : 0=SpaceColumns, 1=CharacterHeight
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_09e51_gLCD_Font1__ReadFontStat(MX_UINT8 FCL_INDEX)
{
  //Local variable definitions
  MX_UINT8 FCR_RETVAL;

  if (FCL_INDEX == 1)
  {
    // .Return = PixelHeight
    FCR_RETVAL = 25;

  } else {
    // .Return = FontSpace
    FCR_RETVAL = 1;

  }

  return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Gets a single pixel column byte from the selected ASCII character font data.
       :
       :Parameters for macro ReadASCIILUT:
       :  Character : ASCII position so A = 'A'
       :  ByteIndex : Range: 0 to ((PixelWidth - 1) * BytesPerColumn)
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_09e51_gLCD_Font1__ReadASCIILUT(MX_UINT8 FCL_CHARACTER, MX_UINT8 FCL_BYTEINDEX)
{
  //Local variable definitions
  MX_UINT16 FCL_POSITION;
  MX_UINT8 FCR_RETVAL;

  #if (1)
    #if (0) // 255 < 255
    //Code has been optimised out by the pre-processor
    // #else
    #endif

    if ((FCL_CHARACTER < 33) || (FCL_CHARACTER >= (33 + 95)))
    {
      if (FCL_CHARACTER == 32)
      {
        // .Return = 0
        FCR_RETVAL = 0;

      } else {
        //Comment:
        //Out of range

        // .Return = 0xAA
        FCR_RETVAL = 0xAA;

      }

    } else {
      // .Character = .Character - FirstChar
      FCL_CHARACTER = FCL_CHARACTER - 33;

      #if (0) // 0 == 1
      //Code has been optimised out by the pre-processor
      #else
        if (FCL_CHARACTER == FCV_09e51_gLCD_Font1__OLDCHAR)
        {
          // .Position = oldposition
          FCL_POSITION = FCV_09e51_gLCD_Font1__OLDPOSITION;

        } else {
          FCL_POSITION = FCD_09e51_gLCD_Font1__SumWidths(FCL_CHARACTER);

          // oldposition = .Position
          // oldchar = .Character
          FCV_09e51_gLCD_Font1__OLDPOSITION = FCL_POSITION;
          FCV_09e51_gLCD_Font1__OLDCHAR = FCL_CHARACTER;

        }

      #endif

      // .Position = .Position + .ByteIndex
      FCL_POSITION = FCL_POSITION + FCL_BYTEINDEX;

      FCR_RETVAL = FCD_00fb1_ASCIIData__INTFIXEDLIST(FCL_POSITION);

    }

  #else
  //Code has been optimised out by the pre-processor
  #endif

  return (FCR_RETVAL);

}


/*========================================================================*\
   Use :Base_GLCD
       :GUID: 4384cba9-0bea-4359-8c5b-dcd046aa7778
       :Location: C:\ProgramData\MatrixTSL\FlowcodeV10\Components\Base_GLCD.fcpx
       :Version: 29.0 (0x300028)
       :Timestamp: 09\04\2024
       :Variable declarations
       :Macro implementations
\*========================================================================*/
/*=----------------------------------------------------------------------=*\
   Use :Reads the number of pixel columns used in the selected font
       :
       :Parameters for macro ReadFontWidth:
       :  Font : Font selection range: 0 to (NumFonts - 1)
       :  Character : ASCII character to get the pixel width e.g. 'A' or 65
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_0ba71_Base_GLCD__ReadFontWidth(MX_UINT8 FCL_FONT, MX_UINT8 FCL_CHARACTER)
{
  //Local variable definitions
  MX_UINT8 FCR_RETVAL;

  // .Return = 0
  FCR_RETVAL = 0;

  if (FCL_FONT >= 1)
  {
    // .Font = 0
    FCL_FONT = 0;

  // } else {
  }

  if (FCL_FONT == 0)
  {
    FCR_RETVAL = FCD_09e51_gLCD_Font1__ReadWidth(FCL_CHARACTER);

  // } else {
  }

  #if (0) // 1 > 1
  //Code has been optimised out by the pre-processor
  // #else
  #endif

  #if (0) // 1 > 2
  //Code has been optimised out by the pre-processor
  // #else
  #endif

  #if (0) // 1 > 3
  //Code has been optimised out by the pre-processor
  // #else
  #endif

  return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Gets a stat from the selected embedded ASCII font data.
       :
       :Parameters for macro ReadFontStat:
       :  Font : Font selection range: 0 to (NumFonts - 1)
       :  Index : 0=SpaceWidth, 1=PixelHeight
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_0ba71_Base_GLCD__ReadFontStat(MX_UINT8 FCL_FONT, MX_UINT8 FCL_INDEX)
{
  //Local variable definitions
  MX_UINT16 FCL_POSITION;
  MX_UINT8 FCR_RETVAL;

  // .Return = 0
  FCR_RETVAL = 0;

  if (FCL_FONT >= 1)
  {
    // .Font = 0
    FCL_FONT = 0;

  // } else {
  }

  if (FCL_FONT == 0)
  {
    FCR_RETVAL = FCD_09e51_gLCD_Font1__ReadFontStat(FCL_INDEX);

  // } else {
  }

  #if (0) // 1 > 1
  //Code has been optimised out by the pre-processor
  // #else
  #endif

  #if (0) // 1 > 2
  //Code has been optimised out by the pre-processor
  // #else
  #endif

  #if (0) // 1 > 3
  //Code has been optimised out by the pre-processor
  // #else
  #endif

  return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Gets a byte from the selected embedded ASCII font data.
       :
       :Parameters for macro ReadFontByte:
       :  Font : Font selection range: 0 to (NumFonts - 1)
       :  Character : ASCII character for example 'A' or 65
       :  ByteIndex : Font column Ranging 0-4
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_0ba71_Base_GLCD__ReadFontByte(MX_UINT8 FCL_FONT, MX_UINT8 FCL_CHARACTER, MX_UINT8 FCL_BYTEINDEX)
{
  //Local variable definitions
  MX_UINT16 FCL_POSITION;
  MX_UINT8 FCR_RETVAL;

  // .Return = 0
  FCR_RETVAL = 0;

  if (FCL_FONT >= 1)
  {
    // .Font = 0
    FCL_FONT = 0;

  // } else {
  }

  if (FCL_FONT == 0)
  {
    FCR_RETVAL = FCD_09e51_gLCD_Font1__ReadASCIILUT(FCL_CHARACTER, FCL_BYTEINDEX);

  // } else {
  }

  #if (0) // 1 > 1
  //Code has been optimised out by the pre-processor
  // #else
  #endif

  #if (0) // 1 > 2
  //Code has been optimised out by the pre-processor
  // #else
  #endif

  #if (0) // 1 > 3
  //Code has been optimised out by the pre-processor
  // #else
  #endif

  return (FCR_RETVAL);

}


/*========================================================================*\
   Use :gLCD_ST7789V1
       :GUID: 4e30b15e-2507-4583-995d-b2056e04a286
       :Location: C:\ProgramData\MatrixTSL\FlowcodeV10\Components\gLCD_ST7789V.fcpx
       :Version: 10.0 (0x100628)
       :Timestamp: 04\03\2024
       :Variable declarations
       :Macro implementations
\*========================================================================*/
#define FCVsz_0e5b1_gLCD_ST7789V1__PIXELBUFFER 480
MX_GLOBAL MX_UINT16 FCV_0e5b1_gLCD_ST7789V1__BACKGROUND_COL_VAR;
MX_GLOBAL MX_UINT16 FCV_0e5b1_gLCD_ST7789V1__FOREGROUND_COL_VAR;
MX_GLOBAL MX_UINT32 FCV_0e5b1_gLCD_ST7789V1__PIXELCOUNT = (0x0);
MX_GLOBAL MX_UINT8 FCV_0e5b1_gLCD_ST7789V1__ORIENTATION = (0x0);
MX_GLOBAL MX_UINT8 FCV_0e5b1_gLCD_ST7789V1__SCALEY = (0x1);
MX_GLOBAL MX_UINT8 FCV_0e5b1_gLCD_ST7789V1__SCALEX = (0x1);
MX_GLOBAL MX_UINT16 FCV_0e5b1_gLCD_ST7789V1__PIXELPOINTER = (0x0);
MX_GLOBAL MX_UINT8 FCV_0e5b1_gLCD_ST7789V1__PIXELBUFFER[FCVsz_0e5b1_gLCD_ST7789V1__PIXELBUFFER];

/*=----------------------------------------------------------------------=*\
   Use :Sets a pixel with the current foreground colour at current pixel location.
       :Not compatible with orientations other than 0.
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__FastBPlot()
{
  //Local variable definitions
  MX_UINT32 FCL_COLOUR;

  #if (1)
    // PixelBuffer[PixelPointer] = background_col_var >> 8
    // PixelBuffer[PixelPointer + 1] = background_col_var
    FCV_0e5b1_gLCD_ST7789V1__PIXELBUFFER[FCV_0e5b1_gLCD_ST7789V1__PIXELPOINTER] = FCV_0e5b1_gLCD_ST7789V1__BACKGROUND_COL_VAR >> 8;
    FCV_0e5b1_gLCD_ST7789V1__PIXELBUFFER[FCV_0e5b1_gLCD_ST7789V1__PIXELPOINTER + 1] = FCV_0e5b1_gLCD_ST7789V1__BACKGROUND_COL_VAR;

    // PixelPointer = PixelPointer + 2
    FCV_0e5b1_gLCD_ST7789V1__PIXELPOINTER = FCV_0e5b1_gLCD_ST7789V1__PIXELPOINTER + 2;

    // PixelCount = PixelCount - 1
    FCV_0e5b1_gLCD_ST7789V1__PIXELCOUNT = FCV_0e5b1_gLCD_ST7789V1__PIXELCOUNT - 1;

    if ((FCV_0e5b1_gLCD_ST7789V1__PIXELCOUNT == 0) || (FCV_0e5b1_gLCD_ST7789V1__PIXELPOINTER == (240 * 2)))
    {
      #if (1)
        // chip_sel_pin = 0
        SET_PORT_PIN(A, 15, 0);

      // #else
      //Code has been optimised out by the pre-processor
      #endif

      FC_CAL_SPI_Transaction_1(FCV_0e5b1_gLCD_ST7789V1__PIXELBUFFER, 480, FCV_0e5b1_gLCD_ST7789V1__PIXELPOINTER);

      #if (1)
        // chip_sel_pin = 1
        SET_PORT_PIN(A, 15, 1);

      // #else
      //Code has been optimised out by the pre-processor
      #endif

      // PixelPointer = 0
      FCV_0e5b1_gLCD_ST7789V1__PIXELPOINTER = 0;

    // } else {
    }

  #else
  //Code has been optimised out by the pre-processor
  #endif

}

/*=----------------------------------------------------------------------=*\
   Use :Switches on the backlight
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__BacklightOn()
{
  #if (1)
    // BacklightPin = 1
    SET_PORT_PIN(A, 16, 1);

  // #else
  //Code has been optimised out by the pre-processor
  #endif

}

/*=----------------------------------------------------------------------=*\
   Use :Allows the fonts to be scaled up by multiplying the number of pixels on the X and Y.
       :
       :Parameters for macro SetFontScaler:
       :  ScaleX : Sets the horizontal scale of the font, default 1
       :  ScaleY : Sets the vertical scale of the font, default 1
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__SetFontScaler(MX_UINT8 FCL_SCALEX, MX_UINT8 FCL_SCALEY)
{
  if (FCL_SCALEX > 0)
  {
    // ScaleX = .ScaleX
    FCV_0e5b1_gLCD_ST7789V1__SCALEX = FCL_SCALEX;

  } else {
    // ScaleX = 1
    FCV_0e5b1_gLCD_ST7789V1__SCALEX = 1;

  }

  if (FCL_SCALEY > 0)
  {
    // ScaleY = .ScaleY
    FCV_0e5b1_gLCD_ST7789V1__SCALEY = FCL_SCALEY;

  } else {
    // ScaleY = 1
    FCV_0e5b1_gLCD_ST7789V1__SCALEY = 1;

  }

}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro SendCommand:
       :  Cmd : MX_UINT8
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__SendCommand(MX_UINT8 FCL_CMD)
{
  FCD_0e5b1_gLCD_ST7789V1__Write(FCL_CMD, 0);

}

/*=----------------------------------------------------------------------=*\
   Use :This macro prints a decimal number to the Graphical LCD.
       :
       :Parameters for macro PrintNumber:
       :  Number : Byte or Integer number to send to the display.
       :  X : X pixel coordinate to set the output string position.
       :  Y : Y pixel coordinate to set the output string position.
       :  Font : Range: 0 to 31 - 0=5x8, 1=10x8, 2=10x16, 3=5x16, 4-31=Extended Sizes
       :  Transparent : Specifies if the background of the text is drawn - 0 = Background colour is drawn, 1 = Background colour not drawn.
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__PrintNumber(MX_SINT16 FCL_NUMBER, MX_UINT16 FCL_X, MX_UINT16 FCL_Y, MX_UINT8 FCL_FONT, MX_UINT8 FCL_TRANSPARENT)
{
  //Local variable definitions
  #define FCLsz_TEMP 8
  MX_CHAR FCL_TEMP[FCLsz_TEMP];

  // .temp = ToString$ (.Number)
  FCI_TOSTRING(FCL_NUMBER, FCL_TEMP,8);

  FCD_0e5b1_gLCD_ST7789V1__Print(FCL_TEMP, FCLsz_TEMP, FCL_X, FCL_Y, FCL_FONT, FCL_TRANSPARENT);

  //Local variable definitions
  #undef FCLsz_TEMP
}

/*=----------------------------------------------------------------------=*\
   Use :Draws a line with the current foreground colour from pixel location X1, Y1 to pixel location X2, Y2.
       :
       :Parameters for macro DrawLine:
       :  X1 : MX_UINT16
       :  Y1 : MX_UINT16
       :  X2 : MX_UINT16
       :  Y2 : MX_UINT16
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__DrawLine(MX_UINT16 FCL_X1, MX_UINT16 FCL_Y1, MX_UINT16 FCL_X2, MX_UINT16 FCL_Y2)
{
  //Local variable definitions
  MX_SINT16 FCL_C1;
  MX_SINT16 FCL_M1;
  MX_SINT16 FCL_D1 = (0);
  MX_SINT16 FCL_PIXELX;
  MX_SINT16 FCL_PIXELY;
  MX_SINT16 FCL_YINC = (1);
  MX_SINT16 FCL_XINC = (1);
  MX_BOOL FCL_STRAIGHT = (0);

  // .PixelX = .X2 - .X1
  // .PixelY = .Y2 - .Y1
  FCL_PIXELX = FCL_X2 - FCL_X1;
  FCL_PIXELY = FCL_Y2 - FCL_Y1;

  if (FCL_PIXELX < 0)
  {
    // .Xinc = -1
    // .PixelX = .PixelX * -1
    FCL_XINC = -1;
    FCL_PIXELX = FCL_PIXELX * -1;

  } else {
    if (FCL_PIXELX == 0)
    {
      // .Straight = 1
      // .PixelX = 1
      FCL_STRAIGHT = 1;
      FCL_PIXELX = 1;

    // } else {
    }

  }

  if (FCL_PIXELY < 0)
  {
    // .Yinc = -1
    // .PixelY = .PixelY * -1
    FCL_YINC = -1;
    FCL_PIXELY = FCL_PIXELY * -1;

  } else {
    if (FCL_PIXELY == 0)
    {
      // .Straight = 1
      // .PixelY = 1
      FCL_STRAIGHT = 1;
      FCL_PIXELY = 1;

    // } else {
    }

  }

  if (FCL_STRAIGHT)
  {
    FCD_0e5b1_gLCD_ST7789V1__Window(FCL_X1, FCL_Y1, FCL_X2, FCL_Y2);

    // .PixelX = (.PixelX * .PixelY) + 1
    FCL_PIXELX = (FCL_PIXELX * FCL_PIXELY) + 1;

    for (FCLV_LOOP1=0; (FCLV_LOOP1)<(FCL_PIXELX); (FCLV_LOOP1)++)
    {
      FCD_0e5b1_gLCD_ST7789V1__FastPlot();


    }

  } else {
    if (FCL_PIXELY <= FCL_PIXELX)
    {
      // .C1 = 2 * .PixelX
      // .M1 = 2 * .PixelY
      FCL_C1 = 2 * FCL_PIXELX;
      FCL_M1 = 2 * FCL_PIXELY;

      while (FCL_X1 != FCL_X2)
      {
        FCD_0e5b1_gLCD_ST7789V1__Plot(FCL_X1, FCL_Y1);

        // .X1 = .X1 + .Xinc
        FCL_X1 = FCL_X1 + FCL_XINC;

        // .D1 = .D1 + .M1
        FCL_D1 = FCL_D1 + FCL_M1;

        if (FCL_D1 > FCL_PIXELX)
        {
          // .Y1 = .Y1 + .Yinc
          FCL_Y1 = FCL_Y1 + FCL_YINC;

          // .D1 = .D1 - .C1
          FCL_D1 = FCL_D1 - FCL_C1;

        // } else {
        }


      }

    } else {
      // .C1 = 2 * .PixelY
      // .M1 = 2 * .PixelX
      FCL_C1 = 2 * FCL_PIXELY;
      FCL_M1 = 2 * FCL_PIXELX;

      while (FCL_Y1 != FCL_Y2)
      {
        FCD_0e5b1_gLCD_ST7789V1__Plot(FCL_X1, FCL_Y1);

        // .Y1 = .Y1 + .Yinc
        FCL_Y1 = FCL_Y1 + FCL_YINC;

        // .D1 = .D1 + .M1
        FCL_D1 = FCL_D1 + FCL_M1;

        if (FCL_D1 > FCL_PIXELY)
        {
          // .X1 = .X1 + .Xinc
          FCL_X1 = FCL_X1 + FCL_XINC;

          // .D1 = .D1 - .C1
          FCL_D1 = FCL_D1 - FCL_C1;

        // } else {
        }


      }

    }

  }

  FCD_0e5b1_gLCD_ST7789V1__Plot(FCL_X1, FCL_Y1);

}

/*=----------------------------------------------------------------------=*\
   Use :Sets a pixel with the current foreground colour at pixel location X, Y.
       :
       :Parameters for macro Plot:
       :  X1 : MX_UINT16
       :  Y1 : MX_UINT16
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__Plot(MX_UINT16 FCL_X1, MX_UINT16 FCL_Y1)
{
  //Local variable definitions
  #define FCLsz_DATA 2
  MX_UINT8 FCL_DATA[FCLsz_DATA];

  FCD_0e5b1_gLCD_ST7789V1__Window(FCL_X1, FCL_Y1, FCL_X1, FCL_Y1);

  #if (1)
    #if (1)
      // chip_sel_pin = 0
      SET_PORT_PIN(A, 15, 0);

    // #else
    //Code has been optimised out by the pre-processor
    #endif

    // .data[0] = foreground_col_var >> 8
    // .data[1] = foreground_col_var
    FCL_DATA[0] = FCV_0e5b1_gLCD_ST7789V1__FOREGROUND_COL_VAR >> 8;
    FCL_DATA[1] = FCV_0e5b1_gLCD_ST7789V1__FOREGROUND_COL_VAR;

    FC_CAL_SPI_Transaction_1(FCL_DATA, 2, 2);

    #if (1)
      // chip_sel_pin = 1
      SET_PORT_PIN(A, 15, 1);

    // #else
    //Code has been optimised out by the pre-processor
    #endif

  #else
  //Code has been optimised out by the pre-processor
  #endif

  //Local variable definitions
  #undef FCLsz_DATA
}

/*=----------------------------------------------------------------------=*\
   Use :Draws an ellipse object on the display with the center of the ellipse at the location X,Y
       :
       :Parameters for macro DrawEllipse:
       :  X : X Coordinate for the center of the circle
       :  Y : Y coordinate for the center of the circle
       :  XRadius : Radius of the circle on the X axis specified in pixels
       :  YRadius : Radius of the circle on the Y axis specified in pixels
       :  Transparent : 0=Fill inside circle using background colour / 1=Draw outer circle only
       :  Solid : 0=Use Transparent Setting / 1=Fill with foreground colour
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__DrawEllipse(MX_UINT16 FCL_X, MX_UINT16 FCL_Y, MX_UINT16 FCL_XRADIUS, MX_UINT16 FCL_YRADIUS, MX_UINT8 FCL_TRANSPARENT, MX_UINT8 FCL_SOLID)
{
  //Local variable definitions
  MX_SINT16 FCL_ERR;
  MX_SINT16 FCL_CURX;
  MX_SINT16 FCL_CURY;
  MX_UINT32 FCL_BGCOL;
  MX_UINT32 FCL_FGCOL;
  MX_UINT8 FCL_REP = (0x0);
  MX_SINT16 FCL_E2;
  MX_FLOAT FCL_K;

  if (FCL_SOLID == 1)
  {
  FCC_DrawEllipse_A:
    ;

    // .CurX = 0
    // .CurY = 0 - .YRadius
    FCL_CURX = 0;
    FCL_CURY = 0 - FCL_YRADIUS;

    // .err = 2 - (2 * .XRadius)
    FCL_ERR = 2 - (2 * FCL_XRADIUS);

    // .K = FLOAT (FLOAT .YRadius / FLOAT .XRadius)
    FCL_K = (flt_div(flt_fromi(FCL_YRADIUS), flt_fromi(FCL_XRADIUS)));

    while (1)
    {
      FCD_0e5b1_gLCD_ST7789V1__DrawLine(flt_toi(flt_sub(flt_fromi(FCL_X), (flt_div(flt_fromi(FCL_CURX), FCL_K)))), FCL_Y + FCL_CURY, flt_toi(flt_add(flt_fromi(FCL_X), (flt_div(flt_fromi(FCL_CURX), FCL_K)))), FCL_Y + FCL_CURY);

      FCD_0e5b1_gLCD_ST7789V1__DrawLine(flt_toi(flt_sub(flt_fromi(FCL_X), (flt_div(flt_fromi(FCL_CURX), FCL_K)))), FCL_Y - FCL_CURY, flt_toi(flt_add(flt_fromi(FCL_X), (flt_div(flt_fromi(FCL_CURX), FCL_K)))), FCL_Y - FCL_CURY);

      // .e2 = .err
      FCL_E2 = FCL_ERR;

      if (FCL_E2 <= FCL_CURX)
      {
        // .CurX = .CurX + 1
        // .err = .err + ((.CurX * 2) + 1)
        FCL_CURX = FCL_CURX + 1;
        FCL_ERR = FCL_ERR + ((FCL_CURX * 2) + 1);

        if ((0 - FCL_CURY == FCL_CURX) && (FCL_E2 <= FCL_CURY))
        {
          // .e2 = 0
          FCL_E2 = 0;

        // } else {
        }

      // } else {
      }

      if (FCL_E2 > FCL_CURY)
      {
        // .CurY = .CurY + 1
        // .err = .err + ((.CurY * 2) + 1)
        FCL_CURY = FCL_CURY + 1;
        FCL_ERR = FCL_ERR + ((FCL_CURY * 2) + 1);

      // } else {
      }


      if ((FCL_CURY <= 0) == 0) break;
    }

  } else {
    if (FCL_TRANSPARENT == 1)
    {
    FCC_DrawEllipse_B:
      ;

      // .CurX = 0
      // .CurY = 0 - .YRadius
      FCL_CURX = 0;
      FCL_CURY = 0 - FCL_YRADIUS;

      // .err = 2 - (2 * .XRadius)
      FCL_ERR = 2 - (2 * FCL_XRADIUS);

      // .K = FLOAT (FLOAT .YRadius / FLOAT .XRadius)
      FCL_K = (flt_div(flt_fromi(FCL_YRADIUS), flt_fromi(FCL_XRADIUS)));

      while (1)
      {
        FCD_0e5b1_gLCD_ST7789V1__Plot(flt_toi(flt_sub(flt_fromi(FCL_X), (flt_div(flt_fromi(FCL_CURX), FCL_K)))), FCL_Y + FCL_CURY);

        FCD_0e5b1_gLCD_ST7789V1__Plot(flt_toi(flt_add(flt_fromi(FCL_X), (flt_div(flt_fromi(FCL_CURX), FCL_K)))), FCL_Y + FCL_CURY);

        FCD_0e5b1_gLCD_ST7789V1__Plot(flt_toi(flt_add(flt_fromi(FCL_X), (flt_div(flt_fromi(FCL_CURX), FCL_K)))), FCL_Y - FCL_CURY);

        FCD_0e5b1_gLCD_ST7789V1__Plot(flt_toi(flt_sub(flt_fromi(FCL_X), (flt_div(flt_fromi(FCL_CURX), FCL_K)))), FCL_Y - FCL_CURY);

        // .e2 = .err
        FCL_E2 = FCL_ERR;

        if (FCL_E2 <= FCL_CURX)
        {
          // .CurX = .CurX + 1
          // .err = .err + ((.CurX * 2) + 1)
          FCL_CURX = FCL_CURX + 1;
          FCL_ERR = FCL_ERR + ((FCL_CURX * 2) + 1);

          if ((0 - FCL_CURY == FCL_CURX) && (FCL_E2 <= FCL_CURY))
          {
            // .e2 = 0
            FCL_E2 = 0;

          // } else {
          }

        // } else {
        }

        if (FCL_E2 > FCL_CURY)
        {
          // .CurY = .CurY + 1
          // .err = .err + ((.CurY * 2) + 1)
          FCL_CURY = FCL_CURY + 1;
          FCL_ERR = FCL_ERR + ((FCL_CURY * 2) + 1);

        // } else {
        }


        if ((FCL_CURY <= 0) == 0) break;
      }

    } else {
      // .FGCol = foreground_col_var
      // .BGCol = background_col_var
      FCL_FGCOL = FCV_0e5b1_gLCD_ST7789V1__FOREGROUND_COL_VAR;
      FCL_BGCOL = FCV_0e5b1_gLCD_ST7789V1__BACKGROUND_COL_VAR;

      // foreground_col_var = .BGCol
      FCV_0e5b1_gLCD_ST7789V1__FOREGROUND_COL_VAR = FCL_BGCOL;

      // .Rep = 1
      FCL_REP = 1;

      goto FCC_DrawEllipse_A;

    }

  }

  if (FCL_REP == 1)
  {
    // .Rep = .Rep + 1
    FCL_REP = FCL_REP + 1;

    // foreground_col_var = .FGCol
    FCV_0e5b1_gLCD_ST7789V1__FOREGROUND_COL_VAR = FCL_FGCOL;

    goto FCC_DrawEllipse_B;

  // } else {
  }

}

/*=----------------------------------------------------------------------=*\
   Use :Sets a pixel with the current foreground colour at current pixel location.
       :Not compatible with orientations other than 0.
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__FastPlot()
{
  //Local variable definitions
  MX_UINT32 FCL_COLOUR;

  #if (1)
    // PixelBuffer[PixelPointer] = foreground_col_var >> 8
    // PixelBuffer[PixelPointer + 1] = foreground_col_var
    FCV_0e5b1_gLCD_ST7789V1__PIXELBUFFER[FCV_0e5b1_gLCD_ST7789V1__PIXELPOINTER] = FCV_0e5b1_gLCD_ST7789V1__FOREGROUND_COL_VAR >> 8;
    FCV_0e5b1_gLCD_ST7789V1__PIXELBUFFER[FCV_0e5b1_gLCD_ST7789V1__PIXELPOINTER + 1] = FCV_0e5b1_gLCD_ST7789V1__FOREGROUND_COL_VAR;

    // PixelPointer = PixelPointer + 2
    FCV_0e5b1_gLCD_ST7789V1__PIXELPOINTER = FCV_0e5b1_gLCD_ST7789V1__PIXELPOINTER + 2;

    // PixelCount = PixelCount - 1
    FCV_0e5b1_gLCD_ST7789V1__PIXELCOUNT = FCV_0e5b1_gLCD_ST7789V1__PIXELCOUNT - 1;

    if ((FCV_0e5b1_gLCD_ST7789V1__PIXELCOUNT == 0) || (FCV_0e5b1_gLCD_ST7789V1__PIXELPOINTER == (240 * 2)))
    {
      #if (1)
        // chip_sel_pin = 0
        SET_PORT_PIN(A, 15, 0);

      // #else
      //Code has been optimised out by the pre-processor
      #endif

      FC_CAL_SPI_Transaction_1(FCV_0e5b1_gLCD_ST7789V1__PIXELBUFFER, 480, FCV_0e5b1_gLCD_ST7789V1__PIXELPOINTER);

      #if (1)
        // chip_sel_pin = 1
        SET_PORT_PIN(A, 15, 1);

      // #else
      //Code has been optimised out by the pre-processor
      #endif

      // PixelPointer = 0
      FCV_0e5b1_gLCD_ST7789V1__PIXELPOINTER = 0;

    // } else {
    }

  #else
  //Code has been optimised out by the pre-processor
  #endif

}

/*=----------------------------------------------------------------------=*\
   Use :Draws an arc either as an outline or as a filled object.
       :
       :Parameters for macro DrawArc:
       :  X : Center X coordinate
       :  Y : Center Y coordinate
       :  Radius : Radius, distance of edge from the centre coordinates
       :  StartAngle : Angle to start drawing, in degrees
       :  EndAngle : Angle to end drawing, in degrees
       :  Resolution : Number of lines to draw from the center to the outer edge, 0=Fill
       :  Transparent : Chooses the transparency - 0 = Arc contains background colour, 1 = Arc contains previous pixel data.
       :  Solid : Chooses to fill with colour - 0 = Arc transparency data, 1 = Arc contains foreground colour.
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__DrawArc(MX_UINT16 FCL_X, MX_UINT16 FCL_Y, MX_UINT16 FCL_RADIUS, MX_FLOAT FCL_STARTANGLE, MX_FLOAT FCL_ENDANGLE, MX_UINT16 FCL_RESOLUTION, MX_UINT8 FCL_TRANSPARENT, MX_UINT8 FCL_SOLID)
{
  //Local variable definitions
  MX_SINT16 FCL_I;
  MX_SINT16 FCL_J;
  MX_SINT16 FCL_SX;
  MX_SINT16 FCL_SY;
  MX_FLOAT FCL_ANGLESTEP;
  MX_FLOAT FCL_ANGLE;
  MX_SINT16 FCL_OX = (-32768);
  MX_SINT16 FCL_OY = (-32768);

  if (FCL_RESOLUTION == 0)
  {
    // .Resolution = (.Radius * 5) / 2
    FCL_RESOLUTION = (FCL_RADIUS * 5) / 2;

  // } else {
  }

  // .StartAngle = .StartAngle * 0.017453
  // .EndAngle = .EndAngle * 0.017453
  // .AngleStep = (.EndAngle - .StartAngle) / .Resolution
  FCL_STARTANGLE = flt_mul(FCL_STARTANGLE, 0.017453);
  FCL_ENDANGLE = flt_mul(FCL_ENDANGLE, 0.017453);
  FCL_ANGLESTEP = flt_div((flt_sub(FCL_ENDANGLE, FCL_STARTANGLE)), flt_fromi(FCL_RESOLUTION));

  for (FCL_I=0; (FCL_I)<(FCL_RESOLUTION); (FCL_I)++)
  {
    if ((FCL_TRANSPARENT == 0) || (FCL_SOLID == 1))
    {
      for (FCL_J=0; (FCL_J)<(FCL_RADIUS + 1); (FCL_J)++)
      {
        // .Angle = .StartAngle + (.i * .AngleStep)
        FCL_ANGLE = flt_add(FCL_STARTANGLE, (flt_mul(flt_fromi(FCL_I), FCL_ANGLESTEP)));

        // .sx = Round (FLOAT .j * cos (.Angle))
        // .sy = Round (FLOAT .j * sin (.Angle))
        FCL_SX = flt_round(flt_mul(flt_fromi(FCL_J), cos(FCL_ANGLE)));
        FCL_SY = flt_round(flt_mul(flt_fromi(FCL_J), sin(FCL_ANGLE)));

        // .sx = .sx + .X
        // .sy = .sy + .Y
        FCL_SX = FCL_SX + FCL_X;
        FCL_SY = FCL_SY + FCL_Y;

        if (FCL_J == FCL_RADIUS)
        {
          FCD_0e5b1_gLCD_ST7789V1__Plot(FCL_SX, FCL_SY);

          // .ox = .sx
          // .oy = .sy
          FCL_OX = FCL_SX;
          FCL_OY = FCL_SY;

        } else {
          if (FCL_SOLID == 1)
          {
            FCD_0e5b1_gLCD_ST7789V1__Plot(FCL_SX, FCL_SY);

          } else {
            if ((FCL_OY == FCL_SY) && (FCL_OX == FCL_SX))
            {
            } else {
              FCD_0e5b1_gLCD_ST7789V1__BPlot(FCL_SX, FCL_SY);

            }

          }

        }


      }

    } else {
      // .j = .Radius
      FCL_J = FCL_RADIUS;

      // .Angle = .StartAngle + (.i * .AngleStep)
      FCL_ANGLE = flt_add(FCL_STARTANGLE, (flt_mul(flt_fromi(FCL_I), FCL_ANGLESTEP)));

      // .sx = Round (FLOAT .j * cos (.Angle))
      // .sy = Round (FLOAT .j * sin (.Angle))
      FCL_SX = flt_round(flt_mul(flt_fromi(FCL_J), cos(FCL_ANGLE)));
      FCL_SY = flt_round(flt_mul(flt_fromi(FCL_J), sin(FCL_ANGLE)));

      // .sx = .sx + .X
      // .sy = .sy + .Y
      FCL_SX = FCL_SX + FCL_X;
      FCL_SY = FCL_SY + FCL_Y;

      FCD_0e5b1_gLCD_ST7789V1__Plot(FCL_SX, FCL_SY);

    }


  }

}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro SendData:
       :  Data : MX_UINT8
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__SendData(MX_UINT8 FCL_DATA)
{
  FCD_0e5b1_gLCD_ST7789V1__Write(FCL_DATA, 1);

}

/*=----------------------------------------------------------------------=*\
   Use :Controls the way data is printed out on the display allowing multiple different viewing orientations. Default is 0.
       :
       :Parameters for macro SetDisplayOrientation:
       :  Orientation : 0=Default, 1=90??CW, 2=180??CW, 3=270??CW
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__SetDisplayOrientation(MX_UINT8 FCL_ORIENTATION)
{
  // Orientation = .Orientation
  FCV_0e5b1_gLCD_ST7789V1__ORIENTATION = FCL_ORIENTATION;

}

/*=----------------------------------------------------------------------=*\
   Use :Switches off the backlight
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__BacklightOff()
{
  #if (1)
    // BacklightPin = 0
    SET_PORT_PIN(A, 16, 0);

  // #else
  //Code has been optimised out by the pre-processor
  #endif

}

/*=----------------------------------------------------------------------=*\
   Use :Sets a pixel with the current background colour at pixel location X, Y.
       :
       :Parameters for macro BPlot:
       :  X1 : MX_UINT16
       :  Y1 : MX_UINT16
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__BPlot(MX_UINT16 FCL_X1, MX_UINT16 FCL_Y1)
{
  //Local variable definitions
  #define FCLsz_DATA 2
  MX_UINT8 FCL_DATA[FCLsz_DATA];

  FCD_0e5b1_gLCD_ST7789V1__Window(FCL_X1, FCL_Y1, FCL_X1, FCL_Y1);

  #if (1)
    #if (1)
      // chip_sel_pin = 0
      SET_PORT_PIN(A, 15, 0);

    // #else
    //Code has been optimised out by the pre-processor
    #endif

    // .data[0] = background_col_var >> 8
    // .data[1] = background_col_var
    FCL_DATA[0] = FCV_0e5b1_gLCD_ST7789V1__BACKGROUND_COL_VAR >> 8;
    FCL_DATA[1] = FCV_0e5b1_gLCD_ST7789V1__BACKGROUND_COL_VAR;

    FC_CAL_SPI_Transaction_1(FCL_DATA, 2, 2);

    #if (1)
      // chip_sel_pin = 1
      SET_PORT_PIN(A, 15, 1);

    // #else
    //Code has been optimised out by the pre-processor
    #endif

  #else
  //Code has been optimised out by the pre-processor
  #endif

  //Local variable definitions
  #undef FCLsz_DATA
}

/*=----------------------------------------------------------------------=*\
   Use :Specifies a full screen or sub window of pixels to draw.
       :Useful when used with the FastPlot function to draw bitmaps at high speed.
       :
       :Parameters for macro Window:
       :  X1 : MX_UINT16
       :  Y1 : MX_UINT16
       :  X2 : MX_UINT16
       :  Y2 : MX_UINT16
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__Window(MX_UINT16 FCL_X1, MX_UINT16 FCL_Y1, MX_UINT16 FCL_X2, MX_UINT16 FCL_Y2)
{
  //Local variable definitions
  MX_UINT16 FCL_TEMP;
  #define FCLsz_DATA 4
  MX_UINT8 FCL_DATA[FCLsz_DATA];

  switch (FCV_0e5b1_gLCD_ST7789V1__ORIENTATION)
  {
    case 1:
    {
      // .temp = .Y1
      // .Y1 = .Y2
      // .Y2 = .temp
      FCL_TEMP = FCL_Y1;
      FCL_Y1 = FCL_Y2;
      FCL_Y2 = FCL_TEMP;

      // .temp = pixel_width - (.Y1 + 1)
      // .Y1 = .X1
      // .X1 = .temp
      FCL_TEMP = 128 - (FCL_Y1 + 1);
      FCL_Y1 = FCL_X1;
      FCL_X1 = FCL_TEMP;

      // .temp = pixel_width - (.Y2 + 1)
      // .Y2 = .X2
      // .X2 = .temp
      FCL_TEMP = 128 - (FCL_Y2 + 1);
      FCL_Y2 = FCL_X2;
      FCL_X2 = FCL_TEMP;

      break;
    }
    case 2:
    {
      // .temp = .Y1
      // .Y1 = .Y2
      // .Y2 = .temp
      FCL_TEMP = FCL_Y1;
      FCL_Y1 = FCL_Y2;
      FCL_Y2 = FCL_TEMP;

      // .X1 = pixel_width - (.X1 + 1)
      // .Y1 = pixel_height - (.Y1 + 1)
      FCL_X1 = 128 - (FCL_X1 + 1);
      FCL_Y1 = 128 - (FCL_Y1 + 1);

      // .X2 = pixel_width - (.X2 + 1)
      // .Y2 = pixel_height - (.Y2 + 1)
      FCL_X2 = 128 - (FCL_X2 + 1);
      FCL_Y2 = 128 - (FCL_Y2 + 1);

      break;
    }
    case 3:
    {
      // .temp = .Y1
      // .Y1 = pixel_height - (.X1 + 1)
      // .X1 = .temp
      FCL_TEMP = FCL_Y1;
      FCL_Y1 = 128 - (FCL_X1 + 1);
      FCL_X1 = FCL_TEMP;

      // .temp = .Y2
      // .Y2 = pixel_height - (.X2 + 1)
      // .X2 = .temp
      FCL_TEMP = FCL_Y2;
      FCL_Y2 = 128 - (FCL_X2 + 1);
      FCL_X2 = FCL_TEMP;

      break;
    }
    // default:

  }

  if (FCL_X1 > FCL_X2)
  {
    // .temp = .X1
    // .X1 = .X2
    // .X2 = .temp
    FCL_TEMP = FCL_X1;
    FCL_X1 = FCL_X2;
    FCL_X2 = FCL_TEMP;

  // } else {
  }

  if (FCL_Y1 > FCL_Y2)
  {
    // .temp = .Y1
    // .Y1 = .Y2
    // .Y2 = .temp
    FCL_TEMP = FCL_Y1;
    FCL_Y1 = FCL_Y2;
    FCL_Y2 = FCL_TEMP;

  // } else {
  }

  #if (1)
    // PixelCount = ((.X2 - .X1) + 1) * ((.Y2 - .Y1) + 1)
    // PixelPointer = 0
    FCV_0e5b1_gLCD_ST7789V1__PIXELCOUNT = ((FCL_X2 - FCL_X1) + 1) * ((FCL_Y2 - FCL_Y1) + 1);
    FCV_0e5b1_gLCD_ST7789V1__PIXELPOINTER = 0;

  // #else
  //Code has been optimised out by the pre-processor
  #endif

  #if (1)
    #if (1)
      // chip_sel_pin = 0
      SET_PORT_PIN(A, 15, 0);

    // #else
    //Code has been optimised out by the pre-processor
    #endif

    //Comment:
    //Set Column Address

    // DCPin = 0
    SET_PORT_PIN(B, 1, 0);

    FC_CAL_SPI_Master_Byte_1(0x2A);

    // DCPin = 1
    SET_PORT_PIN(B, 1, 1);

    // .temp = .X1 + XOffset
    FCL_TEMP = FCL_X1 + 1;

    // .data[0] = .Temp >> 8
    // .data[1] = .Temp
    FCL_DATA[0] = FCL_TEMP >> 8;
    FCL_DATA[1] = FCL_TEMP;

    // .temp = .X2 + XOffset
    FCL_TEMP = FCL_X2 + 1;

    // .data[2] = .Temp >> 8
    // .data[3] = .Temp
    FCL_DATA[2] = FCL_TEMP >> 8;
    FCL_DATA[3] = FCL_TEMP;

    FC_CAL_SPI_Transaction_1(FCL_DATA, 4, 4);

    //Comment:
    //Set Row Address

    // DCPin = 0
    SET_PORT_PIN(B, 1, 0);

    FC_CAL_SPI_Master_Byte_1(0x2B);

    // DCPin = 1
    SET_PORT_PIN(B, 1, 1);

    // .temp = .Y1 + YOffset
    FCL_TEMP = FCL_Y1 + 1;

    // .data[0] = .Temp >> 8
    // .data[1] = .Temp
    FCL_DATA[0] = FCL_TEMP >> 8;
    FCL_DATA[1] = FCL_TEMP;

    // .temp = .Y2 + YOffset
    FCL_TEMP = FCL_Y2 + 1;

    // .data[2] = .Temp >> 8
    // .data[3] = .Temp
    FCL_DATA[2] = FCL_TEMP >> 8;
    FCL_DATA[3] = FCL_TEMP;

    FC_CAL_SPI_Transaction_1(FCL_DATA, 4, 4);

    //Comment:
    //Prep for data

    // DCPin = 0
    SET_PORT_PIN(B, 1, 0);

    FC_CAL_SPI_Master_Byte_1(0x2C);

    // DCPin = 1
    SET_PORT_PIN(B, 1, 1);

    #if (1)
      // chip_sel_pin = 1
      SET_PORT_PIN(A, 15, 1);

    // #else
    //Code has been optimised out by the pre-processor
    #endif

  #else
  //Code has been optimised out by the pre-processor
  #endif

  //Local variable definitions
  #undef FCLsz_DATA
}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro Write:
       :  LCD_Out : MX_UINT8
       :  dc : MX_UINT8
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__Write(MX_UINT8 FCL_LCD_OUT, MX_UINT8 FCL_DC)
{
  //Local variable definitions
  MX_UINT8 FCL_CNT = (0x0);

  //Comment:
  //Output commands replaced with custom C code to increase component speed

  #if defined(MX_CAL_PIC) || defined(MX_CAL_PIC16) || defined(MX_CAL_PIC32)

  #if (1)
    #if (1)
      LCDCSPIN = 0;

    // #else
    //Code has been optimised out by the pre-processor
    #endif

  // #else
  //Code has been optimised out by the pre-processor
  #endif

  #if (1)
    // DCPin = .dc
    SET_PORT_PIN(B, 1, FCL_DC);

  #else
  //Code has been optimised out by the pre-processor
  #endif

  #if (1)
    FC_CAL_SPI_Master_Byte_1(FCL_LCD_OUT);

  #else
  //Code has been optimised out by the pre-processor
  #endif

  #if (1)
    #if (1)
      LCDCSPIN = 1;

    // #else
    //Code has been optimised out by the pre-processor
    #endif

  // #else
  //Code has been optimised out by the pre-processor
  #endif

  #else

  #if (1)
    #if (1)
      // chip_sel_pin = 0
      SET_PORT_PIN(A, 15, 0);

    // #else
    //Code has been optimised out by the pre-processor
    #endif

  // #else
  //Code has been optimised out by the pre-processor
  #endif

  #if (1)
    // DCPin = .dc
    SET_PORT_PIN(B, 1, FCL_DC);

  #else
  //Code has been optimised out by the pre-processor
  #endif

  #if (1)
    FC_CAL_SPI_Master_Byte_1(FCL_LCD_OUT);

  #else
  //Code has been optimised out by the pre-processor
  #endif

  #if (1)
    #if (1)
      // chip_sel_pin = 1
      SET_PORT_PIN(A, 15, 1);

    // #else
    //Code has been optimised out by the pre-processor
    #endif

  // #else
  //Code has been optimised out by the pre-processor
  #endif

  #endif

}

/*=----------------------------------------------------------------------=*\
   Use :This macro prints a string of characters to the Graphical LCD.
       :
       :Parameters for macro Print:
       :  Str[20] : String of characters to send to the display.
       :  X1 : X pixel coordinate to set the output string position.
       :  Y1 : Y pixel coordinate to set the output string position.
       :  Font : Selects which Font to use Range: 0 to Font Count
       :  Transparent : Specifies if the background of the text is drawn - 0 = Background colour is drawn, 1 = Background colour not drawn.
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__Print(MX_CHAR *FCL_STR, MX_UINT16 FCLsz_STR, MX_UINT16 FCL_X1, MX_UINT16 FCL_Y1, MX_UINT8 FCL_FONT, MX_UINT8 FCL_TRANSPARENT)
{
  //Local variable definitions
  MX_UINT8 FCL_BYTESPERCOLUMN;
  MX_UINT8 FCL_CHARACTERCOLUMNS;
  MX_UINT8 FCL_CHARACTERHEIGHT;
  MX_UINT8 FCL_COLUMNINDEX;
  MX_UINT8 FCL_COLUMNSUBINDEX;
  MX_UINT8 FCL_PIXELDATA;
  MX_UINT8 FCL_SPACECOLUMNS;
  MX_UINT8 FCL_IDX;
  MX_UINT8 FCL_LEN_STR;
  MX_UINT8 FCL_YCOUNT;
  MX_UINT8 FCL_YPIX;
  MX_UINT16 FCL_XCOUNT;
  MX_UINT8 FCL_H;

  // .xcount = 0
  // .idx = 0
  FCL_XCOUNT = 0;
  FCL_IDX = 0;

  // .len_str = Length$ (.Str)
  FCL_LEN_STR = FCI_GETLENGTH(FCL_STR, FCLsz_STR);

  FCL_SPACECOLUMNS = FCD_0ba71_Base_GLCD__ReadFontStat(FCL_FONT, 0);

  FCL_CHARACTERHEIGHT = FCD_0ba71_Base_GLCD__ReadFontStat(FCL_FONT, 1);

  // .BytesPerColumn = ((.CharacterHeight - 1) >> 3) + 1
  FCL_BYTESPERCOLUMN = ((FCL_CHARACTERHEIGHT - 1) >> 3) + 1;

  while (FCL_IDX < FCL_LEN_STR)
  {
    FCL_CHARACTERCOLUMNS = FCD_0ba71_Base_GLCD__ReadFontWidth(FCL_FONT, FCL_STR[FCL_IDX]);

    // .ColumnSubIndex = 0
    FCL_COLUMNSUBINDEX = 0;

    while (FCL_COLUMNSUBINDEX < FCL_BYTESPERCOLUMN)
    {
      if (FCL_COLUMNSUBINDEX)
      {
        // .xcount = .xcount - ((.CharacterColumns + .SpaceColumns) * ScaleX)
        FCL_XCOUNT = FCL_XCOUNT - ((FCL_CHARACTERCOLUMNS + FCL_SPACECOLUMNS) * FCV_0e5b1_gLCD_ST7789V1__SCALEX);

      // } else {
      }

      // .ColumnIndex = 0
      FCL_COLUMNINDEX = 0;

      while (FCL_COLUMNINDEX < (FCL_CHARACTERCOLUMNS + FCL_SPACECOLUMNS))
      {
        for (FCLV_LOOP2=0; (FCLV_LOOP2)<(FCV_0e5b1_gLCD_ST7789V1__SCALEX); (FCLV_LOOP2)++)
        {
          if (FCL_COLUMNINDEX < FCL_CHARACTERCOLUMNS)
          {
            FCL_PIXELDATA = FCD_0ba71_Base_GLCD__ReadFontByte(FCL_FONT, FCL_STR[FCL_IDX], FCL_COLUMNINDEX + (FCL_CHARACTERCOLUMNS * FCL_COLUMNSUBINDEX));

          } else {
            // .PixelData = 0
            FCL_PIXELDATA = 0;

          }

          // .ycount = (.ColumnSubIndex * 8) * ScaleY
          FCL_YCOUNT = (FCL_COLUMNSUBINDEX * 8) * FCV_0e5b1_gLCD_ST7789V1__SCALEY;

          //Comment:
          //We can only do window and fast plot when transparent = 0

          if (((FCL_COLUMNSUBINDEX + 1) * 8) < FCL_CHARACTERHEIGHT)
          {
            // .ypix = 0
            FCL_YPIX = 0;

            // .h = 8
            FCL_H = 8;

          } else {
            if (((FCV_0e5b1_gLCD_ST7789V1__ORIENTATION == 1) || (FCV_0e5b1_gLCD_ST7789V1__ORIENTATION == 2)) && FCL_TRANSPARENT == 0)
            {
              // .ypix = 0
              FCL_YPIX = 0;

              // .h = .CharacterHeight - (.ColumnSubIndex * 8)
              FCL_H = FCL_CHARACTERHEIGHT - (FCL_COLUMNSUBINDEX * 8);

            } else {
              // .ypix = ((.ColumnSubIndex + 1) * 8) - .CharacterHeight
              FCL_YPIX = ((FCL_COLUMNSUBINDEX + 1) * 8) - FCL_CHARACTERHEIGHT;

              // .h = 8
              FCL_H = 8;

            }

          }

          if (FCL_TRANSPARENT == 0)
          {
            FCD_0e5b1_gLCD_ST7789V1__Window(FCL_X1 + FCL_XCOUNT, FCL_Y1 + FCL_YCOUNT, FCL_X1 + FCL_XCOUNT, FCL_Y1 + FCL_YCOUNT + ((FCL_H - FCL_YPIX) * FCV_0e5b1_gLCD_ST7789V1__SCALEY) - 1);

            while (FCL_YPIX < FCL_H)
            {
              for (FCLV_LOOP4=0; (FCLV_LOOP4)<(FCV_0e5b1_gLCD_ST7789V1__SCALEY); (FCLV_LOOP4)++)
              {
                if ((FCV_0e5b1_gLCD_ST7789V1__ORIENTATION == 1) || (FCV_0e5b1_gLCD_ST7789V1__ORIENTATION == 2))
                {
                  if (FCL_PIXELDATA & (0x80 >> FCL_YPIX))
                  {
                    FCD_0e5b1_gLCD_ST7789V1__FastPlot();

                  } else {
                    if (FCL_TRANSPARENT == 0)
                    {
                      FCD_0e5b1_gLCD_ST7789V1__FastBPlot();

                    // } else {
                    }

                  }

                } else {
                  if (FCL_PIXELDATA & (0x01 << FCL_YPIX))
                  {
                    FCD_0e5b1_gLCD_ST7789V1__FastPlot();

                  } else {
                    if (FCL_TRANSPARENT == 0)
                    {
                      FCD_0e5b1_gLCD_ST7789V1__FastBPlot();

                    // } else {
                    }

                  }

                }

                // .ycount = .ycount + 1
                FCL_YCOUNT = FCL_YCOUNT + 1;


              }

              // .ypix = .ypix + 1
              FCL_YPIX = FCL_YPIX + 1;


            }

          } else {
            while (FCL_YPIX < 8)
            {
              for (FCLV_LOOP3=0; (FCLV_LOOP3)<(FCV_0e5b1_gLCD_ST7789V1__SCALEY); (FCLV_LOOP3)++)
              {
                if (FCL_PIXELDATA & (0x01 << FCL_YPIX))
                {
                  FCD_0e5b1_gLCD_ST7789V1__Plot(FCL_X1 + FCL_XCOUNT, FCL_Y1 + FCL_YCOUNT);

                } else {
                  if (FCL_TRANSPARENT == 0)
                  {
                    FCD_0e5b1_gLCD_ST7789V1__BPlot(FCL_X1 + FCL_XCOUNT, FCL_Y1 + FCL_YCOUNT);

                  // } else {
                  }

                }

                // .ycount = .ycount + 1
                FCL_YCOUNT = FCL_YCOUNT + 1;


              }

              // .ypix = .ypix + 1
              FCL_YPIX = FCL_YPIX + 1;


            }

          }

          // .xcount = .xcount + 1
          FCL_XCOUNT = FCL_XCOUNT + 1;


        }

        // .ColumnIndex = .ColumnIndex + 1
        FCL_COLUMNINDEX = FCL_COLUMNINDEX + 1;


      }

      // .ColumnSubIndex = .ColumnSubIndex + 1
      FCL_COLUMNSUBINDEX = FCL_COLUMNSUBINDEX + 1;


    }

    // .idx = .idx + 1
    FCL_IDX = FCL_IDX + 1;


  }

}

/*=----------------------------------------------------------------------=*\
   Use :This macro clears the display of any previous output by overwriting the entire display with the background colour.
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__ClearDisplay()
{
  //Local variable definitions
  MX_UINT16 FCL_Y = (0x0);
  MX_UINT16 FCL_X = (0x0);
  MX_UINT32 FCL_COLOUR;
  MX_UINT8 FCL_ORIENTATIONSTORE;

  // .OrientationStore = Orientation
  // Orientation = 0
  FCL_ORIENTATIONSTORE = FCV_0e5b1_gLCD_ST7789V1__ORIENTATION;
  FCV_0e5b1_gLCD_ST7789V1__ORIENTATION = 0;

  FCD_0e5b1_gLCD_ST7789V1__Window(0, 0, 128 - 1, 128 - 1);

  while (FCL_Y < 128)
  {
    // .X = 0
    FCL_X = 0;

    while (FCL_X < 128)
    {
      FCD_0e5b1_gLCD_ST7789V1__FastBPlot();

      // .X = .X + 1
      FCL_X = FCL_X + 1;


    }

    // .Y = .Y + 1
    FCL_Y = FCL_Y + 1;


  }

  // Orientation = .OrientationStore
  FCV_0e5b1_gLCD_ST7789V1__ORIENTATION = FCL_ORIENTATIONSTORE;

}

/*=----------------------------------------------------------------------=*\
   Use :Specifies the colour of the background by creating a mixture of red, green and blue.
       :
       :Parameters for macro SetBackgroundColour:
       :  Red : 0 - 255 where 0 = no red and 255 = maximum red
       :  Green : 0 - 255 where 0 = no green and 255 = maximum green
       :  Blue : 0 - 255 where 0 = no blue and 255 = maximum blue
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__SetBackgroundColour(MX_UINT8 FCL_RED, MX_UINT8 FCL_GREEN, MX_UINT8 FCL_BLUE)
{
  // .Red = .Red >> (8 - red_bit_depth)
  // .Green = .Green >> (8 - green_bit_depth)
  // .Blue = .Blue >> (8 - blue_bit_depth)
  FCL_RED = FCL_RED >> (8 - 5);
  FCL_GREEN = FCL_GREEN >> (8 - 6);
  FCL_BLUE = FCL_BLUE >> (8 - 5);

  // background_col_var = .Blue | (.Green << blue_bit_depth)
  // background_col_var = background_col_var | (.Red << (green_bit_depth + blue_bit_depth))
  FCV_0e5b1_gLCD_ST7789V1__BACKGROUND_COL_VAR = FCL_BLUE | (FCL_GREEN << 5);
  FCV_0e5b1_gLCD_ST7789V1__BACKGROUND_COL_VAR = FCV_0e5b1_gLCD_ST7789V1__BACKGROUND_COL_VAR | (FCL_RED << (6 + 5));

}

/*=----------------------------------------------------------------------=*\
   Use :Draws a circle object on the display with the center of the circle at the location X,Y
       :
       :Parameters for macro DrawCircle:
       :  X : X Coordinate for the center of the circle
       :  Y : Y coordinate for the center of the circle
       :  Radius : Radius of the circle specified in pixels
       :  Transparent : 0=Fill inside circle using background colour / 1=Draw outer circle only
       :  Solid : 0=Use Transparent Setting / 1=Fill with foreground colour
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__DrawCircle(MX_UINT16 FCL_X, MX_UINT16 FCL_Y, MX_UINT16 FCL_RADIUS, MX_UINT8 FCL_TRANSPARENT, MX_UINT8 FCL_SOLID)
{
  //Local variable definitions
  MX_SINT16 FCL_D;
  MX_SINT16 FCL_CURX;
  MX_SINT16 FCL_CURY;
  MX_UINT32 FCL_BGCOL;
  MX_UINT32 FCL_FGCOL;
  MX_UINT8 FCL_REP = (0x0);

  if (FCL_SOLID == 1)
  {
  FCC_DrawCircle_A:
    ;

    // .D = 3 - (.Radius << 1)
    FCL_D = 3 - (FCL_RADIUS << 1);

    // .CurX = 0
    // .CurY = .Radius
    FCL_CURX = 0;
    FCL_CURY = FCL_RADIUS;

    while (FCL_CURX <= FCL_CURY)
    {
      if (FCL_CURY > 0)
      {
        FCD_0e5b1_gLCD_ST7789V1__DrawLine(FCL_X - FCL_CURY, FCL_Y + FCL_CURX, FCL_X + FCL_CURY, FCL_Y + FCL_CURX);

        FCD_0e5b1_gLCD_ST7789V1__DrawLine(FCL_X - FCL_CURY, FCL_Y - FCL_CURX, FCL_X + FCL_CURY, FCL_Y - FCL_CURX);

      // } else {
      }

      if (FCL_CURX > 0)
      {
        FCD_0e5b1_gLCD_ST7789V1__DrawLine(FCL_X - FCL_CURX, FCL_Y - FCL_CURY, FCL_X + FCL_CURX, FCL_Y - FCL_CURY);

        FCD_0e5b1_gLCD_ST7789V1__DrawLine(FCL_X - FCL_CURX, FCL_Y + FCL_CURY, FCL_X + FCL_CURX, FCL_Y + FCL_CURY);

      // } else {
      }

      if (FCL_D < 0)
      {
        // .D = .D + ((.CurX << 2) + 6)
        FCL_D = FCL_D + ((FCL_CURX << 2) + 6);

      } else {
        // .D = .D + (((.CurX - .CurY) << 2) + 10)
        FCL_D = FCL_D + (((FCL_CURX - FCL_CURY) << 2) + 10);

        // .CurY = .CurY - 1
        FCL_CURY = FCL_CURY - 1;

      }

      // .CurX = .CurX + 1
      FCL_CURX = FCL_CURX + 1;


    }

  } else {
    if (FCL_TRANSPARENT == 1)
    {
    FCC_DrawCircle_B:
      ;

      // .D = 3 - (.Radius << 1)
      FCL_D = 3 - (FCL_RADIUS << 1);

      // .CurX = 0
      // .CurY = .Radius
      FCL_CURX = 0;
      FCL_CURY = FCL_RADIUS;

      while (FCL_CURX <= FCL_CURY)
      {
        FCD_0e5b1_gLCD_ST7789V1__Plot(FCL_X + FCL_CURX, FCL_Y - FCL_CURY);

        FCD_0e5b1_gLCD_ST7789V1__Plot(FCL_X - FCL_CURX, FCL_Y - FCL_CURY);

        FCD_0e5b1_gLCD_ST7789V1__Plot(FCL_X + FCL_CURY, FCL_Y - FCL_CURX);

        FCD_0e5b1_gLCD_ST7789V1__Plot(FCL_X - FCL_CURY, FCL_Y - FCL_CURX);

        FCD_0e5b1_gLCD_ST7789V1__Plot(FCL_X + FCL_CURX, FCL_Y + FCL_CURY);

        FCD_0e5b1_gLCD_ST7789V1__Plot(FCL_X - FCL_CURX, FCL_Y + FCL_CURY);

        FCD_0e5b1_gLCD_ST7789V1__Plot(FCL_X + FCL_CURY, FCL_Y + FCL_CURX);

        FCD_0e5b1_gLCD_ST7789V1__Plot(FCL_X - FCL_CURY, FCL_Y + FCL_CURX);

        if (FCL_D < 0)
        {
          // .D = .D + ((.CurX << 2) + 6)
          FCL_D = FCL_D + ((FCL_CURX << 2) + 6);

        } else {
          // .D = .D + (((.CurX - .CurY) << 2) + 10)
          FCL_D = FCL_D + (((FCL_CURX - FCL_CURY) << 2) + 10);

          // .CurY = .CurY - 1
          FCL_CURY = FCL_CURY - 1;

        }

        // .CurX = .CurX + 1
        FCL_CURX = FCL_CURX + 1;


      }

    } else {
      // .FGCol = foreground_col_var
      // .BGCol = background_col_var
      FCL_FGCOL = FCV_0e5b1_gLCD_ST7789V1__FOREGROUND_COL_VAR;
      FCL_BGCOL = FCV_0e5b1_gLCD_ST7789V1__BACKGROUND_COL_VAR;

      // foreground_col_var = .BGCol
      FCV_0e5b1_gLCD_ST7789V1__FOREGROUND_COL_VAR = FCL_BGCOL;

      // .Rep = 1
      FCL_REP = 1;

      goto FCC_DrawCircle_A;

    }

  }

  if (FCL_REP == 1)
  {
    // .Rep = .Rep + 1
    FCL_REP = FCL_REP + 1;

    // foreground_col_var = .FGCol
    FCV_0e5b1_gLCD_ST7789V1__FOREGROUND_COL_VAR = FCL_FGCOL;

    goto FCC_DrawCircle_B;

  // } else {
  }

}

/*=----------------------------------------------------------------------=*\
   Use :Draws a rectangle with rounded corners
       :
       :Parameters for macro DrawRoundedRectangle:
       :  X1 : MX_UINT16
       :  Y1 : MX_UINT16
       :  X2 : MX_UINT16
       :  Y2 : MX_UINT16
       :  Radius : MX_UINT16
       :  Transparent : Chooses the transparency of the box - 0 = Box contains background colour, 1 = Box contains previous pixel data.
       :  Solid : Chooses to fill the box with colour - 0 = Box contains transparency data, 1 = Box contains foreground colour.
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__DrawRoundedRectangle(MX_UINT16 FCL_X1, MX_UINT16 FCL_Y1, MX_UINT16 FCL_X2, MX_UINT16 FCL_Y2, MX_UINT16 FCL_RADIUS, MX_UINT8 FCL_TRANSPARENT, MX_UINT8 FCL_SOLID)
{
  //Local variable definitions
  MX_SINT16 FCL_G;
  MX_SINT16 FCL_HEIGHT;
  MX_SINT16 FCL_OXX1 = (0);
  MX_SINT16 FCL_OXX2 = (0);
  MX_SINT16 FCL_R;
  MX_SINT16 FCL_WIDTH;
  MX_SINT16 FCL_XX1;
  MX_SINT16 FCL_XX2;
  MX_SINT16 FCL_Y;
  MX_UINT16 FCL_COLSAV;

  // .width = .X2 - .X1
  // .height = .Y2 - .Y1
  FCL_WIDTH = FCL_X2 - FCL_X1;
  FCL_HEIGHT = FCL_Y2 - FCL_Y1;

  // .y = - .Radius
  FCL_Y = -FCL_RADIUS;

  if (FCL_SOLID)
  {
    while (FCL_Y <= 0)
    {
      // .r = round (SQRT (.Radius * .Radius - .y * .y))
      // .xx1 = .x1 + .r
      // .xx2 = .x1 - .r
      // .xx1 = .xx1 + .width - .Radius
      // .xx2 = .xx2 + .Radius
      // .g = .Y1 - .y + .height
      FCL_R = flt_round(float32_sqrt(flt_fromi(FCL_RADIUS * FCL_RADIUS - FCL_Y * FCL_Y)));
      FCL_XX1 = FCL_X1 + FCL_R;
      FCL_XX2 = FCL_X1 - FCL_R;
      FCL_XX1 = FCL_XX1 + FCL_WIDTH - FCL_RADIUS;
      FCL_XX2 = FCL_XX2 + FCL_RADIUS;
      FCL_G = FCL_Y1 - FCL_Y + FCL_HEIGHT;

      FCD_0e5b1_gLCD_ST7789V1__DrawLine(FCL_XX2, FCL_G - FCL_RADIUS, FCL_XX1, FCL_G - FCL_RADIUS);

      FCD_0e5b1_gLCD_ST7789V1__DrawLine(FCL_XX2, FCL_Y1 + FCL_Y + FCL_RADIUS, FCL_XX1, FCL_Y1 + FCL_Y + FCL_RADIUS);

      // .y = .y + 1
      FCL_Y = FCL_Y + 1;


    }

    if ((FCL_RADIUS >> 1) < (FCL_Y2 - FCL_Y1))
    {
      FCD_0e5b1_gLCD_ST7789V1__DrawRectangle(FCL_X1, FCL_Y1 + FCL_RADIUS, FCL_X2, FCL_Y2 - FCL_RADIUS, FCL_TRANSPARENT, FCL_SOLID);

    // } else {
    }

  } else {
    while (FCL_Y <= 0)
    {
      // .r = round (SQRT ((.Radius * .Radius) - (.y * .y)))
      // .xx1 = .x1 + .r
      // .xx2 = .x1 - .r
      // .xx1 = .xx1 + .width - .Radius
      // .xx2 = .xx2 + .Radius
      // .g = .Y1 - .y + .height
      FCL_R = flt_round(float32_sqrt(flt_fromi((FCL_RADIUS * FCL_RADIUS) - (FCL_Y * FCL_Y))));
      FCL_XX1 = FCL_X1 + FCL_R;
      FCL_XX2 = FCL_X1 - FCL_R;
      FCL_XX1 = FCL_XX1 + FCL_WIDTH - FCL_RADIUS;
      FCL_XX2 = FCL_XX2 + FCL_RADIUS;
      FCL_G = FCL_Y1 - FCL_Y + FCL_HEIGHT;

      if (FCL_Y == -FCL_RADIUS)
      {
        FCD_0e5b1_gLCD_ST7789V1__DrawLine(FCL_XX2, FCL_G - FCL_RADIUS, FCL_XX1, FCL_G - FCL_RADIUS);

        FCD_0e5b1_gLCD_ST7789V1__DrawLine(FCL_XX2, FCL_Y1 + FCL_Y + FCL_RADIUS, FCL_XX1, FCL_Y1 + FCL_Y + FCL_RADIUS);

        // .oxx2 = .xx2
        // .oxx1 = .xx1
        FCL_OXX2 = FCL_XX2;
        FCL_OXX1 = FCL_XX1;

      } else {
        FCD_0e5b1_gLCD_ST7789V1__DrawLine(FCL_XX2, FCL_G - FCL_RADIUS, FCL_OXX2, FCL_G - FCL_RADIUS);

        FCD_0e5b1_gLCD_ST7789V1__DrawLine(FCL_XX1, FCL_G - FCL_RADIUS, FCL_OXX1, FCL_G - FCL_RADIUS);

        FCD_0e5b1_gLCD_ST7789V1__DrawLine(FCL_XX2, FCL_Y1 + FCL_Y + FCL_RADIUS, FCL_OXX2, FCL_Y1 + FCL_Y + FCL_RADIUS);

        FCD_0e5b1_gLCD_ST7789V1__DrawLine(FCL_XX1, FCL_Y1 + FCL_Y + FCL_RADIUS, FCL_OXX1, FCL_Y1 + FCL_Y + FCL_RADIUS);

        if (FCL_TRANSPARENT == 0)
        {
          // .ColSav = foreground_col_var
          FCL_COLSAV = FCV_0e5b1_gLCD_ST7789V1__FOREGROUND_COL_VAR;

          // foreground_col_var = background_col_var
          FCV_0e5b1_gLCD_ST7789V1__FOREGROUND_COL_VAR = FCV_0e5b1_gLCD_ST7789V1__BACKGROUND_COL_VAR;

          FCD_0e5b1_gLCD_ST7789V1__DrawLine(FCL_OXX2 + 1, FCL_G - FCL_RADIUS, FCL_OXX1 - 1, FCL_G - FCL_RADIUS);

          FCD_0e5b1_gLCD_ST7789V1__DrawLine(FCL_OXX2 + 1, FCL_Y1 + FCL_Y + FCL_RADIUS, FCL_OXX1 - 1, FCL_Y1 + FCL_Y + FCL_RADIUS);

          // foreground_col_var = .ColSav
          FCV_0e5b1_gLCD_ST7789V1__FOREGROUND_COL_VAR = FCL_COLSAV;

        // } else {
        }

        // .oxx2 = .xx2
        // .oxx1 = .xx1
        FCL_OXX2 = FCL_XX2;
        FCL_OXX1 = FCL_XX1;

      }

      // .y = .y + 1
      FCL_Y = FCL_Y + 1;


    }

    if ((FCL_RADIUS >> 1) < (FCL_Y2 - FCL_Y1))
    {
      FCD_0e5b1_gLCD_ST7789V1__DrawLine(FCL_X1, FCL_Y1 + FCL_RADIUS, FCL_X1, FCL_Y2 - FCL_RADIUS);

      FCD_0e5b1_gLCD_ST7789V1__DrawLine(FCL_X2, FCL_Y1 + FCL_RADIUS, FCL_X2, FCL_Y2 - FCL_RADIUS);

    // } else {
    }

    if (FCL_TRANSPARENT == 0)
    {
      // .ColSav = foreground_col_var
      FCL_COLSAV = FCV_0e5b1_gLCD_ST7789V1__FOREGROUND_COL_VAR;

      // foreground_col_var = background_col_var
      FCV_0e5b1_gLCD_ST7789V1__FOREGROUND_COL_VAR = FCV_0e5b1_gLCD_ST7789V1__BACKGROUND_COL_VAR;

      if ((FCL_RADIUS >> 1) < (FCL_Y2 - FCL_Y1))
      {
        FCD_0e5b1_gLCD_ST7789V1__DrawRectangle(FCL_X1 + 1, FCL_Y1 + FCL_RADIUS + 1, FCL_X2 - 1, FCL_Y2 - FCL_RADIUS - 1, FCL_TRANSPARENT, FCL_SOLID);

      // } else {
      }

      // foreground_col_var = .ColSav
      FCV_0e5b1_gLCD_ST7789V1__FOREGROUND_COL_VAR = FCL_COLSAV;

    // } else {
    }

  }

}

/*=----------------------------------------------------------------------=*\
   Use :Specifies the colour of the foreground by creating a mixture of red, green and blue.
       :
       :Parameters for macro SetForegroundColour:
       :  Red : 0 - 255 where 0 = no red and 255 = maximum red
       :  Green : 0 - 255 where 0 = no green and 255 = maximum green
       :  Blue : 0 - 255 where 0 = no blue and 255 = maximum blue
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__SetForegroundColour(MX_UINT8 FCL_RED, MX_UINT8 FCL_GREEN, MX_UINT8 FCL_BLUE)
{
  // .Red = .Red >> (8 - red_bit_depth)
  // .Green = .Green >> (8 - green_bit_depth)
  // .Blue = .Blue >> (8 - blue_bit_depth)
  FCL_RED = FCL_RED >> (8 - 5);
  FCL_GREEN = FCL_GREEN >> (8 - 6);
  FCL_BLUE = FCL_BLUE >> (8 - 5);

  // foreground_col_var = .Blue | (.Green << blue_bit_depth)
  // foreground_col_var = foreground_col_var | (.Red << (green_bit_depth + blue_bit_depth))
  FCV_0e5b1_gLCD_ST7789V1__FOREGROUND_COL_VAR = FCL_BLUE | (FCL_GREEN << 5);
  FCV_0e5b1_gLCD_ST7789V1__FOREGROUND_COL_VAR = FCV_0e5b1_gLCD_ST7789V1__FOREGROUND_COL_VAR | (FCL_RED << (6 + 5));

}

/*=----------------------------------------------------------------------=*\
   Use :Draws a rectangle with the current foreground colour from pixel loaction X1, Y1 to pixel location X2, Y2
       :
       :Parameters for macro DrawRectangle:
       :  X1 : MX_UINT16
       :  Y1 : MX_UINT16
       :  X2 : MX_UINT16
       :  Y2 : MX_UINT16
       :  Transparent : Chooses the transparency of the box - 0 = Box contains background colour, 1 = Box contains previous pixel data.
       :  Solid : Chooses to fill the box with colour - 0 = Box contains transparency data, 1 = Box contains foreground colour.
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__DrawRectangle(MX_UINT16 FCL_X1, MX_UINT16 FCL_Y1, MX_UINT16 FCL_X2, MX_UINT16 FCL_Y2, MX_UINT8 FCL_TRANSPARENT, MX_UINT8 FCL_SOLID)
{
  //Local variable definitions
  MX_UINT16 FCL_XMIN;
  MX_UINT16 FCL_XMAX;
  MX_UINT16 FCL_YMIN;
  MX_UINT16 FCL_YMAX;

  FCD_0e5b1_gLCD_ST7789V1__DrawLine(FCL_X1, FCL_Y1, FCL_X2, FCL_Y1);

  FCD_0e5b1_gLCD_ST7789V1__DrawLine(FCL_X2, FCL_Y1, FCL_X2, FCL_Y2);

  FCD_0e5b1_gLCD_ST7789V1__DrawLine(FCL_X1, FCL_Y2, FCL_X2, FCL_Y2);

  FCD_0e5b1_gLCD_ST7789V1__DrawLine(FCL_X1, FCL_Y1, FCL_X1, FCL_Y2);

  if (FCL_TRANSPARENT == 0)
  {
    if (FCL_X1 > FCL_X2)
    {
      // .Xmax = .X1
      // .Xmin = .X2 + 1
      FCL_XMAX = FCL_X1;
      FCL_XMIN = FCL_X2 + 1;

    } else {
      // .Xmax = .X2
      // .Xmin = .X1 + 1
      FCL_XMAX = FCL_X2;
      FCL_XMIN = FCL_X1 + 1;

    }

    if (FCL_Y1 > FCL_Y2)
    {
      // .Ymax = .Y1
      // .Ymin = .Y2 + 1
      FCL_YMAX = FCL_Y1;
      FCL_YMIN = FCL_Y2 + 1;

    } else {
      // .Ymax = .Y2
      // .Ymin = .Y1 + 1
      FCL_YMAX = FCL_Y2;
      FCL_YMIN = FCL_Y1 + 1;

    }

    FCD_0e5b1_gLCD_ST7789V1__Window(FCL_XMIN, FCL_YMIN, FCL_XMAX - 1, FCL_YMAX - 1);

    // .Y1 = .Ymin
    FCL_Y1 = FCL_YMIN;

    while (FCL_Y1 < FCL_YMAX)
    {
      // .X1 = .Xmin
      FCL_X1 = FCL_XMIN;

      while (FCL_X1 < FCL_XMAX)
      {
        if (FCL_SOLID)
        {
          FCD_0e5b1_gLCD_ST7789V1__FastPlot();

        } else {
          FCD_0e5b1_gLCD_ST7789V1__FastBPlot();

        }

        // .X1 = .X1 + 1
        FCL_X1 = FCL_X1 + 1;


      }

      // .Y1 = .Y1 + 1
      FCL_Y1 = FCL_Y1 + 1;


    }

  // } else {
  }

}

/*=----------------------------------------------------------------------=*\
   Use :The Init macro must be called once to initialise the Graphical LCD display before any other Graphical LCD component macros are called.
\*=----------------------------------------------------------------------=*/
void FCD_0e5b1_gLCD_ST7789V1__Initialise()
{
  #if (1)
    // chip_sel_pin = 1
    SET_PORT_PIN(A, 15, 1);

  // #else
  //Code has been optimised out by the pre-processor
  #endif

  #if (1)
    FC_CAL_SPI_Master_Init_1();

    // ResetPin = 0
    SET_PORT_PIN(B, 2, 0);

  #else
  //Code has been optimised out by the pre-processor
  #endif

  #if (1)
    // ResetPin = 0
    SET_PORT_PIN(B, 2, 0);

  // #else
  //Code has been optimised out by the pre-processor
  #endif

  #if (1)
    // DCPin = 0
    SET_PORT_PIN(B, 1, 0);

  // #else
  //Code has been optimised out by the pre-processor
  #endif

  FCI_DELAYBYTEWDT_MS(20);

  #if (1)
    // ResetPin = 1
    SET_PORT_PIN(B, 2, 1);

  // #else
  //Code has been optimised out by the pre-processor
  #endif

  #if (1)
    // BacklightPin = 1
    SET_PORT_PIN(A, 16, 1);

  // #else
  //Code has been optimised out by the pre-processor
  #endif

  FCI_DELAYBYTEWDT_MS(120);

  #if (1)
    #if (1)
    #else
    //Code has been optimised out by the pre-processor
    #endif

  // #else
  //Code has been optimised out by the pre-processor
  #endif

  FCD_0e5b1_gLCD_ST7789V1__SendCommand(0x01);

  FCI_DELAYBYTEWDT_MS(150);

  FCD_0e5b1_gLCD_ST7789V1__SendCommand(0x11);

  FCI_DELAYINTWDT_MS(500);

  FCD_0e5b1_gLCD_ST7789V1__SendCommand(0x3A);

  FCD_0e5b1_gLCD_ST7789V1__SendData(0x55);

  FCI_DELAYBYTEWDT_MS(10);

  FCD_0e5b1_gLCD_ST7789V1__SendCommand(0x36);

  FCD_0e5b1_gLCD_ST7789V1__SendData(0x0);

  FCI_DELAYBYTEWDT_MS(10);

  #if (1)
    FCD_0e5b1_gLCD_ST7789V1__SendCommand(0x21);

  #else
  //Code has been optimised out by the pre-processor
  #endif

  FCI_DELAYBYTEWDT_MS(10);

  FCD_0e5b1_gLCD_ST7789V1__SendCommand(0x13);

  FCI_DELAYBYTEWDT_MS(10);

  FCD_0e5b1_gLCD_ST7789V1__SendCommand(0x29);

  FCI_DELAYBYTEWDT_MS(20);

  // foreground_col_var = FGCOL
  // background_col_var = BGCOL
  FCV_0e5b1_gLCD_ST7789V1__FOREGROUND_COL_VAR = 63496;
  FCV_0e5b1_gLCD_ST7789V1__BACKGROUND_COL_VAR = 0;

  FCD_0e5b1_gLCD_ST7789V1__ClearDisplay();

}


/*========================================================================*\
   Use :LED_Mono_User_Images1
       :GUID: b562ceda-0ae0-4c50-bbcd-38a4b7e77829
       :Location: C:\ProgramData\MatrixTSL\FlowcodeV10\Components\LED_Mono_User_Images_2dgi.fcpx
       :Version: 5.0 (0x10001e)
       :Timestamp: 06\03\2024
       :Variable declarations
       :Macro implementations
\*========================================================================*/
/*=----------------------------------------------------------------------=*\
   Use :
\*=----------------------------------------------------------------------=*/
void FCD_09701_LED_Mono_User_Images1__TurnOn()
{
  #if (1) // 0 == 0
    // Pin = Polarity
    SET_PORT_PIN(A, 8, 1);

  // #else
  //Code has been optimised out by the pre-processor
  #endif

  // ::Component.SetVisible(GdiImage2, 1)

  // ::Component.SetVisible(GdiImage1, 0)

}

/*=----------------------------------------------------------------------=*\
   Use :Sets the state of the LED, accounting for the polarity.
       :
       :Parameters for macro SetState:
       :  State : 1=On, 0=Off
\*=----------------------------------------------------------------------=*/
void FCD_09701_LED_Mono_User_Images1__SetState(MX_BOOL FCL_STATE)
{
  if (FCL_STATE)
  {
    #if (1) // 0 == 0
      // Pin = Polarity
      SET_PORT_PIN(A, 8, 1);

    // #else
    //Code has been optimised out by the pre-processor
    #endif

    // ::Component.SetVisible(GdiImage2, 1)

    // ::Component.SetVisible(GdiImage1, 0)

  } else {
    #if (1) // 0 == 0
      // Pin = 1 - Polarity
      SET_PORT_PIN(A, 8, 1 - 1);

    // #else
    //Code has been optimised out by the pre-processor
    #endif

    // ::Component.SetVisible(GdiImage2, 0)

    // ::Component.SetVisible(GdiImage1, 1)

  }

}

/*=----------------------------------------------------------------------=*\
   Use :
\*=----------------------------------------------------------------------=*/
void FCD_09701_LED_Mono_User_Images1__TurnOff()
{
  #if (1) // 0 == 0
    // Pin = 1 - Polarity
    SET_PORT_PIN(A, 8, 1 - 1);

  // #else
  //Code has been optimised out by the pre-processor
  #endif

  // ::Component.SetVisible(GdiImage2, 0)

  // ::Component.SetVisible(GdiImage1, 1)

}


/*========================================================================*\
   Use :User Project
       :Variable declarations
       :Macro implementations
\*========================================================================*/
#define FCV_FALSE (0)
#define FCV_TRUE (1)
MX_GLOBAL MX_UINT8 FCV_Y = (0x0);
MX_GLOBAL MX_UINT8 FCV_X = (0x0);

/*=----------------------------------------------------------------------=*\
   Use :
\*=----------------------------------------------------------------------=*/
void FCM_Bt_install()
{
  //Comment:
  //CD C:\FcM510\UH\serie10 & idf.py menuconfig
  //or use first 
  //CD C:\FcM510\UH\serie10
  //Then run (type) 
  //idf.py menuconfig
  //idf.py fullclean

}

/*=----------------------------------------------------------------------=*\
   Use :Supplementary implementations
\*=----------------------------------------------------------------------=*/




/*========================================================================*\
   Use :Main
\*========================================================================*/
void app_main()
{
    // Initialize NVS
    esp_err_t ret = nvs_flash_init();
    if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
        ESP_ERROR_CHECK(nvs_flash_erase());
        ret = nvs_flash_init();
    }
    ESP_ERROR_CHECK( ret );
	ESP_ERROR_CHECK(esp_event_loop_create_default());


  //Comment:
  //1. press the reset button until the green led lights up
  //2. flash it
  //3. press the reset button again

  // Name: Component Macro, Type: Component Macro: gLCD_ST7789V1::Initialise()
  FCD_0e5b1_gLCD_ST7789V1__Initialise();

  // Name: Component Macro, Type: Component Macro: gLCD_ST7789V1::BacklightOn()
  FCD_0e5b1_gLCD_ST7789V1__BacklightOn();

  // Name: Component Macro, Type: Component Macro: gLCD_ST7789V1::SetDisplayOrientation(3)
  FCD_0e5b1_gLCD_ST7789V1__SetDisplayOrientation(3);

  // Name: Loop, Type: Loop: While 1
  while (1)
  {
    // Name: Component Macro, Type: Component Macro: LED_Mono_User_Images1::TurnOn()
    FCD_09701_LED_Mono_User_Images1__TurnOn();

    // Name: Component Macro, Type: Component Macro: gLCD_ST7789V1::Print("Hallo", 1, 1, 0, 0)
    FCD_0e5b1_gLCD_ST7789V1__Print("Hallo", 6, 1, 1, 0, 0);

    // Name: Delay, Type: Delay: 500 ms
    FCI_DELAYINTWDT_MS(500);

    // Name: Component Macro, Type: Component Macro: LED_Mono_User_Images1::TurnOff()
    FCD_09701_LED_Mono_User_Images1__TurnOff();

    // Name: Component Macro, Type: Component Macro: gLCD_ST7789V1::Print("OK   ", 1, 1, 0, 0)
    FCD_0e5b1_gLCD_ST7789V1__Print("OK   ", 6, 1, 1, 0, 0);

    // Name: Delay, Type: Delay: 500 ms
    FCI_DELAYINTWDT_MS(500);


  }

	mainendloop: goto mainendloop;
}



/*========================================================================*\
   Use :Interrupt
\*========================================================================*/




