mirror of
https://github.com/clockworkpi/PicoCalc.git
synced 2025-12-12 10:18:54 +01:00
483 lines
26 KiB
C
483 lines
26 KiB
C
/*******************************************************************************************
|
|
*
|
|
* Definitions used when calling MMBasic Interpreter API Functions from CFunctions
|
|
* For PicoMite MMBasic V6.00.01
|
|
*
|
|
* This file is public domain and may be used without license.
|
|
*
|
|
* Use with AMRCFGENV144.bas
|
|
*
|
|
* V1.6.2
|
|
* NB: Base address has changed from previous versions to match V5.07.05
|
|
* V1.6.3 struct option_s updated to match 5.07.05 as defined in fileIO.h
|
|
* V1.6.4 Additional links
|
|
* v1.6.5 Latest Beta29 and PICOMITEVGA PICOMITEWEB Compiled with GCC 11.2.1
|
|
* v1.6.6 Updated to match 5.07.07 and 5.07.08b5 updates for fixed IP address
|
|
* v1.6.7 Updated to match 5.07.08 release matches option_s and CSubComplete now char
|
|
* v2.0.0 Updated for MMBasic 6.00.00 and also for RP2350 chip.
|
|
* BaseAddress is different for PICO and PICO2 Set the correct #define
|
|
* Note: Use ? HEX$(MM.INFO(CALLTABLE)) to verify the location of the calltable.
|
|
* struct option_s updated to match v6.00.00RC15
|
|
* v2.0.1 struct option_s updated to match v6.00.01 Release
|
|
*
|
|
******************************************************************************************/
|
|
/*** Uncomment one of these three ***/
|
|
#define PICOMITE
|
|
//#define PICOMITEVGA
|
|
//#define PICOMITEWEB
|
|
|
|
/*** Uncomment this define if using PICO2 Chip ***/
|
|
#define PICORP2350
|
|
|
|
/*** Uncomment this define if HDMI pins required ***/
|
|
#define GUICONTROLS
|
|
|
|
/*****************************************************************************************/
|
|
#define MAXVARLEN 32 // maximum length of a variable name
|
|
#define MAXDIM 5 // maximum nbr of dimensions to an array
|
|
#define MMFLOAT double
|
|
#define MAXKEYLEN 64
|
|
|
|
//Addresses in the API Table for the pointers to each function
|
|
#ifdef PICORP2350
|
|
#define BaseAddress 0x1000023C
|
|
#else
|
|
#define BaseAddress 0x100002D4
|
|
#endif
|
|
|
|
#define Vector_uSec (*(unsigned int *)(BaseAddress+0x00)) // void uSec(unsigned int us)
|
|
#define Vector_putConsole (*(unsigned int *)(BaseAddress+0x04)) // void putConsole(int C))
|
|
#define Vector_getConsole (*(unsigned int *)(BaseAddress+0x08)) // int getConsole(void)
|
|
#define Vector_ExtCfg (*(unsigned int *)(BaseAddress+0x0C)) // void ExtCfg(int pin, int cfg, int option)
|
|
#define Vector_ExtSet (*(unsigned int *)(BaseAddress+0x10)) // void ExtSet(int pin, int val)
|
|
#define Vector_ExtInp (*(unsigned int *)(BaseAddress+0x14)) // int ExtInp(int pin)
|
|
#define Vector_PinSetBit (*(unsigned int *)(BaseAddress+0x18)) // void PinSetBit(int pin, unsigned int offset)
|
|
#define Vector_PinRead (*(unsigned int *)(BaseAddress+0x1C)) // int PinRead(int pin)
|
|
#define Vector_MMPrintString (*(unsigned int *)(BaseAddress+0x20)) // void MMPrintString(char* s)
|
|
#define Vector_IntToStr (*(unsigned int *)(BaseAddress+0x24)) // void IntToStr(char *strr, long long int nbr, unsigned int base)
|
|
#define Vector_CheckAbort (*(unsigned int *)(BaseAddress+0x28)) // void CheckAbort(void)
|
|
#define Vector_GetMemory (*(unsigned int *)(BaseAddress+0x2C)) // void *GetMemory(size_t msize);
|
|
#define Vector_GetTempMemory (*(unsigned int *)(BaseAddress+0x30)) // void *GetTempMemory(int NbrBytes)
|
|
#define Vector_FreeMemory (*(unsigned int *)(BaseAddress+0x34)) // void FreeMemory(void *addr)
|
|
#define Vector_DrawRectangle *(unsigned int *)(BaseAddress+0x38 ) // void DrawRectangle(int x1, int y1, int x2, int y2, int C))
|
|
#define Vector_DrawBitmap *(unsigned int *)(BaseAddress+0x3c ) // void DrawBitmap(int x1, int y1, int width, int height, int scale, int fg, int bg, unsigned char *bitmap )
|
|
#define Vector_DrawLine (*(unsigned int *)(BaseAddress+0x40)) // void DrawLine(int x1, int y1, int x2, int y2, int w, int C))
|
|
#define Vector_FontTable (*(unsigned int *)(BaseAddress+0x44)) // const unsigned char *FontTable[FONT_NBR]
|
|
#define Vector_ExtCurrentConfig (*(unsigned int *)(BaseAddress+0x48)) // int ExtCurrentConfig[NBRPINS + 1];
|
|
#define Vector_HRes (*(unsigned int *)(BaseAddress+0x4C)) // HRes
|
|
#define Vector_VRes (*(unsigned int *)(BaseAddress+0x50)) // VRes
|
|
#define Vector_SoftReset (*(unsigned int *)(BaseAddress+0x54)) // void SoftReset(void)
|
|
#define Vector_error (*(unsigned int *)(BaseAddress+0x58)) // void error(char *msg)
|
|
#define Vector_ProgFlash (*(unsigned int *)(BaseAddress+0x5C)) // ProgFlash
|
|
#define Vector_vartbl (*(unsigned int *)(BaseAddress+0x60)) // g_vartbl
|
|
#define Vector_varcnt (*(unsigned int *)(BaseAddress+0x64)) // g_varcnt
|
|
#define Vector_DrawBuffer *(unsigned int *)(BaseAddress+0x68 ) // void DrawRectangle(int x1, int y1, int x2, int y2, int C))
|
|
#define Vector_ReadBuffer *(unsigned int *)(BaseAddress+0x6c ) // void DrawRectangle(int x1, int y1, int x2, int y2, int C))
|
|
#define Vector_FloatToStr (*(unsigned int *)(BaseAddress+0x70)) // convert a float to a string including scientific notation if necessary
|
|
#define Vector_ExecuteProgram (*(unsigned int *)(BaseAddress+0x74)) // void ExecuteProgram(char *fname)
|
|
#define Vector_CFuncmSec (*(unsigned int *)(BaseAddress+0x78)) // CFuncmSec
|
|
#define Vector_CFuncRam (*(unsigned int *)(BaseAddress+0x7C)) // StartOfCFuncRam
|
|
#define Vector_ScrollLCD *(unsigned int *)(BaseAddress+0x80 ) // void scrollLCD(int lines, int blank)
|
|
#define Vector_IntToFloat (*(unsigned int *)(BaseAddress+0x84)) // MMFLOAT IntToFloat(long long int a)
|
|
#define Vector_FloatToInt (*(unsigned int *)(BaseAddress+0x88)) // long long int FloatToInt64(MMFLOAT x)
|
|
#define Vector_Option (*(unsigned int *)(BaseAddress+0x8C)) // Option
|
|
#define Vector_Sine (*(unsigned int *)(BaseAddress+0x90)) // MMFLOAT sin(MMFLOAT)
|
|
#define Vector_DrawCircle (*(unsigned int *)(BaseAddress+0x94)) // DrawCircle(int x, int y, int radius, int w, int c, int fill, MMFLOAT aspect)
|
|
#define Vector_DrawTriangle (*(unsigned int *)(BaseAddress+0x98)) // DrawTriangle(int x0, int y0, int x1, int y1, int x2, int y2, int c, int fill)
|
|
#define Vector_Timer (*(unsigned int *)(BaseAddress+0x9C)) // uint64_t timer(void)
|
|
#define Vector_FMul (*(unsigned int *)(BaseAddress+0xA0)) // MMFLOAT FMul(MMFLOAT a, MMFLOAT b){ return a * b; }
|
|
#define Vector_FAdd (*(unsigned int *)(BaseAddress+0xA4)) // MMFLOAT FAdd(MMFLOAT a, MMFLOAT b){ return a + b; }
|
|
#define Vector_FSub (*(unsigned int *)(BaseAddress+0xA8)) // MMFLOAT FSub(MMFLOAT a, MMFLOAT b){ return a - b; }
|
|
#define Vector_FDiv (*(unsigned int *)(BaseAddress+0xAC)) // MMFLOAT FDiv(MMFLOAT a, MMFLOAT b){ return a / b; }
|
|
#define Vector_FCmp (*(unsigned int *)(BaseAddress+0xB0)) // int FCmp(MMFLOAT a,MMFLOAT b){if(a>b) return 1;else if(a<b)return -1; else return 0;}
|
|
#define Vector_LoadFloat (*(unsigned int *)(BaseAddress+0xB4)) /* MMFLOAT LoadFloat(unsigned long long C)){union ftype{ unsigned long long a; MMFLOAT b;}f;f.a=c;return f.b; }*/
|
|
#define Vector_CFuncInt1 *(unsigned int *)(BaseAddress+0xB8 ) // CFuncInt1
|
|
#define Vector_CFuncInt2 *(unsigned int *)(BaseAddress+0xBC) // CFuncInt2
|
|
#define Vector_CSubComplete (*(unsigned int *)(BaseAddress+0xC0)) // CSubComplete
|
|
#define Vector_AudioOutput *(unsigned int *)(BaseAddress+0xC4) // AudioOutput(int left, int right)
|
|
#define Vector_IDiv (*(unsigned int *)(BaseAddress+0xC8)) // int IDiv(int a, int b){ return a / b; }
|
|
#define Vector_AUDIO_WRAP (*(volatile unsigned int *)(BaseAddress+0xCC))// AUDIO_WRAP
|
|
#define Vector_CFuncInt3 *(unsigned int *)(BaseAddress+0xD0 ) // CFuncInt3
|
|
#define Vector_CFuncInt4 *(unsigned int *)(BaseAddress+0xD4) // CFuncInt4
|
|
#define Vector_PIOExecute (*(unsigned int *)(BaseAddress+0xD8)) // void PioExecute(int pio, int sm, uint32_t instruction)
|
|
|
|
|
|
|
|
//Macros to call each function.
|
|
#define uSec(a) ((void (*)(unsigned long long )) Vector_uSec) (a)
|
|
#define putConsole(a,b) ((void(*)(int, int)) Vector_putConsole) (a,b)
|
|
#define getConsole() ((int (*)(void)) Vector_getConsole) ()
|
|
#define ExtCfg(a,b,c) ((void (*)(int, int, int)) Vector_ExtCfg) (a,b,c)
|
|
#define ExtSet(a,b) ((void(*)(int, int)) Vector_ExtSet) (a,b)
|
|
#define ExtInp(a) ((int(*)(int)) Vector_ExtInp) (a)
|
|
#define PinSetBit(a,b) ((void(*)(int, int)) Vector_PinSetBit) (a,b)
|
|
#define PinRead(a) ((int(*)(int)) Vector_PinRead) (a)
|
|
#define MMPrintString(a) ((void (*)(char*)) Vector_MMPrintString) (a)
|
|
#define IntToStr(a,b,c) ((void (*)(char *, long long int, unsigned int)) Vector_IntToStr) (a,b,c)
|
|
#define CheckAbort() ((void (*)(void)) Vector_CheckAbort) ()
|
|
#define GetMemory(a) ((void* (*)(int)) Vector_GetMemory) (a)
|
|
#define GetTempMemory(a) ((void* (*)(int)) Vector_GetTempMemory) (a)
|
|
#define FreeMemory(a) ((void (*)(void *)) Vector_FreeMemory) (a)
|
|
#define DrawRectangle(a,b,c,d,e) ((void (*)(int,int,int,int,int)) (*(unsigned int *)Vector_DrawRectangle)) (a,b,c,d,e)
|
|
#define DrawRectangleVector (*(unsigned int *)Vector_DrawRectangle)
|
|
#define DrawBitmap(a,b,c,d,e,f,g,h) ((void (*)(int,int,int,int,int,int,int, char*)) (*(unsigned int *)Vector_DrawBitmap)) (a,b,c,d,e,f,g,h)
|
|
#define DrawBitmapVector (*(unsigned int *)Vector_DrawBitmap)
|
|
#define DrawLine(a,b,c,d,e,f) ((void (*)(int,int,int,int,int,int)) Vector_DrawLine) (a,b,c,d,e,f)
|
|
#define FontTable (void*)((int*)(Vector_FontTable))
|
|
#define ExtCurrentConfig ((int *) Vector_ExtCurrentConfig)
|
|
#define HRes (*(unsigned int *) Vector_HRes)
|
|
#define VRes (*(unsigned int *) Vector_VRes)
|
|
#define SoftReset() ((void (*)(void)) Vector_SoftReset) ()
|
|
#define error(a) ((void (*)(char *)) Vector_error) (a)
|
|
#define ProgFlash ((int *) Vector_ProgFlash)
|
|
#define g_vartbl (*(struct s_vartbl *) Vector_vartbl)
|
|
#define g_varcnt (*(unsigned int *) Vector_varcnt)
|
|
#define DrawBuffer(a,b,c,d,e) ((void (*)(int,int,int,int,char *)) (*(unsigned int *)Vector_DrawBuffer)) (a,b,c,d,e)
|
|
#define DrawBufferVector (*(unsigned int *)Vector_DrawBuffer)
|
|
#define ReadBuffer(a,b,c,d,e) ((void (*)(int,int,int,int,char *)) (*(unsigned int *)Vector_ReadBuffer)) (a,b,c,d,e)
|
|
#define ReadBufferVector (*(unsigned int *)Vector_ReadBuffer)
|
|
#define FloatToStr(a,b,c,d,e) ((void (*)(char *, MMFLOAT, int, int, char)) Vector_FloatToStr) (a,b,c,d,e)
|
|
// NOTE: The argument to RunBasicSub is a string specifying the name of the BASIC subroutine to be executed.
|
|
// It MUST be terminated with TWO null chars.
|
|
#define RunBasicSub(a) ((void (*)(char *)) Vector_ExecuteProgram) (a)
|
|
#define CFuncmSec (*(unsigned int *) Vector_CFuncmSec)
|
|
#define CFuncRam ((int *) Vector_CFuncRam)
|
|
#define ScrollLCD(a,b) ((void (*)(int, int)) (*(unsigned int *)Vector_ScrollLCD)) (a, b)
|
|
#define ScrollLCDVector (*(unsigned int *)Vector_ScrollLCD)
|
|
#define ScrollBufferV(a,b) ((void (*)(int, int)) (*(unsigned int *)Vector_ScrollBufferV)) (a, b)
|
|
#define ScrollBufferVVector (*(unsigned int *)Vector_ScrollBufferV)
|
|
#define ScrollBufferH(a) ((void (*)(int)) (*(unsigned int *)Vector_ScrollBufferH)) (a)
|
|
#define ScrollBufferHVector (*(unsigned int *)Vector_ScrollBufferH)
|
|
#define DrawBufferFast(a,b,c,d,e) ((void (*)(int,int,int,int, char*)) (*(unsigned int *)Vector_DrawBufferFast)) (a,b,c,d,e)
|
|
#define DrawBufferFastVector (*(unsigned int *)Vector_DrawBufferFast)
|
|
#define ReadBufferFast(a,b,c,d,e) ((void (*)(int,int,int,int, char*)) (*(unsigned int *)Vector_ReadBufferFast)) (a,b,c,d,e)
|
|
#define ReadBufferFastVector (*(unsigned int *)Vector_ReadBufferFast)
|
|
#define MoveBufferFast(a,b,c,d,e,f,g) ((void (*)(int,int,int,int, int,int,int)) (*(unsigned int *)Vector_MoveBuffer)) (a,b,c,d,e,f,g)
|
|
#define MoveBufferFastVector (*(unsigned int *)Vector_MoveBuffer)
|
|
#define DrawPixel(a,b,c) ((void(*)(int, int, int)) Vector_DrawPixel) (a,b,c)
|
|
#define RoutineChecks() ((void (*)(void)) Vector_RoutineChecks) ()
|
|
#define GetPageAddress(a) ((int(*)(int)) Vector_GetPageAddress) (a)
|
|
//#define memcpy(a,b,c) ((void (*)(void *, void *, int)) Vector_mycopysafe) (a,b,c)
|
|
#define IntToFloat(a) ((MMFLOAT (*)(long long)) Vector_IntToFloat) (a)
|
|
#define FloatToInt(a) ((long long (*)(MMFLOAT)) Vector_FloatToInt) (a)
|
|
#define Option (*(struct option_s *)(unsigned int)Vector_Option)
|
|
#define ReadPageAddress (*(unsigned int *) Vector_ReadPageAddress)
|
|
#define WritePageAddress (*(unsigned int *) Vector_WritePageAddress)
|
|
#define uSecTimer ((unsigned long long (*)(void)) Vector_Timer)
|
|
#define FastTimer ((unsigned long long (*)(void)) Vector_FastTimer)
|
|
#define TicksPerUsec (*(unsigned int *) Vector_TicksPerUsec)
|
|
#define map(a) ((int(*)(int)) Vector_Map) (a)
|
|
#define Sine(a) ((MMFLOAT (*)(MMFLOAT)) Vector_Sine) (a)
|
|
#define VideoColour (*(int *) Vector_VideoColour)
|
|
#define DrawCircle(a,b,c,d,e,f,g) ((void (*)(int,int,int,int,int,int,MMFLOAT)) Vector_DrawCircle) (a,b,c,d,e,f,g)
|
|
#define DrawTriangle(a,b,c,d,e,f,g,h) ((void (*)(int,int,int,int,int,int,int,int)) Vector_DrawTriangle) (a,b,c,d,e,f,g,h)
|
|
#define LoadFloat(a) ((MMFLOAT (*)(unsigned int)) Vector_LoadFloat) (a)
|
|
#define FMul(a,b) ((MMFLOAT (*)(MMFLOAT, MMFLOAT)) Vector_FMul) (a,b)
|
|
#define FAdd(a,b) ((MMFLOAT (*)(MMFLOAT, MMFLOAT)) Vector_FAdd) (a,b)
|
|
#define FSub(a,b) ((MMFLOAT (*)(MMFLOAT, MMFLOAT)) Vector_FSub) (a,b)
|
|
#define FDiv(a,b) ((MMFLOAT (*)(MMFLOAT, MMFLOAT)) Vector_FDiv) (a,b)
|
|
#define FCmp(a,b) ((int (*)(MMFLOAT, MMFLOAT)) Vector_FCmp) (a,b)
|
|
#define CFuncInt1 (*(unsigned int *) Vector_CFuncInt1)
|
|
#define CFuncInt2 (*(unsigned int *) Vector_CFuncInt2)
|
|
//#define Interrupt (*(unsigned int *) Vector_CSubComplete)
|
|
#define Interrupt (*(char *) Vector_CSubComplete) //CSubComplete now char in 5.08.00
|
|
#define AudioOutputVector (*(unsigned int *) Vector_AudioOutput)
|
|
#define AudioOutput(a,b) ((void (*)(uint16_t, uint16_t)) (*(unsigned int *)Vector_AudioOutput)) (a, b)
|
|
#define IDiv(a,b) ((int (*)(int, int)) Vector_IDiv) (a,b)
|
|
#define AUDIO_WRAP (*(uint16_t *) Vector_AUDIO_WRAP)
|
|
#define CFuncInt3 (*(unsigned int *) Vector_CFuncInt3)
|
|
#define CFuncInt4 (*(unsigned int *) Vector_CFuncInt4)
|
|
#define PIOExecute(a,b,c) ((void (*)(int, int, unsigned int)) Vector_PIOExecute) (a,b,c)
|
|
|
|
|
|
|
|
// the structure of the variable table, passed to the CFunction as a pointer Vector_vartbl which is #defined as g_vartbl
|
|
struct s_vartbl { // structure of the variable table
|
|
char name[MAXVARLEN]; // variable's name
|
|
char type; // its type (T_NUM, T_INT or T_STR)
|
|
char level; // its subroutine or function level (used to track local variables)
|
|
unsigned char size; // the number of chars to allocate for each element in a string array
|
|
char dummy;
|
|
int __attribute__ ((aligned (4))) dims[MAXDIM]; // the dimensions. it is an array if the first dimension is NOT zero
|
|
union u_val{
|
|
MMFLOAT f; // the value if it is a float
|
|
long long int i; // the value if it is an integer
|
|
MMFLOAT *fa; // pointer to the allocated memory if it is an array of floats
|
|
long long int *ia; // pointer to the allocated memory if it is an array of integers
|
|
char *s; // pointer to the allocated memory if it is a string
|
|
} __attribute__ ((aligned (8))) val;
|
|
} __attribute__ ((aligned (8))) val;
|
|
|
|
// Useful macros
|
|
|
|
|
|
// Types used to define a variable in the variable table (g_vartbl). Often they are ORed together.
|
|
// Also used in tokens and arguments to functions
|
|
#define T_NOTYPE 0 // type not set or discovered
|
|
#define T_NBR 0x01 // number (or float) type
|
|
#define T_STR 0x02 // string type
|
|
#define T_INT 0x04 // 64 bit integer type
|
|
#define T_PTR 0x08 // the variable points to another variable's data
|
|
#define T_IMPLIED 0x10 // the variables type does not have to be specified with a suffix
|
|
#define T_CONST 0x20 // the contents of this variable cannot be changed
|
|
#define T_BLOCKED 0x40 // Hash table entry blocked after ERASE
|
|
|
|
|
|
//***************************************************************************************************
|
|
// Constants and definitions copied from the Micromite MkII and Micromite Plus source
|
|
//***************************************************************************************************
|
|
|
|
//The Option structure
|
|
|
|
struct option_s {
|
|
int Magic;
|
|
char Autorun;
|
|
char Tab;
|
|
char Invert;
|
|
char Listcase; //8
|
|
//
|
|
unsigned int PROG_FLASH_SIZE;
|
|
unsigned int HEAP_SIZE;
|
|
char Height;
|
|
char Width;
|
|
unsigned char DISPLAY_TYPE;
|
|
char DISPLAY_ORIENTATION; //12=20
|
|
//
|
|
int PIN;
|
|
int Baudrate;
|
|
char ColourCode;
|
|
unsigned char MOUSE_CLOCK;
|
|
unsigned char MOUSE_DATA;
|
|
char spare;
|
|
int CPU_Speed;
|
|
unsigned int Telnet; // 40 used to store status on console OFF/ON/BOTH
|
|
int DefaultFC, DefaultBC; // 44 the default colours
|
|
short DefaultBrightness; // 48 default backlight brightness //40
|
|
unsigned char KEYBOARD_CLOCK;
|
|
unsigned char KEYBOARD_DATA;
|
|
unsigned short VGAFC, VGABC; // the default colours 36=56 //50?
|
|
//
|
|
// display related
|
|
unsigned char DefaultFont;
|
|
unsigned char KeyboardConfig;
|
|
unsigned char RTC_Clock;
|
|
unsigned char RTC_Data; //4=60
|
|
//
|
|
#ifdef PICOMITE
|
|
int dummy; // maximum number of controls allowed //48
|
|
#endif
|
|
|
|
#ifdef PICOMITEWEB
|
|
uint16_t TCP_PORT; // maximum number of controls allowed //48
|
|
uint16_t ServerResponceTime;
|
|
#endif
|
|
#ifdef PICOMITEVGA
|
|
int16_t X_TILE; // maximum number of controls allowed //48
|
|
int16_t Y_TILE; // maximum number of controls allowed //48
|
|
#endif
|
|
// for the SPI LCDs 4=64
|
|
unsigned char LCD_CD;
|
|
unsigned char LCD_CS;
|
|
unsigned char LCD_Reset;
|
|
// touch related
|
|
unsigned char TOUCH_CS;
|
|
unsigned char TOUCH_IRQ;
|
|
char TOUCH_SWAPXY;
|
|
unsigned char repeat;
|
|
char disabletftp;//56 8=72
|
|
int TOUCH_XZERO;
|
|
int TOUCH_YZERO;
|
|
float TOUCH_XSCALE;
|
|
float TOUCH_YSCALE; //72 16=88
|
|
#ifdef GUICONTROLS
|
|
int MaxCtrls;
|
|
#else
|
|
uint8_t HDMIclock;
|
|
uint8_t HDMId0;
|
|
uint8_t HDMId1;
|
|
uint8_t HDMId2;
|
|
#endif
|
|
unsigned int FlashSize; //8=96
|
|
unsigned char SD_CS;
|
|
unsigned char SYSTEM_MOSI;
|
|
unsigned char SYSTEM_MISO;
|
|
unsigned char SYSTEM_CLK;
|
|
unsigned char DISPLAY_BL;
|
|
unsigned char DISPLAY_CONSOLE;
|
|
unsigned char TOUCH_Click;
|
|
char LCD_RD; // used for the RD pin for SSD1963 //8=104
|
|
unsigned char AUDIO_L;
|
|
unsigned char AUDIO_R;
|
|
unsigned char AUDIO_SLICE;
|
|
unsigned char SDspeed;
|
|
unsigned char pins[8]; //8=116 // general use storage for CFunctions written by PeterM //86
|
|
char LCDVOP;
|
|
char I2Coffset;
|
|
unsigned char NoHeartbeat;
|
|
char Refresh;
|
|
unsigned char SYSTEM_I2C_SDA;
|
|
unsigned char SYSTEM_I2C_SCL;
|
|
unsigned char RTC;
|
|
char PWM; //8=124
|
|
unsigned char INT1pin;
|
|
unsigned char INT2pin;
|
|
unsigned char INT3pin;
|
|
unsigned char INT4pin;
|
|
unsigned char SD_CLK_PIN;
|
|
unsigned char SD_MOSI_PIN;
|
|
unsigned char SD_MISO_PIN;
|
|
unsigned char SerialConsole; //8=132
|
|
unsigned char SerialTX;
|
|
unsigned char SerialRX;
|
|
unsigned char numlock;
|
|
unsigned char capslock; //4=136
|
|
unsigned int LIBRARY_FLASH_SIZE; // 4=140
|
|
unsigned char AUDIO_CLK_PIN;
|
|
unsigned char AUDIO_MOSI_PIN;
|
|
unsigned char SYSTEM_I2C_SLOW;
|
|
unsigned char AUDIO_CS_PIN; //+4=144
|
|
#ifdef PICOMITEWEB
|
|
uint16_t UDP_PORT;
|
|
uint16_t UDPServerResponceTime;
|
|
char hostname[32];
|
|
char ipaddress[16];
|
|
char mask[16];
|
|
char gateway[16];
|
|
unsigned char x[1]; //112=256
|
|
#else
|
|
unsigned char x[85]; //112=256
|
|
#endif
|
|
unsigned char PSRAM_CS_PIN;
|
|
unsigned char BGR;
|
|
unsigned char NoScroll;
|
|
unsigned char CombinedCS;
|
|
unsigned char USBKeyboard;
|
|
unsigned char VGA_HSYNC;
|
|
unsigned char VGA_BLUE;
|
|
unsigned char AUDIO_MISO_PIN;
|
|
unsigned char AUDIO_DCS_PIN;
|
|
unsigned char AUDIO_DREQ_PIN;
|
|
unsigned char AUDIO_RESET_PIN;
|
|
unsigned char SSD_DC;
|
|
unsigned char SSD_WR;
|
|
unsigned char SSD_RD;
|
|
unsigned char SSD_RESET;
|
|
unsigned char BackLightLevel;
|
|
unsigned char NoReset;
|
|
unsigned char AllPins;
|
|
unsigned char modbuff;
|
|
short RepeatStart;
|
|
short RepeatRate;
|
|
int modbuffsize; // +18=
|
|
unsigned char F1key[MAXKEYLEN]; //64=320
|
|
unsigned char F5key[MAXKEYLEN]; //64=384
|
|
unsigned char F6key[MAXKEYLEN]; //64=448
|
|
unsigned char F7key[MAXKEYLEN]; //64=512
|
|
unsigned char F8key[MAXKEYLEN]; //64=576
|
|
unsigned char F9key[MAXKEYLEN]; //64=640
|
|
unsigned char SSID[MAXKEYLEN]; //64=704
|
|
unsigned char PASSWORD[MAXKEYLEN]; //64=768
|
|
unsigned char platform[32];
|
|
unsigned char extensions[96]; //128=896 == 7 XMODEM blocks
|
|
// To enable older CFunctions to run any new options *MUST* be added at the end of the list
|
|
} __attribute__((packed));
|
|
|
|
|
|
// Define the offsets from the PORT address
|
|
// these are used by GetPortAddr(a,b)
|
|
#define ANSEL -8
|
|
#define ANSELCLR -7
|
|
#define ANSELSET -6
|
|
#define ANSELINV -5
|
|
#define TRIS -4
|
|
#define TRISCLR -3
|
|
#define TRISSET -2
|
|
#define TRISINV -1
|
|
#define PORT 0
|
|
#define PORTCLR 1
|
|
#define PORTSET 2
|
|
#define PORTINV 3
|
|
#define LAT 4
|
|
#define LATCLR 5
|
|
#define LATSET 6
|
|
#define LATINV 7
|
|
#define ODC 8
|
|
#define ODCCLR 9
|
|
#define ODCSET 10
|
|
#define ODCINV 11
|
|
#define CNPU 12
|
|
#define CNPUCLR 13
|
|
#define CNPUSET 14
|
|
#define CNPUINV 15
|
|
#define CNPD 16
|
|
#define CNPDCLR 17
|
|
#define CNPDSET 18
|
|
#define CNPDINV 19
|
|
#define CNCON 20
|
|
#define CNCONCLR 21
|
|
#define CNCONSET 22
|
|
#define CNCONINV 23
|
|
#define CNEN 24
|
|
#define CNENCLR 25
|
|
#define CNENSET 26
|
|
#define CNENINV 27
|
|
#define CNSTAT 28
|
|
#define CNSTATCLR 29
|
|
#define CNSTATSET 30
|
|
#define CNSTATINV 31
|
|
|
|
// configurations for an I/O pin
|
|
// these are used by ExtCfg(a,b,c)
|
|
#define EXT_NOT_CONFIG 0
|
|
#define EXT_ANA_IN 1
|
|
#define EXT_DIG_IN 2
|
|
#define EXT_FREQ_IN 3
|
|
#define EXT_PER_IN 4
|
|
#define EXT_CNT_IN 5
|
|
#define EXT_INT_HI 6
|
|
#define EXT_INT_LO 7
|
|
#define EXT_DIG_OUT 8
|
|
#define EXT_HEARTBEAT 9
|
|
#define EXT_INT_BOTH 10
|
|
#define EXT_UART0TX 11
|
|
#define EXT_UART0RX 12
|
|
#define EXT_UART1TX 13
|
|
#define EXT_UART1RX 14
|
|
#define EXT_I2C0SDA 15
|
|
#define EXT_I2C0SCL 16
|
|
#define EXT_I2C1SDA 17
|
|
#define EXT_I2C1SCL 18
|
|
#define EXT_SPI0RX 19
|
|
#define EXT_SPI0TX 20
|
|
#define EXT_SPI0SCK 21
|
|
#define EXT_SPI1RX 22
|
|
#define EXT_SPI1TX 23
|
|
#define EXT_SPI1SCK 24
|
|
#define EXT_IR 25
|
|
#define EXT_INT1 26
|
|
#define EXT_INT2 27
|
|
#define EXT_INT3 28
|
|
#define EXT_INT4 29
|
|
#define EXT_PWM0A 30
|
|
#define EXT_PWM0B 31
|
|
#define EXT_PWM1A 32
|
|
#define EXT_PWM1B 33
|
|
#define EXT_PWM2A 34
|
|
#define EXT_PWM2B 35
|
|
#define EXT_PWM3A 36
|
|
#define EXT_PWM3B 37
|
|
#define EXT_PWM4A 38
|
|
#define EXT_PWM4B 39
|
|
#define EXT_PWM5A 40
|
|
#define EXT_PWM5B 41
|
|
#define EXT_PWM6A 42
|
|
#define EXT_PWM6B 43
|
|
#define EXT_PWM7A 44
|
|
#define EXT_PWM7B 45
|
|
#define EXT_PIO0_OUT 46
|
|
#define EXT_PIO1_OUT 47
|
|
#define EXT_DS18B20_RESERVED 0x100 // this pin is reserved for DS18B20 and cannot be used
|
|
#define EXT_COM_RESERVED 0x200 // this pin is reserved and SETPIN and PIN cannot be used
|
|
#define EXT_BOOT_RESERVED 0x400 // this pin is reserved at bootup and cannot be used
|
|
#define NOP() __asm volatile ("nop")
|
|
#define USERLCDPANEL 25 |